vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[ RightClick SelfCast Addon by kritzi ]]--
-- Version 2.10

-- Maintenance by Ozymandius
-- I find this mod invaluable, and can't live without it, which is
-- why I was most upset when it started failing after patch 1.10
-- Never touched the internals of a mod before, but it neded fixing ;)
-- Don't expect any further updates unless it totally breaks again

-- Version History
-- 31/03/06 - 2.10 - Updated to work in patch 1.10
-- TBH, this just involved changing te tooltip defn. in the XML
-- & incrementing the version in the TOC

-- Just right klick a spell and instead of the TargetingCursor
-- you will target yourselfe.

function rSelfCast_OnLoad()
        rSelfCast_Original_UseAction = UseAction;
        UseAction = rSelfCast_UseAction;

        this:RegisterEvent("ADDON_LOADED");
        
        SLASH_rSelfCast1="/rsc";
        SlashCmdList["rSelfCast"] = rSelfCast_Command;

        SLASH_rel1="/rel";
        SlashCmdList["rel"] = rel;
end

function rel()
        ReloadUI();
end

function rSelfCast_Set(type,var,value)
        if(rSelfCast_Array == nil)                                                                                              then rSelfCast_Array={}; end
        if(rSelfCast_Array[GetLocale()] == nil)                                                                 then rSelfCast_Array[GetLocale()]={}; end
        if(rSelfCast_Array[GetLocale()][UnitClass("player")] == nil)                    then rSelfCast_Array[GetLocale()][UnitClass("player")]={}; end
        if(rSelfCast_Array[GetLocale()][UnitClass("player")][type] == nil)              then rSelfCast_Array[GetLocale()][UnitClass("player")][type]={}; end
        if(rSelfCast_Array[GetLocale()][UnitClass("player")][type][var] == nil) then rSelfCast_Array[GetLocale()][UnitClass("player")][type][var]=value; end
end

function rSelfCast_Get(type,var)
        if    (rSelfCast_Array == nil)                                                                                          then return nil;
        elseif(rSelfCast_Array[GetLocale()] == nil)                                                                     then return nil;
        elseif(rSelfCast_Array[GetLocale()][UnitClass("player")] == nil)                        then return nil;
        elseif(rSelfCast_Array[GetLocale()][UnitClass("player")][type] == nil)          then return nil;
        else return rSelfCast_Array[GetLocale()][UnitClass("player")][type][var]; end
end

function rSelfCast_OnEvent()
        if(event ~= nil and event == "ADDON_LOADED" and rSelfCast_Disabled == nil) then
                this:RegisterEvent("CHAT_MSG_SPELL_FAILED_LOCALPLAYER");
                if(rSelfCast_Version == nil) then rSelfCast_Version = 200; end
        
        elseif(event ~= nil and event == "CHAT_MSG_SPELL_FAILED_LOCALPLAYER" and arg1 ~= nil and rSelfCast_MouseButton == "RightButton") then
                rSelfCast_Debug(arg1);

                local check_array={
                        "Ihr scheitert beim Wirken von (.+): Ung\195\188ltiges Ziel.",
                        "Ihr scheitert beim Wirken von (.+): Eure Waffenhand ist leer..",
                        "You fail to cast (.+): No target.",
                        "You fail to cast (.+): Your weapon hand is empty.",
                        "Vous n'avez pas r\195\169ussi \195\160 lancer (.+) : Cible incorrecte.",
                        "Vous n'avez pas r\195\169ussi \195\160 lancer (.+) : Vous n'avez pas d'arme en main.."
                }

                for i,check in check_array do
                        for action in string.gfind(arg1, check) do
                                rSelfCast_Debug("Adding '"..action.."' as a not SelfCast able.");
                                rSelfCast_Set("no_selfcast",action,true);
                        end
                end
        end
end

function rSelfCast_UseAction(id, type, self)
        rSelfCast_MouseButton = arg1;
        
        if(rSelfCast_MouseButton == "RightButton" and rSelfCast_Disabled == nil) then
                rSelfCast_Debug("Performing right-click");
                rSelfCast_Tooltip:SetAction(id);
                if(rSelfCast_TooltipTextLeft1 ~= nil) then
                        local action=rSelfCast_TooltipTextLeft1:GetText();
                        rSelfCast_Debug("ToolTipTextLeft1 = '"..action.."'.");
                        
                        if(rSelfCast_Get("no_selfcast",action) == nil) then
                                self = 1;
                                if(rSelfCast_Get("selfcast_bug",action) == true) then
                                        rSelfCast_Debug("Change Target to Player because '"..action.."' is buggy.");
                                        TargetUnit("player");
                                end
                        end
                        
                        rSelfCast_Original_UseAction(id, type, self);
                        
                        if(SpellIsTargeting() and self == 1) then
                                rSelfCast_Debug("Adding '"..action.."' as buggy.");
                                rSelfCast_Set("selfcast_bug",action,true);
                                SpellTargetUnit("player");
                        elseif(rSelfCast_Get("selfcast_bug",action) == true) then
                                rSelfCast_Debug("Switch back to the last Target.");
                                TargetLastTarget();
                        end
                end
        else
                rSelfCast_Original_UseAction(id, type, self);
        end
end

function rSelfCast_Command(cmd)
        if(cmd ~= nil and cmd == "enable") then
                rSelfCast_Disabled=nil;
                if(rSelfCast_Original_UseAction == nil) then
                        rSelfCast_Original_UseAction = UseAction;
                        UseAction = rSelfCast_UseAction;
                end
                this:RegisterEvent("CHAT_MSG_SPELL_FAILED_LOCALPLAYER");
                
                DEFAULT_CHAT_FRAME:AddMessage("rSelfCast is now enabled.");
        
        elseif(cmd ~= nil and cmd == "disable") then
                rSelfCast_Disabled=true;
                this:UnregisterEvent("CHAT_MSG_SPELL_FAILED_LOCALPLAYER");
                
                DEFAULT_CHAT_FRAME:AddMessage("rSelfCast is now disabled.");
        
        elseif(cmd ~= nil and cmd == "debug enable" and rSelfCast_Disabled == nil) then
                rSelfCast_DebugMode=true;
                DEFAULT_CHAT_FRAME:AddMessage("rSelfCast debug mode is now enabled.");

        elseif(cmd ~= nil and cmd == "debug disable" and rSelfCast_Disabled == nil) then
                rSelfCast_DebugMode=nil;
                DEFAULT_CHAT_FRAME:AddMessage("rSelfCast debug mode is now disabled.");

        elseif(cmd ~= nil and cmd == "reset" and rSelfCast_Disabled == nil and rSelfCast_DebugMode == true) then
                rSelfCast_Array=nil;
                DEFAULT_CHAT_FRAME:AddMessage("All collected rSelfCast data were reseted.");
                rSelfCast_Debug("TEST 1");

        else
                DEFAULT_CHAT_FRAME:AddMessage("|cffffff78rSelfCast Help:|r");
                if(rSelfCast_Disabled == true) then
                        DEFAULT_CHAT_FRAME:AddMessage("The AddOn is disabled for this profile.");
                        DEFAULT_CHAT_FRAME:AddMessage(" |cffffff78/rsc enable|r - activates the AddOn");
                else
                        if(rSelfCast_DebugMode == true) then
                                DEFAULT_CHAT_FRAME:AddMessage("The debug mode is enabled.");
                                DEFAULT_CHAT_FRAME:AddMessage(" |cffffff78/rsc debug disable|r - deactivates the debug mode.");
                                DEFAULT_CHAT_FRAME:AddMessage(" |cffffff78/rsc reset|r - deletes all collected data.");
                        else
                                DEFAULT_CHAT_FRAME:AddMessage(" |cffffff78/rsc debug enable|r - activates the debug mode.");
                        end
                        DEFAULT_CHAT_FRAME:AddMessage(" |cffffff78/rsc disable|r - deactivates the AddOn for this profile.");
                end
        end
end

function rSelfCast_Debug(string)
        if(rSelfCast_DebugMode == true and string ~= nil) then
                DEFAULT_CHAT_FRAME:AddMessage("|cffff6666rSC debug|r - "..string);
        end
end

Generated by GNU Enscript 1.6.5.90.