-- BuffAhoy - by Theck -- Version 1.95 -- --This is an addon for WoW that adds several powerful functions to a spellcaster's --library. This code was designed for a paladin, but several are easily configurable --for other spellcasters (ex. BuffCast should work for warlocks, given the right mods to --the lua code, and ShoutCast was designed in part for a mage who wanted to broadcast the --target of his sheeping spell to the party). This addon is completely self-contained, though --flexbar is suggested because it makes it easy to identify the action id which you want to pass --to the script. This AddOn is not tested for compatibility with Cosmos, but it has been tested --with Telo's Sidebar, Clock, BuffTimers, LootLink, as well as AutoPotion, Bag_Status_Meters, --Auctioneer, Enchantrix, LevelReveal, MapNotes, MiniGroup, and CastAway. -- --I'd like to especially mention that i used the CastAway code as a base for the BuffCast() function, --hence the close resemblence (no sense coding my own variable sequence when the cycle code already --existed). I'd like to thank danboo for doing most of the hard work for me ahead of time. :) -- Binding Variables BINDING_HEADER_BUFFAHOY_HEADER = "BuffAhoy Config"; BINDING_NAME_PLAYER_TARGET_BINDING = "PPT Target Self"; BINDING_NAME_PARTY1_TARGET_BINDING = "PPT Target Party 1"; BINDING_NAME_PARTY2_TARGET_BINDING = "PPT Target Party 2"; BINDING_NAME_PARTY3_TARGET_BINDING = "PPT Target Party 3"; BINDING_NAME_PARTY4_TARGET_BINDING = "PPT Target Party 4"; BINDING_NAME_CUSTOM_TARGET = "PPT Target Target"; BINDING_NAME_PLAYER_PET_BINDING = "PPT Target My Pet"; BINDING_NAME_PARTY1_PET_BINDING = "PPT Target Party Pet 1"; BINDING_NAME_PARTY2_PET_BINDING = "PPT Target Party Pet 2"; BINDING_NAME_PARTY3_PET_BINDING = "PPT Target Party Pet 3"; BINDING_NAME_PARTY4_PET_BINDING = "PPT Target Party Pet 4"; BINDING_NAME_BUFFAHOY_SHOW = "Show Buffs CP"; BINDING_NAME_MULTICAST_SHOW = "Show Caster CP"; BINDING_NAME_BUFFCASTSETONE = "Buff Sequence 1"; BINDING_NAME_BUFFCASTSETTWO = "Buff Sequence 2"; BINDING_NAME_BUFFCASTSETTHREE = "Buff Sequence 3"; BINDING_NAME_BUFFAHOYHEALONE = "Heal 1"; BINDING_NAME_BUFFAHOYHEALTWO = "Heal 2"; BINDING_NAME_BUFFAHOYHEALTHREE = "Heal 3"; BINDING_NAME_BUFFAHOYCLEANSEONE = "Cleanse 1"; BINDING_NAME_BUFFAHOYCLEANSETWO = "Cleanse 2"; BINDING_NAME_BUFFAHOYPROTECTONE = "Protect Party Member"; BINDING_NAME_MULTICASTSETONE = "MultiCast Sequence 1"; BINDING_NAME_MULTICASTSETTWO = "MultiCast Sequence 2"; BINDING_NAME_SHOUTCASTONE = "ShoutCast 1"; BINDING_NAME_SHOUTCASTTWO = "ShoutCast 2"; BINDING_NAME_SHOUTCASTTHREE = "ShoutCast 3"; BINDING_NAME_SHOUTCASTFOUR = "ShoutCast 4"; BINDING_NAME_PANIC = "Panic"; -- Local variables local BA_step_data = {} local playa = {} local peta = {} --local petArray = {} local petFlag = false local castFlag = nil local failFlag = false local tempverb = 0 local whovar = "party" local raidArray={} local PalShaVar; local plyr --local BAgotVariables = false; --local BAgotPlayerName = false; --local BAinCombat=false; local BAUseAction BA_NumWarriors=0 BA_NumMages=0 BA_NumPriests=0 BA_NumDruids=0 BA_NumHunters=0 BA_NumWarlocks=0 BA_NumRogues=0 BA_NumPalSha=0 BA_NumPets=0 local BA_GroupBuff={[BUFFAHOY_PRIEST]=0, [BUFFAHOY_MAGE]=0, [BUFFAHOY_DRUID]=0, [BUFFAHOY_WARRIOR]=0, [BUFFAHOY_HUNTER]=0, [BUFFAHOY_WARLOCK]=0, [BUFFAHOY_ROGUE]=0, [BUFFAHOY_PALADIN]=0, [BUFFAHOY_SHAMAN]=0 } -- global vars BA = {} BuffAhoyNameArray = {} raidArray["RaidCast"]={} BA_VERSION=1.95 BADebugVar=false --myAddons Vars BuffAhoyDetails = { name = 'BuffAhoy', description = 'Buff Sequencer and other tools', version = '1.95', releaseDate = 'Jan 6, 2006', author = 'Theck', category = MYADDONS_CATEGORY_COMBAT, frame = 'BuffAhoyFrame', }; --initialize variables that are used by several functions playa = {"player", "party1", "party2", "party3", "party4"} peta = {"pet", "partypet1","partypet2","partypet3","partypet4"} --Blizzard Registrations UIPanelWindows["BuffAhoyFrame"] = { area = "left", pushable = 11 }; --load function function BuffAhoy_OnLoad() if BA_UseAction then BAUseAction = BA_UseAction; BADebug("lOriginal") else BAUseAction = UseAction; BADebug("Default UA") end BuffAhoyFrame:RegisterEvent("VARIABLES_LOADED"); BuffAhoyFrame:RegisterEvent("PLAYER_ENTERING_WORLD"); BuffAhoyFrame:RegisterEvent("SPELLCAST_INTERRUPTED") BuffAhoyFrame:RegisterEvent("SPELLCAST_FAILED") BuffAhoyFrame:RegisterEvent("SPELLCAST_DELAYED") BuffAhoyFrame:RegisterEvent("SPELLCAST_STOP") BuffAhoyFrame:RegisterEvent("SPELLCAST_START") -- BuffAhoyFrame:RegisterEvent("PLAYER_REGEN_DISABLED") -- BuffAhoyFrame:RegisterEvent("PLAYER_REGEN_ENABLED") BuffAhoyFrame:RegisterEvent("SPELLCAST_CHANNEL_START") local name = this:GetName(); local header = getglobal(name.."TitleText"); if ( header ) then header:SetText("|cFFee9966BuffAhoy - by Theck|r"); end -- DEFAULT_CHAT_FRAME:AddMessage("BUFFAHOY",1,0,0) -- initialize slash commands SlashCmdList["BUFFAHOY"]=BuffAhoy_SlashCommandHandler; SLASH_BUFFAHOY1="/buffahoy" SLASH_BUFFAHOY2="/ba" OptionsFrame_EnableDropDown(BuffTypeDropdown); OptionsFrame_EnableDropDown(VerboseTypeDropdown); OptionsFrame_EnableDropDown(BuffAhoyMasterDropdown); OptionsFrame_EnableDropDown(SCTypeDropdown); end function BALoadDefaults() BA[plyr]={} BA[plyr]["BuffCast_Verbose"]=0 BA[plyr]["BuffCast_Quiet"]=1 BA[plyr]["Healzor_Verbose"]=1 BA[plyr]["Healzor_Verbose_Two"]=1 BA[plyr]["Healzor_Verbose_Three"]=1 BA[plyr]["Healzor_Smartcastable"]=1 BA[plyr]["Healzor_Smartcastable_Two"]=1 BA[plyr]["Healzor_Smartcastable_Three"]=1 BA[plyr]["Cleanzor_Verbose"]=1 BA[plyr]["Cleanzor_Verbose_Two"]=1 BA[plyr]["Cleanzor_Smartcastable"]=1 BA[plyr]["Cleanzor_Smartcastable_Two"]=1 BA[plyr]["Protectzor_Verbose"]=1 BA[plyr]["Protectzor_Smartcastable"]=1 BA[plyr]["PPTenabled"]=1 BA[plyr]["SCenabled"]=1 BA[plyr]["multiverbosity"]=0; BA[plyr]["SC1_Verbose"]=1; BA[plyr]["SC1_SC"]=1; BA[plyr]["SC2_Verbose"]=1; BA[plyr]["SC2_SC"]=1; BA[plyr]["SC3_Verbose"]=1; BA[plyr]["SC3_SC"]=1; BA[plyr]["SC4_Verbose"]=1; BA[plyr]["SC4_SC"]=1; BA[plyr]["UFrameVar"]=0; BA[plyr]["RCFrameVar"]=1; BA[plyr]["statustext"]=1; BA[plyr]["BAFrameVar"]=1; BA[plyr]["manabuff"]=0; BA[plyr]["ShiftAlt"]=1; BA[plyr]["loudevents"]=1; BA[plyr]["forceparty"]=0; BA[plyr]["showPPTFrame"]=1; BA[plyr]["version"]=1.4 DEFAULT_CHAT_FRAME:AddMessage("BuffAhoy Defaults Loaded!",1,0,0) end -- Function to call once player and variables are ready function BAInitializeSetup() -- if player profile doesn't exist if ( not BA[plyr] ) then -- load defaults BALoadDefaults() end ---code to update version if ( not BA[plyr].version or BA[plyr].version < BA_VERSION) then BA_ExecuteVersionChanges() end --code to show/hide PPT Frame if BA[plyr].showPPTFrame == 1 then getglobal("PPTFrame"):Show() else getglobal("PPTFrame"):Hide() end end function BA_ExecuteVersionChanges() local oldversion if (not BA[plyr].version) then BA[plyr]["version"]=1.3 oldversion="1.3x or prior" BADebug("oldversion",oldversion) else oldversion=BA[plyr].version BADebug("oldversion",oldversion) end if BA[plyr].version<1.4 then BALoadDefaults() end if BA[plyr].version<1.463 then BA[plyr]["buffbeginannounce"]=1; end if BA[plyr].version<1.5 then BA[plyr]["group"]={} for i=1,8 do BA[plyr]["group"][i]=1; end end BA[plyr].version=BA_VERSION DEFAULT_CHAT_FRAME:AddMessage("BuffAhoy Version Updated from "..oldversion.." to "..BA[plyr].version .."!!",1,0,0); end --[[ -- Check the player name, return true if the player name is known, false otherwise local function BACheckPlayerName() if (BAgotPlayerName) then return true; end local pName = UnitName("player"); if ((pName ~= nil) and (pName ~= UNKNOWNOBJECT) and (pName ~= UKNOWNBEING)) then BAgotPlayerName = true; plyr=pName; return true; end return false; end ]] function BuffAhoy_OnEvent(event) -- Saved Variables available here if (event == "VARIABLES_LOADED") then -- initialize PartyTarget PartyTarget="party1" if ( DEFAULT_CHAT_FRAME ) then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ONLOAD_TEXT, 0.8, 0.8, 0.2); end --this is supposed to help pull names from action bar slots for i=1,120,1 do BuffAhoyNameGrab(i); end -- Register the addon in myAddOns if(myAddOnsFrame_Register) then myAddOnsFrame_Register(BuffAhoyDetails); end plyr=UnitName("player") BAInitializeSetup(); return end if (event == "SPELLCAST_INTERRUPTED") then BADebug("SPELLCAST_INTERRUPTED", tempverb) if tempverb==2 or tempverb==6 or tempverb==7 and BA[plyr].loudevents==1 then SendChatMessage(BUFFAHOY_SPELL_INTERRUPTED) end castFlag=false; tempverb=0; failFlag=false; -- BADebug("tempverb",tempverb) BADebug("failFlag",failFlag) end if (event == "SPELLCAST_FAILED") then BADebug("SPELLCAST_FAILED", tempverb) if tempverb==1 and BA[plyr].loudevents==1 then SendChatMessage(BUFFAHOY_SPELL_FAILED) end castFlag=false; failFlag=true; BADebug("failFlag",failFlag) tempverb=0; end if (event == "SPELLCAST_DELAYED") then BADebug("SPELLCAST_DELAYED", tempverb) if (tempverb==6 or tempverb==2) and BA[plyr].loudevents==1 then SendChatMessage(BUFFAHOY_SPELL_DELAYED) tempverb=7; end failFlag=false; BADebug("failFlag",failFlag) end if (event == "SPELLCAST_STOP") then if castFlag==true and tempverb==1 then tempverb=9; BADebug("SPELLCAST_STOP", tempverb) castFlag=false; elseif castFlag==true and tempverb==2 then tempverb=3; BADebug("SPELLCAST_STOP", tempverb) castFlag=false; elseif castFlag==true and tempverb==5 then tempverb=6; castFlag=false; BADebug("SPELLCAST_STOP", tempverb) elseif castFlag==true and tempverb==6 then tempverb=7; castFlag=false; BADebug("SPELLCAST_STOP", tempverb) else tempverb=0; BADebug("SPELLCAST_STOP", tempverb) end castFlag=false; failFlag=false; BADebug("failFlag",failFlag) -- BADebug("tempverb",tempverb) end if (event == "SPELLCAST_START") then if tempverb==1 then tempverb=2; BADebug("SPELLCAST_START", tempverb) else tempverb=0; BADebug("SPELLCAST_START", tempverb) end failFlag=false; BADebug("failFlag",failFlag) end if (event == "SPELLCAST_CHANNEL_START") then if tempverb==1 then tempverb=5; BADebug("SPELLCAST_CHANNEL_START", tempverb) else tempverb=0; BADebug("SPELLCAST_CHANNEL_START", tempverb) end failFlag=false; BADebug("failFlag",failFlag) end end --Debug Function function BADebug(string, value) if value==nil then value="nil" end if value==true then value="true" end if value==false then value="false" end if BADebugVar then DEFAULT_CHAT_FRAME:AddMessage(string.." is "..value); end end -- GUI STUFF: -- Local data function BuffAhoyTogglish() if ( BuffAhoyFrame ) then if ( BuffAhoyFrame:IsVisible() ) then HideUIPanel(BuffAhoyFrame); else ShowUIPanel(BuffAhoyFrame); end else DEFAULT_CHAT_FRAME:AddMessage("BuffAhoyFrame doesn't exist!!") end end function BuffAhoy_OnShow() BuffAhoy_ShowHelp() local check; -- BADebug("BAFrameVar",BA[plyr].BAFrameVar) BuffAhoyFrameTogglish(BA[plyr].BAFrameVar) getglobal("BuffCastVerbose"):SetChecked(BA[plyr].BuffCast_Verbose); getglobal("BuffCastVerbose2"):SetChecked(BA[plyr].BuffCast_Verbose); getglobal("BuffCastQuiet"):SetChecked(BA[plyr].BuffCast_Quiet); getglobal("BuffCastQuiet2"):SetChecked(BA[plyr].BuffCast_Quiet); -- getglobal("BuffCastAnnounce"):SetChecked(BA[plyr].buffbeginannounce); getglobal("BuffAhoyHealOneVerbose"):SetChecked(BA[plyr].Healzor_Verbose); getglobal("BuffAhoyHealTwoVerbose"):SetChecked(BA[plyr].Healzor_Verbose_Two); getglobal("BuffAhoyHealThreeVerbose"):SetChecked(BA[plyr].Healzor_Verbose_Three); getglobal("BuffAhoyCleanseOneVerbose"):SetChecked(BA[plyr].Cleanzor_Verbose); getglobal("BuffAhoyCleanseTwoVerbose"):SetChecked(BA[plyr].Cleanzor_Verbose_Two); getglobal("BuffAhoyProtectVerbose"):SetChecked(BA[plyr].Protectzor_Verbose); getglobal("BuffAhoyHealOneSC"):SetChecked(BA[plyr].Healzor_Smartcastable); getglobal("BuffAhoyHealTwoSC"):SetChecked(BA[plyr].Healzor_Smartcastable_Two); getglobal("BuffAhoyHealThreeSC"):SetChecked(BA[plyr].Healzor_Smartcastable_Three); getglobal("BuffAhoyCleanseOneSC"):SetChecked(BA[plyr].Cleanzor_Smartcastable); getglobal("BuffAhoyCleanseTwoSC"):SetChecked(BA[plyr].Cleanzor_Smartcastable_Two); getglobal("BuffAhoyProtectSC"):SetChecked(BA[plyr].Protectzor_Smartcastable); -- getglobal("PPTENABLE2"):SetChecked(BA[plyr].PPTenabled); -- getglobal("SCENABLE2"):SetChecked(BA[plyr].SCenabled); getglobal("PPTENABLE"):SetChecked(BA[plyr].PPTenabled); getglobal("SCENABLE"):SetChecked(BA[plyr].SCenabled); getglobal("BuffManaCheck"):SetChecked(BA[plyr].manabuff); getglobal("MultiSC"):SetChecked(BA[plyr].multiverbosity); getglobal("AnnOpt"):SetChecked(BA[plyr].buffbeginannounce); getglobal("StatusTextOpt"):SetChecked(BA[plyr].statustext); getglobal("LoudEventsOpt"):SetChecked(BA[plyr].loudevents); getglobal("ForcePartyOpt"):SetChecked(BA[plyr].forceparty); getglobal("PPTFrameOpt"):SetChecked(BA[plyr].showPPTFrame); if BA[plyr].showPPTFrame == 1 then getglobal("PPTFrame"):Show() else getglobal("PPTFrame"):Hide() end -- getglobal("UtilMultiTog"):SetChecked(BA[plyr].UFrameVar); -- if whovar=="raid" then check=1 else check=0 end -- getglobal("WhoVarRaidToggle"):SetChecked(check); -- getglobal("WhoVarRaidToggle2"):SetChecked(check); getglobal("ShoutCastOneSC"):SetChecked(BA[plyr].SC1_SC); getglobal("ShoutCastTwoSC"):SetChecked(BA[plyr].SC2_SC); getglobal("ShoutCastThreeSC"):SetChecked(BA[plyr].SC3_SC); getglobal("ShoutCastFourSC"):SetChecked(BA[plyr].SC4_SC); getglobal("ShoutCastOneVerbose"):SetChecked(BA[plyr].SC1_Verbose); getglobal("ShoutCastTwoVerbose"):SetChecked(BA[plyr].SC2_Verbose); getglobal("ShoutCastThreeVerbose"):SetChecked(BA[plyr].SC3_Verbose); getglobal("ShoutCastFourVerbose"):SetChecked(BA[plyr].SC4_Verbose); -- getglobal("BuffAhoySetOnePlayerText"):SetText(UnitName(playa[1])); -- for i=1,4 do -- if UnitName(playa[i])~= nil then -- getglobal("BuffAhoySetOneParty"..i.."Text"):SetText(UnitName(playa[i+1])); -- else -- getglobal("BuffAhoySetOneParty"..i.."Text"):SetText("Party"); -- end -- end -- UtilFrameTogglish(BA[plyr].UFrameVar) -- BuffFrameTogglish(BA[plyr].RCFrameVar) getglobal("GroupOne"):SetChecked(BA[plyr]["group"][1]); getglobal("GroupTwo"):SetChecked(BA[plyr]["group"][2]); getglobal("GroupThree"):SetChecked(BA[plyr]["group"][3]); getglobal("GroupFour"):SetChecked(BA[plyr]["group"][4]); getglobal("GroupFive"):SetChecked(BA[plyr]["group"][5]); getglobal("GroupSix"):SetChecked(BA[plyr]["group"][6]); getglobal("GroupSeven"):SetChecked(BA[plyr]["group"][7]); getglobal("GroupEight"):SetChecked(BA[plyr]["group"][8]); --make windows draggable BuffAhoyFrame:RegisterForDrag("LeftButton"); if UnitFactionGroup("player")=="Alliance" then PalShaVar=BUFFAHOY_PALADIN else PalShaVar=BUFFAHOY_SHAMAN end RaidSetOnePlayerText:SetText(PalShaVar); end function BuffAhoy_Reset() if BA[plyr].BAFrameVar==1 then if BA[plyr].RCFrameVar==3 then for i=1,6,1 do PickupAction(BCS1[i]) PickupSpell(511,"spell") PickupAction(BCS2[i]) PickupSpell(511,"spell") end PickupAction(BCS3) PickupSpell(511,"spell") PickupAction(BCS4) PickupSpell(511,"spell") elseif BA[plyr].RCFrameVar==1 then PickupAction(RCPalSha) PickupSpell(511,"spell") PickupAction(RCWarrior) PickupSpell(511,"spell") PickupAction(RCMage) PickupSpell(511,"spell") PickupAction(RCPriest) PickupSpell(511,"spell") PickupAction(RCWarlock) PickupSpell(511,"spell") PickupAction(RCRogue) PickupSpell(511,"spell") PickupAction(RCHunter) PickupSpell(511,"spell") PickupAction(RCDruid) PickupSpell(511,"spell") PickupAction(RCPet1) PickupSpell(511,"spell") PickupAction(RCS2) PickupSpell(511,"spell") PickupAction(RCS3) PickupSpell(511,"spell") elseif BA[plyr].RCFrameVar==2 then for i=1,8 do BA[plyr]["group"][i]=1; end end elseif BA[plyr].BAFrameVar==2 then PickupAction(HZR1) PickupSpell(511,"spell") PickupAction(HZR2) PickupSpell(511,"spell") PickupAction(HZR3) PickupSpell(511,"spell") PickupAction(CZR1) PickupSpell(511,"spell") PickupAction(CZR2) PickupSpell(511,"spell") PickupAction(PZR1) PickupSpell(511,"spell") elseif BA[plyr].BAFrameVar==3 then for i=1,6,1 do PickupAction(MCS1[i]) PickupSpell(511,"spell") PickupAction(MCS2[i]) PickupSpell(511,"spell") end PickupAction(SCT1) PickupSpell(511,"spell") PickupAction(SCT2) PickupSpell(511,"spell") PickupAction(SCT3) PickupSpell(511,"spell") PickupAction(SCT4) PickupSpell(511,"spell") elseif BA[plyr].BAFrameVar==4 then -- BADebug("BAFrameVar",BA[plyr].BAFrameVar); end end function BuffAhoy_ShowHelp() local helptext = getglobal("BuffAhoyFrameHelpText"); if ( helptext ) then helptext:SetText(BUFFAHOY_HELP); end local helptext3 = getglobal("BuffAhoySetThreeFourHelpText"); if ( helptext3 ) then helptext3:SetText(BUFFAHOYBC34_HELP); end local helptext4 = getglobal("RaidSetThreeFourHelpText"); if ( helptext4 ) then helptext4:SetText(BUFFAHOYRC23_HELP); end end -- Handles gui updates ever frame function BuffAhoy_Update() end function BuffAhoyButton_GetID(button) -- Telo's code if ( button == nil ) then DEFAULT_CHAT_FRAME:AddMessage("nil button passed into GetID()"); return 0; end this = button return (button:GetID()) end function BuffAhoyButton_UpdateState() -- Desperate attempt to fix Dagar's Mac crash --if not string.find(this:GetName(),"BuffAhoyButton") then return end local button = this -- Blizzard code: Purpose unknown at button time if ( IsCurrentAction(BuffAhoyButton_GetID(button)) or IsAutoRepeatAction(BuffAhoyButton_GetID(button)) ) then button:SetChecked(1); else button:SetChecked(0); end this = button end -- BA Button Load function BuffAhoy_ButtonLoad() local button = this BuffAhoyButton_Update(); button:RegisterForDrag("LeftButton", "RightButton"); button:RegisterForClicks("LeftButtonUp", "RightButtonUp"); button:RegisterEvent("SPELLS_CHANGED"); button:RegisterEvent("CURRENT_SPELL_CAST_CHANGED"); button:RegisterEvent("SPELL_UPDATE_COOLDOWN"); button:RegisterEvent("ACTIONBAR_SLOT_CHANGED"); button:RegisterEvent("ACTIONBAR_UPDATE_STATE"); button:RegisterEvent("UNIT_INVENTORY_CHANGED"); end -- BA Button Event Handler function BuffAhoy_ButtonEvent(event) if ( event == "SPELL_UPDATE_COOLDOWN" ) then BuffAhoyButton_Update(this); end if ( event == "ACTIONBAR_SLOT_CHANGED" ) then if ( arg1 == -1 or arg1 == BuffAhoyButton_GetID(this) ) then BuffAhoyButton_Update(); end this = button return; end if ( event == "UNIT_INVENTORY_CHANGED" ) then if ( arg1 == "player" ) then BuffAhoyButton_Update(); end this = button return; end if ( event == "ACTIONBAR_UPDATE_STATE" ) then BuffAhoyButton_UpdateState(); this = button return; end end function BuffAhoy_VerboseButtonEnter() GameTooltip:SetOwner(this, "ANCHOR_RIGHT"); GameTooltip:SetText(BUFFAHOY_VERBOSE_TIP); end function BuffAhoy_VerboseButtonLeave() GameTooltip:Hide(); end function BuffAhoy_VerboseToggle(set,state) -- BADebug("set",set) -- BADebug("state",state) if (set==11) then if ( state == true or state == 1 ) then BA[plyr].Healzor_Verbose=1; else BA[plyr].Healzor_Verbose=0; end end if (set==12) then if ( state == true or state == 1 ) then BA[plyr].Healzor_Verbose_Two=1; else BA[plyr].Healzor_Verbose_Two=0; end end if (set==13) then if ( state == true or state == 1 ) then BA[plyr].Healzor_Verbose_Three=1; else BA[plyr].Healzor_Verbose_Three=0; end end if (set==14) then if ( state == true or state == 1 ) then BA[plyr].Protectzor_Verbose=1; else BA[plyr].Protectzor_Verbose=0; end end if (set==15) then if ( state == true or state == 1 ) then BA[plyr].Cleanzor_Verbose=1; else BA[plyr].Cleanzor_Verbose=0; end end if (set==16) then if ( state == true or state == 1 ) then BA[plyr].Cleanzor_Verbose_Two=1; else BA[plyr].Cleanzor_Verbose_Two=0; end end if (set==21) then if ( state == true or state == 1 ) then BA[plyr].SC1_Verbose=1; else BA[plyr].SC1_Verbose=0; end end if (set==22) then if ( state == true or state == 1 ) then BA[plyr].SC2_Verbose=1; else BA[plyr].SC2_Verbose=0; end end if (set==23) then if ( state == true or state == 1 ) then BA[plyr].SC3_Verbose=1; else BA[plyr].SC3_Verbose=0; end end if (set==24) then if ( state == true or state == 1 ) then BA[plyr].SC4_Verbose=1; else BA[plyr].SC4_Verbose=0; end end if (set==70) then if ( state == true or state == 1 ) then BA[plyr].BuffCast_Verbose=1; BA[plyr].BuffCast_Quiet=0; BuffAhoy_OnShow(); -- BADebug("Verbose",BA[plyr].BuffCast_Verbose) -- BADebug("Quiet",BA[plyr].BuffCast_Quiet) else BA[plyr].BuffCast_Verbose=0; BuffAhoy_OnShow(); -- BADebug("Verbose",BA[plyr].BuffCast_Verbose) -- BADebug("Quiet",BA[plyr].BuffCast_Quiet) end end if (set==71) then if ( state == true or state == 1 ) then BA[plyr].BuffCast_Quiet=1; BA[plyr].BuffCast_Verbose=0; BuffAhoy_OnShow(); -- BADebug("Verbose",BA[plyr].BuffCast_Verbose) -- BADebug("Quiet",BA[plyr].BuffCast_Quiet) else BA[plyr].BuffCast_Quiet=0; BuffAhoy_OnShow(); -- BADebug("Verbose",BA[plyr].BuffCast_Verbose) -- BADebug("Quiet",BA[plyr].BuffCast_Quiet) end end if (set==72) then if ( state == true or state == 1 ) then BA[plyr].buffbeginannounce=1 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_ON) else BA[plyr].buffbeginannounce=0 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_OFF) end BuffAhoy_OnShow(); end end function BuffAhoy_CheckButtonEnter() GameTooltip:SetOwner(this, "ANCHOR_RIGHT"); GameTooltip:SetText(BUFFAHOY_OPTIONS_TIP); end function BuffAhoy_CheckButtonLeave() GameTooltip:Hide(); end function BuffAhoy_CheckToggle(set,state) -- if (set==1) then -- if ( state == true or state == 1 ) then -- BA[plyr].RCFrameVar=1; -- else -- BA[plyr].RCFrameVar=3; -- end -- BuffFrameTogglish(BA[plyr].RCFrameVar) -- end -- if (set==2) then -- if ( state == true or state == 1 ) then -- BA[plyr].UFrameVar=1; -- else -- BA[plyr].UFrameVar=0; -- end -- UtilFrameTogglish(BA[plyr].UFrameVar) -- end if (set==11) then if (state == true or state == 1 ) then BA[plyr].Healzor_Smartcastable=1; else BA[plyr].Healzor_Smartcastable=0; end end if (set==12) then if (state == true or state == 1 ) then BA[plyr].Healzor_Smartcastable_Two=1; else BA[plyr].Healzor_Smartcastable_Two=0; end end if (set==13) then if (state == true or state == 1 ) then BA[plyr].Healzor_Smartcastable_Three=1; else BA[plyr].Healzor_Smartcastable_Three=0; end end if (set==14) then if (state == true or state == 1 ) then BA[plyr].Protectzor_Smartcastable=1; BADebug("Pz_sc",BA[plyr].Protectzor_Smartcastable) else BA[plyr].Protectzor_Smartcastable=0; BADebug("Pz_sc",BA[plyr].Protectzor_Smartcastable) end end if (set==15) then if (state == true or state == 1 ) then BA[plyr].Cleanzor_Smartcastable=1; else BA[plyr].Cleanzor_Smartcastable=0; end end if (set==16) then if (state == true or state == 1 ) then BA[plyr].Cleanzor_Smartcastable_Two=1; else BA[plyr].Cleanzor_Smartcastable_Two=0; end end if (set==21) then if ( state == true or state == 1 ) then BA[plyr].SC1_SC=1; else BA[plyr].SC1_SC=0; end end if (set==22) then if ( state == true or state == 1 ) then BA[plyr].SC2_SC=1; else BA[plyr].SC2_SC=0; end end if (set==23) then if ( state == true or state == 1 ) then BA[plyr].SC3_SC=1; else BA[plyr].SC3_SC=0; end end if (set==24) then if ( state == true or state == 1 ) then BA[plyr].SC4_SC=1; else BA[plyr].SC4_SC=0; end end end function BuffAhoy_OptionsButtonEnter() GameTooltip:SetOwner(this, "ANCHOR_RIGHT"); GameTooltip:SetText(BUFFAHOY_OPTIONS_TIP); end function BuffAhoy_OptionsButtonLeave() GameTooltip:Hide(); end function BuffAhoy_OptionsToggle(set,state) if (set==1) then if ( state == true or state == 1 ) then BA[plyr].PPTenabled=1; BuffAhoy_OnShow(); else BA[plyr].PPTenabled=0; BuffAhoy_OnShow(); end end if (set==2) then if ( state == true or state == 1 ) then BA[plyr].SCenabled=1; BuffAhoy_OnShow(); else BA[plyr].SCenabled=0; BuffAhoy_OnShow(); end end if (set==3) then if (state == true or state == 1 ) then BA[plyr].manabuff=1; else BA[plyr].manabuff=0; end end if (set==4) then if (state == true or state == 1 ) then BA[plyr].buffbeginannounce=1; DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_ON) BuffAhoy_OnShow() else BA[plyr].buffbeginannounce=0; DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_OFF) BuffAhoy_OnShow() end end if (set==5) then if (state == true or state == 1 ) then BA[plyr].statustext=1; else BA[plyr].statustext=0; end end if (set==6) then if (state == true or state == 1 ) then BA[plyr].loudevents=1; else BA[plyr].loudevents=0; end end if (set==7) then if (state == true or state == 1 ) then BA[plyr].forceparty=1; else BA[plyr].forceparty=0; end end if (set==8) then if (state == true or state == 1 ) then BA[plyr].showPPTFrame=1; PPTFrame:Show() else BA[plyr].showPPTFrame=0; PPTFrame:Hide() end end -- if (set==10) then -- if (state == true or state == 1 ) then -- whovar="raid"; -- BuffAhoy_OnShow(); -- else -- whovar="party"; -- BuffAhoy_OnShow(); -- end -- end if (set==43) then if (state == true or state == 1 ) then BA[plyr].multiverbosity=1; BuffAhoy_OnShow() else BA[plyr].multiverbosity=0; BuffAhoy_OnShow() end end if (set==81) then if ( state == true or state == 1 ) then BA[plyr]["group"][1]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][1]=0; BuffAhoy_OnShow(); end end if (set==82) then if ( state == true or state == 1 ) then BA[plyr]["group"][2]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][2]=0; BuffAhoy_OnShow(); end end if (set==83) then if (state == true or state == 1 ) then BA[plyr]["group"][3]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][3]=0; BuffAhoy_OnShow(); end end if (set==84) then if (state == true or state == 1 ) then BA[plyr]["group"][4]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][4]=0; BuffAhoy_OnShow(); end end if (set==85) then if (state == true or state == 1 ) then BA[plyr]["group"][5]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][5]=0; BuffAhoy_OnShow(); end end if (set==86) then if (state == true or state == 1 ) then BA[plyr]["group"][6]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][6]=0; BuffAhoy_OnShow(); end end if (set==87) then if (state == true or state == 1 ) then BA[plyr]["group"][7]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][7]=0; BuffAhoy_OnShow(); end end if (set==88) then if (state == true or state == 1 ) then BA[plyr]["group"][8]=1; BuffAhoy_OnShow(); else BA[plyr]["group"][8]=0; BuffAhoy_OnShow(); end end end function BuffAhoyNameGrab(id) BA_Tooltip:SetOwner(BuffAhoyFrame, "ANCHOR_NONE") BA_Tooltip:SetAction(id) local textemp=BA_TooltipTextLeft1:GetText() -- DEFAULT_CHAT_FRAME:AddMessage(textemp) if textemp~=nil then BuffAhoyNameArray[id]=textemp; else BuffAhoyNameArray[id]="nothing"; end BA_Tooltip:Hide(); end function BuffAhoyButton_Update() -- When called manually, this can change - changed code to use button instead of this local button = this -- Blizzard code if button~= nil then local buttonID = BuffAhoyButton_GetID(button); local icon = getglobal(button:GetName().."Icon"); local buttonCooldown = getglobal(button:GetName().."Cooldown"); local texture = GetActionTexture(BuffAhoyButton_GetID(button)); if ( texture ) then icon:SetTexture(texture); icon:Show(); button:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2"); BuffAhoyNameGrab(BuffAhoyButton_GetID(button)); else icon:Hide(); buttonCooldown:Hide(); button.rangeTimer = nil; button:SetNormalTexture("Interface\\Buttons\\UI-Quickslot"); getglobal(button:GetName().."HotKey"):SetVertexColor(0.6, 0.6, 0.6); end end -- Update Macro Text local macroName = getglobal(button:GetName().."Name"); macroName:SetText(GetActionText(BuffAhoyButton_GetID(button))) this = button end function BuffAhoy_SetTooltip() button = this GameTooltip:SetOwner(button, "ANCHOR_RIGHT"); GameTooltip:SetAction(BuffAhoyButton_GetID(button)) this = button end function BuffFrameTogglish(state) if ( BuffAhoyOptions ) then if ( state==1 ) then ShowUIPanel(BuffAhoyOptions); HideUIPanel(BuffAhoySetOne); HideUIPanel(BuffAhoySetTwo); HideUIPanel(BuffAhoySetThreeFour); ShowUIPanel(RaidSetThreeFour); ShowUIPanel(RaidSetOne); ShowUIPanel(RaidSetTwo); HideUIPanel(BuffAhoyGroupFrame); elseif (state==3) then ShowUIPanel(BuffAhoyOptions); ShowUIPanel(BuffAhoySetOne); ShowUIPanel(BuffAhoySetTwo); ShowUIPanel(BuffAhoySetThreeFour); HideUIPanel(RaidSetThreeFour); HideUIPanel(RaidSetOne); HideUIPanel(RaidSetTwo); HideUIPanel(BuffAhoyGroupFrame); else ShowUIPanel(BuffAhoyOptions); HideUIPanel(BuffAhoySetOne); HideUIPanel(BuffAhoySetTwo); HideUIPanel(BuffAhoySetThreeFour); HideUIPanel(RaidSetThreeFour); HideUIPanel(RaidSetOne); HideUIPanel(RaidSetTwo); ShowUIPanel(BuffAhoyGroupFrame); end else DEFAULT_CHAT_FRAME:AddMessage("BuffAhoyFrame doesn't exist!!") end end function BuffAhoyFrameTogglish(state) if (BuffAhoyOptions) then HideUIPanel(MultiCastSetOne); HideUIPanel(MultiCastSetTwo); HideUIPanel(ShoutCastOne); HideUIPanel(ShoutCastTwo); HideUIPanel(ShoutCastThree); HideUIPanel(ShoutCastFour); HideUIPanel(BuffAhoyHealOne); HideUIPanel(BuffAhoyHealTwo); HideUIPanel(BuffAhoyHealThree); HideUIPanel(BuffAhoyCleanseOne); HideUIPanel(BuffAhoyCleanseTwo); HideUIPanel(BuffAhoyProtect); ShowUIPanel(BuffAhoyOptions); HideUIPanel(BuffAhoySetOne); HideUIPanel(BuffAhoySetTwo); HideUIPanel(BuffAhoySetThreeFour); HideUIPanel(RaidSetThreeFour); HideUIPanel(RaidSetOne); HideUIPanel(RaidSetTwo); HideUIPanel(VerboseTypeDropdown); HideUIPanel(BuffTypeDropdown); HideUIPanel(SCTypeDropdown); HideUIPanel(BuffAhoyOptionsFrame); HideUIPanel(BuffAhoyGroupFrame); if (state==1) then ShowUIPanel(VerboseTypeDropdown); ShowUIPanel(BuffTypeDropdown); elseif (state ==2) then ShowUIPanel(BuffAhoyHealOne); ShowUIPanel(BuffAhoyHealTwo); ShowUIPanel(BuffAhoyHealThree); ShowUIPanel(BuffAhoyCleanseOne); ShowUIPanel(BuffAhoyCleanseTwo); ShowUIPanel(BuffAhoyProtect); ShowUIPanel(VerboseTypeDropdown); elseif (state == 3) then ShowUIPanel(MultiCastSetOne); ShowUIPanel(MultiCastSetTwo); ShowUIPanel(ShoutCastOne); ShowUIPanel(ShoutCastTwo); ShowUIPanel(ShoutCastThree); ShowUIPanel(ShoutCastFour); ShowUIPanel(VerboseTypeDropdown); elseif (state == 4) then ShowUIPanel(BuffAhoyOptionsFrame); ShowUIPanel(VerboseTypeDropdown); ShowUIPanel(SCTypeDropdown); end end end function BuffAhoyMasterDropdown_OnLoad() UIDropDownMenu_Initialize(this, BuffAhoyMasterDropdown_Initialize); UIDropDownMenu_SetSelectedID(BuffAhoyMasterDropdown, BA[plyr].BAFrameVar); UIDropDownMenu_SetWidth(120, BuffAhoyMasterDropdown); end function BuffAhoyMasterDropdown_OnClick() UIDropDownMenu_SetSelectedValue(BuffAhoyMasterDropdown, this.value); -- BADebug("value",UIDropDownMenu_GetSelectedValue(BuffAhoyMasterDropdown)) BA[plyr].BAFrameVar = UIDropDownMenu_GetSelectedValue(BuffAhoyMasterDropdown); BuffAhoyFrameTogglish(BA[plyr].BAFrameVar) -- DEFAULT_CHAT_FRAME:AddMessage("Frame Var is "..BA[plyr].BAFrameVar); BuffAhoyMasterDropdown.tooltip = this.tooltipText; end function BuffAhoyMasterDropdown_Initialize() local selectedValue = UIDropDownMenu_GetSelectedValue(BuffAhoyMasterDropdown); local info; -- Show Buffs info = {}; info.text = BUFFAHOY_PB_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_PB_TOOLTIP; info.func = BuffAhoyMasterDropdown_OnClick; info.value = 1; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Utils info = {}; info.text = BUFFAHOY_UF_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_UF_TOOLTIP; info.func = BuffAhoyMasterDropdown_OnClick; info.value = 2; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Multi/Shoutcast info = {}; info.text = BUFFAHOY_MC_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_MC_TOOLTIP ; info.func = BuffAhoyMasterDropdown_OnClick; info.value = 3; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show BuffAhoy Options info = {}; info.text = BUFFAHOY_GO_TEXT ; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_GO_TOOLTIP; info.func = BuffAhoyMasterDropdown_OnClick; info.value = 4; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); end function BuffTypeDropdown_OnLoad() UIDropDownMenu_Initialize(this, BuffTypeDropdown_Initialize); UIDropDownMenu_SetSelectedValue(this, BA[plyr].RCFrameVar); -- BADebug("RC onload", BA[plyr].RCFrameVar) -- BADebug("value onload",UIDropDownMenu_GetSelectedValue(BuffTypeDropdown)); if BA[plyr].RCFrameVar==1 then UIDropDownMenu_SetSelectedID(BuffTypeDropdown, 1); elseif BA[plyr].RCFrameVar==2 then UIDropDownMenu_SetSelectedID(BuffTypeDropdown, 2); elseif BA[plyr].RCFrameVar==3 then UIDropDownMenu_SetSelectedID(BuffTypeDropdown, 3); end -- BADebug("ID onload",UIDropDownMenu_GetSelectedID(BuffTypeDropdown)); BuffFrameTogglish(BA[plyr].RCFrameVar) UIDropDownMenu_SetWidth(110, BuffTypeDropdown); end function BuffTypeDropdown_OnClick() UIDropDownMenu_SetSelectedValue(BuffTypeDropdown, this.value); -- BADebug("value",UIDropDownMenu_GetSelectedValue(BuffTypeDropdown)) BA[plyr].RCFrameVar = UIDropDownMenu_GetSelectedValue(BuffTypeDropdown); BuffFrameTogglish(BA[plyr].RCFrameVar) BuffTypeDropdown.tooltip = this.tooltipText; end function BuffTypeDropdown_Initialize() local selectedValue = UIDropDownMenu_GetSelectedValue(BuffTypeDropdown); local info; -- Show Class-based info = {}; info.text = BUFFAHOY_CLASSBASE_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_CLASSBASE_TOOLTIP; info.func = BuffTypeDropdown_OnClick; info.value = 1; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Groups info = {}; info.text = BUFFAHOY_GROUP_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_GROUP_TOOLTIP; info.func = BuffTypeDropdown_OnClick; info.value = 2; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Individualized info = {}; info.text = BUFFAHOY_INDIV_TEXT ; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_INDIV_TOOLTIP; info.func = BuffTypeDropdown_OnClick; info.value = 3; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); end function VerboseTypeDropdown_OnLoad() UIDropDownMenu_Initialize(this, VerboseTypeDropdown_Initialize); if whovar=="raid" then UIDropDownMenu_SetSelectedID(VerboseTypeDropdown, 1); elseif whovar=="party" then UIDropDownMenu_SetSelectedID(VerboseTypeDropdown, 2); elseif whovar=="say" then UIDropDownMenu_SetSelectedID(VerboseTypeDropdown, 3); end UIDropDownMenu_SetWidth(70, VerboseTypeDropdown); end function VerboseTypeDropdown_OnClick() UIDropDownMenu_SetSelectedValue(VerboseTypeDropdown, this.value); -- BADebug("value",UIDropDownMenu_GetSelectedValue(VerboseTypeDropdown)) local temp1 = UIDropDownMenu_GetSelectedValue(VerboseTypeDropdown); if temp1==1 then whovar="raid" elseif temp1==2 then whovar="party" elseif temp1==3 then whovar="say" end VerboseTypeDropdown.tooltip = this.tooltipText; end function VerboseTypeDropdown_Initialize() local selectedValue = UIDropDownMenu_GetSelectedValue(VerboseTypeDropdown); local info; -- Show Buffs info = {}; info.text = BUFFAHOY_VERBOSE_RAID_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_VERBOSE_RAID_TT; info.func = VerboseTypeDropdown_OnClick; info.value = 1; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Debuffs info = {}; info.text = BUFFAHOY_VERBOSE_PARTY_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_VERBOSE_PARTY_TT ; info.func = VerboseTypeDropdown_OnClick; info.value = 2; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Show Both info = {}; info.text = BUFFAHOY_VERBOSE_SAY_TEXT; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_VERBOSE_SAY_TT; info.func = VerboseTypeDropdown_OnClick; info.value = 3; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); end function SCTypeDropdown_OnLoad() UIDropDownMenu_Initialize(this, SCTypeDropdown_Initialize); -- BADebug("value onload",UIDropDownMenu_GetSelectedValue(BuffTypeDropdown)); -- BADebug("ShiftAlt",BA[plyr].ShiftAlt) UIDropDownMenu_SetSelectedID(SCTypeDropdown, BA[plyr].ShiftAlt); -- BADebug("ID onload",UIDropDownMenu_GetSelectedID(SCTypeDropdown)); -- BA[plyr].ShiftAlt = UIDropDownMenu_GetSelectedValue(SCTypeDropdown); UIDropDownMenu_SetWidth(60, SCTypeDropdown); end function SCTypeDropdown_OnClick() UIDropDownMenu_SetSelectedValue(SCTypeDropdown, this.value); -- BADebug("value",UIDropDownMenu_GetSelectedValue(SCTypeDropdown)) BA[plyr].ShiftAlt = UIDropDownMenu_GetSelectedValue(SCTypeDropdown); -- BADebug("ShiftAlt",BA[plyr].ShiftAlt) SCTypeDropdown.tooltip = this.tooltipText; end function SCTypeDropdown_Initialize() local selectedValue = UIDropDownMenu_GetSelectedValue(SCTypeDropdown); local info; -- Alt for selfcasting info = {}; info.text = "Alt"; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_ALTSELF_TOOLTIP; info.func = SCTypeDropdown_OnClick; info.value = 1; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Shift for Smartcasting info.text = "Shift"; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_SHIFTSELF_TOOLTIP; info.func = SCTypeDropdown_OnClick; info.value = 2; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); -- Control for Smartcasting info.text = "Ctrl"; info.tooltipTitle = info.text; info.tooltipText = BUFFAHOY_SHIFTSELF_TOOLTIP; info.func = SCTypeDropdown_OnClick; info.value = 3; if ( selectedValue == info.value ) then info.checked = 1; else info.checked = nil; end UIDropDownMenu_AddButton(info); end function PPTFrame_OnLoad() -- RegisterForSave("PPTX1") -- RegisterForSave("PPTY1") if not XVAR1 or not YVAR1 then XVAR1 = 500; YVAR1 = 500; else PPTFrame:SetPoint("TOPLEFT","UIParent","BOTTOMLEFT", XVAR1, YVAR1); end getglobal("PPTText"):SetTextHeight(13); end function PPTFrame_OnMouseDown(arg1) if arg1 == "LeftButton" then PPTFrame:StartMoving(); end end function PPTFrame_OnMouseUp(arg1) if arg1 == "LeftButton" then PPTFrame:StopMovingOrSizing(); PPTX1=PPTFrame:GetLeft(); PPTY1=PPTFrame:GetTop(); end end function PPTFrame_OnUpdate() if UnitName("target")~=nil and UnitIsFriend("player","target") then PPTText:SetText(UnitName("target")) --and (PartyTarget=="player" or PartyTarget=="party1" or PartyTarget=="party2" or PartyTarget=="party3" or PartyTarget=="party4") elseif PartyTarget~=nil and UnitName(PartyTarget)~=nil then PPTText:SetText(UnitName(PartyTarget)) elseif PartyTarget~=nil and UnitName(PartyTarget)==nil then PPTText:SetText("No Target") elseif PartyTarget~=nil then PPTText:SetText(PartyTarget) else PPTText:SetText("No Target") end if GetNumPartyMembers()<1 then PPTFrame:Hide() elseif GetNumPartyMembers()>0 and BAgotPlayerName and BA[plyr].showPPTFrame==1 then PPTFrame:Show() end end function PPT_CloseButton() PPTFrame:Hide() end ----------------------------------------------------------------------------------------- -- SlashCommandHandlers function BuffAhoy_SlashCommandHandler(msg) if (msg== "verbose") then BA[plyr].BuffCast_Verbose=1 BA[plyr].Healzor_Verbose=1 BA[plyr].Healzor_Verbose_Two=1 BA[plyr].Healzor_Verbose_Three=1 BA[plyr].Cleanzor_Verbose=1 BA[plyr].Cleanzor_Verbose_Two=1 BA[plyr].Protectzor_verbose=1 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_VERBOSESLASH1) DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_VERBOSESLASH2) end if (msg== "silent") then BA[plyr].BuffCast_Verbose=0 BA[plyr].Healzor_Verbose=0 BA[plyr].Healzor_Verbose_Two=0 BA[plyr].Healzor_Verbose_Three=0 BA[plyr].Cleanzor_Verbose=0 BA[plyr].Cleanzor_Verbose_Two=0 BA[plyr].Protectzor_verbose=0 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_VERBOSESLASH3) DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_VERBOSESLASH2) end if (msg=="buffs") then BuffAhoyTogglish() end if (msg=="caster") then BuffAhoyTogglish() end if (msg=="config") then BuffAhoyTogglish() end if (msg=="") then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_VERBOSESLASH2) end if (msg=="buff1") then BuffCastSetOne() end if (msg=="buff2") then BuffCastSetTwo() end if (msg=="buff3") then BuffCastSetThree() end if (msg=="heal1") then BuffAhoyHealzorOne() end if (msg=="heal2") then BuffAhoyHealzorTwo() end if (msg=="heal3") then BuffAhoyHealzorThree() end if (msg=="cleanse1") then BuffAhoyCleanzorOne() end if (msg=="cleanse2") then BuffAhoyCleanzorTwo() end if (msg=="protect1") or (msg=="protect") then BuffAhoyProtectzorOne() end if (msg=="multi1") then MultiCastSetEin() end if (msg=="multi2") then MultiCastSetZwei() end if (msg=="shoutcast1") or (msg=="shout1") then ShoutCastEin() end if (msg=="shoutcast2") or (msg=="shout2") then ShoutCastZwei() end if (msg=="shoutcast3") or (msg=="shout3") then ShoutCastDrei() end if (msg=="shoutcast4") or (msg=="shout4") then ShoutCastVier() end if (msg=="PPT") then PPTFrame:Show() end if (msg=="announce") then if not BA[plyr].buffbeginannounce then BA_ExecuteVersionChanges() end if BA[plyr].buffbeginannounce==0 then BA[plyr].buffbeginannounce=1 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_ON) elseif BA[plyr].buffbeginannounce==1 then BA[plyr].buffbeginannounce=0 DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ANNOUNCE_OFF) end end if (msg=="panic") then Panic() end if (msg=="help") then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_SLASHHELP1) DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_SLASHHELP2) DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_SLASHHELP3) end end -- Passive Targetting functions function PlayerTarget() PartyTarget="player" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end end function PartyTarget1() PartyTarget="party1" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end end function PartyTarget2() PartyTarget="party2" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end end function PartyTarget3() PartyTarget="party3" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end end function PartyTarget4() PartyTarget="party4" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end end function PetTargetMine() if UnitName("pet")~=nil then PartyTarget="pet" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPET1) end end function PetTarget1() if UnitName("partypet1")~=nil then PartyTarget="partypet1" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end else if UnitName("party1")~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(UnitName("party1")..BUFFAHOY_ERR_NOPET2) elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPARTYMBR.." 1") end end end function PetTarget2() if UnitName("partypet2")~=nil then PartyTarget="partypet2" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end else if UnitName("party2")~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(UnitName("party2")..BUFFAHOY_ERR_NOPET2) elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPARTYMBR.." 2") end end end function PetTarget3() if UnitName("partypet3")~=nil then PartyTarget="partypet3" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end else if UnitName("party3")~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(UnitName("party3")..BUFFAHOY_ERR_NOPET2) elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPARTYMBR.." 3") end end end function PetTarget4() if UnitName("partypet4")~=nil then PartyTarget="partypet4" if BA[plyr].PPTenabled==0 then TargetUnit(PartyTarget) end else if UnitName("party4")~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(UnitName("party4")..BUFFAHOY_ERR_NOPET2) elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPARTYMBR.." 4") end end end function CustomPPTarget() if UnitName("target")~=nil then for i=1,40 do temptar="raid"..i if UnitName("target")==UnitName(temptar) then PartyTarget="raid"..i DEFAULT_CHAT_FRAME:AddMessage("PPT set to "..UnitName("raid"..i)); end temptar="raidpet"..i if PartyTarget~="raidpet"..i and UnitName("target")==UnitName(temptar) then PartyTarget="raidpet"..i DEFAULT_CHAT_FRAME:AddMessage("PPT set to "..UnitName("raidpet"..i)) end end end end --Buff macros (from GUI binds) function BuffCastSetOne() if BA[plyr].RCFrameVar==3 then BuffCast("default1", BCS1.cooldown, BCS1[6], BCS1[1], BCS1[2], BCS1[3], BCS1[4], BCS1[5]); -- BADebug("BC1 RCFrameVar",BA[plyr].RCFrameVar) else BBoC("BBOC1",RCcooldown) -- BADebug("RS1 RCFrameVar",BA[plyr].RCFrameVar) end end --function BuffCastSetTwo() -- if BA[plyr].RCFrameVar==3 then -- BuffCast("default2", BCS2.cooldown, BCS2[6], BCS2[1], BCS2[2], BCS2[3], BCS2[4], BCS2[5]); -- BADebug("BC2 RCFrameVar",BA[plyr].RCFrameVar) -- else -- BBoC("RCS1",RCcooldown) -- BADebug("RS1 RCFrameVar",BA[plyr].RCFrameVar) -- end --end function BuffCastSetTwo() if BA[plyr].RCFrameVar==3 then BuffCast("default2", BCScooldown, BCS3, BCS3, BCS3, BCS3, BCS3, BCS3); -- BADebug("BC3 RCFrameVar",BA[plyr].RCFrameVar) else BBoC("BBoC2",RCcooldown, RCS2) -- BADebug("RS2 RCFrameVar",BA[plyr].RCFrameVar) end end function BuffCastSetThree() if BA[plyr].RCFrameVar==3 then BuffCast("default3", BCScooldown, BCS4, BCS4, BCS4, BCS4, BCS4, BCS4); -- BADebug("BC4 RCFrameVar",BA[plyr].RCFrameVar) else BBoC("BBoC3",RCcooldown, RCS3) -- BADebug("RS3 RCFrameVar",BA[plyr].RCFrameVar) end end function BuffAhoyHealzorOne() Healzor(HZR1); end function BuffAhoyHealzorTwo() Healzor2(HZR2); end function BuffAhoyHealzorThree() Healzor3(HZR3); end function BuffAhoyCleanzorOne() Cleanzor(CZR1); end function BuffAhoyCleanzorTwo() Cleanzor2(CZR2); end function BuffAhoyProtectzorOne() Protectzor(PZR1); end function MultiCastSetEin() if BA[plyr].multiverbosity==1 then MultiShoutCast("mscdefault",MCS1.cooldown, MCS1[1], nil, MCS1[2], nil, MCS1[3], nil, MCS1[4], nil, MCS1[5], nil, MCS1[6], nil) else MultiCast("mcdefault",MCS1.cooldown, MCS1[1], MCS1[2], MCS1[3], MCS1[4], MCS1[5], MCS1[6]) end end function MultiCastSetZwei() if BA[plyr].multiverbosity==1 then MultiShoutCast("mscdefault",MCS2.cooldown, MCS2[1], nil, MCS2[2], nil, MCS2[3], nil, MCS2[4], nil, MCS2[5], nil, MCS2[6], nil) else MultiCast("mcdefault",MCS2.cooldown, MCS2[1], MCS2[2], MCS2[3], MCS2[4], MCS2[5], MCS2[6]) end end function ShoutCastEin() ShoutCast(SCT1, nil, BA[plyr].SC1_Verbose, BA[plyr].SC1_SC) end function ShoutCastZwei() ShoutCast(SCT2, nil, BA[plyr].SC2_Verbose, BA[plyr].SC2_SC) end function ShoutCastDrei() ShoutCast(SCT3, nil, BA[plyr].SC3_Verbose, BA[plyr].SC3_SC) end function ShoutCastVier() ShoutCast(SCT4, nil, BA[plyr].SC4_Verbose, BA[plyr].SC4_SC) end --#################Logic Functions##################### --Check for mana, cooldown, etc function UsableCheck(spellid, verbose, manastring, cdstring, oorstring) local isUsable local notEnoughMana local inRange local start local duration local enable local castme if spellid>=1 and spellid<=120 then -- run the check isUsable, notEnoughMana = IsUsableAction(spellid) inRange = IsActionInRange(spellid) start, duration, enable = GetActionCooldown(spellid) else --id out of bounds, for now just default everything (maybe add error and return later) isUsable=true; notEnoughMana=false; start=0 duration=0 enable=0 end if ( start > 0 and duration > 0 and enable > 0) then if cdstring~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(cdstring); elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_WAIT); end return nil; elseif (notEnoughMana) then if (verbose==1 and manastring~=nil) then if UnitName("target")~= nil and UnitIsFriend("player","target") then SendChatMessage(manastring .. " %T!!" , whovar) elseif UnitName(PartyTarget)~=nil then SendChatMessage(manastring.." "..UnitName(PartyTarget) .."!!",whovar) end elseif (verbose==1 and manastring==nil and BA[plyr].statustext==1) then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_MANA) end return nil; elseif inRange == 0 then if oorstring~=nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(oorstring) elseif BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_RANGE); end return nil; else return 1; end end --Smartcasting and PPT logic function SmartPPT(spellid, saystring, verbose, smart) if verbose==nil then verbose=1 end; if smart==nil then smart=1 end; -- BADebug("Shift", IsShiftKeyDown()) -- BADebug("SCenabled", BA[plyr].SCenabled) -- BADebug("smart",smart) if (IsShiftKeyDown() and BA[plyr].SCenabled==1 and BA[plyr].ShiftAlt==2 and smart==1) then BAUseAction(spellid,1,1) elseif (IsAltKeyDown() and BA[plyr].SCenabled==1 and BA[plyr].ShiftAlt==1 and smart==1) then BAUseAction(spellid,1,1) elseif (IsControlKeyDown() and BA[plyr].SCenabled==1 and BA[plyr].ShiftAlt==3 and smart==1) then BAUseAction(spellid,1,1) else if (BA[plyr].PPTenabled==0 and not UnitIsFriend("player","target") ) then if (PartyTarget~=nil and UnitName(PartyTarget)~=nil) then TargetUnit(PartyTarget) else TargetByName(PartyTarget) end end BAUseAction(spellid,1,0) castFlag=true; tempverb=verbose; BuffAhoyNameGrab(spellid) if UnitName("target")~=nil and UnitIsFriend("player","target") then SpellTargetUnit("target") if (saystring~=nil and verbose==1) then SendChatMessage(saystring.." "..UnitName("target").." with "..BuffAhoyNameArray[spellid],whovar) elseif verbose==1 then SendChatMessage("Casting " .. BuffAhoyNameArray[spellid].." on "..UnitName("target"),whovar) end elseif (PartyTarget~=nil and UnitName(PartyTarget)~=nil) then SpellTargetUnit(PartyTarget) if (saystring~=nil and verbose==1) then SendChatMessage(saystring.." "..UnitName(PartyTarget).." with "..BuffAhoyNameArray[spellid],whovar) elseif verbose==1 and UnitName(PartyTarget)~=nil then SendChatMessage("Casting " .. BuffAhoyNameArray[spellid].." on "..UnitName(PartyTarget),whovar) elseif UnitName(PartyTarget)==nil and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_PPT_NOT_VALID) end -- elseif PartyTarget~=nil then -- TargetByName(PartyTarget) -- if (saystring~=nil and verbose==1) then -- SendChatMessage(saystring.." "..PartyTarget.." with "..BuffAhoyNameArray[spellid],whovar) -- elseif verbose==1 then -- SendChatMessage("Casting " .. BuffAhoyNameArray[spellid].." on "..PartyTarget,whovar) -- end end end --clear target if spell failed if SpellIsTargeting() then SpellStopTargeting() end end -- Buff macro (now pet-friendly) function BuffCast(cast_id, reset_timeout, petid, ...) -- if we haven't seen the cast_id before, initialize the time and step if not BA_step_data[cast_id] then BA_step_data[cast_id] = {} BA_step_data[cast_id]['last_time'] = 0 BA_step_data[cast_id]['cast_step'] = 1 end local now = GetTime() -- if the timeout has been reached, always revert to step 1 if reset_timeout and now - BA_step_data[cast_id].last_time >= reset_timeout then BA_step_data[cast_id]['cast_step'] = 1 petFlag = false if BA[plyr].buffbeginannounce==1 then SendChatMessage(BUFFAHOY_GATHER_START..UnitName("player")..BUFFAHOY_GATHER_END); end end -- update the time at which the this id was invoked BA_step_data[cast_id]['last_time'] = now -- local var for passing to UsableCheck, to determine verbosity if (BA[plyr].BuffCast_Verbose==1 or BA[plyr].BuffCast_Quiet==1) then local talky=1; else local talky=0; end -- Check for target's existence, should stop if there is an online party member in the appropriate slot -- if GetNumPartyMembers()>0 then -- tarvar=playa[BA_step_data[cast_id].cast_step] -- rpvar="party" -- maxno=5 -- end -- BADebug("tarvar",tarvar) -- spellid=ClassSpecificBuffs(UnitClass(tarvar)) -- BADebug("UnitClass",UnitClass(tarvar)) -- BADebug("spellid",spellid) -- BADebug("UnitName",UnitName(tarvar)) -- BADebug("maxno",maxno) while (UnitName(playa[BA_step_data[cast_id].cast_step])==nil or not HasAction(arg[BA_step_data[cast_id].cast_step])) and BA_step_data[cast_id].cast_step table.getn( arg ) then BA_step_data[cast_id].cast_step = 1 UIErrorsFrame:AddMessage("Buff Sequence Finished", 0.8, 0.8, 0.2, 1.0, UIERRORS_HOLD_TIME); DEFAULT_CHAT_FRAME:AddMessage("Buff Sequence Finished", 0.8, 0.8, 0.2); end end end --Heal script function Healzor(spellid, ...) if (UsableCheck(spellid, BA[plyr].Healzor_Verbose, BUFFAHOY_NO_MANA_TO_HEAL) or (BA[plyr].Healzor_Smartcastable==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then -- SmartPPT(spellid, BUFFAHOY_HEALZOR_TEXT, BA[plyr].Healzor_Verbose, BA[plyr].Healzor_Smartcastable) SmartPPT(spellid, nil, BA[plyr].Healzor_Verbose, BA[plyr].Healzor_Smartcastable) end end function Healzor2(spellid, ...) if (UsableCheck(spellid, BA[plyr].Healzor_Verbose_Two, BUFFAHOY_NO_MANA_TO_HEAL) or (BA[plyr].Healzor_Smartcastable_Two==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then -- SmartPPT(spellid, BUFFAHOY_HEALZOR_TEXT, BA[plyr].Healzor_Verbose_Two, BA[plyr].Healzor_Smartcastable_Two) SmartPPT(spellid, nil, BA[plyr].Healzor_Verbose_Two, BA[plyr].Healzor_Smartcastable_Two) end end function Healzor3(spellid, ...) if (UsableCheck(spellid, BA[plyr].Healzor_Verbose_Three, BUFFAHOY_NO_MANA_TO_HEAL) or (BA[plyr].Healzor_Smartcastable_Three==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then -- SmartPPT(spellid, BUFFAHOY_HEALZOR_TEXT, BA[plyr].Healzor_Verbose_Three, BA[plyr].Healzor_Smartcastable_Three) SmartPPT(spellid, nil, BA[plyr].Healzor_Verbose_Three, BA[plyr].Healzor_Smartcastable_Three) end end -- Cleanse script function Cleanzor(spellid) if (UsableCheck(spellid, BA[plyr].Cleanzor_Verbose) or (BA[plyr].Cleanzor_Smartcastable==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then -- SmartPPT(spellid, BUFFAHOY_CLEANZOR_TEXT, BA[plyr].Cleanzor_Verbose, BA[plyr].Cleanzor_Smartcastable) SmartPPT(spellid, nil, BA[plyr].Cleanzor_Verbose, BA[plyr].Cleanzor_Smartcastable) end end function Cleanzor2(spellid) if (UsableCheck(spellid, BA[plyr].Cleanzor_Verbose_Two) or (BA[plyr].Cleanzor_Smartcastable_Two==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then -- SmartPPT(spellid, BUFFAHOY_CLEANZOR_TEXT, BA[plyr].Cleanzor_Verbose_Two, BA[plyr].Cleanzor_Smartcastable_Two) SmartPPT(spellid, nil, BA[plyr].Cleanzor_Verbose_Two, BA[plyr].Cleanzor_Smartcastable_Two) end end --Blessing of Protection script function Protectzor(spellid) if (UsableCheck(spellid, BA[plyr].Protectzor_Verbose, BUFFAHOY_NO_MANA_TO_PROT) or (BA[plyr].Protectzor_Smartcastable==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3) ) ) ) then if (UnitName("target")~=nil and UnitIsFriend("player","target")) then temp=nil; for i=1,5,1 do if UnitName(playa[i])~=nil then if UnitName("target")==UnitName(playa[i]) then SmartPPT(spellid, nil, BA[plyr].Protectzor_Verbose, BA[plyr].Protectzor_Smartcastable) temp=1; end end end if temp~=1 then for i=1,40,1 do if UnitName("raid"..i)~=nil then if UnitName("target")==UnitName("raid"..i) then SmartPPT(spellid, nil, BA[plyr].Protectzor_Verbose, BA[plyr].Protectzor_Smartcastable) temp=1; end end end end if temp~=1 and BA[plyr].statustext==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_PROT_ERROR) end else SmartPPT(spellid, nil, BA[plyr].Protectzor_Verbose, BA[plyr].Protectzor_Smartcastable) end end end --SmartCast script function Smartzor(spellid, saystring, verbosity) --legacy function, kept only for backwards compatibility if (UsableCheck(spellid,1)) then SmartPPT(spellid, saystring, verbosity) end end --ShoutCast script function ShoutCast(spellid, saystring, verbose, smart) if verbose==nil then verbose=1 end if smart==nil then smart=1 end if (UsableCheck(spellid, 1)) then BuffAhoyNameGrab(spellid); -- if IsShiftKeyDown() and smart==1 then if smart==1 and ( (IsShiftKeyDown() and BA[plyr].ShiftAlt==2) or (IsAltKeyDown() and BA[plyr].ShiftAlt==1) or (IsControlKeyDown() and BA[plyr].ShiftAlt==3)) then SmartPPT(spellid) elseif (UnitName("target")~=nil and not UnitIsFriend("player","target")) then -- cast spell on hostile BAUseAction(spellid,1,0) castFlag=true; SpellTargetUnit("target") if saystring~=nil and verbose==1 then SendChatMessage(saystring.." "..UnitName("target"),whovar) tempverb=1; elseif verbose==1 then SendChatMessage("Casting " .. BuffAhoyNameArray[spellid].." on %T",whovar) tempverb=1; end elseif saystring ~= nil and UnitName("target")~=nil then SmartPPT(spellid, saystring, verbose, smart) else -- SmartPPT(spellid, BUFFAHOY_SHOUTCAST_TEXT .. BuffAhoyNameArray[spellid] .. BUFFAHOY_SHOUTCAST_TEXT2, verbose, smart) SmartPPT(spellid, nil, verbose, smart) end successful=true else successful=false end return successful; end -- MultiCast script (similar to CastAway) function MultiCast (cast_id, reset_timeout, ...) -- if we haven't seen the cast_id before, initialize the time and step if not BA_step_data[cast_id] then BA_step_data[cast_id] = {} BA_step_data[cast_id]['last_time'] = 0 BA_step_data[cast_id]['cast_step'] = 1 end local stepper = BA_step_data[cast_id] local now = GetTime() -- if the timeout has been reached, always revert to step 1 if reset_timeout and now - stepper['last_time'] >= reset_timeout then stepper['cast_step'] = 1 end -- local var to make code simpler iter=stepper['cast_step'] -- update the time at which the this id was invoked stepper['last_time'] = now -- cast the appropriate spell if (UsableCheck(arg[iter], 1)) then BAUseAction(arg[iter],1,0) -- advance the step by one stepper['cast_step'] = stepper['cast_step'] + 1 -- set the step back to 1 if we've overflown the total number if stepper['cast_step'] > table.getn( arg ) then stepper['cast_step'] = 1 end end end -- MultiShoutCast script (also similar to CastAway) function MultiShoutCast (cast_id, reset_timeout, ...) -- if we haven't seen the cast_id before, initialize the time and step if not BA_step_data[cast_id] then BA_step_data[cast_id] = {} BA_step_data[cast_id]['last_time'] = 0 BA_step_data[cast_id]['cast_step'] = 1 end local stepper = BA_step_data[cast_id] local now = GetTime() -- if the timeout has been reached, always revert to step 1 if reset_timeout and now - stepper['last_time'] >= reset_timeout then stepper['cast_step'] = 1 end -- local var to make code simpler iter=stepper['cast_step'] -- update the time at which the this id was invoked stepper['last_time'] = now -- cast the appropriate spell if HasAction(arg[iter]) then successful=ShoutCast(arg[iter],arg[iter+1]) -- advance the step by two if successful==true then stepper['cast_step'] = stepper['cast_step'] + 2 end elseif (not HasAction(arg[iter])) then -- advance the step by two if successful==true then stepper['cast_step'] = stepper['cast_step'] + 2 end end -- set the step back to 1 if we've overflown the total number if stepper['cast_step'] > table.getn( arg ) then stepper['cast_step'] = 1 end end --BandAid script function BandAid( spellname, bag, slot ) -- if we haven't seen the cast_id before, initialize the time and step if not BA_step_data[BandAid] then BA_step_data[BandAid] = {} BA_step_data[BandAid]['last_time'] = 0 BA_step_data[BandAid]['cast_step'] = 1 end local stepper = BA_step_data[BandAid] local now = GetTime() -- if the timeout has been reached, always revert to step 1 if now - stepper['last_time'] >= 5 then stepper['cast_step'] = 1 end -- local var to make code simpler iter=stepper['cast_step'] -- update the time at which the this id was invoked stepper['last_time'] = now if iter==1 then CastSpellByName(spellname) elseif iter==2 then UseContainerItem(bag,slot) SpellTargetUnit("player") DEFAULT_CHAT_FRAME:AddMessage("Bandaging"); end -- advance the step by one stepper['cast_step'] = stepper['cast_step'] + 1 -- set the step back to 1 if we've overflown the total number if stepper['cast_step'] > 2 then stepper['cast_step'] = 1 end end --##########BBoC Casting Functions#################### function ClassSpecificBuffs(class) if class==BUFFAHOY_PALADIN or class==BUFFAHOY_SHAMAN then spellid=RCPalSha; elseif class==BUFFAHOY_PRIEST then spellid=RCPriest; elseif class==BUFFAHOY_MAGE then spellid=RCMage; elseif class==BUFFAHOY_WARRIOR then spellid=RCWarrior; elseif class==BUFFAHOY_WARLOCK then spellid=RCWarlock; elseif class==BUFFAHOY_ROGUE then spellid=RCRogue; elseif class==BUFFAHOY_HUNTER then spellid=RCHunter; elseif class==BUFFAHOY_DRUID then spellid=RCDruid; elseif class==nil then spellid=-1; else DEFAULT_CHAT_FRAME:AddMessage("Error: Unknown Class") spellid=-1; end return spellid end function IsTargetLegal(tarvar, spellid, idno) -- find a legal target. Assume we have one, and run a series of checks on them. --If legaltarget is still true after all of the checks, then we have a target we can cast on. legaltarget=true -- Unit doesn't exist, or unit type isn't recognized if UnitName(tarvar)==nil or spellid==-1 then legaltarget=nil -- unit type isn't getting buffed elseif not HasAction(spellid) then legaltarget=nil -- Unit is in a group that's excluded elseif GetGroupBuffStatus(idno)==0 then legaltarget=nil -- Unit class already has a Greater Blessing elseif BA_GroupBuff[UnitClass(tarvar)]==2 and petFlag==false then legaltarget=nil BADebug("GROUP_BUFF_PREVENT",100) end return legaltarget end function BBoC(cast_id, reset_timeout, id) local rpvar local tarvar local maxno local itervar local legaltarget -- if we haven't seen the cast_id before, initialize the time and step if not BA_step_data[cast_id] then BA_step_data[cast_id] = {} BA_step_data[cast_id]['last_time'] = 0 BA_step_data[cast_id]['cast_step'] = 1 BA_step_data[cast_id]['currnum']=0; end --local variables to make the coding easier local now = GetTime() -- if the timeout has been reached, always revert to step 1 if reset_timeout and now - BA_step_data[cast_id].last_time >= reset_timeout then BA_step_data[cast_id].cast_step = 1 BA_step_data[cast_id].currnum = 0 petFlag = false -- reset group buff variables -- for i=1,GetNumRaidMembers(),1 do -- BA_GroupBuff[UnitClass("raid"..i)]=0 --end BA_GroupBuff[BUFFAHOY_PRIEST]=0 BA_GroupBuff[BUFFAHOY_MAGE]=0 BA_GroupBuff[BUFFAHOY_DRUID]= 0 BA_GroupBuff[BUFFAHOY_WARRIOR]=0 BA_GroupBuff[BUFFAHOY_HUNTER]=0 BA_GroupBuff[BUFFAHOY_WARLOCK]=0 BA_GroupBuff[BUFFAHOY_ROGUE]=0 BA_GroupBuff[BUFFAHOY_PALADIN]=0 BA_GroupBuff[BUFFAHOY_SHAMAN]=0 -- BADebug("ann",BA[plyr].buffbeginannounce) if BA[plyr].buffbeginannounce==1 then SendChatMessage(BUFFAHOY_GATHER_START..UnitName("player")..BUFFAHOY_GATHER_END); end end -- update the time at which the this id was invoked BA_step_data[cast_id].last_time = now -- Check for target's existence, should stop if there is an online party member in the appropriate slot if GetNumRaidMembers()>0 and BA[plyr].forceparty==0 then itervar=41-BA_step_data[cast_id].cast_step tarvar="raid"..itervar tarpetvar="raidpet"..itervar rpvar="raid" maxno=40 else tarvar=playa[BA_step_data[cast_id].cast_step] tarpetvar=peta[BA_step_data[cast_id].cast_step] rpvar="party" maxno=5 end -- BADebug("tarvar",tarvar) if id==nil then spellid=ClassSpecificBuffs(UnitClass(tarvar)) else spellid=id end -- BADebug("UnitClass",UnitClass(tarvar)) -- BADebug("spellid",spellid) -- BADebug("tarvar0",tarvar) -- BADebug("UnitName0",UnitName(tarvar)) -- BADebug("maxno",maxno) -- find a legal target. Assume we have one, and run a series of checks on them. --If legaltarget is still true after all of the checks, then we have a target we can cast on. -- legaltarget=IsTargetLegal(tarvar, spellid, GetNumRaidMembers()+1-BA_step_data[cast_id].cast_step) --GetNumRaidMembers()+ while (IsTargetLegal(tarvar, spellid, 41-BA_step_data[cast_id].cast_step)==nil and BA_step_data[cast_id].cast_step0 and BA[plyr].forceparty==0 then itervar=41-BA_step_data[cast_id].cast_step tarvar="raid"..itervar else tarvar=playa[BA_step_data[cast_id].cast_step] end if id==nil then spellid=ClassSpecificBuffs(UnitClass(tarvar)) else spellid=id; end -- find a legal target. Assume we have one, and run a series of checks on them. --If legaltarget is still true after all of the checks, then we have a target we can cast on. -- legaltarget=IsTargetLegal(tarvar, spellid, GetNumRaidMembers()+1-BA_step_data[cast_id].cast_step) -- BADebug("stepper",BA_step_data[cast_id].cast_step) -- BADebug("itervar1", spellid) -- BADebug("tarvar1",tarvar) -- BADebug("UnitName1",UnitName(tarvar)) end -- Now we should have a legal target, or else we're at the end of the buff sequence --more local variables to make the coding easier local iter = BA_step_data[cast_id].cast_step -- local var for passing to UsableCheck, to determine verbosity local talky; if (BA[plyr].BuffCast_Verbose==1 or BA[plyr].BuffCast_Quiet==1) then talky=1 else talky=0 end -- DEFAULT_CHAT_FRAME:AddMessage("Starting Cast Sequence", 0.8, 0.8, 0.2) -- BADebug("spellid3",spellid) -- if target is friendly, clear target if UnitName("target")~= nil and UnitIsFriend("player","target") then ClearTarget() end -- if we have the "Wait for mana/range" option checked, and we're not in combat, target the person being buffed if BA[plyr].manabuff == 1 and UnitAffectingCombat("player")==nil then TargetUnit(tarvar) end --check for mana, cooldown, range, etc --BADebug("usable",UsableCheck(spellid,talky)) if (UsableCheck(spellid,talky)) then --Name Grab, for verbosity BuffAhoyNameGrab(spellid); --BADebug("stepbefore",BA_step_data[cast_id].cast_step) -- cast the appropriate spell if HasAction(spellid) then if UnitName(tarvar) ~= nil then if petFlag==true and UnitName(tarpetvar)~=nil then castFlag=true; BA_step_data[cast_id].currnum = BA_step_data[cast_id].currnum + 1; if BA[plyr].PPTenabled==0 or (BA[plyr].manabuff == 1 and UnitAffectingCombat("player")==nil) then TargetUnit(tarpetvar) end if id==nil then spellid=RCPet1 end BAUseAction(spellid,1,0) SpellTargetUnit(tarpetvar) petFlag=false if BA[plyr].BuffCast_Verbose==1 then SendChatMessage(BUFFAHOY_BUFFING_ONE .. UnitName(tarpetvar) .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[spellid].." (".. BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")", whovar) elseif BA[plyr].BuffCast_Quiet==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_BUFFING_ONE .. UnitName(tarpetvar) .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[RCPet1].." (".. BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")") end else castFlag=true; failFlag=false; -- so that we can check for failure later --BADebug("s.find GB",string.find(BuffAhoyNameArray[spellid],BA_GREATER_BLESSING_TEXT,1,true)) --BADebug("s.find B",string.find(BuffAhoyNameArray[spellid],"Blessing",1,true)) if string.find(BuffAhoyNameArray[spellid],BA_GREATER_BLESSING_TEXT,1,true) then BA_GroupBuff[UnitClass(tarvar)]=1; BADebug("BA_GB",BA_GroupBuff[UnitClass(tarvar)]) BA_step_data[cast_id].currnum=BA_step_data[cast_id].currnum + GetClassCounts(UnitClass(tarvar)) else BA_step_data[cast_id].currnum=BA_step_data[cast_id].currnum + 1 end tempverb=BA[plyr].BuffCast_Verbose; if BA[plyr].PPTenabled==0 then TargetUnit(tarvar) end BAUseAction(spellid,1,0) SpellTargetUnit(tarvar) if BA[plyr].BuffCast_Verbose==1 then if BA_GroupBuff[UnitClass(tarvar)]==1 then SendChatMessage(BUFFAHOY_BUFFING_ONE .. UnitClass(tarvar).."s" .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[spellid] .." ("..BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")", whovar) else SendChatMessage(BUFFAHOY_BUFFING_ONE .. UnitName(tarvar) .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[spellid] .." ("..BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")", whovar) end elseif BA[plyr].BuffCast_Quiet==1 then if BA_GroupBuff[UnitClass(tarvar)]==1 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_BUFFING_ONE .. UnitClass(tarvar).."s" .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[spellid] .." (".. BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")") else DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_BUFFING_ONE .. UnitName(tarvar) .. BUFFAHOY_BUFFING_TWO .. BuffAhoyNameArray[spellid] .." (".. BA_step_data[cast_id].currnum .."/"..GetMaxNum(id)..")") end end if UnitExists(tarpetvar) and (HasAction(RCPet1) or id~=nil) and GetPetPhaseInfo(tarpetvar) then petFlag=true BA_step_data[cast_id].cast_step = BA_step_data[cast_id].cast_step-1 --BADebug("step",BA_step_data[cast_id].cast_step) end end elseif BA[plyr].statustext==1 then if GetNumRaidMembers()>0 then DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NORAIDMBR.. (iter) ); else DEFAULT_CHAT_FRAME:AddMessage(BUFFAHOY_ERR_NOPARTYMBR.." "..(iter) ); end end --closes UnitName end --closes HasAction -- advance the step by one BA_step_data[cast_id].cast_step=BA_step_data[cast_id].cast_step+1 -- clear target if spell failed, handle Greater Blessing exceptions if SpellIsTargeting() then --spell has failed SpellStopTargeting() end --if spell was a greater blessing attempt and has failed if BA_GroupBuff[UnitClass(tarvar)]==1 and failFlag==true then --reset the GB variable, so that it will attempt on the next member of that class BA_GroupBuff[UnitClass(tarvar)]=0; BADebug("GROUP_BUFF_RESET",BA_GroupBuff[UnitClass(tarvar)]) -- subtract off of the current number if there's another member of that class later if GetClassCounts(UnitClass(tarvar))>1 then BA_step_data[cast_id].currnum=BA_step_data[cast_id].currnum - GetClassCounts(UnitClass(tarvar)) end -- spell has succeeded, and it was a Greater Blessing attempt elseif BA_GroupBuff[UnitClass(tarvar)]==1 then --mark that class as successful, so that future members of that class aren't buffed BA_GroupBuff[UnitClass(tarvar)]=2 BADebug("GROUP_BUFF_SUCCESS",BA_GroupBuff[UnitClass(tarvar)]) end --BADebug("step",BA_step_data[cast_id].cast_step) -- Check for next target's existence, should stop if there is an online party member in the appropriate slot if BA_step_data[cast_id].cast_step<=maxno then if GetNumRaidMembers()>0 and BA[plyr].forceparty==0 then itervar=41-BA_step_data[cast_id].cast_step tarvar="raid"..itervar tarpetvar="raidpet"..itervar rpvar="raid" maxno=40 else tarvar=playa[BA_step_data[cast_id].cast_step] tarpetvar=peta[BA_step_data[cast_id].cast_step] rpvar="party" maxno=5 end --BADebug("stepafter",BA_step_data[cast_id].cast_step) --BADebug("tarvar",tarvar) if id==nil then spellid=ClassSpecificBuffs(UnitClass(tarvar)) else spellid=id; end --BADebug("UnitClass",UnitClass(tarvar)) --BADebug("spellid-pw",spellid) --BADebug("UnitName-pw",UnitName(tarvar)) --BADebug("maxno",maxno) --BADebug("tarvar-pw",tarvar) while (IsTargetLegal(tarvar, spellid, 41-BA_step_data[cast_id].cast_step)==nil and BA_step_data[cast_id].cast_step<=maxno) do -- while (UnitName(tarvar)==nil or spellid==-1 or not HasAction(spellid) or GetGroupBuffStatus(GetNumRaidMembers()+1-BA_step_data[cast_id].cast_step)==0) and BA_step_data[cast_id].cast_step<=maxno do BA_step_data[cast_id].cast_step = BA_step_data[cast_id].cast_step + 1 if BA_step_data[cast_id].cast_step<=maxno then if GetNumRaidMembers()>0 and BA[plyr].forceparty==0 then itervar=41-BA_step_data[cast_id].cast_step tarvar="raid"..itervar tarpetvar="raidpet"..itervar else tarvar=playa[BA_step_data[cast_id].cast_step] tarpetvar=peta[BA_step_data[cast_id].cast_step] end if id==nil then spellid=ClassSpecificBuffs(UnitClass(tarvar)) else spellid=id end end --BADebug("stepper-w",BA_step_data[cast_id].cast_step) --BADebug("itervar-w",itervar) --BADebug("UnitName-w",UnitName(tarvar)) --BADebug("spellid-w", spellid) --BADebug("tarvar-w",tarvar) end --closes while loop end --closes bug fix section -- set the step back to 1 if we've overflown the total number if (BA_step_data[cast_id].cast_step>maxno) then BA_step_data[cast_id].cast_step = 1 BA_step_data[cast_id].currnum=0 UIErrorsFrame:AddMessage("Buff Sequence Finished", 0.8, 0.8, 0.2, 1.0, UIERRORS_HOLD_TIME); DEFAULT_CHAT_FRAME:AddMessage("Buff Sequence Finished", 0.8, 0.8, 0.2); BA_GroupBuff[BUFFAHOY_PRIEST]=0 BA_GroupBuff[BUFFAHOY_MAGE]=0 BA_GroupBuff[BUFFAHOY_DRUID]= 0 BA_GroupBuff[BUFFAHOY_WARRIOR]=0 BA_GroupBuff[BUFFAHOY_HUNTER]=0 BA_GroupBuff[BUFFAHOY_WARLOCK]=0 BA_GroupBuff[BUFFAHOY_ROGUE]=0 BA_GroupBuff[BUFFAHOY_PALADIN]=0 BA_GroupBuff[BUFFAHOY_SHAMAN]=0 end end --to close UsableCheck() end --closes function function GetMaxNum(id) local temp1=0 -- set all counts to zero BA_NumWarriors=0; BA_NumMages=0; BA_NumPriests=0; BA_NumDruids=0; BA_NumHunters=0; BA_NumWarlocks=0; BA_NumRogues=0; BA_NumPalSha=0; BA_NumPets=0; -- classify each raid member and add a count if GetNumRaidMembers()>0 and BA[plyr].forceparty==0 then --BADebug("raid members",GetNumRaidMembers()) for i=1,GetNumRaidMembers(),1 do -- check for group buffing if GetGroupBuffStatus(i)~=0 then -- add to class subtotals if UnitClass("raid"..i)==BUFFAHOY_WARRIOR then BA_NumWarriors=BA_NumWarriors+1 elseif UnitClass("raid"..i)==BUFFAHOY_PRIEST then BA_NumPriests=BA_NumPriests+1 elseif UnitClass("raid"..i)==BUFFAHOY_DRUID then BA_NumDruids=BA_NumDruids+1 elseif UnitClass("raid"..i)==BUFFAHOY_MAGE then BA_NumMages=BA_NumMages+1 elseif UnitClass("raid"..i)==BUFFAHOY_HUNTER then BA_NumHunters=BA_NumHunters+1 elseif UnitClass("raid"..i)==BUFFAHOY_WARLOCK then BA_NumWarlocks=BA_NumWarlocks+1 elseif UnitClass("raid"..i)==BUFFAHOY_ROGUE then BA_NumRogues=BA_NumRogues+1 elseif UnitClass("raid"..i)==BUFFAHOY_PALADIN or UnitClass("raid"..i)==BUFFAHOY_SHAMAN then BA_NumPalSha=BA_NumPalSha+1 end end --BADebug("Paladins",BA_NumPalSha) -- check for pets if UnitExists("raidpet"..i) and GetPetPhaseInfo("raidpet"..i) and GetGroupBuffStatus(i)~=0 then BA_NumPets=BA_NumPets+1 end end --add up number of people being buffed if id~=nil then temp1 = BA_NumWarriors + BA_NumMages + BA_NumPriests + BA_NumDruids + BA_NumHunters + BA_NumWarlocks + BA_NumRogues + BA_NumPalSha + BA_NumPets else if HasAction(RCWarrior) then temp1=temp1+BA_NumWarriors end if HasAction(RCMage) then temp1=temp1+BA_NumMages end if HasAction(RCPriest) then temp1=temp1+BA_NumPriests end if HasAction(RCDruid) then temp1=temp1+BA_NumDruids end if HasAction(RCHunter) then temp1=temp1+BA_NumHunters end if HasAction(RCWarlock) then temp1=temp1+BA_NumWarlocks end if HasAction(RCRogue) then temp1=temp1+BA_NumRogues end if HasAction(RCPalSha) then temp1=temp1+BA_NumPalSha end if HasAction(RCPet1) then temp1=temp1+BA_NumPets end end -- old code -- temp1=GetNumRaidMembers() -- for i=1,GetNumRaidMembers(),1 do -- if (not HasAction(RCWarrior) and UnitClass("raid"..i)=="Warrior") or (not HasAction(RCMage) and UnitClass("raid"..i)=="Mage") or (not HasAction(RCPriest) and UnitClass("raid"..i)=="Priest") or (not HasAction(RCDruid) and UnitClass("raid"..i)=="Druid") or (not HasAction(RCHunter) and UnitClass("raid"..i)=="Hunter") or (not HasAction(RCWarlock) and UnitClass("raid"..i)=="Warlock")or (not HasAction(RCRogue) and UnitClass("raid"..i)=="Rogue") or (not HasAction(RCPalSha) and (UnitClass("raid"..i)=="Paladin" or UnitClass("raid"..i)=="Shaman")) then -- temp1=temp1-1; -- elseif GetGroupBuffStatus(i)==0 then -- temp1=temp1-1; -- end -- if ((HasAction(RCPet1) or id~=nil) and UnitExists("raidpet"..i) and GetPetPhaseInfo("raidpet"..i)) then -- temp1=temp1+1 -- end -- end return temp1 elseif GetNumPartyMembers()>0 then BADebug("party members",GetNumPartyMembers()) for i=1,GetNumPartyMembers()+1,1 do -- add to class subtotals if UnitClass(playa[i])==BUFFAHOY_WARRIOR then BA_NumWarriors=BA_NumWarriors+1 BADebug("Warriors",BA_NumWarriors) elseif UnitClass(playa[i])==BUFFAHOY_PRIEST then BA_NumPriests=BA_NumPriests+1 elseif UnitClass(playa[i])==BUFFAHOY_MAGE then BA_NumMages=BA_NumMages+1 elseif UnitClass(playa[i])==BUFFAHOY_DRUID then BA_NumDruids=BA_NumDruids+1 elseif UnitClass(playa[i])==BUFFAHOY_HUNTER then BA_NumHunters=BA_NumHunters+1 elseif UnitClass(playa[i])==BUFFAHOY_WARLOCK then BA_NumWarlocks=BA_NumWarlocks+1 BADebug("Warlocks",BA_NumWarlocks) elseif UnitClass(playa[i])==BUFFAHOY_ROGUE then BA_NumRogues=BA_NumRogues+1 elseif UnitClass(playa[i])==BUFFAHOY_PALADIN or UnitClass(playa[i])==BUFFAHOY_SHAMAN then BA_NumPalSha=BA_NumPalSha+1 BADebug("Pal or Sha",BA_NumPalSha) end -- check for pets if UnitExists(peta[i]) and GetPetPhaseInfo(peta[i]) then BA_NumPets=BA_NumPets+1 end end --add up number of people being buffed if id~=nil then temp1 = BA_NumWarriors + BA_NumMages + BA_NumPriests + BA_NumDruids + BA_NumHunters + BA_NumWarlocks + BA_NumRogues + BA_NumPalSha + BA_NumPets else if HasAction(RCWarrior) then temp1=temp1+BA_NumWarriors end if HasAction(RCMage) then temp1=temp1+BA_NumMages end if HasAction(RCPriest) then temp1=temp1+BA_NumPriests end if HasAction(RCDruid) then temp1=temp1+BA_NumDruids end if HasAction(RCHunter) then temp1=temp1+BA_NumHunters end if HasAction(RCWarlock) then temp1=temp1+BA_NumWarlocks end if HasAction(RCRogue) then temp1=temp1+BA_NumRogues end if HasAction(RCPalSha) then temp1=temp1+BA_NumPalSha end if HasAction(RCPet1) then temp1=temp1+BA_NumPets end end -- temp1=GetNumPartyMembers()+1 -- for i=1,GetNumPartyMembers()+1,1 do -- if (not HasAction(RCWarrior) and UnitClass(playa[i])=="Warrior") or (not HasAction(RCMage) and UnitClass(playa[i])=="Mage") or (not HasAction(RCPriest) and UnitClass(playa[i])=="Priest") or (not HasAction(RCDruid) and UnitClass(playa[i])=="Druid") or (not HasAction(RCHunter) and UnitClass(playa[i])=="Hunter") or (not HasAction(RCWarlock) and UnitClass(playa[i])=="Warlock")or (not HasAction(RCRogue) and UnitClass(playa[i])=="Rogue") or (not HasAction(RCPalSha) and (UnitClass(playa[i])=="Paladin" or UnitClass(playa[i])=="Shaman")) then -- temp1=temp1-1; -- end -- if (((HasAction(BCS1[6]) and BA[plyr].RCFrameVar==3) or (HasAction(RCPet1) and (BA[plyr].RCFrameVar==2 or BA[plyr].RCFrameVar==1)) or id~=nil) and UnitExists(peta[i]) and GetPetPhaseInfo(peta[i]) ) then -- temp1=temp1+1 -- end -- end return temp1 else BADebug("Alone",1) return 1 end end function GetClassCounts(class) local tempx GetMaxNum() if class==BUFFAHOY_WARRIOR then tempx= BA_NumWarriors elseif class==BUFFAHOY_MAGE then tempx= BA_NumMages elseif class==BUFFAHOY_PRIEST then tempx= BA_NumPriests elseif class==BUFFAHOY_DRUID then tempx= BA_NumDruids elseif class==BUFFAHOY_HUNTER then tempx= BA_NumHunters elseif class==BUFFAHOY_WARLOCK then tempx= BA_NumWarlocks elseif class==BUFFAHOY_ROGUE then tempx= BA_NumRogues elseif class==BUFFAHOY_PALADIN or class==BUFFAHOY_SHAMAN then tempx= BA_NumPalSha end return tempx end function GetGroupBuffStatus(raidid) local trash1, trash2, groupno = GetRaidRosterInfo(raidid); return BA[plyr]["group"][groupno] end function GetPetPhaseInfo(unit) local shifted=1; --BADebug("shifted before",shifted) for jj=1,16 do local ba_buff_text=UnitBuff(unit,jj) --BADebug("ba_buff_text",ba_buff_text) if ba_buff_text then if string.find(ba_buff_text,"PhaseShift") then shifted=nil; --BADebug("shifted during",shifted) end end end return shifted; end function Panic() if UnitClass("player")=="Paladin" then -- check target first if UnitClass("target")~="Paladin" and UnitClass("target")~="Priest" then -- if the target is not in the party or raid if not UnitInParty("target") and not UnitInRaid("target") then if UnitIsDead("target") then ClearTarget() -- target yourself, just to make absolutely sure our target has been cleared TargetUnit("player") end end end --Cast DI, we should have the spellcasting hand now CastSpellByName("Divine Intervention") -- loop through the raid members if we're in a raid if GetNumRaidMembers()>0 then for kk=1,40 do if UnitClass("raid"..kk) == "Paladin" or UnitClass("raid"..kk) == "Priest" and not UnitIsDead("raid"..kk) then if UnitName("raid"..kk)~=UnitName("player") then TargetUnit("raid"..kk) SpellTargetUnit("raid"..kk) if not SpellIsTargeting() then SendChatMessage(BUFFAHOY_PANIC_TEXT ..UnitName("raid"..kk),whovar) break end end end end if SpellIsTargeting() then for kk=1,40 do if UnitClass("raid"..kk)=="Druid" and not UnitIsDead("raid"..kk) then if UnitName("raid"..kk)~=UnitName("player") then TargetUnit("raid"..kk) SpellTargetUnit("raid"..kk) if not SpellIsTargeting() then SendChatMessage(BUFFAHOY_PANIC_TEXT ..UnitName("raid"..kk),whovar) break end end end end end elseif GetNumPartyMembers()>0 then for kk=1,4 do if UnitClass("party"..kk) == "Paladin" or UnitClass("party"..kk) == "Priest" and not UnitIsDead("party"..kk) then TargetUnit("party"..kk) SpellTargetUnit("party"..kk) if not SpellIsTargeting() then SendChatMessage(BUFFAHOY_PANIC_TEXT ..UnitName("party"..kk),whovar) --BADebugVar=true BADebug("party","party"..kk) BADebug("name", UnitName("party"..kk) ) BADebug("class",UnitClass("party"..kk)) break end end end if SpellIsTargeting() then for kk=1,4 do if UnitClass("party"..kk)=="Druid" and not UnitIsDead("party"..kk) then TargetUnit("party"..kk) SpellTargetUnit("party"..kk) if not SpellIsTargeting() then SendChatMessage(BUFFAHOY_PANIC_TEXT ..UnitName("party"..kk),whovar) break end end end end end if SpellIsTargeting() then SpellStopTargeting() SendChatMessage(BUFFAHOY_PANIC_FAILED,whovar) end end end function BATEST(id) BAUseAction(id,1,0) end function BAWRITE(str) DEFAULT_CHAT_FRAME:AddMessage(str) end