auto-stance: switch to required stance on cast

This commit is contained in:
shagu
2021-09-02 17:37:30 +02:00
parent 50efa382c6
commit beed1be23b
3 changed files with 52 additions and 0 deletions
+3
View File
@@ -25,6 +25,9 @@ Every of the listed features below, can be completely disabled in that menu in c
- **Auto Dismount**
*Automatically dismounts whenever a spell is casted.*
- **Auto Stance**
*Automatically switch to the required warrior or druid stance on spell cast.*
- **Tooltip Details**
*Display health, class color, guild name, guild rank and current target on unit tooltips.*
+1
View File
@@ -50,4 +50,5 @@ mods\item-colors.lua
mods\chat-links.lua
mods\health-numbers.lua
mods\auto-dismount.lua
mods\auto-stance.lua
mods\tooltip-details.lua
+48
View File
@@ -0,0 +1,48 @@
local _G = _G or getfenv(0)
local strsplit = ShaguTweaks.strsplit
local GetExpansion = ShaguTweaks.GetExpansion
-- It's not possible to achieve it like that in TBC
if GetExpansion() == "tbc" then return end
local module = ShaguTweaks:register({
title = "Auto Stance",
description = "Automatically switch to the required warrior or druid stance on spell cast.",
enabled = nil,
})
module.enable = function(self)
local stancedance = CreateFrame("Frame")
stancedance:RegisterEvent("UI_ERROR_MESSAGE")
stancedance:SetScript("OnEvent", function() stancedance.lastError = arg1 end)
stancedance.lastError = ""
stancedance.scanString = string.gsub(SPELL_FAILED_ONLY_SHAPESHIFT, "%%s", "(.+)")
stancedance.CastSpell = CastSpell
stancedance.CastSpellByName = CastSpellByName
stancedance.UseAction = UseAction
stancedance.SwitchStance = function()
for stance in string.gfind(stancedance.lastError, stancedance.scanString) do
for _, stance in pairs({ strsplit(",", stance)}) do
stancedance.CastSpellByName(string.gsub(stance,"^%s*(.-)%s*$", "%1"))
end
end
stancedance.lastError = ""
end
function CastSpell(spellId, spellbookTabNum)
stancedance:SwitchStance()
stancedance.CastSpell(spellId, spellbookTabNum)
end
function CastSpellByName(spellName, onSelf)
stancedance:SwitchStance()
stancedance.CastSpellByName(spellName, onSelf)
end
function UseAction(slot, checkCursor, onSelf)
stancedance:SwitchStance()
stancedance.UseAction(slot, checkCursor, onSelf)
end
end