From 7b3b714d391ddb48db6d175b5191508edfa49ca0 Mon Sep 17 00:00:00 2001 From: 4n0n <4n0n@tinkr.site> Date: Wed, 2 Aug 2023 12:40:12 -0500 Subject: [PATCH 1/3] Add findanyof --- src/AuraTable/AuraTable.lua | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/AuraTable/AuraTable.lua b/src/AuraTable/AuraTable.lua index 5329d88..981b564 100644 --- a/src/AuraTable/AuraTable.lua +++ b/src/AuraTable/AuraTable.lua @@ -384,6 +384,43 @@ function AuraTable:FindAny(spell) return self:FindMy(spell) end +-- FindAnyOf +---@param spells List +---@return Aura +function AuraTable:FindAnyOf(spells) + return spells:find(function(spell) + return self:FindAny(spell):IsValid() + end) or Bastion.Aura:New() +end + +-- FindAnyOfMy +---@param spells List +---@return Aura +function AuraTable:FindAnyOfMy(spells) + return spells:find(function(spell) + return self:FindMy(spell):IsValid() + end) or Bastion.Aura:New() +end + +-- FindAnyOfTheirs +---@param spells List +---@return Aura +function AuraTable:FindAnyOfTheirs(spells) + return spells:find(function(spell) + return self:FindTheirs(spell):IsValid() + end) or Bastion.Aura:New() +end + +-- FindAnyFrom +---@param spells List +---@param source Unit +---@return Aura +function AuraTable:FindAnyFrom(spells, source) + return spells:find(function(spell) + return self:FindFrom(spell, source):IsValid() + end) or Bastion.Aura:New() +end + -- Has any stealable aura ---@return boolean function AuraTable:HasAnyStealableAura() From 559c4339a47364e2a57e637f1104d656e7461df1 Mon Sep 17 00:00:00 2001 From: 4n0n <4n0n@tinkr.site> Date: Wed, 2 Aug 2023 13:01:57 -0500 Subject: [PATCH 2/3] Fix aura list finding --- src/AuraTable/AuraTable.lua | 40 ++++++++++++++++++++++++++----------- src/List/List.lua | 6 +++++- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/AuraTable/AuraTable.lua b/src/AuraTable/AuraTable.lua index 981b564..2eceb38 100644 --- a/src/AuraTable/AuraTable.lua +++ b/src/AuraTable/AuraTable.lua @@ -388,27 +388,39 @@ end ---@param spells List ---@return Aura function AuraTable:FindAnyOf(spells) - return spells:find(function(spell) - return self:FindAny(spell):IsValid() - end) or Bastion.Aura:New() + return spells:reduce(function(acc, cur) + local aura = self:FindAny(cur) + if aura:IsValid() then + return aura, true + end + return acc + end, Bastion.Aura:New()) end -- FindAnyOfMy ---@param spells List ---@return Aura function AuraTable:FindAnyOfMy(spells) - return spells:find(function(spell) - return self:FindMy(spell):IsValid() - end) or Bastion.Aura:New() + return spells:reduce(function(acc, cur) + local aura = self:FindMy(cur) + if aura:IsValid() then + return aura, true + end + return acc + end, Bastion.Aura:New()) end -- FindAnyOfTheirs ---@param spells List ---@return Aura function AuraTable:FindAnyOfTheirs(spells) - return spells:find(function(spell) - return self:FindTheirs(spell):IsValid() - end) or Bastion.Aura:New() + return spells:reduce(function(acc, cur) + local aura = self:FindTheirs(cur) + if aura:IsValid() then + return aura, true + end + return acc + end, Bastion.Aura:New()) end -- FindAnyFrom @@ -416,9 +428,13 @@ end ---@param source Unit ---@return Aura function AuraTable:FindAnyFrom(spells, source) - return spells:find(function(spell) - return self:FindFrom(spell, source):IsValid() - end) or Bastion.Aura:New() + return spells:reduce(function(acc, cur) + local aura = self:FindFrom(cur, source) + if aura:IsValid() then + return aura, true + end + return acc + end, Bastion.Aura:New()) end -- Has any stealable aura diff --git a/src/List/List.lua b/src/List/List.lua index 1921466..28ef98e 100644 --- a/src/List/List.lua +++ b/src/List/List.lua @@ -114,8 +114,12 @@ end ---@return boolean function List:reduce(callback, initialValue) local result = initialValue + local done = false for _, v in ipairs(self._list) do - result = callback(result, v) + result, done = callback(result, v) + if done then + break + end end return result end From 2200a36bdf6e618bb27dcd62cf0bddaac587e55f Mon Sep 17 00:00:00 2001 From: abunai Date: Wed, 2 Aug 2023 18:13:23 +0000 Subject: [PATCH 3/3] Change Unit.ttd_ticker initialization state Unit.ttd_ticker initialized as 0, which would not allow a new ttd_ticker to be started. This changes the initial state to false. --- src/Unit/Unit.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Unit/Unit.lua b/src/Unit/Unit.lua index 8c10a46..581a964 100644 --- a/src/Unit/Unit.lua +++ b/src/Unit/Unit.lua @@ -13,7 +13,7 @@ local Unit = { last_off_attack = 0, last_main_attack = 0, last_combat_time = 0, - ttd_ticker = 0, + ttd_ticker = false, ttd = 0, id = false, } @@ -838,7 +838,7 @@ function Unit:TimeToDie() self.regression_history = {} if self.ttd_ticker then self.ttd_ticker:Cancel() - self.ttd_ticker = nil + self.ttd_ticker = false end return 0 end