--[[ Last Modified 12/26/2004 Initial version 08/12/2005 FB_DebugFlag, FBGroupMoveOffset, FBButtonTextSave - Sherkhan --]] local value -------------------------------------------------------------------------------------------------- local util = Utility_Class:New() -- Config variables - Saved FBSavedProfile = {} FBToggles = {} FBScripts = {}; FBTextChunks = {}; FBFirstUse = 0; FBBuffs = {} FBBuffs["buffs"] = {} FBBuffs["debuffs"] = {} FBBuffs["itembuffs"] = {} FBBuffs["auras"] = {} FBBuffs["debufftypes"] = {} FBCombatTypes = {} FBPetTypes = {} ------------------------------------------------------------------------------------------------- -- Local variables FB_DebugFlag = 0; -- Added to support being able to turn on/off some debugging messages -- This is the last known cursor location (so we can see if it entered/left a group bounding box FBCursorLoc = {}; FBCursorLoc.x=0; FBCursorLoc.y=0; -- id - Button map - must be global to be accessed in XML file -- FBIDToButton = {} -- Group data - global. Used to speed up bounds checking FBGroupData = {} -- Constant for number of buttons - must be global FBNumButtons = 120; -- Current button state, move storage, and text field save FBState = {} FBGroupMoveOffset = {} FBButtonTextSave = {} local tempindex for tempindex = 1,FBNumButtons do FBState[tempindex] = {} FBGroupMoveOffset[tempindex] = {} FBButtonTextSave[tempindex] = {} end -- Command object and /command setup - must be global FBcmd = Command_Class:New("FlexBar", "/flexbar") FBCastcmd = Command_Class:New("FBCast", "/fbcast") FBDoIncmd = Command_Class:New("FBDoIn", "/fbdoin") FBUsecmd = Command_Class:New("FBUse", "/fbuse") FBEchocmd = Command_Class:New("FBEcho", "/echo") FBPrintcmd = Command_Class:New("FBPrint", "/print") -- Timers FBTimers = {} -- Getting the mouse button pressed in OnClick is flaky - store the last mousebutton down here FBLastButtonDown = ""; -- Last hp percents for various units FBLastHealth = {} FBLastMana = {} FBLastRage = {} FBLastEnergy = {} FBLastBuffs = {} FBLastBuffs["buffs"] = {} FBLastBuffs["debuffs"] = {} FBLastBuffs["itembuffs"] = {} FBLastBuffs["debufftypes"] = {} -- Current events list copied from FBSavedProfile FBEvents = {} FBEvents.n = 0 -- Current Profile Name and character name FBProfileName = "" FBCharName = "" -- State for conditionals FBConditionalState = {} -- Saved Profile for restore FBProfileBackup = nil -- Temporary Config file for scripts editor FBTestConfig = nil -------------------------------------------------------------------------------------------------- -- Var to hold last targettarget and last target target name FBLastTargetTarget = nil FBLastTargetTargetName = nil -- var to hold last form for shape/stance/aura/stealth etc changes FBLastform = "none" -- var to hold last pet name for pet existence check. FBPetname = nil -- var to hold group member existence info for existence check FBGroupmates = {} -- var to hold last key state FBKeyStates = {} -- Hold unit status (dead/alive) FBUnitStatus = {} -- Unit combat status using UnitAffectingCombat() FBUnitCombat = {} -- Var to hold last combo points value FBLastComboPts = 0 -- Table for quick event dispatch FBEventQuickDispatch = {} -- Table to hold args for quick event dispatch FBEventArgs = nil -- Current top of scripts in menu FBScriptCount = 1 -- Table to hold custom conditions from scripts FBCustom = {} -- Callbacks for Events FBEventHandlers = {} -- Callbacks for extended events FBExtHandlers = {} -- Global conditional functions -- made global so that users can extend it by runscript on='ProfileLoaded' FBConditions = {} -- Table to hold delayed macro FBMacroWait = {} -- Macro variables callbacks FBMacroVariables = {} -- Last event and source FBLastEvent = "" FBLastSource = "" -- Spell Info for FBCastByName FBPlayerSpells = {} FBPetSPells = {} FBPlayerMaxRank = {} FBPetMaxRank = {} -- Slot for picked up texture FBPickUpTexture = nil -- ID to ButtonNum map FBIDtoButtonNum = {} -- Tables to store ready list of inventory FBBagContents = {} FBInvContents = {} -- Table of buttons with pet actions on them FBPetActions = {} -- Toggles for event groups FBCompleteButtonList = {} FBCompleteBindingList = {} FBCompleteScaleList = {} FBCompleteAlphaList = {} FBCompleteIDList = {} local index for index = 1,FBNumButtons do FBCompleteButtonList[index] = index if index <= 30 then FBCompleteBindingList[index] = index end if index >4 and index<51 then table.insert(FBCompleteScaleList, index) end if index < 11 then table.insert(FBCompleteAlphaList, index) end end for index = 1,120 do FBCompleteIDList[index] = index end FBCompleteTextureList = {"'%backpack'","'%macro##'","'%button##'"} FBCompleteTextVarList = {"'%d'","'%b'","'%c'"} FBNoTargetsList = {"No Target Needed"} FBNoValuesList = {"No Values Available"} FBCompleteReactionList = {"'hostile'","'neutral'","'friendly'"} FBCompletePageList = {1,2,3,4,5,6} FBComboPointsList = {0,1,2,3,4,5} FBCompleteMissList = {"'dodge'","'miss'","'parry'"} FBIfOpsList = {"and","or","not","(",")"} FBTrueList = {"'true'"} FBColorList = { "[10 10 10] - Clear", "[5 5 5] - Dim", "[10 1 1] - Dark Red", "[1 10 1] - Dark Green", "[1 1 10] - Dark Blue", "[10 10 1] - Dark Yellow", "[10 1 10] - Dark Magenta", "[1 10 10] - Dark Cyan", "[10 5 5] - Light Red", "[5 10 5] - Light Green", "[5 5 10] - Light Blue", "[10 10 5] - Light Yellow", "[10 5 10] - Light Magenta", "[5 10 10] - Light Cyan" } -- List of units to check events for FBGUIUnitList = { "'player'","'pet'","'target'" } for index = 1,4 do table.insert(FBGUIUnitList,"'party"..index .. "'") table.insert(FBGUIUnitList,"'partypet"..index .. "'") end FBGUIUnitBuffList = { "'pet'","'target'" } for index = 1,4 do table.insert(FBGUIUnitBuffList,"'party"..index .. "'") table.insert(FBGUIUnitBuffList,"'partypet"..index .. "'") end FBGUIUnitCombatList = { "'playercombat'","'targetcombat'" } FBUnitList = { "player","party1","party2","party3","party4","pet","target", "partypet1","partypet2","partypet3","partypet4"} FBUnitCombatList = { "playercombat","targetcombat" } FBCompletePartyList = { "'party1'", "'party2'", "'party3'", "'party4'", "'partypet1'", "'partypet2'", "'partypet3'", "'partypet4'"} FBCompleteTargetTargetList = {"'player'","'pet'" } FBCompletePetList = { "'pet'" } FBCompletePCList = {"'player'"} for index = 1,4 do table.insert(FBCompleteTargetTargetList,"'party"..index .. "'") table.insert(FBCompleteTargetTargetList,"'partypet"..index .. "'") table.insert(FBCompletePCList,"'party"..index.."'") table.insert(FBCompletePetList,"'partypet"..index.."'") end for index, value in ipairs(FBCompleteReactionList) do table.insert(FBCompleteTargetTargetList,string.sub(value,1,-2) .. "pc'") table.insert(FBCompleteTargetTargetList,string.sub(value,1,-2) .. "npc'") end for index = 1,40 do table.insert(FBCompleteTargetTargetList,"'raid"..index .. "'") table.insert(FBCompleteTargetTargetList,"'raidpet"..index .. "'") table.insert(FBCompletePCList,"'raid"..index.."'") table.insert(FBCompletePetList,"'raidpet"..index.."'") end -- list of all GUI Panels FBGUIPanelsList= {"Script Editor","Event Editor","Global Options","Auto Items","Performance Options"} -- Item enchantments FBItemEnchants = {} -- Anchor positions FBAnchors = { ["TOPLEFT"] = true,["TOPRIGHT"] = true, ["TOP"] = true, ["BOTTOMLEFT"] = true, ["BOTTOMRIGHT"] = true, ["BOTTOM"] = true, ["CENTER"] = true, ["LEFT"] = true, ["RIGHT"] = true } -- List of event toggles in a more accessible form FBEventToggles = {} -- table of functions for text sub FBTextSubstitutions = {} -- Shirtan doing tracking events. FBLastTracking = "none" FBTrackingList = { ["herbs"] = "Interface\\Icons\\INV_Misc_Flower_02", ["minerals"] = "Interface\\Icons\\Spell_Nature_Earthquake", ["treasure"] = "Interface\\Icons\\Racial_Dwarf_FindTreasure", ["beasts"] = "Interface\\Icons\\Ability_Tracking", ["humanoids"] = "Interface\\Icons\\Spell_Holy_PrayerOfHealing", ["hidden"] = "Interface\\Icons\\Ability_Stealth", ["elementals"] = "Interface\\Icons\\Spell_Frost_SummonWaterElemental", ["undead"] = "Interface\\Icons\\Spell_Shadow_DarkSummoning", ["demons"] = "Interface\\Icons\\Spell_Shadow_SummonFelHunter", ["giants"] = "Interface\\Icons\\Ability_Racial_Avatar", ["dragonkin"] = "Interface\\Icons\\INV_Misc_Head_Dragon_01", ["senseundead"] = "Interface\\Icons\\Spell_Holy_SenseUndead", ["sensedemons"] = "Interface\\Icons\\Spell_Shadow_Metamorphosis" } FBCompleteTrackingList = {"'herbs'", "'minerals'", "'treasure'", "'beasts'", "'humanoids'", "'hidden'", "'elementals'", "'undead'", "'demons'", "'giants'", "'dragonkin'", "'senseundead'", "'sensedemons'", "'none'"} -- /Tracking events. FBButtonInfoShown = false FBButtonInfoTooltipShown = false