Skip to content
Snippets Groups Projects
Commit 41409000 authored by Recaiden's avatar Recaiden
Browse files

Fallen tweaks

Self-Judgement no longer gets weaker against very large hits as you increase talent level.
Dirge of Pestilence stacks with existing shields.
Dirge of Conquest increases on-kill effect with talent level.
parent 951c4ed2
No related branches found
No related tags found
1 merge request!664Fallen b7 talents
......@@ -99,6 +99,7 @@ newTalent{
cooldown = 12,
sustain_slots = 'fallen_celestial_dirge',
mode = "sustained",
getKillEnergy = function(self, t) return self:combatTalentLimit(t, 100, 33, 67) end,
callbackOnCrit = function(self, t)
if self.turn_procs.fallen_conquest_on_crit then return end
self.turn_procs.fallen_conquest_on_crit = true
......@@ -113,7 +114,7 @@ newTalent{
if self.turn_procs.fallen_conquest_on_kill then return end
self.turn_procs.fallen_conquest_on_kill = true
self.energy.value = self.energy.value + 500
self.energy.value = self.energy.value + t.getKillEnergy(self, t) * 10
if core.shader.active(4) then
self:addParticles(Particles.new("shader_shield_temp", 1, {toback=true , size_factor=1.5, y=-0.3, img="healgreen", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=2.0, circleDescendSpeed=3.5}))
self:addParticles(Particles.new("shader_shield_temp", 1, {toback=false, size_factor=1.5, y=-0.3, img="healgreen", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=1.0, circleDescendSpeed=3.5}))
......@@ -137,7 +138,7 @@ newTalent{
if self:knowTalent(self.T_DIRGE_ADEPT) then
clearDirges(self)
local t3 = self:getTalentFromId(self.T_DIRGE_ADEPT)
self:setEffect(self.EFF_DIRGE_OF_CONQUEST, t3.getDuration(self, t3), {src=self})
self:setEffect(self.EFF_DIRGE_OF_CONQUEST, t3.getDuration(self, t3), {power=t.getKillEnergy(self, t), src=self})
end
return true
......@@ -145,8 +146,8 @@ newTalent{
info = function(self, t)
return ([[Sing a song of violence and victory (mostly violence) and sustain yourself through cruelty.
Each time you deal a critical strike you gain 10%% of a turn (only once per turn).
Each time you kill a creature you gain 50%% of a turn (only once per turn).
]]):tformat()
Each time you kill a creature you gain %d%% of a turn (only once per turn).
]]):tformat(t.getKillEnergy(self, t))
end,
}
......@@ -164,7 +165,17 @@ newTalent{
if not self:hasProc("dirge_shield") then
if e_def.status == "detrimental" and e_def.type ~= "other" and eff.src ~= self then
self:setProc("dirge_shield", true, t.getShieldCD(self, t))
self:setEffect(self.EFF_DAMAGE_SHIELD, eff.dur, {color={0xff/255, 0x3b/255, 0x3f/255}, power=self:spellCrit(t.getShield(self, t))})
if self:hasEffect(self.EFF_DAMAGE_SHIELD) then
local shield = self:hasEffect(self.EFF_DAMAGE_SHIELD)
local shield_power = self:spellCrit(t.getShield(self, t))
shield.power = shield.power + shield_power
self.damage_shield_absorb = self.damage_shield_absorb + shield_power
self.damage_shield_absorb_max = self.damage_shield_absorb_max + shield_power
shield.dur = math.max(eff.dur, shield.dur)
else
self:setEffect(self.EFF_DAMAGE_SHIELD, eff.dur, {color={0xff/255, 0x3b/255, 0x3f/255}, power=self:spellCrit(t.getShield(self, t))})
end
end
end
end,
......@@ -193,7 +204,7 @@ newTalent{
end,
info = function(self, t)
return ([[Sing a song of decay and defiance and sustain yourself through spite.
Each time you suffer a detrimental effect, you gain a shield with strength %d, that lasts as long as the effect would.
Each time you suffer a detrimental effect, you gain a shield with strength %d, that lasts as long as the effect would. This will add to and extend an existing shield if possible.
This can only trigger once every %d turns]]):tformat(t.getShield(self, t), t.getShieldCD(self, t))
end,
}
......@@ -243,10 +254,10 @@ newTalent{
local t3 = self:getTalentFromId(self.T_DIRGE_OF_PESTILENCE)
ret = ([[Even now, something compels you to sing.
Dirge of Famine: Increases health regen by %d.
Dirge of Conquest: Gives you part of a turn on critical (10%%) or kill (50%%).
Dirge of Conquest: Gives you part of a turn on critical (10%%) or kill (%d%%).
Dirge of Pestilence: Shields you for %d when an enemy inflicts a detrimental effect on you (5 turn cooldown).
You may only have one Dirge active at a time.]]):
tformat(t1.getRegen(self, t1), t3.getShield(self, t3))
tformat(t1.getRegen(self, t1), t2.getKillEnergy(self, t), t3.getShield(self, t3))
end)
self.talents[self.T_DIRGE_OF_FAMINE] = old1
self.talents[self.T_DIRGE_OF_CONQUEST] = old2
......
......@@ -162,7 +162,7 @@ newTalent{
mode = "passive",
getTime = function(self, t) return self:combatTalentScale(t, 3, 5) end,
getThreshold = function(self, t) return self:combatTalentLimit(t, 10, 30, 15) end,
getSpillThreshold = function(self, t) return 15 end,
getSpillThreshold = function(self, t) return 40 end,
callbackOnTakeDamage = function(self, t, src, x, y, type, dam, state)
if dam < 0 then return {dam = dam} end
if not state then return {dam = dam} end
......@@ -182,8 +182,8 @@ newTalent{
local st = t.getSpillThreshold(self, t)/100
if dam > self.max_life*lt then
local reduce = dam - self.max_life*lt
if reduce > self.max_life * st then
reduce = math.floor(dam * st / (lt+st))
if reduce > self.max_life * (st - lt) then
reduce = math.floor(dam * (st - lt) / (st))
end
local length = t.getTime(self, t)
if src.logCombat then src:logCombat(self, "#CRIMSON##Target# suffers from %s from #Source#, mitigating the blow!#LAST#.", is_attk and "an attack" or "damage") end
......@@ -199,7 +199,7 @@ newTalent{
info = function(self, t)
local time = t.getTime(self, t)
local threshold = t.getThreshold(self, t)
local failThreshold = t.getThreshold(self, t) + t.getSpillThreshold(self, t)
local failThreshold = t.getSpillThreshold(self, t)
return ([[Any direct damage that exceeds %d%% of your maximum life has the excess damage converted to a shallow wound that bleeds over the next %d turns. This bleed cannot be resisted or removed, but can be reduced by Bloodstained. Extremely powerful hits (more than %d%% of your max life) are not fully converted.
#{italic}#You can't just die. That would be too easy. You deserve to die slowly.#{normal}#]]):tformat(threshold, time, failThreshold)
......
......@@ -5464,7 +5464,7 @@ newEffect{
type = "magical",
subtype = { haste=true },
status = "beneficial",
parameters = { heal=1 },
parameters = { power=30 },
callbackOnCrit = function(self, eff)
if self.turn_procs.fallen_conquest_on_crit then return end
......@@ -5480,7 +5480,7 @@ newEffect{
if self.turn_procs.fallen_conquest_on_kill then return end
self.turn_procs.fallen_conquest_on_kill = true
self.energy.value = self.energy.value + 500
self.energy.value = self.energy.value + eff.power*10
if core.shader.active(4) then
self:addParticles(Particles.new("shader_shield_temp", 1, {toback=true , size_factor=1.5, y=-0.3, img="healgreen", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=2.0, circleDescendSpeed=3.5}))
self:addParticles(Particles.new("shader_shield_temp", 1, {toback=false, size_factor=1.5, y=-0.3, img="healgreen", life=25}, {type="healing", time_factor=2000, beamsCount=20, noup=1.0, circleDescendSpeed=3.5}))
......@@ -5505,7 +5505,17 @@ newEffect{
if not self:hasProc("dirge_shield") then
if e_def.status == "detrimental" and e_def.type ~= "other" and eff_incoming.src ~= self then
self:setProc("dirge_shield", true, eff.cd)
self:setEffect(self.EFF_DAMAGE_SHIELD, eff_incoming.dur, {color={0xff/255, 0x3b/255, 0x3f/255}, power=self:spellCrit(eff.shield)})
if self:hasEffect(self.EFF_DAMAGE_SHIELD) then
local shield = self:hasEffect(self.EFF_DAMAGE_SHIELD)
local shield_power = self:spellCrit(eff.shield)
shield.power = shield.power + shield_power
self.damage_shield_absorb = self.damage_shield_absorb + shield_power
self.damage_shield_absorb_max = self.damage_shield_absorb_max + shield_power
shield.dur = math.max(eff_incoming.dur, shield.dur)
else
self:setEffect(self.EFF_DAMAGE_SHIELD, eff_incoming.dur, {color={0xff/255, 0x3b/255, 0x3f/255}, power=self:spellCrit(eff.shield)})
end
end
end
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