From 7b37dca2ec6217c1353a1bcfead95483385b41f2 Mon Sep 17 00:00:00 2001 From: David Delamater Date: Tue, 4 Jun 2019 19:54:49 -0500 Subject: [PATCH] Adding fix for issue where getting haste buffs in the middle of combat would throw off the timers --- .gitignore | 1 + WeaponSwingTimer_Hunter.lua | 17 +++++++++++++++-- WeaponSwingTimer_Player.lua | 18 ++++++++++++++++-- WeaponSwingTimer_Target.lua | 17 +++++++++++++++-- 4 files changed, 47 insertions(+), 6 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f66c74 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.zip \ No newline at end of file diff --git a/WeaponSwingTimer_Hunter.lua b/WeaponSwingTimer_Hunter.lua index e8840d7..90cfca6 100644 --- a/WeaponSwingTimer_Hunter.lua +++ b/WeaponSwingTimer_Hunter.lua @@ -24,7 +24,7 @@ addon_data.hunter.default_settings = { addon_data.hunter.shooting = false addon_data.hunter.range_speed = 3.0 addon_data.hunter.auto_cast_time = 0.65 -addon_data.hunter.shot_timer = 0.5 +addon_data.hunter.shot_timer = 0.65 addon_data.hunter.last_shot_time = 0 addon_data.hunter.auto_shot_ready = true @@ -151,7 +151,20 @@ end addon_data.hunter.OnUpdate = function(elapsed) -- Update the ranged attack speed - addon_data.hunter.range_speed, _, _, _, _, _ = UnitRangedDamage("player") + new_range_speed, _, _, _, _, _ = UnitRangedDamage("player") + if new_range_speed ~= addon_data.hunter.range_speed then + print(addon_data.hunter.range_speed) + print(new_range_speed) + print(addon_data.hunter.shot_timer) + if not addon_data.hunter.auto_shot_ready then + addon_data.hunter.shot_timer = addon_data.hunter.shot_timer * + (new_range_speed / addon_data.hunter.range_speed) + end + addon_data.hunter.range_speed = new_range_speed + print(addon_data.hunter.range_speed) + print(new_range_speed) + print(addon_data.hunter.shot_timer) + end addon_data.hunter.UpdateRangeCastSpeedModifier() -- Check to see if we have moved addon_data.hunter.has_moved = (GetUnitSpeed("player") > 0) diff --git a/WeaponSwingTimer_Player.lua b/WeaponSwingTimer_Player.lua index 1b6179a..e4cdb6b 100644 --- a/WeaponSwingTimer_Player.lua +++ b/WeaponSwingTimer_Player.lua @@ -52,12 +52,26 @@ addon_data.player.UpdateInfo = function() addon_data.player.class = UnitClass("player")[2] addon_data.player.main_weapon_id = GetInventoryItemID("player", 16) addon_data.player.off_weapon_id = GetInventoryItemID("player", 17) - addon_data.player.main_weapon_speed, addon_data.player.off_weapon_speed = UnitAttackSpeed("player") - if not addon_data.player.off_weapon_speed then + -- Update the weapon swing speed + new_main_speed, new_off_speed = UnitAttackSpeed("player") + if not new_off_speed then addon_data.player.has_offhand = false else addon_data.player.has_offhand = true end + if new_main_speed ~= addon_data.player.main_weapon_speed or + new_off_speed ~= addon_data.player.off_weapon_speed then + addon_data.player.main_swing_timer = addon_data.player.main_swing_timer * + (new_main_speed /addon_data.player.main_weapon_speed) + addon_data.player.main_weapon_speed = new_main_speed + if addon_data.player.has_offhand then + addon_data.player.off_swing_timer = addon_data.player.off_swing_timer * + (new_off_speed /addon_data.player.off_weapon_speed) + addon_data.player.off_weapon_speed = off_main_speed + end + + end + addon_data.player.guid = UnitGUID("player") end diff --git a/WeaponSwingTimer_Target.lua b/WeaponSwingTimer_Target.lua index d5ed95c..030713a 100644 --- a/WeaponSwingTimer_Target.lua +++ b/WeaponSwingTimer_Target.lua @@ -57,12 +57,25 @@ addon_data.target.UpdateInfo = function() addon_data.target.class = UnitClass("target")[2] addon_data.target.main_weapon_id = GetInventoryItemID("target", 16) addon_data.target.off_weapon_id = GetInventoryItemID("target", 17) - addon_data.target.main_weapon_speed, addon_data.target.off_weapon_speed = UnitAttackSpeed("target") - if not addon_data.target.off_weapon_speed then + -- Update the weapon swing speed + new_main_speed, new_off_speed = UnitAttackSpeed("target") + if not new_off_speed then addon_data.target.has_offhand = false else addon_data.target.has_offhand = true end + if new_main_speed ~= addon_data.target.main_weapon_speed or + new_off_speed ~= addon_data.target.off_weapon_speed then + addon_data.target.main_swing_timer = addon_data.target.main_swing_timer * + (new_main_speed /addon_data.target.main_weapon_speed) + addon_data.target.main_weapon_speed = new_main_speed + if addon_data.target.has_offhand then + addon_data.target.off_swing_timer = addon_data.target.off_swing_timer * + (new_off_speed /addon_data.target.off_weapon_speed) + addon_data.target.off_weapon_speed = off_main_speed + end + end + addon_data.target.guid = UnitGUID("target") end end