Tercio@11: Tercio@11: local DF = _G ["DetailsFramework"] Tercio@20: if (not DF or not DetailsFrameworkCanLoad) then Tercio@20: return Tercio@20: end Tercio@20: Tercio@11: local _ Tercio@11: local _rawset = rawset --> lua local Tercio@11: local _rawget = rawget --> lua local Tercio@11: local _setmetatable = setmetatable --> lua local Tercio@11: local _unpack = unpack --> lua local Tercio@11: local _type = type --> lua local Tercio@11: local _math_floor = math.floor --> lua local Tercio@11: local loadstring = loadstring --> lua local Tercio@11: local _string_len = string.len --> lua local Tercio@11: Tercio@58: Tercio@11: local cleanfunction = function() end Tercio@11: local APITextEntryFunctions = false Tercio@11: Tercio@39: do Tercio@39: local metaPrototype = { Tercio@39: WidgetType = "textentry", Tercio@39: SetHook = DF.SetHook, Tercio@39: RunHooksForWidget = DF.RunHooksForWidget, Tercio@39: } Tercio@39: Tercio@39: _G [DF.GlobalWidgetControlNames ["textentry"]] = _G [DF.GlobalWidgetControlNames ["textentry"]] or metaPrototype Tercio@39: end Tercio@39: Tercio@39: local TextEntryMetaFunctions = _G [DF.GlobalWidgetControlNames ["textentry"]] Tercio@39: DF.TextEntryCounter = DF.TextEntryCounter or 1 Tercio@11: Tercio@11: ------------------------------------------------------------------------------------------------------------ Tercio@11: --> metatables Tercio@11: Tercio@11: TextEntryMetaFunctions.__call = function (_table, value) Tercio@11: --> unknow Tercio@11: end Tercio@11: Tercio@11: ------------------------------------------------------------------------------------------------------------ Tercio@11: --> members Tercio@11: Tercio@11: --> tooltip Tercio@11: local gmember_tooltip = function (_object) Tercio@11: return _object:GetTooltip() Tercio@11: end Tercio@11: --> shown Tercio@11: local gmember_shown = function (_object) Tercio@11: return _object:IsShown() Tercio@11: end Tercio@11: --> frame width Tercio@11: local gmember_width = function (_object) Tercio@11: return _object.editbox:GetWidth() Tercio@11: end Tercio@11: --> frame height Tercio@11: local gmember_height = function (_object) Tercio@11: return _object.editbox:GetHeight() Tercio@11: end Tercio@11: --> get text Tercio@11: local gmember_text = function (_object) Tercio@11: return _object.editbox:GetText() Tercio@11: end Tercio@11: Tercio@39: TextEntryMetaFunctions.GetMembers = TextEntryMetaFunctions.GetMembers or {} Tercio@39: TextEntryMetaFunctions.GetMembers ["tooltip"] = gmember_tooltip Tercio@39: TextEntryMetaFunctions.GetMembers ["shown"] = gmember_shown Tercio@39: TextEntryMetaFunctions.GetMembers ["width"] = gmember_width Tercio@39: TextEntryMetaFunctions.GetMembers ["height"] = gmember_height Tercio@39: TextEntryMetaFunctions.GetMembers ["text"] = gmember_text Tercio@11: Tercio@11: TextEntryMetaFunctions.__index = function (_table, _member_requested) Tercio@39: local func = TextEntryMetaFunctions.GetMembers [_member_requested] Tercio@11: if (func) then Tercio@11: return func (_table, _member_requested) Tercio@11: end Tercio@11: Tercio@11: local fromMe = _rawget (_table, _member_requested) Tercio@11: if (fromMe) then Tercio@11: return fromMe Tercio@11: end Tercio@11: Tercio@11: return TextEntryMetaFunctions [_member_requested] Tercio@11: end Tercio@11: Tercio@11: ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Tercio@11: Tercio@11: --> tooltip Tercio@11: local smember_tooltip = function (_object, _value) Tercio@11: return _object:SetTooltip (_value) Tercio@11: end Tercio@11: --> show Tercio@11: local smember_show = function (_object, _value) Tercio@11: if (_value) then Tercio@11: return _object:Show() Tercio@11: else Tercio@11: return _object:Hide() Tercio@11: end Tercio@11: end Tercio@11: --> hide Tercio@11: local smember_hide = function (_object, _value) Tercio@11: if (not _value) then Tercio@11: return _object:Show() Tercio@11: else Tercio@11: return _object:Hide() Tercio@11: end Tercio@11: end Tercio@11: --> frame width Tercio@11: local smember_width = function (_object, _value) Tercio@11: return _object.editbox:SetWidth (_value) Tercio@11: end Tercio@11: --> frame height Tercio@11: local smember_height = function (_object, _value) Tercio@11: return _object.editbox:SetHeight (_value) Tercio@11: end Tercio@11: --> set text Tercio@11: local smember_text = function (_object, _value) Tercio@11: return _object.editbox:SetText (_value) Tercio@11: end Tercio@11: --> set multiline Tercio@11: local smember_multiline = function (_object, _value) Tercio@11: if (_value) then Tercio@11: return _object.editbox:SetMultiLine (true) Tercio@11: else Tercio@11: return _object.editbox:SetMultiLine (false) Tercio@11: end Tercio@11: end Tercio@11: --> text horizontal pos Tercio@11: local smember_horizontalpos = function (_object, _value) Tercio@11: return _object.editbox:SetJustifyH (string.lower (_value)) Tercio@11: end Tercio@11: Tercio@39: TextEntryMetaFunctions.SetMembers = TextEntryMetaFunctions.SetMembers or {} Tercio@39: TextEntryMetaFunctions.SetMembers ["tooltip"] = smember_tooltip Tercio@39: TextEntryMetaFunctions.SetMembers ["show"] = smember_show Tercio@39: TextEntryMetaFunctions.SetMembers ["hide"] = smember_hide Tercio@39: TextEntryMetaFunctions.SetMembers ["width"] = smember_width Tercio@39: TextEntryMetaFunctions.SetMembers ["height"] = smember_height Tercio@39: TextEntryMetaFunctions.SetMembers ["text"] = smember_text Tercio@39: TextEntryMetaFunctions.SetMembers ["multiline"] = smember_multiline Tercio@39: TextEntryMetaFunctions.SetMembers ["align"] = smember_horizontalpos Tercio@11: Tercio@11: TextEntryMetaFunctions.__newindex = function (_table, _key, _value) Tercio@39: local func = TextEntryMetaFunctions.SetMembers [_key] Tercio@11: if (func) then Tercio@11: return func (_table, _value) Tercio@11: else Tercio@11: return _rawset (_table, _key, _value) Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: ------------------------------------------------------------------------------------------------------------ Tercio@11: --> methods Tercio@39: local cleanfunction = function()end Tercio@39: function TextEntryMetaFunctions:SetEnterFunction (func, param1, param2) Tercio@39: if (func) then Tercio@39: _rawset (self, "func", func) Tercio@39: else Tercio@39: _rawset (self, "func", cleanfunction) Tercio@39: end Tercio@39: Tercio@39: if (param1 ~= nil) then Tercio@39: _rawset (self, "param1", param1) Tercio@39: end Tercio@39: if (param2 ~= nil) then Tercio@39: _rawset (self, "param2", param2) Tercio@39: end Tercio@39: end Tercio@11: Tercio@11: --> set point Tercio@11: function TextEntryMetaFunctions:SetPoint (MyAnchor, SnapTo, HisAnchor, x, y, Width) Tercio@11: Tercio@11: if (type (MyAnchor) == "boolean" and MyAnchor and self.space) then Tercio@11: local textWidth = self.label:GetStringWidth()+2 Tercio@11: self.editbox:SetWidth (self.space - textWidth - 15) Tercio@11: return Tercio@11: Tercio@11: elseif (type (MyAnchor) == "boolean" and MyAnchor and not self.space) then Tercio@11: self.space = self.label:GetStringWidth()+2 + self.editbox:GetWidth() Tercio@11: end Tercio@11: Tercio@11: if (Width) then Tercio@11: self.space = Width Tercio@11: end Tercio@11: Tercio@11: MyAnchor, SnapTo, HisAnchor, x, y = DF:CheckPoints (MyAnchor, SnapTo, HisAnchor, x, y, self) Tercio@11: if (not MyAnchor) then Tercio@11: print ("Invalid parameter for SetPoint") Tercio@11: return Tercio@11: end Tercio@11: Tercio@11: if (self.space) then Tercio@11: self.label:ClearAllPoints() Tercio@11: self.editbox:ClearAllPoints() Tercio@11: Tercio@11: self.label:SetPoint (MyAnchor, SnapTo, HisAnchor, x, y) Tercio@11: self.editbox:SetPoint ("left", self.label, "right", 2, 0) Tercio@11: Tercio@11: local textWidth = self.label:GetStringWidth()+2 Tercio@11: self.editbox:SetWidth (self.space - textWidth - 15) Tercio@11: else Tercio@11: self.label:ClearAllPoints() Tercio@11: self.editbox:ClearAllPoints() Tercio@11: self.editbox:SetPoint (MyAnchor, SnapTo, HisAnchor, x, y) Tercio@11: end Tercio@11: Tercio@11: end Tercio@11: Tercioo@29: function TextEntryMetaFunctions:SetText (text) Tercioo@29: self.editbox:SetText (text) Tercioo@29: end Tercioo@29: function TextEntryMetaFunctions:GetText() Tercioo@29: return self.editbox:GetText() Tercioo@29: end Tercioo@29: Tercio@11: --> frame levels Tercio@11: function TextEntryMetaFunctions:GetFrameLevel() Tercio@11: return self.editbox:GetFrameLevel() Tercio@11: end Tercio@11: function TextEntryMetaFunctions:SetFrameLevel (level, frame) Tercio@11: if (not frame) then Tercio@11: return self.editbox:SetFrameLevel (level) Tercio@11: else Tercio@11: local framelevel = frame:GetFrameLevel (frame) + level Tercio@11: return self.editbox:SetFrameLevel (framelevel) Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: --> select all text Tercio@11: function TextEntryMetaFunctions:SelectAll() Tercio@11: self.editbox:HighlightText() Tercio@11: end Tercio@11: Tercio@11: --> set labal description Tercio@11: function TextEntryMetaFunctions:SetLabelText (text) Tercio@11: if (text) then Tercio@11: self.label:SetText (text) Tercio@11: else Tercio@11: self.label:SetText ("") Tercio@11: end Tercio@11: self:SetPoint (true) --> refresh Tercio@11: end Tercio@11: Tercio@11: --> set tab order Tercio@11: function TextEntryMetaFunctions:SetNext (nextbox) Tercio@11: self.next = nextbox Tercio@11: end Tercio@11: Tercio@11: --> blink Tercio@11: function TextEntryMetaFunctions:Blink() Tercio@11: self.label:SetTextColor (1, .2, .2, 1) Tercio@11: end Tercio@11: Tercio@11: --> show & hide Tercio@11: function TextEntryMetaFunctions:IsShown() Tercio@11: return self.editbox:IsShown() Tercio@11: end Tercio@11: function TextEntryMetaFunctions:Show() Tercio@11: return self.editbox:Show() Tercio@11: end Tercio@11: function TextEntryMetaFunctions:Hide() Tercio@11: return self.editbox:Hide() Tercio@11: end Tercio@11: Tercio@11: -- tooltip Tercio@11: function TextEntryMetaFunctions:SetTooltip (tooltip) Tercio@11: if (tooltip) then Tercio@11: return _rawset (self, "have_tooltip", tooltip) Tercio@11: else Tercio@11: return _rawset (self, "have_tooltip", nil) Tercio@11: end Tercio@11: end Tercio@11: function TextEntryMetaFunctions:GetTooltip() Tercio@11: return _rawget (self, "have_tooltip") Tercio@11: end Tercio@11: Tercio@11: --> hooks Tercio@11: function TextEntryMetaFunctions:Enable() Tercio@11: if (not self.editbox:IsEnabled()) then Tercio@11: self.editbox:Enable() Tercio@11: self.editbox:SetBackdropBorderColor (unpack (self.enabled_border_color)) Tercio@11: self.editbox:SetBackdropColor (unpack (self.enabled_backdrop_color)) Tercio@11: self.editbox:SetTextColor (unpack (self.enabled_text_color)) Tercio@22: if (self.editbox.borderframe) then Tercio@22: self.editbox.borderframe:SetBackdropColor (unpack (self.editbox.borderframe.onleave_backdrop)) Tercio@22: end Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: function TextEntryMetaFunctions:Disable() Tercio@11: if (self.editbox:IsEnabled()) then Tercio@11: self.enabled_border_color = {self.editbox:GetBackdropBorderColor()} Tercio@11: self.enabled_backdrop_color = {self.editbox:GetBackdropColor()} Tercio@11: self.enabled_text_color = {self.editbox:GetTextColor()} Tercio@11: Tercio@11: self.editbox:Disable() Tercio@11: Tercio@11: self.editbox:SetBackdropBorderColor (.5, .5, .5, .5) Tercio@11: self.editbox:SetBackdropColor (.5, .5, .5, .5) Tercio@11: self.editbox:SetTextColor (.5, .5, .5, .5) Tercio@22: Tercio@22: if (self.editbox.borderframe) then Tercio@22: self.editbox.borderframe:SetBackdropColor (.5, .5, .5, .5) Tercio@22: end Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: ------------------------------------------------------------------------------------------------------------ Tercio@39: --> scripts and hooks Tercio@39: Tercio@11: local OnEnter = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnEnter", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@39: end Tercio@11: Tercio@39: if (capsule.have_tooltip) then Tercio@11: GameCooltip2:Preset (2) Tercio@39: GameCooltip2:AddLine (capsule.have_tooltip) Tercio@11: GameCooltip2:ShowCooltip (textentry, "tooltip") Tercio@11: end Tercio@11: Tercio@11: textentry.mouse_over = true Tercio@11: Tercio@11: if (textentry:IsEnabled()) then Tercio@11: textentry.current_bordercolor = textentry.current_bordercolor or {textentry:GetBackdropBorderColor()} Tercio@11: textentry:SetBackdropBorderColor (1, 1, 1, 1) Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnLeave = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnLeave", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@39: Tercio@11: if (textentry.MyObject.have_tooltip) then Tercio@11: GameCooltip2:ShowMe (false) Tercio@11: end Tercio@11: Tercio@11: textentry.mouse_over = false Tercio@11: Tercio@11: if (textentry:IsEnabled()) then Tercio@11: textentry:SetBackdropBorderColor (unpack (textentry.current_bordercolor)) Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnHide = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnHide", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnShow = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnShow", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: end Tercio@11: Tercio@39: local OnEnterPressed = function (textentry, byScript) Tercio@39: local capsule = textentry.MyObject Tercio@11: Tercio@49: local kill = capsule:RunHooksForWidget ("OnEnterPressed", textentry, capsule, capsule.text) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: Tercio@11: local texto = DF:trim (textentry:GetText()) Tercio@11: if (_string_len (texto) > 0) then Tercio@11: textentry.text = texto Tercio@11: if (textentry.MyObject.func) then Tercio@11: textentry.MyObject.func (textentry.MyObject.param1, textentry.MyObject.param2, texto, textentry, byScript or textentry) Tercio@11: end Tercio@11: else Tercio@11: textentry:SetText ("") Tercio@11: textentry.MyObject.currenttext = "" Tercio@11: end Tercio@11: Tercio@39: if (not capsule.NoClearFocusOnEnterPressed) then Tercio@39: textentry.focuslost = true --> quando estiver editando e clicar em outra caixa Tercio@39: textentry:ClearFocus() Tercio@39: Tercio@39: if (textentry.MyObject.tab_on_enter and textentry.MyObject.next) then Tercio@39: textentry.MyObject.next:SetFocus() Tercio@39: end Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnEscapePressed = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@11: Tercio@49: local kill = capsule:RunHooksForWidget ("OnEscapePressed", textentry, capsule, capsule.text) Tercio@39: if (kill) then Tercio@39: return Tercio@39: end Tercio@39: Tercio@11: textentry.focuslost = true Tercio@11: textentry:ClearFocus() Tercio@11: end Tercio@11: Tercio@39: local OnSpacePressed = function (textentry) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnSpacePressed", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@39: end Tercio@39: end Tercio@39: Tercio@11: local OnEditFocusLost = function (textentry) Tercio@11: Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@11: if (textentry:IsShown()) then Tercio@11: Tercio@49: local kill = capsule:RunHooksForWidget ("OnEditFocusLost", textentry, capsule, capsule.text) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: Tercio@11: if (not textentry.focuslost) then Tercio@11: local texto = DF:trim (textentry:GetText()) Tercio@11: if (_string_len (texto) > 0) then Tercio@11: textentry.MyObject.currenttext = texto Tercio@11: if (textentry.MyObject.func) then Tercio@11: textentry.MyObject.func (textentry.MyObject.param1, textentry.MyObject.param2, texto, textentry, nil) Tercio@11: end Tercio@11: else Tercio@11: textentry:SetText ("") Tercio@11: textentry.MyObject.currenttext = "" Tercio@11: end Tercio@11: else Tercio@11: textentry.focuslost = false Tercio@11: end Tercio@11: Tercio@11: textentry.MyObject.label:SetTextColor (.8, .8, .8, 1) Tercio@11: Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnEditFocusGained = function (textentry) Tercio@39: Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnEditFocusGained", textentry, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@39: Tercio@11: textentry.MyObject.label:SetTextColor (1, 1, 1, 1) Tercio@11: end Tercio@11: Tercio@39: local OnChar = function (textentry, char) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnChar", textentry, char, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnTextChanged = function (textentry, byUser) Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnTextChanged", textentry, byUser, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: local OnTabPressed = function (textentry) Tercio@39: Tercio@39: local capsule = textentry.MyObject Tercio@39: Tercio@39: local kill = capsule:RunHooksForWidget ("OnTabPressed", textentry, byUser, capsule) Tercio@39: if (kill) then Tercio@39: return Tercio@11: end Tercio@11: Tercio@11: if (textentry.MyObject.next) then Tercio@11: OnEnterPressed (textentry, false) Tercio@11: textentry.MyObject.next:SetFocus() Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: function TextEntryMetaFunctions:PressEnter (byScript) Tercio@11: OnEnterPressed (self.editbox, byScript) Tercio@11: end Tercio@11: Tercio@11: ------------------------------------------------------------------------------------------------------------ Tercio@22: Tercio@22: function TextEntryMetaFunctions:SetTemplate (template) Tercio@22: if (template.width) then Tercioo@29: self.editbox:SetWidth (template.width) Tercio@22: end Tercio@22: if (template.height) then Tercioo@29: self.editbox:SetHeight (template.height) Tercio@22: end Tercio@22: Tercio@22: if (template.backdrop) then Tercioo@29: self.editbox:SetBackdrop (template.backdrop) Tercio@22: end Tercio@22: if (template.backdropcolor) then Tercio@22: local r, g, b, a = DF:ParseColors (template.backdropcolor) Tercioo@29: self.editbox:SetBackdropColor (r, g, b, a) Tercio@22: self.onleave_backdrop = {r, g, b, a} Tercio@22: end Tercio@22: if (template.backdropbordercolor) then Tercio@22: local r, g, b, a = DF:ParseColors (template.backdropbordercolor) Tercioo@29: self.editbox:SetBackdropBorderColor (r, g, b, a) Tercio@22: self.editbox.current_bordercolor[1] = r Tercio@22: self.editbox.current_bordercolor[2] = g Tercio@22: self.editbox.current_bordercolor[3] = b Tercio@22: self.editbox.current_bordercolor[4] = a Tercio@22: self.onleave_backdrop_border_color = {r, g, b, a} Tercio@22: end Tercio@22: end Tercio@22: Tercio@22: ------------------------------------------------------------------------------------------------------------ Tercio@11: --> object constructor Tercio@11: Tercio@22: function DF:CreateTextEntry (parent, func, w, h, member, name, with_label, entry_template, label_template) Tercio@22: return DF:NewTextEntry (parent, parent, name, member, w, h, func, nil, nil, nil, with_label, entry_template, label_template) Tercio@11: end Tercio@11: Tercio@22: function DF:NewTextEntry (parent, container, name, member, w, h, func, param1, param2, space, with_label, entry_template, label_template) Tercio@11: Tercio@11: if (not name) then Tercio@11: name = "DetailsFrameworkTextEntryNumber" .. DF.TextEntryCounter Tercio@11: DF.TextEntryCounter = DF.TextEntryCounter + 1 Tercio@11: Tercio@11: elseif (not parent) then Tercioo@29: return error ("Details! FrameWork: parent not found.", 2) Tercio@11: end Tercio@11: Tercio@11: if (not container) then Tercio@11: container = parent Tercio@11: end Tercio@11: Tercio@11: if (name:find ("$parent")) then Tercioo@29: local parentName = DF.GetParentName (parent) Tercioo@29: name = name:gsub ("$parent", parentName) Tercio@11: end Tercio@11: Tercio@11: local TextEntryObject = {type = "textentry", dframework = true} Tercio@11: Tercio@11: if (member) then Tercio@11: parent [member] = TextEntryObject Tercio@11: end Tercio@11: Tercio@11: if (parent.dframework) then Tercio@11: parent = parent.widget Tercio@11: end Tercio@11: if (container.dframework) then Tercio@11: container = container.widget Tercio@11: end Tercio@11: Tercio@11: --> default members: Tercio@11: --> hooks Tercio@11: TextEntryObject.OnEnterHook = nil Tercio@11: TextEntryObject.OnLeaveHook = nil Tercio@11: TextEntryObject.OnHideHook = nil Tercio@11: TextEntryObject.OnShowHook = nil Tercio@11: TextEntryObject.OnEnterPressedHook = nil Tercio@11: TextEntryObject.OnEscapePressedHook = nil Tercio@11: TextEntryObject.OnEditFocusGainedHook = nil Tercio@11: TextEntryObject.OnEditFocusLostHook = nil Tercio@11: TextEntryObject.OnCharHook = nil Tercio@11: TextEntryObject.OnTextChangedHook = nil Tercio@11: TextEntryObject.OnTabPressedHook = nil Tercio@11: Tercio@11: --> misc Tercio@11: TextEntryObject.container = container Tercio@11: TextEntryObject.have_tooltip = nil Tercio@11: Tercio@11: TextEntryObject.editbox = CreateFrame ("EditBox", name, parent, "DetailsFrameworkEditBoxTemplate2") Tercio@11: TextEntryObject.widget = TextEntryObject.editbox Tercio@11: Tercio@11: TextEntryObject.editbox:SetTextInsets (3, 0, 0, -3) Tercio@11: Tercio@11: if (not APITextEntryFunctions) then Tercio@11: APITextEntryFunctions = true Tercio@11: local idx = getmetatable (TextEntryObject.editbox).__index Tercio@11: for funcName, funcAddress in pairs (idx) do Tercio@11: if (not TextEntryMetaFunctions [funcName]) then Tercio@11: TextEntryMetaFunctions [funcName] = function (object, ...) Tercio@20: local x = loadstring ( "return _G['"..object.editbox:GetName().."']:"..funcName.."(...)") Tercio@11: return x (...) Tercio@11: end Tercio@11: end Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: TextEntryObject.editbox.MyObject = TextEntryObject Tercio@11: Tercio@11: if (not w and space) then Tercio@11: w = space Tercio@11: elseif (w and space) then Tercio@11: if (DF.debug) then Tercio@39: --print ("warning: you are using width and space, try use only space for better results.") Tercio@11: end Tercio@11: end Tercio@11: Tercio@11: TextEntryObject.editbox:SetWidth (w) Tercio@11: TextEntryObject.editbox:SetHeight (h) Tercio@11: Tercio@11: TextEntryObject.editbox:SetJustifyH ("center") Tercio@11: TextEntryObject.editbox:EnableMouse (true) Tercio@11: TextEntryObject.editbox:SetText ("") Tercio@11: Tercio@11: TextEntryObject.editbox:SetAutoFocus (false) Tercio@11: TextEntryObject.editbox:SetFontObject ("GameFontHighlightSmall") Tercio@11: Tercio@11: TextEntryObject.editbox.current_bordercolor = {1, 1, 1, 0.7} Tercio@11: TextEntryObject.editbox:SetBackdropBorderColor (1, 1, 1, 0.7) Tercio@11: TextEntryObject.enabled_border_color = {TextEntryObject.editbox:GetBackdropBorderColor()} Tercio@11: TextEntryObject.enabled_backdrop_color = {TextEntryObject.editbox:GetBackdropColor()} Tercio@11: TextEntryObject.enabled_text_color = {TextEntryObject.editbox:GetTextColor()} Tercio@22: TextEntryObject.onleave_backdrop = {TextEntryObject.editbox:GetBackdropColor()} Tercio@22: TextEntryObject.onleave_backdrop_border_color = {TextEntryObject.editbox:GetBackdropBorderColor()} Tercio@11: Tercio@11: TextEntryObject.func = func Tercio@11: TextEntryObject.param1 = param1 Tercio@11: TextEntryObject.param2 = param2 Tercio@11: TextEntryObject.next = nil Tercio@11: TextEntryObject.space = space Tercio@11: TextEntryObject.tab_on_enter = false Tercio@11: Tercio@11: TextEntryObject.label = _G [name .. "_Desc"] Tercio@11: Tercio@11: TextEntryObject.editbox:SetBackdrop ({bgFile = DF.folder .. "background", tileSize = 64, edgeFile = DF.folder .. "border_2", edgeSize = 10, insets = {left = 1, right = 1, top = 1, bottom = 1}}) Tercio@11: Tercio@11: --> hooks Tercio@39: Tercio@39: TextEntryObject.HookList = { Tercio@39: OnEnter = {}, Tercio@39: OnLeave = {}, Tercio@39: OnHide = {}, Tercio@39: OnShow = {}, Tercio@39: OnEnterPressed = {}, Tercio@39: OnEscapePressed = {}, Tercio@39: OnSpacePressed = {}, Tercio@39: OnEditFocusLost = {}, Tercio@39: OnEditFocusGained = {}, Tercio@39: OnChar = {}, Tercio@39: OnTextChanged = {}, Tercio@39: OnTabPressed = {}, Tercio@39: } Tercio@40: Tercio@11: TextEntryObject.editbox:SetScript ("OnEnter", OnEnter) Tercio@11: TextEntryObject.editbox:SetScript ("OnLeave", OnLeave) Tercio@11: TextEntryObject.editbox:SetScript ("OnHide", OnHide) Tercio@11: TextEntryObject.editbox:SetScript ("OnShow", OnShow) Tercio@11: Tercio@11: TextEntryObject.editbox:SetScript ("OnEnterPressed", OnEnterPressed) Tercio@11: TextEntryObject.editbox:SetScript ("OnEscapePressed", OnEscapePressed) Tercio@39: TextEntryObject.editbox:SetScript ("OnSpacePressed", OnSpacePressed) Tercio@11: TextEntryObject.editbox:SetScript ("OnEditFocusLost", OnEditFocusLost) Tercio@11: TextEntryObject.editbox:SetScript ("OnEditFocusGained", OnEditFocusGained) Tercio@11: TextEntryObject.editbox:SetScript ("OnChar", OnChar) Tercio@11: TextEntryObject.editbox:SetScript ("OnTextChanged", OnTextChanged) Tercio@11: TextEntryObject.editbox:SetScript ("OnTabPressed", OnTabPressed) Tercio@11: Tercio@11: _setmetatable (TextEntryObject, TextEntryMetaFunctions) Tercio@11: Tercio@22: if (with_label) then Tercio@22: local label = DF:CreateLabel (TextEntryObject.editbox, with_label, nil, nil, nil, "label", nil, "overlay") Tercio@22: label.text = with_label Tercio@22: TextEntryObject.editbox:SetPoint ("left", label.widget, "right", 2, 0) Tercio@22: if (label_template) then Tercio@22: label:SetTemplate (label_template) Tercio@22: end Tercio@22: with_label = label Tercio@22: end Tercio@11: Tercio@22: if (entry_template) then Tercio@22: TextEntryObject:SetTemplate (entry_template) Tercio@22: end Tercio@22: Tercio@22: return TextEntryObject, with_label Tercio@22: Tercio@22: end Tercio@22: Tercio@22: function DF:NewSpellEntry (parent, func, w, h, param1, param2, member, name) Tercio@22: local editbox = DF:NewTextEntry (parent, parent, name, member, w, h, func, param1, param2) Tercio@22: Tercio@39: -- editbox:SetHook ("OnEditFocusGained", SpellEntryOnEditFocusGained) Tercio@39: -- editbox:SetHook ("OnTextChanged", SpellEntryOnTextChanged) Tercio@22: Tercio@22: return editbox Tercio@11: end Tercio@11: Tercio@11: local function_gettext = function (self) Tercio@11: return self.editbox:GetText() Tercio@11: end Tercio@11: local function_settext = function (self, text) Tercio@11: return self.editbox:SetText (text) Tercio@11: end Tercio@11: local function_clearfocus = function (self) Tercio@11: return self.editbox:ClearFocus() Tercio@11: end Tercio@11: local function_setfocus = function (self) Tercio@11: return self.editbox:SetFocus (true) Tercio@11: end Tercio@11: Tercio@22: Tercio@39: Tercio@39: Tercio@39: ------------------------------------------------------------------------------------ Tercio@39: --auto complete Tercio@39: Tercio@39: -- block ------------------- Tercio@39: --code author Saiket from http://www.wowinterface.com/forums/showpost.php?p=245759&postcount=6 Tercio@39: --- @return StartPos, EndPos of highlight in this editbox. Tercio@39: local function GetTextHighlight ( self ) Tercio@39: local Text, Cursor = self:GetText(), self:GetCursorPosition(); Tercio@39: self:Insert( "" ); -- Delete selected text Tercio@39: local TextNew, CursorNew = self:GetText(), self:GetCursorPosition(); Tercio@39: -- Restore previous text Tercio@39: self:SetText( Text ); Tercio@39: self:SetCursorPosition( Cursor ); Tercio@39: local Start, End = CursorNew, #Text - ( #TextNew - CursorNew ); Tercio@39: self:HighlightText( Start, End ); Tercio@39: return Start, End; Tercio@39: end Tercio@39: local StripColors; Tercio@39: do Tercio@39: local CursorPosition, CursorDelta; Tercio@39: --- Callback for gsub to remove unescaped codes. Tercio@39: local function StripCodeGsub ( Escapes, Code, End ) Tercio@39: if ( #Escapes % 2 == 0 ) then -- Doesn't escape Code Tercio@39: if ( CursorPosition and CursorPosition >= End - 1 ) then Tercio@39: CursorDelta = CursorDelta - #Code; Tercio@39: end Tercio@39: return Escapes; Tercio@39: end Tercio@39: end Tercio@39: --- Removes a single escape sequence. Tercio@39: local function StripCode ( Pattern, Text, OldCursor ) Tercio@39: CursorPosition, CursorDelta = OldCursor, 0; Tercio@39: return Text:gsub( Pattern, StripCodeGsub ), OldCursor and CursorPosition + CursorDelta; Tercio@39: end Tercio@39: --- Strips Text of all color escape sequences. Tercio@39: -- @param Cursor Optional cursor position to keep track of. Tercio@39: -- @return Stripped text, and the updated cursor position if Cursor was given. Tercio@39: function StripColors ( Text, Cursor ) Tercio@39: Text, Cursor = StripCode( "(|*)(|c%x%x%x%x%x%x%x%x)()", Text, Cursor ); Tercio@39: return StripCode( "(|*)(|r)()", Text, Cursor ); Tercio@39: end Tercio@39: end Tercio@39: Tercio@39: local COLOR_END = "|r"; Tercio@39: --- Wraps this editbox's selected text with the given color. Tercio@39: local function ColorSelection ( self, ColorCode ) Tercio@39: local Start, End = GetTextHighlight( self ); Tercio@39: local Text, Cursor = self:GetText(), self:GetCursorPosition(); Tercio@39: if ( Start == End ) then -- Nothing selected Tercio@39: --Start, End = Cursor, Cursor; -- Wrap around cursor Tercio@39: return; -- Wrapping the cursor in a color code and hitting backspace crashes the client! Tercio@39: end Tercio@39: -- Find active color code at the end of the selection Tercio@39: local ActiveColor; Tercio@39: if ( End < #Text ) then -- There is text to color after the selection Tercio@39: local ActiveEnd; Tercio@39: local CodeEnd, _, Escapes, Color = 0; Tercio@39: while ( true ) do Tercio@39: _, CodeEnd, Escapes, Color = Text:find( "(|*)(|c%x%x%x%x%x%x%x%x)", CodeEnd + 1 ); Tercio@39: if ( not CodeEnd or CodeEnd > End ) then Tercio@39: break; Tercio@39: end Tercio@39: if ( #Escapes % 2 == 0 ) then -- Doesn't escape Code Tercio@39: ActiveColor, ActiveEnd = Color, CodeEnd; Tercio@39: end Tercio@39: end Tercio@39: Tercio@39: if ( ActiveColor ) then Tercio@39: -- Check if color gets terminated before selection ends Tercio@39: CodeEnd = 0; Tercio@39: while ( true ) do Tercio@39: _, CodeEnd, Escapes = Text:find( "(|*)|r", CodeEnd + 1 ); Tercio@39: if ( not CodeEnd or CodeEnd > End ) then Tercio@39: break; Tercio@39: end Tercio@39: if ( CodeEnd > ActiveEnd and #Escapes % 2 == 0 ) then -- Terminates ActiveColor Tercio@39: ActiveColor = nil; Tercio@39: break; Tercio@39: end Tercio@39: end Tercio@39: end Tercio@39: end Tercio@39: Tercio@39: local Selection = Text:sub( Start + 1, End ); Tercio@39: -- Remove color codes from the selection Tercio@39: local Replacement, CursorReplacement = StripColors( Selection, Cursor - Start ); Tercio@39: Tercio@39: self:SetText( ( "" ):join( Tercio@39: Text:sub( 1, Start ), Tercio@39: ColorCode, Replacement, COLOR_END, Tercio@39: ActiveColor or "", Text:sub( End + 1 ) Tercio@39: ) ); Tercio@39: Tercio@39: -- Restore cursor and highlight, adjusting for wrapper text Tercio@39: Cursor = Start + CursorReplacement; Tercio@39: if ( CursorReplacement > 0 ) then -- Cursor beyond start of color code Tercio@39: Cursor = Cursor + #ColorCode; Tercio@39: end Tercio@39: if ( CursorReplacement >= #Replacement ) then -- Cursor beyond end of color Tercio@39: Cursor = Cursor + #COLOR_END; Tercio@39: end Tercio@39: Tercio@39: self:SetCursorPosition( Cursor ); Tercio@39: -- Highlight selection and wrapper Tercio@39: self:HighlightText( Start, #ColorCode + ( #Replacement - #Selection ) + #COLOR_END + End ); Tercio@39: end Tercio@39: -- end of the block --------------------- Tercio@39: Tercio@39: local get_last_word = function (self) Tercio@39: self.lastword = "" Tercio@39: local cursor_pos = self.editbox:GetCursorPosition() Tercio@39: local text = self.editbox:GetText() Tercio@39: for i = cursor_pos, 1, -1 do Tercio@39: local character = text:sub (i, i) Tercio@39: if (character:match ("%a")) then Tercio@39: self.lastword = character .. self.lastword Tercio@58: --print (self.lastword) Tercio@39: else Tercio@39: break Tercio@39: end Tercio@39: end Tercio@39: end Tercio@39: Tercio@39: --On Text Changed Tercio@39: local AutoComplete_OnTextChanged = function (editboxWidget, byUser, capsule) Tercio@58: capsule = capsule or editboxWidget.MyObject or editboxWidget Tercio@39: Tercio@39: local chars_now = editboxWidget:GetText():len() Tercio@39: if (not editboxWidget.ignore_textchange) then Tercio@39: --> backspace Tercio@39: if (chars_now == capsule.characters_count -1) then Tercio@39: capsule.lastword = capsule.lastword:sub (1, capsule.lastword:len()-1) Tercio@39: --> delete lots of text Tercio@39: elseif (chars_now < capsule.characters_count) then Tercio@39: --o auto complete selecionou outra palavra bem menor e caiu nesse filtro Tercio@39: editboxWidget.end_selection = nil Tercio@39: capsule:GetLastWord() Tercio@39: end Tercio@39: else Tercio@39: editboxWidget.ignore_textchange = nil Tercio@39: end Tercio@39: capsule.characters_count = chars_now Tercio@39: end Tercio@39: Tercio@39: local AutoComplete_OnSpacePressed = function (editboxWidget, capsule) Tercio@58: capsule = capsule or editboxWidget.MyObject or editboxWidget Tercio@39: Tercio@39: -- if (not gotMatch) then Tercio@39: --editboxWidget.end_selection = nil Tercio@39: -- end Tercio@39: end Tercio@39: Tercio@39: local AutoComplete_OnEscapePressed = function (editboxWidget) Tercio@39: editboxWidget.end_selection = nil Tercio@39: end Tercio@39: Tercio@39: local AutoComplete_OnEnterPressed = function (editboxWidget) Tercio@39: Tercio@58: local capsule = editboxWidget.MyObject or editboxWidget Tercio@39: if (editboxWidget.end_selection) then Tercio@39: editboxWidget:SetCursorPosition (editboxWidget.end_selection) Tercio@39: editboxWidget:HighlightText (0, 0) Tercio@39: editboxWidget.end_selection = nil Tercio@58: --editboxWidget:Insert (" ") --estava causando a adi��o de uma palavra a mais quando o pr�ximo catactere for um espa�o Tercio@39: else Tercio@39: if (editboxWidget:IsMultiLine()) then Tercio@39: editboxWidget:Insert ("\n") Tercio@39: --reseta a palavra se acabou de ganhar focus e apertou enter Tercio@39: if (editboxWidget.focusGained) then Tercio@39: capsule.lastword = "" Tercio@39: editboxWidget.focusGained = nil Tercio@39: end Tercio@39: else Tercio@39: editboxWidget:Insert ("") Tercio@39: editboxWidget.focuslost = true Tercio@39: editboxWidget:ClearFocus() Tercio@39: end Tercio@39: end Tercio@39: capsule.lastword = "" Tercio@39: Tercio@39: end Tercio@39: Tercio@39: local AutoComplete_OnEditFocusGained = function (editboxWidget) Tercio@58: local capsule = editboxWidget.MyObject or editboxWidget Tercio@39: capsule:GetLastWord() Tercio@58: --print ("last word:", editboxWidget.lastword) Tercio@39: editboxWidget.end_selection = nil Tercio@39: editboxWidget.focusGained = true Tercio@39: capsule.characters_count = editboxWidget:GetText():len() Tercio@39: end Tercio@39: Tercio@58: local OptimizeAutoCompleteTable = function (self, wordList) Tercio@58: local optimizedTable = {} Tercio@58: Tercio@58: local lower = string.lower Tercio@58: local sub = string.sub Tercio@58: local len = string.len Tercio@58: Tercio@58: local subTables = 0 Tercio@58: Tercio@58: for i = 1, #wordList do Tercio@58: local thisWord = wordList [i] Tercio@58: if (len (thisWord) > 0) then Tercio@58: thisWord = lower (thisWord) Tercio@58: Tercio@58: local firstCharacter = sub (thisWord, 1, 1) Tercio@58: Tercio@58: local charTable = optimizedTable [firstCharacter] Tercio@58: if (not charTable) then Tercio@58: charTable = {} Tercio@58: optimizedTable [firstCharacter] = charTable Tercio@58: Tercio@58: subTables = subTables + 1 Tercio@58: end Tercio@58: Tercio@58: charTable [#charTable+1] = thisWord Tercio@58: end Tercio@58: end Tercio@58: Tercio@58: wordList.Optimized = optimizedTable Tercio@58: end Tercio@58: Tercio@39: local AutoComplete_OnChar = function (editboxWidget, char, capsule) Tercio@39: if (char == "") then Tercio@39: return Tercio@39: end Tercio@39: Tercio@58: capsule = capsule or editboxWidget.MyObject or editboxWidget Tercio@39: editboxWidget.end_selection = nil Tercio@39: Tercio@39: if (editboxWidget.ignore_input) then Tercio@39: return Tercio@39: end Tercio@39: Tercio@58: --reseta a palavra se acabou de ganhar focus e apertou espa�o Tercio@39: if (editboxWidget.focusGained and char == " ") then Tercio@39: capsule.lastword = "" Tercio@39: editboxWidget.focusGained = nil Tercio@39: else Tercio@39: editboxWidget.focusGained = nil Tercio@39: end Tercio@39: Tercio@39: if (char:match ("%a") or (char == " " and capsule.lastword ~= "")) then Tercio@39: capsule.lastword = capsule.lastword .. char Tercio@39: else Tercio@39: capsule.lastword = "" Tercio@39: end Tercio@39: Tercio@39: editboxWidget.ignore_input = true Tercio@58: Tercio@39: if (capsule.lastword:len() >= 2) then Tercio@39: Tercio@39: local wordList = capsule [capsule.poolName] Tercio@39: if (not wordList) then Tercio@58: error ("Details! Framework: TextEntry has AutoComplete but no word list table.") Tercio@58: return Tercio@58: end Tercio@58: Tercio@58: if (capsule.ShouldOptimizeAutoComplete) then Tercio@58: if (not wordList.Optimized) then Tercio@58: OptimizeAutoCompleteTable (capsule, wordList) Tercio@39: end Tercio@58: Tercio@58: local firstCharacter = string.lower (string.sub (capsule.lastword, 1, 1)) Tercio@58: wordList = wordList.Optimized [firstCharacter] Tercio@58: Tercio@58: if (wordList) then Tercio@58: for i = 1, #wordList do Tercio@58: local thisWord = wordList [i] Tercio@58: if (thisWord and (thisWord:find ("^" .. capsule.lastword) or thisWord:lower():find ("^" .. capsule.lastword))) then Tercio@58: local rest = thisWord:gsub (capsule.lastword, "") Tercio@58: rest = rest:lower():gsub (capsule.lastword, "") Tercio@58: local cursor_pos = editboxWidget:GetCursorPosition() Tercio@58: editboxWidget:Insert (rest) Tercio@58: editboxWidget:HighlightText (cursor_pos, cursor_pos + rest:len()) Tercio@58: editboxWidget:SetCursorPosition (cursor_pos) Tercio@58: editboxWidget.end_selection = cursor_pos + rest:len() Tercio@58: editboxWidget.ignore_textchange = true Tercio@58: break Tercio@58: end Tercio@58: end Tercio@58: end Tercio@58: Tercio@58: editboxWidget.ignore_input = false Tercio@39: return Tercio@39: end Tercio@39: Tercio@39: for i = 1, #wordList do Tercio@39: local thisWord = wordList [i] Tercio@39: if (thisWord and (thisWord:find ("^" .. capsule.lastword) or thisWord:lower():find ("^" .. capsule.lastword))) then Tercio@39: local rest = thisWord:gsub (capsule.lastword, "") Tercio@39: rest = rest:lower():gsub (capsule.lastword, "") Tercio@39: local cursor_pos = editboxWidget:GetCursorPosition() Tercio@39: editboxWidget:Insert (rest) Tercio@39: editboxWidget:HighlightText (cursor_pos, cursor_pos + rest:len()) Tercio@39: editboxWidget:SetCursorPosition (cursor_pos) Tercio@39: editboxWidget.end_selection = cursor_pos + rest:len() Tercio@39: editboxWidget.ignore_textchange = true Tercio@39: break Tercio@39: end Tercio@39: end Tercio@58: end Tercio@39: Tercio@39: editboxWidget.ignore_input = false Tercio@39: end Tercio@39: Tercio@58: function TextEntryMetaFunctions:SetAsAutoComplete (poolName, poolTable, shouldOptimize) Tercio@39: Tercio@58: if (not self.SetHook) then Tercio@58: --self is borderframe Tercio@58: self = self.editbox Tercio@58: self.editbox = self --compatible with fw functions Tercio@58: Tercio@58: self.lastword = "" Tercio@58: self.characters_count = 0 Tercio@58: self.poolName = poolName Tercio@58: self.GetLastWord = get_last_word --editbox:GetLastWord() Tercio@58: self.NoClearFocusOnEnterPressed = true --avoid auto clear focus Tercio@58: self.ShouldOptimizeAutoComplete = shouldOptimize Tercio@58: Tercio@58: if (poolTable) then Tercio@58: self [poolName] = poolTable Tercio@58: end Tercio@58: Tercio@58: self:HookScript ("OnEditFocusGained", AutoComplete_OnEditFocusGained) Tercio@58: self:HookScript ("OnEnterPressed", AutoComplete_OnEnterPressed) Tercio@58: self:HookScript ("OnEscapePressed", AutoComplete_OnEscapePressed) Tercio@58: self:HookScript ("OnTextChanged", AutoComplete_OnTextChanged) Tercio@58: self:HookScript ("OnChar", AutoComplete_OnChar) Tercio@58: self:HookScript ("OnSpacePressed", AutoComplete_OnSpacePressed) Tercio@58: else Tercio@58: --fw textfield Tercio@58: self.lastword = "" Tercio@58: self.characters_count = 0 Tercio@58: self.poolName = poolName Tercio@58: self.GetLastWord = get_last_word --editbox:GetLastWord() Tercio@58: self.NoClearFocusOnEnterPressed = true --avoid auto clear focus Tercio@58: self.ShouldOptimizeAutoComplete = shouldOptimize Tercio@58: Tercio@58: self:SetHook ("OnEditFocusGained", AutoComplete_OnEditFocusGained) Tercio@58: self:SetHook ("OnEnterPressed", AutoComplete_OnEnterPressed) Tercio@58: self.editbox:HookScript ("OnEscapePressed", AutoComplete_OnEscapePressed) Tercio@58: self.editbox:SetScript ("OnTextChanged", AutoComplete_OnTextChanged) Tercio@58: self.editbox:SetScript ("OnChar", AutoComplete_OnChar) Tercio@58: self.editbox:SetScript ("OnSpacePressed", AutoComplete_OnSpacePressed) Tercio@58: end Tercio@39: Tercio@39: end Tercio@39: Tercio@58: function DF:NewSpecialLuaEditorEntry (parent, w, h, member, name, nointent) Tercio@58: Tercio@58: if (name:find ("$parent")) then Tercio@58: local parentName = DF.GetParentName (parent) Tercio@58: name = name:gsub ("$parent", parentName) Tercio@58: end Tercio@58: Tercio@58: local borderframe = CreateFrame ("Frame", name, parent) Tercio@58: borderframe:SetSize (w, h) Tercio@58: Tercio@58: if (member) then Tercio@58: parent [member] = borderframe Tercio@58: end Tercio@58: Tercio@58: local scrollframe = CreateFrame ("ScrollFrame", name, borderframe, "DetailsFrameworkEditBoxMultiLineTemplate") Tercio@58: Tercio@58: borderframe.SetAsAutoComplete = TextEntryMetaFunctions.SetAsAutoComplete Tercio@58: Tercio@58: scrollframe:SetScript ("OnSizeChanged", function (self) Tercio@58: scrollframe.editbox:SetSize (self:GetSize()) Tercio@58: end) Tercio@58: Tercio@58: scrollframe:SetPoint ("topleft", borderframe, "topleft", 10, -10) Tercio@58: scrollframe:SetPoint ("bottomright", borderframe, "bottomright", -30, 10) Tercio@58: Tercio@58: scrollframe.editbox:SetMultiLine (true) Tercio@58: scrollframe.editbox:SetJustifyH ("left") Tercio@58: scrollframe.editbox:SetJustifyV ("top") Tercio@58: scrollframe.editbox:SetMaxBytes (1024000) Tercio@58: scrollframe.editbox:SetMaxLetters (128000) Tercio@58: Tercio@58: borderframe.GetText = function_gettext Tercio@58: borderframe.SetText = function_settext Tercio@58: borderframe.ClearFocus = function_clearfocus Tercio@58: borderframe.SetFocus = function_setfocus Tercio@58: Tercio@58: borderframe.Enable = TextEntryMetaFunctions.Enable Tercio@58: borderframe.Disable = TextEntryMetaFunctions.Disable Tercio@58: Tercio@58: borderframe.SetTemplate = TextEntryMetaFunctions.SetTemplate Tercio@58: Tercio@58: if (not nointent) then Tercio@58: IndentationLib.enable (scrollframe.editbox, nil, 4) Tercio@58: end Tercio@58: Tercio@58: borderframe:SetBackdrop ({bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], Tercio@58: tile = 1, tileSize = 16, edgeSize = 16, insets = {left = 5, right = 5, top = 5, bottom = 5}}) Tercio@58: Tercio@58: scrollframe.editbox.current_bordercolor = {1, 1, 1, 0.7} Tercio@58: borderframe:SetBackdropBorderColor (1, 1, 1, 0.7) Tercio@58: borderframe:SetBackdropColor (0.090195, 0.090195, 0.188234, 1) Tercio@58: Tercio@58: borderframe.enabled_border_color = {borderframe:GetBackdropBorderColor()} Tercio@58: borderframe.enabled_backdrop_color = {borderframe:GetBackdropColor()} Tercio@58: borderframe.enabled_text_color = {scrollframe.editbox:GetTextColor()} Tercio@58: Tercio@58: borderframe.onleave_backdrop = {scrollframe.editbox:GetBackdropColor()} Tercio@58: borderframe.onleave_backdrop_border_color = {scrollframe.editbox:GetBackdropBorderColor()} Tercio@58: Tercio@58: borderframe.scroll = scrollframe Tercio@58: borderframe.editbox = scrollframe.editbox Tercio@58: borderframe.editbox.borderframe = borderframe Tercio@58: Tercio@58: return borderframe Tercio@58: end Tercio@58: Tercio@58: -- encryption table Tercio@58: local base64chars = {[0]='A',[1]='B',[2]='C',[3]='D',[4]='E',[5]='F',[6]='G',[7]='H',[8]='I',[9]='J',[10]='K',[11]='L',[12]='M',[13]='N',[14]='O',[15]='P',[16]='Q',[17]='R',[18]='S',[19]='T',[20]='U',[21]='V',[22]='W',[23]='X',[24]='Y',[25]='Z',[26]='a',[27]='b',[28]='c',[29]='d',[30]='e',[31]='f',[32]='g',[33]='h',[34]='i',[35]='j',[36]='k',[37]='l',[38]='m',[39]='n',[40]='o',[41]='p',[42]='q',[43]='r',[44]='s',[45]='t',[46]='u',[47]='v',[48]='w',[49]='x',[50]='y',[51]='z',[52]='0',[53]='1',[54]='2',[55]='3',[56]='4',[57]='5',[58]='6',[59]='7',[60]='8',[61]='9',[62]='-',[63]='_'} Tercio@58: Tercio@58: -- decryption table Tercio@58: local base64bytes = {['A']=0,['B']=1,['C']=2,['D']=3,['E']=4,['F']=5,['G']=6,['H']=7,['I']=8,['J']=9,['K']=10,['L']=11,['M']=12,['N']=13,['O']=14,['P']=15,['Q']=16,['R']=17,['S']=18,['T']=19,['U']=20,['V']=21,['W']=22,['X']=23,['Y']=24,['Z']=25,['a']=26,['b']=27,['c']=28,['d']=29,['e']=30,['f']=31,['g']=32,['h']=33,['i']=34,['j']=35,['k']=36,['l']=37,['m']=38,['n']=39,['o']=40,['p']=41,['q']=42,['r']=43,['s']=44,['t']=45,['u']=46,['v']=47,['w']=48,['x']=49,['y']=50,['z']=51,['0']=52,['1']=53,['2']=54,['3']=55,['4']=56,['5']=57,['6']=58,['7']=59,['8']=60,['9']=61,['-']=62,['_']=63,['=']=nil} Tercio@58: Tercio@58: -- shift left Tercio@58: local function lsh (value,shift) Tercio@58: return (value*(2^shift)) % 256 Tercio@58: end Tercio@58: Tercio@58: -- shift right Tercio@58: local function rsh (value,shift) Tercio@58: return math.floor(value/2^shift) % 256 Tercio@58: end Tercio@58: Tercio@58: -- return single bit (for OR) Tercio@58: local function bit (x,b) Tercio@58: return (x % 2^b - x % 2^(b-1) > 0) Tercio@58: end Tercio@58: Tercio@58: local function lor (x,y) Tercio@58: result = 0 Tercio@58: for p=1,8 do result = result + (((bit(x,p) or bit(y,p)) == true) and 2^(p-1) or 0) end Tercio@58: return result Tercio@58: end Tercio@58: Tercio@58: function DF.EncodeString (data) Tercio@58: local bytes = {} Tercio@58: local result = "" Tercio@58: for spos=0,string.len(data)-1,3 do Tercio@58: for byte=1,3 do bytes[byte] = string.byte(string.sub(data,(spos+byte))) or 0 end Tercio@58: result = string.format('%s%s%s%s%s',result,base64chars[rsh(bytes[1],2)],base64chars[lor(lsh((bytes[1] % 4),4), rsh(bytes[2],4))] or "=",((#data-spos) > 1) and base64chars[lor(lsh(bytes[2] % 16,2), rsh(bytes[3],6))] or "=",((#data-spos) > 2) and base64chars[(bytes[3] % 64)] or "=") Tercio@58: end Tercio@58: return result Tercio@58: end Tercio@58: Tercio@58: function DF.DecodeString (data) Tercio@58: local chars = {} Tercio@58: local result="" Tercio@58: for dpos=0,string.len(data)-1,4 do Tercio@58: for char=1,4 do chars[char] = base64bytes[(string.sub(data,(dpos+char),(dpos+char)) or "=")] end Tercio@58: result = string.format('%s%s%s%s',result,string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),(chars[3] ~= nil) and string.char(lor(lsh(chars[2],4), rsh(chars[3],2))) or "",(chars[4] ~= nil) and string.char(lor(lsh(chars[3],6) % 192, (chars[4]))) or "") Tercio@58: end Tercio@58: return result Tercio@58: end Tercio@58: Tercio@58: Tercio@58: DF.AutoCompleteAPI = { Tercio@58: "local", Tercio@58: "AddTrackedAchievement", -- [1] Tercio@58: "CanShowAchievementUI", -- [2] Tercio@58: "ClearAchievementComparisonUnit", -- [3] Tercio@58: "GetAchievementCategory", -- [4] Tercio@58: "GetAchievementComparisonInfo", -- [5] Tercio@58: "GetAchievementCriteriaInfo", -- [6] Tercio@58: "GetAchievementInfo", -- [7] Tercio@58: "GetAchievementInfoFromCriteria", -- [8] Tercio@58: "GetAchievementLink", -- [9] Tercio@58: "GetAchievementNumCriteria", -- [10] Tercio@58: "GetAchievementNumRewards", -- [11] Tercio@58: "GetCategoryInfo", -- [12] Tercio@58: "GetCategoryList", -- [13] Tercio@58: "GetCategoryNumAchievements", -- [14] Tercio@58: "GetComparisonAchievementPoints", -- [15] Tercio@58: "GetComparisonCategoryNumAchievements", -- [16] Tercio@58: "GetComparisonStatistic", -- [17] Tercio@58: "GetLatestCompletedAchievements", -- [18] Tercio@58: "GetLatestCompletedComparisonAchievements", -- [19] Tercio@58: "GetLatestUpdatedComparisonStatsGetLatestUpdatedStats", -- [20] Tercio@58: "GetNextAchievement", -- [21] Tercio@58: "GetNumComparisonCompletedAchievements", -- [22] Tercio@58: "GetNumCompletedAchievements", -- [23] Tercio@58: "GetPreviousAchievement", -- [24] Tercio@58: "GetStatistic", -- [25] Tercio@58: "GetStatisticsCategoryList", -- [26] Tercio@58: "GetTotalAchievementPoints", -- [27] Tercio@58: "GetTrackedAchievements", -- [28] Tercio@58: "GetNumTrackedAchievements", -- [29] Tercio@58: "RemoveTrackedAchievement", -- [30] Tercio@58: "SetAchievementComparisonUnit", -- [31] Tercio@58: "ActionButtonDown", -- [32] Tercio@58: "ActionButtonUp", -- [33] Tercio@58: "ActionHasRange", -- [34] Tercio@58: "CameraOrSelectOrMoveStart", -- [35] Tercio@58: "CameraOrSelectOrMoveStop", -- [36] Tercio@58: "ChangeActionBarPage", -- [37] Tercio@58: "GetActionBarPage", -- [38] Tercio@58: "GetActionBarToggles", -- [39] Tercio@58: "GetActionCooldown", -- [40] Tercio@58: "GetActionCount", -- [41] Tercio@58: "GetActionInfo", -- [42] Tercio@58: "GetActionText", -- [43] Tercio@58: "GetActionTexture", -- [44] Tercio@58: "GetBonusBarOffset", -- [45] Tercio@58: "GetMouseButtonClicked", -- [46] Tercio@58: "GetMultiCastBarOffset", -- [47] Tercio@58: "GetPossessInfo", -- [48] Tercio@58: "HasAction", -- [49] Tercio@58: "IsActionInRange", -- [50] Tercio@58: "IsAttackAction", -- [51] Tercio@58: "IsAutoRepeatAction", -- [52] Tercio@58: "IsCurrentAction", -- [53] Tercio@58: "IsConsumableAction", -- [54] Tercio@58: "IsEquippedAction", -- [55] Tercio@58: "IsUsableAction", -- [56] Tercio@58: "PetHasActionBar", -- [57] Tercio@58: "PickupAction", -- [58] Tercio@58: "PickupPetAction", -- [59] Tercio@58: "PlaceAction", -- [60] Tercio@58: "SetActionBarToggles", -- [61] Tercio@58: "StopAttack", -- [62] Tercio@58: "TurnOrActionStart", -- [63] Tercio@58: "TurnOrActionStop", -- [64] Tercio@58: "UseAction", -- [65] Tercio@58: "AcceptDuel", -- [66] Tercio@58: "AttackTarget", -- [67] Tercio@58: "CancelDuel", -- [68] Tercio@58: "CancelLogout", -- [69] Tercio@58: "ClearTutorials", -- [70] Tercio@58: "CancelSummon", -- [71] Tercio@58: "ConfirmSummon", -- [72] Tercio@58: "DescendStop", -- [73] Tercio@58: "Dismount", -- [74] Tercio@58: "FlagTutorial", -- [75] Tercio@58: "ForceQuit", -- [76] Tercio@58: "GetPVPTimer", -- [77] Tercio@58: "GetSummonConfirmAreaName", -- [78] Tercio@58: "GetSummonConfirmSummoner", -- [79] Tercio@58: "GetSummonConfirmTimeLeft", -- [80] Tercio@58: "RandomRoll", -- [81] Tercio@58: "SetPVP", -- [82] Tercio@58: "StartDuel", -- [84] Tercio@58: "TogglePVP", -- [85] Tercio@58: "ToggleSheath", -- [86] Tercio@58: "UseSoulstone", -- [87] Tercio@58: "CanSolveArtifact", -- [89] Tercio@58: "UIParent", -- [90] Tercio@58: "GetArtifactInfoByRace", -- [91] Tercio@58: "GetArtifactProgress", -- [92] Tercio@58: "GetNumArtifactsByRace", -- [93] Tercio@58: "GetSelectedArtifactInfo", -- [94] Tercio@58: "IsArtifactCompletionHistoryAvailable", -- [95] Tercio@58: "ItemAddedToArtifact", -- [96] Tercio@58: "RemoveItemFromArtifact", -- [97] Tercio@58: "RequestArtifactCompletionHistory", -- [98] Tercio@58: "SocketItemToArtifact", -- [99] Tercio@58: "AcceptArenaTeam", -- [101] Tercio@58: "ArenaTeamInviteByName", -- [102] Tercio@58: "ArenaTeamSetLeaderByName", -- [103] Tercio@58: "ArenaTeamLeave", -- [104] Tercio@58: "ArenaTeamRoster", -- [105] Tercio@58: "ArenaTeamUninviteByName", -- [106] Tercio@58: "ArenaTeamDisband", -- [107] Tercio@58: "DeclineArenaTeam", -- [108] Tercio@58: "GetArenaTeam", -- [109] Tercio@58: "GetArenaTeamGdfInf", -- [110] Tercio@58: "oGetArenaTeamRosterInfo", -- [111] Tercio@58: "GetBattlefieldTeamInfo", -- [112] Tercio@58: "GetCurrentArenaSeason", -- [113] Tercio@58: "GetInspectArenaTeamData", -- [114] Tercio@58: "GetNumArenaTeamMembers", -- [115] Tercio@58: "GetPreviousArenaSeason", -- [116] Tercio@58: "IsActiveBattlefieldArena", -- [117] Tercio@58: "IsArenaTeamCaptain", -- [118] Tercio@58: "IsInArenaTeam", -- [119] Tercio@58: "CalculateAuctionDeposit", -- [121] Tercio@58: "CanCancelAuction", -- [122] Tercio@58: "CancelSell", -- [123] Tercio@58: "CanSendAuctionQuery", -- [124] Tercio@58: "CancelAuction", -- [125] Tercio@58: "ClickAuctionSellItemButton", -- [126] Tercio@58: "CloseAuctionHouse", -- [127] Tercio@58: "GetAuctionHouseDepositRate", -- [128] Tercio@58: "GetAuctionInvTypes", -- [129] Tercio@58: "GetAuctionItemClasses", -- [130] Tercio@58: "GetAuctionItemInfo", -- [131] Tercio@58: "GetAuctionItemLink", -- [132] Tercio@58: "GetAuctionItemSubClasses", -- [133] Tercio@58: "GetAuctionItemTimeLeft", -- [134] Tercio@58: "GetAuctionSellItemInfo", -- [135] Tercio@58: "GetBidderAuctionItems", -- [136] Tercio@58: "GetNumAuctionItems", -- [137] Tercio@58: "GetOwnerAuctionItems", -- [138] Tercio@58: "GetSelectedAuctionItem", -- [139] Tercio@58: "IsAuctionSortReversed", -- [140] Tercio@58: "PlaceAuctionBid", -- [141] Tercio@58: "QueryAuctionItems", -- [142] Tercio@58: "SetAuctionsTabShowing", -- [143] Tercio@58: "SetSelectedAuctionItem", -- [144] Tercio@58: "SortAuctionItems", -- [145] Tercio@58: "StartAuction", -- [146] Tercio@58: "BankButtonIDToInvSlotID", -- [148] Tercio@58: "CloseBankFrame", -- [149] Tercio@58: "GetBankSlotCost", -- [150] Tercio@58: "GetNumBankSlots", -- [151] Tercio@58: "PurchaseSlot", -- [152] Tercio@58: "AcceptAreaSpiritHeal", -- [154] Tercio@58: "AcceptBattlefieldPort", -- [155] Tercio@58: "CancelAreaSpiritHeal", -- [156] Tercio@58: "CanJoinBattlefieldAsGroup", -- [157] Tercio@58: "CheckSpiritHealerDist", -- [158] Tercio@58: "GetAreaSpiritHealerTime", -- [159] Tercio@58: "GetBattlefieldEstimatedWaitTime", -- [160] Tercio@58: "GetBattlefieldFlagPosition", -- [161] Tercio@58: "GetBattlefieldInstanceExpiration", -- [162] Tercio@58: "GetBattlefieldInstanceRunTime", -- [163] Tercio@58: "GetBattlefieldMapIconScale", -- [164] Tercio@58: "GetBattlefieldPortExpiration", -- [165] Tercio@58: "GetBattlefieldPosition", -- [166] Tercio@58: "GetBattlefieldScore", -- [167] Tercio@58: "GetBattlefieldStatData", -- [168] Tercio@58: "GetBattlefieldStatInfo", -- [169] Tercio@58: "GetBattlefieldStatus", -- [170] Tercio@58: "GetBattlefieldTimeWaited", -- [171] Tercio@58: "GetBattlefieldWinner", -- [172] Tercio@58: "GetBattlegroundInfo", -- [173] Tercio@58: "GetNumBattlefieldFlagPositions", -- [174] Tercio@58: "GetNumBattlefieldPositions", -- [175] Tercio@58: "GetNumBattlefieldScores", -- [176] Tercio@58: "GetNumBattlefieldStats", -- [177] Tercio@58: "GetNumWorldStateUI", -- [178] Tercio@58: "GetWintergraspWaitTime", -- [179] Tercio@58: "GetWorldStateUIInfo", -- [180] Tercio@58: "IsPVPTimerRunning", -- [181] Tercio@58: "JoinBattlefield", -- [182] Tercio@58: "LeaveBattlefield", -- [183] Tercio@58: "ReportPlayerIsPVPAFK", -- [184] Tercio@58: "RequestBattlefieldPositions", -- [185] Tercio@58: "RequestBattlefieldScoreData", -- [186] Tercio@58: "RequestBattlegroundInstanceInfo", -- [187] Tercio@58: "SetBattlefieldScoreFaction", -- [188] Tercio@58: "GetBinding", -- [190] Tercio@58: "GetBindingAction", -- [191] Tercio@58: "GetBindingKey", -- [192] Tercio@58: "GetBindingText", -- [193] Tercio@58: "GetCurrentBindingSet", -- [194] Tercio@58: "GetNumBindings", -- [195] Tercio@58: "LoadBindings", -- [196] Tercio@58: "RunBinding", -- [197] Tercio@58: "SaveBindings", -- [198] Tercio@58: "SetBinding", -- [199] Tercio@58: "SetBindingSpell", -- [200] Tercio@58: "SetBindingClick", -- [201] Tercio@58: "SetBindingItem", -- [202] Tercio@58: "SetBindingMacro", -- [203] Tercio@58: "SetConsoleKey", -- [204] Tercio@58: "SetOverrideBinding", -- [205] Tercio@58: "SetOverrideBindingSpell", -- [206] Tercio@58: "SetOverrideBindingClick", -- [207] Tercio@58: "SetOverrideBindingItem", -- [208] Tercio@58: "SetOverrideBindingMacro", -- [209] Tercio@58: "ClearOverrideBindings", -- [210] Tercio@58: "SetMouselookOverrideBinding", -- [211] Tercio@58: "IsModifierKeyDown", -- [212] Tercio@58: "IsModifiedClick", -- [213] Tercio@58: "IsMouseButtonDown", -- [214] Tercio@58: "CancelUnitBuff", -- [216] Tercio@58: "CancelShapeshiftForm", -- [217] Tercio@58: "CancelItemTempEnchantment", -- [218] Tercio@58: "GetWeaponEnchantInfo", -- [219] Tercio@58: "UnitAura", -- [220] Tercio@58: "UnitBuff", -- [221] Tercio@58: "UnitDebuff", -- [222] Tercio@58: "AddChatWindowChannel", -- [224] Tercio@58: "ChannelBan", -- [225] Tercio@58: "ChannelInvite", -- [226] Tercio@58: "ChannelKick", -- [227] Tercio@58: "ChannelModerator", -- [228] Tercio@58: "ChannelMute", -- [229] Tercio@58: "ChannelToggleAnnouncements", -- [230] Tercio@58: "ChannelUnban", -- [231] Tercio@58: "ChannelUnmoderator", -- [232] Tercio@58: "ChannelUnmute", -- [233] Tercio@58: "DisplayChannelOwner", -- [234] Tercio@58: "DeclineInvite", -- [235] Tercio@58: "EnumerateServerChannels", -- [236] Tercio@58: "GetChannelList", -- [237] Tercio@58: "GetChannelName", -- [238] Tercio@58: "GetChatWindowChannels", -- [239] Tercio@58: "JoinChannelByName", -- [240] Tercio@58: "LeaveChannelByName", -- [241] Tercio@58: "ListChannelByName", -- [242] Tercio@58: "ListChannels", -- [243] Tercio@58: "RemoveChatWindowChannel", -- [244] Tercio@58: "SendChatMessage", -- [245] Tercio@58: "SetChannelOwner", -- [246] Tercio@58: "SetChannelPassword", -- [247] Tercio@58: "AcceptResurrect", -- [249] Tercio@58: "AcceptXPLoss", -- [250] Tercio@58: "CheckBinderDist", -- [251] Tercio@58: "ConfirmBinder", -- [252] Tercio@58: "DeclineResurrect", -- [253] Tercio@58: "DestroyTotem", -- [254] Tercio@58: "GetBindLocation", -- [255] Tercio@58: "GetComboPoints", -- [256] Tercio@58: "GetCorpseRecoveryDelay", -- [257] Tercio@58: "GetCurrentTitle", -- [258] Tercio@58: "GetMirrorTimerInfo", -- [259] Tercio@58: "GetMirrorTimerProgress", -- [260] Tercio@58: "GetMoney", -- [261] Tercio@58: "GetNumTitles", -- [262] Tercio@58: "GetPlayerFacing", -- [263] Tercio@58: "GetPVPDesired", -- [264] Tercio@58: "GetReleaseTimeRemaining", -- [265] Tercio@58: "GetResSicknessDuration", -- [266] Tercio@58: "GetRestState", -- [267] Tercio@58: "GetRuneCooldown", -- [268] Tercio@58: "GetRuneCount", -- [269] Tercio@58: "GetRuneType", -- [270] Tercio@58: "GetTimeToWellRested", -- [271] Tercio@58: "GetTitleName", -- [272] Tercio@58: "GetUnitPitch", -- [273] Tercio@58: "GetXPExhaustion", -- [274] Tercio@58: "HasFullControl", -- [275] Tercio@58: "HasSoulstone", -- [276] Tercio@58: "IsFalling", -- [277] Tercio@58: "IsFlying", -- [278] Tercio@58: "IsFlyableArea", -- [279] Tercio@58: "IsIndoors", -- [280] Tercio@58: "IsMounted", -- [281] Tercio@58: "IsOutdoors", -- [282] Tercio@58: "IsOutOfBounds", -- [283] Tercio@58: "IsResting", -- [284] Tercio@58: "IsStealthed", -- [285] Tercio@58: "IsSwimming", -- [286] Tercio@58: "IsTitleKnown", -- [287] Tercio@58: "IsXPUserDisabled", -- [288] Tercio@58: "NotWhileDeadError", -- [289] Tercio@58: "ResurrectHasSickness", -- [290] Tercio@58: "ResurrectHasTimer", -- [291] Tercio@58: "ResurrectGetOfferer", -- [292] Tercio@58: "RetrieveCorpse", -- [293] Tercio@58: "SetCurrentTitle", -- [294] Tercio@58: "TargetTotem", -- [295] Tercio@58: "GetArmorPenetration", -- [296] Tercio@58: "GetAttackPowerForStat", -- [297] Tercio@58: "GetAverageItemLevel", -- [298] Tercio@58: "GetBlockChance", -- [299] Tercio@58: "GetCombatRating", -- [300] Tercio@58: "GetCombatRatingBonus", -- [301] Tercio@58: "GetCritChance", -- [302] Tercio@58: "GetCritChanceFromAgility", -- [303] Tercio@58: "GetDodgeChance", -- [304] Tercio@58: "GetExpertise", -- [305] Tercio@58: "GetExpertisePercent", -- [306] Tercio@58: "GetManaRegen", -- [307] Tercio@58: "GetMaxCombatRatingBonus", -- [308] Tercio@58: "GetParryChance", -- [309] Tercio@58: "GetPetSpellBonusDamage", -- [310] Tercio@58: "GetPowerRegen", -- [311] Tercio@58: "GetSpellBonusDamage", -- [312] Tercio@58: "GetRangedCritChance", -- [313] Tercio@58: "GetSpellBonusHealing", -- [314] Tercio@58: "GetSpellCritChance", -- [315] Tercio@58: "GetShieldBlock", -- [316] Tercio@58: "GetSpellCritChanceFromIntellect", -- [317] Tercio@58: "GetSpellPenetration", -- [318] Tercio@58: "AddChatWindowChannel", -- [319] Tercio@58: "ChangeChatColor", -- [320] Tercio@58: "ChatFrame_AddChannel", -- [321] Tercio@58: "ChatFrame_AddMessageEventFilter", -- [322] Tercio@58: "ChatFrame_GetMessageEventFilters", -- [323] Tercio@58: "ChatFrame_OnHyperlinkShow", -- [324] Tercio@58: "ChatFrame_RemoveMessageEventFilter", -- [325] Tercio@58: "GetAutoCompleteResults", -- [326] Tercio@58: "GetChatTypeIndex", -- [327] Tercio@58: "GetChatWindowChannels", -- [328] Tercio@58: "GetChatWindowInfo", -- [329] Tercio@58: "GetChatWindowMessages", -- [330] Tercio@58: "JoinChannelByName", -- [331] Tercio@58: "LoggingChat", -- [332] Tercio@58: "LoggingCombat", -- [333] Tercio@58: "RemoveChatWindowChannel", -- [334] Tercio@58: "RemoveChatWindowMessages", -- [335] Tercio@58: "SetChatWindowAlpha", -- [336] Tercio@58: "SetChatWindowColor", -- [337] Tercio@58: "SetChatWindowDocked", -- [338] Tercio@58: "SetChatWindowLocked", -- [339] Tercio@58: "SetChatWindowName", -- [340] Tercio@58: "SetChatWindowShown", -- [341] Tercio@58: "SetChatWindowSize", -- [342] Tercio@58: "SetChatWindowUninteractable", -- [343] Tercio@58: "DoEmote", -- [345] Tercio@58: "GetDefaultLanguage", -- [346] Tercio@58: "GetLanguageByIndex", -- [347] Tercio@58: "GetNumLanguages", -- [348] Tercio@58: "GetRegisteredAddonMessagePrefixes", -- [349] Tercio@58: "IsAddonMessagePrefixRegistered", -- [350] Tercio@58: "RegisterAddonMessagePrefix", -- [352] Tercio@58: "SendAddonMessage", -- [353] Tercio@58: "SendChatMessage", -- [354] Tercio@58: "CallCompanion", -- [356] Tercio@58: "DismissCompanion", -- [357] Tercio@58: "GetCompanionInfo", -- [358] Tercio@58: "GetNumCompanions", -- [359] Tercio@58: "GetCompanionCooldown", -- [360] Tercio@58: "PickupCompanion", -- [361] Tercio@58: "SummonRandomCritter", -- [362] Tercio@58: "ContainerIDToInventoryID", -- [364] Tercio@58: "GetBagName", -- [365] Tercio@58: "GetContainerItemCooldown", -- [366] Tercio@58: "GetContainerItemDurability", -- [367] Tercio@58: "GetContainerItemGems", -- [368] Tercio@58: "GetContainerItemID", -- [369] Tercio@58: "GetContainerItemInfo", -- [370] Tercio@58: "GetContainerItemLink", -- [371] Tercio@58: "GetContainerNumSlots", -- [372] Tercio@58: "GetContainerItemQuestInfo", -- [373] Tercio@58: "GetContainerNumFreeSlots", -- [374] Tercio@58: "OpenAllBags", -- [376] Tercio@58: "CloseAllBags", -- [377] Tercio@58: "PickupBagFromSlot", -- [378] Tercio@58: "PickupContainerItem", -- [379] Tercio@58: "PutItemInBackpack", -- [380] Tercio@58: "PutItemInBag", -- [381] Tercio@58: "PutKeyInKeyRing", -- [382] Tercio@58: "SplitContainerItem", -- [383] Tercio@58: "ToggleBackpack", -- [384] Tercio@58: "ToggleBag", -- [385] Tercio@58: "GetCoinText", -- [388] Tercio@58: "GetCoinTextureString", -- [389] Tercio@58: "GetCurrencyInfo", -- [390] Tercio@58: "GetCurrencyListSize", -- [391] Tercio@58: "GetCurrencyListInfo", -- [392] Tercio@58: "ExpandCurrencyList", -- [393] Tercio@58: "SetCurrencyUnused", -- [394] Tercio@58: "GetNumWatchedTokens", -- [395] Tercio@58: "GetBackpackCurrencyInfo", -- [396] Tercio@58: "SetCurrencyBackpack", -- [397] Tercio@58: "AutoEquipCursorItem", -- [399] Tercio@58: "ClearCursor", -- [400] Tercio@58: "CursorCanGoInSlot", -- [401] Tercio@58: "CursorHasItem", -- [402] Tercio@58: "CursorHasMoney", -- [403] Tercio@58: "CursorHasSpell", -- [404] Tercio@58: "DeleteCursorItem", -- [405] Tercio@58: "DropCursorMoney", -- [406] Tercio@58: "DropItemOnUnit", -- [407] Tercio@58: "EquipCursorItem", -- [408] Tercio@58: "GetCursorInfo", -- [409] Tercio@58: "GetCursorPosition", -- [410] Tercio@58: "HideRepairCursor", -- [411] Tercio@58: "InRepairMode", -- [412] Tercio@58: "PickupAction", -- [413] Tercio@58: "PickupBagFromSlot", -- [414] Tercio@58: "PickupContainerItem", -- [415] Tercio@58: "PickupInventoryItem", -- [416] Tercio@58: "PickupItem", -- [417] Tercio@58: "PickupMacro", -- [418] Tercio@58: "PickupMerchantItem", -- [419] Tercio@58: "PickupPetAction", -- [420] Tercio@58: "PickupSpell", -- [421] Tercio@58: "PickupStablePet", -- [422] Tercio@58: "PickupTradeMoney", -- [423] Tercio@58: "PlaceAction", -- [424] Tercio@58: "PutItemInBackpack", -- [425] Tercio@58: "PutItemInBag", -- [426] Tercio@58: "ResetCursor", -- [427] Tercio@58: "SetCursor", -- [428] Tercio@58: "ShowContainerSellCursor", -- [429] Tercio@58: "ShowInspectCursor", -- [430] Tercio@58: "ShowInventorySellCursor", -- [431] Tercio@58: "ShowMerchantSellCursor", -- [432] Tercio@58: "ShowRepairCursor", -- [433] Tercio@58: "SplitContainerItem", -- [434] Tercio@58: "GetWeaponEnchantInfo", -- [435] Tercio@58: "ReplaceEnchant", -- [436] Tercio@58: "ReplaceTradeEnchant", -- [437] Tercio@58: "BindEnchant", -- [438] Tercio@58: "CollapseFactionHeader", -- [439] Tercio@58: "CollapseAllFactionHeaders", -- [440] Tercio@58: "ExpandFactionHeader", -- [441] Tercio@58: "ExpandAllFactionHeaders", -- [442] Tercio@58: "FactionToggleAtWar", -- [443] Tercio@58: "GetFactionInfo", -- [444] Tercio@58: "GetNumFactions", -- [445] Tercio@58: "GetSelectedFaction", -- [446] Tercio@58: "GetWatchedFactionInfo", -- [447] Tercio@58: "IsFactionInactive", -- [448] Tercio@58: "SetFactionActive", -- [449] Tercio@58: "SetFactionInactive", -- [450] Tercio@58: "SetSelectedFaction", -- [451] Tercio@58: "SetWatchedFactionIndex", -- [452] Tercio@58: "UnitFactionGroup", -- [453] Tercio@58: "CreateFrame", -- [454] Tercio@58: "CreateFont", -- [455] Tercio@58: "GetFramesRegisteredForEvent", -- [456] Tercio@58: "GetNumFrames", -- [457] Tercio@58: "EnumerateFrames", -- [458] Tercio@58: "GetMouseFocus", -- [459] Tercio@58: "ToggleDropDownMenu", -- [460] Tercio@58: "UIFrameFadeIn", -- [461] Tercio@58: "UIFrameFadeOut", -- [462] Tercio@58: "UIFrameFlash", -- [463] Tercio@58: "EasyMenu", -- [464] Tercio@58: "AddFriend", -- [466] Tercio@58: "AddOrRemoveFriend", -- [467] Tercio@58: "GetFriendInfo", -- [468] Tercio@58: "SetFriendNotes", -- [469] Tercio@58: "GetNumFriends", -- [470] Tercio@58: "GetSelectedFriend", -- [471] Tercio@58: "RemoveFriend", -- [472] Tercio@58: "SetSelectedFriend", -- [473] Tercio@58: "ShowFriends", -- [474] Tercio@58: "ToggleFriendsFrame", -- [475] Tercio@58: "GetNumGlyphSockets", -- [477] Tercio@58: "GetGlyphSocketInfo", -- [478] Tercio@58: "GetGlyphLink", -- [479] Tercio@58: "GlyphMatchesSocket", -- [480] Tercio@58: "PlaceGlyphInSocket", -- [481] Tercio@58: "RemoveGlyphFromSocket", -- [482] Tercio@58: "SpellCanTargetGlyph", -- [483] Tercio@58: "CanComplainChat", -- [485] Tercio@58: "CanComplainInboxItem", -- [486] Tercio@58: "ComplainChat", -- [487] Tercio@58: "ComplainInboxItem", -- [488] Tercio@58: "CloseGossip", -- [501] Tercio@58: "ForceGossip", -- [502] Tercio@58: "GetGossipActiveQuests", -- [503] Tercio@58: "GetGossipAvailableQuests", -- [504] Tercio@58: "GetGossipOptions", -- [505] Tercio@58: "GetGossipText", -- [506] Tercio@58: "GetNumGossipActiveQuests", -- [507] Tercio@58: "GetNumGossipAvailableQuests", -- [508] Tercio@58: "GetNumGossipOptions", -- [509] Tercio@58: "SelectGossipActiveQuest", -- [510] Tercio@58: "SelectGossipAvailableQuest", -- [511] Tercio@58: "SelectGossipOption", -- [512] Tercio@58: "AcceptGroup", -- [514] Tercio@58: "ConfirmReadyCheck", -- [515] Tercio@58: "ConvertToRaid", -- [516] Tercio@58: "DeclineGroup", -- [517] Tercio@58: "DoReadyCheck", -- [518] Tercio@58: "GetLootMethod", -- [519] Tercio@58: "GetLootThreshold", -- [520] Tercio@58: "GetMasterLootCandidate", -- [521] Tercio@58: "GetNumPartyMembers", -- [522] Tercio@58: "GetRealNumPartyMembers", -- [523] Tercio@58: "GetPartyLeaderIndex", -- [524] Tercio@58: "GetPartyMember", -- [525] Tercio@58: "InviteUnit", -- [526] Tercio@58: "IsPartyLeader", -- [527] Tercio@58: "LeaveParty", -- [528] Tercio@58: "PromoteToLeader", -- [529] Tercio@58: "SetLootMethod", -- [530] Tercio@58: "SetLootThreshold", -- [531] Tercio@58: "UninviteUnit", -- [532] Tercio@58: "UnitInParty", -- [533] Tercio@58: "UnitIsPartyLeader", -- [534] Tercio@58: "AcceptGuild", -- [536] Tercio@58: "BuyGuildCharter", -- [537] Tercio@58: "CanEditGuildEvent", -- [538] Tercio@58: "CanEditGuildInfo", -- [539] Tercio@58: "CanEditMOTD", -- [540] Tercio@58: "CanEditOfficerNote", -- [541] Tercio@58: "CanEditPublicNote", -- [542] Tercio@58: "CanGuildDemote", -- [543] Tercio@58: "CanGuildInvite", -- [544] Tercio@58: "CanGuildPromote", -- [545] Tercio@58: "CanGuildRemove", -- [546] Tercio@58: "CanViewOfficerNote", -- [547] Tercio@58: "CloseGuildRegistrar", -- [548] Tercio@58: "CloseGuildRoster", -- [549] Tercio@58: "CloseTabardCreation", -- [550] Tercio@58: "DeclineGuild", -- [551] Tercio@58: "GetGuildCharterCost", -- [552] Tercio@58: "GetGuildEventInfo", -- [553] Tercio@58: "GetGuildInfo", -- [554] Tercio@58: "GetGuildInfoText", -- [555] Tercio@58: "GetGuildRosterInfo", -- [556] Tercio@58: "GetGuildRosterLastOnline", -- [557] Tercio@58: "GetGuildRosterMOTD", -- [558] Tercio@58: "GetGuildRosterSelection", -- [559] Tercio@58: "GetGuildRosterShowOffline", -- [560] Tercio@58: "GetNumGuildEvents", -- [561] Tercio@58: "GetNumGuildMembers", -- [562] Tercio@58: "GetTabardCreationCost", -- [563] Tercio@58: "GetTabardInfo", -- [564] Tercio@58: "GuildControlAddRank", -- [565] Tercio@58: "GuildControlDelRank", -- [566] Tercio@58: "GuildControlGetNumRanks", -- [567] Tercio@58: "GuildControlGetRankFlags", -- [568] Tercio@58: "GuildControlGetRankName", -- [569] Tercio@58: "GuildControlSaveRank", -- [570] Tercio@58: "GuildControlSetRank", -- [571] Tercio@58: "GuildControlSetRankFlag", -- [572] Tercio@58: "GuildDemote", -- [573] Tercio@58: "GuildDisband", -- [574] Tercio@58: "GuildInfo", -- [575] Tercio@58: "GuildInvite", -- [576] Tercio@58: "GuildLeave", -- [577] Tercio@58: "GuildPromote", -- [578] Tercio@58: "GuildRoster", -- [579] Tercio@58: "GuildRosterSetOfficerNote", -- [580] Tercio@58: "GuildRosterSetPublicNote", -- [581] Tercio@58: "GuildSetMOTD", -- [582] Tercio@58: "GuildSetLeader", -- [583] Tercio@58: "GuildUninvite", -- [584] Tercio@58: "IsGuildLeader", -- [585] Tercio@58: "IsInGuild", -- [586] Tercio@58: "QueryGuildEventLog", -- [587] Tercio@58: "SetGuildInfoText", -- [588] Tercio@58: "SetGuildRosterSelection", -- [589] Tercio@58: "SetGuildRosterShowOffline", -- [590] Tercio@58: "SortGuildRoster", -- [591] Tercio@58: "UnitGetGuildXP", -- [592] Tercio@58: "AutoStoreGuildBankItem", -- [593] Tercio@58: "BuyGuildBankTab", -- [594] Tercio@58: "CanGuildBankRepair", -- [595] Tercio@58: "CanWithdrawGuildBankMoney", -- [596] Tercio@58: "CloseGuildBankFrame", -- [597] Tercio@58: "DepositGuildBankMoney", -- [598] Tercio@58: "GetCurrentGuildBankTab", -- [599] Tercio@58: "GetGuildBankItemInfo", -- [600] Tercio@58: "GetGuildBankItemLink", -- [601] Tercio@58: "GetGuildBankMoney", -- [602] Tercio@58: "GetGuildBankMoneyTransaction", -- [603] Tercio@58: "GetGuildBankTabCost", -- [604] Tercio@58: "GetGuildBankTabInfo", -- [605] Tercio@58: "GetGuildBankTabPermissions", -- [606] Tercio@58: "GetGuildBankText", -- [607] Tercio@58: "GetGuildBankTransaction", -- [608] Tercio@58: "GetGuildTabardFileNames", -- [611] Tercio@58: "GetNumGuildBankMoneyTransactions", -- [612] Tercio@58: "GetNumGuildBankTabs", -- [613] Tercio@58: "GetNumGuildBankTransactions", -- [614] Tercio@58: "PickupGuildBankItem", -- [615] Tercio@58: "PickupGuildBankMoney", -- [616] Tercio@58: "QueryGuildBankLog", -- [617] Tercio@58: "QueryGuildBankTab", -- [618] Tercio@58: "SetCurrentGuildBankTab", -- [619] Tercio@58: "SetGuildBankTabInfo", -- [620] Tercio@58: "SetGuildBankTabPermissions", -- [621] Tercio@58: "SplitGuildBankItem", -- [624] Tercio@58: "WithdrawGuildBankMoney", -- [625] Tercio@58: "GetHolidayBGHonorCurrencyBonuses", -- [627] Tercio@58: "GetInspectHonorData", -- [628] Tercio@58: "GetPVPLifetimeStats", -- [629] Tercio@58: "GetPVPRankInfo", -- [630] Tercio@58: "GetPVPRankProgress", -- [631] Tercio@58: "GetPVPSessionStats", -- [632] Tercio@58: "GetPVPYesterdayStats", -- [633] Tercio@58: "GetRandomBGHonorCurrencyBonuses", -- [634] Tercio@58: "HasInspectHonorData", -- [635] Tercio@58: "RequestInspectHonorData", -- [636] Tercio@58: "UnitPVPName", -- [637] Tercio@58: "UnitPVPRank", -- [638] Tercio@58: "AddIgnore", -- [640] Tercio@58: "AddOrDelIgnore", -- [641] Tercio@58: "DelIgnore", -- [642] Tercio@58: "GetIgnoreName", -- [643] Tercio@58: "GetNumIgnores", -- [644] Tercio@58: "GetSelectedIgnore", -- [645] Tercio@58: "SetSelectedIgnore", -- [646] Tercio@58: "CanInspect", -- [648] Tercio@58: "CheckInteractDistance", -- [649] Tercio@58: "ClearInspectPlayer", -- [650] Tercio@58: "GetInspectArenaTeamData", -- [651] Tercio@58: "HasInspectHonorData", -- [652] Tercio@58: "RequestInspectHonorData", -- [653] Tercio@58: "GetInspectHonorData", -- [654] Tercio@58: "NotifyInspect", -- [655] Tercio@58: "InspectUnit", -- [656] Tercio@58: "CanShowResetInstances", -- [658] Tercio@58: "GetBattlefieldInstanceExpiration", -- [659] Tercio@58: "GetBattlefieldInstanceInfo", -- [660] Tercio@58: "GetBattlefieldInstanceRunTime", -- [661] Tercio@58: "GetInstanceBootTimeRemaining", -- [662] Tercio@58: "GetInstanceInfo", -- [663] Tercio@58: "GetNumSavedInstances", -- [664] Tercio@58: "GetSavedInstanceInfo", -- [665] Tercio@58: "IsInInstance", -- [666] Tercio@58: "ResetInstances", -- [667] Tercio@58: "GetDungeonDifficulty", -- [668] Tercio@58: "SetDungeonDifficulty", -- [669] Tercio@58: "GetInstanceDifficulty", -- [670] Tercio@58: "GetInstanceLockTimeRemaining", -- [671] Tercio@58: "GetInstanceLockTimeRemainingEncounter", -- [672] Tercio@58: "AutoEquipCursorItem", -- [674] Tercio@58: "BankButtonIDToInvSlotID", -- [675] Tercio@58: "CancelPendingEquip", -- [676] Tercio@58: "ConfirmBindOnUse", -- [677] Tercio@58: "ContainerIDToInventoryID", -- [678] Tercio@58: "CursorCanGoInSlot", -- [679] Tercio@58: "EquipCursorItem", -- [680] Tercio@58: "EquipPendingItem", -- [681] Tercio@58: "GetInventoryAlertStatus", -- [682] Tercio@58: "GetInventoryItemBroken", -- [683] Tercio@58: "GetInventoryItemCooldown", -- [684] Tercio@58: "GetInventoryItemCount", -- [685] Tercio@58: "GetInventoryItemDurability", -- [686] Tercio@58: "GetInventoryItemGems", -- [687] Tercio@58: "GetInventoryItemID", -- [688] Tercio@58: "GetInventoryItemLink", -- [689] Tercio@58: "GetInventoryItemQuality", -- [690] Tercio@58: "GetInventoryItemTexture", -- [691] Tercio@58: "GetInventorySlotInfo", -- [692] Tercio@58: "GetWeaponEnchantInfo", -- [693] Tercio@58: "HasWandEquipped", -- [694] Tercio@58: "IsInventoryItemLocked", -- [695] Tercio@58: "KeyRingButtonIDToInvSlotID", -- [696] Tercio@58: "PickupBagFromSlot", -- [697] Tercio@58: "PickupInventoryItem", -- [698] Tercio@58: "UpdateInventoryAlertStatus", -- [699] Tercio@58: "UseInventoryItem", -- [700] Tercio@58: "EquipItemByName", -- [702] Tercio@58: "GetAuctionItemLink", -- [703] Tercio@58: "GetContainerItemLink", -- [704] Tercio@58: "GetItemCooldown", -- [705] Tercio@58: "GetItemCount", -- [706] Tercio@58: "GetItemFamily", -- [707] Tercio@58: "GetItemIcon", -- [708] Tercio@58: "GetItemInfo", -- [709] Tercio@58: "GetItemQualityColor", -- [710] Tercio@58: "GetItemSpell", -- [711] Tercio@58: "GetItemStats", -- [712] Tercio@58: "GetMerchantItemLink", -- [713] Tercio@58: "GetQuestItemLink", -- [714] Tercio@58: "GetQuestLogItemLink", -- [715] Tercio@58: "GetTradePlayerItemLink", -- [716] Tercio@58: "GetTradeSkillItemLink", -- [717] Tercio@58: "GetTradeSkillReagentItemLink", -- [718] Tercio@58: "GetTradeTargetItemLink", -- [719] Tercio@58: "IsUsableItem", -- [720] Tercio@58: "IsConsumableItem", -- [721] Tercio@58: "IsCurrentItem", -- [722] Tercio@58: "IsEquippedItem", -- [723] Tercio@58: "IsEquippableItem", -- [724] Tercio@58: "IsEquippedItemType", -- [725] Tercio@58: "IsItemInRange", -- [726] Tercio@58: "ItemHasRange", -- [727] Tercio@58: "OffhandHasWeapon", -- [728] Tercio@58: "SplitContainerItem", -- [729] Tercio@58: "SetItemRef", -- [730] Tercio@58: "AcceptSockets", -- [731] Tercio@58: "ClickSocketButton", -- [732] Tercio@58: "CloseSocketInfo", -- [733] Tercio@58: "GetSocketItemInfo", -- [734] Tercio@58: "GetSocketItemRefundable", -- [735] Tercio@58: "GetSocketItemBoundTradeable", -- [736] Tercio@58: "GetNumSockets", -- [737] Tercio@58: "GetSocketTypes", -- [738] Tercio@58: "GetExistingSocketInfo", -- [739] Tercio@58: "GetExistingSocketLink", -- [740] Tercio@58: "GetNewSocketInfo", -- [741] Tercio@58: "GetNewSocketLink", -- [742] Tercio@58: "SocketInventoryItem", -- [743] Tercio@58: "SocketContainerItem", -- [744] Tercio@58: "CloseItemText", -- [745] Tercio@58: "ItemTextGetCreator", -- [746] Tercio@58: "ItemTextGetItem", -- [747] Tercio@58: "ItemTextGetMaterial", -- [748] Tercio@58: "ItemTextGetPage", -- [749] Tercio@58: "ItemTextGetText", -- [750] Tercio@58: "ItemTextHasNextPage", -- [751] Tercio@58: "ItemTextNextPage", -- [752] Tercio@58: "ItemTextPrevPage", -- [753] Tercio@58: "GetMinimapZoneText", -- [755] Tercio@58: "GetRealZoneText", -- [756] Tercio@58: "GetSubZoneText", -- [757] Tercio@58: "GetZonePVPInfo", -- [758] Tercio@58: "GetZoneText", -- [759] Tercio@58: "CompleteLFGRoleCheck", -- [760] Tercio@58: "GetLFGDeserterExpiration", -- [761] Tercio@58: "GetLFGRandomCooldownExpiration", -- [762] Tercio@58: "GetLFGBootProposal", -- [763] Tercio@58: "GetLFGMode", -- [764] Tercio@58: "GetLFGQueueStats", -- [765] Tercio@58: "GetLFGRoles", -- [766] Tercio@58: "GetLFGRoleUpdate", -- [767] Tercio@58: "GetLFGRoleUpdateSlot", -- [768] Tercio@58: "SetLFGBootVote", -- [769] Tercio@58: "SetLFGComment", -- [770] Tercio@58: "SetLFGRoles", -- [771] Tercio@58: "UninviteUnit", -- [772] Tercio@58: "UnitGroupRolesAssigned", -- [773] Tercio@58: "UnitHasLFGDeserter", -- [774] Tercio@58: "UnitHasLFGRandomCooldown", -- [775] Tercio@58: "CloseLoot", -- [777] Tercio@58: "ConfirmBindOnUse", -- [778] Tercio@58: "ConfirmLootRoll", -- [779] Tercio@58: "ConfirmLootSlot", -- [780] Tercio@58: "GetLootMethod", -- [781] Tercio@58: "GetLootRollItemInfo", -- [782] Tercio@58: "GetLootRollItemLink", -- [783] Tercio@58: "GetLootRollTimeLeft", -- [784] Tercio@58: "GetLootSlotInfo", -- [785] Tercio@58: "GetLootSlotLink", -- [786] Tercio@58: "GetLootThreshold", -- [787] Tercio@58: "GetMasterLootCandidate", -- [788] Tercio@58: "GetNumLootItems", -- [789] Tercio@58: "GetOptOutOfLoot", -- [790] Tercio@58: "GiveMasterLoot", -- [791] Tercio@58: "IsFishingLoot", -- [792] Tercio@58: "LootSlot", -- [793] Tercio@58: "LootSlotIsCoin", -- [794] Tercio@58: "LootSlotIsCurrency", -- [795] Tercio@58: "LootSlotIsItem", -- [796] Tercio@58: "RollOnLoot", -- [797] Tercio@58: "SetLootMethod", -- [798] Tercio@58: "SetLootPortrait", -- [799] Tercio@58: "SetLootThreshold", -- [800] Tercio@58: "SetOptOutOfLoot", -- [801] Tercio@58: "CursorHasMacro", -- [804] Tercio@58: "DeleteMacro", -- [805] Tercio@58: "GetMacroBody", -- [807] Tercio@58: "GetMacroIconInfo", -- [808] Tercio@58: "GetMacroItemIconInfo", -- [809] Tercio@58: "GetMacroIndexByName", -- [810] Tercio@58: "GetMacroInfo", -- [811] Tercio@58: "GetNumMacroIcons", -- [812] Tercio@58: "GetNumMacroItemIcons", -- [813] Tercio@58: "GetNumMacros", -- [814] Tercio@58: "PickupMacro", -- [815] Tercio@58: "RunMacro", -- [816] Tercio@58: "RunMacroText", -- [817] Tercio@58: "SecureCmdOptionParse", -- [818] Tercio@58: "StopMacro", -- [819] Tercio@58: "AutoLootMailItem", -- [821] Tercio@58: "CheckInbox", -- [822] Tercio@58: "ClearSendMail", -- [823] Tercio@58: "ClickSendMailItemButton", -- [824] Tercio@58: "CloseMail", -- [825] Tercio@58: "DeleteInboxItem", -- [826] Tercio@58: "GetCoinIcon", -- [827] Tercio@58: "GetInboxHeaderInfo", -- [828] Tercio@58: "GetInboxItem", -- [829] Tercio@58: "GetInboxItemLink", -- [830] Tercio@58: "GetInboxNumItems", -- [831] Tercio@58: "GetInboxText", -- [832] Tercio@58: "GetInboxInvoiceInfo", -- [833] Tercio@58: "GetNumPackages", -- [834] Tercio@58: "GetNumStationeries", -- [835] Tercio@58: "GetPackageInfo", -- [836] Tercio@58: "GetSelectedStationeryTexture", -- [837] Tercio@58: "GetSendMailCOD", -- [838] Tercio@58: "GetSendMailItem", -- [839] Tercio@58: "GetSendMailItemLink", -- [840] Tercio@58: "GetSendMailMoney", -- [841] Tercio@58: "GetSendMailPrice", -- [842] Tercio@58: "GetStationeryInfo", -- [843] Tercio@58: "HasNewMail", -- [844] Tercio@58: "InboxItemCanDelete", -- [845] Tercio@58: "ReturnInboxItem", -- [846] Tercio@58: "SelectPackage", -- [847] Tercio@58: "SelectStationery", -- [848] Tercio@58: "SendMail", -- [849] Tercio@58: "SetSendMailCOD", -- [850] Tercio@58: "SetSendMailMoney", -- [851] Tercio@58: "TakeInboxItem", -- [852] Tercio@58: "TakeInboxMoney", -- [853] Tercio@58: "TakeInboxTextItem", -- [854] Tercio@58: "ClickLandmark", -- [856] Tercio@58: "GetCorpseMapPosition", -- [857] Tercio@58: "GetCurrentMapContinent", -- [858] Tercio@58: "GetCurrentMapDungeonLevel", -- [859] Tercio@58: "GetNumDungeonMapLevels", -- [860] Tercio@58: "GetCurrentMapAreaID", -- [861] Tercio@58: "GetCurrentMapZone", -- [862] Tercio@58: "GetMapContinents", -- [863] Tercio@58: "GetMapDebugObjectInfo", -- [864] Tercio@58: "GetMapInfo", -- [865] Tercio@58: "GetMapLandmarkInfo", -- [866] Tercio@58: "GetMapOverlayInfo", -- [867] Tercio@58: "GetMapZones", -- [868] Tercio@58: "GetNumMapDebugObjects", -- [869] Tercio@58: "GetNumMapLandmarks", -- [870] Tercio@58: "GetNumMapOverlays", -- [871] Tercio@58: "GetPlayerMapPosition", -- [872] Tercio@58: "ProcessMapClick", -- [873] Tercio@58: "RequestBattlefieldPositions", -- [874] Tercio@58: "SetDungeonMapLevel", -- [875] Tercio@58: "SetMapByID", -- [876] Tercio@58: "SetMapToCurrentZone", -- [877] Tercio@58: "SetMapZoom", -- [878] Tercio@58: "SetupFullscreenScale", -- [879] Tercio@58: "UpdateMapHighlight", -- [880] Tercio@58: "CreateWorldMapArrowFrame", -- [881] Tercio@58: "UpdateWorldMapArrowFrames", -- [882] Tercio@58: "ShowWorldMapArrowFrame", -- [883] Tercio@58: "PositionWorldMapArrowFrame", -- [884] Tercio@58: "ZoomOut", -- [885] Tercio@58: "BuyMerchantItem", -- [887] Tercio@58: "BuybackItem", -- [888] Tercio@58: "CanMerchantRepair", -- [889] Tercio@58: "CloseMerchant", -- [890] Tercio@58: "GetBuybackItemInfo", -- [891] Tercio@58: "GetBuybackItemLink", -- [892] Tercio@58: "GetMerchantItemCostInfo", -- [893] Tercio@58: "GetMerchantItemCostItem", -- [894] Tercio@58: "GetMerchantItemInfo", -- [895] Tercio@58: "GetMerchantItemLink", -- [896] Tercio@58: "GetMerchantItemMaxStack", -- [897] Tercio@58: "GetMerchantNumItems", -- [898] Tercio@58: "GetRepairAllCost", -- [899] Tercio@58: "HideRepairCursor", -- [900] Tercio@58: "InRepairMode", -- [901] Tercio@58: "PickupMerchantItem", -- [902] Tercio@58: "RepairAllItems", -- [903] Tercio@58: "ShowMerchantSellCursor", -- [904] Tercio@58: "ShowRepairCursor", -- [905] Tercio@58: "GetNumBuybackItems", -- [906] Tercio@58: "CastPetAction", -- [908] Tercio@58: "ClosePetStables", -- [909] Tercio@58: "DropItemOnUnit", -- [910] Tercio@58: "GetPetActionCooldown", -- [911] Tercio@58: "GetPetActionInfo", -- [912] Tercio@58: "GetPetActionSlotUsable", -- [913] Tercio@58: "GetPetActionsUsable", -- [914] Tercio@58: "GetPetExperience", -- [915] Tercio@58: "GetPetFoodTypes", -- [916] Tercio@58: "GetPetHappiness", -- [917] Tercio@58: "GetPetIcon", -- [918] Tercio@58: "GetPetTimeRemaining", -- [919] Tercio@58: "GetStablePetFoodTypes", -- [920] Tercio@58: "GetStablePetInfo", -- [921] Tercio@58: "HasPetSpells", -- [922] Tercio@58: "HasPetUI", -- [923] Tercio@58: "PetAbandon", -- [924] Tercio@58: "PetAggressiveMode", -- [925] Tercio@58: "PetAttack", -- [926] Tercio@58: "IsPetAttackActive", -- [927] Tercio@58: "PetStopAttack", -- [928] Tercio@58: "PetCanBeAbandoned", -- [929] Tercio@58: "PetCanBeDismissed", -- [930] Tercio@58: "PetCanBeRenamed", -- [931] Tercio@58: "PetDefensiveMode", -- [932] Tercio@58: "PetDismiss", -- [933] Tercio@58: "PetFollow", -- [934] Tercio@58: "PetHasActionBar", -- [935] Tercio@58: "PetPassiveMode", -- [936] Tercio@58: "PetRename", -- [937] Tercio@58: "PetWait", -- [938] Tercio@58: "PickupPetAction", -- [939] Tercio@58: "PickupStablePet", -- [940] Tercio@58: "SetPetStablePaperdoll", -- [941] Tercio@58: "TogglePetAutocast", -- [942] Tercio@58: "ToggleSpellAutocast", -- [943] Tercio@58: "GetSpellAutocast", -- [944] Tercio@58: "AddQuestWatch", -- [946] Tercio@58: "GetActiveLevel", -- [947] Tercio@58: "GetActiveTitle", -- [948] Tercio@58: "GetAvailableLevel", -- [949] Tercio@58: "GetAvailableTitle", -- [950] Tercio@58: "GetAvailableQuestInfo", -- [951] Tercio@58: "GetGreetingText", -- [952] Tercio@58: "GetNumQuestLeaderBoards", -- [953] Tercio@58: "GetNumQuestWatches", -- [954] Tercio@58: "GetObjectiveText", -- [955] Tercio@58: "GetProgressText", -- [956] Tercio@58: "GetQuestGreenRange", -- [957] Tercio@58: "GetQuestIndexForWatch", -- [958] Tercio@58: "GetQuestLink", -- [959] Tercio@58: "GetQuestLogGroupNum", -- [960] Tercio@58: "GetQuestLogLeaderBoard", -- [961] Tercio@58: "GetQuestLogTitle", -- [962] Tercio@58: "GetQuestReward", -- [963] Tercio@58: "GetRewardArenaPoints", -- [964] Tercio@58: "GetRewardHonor", -- [965] Tercio@58: "GetRewardMoney", -- [966] Tercio@58: "GetRewardSpell", -- [967] Tercio@58: "GetRewardTalents", -- [968] Tercio@58: "GetRewardText", -- [969] Tercio@58: "GetRewardTitle", -- [970] Tercio@58: "GetRewardXP", -- [971] Tercio@58: "IsQuestWatched", -- [972] Tercio@58: "IsUnitOnQuest", -- [973] Tercio@58: "QuestFlagsPVP", -- [974] Tercio@58: "QuestGetAutoAccept", -- [975] Tercio@58: "RemoveQuestWatch", -- [976] Tercio@58: "ShiftQuestWatches", -- [977] Tercio@58: "SortQuestWatches", -- [978] Tercio@58: "QueryQuestsCompleted", -- [979] Tercio@58: "GetQuestsCompleted", -- [980] Tercio@58: "QuestIsDaily", -- [981] Tercio@58: "QuestIsWeekly", -- [982] Tercio@58: "ClearRaidMarker", -- [984] Tercio@58: "ConvertToRaid", -- [985] Tercio@58: "ConvertToParty", -- [986] Tercio@58: "DemoteAssistant", -- [987] Tercio@58: "GetAllowLowLevelRaid", -- [988] Tercio@58: "GetNumRaidMembers", -- [989] Tercio@58: "GetRealNumRaidMembers", -- [990] Tercio@58: "GetPartyAssignment", -- [991] Tercio@58: "GetPartyAssignment", -- [992] Tercio@58: "GetRaidRosterInfo", -- [993] Tercio@58: "GetRaidTargetIndex", -- [994] Tercio@58: "GetReadyCheckStatus", -- [995] Tercio@58: "InitiateRolePoll", -- [996] Tercio@58: "IsRaidLeader", -- [997] Tercio@58: "IsRaidOfficer", -- [998] Tercio@58: "PlaceRaidMarker", -- [999] Tercio@58: "PromoteToAssistant", -- [1000] Tercio@58: "RequestRaidInfo", -- [1001] Tercio@58: "SetPartyAssignment", -- [1002] Tercio@58: "SetAllowLowLevelRaid", -- [1003] Tercio@58: "SetRaidRosterSelection", -- [1004] Tercio@58: "SetRaidSubgroup", -- [1005] Tercio@58: "SwapRaidSubgroup", -- [1006] Tercio@58: "SetRaidTarget", -- [1007] Tercio@58: "UnitInRaid", -- [1008] Tercio@58: "LFGGetDungeonInfoByID", -- [1009] Tercio@58: "GetInstanceLockTimeRemainingEncounter", -- [1010] Tercio@58: "RefreshLFGList", -- [1011] Tercio@58: "SearchLFGGetEncounterResults", -- [1012] Tercio@58: "SearchLFGGetJoinedID", -- [1013] Tercio@58: "SearchLFGGetNumResults", -- [1014] Tercio@58: "SearchLFGGetPartyResults", -- [1015] Tercio@58: "SearchLFGGetResults", -- [1016] Tercio@58: "SearchLFGJoin", -- [1017] Tercio@58: "SearchLFGLeave", -- [1018] Tercio@58: "SearchLFGSort", -- [1019] Tercio@58: "SetLFGComment", -- [1020] Tercio@58: "ClearAllLFGDungeons", -- [1021] Tercio@58: "JoinLFG", -- [1022] Tercio@58: "LeaveLFG", -- [1023] Tercio@58: "RequestLFDPartyLockInfo", -- [1024] Tercio@58: "RequestLFDPlayerLockInfo", -- [1025] Tercio@58: "SetLFGDungeon", -- [1026] Tercio@58: "SetLFGDungeonEnabled", -- [1027] Tercio@58: "SetLFGHeaderCollapsed", -- [1028] Tercio@58: "GetAddOnCPUUsage", -- [1029] Tercio@58: "GetAddOnMemoryUsage", -- [1030] Tercio@58: "GetEventCPUUsage", -- [1031] Tercio@58: "GetFrameCPUUsage", -- [1032] Tercio@58: "GetFunctionCPUUsage", -- [1033] Tercio@58: "GetScriptCPUUsage", -- [1034] Tercio@58: "ResetCPUUsage", -- [1035] Tercio@58: "UpdateAddOnCPUUsage", -- [1036] Tercio@58: "UpdateAddOnMemoryUsage", -- [1037] Tercio@58: "issecure", -- [1038] Tercio@58: "forceinsecure", -- [1039] Tercio@58: "issecurevariable", -- [1040] Tercio@58: "securecall", -- [1041] Tercio@58: "hooksecurefunc", -- [1042] Tercio@58: "InCombatLockdown", -- [1043] Tercio@58: "CombatTextSetActiveUnit", -- [1046] Tercio@58: "DownloadSettings", -- [1047] Tercio@58: "GetCVar", -- [1048] Tercio@58: "GetCVarDefault", -- [1049] Tercio@58: "GetCVarBool", -- [1050] Tercio@58: "GetCVarInfo", -- [1051] Tercio@58: "GetCurrentMultisampleFormat", -- [1052] Tercio@58: "GetCurrentResolution", -- [1053] Tercio@58: "GetGamma", -- [1054] Tercio@58: "GetMultisampleFormats", -- [1055] Tercio@58: "GetRefreshRates", -- [1056] Tercio@58: "GetScreenResolutions", -- [1057] Tercio@58: "GetVideoCaps", -- [1058] Tercio@58: "IsThreatWarningEnabled", -- [1059] Tercio@58: "RegisterCVar", -- [1060] Tercio@58: "ResetPerformanceValues", -- [1061] Tercio@58: "ResetTutorials", -- [1062] Tercio@58: "SetCVar", -- [1063] Tercio@58: "SetEuropeanNumbers", -- [1064] Tercio@58: "SetGamma", -- [1065] Tercio@58: "SetLayoutMode", -- [1066] Tercio@58: "SetMultisampleFormat", -- [1067] Tercio@58: "SetScreenResolution", -- [1068] Tercio@58: "ShowCloak", -- [1069] Tercio@58: "ShowHelm", -- [1070] Tercio@58: "ShowNumericThreat", -- [1071] Tercio@58: "ShowingCloak", -- [1072] Tercio@58: "ShowingHelm", -- [1073] Tercio@58: "UploadSettings", -- [1074] Tercio@58: "AbandonSkill", -- [1076] Tercio@58: "CastShapeshiftForm", -- [1078] Tercio@58: "CastSpell", -- [1079] Tercio@58: "CastSpellByName", -- [1080] Tercio@58: "GetMultiCastTotemSpells", -- [1081] Tercio@58: "GetNumShapeshiftForms", -- [1082] Tercio@58: "GetNumSpellTabs", -- [1083] Tercio@58: "GetShapeshiftForm", -- [1084] Tercio@58: "GetShapeshiftFormCooldown", -- [1085] Tercio@58: "GetShapeshiftFormInfo", -- [1086] Tercio@58: "GetSpellAutocast", -- [1087] Tercio@58: "GetSpellBookItemInfo", -- [1088] Tercio@58: "GetSpellBookItemName", -- [1089] Tercio@58: "GetSpellCooldown", -- [1090] Tercio@58: "GetSpellDescription", -- [1091] Tercio@58: "GetSpellInfo", -- [1092] Tercio@58: "GetSpellLink", -- [1093] Tercio@58: "GetSpellTabInfo", -- [1094] Tercio@58: "GetSpellTexture", -- [1095] Tercio@58: "GetTotemInfo", -- [1096] Tercio@58: "IsAttackSpell", -- [1097] Tercio@58: "IsAutoRepeatSpell", -- [1098] Tercio@58: "IsPassiveSpell", -- [1099] Tercio@58: "IsSpellInRange", -- [1100] Tercio@58: "IsUsableSpell", -- [1101] Tercio@58: "PickupSpell", -- [1102] Tercio@58: "QueryCastSequence", -- [1103] Tercio@58: "SetMultiCastSpell", -- [1104] Tercio@58: "SpellCanTargetUnit", -- [1105] Tercio@58: "SpellHasRange", -- [1106] Tercio@58: "SpellIsTargeting", -- [1107] Tercio@58: "SpellStopCasting", -- [1108] Tercio@58: "SpellStopTargeting", -- [1109] Tercio@58: "SpellTargetUnit", -- [1110] Tercio@58: "ToggleSpellAutocast", -- [1111] Tercio@58: "UnitCastingInfo", -- [1112] Tercio@58: "UnitChannelInfo", -- [1113] Tercio@58: "ConsoleExec", -- [1115] Tercio@58: "DetectWowMouse", -- [1116] Tercio@58: "GetBuildInfo", -- [1117] Tercio@58: "geterrorhandler", -- [1118] Tercio@58: "GetCurrentKeyBoardFocus", -- [1119] Tercio@58: "GetExistingLocales", -- [1120] Tercio@58: "GetFramerate", -- [1121] Tercio@58: "GetGameTime", -- [1122] Tercio@58: "GetLocale", -- [1123] Tercio@58: "GetCursorPosition", -- [1124] Tercio@58: "GetNetStats", -- [1125] Tercio@58: "GetRealmName", -- [1126] Tercio@58: "GetScreenHeight", -- [1127] Tercio@58: "GetScreenWidth", -- [1128] Tercio@58: "GetText", -- [1129] Tercio@58: "GetTime", -- [1130] Tercio@58: "IsAltKeyDown", -- [1131] Tercio@58: "InCinematic", -- [1132] Tercio@58: "IsControlKeyDown", -- [1133] Tercio@58: "IsDebugBuild", -- [1134] Tercio@58: "IsDesaturateSupported", -- [1135] Tercio@58: "IsLeftAltKeyDown", -- [1136] Tercio@58: "IsLeftControlKeyDown", -- [1137] Tercio@58: "IsLeftShiftKeyDown", -- [1138] Tercio@58: "IsLinuxClient", -- [1139] Tercio@58: "IsLoggedIn", -- [1140] Tercio@58: "IsMacClient", -- [1141] Tercio@58: "IsRightAltKeyDown", -- [1142] Tercio@58: "IsRightControlKeyDown", -- [1143] Tercio@58: "IsRightShiftKeyDown", -- [1144] Tercio@58: "IsShiftKeyDown", -- [1145] Tercio@58: "IsStereoVideoAvailable", -- [1146] Tercio@58: "IsWindowsClient", -- [1147] Tercio@58: "OpeningCinematic", -- [1148] Tercio@58: "PlayMusic", -- [1149] Tercio@58: "PlaySound", -- [1150] Tercio@58: "PlaySoundFile", -- [1151] Tercio@58: "ReloadUI", -- [1152] Tercio@58: "RepopMe", -- [1153] Tercio@58: "RequestTimePlayed", -- [1154] Tercio@58: "RestartGx", -- [1155] Tercio@58: "RunScript", -- [1156] Tercio@58: "Screenshot", -- [1157] Tercio@58: "SetAutoDeclineGuildInvites", -- [1158] Tercio@58: "seterrorhandler", -- [1159] Tercio@58: "StopCinematic", -- [1160] Tercio@58: "StopMusic", -- [1161] Tercio@58: "UIParentLoadAddOn", -- [1162] Tercio@58: "TakeScreenshot", -- [1163] Tercio@58: "BuyTrainerService", -- [1168] Tercio@58: "CheckTalentMasterDist", -- [1169] Tercio@58: "ConfirmTalentWipe", -- [1170] Tercio@58: "GetActiveTalentGroup", -- [1171] Tercio@58: "GetNumTalentTabs", -- [1172] Tercio@58: "GetNumTalents", -- [1173] Tercio@58: "GetTalentInfo", -- [1174] Tercio@58: "GetTalentLink", -- [1175] Tercio@58: "GetTalentPrereqs", -- [1176] Tercio@58: "GetTalentTabInfo", -- [1177] Tercio@58: "LearnTalent", -- [1178] Tercio@58: "SetActiveTalentGroup", -- [1179] Tercio@58: "GetNumTalentGroups", -- [1180] Tercio@58: "GetActiveTalentGroup", -- [1181] Tercio@58: "AddPreviewTalentPoints", -- [1182] Tercio@58: "GetGroupPreviewTalentPointsSpent", -- [1183] Tercio@58: "GetPreviewTalentPointsSpent", -- [1184] Tercio@58: "GetUnspentTalentPoints", -- [1185] Tercio@58: "LearnPreviewTalents", -- [1186] Tercio@58: "ResetGroupPreviewTalentPoints", -- [1187] Tercio@58: "ResetPreviewTalentPoints", -- [1188] Tercio@58: "AssistUnit", -- [1190] Tercio@58: "AttackTarget", -- [1191] Tercio@58: "ClearTarget", -- [1192] Tercio@58: "ClickTargetTradeButton", -- [1193] Tercio@58: "TargetLastEnemy", -- [1194] Tercio@58: "TargetLastTarget", -- [1195] Tercio@58: "TargetNearestEnemy", -- [1196] Tercio@58: "TargetNearestEnemyPlayer", -- [1197] Tercio@58: "TargetNearestFriend", -- [1198] Tercio@58: "TargetNearestFriendPlayer", -- [1199] Tercio@58: "TargetNearestPartyMember", -- [1200] Tercio@58: "TargetNearestRaidMember", -- [1201] Tercio@58: "TargetUnit", -- [1202] Tercio@58: "ToggleBackpack", -- [1204] Tercio@58: "ToggleBag", -- [1205] Tercio@58: "ToggleCharacter", -- [1206] Tercio@58: "ToggleFriendsFrame", -- [1207] Tercio@58: "ToggleSpellBook", -- [1208] Tercio@58: "TradeSkill", -- [1209] Tercio@58: "CloseTradeSkill", -- [1210] Tercio@58: "CollapseTradeSkillSubClass", -- [1211] Tercio@58: "PickupPlayerMoney", -- [1212] Tercio@58: "PickupTradeMoney", -- [1213] Tercio@58: "SetTradeMoney", -- [1214] Tercio@58: "ReplaceTradeEnchant", -- [1215] Tercio@58: "AssistUnit", -- [1217] Tercio@58: "CheckInteractDistance", -- [1218] Tercio@58: "DropItemOnUnit", -- [1219] Tercio@58: "FollowUnit", -- [1220] Tercio@58: "FocusUnit", -- [1221] Tercio@58: "ClearFocus", -- [1222] Tercio@58: "GetUnitName", -- [1223] Tercio@58: "GetUnitPitch", -- [1224] Tercio@58: "GetUnitSpeed", -- [1225] Tercio@58: "InviteUnit", -- [1226] Tercio@58: "IsUnitOnQuest", -- [1227] Tercio@58: "SpellCanTargetUnit", -- [1228] Tercio@58: "SpellTargetUnit", -- [1229] Tercio@58: "TargetUnit", -- [1230] Tercio@58: "UnitAffectingCombat", -- [1231] Tercio@58: "UnitArmor", -- [1232] Tercio@58: "UnitAttackBothHands", -- [1233] Tercio@58: "UnitAttackPower", -- [1234] Tercio@58: "UnitAttackSpeed", -- [1235] Tercio@58: "UnitAura", -- [1236] Tercio@58: "UnitBuff", -- [1237] Tercio@58: "UnitCanAssist", -- [1238] Tercio@58: "UnitCanAttack", -- [1239] Tercio@58: "UnitCanCooperate", -- [1240] Tercio@58: "UnitClass", -- [1241] Tercio@58: "UnitClassification", -- [1242] Tercio@58: "UnitCreatureFamily", -- [1243] Tercio@58: "UnitCreatureType", -- [1244] Tercio@58: "UnitDamage", -- [1245] Tercio@58: "UnitDebuff", -- [1246] Tercio@58: "UnitDefense", -- [1247] Tercio@58: "UnitDetailedThreatSituation", -- [1248] Tercio@58: "UnitExists", -- [1249] Tercio@58: "UnitFactionGroup", -- [1250] Tercio@58: "UnitGroupRolesAssigned", -- [1251] Tercio@58: "UnitGUID", -- [1252] Tercio@58: "GetPlayerInfoByGUID", -- [1253] Tercio@58: "UnitHasLFGDeserter", -- [1254] Tercio@58: "UnitHasLFGRandomCooldown", -- [1255] Tercio@58: "UnitHasRelicSlot", -- [1256] Tercio@58: "UnitHealth", -- [1257] Tercio@58: "UnitHealthMax", -- [1258] Tercio@58: "UnitInParty", -- [1259] Tercio@58: "UnitInRaid", -- [1260] Tercio@58: "UnitInBattleground", -- [1261] Tercio@58: "UnitIsInMyGuild", -- [1262] Tercio@58: "UnitInRange", -- [1263] Tercio@58: "UnitIsAFK", -- [1264] Tercio@58: "UnitIsCharmed", -- [1265] Tercio@58: "UnitIsConnected", -- [1266] Tercio@58: "UnitIsCorpse", -- [1267] Tercio@58: "UnitIsDead", -- [1268] Tercio@58: "UnitIsDeadOrGhost", -- [1269] Tercio@58: "UnitIsDND", -- [1270] Tercio@58: "UnitIsEnemy", -- [1271] Tercio@58: "UnitIsFeignDeath", -- [1272] Tercio@58: "UnitIsFriend", -- [1273] Tercio@58: "UnitIsGhost", -- [1274] Tercio@58: "UnitIsPVP", -- [1275] Tercio@58: "UnitIsPVPFreeForAll", -- [1276] Tercio@58: "UnitIsPVPSanctuary", -- [1277] Tercio@58: "UnitIsPartyLeader", -- [1278] Tercio@58: "UnitIsPlayer", -- [1279] Tercio@58: "UnitIsPossessed", -- [1280] Tercio@58: "UnitIsRaidOfficer", -- [1281] Tercio@58: "UnitIsSameServer", -- [1282] Tercio@58: "UnitIsTapped", -- [1283] Tercio@58: "UnitIsTappedByPlayer", -- [1284] Tercio@58: "UnitIsTappedByAllThreatList", -- [1285] Tercio@58: "UnitIsTrivial", -- [1286] Tercio@58: "UnitIsUnit", -- [1287] Tercio@58: "UnitIsVisible", -- [1288] Tercio@58: "UnitLevel", -- [1289] Tercio@58: "UnitMana", -- [1290] Tercio@58: "UnitManaMax", -- [1291] Tercio@58: "UnitName", -- [1292] Tercio@58: "UnitOnTaxi", -- [1293] Tercio@58: "UnitPlayerControlled", -- [1294] Tercio@58: "UnitPlayerOrPetInParty", -- [1295] Tercio@58: "UnitPlayerOrPetInRaid", -- [1296] Tercio@58: "UnitPVPName", -- [1297] Tercio@58: "UnitPVPRank", -- [1298] Tercio@58: "UnitPower", -- [1299] Tercio@58: "UnitPowerMax", -- [1300] Tercio@58: "UnitPowerType", -- [1301] Tercio@58: "UnitRace", -- [1302] Tercio@58: "UnitRangedAttack", -- [1303] Tercio@58: "UnitRangedAttackPower", -- [1304] Tercio@58: "UnitRangedDamage", -- [1305] Tercio@58: "UnitReaction", -- [1306] Tercio@58: "UnitResistance", -- [1307] Tercio@58: "UnitSelectionColor", -- [1308] Tercio@58: "UnitSex", -- [1309] Tercio@58: "UnitStat", -- [1310] Tercio@58: "UnitThreatSituation", -- [1311] Tercio@58: "UnitUsingVehicle", -- [1312] Tercio@58: "GetThreatStatusColor", -- [1313] Tercio@58: "UnitXP", -- [1314] Tercio@58: "UnitXPMax", -- [1315] Tercio@58: "SetPortraitTexture", -- [1316] Tercio@58: "SetPortraitToTexture", -- [1317] Tercio@58: "tinsert", -- [1318] Tercio@58: } Tercio@58: Tercio@58: -- endp