diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua index c38715116f844357f115ce24d770576413d87a62..a6d153c1f17843b588bafdbf03412e8448b99178 100644 --- a/game/modules/tome/class/Actor.lua +++ b/game/modules/tome/class/Actor.lua @@ -8002,6 +8002,12 @@ function _M:checkStillInCombat() -- Ok no more in combat! self.in_combat = nil + for tid, _ in pairs(self.sustain_talents) do + local t = self:getTalentFromId(tid) + if t.deactivate_on and t.deactivate_on.no_combat then + self:forceUseTalent(tid, {ignore_energy=true}) + end + end self:updateInCombatStatus() end diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua index d0d94e9741aa50ada2eb680dfc7797dba1051679..9a070bbc53a38c164f68a81cb0f12b4578e1f9a3 100644 --- a/game/modules/tome/class/Player.lua +++ b/game/modules/tome/class/Player.lua @@ -1151,6 +1151,14 @@ function _M:restStep() self:useEnergy() self.resting.cnt = self.resting.cnt + 1 self:fireTalentCheck("callbackOnWait") + + -- Disable sustains that deactivate on rest + for tid, _ in pairs(self.sustain_talents) do + local t = self:getTalentFromId(tid) + if t.deactivate_on and t.deactivate_on.rest then + self:forceUseTalent(tid, {ignore_energy=true, ignore_cd=true}) + end + end return true end end @@ -1227,8 +1235,16 @@ function _M:runCheck(ignore_memory) if game.level.map:checkAllEntities(x, y, "store") then noticed = "store entrance spotted" ; return false, noticed end end) if noticed then return false, noticed end - - return engine.interface.PlayerRun.runCheck(self) + local can, noticed = engine.interface.PlayerRun.runCheck(self) + if can then + for tid, _ in pairs(self.sustain_talents) do + local t = self:getTalentFromId(tid) + if t.deactivate_on and t.deactivate_on.run then + self:forceUseTalent(tid, {ignore_energy=true, ignore_cd=true}) + end + end + end + return can, noticed end --- Move with the mouse