From 9699189fdd71aa8a395931f266687bb38a920126 Mon Sep 17 00:00:00 2001 From: grayswandir <grayswandir76@gmail.com> Date: Mon, 29 Sep 2014 07:46:06 -0400 Subject: [PATCH] Rework. Added in some callbacks and stuff. --- .../interface/ActorTemporaryEffects.lua | 4 ++-- game/modules/tome/class/Actor.lua | 19 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/game/engines/default/engine/interface/ActorTemporaryEffects.lua b/game/engines/default/engine/interface/ActorTemporaryEffects.lua index 63d38f7cc4..be6d093627 100644 --- a/game/engines/default/engine/interface/ActorTemporaryEffects.lua +++ b/game/engines/default/engine/interface/ActorTemporaryEffects.lua @@ -106,8 +106,8 @@ function _M:setEffect(eff_id, dur, p, silent) end p.dur = dur p.effect_id = eff_id - self:check("on_set_temporary_effect", eff_id, _M.tempeffect_def[eff_id], p) - if p.dur <= 0 then return end + if self:check("on_set_temporary_effect", eff_id, _M.tempeffect_def[eff_id], p) then return end + if p.dur <= 0 then return self:removeEffect(eff_id) end -- If we already have it, we check if it knows how to "merge", or else we remove it and re-add it if self:hasEffect(eff_id) then diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index a2d5507afd..34683b4a81 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -3158,11 +3158,11 @@ function _M:die(src, death_note) end end) end - + if self:hasEffect(self.EFF_TRIM_THREADS) then local p = self:hasEffect(self.EFF_TRIM_THREADS) p.src:incParadox(-p.reduction) - end + end if self:hasEffect(self.EFF_GHOUL_ROT) then local p = self:hasEffect(self.EFF_GHOUL_ROT) @@ -5838,12 +5838,17 @@ function _M:on_set_temporary_effect(eff_id, e, p) if not p.no_ct_effect and not e.no_ct_effect and e.status == "detrimental" then self:crossTierEffect(eff_id, p.apply_power, p.apply_save or save_for_effects[e.type]) end p.total_dur = p.dur - if e.status == "detrimental" and self:checkHit(save, p.apply_power, 0, 95) and p.dur > 0 then - game.logSeen(self, "#ORANGE#%s shrugs off the effect '%s'!", self.name:capitalize(), e.desc) - p.dur = 0 + if p.dur > 0 and e.status == "detrimental" then + local saved = self:checkHit(save, p.apply_power, 0, 95) + local hd = {"Actor:effectSave", saved = saved, save_type = save_type, eff_id = eff_id, e = e, p = p,} + self:triggerHook(hd) + self:fireTalentCheck("callbackOnEffectSave", hd) + saved, eff_id, e, p = hd.saved, hd.eff_id, hd.e, hd.p + if saved then + game.logSeen(self, "#ORANGE#%s shrugs off the effect '%s'!", self.name:capitalize(), e.desc) + return true + end end - - p.apply_power = nil end if e.status == "detrimental" and self:knowTalent(self.T_RESILIENT_BONES) then -- GitLab