Last active
October 31, 2018 00:24
-
-
Save GrenderG/096cbf0b204e6cacf23141ed99406f21 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- EzDismount : A quick and dirty dismounting mod, useful for PVP or herb/ore collecting | |
-- By Gaddur of the Eonar Server | |
-- Modified v2.01 by nathan | |
-- Added Turtle support by Grender (Rakkata) from Elysium | |
local EzDClass | |
local EzDPlayer | |
EzDismount_ver = "v2.04"; | |
EzDismount_fullver = ("EzDismount " .. EzDismount_ver); | |
BINDING_HEADER_EZDISMOUNT = "EzDismount"; | |
BINDING_NAME_EZDISMOUNT = "Dismount"; | |
--------------------------------- | |
-- Stuff to do when Mod is loaded | |
--------------------------------- | |
function EzDismount_onload() | |
EzDClass = UnitClass("player"); | |
EzDPlayer = (UnitName("player").." of "..GetCVar("realmName")) | |
EZDismount_DetPlayer:SetText(EzDPlayer.." Server"); | |
--Create user table if it doesnt exist | |
if (EzDismount_Config == nil) then | |
EzDismount_Config = {}; | |
end | |
if (EzDismount_Config[EzDPlayer] == nil) then | |
EzDismount_reset(); | |
end | |
DEFAULT_CHAT_FRAME:AddMessage("## " .. EzDismount_fullver .. " Loaded ## Use /ezd or /ezd help", 0.0, 1.0, 0.0); | |
SlashCmdList["EZDISMOUNT"] = EzDismount_options; | |
SLASH_EZDISMOUNT1 = "/ezd"; | |
SLASH_EZDISMOUNT2 = "/ezdismount"; | |
-- Set Default Colors | |
EZDismount_ShamanTitle:SetTextColor(255,255,255,255); | |
EZDismount_DruidTitle:SetTextColor(255,255,255,255); | |
EZDismount_PriestTitle:SetTextColor(255,255,255,255); | |
EzDismount_Text_Status_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Status_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Shaman_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Shaman_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Druid_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Druid_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Moonkin_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Moonkin_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Shadowform_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Shadowform_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Stand_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Stand_VON:SetTextColor(0,255,0,255); | |
EzDismount_Text_Auction_VOFF:SetTextColor(255,0,0,255); | |
EzDismount_Text_Auction_VON:SetTextColor(0,255,0,255); | |
EZDismount_DetPlayer:SetTextColor(255,255,255,255); | |
end | |
---------------------------------- | |
-- Parse out option from / Command | |
---------------------------------- | |
function EzDismount_options(msg) | |
-- Show Config Menu | |
if (msg == "") then | |
EzDismount_Toggle(); | |
end | |
-- Dump Textures to chatwindow | |
if (string.lower(msg) == "debug") then | |
EzDismount_dumpbuff(); | |
end | |
-- Reload UI | |
if (string.lower(msg) == "reload") then | |
ReloadUI(); | |
end | |
-- Reset Settings | |
if (string.lower(msg) == "reset") then | |
EzDismount_reset(); | |
end | |
-- Help | |
if (string.lower(msg) == "help") or (msg == "?") then | |
EzDismount_help(); | |
end | |
end | |
------------------ | |
-- Reset Variables | |
------------------ | |
function EzDismount_reset() | |
EzDismount_Config[EzDPlayer] = { | |
["Dismount"] = "ON"; | |
["Druid"] = "ON"; | |
["Shadowform"] = "ON"; | |
["Wolf"] = "ON"; | |
["Moonkin"] = "ON"; | |
["Stand"] = "ON"; | |
["Auction"] = "ON"; | |
} | |
end | |
---------------- | |
-- Toggle Values | |
---------------- | |
function EzDismount_ChgValue(msg) | |
local NewVal = "" | |
-- Auto-dismount toggle | |
if (string.lower(msg) == "on/off") then | |
if (EzDismount_Config[EzDPlayer]["Dismount"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Dismount"] = "TAXI"; | |
NewVal = "Y"; | |
end | |
if ((EzDismount_Config[EzDPlayer]["Dismount"] == "TAXI") and (NewVal == "")) then | |
EzDismount_Config[EzDPlayer]["Dismount"] = "OFF"; | |
NewVal = "Y"; | |
end | |
if ((EzDismount_Config[EzDPlayer]["Dismount"] == "OFF") and (NewVal == "")) then | |
EzDismount_Config[EzDPlayer]["Dismount"] = "ON"; | |
NewVal = "Y"; | |
end | |
-- Auctioneer toggle | |
elseif (string.lower(msg) == "auction") then | |
if (EzDismount_Config[EzDPlayer]["Auction"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Auction"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Auction"] = "ON"; | |
end | |
-- Stand toggle | |
elseif (string.lower(msg) == "stand") then | |
if (EzDismount_Config[EzDPlayer]["Stand"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Stand"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Stand"] = "ON"; | |
end | |
-- Druid toggle | |
elseif (string.lower(msg) == "druid") then | |
if (EzDismount_Config[EzDPlayer]["Druid"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Druid"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Druid"] = "ON"; | |
end | |
-- Shaman toggle | |
elseif (string.lower(msg) == "wolf") then | |
if (EzDismount_Config[EzDPlayer]["Wolf"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Wolf"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Wolf"] = "ON"; | |
end | |
-- Moonkin toggle | |
elseif (string.lower(msg) == "moonkin") then | |
if (EzDismount_Config[EzDPlayer]["Moonkin"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Moonkin"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Moonkin"] = "ON"; | |
end | |
-- Shadowform toggle | |
elseif (string.lower(msg) == "shadowform") then | |
if (EzDismount_Config[EzDPlayer]["Shadowform"] == "ON") then | |
EzDismount_Config[EzDPlayer]["Shadowform"] = "OFF"; | |
else | |
EzDismount_Config[EzDPlayer]["Shadowform"] = "ON"; | |
end | |
end | |
EzDismount_Refresh(); | |
end | |
------------------------------- | |
-- Check UI_ERROR_MESSAGE Event | |
------------------------------- | |
function EzDismount_chkerror(arg1) | |
-- See if auto dismount is enabled | |
if (EzDismount_Config[EzDPlayer]["Dismount"] ~= "OFF") then | |
EzDismount_chkandgetdown("Dismount", EzDMountErr.Error, arg1, true); | |
if ( arg1 == "TAXI") then | |
EzDismount_getdown(true); | |
end; | |
end | |
-- Auctioneer Dismount enabled | |
if (EzDismount_Config[EzDPlayer]["Auction"] ~= "OFF") then | |
if ( arg1 == "AUCTION") then | |
EzDismount_getdown(true); | |
end | |
end | |
-- Stand up if you are trying to do something while sitting | |
if (EzDismount_Config[EzDPlayer]["Stand"] ~= "OFF") then | |
if ( arg1 == EzDSitErr) then | |
SitOrStand(); | |
end | |
end | |
-- Check class specific things | |
if (EzDClass == "Druid") then | |
EzDismount_chkandgetdown("Druid", EzDShiftErr.Error, arg1); | |
EzDismount_chkandgetdown("Moonkin", EzDShiftErr.Error, arg1); | |
elseif (EzDClass == "Shaman") then | |
EzDismount_chkandgetdown("Wolf", EzDShiftErr.Error, arg1); | |
elseif (EzDClass == "Priest") then | |
EzDismount_chkandgetdown("Shadowform", EzDShiftErr.Error, arg1); | |
end | |
end | |
function EzDismount_chkandgetdown(chkType, errorTable, msg, mount) | |
-- See if chkType is enabled | |
if (EzDismount_Config[EzDPlayer][chkType] ~= "OFF") then | |
-- If not on Taxi | |
if ( not UnitOnTaxi("player") ) then | |
for _, value in pairs(errorTable) do | |
if ( msg == value) then | |
EzDismount_getdown(mount); | |
break; | |
end | |
end | |
end | |
end | |
end | |
----------------------------------------- | |
-- Look for Mount Buff Icon and cancel it | |
----------------------------------------- | |
function EzDismount_getdown(mount) | |
local currBuffTex; | |
local pallyhorse = "spell_nature_swiftness"; | |
local regMount = "_mount_"; | |
local bearform = "ability_racial_bearform"; | |
local catform = "ability_druid_catform"; | |
local travelform = "ability_druid_travelform"; | |
local shadowform = "spell_shadow_shadowform"; | |
local spiritwolf = "spell_nature_spiritwolf"; | |
local moonkin = "spell_nature_forceofnature"; | |
local aqmount = "_qirajicrystal_" | |
local aquaticform = "ability_druid_aquaticform"; | |
local turtle = "ability_hunter_pet_turtle" | |
-- was this a dismount request or a shapeshift request? | |
if mount then | |
for i=0,15,1 do | |
currBuffTex = GetPlayerBuffTexture(i); | |
if (currBuffTex and (not EzD_exclude(i))) then | |
-- Mount (or level 40 pally horse) or Qiraji Mounts | |
if ((string.find(string.lower(currBuffTex), regMount) or string.find(string.lower(currBuffTex), pallyhorse)) or (string.find(string.lower(currBuffTex), aqmount)) or (string.find(string.lower(currBuffTex), turtle))) then | |
if ((EzDismount_Config[EzDPlayer]["Dismount"] == "ON") or (EzDismount_Config[EzDPlayer]["Dismount"] == "TAXI")) then | |
CancelPlayerBuff(i); | |
end | |
end | |
end | |
end | |
else | |
for i=0,15,1 do | |
currBuffTex = GetPlayerBuffTexture(i); | |
if (currBuffTex and (not EzD_exclude(i))) then | |
-- GhostWolf | |
if (string.find(string.lower(currBuffTex), spiritwolf)) then | |
if (EzDismount_Config[EzDPlayer]["Wolf"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Bear Form | |
elseif (string.find(string.lower(currBuffTex), bearform)) then | |
if (EzDismount_Config[EzDPlayer]["Druid"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Cat Form | |
elseif (string.find(string.lower(currBuffTex), catform)) then | |
if (EzDismount_Config[EzDPlayer]["Druid"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Travel Form | |
elseif (string.find(string.lower(currBuffTex), travelform)) then | |
if (EzDismount_Config[EzDPlayer]["Druid"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Aquatic Form | |
elseif (string.find(string.lower(currBuffTex), aquaticform)) then | |
if (EzDismount_Config[EzDPlayer]["Druid"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Moonkin Form | |
elseif (string.find(string.lower(currBuffTex), moonkin)) then | |
if (EzDismount_Config[EzDPlayer]["Moonkin"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
-- Shadowform | |
elseif (string.find(string.lower(currBuffTex), shadowform)) then | |
if (EzDismount_Config[EzDPlayer]["Shadowform"] == "ON") then | |
CancelPlayerBuff(i); | |
break; | |
end | |
end | |
end | |
end | |
end | |
end | |
-------------------------------------- | |
-- Exclude as mount based on buff name | |
-------------------------------------- | |
function EzD_exclude(i) | |
local buffname; | |
local result = false; | |
EzDTooltip:SetOwner(UIParent, "ANCHOR_NONE"); | |
EzDTooltip:ClearLines(); | |
EzDTooltip:SetPlayerBuff(i); | |
buffname = EzDTooltipTextLeft1:GetText(); | |
if ( buffname ~= nil ) then | |
for index=1, table.getn(EzDMountTable.Exclude), 1 do | |
if ( EzDMountTable.Exclude[index] == string.lower(buffname) ) then | |
result = true; | |
break; | |
end | |
end | |
end | |
return result | |
end | |
---------------------------------------------------- | |
-- Dump current Buff icon texture names (Debug Code) | |
---------------------------------------------------- | |
function EzDismount_dumpbuff() | |
local bufftext; | |
local buffname; | |
local debugmsg; | |
EzDTooltip:SetOwner(UIParent, "ANCHOR_NONE"); | |
for i=0,15,1 do | |
EzDTooltip:ClearLines(); | |
EzDTooltip:SetPlayerBuff(i); | |
buffname = EzDTooltipTextLeft1:GetText(); | |
bufftext = GetPlayerBuffTexture(i); | |
if (bufftext ~= nil) then | |
debugmsg = ("(" .. i .. ") [" ..buffname.. "] "..bufftext); | |
DEFAULT_CHAT_FRAME:AddMessage(debugmsg, 0.0, 1.0, 0.0); | |
end | |
end | |
end | |
-------------------------------------------------------------- | |
-- Look for Mount Buff Icon and cancel it (Alternate Function) | |
-------------------------------------------------------------- | |
function EzD_getdown() | |
EzDismount_getdown(1); | |
end | |
------------------------ | |
-- Cancel Buff by Name | |
------------------------ | |
function EzD_drop(dropbuff) | |
local buffname; | |
if ( dropbuff ~= nil ) then | |
EzDTooltip:SetOwner(UIParent, "ANCHOR_NONE"); | |
for i=0,15,1 do | |
EzDTooltip:ClearLines(); | |
EzDTooltip:SetPlayerBuff(i); | |
buffname = EzDTooltipTextLeft1:GetText(); | |
if (buffname ~= nil) then | |
if string.find(string.lower(buffname), string.lower(dropbuff)) then | |
CancelPlayerBuff(i); | |
break; | |
end | |
end | |
end | |
end | |
end | |
------------------------ | |
-- Check if Buff exists | |
------------------------ | |
function EzD_buffexist(findbuff) | |
local buffname; | |
local result = false; | |
if ( findbuff ~= nil ) then | |
EzDTooltip:SetOwner(UIParent, "ANCHOR_NONE"); | |
for i=0,15,1 do | |
EzDTooltip:ClearLines(); | |
EzDTooltip:SetPlayerBuff(i); | |
buffname = EzDTooltipTextLeft1:GetText(); | |
if (buffname ~= nil) then | |
if string.find(string.lower(buffname), string.lower(findbuff)) then | |
result = true; | |
break; | |
end | |
end | |
end | |
end | |
return result; | |
end | |
----------------------------------------- | |
-- Toggles the showing/hiding of the Menu | |
----------------------------------------- | |
function EzDismount_Toggle() | |
if ( EzDismount_Menu:IsVisible() ) then | |
EzDismount_Menu:Hide(); | |
else | |
EzDismount_Menu:Show(); | |
end | |
end | |
-------------------- | |
-- Refresh Screen | |
-------------------- | |
function EzDismount_Refresh() | |
EzDismount_Text_Status_VOFF:SetText(""); | |
EzDismount_Text_Status_VON:SetText(""); | |
EzDismount_Text_Shaman_VOFF:SetText(""); | |
EzDismount_Text_Shaman_VON:SetText(""); | |
EzDismount_Text_Druid_VOFF:SetText(""); | |
EzDismount_Text_Druid_VON:SetText(""); | |
EzDismount_Text_Moonkin_VOFF:SetText(""); | |
EzDismount_Text_Moonkin_VON:SetText(""); | |
EzDismount_Text_Shadowform_VOFF:SetText(""); | |
EzDismount_Text_Shadowform_VON:SetText(""); | |
EzDismount_Text_Stand_VOFF:SetText(""); | |
EzDismount_Text_Stand_VON:SetText(""); | |
EzDismount_Text_Auction_VOFF:SetText(""); | |
EzDismount_Text_Auction_VON:SetText(""); | |
-- Mounts | |
EzDismount_Text_Status:SetText("Automatic dismounting is :"); | |
if ( EzDismount_Config[EzDPlayer]["Dismount"] == "OFF" ) then | |
EzDismount_Text_Status_VOFF:SetText("[OFF]"); | |
end | |
if (EzDismount_Config[EzDPlayer]["Dismount"] == "ON" ) then | |
EzDismount_Text_Status_VON:SetText("[ON]"); | |
end | |
if ( EzDismount_Config[EzDPlayer]["Dismount"] == "TAXI" ) then | |
EzDismount_Text_Status_VON:SetText("[TAXI]"); | |
end | |
-- Auctioneer Dismount | |
EzDismount_Text_Auction:SetText("Automatic auctioneer dismount is :"); | |
if ( EzDismount_Config[EzDPlayer]["Auction"] == "OFF" ) then | |
EzDismount_Text_Auction_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Auction_VON:SetText("[ON]"); | |
end | |
-- Auto-Stand | |
EzDismount_Text_Stand:SetText("Automatic stand from sit is :"); | |
if ( EzDismount_Config[EzDPlayer]["Stand"] == "OFF" ) then | |
EzDismount_Text_Stand_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Stand_VON:SetText("[ON]"); | |
end | |
-- Shaman | |
EzDismount_Text_Shaman:SetText("Auto-cancel of Ghostwolf is :"); | |
if ( EzDismount_Config[EzDPlayer]["Wolf"] == "OFF" ) then | |
EzDismount_Text_Shaman_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Shaman_VON:SetText("[ON]"); | |
end | |
-- Druid | |
EzDismount_Text_Druid:SetText("Auto-cancel of shapeshifts is :"); | |
if ( EzDismount_Config[EzDPlayer]["Druid"] == "OFF" ) then | |
EzDismount_Text_Druid_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Druid_VON:SetText("[ON]"); | |
end | |
-- Moonkin | |
EzDismount_Text_Moonkin:SetText("Auto-cancel of Moonkin form :"); | |
if ( EzDismount_Config[EzDPlayer]["Moonkin"] == "OFF" ) then | |
EzDismount_Text_Moonkin_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Moonkin_VON:SetText("[ON]"); | |
end | |
-- Shadowform | |
EzDismount_Text_Shadowform:SetText("Auto-cancel of Shadowform :"); | |
if ( EzDismount_Config[EzDPlayer]["Shadowform"] == "OFF" ) then | |
EzDismount_Text_Shadowform_VOFF:SetText("[OFF]"); | |
else | |
EzDismount_Text_Shadowform_VON:SetText("[ON]"); | |
end | |
end | |
-------------------------- | |
-- Show slash command help | |
-------------------------- | |
function EzDismount_help() | |
DEFAULT_CHAT_FRAME:AddMessage("## " .. EzDismount_fullver .. " ##", 0.0, 1.0, 0.0); | |
for index=1, table.getn(EzDHelp.List), 1 do | |
DEFAULT_CHAT_FRAME:AddMessage(EzDHelp.List[index], 0.0, 1.0, 0.0); | |
end; | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment