Repository: Zidras/DBM-Warmane Branch: main Commit: d2df10accc07 Files: 1483 Total size: 7.0 MB Directory structure: gitextract_j8cb8plc/ ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ └── feature_request.yml │ └── workflows/ │ └── lint.yml ├── .luacheckrc ├── DBM-AQ20/ │ ├── AQ20Trash.lua │ ├── Ayamiss.lua │ ├── Buru.lua │ ├── DBM-AQ20.toc │ ├── Kurinnaxx.lua │ ├── Moam.lua │ ├── Ossirian.lua │ ├── Rajaxx.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-AQ40/ │ ├── AQ40Trash.lua │ ├── CThun.lua │ ├── DBM-AQ40.toc │ ├── Fankriss.lua │ ├── Huhuran.lua │ ├── Ouro.lua │ ├── Sartura.lua │ ├── Skeram.lua │ ├── ThreeBugs.lua │ ├── TwinEmps.lua │ ├── Viscidus.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Azeroth/ │ ├── Azuregos.lua │ ├── DBM-Azeroth.toc │ ├── Emeriss.lua │ ├── KazzakClassic.lua │ ├── Lethon.lua │ ├── Taerar.lua │ ├── Ysondre.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-BWL/ │ ├── Broodlord.lua │ ├── Chromaggus.lua │ ├── DBM-BWL.toc │ ├── Ebonroc.lua │ ├── Firemaw.lua │ ├── Flamegor.lua │ ├── Nefarian.lua │ ├── Razorgore.lua │ ├── TalonGuards.lua │ ├── Vaelastrasz.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-BlackTemple/ │ ├── Bloodboil.lua │ ├── DBM-BlackTemple.toc │ ├── EssenceOfSouls.lua │ ├── Illidan.lua │ ├── IllidariCouncil.lua │ ├── Najentus.lua │ ├── ShadeOfAkama.lua │ ├── Shahraz.lua │ ├── Supremus.lua │ ├── TeronGorefiend.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-ChamberOfAspects/ │ ├── DBM-ChamberOfAspects.toc │ ├── Obsidian/ │ │ ├── Sartharion.lua │ │ ├── Shadron.lua │ │ ├── Tenebron.lua │ │ └── Vesperon.lua │ ├── Ruby/ │ │ ├── Baltharus.lua │ │ ├── Halion.lua │ │ ├── Saviana.lua │ │ └── Zarithrian.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Coliseum/ │ ├── Anub'arak.lua │ ├── Champions.lua │ ├── DBM-Coliseum.toc │ ├── Jaraxxus.lua │ ├── NorthrendBeasts.lua │ ├── Twins.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Core/ │ ├── DBM-Arrow.lua │ ├── DBM-BossBannerToast.lua │ ├── DBM-BossHealth.lua │ ├── DBM-BossHealth.xml │ ├── DBM-Core.lua │ ├── DBM-Core.toc │ ├── DBM-Flash.lua │ ├── DBM-InfoFrame.lua │ ├── DBM-RangeCheck.lua │ ├── DBM-TimerTracker.lua │ ├── DBM-TimerTracker.xml │ ├── Libs/ │ │ ├── Ace3/ │ │ │ ├── AceAddon-3.0/ │ │ │ │ └── AceAddon-3.0.lua │ │ │ ├── AceComm-3.0/ │ │ │ │ ├── AceComm-3.0.lua │ │ │ │ ├── AceComm-3.0.xml │ │ │ │ └── ChatThrottleLib.lua │ │ │ ├── AceConsole-3.0/ │ │ │ │ └── AceConsole-3.0.lua │ │ │ ├── AceDB-3.0/ │ │ │ │ └── AceDB-3.0.lua │ │ │ ├── AceEvent-3.0/ │ │ │ │ └── AceEvent-3.0.lua │ │ │ ├── AceGUI-3.0/ │ │ │ │ ├── AceGUI-3.0.lua │ │ │ │ ├── AceGUI-3.0.xml │ │ │ │ └── widgets/ │ │ │ │ ├── AceGUIContainer-BlizOptionsGroup.lua │ │ │ │ ├── AceGUIContainer-DropDownGroup.lua │ │ │ │ ├── AceGUIContainer-Frame.lua │ │ │ │ ├── AceGUIContainer-InlineGroup.lua │ │ │ │ ├── AceGUIContainer-ScrollFrame.lua │ │ │ │ ├── AceGUIContainer-SimpleGroup.lua │ │ │ │ ├── AceGUIContainer-TabGroup.lua │ │ │ │ ├── AceGUIContainer-TreeGroup.lua │ │ │ │ ├── AceGUIContainer-Window.lua │ │ │ │ ├── AceGUIWidget-Button.lua │ │ │ │ ├── AceGUIWidget-CheckBox.lua │ │ │ │ ├── AceGUIWidget-ColorPicker.lua │ │ │ │ ├── AceGUIWidget-DropDown-Items.lua │ │ │ │ ├── AceGUIWidget-DropDown.lua │ │ │ │ ├── AceGUIWidget-EditBox.lua │ │ │ │ ├── AceGUIWidget-Heading.lua │ │ │ │ ├── AceGUIWidget-Icon.lua │ │ │ │ ├── AceGUIWidget-InteractiveLabel.lua │ │ │ │ ├── AceGUIWidget-Keybinding.lua │ │ │ │ ├── AceGUIWidget-Label.lua │ │ │ │ ├── AceGUIWidget-MultiLineEditBox.lua │ │ │ │ └── AceGUIWidget-Slider.lua │ │ │ ├── AceHook-3.0/ │ │ │ │ └── AceHook-3.0.lua │ │ │ ├── AceLocale-3.0/ │ │ │ │ └── AceLocale-3.0.lua │ │ │ ├── AceSerializer-3.0/ │ │ │ │ └── AceSerializer-3.0.lua │ │ │ ├── AceTimer-3.0/ │ │ │ │ └── AceTimer-3.0.lua │ │ │ ├── CallbackHandler-1.0/ │ │ │ │ └── CallbackHandler-1.0.lua │ │ │ └── LibStub/ │ │ │ └── LibStub.lua │ │ ├── LibAnim/ │ │ │ └── LibAnim.lua │ │ ├── LibDBIcon-1.0/ │ │ │ └── LibDBIcon-1.0.lua │ │ ├── LibDataBroker-1.1/ │ │ │ └── LibDataBroker-1.1.lua │ │ ├── LibDeflate/ │ │ │ └── LibDeflate.lua │ │ ├── LibDurability/ │ │ │ └── LibDurability.lua │ │ ├── LibGroupTalents-1.0/ │ │ │ └── LibGroupTalents-1.0.lua │ │ ├── LibLatency/ │ │ │ └── LibLatency.lua │ │ ├── LibRangeCheck-2.0/ │ │ │ └── LibRangeCheck-2.0.lua │ │ ├── LibSerialize/ │ │ │ └── LibSerialize.lua │ │ ├── LibSharedMedia-3.0/ │ │ │ └── LibSharedMedia-3.0.lua │ │ ├── LibTalentQuery-1.0/ │ │ │ └── LibTalentQuery-1.0.lua │ │ └── SpecializedAbsorbs-1.0/ │ │ └── SpecializedAbsorbs-1.0.lua │ ├── commonlocal.cn.lua │ ├── commonlocal.de.lua │ ├── commonlocal.en.lua │ ├── commonlocal.es.lua │ ├── commonlocal.fr.lua │ ├── commonlocal.kr.lua │ ├── commonlocal.ru.lua │ ├── commonlocal.tw.lua │ ├── compat.lua │ ├── license.txt │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ ├── localization.tw.lua │ ├── modules/ │ │ ├── Commands.lua │ │ ├── DevTools.lua │ │ ├── Hyperlinks.lua │ │ ├── Icons.lua │ │ ├── MinimapButton.lua │ │ ├── Modules.lua │ │ ├── Notes.lua │ │ ├── Scheduler.lua │ │ ├── Sounds.lua │ │ ├── SpecRole.lua │ │ ├── TargetScanning.lua │ │ ├── UpdateReminder.lua │ │ └── objects/ │ │ └── Localization.lua │ ├── sounds/ │ │ ├── AirHorn.ogg │ │ ├── Alarm.ogg │ │ ├── Anshlun/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── Bear/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── BlakbyrdAlerts/ │ │ │ ├── Alert1.ogg │ │ │ ├── Alert2.ogg │ │ │ └── Alert3.ogg │ │ ├── Corsica/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── Creative Commons Sampling Plus 1.0.txt │ │ ├── Kolt/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── Mosh/ │ │ │ ├── 1.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ └── 5.ogg │ │ ├── Neryssa/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── Pewsey/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── PlayerAbilities/ │ │ │ ├── AuraMastery.ogg │ │ │ ├── Shadowmeld.ogg │ │ │ └── Vanish.ogg │ │ ├── RetailSupport/ │ │ │ ├── UI_RaidBossWhisperWarning.ogg │ │ │ ├── UI_Raid_Boss_Defeated_01.ogg │ │ │ ├── UI_Raid_Loot_Banner_01.ogg │ │ │ ├── VO_703_Illidan_Stormrage_03.ogg │ │ │ ├── VO_801_Bwonsamdi_35_M.ogg │ │ │ ├── VO_801_Bwonsamdi_37_M.ogg │ │ │ ├── VO_801_Bwonsamdi_38_M.ogg │ │ │ ├── VO_801_Bwonsamdi_50_M.ogg │ │ │ ├── VO_801_Scrollsage_Nola_34_F.ogg │ │ │ ├── VO_BH_ALIZABAL_RESET_01.ogg │ │ │ └── VO_DHNightElfMalePissed04.ogg │ │ ├── Smooth/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── SmoothReverb/ │ │ │ ├── 1.ogg │ │ │ ├── 10.ogg │ │ │ ├── 2.ogg │ │ │ ├── 3.ogg │ │ │ ├── 4.ogg │ │ │ ├── 5.ogg │ │ │ ├── 6.ogg │ │ │ ├── 7.ogg │ │ │ ├── 8.ogg │ │ │ └── 9.ogg │ │ ├── SoundClips/ │ │ │ ├── beware.ogg │ │ │ ├── beware_with_reverb.ogg │ │ │ ├── dontdie.ogg │ │ │ └── incredible.ogg │ │ ├── Timer/ │ │ │ ├── TempMono.ogg │ │ │ ├── UI_BattlegroundCountdown_End.ogg │ │ │ └── UI_BattlegroundCountdown_Timer.ogg │ │ ├── Victory/ │ │ │ ├── SmoothMcGroove_Fanfare.ogg │ │ │ └── bbvictory.ogg │ │ ├── alarmclockbeeps.ogg │ │ ├── beware.ogg │ │ ├── blip_8.ogg │ │ └── license info.txt │ └── textures/ │ ├── BossBannerToast/ │ │ ├── BossBanner.blp │ │ └── WhiteIconFrame.blp │ ├── CryptFiendBurrow.blp │ ├── CryptFiendUnBurrow.blp │ ├── GuardTower.blp │ ├── Minimap-Button-Down.blp │ ├── Minimap-Button-Up.blp │ ├── OrcTower.blp │ ├── Spark.blp │ ├── Timer/ │ │ ├── Alliance-Logo.blp │ │ ├── AllianceGlow-Logo.blp │ │ ├── BigTimerNumbers.blp │ │ ├── BigTimerNumbersGlow.blp │ │ ├── Challenges-Logo.blp │ │ ├── ChallengesGlow-Logo.blp │ │ ├── Countdown.blp │ │ ├── Horde-Logo.blp │ │ ├── HordeGlow-Logo.blp │ │ └── Panda-Logo.blp │ ├── alert_circle.blp │ ├── arrows/ │ │ ├── Arrow-UP.blp │ │ ├── Arrow.blp │ │ ├── Arrow.m2 │ │ ├── ArrowLicense.txt │ │ ├── GoldGreenDot.tga │ │ └── MinimapArrow-Green.tga │ ├── blip.tga │ ├── dbm_airhorn.blp │ ├── default.blp │ ├── default.tga │ ├── dot.blp │ ├── glaze.blp │ ├── glaze.tga │ ├── line.blp │ ├── normTex.tga │ ├── normTex2.tga │ ├── otravi.blp │ ├── radar_circle.blp │ ├── smooth.blp │ ├── timer.tga │ └── ui-ej-icons.blp ├── DBM-EyeOfEternity/ │ ├── DBM-EyeOfEternity.toc │ ├── Malygos.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-GUI/ │ ├── DBM-GUI.lua │ ├── DBM-GUI.toc │ ├── DBM-GUI_DropDown.lua │ ├── license.txt │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ ├── localization.tw.lua │ └── modules/ │ ├── ListFrameButtonsPrototype.lua │ ├── MainFrame.lua │ ├── MainFramePrototype.lua │ ├── PanelPrototype.lua │ └── options/ │ ├── alerts/ │ │ ├── Alerts.lua │ │ ├── Announcements.lua │ │ ├── ChatframeMessages.lua │ │ ├── EventSounds.lua │ │ ├── SpecialAnnouncements.lua │ │ └── SpokenAlerts.lua │ ├── filters/ │ │ ├── Filters.lua │ │ ├── GlobalDisables.lua │ │ ├── HandHolding.lua │ │ ├── HideBlizzard.lua │ │ ├── Privacy.lua │ │ ├── RaidLeaderDisable.lua │ │ └── Reduction.lua │ ├── frames/ │ │ ├── BossHealth.lua │ │ ├── Frames.lua │ │ ├── InfoFrame.lua │ │ ├── Nameplate.lua │ │ └── Range.lua │ ├── general/ │ │ ├── Core_GUI.lua │ │ ├── ExtraFeatures.lua │ │ ├── General.lua │ │ └── Profile.lua │ └── timers/ │ ├── Appearance.lua │ ├── Behavior.lua │ ├── ColorbyType.lua │ └── Timers.lua ├── DBM-Gruul/ │ ├── DBM-Gruul.toc │ ├── Gruul.lua │ ├── Maulgar.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Hyjal/ │ ├── Anetheron.lua │ ├── Archimonde.lua │ ├── Azgalor.lua │ ├── DBM-Hyjal.toc │ ├── Kazrogal.lua │ ├── RageWinterchill.lua │ ├── WaveTimers.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Icecrown/ │ ├── DBM-Icecrown.toc │ ├── FrostwingHalls/ │ │ ├── Sindragosa.lua │ │ └── Valithria.lua │ ├── TheCrimsonHall/ │ │ ├── BPCouncil.lua │ │ └── Lanathel.lua │ ├── TheFrozenThrone/ │ │ ├── LichKing.lua │ │ ├── LichKingFrame.lua │ │ └── LichKingFrame.xml │ ├── TheLowerSpire/ │ │ ├── Deathbringer.lua │ │ ├── Deathwhisper.lua │ │ ├── GunshipBattle.lua │ │ └── LordMarrowgar.lua │ ├── ThePlagueworks/ │ │ ├── Festergut.lua │ │ ├── Putricide.lua │ │ └── Rotface.lua │ ├── Trash.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Karazhan/ │ ├── Attumen.lua │ ├── BigBadWolf.lua │ ├── Chess.lua │ ├── Curator.lua │ ├── DBM-Karazhan.toc │ ├── MaidenOfVirtue.lua │ ├── Moroes.lua │ ├── NamedBeasts.lua │ ├── Netherspite.lua │ ├── Nightbane.lua │ ├── PrinceMalchezaar.lua │ ├── RomuloAndJulianne.lua │ ├── ShadeOfAran.lua │ ├── TerestianIllhoof.lua │ ├── WizardOfOz.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-MC/ │ ├── DBM-MC.toc │ ├── Garr.lua │ ├── Geddon.lua │ ├── Gehennas.lua │ ├── Golemagg.lua │ ├── Lucifron.lua │ ├── MCTrash.lua │ ├── Magmadar.lua │ ├── Majordomo.lua │ ├── Ragnaros.lua │ ├── Shazzrah.lua │ ├── Sulfuron.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Magtheridon/ │ ├── DBM-Magtheridon.toc │ ├── Magtheridon.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Naxx/ │ ├── ArachnidQuarter/ │ │ ├── Anub'Rekhan.lua │ │ ├── Faerlina.lua │ │ └── Maexxna.lua │ ├── ConstructQuarter/ │ │ ├── Gluth.lua │ │ ├── Grobbulus.lua │ │ ├── Patchwerk.lua │ │ ├── Textures/ │ │ │ ├── arrow.tga │ │ │ └── lgpl.txt │ │ └── Thaddius.lua │ ├── DBM-Naxx.toc │ ├── FrostwyrmLair/ │ │ ├── Kel'Thuzad.lua │ │ └── Sapphiron.lua │ ├── MilitaryQuarter/ │ │ ├── Gothik.lua │ │ ├── Horsemen.lua │ │ └── Razuvious.lua │ ├── PlagueQuarter/ │ │ ├── Heigan.lua │ │ ├── Loatheb.lua │ │ └── Noth.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Onyxia/ │ ├── DBM-Onyxia.toc │ ├── Onyxia.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ ├── localization.tw.lua │ └── sounds/ │ ├── dps-very-very-slowly.ogg │ ├── hit-it-like-you-mean-it.ogg │ ├── i-dont-see-enough-dots.ogg │ ├── now-hit-it-very-hard-and-fast.ogg │ ├── thats-a-fucking-fifty-dkp-minus.ogg │ ├── throw-more-dots.ogg │ ├── watch-the-tail.ogg │ ├── what-ever-the-fuck-you-do-dont-stand-next-to-other-player.ogg │ └── whelps-left-side-even-side-handle-it.ogg ├── DBM-Outland/ │ ├── DBM-Outland.toc │ ├── Doomwalker.lua │ ├── Kazzak.lua │ ├── Quest.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Party-BC/ │ ├── Auct_Crypts/ │ │ ├── Maladaar.lua │ │ └── Shirrak.lua │ ├── Auct_SethekkHalls/ │ │ ├── Anzu.lua │ │ ├── Ikiss.lua │ │ └── Syth.lua │ ├── Auct_ShadowLabyrinth/ │ │ ├── Hellmaw.lua │ │ ├── Inciter.lua │ │ ├── Murmur.lua │ │ └── Vorpil.lua │ ├── Auct_Tombs/ │ │ ├── AuctTombsTrash.lua │ │ ├── Pandemonius.lua │ │ ├── Shaffar.lua │ │ ├── Tavarok.lua │ │ └── Yor.lua │ ├── CoT_BlackMorass/ │ │ ├── Aeonus.lua │ │ ├── Deja.lua │ │ ├── PortalTimers.lua │ │ └── Temporus.lua │ ├── CoT_OldHillsbrad/ │ │ ├── Drake.lua │ │ ├── EpochHunter.lua │ │ └── Skarloc.lua │ ├── Coil_Slavepens/ │ │ ├── Mennu.lua │ │ ├── Quagmirran.lua │ │ └── Rokmar.lua │ ├── Coil_Steamvault/ │ │ ├── Kalithresh.lua │ │ ├── Steamrigger.lua │ │ └── Thespia.lua │ ├── Coil_Underbog/ │ │ ├── Ghazan.lua │ │ ├── Hungarfen.lua │ │ ├── Muselek.lua │ │ └── Stalker.lua │ ├── DBM-Party-BC.toc │ ├── Hellfire_BloodFurnace/ │ │ ├── Broggok.lua │ │ ├── Keli'dan.lua │ │ └── Maker.lua │ ├── Hellfire_Ramp/ │ │ ├── Gargolmar.lua │ │ ├── Omor.lua │ │ └── Vazruden.lua │ ├── Hellfire_ShatteredHalls/ │ │ ├── Kargath.lua │ │ ├── Nethekurse.lua │ │ ├── O'mrogg.lua │ │ └── Porung.lua │ ├── MagistersTerrace/ │ │ ├── Delrissa.lua │ │ ├── Kael'thas.lua │ │ ├── Selin.lua │ │ └── Vexallus.lua │ ├── TK_Arcatraz/ │ │ ├── Dalliah.lua │ │ ├── Skyriss.lua │ │ ├── Soccothrates.lua │ │ └── Zereketh.lua │ ├── TK_Botanica/ │ │ ├── Freywinn.lua │ │ ├── Laj.lua │ │ ├── Sarannis.lua │ │ ├── Thorngrin.lua │ │ └── WarpSplinter.lua │ ├── TK_Mechanar/ │ │ ├── Capacitus.lua │ │ ├── Gyrokill.lua │ │ ├── Ironhand.lua │ │ ├── Pathaleon.lua │ │ └── Sepethrea.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Party-Classic/ │ ├── BlackfathomDeeps/ │ │ ├── Akumai.lua │ │ ├── Gelihast.lua │ │ ├── GhamooRa.lua │ │ ├── LadySerevess.lua │ │ ├── OldSerrakis.lua │ │ └── TwilightLordKelris.lua │ ├── BlackrockDepths/ │ │ ├── AmbassadorFlamelash.lua │ │ ├── BaelGar.lua │ │ ├── EmperorDagranThaurissan.lua │ │ ├── FineousDarkvire.lua │ │ ├── GeneralAngerforge.lua │ │ ├── Gerstahn.lua │ │ ├── GolemLordArgelmach.lua │ │ ├── HoundmasterGrebmar.lua │ │ ├── HurleyBlackbreath.lua │ │ ├── LordIncendius.lua │ │ ├── LordRoccor.lua │ │ ├── Magmus.lua │ │ ├── Phalanx.lua │ │ ├── PluggerSpazzring.lua │ │ ├── PyromancerLoregrain.lua │ │ ├── RingofLaw.lua │ │ ├── TheSeven.lua │ │ └── WardenStilgiss.lua │ ├── DBM-Party-Classic.toc │ ├── Deadmines/ │ │ ├── CaptainGreenskin.lua │ │ ├── Cookie.lua │ │ ├── EdwinVanCleef.lua │ │ ├── Gilnid.lua │ │ ├── MinerJohnson.lua │ │ ├── MrSmite.lua │ │ ├── RhahkZor.lua │ │ └── SneedsShredder.lua │ ├── DireMaul/ │ │ ├── Alzzin.lua │ │ ├── CaptainKromcrush.lua │ │ ├── ChoRush.lua │ │ ├── GuardFengus.lua │ │ ├── GuardMoldar.lua │ │ ├── GuardSlipkik.lua │ │ ├── Hydrospawn.lua │ │ ├── IllyannaRavenoak.lua │ │ ├── Immolthar.lua │ │ ├── KingGordok.lua │ │ ├── Lethtendris.lua │ │ ├── MagisterKelendris.lua │ │ ├── PrinceTortheldrin.lua │ │ ├── StomperKreeg.lua │ │ ├── TendrisWarpwood.lua │ │ └── ZevrimThornhoof.lua │ ├── Gnomeregan/ │ │ ├── CrowdPummeler.lua │ │ ├── Electrocutioner6000.lua │ │ ├── Grubbis.lua │ │ ├── MekgineerThermaplugg.lua │ │ └── ViscousFallout.lua │ ├── LowerBlackrockSpire/ │ │ ├── Gizrul.lua │ │ ├── Halycon.lua │ │ ├── HighlordOmokk.lua │ │ ├── MotherSmolderweb.lua │ │ ├── OverlordWyrmthalak.lua │ │ ├── QuartermasterZigris.lua │ │ ├── ShadowHunterVoshgajin.lua │ │ ├── UrokDoomhowl.lua │ │ └── WarMasterVoone.lua │ ├── Maraudon/ │ │ ├── CelebrastheCursed.lua │ │ ├── Landslide.lua │ │ ├── LordVyletongue.lua │ │ ├── Noxxion.lua │ │ ├── PrincessTheradras.lua │ │ ├── Razorlash.lua │ │ ├── Rotgrip.lua │ │ └── TinkererGizlock.lua │ ├── RagefireChasm/ │ │ ├── Bazzalan.lua │ │ ├── Jergosh.lua │ │ ├── Oggleflint.lua │ │ └── Taragaman.lua │ ├── RazorfenDowns/ │ │ ├── AmnennartheColdbringer.lua │ │ ├── Glutton.lua │ │ ├── MordreshFireEye.lua │ │ ├── PlaguemawtheRotting.lua │ │ ├── Ragglesnout.lua │ │ └── Tutenkash.lua │ ├── RazorfenKraul/ │ │ ├── AgathelostheRaging.lua │ │ ├── AggemThorncurse.lua │ │ ├── BlindHunter.lua │ │ ├── CharlgaRazorflank.lua │ │ ├── DeathSpeakerJargba.lua │ │ ├── EarthcallerHalmgar.lua │ │ ├── OverlordRamtusk.lua │ │ └── Roogug.lua │ ├── ScarletMonastery/ │ │ ├── ArcanistDoan.lua │ │ ├── BloodmageThalnos.lua │ │ ├── Herod.lua │ │ ├── HighInquisitorFairbanks.lua │ │ ├── HoundmasterLoksey.lua │ │ ├── InterrogatorVishas.lua │ │ └── Mograine_and_Whitemane.lua │ ├── Scholomance/ │ │ ├── DarkmasterGandling.lua │ │ ├── DoctorTheolenKrastinov.lua │ │ ├── InstructorMalicia.lua │ │ ├── JandiceBarov.lua │ │ ├── KirtonostheHerald.lua │ │ ├── LadyIlluciaBarov.lua │ │ ├── LordAlexeiBarov.lua │ │ ├── LorekeeperPolkelt.lua │ │ ├── MardukBlackpool.lua │ │ ├── RasFrostwhisper.lua │ │ ├── Rattlegore.lua │ │ ├── TheRavenian.lua │ │ └── Vectus.lua │ ├── Shadowfangkeep/ │ │ ├── ArchmageArugal.lua │ │ ├── BaronSilverlaine.lua │ │ ├── CommanderSpringvale.lua │ │ ├── DeathswornCaptain.lua │ │ ├── FenrustheDevourer.lua │ │ ├── OdotheBlindwatcher.lua │ │ ├── RazorclawtheButcher.lua │ │ ├── Rethilgore.lua │ │ └── WolfMasterNandos.lua │ ├── StormwindStockaid/ │ │ ├── BazilThredd.lua │ │ ├── BruegalIronknuckle.lua │ │ ├── DextrenWard.lua │ │ ├── Hamhock.lua │ │ ├── KamDeepfury.lua │ │ └── Targorr.lua │ ├── Stratholme/ │ │ ├── Balnazzar.lua │ │ ├── BaronessAnastari.lua │ │ ├── CommanderMalor.lua │ │ ├── HearthsingerForresten.lua │ │ ├── InstructorGalford.lua │ │ ├── LordAuriusRivendare.lua │ │ ├── MagistrateBarthilas.lua │ │ ├── MalekithePallid.lua │ │ ├── Narubenkan.lua │ │ ├── RamsteintheGorger.lua │ │ ├── TheUnforgiven.lua │ │ ├── TimmytheCruel.lua │ │ └── WilleyHopebreaker.lua │ ├── SunkenTemple/ │ │ ├── AvatarofHakkar.lua │ │ ├── Dreamscythe.lua │ │ ├── Hazzas.lua │ │ ├── JammalantheProphet.lua │ │ ├── Morphaz.lua │ │ ├── ShadeofEranikus.lua │ │ └── Weaver.lua │ ├── Uldaman/ │ │ ├── AncientStoneKeeper.lua │ │ ├── Archaedas.lua │ │ ├── GalgannFirehammer.lua │ │ ├── Grimlok.lua │ │ ├── Ironaya.lua │ │ ├── ObsidianSentinel.lua │ │ ├── Revelosh.lua │ │ └── TheLostDwarves.lua │ ├── UpperBlackrockSpire/ │ │ ├── GeneralDrakkisath.lua │ │ ├── GoralukAnvilcrack.lua │ │ ├── JedRunewatcher.lua │ │ ├── PyroguardEmberseer.lua │ │ ├── SolakarFlamewreath.lua │ │ ├── TheBeast.lua │ │ └── WarchiefRendBlackhand.lua │ ├── WailingCaverns/ │ │ ├── DeviateFaerieDragon.lua │ │ ├── Kresh.lua │ │ ├── LadyAnacondra.lua │ │ ├── LordCobrahn.lua │ │ ├── LordPythas.lua │ │ ├── LordSerpentis.lua │ │ ├── MutanustheDevourer.lua │ │ ├── Skum.lua │ │ └── VerantheEverliving.lua │ ├── ZulFarrak/ │ │ ├── Antusul.lua │ │ ├── ChiefUkorzSandscalp.lua │ │ ├── Gahzrilla.lua │ │ ├── HydromancerVelrath.lua │ │ ├── Nekrum_Sezzziz.lua │ │ ├── ThekatheMartyr.lua │ │ └── WitchDoctorZumrah.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Party-WotLK/ │ ├── AhnKahet/ │ │ ├── Amanitar.lua │ │ ├── JedogaShadowseeker.lua │ │ ├── Nadox.lua │ │ ├── Taldaram.lua │ │ └── Volazj.lua │ ├── AzjolNerub/ │ │ ├── Anubarak.lua │ │ ├── Hadronox.lua │ │ └── Krikthir.lua │ ├── DBM-Party-WotLK.toc │ ├── DrakTharon/ │ │ ├── Dred.lua │ │ ├── NovosTheSummoner.lua │ │ ├── ProphetTharonja.lua │ │ └── Trollgore.lua │ ├── ForgeofSouls/ │ │ ├── Bronjahm.lua │ │ └── DevourerofSouls.lua │ ├── Gundrak/ │ │ ├── BloodstoneAnnihilator.lua │ │ ├── Eck.lua │ │ ├── Galdarah.lua │ │ ├── Moorabi.lua │ │ └── Sladran.lua │ ├── HallsOfLightning/ │ │ ├── Bjarngrin.lua │ │ ├── Ionar.lua │ │ ├── Loken.lua │ │ └── Volkhan.lua │ ├── HallsOfStone/ │ │ ├── BrannBronzebeard.lua │ │ ├── Krystallus.lua │ │ ├── MaidenOfGrief.lua │ │ └── SjonnirTheIronshaper.lua │ ├── HallsofReflection/ │ │ ├── Falric.lua │ │ ├── LichKingEvent.lua │ │ ├── Marwyn.lua │ │ └── WaveTimers.lua │ ├── OldStratholme/ │ │ ├── ChronoLordEpoch.lua │ │ ├── MalGanis.lua │ │ ├── Meathook.lua │ │ ├── OldStratholmeWaves.lua │ │ └── SalrammTheFleshCrafter.lua │ ├── PitofSaron/ │ │ ├── ForgemasterGarfrost.lua │ │ ├── Ick.lua │ │ └── ScourgelordTyrannus.lua │ ├── TheNexus/ │ │ ├── Anomalus.lua │ │ ├── Commander.lua │ │ ├── GrandMagusTelestra.lua │ │ ├── Keristrasza.lua │ │ └── OrmorokTheTreeShaper.lua │ ├── TheOculus/ │ │ ├── DrakosTheInterrogator.lua │ │ ├── LeyGuardianEregos.lua │ │ ├── MageLordUrom.lua │ │ └── VarosCloudstrider.lua │ ├── TrialoftheChampion/ │ │ ├── Black_Knight.lua │ │ ├── Champions.lua │ │ ├── Confessor.lua │ │ └── Eadric_the_Pure.lua │ ├── UtgardeKeep/ │ │ ├── ConstructorAndController.lua │ │ ├── IngvarThePlunderer.lua │ │ └── Keleseth.lua │ ├── UtgardePinnacle/ │ │ ├── GortokPalehoof.lua │ │ ├── SkadiTheRuthless.lua │ │ ├── SvalaSorrowgrave.lua │ │ └── Ymiron.lua │ ├── VioletHold/ │ │ ├── Cyanigosa.lua │ │ ├── Erekem.lua │ │ ├── Ichoron.lua │ │ ├── Lavanthor.lua │ │ ├── Moragg.lua │ │ ├── PortalTimers.lua │ │ ├── Xevoss.lua │ │ └── Zuramat.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-PvP/ │ ├── Battlegrounds/ │ │ ├── Alterac.lua │ │ ├── Arathi.lua │ │ ├── EyeOfTheStorm.lua │ │ ├── IsleOfConquest.lua │ │ ├── StrandOfTheAncients.lua │ │ └── Warsong.lua │ ├── DBM-PvP.toc │ ├── PvPGeneral.lua │ ├── Textures/ │ │ └── Spell_Misc_HellifrePVPHonorHoldFavor.blp │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Serpentshrine/ │ ├── DBM-Serpentshrine.toc │ ├── Fathomlord.lua │ ├── Hydross.lua │ ├── Leotheras.lua │ ├── TheLurkerBelow.lua │ ├── Tidewalker.lua │ ├── Vashj.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-SpellTimers/ │ ├── DBM-SpellTimers.toc │ ├── SpellTimers.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-StatusBarTimers/ │ ├── DBM-StatusBarTimers.toc │ ├── DBT.lua │ └── textures/ │ ├── Spark.blp │ └── default.blp ├── DBM-Sunwell/ │ ├── Brutallus.lua │ ├── DBM-Sunwell.toc │ ├── EredarTwins.lua │ ├── Felmyst.lua │ ├── Kalecgos.lua │ ├── KalecgosFrame.lua │ ├── KalecgosFrame.xml │ ├── Kil'jaeden.lua │ ├── M'uru.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-TheEye/ │ ├── Alar.lua │ ├── DBM-TheEye.toc │ ├── KaelThas.lua │ ├── Solarian.lua │ ├── VoidReaver.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-Ulduar/ │ ├── Algalon.lua │ ├── Auriaya.lua │ ├── DBM-Ulduar.toc │ ├── FlameLeviathan.lua │ ├── Freya.lua │ ├── Freya_Elders.lua │ ├── GeneralVezax.lua │ ├── Hodir.lua │ ├── Ignis.lua │ ├── IronCouncil.lua │ ├── Kologarn.lua │ ├── Mimiron.lua │ ├── Razorscale.lua │ ├── Thorim.lua │ ├── XT002.lua │ ├── YoggSaron.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-VPVEM/ │ ├── 1695gorak.ogg │ ├── 1695uktar.ogg │ ├── 1695ukurogg.ogg │ ├── DBM-VPVEM.toc │ ├── Thogar/ │ │ ├── A1.ogg │ │ ├── A14.ogg │ │ ├── A2.ogg │ │ ├── A23.ogg │ │ ├── A3.ogg │ │ ├── A4.ogg │ │ ├── AX.ogg │ │ ├── B1.ogg │ │ ├── B1E4.ogg │ │ ├── B2.ogg │ │ ├── B23.ogg │ │ ├── B2A4.ogg │ │ ├── B2D3.ogg │ │ ├── B3.ogg │ │ ├── B4.ogg │ │ ├── BX.ogg │ │ ├── C1.ogg │ │ ├── C14.ogg │ │ ├── C1D4.ogg │ │ ├── C2.ogg │ │ ├── C3.ogg │ │ ├── C4.ogg │ │ ├── CX.ogg │ │ ├── D1.ogg │ │ ├── D1C4.ogg │ │ ├── D2.ogg │ │ ├── D2B3.ogg │ │ ├── D2C4.ogg │ │ ├── D3.ogg │ │ ├── D4.ogg │ │ ├── DX.ogg │ │ ├── E1.ogg │ │ ├── E1A23.ogg │ │ ├── E2.ogg │ │ ├── E23.ogg │ │ ├── E3.ogg │ │ ├── E4.ogg │ │ └── F.ogg │ ├── aesoon.ogg │ ├── artillery.ogg │ ├── attackblood.ogg │ ├── attackbloodthirster.ogg │ ├── attackcannon.ogg │ ├── attackdeathcaller.ogg │ ├── attackdoomfire.ogg │ ├── attackfelblood.ogg │ ├── attackflesheater.ogg │ ├── attackhulkingterror.ogg │ ├── attackmindfungus.ogg │ ├── attackshield.ogg │ ├── attacksporeshooter.ogg │ ├── attacktank.ogg │ ├── attacktotem.ogg │ ├── attackturret.ogg │ ├── attbomb.ogg │ ├── attleft.ogg │ ├── attmid.ogg │ ├── attright.ogg │ ├── backcenter.ogg │ ├── backleft.ogg │ ├── backright.ogg │ ├── backtowhereyouwere.ogg │ ├── backward.ogg │ ├── bait.ogg │ ├── banishment.ogg │ ├── barrageonway.ogg │ ├── behindboss.ogg │ ├── behindmob.ogg │ ├── bigmob.ogg │ ├── bigmobsoon.ogg │ ├── bitenow.ogg │ ├── bloodfeast.ogg │ ├── bluemushroomcoming.ogg │ ├── bombnow.ogg │ ├── bombrun.ogg │ ├── bombsoon.ogg │ ├── bombyou.ogg │ ├── bossout.ogg │ ├── bosstobeam.ogg │ ├── boundingcleave.ogg │ ├── breakchain.ogg │ ├── breakcoral.ogg │ ├── breaklos.ogg │ ├── breaktormentfirst.ogg │ ├── breaktormentsecond.ogg │ ├── breaktormentthird.ogg │ ├── breakvine.ogg │ ├── breathsoon.ogg │ ├── bringlighttomob.ogg │ ├── bringlighttoshadow.ogg │ ├── carefly.ogg │ ├── catchballs.ogg │ ├── center.ogg │ ├── centerleft.ogg │ ├── centerright.ogg │ ├── chainboss.ogg │ ├── changecolor.ogg │ ├── changemoon.ogg │ ├── changemt.ogg │ ├── changetarget.ogg │ ├── chargemove.ogg │ ├── checkhp.ogg │ ├── cleave.ogg │ ├── cntnuemove.ogg │ ├── com_go.ogg │ ├── count/ │ │ ├── 1.ogg │ │ ├── 10.ogg │ │ ├── 11.ogg │ │ ├── 2.ogg │ │ ├── 3.ogg │ │ ├── 4.ogg │ │ ├── 5.ogg │ │ ├── 6.ogg │ │ ├── 7.ogg │ │ ├── 8.ogg │ │ └── 9.ogg │ ├── crowdcontrol.ogg │ ├── crusher.ogg │ ├── defensive.ogg │ ├── demolisher.ogg │ ├── di.ogg │ ├── didi.ogg │ ├── dispelboss.ogg │ ├── dispelnow.ogg │ ├── dontmove.ogg │ ├── doubleat.ogg │ ├── dpshard.ogg │ ├── dpsmore.ogg │ ├── dpsslow.ogg │ ├── dpsstop.ogg │ ├── dragonnow.ogg │ ├── dshigh.ogg │ ├── east.ogg │ ├── end.ogg │ ├── energyhigh.ogg │ ├── enfeeblingroar.ogg │ ├── engineercoming.ogg │ ├── enrage.ogg │ ├── failed.ogg │ ├── farfromline.ogg │ ├── fearsoon.ogg │ ├── felinfusion.ogg │ ├── findcrab.ogg │ ├── finddragon.ogg │ ├── findflamejet.ogg │ ├── findhunter.ogg │ ├── findmc.ogg │ ├── findshadow.ogg │ ├── findshelter.ogg │ ├── findshield.ogg │ ├── findwolf.ogg │ ├── firecallercoming.ogg │ ├── firecircle.ogg │ ├── firerun.ogg │ ├── firewall.ogg │ ├── flamebelcher.ogg │ ├── flamejet.ogg │ ├── flamessoon.ogg │ ├── focusedchaosyou.ogg │ ├── forcenovacoming.ogg │ ├── frenzy.ogg │ ├── frontcenter.ogg │ ├── frontleft.ogg │ ├── frontright.ogg │ ├── frost.ogg │ ├── gather.ogg │ ├── gatheritem.ogg │ ├── gathershare.ogg │ ├── getboned.ogg │ ├── getinyellowrunes.ogg │ ├── getupwind.ogg │ ├── ghostsoon.ogg │ ├── giftofearth.ogg │ ├── greenmushroomcoming.ogg │ ├── group1.ogg │ ├── group2.ogg │ ├── group3.ogg │ ├── group4.ogg │ ├── group5.ogg │ ├── harmonic.ogg │ ├── healall.ogg │ ├── healfull.ogg │ ├── helpdispel.ogg │ ├── helpkick.ogg │ ├── helpme.ogg │ ├── helpme2.ogg │ ├── helpsoak.ogg │ ├── helpspirit.ogg │ ├── holdit.ogg │ ├── iceorbmove.ogg │ ├── incomingdebuff.ogg │ ├── inhalegetinpuddle.ogg │ ├── inktoshark.ogg │ ├── interruptbyeye.ogg │ ├── interruptingshout.ogg │ ├── interruptsoon.ogg │ ├── jumpinpit.ogg │ ├── jumpnow.ogg │ ├── justrun.ogg │ ├── keepjump.ogg │ ├── keepmove.ogg │ ├── kick1r.ogg │ ├── kick2r.ogg │ ├── kick3r.ogg │ ├── kick4r.ogg │ ├── kick5r.ogg │ ├── kickcast.ogg │ ├── killbigmob.ogg │ ├── killmine.ogg │ ├── killmob.ogg │ ├── killspirit.ogg │ ├── laserrun.ogg │ ├── leavecenter.ogg │ ├── leavemind.ogg │ ├── left.ogg │ ├── license.txt │ ├── lightinfusion.ogg │ ├── lightstorm.ogg │ ├── lineapart.ogg │ ├── linegather.ogg │ ├── linesoon.ogg │ ├── lowsanity.ogg │ ├── markedfordeath.ogg │ ├── mblue.ogg │ ├── melodic.ogg │ ├── meteorrun.ogg │ ├── mgreen.ogg │ ├── mm1.ogg │ ├── mm2.ogg │ ├── mm3.ogg │ ├── mm4.ogg │ ├── mm5.ogg │ ├── mm6.ogg │ ├── mm7.ogg │ ├── mm8.ogg │ ├── mobenough.ogg │ ├── mobkill.ogg │ ├── mobout.ogg │ ├── mobsoon.ogg │ ├── morange.ogg │ ├── moveboss.ogg │ ├── movecenter.ogg │ ├── moveleft.ogg │ ├── movemelee.ogg │ ├── moveright.ogg │ ├── movesoon.ogg │ ├── movetimebubble.ogg │ ├── movetoboss.ogg │ ├── movetojelly.ogg │ ├── movetomobs.ogg │ ├── movetopillar.ogg │ ├── movetotank.ogg │ ├── mpurple.ogg │ ├── myellow.ogg │ ├── negative.ogg │ ├── newmatrix.ogg │ ├── newportal.ogg │ ├── nextphasesoon.ogg │ ├── north.ogg │ ├── northeast.ogg │ ├── northwest.ogg │ ├── orbrun.ogg │ ├── otherin.ogg │ ├── otherout.ogg │ ├── pfive.ogg │ ├── pfour.ogg │ ├── phasechange.ogg │ ├── polarityshift.ogg │ ├── pone.ogg │ ├── positive.ogg │ ├── pthree.ogg │ ├── ptran.ogg │ ├── ptwo.ogg │ ├── pullin.ogg │ ├── pulverize.ogg │ ├── pushbackincoming.ogg │ ├── quake.ogg │ ├── range5.ogg │ ├── readyrescue.ogg │ ├── right.ogg │ ├── runaway.ogg │ ├── runbehindadd.ogg │ ├── runin.ogg │ ├── runintofire.ogg │ ├── runout.ogg │ ├── runoverflowers.ogg │ ├── runtoedge.ogg │ ├── safenow.ogg │ ├── scatter.ogg │ ├── scattersoon.ogg │ ├── securityguardcoming.ogg │ ├── shadowrun.ogg │ ├── shareone.ogg │ ├── sharetwo.ogg │ ├── shieldcharge.ogg │ ├── shieldover.ogg │ ├── shockwave.ogg │ ├── silencesoon.ogg │ ├── slagelementalcoming.ogg │ ├── soulcleave.ogg │ ├── south.ogg │ ├── southeast.ogg │ ├── southwest.ogg │ ├── spear.ogg │ ├── specialsoon.ogg │ ├── speedup.ogg │ ├── stackhigh.ogg │ ├── stepring.ogg │ ├── stilldanger.ogg │ ├── stompsoon.ogg │ ├── stompstart.ogg │ ├── stopatk.ogg │ ├── stopattack.ogg │ ├── stopcast.ogg │ ├── stopmove.ogg │ ├── stunsoon.ogg │ ├── sunderhigh.ogg │ ├── swapsoon.ogg │ ├── switchphase.ogg │ ├── takedamage.ogg │ ├── tankheal.ogg │ ├── targetchange.ogg │ ├── targetyou.ogg │ ├── tauntboss.ogg │ ├── telesoon.ogg │ ├── teleyou.ogg │ ├── thanks.ogg │ ├── throweyedebuff.ogg │ ├── throweyehealer.ogg │ ├── throweyetank.ogg │ ├── tosscoming.ogg │ ├── tossonyou.ogg │ ├── touchwhiteshrooms.ogg │ ├── toxic.ogg │ ├── trannow.ogg │ ├── transplague.ogg │ ├── transporter.ogg │ ├── turnaway.ogg │ ├── useextraaction.ogg │ ├── useitem.ogg │ ├── uu.ogg │ ├── watchfeet.ogg │ ├── watchimpale.ogg │ ├── watchorb.ogg │ ├── watchstep.ogg │ ├── watchwave.ogg │ ├── west.ogg │ ├── whirlwind.ogg │ ├── wroughtchaosyou.ogg │ └── wwsoon.ogg ├── DBM-VanillaNaxx/ │ ├── ArachnidQuarter/ │ │ ├── Anub'Rekhan.lua │ │ ├── Faerlina.lua │ │ └── Maexxna.lua │ ├── ConstructQuarter/ │ │ ├── Gluth.lua │ │ ├── Grobbulus.lua │ │ ├── Patchwerk.lua │ │ ├── Textures/ │ │ │ ├── arrow.tga │ │ │ └── lgpl.txt │ │ └── Thaddius.lua │ ├── DBM-VanillaNaxx.toc │ ├── FrostwyrmLair/ │ │ ├── Kel'Thuzad.lua │ │ └── Sapphiron.lua │ ├── MilitaryQuarter/ │ │ ├── Gothik.lua │ │ ├── Horsemen.lua │ │ └── Razuvious.lua │ ├── PlagueQuarter/ │ │ ├── Heigan.lua │ │ ├── Loatheb.lua │ │ └── Noth.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-VanillaOnyxia/ │ ├── DBM-VanillaOnyxia.toc │ ├── Onyxia.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ ├── localization.tw.lua │ └── sounds/ │ ├── dps-very-very-slowly.ogg │ ├── hit-it-like-you-mean-it.ogg │ ├── i-dont-see-enough-dots.ogg │ ├── now-hit-it-very-hard-and-fast.ogg │ ├── thats-a-fucking-fifty-dkp-minus.ogg │ ├── throw-more-dots.ogg │ ├── watch-the-tail.ogg │ ├── what-ever-the-fuck-you-do-dont-stand-next-to-other-player.ogg │ └── whelps-left-side-even-side-handle-it.ogg ├── DBM-VoA/ │ ├── Archavon.lua │ ├── DBM-VoA.toc │ ├── Emalon.lua │ ├── Koralon.lua │ ├── Toravon.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-WorldEvents/ │ ├── DBM-WorldEvents.toc │ ├── Holidays/ │ │ ├── Ahune.lua │ │ ├── ApothecaryTrio.lua │ │ ├── CorenDirebrew.lua │ │ └── HeadlessHorseman.lua │ ├── WarmaneEvents/ │ │ └── TowerDefense.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-ZG/ │ ├── Arlokk.lua │ ├── Bloodlord.lua │ ├── DBM-ZG.toc │ ├── EdgeOfMadness.lua │ ├── Gahzranka.lua │ ├── Hakkar.lua │ ├── Jeklik.lua │ ├── Jindo.lua │ ├── Marli.lua │ ├── Thekal.lua │ ├── Venoxis.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.mx.lua │ ├── localization.ru.lua │ └── localization.tw.lua ├── DBM-ZulAman/ │ ├── Akil'zon.lua │ ├── DBM-ZulAman.toc │ ├── Halazzi.lua │ ├── Jan'alai.lua │ ├── Malacrass.lua │ ├── Nalorakk.lua │ ├── Zul'jin.lua │ ├── localization.cn.lua │ ├── localization.de.lua │ ├── localization.en.lua │ ├── localization.es.lua │ ├── localization.fr.lua │ ├── localization.kr.lua │ ├── localization.ru.lua │ └── localization.tw.lua └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .editorconfig ================================================ root = true [*] indent_style = tab indent_size = 4 charset = utf-8 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true [*.{lua,xml,toc,luacheckrc}] indent_style = tab tab_width = 4 [*/Libraries/**.{lua,xml,toc}] trim_trailing_whitespace = false insert_final_newline = none [*.{yml,gitattributes,gitignore}] indent_style = space indent_size = 2 ================================================ FILE: .gitattributes ================================================ .github export-ignore .gitattributes export-ignore .gitignore export-ignore .luacheckrc export-ignore .travis.yml export-ignore .editorconfig export-ignore *ISSUE_TEMPLATE.md export-ignore *readme.md export-ignore *README.md export-ignore * text=auto # GitHub .github text .gitattributes text *.md text # Source files *.lua text *.xml text *.toc text # Fonts *.ttf binary # Sounds *.ogg binary *.mp3 binary *.wav binary # Textures *.blp binary *.tga binary ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: ["https://streamelements.com/the_zidras/tip", "https://paypal.me/zidras"] ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.yml ================================================ name: 🐞 Bug Report description: File a bug report title: "[BUG] " labels: [bug] body: - type: checkboxes attributes: label: Are you using the latest DBM version in a Warmane 3.3.5a realm (Icecrown, Lordaeron or Frostmourne)? options: - label: "Yes" required: true - type: input attributes: label: DBM version description: "`/dbm ver` to check your DBM version (including the time and date)." placeholder: "DBM 9.2.26 alpha (2023/01/19 21:42:43)" validations: required: true - type: textarea attributes: label: Current Behavior description: A concise description of what you're experiencing. validations: required: true - type: textarea attributes: label: Expected Behavior description: A concise description of what you expected to happen. validations: required: true - type: textarea attributes: label: Steps To Reproduce description: Steps to reproduce the behavior. placeholder: | 1. Go to... 2. With this config... 3. Click on '...' 4. See error... validations: required: true - type: textarea attributes: label: Transcriptor log description: If bug is related to a raid mechanic/timer, attaching a Transcriptor log is mandatory (https://github.com/Zidras/Transcriptor-WOTLK#how-to-use). Otherwise, type "NA" validations: required: true - type: textarea attributes: label: Anything else? description: | Links? References? Streams? Anything that will give me more context about the issue you are encountering! Tip: You can attach images or video files by clicking this area to highlight it and then dragging files in. validations: required: false - type: textarea attributes: label: Error log description: | If you received a Lua error, then please post it below. Tip: Make sure you have Lua errors enabled by typing in chat the following commands once: `/console scriptErrors 1` and reload. render: lua validations: required: false ================================================ FILE: .github/ISSUE_TEMPLATE/config.yml ================================================ blank_issues_enabled: false contact_links: - name: Discord url: https://discord.gg/CyVWDWS about: | - Please check frequently asked questions first on #dbm-faq channel. - For usecase questions, there is also a dedicated #dbm-support channel. - Github issues are ONLY for bug reports and feature requests. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.yml ================================================ --- name: Feature request description: Suggest an idea for this project title: "[REQUEST] " labels: enhancement body: - type: textarea attributes: label: Is your feature request related to a problem? Please describe. description: A clear and concise description of what the problem is. placeholder: I'm always frustrated when [...] validations: required: true - type: textarea attributes: label: Desired solution description: Describe the solution you'd like placeholder: Show an announcement when X ability triggers validations: required: true - type: textarea attributes: label: Describe alternatives you've considered description: A clear and concise description of any alternative solutions or features you've considered or seen elsewhere placeholder: I saw a Weakaura doing X validations: required: false - type: textarea attributes: label: Anything else? description: | Links? References? Streams? Anything that will give me more context about the issue you are encountering! Tip: You can attach images or video files by clicking this area to highlight it and then dragging files in. validations: required: false ================================================ FILE: .github/workflows/lint.yml ================================================ name: lint on: push: paths: - '.github/workflows/**.yml' - '**.lua' pull_request: paths: - '**.lua' jobs: lint: runs-on: ubuntu-latest env: LUA_VERSION: 5.1.5 LUAROCKS_VERSION: 3.11.1 steps: - name: Checkout uses: actions/checkout@v4 - name: Cache Lua uses: actions/cache@v4 id: luacache with: path: .lua key: ${{ runner.os }}-lua-${{ env.LUA_VERSION }} restore-keys: ${{ runner.os }}-lua-${{ env.LUA_VERSION }} - name: Cache LuaRocks uses: actions/cache@v4 id: luarockscache with: path: .luarocks key: ${{ runner.os }}-luarocks-${{ env.LUAROCKS_VERSION }} restore-keys: ${{ runner.os }}-luarocks-${{ env.LUAROCKS_VERSION }} - name: Install Lua if: steps.luacache.outputs.cache-hit != 'true' run: | sudo apt-get install libreadline-dev libncurses-dev wget https://www.lua.org/ftp/lua-${{ env.LUA_VERSION }}.tar.gz -O - | tar -xzf - cd lua-${{ env.LUA_VERSION }} make linux make -j INSTALL_TOP=$GITHUB_WORKSPACE/.lua install rm -rf $GITHUB_WORKSPACE/lua-${{ env.LUA_VERSION }} - name: Install LuaRocks and Luacheck if: steps.luarockscache.outputs.cache-hit != 'true' run: | wget https://luarocks.org/releases/luarocks-${{ env.LUAROCKS_VERSION }}.tar.gz -O - | tar -xzf - cd luarocks-${{ env.LUAROCKS_VERSION }} ./configure --with-lua-bin=$GITHUB_WORKSPACE/.lua/bin --prefix=$GITHUB_WORKSPACE/.luarocks make build make install PATH=$PATH:$GITHUB_WORKSPACE/.luarocks/bin luarocks install luacheck luarocks install lanes rm -rf $GITHUB_WORKSPACE/luarocks-${{ env.LUAROCKS_VERSION }} - name: Luacheck run: .luarocks/bin/luacheck . -q ================================================ FILE: .luacheckrc ================================================ std = "lua51c" codes = true ranges = true quiet = 1 cache = false max_line_length = false max_code_line_length = false max_string_line_length = false max_comment_line_length = false exclude_files = { "./.git", "./.github", "./.lua", "./.luarocks", "**/Libs/**/*.lua", "**/Libs/**/**/*.lua", ".luacheckrc" } ignore = { "11./SLASH_.*", -- Setting an undefined (Slash handler) global variable "11./BINDING_.*", -- Setting an undefined (Keybinding header) global variable "211/L", -- Unused local variable "L" "212/self", -- Unused argument "43.", -- Shadowing an upvalue, an upvalue argument, an upvalue loop variable. "542", -- An empty if branch } globals = { -- Saved Variables "DBM_SavedOptions", "DBM_AllSavedOptions", "DBM_MinimapIcon", "DBM_UsedProfile", "DBM_UseDualProfile", "DBM_CharSavedRevision", "DBM_SpellTimers_Settings", "DBT_AllPersistentOptions", -- DBM "DBM", "DBM_CORE_L", "DBM_COMMON_L", "DBM_DISABLE_ZONE_DETECTION", "DBMExtraGlobal", "DBM_GUI", "DBM_GUI_L", "DBM_OPTION_SPACER", "DBM_SpellsUsed_Translations", "DBT", "TT", "BossBanner", -- DBM mod frames "DBMLichKingFrameDrag", "DBMLichKingFrameDragTitle", "DBMKalFrameDrag", "DBMKalFrameDragTitle", "_G", "bit", "Recount", "Skada", -- misc custom "CUSTOM_CLASS_COLORS", "LibStub", "BigWigs", "ElvUI", "BigBrother", "Transcriptor", "KuiNameplates", "aura_env", "WeakAuras", "WeakAurasSaved", "TidyPlatesThreatDBM", "Plater", "FlashWindow", "LOCALE_koKR", "LOCALE_ruRU", "LOCALE_zhCN", "LOCALE_zhTW", -- frames created via CreateFrame "AlwaysUpFrame1", "AlwaysUpFrame2", "AlwaysUpFrame1Text", "AlwaysUpFrame2Text", "AlwaysUpFrame2DynamicIconButton", "AlwaysUpFrame3DynamicIconButton", "AchievementFrameMiniAchievement1", "DeclensionFrame", "DeclensionFrameCancelButton", "DeclensionFrameOkayButton", "DeclensionFrameSetNext", "DeclensionFrameSetPrev", -- Awesome WotLK "C_NamePlate", -- Lua Std "assert", "bit.arshift", "bit.band", "bit.bnot", "bit.bor", "bit.bxor", "bit.lshift", "bit.rshift", "collectgarbage", "coroutine.create", "coroutine.resume", "coroutine.running", "coroutine.status", "coroutine.wrap", "coroutine.yield", "error", "gcinfo", "getfenv", "getmetatable", "ipairs", "loadstring", "math.abs", "math.acos", "math.asin", "math.atan", "math.atan2", "math.ceil", "math.cos", "math.cosh", "math.deg", "math.exp", "math.floor", "math.fmod", "math.frexp", "math.ldexp", "math.log", "math.log10", "math.max", "math.min", "math.modf", "math.pow", "math.rad", "math.random", "math.sin", "math.sinh", "math.sqrt", "math.tan", "math.tanh", "newproxy", "next", "pairs", "pcall", "print", "rawequal", "rawget", "rawset", "select", "setfenv", "setmetatable", "string.byte", "string.char", "string.dump", "string.find", "string.format", "string.gmatch", "string.gsub", "string.len", "string.lower", "string.match", "string.rep", "string.reverse", "string.sub", "string.upper", "table.concat", "table.foreach", "table.foreachi", "table.getn", "table.insert", "table.maxn", "table.remove", "table.sort", "tonumber", "tostring", "type", "unpack", "xpcall", -- WOW Lua "abs", "acos", "asin", "atan", "atan2", "bit.mod", "ceil", "cos", "date", "debugbreak", "debugdump", "debughook", "debuginfo", "debugload", "debuglocals", "debugprint", "debugprofilestart", "debugprofilestop", "debugstack", "debugtimestamp", "deg", "difftime", "exp", "floor", "forceinsecure", "foreach", "foreachi", "format", "frexp", "geterrorhandler", "getglobal", "getn", "getprinthandler", "gmatch", "gsub", "hooksecurefunc", "issecure", "issecurevariable", "ldexp", "log", "log10", "max", "message", "min", "mod", "rad", "random", "rtable.concat", "rtable.insert", "rtable.ipairs", "rtable.maxn", "rtable.newtable", "rtable.next", "rtable.pairs", "rtable.remove", "rtable.sort", "rtable.type", "rtable.unpack", "rtable.wipe", "scrub", "securecall", "seterrorhandler", "setglobal", "setprinthandler", "sin", "sort", "sqrt", "strbyte", "strchar", "strconcat", "strfind", "string.gfind", "string.join", "string.replace", "string.rtgsub", "string.split", "string.trim", "strjoin", "strlen", "strlenutf8", "strlower", "strmatch", "strrep", "strreplace", "strrev", "strsplit", "strsub", "strtrim", "strupper", "tContains", "tDeleteItem", "table.removemulti", "table.setn", "table.wipe", "tan", "time", "tinsert", "tostringall", "tremove", "updateContainerFrameAnchors", "wipe", -- WoW globalstrings "ABANDON_PET", "ABANDON_QUEST", "ABANDON_QUEST_ABBREV", "ABANDON_QUEST_CONFIRM", "ABANDON_QUEST_CONFIRM_WITH_ITEMS", "ABILITIES", "ABSORB", "ABSORB_TRAILER", "ACCEPT", "ACCEPT_ALT", "ACCEPT_COMMENT", "ACHIEVEMENT", "ACHIEVEMENTFRAME_FILTER_ALL", "ACHIEVEMENTFRAME_FILTER_COMPLETED", "ACHIEVEMENTFRAME_FILTER_INCOMPLETE", "ACHIEVEMENTS", "ACHIEVEMENTS_COMPLETED", "ACHIEVEMENTS_COMPLETED_CATEGORY", "ACHIEVEMENT_BROADCAST", "ACHIEVEMENT_BROADCAST_SELF", "ACHIEVEMENT_BUTTON", "ACHIEVEMENT_CATEGORY_PROGRESS", "ACHIEVEMENT_META_COMPLETED_DATE", "ACHIEVEMENT_SUMMARY_CATEGORY", "ACHIEVEMENT_TITLE", "ACHIEVEMENT_TOOLTIP_COMPLETE", "ACHIEVEMENT_TOOLTIP_IN_PROGRESS", "ACHIEVEMENT_UNLOCKED", "ACHIEVEMENT_UNLOCKED_CHAT_MSG", "ACHIEVEMENT_WATCH_TOO_MANY", "ACTIONBARS_LABEL", "ACTIONBARS_SUBTEXT", "ACTIONBAR_LABEL", "ACTION_DAMAGE_SHIELD", "ACTION_DAMAGE_SHIELD_FULL_TEXT", "ACTION_DAMAGE_SHIELD_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED", "ACTION_DAMAGE_SHIELD_MISSED_BLOCK", "ACTION_DAMAGE_SHIELD_MISSED_BLOCK_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_BLOCK_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_BLOCK_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_DEFLECT", "ACTION_DAMAGE_SHIELD_MISSED_DEFLECT_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_DEFLECT_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_DEFLECT_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_DODGE", "ACTION_DAMAGE_SHIELD_MISSED_DODGE_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_DODGE_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_DODGE_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_EVADED", "ACTION_DAMAGE_SHIELD_MISSED_EVADED_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_EVADED_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_EVADED_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_IMMUNE", "ACTION_DAMAGE_SHIELD_MISSED_IMMUNE_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_IMMUNE_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_IMMUNE_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_MISS", "ACTION_DAMAGE_SHIELD_MISSED_MISS_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_MISS_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_MISS_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_PARRY", "ACTION_DAMAGE_SHIELD_MISSED_PARRY_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_PARRY_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_PARRY_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_POSSESSIVE", "ACTION_DAMAGE_SHIELD_MISSED_RESIST", "ACTION_DAMAGE_SHIELD_MISSED_RESIST_FULL_TEXT", "ACTION_DAMAGE_SHIELD_MISSED_RESIST_FULL_TEXT_NO_SOURCE", "ACTION_DAMAGE_SHIELD_MISSED_RESIST_POSSESSIVE", "ACTION_DAMAGE_SHIELD_POSSESSIVE", "ACTION_DAMAGE_SPLIT", "ACTION_DAMAGE_SPLIT_ABSORBED_FULL_TEXT", "ACTION_DAMAGE_SPLIT_FULL_TEXT", "ACTION_DAMAGE_SPLIT_POSSESSIVE", "ACTION_DAMAGE_SPLIT_RESULT_FULL_TEXT", "ACTION_ENCHANT_APPLIED", "ACTION_ENCHANT_APPLIED_FULL_TEXT", "ACTION_ENCHANT_APPLIED_POSSESSIVE", "ACTION_ENCHANT_REMOVED", "ACTION_ENCHANT_REMOVED_FULL_TEXT", "ACTION_ENCHANT_REMOVED_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE", "ACTION_ENVIRONMENTAL_DAMAGE_DROWNING", "ACTION_ENVIRONMENTAL_DAMAGE_DROWNING_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_DROWNING_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_FALLING", "ACTION_ENVIRONMENTAL_DAMAGE_FALLING_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_FALLING_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_FATIGUE", "ACTION_ENVIRONMENTAL_DAMAGE_FATIGUE_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_FATIGUE_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_FIRE", "ACTION_ENVIRONMENTAL_DAMAGE_FIRE_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_FIRE_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_LAVA", "ACTION_ENVIRONMENTAL_DAMAGE_LAVA_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_LAVA_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_POSSESSIVE", "ACTION_ENVIRONMENTAL_DAMAGE_SLIME", "ACTION_ENVIRONMENTAL_DAMAGE_SLIME_FULL_TEXT", "ACTION_ENVIRONMENTAL_DAMAGE_SLIME_POSSESSIVE", "ACTION_PARTY_KILL", "ACTION_PARTY_KILL_FULL_TEXT", "ACTION_PARTY_KILL_POSSESSIVE", "ACTION_RANGED", "ACTION_RANGE_DAMAGE", "ACTION_RANGE_DAMAGE_FULL_TEXT", "ACTION_RANGE_DAMAGE_FULL_TEXT_NO_SOURCE", "ACTION_RANGE_DAMAGE_POSSESSIVE", "ACTION_RANGE_MISSED", "ACTION_RANGE_MISSED_ABSORB", "ACTION_RANGE_MISSED_ABSORB_FULL_TEXT", "ACTION_RANGE_MISSED_ABSORB_POSSESSIVE", "ACTION_RANGE_MISSED_BLOCK", "ACTION_RANGE_MISSED_BLOCK_FULL_TEXT", "ACTION_RANGE_MISSED_BLOCK_POSSESSIVE", "ACTION_RANGE_MISSED_DEFLECT", "ACTION_RANGE_MISSED_DEFLECT_FULL_TEXT", "ACTION_RANGE_MISSED_DEFLECT_POSSESSIVE", "ACTION_RANGE_MISSED_DODGE", "ACTION_RANGE_MISSED_DODGE_FULL_TEXT", "ACTION_RANGE_MISSED_DODGE_POSSESSIVE", "ACTION_RANGE_MISSED_EVADE", "ACTION_RANGE_MISSED_EVADE_FULL_TEXT", "ACTION_RANGE_MISSED_EVADE_POSSESSIVE", "ACTION_RANGE_MISSED_FULL_TEXT", "ACTION_RANGE_MISSED_IMMUNE", "ACTION_RANGE_MISSED_IMMUNE_FULL_TEXT", "ACTION_RANGE_MISSED_IMMUNE_POSSESSIVE", "ACTION_RANGE_MISSED_MISS", "ACTION_RANGE_MISSED_MISS_FULL_TEXT", "ACTION_RANGE_MISSED_MISS_POSSESSIVE", "ACTION_RANGE_MISSED_PARRY", "ACTION_RANGE_MISSED_PARRY_FULL_TEXT", "ACTION_RANGE_MISSED_PARRY_POSSESSIVE", "ACTION_RANGE_MISSED_POSSESSIVE", "ACTION_RANGE_MISSED_RESIST", "ACTION_RANGE_MISSED_RESIST_FULL_TEXT", "ACTION_RANGE_MISSED_RESIST_POSSESSIVE", "ACTION_SPELL_AURA_APPLIED", "ACTION_SPELL_AURA_APPLIED_BUFF", "ACTION_SPELL_AURA_APPLIED_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_APPLIED_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_APPLIED_BUFF_MASTER", "ACTION_SPELL_AURA_APPLIED_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_APPLIED_DEBUFF", "ACTION_SPELL_AURA_APPLIED_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_APPLIED_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_APPLIED_DEBUFF_MASTER", "ACTION_SPELL_AURA_APPLIED_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_APPLIED_DOSE", "ACTION_SPELL_AURA_APPLIED_DOSE_BUFF", "ACTION_SPELL_AURA_APPLIED_DOSE_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_APPLIED_DOSE_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_APPLIED_DOSE_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_APPLIED_DOSE_DEBUFF", "ACTION_SPELL_AURA_APPLIED_DOSE_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_APPLIED_DOSE_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_APPLIED_DOSE_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_APPLIED_MASTER", "ACTION_SPELL_AURA_APPLIED_POSSESSIVE", "ACTION_SPELL_AURA_BROKEN", "ACTION_SPELL_AURA_BROKEN_BUFF", "ACTION_SPELL_AURA_BROKEN_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_BROKEN_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_BROKEN_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_BROKEN_DEBUFF", "ACTION_SPELL_AURA_BROKEN_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_BROKEN_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_BROKEN_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_BROKEN_SPELL_BUFF", "ACTION_SPELL_AURA_BROKEN_SPELL_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_BROKEN_SPELL_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_BROKEN_SPELL_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_BROKEN_SPELL_DEBUFF", "ACTION_SPELL_AURA_BROKEN_SPELL_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_BROKEN_SPELL_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_BROKEN_SPELL_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_REFRESH", "ACTION_SPELL_AURA_REFRESH_BUFF", "ACTION_SPELL_AURA_REFRESH_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_REFRESH_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REFRESH_BUFF_MASTER", "ACTION_SPELL_AURA_REFRESH_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_REFRESH_DEBUFF", "ACTION_SPELL_AURA_REFRESH_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_REFRESH_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REFRESH_DEBUFF_MASTER", "ACTION_SPELL_AURA_REFRESH_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_REFRESH_MASTER", "ACTION_SPELL_AURA_REMOVED", "ACTION_SPELL_AURA_REMOVED_BUFF", "ACTION_SPELL_AURA_REMOVED_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_REMOVED_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REMOVED_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_REMOVED_DEBUFF", "ACTION_SPELL_AURA_REMOVED_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_REMOVED_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REMOVED_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_REMOVED_DOSE", "ACTION_SPELL_AURA_REMOVED_DOSE_BUFF", "ACTION_SPELL_AURA_REMOVED_DOSE_BUFF_FULL_TEXT", "ACTION_SPELL_AURA_REMOVED_DOSE_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REMOVED_DOSE_BUFF_POSSESSIVE", "ACTION_SPELL_AURA_REMOVED_DOSE_DEBUFF", "ACTION_SPELL_AURA_REMOVED_DOSE_DEBUFF_FULL_TEXT", "ACTION_SPELL_AURA_REMOVED_DOSE_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REMOVED_DOSE_DEBUFF_POSSESSIVE", "ACTION_SPELL_AURA_REMOVED_FULL_TEXT", "ACTION_SPELL_AURA_REMOVED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_AURA_REMOVED_POSSESSIVE", "ACTION_SPELL_BUILDING_DAMAGE", "ACTION_SPELL_BUILDING_DAMAGE_FULL_TEXT", "ACTION_SPELL_BUILDING_DAMAGE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_BUILDING_DAMAGE_MASTER", "ACTION_SPELL_BUILDING_DAMAGE_POSSESSIVE", "ACTION_SPELL_BUILDING_HEAL", "ACTION_SPELL_BUILDING_HEAL_FULL_TEXT", "ACTION_SPELL_BUILDING_HEAL_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_BUILDING_HEAL_POSSESSIVE", "ACTION_SPELL_CAST_FAILED", "ACTION_SPELL_CAST_FAILED_FULL_TEXT", "ACTION_SPELL_CAST_FAILED_MASTER", "ACTION_SPELL_CAST_FAILED_POSSESSIVE", "ACTION_SPELL_CAST_START", "ACTION_SPELL_CAST_START_FULL_TEXT", "ACTION_SPELL_CAST_START_FULL_TEXT_NO_DEST", "ACTION_SPELL_CAST_START_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_CAST_START_MASTER", "ACTION_SPELL_CAST_START_POSSESSIVE", "ACTION_SPELL_CAST_SUCCESS", "ACTION_SPELL_CAST_SUCCESS_FULL_TEXT", "ACTION_SPELL_CAST_SUCCESS_FULL_TEXT_NO_DEST", "ACTION_SPELL_CAST_SUCCESS_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_CAST_SUCCESS_MASTER", "ACTION_SPELL_CAST_SUCCESS_POSSESSIVE", "ACTION_SPELL_CREATE", "ACTION_SPELL_CREATE_FULL_TEXT", "ACTION_SPELL_CREATE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_CREATE_POSSESSIVE", "ACTION_SPELL_DAMAGE", "ACTION_SPELL_DAMAGE_FULL_TEXT", "ACTION_SPELL_DAMAGE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_DAMAGE_MASTER", "ACTION_SPELL_DAMAGE_POSSESSIVE", "ACTION_SPELL_DISPEL", "ACTION_SPELL_DISPEL_BUFF", "ACTION_SPELL_DISPEL_BUFF_FULL_TEXT", "ACTION_SPELL_DISPEL_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_DISPEL_BUFF_POSSESSIVE", "ACTION_SPELL_DISPEL_DEBUFF", "ACTION_SPELL_DISPEL_DEBUFF_FULL_TEXT", "ACTION_SPELL_DISPEL_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_DISPEL_DEBUFF_POSSESSIVE", "ACTION_SPELL_DISPEL_FAILED", "ACTION_SPELL_DISPEL_FAILED_FULL_TEXT", "ACTION_SPELL_DISPEL_FAILED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_DISPEL_FAILED_POSSESSIVE", "ACTION_SPELL_DISPEL_POSSESSIVE", "ACTION_SPELL_DRAIN", "ACTION_SPELL_DRAIN_FULL_TEXT", "ACTION_SPELL_DRAIN_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_DRAIN_POSSESSIVE", "ACTION_SPELL_DURABILITY_DAMAGE", "ACTION_SPELL_DURABILITY_DAMAGE_ALL", "ACTION_SPELL_DURABILITY_DAMAGE_ALL_FULL_TEXT", "ACTION_SPELL_DURABILITY_DAMAGE_ALL_POSSESSIVE", "ACTION_SPELL_DURABILITY_DAMAGE_FULL_TEXT", "ACTION_SPELL_DURABILITY_DAMAGE_POSSESSIVE", "ACTION_SPELL_ENERGIZE", "ACTION_SPELL_ENERGIZE_FULL_TEXT", "ACTION_SPELL_ENERGIZE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_ENERGIZE_POSSESSIVE", "ACTION_SPELL_ENERGIZE_RESULT", "ACTION_SPELL_EXTRA_ATTACKS", "ACTION_SPELL_EXTRA_ATTACKS_FULL_TEXT", "ACTION_SPELL_EXTRA_ATTACKS_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_EXTRA_ATTACKS_POSSESSIVE", "ACTION_SPELL_HEAL", "ACTION_SPELL_HEAL_FULL_TEXT", "ACTION_SPELL_HEAL_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_HEAL_POSSESSIVE", "ACTION_SPELL_INSTAKILL", "ACTION_SPELL_INSTAKILL_FULL_TEXT", "ACTION_SPELL_INSTAKILL_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_INSTAKILL_POSSESSIVE", "ACTION_SPELL_INTERRUPT", "ACTION_SPELL_INTERRUPT_FULL_TEXT", "ACTION_SPELL_INTERRUPT_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_INTERRUPT_POSSESSIVE", "ACTION_SPELL_LEECH", "ACTION_SPELL_LEECH_FULL_TEXT", "ACTION_SPELL_LEECH_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_LEECH_POSSESSIVE", "ACTION_SPELL_LEECH_RESULT", "ACTION_SPELL_MISSED", "ACTION_SPELL_MISSED_ABSORB", "ACTION_SPELL_MISSED_ABSORB_FULL_TEXT", "ACTION_SPELL_MISSED_ABSORB_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_ABSORB_POSSESSIVE", "ACTION_SPELL_MISSED_BLOCK", "ACTION_SPELL_MISSED_BLOCK_FULL_TEXT", "ACTION_SPELL_MISSED_BLOCK_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_BLOCK_POSSESSIVE", "ACTION_SPELL_MISSED_DEFLECT", "ACTION_SPELL_MISSED_DEFLECT_FULL_TEXT", "ACTION_SPELL_MISSED_DEFLECT_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_DEFLECT_POSSESSIVE", "ACTION_SPELL_MISSED_DODGE", "ACTION_SPELL_MISSED_DODGE_FULL_TEXT", "ACTION_SPELL_MISSED_DODGE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_DODGE_POSSESSIVE", "ACTION_SPELL_MISSED_EVADE", "ACTION_SPELL_MISSED_EVADE_FULL_TEXT", "ACTION_SPELL_MISSED_EVADE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_EVADE_POSSESSIVE", "ACTION_SPELL_MISSED_FULL_TEXT", "ACTION_SPELL_MISSED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_IMMUNE", "ACTION_SPELL_MISSED_IMMUNE_FULL_TEXT", "ACTION_SPELL_MISSED_IMMUNE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_MISS", "ACTION_SPELL_MISSED_MISS_FULL_TEXT", "ACTION_SPELL_MISSED_MISS_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_MISS_POSSESSIVE", "ACTION_SPELL_MISSED_PARRY", "ACTION_SPELL_MISSED_PARRY_FULL_TEXT", "ACTION_SPELL_MISSED_PARRY_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_PARRY_POSSESSIVE", "ACTION_SPELL_MISSED_POSSESSIVE", "ACTION_SPELL_MISSED_REFLECT", "ACTION_SPELL_MISSED_REFLECT_FULL_TEXT", "ACTION_SPELL_MISSED_REFLECT_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_RESIST", "ACTION_SPELL_MISSED_RESIST_FULL_TEXT", "ACTION_SPELL_MISSED_RESIST_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_MISSED_RESIST_POSSESSIVE", "ACTION_SPELL_PERIODIC_DAMAGE", "ACTION_SPELL_PERIODIC_DAMAGE_FULL_TEXT", "ACTION_SPELL_PERIODIC_DAMAGE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_DAMAGE_POSSESSIVE", "ACTION_SPELL_PERIODIC_DRAIN", "ACTION_SPELL_PERIODIC_DRAIN_FULL_TEXT", "ACTION_SPELL_PERIODIC_DRAIN_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_DRAIN_POSSESSIVE", "ACTION_SPELL_PERIODIC_ENERGIZE", "ACTION_SPELL_PERIODIC_ENERGIZE_FULL_TEXT", "ACTION_SPELL_PERIODIC_ENERGIZE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_ENERGIZE_POSSESSIVE", "ACTION_SPELL_PERIODIC_ENERGIZE_RESULT", "ACTION_SPELL_PERIODIC_HEAL", "ACTION_SPELL_PERIODIC_HEAL_FULL_TEXT", "ACTION_SPELL_PERIODIC_HEAL_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_HEAL_POSSESSIVE", "ACTION_SPELL_PERIODIC_LEECH", "ACTION_SPELL_PERIODIC_LEECH_FULL_TEXT", "ACTION_SPELL_PERIODIC_LEECH_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_LEECH_POSSESSIVE", "ACTION_SPELL_PERIODIC_LEECH_RESULT", "ACTION_SPELL_PERIODIC_MISSED", "ACTION_SPELL_PERIODIC_MISSED_ABSORB", "ACTION_SPELL_PERIODIC_MISSED_ABSORB_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_ABSORB_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_ABSORB_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_BLOCK", "ACTION_SPELL_PERIODIC_MISSED_BLOCK_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_BLOCK_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_BLOCK_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_DEFLECTED", "ACTION_SPELL_PERIODIC_MISSED_DEFLECTED_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_DEFLECTED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_DEFLECTED_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_DODGE", "ACTION_SPELL_PERIODIC_MISSED_DODGE_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_DODGE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_DODGE_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_EVADED", "ACTION_SPELL_PERIODIC_MISSED_EVADED_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_EVADED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_EVADED_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_IMMUNE", "ACTION_SPELL_PERIODIC_MISSED_IMMUNE_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_IMMUNE_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_IMMUNE_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_MISS", "ACTION_SPELL_PERIODIC_MISSED_MISS_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_MISS_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_MISS_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_PARRY", "ACTION_SPELL_PERIODIC_MISSED_PARRY_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_PARRY_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_PARRY_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_POSSESSIVE", "ACTION_SPELL_PERIODIC_MISSED_RESIST", "ACTION_SPELL_PERIODIC_MISSED_RESIST_FULL_TEXT", "ACTION_SPELL_PERIODIC_MISSED_RESIST_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_PERIODIC_MISSED_RESIST_POSSESSIVE", "ACTION_SPELL_RESURRECT", "ACTION_SPELL_RESURRECT_FULL_TEXT", "ACTION_SPELL_RESURRECT_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_RESURRECT_POSSESSIVE", "ACTION_SPELL_STOLEN", "ACTION_SPELL_STOLEN_BUFF", "ACTION_SPELL_STOLEN_BUFF_FULL_TEXT", "ACTION_SPELL_STOLEN_BUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_STOLEN_BUFF_POSSESSIVE", "ACTION_SPELL_STOLEN_BUFF__POSSESSIVE", "ACTION_SPELL_STOLEN_DEBUFF", "ACTION_SPELL_STOLEN_DEBUFF_FULL_TEXT", "ACTION_SPELL_STOLEN_DEBUFF_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_STOLEN_DEBUFF_POSSESSIVE", "ACTION_SPELL_STOLEN_FULL_TEXT", "ACTION_SPELL_STOLEN_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_STOLEN_POSSESSIVE", "ACTION_SPELL_SUMMON", "ACTION_SPELL_SUMMON_FULL_TEXT", "ACTION_SPELL_SUMMON_FULL_TEXT_NO_SOURCE", "ACTION_SPELL_SUMMON_POSSESSIVE", "ACTION_SWING", "ACTION_SWING_DAMAGE", "ACTION_SWING_DAMAGE_FULL_TEXT", "ACTION_SWING_DAMAGE_FULL_TEXT_NO_SOURCE", "ACTION_SWING_DAMAGE_POSSESSIVE", "ACTION_SWING_MISSED", "ACTION_SWING_MISSED_ABSORB", "ACTION_SWING_MISSED_ABSORB_FULL_TEXT", "ACTION_SWING_MISSED_ABSORB_POSSESSIVE", "ACTION_SWING_MISSED_BLOCK", "ACTION_SWING_MISSED_BLOCK_FULL_TEXT", "ACTION_SWING_MISSED_BLOCK_POSSESSIVE", "ACTION_SWING_MISSED_DEFLECT", "ACTION_SWING_MISSED_DEFLECT_FULL_TEXT", "ACTION_SWING_MISSED_DEFLECT_POSSESSIVE", "ACTION_SWING_MISSED_DODGE", "ACTION_SWING_MISSED_DODGE_FULL_TEXT", "ACTION_SWING_MISSED_DODGE_POSSESSIVE", "ACTION_SWING_MISSED_EVADE", "ACTION_SWING_MISSED_EVADE_FULL_TEXT", "ACTION_SWING_MISSED_EVADE_POSSESSIVE", "ACTION_SWING_MISSED_FULL_TEXT", "ACTION_SWING_MISSED_IMMUNE", "ACTION_SWING_MISSED_IMMUNE_FULL_TEXT", "ACTION_SWING_MISSED_IMMUNE_POSSESSIVE", "ACTION_SWING_MISSED_MISS", "ACTION_SWING_MISSED_MISS_FULL_TEXT", "ACTION_SWING_MISSED_MISS_POSSESSIVE", "ACTION_SWING_MISSED_PARRY", "ACTION_SWING_MISSED_PARRY_FULL_TEXT", "ACTION_SWING_MISSED_PARRY_POSSESSIVE", "ACTION_SWING_MISSED_POSSESSIVE", "ACTION_SWING_MISSED_RESIST", "ACTION_SWING_MISSED_RESIST_FULL_TEXT", "ACTION_SWING_MISSED_RESIST_POSSESSIVE", "ACTION_UNIT_DESTROYED", "ACTION_UNIT_DESTROYED_FULL_TEXT", "ACTION_UNIT_DESTROYED_POSSESSIVE", "ACTION_UNIT_DIED", "ACTION_UNIT_DIED_FULL_TEXT", "ACTION_UNIT_DIED_POSSESSIVE", "ACTION_UNIT_DISSIPATES", "ACTION_UNIT_DISSIPATES_FULL_TEXT", "ACTION_UNIT_DISSIPATES_POSSESSIVE", "ACTIVATE", "ADD", "ADDITIONAL_COMMENTS", "ADDITIONAL_FILTERS", "ADDMEMBER", "ADDMEMBER_TEAM", "ADDONS", "ADDON_ACTION_FORBIDDEN", "ADDON_BANNED", "ADDON_CORRUPT", "ADDON_DEMAND_LOADED", "ADDON_DEP_BANNED", "ADDON_DEP_CORRUPT", "ADDON_DEP_DEMAND_LOADED", "ADDON_DEP_DISABLED", "ADDON_DEP_INCOMPATIBLE", "ADDON_DEP_INSECURE", "ADDON_DEP_INTERFACE_VERSION", "ADDON_DEP_MISSING", "ADDON_DISABLED", "ADDON_INCOMPATIBLE", "ADDON_INSECURE", "ADDON_INTERFACE_VERSION", "ADDON_LOAD_FAILED", "ADDON_MEM_KB_ABBR", "ADDON_MEM_MB_ABBR", "ADDON_MISSING", "ADDON_UNKNOWN_ERROR", "ADD_ANOTHER", "ADD_CHANNEL", "ADD_CHAT_CHANNEL", "ADD_FILTER", "ADD_FRIEND", "ADD_FRIEND_LABEL", "ADD_GUILDMEMBER_LABEL", "ADD_GUILDRANK_LABEL", "ADD_IGNORE_LABEL", "ADD_MUTE_LABEL", "ADD_RAIDMEMBER_LABEL", "ADD_RAID_MEMBER", "ADD_TEAMMEMBER_LABEL", "ADVANCED_OBJECTIVES_TEXT", "ADVANCED_OPTIONS", "ADVANCED_OPTIONS_TOOLTIP", "ADVANCED_WATCHFRAME_OPTION_ENABLE_INTERRUPT", "ADVANCED_WORLD_MAP_TEXT", "AFK", "AGGRO_WARNING_DISPLAY", "AGGRO_WARNING_IN_INSTANCE", "AGGRO_WARNING_IN_PARTY", "AGI", "AGILITY_COLON", "AGILITY_TOOLTIP", "AIM_DOWN", "AIM_UP", "ALL", "ALLIED", "ALL_BOSSES_ALIVE", "ALL_INVENTORY_SLOTS", "ALL_SETTINGS", "ALL_SUBCLASSES", "ALREADY_BOUND", "ALREADY_LEARNED", "ALT_KEY", "ALWAYS", "ALWAYS_SHOW_MULTIBARS_TEXT", "AMBIENCE_VOLUME", "AMMOSLOT", "AMMO_DAMAGE_TEMPLATE", "AMMO_SCHOOL_DAMAGE_TEMPLATE", "AMOUNT_PAID_COLON", "AMOUNT_RECEIVED_COLON", "AMOUNT_TO_SEND", "ANIMATION", "ANISOTROPIC", "APPEARANCE_LABEL", "APPEARANCE_SUBTEXT", "APPLY", "AREA_SPIRIT_HEAL", "ARENA", "ARENA_BANNER_VENDOR_GREETING", "ARENA_BATTLES", "ARENA_CASUAL", "ARENA_CHARTER_PURCHASE", "ARENA_CHARTER_TEMPLATE", "ARENA_CHARTER_TURN_IN", "ARENA_COMPLETE_MESSAGE", "ARENA_MASTER_NO_SEASON_TEXT", "ARENA_MASTER_TEXT", "ARENA_OFF_SEASON_TEXT", "ARENA_PETITION_LEADER_INSTRUCTIONS", "ARENA_PETITION_MEMBER_INSTRUCTIONS", "ARENA_POINTS", "ARENA_PRACTICE_BATTLE", "ARENA_RATED", "ARENA_RATED_BATTLE", "ARENA_RATED_MATCH", "ARENA_REGISTRAR_PURCHASE_TEXT", "ARENA_SPECTATOR", "ARENA_TEAM", "ARENA_TEAM_2V2", "ARENA_TEAM_3V3", "ARENA_TEAM_5V5", "ARENA_TEAM_CAPTAIN", "ARENA_TEAM_INVITATION", "ARENA_TEAM_LEAD_IN", "ARENA_TEAM_RATING", "ARENA_THIS_SEASON", "ARENA_THIS_SEASON_TOGGLE", "ARENA_THIS_WEEK", "ARENA_THIS_WEEK_TOGGLE", "ARMOR", "ARMOR_TEMPLATE", "ARMOR_TOOLTIP", "ASSEMBLING_GROUP", "ASSIGNED_COLON", "ASSIST_ATTACK", "ATTACHMENT_TEXT", "ATTACK", "ATTACK_COLON", "ATTACK_POWER", "ATTACK_POWER_TOOLTIP", "ATTACK_SPEED", "ATTACK_SPEED_SECONDS", "ATTACK_SPEED_TOOLTIP1", "ATTACK_TOOLTIP", "ATTACK_TOOLTIP_SUBTEXT", "AT_WAR", "AUCTIONS", "AUCTION_BUYOUT_ERROR", "AUCTION_CREATING", "AUCTION_CREATOR", "AUCTION_DURATION", "AUCTION_DURATION_ERROR", "AUCTION_DURATION_ONE", "AUCTION_DURATION_THREE", "AUCTION_DURATION_TWO", "AUCTION_EXPIRED_MAIL_SUBJECT", "AUCTION_HOUSE_CUT_COLON", "AUCTION_INVOICE_FUNDS_DELAY", "AUCTION_INVOICE_FUNDS_NOT_YET_SENT", "AUCTION_INVOICE_MAIL_SUBJECT", "AUCTION_INVOICE_PENDING_FUNDS_COLON", "AUCTION_ITEM", "AUCTION_ITEM_INCOMING_AMOUNT", "AUCTION_ITEM_SOLD", "AUCTION_ITEM_TEXT", "AUCTION_ITEM_TIME_UNTIL_DELIVERY", "AUCTION_NUM_STACKS", "AUCTION_OUTBID_MAIL_SUBJECT", "AUCTION_PRICE", "AUCTION_PRICE_PER_ITEM", "AUCTION_PRICE_PER_STACK", "AUCTION_REMOVED_MAIL_SUBJECT", "AUCTION_SOLD_MAIL_SUBJECT", "AUCTION_STACK_SIZE", "AUCTION_TIME_LEFT1", "AUCTION_TIME_LEFT1_DETAIL", "AUCTION_TIME_LEFT2", "AUCTION_TIME_LEFT2_DETAIL", "AUCTION_TIME_LEFT3", "AUCTION_TIME_LEFT3_DETAIL", "AUCTION_TIME_LEFT4", "AUCTION_TIME_LEFT4_DETAIL", "AUCTION_TITLE", "AUCTION_TOOLTIP_BID_PREFIX", "AUCTION_TOOLTIP_BUYOUT_PREFIX", "AUCTION_WON_MAIL_SUBJECT", "AURAS", "AURAS_COMBATLOG_TOOLTIP", "AURA_END", "AUTOFOLLOWSTART", "AUTOFOLLOWSTOP", "AUTOFOLLOWSTOPCOMBAT", "AUTO_ADD_DISABLED_GROUPED_TOOLTIP", "AUTO_ADD_DISABLED_QUEUED_TOOLTIP", "AUTO_ADD_MEMBERS", "AUTO_ADD_TOOLTIP", "AUTO_DISMOUNT_FLYING_TEXT", "AUTO_FOLLOW_SPEED", "AUTO_JOIN", "AUTO_JOIN_DISABLED_TOOLTIP", "AUTO_JOIN_GUILD_CHANNEL", "AUTO_JOIN_TOOLTIP", "AUTO_JOIN_VOICE", "AUTO_LOOT_DEFAULT_TEXT", "AUTO_LOOT_KEY_TEXT", "AUTO_QUEST_PROGRESS_TEXT", "AUTO_QUEST_WATCH_TEXT", "AUTO_RANGED_COMBAT_TEXT", "AUTO_SELF_CAST_KEY_TEXT", "AUTO_SELF_CAST_TEXT", "AVAILABLE", "AVAILABLE_QUESTS", "AVAILABLE_SERVICES", "AVERAGE_WAIT_TIME", "A_RANDOM_DUNGEON", "BACK", "BACKGROUND", "BACKPACK_TOOLTIP", "BACKSLOT", "BAGSLOT", "BAGSLOTTEXT", "BAGS_ONLY", "BANKSLOTPURCHASE", "BANKSLOTPURCHASE_LABEL", "BANK_BAG", "BANK_BAG_PURCHASE", "BARBERSHOP", "BASIC_OPTIONS_TOOLTIP", "BATTLEFIELDMINIMAP_OPACITY_LABEL", "BATTLEFIELDMINIMAP_OPTIONS_LABEL", "BATTLEFIELDS", "BATTLEFIELD_ALERT", "BATTLEFIELD_CONFIRM_STATUS", "BATTLEFIELD_FULL", "BATTLEFIELD_GROUP_JOIN", "BATTLEFIELD_IN_BATTLEFIELD", "BATTLEFIELD_IN_QUEUE", "BATTLEFIELD_IN_QUEUE_SIMPLE", "BATTLEFIELD_JOIN", "BATTLEFIELD_LEVEL", "BATTLEFIELD_MINIMAP", "BATTLEFIELD_MINIMAP_SHOW_ALWAYS", "BATTLEFIELD_MINIMAP_SHOW_BATTLEGROUNDS", "BATTLEFIELD_MINIMAP_SHOW_NEVER", "BATTLEFIELD_NAME", "BATTLEFIELD_QUEUE_CONFIRM", "BATTLEFIELD_QUEUE_CONFIRM_SIMPLE", "BATTLEFIELD_QUEUE_PENDING_REMOVAL", "BATTLEFIELD_QUEUE_STATUS", "BATTLEGROUND", "BATTLEGROUNDS", "BATTLEGROUND_COMPLETE_MESSAGE", "BATTLEGROUND_HOLIDAY", "BATTLEGROUND_HOLIDAY_EXPLANATION", "BATTLEGROUND_INSTANCE", "BATTLEGROUND_INSTANCE_TOOLTIP", "BATTLEGROUND_LEADER", "BATTLEGROUND_MESSAGE", "BATTLEGROUND_REQUIRED_LEVEL_TOOLTIP", "BATTLEGROUND_SILENCE", "BATTLEGROUND_UNSILENCE", "BATTLENET_FRIEND", "BATTLENET_FRIEND_INFO", "BATTLENET_FRIEND_LABEL", "BATTLENET_NAME_FORMAT", "BATTLENET_OPTIONS_LABEL", "BATTLENET_OPTIONS_SUBTEXT", "BATTLENET_UNAVAILABLE", "BATTLENET_UNAVAILABLE_ALERT", "BENCHMARK_TAXI_AVERAGE_FPS", "BENCHMARK_TAXI_MAX_FPS", "BENCHMARK_TAXI_MIN_FPS", "BENCHMARK_TAXI_MODE_OFF", "BENCHMARK_TAXI_MODE_ON", "BENCHMARK_TAXI_RESULTS", "BENCHMARK_TAXI_TOTAL_TIME", "BENEFICIAL", "BENEFICIAL_AURA_COMBATLOG_TOOLTIP", "BF_NOT_IN", "BG_SYSTEM_ALLIANCE", "BG_SYSTEM_HORDE", "BG_SYSTEM_NEUTRAL", "BID", "BIDS", "BID_AUCTION_CONFIRMATION", "BID_STATUS", "BILLING_NAG_DIALOG", "BILLING_NAG_WARNING", "BINDING_HEADER_ACTIONBAR", "BINDING_HEADER_BLANK", "BINDING_HEADER_CAMERA", "BINDING_HEADER_CHAT", "BINDING_HEADER_INTERFACE", "BINDING_HEADER_ITUNES_REMOTE", "BINDING_HEADER_MISC", "BINDING_HEADER_MOVEMENT", "BINDING_HEADER_MOVIE_RECORDING_SECTION", "BINDING_HEADER_MULTIACTIONBAR", "BINDING_HEADER_MULTICASTFUNCTIONS", "BINDING_HEADER_RAID_TARGET", "BINDING_HEADER_TARGETING", "BINDING_HEADER_VEHICLE", "BINDING_HEADER_VOICE_CHAT", "BINDING_NAME_ACTIONBUTTON1", "BINDING_NAME_ACTIONBUTTON10", "BINDING_NAME_ACTIONBUTTON11", "BINDING_NAME_ACTIONBUTTON12", "BINDING_NAME_ACTIONBUTTON2", "BINDING_NAME_ACTIONBUTTON3", "BINDING_NAME_ACTIONBUTTON4", "BINDING_NAME_ACTIONBUTTON5", "BINDING_NAME_ACTIONBUTTON6", "BINDING_NAME_ACTIONBUTTON7", "BINDING_NAME_ACTIONBUTTON8", "BINDING_NAME_ACTIONBUTTON9", "BINDING_NAME_ACTIONPAGE1", "BINDING_NAME_ACTIONPAGE2", "BINDING_NAME_ACTIONPAGE3", "BINDING_NAME_ACTIONPAGE4", "BINDING_NAME_ACTIONPAGE5", "BINDING_NAME_ACTIONPAGE6", "BINDING_NAME_ACTIONWINDOW1", "BINDING_NAME_ACTIONWINDOW2", "BINDING_NAME_ACTIONWINDOW3", "BINDING_NAME_ACTIONWINDOW4", "BINDING_NAME_ACTIONWINDOWDECREMENT", "BINDING_NAME_ACTIONWINDOWINCREMENT", "BINDING_NAME_ACTIONWINDOWMOVE", "BINDING_NAME_ALLNAMEPLATES", "BINDING_NAME_ASSISTTARGET", "BINDING_NAME_ATTACKTARGET", "BINDING_NAME_BONUSACTIONBUTTON1", "BINDING_NAME_BONUSACTIONBUTTON10", "BINDING_NAME_BONUSACTIONBUTTON2", "BINDING_NAME_BONUSACTIONBUTTON3", "BINDING_NAME_BONUSACTIONBUTTON4", "BINDING_NAME_BONUSACTIONBUTTON5", "BINDING_NAME_BONUSACTIONBUTTON6", "BINDING_NAME_BONUSACTIONBUTTON7", "BINDING_NAME_BONUSACTIONBUTTON8", "BINDING_NAME_BONUSACTIONBUTTON9", "BINDING_NAME_CAMERAZOOMIN", "BINDING_NAME_CAMERAZOOMOUT", "BINDING_NAME_CHATBOTTOM", "BINDING_NAME_CHATPAGEDOWN", "BINDING_NAME_CHATPAGEUP", "BINDING_NAME_COMBATLOGBOTTOM", "BINDING_NAME_COMBATLOGPAGEDOWN", "BINDING_NAME_COMBATLOGPAGEUP", "BINDING_NAME_DISMOUNT", "BINDING_NAME_FLIPCAMERAYAW", "BINDING_NAME_FOCUSTARGET", "BINDING_NAME_FOLLOWTARGET", "BINDING_NAME_FRIENDNAMEPLATES", "BINDING_NAME_INTERACTMOUSEOVER", "BINDING_NAME_INTERACTTARGET", "BINDING_NAME_INVERTBINDINGMODE1", "BINDING_NAME_INVERTBINDINGMODE2", "BINDING_NAME_INVERTBINDINGMODE3", "BINDING_NAME_ITUNES_BACKTRACK", "BINDING_NAME_ITUNES_NEXTTRACK", "BINDING_NAME_ITUNES_PLAYPAUSE", "BINDING_NAME_ITUNES_VOLUMEDOWN", "BINDING_NAME_ITUNES_VOLUMEUP", "BINDING_NAME_JUMP", "BINDING_NAME_MASTERVOLUMEDOWN", "BINDING_NAME_MASTERVOLUMEUP", "BINDING_NAME_MINIMAPZOOMIN", "BINDING_NAME_MINIMAPZOOMOUT", "BINDING_NAME_MOVEANDSTEER", "BINDING_NAME_MOVEBACKWARD", "BINDING_NAME_MOVEFORWARD", "BINDING_NAME_MOVEVIEWIN", "BINDING_NAME_MOVEVIEWOUT", "BINDING_NAME_MOVIE_RECORDING_CANCEL", "BINDING_NAME_MOVIE_RECORDING_COMPRESS", "BINDING_NAME_MOVIE_RECORDING_GUI", "BINDING_NAME_MOVIE_RECORDING_STARTSTOP", "BINDING_NAME_MULTIACTIONBAR1BUTTON1", "BINDING_NAME_MULTIACTIONBAR1BUTTON10", "BINDING_NAME_MULTIACTIONBAR1BUTTON11", "BINDING_NAME_MULTIACTIONBAR1BUTTON12", "BINDING_NAME_MULTIACTIONBAR1BUTTON2", "BINDING_NAME_MULTIACTIONBAR1BUTTON3", "BINDING_NAME_MULTIACTIONBAR1BUTTON4", "BINDING_NAME_MULTIACTIONBAR1BUTTON5", "BINDING_NAME_MULTIACTIONBAR1BUTTON6", "BINDING_NAME_MULTIACTIONBAR1BUTTON7", "BINDING_NAME_MULTIACTIONBAR1BUTTON8", "BINDING_NAME_MULTIACTIONBAR1BUTTON9", "BINDING_NAME_MULTIACTIONBAR2BUTTON1", "BINDING_NAME_MULTIACTIONBAR2BUTTON10", "BINDING_NAME_MULTIACTIONBAR2BUTTON11", "BINDING_NAME_MULTIACTIONBAR2BUTTON12", "BINDING_NAME_MULTIACTIONBAR2BUTTON2", "BINDING_NAME_MULTIACTIONBAR2BUTTON3", "BINDING_NAME_MULTIACTIONBAR2BUTTON4", "BINDING_NAME_MULTIACTIONBAR2BUTTON5", "BINDING_NAME_MULTIACTIONBAR2BUTTON6", "BINDING_NAME_MULTIACTIONBAR2BUTTON7", "BINDING_NAME_MULTIACTIONBAR2BUTTON8", "BINDING_NAME_MULTIACTIONBAR2BUTTON9", "BINDING_NAME_MULTIACTIONBAR3BUTTON1", "BINDING_NAME_MULTIACTIONBAR3BUTTON10", "BINDING_NAME_MULTIACTIONBAR3BUTTON11", "BINDING_NAME_MULTIACTIONBAR3BUTTON12", "BINDING_NAME_MULTIACTIONBAR3BUTTON2", "BINDING_NAME_MULTIACTIONBAR3BUTTON3", "BINDING_NAME_MULTIACTIONBAR3BUTTON4", "BINDING_NAME_MULTIACTIONBAR3BUTTON5", "BINDING_NAME_MULTIACTIONBAR3BUTTON6", "BINDING_NAME_MULTIACTIONBAR3BUTTON7", "BINDING_NAME_MULTIACTIONBAR3BUTTON8", "BINDING_NAME_MULTIACTIONBAR3BUTTON9", "BINDING_NAME_MULTIACTIONBAR4BUTTON1", "BINDING_NAME_MULTIACTIONBAR4BUTTON10", "BINDING_NAME_MULTIACTIONBAR4BUTTON11", "BINDING_NAME_MULTIACTIONBAR4BUTTON12", "BINDING_NAME_MULTIACTIONBAR4BUTTON2", "BINDING_NAME_MULTIACTIONBAR4BUTTON3", "BINDING_NAME_MULTIACTIONBAR4BUTTON4", "BINDING_NAME_MULTIACTIONBAR4BUTTON5", "BINDING_NAME_MULTIACTIONBAR4BUTTON6", "BINDING_NAME_MULTIACTIONBAR4BUTTON7", "BINDING_NAME_MULTIACTIONBAR4BUTTON8", "BINDING_NAME_MULTIACTIONBAR4BUTTON9", "BINDING_NAME_MULTICASTACTIONBUTTON1", "BINDING_NAME_MULTICASTACTIONBUTTON10", "BINDING_NAME_MULTICASTACTIONBUTTON11", "BINDING_NAME_MULTICASTACTIONBUTTON12", "BINDING_NAME_MULTICASTACTIONBUTTON2", "BINDING_NAME_MULTICASTACTIONBUTTON3", "BINDING_NAME_MULTICASTACTIONBUTTON4", "BINDING_NAME_MULTICASTACTIONBUTTON5", "BINDING_NAME_MULTICASTACTIONBUTTON6", "BINDING_NAME_MULTICASTACTIONBUTTON7", "BINDING_NAME_MULTICASTACTIONBUTTON8", "BINDING_NAME_MULTICASTACTIONBUTTON9", "BINDING_NAME_MULTICASTRECALLBUTTON1", "BINDING_NAME_MULTICASTSUMMONBUTTON1", "BINDING_NAME_MULTICASTSUMMONBUTTON2", "BINDING_NAME_MULTICASTSUMMONBUTTON3", "BINDING_NAME_NAMEPLATES", "BINDING_NAME_NEXTACTIONPAGE", "BINDING_NAME_NEXTVIEW", "BINDING_NAME_OPENALLBAGS", "BINDING_NAME_OPENCHAT", "BINDING_NAME_OPENCHATSLASH", "BINDING_NAME_PETATTACK", "BINDING_NAME_PITCHDECREMENT", "BINDING_NAME_PITCHDOWN", "BINDING_NAME_PITCHINCREMENT", "BINDING_NAME_PITCHUP", "BINDING_NAME_PREVIOUSACTIONPAGE", "BINDING_NAME_PREVVIEW", "BINDING_NAME_PUSHTOTALK", "BINDING_NAME_RAIDTARGET1", "BINDING_NAME_RAIDTARGET2", "BINDING_NAME_RAIDTARGET3", "BINDING_NAME_RAIDTARGET4", "BINDING_NAME_RAIDTARGET5", "BINDING_NAME_RAIDTARGET6", "BINDING_NAME_RAIDTARGET7", "BINDING_NAME_RAIDTARGET8", "BINDING_NAME_RAIDTARGETNONE", "BINDING_NAME_REPLY", "BINDING_NAME_REPLY2", "BINDING_NAME_RESETVIEW1", "BINDING_NAME_RESETVIEW2", "BINDING_NAME_RESETVIEW3", "BINDING_NAME_RESETVIEW4", "BINDING_NAME_RESETVIEW5", "BINDING_NAME_SAVEVIEW1", "BINDING_NAME_SAVEVIEW2", "BINDING_NAME_SAVEVIEW3", "BINDING_NAME_SAVEVIEW4", "BINDING_NAME_SAVEVIEW5", "BINDING_NAME_SCREENSHOT", "BINDING_NAME_SETVIEW1", "BINDING_NAME_SETVIEW2", "BINDING_NAME_SETVIEW3", "BINDING_NAME_SETVIEW4", "BINDING_NAME_SETVIEW5", "BINDING_NAME_SHAPESHIFTBUTTON1", "BINDING_NAME_SHAPESHIFTBUTTON10", "BINDING_NAME_SHAPESHIFTBUTTON2", "BINDING_NAME_SHAPESHIFTBUTTON3", "BINDING_NAME_SHAPESHIFTBUTTON4", "BINDING_NAME_SHAPESHIFTBUTTON5", "BINDING_NAME_SHAPESHIFTBUTTON6", "BINDING_NAME_SHAPESHIFTBUTTON7", "BINDING_NAME_SHAPESHIFTBUTTON8", "BINDING_NAME_SHAPESHIFTBUTTON9", "BINDING_NAME_SITORSTAND", "BINDING_NAME_STARTATTACK", "BINDING_NAME_STOPATTACK", "BINDING_NAME_STOPCASTING", "BINDING_NAME_STRAFELEFT", "BINDING_NAME_STRAFERIGHT", "BINDING_NAME_SWINGCAMERA", "BINDING_NAME_SWINGCAMERAANDPLAYER", "BINDING_NAME_TARGETENEMYDIRECTIONAL", "BINDING_NAME_TARGETFOCUS", "BINDING_NAME_TARGETFRIENDDIRECTIONAL", "BINDING_NAME_TARGETLASTHOSTILE", "BINDING_NAME_TARGETLASTTARGET", "BINDING_NAME_TARGETMOUSEOVER", "BINDING_NAME_TARGETNEARESTENEMY", "BINDING_NAME_TARGETNEARESTENEMYPLAYER", "BINDING_NAME_TARGETNEARESTFRIEND", "BINDING_NAME_TARGETNEARESTFRIENDPLAYER", "BINDING_NAME_TARGETPARTYMEMBER1", "BINDING_NAME_TARGETPARTYMEMBER2", "BINDING_NAME_TARGETPARTYMEMBER3", "BINDING_NAME_TARGETPARTYMEMBER4", "BINDING_NAME_TARGETPARTYPET1", "BINDING_NAME_TARGETPARTYPET2", "BINDING_NAME_TARGETPARTYPET3", "BINDING_NAME_TARGETPARTYPET4", "BINDING_NAME_TARGETPET", "BINDING_NAME_TARGETPREVIOUSENEMY", "BINDING_NAME_TARGETPREVIOUSENEMYPLAYER", "BINDING_NAME_TARGETPREVIOUSFRIEND", "BINDING_NAME_TARGETPREVIOUSFRIENDPLAYER", "BINDING_NAME_TARGETSELF", "BINDING_NAME_TARGETTALKER", "BINDING_NAME_TOGGLEABILITYBOOK", "BINDING_NAME_TOGGLEACHIEVEMENT", "BINDING_NAME_TOGGLEACTIONBARLOCK", "BINDING_NAME_TOGGLEAUTORUN", "BINDING_NAME_TOGGLEAUTOSELFCAST", "BINDING_NAME_TOGGLEBACKPACK", "BINDING_NAME_TOGGLEBAG1", "BINDING_NAME_TOGGLEBAG2", "BINDING_NAME_TOGGLEBAG3", "BINDING_NAME_TOGGLEBAG4", "BINDING_NAME_TOGGLEBAG5", "BINDING_NAME_TOGGLEBATTLEFIELDMINIMAP", "BINDING_NAME_TOGGLEBINDINGMODE1", "BINDING_NAME_TOGGLEBINDINGMODE2", "BINDING_NAME_TOGGLEBINDINGMODE3", "BINDING_NAME_TOGGLECHANNELPULLOUT", "BINDING_NAME_TOGGLECHANNELTAB", "BINDING_NAME_TOGGLECHARACTER0", "BINDING_NAME_TOGGLECHARACTER1", "BINDING_NAME_TOGGLECHARACTER2", "BINDING_NAME_TOGGLECHARACTER3", "BINDING_NAME_TOGGLECHARACTER4", "BINDING_NAME_TOGGLECHATTAB", "BINDING_NAME_TOGGLECOMBATLOG", "BINDING_NAME_TOGGLECURRENCY", "BINDING_NAME_TOGGLEFPS", "BINDING_NAME_TOGGLEFRIENDSTAB", "BINDING_NAME_TOGGLEGAMEMENU", "BINDING_NAME_TOGGLEGUILDTAB", "BINDING_NAME_TOGGLEIGNORETAB", "BINDING_NAME_TOGGLEINSCRIPTION", "BINDING_NAME_TOGGLEKEYRING", "BINDING_NAME_TOGGLELFGPARENT", "BINDING_NAME_TOGGLELFRPARENT", "BINDING_NAME_TOGGLEMINIMAP", "BINDING_NAME_TOGGLEMINIMAPROTATION", "BINDING_NAME_TOGGLEMOUSE", "BINDING_NAME_TOGGLEMUSIC", "BINDING_NAME_TOGGLEPETBOOK", "BINDING_NAME_TOGGLEPVP", "BINDING_NAME_TOGGLEQUESTLOG", "BINDING_NAME_TOGGLERAIDTAB", "BINDING_NAME_TOGGLERUN", "BINDING_NAME_TOGGLESELFMUTE", "BINDING_NAME_TOGGLESHEATH", "BINDING_NAME_TOGGLESOCIAL", "BINDING_NAME_TOGGLESOUND", "BINDING_NAME_TOGGLESPELLBOOK", "BINDING_NAME_TOGGLESTATISTICS", "BINDING_NAME_TOGGLETALENTS", "BINDING_NAME_TOGGLEUI", "BINDING_NAME_TOGGLEWHOTAB", "BINDING_NAME_TOGGLEWORLDMAP", "BINDING_NAME_TOGGLEWORLDMAPSIZE", "BINDING_NAME_TOGGLEWORLDSTATESCORES", "BINDING_NAME_TURNLEFT", "BINDING_NAME_TURNRIGHT", "BINDING_NAME_VEHICLEAIMDECREMENT", "BINDING_NAME_VEHICLEAIMDOWN", "BINDING_NAME_VEHICLEAIMINCREMENT", "BINDING_NAME_VEHICLEAIMUP", "BINDING_NAME_VEHICLECAMERAZOOMIN", "BINDING_NAME_VEHICLECAMERAZOOMOUT", "BINDING_NAME_VEHICLEEXIT", "BINDING_NAME_VEHICLENEXTSEAT", "BINDING_NAME_VEHICLEPREVSEAT", "BIND_ENCHANT", "BIND_KEY_TO_COMMAND", "BIND_TRADE_TIME_REMAINING", "BIND_ZONE_DISPLAY", "BLIZZARD_COMBAT_LOG_MENU_BOTH", "BLIZZARD_COMBAT_LOG_MENU_EVERYTHING", "BLIZZARD_COMBAT_LOG_MENU_INCOMING", "BLIZZARD_COMBAT_LOG_MENU_OUTGOING", "BLIZZARD_COMBAT_LOG_MENU_OUTGOING_ME", "BLIZZARD_COMBAT_LOG_MENU_RESET", "BLIZZARD_COMBAT_LOG_MENU_REVERT", "BLIZZARD_COMBAT_LOG_MENU_SAVE", "BLIZZARD_COMBAT_LOG_MENU_SPELL_HIDE", "BLIZZARD_COMBAT_LOG_MENU_SPELL_LINK", "BLIZZARD_COMBAT_LOG_MENU_SPELL_TYPE_HEADER", "BLOCK", "BLOCKED_COMMUNICATION", "BLOCKED_INVITES", "BLOCK_CHANCE", "BLOCK_COMMUNICATION", "BLOCK_INVITES", "BLOCK_INVITES_CONFIRMATION", "BLOCK_INVITES_TOOLTIP", "BLOCK_TRADES", "BLOCK_TRAILER", "BLUE_GEM", "BNET_BROADCAST_SENT_TIME", "BNET_INVITE_SENT_TIME", "BNET_LAST_ONLINE_TIME", "BNET_REPORT", "BNET_REPORT_ABUSE", "BNET_REPORT_ABUSE_BUTTON", "BNET_REPORT_ABUSE_LABEL", "BNET_REPORT_ABUSE_PROMPT", "BNET_REPORT_CONFIRM_ABUSE", "BNET_REPORT_CONFIRM_NAME", "BNET_REPORT_CONFIRM_SPAM", "BNET_REPORT_NAME", "BNET_REPORT_PLAYER", "BNET_REPORT_PLAYER_TOOLTIP", "BNET_REPORT_SENT", "BNET_REPORT_SPAM", "BN_BROADCAST_TOOLTIP", "BN_CONVERSATION", "BN_INLINE_TOAST_ALERT", "BN_INLINE_TOAST_BROADCAST", "BN_INLINE_TOAST_BROADCAST_INFORM", "BN_INLINE_TOAST_CONVERSATION", "BN_INLINE_TOAST_FRIEND_ADDED", "BN_INLINE_TOAST_FRIEND_OFFLINE", "BN_INLINE_TOAST_FRIEND_ONLINE", "BN_INLINE_TOAST_FRIEND_PENDING", "BN_INLINE_TOAST_FRIEND_REMOVED", "BN_INLINE_TOAST_FRIEND_REQUEST", "BN_TOAST_CONVERSATION", "BN_TOAST_NEW_INVITE", "BN_TOAST_OFFLINE", "BN_TOAST_ONLINE", "BN_TOAST_PENDING_INVITES", "BN_UNABLE_TO_RESOLVE_NAME", "BN_WHISPER", "BONUS_ARENA_POINTS", "BONUS_DAMAGE", "BONUS_DAMAGE_ABBR", "BONUS_HEALING", "BONUS_HEALING_ABBR", "BONUS_HEALING_TOOLTIP", "BONUS_HONOR", "BONUS_TALENTS", "BOSS", "BOSSES", "BOSSES_KILLED", "BOSS_ALIVE", "BOSS_DEAD", "BREATH_LABEL", "BROWSE", "BROWSE_AUCTIONS", "BROWSE_NO_RESULTS", "BROWSE_SEARCH_TEXT", "BROWSING", "BUFFERING", "BUFFER_DOUBLE", "BUFFOPTIONS_LABEL", "BUFFOPTIONS_SUBTEXT", "BUG_BUTTON", "BUG_CATEGORY1", "BUG_CATEGORY2", "BUG_CATEGORY3", "BUG_CATEGORY4", "BUG_CATEGORY5", "BUG_CATEGORY6", "BUG_CATEGORY7", "BUG_CATEGORY8", "BUG_CATEGORY9", "BUG_CATEGORY10", "BUG_CATEGORY11", "BUG_CATEGORY12", "BUG_CATEGORY13", "BUG_CATEGORY14", "BUG_CATEGORY15", "BUG_CATEGORY_CHOOSE", "BUG_CATEGORY_ERROR", "BUG_SUBMITTED", "BUG_SUBMIT_FAILED", "BUILDING_DAMAGE", "BUILDING_DAMAGE_COMBATLOG_TOOLTIP", "BUILDING_HEAL", "BUILDING_HEAL_COMBATLOG_TOOLTIP", "BUTTON_LAG_AUCTIONHOUSE", "BUTTON_LAG_AUCTIONHOUSE_NEWBIE", "BUTTON_LAG_AUCTIONHOUSE_TOOLTIP", "BUTTON_LAG_CHAT", "BUTTON_LAG_CHAT_NEWBIE", "BUTTON_LAG_CHAT_TOOLTIP", "BUTTON_LAG_LOOT", "BUTTON_LAG_LOOT_NEWBIE", "BUTTON_LAG_LOOT_TOOLTIP", "BUTTON_LAG_MAIL", "BUTTON_LAG_MAIL_NEWBIE", "BUTTON_LAG_MAIL_TOOLTIP", "BUTTON_LAG_MOVEMENT", "BUTTON_LAG_MOVEMENT_NEWBIE", "BUTTON_LAG_MOVEMENT_TOOLTIP", "BUTTON_LAG_SPELL", "BUTTON_LAG_SPELL_NEWBIE", "BUTTON_LAG_SPELL_TOOLTIP", "BUYBACK", "BUYBACK_THIS_ITEM", "BUYOUT", "BUYOUT_AUCTION_CONFIRMATION", "BUYOUT_COST", "BUYOUT_PRICE", "BUY_GUILDBANK_TAB", "BY_SOURCE", "BY_SOURCE_COMBATLOG_TOOLTIP", "BY_TARGET", "BY_TARGET_COMBATLOG_TOOLTIP", "CALENDAR_ACCEPT_INVITATION", "CALENDAR_ANNOUNCEMENT_CREATEDBY_PLAYER", "CALENDAR_ANNOUNCEMENT_CREATEDBY_YOURSELF", "CALENDAR_AUTO_APPROVE", "CALENDAR_COPY_EVENT", "CALENDAR_CREATE", "CALENDAR_CREATE_ANNOUNCEMENT", "CALENDAR_CREATE_ARENATEAM_EVENT", "CALENDAR_CREATE_EVENT", "CALENDAR_CREATE_GUILD_ANNOUNCEMENT", "CALENDAR_CREATE_GUILD_EVENT", "CALENDAR_DECLINE_INVITATION", "CALENDAR_DELETE_ANNOUNCEMENT_CONFIRM", "CALENDAR_DELETE_EVENT", "CALENDAR_DELETE_EVENT_CONFIRM", "CALENDAR_DELETE_GUILD_EVENT_CONFIRM", "CALENDAR_EDIT_ANNOUNCEMENT", "CALENDAR_EDIT_EVENT", "CALENDAR_EDIT_GUILD_EVENT", "CALENDAR_ERROR", "CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S", "CALENDAR_ERROR_ARENA_EVENTS_EXCEEDED", "CALENDAR_ERROR_CREATEDATE_AFTER_MAX", "CALENDAR_ERROR_CREATEDATE_BEFORE_TODAY", "CALENDAR_ERROR_DELETE_CREATOR_FAILED", "CALENDAR_ERROR_EVENTS_EXCEEDED", "CALENDAR_ERROR_EVENT_INVALID", "CALENDAR_ERROR_EVENT_LOCKED", "CALENDAR_ERROR_EVENT_PASSED", "CALENDAR_ERROR_EVENT_THROTTLED", "CALENDAR_ERROR_EVENT_TIME_PASSED", "CALENDAR_ERROR_EVENT_WRONG_SERVER", "CALENDAR_ERROR_GUILD_EVENTS_EXCEEDED", "CALENDAR_ERROR_IGNORED", "CALENDAR_ERROR_INTERNAL", "CALENDAR_ERROR_INVALID_DATE", "CALENDAR_ERROR_INVALID_SIGNUP", "CALENDAR_ERROR_INVALID_TIME", "CALENDAR_ERROR_INVITES_DISABLED", "CALENDAR_ERROR_INVITES_EXCEEDED", "CALENDAR_ERROR_INVITE_THROTTLED", "CALENDAR_ERROR_INVITE_WRONG_SERVER", "CALENDAR_ERROR_NEEDS_TITLE", "CALENDAR_ERROR_NOT_ALLIED", "CALENDAR_ERROR_NOT_INVITED", "CALENDAR_ERROR_NO_GUILD_INVITES", "CALENDAR_ERROR_NO_INVITE", "CALENDAR_ERROR_NO_MODERATOR", "CALENDAR_ERROR_OTHER_INVITES_EXCEEDED", "CALENDAR_ERROR_PERMISSIONS", "CALENDAR_ERROR_RESTRICTED_LEVEL", "CALENDAR_ERROR_SELF_INVITES_EXCEEDED", "CALENDAR_EVENTNAME_FORMAT_END", "CALENDAR_EVENTNAME_FORMAT_RAID_LOCKOUT", "CALENDAR_EVENTNAME_FORMAT_RAID_RESET", "CALENDAR_EVENTNAME_FORMAT_START", "CALENDAR_EVENT_ALARM_MESSAGE", "CALENDAR_EVENT_CREATORNAME", "CALENDAR_EVENT_DESCRIPTION", "CALENDAR_EVENT_INVITEDBY_PLAYER", "CALENDAR_EVENT_INVITEDBY_YOURSELF", "CALENDAR_EVENT_NAME", "CALENDAR_EVENT_PICKER_TITLE", "CALENDAR_EVENT_REMOVED_MAIL_BODY", "CALENDAR_EVENT_REMOVED_MAIL_SUBJECT", "CALENDAR_FILTERS", "CALENDAR_FILTER_BATTLEGROUND", "CALENDAR_FILTER_DARKMOON", "CALENDAR_FILTER_RAID_LOCKOUTS", "CALENDAR_FILTER_RAID_RESETS", "CALENDAR_FILTER_WEEKLY_HOLIDAYS", "CALENDAR_GUILDEVENT_INVITEDBY_YOURSELF", "CALENDAR_INVITELIST_CLEARMODERATOR", "CALENDAR_INVITELIST_CREATORNAME", "CALENDAR_INVITELIST_INVITETORAID", "CALENDAR_INVITELIST_MODERATORNAME", "CALENDAR_INVITELIST_SETINVITESTATUS", "CALENDAR_INVITELIST_SETMODERATOR", "CALENDAR_INVITE_ALL", "CALENDAR_INVITE_CONFIRMED", "CALENDAR_INVITE_LABEL", "CALENDAR_INVITE_MEMBERS", "CALENDAR_INVITE_PLAYER", "CALENDAR_INVITE_REMOVED_MAIL_BODY", "CALENDAR_INVITE_REMOVED_MAIL_SUBJECT", "CALENDAR_LOCK_EVENT", "CALENDAR_MASSINVITE_ARENA_HELP", "CALENDAR_MASSINVITE_GUILD_HELP", "CALENDAR_MASSINVITE_GUILD_MINRANK", "CALENDAR_MASS_INVITE", "CALENDAR_NOT_SIGNEDUP_FOR_GUILDEVENT", "CALENDAR_PASTE_EVENT", "CALENDAR_PLAYER_NAME", "CALENDAR_RAID_LOCKOUT_DESCRIPTION", "CALENDAR_RAID_RESET_DESCRIPTION", "CALENDAR_REMOVE_INVITATION", "CALENDAR_REMOVE_SIGNUP", "CALENDAR_REPEAT_BIWEEKLY", "CALENDAR_REPEAT_MONTHLY", "CALENDAR_REPEAT_NEVER", "CALENDAR_REPEAT_WEEKLY", "CALENDAR_SET_DESCRIPTION_LABEL", "CALENDAR_SIGNEDUP_FOR_GUILDEVENT_WITH_STATUS", "CALENDAR_SIGNUP", "CALENDAR_SIGNUP_FOR_GUILDEVENT", "CALENDAR_STATUS_ACCEPTED", "CALENDAR_STATUS_CONFIRMED", "CALENDAR_STATUS_DECLINED", "CALENDAR_STATUS_INVITED", "CALENDAR_STATUS_NOT_SIGNEDUP", "CALENDAR_STATUS_OUT", "CALENDAR_STATUS_SIGNEDUP", "CALENDAR_STATUS_STANDBY", "CALENDAR_STATUS_TENTATIVE", "CALENDAR_TENTATIVE_INVITATION", "CALENDAR_TEXTURE_PICKER_TITLE_DUNGEON", "CALENDAR_TEXTURE_PICKER_TITLE_RAID", "CALENDAR_TOOLTIP_AUTOAPPROVE", "CALENDAR_TOOLTIP_AVAILABLEBUTTON", "CALENDAR_TOOLTIP_DECLINEBUTTON", "CALENDAR_TOOLTIP_INVITEMEMBERS_BUTTON_PARTY", "CALENDAR_TOOLTIP_INVITEMEMBERS_BUTTON_RAID", "CALENDAR_TOOLTIP_INVITE_RESPONDED", "CALENDAR_TOOLTIP_INVITE_TOTALS", "CALENDAR_TOOLTIP_LOCKEVENT", "CALENDAR_TOOLTIP_MASSINVITE", "CALENDAR_TOOLTIP_REMOVEBUTTON", "CALENDAR_TOOLTIP_REMOVESIGNUPBUTTON", "CALENDAR_TOOLTIP_SIGNUPBUTTON", "CALENDAR_TOOLTIP_TENTATIVEBUTTON", "CALENDAR_TYPE_DUNGEON", "CALENDAR_TYPE_MEETING", "CALENDAR_TYPE_OTHER", "CALENDAR_TYPE_PVP", "CALENDAR_TYPE_RAID", "CALENDAR_UPDATE", "CALENDAR_VIEW_ANNOUNCEMENT", "CALENDAR_VIEW_EVENT", "CALENDAR_VIEW_EVENTTITLE_LOCKED", "CALENDAR_VIEW_EVENTTYPE", "CALENDAR_VIEW_EVENT_REMOVE", "CALENDAR_VIEW_EVENT_SETSTATUS", "CALENDAR_VIEW_EVENT_TENTATIVE", "CALENDAR_VIEW_GUILD_EVENT", "CALIBRATION_TEXT", "CAMERA_ALWAYS", "CAMERA_FOLLOWING_STYLE", "CAMERA_LABEL", "CAMERA_LOCKED", "CAMERA_MODE", "CAMERA_NEVER", "CAMERA_SMART", "CAMERA_SMARTER", "CAMERA_SUBTEXT", "CAMP_NOW", "CAMP_TIMER", "CANCEL", "CANCEL_AUCTION", "CANCEL_AUCTION_CONFIRMATION", "CANCEL_AUCTION_CONFIRMATION_MONEY", "CANNOT_COOPERATE_LABEL", "CANT_AFFORD_ITEM", "CANT_USE_ITEM", "CAN_BIND_PTT", "CAPSLOCK_KEY_TEXT", "CASH_ON_DELIVERY", "CAST_WHILE_MOVING", "CATEGORIES", "CATEGORY", "CHANCE_TO_BLOCK", "CHANCE_TO_CRIT", "CHANCE_TO_DODGE", "CHANCE_TO_PARRY", "CHANGE_INSTANCE", "CHANGE_MACRO_NAME_ICON", "CHANGE_OPACITY", "CHANNEL", "CHANNELING", "CHANNELPULLOUT_OPACITY_LABEL", "CHANNELPULLOUT_OPTIONS_LABEL", "CHANNELS", "CHANNEL_CATEGORY_CUSTOM", "CHANNEL_CATEGORY_GROUP", "CHANNEL_CATEGORY_WORLD", "CHANNEL_CHANNEL_NAME", "CHANNEL_INVITE", "CHANNEL_JOIN_CHANNEL", "CHANNEL_NEW_CHANNEL", "CHANNEL_PASSWORD", "CHANNEL_ROSTER", "CHARACTER", "CHARACTER_BUTTON", "CHARACTER_FRIEND", "CHARACTER_FRIEND_INFO", "CHARACTER_FRIEND_LABEL", "CHARACTER_INFO", "CHARACTER_KEY_BINDINGS", "CHARACTER_POINTS2_COLON", "CHARACTER_POINTS_CHANGED", "CHARACTER_SHADOWS", "CHARACTER_SPECIFIC_KEYBINDINGS", "CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP", "CHARACTER_SPECIFIC_MACROS", "CHAT", "CHATCONFIG_HEADER", "CHATLOGDISABLED", "CHATLOGENABLED", "CHAT_AFK_GET", "CHAT_ANNOUNCE", "CHAT_ANNOUNCEMENTS_OFF_NOTICE", "CHAT_ANNOUNCEMENTS_OFF_NOTICE_BN", "CHAT_ANNOUNCEMENTS_ON_NOTICE", "CHAT_ANNOUNCEMENTS_ON_NOTICE_BN", "CHAT_AUTO_JOIN", "CHAT_BAN", "CHAT_BANNED_NOTICE", "CHAT_BATTLEGROUND_GET", "CHAT_BATTLEGROUND_LEADER_GET", "CHAT_BATTLEGROUND_SEND", "CHAT_BN_CONVERSATION_GET", "CHAT_BN_CONVERSATION_GET_LINK", "CHAT_BN_CONVERSATION_LIST", "CHAT_BN_CONVERSATION_SEND", "CHAT_BN_WHISPER_GET", "CHAT_BN_WHISPER_INFORM_GET", "CHAT_BN_WHISPER_SEND", "CHAT_BUBBLES_TEXT", "CHAT_CHANNELS", "CHAT_CHANNEL_GET", "CHAT_CHANNEL_JOIN_GET", "CHAT_CHANNEL_LEAVE_GET", "CHAT_CHANNEL_LIST_GET", "CHAT_CHANNEL_OWNER_NOTICE", "CHAT_CHANNEL_OWNER_NOTICE_BN", "CHAT_CHANNEL_SEND", "CHAT_COMBAT_MISC_INFO_GET", "CHAT_CONFIGURATION", "CHAT_CONVERSATION_CONVERSATION_CONVERTED_TO_WHISPER_NOTICE", "CHAT_CONVERSATION_MEMBER_JOINED_NOTICE", "CHAT_CONVERSATION_MEMBER_LEFT_NOTICE", "CHAT_CONVERSATION_YOU_JOINED_CONVERSATION_NOTICE", "CHAT_CONVERSATION_YOU_LEFT_CONVERSATION_NOTICE", "CHAT_DEFAULT", "CHAT_DEFAULTS", "CHAT_DEMOTE", "CHAT_DND_GET", "CHAT_EMOTE_GET", "CHAT_EMOTE_SEND", "CHAT_EMOTE_UNKNOWN", "CHAT_FILTERED", "CHAT_FLAG_AFK", "CHAT_FLAG_DND", "CHAT_FLAG_GM", "CHAT_GUILD_DEMOTE_SEND", "CHAT_GUILD_GET", "CHAT_GUILD_INVITE_SEND", "CHAT_GUILD_LEADER_SEND", "CHAT_GUILD_MOTD_SEND", "CHAT_GUILD_PROMOTE_SEND", "CHAT_GUILD_SEND", "CHAT_GUILD_UNINVITE_SEND", "CHAT_HELP_TEXT_LINE1", "CHAT_HELP_TEXT_LINE2", "CHAT_HELP_TEXT_LINE3", "CHAT_HELP_TEXT_LINE4", "CHAT_HELP_TEXT_LINE5", "CHAT_HELP_TEXT_LINE6", "CHAT_HELP_TEXT_LINE7", "CHAT_HELP_TEXT_LINE8", "CHAT_HELP_TEXT_LINE9", "CHAT_HELP_TEXT_LINE10", "CHAT_HELP_TEXT_LINE11", "CHAT_HELP_TEXT_LINE12", "CHAT_HELP_TEXT_LINE13", "CHAT_HELP_TEXT_LINE14", "CHAT_HELP_TEXT_LINE15", "CHAT_HELP_TEXT_LINE16", "CHAT_IGNORED", "CHAT_INVALID_NAME_NOTICE", "CHAT_INVITE_NOTICE", "CHAT_INVITE_NOTICE_POPUP", "CHAT_INVITE_SEND", "CHAT_INVITE_WRONG_FACTION_NOTICE", "CHAT_JOIN", "CHAT_JOIN_HELP", "CHAT_KICK", "CHAT_LABEL", "CHAT_LEAVE", "CHAT_LOCKED_TEXT", "CHAT_MODERATE", "CHAT_MODERATION_OFF_NOTICE", "CHAT_MODERATION_OFF_NOTICE_BN", "CHAT_MODERATION_ON_NOTICE", "CHAT_MODERATION_ON_NOTICE_BN", "CHAT_MONSTER_EMOTE_GET", "CHAT_MONSTER_PARTY_GET", "CHAT_MONSTER_SAY_GET", "CHAT_MONSTER_WHISPER_GET", "CHAT_MONSTER_YELL_GET", "CHAT_MOUSE_WHEEL_SCROLL", "CHAT_MSG_ACHIEVEMENT", "CHAT_MSG_AFK", "CHAT_MSG_BATTLEGROUND", "CHAT_MSG_BATTLEGROUND_LEADER", "CHAT_MSG_BG_SYSTEM_ALLIANCE", "CHAT_MSG_BG_SYSTEM_HORDE", "CHAT_MSG_BG_SYSTEM_NEUTRAL", "CHAT_MSG_BN_CONVERSATION", "CHAT_MSG_BN_WHISPER", "CHAT_MSG_CHANNEL_LIST", "CHAT_MSG_COMBAT_HONOR_GAIN", "CHAT_MSG_EMOTE", "CHAT_MSG_FILTERED", "CHAT_MSG_GUILD", "CHAT_MSG_GUILD_ACHIEVEMENT", "CHAT_MSG_LOOT", "CHAT_MSG_MONEY", "CHAT_MSG_MONSTER_EMOTE", "CHAT_MSG_MONSTER_PARTY", "CHAT_MSG_MONSTER_SAY", "CHAT_MSG_MONSTER_WHISPER", "CHAT_MSG_MONSTER_YELL", "CHAT_MSG_OFFICER", "CHAT_MSG_PARTY", "CHAT_MSG_PARTY_LEADER", "CHAT_MSG_RAID", "CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_RAID_LEADER", "CHAT_MSG_RAID_WARNING", "CHAT_MSG_RESTRICTED", "CHAT_MSG_SAY", "CHAT_MSG_SKILL", "CHAT_MSG_SYSTEM", "CHAT_MSG_TEXT_EMOTE", "CHAT_MSG_WHISPER", "CHAT_MSG_WHISPER_INFORM", "CHAT_MSG_YELL", "CHAT_MUTED_NOTICE", "CHAT_MUTED_NOTICE_BN", "CHAT_NAME_TEMPLATE", "CHAT_NOT_IN_AREA_NOTICE", "CHAT_NOT_MEMBER_NOTICE", "CHAT_NOT_MODERATED_NOTICE", "CHAT_NOT_MODERATOR_NOTICE", "CHAT_NOT_MODERATOR_NOTICE_BN", "CHAT_NOT_OWNER_NOTICE", "CHAT_NOT_OWNER_NOTICE_BN", "CHAT_OFFICER_GET", "CHAT_OFFICER_SEND", "CHAT_OPTIONS_LABEL", "CHAT_OVERFLOW_LABEL", "CHAT_OWNER", "CHAT_OWNER_CHANGED_NOTICE", "CHAT_OWNER_CHANGED_NOTICE_BN", "CHAT_PARTY_GET", "CHAT_PARTY_GUIDE_GET", "CHAT_PARTY_LEADER_GET", "CHAT_PARTY_SEND", "CHAT_PASSWORD", "CHAT_PASSWORD_CHANGED_NOTICE", "CHAT_PASSWORD_CHANGED_NOTICE_BN", "CHAT_PASSWORD_NOTICE_POPUP", "CHAT_PLAYER_ALREADY_MEMBER_NOTICE", "CHAT_PLAYER_ALREADY_MEMBER_NOTICE_BN", "CHAT_PLAYER_BANNED_NOTICE", "CHAT_PLAYER_BANNED_NOTICE_BN", "CHAT_PLAYER_INVITED_NOTICE", "CHAT_PLAYER_INVITED_NOTICE_BN", "CHAT_PLAYER_INVITE_BANNED_NOTICE", "CHAT_PLAYER_INVITE_BANNED_NOTICE_BN", "CHAT_PLAYER_KICKED_NOTICE", "CHAT_PLAYER_KICKED_NOTICE_BN", "CHAT_PLAYER_NOT_BANNED_NOTICE", "CHAT_PLAYER_NOT_BANNED_NOTICE_BN", "CHAT_PLAYER_NOT_FOUND_NOTICE", "CHAT_PLAYER_NOT_FOUND_NOTICE_BN", "CHAT_PLAYER_UNBANNED_NOTICE", "CHAT_PLAYER_UNBANNED_NOTICE_BN", "CHAT_PROMOTE", "CHAT_PROMOTE_SEND", "CHAT_RAID_BOSS_EMOTE_GET", "CHAT_RAID_BOSS_WHISPER_GET", "CHAT_RAID_GET", "CHAT_RAID_LEADER_GET", "CHAT_RAID_SEND", "CHAT_RAID_WARNING_GET", "CHAT_RAID_WARNING_SEND", "CHAT_RESTRICTED", "CHAT_SAY_GET", "CHAT_SAY_SEND", "CHAT_SAY_UNKNOWN", "CHAT_SET_MODERATOR_NOTICE", "CHAT_SET_MODERATOR_NOTICE_BN", "CHAT_SET_SPEAK_NOTICE", "CHAT_SET_SPEAK_NOTICE_BN", "CHAT_SET_VOICE_NOTICE", "CHAT_SET_VOICE_NOTICE_BN", "CHAT_SILENCE", "CHAT_STYLE", "CHAT_SUSPENDED_NOTICE", "CHAT_SUSPENDED_NOTICE_BN", "CHAT_THROTTLED_NOTICE", "CHAT_THROTTLED_NOTICE_BN", "CHAT_UNINVITE_SEND", "CHAT_UNSET_MODERATOR_NOTICE", "CHAT_UNSET_MODERATOR_NOTICE_BN", "CHAT_UNSET_SPEAK_NOTICE", "CHAT_UNSET_SPEAK_NOTICE_BN", "CHAT_UNSET_VOICE_NOTICE", "CHAT_UNSET_VOICE_NOTICE_BN", "CHAT_UNSILENCE", "CHAT_VOICE", "CHAT_VOICE_OFF", "CHAT_VOICE_OFF_NOTICE", "CHAT_VOICE_OFF_NOTICE_BN", "CHAT_VOICE_ON", "CHAT_VOICE_ON_NOTICE", "CHAT_VOICE_ON_NOTICE_BN", "CHAT_WHISPER_GET", "CHAT_WHISPER_INFORM_GET", "CHAT_WHISPER_SEND", "CHAT_WHOLE_WINDOW_CLICKABLE", "CHAT_WINDOWS_COUNT", "CHAT_WRONG_FACTION_NOTICE", "CHAT_WRONG_PASSWORD_NOTICE", "CHAT_YELL_GET", "CHAT_YELL_SEND", "CHAT_YELL_UNKNOWN", "CHAT_YELL_UNKNOWN_FEMALE", "CHAT_YOU_CHANGED_NOTICE", "CHAT_YOU_CHANGED_NOTICE_BN", "CHAT_YOU_JOINED_NOTICE", "CHAT_YOU_JOINED_NOTICE_BN", "CHAT_YOU_LEFT_NOTICE", "CHAT_YOU_LEFT_NOTICE_BN", "CHESTSLOT", "CHOOSE_BOX", "CHOOSE_RAID", "CHOOSE_STATIONERY", "CHOOSE_YOUR_DUNGEON", "CHOSEN_FOR_GMSURVEY", "CINEMATIC_SUBTITLES", "CLASS", "CLASSIC_STYLE", "CLASS_COLORS", "CLASS_SKILLS", "CLEARED_AFK", "CLEARED_DND", "CLEAR_AFK", "CLEAR_ALL", "CLEAR_FOCUS", "CLICK_CAMERA_STYLE", "CLICK_FOR_ADDITIONAL_QUEST_LOCATIONS", "CLICK_FOR_DETAILS", "CLICK_HERE_FOR_MORE_INFO", "CLICK_TO_ENTER_COMMENT", "CLICK_TO_INVITE_TO_CONVERSATION", "CLICK_TO_LEARN", "CLICK_TO_MOVE", "CLICK_TO_REMOVE_ADDITIONAL_QUEST_LOCATIONS", "CLICK_TO_START_CONVERSATION", "CLIENT_LOGOUT_ALERT", "CLIENT_RESTART_ALERT", "CLOSE", "CLOSES_IN", "CLOSE_AND_LEAVE_CHAT_CONVERSATION_WINDOW", "CLOSE_CHAT", "CLOSE_CHAT_CONVERSATION_WINDOW", "CLOSE_CHAT_WHISPER_WINDOW", "CLOSE_CHAT_WINDOW", "CLOSE_LOG", "COD", "COD_AMOUNT", "COD_CONFIRMATION", "COD_INSUFFICIENT_MONEY", "COD_PAYMENT", "COINPICKUP_CANCEL", "COLOR", "COLORBLIND_NAMEWRAPPER_ENEMY", "COLORBLIND_NAMEWRAPPER_FRIENDLY", "COLORBLIND_NAMEWRAPPER_NEUTRAL", "COLORIZE", "COLORS", "COLOR_BY_SCHOOL", "COLOR_PICKER", "COMBAT", "COMBATLOGDISABLED", "COMBATLOGENABLED", "COMBATLOG_ARENAPOINTSAWARD", "COMBATLOG_DEFAULTS", "COMBATLOG_DISHONORGAIN", "COMBATLOG_FILTER_STRING_CUSTOM_UNIT", "COMBATLOG_FILTER_STRING_FRIENDLY_UNITS", "COMBATLOG_FILTER_STRING_HOSTILE_PLAYERS", "COMBATLOG_FILTER_STRING_HOSTILE_UNITS", "COMBATLOG_FILTER_STRING_ME", "COMBATLOG_FILTER_STRING_MY_PET", "COMBATLOG_FILTER_STRING_NEUTRAL_UNITS", "COMBATLOG_FILTER_STRING_UNKNOWN_UNITS", "COMBATLOG_HIGHLIGHT_ABILITY", "COMBATLOG_HIGHLIGHT_DAMAGE", "COMBATLOG_HIGHLIGHT_KILL", "COMBATLOG_HIGHLIGHT_SCHOOL", "COMBATLOG_HONORAWARD", "COMBATLOG_HONORGAIN", "COMBATLOG_HONORGAIN_NO_RANK", "COMBATLOG_UNKNOWN_UNIT", "COMBATLOG_XPGAIN_EXHAUSTION1", "COMBATLOG_XPGAIN_EXHAUSTION1_GROUP", "COMBATLOG_XPGAIN_EXHAUSTION1_RAID", "COMBATLOG_XPGAIN_EXHAUSTION2", "COMBATLOG_XPGAIN_EXHAUSTION2_GROUP", "COMBATLOG_XPGAIN_EXHAUSTION2_RAID", "COMBATLOG_XPGAIN_EXHAUSTION4", "COMBATLOG_XPGAIN_EXHAUSTION4_GROUP", "COMBATLOG_XPGAIN_EXHAUSTION4_RAID", "COMBATLOG_XPGAIN_EXHAUSTION5", "COMBATLOG_XPGAIN_EXHAUSTION5_GROUP", "COMBATLOG_XPGAIN_EXHAUSTION5_RAID", "COMBATLOG_XPGAIN_FIRSTPERSON", "COMBATLOG_XPGAIN_FIRSTPERSON_GROUP", "COMBATLOG_XPGAIN_FIRSTPERSON_RAID", "COMBATLOG_XPGAIN_FIRSTPERSON_UNNAMED", "COMBATLOG_XPGAIN_FIRSTPERSON_UNNAMED_GROUP", "COMBATLOG_XPGAIN_FIRSTPERSON_UNNAMED_RAID", "COMBATLOG_XPGAIN_QUEST", "COMBATLOG_XPLOSS_FIRSTPERSON_UNNAMED", "COMBATTEXT_LABEL", "COMBATTEXT_SUBTEXT", "COMBAT_ENEMY", "COMBAT_ERROR", "COMBAT_FACTION_CHANGE", "COMBAT_HONOR_GAIN", "COMBAT_LABEL", "COMBAT_LOG", "COMBAT_LOG_MENU_BOTH", "COMBAT_LOG_MENU_EVERYTHING", "COMBAT_LOG_MENU_INCOMING", "COMBAT_LOG_MENU_OUTGOING", "COMBAT_LOG_MENU_OUTGOING_ME", "COMBAT_LOG_MENU_REVERT", "COMBAT_LOG_MENU_SAVE", "COMBAT_LOG_MENU_SPELL_HIDE", "COMBAT_LOG_MENU_SPELL_LINK", "COMBAT_LOG_MENU_SPELL_TYPE_HEADER", "COMBAT_LOG_UNIT_YOU_ENABLED", "COMBAT_MESSAGES", "COMBAT_MISC", "COMBAT_MISC_INFO", "COMBAT_PARTY", "COMBAT_RATING_NAME1", "COMBAT_RATING_NAME10", "COMBAT_RATING_NAME11", "COMBAT_RATING_NAME15", "COMBAT_RATING_NAME2", "COMBAT_RATING_NAME24", "COMBAT_RATING_NAME3", "COMBAT_RATING_NAME4", "COMBAT_RATING_NAME5", "COMBAT_RATING_NAME6", "COMBAT_RATING_NAME7", "COMBAT_RATING_NAME8", "COMBAT_RATING_NAME9", "COMBAT_SELF", "COMBAT_SUBTEXT", "COMBAT_TEXT_ABSORB", "COMBAT_TEXT_ARENA_POINTS_GAINED", "COMBAT_TEXT_BLOCK", "COMBAT_TEXT_COMBO_POINTS", "COMBAT_TEXT_DEFLECT", "COMBAT_TEXT_DODGE", "COMBAT_TEXT_EVADE", "COMBAT_TEXT_FLOAT_MODE_LABEL", "COMBAT_TEXT_HONOR_GAINED", "COMBAT_TEXT_IMMUNE", "COMBAT_TEXT_LABEL", "COMBAT_TEXT_MISS", "COMBAT_TEXT_NONE", "COMBAT_TEXT_PARRY", "COMBAT_TEXT_REFLECT", "COMBAT_TEXT_RESIST", "COMBAT_TEXT_RUNE_BLOOD", "COMBAT_TEXT_RUNE_DEATH", "COMBAT_TEXT_RUNE_FROST", "COMBAT_TEXT_RUNE_UNHOLY", "COMBAT_TEXT_SCROLL_ARC", "COMBAT_TEXT_SCROLL_DOWN", "COMBAT_TEXT_SCROLL_DOWN_TEXT", "COMBAT_TEXT_SCROLL_UP", "COMBAT_TEXT_SHOW_AURAS_TEXT", "COMBAT_TEXT_SHOW_AURA_FADE_TEXT", "COMBAT_TEXT_SHOW_COMBAT_STATE_TEXT", "COMBAT_TEXT_SHOW_COMBO_POINTS_TEXT", "COMBAT_TEXT_SHOW_DODGE_PARRY_MISS_TEXT", "COMBAT_TEXT_SHOW_ENERGIZE_TEXT", "COMBAT_TEXT_SHOW_FRIENDLY_NAMES_TEXT", "COMBAT_TEXT_SHOW_HONOR_GAINED_TEXT", "COMBAT_TEXT_SHOW_LOW_HEALTH_MANA_TEXT", "COMBAT_TEXT_SHOW_PERIODIC_ENERGIZE_TEXT", "COMBAT_TEXT_SHOW_REACTIVES_TEXT", "COMBAT_TEXT_SHOW_REPUTATION_TEXT", "COMBAT_TEXT_SHOW_RESISTANCES_TEXT", "COMBAT_THREAT_DECREASE_0", "COMBAT_THREAT_DECREASE_1", "COMBAT_THREAT_DECREASE_2", "COMBAT_THREAT_INCREASE_1", "COMBAT_THREAT_INCREASE_3", "COMBAT_XP_GAIN", "COMBAT_ZONE", "COMMAND", "COMMENT", "COMMENTS_COLON", "COMPANIONS", "COMPARE_ACHIEVEMENTS", "COMPLAINT_ADDED", "COMPLETE", "COMPLETE_QUEST", "CONFIRM_ACCEPT_PVP_QUEST", "CONFIRM_ACCEPT_SOCKETS", "CONFIRM_BATTLEFIELD_ENTRY", "CONFIRM_BINDER", "CONFIRM_BUY_BANK_SLOT", "CONFIRM_BUY_GUILDBANK_TAB", "CONFIRM_BUY_STABLE_SLOT", "CONFIRM_COMBAT_FILTER_DEFAULTS", "CONFIRM_COMBAT_FILTER_DELETE", "CONFIRM_COMPLETE_EXPENSIVE_QUEST", "CONFIRM_DELETE_EQUIPMENT_SET", "CONFIRM_DELETING_CHARACTER_SPECIFIC_BINDINGS", "CONFIRM_GLYPH_PLACEMENT", "CONFIRM_GUILD_DISBAND", "CONFIRM_GUILD_LEAVE", "CONFIRM_GUILD_PROMOTE", "CONFIRM_HIGH_COST_ITEM", "CONFIRM_LEARN_PREVIEW_TALENTS", "CONFIRM_LEAVE_QUEUE", "CONFIRM_LOOT_DISTRIBUTION", "CONFIRM_LOSE_BINDING_CHANGES", "CONFIRM_OVERWRITE_EQUIPMENT_SET", "CONFIRM_PET_UNLEARN", "CONFIRM_PURCHASE_TOKEN_ITEM", "CONFIRM_REFUND_MAX_ARENA_POINTS", "CONFIRM_REFUND_MAX_HONOR", "CONFIRM_REFUND_MAX_HONOR_AND_ARENA", "CONFIRM_REFUND_TOKEN_ITEM", "CONFIRM_REMOVE_GLYPH", "CONFIRM_RESET_INSTANCES", "CONFIRM_RESET_INTERFACE_SETTINGS", "CONFIRM_RESET_SETTINGS", "CONFIRM_SUMMON", "CONFIRM_TALENT_WIPE", "CONFIRM_TEAM_DISBAND", "CONFIRM_TEAM_KICK", "CONFIRM_TEAM_LEAVE", "CONFIRM_TEAM_PROMOTE", "CONFIRM_XP_LOSS", "CONFIRM_XP_LOSS_AGAIN", "CONFIRM_XP_LOSS_AGAIN_NO_DURABILITY", "CONFIRM_XP_LOSS_AGAIN_NO_SICKNESS", "CONFIRM_XP_LOSS_NO_DURABILITY", "CONFIRM_XP_LOSS_NO_SICKNESS", "CONFIRM_XP_LOSS_NO_SICKNESS_NO_DURABILITY", "CONFIRM_YOUR_ROLE", "CONSOLIDATE_BUFFS_TEXT", "CONTAINER_SLOTS", "CONTESTED_TERRITORY", "CONTINENT", "CONTINUE", "CONTINUED", "CONTROLS_LABEL", "CONTROLS_SUBTEXT", "CONVERSATION_MODE", "CONVERSATION_MODE_INLINE", "CONVERSATION_MODE_POPOUT", "CONVERSATION_NAME", "CONVERT_TO_RAID", "COOLDOWN_ON_LEAVE_COMBAT", "COOLDOWN_REMAINING", "COPPER_AMOUNT", "COPPER_AMOUNT_SYMBOL", "COPPER_AMOUNT_TEXTURE", "COPY_FILTER", "COPY_NAME", "CORPSE", "CORPSE_RED", "CORPSE_TOOLTIP", "COSTS_LABEL", "CRAFT_IS_MAKEABLE", "CRAFT_IS_MAKEABLE_TOOLTIP", "CREATE", "CREATED_ITEM", "CREATED_ITEM_MULTIPLE", "CREATE_ALL", "CREATE_AUCTION", "CREATE_CONVERSATION_WITH", "CREATE_MACROS", "CREATURE", "CREATURE_MESSAGES", "CRIT_ABBR", "CRUSHING_TRAILER", "CR_BLOCK_TOOLTIP", "CR_CRIT_MELEE_TOOLTIP", "CR_CRIT_RANGED_TOOLTIP", "CR_DODGE_TOOLTIP", "CR_EXPERTISE_TOOLTIP", "CR_HASTE_RATING_TOOLTIP", "CR_HIT_MELEE_TOOLTIP", "CR_HIT_RANGED_TOOLTIP", "CR_HIT_SPELL_TOOLTIP", "CR_PARRY_TOOLTIP", "CTRL_KEY", "CTRL_KEY_TEXT", "CURRENCY", "CURRENCY_AMOUNT_REFUND_FORMAT", "CURRENTLY_EQUIPPED", "CURRENT_BID", "CURRENT_PET", "CURRENT_QUESTS", "CURRENT_SETTINGS", "CUSTOM", "DAILY", "DAILY_QUESTS_REMAINING", "DAILY_QUEST_TAG_TEMPLATE", "DAMAGE", "DAMAGER", "DAMAGE_BONUS_TOOLTIP", "DAMAGE_DONE_TOOLTIP", "DAMAGE_NUMBER", "DAMAGE_PER_SECOND", "DAMAGE_SCHOOL2", "DAMAGE_SCHOOL3", "DAMAGE_SCHOOL4", "DAMAGE_SCHOOL5", "DAMAGE_SCHOOL6", "DAMAGE_SCHOOL7", "DAMAGE_SCHOOL_TEXT", "DAMAGE_SHIELD", "DAMAGE_SHIELD_COMBATLOG_TOOLTIP", "DAMAGE_TEMPLATE", "DAMAGE_TEMPLATE_WITH_SCHOOL", "DAMAGE_TOOLTIP", "DATE_COMPLETED", "DAYS", "DAYS_ABBR", "DAY_ONELETTER_ABBR", "DEAD", "DEATHBINDALREADYBOUND", "DEATHBIND_SUCCESSFUL", "DEATHS", "DEATHS_COMBATLOG_TOOLTIP", "DEATHS_TOOLTIP", "DEATH_CORPSE_SKINNED", "DEATH_EFFECT", "DEATH_RELEASE", "DEATH_RELEASE_NOTIMER", "DEATH_RELEASE_SPECTATOR", "DEATH_RELEASE_TIMER", "DEBUFF_SYMBOL_CURSE", "DEBUFF_SYMBOL_DISEASE", "DEBUFF_SYMBOL_MAGIC", "DEBUFF_SYMBOL_POISON", "DEBUG_FRAMESTACK", "DECLENSION_SET", "DECLINE", "DEDE", "DEFAULT", "DEFAULTS", "DEFAULT_AFK_MESSAGE", "DEFAULT_AGILITY_TOOLTIP", "DEFAULT_COMBATLOG_FILTER_NAME", "DEFAULT_DND_MESSAGE", "DEFAULT_INTELLECT_TOOLTIP", "DEFAULT_SPIRIT_TOOLTIP", "DEFAULT_STAMINA_TOOLTIP", "DEFAULT_STAT1_TOOLTIP", "DEFAULT_STAT2_TOOLTIP", "DEFAULT_STAT3_TOOLTIP", "DEFAULT_STAT4_TOOLTIP", "DEFAULT_STAT5_TOOLTIP", "DEFAULT_STATARMOR_TOOLTIP", "DEFAULT_STATDEFENSE_TOOLTIP", "DEFAULT_STATSPELLBONUS_TOOLTIP", "DEFENSE", "DEFENSE_ABBR", "DEFENSE_TOOLTIP", "DEFLECT", "DELETE", "DELETE_GOOD_ITEM", "DELETE_ITEM", "DELETE_ITEM_CONFIRM_STRING", "DELETE_MAIL_CONFIRMATION", "DELETE_MONEY_CONFIRMATION", "DEMOTE", "DEPOSIT", "DEPOSIT_COLON", "DEPTH_CONVERGENCE", "DESERTER", "DESKTOP_GAMMA", "DESTROY_GEM", "DISABLE", "DISABLE_ADDONS", "DISABLE_SPAM_FILTER", "DISGUISE", "DISHONORABLE_KILLS", "DISPELS", "DISPEL_AURA_COMBATLOG_TOOLTIP", "DISPLAY", "DISPLAY_ACTIVE_CHANNEL", "DISPLAY_CHANNEL_PULLOUT", "DISPLAY_FREE_BAG_SLOTS", "DISPLAY_LABEL", "DISPLAY_ON_CHARACTER", "DISPLAY_ON_CHAR_TOOLTIP", "DISPLAY_OPTIONS", "DISPLAY_SUBTEXT", "DK", "DMG", "DND", "DODGE", "DODGE_CHANCE", "DONE", "DONE_BY", "DONE_TO", "DPS_TEMPLATE", "DRAINS", "DRESSUP_FRAME", "DRESSUP_FRAME_INSTRUCTIONS", "DRUID_INTELLECT_TOOLTIP", "DRUNK_MESSAGE_ITEM_OTHER1", "DRUNK_MESSAGE_ITEM_OTHER2", "DRUNK_MESSAGE_ITEM_OTHER3", "DRUNK_MESSAGE_ITEM_OTHER4", "DRUNK_MESSAGE_ITEM_SELF1", "DRUNK_MESSAGE_ITEM_SELF2", "DRUNK_MESSAGE_ITEM_SELF3", "DRUNK_MESSAGE_ITEM_SELF4", "DRUNK_MESSAGE_OTHER1", "DRUNK_MESSAGE_OTHER2", "DRUNK_MESSAGE_OTHER3", "DRUNK_MESSAGE_OTHER4", "DRUNK_MESSAGE_SELF1", "DRUNK_MESSAGE_SELF2", "DRUNK_MESSAGE_SELF3", "DRUNK_MESSAGE_SELF4", "DUEL", "DUEL_COUNTDOWN", "DUEL_OUTOFBOUNDS_TIMER", "DUEL_REQUESTED", "DUEL_WINNER_KNOCKOUT", "DUEL_WINNER_RETREAT", "DUNGEONS_BUTTON", "DUNGEON_COMPLETED", "DUNGEON_DIFFICULTY", "DUNGEON_DIFFICULTY1", "DUNGEON_DIFFICULTY2", "DUNGEON_DIFFICULTY3", "DUNGEON_DIFFICULTY_5PLAYER", "DUNGEON_DIFFICULTY_5PLAYER_HEROIC", "DUNGEON_FLOOR_AHNKAHET1", "DUNGEON_FLOOR_AZJOLNERUB1", "DUNGEON_FLOOR_AZJOLNERUB2", "DUNGEON_FLOOR_AZJOLNERUB3", "DUNGEON_FLOOR_COTSTRATHOLME0", "DUNGEON_FLOOR_COTSTRATHOLME1", "DUNGEON_FLOOR_DALARAN1", "DUNGEON_FLOOR_DALARAN2", "DUNGEON_FLOOR_DRAKTHARONKEEP1", "DUNGEON_FLOOR_DRAKTHARONKEEP2", "DUNGEON_FLOOR_GUNDRAK1", "DUNGEON_FLOOR_HALLSOFLIGHTNING1", "DUNGEON_FLOOR_HALLSOFLIGHTNING2", "DUNGEON_FLOOR_HALLSOFREFLECTION1", "DUNGEON_FLOOR_ICECROWNCITADEL1", "DUNGEON_FLOOR_ICECROWNCITADEL2", "DUNGEON_FLOOR_ICECROWNCITADEL3", "DUNGEON_FLOOR_ICECROWNCITADEL4", "DUNGEON_FLOOR_ICECROWNCITADEL5", "DUNGEON_FLOOR_ICECROWNCITADEL6", "DUNGEON_FLOOR_ICECROWNCITADEL7", "DUNGEON_FLOOR_ICECROWNCITADEL8", "DUNGEON_FLOOR_NAXXRAMAS1", "DUNGEON_FLOOR_NAXXRAMAS2", "DUNGEON_FLOOR_NAXXRAMAS3", "DUNGEON_FLOOR_NAXXRAMAS4", "DUNGEON_FLOOR_NAXXRAMAS5", "DUNGEON_FLOOR_NAXXRAMAS6", "DUNGEON_FLOOR_NEXUS801", "DUNGEON_FLOOR_NEXUS802", "DUNGEON_FLOOR_NEXUS803", "DUNGEON_FLOOR_NEXUS804", "DUNGEON_FLOOR_PITOFSARON1", "DUNGEON_FLOOR_THEARGENTCOLISEUM1", "DUNGEON_FLOOR_THEARGENTCOLISEUM2", "DUNGEON_FLOOR_THEEYEOFETERNITY1", "DUNGEON_FLOOR_THEFORGEOFSOULS1", "DUNGEON_FLOOR_THENEXUS1", "DUNGEON_FLOOR_THEOBSIDIANSANCTUM1", "DUNGEON_FLOOR_ULDUAR0", "DUNGEON_FLOOR_ULDUAR1", "DUNGEON_FLOOR_ULDUAR2", "DUNGEON_FLOOR_ULDUAR3", "DUNGEON_FLOOR_ULDUAR4", "DUNGEON_FLOOR_ULDUAR5", "DUNGEON_FLOOR_ULDUAR771", "DUNGEON_FLOOR_UTGARDEKEEP1", "DUNGEON_FLOOR_UTGARDEKEEP2", "DUNGEON_FLOOR_UTGARDEKEEP3", "DUNGEON_FLOOR_UTGARDEPINNACLE1", "DUNGEON_FLOOR_UTGARDEPINNACLE2", "DUNGEON_FLOOR_VAULTOFARCHAVON1", "DUNGEON_FLOOR_VIOLETHOLD1", "DUNGEON_GROUP_FOUND_TOOLTIP", "DUNGEON_NAME_WITH_DIFFICULTY", "DURABILITY", "DURABILITYDAMAGE_DEATH", "DURABILITY_ABBR", "DURABILITY_TEMPLATE", "DYNAMIC", "D_DAYS", "D_HOURS", "D_MINUTES", "D_SECONDS", "EDIT_TICKET", "EFFECTS_LABEL", "EFFECTS_SUBTEXT", "EJECT_PASSENGER", "ELITE", "EMBLEM_BACKGROUND", "EMBLEM_BORDER", "EMBLEM_BORDER_COLOR", "EMBLEM_SYMBOL", "EMBLEM_SYMBOL_COLOR", "EMOTE", "EMOTE100_CMD1", "EMOTE100_CMD2", "EMOTE101_CMD", "EMOTE101_CMD1", "EMOTE101_CMD2", "EMOTE101_CMD3", "EMOTE102_CMD1", "EMOTE102_CMD2", "EMOTE103_CMD1", "EMOTE103_CMD2", "EMOTE104_CMD1", "EMOTE104_CMD2", "EMOTE105_CMD1", "EMOTE105_CMD2", "EMOTE106_CMD1", "EMOTE106_CMD2", "EMOTE107_CMD1", "EMOTE107_CMD2", "EMOTE107_CMD3", "EMOTE108_CMD1", "EMOTE108_CMD2", "EMOTE109_CMD1", "EMOTE109_CMD2", "EMOTE109_CMD3", "EMOTE10_CMD1", "EMOTE10_CMD2", "EMOTE10_CMD3", "EMOTE10_CMD4", "EMOTE110_CMD1", "EMOTE110_CMD2", "EMOTE111_CMD1", "EMOTE111_CMD2", "EMOTE112_CMD1", "EMOTE112_CMD2", "EMOTE112_CMD3", "EMOTE112_CMD4", "EMOTE113_CMD1", "EMOTE113_CMD2", "EMOTE114_CMD1", "EMOTE114_CMD2", "EMOTE114_CMD3", "EMOTE115_CMD1", "EMOTE115_CMD2", "EMOTE116_CMD1", "EMOTE116_CMD2", "EMOTE117_CMD1", "EMOTE117_CMD2", "EMOTE118_CMD1", "EMOTE118_CMD2", "EMOTE119_CMD1", "EMOTE119_CMD2", "EMOTE11_CMD1", "EMOTE11_CMD2", "EMOTE120_CMD1", "EMOTE120_CMD2", "EMOTE121_CMD1", "EMOTE121_CMD2", "EMOTE122_CMD1", "EMOTE122_CMD2", "EMOTE123_CMD1", "EMOTE123_CMD2", "EMOTE123_CMD3", "EMOTE123_CMD4", "EMOTE124_CMD1", "EMOTE124_CMD2", "EMOTE125_CMD1", "EMOTE125_CMD2", "EMOTE126_CMD1", "EMOTE126_CMD2", "EMOTE126_CMD3", "EMOTE126_CMD4", "EMOTE127_CMD1", "EMOTE127_CMD2", "EMOTE127_CMD3", "EMOTE127_CMD4", "EMOTE128_CMD1", "EMOTE128_CMD2", "EMOTE129_CMD1", "EMOTE129_CMD2", "EMOTE12_CMD1", "EMOTE12_CMD2", "EMOTE130_CMD1", "EMOTE130_CMD2", "EMOTE130_CMD3", "EMOTE130_CMD4", "EMOTE131_CMD1", "EMOTE131_CMD2", "EMOTE132_CMD1", "EMOTE132_CMD2", "EMOTE133_CMD1", "EMOTE133_CMD2", "EMOTE134_CMD1", "EMOTE134_CMD2", "EMOTE135_CMD1", "EMOTE135_CMD2", "EMOTE136_CMD1", "EMOTE136_CMD2", "EMOTE136_CMD3", "EMOTE136_CMD4", "EMOTE137_CMD1", "EMOTE137_CMD2", "EMOTE138_CMD1", "EMOTE138_CMD2", "EMOTE139_CMD1", "EMOTE139_CMD2", "EMOTE13_CMD1", "EMOTE13_CMD2", "EMOTE13_CMD3", "EMOTE13_CMD4", "EMOTE140_CMD1", "EMOTE140_CMD2", "EMOTE141_CMD1", "EMOTE141_CMD2", "EMOTE142_CMD1", "EMOTE142_CMD2", "EMOTE143_CMD1", "EMOTE143_CMD2", "EMOTE144_CMD1", "EMOTE144_CMD2", "EMOTE145_CMD1", "EMOTE145_CMD2", "EMOTE146_CMD1", "EMOTE146_CMD2", "EMOTE147_CMD1", "EMOTE147_CMD2", "EMOTE148_CMD1", "EMOTE148_CMD2", "EMOTE149_CMD1", "EMOTE149_CMD2", "EMOTE14_CMD1", "EMOTE14_CMD2", "EMOTE150_CMD1", "EMOTE150_CMD2", "EMOTE151_CMD1", "EMOTE151_CMD2", "EMOTE152_CMD1", "EMOTE152_CMD2", "EMOTE153_CMD1", "EMOTE153_CMD2", "EMOTE154_CMD1", "EMOTE154_CMD2", "EMOTE155_CMD1", "EMOTE155_CMD2", "EMOTE156_CMD1", "EMOTE156_CMD2", "EMOTE157_CMD1", "EMOTE157_CMD2", "EMOTE158_CMD1", "EMOTE158_CMD2", "EMOTE159_CMD1", "EMOTE159_CMD2", "EMOTE15_CMD1", "EMOTE15_CMD2", "EMOTE160_CMD1", "EMOTE160_CMD2", "EMOTE161_CMD1", "EMOTE161_CMD2", "EMOTE162_CMD1", "EMOTE162_CMD2", "EMOTE163_CMD1", "EMOTE163_CMD2", "EMOTE164_CMD1", "EMOTE164_CMD2", "EMOTE165_CMD1", "EMOTE165_CMD2", "EMOTE166_CMD1", "EMOTE166_CMD2", "EMOTE167_CMD1", "EMOTE167_CMD2", "EMOTE168_CMD1", "EMOTE168_CMD2", "EMOTE169_CMD1", "EMOTE169_CMD2", "EMOTE16_CMD1", "EMOTE16_CMD2", "EMOTE170_CMD1", "EMOTE170_CMD2", "EMOTE171_CMD1", "EMOTE171_CMD2", "EMOTE17_CMD1", "EMOTE17_CMD2", "EMOTE18_CMD1", "EMOTE18_CMD2", "EMOTE18_CMD3", "EMOTE18_CMD4", "EMOTE19_CMD1", "EMOTE19_CMD2", "EMOTE19_CMD3", "EMOTE19_CMD4", "EMOTE19_CMD5", "EMOTE19_CMD6", "EMOTE1_CMD1", "EMOTE1_CMD2", "EMOTE20_CMD1", "EMOTE20_CMD2", "EMOTE21_CMD1", "EMOTE21_CMD2", "EMOTE21_CMD3", "EMOTE21_CMD4", "EMOTE22_CMD1", "EMOTE22_CMD2", "EMOTE22_CMD3", "EMOTE22_CMD4", "EMOTE22_CMD5", "EMOTE22_CMD6", "EMOTE23_CMD1", "EMOTE23_CMD2", "EMOTE24_CMD1", "EMOTE24_CMD2", "EMOTE25_CMD1", "EMOTE25_CMD2", "EMOTE26_CMD1", "EMOTE26_CMD2", "EMOTE26_CMD3", "EMOTE26_CMD4", "EMOTE26_CMD5", "EMOTE26_CMD6", "EMOTE27_CMD1", "EMOTE27_CMD2", "EMOTE28_CMD1", "EMOTE28_CMD2", "EMOTE29_CMD1", "EMOTE29_CMD2", "EMOTE29_CMD3", "EMOTE29_CMD4", "EMOTE2_CMD1", "EMOTE2_CMD2", "EMOTE304_CMD1", "EMOTE304_CMD3", "EMOTE304_CMD4", "EMOTE306_CMD1", "EMOTE306_CMD2", "EMOTE306_CMD3", "EMOTE306_CMD4", "EMOTE30_CMD1", "EMOTE30_CMD2", "EMOTE30_CMD3", "EMOTE30_CMD4", "EMOTE31_CMD1", "EMOTE31_CMD2", "EMOTE32_CMD1", "EMOTE32_CMD2", "EMOTE32_CMD3", "EMOTE32_CMD4", "EMOTE32_CMD5", "EMOTE32_CMD6", "EMOTE33_CMD1", "EMOTE33_CMD2", "EMOTE34_CMD1", "EMOTE34_CMD2", "EMOTE35_CMD1", "EMOTE35_CMD2", "EMOTE368_CMD1", "EMOTE368_CMD2", "EMOTE369_CMD1", "EMOTE369_CMD2", "EMOTE36_CMD1", "EMOTE36_CMD2", "EMOTE36_CMD3", "EMOTE36_CMD4", "EMOTE370_CMD1", "EMOTE370_CMD2", "EMOTE371_CMD1", "EMOTE371_CMD2", "EMOTE372_CMD1", "EMOTE372_CMD2", "EMOTE373_CMD1", "EMOTE373_CMD2", "EMOTE374_CMD1", "EMOTE374_CMD2", "EMOTE375_CMD1", "EMOTE375_CMD2", "EMOTE376_CMD1", "EMOTE376_CMD2", "EMOTE377_CMD1", "EMOTE377_CMD2", "EMOTE377_CMD3", "EMOTE377_CMD4", "EMOTE37_CMD1", "EMOTE37_CMD2", "EMOTE380_CMD1", "EMOTE380_CMD2", "EMOTE381_CMD1", "EMOTE381_CMD2", "EMOTE382_CMD1", "EMOTE382_CMD2", "EMOTE383_CMD1", "EMOTE383_CMD2", "EMOTE384_CMD1", "EMOTE384_CMD2", "EMOTE384_CMD3", "EMOTE384_CMD4", "EMOTE385_CMD1", "EMOTE385_CMD2", "EMOTE385_CMD3", "EMOTE385_CMD4", "EMOTE386_CMD1", "EMOTE386_CMD2", "EMOTE387_CMD1", "EMOTE387_CMD2", "EMOTE389_CMD1", "EMOTE389_CMD2", "EMOTE38_CMD1", "EMOTE38_CMD2", "EMOTE38_CMD3", "EMOTE38_CMD4", "EMOTE38_CMD5", "EMOTE38_CMD6", "EMOTE390_CMD1", "EMOTE390_CMD2", "EMOTE390_CMD3", "EMOTE390_CMD4", "EMOTE391_CMD1", "EMOTE391_CMD2", "EMOTE392_CMD1", "EMOTE392_CMD2", "EMOTE393_CMD1", "EMOTE393_CMD2", "EMOTE394_CMD1", "EMOTE394_CMD2", "EMOTE395_CMD1", "EMOTE395_CMD2", "EMOTE396_CMD1", "EMOTE396_CMD2", "EMOTE398_CMD1", "EMOTE398_CMD2", "EMOTE399_CMD1", "EMOTE399_CMD2", "EMOTE39_CMD1", "EMOTE39_CMD2", "EMOTE3_CMD1", "EMOTE3_CMD2", "EMOTE3_CMD3", "EMOTE3_CMD4", "EMOTE401_CMD1", "EMOTE401_CMD2", "EMOTE402_CMD1", "EMOTE402_CMD2", "EMOTE403_CMD1", "EMOTE403_CMD2", "EMOTE404_CMD1", "EMOTE404_CMD2", "EMOTE405_CMD1", "EMOTE405_CMD2", "EMOTE406_CMD1", "EMOTE406_CMD2", "EMOTE407_CMD1", "EMOTE407_CMD2", "EMOTE408_CMD1", "EMOTE408_CMD2", "EMOTE409_CMD1", "EMOTE409_CMD2", "EMOTE40_CMD1", "EMOTE40_CMD2", "EMOTE410_CMD1", "EMOTE410_CMD2", "EMOTE411_CMD1", "EMOTE411_CMD2", "EMOTE413_CMD1", "EMOTE413_CMD2", "EMOTE414_CMD1", "EMOTE414_CMD2", "EMOTE415_CMD1", "EMOTE415_CMD2", "EMOTE416_CMD1", "EMOTE416_CMD2", "EMOTE417_CMD1", "EMOTE417_CMD2", "EMOTE418_CMD1", "EMOTE418_CMD2", "EMOTE41_CMD1", "EMOTE41_CMD2", "EMOTE41_CMD3", "EMOTE41_CMD4", "EMOTE420_CMD1", "EMOTE420_CMD2", "EMOTE421_CMD1", "EMOTE421_CMD2", "EMOTE421_CMD3", "EMOTE421_CMD4", "EMOTE422_CMD1", "EMOTE422_CMD2", "EMOTE423_CMD1", "EMOTE423_CMD2", "EMOTE424_CMD1", "EMOTE424_CMD2", "EMOTE425_CMD1", "EMOTE425_CMD2", "EMOTE426_CMD1", "EMOTE426_CMD2", "EMOTE427_CMD1", "EMOTE427_CMD2", "EMOTE428_CMD1", "EMOTE428_CMD2", "EMOTE428_CMD3", "EMOTE428_CMD4", "EMOTE429_CMD1", "EMOTE429_CMD2", "EMOTE42_CMD1", "EMOTE42_CMD2", "EMOTE42_CMD3", "EMOTE42_CMD4", "EMOTE430_CMD1", "EMOTE430_CMD2", "EMOTE431_CMD1", "EMOTE431_CMD2", "EMOTE432_CMD1", "EMOTE432_CMD2", "EMOTE432_CMD3", "EMOTE432_CMD4", "EMOTE433_CMD1", "EMOTE433_CMD2", "EMOTE434_CMD1", "EMOTE434_CMD2", "EMOTE435_CMD1", "EMOTE435_CMD2", "EMOTE436_CMD1", "EMOTE436_CMD2", "EMOTE437_CMD1", "EMOTE437_CMD2", "EMOTE438_CMD1", "EMOTE438_CMD2", "EMOTE43_CMD1", "EMOTE43_CMD2", "EMOTE43_CMD3", "EMOTE43_CMD4", "EMOTE43_CMD5", "EMOTE43_CMD6", "EMOTE440_CMD1", "EMOTE440_CMD2", "EMOTE441_CMD1", "EMOTE441_CMD2", "EMOTE442_CMD1", "EMOTE442_CMD2", "EMOTE443_CMD1", "EMOTE443_CMD2", "EMOTE444_CMD1", "EMOTE444_CMD2", "EMOTE445_CMD1", "EMOTE445_CMD2", "EMOTE446_CMD1", "EMOTE446_CMD2", "EMOTE447_CMD1", "EMOTE447_CMD2", "EMOTE448_CMD1", "EMOTE448_CMD2", "EMOTE449_CMD1", "EMOTE449_CMD2", "EMOTE44_CMD1", "EMOTE44_CMD2", "EMOTE44_CMD3", "EMOTE450_CMD1", "EMOTE450_CMD2", "EMOTE450_CMD3", "EMOTE450_CMD4", "EMOTE450_CMD5", "EMOTE450_CMD6", "EMOTE451_CMD1", "EMOTE451_CMD2", "EMOTE452_CMD1", "EMOTE452_CMD2", "EMOTE45_CMD1", "EMOTE45_CMD2", "EMOTE46_CMD1", "EMOTE46_CMD2", "EMOTE47_CMD1", "EMOTE47_CMD2", "EMOTE48_CMD1", "EMOTE48_CMD2", "EMOTE49_CMD1", "EMOTE49_CMD2", "EMOTE49_CMD3", "EMOTE49_CMD4", "EMOTE4_CMD1", "EMOTE4_CMD2", "EMOTE4_CMD3", "EMOTE4_CMD4", "EMOTE50_CMD1", "EMOTE50_CMD2", "EMOTE50_CMD3", "EMOTE50_CMD4", "EMOTE50_CMD5", "EMOTE50_CMD6", "EMOTE51_CMD1", "EMOTE51_CMD2", "EMOTE52_CMD1", "EMOTE52_CMD2", "EMOTE52_CMD3", "EMOTE52_CMD4", "EMOTE53_CMD1", "EMOTE53_CMD2", "EMOTE54_CMD1", "EMOTE54_CMD2", "EMOTE55_CMD1", "EMOTE55_CMD2", "EMOTE55_CMD3", "EMOTE55_CMD4", "EMOTE55_CMD5", "EMOTE55_CMD6", "EMOTE56_CMD1", "EMOTE56_CMD2", "EMOTE56_CMD3", "EMOTE56_CMD4", "EMOTE57_CMD1", "EMOTE57_CMD2", "EMOTE58_CMD1", "EMOTE58_CMD2", "EMOTE58_CMD3", "EMOTE58_CMD4", "EMOTE58_CMD5", "EMOTE58_CMD6", "EMOTE59_CMD1", "EMOTE59_CMD2", "EMOTE59_CMD3", "EMOTE59_CMD4", "EMOTE5_CMD1", "EMOTE5_CMD2", "EMOTE5_CMD3", "EMOTE5_CMD4", "EMOTE5_CMD5", "EMOTE5_CMD6", "EMOTE60_CMD1", "EMOTE60_CMD2", "EMOTE60_CMD3", "EMOTE61_CMD1", "EMOTE61_CMD2", "EMOTE61_CMD3", "EMOTE61_CMD4", "EMOTE62_CMD1", "EMOTE62_CMD2", "EMOTE62_CMD3", "EMOTE62_CMD4", "EMOTE62_CMD5", "EMOTE62_CMD6", "EMOTE62_CMD7", "EMOTE62_CMD8", "EMOTE63_CMD1", "EMOTE63_CMD2", "EMOTE64_CMD1", "EMOTE64_CMD2", "EMOTE65_CMD1", "EMOTE65_CMD2", "EMOTE66_CMD1", "EMOTE66_CMD2", "EMOTE67_CMD1", "EMOTE67_CMD2", "EMOTE68_CMD1", "EMOTE68_CMD2", "EMOTE68_CMD3", "EMOTE68_CMD4", "EMOTE69_CMD1", "EMOTE69_CMD2", "EMOTE69_CMD3", "EMOTE69_CMD4", "EMOTE6_CMD1", "EMOTE6_CMD2", "EMOTE70_CMD1", "EMOTE70_CMD2", "EMOTE71_CMD1", "EMOTE71_CMD2", "EMOTE72_CMD1", "EMOTE72_CMD2", "EMOTE73_CMD1", "EMOTE73_CMD2", "EMOTE74_CMD1", "EMOTE74_CMD2", "EMOTE75_CMD1", "EMOTE75_CMD2", "EMOTE76_CMD1", "EMOTE76_CMD2", "EMOTE76_CMD3", "EMOTE76_CMD4", "EMOTE77_CMD1", "EMOTE77_CMD2", "EMOTE78_CMD1", "EMOTE78_CMD2", "EMOTE79_CMD1", "EMOTE79_CMD2", "EMOTE7_CMD1", "EMOTE7_CMD2", "EMOTE80_CMD1", "EMOTE80_CMD2", "EMOTE80_CMD3", "EMOTE80_CMD4", "EMOTE80_CMD5", "EMOTE80_CMD6", "EMOTE81_CMD1", "EMOTE81_CMD2", "EMOTE82_CMD1", "EMOTE82_CMD2", "EMOTE82_CMD3", "EMOTE82_CMD4", "EMOTE83_CMD1", "EMOTE83_CMD2", "EMOTE83_CMD3", "EMOTE84_CMD1", "EMOTE84_CMD2", "EMOTE85_CMD1", "EMOTE85_CMD2", "EMOTE86_CMD1", "EMOTE86_CMD2", "EMOTE87_CMD1", "EMOTE87_CMD2", "EMOTE88_CMD1", "EMOTE88_CMD2", "EMOTE89_CMD1", "EMOTE89_CMD2", "EMOTE8_CMD1", "EMOTE8_CMD2", "EMOTE90_CMD1", "EMOTE90_CMD2", "EMOTE91_CMD1", "EMOTE91_CMD2", "EMOTE92_CMD1", "EMOTE92_CMD2", "EMOTE93_CMD1", "EMOTE93_CMD2", "EMOTE94_CMD1", "EMOTE94_CMD2", "EMOTE95_CMD1", "EMOTE95_CMD2", "EMOTE95_CMD3", "EMOTE95_CMD4", "EMOTE96_CMD1", "EMOTE96_CMD2", "EMOTE96_CMD3", "EMOTE96_CMD4", "EMOTE97_CMD1", "EMOTE97_CMD2", "EMOTE98_CMD1", "EMOTE98_CMD2", "EMOTE98_CMD3", "EMOTE98_CMD4", "EMOTE98_CMD5", "EMOTE98_CMD6", "EMOTE99_CMD1", "EMOTE99_CMD2", "EMOTE99_CMD3", "EMOTE99_CMD4", "EMOTE99_CMD5", "EMOTE99_CMD6", "EMOTE99_CMD7", "EMOTE99_CMD8", "EMOTE9_CMD1", "EMOTE9_CMD2", "EMOTE_MESSAGE", "EMOTE_STATE_KNEEL", "EMPTY", "EMPTY_SOCKET", "EMPTY_SOCKET_BLUE", "EMPTY_SOCKET_META", "EMPTY_SOCKET_NO_COLOR", "EMPTY_SOCKET_RED", "EMPTY_SOCKET_YELLOW", "EMPTY_STABLE_SLOT", "ENABLE", "ENABLE_ALL_SHADERS", "ENABLE_AMBIENCE", "ENABLE_BGSOUND", "ENABLE_DSP_EFFECTS", "ENABLE_EMOTE_SOUNDS", "ENABLE_ERROR_SPEECH", "ENABLE_GROUP_SPEECH", "ENABLE_HARDWARE", "ENABLE_MICROPHONE", "ENABLE_MUSIC", "ENABLE_MUSIC_LOOPING", "ENABLE_PET_SOUNDS", "ENABLE_REVERB", "ENABLE_SOFTWARE_HRTF", "ENABLE_SOUND", "ENABLE_SOUNDFX", "ENABLE_SOUND_AT_CHARACTER", "ENABLE_STEREO_VIDEO", "ENABLE_TUTORIAL_TEXT", "ENABLE_VOICECHAT", "ENCHANTS", "ENCHANT_AURA_COMBATLOG_TOOLTIP", "ENCHANT_CONDITION_AND", "ENCHANT_CONDITION_EQUAL_COMPARE", "ENCHANT_CONDITION_EQUAL_VALUE", "ENCHANT_CONDITION_LESS_VALUE", "ENCHANT_CONDITION_MORE_COMPARE", "ENCHANT_CONDITION_MORE_EQUAL_COMPARE", "ENCHANT_CONDITION_MORE_VALUE", "ENCHANT_CONDITION_NOT_EQUAL_COMPARE", "ENCHANT_CONDITION_NOT_EQUAL_VALUE", "ENCHANT_CONDITION_REQUIRES", "ENCHANT_ITEM_MIN_SKILL", "ENCHANT_ITEM_REQ_LEVEL", "ENCHANT_ITEM_REQ_SKILL", "ENCHANT_SLOT", "ENCHSLOT_2HWEAPON", "ENCHSLOT_WEAPON", "ENCLOSED_MONEY", "ENCN", "ENCRYPTED", "END_BOUND_TRADEABLE", "END_REFUND", "ENEMY", "ENERGY", "ENERGY_COST", "ENERGY_COST_PER_TIME", "ENGB", "ENSCRIBE", "ENTERING_COMBAT", "ENTER_BATTLE", "ENTER_CODE", "ENTER_DUNGEON", "ENTER_FILTER_NAME", "ENTER_INVITE_NOTE", "ENTER_MACRO_LABEL", "ENTER_NAME_OR_EMAIL", "ENTIRE_LINE", "ENTIRE_LINE_COMBATLOG_TOOLTIP", "ENTW", "ENUS", "ENVIRONMENTAL_DAMAGE", "ENVIRONMENTAL_DAMAGE_COMBATLOG_TOOLTIP", "ENVIRONMENT_DETAIL", "EQUIPMENT_MANAGER", "EQUIPMENT_MANAGER_BAGS_FULL", "EQUIPMENT_MANAGER_COMBAT_SWAP", "EQUIPMENT_MANAGER_IGNORE_SLOT", "EQUIPMENT_MANAGER_IS_DISABLED", "EQUIPMENT_MANAGER_ITEMS_MISSING_TOOLTIP", "EQUIPMENT_MANAGER_MISSING_ITEM", "EQUIPMENT_MANAGER_PLACE_IN_BAGS", "EQUIPMENT_MANAGER_UNIGNORE_SLOT", "EQUIPMENT_SETS", "EQUIPMENT_SETS_TOO_MANY", "EQUIPSET_EQUIP", "EQUIP_CONTAINER", "EQUIP_NO_DROP", "ERRORS", "ERROR_CANNOT_BIND", "ERROR_CAPS", "ERROR_SLASH_CHANGEACTIONBAR", "ERROR_SLASH_EQUIP_TO_SLOT", "ERROR_SLASH_LOOT_SETTHRESHOLD", "ERROR_SLASH_SWAPACTIONBAR", "ERROR_SLASH_TEAM_CAPTAIN", "ERROR_SLASH_TEAM_DISBAND", "ERROR_SLASH_TEAM_INVITE", "ERROR_SLASH_TEAM_QUIT", "ERROR_SLASH_TEAM_UNINVITE", "ERR_2HANDED_EQUIPPED", "ERR_2HSKILLNOTFOUND", "ERR_ABILITY_COOLDOWN", "ERR_ACHIEVEMENT_WATCH_COMPLETED", "ERR_ALREADY_INVITED_TO_ARENA_TEAM_S", "ERR_ALREADY_INVITED_TO_GUILD_S", "ERR_ALREADY_IN_ARENA_TEAM", "ERR_ALREADY_IN_ARENA_TEAM_S", "ERR_ALREADY_IN_GROUP_S", "ERR_ALREADY_IN_GUILD", "ERR_ALREADY_IN_GUILD_S", "ERR_ALREADY_PICKPOCKETED", "ERR_ALREADY_QUEUED_FOR_SOMETHING_ELSE", "ERR_ALREADY_TRADING", "ERR_AMMO_ONLY", "ERR_APPROACHING_NO_PLAY_TIME", "ERR_APPROACHING_NO_PLAY_TIME_2", "ERR_APPROACHING_PARTIAL_PLAY_TIME", "ERR_APPROACHING_PARTIAL_PLAY_TIME_2", "ERR_ARENA_EXPIRED_CAIS", "ERR_ARENA_NO_TEAM_II", "ERR_ARENA_TEAMS_LOCKED", "ERR_ARENA_TEAM_CHANGE_FAILED_QUEUED", "ERR_ARENA_TEAM_CREATE_S", "ERR_ARENA_TEAM_DISBANDED_S", "ERR_ARENA_TEAM_FOUNDER_S", "ERR_ARENA_TEAM_INTERNAL", "ERR_ARENA_TEAM_INVITE_SS", "ERR_ARENA_TEAM_JOIN_SS", "ERR_ARENA_TEAM_LEADER_CHANGED_SSS", "ERR_ARENA_TEAM_LEADER_IS_SS", "ERR_ARENA_TEAM_LEADER_LEAVE_S", "ERR_ARENA_TEAM_LEAVE_SS", "ERR_ARENA_TEAM_LEVEL_TOO_LOW_I", "ERR_ARENA_TEAM_NAME_EXISTS_S", "ERR_ARENA_TEAM_NAME_INVALID", "ERR_ARENA_TEAM_NOT_ALLIED", "ERR_ARENA_TEAM_NOT_FOUND", "ERR_ARENA_TEAM_PARTY_SIZE", "ERR_ARENA_TEAM_PERMISSIONS", "ERR_ARENA_TEAM_PLAYER_NOT_FOUND_S", "ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM", "ERR_ARENA_TEAM_PLAYER_NOT_IN_TEAM_SS", "ERR_ARENA_TEAM_QUIT_S", "ERR_ARENA_TEAM_REMOVE_SSS", "ERR_ARENA_TEAM_TARGET_TOO_HIGH_S", "ERR_ARENA_TEAM_TARGET_TOO_LOW_S", "ERR_ARENA_TEAM_TOO_MANY_MEMBERS_S", "ERR_ARENA_TEAM_YOU_JOIN_S", "ERR_ATTACK_CHANNEL", "ERR_ATTACK_CHARMED", "ERR_ATTACK_CONFUSED", "ERR_ATTACK_DEAD", "ERR_ATTACK_FLEEING", "ERR_ATTACK_MOUNTED", "ERR_ATTACK_PACIFIED", "ERR_ATTACK_PREVENTED_BY_MECHANIC_S", "ERR_ATTACK_STUNNED", "ERR_AUCTION_BAG", "ERR_AUCTION_BID_INCREMENT", "ERR_AUCTION_BID_OWN", "ERR_AUCTION_BID_PLACED", "ERR_AUCTION_BOUND_ITEM", "ERR_AUCTION_CONJURED_ITEM", "ERR_AUCTION_DATABASE_ERROR", "ERR_AUCTION_ENOUGH_ITEMS", "ERR_AUCTION_EXPIRED_S", "ERR_AUCTION_HIGHER_BID", "ERR_AUCTION_HOUSE_DISABLED", "ERR_AUCTION_LIMITED_DURATION_ITEM", "ERR_AUCTION_LOOT_ITEM", "ERR_AUCTION_MIN_BID", "ERR_AUCTION_OUTBID_S", "ERR_AUCTION_QUEST_ITEM", "ERR_AUCTION_REMOVED", "ERR_AUCTION_REMOVED_S", "ERR_AUCTION_REPAIR_ITEM", "ERR_AUCTION_SOLD_S", "ERR_AUCTION_STARTED", "ERR_AUCTION_USED_CHARGES", "ERR_AUCTION_WON_S", "ERR_AUCTION_WRAPPED_ITEM", "ERR_AUTOFOLLOW_TOO_FAR", "ERR_AUTOLOOT_MONEY_S", "ERR_BADATTACKFACING", "ERR_BADATTACKPOS", "ERR_BAD_ON_USE_ENCHANT", "ERR_BAD_PLAYER_NAME_S", "ERR_BAG_FULL", "ERR_BAG_IN_BAG", "ERR_BANKSLOT_FAILED_TOO_MANY", "ERR_BANKSLOT_INSUFFICIENT_FUNDS", "ERR_BANKSLOT_NOTBANKER", "ERR_BANK_FULL", "ERR_BATTLEDGROUND_QUEUED_FOR_RATED", "ERR_BATTLEGROUND_ALREADY_IN", "ERR_BATTLEGROUND_CANNOT_QUEUE_FOR_RATED", "ERR_BATTLEGROUND_INFO_THROTTLED", "ERR_BATTLEGROUND_JOIN_FAILED", "ERR_BATTLEGROUND_JOIN_RANGE_INDEX", "ERR_BATTLEGROUND_JOIN_TIMED_OUT", "ERR_BATTLEGROUND_NOT_IN_BATTLEGROUND", "ERR_BATTLEGROUND_NOT_IN_TEAM", "ERR_BATTLEGROUND_TEAM_LEFT_QUEUE", "ERR_BATTLEGROUND_TOO_MANY_QUEUES", "ERR_BG_PLAYER_JOINED_SS", "ERR_BG_PLAYER_LEFT_S", "ERR_BN_BROADCAST_THROTTLE", "ERR_BN_FRIEND_ALREADY", "ERR_BN_FRIEND_BLOCKED", "ERR_BN_FRIEND_REQUEST_SENT", "ERR_BN_FRIEND_SELF", "ERR_BUTTON_LOCKED", "ERR_CANNOTCREATEDIRECTORY", "ERR_CANNOTCREATEFILE", "ERR_CANNOT_IGNORE_BN_FRIEND", "ERR_CANTATTACK_NOTSTANDING", "ERR_CANT_DO_THAT_IN_A_GROUP", "ERR_CANT_DO_THAT_WHILE_LFM", "ERR_CANT_EQUIP_EVER", "ERR_CANT_EQUIP_LEVEL_I", "ERR_CANT_EQUIP_NEED_TALENT", "ERR_CANT_EQUIP_RANK", "ERR_CANT_EQUIP_RATING", "ERR_CANT_EQUIP_REPUTATION", "ERR_CANT_EQUIP_SKILL", "ERR_CANT_INTERACT_SHAPESHIFTED", "ERR_CANT_SPEAK_LANGAGE", "ERR_CANT_STACK", "ERR_CANT_SWAP", "ERR_CANT_USE_DISARMED", "ERR_CANT_USE_ITEM", "ERR_CANT_USE_ITEM_IN_ARENA", "ERR_CANT_WRAP_BAGS", "ERR_CANT_WRAP_BOUND", "ERR_CANT_WRAP_EQUIPPED", "ERR_CANT_WRAP_STACKABLE", "ERR_CANT_WRAP_UNIQUE", "ERR_CANT_WRAP_WRAPPED", "ERR_CHAT_PLAYER_AMBIGUOUS_S", "ERR_CHAT_PLAYER_NOT_FOUND_S", "ERR_CHAT_RESTRICTED", "ERR_CHAT_THROTTLED", "ERR_CHAT_WHILE_DEAD", "ERR_CHAT_WRONG_FACTION", "ERR_CHEST_IN_USE", "ERR_CLICK_ON_ITEM_TO_FEED", "ERR_CLIENT_LOCKED_OUT", "ERR_COMBAT_DAMAGE_SSI", "ERR_COMMAND_NEEDS_TARGET", "ERR_COMPLAINT_IN_SAME_GUILD", "ERR_COMSAT_CONNECT_FAIL", "ERR_COMSAT_DISCONNECT", "ERR_COMSAT_RECONNECT_ATTEMPT", "ERR_CORPSE_IS_NOT_IN_INSTANCE", "ERR_CURRENCY_FULL", "ERR_DANCE_CREATE_DUPLICATE", "ERR_DANCE_DELETE_FAILED", "ERR_DANCE_SAVE_FAILED", "ERR_DEATHBINDALREADYBOUND", "ERR_DEATHBIND_SUCCESS_S", "ERR_DECLINE_GROUP_S", "ERR_DESTROY_NONEMPTY_BAG", "ERR_DIFFICULTY_CHANGE_ALREADY_STARTED", "ERR_DIFFICULTY_CHANGE_COMBAT", "ERR_DIFFICULTY_CHANGE_COOLDOWN_S", "ERR_DIFFICULTY_CHANGE_ENCOUNTER", "ERR_DIFFICULTY_CHANGE_PLAYER_BUSY", "ERR_DIFFICULTY_CHANGE_WORLDSTATE", "ERR_DISMOUNT_NOPET", "ERR_DISMOUNT_NOTMOUNTED", "ERR_DISMOUNT_NOTYOURPET", "ERR_DOOR_LOCKED", "ERR_DROP_BOUND_ITEM", "ERR_DUEL_CANCELLED", "ERR_DUEL_REQUESTED", "ERR_DUNGEON_DIFFICULTY_CHANGED_S", "ERR_DUNGEON_DIFFICULTY_FAILED", "ERR_EAT_WHILE_MOVNG", "ERR_EMBLEMERROR_NOTABARDGEOSET", "ERR_EQUIP_TRADE_ITEM", "ERR_EXHAUSTION_EXHAUSTED", "ERR_EXHAUSTION_NORMAL", "ERR_EXHAUSTION_RESTED", "ERR_EXHAUSTION_TIRED", "ERR_EXHAUSTION_WELLRESTED", "ERR_FEIGN_DEATH_RESISTED", "ERR_FILTERING_YOU_S", "ERR_FISH_ESCAPED", "ERR_FISH_NOT_HOOKED", "ERR_FOOD_COOLDOWN", "ERR_FRIEND_ADDED_S", "ERR_FRIEND_ALREADY_S", "ERR_FRIEND_DB_ERROR", "ERR_FRIEND_DELETED", "ERR_FRIEND_ERROR", "ERR_FRIEND_LIST_FULL", "ERR_FRIEND_NOT_FOUND", "ERR_FRIEND_OFFLINE_S", "ERR_FRIEND_ONLINE_SS", "ERR_FRIEND_REMOVED_S", "ERR_FRIEND_SELF", "ERR_FRIEND_WRONG_FACTION", "ERR_GENERIC_NO_TARGET", "ERR_GENERIC_NO_VALID_TARGETS", "ERR_GENERIC_STUNNED", "ERR_GMRESPONSE_DB_ERROR", "ERR_GROUP_ACTION_THROTTLED", "ERR_GROUP_DISBANDED", "ERR_GROUP_FULL", "ERR_GROUP_JOIN_BATTLEGROUND_DESERTERS", "ERR_GROUP_JOIN_BATTLEGROUND_FAIL", "ERR_GROUP_JOIN_BATTLEGROUND_S", "ERR_GROUP_JOIN_BATTLEGROUND_TOO_MANY", "ERR_GROUP_SWAP_FAILED", "ERR_GUILDEMBLEM_COLORSPRESENT", "ERR_GUILDEMBLEM_INVALIDVENDOR", "ERR_GUILDEMBLEM_INVALID_TABARD_COLORS", "ERR_GUILDEMBLEM_NOGUILD", "ERR_GUILDEMBLEM_NOTENOUGHMONEY", "ERR_GUILDEMBLEM_NOTGUILDMASTER", "ERR_GUILDEMBLEM_SAME", "ERR_GUILDEMBLEM_SUCCESS", "ERR_GUILD_ACCEPT", "ERR_GUILD_BANK_BOUND_ITEM", "ERR_GUILD_BANK_CONJURED_ITEM", "ERR_GUILD_BANK_EQUIPPED_ITEM", "ERR_GUILD_BANK_FULL", "ERR_GUILD_BANK_QUEST_ITEM", "ERR_GUILD_BANK_WRAPPED_ITEM", "ERR_GUILD_CREATE_S", "ERR_GUILD_DECLINE_S", "ERR_GUILD_DEMOTE_SSS", "ERR_GUILD_DISBANDED", "ERR_GUILD_DISBAND_S", "ERR_GUILD_DISBAND_SELF", "ERR_GUILD_FOUNDER_S", "ERR_GUILD_INTERNAL", "ERR_GUILD_INVITE_S", "ERR_GUILD_JOIN_S", "ERR_GUILD_LEADER_CHANGED_SS", "ERR_GUILD_LEADER_IS_S", "ERR_GUILD_LEADER_LEAVE", "ERR_GUILD_LEADER_S", "ERR_GUILD_LEADER_SELF", "ERR_GUILD_LEAVE_RESULT", "ERR_GUILD_LEAVE_S", "ERR_GUILD_NAME_EXISTS_S", "ERR_GUILD_NOT_ALLIED", "ERR_GUILD_NOT_ENOUGH_MONEY", "ERR_GUILD_PERMISSIONS", "ERR_GUILD_PLAYER_NOT_FOUND_S", "ERR_GUILD_PLAYER_NOT_IN_GUILD", "ERR_GUILD_PLAYER_NOT_IN_GUILD_S", "ERR_GUILD_PROMOTE_SSS", "ERR_GUILD_QUIT_S", "ERR_GUILD_RANKS_LOCKED", "ERR_GUILD_RANK_IN_USE", "ERR_GUILD_RANK_TOO_HIGH_S", "ERR_GUILD_RANK_TOO_LOW_S", "ERR_GUILD_REMOVE_SELF", "ERR_GUILD_REMOVE_SS", "ERR_GUILD_WITHDRAW_LIMIT", "ERR_IGNORE_ADDED_S", "ERR_IGNORE_ALREADY_S", "ERR_IGNORE_AMBIGUOUS", "ERR_IGNORE_DELETED", "ERR_IGNORE_FULL", "ERR_IGNORE_NOT_FOUND", "ERR_IGNORE_REMOVED_S", "ERR_IGNORE_SELF", "ERR_IGNORING_YOU_S", "ERR_INITIATE_TRADE_S", "ERR_INSPECT_S", "ERR_INTERNAL_BAG_ERROR", "ERR_INVALID_ATTACK_TARGET", "ERR_INVALID_FOLLOW_TARGET", "ERR_INVALID_GLYPH_SLOT", "ERR_INVALID_INSPECT_TARGET", "ERR_INVALID_ITEM_TARGET", "ERR_INVALID_PROMOTION_CODE", "ERR_INVALID_RAID_TARGET", "ERR_INVALID_TELEPORT_LOCATION", "ERR_INVITED_ALREADY_IN_GROUP_SS", "ERR_INVITED_TO_ARENA_TEAM", "ERR_INVITED_TO_GROUP_SS", "ERR_INVITED_TO_GUILD", "ERR_INVITED_TO_GUILD_SSS", "ERR_INVITE_IN_COMBAT", "ERR_INVITE_NO_PARTY_SERVER", "ERR_INVITE_PARTY_BUSY", "ERR_INVITE_PLAYER_S", "ERR_INVITE_RESTRICTED", "ERR_INVITE_SELF", "ERR_INVITE_UNKNOWN_REALM", "ERR_INV_FULL", "ERR_IN_NON_RANDOM_BG", "ERR_IN_RANDOM_BG", "ERR_ITEM_CANT_BE_DESTROYED", "ERR_ITEM_COOLDOWN", "ERR_ITEM_INVENTORY_FULL_SATCHEL", "ERR_ITEM_LOCKED", "ERR_ITEM_MAX_COUNT", "ERR_ITEM_MAX_COUNT_EQUIPPED_SOCKETED", "ERR_ITEM_MAX_COUNT_SOCKETED", "ERR_ITEM_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "ERR_ITEM_MAX_LIMIT_CATEGORY_EQUIPPED_EXCEEDED_IS", "ERR_ITEM_MAX_LIMIT_CATEGORY_SOCKETED_EXCEEDED_IS", "ERR_ITEM_NOT_FOUND", "ERR_ITEM_UNIQUE_EQUIPABLE", "ERR_ITEM_UNIQUE_EQUIPPABLE", "ERR_ITEM_UNIQUE_EQUIPPABLE_SOCKETED", "ERR_JOINED_GROUP_S", "ERR_KILLED_BY_S", "ERR_LEARN_ABILITY_S", "ERR_LEARN_COMPANION_S", "ERR_LEARN_RECIPE_S", "ERR_LEARN_SPELL_S", "ERR_LEFT_GROUP_S", "ERR_LEFT_GROUP_YOU", "ERR_LFG_CANT_USE_BATTLEGROUND", "ERR_LFG_CANT_USE_DUNGEONS", "ERR_LFG_DESERTER_PARTY", "ERR_LFG_DESERTER_PLAYER", "ERR_LFG_GET_INFO_TIMEOUT", "ERR_LFG_GROUP_FULL", "ERR_LFG_INVALID_SLOT", "ERR_LFG_JOINED_LIST", "ERR_LFG_JOINED_QUEUE", "ERR_LFG_LEADER_IS_LFM_S", "ERR_LFG_LEFT_LIST", "ERR_LFG_LEFT_QUEUE", "ERR_LFG_MEMBERS_NOT_PRESENT", "ERR_LFG_MISMATCHED_SLOTS", "ERR_LFG_NO_LFG_OBJECT", "ERR_LFG_NO_ROLES_SELECTED", "ERR_LFG_NO_SLOTS_PARTY", "ERR_LFG_NO_SLOTS_PLAYER", "ERR_LFG_NO_SLOTS_SELECTED", "ERR_LFG_PARTY_PLAYERS_FROM_DIFFERENT_REALMS", "ERR_LFG_PENDING", "ERR_LFG_PLAYER_DECLINED_ROLE_CHECK", "ERR_LFG_PROPOSAL_DECLINED_PARTY", "ERR_LFG_PROPOSAL_DECLINED_SELF", "ERR_LFG_PROPOSAL_FAILED", "ERR_LFG_RANDOM_COOLDOWN_PARTY", "ERR_LFG_RANDOM_COOLDOWN_PLAYER", "ERR_LFG_ROLE_CHECK_ABORTED", "ERR_LFG_ROLE_CHECK_FAILED", "ERR_LFG_ROLE_CHECK_FAILED_NOT_VIABLE", "ERR_LFG_ROLE_CHECK_FAILED_TIMEOUT", "ERR_LFG_ROLE_CHECK_INITIATED", "ERR_LFG_TOO_MANY_MEMBERS", "ERR_LOGGING_OUT", "ERR_LOGOUT_FAILED", "ERR_LOOT_BAD_FACING", "ERR_LOOT_CANT_LOOT_THAT", "ERR_LOOT_CANT_LOOT_THAT_NOW", "ERR_LOOT_DIDNT_KILL", "ERR_LOOT_GONE", "ERR_LOOT_LOCKED", "ERR_LOOT_MASTER_INV_FULL", "ERR_LOOT_MASTER_OTHER", "ERR_LOOT_MASTER_UNIQUE_ITEM", "ERR_LOOT_NOTSTANDING", "ERR_LOOT_NO_UI", "ERR_LOOT_PLAYER_NOT_FOUND", "ERR_LOOT_ROLL_PENDING", "ERR_LOOT_STUNNED", "ERR_LOOT_TOO_FAR", "ERR_LOOT_WHILE_INVULNERABLE", "ERR_MAIL_ATTACHMENT_EXPIRED", "ERR_MAIL_BAG", "ERR_MAIL_BOUND_ITEM", "ERR_MAIL_CONJURED_ITEM", "ERR_MAIL_DATABASE_ERROR", "ERR_MAIL_INVALID_ATTACHMENT", "ERR_MAIL_INVALID_ATTACHMENT_SLOT", "ERR_MAIL_LIMITED_DURATION_ITEM", "ERR_MAIL_QUEST_ITEM", "ERR_MAIL_REACHED_CAP", "ERR_MAIL_SENT", "ERR_MAIL_TARGET_NOT_FOUND", "ERR_MAIL_TOO_MANY_ATTACHMENTS", "ERR_MAIL_TO_SELF", "ERR_MAIL_WRAPPED_COD", "ERR_MAX_SOCKETS", "ERR_MEETING_STONE_GROUP_FULL", "ERR_MEETING_STONE_INVALID_LEVEL", "ERR_MEETING_STONE_INVALID_TARGET", "ERR_MEETING_STONE_IN_PROGRESS", "ERR_MEETING_STONE_IN_QUEUE_S", "ERR_MEETING_STONE_LEFT_QUEUE_S", "ERR_MEETING_STONE_MEMBER_ADDED_S", "ERR_MEETING_STONE_MEMBER_STILL_IN_QUEUE", "ERR_MEETING_STONE_MUST_BE_LEADER", "ERR_MEETING_STONE_NEED_PARTY", "ERR_MEETING_STONE_NOT_FOUND", "ERR_MEETING_STONE_NOT_LEADER", "ERR_MEETING_STONE_NO_RAID_GROUP", "ERR_MEETING_STONE_OTHER_MEMBER_LEFT", "ERR_MEETING_STONE_SUCCESS", "ERR_MEETING_STONE_TARGET_INVALID_LEVEL", "ERR_MEETING_STONE_TARGET_NOT_IN_PARTY", "ERR_MOUNT_ALREADYMOUNTED", "ERR_MOUNT_FORCEDDISMOUNT", "ERR_MOUNT_INVALIDMOUNTEE", "ERR_MOUNT_LOOTING", "ERR_MOUNT_NOTMOUNTABLE", "ERR_MOUNT_NOTYOURPET", "ERR_MOUNT_OTHER", "ERR_MOUNT_RACECANTMOUNT", "ERR_MOUNT_SHAPESHIFTED", "ERR_MOUNT_TOOFARAWAY", "ERR_MULTI_CAST_ACTION_TOTEM_S", "ERR_MUST_EQUIP_ITEM", "ERR_MUST_REPAIR_DURABILITY", "ERR_NAME_CONSECUTIVE_SPACES", "ERR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME", "ERR_NAME_INVALID", "ERR_NAME_INVALID_SPACE", "ERR_NAME_MIXED_LANGUAGES", "ERR_NAME_NO_NAME", "ERR_NAME_PROFANE", "ERR_NAME_RESERVED", "ERR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS", "ERR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END", "ERR_NAME_THREE_CONSECUTIVE", "ERR_NAME_TOO_LONG", "ERR_NAME_TOO_LONG2", "ERR_NAME_TOO_SHORT", "ERR_NEWTAXIPATH", "ERR_NEW_GUIDE_S", "ERR_NEW_GUIDE_YOU", "ERR_NEW_LEADER_S", "ERR_NEW_LEADER_YOU", "ERR_NEW_LOOT_MASTER_S", "ERR_NOAMMO_S", "ERR_NOEMOTEWHILERUNNING", "ERR_NOTYOURPET", "ERR_NOT_A_BAG", "ERR_NOT_BARBER_SITTING", "ERR_NOT_DURING_ARENA_MATCH", "ERR_NOT_ENOUGH_ARENA_POINTS", "ERR_NOT_ENOUGH_GOLD", "ERR_NOT_ENOUGH_HONOR_POINTS", "ERR_NOT_ENOUGH_MONEY", "ERR_NOT_EQUIPPABLE", "ERR_NOT_IN_BATTLEGROUND", "ERR_NOT_IN_COMBAT", "ERR_NOT_IN_GROUP", "ERR_NOT_IN_RAID", "ERR_NOT_LEADER", "ERR_NOT_OWNER", "ERR_NOT_SAME_ACCOUNT", "ERR_NOT_WHILE_DISARMED", "ERR_NOT_WHILE_FALLING", "ERR_NOT_WHILE_FATIGUED", "ERR_NOT_WHILE_MOUNTED", "ERR_NOT_WHILE_SHAPESHIFTED", "ERR_NO_ARENA_CHARTER", "ERR_NO_ATTACK_TARGET", "ERR_NO_BANK_HERE", "ERR_NO_BANK_SLOT", "ERR_NO_GUILD_CHARTER", "ERR_NO_ITEMS_WHILE_SHAPESHIFTED", "ERR_NO_PET", "ERR_NO_REPLY_TARGET", "ERR_NO_SLOT_AVAILABLE", "ERR_NULL_PETNAME", "ERR_OBJECT_IS_BUSY", "ERR_ONLY_ONE_AMMO", "ERR_ONLY_ONE_BOLT", "ERR_ONLY_ONE_QUIVER", "ERR_OUT_OF_ENERGY", "ERR_OUT_OF_FOCUS", "ERR_OUT_OF_HEALTH", "ERR_OUT_OF_MANA", "ERR_OUT_OF_POWER_DISPLAY", "ERR_OUT_OF_RAGE", "ERR_OUT_OF_RANGE", "ERR_OUT_OF_RUNES", "ERR_OUT_OF_RUNIC_POWER", "ERR_PARTY_LFG_BOOT_COOLDOWN_S", "ERR_PARTY_LFG_BOOT_DUNGEON_COMPLETE", "ERR_PARTY_LFG_BOOT_IN_COMBAT", "ERR_PARTY_LFG_BOOT_IN_PROGRESS", "ERR_PARTY_LFG_BOOT_LIMIT", "ERR_PARTY_LFG_BOOT_LOOT_ROLLS", "ERR_PARTY_LFG_BOOT_NOT_ELIGIBLE_S", "ERR_PARTY_LFG_BOOT_TOO_FEW_PLAYERS", "ERR_PARTY_LFG_BOOT_VOTE_FAILED", "ERR_PARTY_LFG_BOOT_VOTE_SUCCEEDED", "ERR_PARTY_LFG_INVITE_RAID_LOCKED", "ERR_PARTY_LFG_TELEPORT_IN_COMBAT", "ERR_PARTY_TARGET_AMBIGUOUS", "ERR_PASSIVE_ABILITY", "ERR_PETITION_ALREADY_SIGNED", "ERR_PETITION_ALREADY_SIGNED_OTHER", "ERR_PETITION_CREATOR", "ERR_PETITION_DECLINED_S", "ERR_PETITION_FULL", "ERR_PETITION_IN_GUILD", "ERR_PETITION_NOT_ENOUGH_SIGNATURES", "ERR_PETITION_NOT_SAME_SERVER", "ERR_PETITION_OFFERED_S", "ERR_PETITION_RESTRICTED_ACCOUNT", "ERR_PETITION_SIGNED", "ERR_PETITION_SIGNED_S", "ERR_PET_BROKEN", "ERR_PET_LEARN_ABILITY_S", "ERR_PET_LEARN_SPELL_S", "ERR_PET_NOT_RENAMEABLE", "ERR_PET_SPELL_AFFECTING_COMBAT", "ERR_PET_SPELL_ALREADY_KNOWN_S", "ERR_PET_SPELL_DEAD", "ERR_PET_SPELL_NOT_BEHIND", "ERR_PET_SPELL_OUT_OF_RANGE", "ERR_PET_SPELL_ROOTED", "ERR_PET_SPELL_TARGETS_DEAD", "ERR_PET_SPELL_UNLEARNED_S", "ERR_PLAYERLIST_JOINED_BATTLE", "ERR_PLAYERLIST_LEFT_BATTLE", "ERR_PLAYERS_JOINED_BATTLE_D", "ERR_PLAYERS_LEFT_BATTLE_D", "ERR_PLAYER_BUSY_S", "ERR_PLAYER_DEAD", "ERR_PLAYER_DIED_S", "ERR_PLAYER_DIFFICULTY_CHANGED_S", "ERR_PLAYER_JOINED_BATTLE_D", "ERR_PLAYER_LEFT_BATTLE_D", "ERR_PLAYER_SILENCED", "ERR_PLAYER_SILENCED_ECHO", "ERR_PLAYER_UNSILENCED", "ERR_PLAYER_UNSILENCED_ECHO", "ERR_PLAYER_WRONG_FACTION", "ERR_PLAY_TIME_EXCEEDED", "ERR_POTION_COOLDOWN", "ERR_PROFANE_CHAT_NAME", "ERR_PROFICIENCY_GAINED_S", "ERR_PROFICIENCY_NEEDED", "ERR_PURCHASE_LEVEL_TOO_LOW", "ERR_PVP_TOGGLE_OFF", "ERR_PVP_TOGGLE_ON", "ERR_QUEST_ACCEPTED_S", "ERR_QUEST_ADD_FOUND_SII", "ERR_QUEST_ADD_ITEM_SII", "ERR_QUEST_ADD_KILL_SII", "ERR_QUEST_ADD_PLAYER_KILL_SII", "ERR_QUEST_ALREADY_DONE", "ERR_QUEST_ALREADY_DONE_DAILY", "ERR_QUEST_ALREADY_ON", "ERR_QUEST_COMPLETE_S", "ERR_QUEST_FAILED_BAG_FULL_S", "ERR_QUEST_FAILED_CAIS", "ERR_QUEST_FAILED_EXPANSION", "ERR_QUEST_FAILED_LOW_LEVEL", "ERR_QUEST_FAILED_MAX_COUNT_S", "ERR_QUEST_FAILED_MISSING_ITEMS", "ERR_QUEST_FAILED_NOT_ENOUGH_MONEY", "ERR_QUEST_FAILED_S", "ERR_QUEST_FAILED_TOO_MANY_DAILY_QUESTS_I", "ERR_QUEST_FAILED_WRONG_RACE", "ERR_QUEST_FORCE_REMOVED_S", "ERR_QUEST_LOG_FULL", "ERR_QUEST_MUST_CHOOSE", "ERR_QUEST_NEED_PREREQS", "ERR_QUEST_OBJECTIVE_COMPLETE_S", "ERR_QUEST_ONLY_ONE_TIMED", "ERR_QUEST_PUSH_ACCEPTED_S", "ERR_QUEST_PUSH_ALREADY_DONE_S", "ERR_QUEST_PUSH_BUSY_S", "ERR_QUEST_PUSH_DECLINED_S", "ERR_QUEST_PUSH_DIFFERENT_SERVER_DAILY_S", "ERR_QUEST_PUSH_INVALID_S", "ERR_QUEST_PUSH_LOG_FULL_S", "ERR_QUEST_PUSH_NOT_DAILY_S", "ERR_QUEST_PUSH_NOT_IN_PARTY_S", "ERR_QUEST_PUSH_ONQUEST_S", "ERR_QUEST_PUSH_SUCCESS_S", "ERR_QUEST_PUSH_TIMER_EXPIRED_S", "ERR_QUEST_REWARD_EXP_I", "ERR_QUEST_REWARD_ITEM_MULT_IS", "ERR_QUEST_REWARD_ITEM_S", "ERR_QUEST_REWARD_MONEY_S", "ERR_QUEST_UNKNOWN_COMPLETE", "ERR_RAID_DIFFICULTY_CHANGED_S", "ERR_RAID_DIFFICULTY_FAILED", "ERR_RAID_DISALLOWED_BY_LEVEL", "ERR_RAID_GROUP_FULL", "ERR_RAID_GROUP_LOWLEVEL", "ERR_RAID_GROUP_ONLY", "ERR_RAID_GROUP_REQUIREMENTS_UNMATCH", "ERR_RAID_LEADER_READY_CHECK_START_S", "ERR_RAID_LOCKOUT_CHANGED_S", "ERR_RAID_MEMBER_ADDED_S", "ERR_RAID_MEMBER_REMOVED_S", "ERR_RAID_YOU_JOINED", "ERR_RAID_YOU_LEFT", "ERR_READY_CHECK_IN_PROGRESS", "ERR_READY_CHECK_THROTTLED", "ERR_RECEIVE_ITEM_S", "ERR_REFER_A_FRIEND_DIFFERENT_FACTION", "ERR_REFER_A_FRIEND_GRANT_LEVEL_MAX_I", "ERR_REFER_A_FRIEND_INSUFFICIENT_GRANTABLE_LEVELS", "ERR_REFER_A_FRIEND_INSUF_EXPAN_LVL", "ERR_REFER_A_FRIEND_NOT_NOW", "ERR_REFER_A_FRIEND_NOT_REFERRED_BY", "ERR_REFER_A_FRIEND_SUMMON_COOLDOWN", "ERR_REFER_A_FRIEND_SUMMON_LEVEL_MAX_I", "ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S", "ERR_REFER_A_FRIEND_TARGET_TOO_HIGH", "ERR_REFER_A_FRIEND_TOO_FAR", "ERR_REMOVE_FROM_PVP_QUEUE_FACTION_CHANGE_NONE", "ERR_REMOVE_FROM_PVP_QUEUE_GRANT_LEVEL", "ERR_REMOVE_FROM_PVP_QUEUE_XP_GAIN", "ERR_RESTRICTED_ACCOUNT", "ERR_SCALING_STAT_ITEM_LEVEL_EXCEEDED", "ERR_SET_LOOT_FREEFORALL", "ERR_SET_LOOT_GROUP", "ERR_SET_LOOT_MASTER", "ERR_SET_LOOT_NBG", "ERR_SET_LOOT_ROUNDROBIN", "ERR_SET_LOOT_THRESHOLD_S", "ERR_SHAPESHIFT_FORM_CANNOT_EQUIP", "ERR_SKILL_GAINED_S", "ERR_SKILL_UP_SI", "ERR_SLOT_EMPTY", "ERR_SOCKETING_META_GEM_ONLY_IN_METASLOT", "ERR_SOCKETING_REQUIRES_META_GEM", "ERR_SPECIFY_MASTER_LOOTER", "ERR_SPELL_ALREADY_KNOWN_S", "ERR_SPELL_COOLDOWN", "ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH", "ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA", "ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S", "ERR_SPELL_FAILED_EQUIPPED_ITEM", "ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S", "ERR_SPELL_FAILED_NOTUNSHEATHED", "ERR_SPELL_FAILED_REAGENTS", "ERR_SPELL_FAILED_REAGENTS_GENERIC", "ERR_SPELL_FAILED_S", "ERR_SPELL_FAILED_SHAPESHIFT_FORM_S", "ERR_SPELL_FAILED_TOTEMS", "ERR_SPELL_OUT_OF_RANGE", "ERR_SPELL_UNLEARNED_S", "ERR_SPLIT_FAILED", "ERR_SYSTEM_DISABLED", "ERR_TALENT_WIPE_ERROR", "ERR_TAME_FAILED", "ERR_TARGET_LOGGING_OUT", "ERR_TARGET_NOT_IN_GROUP_S", "ERR_TARGET_NOT_IN_INSTANCE_S", "ERR_TARGET_STUNNED", "ERR_TAXINOPATH", "ERR_TAXINOPATHS", "ERR_TAXINOSUCHPATH", "ERR_TAXINOTENOUGHMONEY", "ERR_TAXINOTSTANDING", "ERR_TAXINOTVISITED", "ERR_TAXINOVENDORNEARBY", "ERR_TAXIPLAYERALREADYMOUNTED", "ERR_TAXIPLAYERBUSY", "ERR_TAXIPLAYERMOVING", "ERR_TAXIPLAYERSHAPESHIFTED", "ERR_TAXISAMENODE", "ERR_TAXITOOFARAWAY", "ERR_TAXIUNSPECIFIEDSERVERERROR", "ERR_TICKET_ALREADY_EXISTS", "ERR_TICKET_CREATE_ERROR", "ERR_TICKET_DB_ERROR", "ERR_TICKET_NO_TEXT", "ERR_TICKET_TEXT_TOO_LONG", "ERR_TICKET_UPDATE_ERROR", "ERR_TOOBUSYTOFOLLOW", "ERR_TOO_FAR_TO_ATTACK", "ERR_TOO_FAR_TO_INTERACT", "ERR_TOO_FEW_TO_SPLIT", "ERR_TOO_MANY_CHAT_CHANNELS", "ERR_TOO_MANY_SOCKETS", "ERR_TOO_MANY_SPECIAL_BAGS", "ERR_TOO_MUCH_GOLD", "ERR_TRADE_BAG", "ERR_TRADE_BAG_FULL", "ERR_TRADE_BLOCKED_S", "ERR_TRADE_BOUND_ITEM", "ERR_TRADE_CANCELLED", "ERR_TRADE_COMPLETE", "ERR_TRADE_EQUIPPED_BAG", "ERR_TRADE_GROUND_ITEM", "ERR_TRADE_MAX_COUNT_EXCEEDED", "ERR_TRADE_NOT_ON_TAPLIST", "ERR_TRADE_QUEST_ITEM", "ERR_TRADE_REQUEST_S", "ERR_TRADE_SELF", "ERR_TRADE_TARGET_BAG_FULL", "ERR_TRADE_TARGET_DEAD", "ERR_TRADE_TARGET_MAX_COUNT_EXCEEDED", "ERR_TRADE_TARGET_MAX_LIMIT_CATEGORY_COUNT_EXCEEDED_IS", "ERR_TRADE_TEMP_ENCHANT_BOUND", "ERR_TRADE_TOO_FAR", "ERR_TRADE_WRONG_REALM", "ERR_UNHEALTHY_TIME", "ERR_UNINVITE_YOU", "ERR_UNIT_NOT_FOUND", "ERR_UNKNOWN_MACRO_OPTION_S", "ERR_USER_SQUELCHED", "ERR_USE_BAD_ANGLE", "ERR_USE_CANT_IMMUNE", "ERR_USE_CANT_OPEN", "ERR_USE_DESTROYED", "ERR_USE_LOCKED", "ERR_USE_LOCKED_WITH_ITEM_S", "ERR_USE_LOCKED_WITH_SPELL_KNOWN_SI", "ERR_USE_LOCKED_WITH_SPELL_S", "ERR_USE_OBJECT_MOVING", "ERR_USE_PREVENTED_BY_MECHANIC_S", "ERR_USE_SPELL_FOCUS", "ERR_USE_TOO_FAR", "ERR_VENDOR_DOESNT_BUY", "ERR_VENDOR_HATES_YOU", "ERR_VENDOR_MISSING_TURNINS", "ERR_VENDOR_NOT_INTERESTED", "ERR_VENDOR_SOLD_OUT", "ERR_VENDOR_TOO_FAR", "ERR_VOICESESSION_FULL", "ERR_VOICE_CHAT_PARENTAL_DISABLE_ALL", "ERR_VOICE_CHAT_PARENTAL_DISABLE_MIC", "ERR_VOICE_IGNORE_ADDED_S", "ERR_VOICE_IGNORE_ALREADY_S", "ERR_VOICE_IGNORE_AMBIGUOUS", "ERR_VOICE_IGNORE_DELETED", "ERR_VOICE_IGNORE_FULL", "ERR_VOICE_IGNORE_NOT_FOUND", "ERR_VOICE_IGNORE_REMOVED_S", "ERR_VOICE_IGNORE_SELF", "ERR_WRONG_BAG_TYPE", "ERR_WRONG_BAG_TYPE_SUBCLASS", "ERR_WRONG_DIRECTION_FOR_ATTACK", "ERR_WRONG_SLOT", "ERR_YELL_RESTRICTED", "ERR_ZONE_EXPLORED", "ERR_ZONE_EXPLORED_XP", "ESES", "ESMX", "EVADE", "EVENTS_LABEL", "EXAMPLE_SPELL_FIREBALL", "EXAMPLE_SPELL_FROSTBOLT", "EXAMPLE_TARGET_MONSTER", "EXAMPLE_TEXT", "EXHAUSTION_LABEL", "EXHAUST_TOOLTIP1", "EXHAUST_TOOLTIP2", "EXHAUST_TOOLTIP3", "EXHAUST_TOOLTIP4", "EXIT", "EXIT_GAME", "EXOTICS", "EXPANSION_NAME0", "EXPANSION_NAME1", "EXPANSION_NAME2", "EXPERIENCE_COLON", "EXPERTISE_ABBR", "EXTENDED", "EXTEND_RAID_LOCK", "EXTRA_ATTACKS", "EYE_SEPARATION", "English", "FACIAL_HAIR_EARRINGS", "FACIAL_HAIR_FEATURES", "FACIAL_HAIR_HAIR", "FACIAL_HAIR_HORNS", "FACIAL_HAIR_MARKINGS", "FACIAL_HAIR_NORMAL", "FACIAL_HAIR_PIERCINGS", "FACIAL_HAIR_TUSKS", "FACING_WRONG_DIRECTION", "FACTION", "FACTION_ALLIANCE", "FACTION_CONTROLLED_TERRITORY", "FACTION_HORDE", "FACTION_INACTIVE", "FACTION_OTHER", "FACTION_STANDING_CHANGED", "FACTION_STANDING_DECREASED", "FACTION_STANDING_DECREASED_GENERIC", "FACTION_STANDING_INCREASED", "FACTION_STANDING_INCREASED_BONUS", "FACTION_STANDING_INCREASED_GENERIC", "FACTION_STANDING_LABEL1", "FACTION_STANDING_LABEL1_FEMALE", "FACTION_STANDING_LABEL2", "FACTION_STANDING_LABEL2_FEMALE", "FACTION_STANDING_LABEL3", "FACTION_STANDING_LABEL3_FEMALE", "FACTION_STANDING_LABEL4", "FACTION_STANDING_LABEL4_FEMALE", "FACTION_STANDING_LABEL5", "FACTION_STANDING_LABEL5_FEMALE", "FACTION_STANDING_LABEL6", "FACTION_STANDING_LABEL6_FEMALE", "FACTION_STANDING_LABEL7", "FACTION_STANDING_LABEL7_FEMALE", "FACTION_STANDING_LABEL8", "FACTION_STANDING_LABEL8_FEMALE", "FAILED", "FAILURES", "FAR", "FARCLIP", "FEATURES_LABEL", "FEATURES_SUBTEXT", "FEATURE_BECOMES_AVAILABLE_AT_LEVEL", "FEAT_OF_STRENGTH_DESCRIPTION", "FEEDPET_LOG_FIRSTPERSON", "FEEDPET_LOG_THIRDPERSON", "FEETSLOT", "FEMALE", "FERAL_DRUID_ITEM_AP", "FILTER", "FILTERS", "FILTER_BY_ENEMIES_COMBATLOG_TOOLTIP", "FILTER_BY_FRIENDS_COMBATLOG_TOOLTIP", "FILTER_BY_HOSTILE_PLAYERS_COMBATLOG_TOOLTIP", "FILTER_BY_ME_COMBATLOG_TOOLTIP", "FILTER_BY_NEUTRAL_COMBATLOG_TOOLTIP", "FILTER_BY_PET_COMBATLOG_TOOLTIP", "FILTER_BY_UNKNOWN_COMBATLOG_TOOLTIP", "FILTER_NAME", "FILTER_TO_FRIENDS_COMBATLOG_TOOLTIP", "FILTER_TO_HOSTILE_COMBATLOG_TOOLTIP", "FILTER_TO_HOSTILE_PLAYERS_COMBATLOG_TOOLTIP", "FILTER_TO_ME_COMBATLOG_TOOLTIP", "FILTER_TO_NEUTRAL_COMBATLOG_TOOLTIP", "FILTER_TO_PET_COMBATLOG_TOOLTIP", "FILTER_TO_UNKNOWN_COMBATLOG_TOOLTIP", "FIND_A_GROUP", "FIND_DUNGEON", "FINGER0SLOT", "FINGER0SLOT_UNIQUE", "FINGER1SLOT", "FINGER1SLOT_UNIQUE", "FIRST_AVAILABLE", "FIRST_AVAILABLE_TOOLTIP", "FIRST_NUMBER_CAP", "FIX_LAG", "FLAG_COUNT_TEMPLATE", "FLOOR", "FLOOR_NUMBER", "FOCUS", "FOCUSTARGET", "FOCUS_CAST_KEY_TEXT", "FOCUS_COST", "FOCUS_COST_PER_TIME", "FOCUS_TOKEN_NOT_FOUND", "FOLLOW", "FOLLOW_TERRAIN", "FONT_SIZE", "FONT_SIZE_TEMPLATE", "FOOD_TIMER", "FOREIGN_SERVER_LABEL", "FORMATED_HOURS", "FORMATTING", "FPS_ABBR", "FRAMERATE_LABEL", "FREE_FOR_ALL_TERRITORY", "FRFR", "FRIEND", "FRIENDLY", "FRIENDS", "FRIENDS_FRIENDS_CHOICE_EVERYONE", "FRIENDS_FRIENDS_CHOICE_MUTUAL", "FRIENDS_FRIENDS_CHOICE_POTENTIAL", "FRIENDS_FRIENDS_HEADER", "FRIENDS_FRIENDS_MUTUAL_TEXT", "FRIENDS_FRIENDS_REQUESTED_TEXT", "FRIENDS_FRIENDS_WAITING", "FRIENDS_LEVEL_TEMPLATE", "FRIENDS_LIST", "FRIENDS_LIST_AVAILABLE", "FRIENDS_LIST_AWAY", "FRIENDS_LIST_BUSY", "FRIENDS_LIST_ENTER_TEXT", "FRIENDS_LIST_NOTE_OFFLINE_TEMPLATE", "FRIENDS_LIST_NOTE_TEMPLATE", "FRIENDS_LIST_OFFLINE", "FRIENDS_LIST_OFFLINE_TEMPLATE", "FRIENDS_LIST_ONLINE", "FRIENDS_LIST_PLAYING", "FRIENDS_LIST_REALM", "FRIENDS_LIST_STATUS_TOOLTIP", "FRIENDS_LIST_TEMPLATE", "FRIENDS_LIST_WOW_TEMPLATE", "FRIENDS_LIST_ZONE", "FRIENDS_TOOLTIP_TOO_MANY_CHARACTERS", "FRIENDS_TOOLTIP_WOW_TOON_TEMPLATE", "FROM", "FUEL", "FULLDATE", "FULLDATE_AND_TIME", "FULLDATE_MONTH_APRIL", "FULLDATE_MONTH_AUGUST", "FULLDATE_MONTH_DECEMBER", "FULLDATE_MONTH_FEBRUARY", "FULLDATE_MONTH_JANUARY", "FULLDATE_MONTH_JULY", "FULLDATE_MONTH_JUNE", "FULLDATE_MONTH_MARCH", "FULLDATE_MONTH_MAY", "FULLDATE_MONTH_NOVEMBER", "FULLDATE_MONTH_OCTOBER", "FULLDATE_MONTH_SEPTEMBER", "FULL_SCREEN_GLOW", "FULL_SIZE_FOCUS_FRAME_TEXT", "FULL_TEXT_COMBATLOG_TOOLTIP", "GAIN_EXPERIENCE", "GAME", "GAMEFIELD_DESELECT_TEXT", "GAMEOPTIONS_MENU", "GAMES", "GAMETIME_TOOLTIP_CALENDAR_INVITES", "GAMETIME_TOOLTIP_TOGGLE_CALENDAR", "GAMETIME_TOOLTIP_TOGGLE_CLOCK", "GAME_SOUND_OUTPUT", "GAME_VERSION_LABEL", "GAMMA", "GEARSETS_POPUP_TEXT", "GEARSETS_TITLE", "GENERAL", "GENERAL_LABEL", "GENERAL_MACROS", "GENERAL_SPELLS", "GENERAL_SUBTEXT", "GIVE_LOOT", "GLANCING_TRAILER", "GLOBAL_CHANNELS", "GLYPHS", "GLYPH_EMPTY", "GLYPH_EMPTY_DESC", "GLYPH_FILLED", "GLYPH_INACTIVE", "GLYPH_LOCKED", "GLYPH_SLOT_REMOVE_TOOLTIP", "GLYPH_SLOT_TOOLTIP1", "GLYPH_SLOT_TOOLTIP2", "GLYPH_SLOT_TOOLTIP3", "GLYPH_SLOT_TOOLTIP4", "GLYPH_SLOT_TOOLTIP5", "GLYPH_SLOT_TOOLTIP6", "GMSURVEYRATING1", "GMSURVEYRATING2", "GMSURVEYRATING3", "GMSURVEYRATING4", "GMSURVEYRATING5", "GMSURVEY_BLOCK_TEXT", "GMSURVEY_EXCELLENT", "GMSURVEY_POOR", "GMSURVEY_REQUEST_TEXT", "GMSURVEY_SUBMITTED", "GMSURVEY_TITLE", "GM_CHAT", "GM_CHAT_LAST_SESSION", "GM_CHAT_OPEN", "GM_CHAT_STATUS_READY", "GM_CHAT_STATUS_READY_DESCRIPTION", "GM_EMAIL_NAME", "GM_RESPONSE_ALERT", "GM_RESPONSE_FRAME_HEADER", "GM_RESPONSE_ISSUE_HEADER", "GM_RESPONSE_MESSAGE_HEADER", "GM_RESPONSE_MORE_HELP", "GM_RESPONSE_POPUP_MUST_RESOLVE_RESPONSE", "GM_RESPONSE_POPUP_NEED_MORE_HELP_WARNING", "GM_RESPONSE_POPUP_RESOLVE_CONFIRM", "GM_RESPONSE_POPUP_VIEW_RESPONSE", "GM_RESPONSE_RESOLVE", "GM_SURVEY_NOT_APPLICABLE", "GM_TICKET_ESCALATED", "GM_TICKET_HIGH_VOLUME", "GM_TICKET_SERVICE_SOON", "GM_TICKET_UNAVAILABLE", "GM_TICKET_WAIT_TIME", "GOLD_AMOUNT", "GOLD_AMOUNT_SYMBOL", "GOLD_AMOUNT_TEXTURE", "GOLD_PER_DAY", "GOODBYE", "GOSSIP_OPTIONS", "GREED", "GREED_NEWBIE", "GROUND_DENSITY", "GROUND_RADIUS", "GROUP", "GROUPS", "GROUP_INVITE", "GUIDE", "GUIDE_TOOLTIP", "GUILD", "GUILDADDRANK_BUTTON_TOOLTIP", "GUILDBANK_AVAILABLE_MONEY", "GUILDBANK_BUYTAB_MONEY_FORMAT", "GUILDBANK_DEPOSIT", "GUILDBANK_DEPOSIT_FORMAT", "GUILDBANK_DEPOSIT_MONEY_FORMAT", "GUILDBANK_INFO_TITLE_FORMAT", "GUILDBANK_LOG_QUANTITY", "GUILDBANK_LOG_TITLE_FORMAT", "GUILDBANK_MOVE_FORMAT", "GUILDBANK_NAME_CONFIG", "GUILDBANK_POPUP_TEXT", "GUILDBANK_REMAINING_MONEY", "GUILDBANK_REPAIR", "GUILDBANK_REPAIR_MONEY_FORMAT", "GUILDBANK_TAB_COLON", "GUILDBANK_TAB_DEPOSIT_ONLY", "GUILDBANK_TAB_FULL_ACCESS", "GUILDBANK_TAB_LOCKED", "GUILDBANK_TAB_NUMBER", "GUILDBANK_TAB_WITHDRAW_ONLY", "GUILDBANK_WITHDRAW", "GUILDBANK_WITHDRAWFORTAB_MONEY_FORMAT", "GUILDBANK_WITHDRAW_FORMAT", "GUILDBANK_WITHDRAW_MONEY_FORMAT", "GUILDCONTROL", "GUILDCONTROL_ALLOWRANK", "GUILDCONTROL_DEPOSIT_ITEMS", "GUILDCONTROL_OPTION1", "GUILDCONTROL_OPTION10", "GUILDCONTROL_OPTION11", "GUILDCONTROL_OPTION12", "GUILDCONTROL_OPTION13", "GUILDCONTROL_OPTION14", "GUILDCONTROL_OPTION15", "GUILDCONTROL_OPTION15_TOOLTIP", "GUILDCONTROL_OPTION16", "GUILDCONTROL_OPTION16_TOOLTIP", "GUILDCONTROL_OPTION17", "GUILDCONTROL_OPTION2", "GUILDCONTROL_OPTION3", "GUILDCONTROL_OPTION4", "GUILDCONTROL_OPTION5", "GUILDCONTROL_OPTION6", "GUILDCONTROL_OPTION7", "GUILDCONTROL_OPTION8", "GUILDCONTROL_OPTION9", "GUILDCONTROL_RANKLABEL", "GUILDCONTROL_SELECTRANK", "GUILDCONTROL_UPDATE_TEXT", "GUILDCONTROL_VIEW_TAB", "GUILDCONTROL_WITHDRAW_GOLD", "GUILDCONTROL_WITHDRAW_ITEMS", "GUILDEVENT_TYPE_DEMOTE", "GUILDEVENT_TYPE_INVITE", "GUILDEVENT_TYPE_JOIN", "GUILDEVENT_TYPE_PROMOTE", "GUILDEVENT_TYPE_QUIT", "GUILDEVENT_TYPE_REMOVE", "GUILDMEMBER_ALERT", "GUILDMOTD_BUTTON_TOOLTIP", "GUILDNOTE_BUTTON_TOOLTIP", "GUILDOFFICERNOTE_BUTTON_TOOLTIP", "GUILDREMOVERANK_BUTTON_TOOLTIP", "GUILD_ACHIEVEMENT", "GUILD_BANK", "GUILD_BANK_LOG", "GUILD_BANK_LOG_TIME", "GUILD_BANK_MONEY_LOG", "GUILD_BANK_TAB_INFO", "GUILD_CHARTER", "GUILD_CHARTER_CREATOR", "GUILD_CHARTER_PURCHASE", "GUILD_CHARTER_REGISTER", "GUILD_CHARTER_TEMPLATE", "GUILD_CHARTER_TITLE", "GUILD_CHAT", "GUILD_CREST_DESIGN", "GUILD_EVENT_LOG", "GUILD_FRAME_TITLE", "GUILD_HELP_TEXT_LINE1", "GUILD_HELP_TEXT_LINE2", "GUILD_HELP_TEXT_LINE3", "GUILD_HELP_TEXT_LINE4", "GUILD_HELP_TEXT_LINE5", "GUILD_HELP_TEXT_LINE6", "GUILD_HELP_TEXT_LINE7", "GUILD_HELP_TEXT_LINE8", "GUILD_HELP_TEXT_LINE9", "GUILD_HELP_TEXT_LINE10", "GUILD_HELP_TEXT_LINE11", "GUILD_HELP_TEXT_LINE12", "GUILD_HELP_TEXT_LINE13", "GUILD_INFORMATION", "GUILD_INFO_EDITLABEL", "GUILD_INFO_TEMPLATE", "GUILD_INVITATION", "GUILD_LEAVE", "GUILD_MEMBER_OPTIONS", "GUILD_MEMBER_TEMPLATE", "GUILD_MESSAGE", "GUILD_MOTD", "GUILD_MOTD_EDITLABEL", "GUILD_MOTD_LABEL", "GUILD_MOTD_LABEL2", "GUILD_MOTD_TEMPLATE", "GUILD_NAME", "GUILD_NAME_TEMPLATE", "GUILD_NOTES_LABEL", "GUILD_NOTE_EDITLABEL", "GUILD_NOT_ALLIED_S", "GUILD_OFFICERNOTES_LABEL", "GUILD_OFFICERNOTE_EDITLABEL", "GUILD_OFFICER_NOTE", "GUILD_ONLINE_LABEL", "GUILD_PETITION_LEADER_INSTRUCTIONS", "GUILD_PETITION_MEMBER_INSTRUCTIONS", "GUILD_PROMOTE", "GUILD_RANK0_DESC", "GUILD_RANK1_DESC", "GUILD_RANK2_DESC", "GUILD_RANK3_DESC", "GUILD_RANK4_DESC", "GUILD_REGISTRAR_PURCHASE_TEXT", "GUILD_ROSTER_TEMPLATE", "GUILD_STATUS", "GUILD_TEMPLATE", "GUILD_TITLE_TEMPLATE", "GUILD_TOTAL", "GUILD_TOTALONLINE", "HAIR_HORNS_COLOR", "HAIR_HORNS_STYLE", "HAIR_NORMAL_COLOR", "HAIR_NORMAL_STYLE", "HANDSSLOT", "HAPPINESS", "HARASSMENT", "HARASSMENT_POLICY_TEXT", "HARASSMENT_TEXT", "HARDWARE", "HARDWARE_CURSOR", "HARMFUL_AURA_COMBATLOG_TOOLTIP", "HATRED", "HAVE_MAIL", "HAVE_MAIL_FROM", "HEADSLOT", "HEAD_BOB", "HEALER", "HEALING_DONE_TOOLTIP", "HEALS", "HEALTH", "HEALTH_COLON", "HEALTH_COST", "HEALTH_COST_PER_TIME", "HEALTH_LOW", "HELPFRAME_ACCOUNT_BULLET1", "HELPFRAME_ACCOUNT_BULLET2", "HELPFRAME_ACCOUNT_BULLET3", "HELPFRAME_ACCOUNT_BULLET4", "HELPFRAME_ACCOUNT_BULLET_TITLE1", "HELPFRAME_ACCOUNT_BUTTON_TEXT", "HELPFRAME_ACCOUNT_ENDTEXT", "HELPFRAME_ACCOUNT_TEXT", "HELPFRAME_ACCOUNT_TITLE", "HELPFRAME_BUG_BUTTON_DESCRIPTION", "HELPFRAME_BUG_BUTTON_TEXT", "HELPFRAME_CHARACTER_BULLET1", "HELPFRAME_CHARACTER_BULLET2", "HELPFRAME_CHARACTER_BULLET3", "HELPFRAME_CHARACTER_BULLET4", "HELPFRAME_CHARACTER_BULLET5", "HELPFRAME_CHARACTER_BULLET_TITLE1", "HELPFRAME_CHARACTER_BUTTON_TEXT", "HELPFRAME_CHARACTER_TEXT", "HELPFRAME_CHARACTER_TITLE", "HELPFRAME_ENVIRONMENTAL_BULLET1", "HELPFRAME_ENVIRONMENTAL_BULLET2", "HELPFRAME_ENVIRONMENTAL_BULLET3", "HELPFRAME_ENVIRONMENTAL_BULLET4", "HELPFRAME_ENVIRONMENTAL_BULLET5", "HELPFRAME_ENVIRONMENTAL_BULLET6", "HELPFRAME_ENVIRONMENTAL_BULLET_TITLE1", "HELPFRAME_ENVIRONMENTAL_BULLET_TITLE2", "HELPFRAME_ENVIRONMENTAL_BUTTON_TEXT", "HELPFRAME_ENVIRONMENTAL_TEXT", "HELPFRAME_ENVIRONMENTAL_TITLE", "HELPFRAME_GENERAL_BUTTON_DESCRIPTION", "HELPFRAME_GENERAL_BUTTON_TEXT", "HELPFRAME_GMTALK_ISSUE1", "HELPFRAME_GMTALK_ISSUE1_HEADER", "HELPFRAME_GMTALK_ISSUE2", "HELPFRAME_GMTALK_ISSUE2_HEADER", "HELPFRAME_GMTALK_ISSUE3", "HELPFRAME_GMTALK_ISSUE3_HEADER", "HELPFRAME_GMTALK_TEXT1", "HELPFRAME_GMTALK_TEXT2", "HELPFRAME_GMTALK_TITLE", "HELPFRAME_GM_BUTTON_DESCRIPTION", "HELPFRAME_GM_BUTTON_TEXT", "HELPFRAME_GUILD_BULLET1", "HELPFRAME_GUILD_BULLET2", "HELPFRAME_GUILD_BULLET3", "HELPFRAME_GUILD_BULLET_TITLE1", "HELPFRAME_GUILD_BUTTON_TEXT", "HELPFRAME_GUILD_TEXT", "HELPFRAME_GUILD_TITLE", "HELPFRAME_HARASSMENT_BUTTON_DESCRIPTION", "HELPFRAME_HARASSMENT_BUTTON_TEXT", "HELPFRAME_HOME_TEXT", "HELPFRAME_ITEM_BULLET1", "HELPFRAME_ITEM_BULLET2", "HELPFRAME_ITEM_BULLET3", "HELPFRAME_ITEM_BULLET4", "HELPFRAME_ITEM_BULLET5", "HELPFRAME_ITEM_BULLET6", "HELPFRAME_ITEM_BULLET7", "HELPFRAME_ITEM_BULLET_TITLE1", "HELPFRAME_ITEM_BULLET_TITLE2", "HELPFRAME_ITEM_BUTTON_TEXT", "HELPFRAME_ITEM_TEXT", "HELPFRAME_ITEM_TITLE", "HELPFRAME_LAG_TEXT1", "HELPFRAME_LAG_TITLE", "HELPFRAME_NONQUEST_BULLET1", "HELPFRAME_NONQUEST_BULLET2", "HELPFRAME_NONQUEST_BULLET3", "HELPFRAME_NONQUEST_BULLET4", "HELPFRAME_NONQUEST_BULLET5", "HELPFRAME_NONQUEST_BULLET6", "HELPFRAME_NONQUEST_BULLET7", "HELPFRAME_NONQUEST_BULLET_TITLE1", "HELPFRAME_NONQUEST_BULLET_TITLE2", "HELPFRAME_NONQUEST_BUTTON_TEXT", "HELPFRAME_NONQUEST_TEXT", "HELPFRAME_NONQUEST_TITLE", "HELPFRAME_OPENTICKET_EDITTEXT", "HELPFRAME_OPENTICKET_FOLLOWUPTEXT", "HELPFRAME_OPENTICKET_TEXT", "HELPFRAME_OTHER_BUTTON_DESCRIPTION", "HELPFRAME_OTHER_BUTTON_TEXT", "HELPFRAME_QUEST_BULLET1", "HELPFRAME_QUEST_BULLET2", "HELPFRAME_QUEST_BULLET3", "HELPFRAME_QUEST_BULLET4", "HELPFRAME_QUEST_BULLET5", "HELPFRAME_QUEST_BULLET_TITLE1", "HELPFRAME_QUEST_BULLET_TITLE2", "HELPFRAME_QUEST_BUTTON_TEXT", "HELPFRAME_QUEST_TEXT", "HELPFRAME_QUEST_TITLE", "HELPFRAME_REPORTISSUE_BULLET1", "HELPFRAME_REPORTISSUE_BULLET2", "HELPFRAME_REPORTISSUE_BULLET_TITLE1", "HELPFRAME_REPORTISSUE_TEXT1", "HELPFRAME_REPORTISSUE_TEXT2", "HELPFRAME_REPORTISSUE_TITLE", "HELPFRAME_REPORTLAG_TEXT1", "HELPFRAME_STUCK_BUTTON_DESCRIPTION", "HELPFRAME_STUCK_BUTTON_TEXT", "HELPFRAME_STUCK_TEXT1", "HELPFRAME_STUCK_TITLE", "HELPFRAME_SUGGESTION_BUTTON_DESCRIPTION", "HELPFRAME_SUGGESTION_BUTTON_TEXT", "HELPFRAME_TECHNICAL_BULLET1", "HELPFRAME_TECHNICAL_BULLET2", "HELPFRAME_TECHNICAL_BULLET3", "HELPFRAME_TECHNICAL_BULLET4", "HELPFRAME_TECHNICAL_BULLET5", "HELPFRAME_TECHNICAL_BULLET6", "HELPFRAME_TECHNICAL_BULLET7", "HELPFRAME_TECHNICAL_BULLET_TITLE1", "HELPFRAME_TECHNICAL_BULLET_TITLE2", "HELPFRAME_TECHNICAL_BUTTON_TEXT", "HELPFRAME_TECHNICAL_TEXT", "HELPFRAME_TECHNICAL_TITLE", "HELPFRAME_WELCOME_TEXT1", "HELPFRAME_WELCOME_TITLE", "HELP_BUTTON", "HELP_FRAME_TITLE", "HELP_LABEL", "HELP_SUBTEXT", "HELP_TEXT_LINE1", "HELP_TEXT_LINE2", "HELP_TEXT_LINE3", "HELP_TEXT_LINE4", "HELP_TEXT_LINE5", "HELP_TEXT_LINE6", "HELP_TEXT_LINE7", "HELP_TEXT_LINE8", "HELP_TEXT_LINE9", "HELP_TEXT_LINE10", "HELP_TEXT_LINE11", "HELP_TEXT_LINE12", "HELP_TEXT_LINE13", "HELP_TEXT_LINE14", "HELP_TEXT_LINE15", "HELP_TEXT_SIMPLE", "HELP_TICKET_ABANDON", "HELP_TICKET_ABANDON_CONFIRM", "HELP_TICKET_EDIT", "HELP_TICKET_EDIT_ABANDON", "HELP_TICKET_OPEN", "HELP_TICKET_QUEUE_DISABLED", "HEROIC_PREFIX", "HERTZ", "HIDE", "HIDE_OUTDOOR_WORLD_STATE_TEXT", "HIDE_PARTY_INTERFACE_TEXT", "HIDE_PULLOUT_BG", "HIGH", "HIGHLIGHTING", "HIGHLIGHT_ABILITY_COMBATLOG_TOOLTIP", "HIGHLIGHT_DAMAGE_COMBATLOG_TOOLTIP", "HIGHLIGHT_KILL_COMBATLOG_TOOLTIP", "HIGHLIGHT_SCHOOL_COMBATLOG_TOOLTIP", "HIGH_BIDDER", "HIT", "HK", "HOME", "HOME_INN", "HONOR", "HONORABLE_KILLS", "HONORABLE_KILLS_TOOLTIP", "HONOR_CONTRIBUTION_POINTS", "HONOR_ESTIMATED_TOOLTIP", "HONOR_GAINED", "HONOR_GAINED_TOOLTIP", "HONOR_HIGHEST_RANK", "HONOR_LASTWEEK", "HONOR_LIFETIME", "HONOR_POINTS", "HONOR_STANDING", "HONOR_THIS_SESSION", "HONOR_TODAY", "HONOR_YESTERDAY", "HOSTILE", "HOURS", "HOURS_ABBR", "HOUR_ONELETTER_ABBR", "HP", "HP_TEMPLATE", "HUNTER_AGILITY_TOOLTIP", "HUNTER_INTELLECT_TOOLTIP", "ICON_TAG_RAID_TARGET_CIRCLE1", "ICON_TAG_RAID_TARGET_CIRCLE2", "ICON_TAG_RAID_TARGET_CROSS1", "ICON_TAG_RAID_TARGET_CROSS2", "ICON_TAG_RAID_TARGET_DIAMOND1", "ICON_TAG_RAID_TARGET_DIAMOND2", "ICON_TAG_RAID_TARGET_MOON1", "ICON_TAG_RAID_TARGET_MOON2", "ICON_TAG_RAID_TARGET_SKULL1", "ICON_TAG_RAID_TARGET_SKULL2", "ICON_TAG_RAID_TARGET_SQUARE1", "ICON_TAG_RAID_TARGET_SQUARE2", "ICON_TAG_RAID_TARGET_STAR1", "ICON_TAG_RAID_TARGET_STAR2", "ICON_TAG_RAID_TARGET_TRIANGLE1", "ICON_TAG_RAID_TARGET_TRIANGLE2", "ID", "IDLE_MESSAGE", "IGNORE", "IGNORED", "IGNORE_DIALOG", "IGNORE_ERRORS", "IGNORE_LIST", "IGNORE_PLAYER", "IGR_BILLING_NAG_DIALOG", "IMMUNE", "IMPORTANT_PEOPLE_IN_GROUP", "IM_STYLE", "INBOX", "INBOX_TOO_MUCH_MAIL", "INBOX_TOO_MUCH_MAIL_TOOLTIP", "INCOMPLETE", "INCREASE_POTENTIAL", "INDIVIDUALS", "INPUT_CHINESE", "INPUT_JAPANESE", "INPUT_KOREAN", "INPUT_ROMAN", "INSCRIPTION", "INSPECT", "INSPECT_NOTIFY", "INSTANCE", "INSTANCE_BOOT_TIMER", "INSTANCE_DIFFICULTY_FORMAT", "INSTANCE_ID", "INSTANCE_LEAVE", "INSTANCE_LOCK_SEPARATOR", "INSTANCE_LOCK_TIMER", "INSTANCE_LOCK_TIMER_PREVIOUSLY_SAVED", "INSTANCE_RESET_FAILED", "INSTANCE_RESET_FAILED_OFFLINE", "INSTANCE_RESET_FAILED_ZONING", "INSTANCE_RESET_SUCCESS", "INSTANCE_SAVED", "INSTANCE_SHUTDOWN_MESSAGE", "INSTANCE_UNAVAILABLE_OTHER_EXPANSION_TOO_LOW", "INSTANCE_UNAVAILABLE_OTHER_GEAR_TOO_HIGH", "INSTANCE_UNAVAILABLE_OTHER_GEAR_TOO_LOW", "INSTANCE_UNAVAILABLE_OTHER_LEVEL_TOO_HIGH", "INSTANCE_UNAVAILABLE_OTHER_LEVEL_TOO_LOW", "INSTANCE_UNAVAILABLE_OTHER_MISSING_ITEM", "INSTANCE_UNAVAILABLE_OTHER_OTHER", "INSTANCE_UNAVAILABLE_OTHER_QUEST_NOT_COMPLETED", "INSTANCE_UNAVAILABLE_OTHER_RAID_LOCKED", "INSTANCE_UNAVAILABLE_SELF_EXPANSION_TOO_LOW", "INSTANCE_UNAVAILABLE_SELF_GEAR_TOO_HIGH", "INSTANCE_UNAVAILABLE_SELF_GEAR_TOO_LOW", "INSTANCE_UNAVAILABLE_SELF_LEVEL_TOO_HIGH", "INSTANCE_UNAVAILABLE_SELF_LEVEL_TOO_LOW", "INSTANCE_UNAVAILABLE_SELF_MISSING_ITEM", "INSTANCE_UNAVAILABLE_SELF_OTHER", "INSTANCE_UNAVAILABLE_SELF_QUEST_NOT_COMPLETED", "INSTANCE_UNAVAILABLE_SELF_RAID_LOCKED", "INT", "INTELLECT_COLON", "INTELLECT_TOOLTIP", "INTERFACE_ACTION_BLOCKED", "INTERFACE_OPTIONS", "INTERNAL_STRING_ERROR", "INTERRUPT", "INTERRUPTED", "INTERRUPTS", "INT_GENERAL_DURATION_DAYS", "INT_GENERAL_DURATION_HOURS", "INT_GENERAL_DURATION_MIN", "INT_GENERAL_DURATION_SEC", "INT_SPELL_DURATION_DAYS", "INT_SPELL_DURATION_HOURS", "INT_SPELL_DURATION_MIN", "INT_SPELL_DURATION_SEC", "INT_SPELL_POINTS_SPREAD_TEMPLATE", "INVENTORY_FULL", "INVENTORY_TOOLTIP", "INVERT_MOUSE", "INVITATION", "INVITE", "INVITE_CONVERSATION_INSTRUCTIONS", "INVITE_FRIEND_TO_CONVERSATION", "INVITE_TO_CONVERSATION", "INVTYPE_2HWEAPON", "INVTYPE_AMMO", "INVTYPE_BAG", "INVTYPE_BODY", "INVTYPE_CHEST", "INVTYPE_CLOAK", "INVTYPE_FEET", "INVTYPE_FINGER", "INVTYPE_HAND", "INVTYPE_HEAD", "INVTYPE_HOLDABLE", "INVTYPE_LEGS", "INVTYPE_NECK", "INVTYPE_QUIVER", "INVTYPE_RANGED", "INVTYPE_RANGEDRIGHT", "INVTYPE_RELIC", "INVTYPE_ROBE", "INVTYPE_SHIELD", "INVTYPE_SHOULDER", "INVTYPE_TABARD", "INVTYPE_THROWN", "INVTYPE_TRINKET", "INVTYPE_WAIST", "INVTYPE_WEAPON", "INVTYPE_WEAPONMAINHAND", "INVTYPE_WEAPONMAINHAND_PET", "INVTYPE_WEAPONOFFHAND", "INVTYPE_WRIST", "ITEMPRESENTINOFFHAND", "ITEMS", "ITEMSLOTTEXT", "ITEMS_EQUIPPED", "ITEMS_IN_INVENTORY", "ITEMS_NOT_IN_INVENTORY", "ITEMS_VARIABLE_QUANTITY", "ITEM_ACCOUNTBOUND", "ITEM_BIND_ON_EQUIP", "ITEM_BIND_ON_PICKUP", "ITEM_BIND_ON_USE", "ITEM_BIND_QUEST", "ITEM_BIND_TO_ACCOUNT", "ITEM_CANT_BE_DESTROYED", "ITEM_CLASSES_ALLOWED", "ITEM_CONJURED", "ITEM_COOLDOWN_TIME", "ITEM_COOLDOWN_TIME_DAYS", "ITEM_COOLDOWN_TIME_HOURS", "ITEM_COOLDOWN_TIME_MIN", "ITEM_COOLDOWN_TIME_SEC", "ITEM_COOLDOWN_TOTAL", "ITEM_COOLDOWN_TOTAL_DAYS", "ITEM_COOLDOWN_TOTAL_HOURS", "ITEM_COOLDOWN_TOTAL_MIN", "ITEM_COOLDOWN_TOTAL_SEC", "ITEM_CREATED_BY", "ITEM_DELTA_DESCRIPTION", "ITEM_DISENCHANT_ANY_SKILL", "ITEM_DISENCHANT_MIN_SKILL", "ITEM_DISENCHANT_NOT_DISENCHANTABLE", "ITEM_DURATION_DAYS", "ITEM_DURATION_HOURS", "ITEM_DURATION_MIN", "ITEM_DURATION_SEC", "ITEM_ENCHANT_DISCLAIMER", "ITEM_ENCHANT_TIME_LEFT_DAYS", "ITEM_ENCHANT_TIME_LEFT_HOURS", "ITEM_ENCHANT_TIME_LEFT_MIN", "ITEM_ENCHANT_TIME_LEFT_SEC", "ITEM_HEROIC", "ITEM_HEROIC_EPIC", "ITEM_LEVEL", "ITEM_LEVEL_AND_MIN", "ITEM_LEVEL_RANGE", "ITEM_LEVEL_RANGE_CURRENT", "ITEM_LIMIT_CATEGORY", "ITEM_LIMIT_CATEGORY_MULTIPLE", "ITEM_LOOT", "ITEM_MILLABLE", "ITEM_MIN_LEVEL", "ITEM_MIN_SKILL", "ITEM_MISSING", "ITEM_MOD_AGILITY", "ITEM_MOD_AGILITY_SHORT", "ITEM_MOD_ARMOR_PENETRATION_RATING", "ITEM_MOD_ARMOR_PENETRATION_RATING_SHORT", "ITEM_MOD_ATTACK_POWER", "ITEM_MOD_ATTACK_POWER_SHORT", "ITEM_MOD_BLOCK_RATING", "ITEM_MOD_BLOCK_RATING_SHORT", "ITEM_MOD_BLOCK_VALUE", "ITEM_MOD_BLOCK_VALUE_SHORT", "ITEM_MOD_CRIT_MELEE_RATING", "ITEM_MOD_CRIT_MELEE_RATING_SHORT", "ITEM_MOD_CRIT_RANGED_RATING", "ITEM_MOD_CRIT_RANGED_RATING_SHORT", "ITEM_MOD_CRIT_RATING", "ITEM_MOD_CRIT_RATING_SHORT", "ITEM_MOD_CRIT_SPELL_RATING", "ITEM_MOD_CRIT_SPELL_RATING_SHORT", "ITEM_MOD_CRIT_TAKEN_MELEE_RATING", "ITEM_MOD_CRIT_TAKEN_MELEE_RATING_SHORT", "ITEM_MOD_CRIT_TAKEN_RANGED_RATING", "ITEM_MOD_CRIT_TAKEN_RANGED_RATING_SHORT", "ITEM_MOD_CRIT_TAKEN_RATING", "ITEM_MOD_CRIT_TAKEN_RATING_SHORT", "ITEM_MOD_CRIT_TAKEN_SPELL_RATING", "ITEM_MOD_CRIT_TAKEN_SPELL_RATING_SHORT", "ITEM_MOD_DAMAGE_PER_SECOND_SHORT", "ITEM_MOD_DEFENSE_SKILL_RATING", "ITEM_MOD_DEFENSE_SKILL_RATING_SHORT", "ITEM_MOD_DODGE_RATING", "ITEM_MOD_DODGE_RATING_SHORT", "ITEM_MOD_EXPERTISE_RATING", "ITEM_MOD_EXPERTISE_RATING_SHORT", "ITEM_MOD_FERAL_ATTACK_POWER", "ITEM_MOD_FERAL_ATTACK_POWER_SHORT", "ITEM_MOD_HASTE_MELEE_RATING", "ITEM_MOD_HASTE_MELEE_RATING_SHORT", "ITEM_MOD_HASTE_RANGED_RATING", "ITEM_MOD_HASTE_RANGED_RATING_SHORT", "ITEM_MOD_HASTE_RATING", "ITEM_MOD_HASTE_RATING_SHORT", "ITEM_MOD_HASTE_SPELL_RATING", "ITEM_MOD_HASTE_SPELL_RATING_SHORT", "ITEM_MOD_HEALTH", "ITEM_MOD_HEALTH_REGEN", "ITEM_MOD_HEALTH_REGENERATION", "ITEM_MOD_HEALTH_REGENERATION_SHORT", "ITEM_MOD_HEALTH_REGEN_SHORT", "ITEM_MOD_HEALTH_SHORT", "ITEM_MOD_HIT_MELEE_RATING", "ITEM_MOD_HIT_MELEE_RATING_SHORT", "ITEM_MOD_HIT_RANGED_RATING", "ITEM_MOD_HIT_RANGED_RATING_SHORT", "ITEM_MOD_HIT_RATING", "ITEM_MOD_HIT_RATING_SHORT", "ITEM_MOD_HIT_SPELL_RATING", "ITEM_MOD_HIT_SPELL_RATING_SHORT", "ITEM_MOD_HIT_TAKEN_MELEE_RATING", "ITEM_MOD_HIT_TAKEN_MELEE_RATING_SHORT", "ITEM_MOD_HIT_TAKEN_RANGED_RATING", "ITEM_MOD_HIT_TAKEN_RANGED_RATING_SHORT", "ITEM_MOD_HIT_TAKEN_RATING", "ITEM_MOD_HIT_TAKEN_RATING_SHORT", "ITEM_MOD_HIT_TAKEN_SPELL_RATING", "ITEM_MOD_HIT_TAKEN_SPELL_RATING_SHORT", "ITEM_MOD_INTELLECT", "ITEM_MOD_INTELLECT_SHORT", "ITEM_MOD_MANA", "ITEM_MOD_MANA_REGENERATION", "ITEM_MOD_MANA_REGENERATION_SHORT", "ITEM_MOD_MANA_SHORT", "ITEM_MOD_MELEE_ATTACK_POWER_SHORT", "ITEM_MOD_PARRY_RATING", "ITEM_MOD_PARRY_RATING_SHORT", "ITEM_MOD_POWER_REGEN0_SHORT", "ITEM_MOD_POWER_REGEN1_SHORT", "ITEM_MOD_POWER_REGEN2_SHORT", "ITEM_MOD_POWER_REGEN3_SHORT", "ITEM_MOD_POWER_REGEN4_SHORT", "ITEM_MOD_POWER_REGEN5_SHORT", "ITEM_MOD_POWER_REGEN6_SHORT", "ITEM_MOD_RANGED_ATTACK_POWER", "ITEM_MOD_RANGED_ATTACK_POWER_SHORT", "ITEM_MOD_RESILIENCE_RATING", "ITEM_MOD_RESILIENCE_RATING_SHORT", "ITEM_MOD_SPELL_DAMAGE_DONE", "ITEM_MOD_SPELL_DAMAGE_DONE_SHORT", "ITEM_MOD_SPELL_HEALING_DONE", "ITEM_MOD_SPELL_HEALING_DONE_SHORT", "ITEM_MOD_SPELL_PENETRATION", "ITEM_MOD_SPELL_PENETRATION_SHORT", "ITEM_MOD_SPELL_POWER", "ITEM_MOD_SPELL_POWER_SHORT", "ITEM_MOD_SPIRIT", "ITEM_MOD_SPIRIT_SHORT", "ITEM_MOD_STAMINA", "ITEM_MOD_STAMINA_SHORT", "ITEM_MOD_STRENGTH", "ITEM_MOD_STRENGTH_SHORT", "ITEM_MOUSE_OVER", "ITEM_NAMES", "ITEM_NAMES_SHOW_BRACES_COMBATLOG_TOOLTIP", "ITEM_NO_DROP", "ITEM_OPENABLE", "ITEM_PROPOSED_ENCHANT", "ITEM_PROSPECTABLE", "ITEM_PURCHASED_COLON", "ITEM_QUALITY0_DESC", "ITEM_QUALITY1_DESC", "ITEM_QUALITY2_DESC", "ITEM_QUALITY3_DESC", "ITEM_QUALITY4_DESC", "ITEM_QUALITY5_DESC", "ITEM_QUALITY6_DESC", "ITEM_QUALITY7_DESC", "ITEM_QUANTITY_TEMPLATE", "ITEM_RACES_ALLOWED", "ITEM_RANDOM_ENCHANT", "ITEM_READABLE", "ITEM_REFUND_MSG", "ITEM_REQ_ARENA_RATING", "ITEM_REQ_ARENA_RATING_3V3", "ITEM_REQ_ARENA_RATING_5V5", "ITEM_REQ_PURCHASE_GROUP", "ITEM_REQ_REPUTATION", "ITEM_REQ_SKILL", "ITEM_RESIST_ALL", "ITEM_RESIST_SINGLE", "ITEM_SET_BONUS", "ITEM_SET_BONUS_GRAY", "ITEM_SET_NAME", "ITEM_SIGNABLE", "ITEM_SLOTS_IGNORED", "ITEM_SOCKETABLE", "ITEM_SOCKETING", "ITEM_SOCKET_BONUS", "ITEM_SOLD_COLON", "ITEM_SOULBOUND", "ITEM_SPELL_CHARGES", "ITEM_SPELL_CHARGES_NONE", "ITEM_SPELL_EFFECT", "ITEM_SPELL_KNOWN", "ITEM_SPELL_TRIGGER_ONEQUIP", "ITEM_SPELL_TRIGGER_ONPROC", "ITEM_SPELL_TRIGGER_ONUSE", "ITEM_STARTS_QUEST", "ITEM_SUFFIX_TEMPLATE", "ITEM_TEXT_FROM", "ITEM_UNIQUE", "ITEM_UNIQUE_EQUIPPABLE", "ITEM_UNIQUE_MULTIPLE", "ITEM_UNSELLABLE", "ITEM_WRAPPED_BY", "ITEM_WRITTEN_BY", "ITEM_WRONG_CLASS", "ITEM_WRONG_RACE", "ITUNES_SHOW_ALL_TRACK_CHANGES", "ITUNES_SHOW_ALL_TRACK_CHANGES_TOOLTIP", "ITUNES_SHOW_FEEDBACK", "ITUNES_SHOW_FEEDBACK_TOOLTIP", "JOIN", "JOINED_PARTY", "JOIN_AS_GROUP", "JOIN_AS_GROUP_TOOLTIP", "JOIN_AS_PARTY", "JOIN_NEW_CHANNEL", "KBASE_ARTICLE_COUNT", "KBASE_ARTICLE_ID", "KBASE_CHARSTUCK", "KBASE_DEFAULT_SEARCH_TEXT", "KBASE_ERROR_LOAD_FAILURE", "KBASE_ERROR_NO_RESULTS", "KBASE_GMTALK", "KBASE_HOT_ISSUE", "KBASE_LAG", "KBASE_RECENTLY_UPDATED", "KBASE_REPORTISSUE", "KBASE_SEARCH_RESULTS", "KBASE_TOP_ISSUES", "KEY1", "KEY2", "KEYBINDINGFRAME_MOUSEWHEEL_ERROR", "KEYRING", "KEY_APOSTROPHE", "KEY_BACKSLASH", "KEY_BACKSPACE", "KEY_BACKSPACE_MAC", "KEY_BINDING", "KEY_BINDINGS", "KEY_BINDINGS_MAC", "KEY_BOUND", "KEY_BUTTON1", "KEY_BUTTON10", "KEY_BUTTON11", "KEY_BUTTON12", "KEY_BUTTON13", "KEY_BUTTON14", "KEY_BUTTON15", "KEY_BUTTON16", "KEY_BUTTON17", "KEY_BUTTON18", "KEY_BUTTON19", "KEY_BUTTON2", "KEY_BUTTON20", "KEY_BUTTON21", "KEY_BUTTON22", "KEY_BUTTON23", "KEY_BUTTON24", "KEY_BUTTON25", "KEY_BUTTON26", "KEY_BUTTON27", "KEY_BUTTON28", "KEY_BUTTON29", "KEY_BUTTON3", "KEY_BUTTON30", "KEY_BUTTON31", "KEY_BUTTON4", "KEY_BUTTON5", "KEY_BUTTON6", "KEY_BUTTON7", "KEY_BUTTON8", "KEY_BUTTON9", "KEY_COMMA", "KEY_DELETE", "KEY_DELETE_MAC", "KEY_DOWN", "KEY_END", "KEY_ENTER", "KEY_ENTER_MAC", "KEY_ESCAPE", "KEY_HOME", "KEY_INSERT", "KEY_INSERT_MAC", "KEY_LEFT", "KEY_LEFTBRACKET", "KEY_MINUS", "KEY_MOUSEWHEELDOWN", "KEY_MOUSEWHEELUP", "KEY_NUMLOCK", "KEY_NUMLOCK_MAC", "KEY_NUMPAD0", "KEY_NUMPAD1", "KEY_NUMPAD2", "KEY_NUMPAD3", "KEY_NUMPAD4", "KEY_NUMPAD5", "KEY_NUMPAD6", "KEY_NUMPAD7", "KEY_NUMPAD8", "KEY_NUMPAD9", "KEY_NUMPADDECIMAL", "KEY_NUMPADDIVIDE", "KEY_NUMPADMINUS", "KEY_NUMPADMULTIPLY", "KEY_NUMPADPLUS", "KEY_PAGEDOWN", "KEY_PAGEUP", "KEY_PAUSE", "KEY_PAUSE_MAC", "KEY_PERIOD", "KEY_PLUS", "KEY_PRINTSCREEN", "KEY_PRINTSCREEN_MAC", "KEY_RIGHT", "KEY_RIGHTBRACKET", "KEY_SCROLLLOCK", "KEY_SCROLLLOCK_MAC", "KEY_SEMICOLON", "KEY_SLASH", "KEY_SPACE", "KEY_TAB", "KEY_TILDE", "KEY_UNBOUND_ERROR", "KEY_UP", "KILLING_BLOWS", "KILLING_BLOW_TOOLTIP", "KILLS", "KILLS_COMBATLOG_TOOLTIP", "KILLS_PVP", "KNOWLEDGEBASE_FRAME_TITLE", "KNOWLEDGE_BASE", "KNOWN_TALENTS_HEADER", "KOKR", "LABEL_NOTE", "LALT_KEY_TEXT", "LANGUAGE", "LANGUAGES_LABEL", "LANGUAGES_SUBTEXT", "LASTONLINE", "LASTONLINE_DAYS", "LASTONLINE_HOURS", "LASTONLINE_MINS", "LASTONLINE_MINUTES", "LASTONLINE_MONTHS", "LASTONLINE_SECS", "LASTONLINE_YEARS", "LAST_ONLINE_COLON", "LATEST_UNLOCKED_ACHIEVEMENTS", "LATEST_UPDATED_STATS", "LAUGH_WORD1", "LAUGH_WORD2", "LAUGH_WORD3", "LAUGH_WORD4", "LAUGH_WORD5", "LAUGH_WORD6", "LAUGH_WORD7", "LAUGH_WORD8", "LAUGH_WORD9", "LCTRL_KEY_TEXT", "LEADER", "LEADER_TOOLTIP", "LEARN", "LEARN_SKILL_TEMPLATE", "LEAVE_ALL", "LEAVE_ARENA", "LEAVE_BATTLEGROUND", "LEAVE_CONVERSATION", "LEAVE_QUEUE", "LEAVE_VEHICLE", "LEAVE_ZONE", "LEAVING_COMBAT", "LEFT_PARTY", "LEGSSLOT", "LESS_THAN_ONE_MINUTE", "LEVEL", "LEVEL_ABBR", "LEVEL_GAINED", "LEVEL_GRANT", "LEVEL_RANGE", "LEVEL_REQUIRED", "LEVEL_TOO_LOW", "LEVEL_UP", "LEVEL_UP_CHAR_POINTS", "LEVEL_UP_HEALTH", "LEVEL_UP_HEALTH_MANA", "LEVEL_UP_SKILL_POINTS", "LEVEL_UP_STAT", "LFD_HOLIDAY_REWARD_EXPLANATION1", "LFD_HOLIDAY_REWARD_EXPLANATION2", "LFD_LEVEL_FORMAT_RANGE", "LFD_LEVEL_FORMAT_SINGLE", "LFD_RANDOM_EXPLANATION", "LFD_RANDOM_REWARD_EXPLANATION1", "LFD_RANDOM_REWARD_EXPLANATION2", "LFD_RANDOM_REWARD_PUG_EXPLANATION", "LFD_REWARDS", "LFGWIZARD_TITLE", "LFG_DESERTER_OTHER", "LFG_DESERTER_YOU", "LFG_DISABLED_LFM_TOOLTIP", "LFG_DISABLED_PARTY_TOOLTIP", "LFG_LABEL", "LFG_OFFER_CONTINUE", "LFG_RANDOM_COOLDOWN_OTHER", "LFG_RANDOM_COOLDOWN_YOU", "LFG_ROLES_TITLE", "LFG_ROLE_CHECK_ROLE_CHOSEN", "LFG_STATISTIC_AVERAGE_WAIT", "LFG_STATISTIC_AVERAGE_WAIT_UNKNOWN", "LFG_STATISTIC_MATCHES_MADE", "LFG_STATISTIC_PARTIES_IN_QUEUE", "LFG_STATISTIC_PLAYERS_IN_QUEUE", "LFG_TITLE", "LFG_TOOLTIP_ROLES", "LFG_TYPE_ANY_DUNGEON", "LFG_TYPE_ANY_HEROIC_DUNGEON", "LFG_TYPE_BATTLEGROUND", "LFG_TYPE_DAILY_DUNGEON", "LFG_TYPE_DAILY_HEROIC_DUNGEON", "LFG_TYPE_DUNGEON", "LFG_TYPE_HEROIC_DUNGEON", "LFG_TYPE_NONE", "LFG_TYPE_QUEST", "LFG_TYPE_RAID", "LFG_TYPE_RANDOM_DUNGEON", "LFG_TYPE_ZONE", "LFM_DISABLED_LFG_TOOLTIP", "LFM_NAME_TEMPLATE", "LFM_NUM_RAID_MEMBER_TEMPLATE", "LFM_TITLE", "LINK_TRADESKILL_TOOLTIP", "LIST_ME", "LIST_MY_GROUP", "LOCALE_INFORMATION", "LOCATION_COLON", "LOCK", "LOCKED", "LOCKED_WITH_ITEM", "LOCKED_WITH_SPELL", "LOCKED_WITH_SPELL_KNOWN", "LOCK_ACTIONBAR_TEXT", "LOCK_BATTLEFIELDMINIMAP", "LOCK_CHANNELPULLOUT_LABEL", "LOCK_EXPIRE", "LOCK_FOCUS_FRAME", "LOCK_WINDOW", "LOGOUT", "LOG_PERIODIC_EFFECTS", "LOOKING", "LOOKING_FOR", "LOOKING_FOR_DUNGEON", "LOOKING_FOR_GROUP_LABEL", "LOOKING_FOR_GROUP_LABEL2", "LOOKING_FOR_GROUP_TEXT", "LOOKING_FOR_MORE", "LOOKING_FOR_MORE_TEXT", "LOOKING_FOR_RAID", "LOOK_FOR_GROUP", "LOOK_FOR_MORE", "LOOT", "LOOTER", "LOOT_FREE_FOR_ALL", "LOOT_GONE", "LOOT_GROUP_LOOT", "LOOT_ITEM", "LOOT_ITEM_CREATED_SELF", "LOOT_ITEM_CREATED_SELF_MULTIPLE", "LOOT_ITEM_MULTIPLE", "LOOT_ITEM_PUSHED_SELF", "LOOT_ITEM_PUSHED_SELF_MULTIPLE", "LOOT_ITEM_SELF", "LOOT_ITEM_SELF_MULTIPLE", "LOOT_KEY_TEXT", "LOOT_MASTER_LOOTER", "LOOT_METHOD", "LOOT_MONEY", "LOOT_MONEY_SPLIT", "LOOT_NEED_BEFORE_GREED", "LOOT_NEXT_PAGE", "LOOT_NO_DROP", "LOOT_NO_DROP_DISENCHANT", "LOOT_PROMOTE", "LOOT_ROLL_ALL_PASSED", "LOOT_ROLL_DISENCHANT", "LOOT_ROLL_DISENCHANT_SELF", "LOOT_ROLL_GREED", "LOOT_ROLL_GREED_SELF", "LOOT_ROLL_INELIGIBLE_REASON1", "LOOT_ROLL_INELIGIBLE_REASON2", "LOOT_ROLL_INELIGIBLE_REASON3", "LOOT_ROLL_INELIGIBLE_REASON4", "LOOT_ROLL_INELIGIBLE_REASON5", "LOOT_ROLL_NEED", "LOOT_ROLL_NEED_SELF", "LOOT_ROLL_PASSED", "LOOT_ROLL_PASSED_AUTO", "LOOT_ROLL_PASSED_AUTO_FEMALE", "LOOT_ROLL_PASSED_SELF", "LOOT_ROLL_PASSED_SELF_AUTO", "LOOT_ROLL_ROLLED_DE", "LOOT_ROLL_ROLLED_GREED", "LOOT_ROLL_ROLLED_NEED", "LOOT_ROLL_WON", "LOOT_ROLL_WON_NO_SPAM_DE", "LOOT_ROLL_WON_NO_SPAM_GREED", "LOOT_ROLL_WON_NO_SPAM_NEED", "LOOT_ROLL_YOU_WON", "LOOT_ROLL_YOU_WON_NO_SPAM_DE", "LOOT_ROLL_YOU_WON_NO_SPAM_GREED", "LOOT_ROLL_YOU_WON_NO_SPAM_NEED", "LOOT_ROUND_ROBIN", "LOOT_THRESHOLD", "LOOT_UNDER_MOUSE_TEXT", "LOSS", "LOW", "LSHIFT_KEY_TEXT", "LUA_ERROR", "MACRO", "MACROFRAME_CHAR_LIMIT", "MACROS", "MACRO_ACTION_FORBIDDEN", "MACRO_HELP_TEXT_LINE1", "MACRO_HELP_TEXT_LINE2", "MACRO_HELP_TEXT_LINE3", "MACRO_HELP_TEXT_LINE4", "MACRO_HELP_TEXT_LINE5", "MACRO_POPUP_CHOOSE_ICON", "MACRO_POPUP_TEXT", "MAC_OPTIONS", "MAGE_INTELLECT_TOOLTIP", "MAGIC_RESISTANCES_COLON", "MAIL_COD_ERROR", "MAIL_COD_ERROR_COLORBLIND", "MAIL_LABEL", "MAIL_LETTER_TOOLTIP", "MAIL_LOOT_KEY_TEXT", "MAIL_MULTIPLE_ITEMS", "MAIL_REPLY_PREFIX", "MAIL_RETURN", "MAIL_SUBJECT_LABEL", "MAIL_TO_LABEL", "MAINASSIST", "MAINHANDSLOT", "MAINMENUBAR_FPS_LABEL", "MAINMENUBAR_LATENCY_LABEL", "MAINMENU_BUTTON", "MAINTANK", "MAIN_ASSIST", "MAIN_MENU", "MAIN_TANK", "MAJOR_GLYPH", "MAKE_INTERACTABLE", "MAKE_MODERATOR", "MAKE_UNINTERACTABLE", "MALE", "MANA", "MANAGE_ACCOUNT", "MANAGE_ACCOUNT_URL", "MANA_COLON", "MANA_COST", "MANA_COST_PER_TIME", "MANA_LOW", "MANA_REGEN", "MANA_REGEN_ABBR", "MANA_REGEN_FROM_SPIRIT", "MANA_REGEN_TOOLTIP", "MAP_QUEST_DIFFICULTY_TEXT", "MARKED_AFK", "MARKED_AFK_MESSAGE", "MARKED_DND", "MASTERY_POINTS_SPENT", "MASTER_LOOTER", "MASTER_VOLUME", "MATCHMAKING_MATCH_S", "MATCHMAKING_PENDING", "MAXIMUM", "MAX_FOLLOW_DIST", "MAX_HP_TEMPLATE", "MEETINGSTONE_LEVEL", "MEETINGSTONE_TOOLTIP", "MELEE", "MELEE_ATTACK", "MELEE_ATTACK_POWER", "MELEE_ATTACK_POWER_TOOLTIP", "MELEE_COMBATLOG_TOOLTIP", "MELEE_CRIT_CHANCE", "MELEE_RANGE", "MEMBERS", "MERCHANT", "MERCHANT_ARENA_POINTS", "MERCHANT_BUYBACK", "MERCHANT_HONOR_POINTS", "MERCHANT_PAGE_NUMBER", "MERCHANT_STOCK", "MESSAGE_SOURCES", "MESSAGE_TYPES", "META_GEM", "MILLISECONDS_ABBR", "MINIMAP_LABEL", "MINIMAP_TRACKING_AUCTIONEER", "MINIMAP_TRACKING_BANKER", "MINIMAP_TRACKING_BATTLEMASTER", "MINIMAP_TRACKING_FLIGHTMASTER", "MINIMAP_TRACKING_INNKEEPER", "MINIMAP_TRACKING_MAILBOX", "MINIMAP_TRACKING_REPAIR", "MINIMAP_TRACKING_STABLEMASTER", "MINIMAP_TRACKING_TOOLTIP_NONE", "MINIMAP_TRACKING_TRAINER_CLASS", "MINIMAP_TRACKING_TRAINER_PROFESSION", "MINIMAP_TRACKING_TRIVIAL_QUESTS", "MINIMAP_TRACKING_VENDOR_AMMO", "MINIMAP_TRACKING_VENDOR_FOOD", "MINIMAP_TRACKING_VENDOR_POISON", "MINIMAP_TRACKING_VENDOR_REAGENT", "MINIMIZE", "MINIMUM", "MINOR_GLYPH", "MINS_ABBR", "MINUTES", "MINUTES_ABBR", "MINUTE_ONELETTER_ABBR", "MISCELLANEOUS", "MISS", "MISSES", "MODE", "MODIFIERS_COLON", "MONEY", "MONEY_COLON", "MONEY_LOOT", "MONSTER_BOSS_EMOTE", "MONSTER_BOSS_WHISPER", "MONTH_APRIL", "MONTH_AUGUST", "MONTH_DECEMBER", "MONTH_FEBRUARY", "MONTH_JANUARY", "MONTH_JULY", "MONTH_JUNE", "MONTH_MARCH", "MONTH_MAY", "MONTH_NOVEMBER", "MONTH_OCTOBER", "MONTH_SEPTEMBER", "MORE_REAGENTS", "MOTD_COLON", "MOUNT", "MOUNTS", "MOUSE_LABEL", "MOUSE_LOOK_SPEED", "MOUSE_SENSITIVITY", "MOUSE_SUBTEXT", "MOVE_FILTER_DOWN", "MOVE_FILTER_UP", "MOVE_TO_CONVERSATION_WINDOW", "MOVE_TO_INACTIVE", "MOVE_TO_NEW_WINDOW", "MOVE_TO_WHISPER_WINDOW", "MOVIE_RECORDING_AIC", "MOVIE_RECORDING_AIC_TOOLTIP", "MOVIE_RECORDING_CANCEL_CONFIRMATION", "MOVIE_RECORDING_CODEC_TOOLTIP", "MOVIE_RECORDING_COMPRESSBUTTON", "MOVIE_RECORDING_COMPRESSDIALOG", "MOVIE_RECORDING_COMPRESSING", "MOVIE_RECORDING_COMPRESSING_CANCEL_NEWBIE_TOOLTIP", "MOVIE_RECORDING_COMPRESSING_CANCEL_TOOLTIP", "MOVIE_RECORDING_COMPRESSION", "MOVIE_RECORDING_COMPRESSION_STARTED", "MOVIE_RECORDING_COMPRESS_TOOLTIP", "MOVIE_RECORDING_DATA_RATE", "MOVIE_RECORDING_DATA_RATE_TOOLTIP", "MOVIE_RECORDING_DV", "MOVIE_RECORDING_DV_TOOLTIP", "MOVIE_RECORDING_ENABLE_COMPRESSION", "MOVIE_RECORDING_ENABLE_COMPRESSION_TOOLTIP", "MOVIE_RECORDING_ENABLE_CURSOR", "MOVIE_RECORDING_ENABLE_CURSOR_TOOLTIP", "MOVIE_RECORDING_ENABLE_GUI", "MOVIE_RECORDING_ENABLE_GUI_TOOLTIP", "MOVIE_RECORDING_ENABLE_ICON", "MOVIE_RECORDING_ENABLE_ICON_TOOLTIP", "MOVIE_RECORDING_ENABLE_RECOVER", "MOVIE_RECORDING_ENABLE_RECOVER_TOOLTIP", "MOVIE_RECORDING_ENABLE_SOUND", "MOVIE_RECORDING_ENABLE_SOUND_TOOLTIP", "MOVIE_RECORDING_FPS_FOURTH", "MOVIE_RECORDING_FPS_HALF", "MOVIE_RECORDING_FPS_THIRD", "MOVIE_RECORDING_FRAMERATE", "MOVIE_RECORDING_FRAMERATE_TOOLTIP", "MOVIE_RECORDING_FULL_RESOLUTION", "MOVIE_RECORDING_GUI_OFF", "MOVIE_RECORDING_GUI_ON", "MOVIE_RECORDING_H264", "MOVIE_RECORDING_H264_TOOLTIP", "MOVIE_RECORDING_MJPEG", "MOVIE_RECORDING_MJPEG_TOOLTIP", "MOVIE_RECORDING_MPEG4", "MOVIE_RECORDING_MPEG4_TOOLTIP", "MOVIE_RECORDING_PIXLET", "MOVIE_RECORDING_QUALITY_TOOLTIP", "MOVIE_RECORDING_RECORDING", "MOVIE_RECORDING_RECORDING_STARTED", "MOVIE_RECORDING_RECORDING_STOPPED", "MOVIE_RECORDING_RECOVERING", "MOVIE_RECORDING_RESOLUTION_TOOLTIP", "MOVIE_RECORDING_TIME", "MOVIE_RECORDING_TIME_TOOLTIP", "MOVIE_RECORDING_UNCOMPRESSED_RGB", "MOVIE_RECORDING_WARNING_COMPRESSING", "MOVIE_RECORDING_WARNING_DISK_FULL", "MOVIE_RECORDING_WARNING_NO_MOVIE", "MOVIE_RECORDING_WARNING_PERF", "MOVIE_RECORDING_WARNING_REQUIREMENTS", "MP", "MULTIPLE_DUNGEONS", "MULTISAMPLE", "MULTISAMPLING_FORMAT_STRING", "MULTI_CAST_TOOLTIP_NO_TOTEM", "MUSIC_DISABLED", "MUSIC_ENABLED", "MUSIC_VOLUME", "MUTE", "MUTED", "MUTED_LIST", "MUTE_PLAYER", "NAME", "NAMES_LABEL", "NAMES_SUBTEXT", "NAME_CHAT_WINDOW", "NEAR", "NECKSLOT", "NEED", "NEED_NEWBIE", "NET_PROMOTER_HIGH", "NET_PROMOTER_LOW", "NEVER", "NEW", "NEWBIE_TOOLTIP_ABANDONQUEST", "NEWBIE_TOOLTIP_ACHIEVEMENT", "NEWBIE_TOOLTIP_ADDFRIEND", "NEWBIE_TOOLTIP_ADDMEMBER", "NEWBIE_TOOLTIP_ADDTEAMMEMBER", "NEWBIE_TOOLTIP_ALLIANCE", "NEWBIE_TOOLTIP_AUTO_JOIN_VOICE", "NEWBIE_TOOLTIP_BATTLEFIELDMINIMAP_OPTIONS", "NEWBIE_TOOLTIP_BATTLEFIELD_GROUP_JOIN", "NEWBIE_TOOLTIP_CHANNELPULLOUT_OPTIONS", "NEWBIE_TOOLTIP_CHANNELTAB", "NEWBIE_TOOLTIP_CHARACTER", "NEWBIE_TOOLTIP_CHATMENU", "NEWBIE_TOOLTIP_CHATOPTIONS", "NEWBIE_TOOLTIP_CHAT_OVERFLOW", "NEWBIE_TOOLTIP_DEMOTE", "NEWBIE_TOOLTIP_DISHONORABLE_KILLS", "NEWBIE_TOOLTIP_DISPLAY_CHANNEL_PULLOUT", "NEWBIE_TOOLTIP_ENCHANTSLOT", "NEWBIE_TOOLTIP_ENTER_BATTLEGROUND", "NEWBIE_TOOLTIP_EQUIPMENT_MANAGER", "NEWBIE_TOOLTIP_EQUIPMENT_MANAGER_IGNORE_SLOT", "NEWBIE_TOOLTIP_EQUIPMENT_MANAGER_PLACE_IN_BAGS", "NEWBIE_TOOLTIP_EQUIPMENT_MANAGER_UNIGNORE_SLOT", "NEWBIE_TOOLTIP_FIRST_AVAILABLE", "NEWBIE_TOOLTIP_FRAMERATE", "NEWBIE_TOOLTIP_FRIENDSTAB", "NEWBIE_TOOLTIP_GROUPINVITE", "NEWBIE_TOOLTIP_GUILDCONTROL", "NEWBIE_TOOLTIP_GUILDGROUPINVITE", "NEWBIE_TOOLTIP_GUILDPUBLICNOTE", "NEWBIE_TOOLTIP_GUILDREMOVE", "NEWBIE_TOOLTIP_GUILDTAB", "NEWBIE_TOOLTIP_GUILD_INFORMATION", "NEWBIE_TOOLTIP_GUILD_MEMBER_OPTIONS", "NEWBIE_TOOLTIP_HEALTHBAR", "NEWBIE_TOOLTIP_HELP", "NEWBIE_TOOLTIP_HONORABLE_KILLS", "NEWBIE_TOOLTIP_HONOR_CONTRIBUTION_POINTS", "NEWBIE_TOOLTIP_HONOR_STANDING", "NEWBIE_TOOLTIP_HORDE", "NEWBIE_TOOLTIP_IGNOREPLAYER", "NEWBIE_TOOLTIP_IGNORETAB", "NEWBIE_TOOLTIP_LATENCY", "NEWBIE_TOOLTIP_LFGPARENT", "NEWBIE_TOOLTIP_LFMTAB", "NEWBIE_TOOLTIP_MAINMENU", "NEWBIE_TOOLTIP_MANABAR0", "NEWBIE_TOOLTIP_MANABAR1", "NEWBIE_TOOLTIP_MANABAR2", "NEWBIE_TOOLTIP_MANABAR3", "NEWBIE_TOOLTIP_MANABAR4", "NEWBIE_TOOLTIP_MEMORY", "NEWBIE_TOOLTIP_MINIMAPTOGGLE", "NEWBIE_TOOLTIP_MUTEPLAYER", "NEWBIE_TOOLTIP_PARTYOPTIONS", "NEWBIE_TOOLTIP_PLAYEROPTIONS", "NEWBIE_TOOLTIP_PROMOTE", "NEWBIE_TOOLTIP_PVP", "NEWBIE_TOOLTIP_PVPFFA", "NEWBIE_TOOLTIP_QUESTLOG", "NEWBIE_TOOLTIP_RAF_SUMMON_LINKED", "NEWBIE_TOOLTIP_RAIDTAB", "NEWBIE_TOOLTIP_RANK", "NEWBIE_TOOLTIP_RANK_POSITION", "NEWBIE_TOOLTIP_REMOVEFRIEND", "NEWBIE_TOOLTIP_REMOVEPLAYER", "NEWBIE_TOOLTIP_SENDMESSAGE", "NEWBIE_TOOLTIP_SHAREQUEST", "NEWBIE_TOOLTIP_SOCIAL", "NEWBIE_TOOLTIP_SPELLBOOK", "NEWBIE_TOOLTIP_STOPIGNORE", "NEWBIE_TOOLTIP_STOPWATCH_PLAYPAUSEBUTTON", "NEWBIE_TOOLTIP_STOPWATCH_RESETBUTTON", "NEWBIE_TOOLTIP_TALENTS", "NEWBIE_TOOLTIP_TRACKQUEST", "NEWBIE_TOOLTIP_UNIT_DUEL", "NEWBIE_TOOLTIP_UNIT_FOLLOW", "NEWBIE_TOOLTIP_UNIT_FREE_FOR_ALL", "NEWBIE_TOOLTIP_UNIT_GROUP_LOOT", "NEWBIE_TOOLTIP_UNIT_INSPECT", "NEWBIE_TOOLTIP_UNIT_INVITE", "NEWBIE_TOOLTIP_UNIT_LEAVE_PARTY", "NEWBIE_TOOLTIP_UNIT_LOOT_THRESHOLD", "NEWBIE_TOOLTIP_UNIT_MASTER_LOOTER", "NEWBIE_TOOLTIP_UNIT_NEED_BEFORE_GREED", "NEWBIE_TOOLTIP_UNIT_OPT_OUT_LOOT", "NEWBIE_TOOLTIP_UNIT_PET_ABANDON", "NEWBIE_TOOLTIP_UNIT_PET_DISMISS", "NEWBIE_TOOLTIP_UNIT_PET_PAPERDOLL", "NEWBIE_TOOLTIP_UNIT_PET_RENAME", "NEWBIE_TOOLTIP_UNIT_PROMOTE", "NEWBIE_TOOLTIP_UNIT_ROUND_ROBIN", "NEWBIE_TOOLTIP_UNIT_TRADE", "NEWBIE_TOOLTIP_UNIT_UNINVITE", "NEWBIE_TOOLTIP_UNIT_VOTE_TO_KICK", "NEWBIE_TOOLTIP_UNMUTE", "NEWBIE_TOOLTIP_VOICE_CHAT_SELECTOR", "NEWBIE_TOOLTIP_WHOTAB", "NEWBIE_TOOLTIP_WORLDMAP", "NEWBIE_TOOLTIP_XPBAR", "NEW_ACHIEVEMENT_EARNED", "NEW_CHAT_WINDOW", "NEW_CONVERSATION_INSTRUCTIONS", "NEW_LEADER", "NEW_TITLE_EARNED", "NEXT", "NEXT_ABILITY", "NEXT_BATTLE", "NO", "NONE", "NONEQUIPSLOT", "NONE_CAPS", "NONE_KEY", "NORMAL_QUEST_DISPLAY", "NOTE", "NOTE_COLON", "NOTE_SUBMITTED", "NOTE_SUBMIT_FAILED", "NOT_APPLICABLE", "NOT_BOUND", "NOT_ENOUGH_MANA", "NOT_IN_GROUP", "NOT_TAMEABLE", "NOT_YET_SIGNED", "NO_ATTACHMENTS", "NO_BIDS", "NO_COMPLETED_ACHIEVEMENTS", "NO_DAILY_QUESTS_REMAINING", "NO_EMPTY_KEYRING_SLOTS_ERROR", "NO_EQUIPMENT_SLOTS_AVAILABLE", "NO_FRIEND_REQUESTS", "NO_GUILDBANK_TABS", "NO_LFD_WHILE_LFR", "NO_LFR_WHILE_LFD", "NO_RAIDS_AVAILABLE", "NO_RAID_INSTANCES_SAVED", "NO_RESPONSE", "NO_UPDATED_STATS_TEXT", "NO_VIEWABLE_GUILDBANK_LOGS", "NO_VIEWABLE_GUILDBANK_TABS", "NO_VOICE_SESSIONS", "NUMBER_OF_RESULTS_TEMPLATE", "NUM_FREE_SLOTS", "NUM_GUILDBANK_TABS_PURCHASED", "NUM_RAID_MEMBERS", "OBJECTIVES_IGNORE_CURSOR_TEXT", "OBJECTIVES_LABEL", "OBJECTIVES_SHOW_QUEST_MAP", "OBJECTIVES_STOP_TRACKING", "OBJECTIVES_SUBTEXT", "OBJECTIVES_TRACKER_LABEL", "OBJECTIVES_VIEW_ACHIEVEMENT", "OBJECTIVES_VIEW_IN_ACHIEVEMENTS", "OBJECTIVES_VIEW_IN_QUESTLOG", "OBJECTIVES_WATCH_QUESTS_ARENA", "OBJECTIVES_WATCH_TOO_MANY", "OBJECT_ALPHA", "OFF", "OFFICER", "OFFICER_CHAT", "OFFICER_NOTE_COLON", "OKAY", "OLD_TITLE_LOST", "ONLY_EMPTY_BAGS", "ON_COOLDOWN", "OPACITY", "OPENING", "OPENMAIL", "OPEN_LOCK_OTHER", "OPEN_LOCK_SELF", "OPEN_RAID_BROWSER", "OPTIONAL", "OPTIONAL_PARENS", "OPTIONS_BRIGHTNESS", "OPTIONS_MENU", "OPTIONS_SHADERS", "OPTION_CHAT_STYLE_CLASSIC", "OPTION_CHAT_STYLE_IM", "OPTION_CONVERSATION_MODE_INLINE", "OPTION_CONVERSATION_MODE_POPOUT", "OPTION_LOGOUT_REQUIREMENT", "OPTION_PREVIEW_TALENT_CHANGES_DESCRIPTION", "OPTION_RESTART_REQUIREMENT", "OPTION_STEREO_CONVERGENCE", "OPTION_STEREO_SEPARATION", "OPTION_TOOLTIP_ADVANCED_OBJECTIVES", "OPTION_TOOLTIP_ADVANCED_WORLD_MAP", "OPTION_TOOLTIP_AGGRO_WARNING_DISPLAY1", "OPTION_TOOLTIP_AGGRO_WARNING_DISPLAY2", "OPTION_TOOLTIP_AGGRO_WARNING_DISPLAY3", "OPTION_TOOLTIP_AGGRO_WARNING_DISPLAY4", "OPTION_TOOLTIP_ALWAYS_SHOW_MULTIBARS", "OPTION_TOOLTIP_AMBIENCE_VOLUME", "OPTION_TOOLTIP_ANIMATION", "OPTION_TOOLTIP_ANISOTROPIC", "OPTION_TOOLTIP_ASSIST_ATTACK", "OPTION_TOOLTIP_AUTO_DISMOUNT_FLYING", "OPTION_TOOLTIP_AUTO_FOLLOW_SPEED", "OPTION_TOOLTIP_AUTO_JOIN_GUILD_CHANNEL", "OPTION_TOOLTIP_AUTO_LOOT_ALT_KEY", "OPTION_TOOLTIP_AUTO_LOOT_CTRL_KEY", "OPTION_TOOLTIP_AUTO_LOOT_DEFAULT", "OPTION_TOOLTIP_AUTO_LOOT_KEY_TEXT", "OPTION_TOOLTIP_AUTO_LOOT_NONE_KEY", "OPTION_TOOLTIP_AUTO_LOOT_SHIFT_KEY", "OPTION_TOOLTIP_AUTO_QUEST_PROGRESS", "OPTION_TOOLTIP_AUTO_QUEST_WATCH", "OPTION_TOOLTIP_AUTO_RANGED_COMBAT", "OPTION_TOOLTIP_AUTO_SELF_CAST", "OPTION_TOOLTIP_AUTO_SELF_CAST_ALT_KEY", "OPTION_TOOLTIP_AUTO_SELF_CAST_CTRL_KEY", "OPTION_TOOLTIP_AUTO_SELF_CAST_KEY_TEXT", "OPTION_TOOLTIP_AUTO_SELF_CAST_NONE_KEY", "OPTION_TOOLTIP_AUTO_SELF_CAST_SHIFT_KEY", "OPTION_TOOLTIP_BLOCK_TRADES", "OPTION_TOOLTIP_CAMERA1", "OPTION_TOOLTIP_CAMERA2", "OPTION_TOOLTIP_CAMERA3", "OPTION_TOOLTIP_CAMERA4", "OPTION_TOOLTIP_CAMERA_ALWAYS", "OPTION_TOOLTIP_CAMERA_NEVER", "OPTION_TOOLTIP_CAMERA_SMART", "OPTION_TOOLTIP_CAMERA_SMARTER", "OPTION_TOOLTIP_CHARACTER_SHADOWS", "OPTION_TOOLTIP_CHAT_BUBBLES", "OPTION_TOOLTIP_CHAT_LOCKED", "OPTION_TOOLTIP_CHAT_MOUSE_WHEEL_SCROLL", "OPTION_TOOLTIP_CHAT_WHOLE_WINDOW_CLICKABLE", "OPTION_TOOLTIP_CINEMATIC_SUBTITLES", "OPTION_TOOLTIP_CLEAR_AFK", "OPTION_TOOLTIP_CLICKCAMERA_LOCKED", "OPTION_TOOLTIP_CLICKCAMERA_NEVER", "OPTION_TOOLTIP_CLICKCAMERA_SMART", "OPTION_TOOLTIP_CLICK_CAMERA1", "OPTION_TOOLTIP_CLICK_CAMERA2", "OPTION_TOOLTIP_CLICK_CAMERA3", "OPTION_TOOLTIP_CLICK_CAMERA_STYLE", "OPTION_TOOLTIP_CLICK_TO_MOVE", "OPTION_TOOLTIP_COMBAT_TEXT_MODE", "OPTION_TOOLTIP_COMBAT_TEXT_SCROLL_DOWN", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURAS", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_AURA_FADE", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBAT_STATE", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_COMBO_POINTS", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_DODGE_PARRY_MISS", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_ENERGIZE", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_FRIENDLY_NAMES", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_HONOR_GAINED", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_LOW_HEALTH_MANA", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_PERIODIC_ENERGIZE", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REACTIVES", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_REPUTATION", "OPTION_TOOLTIP_COMBAT_TEXT_SHOW_RESISTANCES", "OPTION_TOOLTIP_CONSOLIDATE_BUFFS", "OPTION_TOOLTIP_DEATH_EFFECT", "OPTION_TOOLTIP_DESKTOP_GAMMA", "OPTION_TOOLTIP_DISABLE_SPAM_FILTER", "OPTION_TOOLTIP_DISPLAY_FREE_BAG_SLOTS", "OPTION_TOOLTIP_ENABLE_ALL_SHADERS", "OPTION_TOOLTIP_ENABLE_AMBIENCE", "OPTION_TOOLTIP_ENABLE_BGSOUND", "OPTION_TOOLTIP_ENABLE_DSP_EFFECTS", "OPTION_TOOLTIP_ENABLE_EMOTE_SOUNDS", "OPTION_TOOLTIP_ENABLE_ERROR_SPEECH", "OPTION_TOOLTIP_ENABLE_GROUP_SPEECH", "OPTION_TOOLTIP_ENABLE_HARDWARE", "OPTION_TOOLTIP_ENABLE_MICROPHONE", "OPTION_TOOLTIP_ENABLE_MUSIC", "OPTION_TOOLTIP_ENABLE_MUSIC_LOOPING", "OPTION_TOOLTIP_ENABLE_PET_SOUNDS", "OPTION_TOOLTIP_ENABLE_REVERB", "OPTION_TOOLTIP_ENABLE_SOFTWARE_HRTF", "OPTION_TOOLTIP_ENABLE_SOUND", "OPTION_TOOLTIP_ENABLE_SOUNDFX", "OPTION_TOOLTIP_ENABLE_SOUND_AT_CHARACTER", "OPTION_TOOLTIP_ENABLE_STEREO_VIDEO", "OPTION_TOOLTIP_ENABLE_VOICECHAT", "OPTION_TOOLTIP_ENVIRONMENT_DETAIL", "OPTION_TOOLTIP_FARCLIP", "OPTION_TOOLTIP_FIX_LAG", "OPTION_TOOLTIP_FOCUS_CAST_ALT_KEY", "OPTION_TOOLTIP_FOCUS_CAST_CTRL_KEY", "OPTION_TOOLTIP_FOCUS_CAST_NONE_KEY", "OPTION_TOOLTIP_FOCUS_CAST_SHIFT_KEY", "OPTION_TOOLTIP_FOLLOW_TERRAIN", "OPTION_TOOLTIP_FULL_SCREEN_GLOW", "OPTION_TOOLTIP_FULL_SIZE_FOCUS_FRAME", "OPTION_TOOLTIP_GAMEFIELD_DESELECT", "OPTION_TOOLTIP_GAMMA", "OPTION_TOOLTIP_GROUND_DENSITY", "OPTION_TOOLTIP_GROUND_RADIUS", "OPTION_TOOLTIP_GUILDMEMBER_ALERT", "OPTION_TOOLTIP_HARDWARE_CURSOR", "OPTION_TOOLTIP_HEAD_BOB", "OPTION_TOOLTIP_HIDE_OUTDOOR_WORLD_STATE", "OPTION_TOOLTIP_HIDE_PARTY_INTERFACE", "OPTION_TOOLTIP_INVERT_MOUSE", "OPTION_TOOLTIP_LOCALE", "OPTION_TOOLTIP_LOCK_ACTIONBAR", "OPTION_TOOLTIP_LOG_PERIODIC_EFFECTS", "OPTION_TOOLTIP_LONG_RANGE_NAMEPLATE", "OPTION_TOOLTIP_LOOT_KEY_TEXT", "OPTION_TOOLTIP_LOOT_UNDER_MOUSE", "OPTION_TOOLTIP_MAP_QUEST_DIFFICULTY", "OPTION_TOOLTIP_MAP_TRACK_QUEST", "OPTION_TOOLTIP_MASTER_VOLUME", "OPTION_TOOLTIP_MAX_FOLLOW_DIST", "OPTION_TOOLTIP_MOUSE_LOOK_SPEED", "OPTION_TOOLTIP_MOUSE_SENSITIVITY", "OPTION_TOOLTIP_MULTISAMPLING", "OPTION_TOOLTIP_MUSIC_VOLUME", "OPTION_TOOLTIP_OBJECTIVES_IGNORE_CURSOR", "OPTION_TOOLTIP_OBJECT_ALPHA", "OPTION_TOOLTIP_PARTICLE_DENSITY", "OPTION_TOOLTIP_PARTY_CHAT_BUBBLES", "OPTION_TOOLTIP_PET_NAMEPLATES", "OPTION_TOOLTIP_PET_SPELL_DAMAGE", "OPTION_TOOLTIP_PHONG_SHADING", "OPTION_TOOLTIP_PLAYER_DETAIL", "OPTION_TOOLTIP_PLAY_AGGRO_SOUNDS", "OPTION_TOOLTIP_PROFANITY_FILTER", "OPTION_TOOLTIP_PROFANITY_FILTER_WITH_WARNING", "OPTION_TOOLTIP_PROJECTED_TEXTURES", "OPTION_TOOLTIP_PUSHTOTALK_SOUND", "OPTION_TOOLTIP_REMOVE_CHAT_DELAY", "OPTION_TOOLTIP_ROTATE_MINIMAP", "OPTION_TOOLTIP_SCROLL_ARC", "OPTION_TOOLTIP_SCROLL_DOWN", "OPTION_TOOLTIP_SCROLL_UP", "OPTION_TOOLTIP_SECURE_ABILITY_TOGGLE", "OPTION_TOOLTIP_SHADOW_QUALITY", "OPTION_TOOLTIP_SHOW_ARENA_ENEMY_CASTBAR", "OPTION_TOOLTIP_SHOW_ARENA_ENEMY_FRAMES", "OPTION_TOOLTIP_SHOW_ARENA_ENEMY_PETS", "OPTION_TOOLTIP_SHOW_BATTLENET_TOASTS", "OPTION_TOOLTIP_SHOW_BUFF_DURATION", "OPTION_TOOLTIP_SHOW_CASTABLE_BUFFS", "OPTION_TOOLTIP_SHOW_CASTABLE_DEBUFFS", "OPTION_TOOLTIP_SHOW_CHAT_ICONS", "OPTION_TOOLTIP_SHOW_CLASS_COLOR_IN_V_KEY", "OPTION_TOOLTIP_SHOW_CLOAK", "OPTION_TOOLTIP_SHOW_CLOCK", "OPTION_TOOLTIP_SHOW_COMBAT_HEALING", "OPTION_TOOLTIP_SHOW_COMBAT_TEXT", "OPTION_TOOLTIP_SHOW_DAMAGE", "OPTION_TOOLTIP_SHOW_DISPELLABLE_DEBUFFS", "OPTION_TOOLTIP_SHOW_FULLSCREEN_STATUS", "OPTION_TOOLTIP_SHOW_GUILD_NAMES", "OPTION_TOOLTIP_SHOW_HELM", "OPTION_TOOLTIP_SHOW_ITEM_LEVEL", "OPTION_TOOLTIP_SHOW_LOOT_SPAM", "OPTION_TOOLTIP_SHOW_LUA_ERRORS", "OPTION_TOOLTIP_SHOW_MULTIBAR1", "OPTION_TOOLTIP_SHOW_MULTIBAR2", "OPTION_TOOLTIP_SHOW_MULTIBAR3", "OPTION_TOOLTIP_SHOW_MULTIBAR4", "OPTION_TOOLTIP_SHOW_NEWBIE_TIPS", "OPTION_TOOLTIP_SHOW_NPC_NAMES", "OPTION_TOOLTIP_SHOW_NUMERIC_THREAT", "OPTION_TOOLTIP_SHOW_OTHER_TARGET_EFFECTS", "OPTION_TOOLTIP_SHOW_OWN_NAME", "OPTION_TOOLTIP_SHOW_PARTY_BACKGROUND", "OPTION_TOOLTIP_SHOW_PARTY_PETS", "OPTION_TOOLTIP_SHOW_PARTY_TEXT", "OPTION_TOOLTIP_SHOW_PET_MELEE_DAMAGE", "OPTION_TOOLTIP_SHOW_PLAYER_NAMES", "OPTION_TOOLTIP_SHOW_PLAYER_TITLES", "OPTION_TOOLTIP_SHOW_QUEST_FADING", "OPTION_TOOLTIP_SHOW_QUEST_OBJECTIVES_ON_MAP", "OPTION_TOOLTIP_SHOW_RAID_RANGE", "OPTION_TOOLTIP_SHOW_TARGET_CASTBAR", "OPTION_TOOLTIP_SHOW_TARGET_CASTBAR_IN_V_KEY", "OPTION_TOOLTIP_SHOW_TARGET_EFFECTS", "OPTION_TOOLTIP_SHOW_TARGET_OF_TARGET", "OPTION_TOOLTIP_SHOW_TIPOFTHEDAY", "OPTION_TOOLTIP_SHOW_TOAST_BROADCAST", "OPTION_TOOLTIP_SHOW_TOAST_CONVERSATION", "OPTION_TOOLTIP_SHOW_TOAST_FRIEND_REQUEST", "OPTION_TOOLTIP_SHOW_TOAST_OFFLINE", "OPTION_TOOLTIP_SHOW_TOAST_ONLINE", "OPTION_TOOLTIP_SHOW_TOAST_WINDOW", "OPTION_TOOLTIP_SHOW_TUTORIALS", "OPTION_TOOLTIP_SHOW_UNIT_NAMES", "OPTION_TOOLTIP_SIMPLE_CHAT", "OPTION_TOOLTIP_SIMPLE_QUEST_WATCH_TEXT", "OPTION_TOOLTIP_SMART_PIVOT", "OPTION_TOOLTIP_SOUND_CHANNELS", "OPTION_TOOLTIP_SOUND_OUTPUT", "OPTION_TOOLTIP_SOUND_QUALITY", "OPTION_TOOLTIP_SOUND_VOLUME", "OPTION_TOOLTIP_SPELL_DETAIL", "OPTION_TOOLTIP_STATUS_BAR", "OPTION_TOOLTIP_STATUS_TEXT_PARTY", "OPTION_TOOLTIP_STATUS_TEXT_PERCENT", "OPTION_TOOLTIP_STATUS_TEXT_PET", "OPTION_TOOLTIP_STATUS_TEXT_PLAYER", "OPTION_TOOLTIP_STATUS_TEXT_TARGET", "OPTION_TOOLTIP_STEREO_HARDWARE_CURSOR", "OPTION_TOOLTIP_STOP_AUTO_ATTACK", "OPTION_TOOLTIP_TARGETOFTARGET1", "OPTION_TOOLTIP_TARGETOFTARGET2", "OPTION_TOOLTIP_TARGETOFTARGET3", "OPTION_TOOLTIP_TARGETOFTARGET4", "OPTION_TOOLTIP_TARGETOFTARGET5", "OPTION_TOOLTIP_TARGETOFTARGET_ALWAYS", "OPTION_TOOLTIP_TARGETOFTARGET_PARTY", "OPTION_TOOLTIP_TARGETOFTARGET_RAID", "OPTION_TOOLTIP_TARGETOFTARGET_RAID_AND_PARTY", "OPTION_TOOLTIP_TARGETOFTARGET_SOLO", "OPTION_TOOLTIP_TERRAIN_HIGHLIGHTS", "OPTION_TOOLTIP_TERRAIN_TEXTURE", "OPTION_TOOLTIP_TEXTURE_DETAIL", "OPTION_TOOLTIP_TIMESTAMPS", "OPTION_TOOLTIP_TOAST_DURATION", "OPTION_TOOLTIP_TRILINEAR", "OPTION_TOOLTIP_TRIPLE_BUFFER", "OPTION_TOOLTIP_UI_SCALE", "OPTION_TOOLTIP_UNIT_NAMEPLATES_ALLOW_OVERLAP", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_ENEMIES", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_ENEMY_GUARDIANS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_ENEMY_PETS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_ENEMY_TOTEMS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_FRIENDLY_GUARDIANS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_FRIENDLY_PETS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_FRIENDLY_TOTEMS", "OPTION_TOOLTIP_UNIT_NAMEPLATES_SHOW_FRIENDS", "OPTION_TOOLTIP_UNIT_NAME_ENEMY", "OPTION_TOOLTIP_UNIT_NAME_ENEMY_GUARDIANS", "OPTION_TOOLTIP_UNIT_NAME_ENEMY_PETS", "OPTION_TOOLTIP_UNIT_NAME_ENEMY_TOTEMS", "OPTION_TOOLTIP_UNIT_NAME_FRIENDLY", "OPTION_TOOLTIP_UNIT_NAME_FRIENDLY_GUARDIANS", "OPTION_TOOLTIP_UNIT_NAME_FRIENDLY_PETS", "OPTION_TOOLTIP_UNIT_NAME_FRIENDLY_TOTEMS", "OPTION_TOOLTIP_UNIT_NAME_GUILD", "OPTION_TOOLTIP_UNIT_NAME_NONCOMBAT_CREATURE", "OPTION_TOOLTIP_UNIT_NAME_NPC", "OPTION_TOOLTIP_UNIT_NAME_OWN", "OPTION_TOOLTIP_UNIT_NAME_PLAYER_TITLE", "OPTION_TOOLTIP_USE_COLORBLIND_MODE", "OPTION_TOOLTIP_USE_ENGLISH_AUDIO", "OPTION_TOOLTIP_USE_REFRESH", "OPTION_TOOLTIP_USE_RESOLUTION", "OPTION_TOOLTIP_USE_UBERTOOLTIPS", "OPTION_TOOLTIP_USE_UISCALE", "OPTION_TOOLTIP_USE_WEATHER_SHADER", "OPTION_TOOLTIP_VERTEX_ANIMATION_SHADERS", "OPTION_TOOLTIP_VERTICAL_SYNC", "OPTION_TOOLTIP_VOICE_ACTIVATION_SENSITIVITY", "OPTION_TOOLTIP_VOICE_AMBIENCE", "OPTION_TOOLTIP_VOICE_INPUT", "OPTION_TOOLTIP_VOICE_INPUT_VOLUME", "OPTION_TOOLTIP_VOICE_MUSIC", "OPTION_TOOLTIP_VOICE_OUTPUT", "OPTION_TOOLTIP_VOICE_OUTPUT_VOLUME", "OPTION_TOOLTIP_VOICE_SOUND", "OPTION_TOOLTIP_VOICE_TYPE1", "OPTION_TOOLTIP_VOICE_TYPE2", "OPTION_TOOLTIP_WATCH_FRAME_WIDTH", "OPTION_TOOLTIP_WATER_COLLISION", "OPTION_TOOLTIP_WEATHER_DETAIL", "OPTION_TOOLTIP_WINDOWED_MAXIMIZED", "OPTION_TOOLTIP_WINDOWED_MODE", "OPTION_TOOLTIP_WINDOW_LOCK", "OPTION_TOOLTIP_WORLD_LOD", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY1", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY2", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY3", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY_ALWAYS", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY_DYNAMIC", "OPTION_TOOLTIP_WORLD_PVP_DISPLAY_NEVER", "OPTION_TOOLTIP_WOW_MOUSE", "OPTION_TOOLTIP_XP_BAR", "OPTION_UI_DEPTH", "OPTION_USE_EQUIPMENT_MANAGER_DESCRIPTION", "OPT_OUT_LOOT_TITLE", "OPT_OUT_LOOT_TOGGLE_OFF", "OPT_OUT_LOOT_TOGGLE_ON", "OR_CAPS", "OTHER", "OTHER_MESSAGES", "OUTBID", "OUTBID_BY", "OUT_OF_ENERGY", "OUT_OF_FOCUS", "OUT_OF_HEALTH", "OUT_OF_MANA", "OUT_OF_POWER_DISPLAY", "OUT_OF_RAGE", "PAGE_NUMBER", "PALADIN_INTELLECT_TOOLTIP", "PALADIN_STRENGTH_TOOLTIP", "PAPERDOLLFRAME_TOOLTIP_FORMAT", "PAPERDOLL_SELECT_TITLE", "PARENS_TEMPLATE", "PARRIED", "PARRY", "PARRY_CHANCE", "PARTICLE_DENSITY", "PARTY", "PARTYRAID_LABEL", "PARTYRAID_SUBTEXT", "PARTY_CHAT_BUBBLES_TEXT", "PARTY_INVITE", "PARTY_LEADER", "PARTY_LEAVE", "PARTY_MESSAGE", "PARTY_OPTIONS_LABEL", "PARTY_PROMOTE", "PARTY_PROMOTE_GUIDE", "PARTY_QUEST_STATUS_NONE", "PARTY_QUEST_STATUS_ON", "PARTY_SILENCE", "PARTY_UNINVITE", "PARTY_UNSILENCE", "PASS", "PASSIVE_PARENS", "PASSWORD", "PENDING_INVITE", "PENDING_INVITE_LIST", "PERCENT_SYMBOL", "PERIODIC", "PERIODIC_MESSAGES", "PET", "PETITION_CREATOR", "PETITION_NUM_SIGNATURES", "PETITION_TITLE", "PETS", "PETTAME_ANOTHERSUMMONACTIVE", "PETTAME_CANTCONTROLEXOTIC", "PETTAME_CREATUREALREADYOWNED", "PETTAME_DEAD", "PETTAME_INTERNALERROR", "PETTAME_INVALIDCREATURE", "PETTAME_NOPETAVAILABLE", "PETTAME_NOTDEAD", "PETTAME_NOTTAMEABLE", "PETTAME_TOOHIGHLEVEL", "PETTAME_TOOMANY", "PETTAME_UNITSCANTTAME", "PETTAME_UNKNOWNERROR", "PET_ABANDON", "PET_ACTION_ATTACK", "PET_ACTION_DISMISS", "PET_ACTION_FOLLOW", "PET_ACTION_WAIT", "PET_AGGRESSIVE", "PET_ATTACK", "PET_BONUS_TOOLTIP_ARMOR", "PET_BONUS_TOOLTIP_INTELLECT", "PET_BONUS_TOOLTIP_RANGED_ATTACK_POWER", "PET_BONUS_TOOLTIP_RESISTANCE", "PET_BONUS_TOOLTIP_SPELLDAMAGE", "PET_BONUS_TOOLTIP_STAMINA", "PET_BONUS_TOOLTIP_WARLOCK_SPELLDMG_FIRE", "PET_BONUS_TOOLTIP_WARLOCK_SPELLDMG_SHADOW", "PET_DAMAGE_PERCENTAGE", "PET_DEFENSIVE", "PET_DIET_TEMPLATE", "PET_DISMISS", "PET_FOLLOW", "PET_HAPPINESS1", "PET_HAPPINESS2", "PET_HAPPINESS3", "PET_INFO", "PET_MODE_AGGRESSIVE", "PET_MODE_DEFENSIVE", "PET_MODE_PASSIVE", "PET_PAPERDOLL", "PET_PASSIVE", "PET_RENAME", "PET_RENAME_CONFIRMATION", "PET_RENAME_LABEL", "PET_SPELLS_TEMPLATE", "PET_SPELL_NOPATH", "PET_TIME_LEFT_MINUTES", "PET_TIME_LEFT_SECONDS", "PET_TYPE_DEMON", "PET_TYPE_PET", "PET_WAIT", "PHONG_SHADING", "PHYSICAL_HARASSMENT", "PHYSICAL_HARASSMENT_DESCRIPTION", "PHYSICAL_HARASSMENT_TEXT1", "PHYSICAL_HARASSMENT_TEXT2", "PHYSICAL_HARASSMENT_TEXT3", "PHYSICAL_HARASSMENT_TEXT4", "PHYSICAL_HARASSMENT_TEXT5", "PHYSICAL_HARASSMENT_TEXT6", "PIXEL_SHADERS", "PLAYBACK", "PLAYED", "PLAYER", "PLAYERSTAT_BASE_STATS", "PLAYERSTAT_DEFENSES", "PLAYERSTAT_MELEE_COMBAT", "PLAYERSTAT_RANGED_COMBAT", "PLAYERSTAT_SPELL_COMBAT", "PLAYERS_IN_GROUP", "PLAYER_COUNT_ALLIANCE", "PLAYER_COUNT_HORDE", "PLAYER_DETAIL", "PLAYER_DIFFICULTY1", "PLAYER_DIFFICULTY2", "PLAYER_IS_PVP_AFK", "PLAYER_LEVEL", "PLAYER_LEVEL_UP", "PLAYER_LIST_DELIMITER", "PLAYER_LOGOUT_FAILED", "PLAYER_LOGOUT_FAILED_ERROR", "PLAYER_MESSAGES", "PLAYER_NOT_FOUND", "PLAYER_OFFLINE", "PLAYER_OPTIONS_LABEL", "PLAYER_SERVER_FIRST_ACHIEVEMENT", "PLAYER_STATUS", "PLAYER_V_PLAYER", "PLAYTIME_TIRED", "PLAYTIME_TIRED_ABILITY", "PLAYTIME_UNHEALTHY", "PLAYTIME_UNHEALTHY_ABILITY", "PLAY_AGGRO_SOUNDS", "PLUS_AMMO_DAMAGE_TEMPLATE", "PLUS_AMMO_SCHOOL_DAMAGE_TEMPLATE", "PLUS_DAMAGE_TEMPLATE", "PLUS_DAMAGE_TEMPLATE_WITH_SCHOOL", "PLUS_SINGLE_DAMAGE_TEMPLATE", "PLUS_SINGLE_DAMAGE_TEMPLATE_WITH_SCHOOL", "POP_IN_CHAT", "POP_OUT_CHAT", "POTION_TIMER", "POWER_ABBR", "POWER_DISPLAY_COST", "POWER_DISPLAY_COST_PER_TIME", "POWER_GAINS", "POWER_GAINS_COMBATLOG_TOOLTIP", "POWER_TYPE_BLOOD_POWER", "POWER_TYPE_HEAT", "POWER_TYPE_OOZE", "POWER_TYPE_PYRITE", "POWER_TYPE_STEAM", "POWER_TYPE_WRATH", "PREFERENCES", "PRESS_TAB", "PREV", "PREVIEW_TALENT_CHANGES", "PREVIOUS", "PRIEST_INTELLECT_TOOLTIP", "PRIMARY", "PRIMARY_SKILLS", "PROC_EVENT0_DESC", "PROC_EVENT1024_DESC", "PROC_EVENT128_DESC", "PROC_EVENT16_DESC", "PROC_EVENT1_DESC", "PROC_EVENT2048_DESC", "PROC_EVENT256_DESC", "PROC_EVENT2_DESC", "PROC_EVENT32_DESC", "PROC_EVENT3_DESC", "PROC_EVENT4_DESC", "PROC_EVENT512_DESC", "PROC_EVENT64_DESC", "PROC_EVENT8_DESC", "PROFANITY_FILTER", "PROFESSION_CONFIRMATION1", "PROFESSION_CONFIRMATION2", "PROFFESSION_CONFIRMATION2", "PROFICIENCIES", "PROFICIENCIES_COLON", "PROFICIENCY_NEEDED", "PROJECTED_TEXTURES", "PTT_BOUND", "PUBLICNOTE_BUTTON_TOOLTIP", "PUBLIC_NOTE", "PURCHASE", "PURCHASED_BY_COLON", "PURCHASE_TAB_TEXT", "PUSHTOTALK_SOUND_TEXT", "PUSH_TO_TALK", "PVP", "PVPBATTLEGROUND_WINTERGRASPTIMER", "PVPBATTLEGROUND_WINTERGRASPTIMER_CANNOT_QUEUE", "PVPBATTLEGROUND_WINTERGRASPTIMER_CAN_QUEUE", "PVPBATTLEGROUND_WINTERGRASPTIMER_TOOLTIP", "PVPFFA", "PVP_DISABLED", "PVP_ENABLED", "PVP_FLAG", "PVP_LABEL_ARENA", "PVP_LABEL_HONOR", "PVP_MEDAL1", "PVP_MEDAL2", "PVP_MEDAL3", "PVP_MEDAL4", "PVP_MEDAL5", "PVP_MEDAL6", "PVP_MEDAL7", "PVP_MEDAL8", "PVP_MINIMAP", "PVP_OPTIONS", "PVP_POLICY_URL", "PVP_RANK_0_0", "PVP_RANK_0_0_FEMALE", "PVP_RANK_0_1", "PVP_RANK_0_1_FEMALE", "PVP_RANK_10_0", "PVP_RANK_10_0_FEMALE", "PVP_RANK_10_1", "PVP_RANK_10_1_FEMALE", "PVP_RANK_11_0", "PVP_RANK_11_0_FEMALE", "PVP_RANK_11_1", "PVP_RANK_11_1_FEMALE", "PVP_RANK_12_0", "PVP_RANK_12_0_FEMALE", "PVP_RANK_12_1", "PVP_RANK_12_1_FEMALE", "PVP_RANK_13_0", "PVP_RANK_13_0_FEMALE", "PVP_RANK_13_1", "PVP_RANK_13_1_FEMALE", "PVP_RANK_14_0", "PVP_RANK_14_0_FEMALE", "PVP_RANK_14_1", "PVP_RANK_14_1_FEMALE", "PVP_RANK_15_0", "PVP_RANK_15_0_FEMALE", "PVP_RANK_15_1", "PVP_RANK_15_1_FEMALE", "PVP_RANK_16_0", "PVP_RANK_16_0_FEMALE", "PVP_RANK_16_1", "PVP_RANK_16_1_FEMALE", "PVP_RANK_17_0", "PVP_RANK_17_0_FEMALE", "PVP_RANK_17_1", "PVP_RANK_17_1_FEMALE", "PVP_RANK_18_0", "PVP_RANK_18_0_FEMALE", "PVP_RANK_18_1", "PVP_RANK_18_1_FEMALE", "PVP_RANK_19_0", "PVP_RANK_19_0_FEMALE", "PVP_RANK_19_1", "PVP_RANK_19_1_FEMALE", "PVP_RANK_1_0", "PVP_RANK_1_0_FEMALE", "PVP_RANK_1_1", "PVP_RANK_1_1_FEMALE", "PVP_RANK_2_0", "PVP_RANK_2_0_FEMALE", "PVP_RANK_2_1", "PVP_RANK_2_1_FEMALE", "PVP_RANK_3_0", "PVP_RANK_3_0_FEMALE", "PVP_RANK_3_1", "PVP_RANK_3_1_FEMALE", "PVP_RANK_4_0", "PVP_RANK_4_0_FEMALE", "PVP_RANK_4_1", "PVP_RANK_4_1_FEMALE", "PVP_RANK_5_0", "PVP_RANK_5_0_FEMALE", "PVP_RANK_5_1", "PVP_RANK_5_1_FEMALE", "PVP_RANK_6_0", "PVP_RANK_6_0_FEMALE", "PVP_RANK_6_1", "PVP_RANK_6_1_FEMALE", "PVP_RANK_7_0", "PVP_RANK_7_0_FEMALE", "PVP_RANK_7_1", "PVP_RANK_7_1_FEMALE", "PVP_RANK_8_0", "PVP_RANK_8_0_FEMALE", "PVP_RANK_8_1", "PVP_RANK_8_1_FEMALE", "PVP_RANK_9_0", "PVP_RANK_9_0_FEMALE", "PVP_RANK_9_1", "PVP_RANK_9_1_FEMALE", "PVP_RANK_LEADER", "PVP_RATING", "PVP_REPORT_AFK", "PVP_REPORT_AFK_ALL", "PVP_REPORT_AFK_ALREADY_NOTIFIED", "PVP_REPORT_AFK_GENERIC_FAILURE", "PVP_REPORT_AFK_NOT_SAME_TEAM", "PVP_REPORT_AFK_PLAYER_NOT_VALID", "PVP_REPORT_AFK_SUCCEEDED", "PVP_REPORT_AFK_SYSTEM_DISABLED", "PVP_REPORT_AFK_SYSTEM_ENABLED", "PVP_REQUIRED_FOR_CAPTURE", "PVP_TEAMSIZE", "PVP_TEAMTYPE", "PVP_TOGGLE_OFF_VERBOSE", "PVP_TOGGLE_ON_VERBOSE", "PVP_YOUR_RATING", "PVP_ZONE_OBJECTIVES", "QUALITY", "QUESTLOG_BUTTON", "QUESTLOG_NO_QUESTS_TEXT", "QUESTS_COLON", "QUESTS_LABEL", "QUESTS_SUBTEXT", "QUEST_ACCEPT", "QUEST_ACCEPT_LOG_FULL", "QUEST_COMPLETE", "QUEST_DASH", "QUEST_DESCRIPTION", "QUEST_DETAILS", "QUEST_FACTION_NEEDED", "QUEST_FACTION_NEEDED_NOPROGRESS", "QUEST_FAILED", "QUEST_FAILED_TAG", "QUEST_HARD", "QUEST_INTERMEDIATE_ITEMS_NEEDED", "QUEST_ITEMS_NEEDED", "QUEST_ITEMS_NEEDED_NOPROGRESS", "QUEST_LOG", "QUEST_LOG_COUNT_TEMPLATE", "QUEST_LOG_DAILY_COUNT_TEMPLATE", "QUEST_LOG_DAILY_TOOLTIP", "QUEST_MONSTERS_KILLED", "QUEST_MONSTERS_KILLED_NOPROGRESS", "QUEST_OBJECTIVES", "QUEST_OBJECTS_FOUND", "QUEST_OBJECTS_FOUND_NOPROGRESS", "QUEST_PLAYERS_KILLED", "QUEST_PLAYERS_KILLED_NOPROGRESS", "QUEST_REWARDS", "QUEST_SUGGESTED_GROUP_NUM", "QUEST_SUGGESTED_GROUP_NUM_TAG", "QUEST_TIMERS", "QUEST_TOOLTIP_ACTIVE", "QUEST_TOOLTIP_REQUIREMENTS", "QUEST_WATCH_NO_OBJECTIVES", "QUEST_WATCH_TOOLTIP", "QUEST_WATCH_TOO_MANY", "QUEUED_FOR", "QUEUED_FOR_SHORT", "QUEUE_TIME_UNAVAILABLE", "QUICKBUTTON_NAME_DEFAULT", "QUICKBUTTON_NAME_EVERYTHING", "QUICKBUTTON_NAME_EVERYTHING_TOOLTIP", "QUICKBUTTON_NAME_FRIENDS", "QUICKBUTTON_NAME_KILLS", "QUICKBUTTON_NAME_KILLS_TOOLTIP", "QUICKBUTTON_NAME_ME", "QUICKBUTTON_NAME_ME_TOOLTIP", "QUICKBUTTON_NAME_SELF", "QUICKBUTTON_NAME_SELF_TOOLTIP", "QUICK_BUTTON_COMBATLOG_TOOLTIP", "QUIT", "QUIT_NOW", "QUIT_TIMER", "RACE", "RACE_CLASS_ONLY", "RACIAL_SKILLS", "RAF_GRANT_LEVEL", "RAF_SUMMON", "RAF_SUMMON_LINKED", "RAF_SUMMON_WITH_COOLDOWN", "RAGE", "RAGE_COST", "RAGE_COST_PER_TIME", "RAID", "RAIDOPTIONS_MENU", "RAID_AND_PARTY", "RAID_ASSISTANT", "RAID_ASSISTANT_TOKEN", "RAID_BOSS_MESSAGE", "RAID_BROWSER_DESCRIPTION", "RAID_CONTROL", "RAID_DESCRIPTION", "RAID_DIFFICULTY", "RAID_DIFFICULTY1", "RAID_DIFFICULTY2", "RAID_DIFFICULTY3", "RAID_DIFFICULTY4", "RAID_DIFFICULTY_10PLAYER", "RAID_DIFFICULTY_10PLAYER_HEROIC", "RAID_DIFFICULTY_20PLAYER", "RAID_DIFFICULTY_25PLAYER", "RAID_DIFFICULTY_25PLAYER_HEROIC", "RAID_DIFFICULTY_40PLAYER", "RAID_GROUPS", "RAID_INFO", "RAID_INFORMATION", "RAID_INFO_DESC", "RAID_INSTANCE_EXPIRED", "RAID_INSTANCE_EXPIRES", "RAID_INSTANCE_EXPIRES_EXPIRED", "RAID_INSTANCE_EXPIRES_EXTENDED", "RAID_INSTANCE_INFO_FMT", "RAID_INSTANCE_INFO_HDR", "RAID_INSTANCE_LOCK_EXTENDED", "RAID_INSTANCE_LOCK_NOT_EXTENDED", "RAID_INSTANCE_WARNING_HOURS", "RAID_INSTANCE_WARNING_MIN", "RAID_INSTANCE_WARNING_MIN_SOON", "RAID_INSTANCE_WELCOME", "RAID_INSTANCE_WELCOME_DH", "RAID_INSTANCE_WELCOME_EXTENDED", "RAID_INSTANCE_WELCOME_HM", "RAID_INSTANCE_WELCOME_LOCKED", "RAID_INSTANCE_WELCOME_LOCKED_EXTENDED", "RAID_LEADER", "RAID_LEADER_TOKEN", "RAID_MEMBERS_AFK", "RAID_MEMBER_NOT_READY", "RAID_MESSAGE", "RAID_SILENCE", "RAID_TARGET_1", "RAID_TARGET_2", "RAID_TARGET_3", "RAID_TARGET_4", "RAID_TARGET_5", "RAID_TARGET_6", "RAID_TARGET_7", "RAID_TARGET_8", "RAID_TARGET_ICON", "RAID_TARGET_NONE", "RAID_UNSILENCE", "RAID_WARNING", "RAID_WARNING_MESSAGE", "RALT_KEY_TEXT", "RANDOM_BATTLEGROUND", "RANDOM_BATTLEGROUND_EXPLANATION", "RANDOM_DUNGEON_IS_READY", "RANDOM_ROLL_RESULT", "RANGED", "RANGEDSLOT", "RANGED_ATTACK", "RANGED_ATTACK_POWER", "RANGED_ATTACK_POWER_TOOLTIP", "RANGED_ATTACK_TOOLTIP", "RANGED_COMBATLOG_TOOLTIP", "RANGED_CRIT_CHANCE", "RANGED_DAMAGE_TOOLTIP", "RANGE_DAMAGE_COMBATLOG_TOOLTIP", "RANGE_MISSED_COMBATLOG_TOOLTIP", "RANK", "RANK_COLON", "RANK_POSITION", "RARITY", "RATING", "RATINGS_MENU", "RATINGS_TEXT", "RATING_CHANGE_TOOLTIP", "RCTRL_KEY_TEXT", "REACTIVATE_RAID_LOCK", "READY", "READY_CHECK", "READY_CHECK_ALL_READY", "READY_CHECK_FINISHED", "READY_CHECK_MESSAGE", "READY_CHECK_NO_AFK", "READY_CHECK_START", "READY_CHECK_YOU_WERE_AFK", "RECOVER_CORPSE", "RECOVER_CORPSE_INSTANCE", "RECOVER_CORPSE_TIMER", "RED_GEM", "REFLECT", "REFRESH", "REFRESH_RATE", "REFUND_TIME_REMAINING", "RELICSLOT", "REMOVE", "REMOVE_BLOCK", "REMOVE_CHAT_DELAY_TEXT", "REMOVE_FRIEND", "REMOVE_FRIEND_CONFIRMATION", "REMOVE_GUILDMEMBER_LABEL", "REMOVE_IGNORE", "REMOVE_MODERATOR", "REMOVE_MUTE", "REMOVE_PLAYER", "RENAME_ARENA_TEAM", "RENAME_ARENA_TEAM_LABEL", "RENAME_CHAT_WINDOW", "RENAME_GUILD", "RENAME_GUILD_LABEL", "REPAIR_ALL_ITEMS", "REPAIR_AN_ITEM", "REPAIR_COST", "REPAIR_ITEMS", "REPLACE_ENCHANT", "REPLY_MESSAGE", "REPORT_MULTIPLE_PVP_AFK_SENT", "REPORT_PHYSICAL_HARASSMENT", "REPORT_PVP_AFK_SENT", "REPORT_SPAM", "REPORT_SPAM_CONFIRMATION", "REPORT_VERBAL_HARASSMENT", "REPUTATION", "REPUTATION_ABBR", "REPUTATION_AT_WAR_DESCRIPTION", "REPUTATION_FACTION_DESCRIPTION", "REPUTATION_MOVE_TO_INACTIVE", "REPUTATION_SHOW_AS_XP", "REPUTATION_STANDING_DESCRIPTION", "REPUTATION_STATUS_AT_PEACE", "REPUTATION_STATUS_AT_WAR", "REPUTATION_STATUS_NOT_AT_PEACE", "REPUTATION_STATUS_PERMANENT_AT_PEACE", "REPUTATION_STATUS_PERMANENT_AT_WAR", "REQUEST_SIGNATURE", "REQUIRED_MONEY", "REQUIRES_LABEL", "REQUIRES_RUNIC_POWER", "RESET", "RESETS_IN", "RESET_ALL_WINDOWS", "RESET_CHAT_WINDOW", "RESET_FAILED_NOTIFY", "RESET_INSTANCES", "RESET_TO_DEFAULT", "RESET_TUTORIALS", "RESILIENCE", "RESILIENCE_ABBR", "RESILIENCE_TOOLTIP", "RESIST", "RESISTANCE0_NAME", "RESISTANCE1_NAME", "RESISTANCE2_NAME", "RESISTANCE3_NAME", "RESISTANCE4_NAME", "RESISTANCE5_NAME", "RESISTANCE6_NAME", "RESISTANCE_EXCELLENT", "RESISTANCE_FAIR", "RESISTANCE_GOOD", "RESISTANCE_LABEL", "RESISTANCE_NONE", "RESISTANCE_POOR", "RESISTANCE_TEMPLATE", "RESISTANCE_TOOLTIP_SUBTEXT", "RESISTANCE_TYPE0", "RESISTANCE_TYPE1", "RESISTANCE_TYPE2", "RESISTANCE_TYPE3", "RESISTANCE_TYPE4", "RESISTANCE_TYPE5", "RESISTANCE_TYPE6", "RESISTANCE_VERYGOOD", "RESIST_TRAILER", "RESOLUTION", "RESOLUTION_LABEL", "RESOLUTION_SUBTEXT", "RESURRECT", "RESURRECTABLE", "RESURRECT_REQUEST", "RESURRECT_REQUEST_NO_SICKNESS", "RESURRECT_REQUEST_NO_SICKNESS_TIMER", "RESURRECT_REQUEST_TIMER", "RETRIEVING_ITEM_INFO", "RETURN_TO_GAME", "RETURN_TO_WORLD", "REWARD_AURA", "REWARD_CHOICES", "REWARD_CHOOSE", "REWARD_ITEMS", "REWARD_ITEMS_ONLY", "REWARD_REPUTATION", "REWARD_REPUTATION_TEXT", "REWARD_SPELL", "REWARD_TITLE", "REWARD_TRADESKILL_SPELL", "RID_FRIEND_REQUEST_INFO", "RIGHT_CLICK_MESSAGE", "ROGUE_AGILITY_TOOLTIP", "ROLE", "ROLE_CHECK_IN_PROGRESS_TOOLTIP", "ROLE_DESCRIPTION1", "ROLE_DESCRIPTION2", "ROLE_DESCRIPTION3", "ROLL_DISENCHANT", "ROLL_DISENCHANT_NEWBIE", "ROTATE_MINIMAP", "RSHIFT_KEY_TEXT", "RUNES", "RUNE_COST_BLOOD", "RUNE_COST_FROST", "RUNE_COST_ONGOING", "RUNE_COST_UNHOLY", "RUNIC_POWER", "RUNIC_POWER_COST", "RUNIC_POWER_COST_PER_TIME", "RURU", "RUSSIAN_DECLENSION", "RUSSIAN_DECLENSION_1", "RUSSIAN_DECLENSION_2", "RUSSIAN_DECLENSION_3", "RUSSIAN_DECLENSION_4", "RUSSIAN_DECLENSION_5", "RUSSIAN_DECLENSION_EXAMPLE_1", "RUSSIAN_DECLENSION_EXAMPLE_2", "RUSSIAN_DECLENSION_EXAMPLE_3", "RUSSIAN_DECLENSION_EXAMPLE_4", "RUSSIAN_DECLENSION_EXAMPLE_5", "SALE_PRICE_COLON", "SANCTUARY_TERRITORY", "SAVE", "SAVE_CHANGES", "SAY", "SAY_MESSAGE", "SCORE_DAMAGE_DONE", "SCORE_FLAGS_CAPTURED", "SCORE_FLAGS_RETURNED", "SCORE_HEALING_DONE", "SCORE_HONORABLE_KILLS", "SCORE_HONOR_GAINED", "SCORE_KILLING_BLOWS", "SCORE_POWER_UPS", "SCORE_RATING_CHANGE", "SCORE_TEAM_SKILL", "SCREENSHOT_FAILURE", "SCREENSHOT_SUCCESS", "SEARCH", "SEARCHING_FOR_GROUPS_NEEDS", "SEARCHING_FOR_ITEMS", "SECONDARY", "SECONDARYHANDSLOT", "SECONDARY_SKILLS", "SECONDS", "SECONDS_ABBR", "SECOND_NUMBER_CAP", "SECOND_ONELETTER_ABBR", "SECURE_ABILITY_TOGGLE", "SELECT_CATEGORY", "SELFMUTED", "SELL_PRICE", "SENDMAIL", "SENDMAIL_TEXT", "SEND_BUG", "SEND_LABEL", "SEND_MAIL_COST", "SEND_MESSAGE", "SEND_MONEY", "SEND_MONEY_CONFIRMATION", "SEND_REQUEST", "SEND_SUGGEST", "SERVER_CHANNELS", "SERVER_FIRST_ACHIEVEMENT", "SERVER_MESSAGE_COLON", "SERVER_MESSAGE_PREFIX", "SETTINGS", "SET_COMMENT_LABEL", "SET_FOCUS", "SET_FRIENDNOTE_LABEL", "SET_GUILDMOTD_LABEL", "SET_GUILDOFFICERNOTE_LABEL", "SET_GUILDPLAYERNOTE_LABEL", "SET_MAIN_ASSIST", "SET_MAIN_TANK", "SET_NOTE", "SET_RAID_ASSISTANT", "SET_RAID_LEADER", "SHADOW_QUALITY", "SHAMAN_INTELLECT_TOOLTIP", "SHAMAN_STRENGTH_TOOLTIP", "SHARDS", "SHARE_QUEST", "SHARE_QUEST_ABBREV", "SHARE_QUEST_TEXT", "SHIELDSLOT", "SHIELD_BLOCK_TEMPLATE", "SHIFT_KEY", "SHIFT_KEY_TEXT", "SHIRTSLOT", "SHORTDATE", "SHOULDERSLOT", "SHOW_ALL_SPELL_RANKS", "SHOW_ARENA_ENEMY_CASTBAR_TEXT", "SHOW_ARENA_ENEMY_FRAMES_TEXT", "SHOW_ARENA_ENEMY_PETS_TEXT", "SHOW_BATTLEFIELDMINIMAP_PLAYERS", "SHOW_BATTLENET_TOASTS", "SHOW_BRACES", "SHOW_BRACES_COMBATLOG_TOOLTIP", "SHOW_BUFFS", "SHOW_BUFF_DURATION_TEXT", "SHOW_CASTABLE_BUFFS_TEXT", "SHOW_CASTABLE_DEBUFFS_TEXT", "SHOW_CHAT_ICONS", "SHOW_CLASS_COLOR", "SHOW_CLASS_COLOR_IN_V_KEY", "SHOW_CLOAK", "SHOW_CLOCK", "SHOW_COMBAT_HEALING", "SHOW_COMBAT_TEXT_TEXT", "SHOW_DAMAGE_TEXT", "SHOW_DEBUFFS", "SHOW_DISPELLABLE_DEBUFFS_TEXT", "SHOW_ENEMY_CAST", "SHOW_FACTION_ON_MAINSCREEN", "SHOW_FREE_BAG_SLOTS_TEXT", "SHOW_FRIENDS_LIST", "SHOW_FULLSCREEN_STATUS_TEXT", "SHOW_GUILD_NAMES", "SHOW_HELM", "SHOW_IGNORE_LIST", "SHOW_ITEM_LEVEL", "SHOW_LOOT_SPAM", "SHOW_LUA_ERRORS", "SHOW_MAP", "SHOW_MULTIBAR1_TEXT", "SHOW_MULTIBAR2_TEXT", "SHOW_MULTIBAR3_TEXT", "SHOW_MULTIBAR4_TEXT", "SHOW_NEWBIE_TIPS_TEXT", "SHOW_NPC_NAMES", "SHOW_NUMERIC_THREAT", "SHOW_OFFLINE_MEMBERS", "SHOW_ON_BACKPACK", "SHOW_OTHER_TARGET_EFFECTS", "SHOW_OWN_NAME", "SHOW_PARTY_BACKGROUND_TEXT", "SHOW_PARTY_PETS_TEXT", "SHOW_PARTY_TEXT_TEXT", "SHOW_PET_MELEE_DAMAGE", "SHOW_PET_NAMEPLATES", "SHOW_PET_SPELL_DAMAGE", "SHOW_PLAYER_NAMES", "SHOW_PLAYER_TITLES", "SHOW_QUEST_FADING_TEXT", "SHOW_QUEST_OBJECTIVES_ON_MAP_TEXT", "SHOW_QUICK_BUTTON", "SHOW_RAID_RANGE_TEXT", "SHOW_TARGET", "SHOW_TARGET_CASTBAR", "SHOW_TARGET_CASTBAR_IN_V_KEY", "SHOW_TARGET_EFFECTS", "SHOW_TARGET_OF_TARGET_TEXT", "SHOW_TIMESTAMP", "SHOW_TIPOFTHEDAY_TEXT", "SHOW_TOAST_BROADCAST_TEXT", "SHOW_TOAST_CONVERSATION_TEXT", "SHOW_TOAST_FRIEND_REQUEST_TEXT", "SHOW_TOAST_OFFLINE_TEXT", "SHOW_TOAST_ONLINE_TEXT", "SHOW_TOAST_WINDOW_TEXT", "SHOW_TUTORIALS", "SHOW_UNIT_NAMES", "SIGN_CHARTER", "SILVER_AMOUNT", "SILVER_AMOUNT_SYMBOL", "SILVER_AMOUNT_TEXTURE", "SIMPLE_CHAT_OPTION_ENABLE_INTERRUPT", "SIMPLE_CHAT_TEXT", "SIMPLE_QUEST_WATCH_TEXT", "SINGLE_DAMAGE_TEMPLATE", "SINGLE_DAMAGE_TEMPLATE_WITH_SCHOOL", "SINGLE_PAGE_RESULTS_TEMPLATE", "SKILL", "SKILLS", "SKILLS_ABBR", "SKILLUPS", "SKILL_DESCRIPTION", "SKILL_INCREMENT_COST", "SKILL_INCREMENT_COST_SINGULAR", "SKILL_LEARNING_COST", "SKILL_LEARNING_COST_SINGULAR", "SKILL_LEVEL", "SKILL_POINTS_TOOLTIP", "SKILL_RANK_UP", "SKIN_COLOR", "SLASH_ACHIEVEMENTUI1", "SLASH_ACHIEVEMENTUI2", "SLASH_ACHIEVEMENTUI3", "SLASH_ACHIEVEMENTUI4", "SLASH_ACHIEVEMENTUI5", "SLASH_ACHIEVEMENTUI6", "SLASH_ACHIEVEMENTUI7", "SLASH_ACHIEVEMENTUI8", "SLASH_ASSIST1", "SLASH_ASSIST2", "SLASH_ASSIST3", "SLASH_ASSIST4", "SLASH_BATTLEGROUND1", "SLASH_BATTLEGROUND2", "SLASH_BATTLEGROUND3", "SLASH_BATTLEGROUND4", "SLASH_BENCHMARK1", "SLASH_BENCHMARK2", "SLASH_CALENDAR1", "SLASH_CALENDAR2", "SLASH_CANCELAURA1", "SLASH_CANCELAURA2", "SLASH_CANCELFORM1", "SLASH_CANCELFORM2", "SLASH_CAST1", "SLASH_CAST2", "SLASH_CAST3", "SLASH_CAST4", "SLASH_CASTRANDOM1", "SLASH_CASTRANDOM2", "SLASH_CASTSEQUENCE1", "SLASH_CASTSEQUENCE2", "SLASH_CHANGEACTIONBAR1", "SLASH_CHANGEACTIONBAR2", "SLASH_CHANNEL1", "SLASH_CHANNEL2", "SLASH_CHANNEL3", "SLASH_CHANNEL4", "SLASH_CHATLOG1", "SLASH_CHATLOG2", "SLASH_CHAT_AFK1", "SLASH_CHAT_AFK2", "SLASH_CHAT_AFK3", "SLASH_CHAT_AFK4", "SLASH_CHAT_ANNOUNCE1", "SLASH_CHAT_ANNOUNCE2", "SLASH_CHAT_ANNOUNCE3", "SLASH_CHAT_ANNOUNCE4", "SLASH_CHAT_BAN1", "SLASH_CHAT_BAN2", "SLASH_CHAT_CINVITE1", "SLASH_CHAT_CINVITE2", "SLASH_CHAT_CINVITE3", "SLASH_CHAT_CINVITE4", "SLASH_CHAT_DND1", "SLASH_CHAT_DND2", "SLASH_CHAT_DND3", "SLASH_CHAT_DND4", "SLASH_CHAT_DND5", "SLASH_CHAT_DND6", "SLASH_CHAT_HELP1", "SLASH_CHAT_HELP2", "SLASH_CHAT_HELP3", "SLASH_CHAT_HELP4", "SLASH_CHAT_HELP5", "SLASH_CHAT_KICK1", "SLASH_CHAT_KICK2", "SLASH_CHAT_MODERATE1", "SLASH_CHAT_MODERATE2", "SLASH_CHAT_MODERATOR1", "SLASH_CHAT_MODERATOR2", "SLASH_CHAT_MODERATOR3", "SLASH_CHAT_MODERATOR4", "SLASH_CHAT_MUTE1", "SLASH_CHAT_MUTE2", "SLASH_CHAT_MUTE3", "SLASH_CHAT_MUTE4", "SLASH_CHAT_MUTE5", "SLASH_CHAT_MUTE6", "SLASH_CHAT_OWNER1", "SLASH_CHAT_OWNER2", "SLASH_CHAT_PASSWORD1", "SLASH_CHAT_PASSWORD2", "SLASH_CHAT_PASSWORD3", "SLASH_CHAT_PASSWORD4", "SLASH_CHAT_PASSWORD5", "SLASH_CHAT_UNBAN1", "SLASH_CHAT_UNBAN2", "SLASH_CHAT_UNMODERATOR1", "SLASH_CHAT_UNMODERATOR2", "SLASH_CHAT_UNMODERATOR3", "SLASH_CHAT_UNMODERATOR4", "SLASH_CHAT_UNMUTE1", "SLASH_CHAT_UNMUTE2", "SLASH_CHAT_UNMUTE3", "SLASH_CHAT_UNMUTE4", "SLASH_CHAT_UNMUTE5", "SLASH_CHAT_UNMUTE6", "SLASH_CLEAR1", "SLASH_CLEAR2", "SLASH_CLEARFOCUS1", "SLASH_CLEARFOCUS2", "SLASH_CLEARMAINASSIST1", "SLASH_CLEARMAINASSIST2", "SLASH_CLEARMAINASSIST3", "SLASH_CLEARMAINASSIST4", "SLASH_CLEARMAINTANK1", "SLASH_CLEARMAINTANK2", "SLASH_CLEARMAINTANK3", "SLASH_CLEARMAINTANK4", "SLASH_CLEARTARGET1", "SLASH_CLEARTARGET2", "SLASH_CLICK1", "SLASH_CLICK2", "SLASH_COMBATLOG1", "SLASH_COMBATLOG2", "SLASH_CONSOLE1", "SLASH_CONSOLE2", "SLASH_DISABLE_ADDONS1", "SLASH_DISMOUNT1", "SLASH_DISMOUNT2", "SLASH_DUEL1", "SLASH_DUEL2", "SLASH_DUEL_CANCEL1", "SLASH_DUEL_CANCEL2", "SLASH_DUEL_CANCEL3", "SLASH_DUEL_CANCEL4", "SLASH_DUEL_CANCEL5", "SLASH_DUEL_CANCEL6", "SLASH_DUMP1", "SLASH_DUMP2", "SLASH_DUNGEONS1", "SLASH_DUNGEONS2", "SLASH_DUNGEONS3", "SLASH_DUNGEONS4", "SLASH_DUNGEONS5", "SLASH_DUNGEONS6", "SLASH_EMOTE1", "SLASH_EMOTE2", "SLASH_EMOTE3", "SLASH_EMOTE4", "SLASH_EMOTE5", "SLASH_EMOTE6", "SLASH_EMOTE7", "SLASH_EMOTE8", "SLASH_ENABLE_ADDONS1", "SLASH_EQUIP1", "SLASH_EQUIP2", "SLASH_EQUIP3", "SLASH_EQUIP4", "SLASH_EQUIP_SET1", "SLASH_EQUIP_SET2", "SLASH_EQUIP_TO_SLOT1", "SLASH_EQUIP_TO_SLOT2", "SLASH_EVENTTRACE1", "SLASH_EVENTTRACE2", "SLASH_EVENTTRACE3", "SLASH_EVENTTRACE4", "SLASH_FOCUS1", "SLASH_FOCUS2", "SLASH_FOLLOW1", "SLASH_FOLLOW2", "SLASH_FOLLOW3", "SLASH_FOLLOW4", "SLASH_FOLLOW5", "SLASH_FOLLOW6", "SLASH_FOLLOW7", "SLASH_FRAMESTACK1", "SLASH_FRAMESTACK2", "SLASH_FRAMESTACK3", "SLASH_FRAMESTACK4", "SLASH_FRIENDS1", "SLASH_FRIENDS2", "SLASH_FRIENDS3", "SLASH_FRIENDS4", "SLASH_GUILD1", "SLASH_GUILD2", "SLASH_GUILD3", "SLASH_GUILD4", "SLASH_GUILD5", "SLASH_GUILD6", "SLASH_GUILD7", "SLASH_GUILD8", "SLASH_GUILD9", "SLASH_GUILD_DEMOTE1", "SLASH_GUILD_DEMOTE2", "SLASH_GUILD_DEMOTE3", "SLASH_GUILD_DEMOTE4", "SLASH_GUILD_DISBAND1", "SLASH_GUILD_DISBAND2", "SLASH_GUILD_DISBAND3", "SLASH_GUILD_DISBAND4", "SLASH_GUILD_HELP1", "SLASH_GUILD_HELP2", "SLASH_GUILD_HELP3", "SLASH_GUILD_HELP4", "SLASH_GUILD_HELP5", "SLASH_GUILD_INFO1", "SLASH_GUILD_INFO2", "SLASH_GUILD_INFO3", "SLASH_GUILD_INFO4", "SLASH_GUILD_INVITE1", "SLASH_GUILD_INVITE2", "SLASH_GUILD_INVITE3", "SLASH_GUILD_INVITE4", "SLASH_GUILD_LEADER1", "SLASH_GUILD_LEADER2", "SLASH_GUILD_LEADER3", "SLASH_GUILD_LEADER4", "SLASH_GUILD_LEADER_REPLACE", "SLASH_GUILD_LEAVE1", "SLASH_GUILD_LEAVE2", "SLASH_GUILD_LEAVE3", "SLASH_GUILD_LEAVE4", "SLASH_GUILD_MOTD1", "SLASH_GUILD_MOTD2", "SLASH_GUILD_MOTD3", "SLASH_GUILD_MOTD4", "SLASH_GUILD_PROMOTE1", "SLASH_GUILD_PROMOTE2", "SLASH_GUILD_PROMOTE3", "SLASH_GUILD_PROMOTE4", "SLASH_GUILD_ROSTER1", "SLASH_GUILD_ROSTER2", "SLASH_GUILD_ROSTER3", "SLASH_GUILD_ROSTER4", "SLASH_GUILD_UNINVITE1", "SLASH_GUILD_UNINVITE2", "SLASH_GUILD_UNINVITE3", "SLASH_GUILD_UNINVITE4", "SLASH_GUILD_WHO1", "SLASH_GUILD_WHO2", "SLASH_GUILD_WHO3", "SLASH_GUILD_WHO4", "SLASH_GUILD_WHO5", "SLASH_GUILD_WHO6", "SLASH_HELP1", "SLASH_HELP2", "SLASH_HELP3", "SLASH_HELP4", "SLASH_HELP5", "SLASH_HELP6", "SLASH_IGNORE1", "SLASH_IGNORE2", "SLASH_INSPECT1", "SLASH_INSPECT2", "SLASH_INSPECT3", "SLASH_INSPECT4", "SLASH_INVITE1", "SLASH_INVITE2", "SLASH_INVITE3", "SLASH_INVITE4", "SLASH_INVITE5", "SLASH_INVITE6", "SLASH_INVITE7", "SLASH_JOIN1", "SLASH_JOIN2", "SLASH_JOIN3", "SLASH_JOIN4", "SLASH_JOIN5", "SLASH_JOIN6", "SLASH_JOIN7", "SLASH_LEAVE1", "SLASH_LEAVE2", "SLASH_LEAVE3", "SLASH_LEAVE4", "SLASH_LEAVE5", "SLASH_LEAVE6", "SLASH_LEAVE7", "SLASH_LEAVEVEHICLE1", "SLASH_LEAVEVEHICLE2", "SLASH_LIST_CHANNEL1", "SLASH_LIST_CHANNEL2", "SLASH_LIST_CHANNEL3", "SLASH_LIST_CHANNEL4", "SLASH_LIST_CHANNEL5", "SLASH_LIST_CHANNEL6", "SLASH_LIST_CHANNEL7", "SLASH_LOGOUT1", "SLASH_LOGOUT2", "SLASH_LOGOUT3", "SLASH_LOGOUT4", "SLASH_LOOT_FFA1", "SLASH_LOOT_FFA2", "SLASH_LOOT_GROUP1", "SLASH_LOOT_GROUP2", "SLASH_LOOT_MASTER1", "SLASH_LOOT_MASTER2", "SLASH_LOOT_NEEDBEFOREGREED1", "SLASH_LOOT_NEEDBEFOREGREED2", "SLASH_LOOT_ROUNDROBIN1", "SLASH_LOOT_ROUNDROBIN2", "SLASH_LOOT_SETTHRESHOLD1", "SLASH_LOOT_SETTHRESHOLD2", "SLASH_MACRO1", "SLASH_MACRO2", "SLASH_MACRO3", "SLASH_MACRO4", "SLASH_MACROHELP1", "SLASH_MACROHELP2", "SLASH_MACROHELP3", "SLASH_MAINASSISTOFF1", "SLASH_MAINASSISTOFF2", "SLASH_MAINASSISTOFF3", "SLASH_MAINASSISTOFF4", "SLASH_MAINASSISTON1", "SLASH_MAINASSISTON2", "SLASH_MAINASSISTON3", "SLASH_MAINASSISTON4", "SLASH_MAINTANKOFF1", "SLASH_MAINTANKOFF2", "SLASH_MAINTANKOFF3", "SLASH_MAINTANKOFF4", "SLASH_MAINTANKON1", "SLASH_MAINTANKON2", "SLASH_MAINTANKON3", "SLASH_MAINTANKON4", "SLASH_OFFICER1", "SLASH_OFFICER2", "SLASH_OFFICER3", "SLASH_OFFICER4", "SLASH_OFFICER5", "SLASH_OFFICER6", "SLASH_PARTY1", "SLASH_PARTY2", "SLASH_PARTY3", "SLASH_PARTY4", "SLASH_PARTY5", "SLASH_PET_AGGRESSIVE1", "SLASH_PET_AGGRESSIVE2", "SLASH_PET_ATTACK1", "SLASH_PET_ATTACK2", "SLASH_PET_AUTOCASTOFF1", "SLASH_PET_AUTOCASTOFF2", "SLASH_PET_AUTOCASTON1", "SLASH_PET_AUTOCASTON2", "SLASH_PET_AUTOCASTTOGGLE1", "SLASH_PET_AUTOCASTTOGGLE2", "SLASH_PET_DEFENSIVE1", "SLASH_PET_DEFENSIVE2", "SLASH_PET_FOLLOW1", "SLASH_PET_FOLLOW2", "SLASH_PET_PASSIVE1", "SLASH_PET_PASSIVE2", "SLASH_PET_STAY1", "SLASH_PET_STAY2", "SLASH_PLAYED1", "SLASH_PLAYED2", "SLASH_PROMOTE1", "SLASH_PROMOTE2", "SLASH_PROMOTE3", "SLASH_PROMOTE4", "SLASH_PVP1", "SLASH_PVP2", "SLASH_QUIT1", "SLASH_QUIT2", "SLASH_QUIT3", "SLASH_QUIT4", "SLASH_RAID1", "SLASH_RAID2", "SLASH_RAID3", "SLASH_RAID4", "SLASH_RAID5", "SLASH_RAID6", "SLASH_RAIDBROWSER1", "SLASH_RAIDBROWSER2", "SLASH_RAIDBROWSER3", "SLASH_RAIDBROWSER4", "SLASH_RAIDBROWSER5", "SLASH_RAIDBROWSER6", "SLASH_RAID_INFO1", "SLASH_RAID_INFO2", "SLASH_RAID_WARNING1", "SLASH_RAID_WARNING2", "SLASH_RANDOM1", "SLASH_RANDOM2", "SLASH_RANDOM3", "SLASH_RANDOM4", "SLASH_RANDOM5", "SLASH_RANDOM6", "SLASH_RANDOM7", "SLASH_READYCHECK1", "SLASH_READYCHECK2", "SLASH_RELOAD1", "SLASH_RELOAD2", "SLASH_REMOVEFRIEND1", "SLASH_REMOVEFRIEND2", "SLASH_REMOVEFRIEND3", "SLASH_REMOVEFRIEND4", "SLASH_REPLY1", "SLASH_REPLY2", "SLASH_REPLY3", "SLASH_REPLY4", "SLASH_RESETCHAT1", "SLASH_RESETCHAT2", "SLASH_SAVEGUILDROSTER1", "SLASH_SAVEGUILDROSTER2", "SLASH_SAY1", "SLASH_SAY2", "SLASH_SAY3", "SLASH_SAY4", "SLASH_SCRIPT1", "SLASH_SCRIPT2", "SLASH_SCRIPT3", "SLASH_SCRIPT4", "SLASH_SET_TITLE1", "SLASH_SET_TITLE2", "SLASH_STARTATTACK1", "SLASH_STARTATTACK2", "SLASH_STOPATTACK1", "SLASH_STOPATTACK2", "SLASH_STOPCASTING1", "SLASH_STOPCASTING2", "SLASH_STOPMACRO1", "SLASH_STOPMACRO2", "SLASH_STOPWATCH1", "SLASH_STOPWATCH2", "SLASH_STOPWATCH3", "SLASH_STOPWATCH4", "SLASH_STOPWATCH5", "SLASH_STOPWATCH6", "SLASH_STOPWATCH_PARAM_PAUSE1", "SLASH_STOPWATCH_PARAM_PAUSE2", "SLASH_STOPWATCH_PARAM_PLAY1", "SLASH_STOPWATCH_PARAM_PLAY2", "SLASH_STOPWATCH_PARAM_STOP1", "SLASH_STOPWATCH_PARAM_STOP2", "SLASH_STOPWATCH_PARAM_STOP3", "SLASH_STOPWATCH_PARAM_STOP4", "SLASH_STOPWATCH_PARAM_STOP5", "SLASH_STOPWATCH_PARAM_STOP6", "SLASH_SWAPACTIONBAR1", "SLASH_SWAPACTIONBAR2", "SLASH_TARGET1", "SLASH_TARGET2", "SLASH_TARGET3", "SLASH_TARGET4", "SLASH_TARGET_EXACT1", "SLASH_TARGET_EXACT2", "SLASH_TARGET_LAST_ENEMY1", "SLASH_TARGET_LAST_ENEMY2", "SLASH_TARGET_LAST_FRIEND1", "SLASH_TARGET_LAST_FRIEND2", "SLASH_TARGET_LAST_TARGET1", "SLASH_TARGET_LAST_TARGET2", "SLASH_TARGET_NEAREST_ENEMY1", "SLASH_TARGET_NEAREST_ENEMY2", "SLASH_TARGET_NEAREST_ENEMY_PLAYER1", "SLASH_TARGET_NEAREST_ENEMY_PLAYER2", "SLASH_TARGET_NEAREST_FRIEND1", "SLASH_TARGET_NEAREST_FRIEND2", "SLASH_TARGET_NEAREST_FRIEND_PLAYER1", "SLASH_TARGET_NEAREST_FRIEND_PLAYER2", "SLASH_TARGET_NEAREST_PARTY1", "SLASH_TARGET_NEAREST_PARTY2", "SLASH_TARGET_NEAREST_RAID1", "SLASH_TARGET_NEAREST_RAID2", "SLASH_TEAM_CAPTAIN1", "SLASH_TEAM_CAPTAIN2", "SLASH_TEAM_CAPTAIN3", "SLASH_TEAM_CAPTAIN4", "SLASH_TEAM_DISBAND1", "SLASH_TEAM_DISBAND2", "SLASH_TEAM_DISBAND3", "SLASH_TEAM_DISBAND4", "SLASH_TEAM_INVITE1", "SLASH_TEAM_INVITE2", "SLASH_TEAM_INVITE3", "SLASH_TEAM_INVITE4", "SLASH_TEAM_QUIT1", "SLASH_TEAM_QUIT2", "SLASH_TEAM_QUIT3", "SLASH_TEAM_QUIT4", "SLASH_TEAM_UNINVITE1", "SLASH_TEAM_UNINVITE2", "SLASH_TEAM_UNINVITE3", "SLASH_TEAM_UNINVITE4", "SLASH_TIME1", "SLASH_TIME2", "SLASH_TOKEN1", "SLASH_TOKEN2", "SLASH_TOKEN3", "SLASH_TOKEN4", "SLASH_TRADE1", "SLASH_TRADE2", "SLASH_TRADE3", "SLASH_TRADE4", "SLASH_UNIGNORE1", "SLASH_UNIGNORE2", "SLASH_UNINVITE1", "SLASH_UNINVITE2", "SLASH_UNINVITE3", "SLASH_UNINVITE4", "SLASH_UNINVITE5", "SLASH_UNINVITE6", "SLASH_UNINVITE7", "SLASH_UNINVITE8", "SLASH_UNINVITE9", "SLASH_UNINVITE10", "SLASH_USE1", "SLASH_USE2", "SLASH_USERANDOM1", "SLASH_USERANDOM2", "SLASH_USE_TALENT_SPEC1", "SLASH_USE_TALENT_SPEC2", "SLASH_VOICEMACRO1", "SLASH_VOICEMACRO2", "SLASH_WHISPER1", "SLASH_WHISPER2", "SLASH_WHISPER3", "SLASH_WHISPER4", "SLASH_WHISPER5", "SLASH_WHISPER6", "SLASH_WHISPER7", "SLASH_WHISPER8", "SLASH_WHISPER9", "SLASH_WHISPER10", "SLASH_WHO1", "SLASH_WHO2", "SLASH_YELL1", "SLASH_YELL2", "SLASH_YELL3", "SLASH_YELL4", "SLASH_YELL5", "SLASH_YELL6", "SLASH_YELL7", "SLASH_YELL8", "SLURRED_SPEECH", "SMART_PIVOT", "SOCIALS", "SOCIAL_BUTTON", "SOCIAL_LABEL", "SOCIAL_SUBTEXT", "SOCKET_GEMS", "SOCKET_ITEM_MIN_SKILL", "SOCKET_ITEM_REQ_LEVEL", "SOCKET_ITEM_REQ_SKILL", "SOLD_BY_COLON", "SOLO", "SORT_QUEST", "SOUNDOPTIONS_MENU", "SOUND_CHANNELS", "SOUND_DISABLED", "SOUND_EFFECTS_DISABLED", "SOUND_EFFECTS_ENABLED", "SOUND_LABEL", "SOUND_OPTIONS", "SOUND_QUALITY", "SOUND_SUBTEXT", "SOUND_VOLUME", "SPEAKERMODE", "SPEAKERMODE_HEADPHONES", "SPEAKERMODE_STEREO", "SPEAKERMODE_SURROUND", "SPECIAL", "SPECIAL_SKILLS", "SPECIFIC_DUNGEONS", "SPECIFIC_DUNGEON_IS_READY", "SPEED", "SPEED_ABBR", "SPELLBOOK", "SPELLBOOK_ABILITIES_BUTTON", "SPELLBOOK_BUTTON", "SPELLDISMISSPETOTHER", "SPELLDISMISSPETSELF", "SPELLHAPPINESSDRAINOTHER", "SPELLHAPPINESSDRAINSELF", "SPELLS", "SPELLS_COMBATLOG_TOOLTIP", "SPELL_BONUS", "SPELL_CASTING", "SPELL_CASTING_COMBATLOG_TOOLTIP", "SPELL_CAST_CHANNELED", "SPELL_CAST_FAILED_COMBATLOG_TOOLTIP", "SPELL_CAST_START_COMBATLOG_TOOLTIP", "SPELL_CAST_SUCCESS_COMBATLOG_TOOLTIP", "SPELL_CAST_TIME_INSTANT", "SPELL_CAST_TIME_INSTANT_NO_MANA", "SPELL_CAST_TIME_MIN", "SPELL_CAST_TIME_RANGED", "SPELL_CAST_TIME_SEC", "SPELL_COLOR_BY_SCHOOL_COMBATLOG_TOOLTIP", "SPELL_CREATE_COMBATLOG_TOOLTIP", "SPELL_CRIT_CHANCE", "SPELL_DAMAGE_COMBATLOG_TOOLTIP", "SPELL_DAMAGE_NUMBER_COMBATLOG_TOOLTIP", "SPELL_DAMAGE_SCHOOL_COMBATLOG_TOOLTIP", "SPELL_DETAIL", "SPELL_DRAIN_COMBATLOG_TOOLTIP", "SPELL_DURATION", "SPELL_DURATION_DAYS", "SPELL_DURATION_HOURS", "SPELL_DURATION_MIN", "SPELL_DURATION_SEC", "SPELL_DURATION_UNTIL_CANCELLED", "SPELL_EQUIPPED_ITEM", "SPELL_EQUIPPED_ITEM_NOSPACE", "SPELL_EXTRA_ATTACKS_COMBATLOG_TOOLTIP", "SPELL_FAILED_AFFECTING_COMBAT", "SPELL_FAILED_ALREADY_BEING_TAMED", "SPELL_FAILED_ALREADY_HAVE_CHARM", "SPELL_FAILED_ALREADY_HAVE_SUMMON", "SPELL_FAILED_ALREADY_OPEN", "SPELL_FAILED_ARTISAN_RIDING_REQUIREMENT", "SPELL_FAILED_AURA_BOUNCED", "SPELL_FAILED_BAD_IMPLICIT_TARGETS", "SPELL_FAILED_BAD_TARGETS", "SPELL_FAILED_BM_OR_INVISGOD", "SPELL_FAILED_CANT_BE_CHARMED", "SPELL_FAILED_CANT_BE_DISENCHANTED", "SPELL_FAILED_CANT_BE_DISENCHANTED_SKILL", "SPELL_FAILED_CANT_BE_MILLED", "SPELL_FAILED_CANT_BE_PROSPECTED", "SPELL_FAILED_CANT_CAST_ON_TAPPED", "SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW", "SPELL_FAILED_CANT_DUEL_WHILE_INVISIBLE", "SPELL_FAILED_CANT_DUEL_WHILE_STEALTHED", "SPELL_FAILED_CANT_STEALTH", "SPELL_FAILED_CASTER_AURASTATE", "SPELL_FAILED_CASTER_DEAD", "SPELL_FAILED_CASTER_DEAD_FEMALE", "SPELL_FAILED_CAST_NOT_HERE", "SPELL_FAILED_CHARMED", "SPELL_FAILED_CHEST_IN_USE", "SPELL_FAILED_CONFUSED", "SPELL_FAILED_CUSTOM_ERROR_1", "SPELL_FAILED_CUSTOM_ERROR_10", "SPELL_FAILED_CUSTOM_ERROR_11", "SPELL_FAILED_CUSTOM_ERROR_12", "SPELL_FAILED_CUSTOM_ERROR_13", "SPELL_FAILED_CUSTOM_ERROR_14_NONE", "SPELL_FAILED_CUSTOM_ERROR_15", "SPELL_FAILED_CUSTOM_ERROR_16", "SPELL_FAILED_CUSTOM_ERROR_17", "SPELL_FAILED_CUSTOM_ERROR_18", "SPELL_FAILED_CUSTOM_ERROR_19", "SPELL_FAILED_CUSTOM_ERROR_2", "SPELL_FAILED_CUSTOM_ERROR_20", "SPELL_FAILED_CUSTOM_ERROR_21", "SPELL_FAILED_CUSTOM_ERROR_22", "SPELL_FAILED_CUSTOM_ERROR_23", "SPELL_FAILED_CUSTOM_ERROR_24", "SPELL_FAILED_CUSTOM_ERROR_25", "SPELL_FAILED_CUSTOM_ERROR_26", "SPELL_FAILED_CUSTOM_ERROR_27", "SPELL_FAILED_CUSTOM_ERROR_28", "SPELL_FAILED_CUSTOM_ERROR_29", "SPELL_FAILED_CUSTOM_ERROR_3", "SPELL_FAILED_CUSTOM_ERROR_30", "SPELL_FAILED_CUSTOM_ERROR_31", "SPELL_FAILED_CUSTOM_ERROR_32", "SPELL_FAILED_CUSTOM_ERROR_33", "SPELL_FAILED_CUSTOM_ERROR_34", "SPELL_FAILED_CUSTOM_ERROR_35", "SPELL_FAILED_CUSTOM_ERROR_36", "SPELL_FAILED_CUSTOM_ERROR_37", "SPELL_FAILED_CUSTOM_ERROR_38", "SPELL_FAILED_CUSTOM_ERROR_39", "SPELL_FAILED_CUSTOM_ERROR_4", "SPELL_FAILED_CUSTOM_ERROR_40", "SPELL_FAILED_CUSTOM_ERROR_41", "SPELL_FAILED_CUSTOM_ERROR_42", "SPELL_FAILED_CUSTOM_ERROR_43", "SPELL_FAILED_CUSTOM_ERROR_44", "SPELL_FAILED_CUSTOM_ERROR_45", "SPELL_FAILED_CUSTOM_ERROR_46", "SPELL_FAILED_CUSTOM_ERROR_47", "SPELL_FAILED_CUSTOM_ERROR_48", "SPELL_FAILED_CUSTOM_ERROR_49", "SPELL_FAILED_CUSTOM_ERROR_5", "SPELL_FAILED_CUSTOM_ERROR_50", "SPELL_FAILED_CUSTOM_ERROR_51", "SPELL_FAILED_CUSTOM_ERROR_52", "SPELL_FAILED_CUSTOM_ERROR_53", "SPELL_FAILED_CUSTOM_ERROR_54", "SPELL_FAILED_CUSTOM_ERROR_55", "SPELL_FAILED_CUSTOM_ERROR_56", "SPELL_FAILED_CUSTOM_ERROR_57", "SPELL_FAILED_CUSTOM_ERROR_58", "SPELL_FAILED_CUSTOM_ERROR_59", "SPELL_FAILED_CUSTOM_ERROR_6", "SPELL_FAILED_CUSTOM_ERROR_60", "SPELL_FAILED_CUSTOM_ERROR_61", "SPELL_FAILED_CUSTOM_ERROR_62", "SPELL_FAILED_CUSTOM_ERROR_63_NONE", "SPELL_FAILED_CUSTOM_ERROR_64_NONE", "SPELL_FAILED_CUSTOM_ERROR_65", "SPELL_FAILED_CUSTOM_ERROR_66", "SPELL_FAILED_CUSTOM_ERROR_67", "SPELL_FAILED_CUSTOM_ERROR_7", "SPELL_FAILED_CUSTOM_ERROR_75", "SPELL_FAILED_CUSTOM_ERROR_76", "SPELL_FAILED_CUSTOM_ERROR_77", "SPELL_FAILED_CUSTOM_ERROR_78", "SPELL_FAILED_CUSTOM_ERROR_79", "SPELL_FAILED_CUSTOM_ERROR_8", "SPELL_FAILED_CUSTOM_ERROR_83", "SPELL_FAILED_CUSTOM_ERROR_84", "SPELL_FAILED_CUSTOM_ERROR_85", "SPELL_FAILED_CUSTOM_ERROR_86", "SPELL_FAILED_CUSTOM_ERROR_87", "SPELL_FAILED_CUSTOM_ERROR_88", "SPELL_FAILED_CUSTOM_ERROR_9", "SPELL_FAILED_CUSTOM_ERROR_90", "SPELL_FAILED_CUSTOM_ERROR_96", "SPELL_FAILED_CUSTOM_ERROR_97", "SPELL_FAILED_CUSTOM_ERROR_98", "SPELL_FAILED_CUSTOM_ERROR_99", "SPELL_FAILED_DAMAGE_IMMUNE", "SPELL_FAILED_EQUIPPED_ITEM", "SPELL_FAILED_EQUIPPED_ITEM_CLASS", "SPELL_FAILED_EQUIPPED_ITEM_CLASS_MAINHAND", "SPELL_FAILED_EQUIPPED_ITEM_CLASS_OFFHAND", "SPELL_FAILED_ERROR", "SPELL_FAILED_EXPERT_RIDING_REQUIREMENT", "SPELL_FAILED_FISHING_TOO_LOW", "SPELL_FAILED_FIZZLE", "SPELL_FAILED_FLEEING", "SPELL_FAILED_FOOD_LOWLEVEL", "SPELL_FAILED_GLYPH_SOCKET_LOCKED", "SPELL_FAILED_HIGHLEVEL", "SPELL_FAILED_IMMUNE", "SPELL_FAILED_INCORRECT_AREA", "SPELL_FAILED_INTERRUPTED", "SPELL_FAILED_INTERRUPTED_COMBAT", "SPELL_FAILED_INVALID_GLYPH", "SPELL_FAILED_ITEM_ALREADY_ENCHANTED", "SPELL_FAILED_ITEM_AT_MAX_CHARGES", "SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW", "SPELL_FAILED_ITEM_GONE", "SPELL_FAILED_ITEM_NOT_FOUND", "SPELL_FAILED_ITEM_NOT_READY", "SPELL_FAILED_LEVEL_REQUIREMENT", "SPELL_FAILED_LEVEL_REQUIREMENT_PET", "SPELL_FAILED_LIMIT_CATEGORY_EXCEEDED", "SPELL_FAILED_LINE_OF_SIGHT", "SPELL_FAILED_LOWLEVEL", "SPELL_FAILED_LOW_CASTLEVEL", "SPELL_FAILED_MAINHAND_EMPTY", "SPELL_FAILED_MIN_SKILL", "SPELL_FAILED_MOVING", "SPELL_FAILED_NEED_AMMO", "SPELL_FAILED_NEED_AMMO_POUCH", "SPELL_FAILED_NEED_EXOTIC_AMMO", "SPELL_FAILED_NEED_MORE_ITEMS", "SPELL_FAILED_NOPATH", "SPELL_FAILED_NOTHING_TO_DISPEL", "SPELL_FAILED_NOTHING_TO_STEAL", "SPELL_FAILED_NOT_BEHIND", "SPELL_FAILED_NOT_FISHABLE", "SPELL_FAILED_NOT_FLYING", "SPELL_FAILED_NOT_HERE", "SPELL_FAILED_NOT_IDLE", "SPELL_FAILED_NOT_INACTIVE", "SPELL_FAILED_NOT_INFRONT", "SPELL_FAILED_NOT_IN_ARENA", "SPELL_FAILED_NOT_IN_BARBERSHOP", "SPELL_FAILED_NOT_IN_BATTLEGROUND", "SPELL_FAILED_NOT_IN_CONTROL", "SPELL_FAILED_NOT_IN_RAID_INSTANCE", "SPELL_FAILED_NOT_KNOWN", "SPELL_FAILED_NOT_MOUNTED", "SPELL_FAILED_NOT_ON_DAMAGE_IMMUNE", "SPELL_FAILED_NOT_ON_GROUND", "SPELL_FAILED_NOT_ON_MOUNTED", "SPELL_FAILED_NOT_ON_SHAPESHIFT", "SPELL_FAILED_NOT_ON_STEALTHED", "SPELL_FAILED_NOT_ON_TAXI", "SPELL_FAILED_NOT_ON_TRANSPORT", "SPELL_FAILED_NOT_READY", "SPELL_FAILED_NOT_SHAPESHIFT", "SPELL_FAILED_NOT_STANDING", "SPELL_FAILED_NOT_TRADEABLE", "SPELL_FAILED_NOT_TRADING", "SPELL_FAILED_NOT_UNSHEATHED", "SPELL_FAILED_NOT_WHILE_FATIGUED", "SPELL_FAILED_NOT_WHILE_GHOST", "SPELL_FAILED_NOT_WHILE_LOOTING", "SPELL_FAILED_NOT_WHILE_TRADING", "SPELL_FAILED_NO_AMMO", "SPELL_FAILED_NO_CHAMPION", "SPELL_FAILED_NO_CHARGES_REMAIN", "SPELL_FAILED_NO_COMBO_POINTS", "SPELL_FAILED_NO_DUELING", "SPELL_FAILED_NO_EDIBLE_CORPSES", "SPELL_FAILED_NO_ENDURANCE", "SPELL_FAILED_NO_EVASIVE_CHARGES", "SPELL_FAILED_NO_FISH", "SPELL_FAILED_NO_ITEMS_WHILE_SHAPESHIFTED", "SPELL_FAILED_NO_MAGIC_TO_CONSUME", "SPELL_FAILED_NO_MOUNTS_ALLOWED", "SPELL_FAILED_NO_PET", "SPELL_FAILED_NO_PLAYTIME", "SPELL_FAILED_ONLY_ABOVEWATER", "SPELL_FAILED_ONLY_BATTLEGROUNDS", "SPELL_FAILED_ONLY_DAYTIME", "SPELL_FAILED_ONLY_INDOORS", "SPELL_FAILED_ONLY_IN_ARENA", "SPELL_FAILED_ONLY_MOUNTED", "SPELL_FAILED_ONLY_NIGHTTIME", "SPELL_FAILED_ONLY_OUTDOORS", "SPELL_FAILED_ONLY_SHAPESHIFT", "SPELL_FAILED_ONLY_STEALTHED", "SPELL_FAILED_ONLY_UNDERWATER", "SPELL_FAILED_OUT_OF_RANGE", "SPELL_FAILED_PACIFIED", "SPELL_FAILED_PARTIAL_PLAYTIME", "SPELL_FAILED_PET_CAN_RENAME", "SPELL_FAILED_POSSESSED", "SPELL_FAILED_PREVENTED_BY_MECHANIC", "SPELL_FAILED_REAGENTS", "SPELL_FAILED_REPUTATION", "SPELL_FAILED_REQUIRES_AREA", "SPELL_FAILED_REQUIRES_SPELL_FOCUS", "SPELL_FAILED_ROCKET_PACK", "SPELL_FAILED_ROOTED", "SPELL_FAILED_SILENCED", "SPELL_FAILED_SPELL_IN_PROGRESS", "SPELL_FAILED_SPELL_LEARNED", "SPELL_FAILED_SPELL_UNAVAILABLE", "SPELL_FAILED_SPELL_UNAVAILABLE_PET", "SPELL_FAILED_STUNNED", "SPELL_FAILED_SUMMON_PENDING", "SPELL_FAILED_TARGETS_DEAD", "SPELL_FAILED_TARGET_AFFECTING_COMBAT", "SPELL_FAILED_TARGET_AURASTATE", "SPELL_FAILED_TARGET_CANNOT_BE_RESURRECTED", "SPELL_FAILED_TARGET_DUELING", "SPELL_FAILED_TARGET_ENEMY", "SPELL_FAILED_TARGET_ENRAGED", "SPELL_FAILED_TARGET_FREEFORALL", "SPELL_FAILED_TARGET_FRIENDLY", "SPELL_FAILED_TARGET_IN_COMBAT", "SPELL_FAILED_TARGET_IS_PLAYER", "SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED", "SPELL_FAILED_TARGET_IS_TRIVIAL", "SPELL_FAILED_TARGET_LOCKED_TO_RAID_INSTANCE", "SPELL_FAILED_TARGET_NOT_DEAD", "SPELL_FAILED_TARGET_NOT_GHOST", "SPELL_FAILED_TARGET_NOT_IN_INSTANCE", "SPELL_FAILED_TARGET_NOT_IN_PARTY", "SPELL_FAILED_TARGET_NOT_IN_RAID", "SPELL_FAILED_TARGET_NOT_IN_SANCTUARY", "SPELL_FAILED_TARGET_NOT_LOOTED", "SPELL_FAILED_TARGET_NOT_PLAYER", "SPELL_FAILED_TARGET_NO_POCKETS", "SPELL_FAILED_TARGET_NO_RANGED_WEAPONS", "SPELL_FAILED_TARGET_NO_WEAPONS", "SPELL_FAILED_TARGET_ON_TAXI", "SPELL_FAILED_TARGET_UNSKINNABLE", "SPELL_FAILED_TOO_CLOSE", "SPELL_FAILED_TOO_MANY_OF_ITEM", "SPELL_FAILED_TOO_SHALLOW", "SPELL_FAILED_TOTEMS", "SPELL_FAILED_TOTEM_CATEGORY", "SPELL_FAILED_TRANSFORM_UNUSABLE", "SPELL_FAILED_TRY_AGAIN", "SPELL_FAILED_UNIQUE_GLYPH", "SPELL_FAILED_UNIT_NOT_BEHIND", "SPELL_FAILED_UNIT_NOT_INFRONT", "SPELL_FAILED_UNKNOWN", "SPELL_FAILED_WRONG_PET_FOOD", "SPELL_FAILED_WRONG_WEATHER", "SPELL_HASTE", "SPELL_HASTE_ABBR", "SPELL_HASTE_TOOLTIP", "SPELL_HEAL_COMBATLOG_TOOLTIP", "SPELL_INSTAKILL_COMBATLOG_TOOLTIP", "SPELL_INSTANT_EFFECT", "SPELL_INTERRUPT_COMBATLOG_TOOLTIP", "SPELL_LASTING_EFFECT", "SPELL_MESSAGES", "SPELL_MISSED_COMBATLOG_TOOLTIP", "SPELL_NAMES", "SPELL_NAMES_COMBATLOG_TOOLTIP", "SPELL_NAMES_SHOW_BRACES_COMBATLOG_TOOLTIP", "SPELL_NOT_SHAPESHIFTED", "SPELL_NOT_SHAPESHIFTED_NOSPACE", "SPELL_ON_NEXT_RANGED", "SPELL_ON_NEXT_SWING", "SPELL_OTHER_MESSAGES", "SPELL_PASSIVE", "SPELL_PASSIVE_EFFECT", "SPELL_PENETRATION", "SPELL_PENETRATION_TOOLTIP", "SPELL_PERIODIC_COMBATLOG_TOOLTIP", "SPELL_PERIODIC_DAMAGE_COMBATLOG_TOOLTIP", "SPELL_PERIODIC_HEAL_COMBATLOG_TOOLTIP", "SPELL_PERIODIC_MISSED_COMBATLOG_TOOLTIP", "SPELL_PERIODIC_OTHER_COMBATLOG_TOOLTIP", "SPELL_POINTS_SPREAD_TEMPLATE", "SPELL_RANGE", "SPELL_RANGE_AREA", "SPELL_RANGE_DUAL", "SPELL_RANGE_UNLIMITED", "SPELL_REAGENTS", "SPELL_RECAST_TIME_INSTANT", "SPELL_RECAST_TIME_MIN", "SPELL_RECAST_TIME_SEC", "SPELL_REQUIRED_FORM", "SPELL_REQUIRED_FORM_NOSPACE", "SPELL_RESURRECT_COMBATLOG_TOOLTIP", "SPELL_SCHOOL0_CAP", "SPELL_SCHOOL0_NAME", "SPELL_SCHOOL1_CAP", "SPELL_SCHOOL1_NAME", "SPELL_SCHOOL2_CAP", "SPELL_SCHOOL2_NAME", "SPELL_SCHOOL3_CAP", "SPELL_SCHOOL3_NAME", "SPELL_SCHOOL4_CAP", "SPELL_SCHOOL4_NAME", "SPELL_SCHOOL5_CAP", "SPELL_SCHOOL5_NAME", "SPELL_SCHOOL6_CAP", "SPELL_SCHOOL6_NAME", "SPELL_SCHOOLALL", "SPELL_SCHOOLMAGICAL", "SPELL_SKILL_LINE", "SPELL_STAT1_NAME", "SPELL_STAT2_NAME", "SPELL_STAT3_NAME", "SPELL_STAT4_NAME", "SPELL_STAT5_NAME", "SPELL_STATALL", "SPELL_SUMMON_COMBATLOG_TOOLTIP", "SPELL_TARGET_CENTER_CASTER", "SPELL_TARGET_CENTER_LOC", "SPELL_TARGET_CHAIN_TEMPLATE", "SPELL_TARGET_CONE_TEMPLATE", "SPELL_TARGET_CREATURE_TYPE12_DESC", "SPELL_TARGET_CREATURE_TYPE13_DESC", "SPELL_TARGET_CREATURE_TYPE1_DESC", "SPELL_TARGET_CREATURE_TYPE2_DESC", "SPELL_TARGET_CREATURE_TYPE3_DESC", "SPELL_TARGET_CREATURE_TYPE8_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD12_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD13_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD1_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD2_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD3_DESC", "SPELL_TARGET_CREATURE_TYPE_DEAD8_DESC", "SPELL_TARGET_MULTIPLE_TEMPLATE", "SPELL_TARGET_TEMPLATE", "SPELL_TARGET_TYPE0_DESC", "SPELL_TARGET_TYPE10_DESC", "SPELL_TARGET_TYPE11_DESC", "SPELL_TARGET_TYPE12_DESC", "SPELL_TARGET_TYPE13_DESC", "SPELL_TARGET_TYPE14_DESC", "SPELL_TARGET_TYPE15_DESC", "SPELL_TARGET_TYPE16_DESC", "SPELL_TARGET_TYPE17_DESC", "SPELL_TARGET_TYPE1_DESC", "SPELL_TARGET_TYPE2_DESC", "SPELL_TARGET_TYPE3_DESC", "SPELL_TARGET_TYPE4_DESC", "SPELL_TARGET_TYPE5_DESC", "SPELL_TARGET_TYPE6_DESC", "SPELL_TARGET_TYPE7_DESC", "SPELL_TARGET_TYPE8_DESC", "SPELL_TARGET_TYPE9_DESC", "SPELL_TARGET_TYPE_DEAD11_DESC", "SPELL_TARGET_TYPE_DEAD12_DESC", "SPELL_TARGET_TYPE_DEAD13_DESC", "SPELL_TARGET_TYPE_DEAD14_DESC", "SPELL_TARGET_TYPE_DEAD16_DESC", "SPELL_TARGET_TYPE_DEAD17_DESC", "SPELL_TARGET_TYPE_DEAD1_DESC", "SPELL_TARGET_TYPE_DEAD2_DESC", "SPELL_TARGET_TYPE_DEAD3_DESC", "SPELL_TARGET_TYPE_DEAD4_DESC", "SPELL_TARGET_TYPE_DEAD8_DESC", "SPELL_TIMER", "SPELL_TIME_REMAINING_DAYS", "SPELL_TIME_REMAINING_HOURS", "SPELL_TIME_REMAINING_MIN", "SPELL_TIME_REMAINING_SEC", "SPELL_TOTEMS", "SPELL_USE_ALL_ENERGY", "SPELL_USE_ALL_FOCUS", "SPELL_USE_ALL_HEALTH", "SPELL_USE_ALL_MANA", "SPELL_USE_ALL_POWER_DISPLAY", "SPELL_USE_ALL_RAGE", "SPI", "SPIRIT_COLON", "SPIRIT_HEALER_RELEASE_RED", "SPIRIT_TOOLTIP", "STA", "STABLED_PETS", "STABLES", "STABLE_PET_INFO_TEXT", "STABLE_PET_INFO_TOOLTIP_TEXT", "STABLE_SLOT_TEXT", "STACKS", "STAMINA_COLON", "STAMINA_TOOLTIP", "STANDING", "START", "STARTING_PRICE", "STARTUP_TEXT_LINE1", "STARTUP_TEXT_LINE2", "STARTUP_TEXT_LINE3", "STARTUP_TEXT_LINE4", "STATISTICS", "STATS_LABEL", "STATUS", "STATUSTEXT_LABEL", "STATUSTEXT_SUBTEXT", "STATUS_BAR_TEXT", "STATUS_TEXT", "STATUS_TEXT_PARTY", "STATUS_TEXT_PERCENT", "STATUS_TEXT_PET", "STATUS_TEXT_PLAYER", "STATUS_TEXT_TARGET", "STAT_ATTACK_POWER", "STAT_BLOCK", "STAT_BLOCK_TOOLTIP", "STAT_DODGE", "STAT_EXPERTISE", "STAT_FORMAT", "STAT_PARRY", "STAT_RESILIENCE", "STAT_TEMPLATE", "STEREO_HARDWARE_CURSOR", "STEREO_VIDEO_LABEL", "STEREO_VIDEO_SUBTEXT", "STOPWATCH_TIME_UNIT", "STOPWATCH_TITLE", "STOP_AUTO_ATTACK", "STOP_IGNORE", "STR", "STRENGTH_COLON", "STRENGTH_TOOLTIP", "STRING_ENVIRONMENTAL_DAMAGE_DROWNING", "STRING_ENVIRONMENTAL_DAMAGE_FALLING", "STRING_ENVIRONMENTAL_DAMAGE_FATIGUE", "STRING_ENVIRONMENTAL_DAMAGE_FIRE", "STRING_ENVIRONMENTAL_DAMAGE_LAVA", "STRING_ENVIRONMENTAL_DAMAGE_SLIME", "STRING_SCHOOL_ARCANE", "STRING_SCHOOL_CHAOS", "STRING_SCHOOL_CHROMATIC", "STRING_SCHOOL_DIVINE", "STRING_SCHOOL_ELEMENTAL", "STRING_SCHOOL_FIRE", "STRING_SCHOOL_FIRESTORM", "STRING_SCHOOL_FLAMESTRIKE", "STRING_SCHOOL_FROST", "STRING_SCHOOL_FROSTFIRE", "STRING_SCHOOL_FROSTSTORM", "STRING_SCHOOL_FROSTSTRIKE", "STRING_SCHOOL_HOLY", "STRING_SCHOOL_HOLYFIRE", "STRING_SCHOOL_HOLYFROST", "STRING_SCHOOL_HOLYSTORM", "STRING_SCHOOL_HOLYSTRIKE", "STRING_SCHOOL_MAGIC", "STRING_SCHOOL_NATURE", "STRING_SCHOOL_PHYSICAL", "STRING_SCHOOL_SHADOW", "STRING_SCHOOL_SHADOWFLAME", "STRING_SCHOOL_SHADOWFROST", "STRING_SCHOOL_SHADOWHOLY", "STRING_SCHOOL_SHADOWLIGHT", "STRING_SCHOOL_SHADOWSTORM", "STRING_SCHOOL_SHADOWSTRIKE", "STRING_SCHOOL_SPELLFIRE", "STRING_SCHOOL_SPELLFROST", "STRING_SCHOOL_SPELLSHADOW", "STRING_SCHOOL_SPELLSTORM", "STRING_SCHOOL_SPELLSTRIKE", "STRING_SCHOOL_STORMSTRIKE", "STRING_SCHOOL_UNKNOWN", "STUCK_BUTTON2_TEXT", "STUCK_BUTTON_TEXT", "STUN", "STUNNED", "STUN_CAPS", "SUBCATEGORY", "SUBMIT", "SUCCESS", "SUGGESTFRAME_TITLE", "SUGGEST_SUBMITTED", "SUGGEST_SUBMIT_FAILED", "SUGGEST_TOOLTIP_TEXT", "SUMMARY_ACHIEVEMENT_INCOMPLETE", "SUMMARY_ACHIEVEMENT_INCOMPLETE_TEXT", "SUMMON", "SUMMONS", "SWING_DAMAGE_COMBATLOG_TOOLTIP", "SWING_MISSED_COMBATLOG_TOOLTIP", "SYSTEM_DEFAULT", "SYSTEM_MESSAGES", "TABARDSLOT", "TABARDVENDORALREADYSETGREETING", "TABARDVENDORCOST", "TABARDVENDORGREETING", "TABARDVENDORNOGUILDGREETING", "TAKE_ATTACHMENTS", "TAKE_GM_SURVEY", "TALENTS", "TALENTS_BUTTON", "TALENTS_INVOLUNTARILY_RESET", "TALENTS_INVOLUNTARILY_RESET_PET", "TALENT_ACTIVE_SPEC_STATUS", "TALENT_POINTS", "TALENT_POINTS_TOOLTIP", "TALENT_SPECTAB_TOOLTIP_ACTIVE", "TALENT_SPECTAB_TOOLTIP_POINTS_SPENT", "TALENT_SPEC_ACTIVATE", "TALENT_SPEC_PET_PRIMARY", "TALENT_SPEC_PRIMARY", "TALENT_SPEC_PRIMARY_GLYPH", "TALENT_SPEC_SECONDARY", "TALENT_SPEC_SECONDARY_GLYPH", "TALENT_TOOLTIP_ADDPREVIEWPOINT", "TALENT_TOOLTIP_LEARNTALENTGROUP", "TALENT_TOOLTIP_REMOVEPREVIEWPOINT", "TALENT_TOOLTIP_RESETTALENTGROUP", "TALENT_TRAINER", "TAMEABLE", "TAMEABLE_EXOTIC", "TANK", "TARGET", "TARGETFOCUS", "TARGETICONS", "TARGET_ICON_SET", "TARGET_TOKEN_NOT_FOUND", "TASKS_COLON", "TAXINODEYOUAREHERE", "TAXISAMENODE", "TEAM", "TEAM_KICK", "TEAM_LEAVE", "TEAM_PROMOTE", "TEAM_SKILL_TOOLTIP", "TELEPORT_OUT_OF_DUNGEON", "TELEPORT_TO_DUNGEON", "TERRAIN_HIGHLIGHTS", "TERRAIN_MIP", "TEST_TAG_TEST", "TEXTURE_DETAIL", "TEXT_MODE_A", "TEXT_MODE_A_STRING_1", "TEXT_MODE_A_STRING_2", "TEXT_MODE_A_STRING_3", "TEXT_MODE_A_STRING_4", "TEXT_MODE_A_STRING_5", "TEXT_MODE_A_STRING_ACTION", "TEXT_MODE_A_STRING_BRACE_ITEM", "TEXT_MODE_A_STRING_BRACE_SPELL", "TEXT_MODE_A_STRING_BRACE_UNIT", "TEXT_MODE_A_STRING_DEST", "TEXT_MODE_A_STRING_DEST_ICON", "TEXT_MODE_A_STRING_DEST_UNIT", "TEXT_MODE_A_STRING_ITEM", "TEXT_MODE_A_STRING_POSSESSIVE", "TEXT_MODE_A_STRING_POSSESSIVE_STRING", "TEXT_MODE_A_STRING_RESULT", "TEXT_MODE_A_STRING_RESULT_ABSORB", "TEXT_MODE_A_STRING_RESULT_BLOCK", "TEXT_MODE_A_STRING_RESULT_CRITICAL", "TEXT_MODE_A_STRING_RESULT_CRITICAL_SPELL", "TEXT_MODE_A_STRING_RESULT_CRUSHING", "TEXT_MODE_A_STRING_RESULT_FORMAT", "TEXT_MODE_A_STRING_RESULT_GLANCING", "TEXT_MODE_A_STRING_RESULT_OVERHEALING", "TEXT_MODE_A_STRING_RESULT_OVERKILLING", "TEXT_MODE_A_STRING_RESULT_REFLECT", "TEXT_MODE_A_STRING_RESULT_RESIST", "TEXT_MODE_A_STRING_RESULT_VULNERABILITY", "TEXT_MODE_A_STRING_SOURCE", "TEXT_MODE_A_STRING_SOURCE_ICON", "TEXT_MODE_A_STRING_SOURCE_UNIT", "TEXT_MODE_A_STRING_SPELL", "TEXT_MODE_A_STRING_SPELL_EXTRA", "TEXT_MODE_A_STRING_SPELL_EXTRA_LINK", "TEXT_MODE_A_STRING_SPELL_LINK", "TEXT_MODE_A_STRING_TIMESTAMP", "TEXT_MODE_A_STRING_TOKEN_ICON", "TEXT_MODE_A_STRING_VALUE", "TEXT_MODE_A_STRING_VALUE_SCHOOL", "TEXT_MODE_A_STRING_VALUE_TYPE", "TEXT_MODE_A_TIMESTAMP", "THIS_DUNGEON_IN_PROGRESS", "THREAT_TOOLTIP", "TICKET_STATUS", "TICKET_TYPE1", "TICKET_TYPE2", "TICKET_TYPE3", "TICKET_TYPE4", "TIMEMANAGER_12HOUR", "TIMEMANAGER_24HOUR", "TIMEMANAGER_24HOURMODE", "TIMEMANAGER_ALARM_DISABLED", "TIMEMANAGER_ALARM_ENABLED", "TIMEMANAGER_ALARM_MESSAGE", "TIMEMANAGER_ALARM_TIME", "TIMEMANAGER_ALARM_TOOLTIP_TURN_OFF", "TIMEMANAGER_AM", "TIMEMANAGER_LOCALTIME", "TIMEMANAGER_MINUTE", "TIMEMANAGER_PM", "TIMEMANAGER_SHOW_STOPWATCH", "TIMEMANAGER_TICKER_12HOUR", "TIMEMANAGER_TICKER_24HOUR", "TIMEMANAGER_TITLE", "TIMEMANAGER_TOOLTIP_LOCALTIME", "TIMEMANAGER_TOOLTIP_REALMTIME", "TIMEMANAGER_TOOLTIP_TITLE", "TIMESTAMPS_LABEL", "TIMESTAMP_COMBATLOG_TOOLTIP", "TIMESTAMP_FORMAT_HHMM", "TIMESTAMP_FORMAT_HHMMSS", "TIMESTAMP_FORMAT_HHMMSS_24HR", "TIMESTAMP_FORMAT_HHMMSS_AMPM", "TIMESTAMP_FORMAT_HHMM_24HR", "TIMESTAMP_FORMAT_HHMM_AMPM", "TIMESTAMP_FORMAT_NONE", "TIME_DAYHOURMINUTESECOND", "TIME_ELAPSED", "TIME_IN_QUEUE", "TIME_PLAYED_LEVEL", "TIME_PLAYED_MSG", "TIME_PLAYED_TOTAL", "TIME_REMAINING", "TIME_TEMPLATE_LONG", "TIME_TO_PORT", "TIME_TO_PORT_ARENA", "TIME_TWELVEHOURAM", "TIME_TWELVEHOURPM", "TIME_TWENTYFOURHOURS", "TIME_UNIT_DELIMITER", "TIME_UNKNOWN", "TIME_UNTIL_DELETED", "TIME_UNTIL_RETURNED", "TITLE_DOESNT_EXIST", "TITLE_REWARD", "TITLE_TEMPLATE", "TOAST_DURATION_TEXT", "TOGGLESTICKYCAMERA", "TOGGLE_BATTLEFIELDMINIMAP_TOOLTIP", "TOKENS", "TOKEN_MOVE_TO_UNUSED", "TOKEN_OPTIONS", "TOKEN_SHOW_ON_BACKPACK", "TOOLTIP_ARENA_POINTS", "TOOLTIP_HONOR_POINTS", "TOOLTIP_RAID_CLASS_BUTTON", "TOOLTIP_RAID_CONTROL_TIP", "TOOLTIP_RAID_DRAG_TIP", "TOOLTIP_RAID_SHIFT_TIP", "TOOLTIP_TALENT_LEARN", "TOOLTIP_TALENT_NEXT_RANK", "TOOLTIP_TALENT_PREREQ", "TOOLTIP_TALENT_RANK", "TOOLTIP_TALENT_TIER_POINTS", "TOOLTIP_TRACKER_FILTER_ACHIEVEMENTS", "TOOLTIP_TRACKER_FILTER_COMPLETED_QUESTS", "TOOLTIP_TRACKER_FILTER_REMOTE_ZONES", "TOOLTIP_TRACKER_SORT_DIFFICULTY_HIGH", "TOOLTIP_TRACKER_SORT_DIFFICULTY_LOW", "TOOLTIP_TRACKER_SORT_MANUAL", "TOOLTIP_TRACKER_SORT_PROXIMITY", "TOOLTIP_UNIT_LEVEL", "TOOLTIP_UNIT_LEVEL_CLASS", "TOOLTIP_UNIT_LEVEL_CLASS_TYPE", "TOOLTIP_UNIT_LEVEL_RACE_CLASS", "TOOLTIP_UNIT_LEVEL_RACE_CLASS_TYPE", "TOOLTIP_UNIT_LEVEL_TYPE", "TOO_FAR_TO_LOOT", "TOO_MANY_LUA_ERRORS", "TOO_MANY_WATCHED_TOKENS", "TOTAL_MEM_KB_ABBR", "TOTAL_MEM_MB_ABBR", "TRACKER_FILTER_ACHIEVEMENTS", "TRACKER_FILTER_COMPLETED_QUESTS", "TRACKER_FILTER_LABEL", "TRACKER_FILTER_REMOTE_ZONES", "TRACKER_SORT_DIFFICULTY_HIGH", "TRACKER_SORT_DIFFICULTY_LOW", "TRACKER_SORT_LABEL", "TRACKER_SORT_MANUAL", "TRACKER_SORT_MANUAL_BOTTOM", "TRACKER_SORT_MANUAL_DOWN", "TRACKER_SORT_MANUAL_TOP", "TRACKER_SORT_MANUAL_UP", "TRACKER_SORT_MANUAL_WARNING", "TRACKER_SORT_PROXIMITY", "TRACK_ACHIEVEMENT", "TRACK_ACHIEVEMENT_TOOLTIP", "TRACK_QUEST", "TRACK_QUEST_ABBREV", "TRADE", "TRADEFRAME_ENCHANT_SLOT_LABEL", "TRADEFRAME_NOT_MODIFIED_TEXT", "TRADESKILLS", "TRADESKILL_LOG_FIRSTPERSON", "TRADESKILL_LOG_THIRDPERSON", "TRADESKILL_SERVICE_LEARN", "TRADESKILL_SERVICE_PASSIVE", "TRADESKILL_SERVICE_STEP", "TRADE_POTENTIAL_BIND_ENCHANT", "TRADE_SKILLS", "TRADE_SKILL_TITLE", "TRADE_WITH_QUESTION", "TRAIN", "TRAINER_CAST_TIME_INSTANT", "TRAINER_CAST_TIME_MIN", "TRAINER_CAST_TIME_SEC", "TRAINER_COOLDOWN_TIME_INSTANT", "TRAINER_COOLDOWN_TIME_MIN", "TRAINER_COOLDOWN_TIME_SEC", "TRAINER_COST_SP", "TRAINER_COST_SP_RED", "TRAINER_COST_TP", "TRAINER_COST_TP_RED", "TRAINER_LIST_SP", "TRAINER_MANA_COST", "TRAINER_MANA_COST_PER_TIME", "TRAINER_RANGE", "TRAINER_REQ_ABILITY", "TRAINER_REQ_ABILITY_RED", "TRAINER_REQ_LEVEL", "TRAINER_REQ_LEVEL_RED", "TRAINER_REQ_SKILL_RANK", "TRAINER_REQ_SKILL_RANK_RED", "TRANSFER_ABORT_DIFFICULTY1", "TRANSFER_ABORT_DIFFICULTY2", "TRANSFER_ABORT_DIFFICULTY3", "TRANSFER_ABORT_INSUF_EXPAN_LVL1", "TRANSFER_ABORT_INSUF_EXPAN_LVL2", "TRANSFER_ABORT_MAP_NOT_ALLOWED", "TRANSFER_ABORT_MAX_PLAYERS", "TRANSFER_ABORT_NEED_GROUP", "TRANSFER_ABORT_NOT_FOUND", "TRANSFER_ABORT_REALM_ONLY", "TRANSFER_ABORT_TOO_MANY_INSTANCES", "TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES", "TRANSFER_ABORT_UNIQUE_MESSAGE1", "TRANSFER_ABORT_ZONE_IN_COMBAT", "TRILINEAR_FILTERING", "TRINKET0SLOT", "TRINKET0SLOT_UNIQUE", "TRINKET1SLOT", "TRINKET1SLOT_UNIQUE", "TRIPLE_BUFFER", "TRIVIAL_QUEST_DISPLAY", "TURN_IN_ITEMS", "TURN_IN_QUEST", "TUTORIAL1", "TUTORIAL2", "TUTORIAL3", "TUTORIAL4", "TUTORIAL5", "TUTORIAL6", "TUTORIAL7", "TUTORIAL8", "TUTORIAL9", "TUTORIAL10", "TUTORIAL11", "TUTORIAL12", "TUTORIAL13", "TUTORIAL14", "TUTORIAL15", "TUTORIAL16", "TUTORIAL17", "TUTORIAL18", "TUTORIAL19", "TUTORIAL20", "TUTORIAL21", "TUTORIAL22", "TUTORIAL23", "TUTORIAL24", "TUTORIAL25", "TUTORIAL26", "TUTORIAL27", "TUTORIAL28", "TUTORIAL29", "TUTORIAL30", "TUTORIAL31", "TUTORIAL32", "TUTORIAL33", "TUTORIAL34", "TUTORIAL35", "TUTORIAL36", "TUTORIAL37", "TUTORIAL38", "TUTORIAL39", "TUTORIAL40", "TUTORIAL41", "TUTORIAL42", "TUTORIAL43", "TUTORIAL44", "TUTORIAL45", "TUTORIAL46", "TUTORIAL47", "TUTORIAL48", "TUTORIAL49", "TUTORIAL50", "TUTORIAL51", "TUTORIAL52", "TUTORIAL53", "TUTORIAL54", "TUTORIAL55", "TUTORIAL56", "TUTORIAL57", "TUTORIAL58", "TUTORIAL59", "TUTORIAL60", "TUTORIAL61", "TUTORIAL_TITLE1", "TUTORIAL_TITLE2", "TUTORIAL_TITLE3", "TUTORIAL_TITLE4", "TUTORIAL_TITLE5", "TUTORIAL_TITLE6", "TUTORIAL_TITLE7", "TUTORIAL_TITLE8", "TUTORIAL_TITLE9", "TUTORIAL_TITLE10", "TUTORIAL_TITLE11", "TUTORIAL_TITLE12", "TUTORIAL_TITLE13", "TUTORIAL_TITLE14", "TUTORIAL_TITLE15", "TUTORIAL_TITLE16", "TUTORIAL_TITLE17", "TUTORIAL_TITLE18", "TUTORIAL_TITLE19", "TUTORIAL_TITLE20", "TUTORIAL_TITLE21", "TUTORIAL_TITLE22", "TUTORIAL_TITLE23", "TUTORIAL_TITLE24", "TUTORIAL_TITLE25", "TUTORIAL_TITLE26", "TUTORIAL_TITLE27", "TUTORIAL_TITLE28", "TUTORIAL_TITLE29", "TUTORIAL_TITLE30", "TUTORIAL_TITLE31", "TUTORIAL_TITLE32", "TUTORIAL_TITLE33", "TUTORIAL_TITLE34", "TUTORIAL_TITLE35", "TUTORIAL_TITLE36", "TUTORIAL_TITLE37", "TUTORIAL_TITLE38", "TUTORIAL_TITLE39", "TUTORIAL_TITLE40", "TUTORIAL_TITLE41", "TUTORIAL_TITLE42", "TUTORIAL_TITLE43", "TUTORIAL_TITLE44", "TUTORIAL_TITLE45", "TUTORIAL_TITLE46", "TUTORIAL_TITLE47", "TUTORIAL_TITLE48", "TUTORIAL_TITLE49", "TUTORIAL_TITLE50", "TUTORIAL_TITLE51", "TUTORIAL_TITLE52", "TUTORIAL_TITLE53", "TUTORIAL_TITLE54", "TUTORIAL_TITLE55", "TUTORIAL_TITLE56", "TUTORIAL_TITLE57", "TUTORIAL_TITLE58", "TUTORIAL_TITLE59", "TUTORIAL_TITLE60", "TUTORIAL_TITLE61", "TWOHANDEDWEAPONBEINGWIELDED", "TWO_HANDED", "TYPE", "TYPE_LFR_COMMENT_HERE", "UIOPTIONS_MENU", "UI_DEPTH", "UI_HIDDEN", "UI_SCALE", "UKNOWNBEING", "UNABLE_TO_REFUND_ITEM", "UNAVAILABLE", "UNBIND", "UNEXTEND_RAID_LOCK", "UNITFRAME_LABEL", "UNITFRAME_SUBTEXT", "UNITNAME_SUMMON_TITLE1", "UNITNAME_SUMMON_TITLE10", "UNITNAME_SUMMON_TITLE11", "UNITNAME_SUMMON_TITLE12", "UNITNAME_SUMMON_TITLE2", "UNITNAME_SUMMON_TITLE3", "UNITNAME_SUMMON_TITLE4", "UNITNAME_SUMMON_TITLE5", "UNITNAME_SUMMON_TITLE6", "UNITNAME_SUMMON_TITLE7", "UNITNAME_SUMMON_TITLE8", "UNITNAME_SUMMON_TITLE9", "UNITNAME_TITLE", "UNITNAME_TITLE_CHARM", "UNITNAME_TITLE_COMPANION", "UNITNAME_TITLE_CREATION", "UNITNAME_TITLE_GUARDIAN", "UNITNAME_TITLE_MINION", "UNITNAME_TITLE_OPPONENT", "UNITNAME_TITLE_PET", "UNITNAME_TITLE_SQUIRE", "UNIT_COLORS", "UNIT_LETHAL_LEVEL_DEAD_TEMPLATE", "UNIT_LETHAL_LEVEL_TEMPLATE", "UNIT_LEVEL_DEAD_TEMPLATE", "UNIT_LEVEL_TEMPLATE", "UNIT_NAMEPLATES", "UNIT_NAMEPLATES_ALLOW_OVERLAP", "UNIT_NAMEPLATES_SHOW_ENEMIES", "UNIT_NAMEPLATES_SHOW_ENEMY_GUARDIANS", "UNIT_NAMEPLATES_SHOW_ENEMY_PETS", "UNIT_NAMEPLATES_SHOW_ENEMY_TOTEMS", "UNIT_NAMEPLATES_SHOW_FRIENDLY_GUARDIANS", "UNIT_NAMEPLATES_SHOW_FRIENDLY_PETS", "UNIT_NAMEPLATES_SHOW_FRIENDLY_TOTEMS", "UNIT_NAMEPLATES_SHOW_FRIENDS", "UNIT_NAMES", "UNIT_NAMES_COMBATLOG_TOOLTIP", "UNIT_NAMES_SHOW_BRACES_COMBATLOG_TOOLTIP", "UNIT_NAME_ENEMY", "UNIT_NAME_ENEMY_GUARDIANS", "UNIT_NAME_ENEMY_PETS", "UNIT_NAME_ENEMY_TOTEMS", "UNIT_NAME_FRIENDLY", "UNIT_NAME_FRIENDLY_GUARDIANS", "UNIT_NAME_FRIENDLY_PETS", "UNIT_NAME_FRIENDLY_TOTEMS", "UNIT_NAME_GUILD", "UNIT_NAME_NONCOMBAT_CREATURE", "UNIT_NAME_NPC", "UNIT_NAME_OWN", "UNIT_NAME_PLAYER_TITLE", "UNIT_PLUS_LEVEL_TEMPLATE", "UNIT_PVP_NAME", "UNIT_SKINNABLE_BOLTS", "UNIT_SKINNABLE_HERB", "UNIT_SKINNABLE_LEATHER", "UNIT_SKINNABLE_ROCK", "UNIT_TYPE_LETHAL_LEVEL_TEMPLATE", "UNIT_TYPE_LEVEL_TEMPLATE", "UNIT_TYPE_PLUS_LEVEL_TEMPLATE", "UNIT_YOU", "UNIT_YOU_DEST", "UNIT_YOU_DEST_POSSESSIVE", "UNIT_YOU_SOURCE", "UNIT_YOU_SOURCE_POSSESSIVE", "UNKNOWN", "UNKNOWNOBJECT", "UNLEARN", "UNLEARN_SKILL", "UNLEARN_SKILL_TOOLTIP", "UNLIMITED", "UNLIST_ME", "UNLIST_MY_GROUP", "UNLOCK_FOCUS_FRAME", "UNLOCK_WINDOW", "UNMUTE", "UNSPENT_TALENT_POINTS", "UNTRACK_ACHIEVEMENT_TOOLTIP", "UNUSED", "UPDATE", "USABLE_ITEMS", "USE", "USED", "USE_COLON", "USE_COLORBLIND_MODE", "USE_ENGLISH_AUDIO", "USE_EQUIPMENT_MANAGER", "USE_FULL_TEXT_MODE", "USE_GUILDBANK_REPAIR", "USE_ITEM", "USE_NO_DROP", "USE_PERSONAL_FUNDS", "USE_SOULSTONE", "USE_UBERTOOLTIPS", "USE_UISCALE", "USE_WEATHER_SHADER", "VEHICLE_LEAVE", "VEHICLE_STEAM", "VERBAL_HARASSMENT", "VERBAL_HARASSMENT_DESCRIPTION", "VERBAL_HARASSMENT_TEXT1", "VERBAL_HARASSMENT_TEXT2", "VERBAL_HARASSMENT_TEXT3", "VERBAL_HARASSMENT_TEXT4", "VERTEX_ANIMATION_SHADERS", "VERTICAL_SYNC", "VICTORY_TEXT0", "VICTORY_TEXT1", "VICTORY_TEXT_ARENA0", "VICTORY_TEXT_ARENA1", "VICTORY_TEXT_ARENA_DRAW", "VICTORY_TEXT_ARENA_WINS", "VIDEOOPTIONS_MENU", "VIDEO_QUALITY_LABEL1", "VIDEO_QUALITY_LABEL2", "VIDEO_QUALITY_LABEL3", "VIDEO_QUALITY_LABEL4", "VIDEO_QUALITY_LABEL5", "VIDEO_QUALITY_LABEL6", "VIDEO_QUALITY_S", "VIDEO_QUALITY_SUBTEXT1", "VIDEO_QUALITY_SUBTEXT2", "VIDEO_QUALITY_SUBTEXT3", "VIDEO_QUALITY_SUBTEXT4", "VIDEO_QUALITY_SUBTEXT5", "VIDEO_QUALITY_SUBTEXT6", "VIEW_FRIENDS_OF_FRIENDS", "VOICE", "VOICECHAT_DISABLED", "VOICECHAT_DISABLED_TEXT", "VOICEMACRO_0_Dw_0", "VOICEMACRO_0_Dw_0_FEMALE", "VOICEMACRO_0_Dw_1", "VOICEMACRO_0_Dw_1_FEMALE", "VOICEMACRO_0_Gn_0", "VOICEMACRO_0_Gn_0_FEMALE", "VOICEMACRO_0_Gn_1", "VOICEMACRO_0_Gn_1_FEMALE", "VOICEMACRO_0_Gn_2_FEMALE", "VOICEMACRO_0_Hu_0", "VOICEMACRO_0_Hu_0_FEMALE", "VOICEMACRO_0_Hu_1", "VOICEMACRO_0_Hu_1_FEMALE", "VOICEMACRO_0_Ni_0", "VOICEMACRO_0_Ni_0_FEMALE", "VOICEMACRO_0_Ni_1", "VOICEMACRO_0_Ni_1_FEMALE", "VOICEMACRO_0_Ni_2", "VOICEMACRO_0_Or_0", "VOICEMACRO_0_Or_0_FEMALE", "VOICEMACRO_0_Or_1", "VOICEMACRO_0_Or_1_FEMALE", "VOICEMACRO_0_Sc_0", "VOICEMACRO_0_Sc_0_FEMALE", "VOICEMACRO_0_Sc_1", "VOICEMACRO_0_Sc_1_FEMALE", "VOICEMACRO_0_Ta_0", "VOICEMACRO_0_Ta_0_FEMALE", "VOICEMACRO_0_Ta_1", "VOICEMACRO_0_Ta_1_FEMALE", "VOICEMACRO_0_Ta_2", "VOICEMACRO_0_Tr_0", "VOICEMACRO_0_Tr_0_FEMALE", "VOICEMACRO_0_Tr_1", "VOICEMACRO_0_Tr_1_FEMALE", "VOICEMACRO_10_Dw_0", "VOICEMACRO_10_Dw_0_FEMALE", "VOICEMACRO_10_Dw_1", "VOICEMACRO_10_Dw_1_FEMALE", "VOICEMACRO_10_Gn_0", "VOICEMACRO_10_Gn_0_FEMALE", "VOICEMACRO_10_Gn_1", "VOICEMACRO_10_Gn_1_FEMALE", "VOICEMACRO_10_Hu_0", "VOICEMACRO_10_Hu_0_FEMALE", "VOICEMACRO_10_Hu_1", "VOICEMACRO_10_Hu_1_FEMALE", "VOICEMACRO_10_Ni_0", "VOICEMACRO_10_Ni_0_FEMALE", "VOICEMACRO_10_Ni_1", "VOICEMACRO_10_Ni_1_FEMALE", "VOICEMACRO_10_Or_0", "VOICEMACRO_10_Or_0_FEMALE", "VOICEMACRO_10_Or_1", "VOICEMACRO_10_Or_1_FEMALE", "VOICEMACRO_10_Or_2_FEMALE", "VOICEMACRO_10_Sc_0", "VOICEMACRO_10_Sc_0_FEMALE", "VOICEMACRO_10_Sc_1", "VOICEMACRO_10_Sc_1_FEMALE", "VOICEMACRO_10_Ta_0", "VOICEMACRO_10_Ta_0_FEMALE", "VOICEMACRO_10_Ta_1", "VOICEMACRO_10_Ta_1_FEMALE", "VOICEMACRO_10_Tr_0", "VOICEMACRO_10_Tr_0_FEMALE", "VOICEMACRO_10_Tr_1", "VOICEMACRO_10_Tr_1_FEMALE", "VOICEMACRO_12_Dw_0", "VOICEMACRO_12_Dw_0_FEMALE", "VOICEMACRO_12_Dw_1", "VOICEMACRO_12_Dw_1_FEMALE", "VOICEMACRO_12_Dw_2", "VOICEMACRO_12_Dw_2_FEMALE", "VOICEMACRO_12_Dw_3", "VOICEMACRO_12_Gn_0", "VOICEMACRO_12_Gn_0_FEMALE", "VOICEMACRO_12_Gn_1", "VOICEMACRO_12_Gn_1_FEMALE", "VOICEMACRO_12_Gn_2", "VOICEMACRO_12_Gn_2_FEMALE", "VOICEMACRO_12_Gn_3", "VOICEMACRO_12_Hu_0", "VOICEMACRO_12_Hu_0_FEMALE", "VOICEMACRO_12_Hu_1", "VOICEMACRO_12_Hu_1_FEMALE", "VOICEMACRO_12_Hu_2", "VOICEMACRO_12_Hu_2_FEMALE", "VOICEMACRO_12_Hu_3", "VOICEMACRO_12_Ni_0", "VOICEMACRO_12_Ni_0_FEMALE", "VOICEMACRO_12_Ni_1", "VOICEMACRO_12_Ni_1_FEMALE", "VOICEMACRO_12_Ni_2", "VOICEMACRO_12_Ni_2_FEMALE", "VOICEMACRO_12_Ni_3_FEMALE", "VOICEMACRO_12_Or_0", "VOICEMACRO_12_Or_0_FEMALE", "VOICEMACRO_12_Or_1", "VOICEMACRO_12_Or_1_FEMALE", "VOICEMACRO_12_Or_2", "VOICEMACRO_12_Or_2_FEMALE", "VOICEMACRO_12_Sc_0", "VOICEMACRO_12_Sc_0_FEMALE", "VOICEMACRO_12_Sc_1", "VOICEMACRO_12_Sc_1_FEMALE", "VOICEMACRO_12_Sc_2", "VOICEMACRO_12_Sc_2_FEMALE", "VOICEMACRO_12_Ta_0", "VOICEMACRO_12_Ta_0_FEMALE", "VOICEMACRO_12_Ta_1", "VOICEMACRO_12_Ta_1_FEMALE", "VOICEMACRO_12_Ta_2", "VOICEMACRO_12_Ta_2_FEMALE", "VOICEMACRO_12_Tr_0", "VOICEMACRO_12_Tr_0_FEMALE", "VOICEMACRO_12_Tr_1", "VOICEMACRO_12_Tr_1_FEMALE", "VOICEMACRO_12_Tr_2", "VOICEMACRO_12_Tr_2_FEMALE", "VOICEMACRO_13_Dw_0", "VOICEMACRO_13_Dw_0_FEMALE", "VOICEMACRO_13_Dw_1", "VOICEMACRO_13_Dw_1_FEMALE", "VOICEMACRO_13_Dw_2", "VOICEMACRO_13_Dw_2_FEMALE", "VOICEMACRO_13_Gn_0", "VOICEMACRO_13_Gn_0_FEMALE", "VOICEMACRO_13_Gn_1", "VOICEMACRO_13_Gn_1_FEMALE", "VOICEMACRO_13_Gn_2", "VOICEMACRO_13_Gn_2_FEMALE", "VOICEMACRO_13_Gn_3", "VOICEMACRO_13_Gn_3_FEMALE", "VOICEMACRO_13_Hu_0", "VOICEMACRO_13_Hu_0_FEMALE", "VOICEMACRO_13_Hu_1", "VOICEMACRO_13_Hu_1_FEMALE", "VOICEMACRO_13_Hu_2", "VOICEMACRO_13_Hu_2_FEMALE", "VOICEMACRO_13_Ni_0", "VOICEMACRO_13_Ni_0_FEMALE", "VOICEMACRO_13_Ni_1", "VOICEMACRO_13_Ni_1_FEMALE", "VOICEMACRO_13_Ni_2", "VOICEMACRO_13_Ni_2_FEMALE", "VOICEMACRO_13_Or_0", "VOICEMACRO_13_Or_0_FEMALE", "VOICEMACRO_13_Or_1", "VOICEMACRO_13_Or_1_FEMALE", "VOICEMACRO_13_Or_2", "VOICEMACRO_13_Or_2_FEMALE", "VOICEMACRO_13_Sc_0", "VOICEMACRO_13_Sc_0_FEMALE", "VOICEMACRO_13_Sc_1", "VOICEMACRO_13_Sc_1_FEMALE", "VOICEMACRO_13_Sc_2", "VOICEMACRO_13_Sc_2_FEMALE", "VOICEMACRO_13_Ta_0", "VOICEMACRO_13_Ta_0_FEMALE", "VOICEMACRO_13_Ta_1", "VOICEMACRO_13_Ta_1_FEMALE", "VOICEMACRO_13_Ta_2", "VOICEMACRO_13_Ta_2_FEMALE", "VOICEMACRO_13_Tr_0", "VOICEMACRO_13_Tr_0_FEMALE", "VOICEMACRO_13_Tr_1", "VOICEMACRO_13_Tr_1_FEMALE", "VOICEMACRO_13_Tr_2", "VOICEMACRO_13_Tr_2_FEMALE", "VOICEMACRO_14_Dw_0", "VOICEMACRO_14_Dw_0_FEMALE", "VOICEMACRO_14_Dw_1", "VOICEMACRO_14_Dw_1_FEMALE", "VOICEMACRO_14_Dw_2", "VOICEMACRO_14_Dw_2_FEMALE", "VOICEMACRO_14_Dw_3", "VOICEMACRO_14_Gn_0", "VOICEMACRO_14_Gn_0_FEMALE", "VOICEMACRO_14_Gn_1", "VOICEMACRO_14_Gn_1_FEMALE", "VOICEMACRO_14_Gn_2", "VOICEMACRO_14_Gn_2_FEMALE", "VOICEMACRO_14_Hu_0", "VOICEMACRO_14_Hu_0_FEMALE", "VOICEMACRO_14_Hu_1", "VOICEMACRO_14_Hu_1_FEMALE", "VOICEMACRO_14_Hu_2", "VOICEMACRO_14_Hu_2_FEMALE", "VOICEMACRO_14_Ni_0", "VOICEMACRO_14_Ni_0_FEMALE", "VOICEMACRO_14_Ni_1", "VOICEMACRO_14_Ni_1_FEMALE", "VOICEMACRO_14_Ni_2", "VOICEMACRO_14_Ni_2_FEMALE", "VOICEMACRO_14_Or_0", "VOICEMACRO_14_Or_0_FEMALE", "VOICEMACRO_14_Or_1", "VOICEMACRO_14_Or_1_FEMALE", "VOICEMACRO_14_Or_2", "VOICEMACRO_14_Or_2_FEMALE", "VOICEMACRO_14_Or_3", "VOICEMACRO_14_Or_3_FEMALE", "VOICEMACRO_14_Sc_0", "VOICEMACRO_14_Sc_0_FEMALE", "VOICEMACRO_14_Sc_1", "VOICEMACRO_14_Sc_1_FEMALE", "VOICEMACRO_14_Sc_2", "VOICEMACRO_14_Sc_2_FEMALE", "VOICEMACRO_14_Ta_0", "VOICEMACRO_14_Ta_0_FEMALE", "VOICEMACRO_14_Ta_1", "VOICEMACRO_14_Ta_1_FEMALE", "VOICEMACRO_14_Ta_2", "VOICEMACRO_14_Ta_2_FEMALE", "VOICEMACRO_14_Tr_0", "VOICEMACRO_14_Tr_0_FEMALE", "VOICEMACRO_14_Tr_1", "VOICEMACRO_14_Tr_1_FEMALE", "VOICEMACRO_14_Tr_2", "VOICEMACRO_14_Tr_2_FEMALE", "VOICEMACRO_14_Tr_3", "VOICEMACRO_15_Dw_0", "VOICEMACRO_15_Dw_0_FEMALE", "VOICEMACRO_15_Dw_1", "VOICEMACRO_15_Dw_1_FEMALE", "VOICEMACRO_15_Dw_2", "VOICEMACRO_15_Dw_2_FEMALE", "VOICEMACRO_15_Dw_3", "VOICEMACRO_15_Gn_0", "VOICEMACRO_15_Gn_0_FEMALE", "VOICEMACRO_15_Gn_1", "VOICEMACRO_15_Gn_1_FEMALE", "VOICEMACRO_15_Gn_2", "VOICEMACRO_15_Gn_2_FEMALE", "VOICEMACRO_15_Hu_0", "VOICEMACRO_15_Hu_0_FEMALE", "VOICEMACRO_15_Hu_1", "VOICEMACRO_15_Hu_1_FEMALE", "VOICEMACRO_15_Hu_2", "VOICEMACRO_15_Hu_2_FEMALE", "VOICEMACRO_15_Hu_3", "VOICEMACRO_15_Ni_0", "VOICEMACRO_15_Ni_0_FEMALE", "VOICEMACRO_15_Ni_1", "VOICEMACRO_15_Ni_1_FEMALE", "VOICEMACRO_15_Ni_2", "VOICEMACRO_15_Ni_2_FEMALE", "VOICEMACRO_15_Or_0", "VOICEMACRO_15_Or_0_FEMALE", "VOICEMACRO_15_Or_1", "VOICEMACRO_15_Or_1_FEMALE", "VOICEMACRO_15_Or_2", "VOICEMACRO_15_Or_2_FEMALE", "VOICEMACRO_15_Sc_0", "VOICEMACRO_15_Sc_0_FEMALE", "VOICEMACRO_15_Sc_1", "VOICEMACRO_15_Sc_1_FEMALE", "VOICEMACRO_15_Sc_2", "VOICEMACRO_15_Sc_2_FEMALE", "VOICEMACRO_15_Ta_0", "VOICEMACRO_15_Ta_0_FEMALE", "VOICEMACRO_15_Ta_1", "VOICEMACRO_15_Ta_1_FEMALE", "VOICEMACRO_15_Ta_2", "VOICEMACRO_15_Ta_2_FEMALE", "VOICEMACRO_15_Tr_0", "VOICEMACRO_15_Tr_0_FEMALE", "VOICEMACRO_15_Tr_1", "VOICEMACRO_15_Tr_1_FEMALE", "VOICEMACRO_15_Tr_2", "VOICEMACRO_15_Tr_2_FEMALE", "VOICEMACRO_15_Tr_3", "VOICEMACRO_16_Dw_0", "VOICEMACRO_16_Dw_0_FEMALE", "VOICEMACRO_16_Dw_1", "VOICEMACRO_16_Dw_1_FEMALE", "VOICEMACRO_16_Dw_2", "VOICEMACRO_16_Dw_2_FEMALE", "VOICEMACRO_16_Dw_3", "VOICEMACRO_16_Dw_3_FEMALE", "VOICEMACRO_16_Gn_0", "VOICEMACRO_16_Gn_0_FEMALE", "VOICEMACRO_16_Gn_1", "VOICEMACRO_16_Gn_1_FEMALE", "VOICEMACRO_16_Gn_2", "VOICEMACRO_16_Gn_2_FEMALE", "VOICEMACRO_16_Hu_0", "VOICEMACRO_16_Hu_0_FEMALE", "VOICEMACRO_16_Hu_1", "VOICEMACRO_16_Hu_1_FEMALE", "VOICEMACRO_16_Hu_2", "VOICEMACRO_16_Hu_2_FEMALE", "VOICEMACRO_16_Ni_0", "VOICEMACRO_16_Ni_0_FEMALE", "VOICEMACRO_16_Ni_1", "VOICEMACRO_16_Ni_1_FEMALE", "VOICEMACRO_16_Ni_2", "VOICEMACRO_16_Ni_2_FEMALE", "VOICEMACRO_16_Or_0", "VOICEMACRO_16_Or_0_FEMALE", "VOICEMACRO_16_Or_1", "VOICEMACRO_16_Or_1_FEMALE", "VOICEMACRO_16_Or_2", "VOICEMACRO_16_Or_2_FEMALE", "VOICEMACRO_16_Sc_0", "VOICEMACRO_16_Sc_0_FEMALE", "VOICEMACRO_16_Sc_1", "VOICEMACRO_16_Sc_1_FEMALE", "VOICEMACRO_16_Sc_2", "VOICEMACRO_16_Sc_2_FEMALE", "VOICEMACRO_16_Ta_0", "VOICEMACRO_16_Ta_0_FEMALE", "VOICEMACRO_16_Ta_1", "VOICEMACRO_16_Ta_1_FEMALE", "VOICEMACRO_16_Ta_2", "VOICEMACRO_16_Ta_2_FEMALE", "VOICEMACRO_16_Ta_3", "VOICEMACRO_16_Tr_0", "VOICEMACRO_16_Tr_0_FEMALE", "VOICEMACRO_16_Tr_1", "VOICEMACRO_16_Tr_1_FEMALE", "VOICEMACRO_16_Tr_2", "VOICEMACRO_16_Tr_2_FEMALE", "VOICEMACRO_17_Dw_0", "VOICEMACRO_17_Dw_0_FEMALE", "VOICEMACRO_17_Dw_1", "VOICEMACRO_17_Dw_1_FEMALE", "VOICEMACRO_17_Dw_2", "VOICEMACRO_17_Dw_2_FEMALE", "VOICEMACRO_17_Gn_0", "VOICEMACRO_17_Gn_0_FEMALE", "VOICEMACRO_17_Gn_1", "VOICEMACRO_17_Gn_1_FEMALE", "VOICEMACRO_17_Gn_2", "VOICEMACRO_17_Gn_2_FEMALE", "VOICEMACRO_17_Hu_0", "VOICEMACRO_17_Hu_0_FEMALE", "VOICEMACRO_17_Hu_1", "VOICEMACRO_17_Hu_1_FEMALE", "VOICEMACRO_17_Hu_2", "VOICEMACRO_17_Hu_2_FEMALE", "VOICEMACRO_17_Ni_0", "VOICEMACRO_17_Ni_0_FEMALE", "VOICEMACRO_17_Ni_1", "VOICEMACRO_17_Ni_1_FEMALE", "VOICEMACRO_17_Ni_2", "VOICEMACRO_17_Ni_2_FEMALE", "VOICEMACRO_17_Or_0", "VOICEMACRO_17_Or_0_FEMALE", "VOICEMACRO_17_Or_1", "VOICEMACRO_17_Or_1_FEMALE", "VOICEMACRO_17_Or_2", "VOICEMACRO_17_Or_2_FEMALE", "VOICEMACRO_17_Sc_0", "VOICEMACRO_17_Sc_0_FEMALE", "VOICEMACRO_17_Sc_1", "VOICEMACRO_17_Sc_1_FEMALE", "VOICEMACRO_17_Sc_2_FEMALE", "VOICEMACRO_17_Ta_0", "VOICEMACRO_17_Ta_0_FEMALE", "VOICEMACRO_17_Ta_1", "VOICEMACRO_17_Ta_1_FEMALE", "VOICEMACRO_17_Ta_2", "VOICEMACRO_17_Ta_2_FEMALE", "VOICEMACRO_17_Tr_0", "VOICEMACRO_17_Tr_0_FEMALE", "VOICEMACRO_17_Tr_1", "VOICEMACRO_17_Tr_1_FEMALE", "VOICEMACRO_17_Tr_2", "VOICEMACRO_17_Tr_2_FEMALE", "VOICEMACRO_18_Dw_0", "VOICEMACRO_18_Dw_0_FEMALE", "VOICEMACRO_18_Dw_1", "VOICEMACRO_18_Dw_1_FEMALE", "VOICEMACRO_18_Dw_2", "VOICEMACRO_18_Dw_2_FEMALE", "VOICEMACRO_18_Dw_3", "VOICEMACRO_18_Dw_3_FEMALE", "VOICEMACRO_18_Dw_4", "VOICEMACRO_18_Gn_0", "VOICEMACRO_18_Gn_0_FEMALE", "VOICEMACRO_18_Gn_1", "VOICEMACRO_18_Gn_1_FEMALE", "VOICEMACRO_18_Gn_2", "VOICEMACRO_18_Gn_2_FEMALE", "VOICEMACRO_18_Gn_3_FEMALE", "VOICEMACRO_18_Hu_0", "VOICEMACRO_18_Hu_0_FEMALE", "VOICEMACRO_18_Hu_1", "VOICEMACRO_18_Hu_1_FEMALE", "VOICEMACRO_18_Hu_2", "VOICEMACRO_18_Hu_2_FEMALE", "VOICEMACRO_18_Ni_0", "VOICEMACRO_18_Ni_0_FEMALE", "VOICEMACRO_18_Ni_1", "VOICEMACRO_18_Ni_1_FEMALE", "VOICEMACRO_18_Ni_2", "VOICEMACRO_18_Ni_2_FEMALE", "VOICEMACRO_18_Or_0", "VOICEMACRO_18_Or_0_FEMALE", "VOICEMACRO_18_Or_1", "VOICEMACRO_18_Or_1_FEMALE", "VOICEMACRO_18_Or_2", "VOICEMACRO_18_Or_2_FEMALE", "VOICEMACRO_18_Sc_0", "VOICEMACRO_18_Sc_0_FEMALE", "VOICEMACRO_18_Sc_1", "VOICEMACRO_18_Sc_1_FEMALE", "VOICEMACRO_18_Sc_2", "VOICEMACRO_18_Sc_2_FEMALE", "VOICEMACRO_18_Sc_3_FEMALE", "VOICEMACRO_18_Ta_0", "VOICEMACRO_18_Ta_0_FEMALE", "VOICEMACRO_18_Ta_1", "VOICEMACRO_18_Ta_1_FEMALE", "VOICEMACRO_18_Ta_2", "VOICEMACRO_18_Ta_2_FEMALE", "VOICEMACRO_18_Tr_0", "VOICEMACRO_18_Tr_0_FEMALE", "VOICEMACRO_18_Tr_1", "VOICEMACRO_18_Tr_1_FEMALE", "VOICEMACRO_18_Tr_2", "VOICEMACRO_18_Tr_2_FEMALE", "VOICEMACRO_19_Dw_0", "VOICEMACRO_19_Dw_0_FEMALE", "VOICEMACRO_19_Dw_1", "VOICEMACRO_19_Dw_1_FEMALE", "VOICEMACRO_19_Dw_2", "VOICEMACRO_19_Dw_2_FEMALE", "VOICEMACRO_19_Dw_3", "VOICEMACRO_19_Dw_3_FEMALE", "VOICEMACRO_19_Dw_4", "VOICEMACRO_19_Dw_4_FEMALE", "VOICEMACRO_19_Dw_5", "VOICEMACRO_19_Gn_0", "VOICEMACRO_19_Gn_0_FEMALE", "VOICEMACRO_19_Gn_1", "VOICEMACRO_19_Gn_1_FEMALE", "VOICEMACRO_19_Gn_2", "VOICEMACRO_19_Gn_2_FEMALE", "VOICEMACRO_19_Gn_3", "VOICEMACRO_19_Gn_3_FEMALE", "VOICEMACRO_19_Gn_4_FEMALE", "VOICEMACRO_19_Hu_0", "VOICEMACRO_19_Hu_0_FEMALE", "VOICEMACRO_19_Hu_1", "VOICEMACRO_19_Hu_1_FEMALE", "VOICEMACRO_19_Hu_2", "VOICEMACRO_19_Hu_2_FEMALE", "VOICEMACRO_19_Hu_3", "VOICEMACRO_19_Hu_4", "VOICEMACRO_19_Hu_5", "VOICEMACRO_19_Ni_0", "VOICEMACRO_19_Ni_0_FEMALE", "VOICEMACRO_19_Ni_1", "VOICEMACRO_19_Ni_1_FEMALE", "VOICEMACRO_19_Ni_2", "VOICEMACRO_19_Ni_2_FEMALE", "VOICEMACRO_19_Ni_3", "VOICEMACRO_19_Ni_3_FEMALE", "VOICEMACRO_19_Ni_4", "VOICEMACRO_19_Or_0", "VOICEMACRO_19_Or_0_FEMALE", "VOICEMACRO_19_Or_1", "VOICEMACRO_19_Or_1_FEMALE", "VOICEMACRO_19_Or_2", "VOICEMACRO_19_Or_2_FEMALE", "VOICEMACRO_19_Or_3", "VOICEMACRO_19_Or_3_FEMALE", "VOICEMACRO_19_Or_4", "VOICEMACRO_19_Or_4_FEMALE", "VOICEMACRO_19_Or_5", "VOICEMACRO_19_Or_5_FEMALE", "VOICEMACRO_19_Sc_0", "VOICEMACRO_19_Sc_0_FEMALE", "VOICEMACRO_19_Sc_1", "VOICEMACRO_19_Sc_1_FEMALE", "VOICEMACRO_19_Sc_2", "VOICEMACRO_19_Sc_2_FEMALE", "VOICEMACRO_19_Sc_3", "VOICEMACRO_19_Sc_3_FEMALE", "VOICEMACRO_19_Sc_4", "VOICEMACRO_19_Sc_4_FEMALE", "VOICEMACRO_19_Sc_5", "VOICEMACRO_19_Sc_5_FEMALE", "VOICEMACRO_19_Ta_0", "VOICEMACRO_19_Ta_0_FEMALE", "VOICEMACRO_19_Ta_1", "VOICEMACRO_19_Ta_1_FEMALE", "VOICEMACRO_19_Ta_2", "VOICEMACRO_19_Ta_2_FEMALE", "VOICEMACRO_19_Ta_3", "VOICEMACRO_19_Ta_3_FEMALE", "VOICEMACRO_19_Ta_4", "VOICEMACRO_19_Ta_4_FEMALE", "VOICEMACRO_19_Ta_5", "VOICEMACRO_19_Tr_0", "VOICEMACRO_19_Tr_0_FEMALE", "VOICEMACRO_19_Tr_1", "VOICEMACRO_19_Tr_1_FEMALE", "VOICEMACRO_19_Tr_2", "VOICEMACRO_19_Tr_2_FEMALE", "VOICEMACRO_19_Tr_3", "VOICEMACRO_19_Tr_3_FEMALE", "VOICEMACRO_19_Tr_4_FEMALE", "VOICEMACRO_1_Dw_0", "VOICEMACRO_1_Dw_0_FEMALE", "VOICEMACRO_1_Dw_1", "VOICEMACRO_1_Dw_1_FEMALE", "VOICEMACRO_1_Gn_0", "VOICEMACRO_1_Gn_0_FEMALE", "VOICEMACRO_1_Hu_0", "VOICEMACRO_1_Hu_0_FEMALE", "VOICEMACRO_1_Hu_1", "VOICEMACRO_1_Hu_1_FEMALE", "VOICEMACRO_1_Ni_0", "VOICEMACRO_1_Ni_0_FEMALE", "VOICEMACRO_1_Ni_1", "VOICEMACRO_1_Ni_1_FEMALE", "VOICEMACRO_1_Or_0", "VOICEMACRO_1_Or_0_FEMALE", "VOICEMACRO_1_Or_1", "VOICEMACRO_1_Or_1_FEMALE", "VOICEMACRO_1_Or_2", "VOICEMACRO_1_Sc_0", "VOICEMACRO_1_Sc_0_FEMALE", "VOICEMACRO_1_Sc_1", "VOICEMACRO_1_Sc_1_FEMALE", "VOICEMACRO_1_Ta_0", "VOICEMACRO_1_Ta_0_FEMALE", "VOICEMACRO_1_Ta_1", "VOICEMACRO_1_Ta_1_FEMALE", "VOICEMACRO_1_Ta_2_FEMALE", "VOICEMACRO_1_Tr_0", "VOICEMACRO_1_Tr_0_FEMALE", "VOICEMACRO_1_Tr_1", "VOICEMACRO_1_Tr_1_FEMALE", "VOICEMACRO_20_Dw_0", "VOICEMACRO_20_Dw_0_FEMALE", "VOICEMACRO_20_Dw_1", "VOICEMACRO_20_Dw_1_FEMALE", "VOICEMACRO_20_Dw_2", "VOICEMACRO_20_Dw_2_FEMALE", "VOICEMACRO_20_Dw_3", "VOICEMACRO_20_Dw_3_FEMALE", "VOICEMACRO_20_Dw_4", "VOICEMACRO_20_Dw_4_FEMALE", "VOICEMACRO_20_Dw_5", "VOICEMACRO_20_Dw_5_FEMALE", "VOICEMACRO_20_Dw_6", "VOICEMACRO_20_Gn_0", "VOICEMACRO_20_Gn_0_FEMALE", "VOICEMACRO_20_Gn_1", "VOICEMACRO_20_Gn_1_FEMALE", "VOICEMACRO_20_Gn_2", "VOICEMACRO_20_Gn_2_FEMALE", "VOICEMACRO_20_Gn_3", "VOICEMACRO_20_Gn_3_FEMALE", "VOICEMACRO_20_Gn_4", "VOICEMACRO_20_Gn_5", "VOICEMACRO_20_Hu_0", "VOICEMACRO_20_Hu_0_FEMALE", "VOICEMACRO_20_Hu_1", "VOICEMACRO_20_Hu_1_FEMALE", "VOICEMACRO_20_Hu_2", "VOICEMACRO_20_Hu_2_FEMALE", "VOICEMACRO_20_Hu_3", "VOICEMACRO_20_Hu_3_FEMALE", "VOICEMACRO_20_Hu_4", "VOICEMACRO_20_Hu_4_FEMALE", "VOICEMACRO_20_Hu_5", "VOICEMACRO_20_Hu_5_FEMALE", "VOICEMACRO_20_Hu_6_FEMALE", "VOICEMACRO_20_Ni_0", "VOICEMACRO_20_Ni_0_FEMALE", "VOICEMACRO_20_Ni_1", "VOICEMACRO_20_Ni_1_FEMALE", "VOICEMACRO_20_Ni_2", "VOICEMACRO_20_Ni_2_FEMALE", "VOICEMACRO_20_Ni_3", "VOICEMACRO_20_Ni_3_FEMALE", "VOICEMACRO_20_Ni_4", "VOICEMACRO_20_Ni_4_FEMALE", "VOICEMACRO_20_Ni_5", "VOICEMACRO_20_Ni_6", "VOICEMACRO_20_Ni_7", "VOICEMACRO_20_Or_0", "VOICEMACRO_20_Or_0_FEMALE", "VOICEMACRO_20_Or_1", "VOICEMACRO_20_Or_1_FEMALE", "VOICEMACRO_20_Or_2", "VOICEMACRO_20_Or_2_FEMALE", "VOICEMACRO_20_Or_3", "VOICEMACRO_20_Or_3_FEMALE", "VOICEMACRO_20_Or_4", "VOICEMACRO_20_Or_4_FEMALE", "VOICEMACRO_20_Or_5", "VOICEMACRO_20_Or_5_FEMALE", "VOICEMACRO_20_Sc_0", "VOICEMACRO_20_Sc_0_FEMALE", "VOICEMACRO_20_Sc_1", "VOICEMACRO_20_Sc_1_FEMALE", "VOICEMACRO_20_Sc_2", "VOICEMACRO_20_Sc_2_FEMALE", "VOICEMACRO_20_Sc_3", "VOICEMACRO_20_Sc_3_FEMALE", "VOICEMACRO_20_Sc_4", "VOICEMACRO_20_Sc_4_FEMALE", "VOICEMACRO_20_Sc_5_FEMALE", "VOICEMACRO_20_Sc_6_FEMALE", "VOICEMACRO_20_Sc_7_FEMALE", "VOICEMACRO_20_Ta_0", "VOICEMACRO_20_Ta_0_FEMALE", "VOICEMACRO_20_Ta_1", "VOICEMACRO_20_Ta_1_FEMALE", "VOICEMACRO_20_Ta_2", "VOICEMACRO_20_Ta_2_FEMALE", "VOICEMACRO_20_Ta_3", "VOICEMACRO_20_Ta_3_FEMALE", "VOICEMACRO_20_Ta_4", "VOICEMACRO_20_Tr_0", "VOICEMACRO_20_Tr_0_FEMALE", "VOICEMACRO_20_Tr_1", "VOICEMACRO_20_Tr_1_FEMALE", "VOICEMACRO_20_Tr_2", "VOICEMACRO_20_Tr_2_FEMALE", "VOICEMACRO_20_Tr_3", "VOICEMACRO_20_Tr_3_FEMALE", "VOICEMACRO_20_Tr_4", "VOICEMACRO_20_Tr_4_FEMALE", "VOICEMACRO_20_Tr_5", "VOICEMACRO_2_Dw_0", "VOICEMACRO_2_Dw_0_FEMALE", "VOICEMACRO_2_Dw_1", "VOICEMACRO_2_Dw_1_FEMALE", "VOICEMACRO_2_Gn_0", "VOICEMACRO_2_Gn_0_FEMALE", "VOICEMACRO_2_Gn_1", "VOICEMACRO_2_Gn_1_FEMALE", "VOICEMACRO_2_Gn_2", "VOICEMACRO_2_Hu_0", "VOICEMACRO_2_Hu_0_FEMALE", "VOICEMACRO_2_Hu_1", "VOICEMACRO_2_Hu_1_FEMALE", "VOICEMACRO_2_Ni_0", "VOICEMACRO_2_Ni_0_FEMALE", "VOICEMACRO_2_Ni_1", "VOICEMACRO_2_Ni_1_FEMALE", "VOICEMACRO_2_Ni_2_FEMALE", "VOICEMACRO_2_Or_0", "VOICEMACRO_2_Or_0_FEMALE", "VOICEMACRO_2_Or_1", "VOICEMACRO_2_Or_1_FEMALE", "VOICEMACRO_2_Or_2", "VOICEMACRO_2_Or_2_FEMALE", "VOICEMACRO_2_Sc_0", "VOICEMACRO_2_Sc_0_FEMALE", "VOICEMACRO_2_Sc_1", "VOICEMACRO_2_Sc_1_FEMALE", "VOICEMACRO_2_Ta_0", "VOICEMACRO_2_Ta_0_FEMALE", "VOICEMACRO_2_Ta_1", "VOICEMACRO_2_Ta_1_FEMALE", "VOICEMACRO_2_Ta_2", "VOICEMACRO_2_Tr_0", "VOICEMACRO_2_Tr_0_FEMALE", "VOICEMACRO_2_Tr_1", "VOICEMACRO_2_Tr_1_FEMALE", "VOICEMACRO_3_Dw_0", "VOICEMACRO_3_Dw_0_FEMALE", "VOICEMACRO_3_Dw_1", "VOICEMACRO_3_Dw_1_FEMALE", "VOICEMACRO_3_Dw_2", "VOICEMACRO_3_Gn_0", "VOICEMACRO_3_Gn_0_FEMALE", "VOICEMACRO_3_Gn_1", "VOICEMACRO_3_Gn_1_FEMALE", "VOICEMACRO_3_Gn_2", "VOICEMACRO_3_Gn_2_FEMALE", "VOICEMACRO_3_Hu_0", "VOICEMACRO_3_Hu_0_FEMALE", "VOICEMACRO_3_Hu_1", "VOICEMACRO_3_Hu_1_FEMALE", "VOICEMACRO_3_Ni_0", "VOICEMACRO_3_Ni_0_FEMALE", "VOICEMACRO_3_Ni_1", "VOICEMACRO_3_Ni_1_FEMALE", "VOICEMACRO_3_Or_0", "VOICEMACRO_3_Or_0_FEMALE", "VOICEMACRO_3_Or_1", "VOICEMACRO_3_Or_1_FEMALE", "VOICEMACRO_3_Sc_0", "VOICEMACRO_3_Sc_0_FEMALE", "VOICEMACRO_3_Sc_1", "VOICEMACRO_3_Sc_1_FEMALE", "VOICEMACRO_3_Ta_0", "VOICEMACRO_3_Ta_0_FEMALE", "VOICEMACRO_3_Ta_1", "VOICEMACRO_3_Ta_1_FEMALE", "VOICEMACRO_3_Tr_0", "VOICEMACRO_3_Tr_0_FEMALE", "VOICEMACRO_3_Tr_1", "VOICEMACRO_3_Tr_1_FEMALE", "VOICEMACRO_4_Dw_0", "VOICEMACRO_4_Dw_0_FEMALE", "VOICEMACRO_4_Dw_1", "VOICEMACRO_4_Dw_1_FEMALE", "VOICEMACRO_4_Dw_2", "VOICEMACRO_4_Gn_0", "VOICEMACRO_4_Gn_0_FEMALE", "VOICEMACRO_4_Gn_1", "VOICEMACRO_4_Gn_1_FEMALE", "VOICEMACRO_4_Hu_0", "VOICEMACRO_4_Hu_0_FEMALE", "VOICEMACRO_4_Hu_1", "VOICEMACRO_4_Hu_1_FEMALE", "VOICEMACRO_4_Ni_0", "VOICEMACRO_4_Ni_0_FEMALE", "VOICEMACRO_4_Ni_1", "VOICEMACRO_4_Ni_1_FEMALE", "VOICEMACRO_4_Ni_2_FEMALE", "VOICEMACRO_4_Or_0", "VOICEMACRO_4_Or_0_FEMALE", "VOICEMACRO_4_Or_1", "VOICEMACRO_4_Or_1_FEMALE", "VOICEMACRO_4_Or_2", "VOICEMACRO_4_Or_2_FEMALE", "VOICEMACRO_4_Sc_0", "VOICEMACRO_4_Sc_0_FEMALE", "VOICEMACRO_4_Sc_1", "VOICEMACRO_4_Sc_1_FEMALE", "VOICEMACRO_4_Ta_0", "VOICEMACRO_4_Ta_0_FEMALE", "VOICEMACRO_4_Ta_1", "VOICEMACRO_4_Ta_1_FEMALE", "VOICEMACRO_4_Tr_0", "VOICEMACRO_4_Tr_0_FEMALE", "VOICEMACRO_4_Tr_1", "VOICEMACRO_4_Tr_1_FEMALE", "VOICEMACRO_5_Dw_0", "VOICEMACRO_5_Dw_0_FEMALE", "VOICEMACRO_5_Dw_1", "VOICEMACRO_5_Dw_1_FEMALE", "VOICEMACRO_5_Gn_0", "VOICEMACRO_5_Gn_0_FEMALE", "VOICEMACRO_5_Gn_1", "VOICEMACRO_5_Gn_1_FEMALE", "VOICEMACRO_5_Hu_0", "VOICEMACRO_5_Hu_0_FEMALE", "VOICEMACRO_5_Hu_1", "VOICEMACRO_5_Hu_1_FEMALE", "VOICEMACRO_5_Ni_0", "VOICEMACRO_5_Ni_0_FEMALE", "VOICEMACRO_5_Ni_1", "VOICEMACRO_5_Ni_1_FEMALE", "VOICEMACRO_5_Or_0", "VOICEMACRO_5_Or_0_FEMALE", "VOICEMACRO_5_Or_1", "VOICEMACRO_5_Or_1_FEMALE", "VOICEMACRO_5_Sc_0", "VOICEMACRO_5_Sc_0_FEMALE", "VOICEMACRO_5_Sc_1", "VOICEMACRO_5_Sc_1_FEMALE", "VOICEMACRO_5_Ta_0", "VOICEMACRO_5_Ta_0_FEMALE", "VOICEMACRO_5_Ta_1", "VOICEMACRO_5_Ta_1_FEMALE", "VOICEMACRO_5_Tr_0", "VOICEMACRO_5_Tr_0_FEMALE", "VOICEMACRO_5_Tr_1", "VOICEMACRO_5_Tr_1_FEMALE", "VOICEMACRO_6_Dw_0", "VOICEMACRO_6_Dw_0_FEMALE", "VOICEMACRO_6_Dw_1", "VOICEMACRO_6_Dw_1_FEMALE", "VOICEMACRO_6_Dw_2", "VOICEMACRO_6_Gn_0", "VOICEMACRO_6_Gn_0_FEMALE", "VOICEMACRO_6_Gn_1", "VOICEMACRO_6_Hu_0", "VOICEMACRO_6_Hu_0_FEMALE", "VOICEMACRO_6_Hu_1", "VOICEMACRO_6_Hu_1_FEMALE", "VOICEMACRO_6_Ni_0", "VOICEMACRO_6_Ni_0_FEMALE", "VOICEMACRO_6_Ni_1", "VOICEMACRO_6_Ni_1_FEMALE", "VOICEMACRO_6_Or_0", "VOICEMACRO_6_Or_0_FEMALE", "VOICEMACRO_6_Or_1", "VOICEMACRO_6_Or_1_FEMALE", "VOICEMACRO_6_Sc_0", "VOICEMACRO_6_Sc_0_FEMALE", "VOICEMACRO_6_Sc_1", "VOICEMACRO_6_Sc_1_FEMALE", "VOICEMACRO_6_Ta_0", "VOICEMACRO_6_Ta_0_FEMALE", "VOICEMACRO_6_Ta_1", "VOICEMACRO_6_Ta_1_FEMALE", "VOICEMACRO_6_Tr_0", "VOICEMACRO_6_Tr_0_FEMALE", "VOICEMACRO_6_Tr_1", "VOICEMACRO_6_Tr_1_FEMALE", "VOICEMACRO_7_Dw_0", "VOICEMACRO_7_Dw_0_FEMALE", "VOICEMACRO_7_Dw_1", "VOICEMACRO_7_Dw_1_FEMALE", "VOICEMACRO_7_Dw_2", "VOICEMACRO_7_Gn_0", "VOICEMACRO_7_Gn_0_FEMALE", "VOICEMACRO_7_Gn_1", "VOICEMACRO_7_Gn_1_FEMALE", "VOICEMACRO_7_Hu_0", "VOICEMACRO_7_Hu_0_FEMALE", "VOICEMACRO_7_Hu_1", "VOICEMACRO_7_Hu_1_FEMALE", "VOICEMACRO_7_Hu_2", "VOICEMACRO_7_Hu_2_FEMALE", "VOICEMACRO_7_Ni_0", "VOICEMACRO_7_Ni_0_FEMALE", "VOICEMACRO_7_Ni_1", "VOICEMACRO_7_Ni_1_FEMALE", "VOICEMACRO_7_Or_0", "VOICEMACRO_7_Or_0_FEMALE", "VOICEMACRO_7_Or_1", "VOICEMACRO_7_Or_1_FEMALE", "VOICEMACRO_7_Sc_0", "VOICEMACRO_7_Sc_0_FEMALE", "VOICEMACRO_7_Sc_1", "VOICEMACRO_7_Sc_1_FEMALE", "VOICEMACRO_7_Ta_0", "VOICEMACRO_7_Ta_0_FEMALE", "VOICEMACRO_7_Ta_1", "VOICEMACRO_7_Ta_1_FEMALE", "VOICEMACRO_7_Ta_2", "VOICEMACRO_7_Tr_0", "VOICEMACRO_7_Tr_0_FEMALE", "VOICEMACRO_7_Tr_1", "VOICEMACRO_7_Tr_1_FEMALE", "VOICEMACRO_7_Tr_2", "VOICEMACRO_7_Tr_2_FEMALE", "VOICEMACRO_8_Dw_0", "VOICEMACRO_8_Dw_0_FEMALE", "VOICEMACRO_8_Dw_1", "VOICEMACRO_8_Dw_1_FEMALE", "VOICEMACRO_8_Dw_2", "VOICEMACRO_8_Dw_2_FEMALE", "VOICEMACRO_8_Gn_0", "VOICEMACRO_8_Gn_0_FEMALE", "VOICEMACRO_8_Gn_1", "VOICEMACRO_8_Gn_1_FEMALE", "VOICEMACRO_8_Hu_0", "VOICEMACRO_8_Hu_0_FEMALE", "VOICEMACRO_8_Hu_1", "VOICEMACRO_8_Hu_1_FEMALE", "VOICEMACRO_8_Ni_0", "VOICEMACRO_8_Ni_0_FEMALE", "VOICEMACRO_8_Ni_1", "VOICEMACRO_8_Ni_1_FEMALE", "VOICEMACRO_8_Or_0", "VOICEMACRO_8_Or_0_FEMALE", "VOICEMACRO_8_Or_1", "VOICEMACRO_8_Or_1_FEMALE", "VOICEMACRO_8_Sc_0", "VOICEMACRO_8_Sc_0_FEMALE", "VOICEMACRO_8_Sc_1", "VOICEMACRO_8_Sc_1_FEMALE", "VOICEMACRO_8_Ta_0", "VOICEMACRO_8_Ta_0_FEMALE", "VOICEMACRO_8_Ta_1", "VOICEMACRO_8_Ta_1_FEMALE", "VOICEMACRO_8_Tr_0", "VOICEMACRO_8_Tr_0_FEMALE", "VOICEMACRO_8_Tr_1", "VOICEMACRO_8_Tr_1_FEMALE", "VOICEMACRO_8_Tr_2", "VOICEMACRO_8_Tr_2_FEMALE", "VOICEMACRO_LABEL", "VOICEMACRO_LABEL_AID1", "VOICEMACRO_LABEL_ATTACKMYTARGET1", "VOICEMACRO_LABEL_ATTACKMYTARGET2", "VOICEMACRO_LABEL_CHARGE1", "VOICEMACRO_LABEL_CHEER1", "VOICEMACRO_LABEL_CONGRATULATIONS1", "VOICEMACRO_LABEL_CONGRATULATIONS2", "VOICEMACRO_LABEL_CONGRATULATIONS3", "VOICEMACRO_LABEL_FLEE1", "VOICEMACRO_LABEL_FLEE2", "VOICEMACRO_LABEL_FLIRT1", "VOICEMACRO_LABEL_FOLLOW1", "VOICEMACRO_LABEL_FOLLOWME1", "VOICEMACRO_LABEL_FOLLOWME2", "VOICEMACRO_LABEL_FOLLOWME3", "VOICEMACRO_LABEL_GOODBYE1", "VOICEMACRO_LABEL_GOODBYE2", "VOICEMACRO_LABEL_HEALME1", "VOICEMACRO_LABEL_HEALME2", "VOICEMACRO_LABEL_HELLO1", "VOICEMACRO_LABEL_HELP1", "VOICEMACRO_LABEL_HELPME1", "VOICEMACRO_LABEL_HELPME2", "VOICEMACRO_LABEL_INCOMING1", "VOICEMACRO_LABEL_INCOMING2", "VOICEMACRO_LABEL_JOKE1", "VOICEMACRO_LABEL_NO1", "VOICEMACRO_LABEL_OPENFIRE1", "VOICEMACRO_LABEL_OPENFIRE2", "VOICEMACRO_LABEL_OUTOFMANA1", "VOICEMACRO_LABEL_OUTOFMANA2", "VOICEMACRO_LABEL_RASPBERRY1", "VOICEMACRO_LABEL_RASPBERRY2", "VOICEMACRO_LABEL_SILLY1", "VOICEMACRO_LABEL_THANKYOU1", "VOICEMACRO_LABEL_THANKYOU2", "VOICEMACRO_LABEL_THANKYOU3", "VOICEMACRO_LABEL_TRAIN1", "VOICEMACRO_LABEL_WAITHERE1", "VOICEMACRO_LABEL_WAITHERE2", "VOICEMACRO_LABEL_YES1", "VOICEMACRO_LABEL_YOUREWELCOME1", "VOICEMACRO_LABEL_YOUREWELCOME2", "VOICE_ACTIVATED", "VOICE_ACTIVATION_SENSITIVITY", "VOICE_AMBIENCE", "VOICE_CHAT", "VOICE_CHAT_AUDIO_DUCKING", "VOICE_CHAT_BATTLEGROUND", "VOICE_CHAT_MODE", "VOICE_CHAT_NORMAL", "VOICE_CHAT_OPTIONS", "VOICE_CHAT_OUTPUT_DEVICE", "VOICE_CHAT_PARTY_RAID", "VOICE_GAME_DUCKING", "VOICE_INPUT_VOLUME", "VOICE_LABEL", "VOICE_LISTENING", "VOICE_MICROPHONE_TEST", "VOICE_MIC_TEST_PLAY", "VOICE_MIC_TEST_RECORD", "VOICE_MUSIC", "VOICE_OUTPUT_VOLUME", "VOICE_SOUND", "VOICE_SUBTEXT", "VOICE_TALKING", "VOLUME", "VOTE_BOOT_PLAYER", "VOTE_BOOT_REASON_REQUIRED", "VOTE_TO_KICK", "VULNERABLE_TRAILER", "WAISTSLOT", "WARLOCK_INTELLECT_TOOLTIP", "WARRIOR_STRENGTH_TOOLTIP", "WATCHFRAME_LOCK", "WATCH_FRAME_WIDTH_TEXT", "WATER_COLLISION", "WATER_DETAIL", "WEAPON_SKILL_RATING", "WEAPON_SKILL_RATING_BONUS", "WEAPON_SPEED", "WEATHER_DETAIL", "WEEKDAY_FRIDAY", "WEEKDAY_MONDAY", "WEEKDAY_SATURDAY", "WEEKDAY_SUNDAY", "WEEKDAY_THURSDAY", "WEEKDAY_TUESDAY", "WEEKDAY_WEDNESDAY", "WHISPER", "WHISPER_MESSAGE", "WHO", "WHO_FRAME_SHOWN_TEMPLATE", "WHO_FRAME_TOTAL_TEMPLATE", "WHO_LIST", "WHO_LIST_FORMAT", "WHO_LIST_GUILD_FORMAT", "WHO_NUM_RESULTS", "WHO_TAG_CLASS", "WHO_TAG_GUILD", "WHO_TAG_NAME", "WHO_TAG_RACE", "WHO_TAG_ZONE", "WIDESCREEN_TAG", "WIN", "WINDOWED_MAXIMIZED", "WINDOWED_MODE", "WINDOW_LOCK", "WINTERGRASP_IN_PROGRESS", "WIN_LOSS", "WITHDRAW", "WORK_IN_PROGRESS", "WORLDMAP_BUTTON", "WORLD_APPEARANCE", "WORLD_LOD", "WORLD_MAP", "WORLD_PORT_ROOT_TIMER", "WORLD_PVP_DISPLAY", "WORLD_PVP_ENTER", "WORLD_PVP_EXITED_BATTLE", "WORLD_PVP_FAIL", "WORLD_PVP_INVITED", "WORLD_PVP_INVITED_WARMUP", "WORLD_PVP_LOW_LEVEL", "WORLD_PVP_PENDING", "WORLD_PVP_PENDING_REMOTE", "WORLD_PVP_QUEUED", "WORLD_PVP_QUEUED_WARMUP", "WOW_MOUSE", "WOW_MOUSE_NOT_FOUND", "WRISTSLOT", "WRONG_SLOT_FOR_ITEM", "XP", "XPBAR_LABEL", "XP_BAR_TEXT", "XP_TEXT", "YELL", "YELLOW_GEM", "YELL_MESSAGE", "YES", "YOU", "YOUR_BID", "YOUR_CLASS_MAY_NOT_PERFORM_ROLE", "YOUR_ROLE", "YOU_ARE_IN_DUNGEON_GROUP", "YOU_ARE_LISTED_IN_LFR", "YOU_LOOT_MONEY", "YOU_MAY_NOT_QUEUE_FOR_DUNGEON", "YOU_MAY_NOT_QUEUE_FOR_THIS", "YOU_RECEIVED", "ZHCN", "ZHTW", "ZONE", "ZONE_COLON", "ZONE_UNDER_ATTACK", "ZOOM_IN", "ZOOM_OUT", "ZOOM_OUT_BUTTON_TEXT", "_RECORDING_WARNING_CORRUPTED", -- constants "NORMAL_FONT_COLOR_CODE", "HIGHLIGHT_FONT_COLOR_CODE", "RED_FONT_COLOR_CODE", "GREEN_FONT_COLOR_CODE", "GRAY_FONT_COLOR_CODE", "YELLOW_FONT_COLOR_CODE", "LIGHTYELLOW_FONT_COLOR_CODE", "ORANGE_FONT_COLOR_CODE", "FONT_COLOR_CODE_CLOSE", "MAX_CLASSES", "SPELL_POWER_MANA", "SPELL_POWER_RAGE", "SPELL_POWER_FOCUS", "SPELL_POWER_ENERGY", "SPELL_POWER_HAPPINESS", "SPELL_POWER_RUNES", "SPELL_POWER_RUNIC_POWER", "SCHOOL_MASK_NONE", "SCHOOL_MASK_PHYSICAL", "SCHOOL_MASK_HOLY", "SCHOOL_MASK_FIRE", "SCHOOL_MASK_NATURE", "SCHOOL_MASK_FROST", "SCHOOL_MASK_SHADOW", "SCHOOL_MASK_ARCANE", "SHOW_TALENT_LEVEL", "SHOW_PVP_LEVEL", "SHOW_LFD_LEVEL", "SHOW_INSCRIPTION_LEVEL", "CRITERIA_TYPE_ACHIEVEMENT", "ACHIEVEMENT_FLAGS_STATISTIC", "ACHIEVEMENT_FLAGS_HIDDEN", "ACHIEVEMENT_FLAGS_HAS_PROGRESS_BAR", "NUM_ACHIEVEMENT_FLAGS", "ACHIEVEMENT_CRITERIA_PROGRESS_BAR", "ACHIEVEMENT_CRITERIA_HIDDEN", "NUM_ACHIEVEMENT_CRITERIA_FLAGS", "ITEM_UNIQUE_EQUIPPED", "MAX_NUM_SOCKETS", "ITEM_QUALITY_POOR", "ITEM_QUALITY_COMMON", "ITEM_QUALITY_UNCOMMON", "ITEM_QUALITY_RARE", "ITEM_QUALITY_EPIC", "ITEM_INVENTORY_LOCATION_PLAYER", "ITEM_INVENTORY_LOCATION_BAGS", "ITEM_INVENTORY_LOCATION_BANK", "ITEM_INVENTORY_BAG_BIT_OFFSET", "INVSLOT_AMMO", "INVSLOT_HEAD", "INVSLOT_NECK", "INVSLOT_SHOULDER", "INVSLOT_BODY", "INVSLOT_CHEST", "INVSLOT_WAIST", "INVSLOT_LEGS", "INVSLOT_FEET", "INVSLOT_WRIST", "INVSLOT_HAND", "INVSLOT_FINGER1", "INVSLOT_FINGER2", "INVSLOT_TRINKET1", "INVSLOT_TRINKET2", "INVSLOT_BACK", "INVSLOT_MAINHAND", "INVSLOT_OFFHAND", "INVSLOT_RANGED", "INVSLOT_TABARD", "INVSLOT_LAST_EQUIPPED", "ITEM_INVENTORY_BANK_BAG_OFFSET", "CONTAINER_BAG_OFFSET", "BACKPACK_CONTAINER", "BANK_CONTAINER", "BANK_CONTAINER_INVENTORY_OFFSET", "KEYRING_CONTAINER", "NUM_BAG_SLOTS", "NUM_BANKGENERIC_SLOTS", "NUM_BANKBAGSLOTS", "MAX_EQUIPMENT_SETS_PER_PLAYER", "EQUIPMENT_SET_EMPTY_SLOT", "EQUIPMENT_SET_IGNORED_SLOT", "EQUIPMENT_SET_ITEM_MISSING", "COMBATLOG_OBJECT_AFFILIATION_MINE", "COMBATLOG_OBJECT_AFFILIATION_PARTY", "COMBATLOG_OBJECT_AFFILIATION_RAID", "COMBATLOG_OBJECT_AFFILIATION_OUTSIDER", "COMBATLOG_OBJECT_AFFILIATION_MASK", "COMBATLOG_OBJECT_REACTION_FRIENDLY", "COMBATLOG_OBJECT_REACTION_NEUTRAL", "COMBATLOG_OBJECT_REACTION_HOSTILE", "COMBATLOG_OBJECT_REACTION_MASK", "COMBATLOG_OBJECT_CONTROL_PLAYER", "COMBATLOG_OBJECT_CONTROL_NPC", "COMBATLOG_OBJECT_CONTROL_MASK", "COMBATLOG_OBJECT_TYPE_PLAYER", "COMBATLOG_OBJECT_TYPE_NPC", "COMBATLOG_OBJECT_TYPE_PET", "COMBATLOG_OBJECT_TYPE_GUARDIAN", "COMBATLOG_OBJECT_TYPE_OBJECT", "COMBATLOG_OBJECT_TYPE_MASK", "COMBATLOG_OBJECT_TARGET", "COMBATLOG_OBJECT_FOCUS", "COMBATLOG_OBJECT_MAINTANK", "COMBATLOG_OBJECT_MAINASSIST", "COMBATLOG_OBJECT_RAIDTARGET1", "COMBATLOG_OBJECT_RAIDTARGET2", "COMBATLOG_OBJECT_RAIDTARGET3", "COMBATLOG_OBJECT_RAIDTARGET4", "COMBATLOG_OBJECT_RAIDTARGET5", "COMBATLOG_OBJECT_RAIDTARGET6", "COMBATLOG_OBJECT_RAIDTARGET7", "COMBATLOG_OBJECT_RAIDTARGET8", "COMBATLOG_OBJECT_NONE", "COMBATLOG_OBJECT_SPECIAL_MASK", "COMBATLOG_OBJECT_RAIDTARGET_MASK", "COMBATLOG_FILTER_ME", "COMBATLOG_FILTER_MINE", "COMBATLOG_FILTER_MY_PET", "COMBATLOG_FILTER_FRIENDLY_UNITS", "COMBATLOG_FILTER_HOSTILE_PLAYERS", "COMBATLOG_FILTER_HOSTILE_UNITS", "COMBATLOG_FILTER_NEUTRAL_UNITS", "COMBATLOG_FILTER_UNKNOWN_UNITS", "COMBATLOG_FILTER_EVERYTHING", "CALENDAR_FIRST_WEEKDAY", "CALENDAR_EVENTTYPE_RAID", "CALENDAR_EVENTTYPE_DUNGEON", "CALENDAR_EVENTTYPE_PVP", "CALENDAR_EVENTTYPE_MEETING", "CALENDAR_EVENTTYPE_OTHER", "CALENDAR_MAX_EVENTTYPE", "CALENDAR_INVITESTATUS_INVITED", "CALENDAR_INVITESTATUS_ACCEPTED", "CALENDAR_INVITESTATUS_DECLINED", "CALENDAR_INVITESTATUS_CONFIRMED", "CALENDAR_INVITESTATUS_OUT", "CALENDAR_INVITESTATUS_STANDBY", "CALENDAR_INVITESTATUS_SIGNEDUP", "CALENDAR_INVITESTATUS_NOT_SIGNEDUP", "CALENDAR_INVITESTATUS_TENTATIVE", "CALENDAR_MAX_INVITESTATUS", "CALENDAR_INVITETYPE_NORMAL", "CALENDAR_INVITETYPE_SIGNUP", "CALENDAR_MAX_INVITETYPE", "NUM_WORLDMAP_DETAIL_TILES", "NUM_WORLDMAP_PATCH_TILES", "NUM_WORLDMAP_DETAIL_TILE_ROWS", "NUM_WORLDMAP_DETAIL_TILE_COLS", "MAX_TOTEMS", "FIRE_TOTEM_SLOT", "EARTH_TOTEM_SLOT", "WATER_TOTEM_SLOT", "AIR_TOTEM_SLOT", "GMTICKET_QUEUE_STATUS_ENABLED", "GMTICKET_QUEUE_STATUS_DISABLED", "GMTICKET_ASSIGNEDTOGM_STATUS_NOT_ASSIGNED", "GMTICKET_ASSIGNEDTOGM_STATUS_ASSIGNED", "GMTICKET_ASSIGNEDTOGM_STATUS_ESCALATED", "GMTICKET_OPENEDBYGM_STATUS_NOT_OPENED", "GMTICKET_OPENEDBYGM_STATUS_OPENED", "LIGHT_LIVE", "LIGHT_GHOST", "TEXTURE_ITEM_QUEST_BANG", "TEXTURE_ITEM_QUEST_BORDER", "SHOW_SEARCH_BAR_NUM_FRIENDS", -- assorted FrameXML globals "ADDITIONAL_POWER_BAR_INDEX", "DEFAULT_CHAT_FRAME", "MAX_BATTLEFIELD_QUEUES", "MAX_TALENT_TABS", -- Classic "MAX_WORLDSTATE_SCORE_BUTTONS", "STATICPOPUP_NUMDIALOGS", "TAXIROUTE_LINEFACTOR", "TAXIROUTE_LINEFACTOR_2", -- functions: FrameXML, Blizzard_CombatLog, Blizzard_CombatText, Blizzard_RaidUI, Blizzard_TimeManager, Blizzard_TokenUI "AbandonQuest", "AbandonSkill", "AcceptAreaSpiritHeal", "AcceptArenaTeam", "AcceptBattlefieldPort", "AcceptDuel", "AcceptGroup", "AcceptGuild", "AcceptLevelGrant", "AcceptProposal", "AcceptQuest", "AcceptResurrect", "AcceptSkillUps", "AcceptSockets", "AcceptTrade", "AcceptXPLoss", "AchievementAlertFrame_FixAnchors", "AchievementAlertFrame_GetAlertFrame", "AchievementAlertFrame_OnClick", "AchievementAlertFrame_OnHide", "AchievementAlertFrame_OnLoad", "AchievementAlertFrame_ShowAlert", "AchievementFrame_LoadUI", "AchievementMicroButton_OnEvent", "ActionBar_PageDown", "ActionBar_PageUp", "ActionButtonDown", "ActionButtonUp", "ActionButton_CalculateAction", "ActionButton_GetPagedID", "ActionButton_HideGrid", "ActionButton_IsFlashing", "ActionButton_OnEvent", "ActionButton_OnLoad", "ActionButton_OnUpdate", "ActionButton_SetTooltip", "ActionButton_ShowGrid", "ActionButton_StartFlash", "ActionButton_StopFlash", "ActionButton_Update", "ActionButton_UpdateAction", "ActionButton_UpdateCooldown", "ActionButton_UpdateCount", "ActionButton_UpdateFlash", "ActionButton_UpdateHotkeys", "ActionButton_UpdateState", "ActionButton_UpdateUsable", "ActionHasRange", "ActionStatus_DisplayMessage", "ActionStatus_OnEvent", "ActionStatus_OnLoad", "ActionStatus_OnUpdate", "AddChatWindowChannel", "AddChatWindowMessages", "AddFriend", "AddFriendEntryFrame_Collapse", "AddFriendEntryFrame_Expand", "AddFriendFrame_Accept", "AddFriendFrame_OnShow", "AddFriendFrame_ShowEntry", "AddFriendFrame_ShowInfo", "AddFriendNameEditBox_OnTextChanged", "AddIgnore", "AddMute", "AddOrDelIgnore", "AddOrDelMute", "AddOrRemoveFriend", "AddPreviewTalentPoints", "AddQuestWatch", "AddSkillUp", "AddToAutoHide", "AddTrackedAchievement", "AddTradeMoney", "AlertFrame_AnimateIn", "AlertFrame_FixAnchors", "AlertFrame_OnEvent", "AlertFrame_OnLoad", "AlertFrame_ResumeOutAnimation", "AlertFrame_StopOutAnimation", "AltCurrencyFrame_PointsUpdate", "AltCurrencyFrame_Update", "AlternatePowerBar_Initialize", "AlternatePowerBar_OnEvent", "AlternatePowerBar_OnLoad", "AlternatePowerBar_OnUpdate", "AlternatePowerBar_UpdateMaxValues", "AlternatePowerBar_UpdatePowerType", "AlternatePowerBar_UpdateValue", "AnimateTexCoords", "AnimatedShine_OnUpdate", "AnimatedShine_Start", "AnimatedShine_Stop", "AppendToFile", "ApplyBarberShopStyle", "ApplyUnitButtonConfiguration", "ArenaButton_OnClick", "ArenaFrameJoinButton_OnClick", "ArenaFrame_OnEvent", "ArenaFrame_OnLoad", "ArenaFrame_Update", "ArenaRegistrar_OnEvent", "ArenaRegistrar_OnLoad", "ArenaRegistrar_OnShow", "ArenaRegistrar_ShowPurchaseFrame", "ArenaRegistrar_TurnInPetition", "ArenaRegistrar_UpdatePrice", "ArenaTeamDisband", "ArenaTeamInviteByName", "ArenaTeamLeave", "ArenaTeamRoster", "ArenaTeamSetLeaderByName", "ArenaTeamUninviteByName", "ArenaTeam_GetTeamSizeID", "Arena_LoadUI", "AscendStop", "AssistUnit", "AttackTarget", "AuctionFrame_LoadUI", "AudioOptionsFrameCancel_OnClick", "AudioOptionsFrameDefault_OnClick", "AudioOptionsFrameOkay_OnClick", "AudioOptionsFrame_AudioRestart", "AudioOptionsFrame_OnEvent", "AudioOptionsFrame_OnHide", "AudioOptionsFrame_OnLoad", "AudioOptionsFrame_SetAllToDefaults", "AudioOptionsFrame_SetCurrentToDefaults", "AudioOptionsFrame_Toggle", "AudioOptionsPanel_CheckButton_OnClick", "AudioOptionsSoundPanelHardwareDropDown_Initialize", "AudioOptionsSoundPanelHardwareDropDown_OnClick", "AudioOptionsSoundPanelHardwareDropDown_OnLoad", "AudioOptionsSoundPanel_OnLoad", "AudioOptionsVoicePanelBindingOutput_OnUpdate", "AudioOptionsVoicePanelBindingType_Update", "AudioOptionsVoicePanelChatModeDropDown_Initialize", "AudioOptionsVoicePanelChatModeDropDown_OnClick", "AudioOptionsVoicePanelChatModeDropDown_OnLoad", "AudioOptionsVoicePanelEnableMicrophone_UpdateControls", "AudioOptionsVoicePanelEnableVoice_UpdateControls", "AudioOptionsVoicePanelInputDeviceDropDown_Initialize", "AudioOptionsVoicePanelInputDeviceDropDown_OnClick", "AudioOptionsVoicePanelInputDeviceDropDown_OnLoad", "AudioOptionsVoicePanelKeyBindingButton_BindButton", "AudioOptionsVoicePanelKeyBindingButton_CancelBinding", "AudioOptionsVoicePanelKeyBindingButton_OnClick", "AudioOptionsVoicePanelKeyBindingButton_OnEnter", "AudioOptionsVoicePanelKeyBindingButton_OnKeyDown", "AudioOptionsVoicePanelKeyBindingButton_OnKeyUp", "AudioOptionsVoicePanelKeyBindingButton_Refresh", "AudioOptionsVoicePanelKeyBindingButton_SetTooltip", "AudioOptionsVoicePanelOutputDeviceDropDown_Initialize", "AudioOptionsVoicePanelOutputDeviceDropDown_OnClick", "AudioOptionsVoicePanelOutputDeviceDropDown_OnEvent", "AudioOptionsVoicePanelOutputDeviceDropDown_OnLoad", "AudioOptionsVoicePanel_DisableMicrophoneControls", "AudioOptionsVoicePanel_EnableMicrophoneControls", "AudioOptionsVoicePanel_OnEvent", "AudioOptionsVoicePanel_OnHide", "AudioOptionsVoicePanel_OnLoad", "AudioOptionsVoicePanel_OnShow", "AudioOptionsVoicePanel_Refresh", "AudioOptionsVoicePanel_SetInputDevice", "AudioOptionsVoicePanel_SetOutputDevice", "AuraButton_OnUpdate", "AuraButton_Update", "AuraButton_UpdateDuration", "AutoCastShine_AutoCastStart", "AutoCastShine_AutoCastStop", "AutoCastShine_OnLoad", "AutoCastShine_OnUpdate", "AutoCompleteButton_OnClick", "AutoCompleteEditBox_AddHighlightedText", "AutoCompleteEditBox_OnChar", "AutoCompleteEditBox_OnEditFocusLost", "AutoCompleteEditBox_OnEnterPressed", "AutoCompleteEditBox_OnEscapePressed", "AutoCompleteEditBox_OnTabPressed", "AutoCompleteEditBox_OnTextChanged", "AutoComplete_GetNumResults", "AutoComplete_GetSelectedIndex", "AutoComplete_HideIfAttachedTo", "AutoComplete_OnLoad", "AutoComplete_SetSelectedIndex", "AutoComplete_Update", "AutoComplete_UpdateResults", "AutoEquipCursorItem", "AutoFollowStatus_OnEvent", "AutoFollowStatus_OnLoad", "AutoFollowStatus_OnUpdate", "AutoLootMailItem", "AutoStoreGuildBankItem", "BNAcceptFriendInvite", "BNConnected", "BNConversationButton_OnClick", "BNConversationButton_OnEnter", "BNConversationButton_OnEvent", "BNConversationButton_OnLeave", "BNConversationButton_OnLoad", "BNConversationButton_UpdateAttachmentPoint", "BNConversationButton_UpdateEnabledState", "BNConversationButton_UpdateTarget", "BNConversationInviteDialogInviteButton_OnClick", "BNConversationInviteDialog_OnEvent", "BNConversationInviteDialog_OnLoad", "BNConversationInviteListCheckButton_OnClick", "BNConversationInvite_Deselect", "BNConversationInvite_Lock", "BNConversationInvite_LockActions", "BNConversationInvite_NewConversation", "BNConversationInvite_Reset", "BNConversationInvite_Select", "BNConversationInvite_SelectPlayers", "BNConversationInvite_SetMinMaxInvites", "BNConversationInvite_SetMode", "BNConversationInvite_Unlock", "BNConversationInvite_UnlockActions", "BNConversationInvite_Update", "BNConversationInvite_UpdateInviteButtonState", "BNConversation_DisplayConversationTooltip", "BNCreateConversation", "BNDeclineFriendInvite", "BNFeaturesEnabled", "BNFeaturesEnabledAndConnected", "BNGetBlockedInfo", "BNGetBlockedToonInfo", "BNGetConversationInfo", "BNGetConversationMemberInfo", "BNGetCustomMessageTable", "BNGetFOFInfo", "BNGetFriendInfo", "BNGetFriendInfoByID", "BNGetFriendInviteInfo", "BNGetFriendToonInfo", "BNGetInfo", "BNGetMatureLanguageFilter", "BNGetMaxPlayersInConversation", "BNGetNumBlocked", "BNGetNumBlockedToons", "BNGetNumConversationMembers", "BNGetNumFOF", "BNGetNumFriendInvites", "BNGetNumFriendToons", "BNGetNumFriends", "BNGetSelectedBlock", "BNGetSelectedFriend", "BNGetSelectedToonBlock", "BNGetToonInfo", "BNInviteToConversation", "BNIsBlocked", "BNIsFriend", "BNIsSelf", "BNIsToonBlocked", "BNLeaveConversation", "BNListConversation", "BNRemoveFriend", "BNReportFriendInvite", "BNReportPlayer", "BNRequestFOFInfo", "BNSendConversationMessage", "BNSendFriendInvite", "BNSendFriendInviteByID", "BNSendWhisper", "BNSetAFK", "BNSetBlocked", "BNSetCustomMessage", "BNSetDND", "BNSetFocus", "BNSetFriendNote", "BNSetMatureLanguageFilter", "BNSetSelectedBlock", "BNSetSelectedFriend", "BNSetSelectedToonBlock", "BNSetToonBlocked", "BNToastFrame_AddToast", "BNToastFrame_Close", "BNToastFrame_OnClick", "BNToastFrame_OnEvent", "BNToastFrame_OnUpdate", "BNToastFrame_RemoveToast", "BNToastFrame_Show", "BNToastFrame_UpdateAnchor", "BNet_ConfirmReport", "BNet_DisableToasts", "BNet_EnableToasts", "BNet_GetPresenceID", "BNet_InitiateReport", "BNet_OnEvent", "BNet_OnLoad", "BNet_SendReport", "BNet_SetToastDuration", "BNet_UpdateToastEvent", "BackpackButton_OnClick", "BackpackButton_OnModifiedClick", "BackpackButton_UpdateChecked", "BackpackTokenButton_OnClick", "BackpackTokenFrame_IsShown", "BackpackTokenFrame_Update", "BagSlotButton_OnClick", "BagSlotButton_OnDrag", "BagSlotButton_OnEnter", "BagSlotButton_OnModifiedClick", "BagSlotButton_UpdateChecked", "BankButtonIDToInvSlotID", "BankFrameBagButton_OnLoad", "BankFrameBaseButton_OnLoad", "BankFrameItemButtonBag_OnClick", "BankFrameItemButtonBag_Pickup", "BankFrameItemButtonGeneric_OnClick", "BankFrameItemButtonGeneric_OnModifiedClick", "BankFrameItemButton_OnEnter", "BankFrameItemButton_OnLoad", "BankFrameItemButton_Update", "BankFrameItemButton_UpdateLocked", "BankFrame_OnEvent", "BankFrame_OnHide", "BankFrame_OnLoad", "BankFrame_OnShow", "BankFrame_UpdateCooldown", "BarberShopFrame_LoadUI", "BarberShopReset", "BattlefieldButton_OnClick", "BattlefieldFrameJoinButton_OnClick", "BattlefieldFrame_GetSelectedBattlegroundInfo", "BattlefieldFrame_OnEvent", "BattlefieldFrame_OnLoad", "BattlefieldFrame_Update", "BattlefieldFrame_UpdateRandomInfo", "BattlefieldFrame_UpdateStatus", "BattlefieldMgrEntryInviteResponse", "BattlefieldMgrExitRequest", "BattlefieldMgrQueueInviteResponse", "BattlefieldMgrQueueRequest", "BattlefieldMinimap_LoadUI", "BattlefieldTimerFrame_OnUpdate", "BattlegroundShineFadeIn", "BattlegroundShineFadeOut", "BeginTrade", "BetterDate", "BindEnchant", "BlizzardOptionsPanel_Cancel", "BlizzardOptionsPanel_CancelControl", "BlizzardOptionsPanel_CheckButton_Disable", "BlizzardOptionsPanel_CheckButton_Enable", "BlizzardOptionsPanel_CheckButton_OnClick", "BlizzardOptionsPanel_CheckButton_Refresh", "BlizzardOptionsPanel_CheckButton_SetNewValue", "BlizzardOptionsPanel_Default", "BlizzardOptionsPanel_DefaultControl", "BlizzardOptionsPanel_DropDown_Refresh", "BlizzardOptionsPanel_GetCVarDefaultSafe", "BlizzardOptionsPanel_GetCVarMaxSafe", "BlizzardOptionsPanel_GetCVarMinSafe", "BlizzardOptionsPanel_GetCVarSafe", "BlizzardOptionsPanel_Okay", "BlizzardOptionsPanel_OkayControl", "BlizzardOptionsPanel_OnEvent", "BlizzardOptionsPanel_OnLoad", "BlizzardOptionsPanel_Refresh", "BlizzardOptionsPanel_RefreshControl", "BlizzardOptionsPanel_RegisterControl", "BlizzardOptionsPanel_SetCVarSafe", "BlizzardOptionsPanel_SetupControl", "BlizzardOptionsPanel_SetupDependentControl", "BlizzardOptionsPanel_Slider_Disable", "BlizzardOptionsPanel_Slider_Enable", "BlizzardOptionsPanel_Slider_OnValueChanged", "BlizzardOptionsPanel_Slider_Refresh", "BlizzardOptionsPanel_UpdateCombatText", "BlizzardOptionsPanel_UpdateRaidPullouts", "Blizzard_CombatLog_ApplyFilters", "Blizzard_CombatLog_CreateActionMenu", "Blizzard_CombatLog_CreateFilterMenu", "Blizzard_CombatLog_CreateSpellMenu", "Blizzard_CombatLog_CreateTabMenu", "Blizzard_CombatLog_CreateUnitMenu", "Blizzard_CombatLog_DisableEvent", "Blizzard_CombatLog_EnableEvent", "Blizzard_CombatLog_FormattingMenu", "Blizzard_CombatLog_GenerateFullEventList", "Blizzard_CombatLog_GenerateFullFlagList", "Blizzard_CombatLog_HasEvent", "Blizzard_CombatLog_InitializeFilters", "Blizzard_CombatLog_MenuHelper", "Blizzard_CombatLog_MessageTypesMenu", "Blizzard_CombatLog_QuickButtonFrame_OnEvent", "Blizzard_CombatLog_QuickButtonFrame_OnLoad", "Blizzard_CombatLog_QuickButtonRightClick", "Blizzard_CombatLog_QuickButton_OnClick", "Blizzard_CombatLog_Refilter", "Blizzard_CombatLog_RefilterUpdate", "Blizzard_CombatLog_RefreshGlobalLinks", "Blizzard_CombatLog_SpellMenuClick", "Blizzard_CombatLog_UnitMenuClick", "Blizzard_CombatLog_Update_QuickButtons", "BonusActionBar_OnEvent", "BonusActionBar_OnLoad", "BonusActionBar_OnUpdate", "BonusActionButtonDown", "BonusActionButtonUp", "BossTargetFrameDropDown_Initialize", "BossTargetFrame_OnLoad", "BuffButton_OnClick", "BuffButton_OnLoad", "BuffFrame_OnEvent", "BuffFrame_OnLoad", "BuffFrame_OnUpdate", "BuffFrame_Update", "BuffFrame_UpdateAllBuffAnchors", "BuffFrame_UpdatePositions", "BuildColoredListString", "BuildListString", "BuildMultilineTooltip", "BuildNewLineListString", "ButtonInventorySlot", "ButtonPulse_OnUpdate", "ButtonPulse_StopPulse", "BuyGuildBankTab", "BuyGuildCharter", "BuyMerchantItem", "BuyPetition", "BuySkillTier", "BuyStableSlot", "BuyTrainerService", "BuybackItem", "COMBAT_TEXT_SCROLL_FUNCTION", "CalculateAuctionDeposit", "CalendarAddEvent", "CalendarCanAddEvent", "CalendarCanSendInvite", "CalendarCloseEvent", "CalendarContextDeselectEvent", "CalendarContextEventCanComplain", "CalendarContextEventCanEdit", "CalendarContextEventClipboard", "CalendarContextEventComplain", "CalendarContextEventCopy", "CalendarContextEventGetCalendarType", "CalendarContextEventPaste", "CalendarContextEventRemove", "CalendarContextEventSignUp", "CalendarContextGetEventIndex", "CalendarContextInviteAvailable", "CalendarContextInviteDecline", "CalendarContextInviteIsPending", "CalendarContextInviteModeratorStatus", "CalendarContextInviteRemove", "CalendarContextInviteStatus", "CalendarContextInviteTentative", "CalendarContextInviteType", "CalendarContextSelectEvent", "CalendarDefaultGuildFilter", "CalendarEventAvailable", "CalendarEventCanEdit", "CalendarEventCanModerate", "CalendarEventClearAutoApprove", "CalendarEventClearLocked", "CalendarEventClearModerator", "CalendarEventDecline", "CalendarEventGetCalendarType", "CalendarEventGetInvite", "CalendarEventGetInviteResponseTime", "CalendarEventGetInviteSortCriterion", "CalendarEventGetNumInvites", "CalendarEventGetRepeatOptions", "CalendarEventGetSelectedInvite", "CalendarEventGetStatusOptions", "CalendarEventGetTextures", "CalendarEventGetTypes", "CalendarEventHasPendingInvite", "CalendarEventHaveSettingsChanged", "CalendarEventInvite", "CalendarEventIsModerator", "CalendarEventRemoveInvite", "CalendarEventSelectInvite", "CalendarEventSetAutoApprove", "CalendarEventSetDate", "CalendarEventSetDescription", "CalendarEventSetLocked", "CalendarEventSetLockoutDate", "CalendarEventSetLockoutTime", "CalendarEventSetModerator", "CalendarEventSetRepeatOption", "CalendarEventSetSize", "CalendarEventSetStatus", "CalendarEventSetTextureID", "CalendarEventSetTime", "CalendarEventSetTitle", "CalendarEventSetType", "CalendarEventSignUp", "CalendarEventSortInvites", "CalendarEventTentative", "CalendarGetAbsMonth", "CalendarGetDate", "CalendarGetDayEvent", "CalendarGetDayEventSequenceInfo", "CalendarGetEventIndex", "CalendarGetEventInfo", "CalendarGetFirstPendingInvite", "CalendarGetHolidayInfo", "CalendarGetMaxCreateDate", "CalendarGetMaxDate", "CalendarGetMinDate", "CalendarGetMinHistoryDate", "CalendarGetMonth", "CalendarGetMonthNames", "CalendarGetNumDayEvents", "CalendarGetNumPendingInvites", "CalendarGetRaidInfo", "CalendarGetWeekdayNames", "CalendarIsActionPending", "CalendarMassInviteArenaTeam", "CalendarMassInviteGuild", "CalendarNewEvent", "CalendarNewGuildAnnouncement", "CalendarNewGuildEvent", "CalendarOpenEvent", "CalendarRemoveEvent", "CalendarSetAbsMonth", "CalendarSetMonth", "CalendarUpdateEvent", "Calendar_LoadUI", "CallCompanion", "CallRestrictedClosure", "CameraOrSelectOrMoveStart", "CameraOrSelectOrMoveStop", "CameraZoomIn", "CameraZoomOut", "CanAlterSkin", "CanCancelAuction", "CanChangePlayerDifficulty", "CanComplainChat", "CanComplainInboxItem", "CanCooperateWithToon", "CanCreateFilters", "CanEditGuildEvent", "CanEditGuildInfo", "CanEditGuildTabInfo", "CanEditMOTD", "CanEditOfficerNote", "CanEditPublicNote", "CanEjectPassengerFromSeat", "CanExitVehicle", "CanGrantLevel", "CanGroupInvite", "CanGuildBankRepair", "CanGuildDemote", "CanGuildInvite", "CanGuildPromote", "CanGuildRemove", "CanHearthAndResurrectFromArea", "CanInspect", "CanJoinBattlefieldAsGroup", "CanMapChangeDifficulty", "CanMerchantRepair", "CanOpenPanels", "CanPartyLFGBackfill", "CanQueueForWintergrasp", "CanResetTutorials", "CanSendAuctionQuery", "CanShowAchievementUI", "CanShowCenterUIPanel", "CanShowResetInstances", "CanShowRightUIPanel", "CanShowUIPanels", "CanSignPetition", "CanSummonFriend", "CanSwitchVehicleSeat", "CanSwitchVehicleSeats", "CanUseEquipmentSets", "CanViewOfficerNote", "CanWithdrawGuildBankMoney", "CancelAreaSpiritHeal", "CancelAuction", "CancelBarberShop", "CancelDuel", "CancelItemTempEnchantment", "CancelLogout", "CancelPendingEquip", "CancelSell", "CancelShapeshiftForm", "CancelSkillUps", "CancelSummon", "CancelTrade", "CancelTradeAccept", "CancelUnitBuff", "CannotBeResurrected", "CaptureBar_Create", "CaptureBar_Update", "CastPetAction", "CastShapeshiftForm", "CastSpell", "CastSpellByID", "CastSpellByName", "CastingBarFrame_FinishSpell", "CastingBarFrame_OnEvent", "CastingBarFrame_OnLoad", "CastingBarFrame_OnShow", "CastingBarFrame_OnUpdate", "CastingBarFrame_UpdateIsShown", "ChangeActionBarPage", "ChangeChatColor", "ChangeMultiCastActionPage", "ChangePlayerDifficulty", "ChannelBan", "ChannelFrameDaughterFrame_Cancel", "ChannelFrameDaughterFrame_Okay", "ChannelFrameDaughterFrame_OnHide", "ChannelFrame_Desaturate", "ChannelFrame_Join_OnClick", "ChannelFrame_New_OnClick", "ChannelFrame_OnEvent", "ChannelFrame_OnLoad", "ChannelFrame_OnUpdate", "ChannelFrame_Update", "ChannelFrame_UpdateJoin", "ChannelInvite", "ChannelKick", "ChannelListButton_OnDragStart", "ChannelListButton_OnDragStop", "ChannelListDropDown_HideDropDown", "ChannelListDropDown_Initialize", "ChannelListDropDown_Invite", "ChannelListDropDown_SetPassword", "ChannelList_CountUpdate", "ChannelList_OnClick", "ChannelList_SetScroll", "ChannelList_ShowDropdown", "ChannelList_Update", "ChannelList_UpdateHighlight", "ChannelList_UpdateVoice", "ChannelModerator", "ChannelMute", "ChannelPulloutRosterButton_OnEvent", "ChannelPulloutRoster_DrawButton", "ChannelPulloutRoster_GetActiveSession", "ChannelPulloutRoster_GetSessionIDByName", "ChannelPulloutRoster_GetSessionInfo", "ChannelPulloutRoster_OnEvent", "ChannelPulloutRoster_OnLoad", "ChannelPulloutRoster_Populate", "ChannelPulloutRoster_Scroll", "ChannelPulloutRoster_ScrollToBottom", "ChannelPulloutRoster_ScrollToTop", "ChannelPulloutRoster_Sort", "ChannelPulloutRoster_Update", "ChannelPulloutRoster_UpdateScrollControls", "ChannelPulloutTabDropDown_Initialize", "ChannelPulloutTab_OnClick", "ChannelPulloutTab_ReanchorLeft", "ChannelPulloutTab_UpdateText", "ChannelPullout_OnEvent", "ChannelPullout_OnLoad", "ChannelPullout_OnUpdate", "ChannelPullout_SaveOpacity", "ChannelPullout_SetOpacity", "ChannelPullout_ShowOpacity", "ChannelPullout_ToggleDisplay", "ChannelRosterDropDown_Initialize", "ChannelRosterFrame_ShowDropdown", "ChannelRoster_OnClick", "ChannelRoster_SetScroll", "ChannelRoster_Update", "ChannelRoster_UpdateVoice", "ChannelSilenceAll", "ChannelSilenceVoice", "ChannelToggleAnnouncements", "ChannelUnSilenceAll", "ChannelUnSilenceVoice", "ChannelUnban", "ChannelUnmoderator", "ChannelUnmute", "ChannelVoiceOff", "ChannelVoiceOn", "CharacterAttackFrame_OnEnter", "CharacterDamageFrame_OnEnter", "CharacterFrameTab_OnClick", "CharacterFrame_OnEvent", "CharacterFrame_OnHide", "CharacterFrame_OnLoad", "CharacterFrame_OnShow", "CharacterFrame_ShowSubFrame", "CharacterFrame_TabBoundsCheck", "CharacterMicroButton_OnEvent", "CharacterMicroButton_OnLoad", "CharacterMicroButton_SetNormal", "CharacterMicroButton_SetPushed", "CharacterModelFrame_OnMouseUp", "CharacterRangedDamageFrame_OnEnter", "CharacterSpellBonusDamage_OnEnter", "CharacterSpellCritChance_OnEnter", "ChatChannelDropDown_Initialize", "ChatChannelDropDown_InviteToConversation", "ChatChannelDropDown_LeaveConversation", "ChatChannelDropDown_PopInChat", "ChatChannelDropDown_PopOutChat", "ChatChannelDropDown_Show", "ChatChannelPasswordHandler", "ChatConfigCancel_OnClick", "ChatConfigCategory_OnClick", "ChatConfigCombat_OnLoad", "ChatConfigFilter_OnClick", "ChatConfigFrame_OnEvent", "ChatConfigFrame_OnLoad", "ChatConfigFrame_PlayCheckboxSound", "ChatConfig_CreateCheckboxes", "ChatConfig_CreateColorSwatches", "ChatConfig_CreateTieredCheckboxes", "ChatConfig_HideCombatTabs", "ChatConfig_MoveFilterDown", "ChatConfig_MoveFilterUp", "ChatConfig_ShowCombatTabs", "ChatConfig_UpdateChatSettings", "ChatConfig_UpdateCheckboxes", "ChatConfig_UpdateCombatSettings", "ChatConfig_UpdateCombatTabs", "ChatConfig_UpdateFilterList", "ChatConfig_UpdateSwatches", "ChatConfig_UpdateTieredCheckboxFrame", "ChatConfig_UpdateTieredCheckboxes", "ChatEdit_ActivateChat", "ChatEdit_AddHistory", "ChatEdit_ChooseBoxForSend", "ChatEdit_CustomTabPressed", "ChatEdit_DeactivateChat", "ChatEdit_ExtractBNConversation", "ChatEdit_ExtractChannel", "ChatEdit_ExtractTellTarget", "ChatEdit_FocusActiveWindow", "ChatEdit_GetActiveWindow", "ChatEdit_GetLastActiveWindow", "ChatEdit_GetLastTellTarget", "ChatEdit_GetLastToldTarget", "ChatEdit_GetNextTellTarget", "ChatEdit_HandleChatType", "ChatEdit_InsertLink", "ChatEdit_LanguageShow", "ChatEdit_OnEditFocusGained", "ChatEdit_OnEditFocusLost", "ChatEdit_OnEnterPressed", "ChatEdit_OnEscapePressed", "ChatEdit_OnEvent", "ChatEdit_OnHide", "ChatEdit_OnInputLanguageChanged", "ChatEdit_OnLoad", "ChatEdit_OnShow", "ChatEdit_OnSpacePressed", "ChatEdit_OnTabPressed", "ChatEdit_OnTextChanged", "ChatEdit_OnTextSet", "ChatEdit_OnUpdate", "ChatEdit_ParseText", "ChatEdit_ResetChatType", "ChatEdit_ResetChatTypeToSticky", "ChatEdit_SecureTabPressed", "ChatEdit_SendText", "ChatEdit_SetLastActiveWindow", "ChatEdit_SetLastTellTarget", "ChatEdit_SetLastToldTarget", "ChatEdit_UpdateHeader", "ChatFrameMenu_UpdateAnchorPoint", "ChatFrame_ActivateCombatMessages", "ChatFrame_AddBNConversationTarget", "ChatFrame_AddChannel", "ChatFrame_AddMessageEventFilter", "ChatFrame_AddMessageGroup", "ChatFrame_AddPrivateMessageTarget", "ChatFrame_ChatPageDown", "ChatFrame_ChatPageUp", "ChatFrame_ConfigEventHandler", "ChatFrame_DisplayChatHelp", "ChatFrame_DisplayGameTime", "ChatFrame_DisplayGuildHelp", "ChatFrame_DisplayHelpText", "ChatFrame_DisplayMacroHelpText", "ChatFrame_DisplayStartupText", "ChatFrame_DisplayTimePlayed", "ChatFrame_DisplayUsageError", "ChatFrame_ExcludeBNConversationTarget", "ChatFrame_ExcludePrivateMessageTarget", "ChatFrame_GetMessageEventFilters", "ChatFrame_MessageEventHandler", "ChatFrame_OnEvent", "ChatFrame_OnHyperlinkShow", "ChatFrame_OnLoad", "ChatFrame_OnMouseWheel", "ChatFrame_OnUpdate", "ChatFrame_OpenChat", "ChatFrame_OpenMenu", "ChatFrame_ReceiveAllBNConversations", "ChatFrame_ReceiveAllPrivateMessages", "ChatFrame_RegisterForChannels", "ChatFrame_RegisterForMessages", "ChatFrame_RemoveAllChannels", "ChatFrame_RemoveAllMessageGroups", "ChatFrame_RemoveBNConversationTarget", "ChatFrame_RemoveChannel", "ChatFrame_RemoveExcludeBNConversationTarget", "ChatFrame_RemoveExcludePrivateMessageTarget", "ChatFrame_RemoveMessageEventFilter", "ChatFrame_RemoveMessageGroup", "ChatFrame_RemovePrivateMessageTarget", "ChatFrame_ReplyTell", "ChatFrame_ReplyTell2", "ChatFrame_ScrollDown", "ChatFrame_ScrollToBottom", "ChatFrame_ScrollUp", "ChatFrame_SendTell", "ChatFrame_SystemEventHandler", "ChatFrame_TimeBreakDown", "ChatHistory_GetAccessID", "ChatHistory_GetChatType", "ChatHistory_GetToken", "ChatMenu_Battleground", "ChatMenu_Emote", "ChatMenu_Guild", "ChatMenu_OnLoad", "ChatMenu_OnShow", "ChatMenu_Party", "ChatMenu_Raid", "ChatMenu_Reply", "ChatMenu_Say", "ChatMenu_SetChatType", "ChatMenu_VoiceMacro", "ChatMenu_Whisper", "ChatMenu_Yell", "ChatUnitColor_OpenColorPicker", "Chat_GetChannelShortcutName", "Chat_GetChatCategory", "Chat_GetColoredChatName", "CheckBinderDist", "CheckInbox", "CheckInteractDistance", "CheckSpiritHealerDist", "CheckTalentMasterDist", "CinematicFrame_OnEvent", "CinematicFrame_OnLoad", "ClassTrainerFrame_LoadUI", "ClearAchievementComparisonUnit", "ClearAllLFGDungeons", "ClearChannelWatch", "ClearCursor", "ClearFocus", "ClearInspectPlayer", "ClearLFGDungeon", "ClearOverrideBindings", "ClearPartyAssignment", "ClearPendingGuildBankPermissions", "ClearSendMail", "ClearTarget", "ClearTutorials", "ClickAuctionSellItemButton", "ClickLandmark", "ClickPetitionButton", "ClickSendMailItemButton", "ClickSocketButton", "ClickStablePet", "ClickTargetTradeButton", "ClickTradeButton", "CloseAllBags", "CloseAllWindows", "CloseAllWindows_WithExceptions", "CloseArenaTeamRoster", "CloseAuctionHouse", "CloseBackpack", "CloseBag", "CloseBankBagFrames", "CloseBankFrame", "CloseBattlefield", "CloseChildWindows", "CloseDropDownMenus", "CloseGossip", "CloseGuildBankFrame", "CloseGuildRegistrar", "CloseGuildRoster", "CloseItemText", "CloseLoot", "CloseMail", "CloseMenus", "CloseMerchant", "ClosePetStables", "ClosePetition", "ClosePetitionVendor", "CloseQuest", "CloseSocketInfo", "CloseSpecialWindows", "CloseTabardCreation", "CloseTaxiMap", "CloseTrade", "CloseTradeSkill", "CloseTrainer", "CloseWindows", "CoinPickupFrameCancel_Click", "CoinPickupFrameLeft_Click", "CoinPickupFrameOkay_Click", "CoinPickupFrameRight_Click", "CoinPickupFrame_OnChar", "CoinPickupFrame_OnHide", "CoinPickupFrame_OnKeyDown", "CoinPickupFrame_OnKeyUp", "CollapseAllFactionHeaders", "CollapseChannelHeader", "CollapseFactionHeader", "CollapseQuestHeader", "CollapseSkillHeader", "CollapseTradeSkillSubClass", "CollapseTrainerSkillLine", "ColorClassesCheckBox_OnClick", "ColorPaperDollStat", "ColorPicker_GetPreviousValues", "CombatConfig_Colorize_Update", "CombatConfig_CreateCombatFilter", "CombatConfig_DeleteCurrentCombatFilter", "CombatConfig_Formatting_Update", "CombatConfig_SetCombatFiltersToDefault", "CombatConfig_SetFilterName", "CombatConfig_Settings_Update", "CombatFeedback_Initialize", "CombatFeedback_OnCombatEvent", "CombatFeedback_OnUpdate", "CombatFeedback_StartFullscreenStatus", "CombatFeedback_StopFullscreenStatus", "CombatLogAddFilter", "CombatLogAdvanceEntry", "CombatLogClearEntries", "CombatLogGetCurrentEntry", "CombatLogGetNumEntries", "CombatLogGetRetentionTime", "CombatLogResetFilter", "CombatLogSetCurrentEntry", "CombatLogSetRetentionTime", "CombatLog_AddEvent", "CombatLog_Color_ColorArrayByEventType", "CombatLog_Color_ColorArrayBySchool", "CombatLog_Color_ColorArrayByUnitType", "CombatLog_Color_ColorStringByEventType", "CombatLog_Color_ColorStringBySchool", "CombatLog_Color_ColorStringByUnitType", "CombatLog_Color_FloatToText", "CombatLog_Color_HighlightColorArray", "CombatLog_LoadUI", "CombatLog_Object_IsA", "CombatLog_OnEvent", "CombatLog_String_DamageResultString", "CombatLog_String_GetIcon", "CombatLog_String_GetToken", "CombatLog_String_PowerType", "CombatLog_String_SchoolString", "CombatTextSetActiveUnit", "CombatText_AddMessage", "CombatText_ClearAnimationList", "CombatText_FountainScroll", "CombatText_GetAvailableString", "CombatText_GetOldestString", "CombatText_OnEvent", "CombatText_OnLoad", "CombatText_OnUpdate", "CombatText_RemoveMessage", "CombatText_UpdateDisplayedMessages", "ComboFrame_OnEvent", "ComboFrame_Update", "ComboPointShineFadeIn", "ComboPointShineFadeOut", "CommentatorAddPlayer", "CommentatorEnterInstance", "CommentatorExitInstance", "CommentatorFollowPlayer", "CommentatorGetCamera", "CommentatorGetCurrentMapID", "CommentatorGetInstanceInfo", "CommentatorGetMapInfo", "CommentatorGetMode", "CommentatorGetNumMaps", "CommentatorGetNumPlayers", "CommentatorGetPlayerInfo", "CommentatorGetSkirmishMode", "CommentatorGetSkirmishQueueCount", "CommentatorGetSkirmishQueuePlayerInfo", "CommentatorLookatPlayer", "CommentatorRemovePlayer", "CommentatorRequestSkirmishMode", "CommentatorRequestSkirmishQueueData", "CommentatorSetBattlemaster", "CommentatorSetCamera", "CommentatorSetCameraCollision", "CommentatorSetMapAndInstanceIndex", "CommentatorSetMode", "CommentatorSetMoveSpeed", "CommentatorSetPlayerIndex", "CommentatorSetSkirmishMatchmakingMode", "CommentatorSetTargetHeightOffset", "CommentatorStartInstance", "CommentatorStartSkirmishMatch", "CommentatorToggleMode", "CommentatorUpdateMapInfo", "CommentatorUpdatePlayerInfo", "CommentatorZoomIn", "CommentatorZoomOut", "CompanionButton_OnClick", "CompanionButton_OnDrag", "CompanionButton_OnEnter", "CompanionButton_OnLoad", "CompanionButton_OnModifiedClick", "CompanionSummonButton_OnClick", "ComplainChat", "ComplainInboxItem", "CompleteLFGRoleCheck", "CompleteQuest", "ComputePetBonus", "ConfirmAcceptQuest", "ConfirmBindOnUse", "ConfirmBinder", "ConfirmLootRoll", "ConfirmLootSlot", "ConfirmReadyCheck", "ConfirmSummon", "ConfirmTalentWipe", "ConsoleAddMessage", "ConsoleExec", "ConsolePrint", "ConsolidatedBuffs_OnEnter", "ConsolidatedBuffs_OnHide", "ConsolidatedBuffs_OnShow", "ConsolidatedBuffs_OnUpdate", "ConsolidatedBuffs_UpdateAllAnchors", "ContainerFrameItemButton_OnClick", "ContainerFrameItemButton_OnDrag", "ContainerFrameItemButton_OnEnter", "ContainerFrameItemButton_OnLoad", "ContainerFrameItemButton_OnModifiedClick", "ContainerFrame_GenerateFrame", "ContainerFrame_GetExtendedPriceString", "ContainerFrame_GetOpenFrame", "ContainerFrame_OnEvent", "ContainerFrame_OnHide", "ContainerFrame_OnLoad", "ContainerFrame_OnShow", "ContainerFrame_Update", "ContainerFrame_UpdateCooldown", "ContainerFrame_UpdateCooldowns", "ContainerFrame_UpdateLocked", "ContainerFrame_UpdateLockedItem", "ContainerIDToInventoryID", "ContainerRefundItemPurchase", "ConvertToRaid", "CooldownFrame_SetTimer", "CopyTable", "CreateChatChannelList", "CreateFont", "CreateFrame", "CreateMacro", "CreateMiniWorldMapArrowFrame", "CreateWorldMapArrowFrame", "CursorCanGoInSlot", "CursorHasItem", "CursorHasMacro", "CursorHasMoney", "CursorHasSpell", "CursorOnUpdate", "CursorUpdate", "DamageColor_OpenColorPicker", "DeathKnniggetThrobFunction", "DebuffButton_UpdateAnchors", "DeclineArenaTeam", "DeclineGroup", "DeclineGuild", "DeclineInvite", "DeclineLevelGrant", "DeclineName", "DeclineQuest", "DeclineResurrect", "DelIgnore", "DelMute", "DeleteCursorItem", "DeleteEquipmentSet", "DeleteFile", "DeleteGMTicket", "DeleteInboxItem", "DeleteMacro", "DemoteAssistant", "DepositGuildBankMoney", "DescendStop", "DestroyTotem", "DetectWowMouse", "DisableAddOn", "DisableAllAddOns", "DisablePagingButton", "DisableSpellAutocast", "Disable_BagButtons", "DismissCompanion", "Dismount", "DisplayChannelOwner", "DisplayChannelVoiceOff", "DisplayChannelVoiceOn", "DoEmote", "DoReadyCheck", "DoTradeSkill", "DownloadSettings", "DrawOneHopLines", "DrawRouteLine", "DressUpItemLink", "DressUpTexturePath", "DropCursorMoney", "DropItemOnUnit", "DungeonCompletionAlertFrameReward_OnEnter", "DungeonCompletionAlertFrameReward_OnLeave", "DungeonCompletionAlertFrameReward_SetReward", "DungeonCompletionAlertFrame_FixAnchors", "DungeonCompletionAlertFrame_OnLoad", "DungeonCompletionAlertFrame_ShowAlert", "DungeonUsesTerrainMap", "DurabilityFrame_SetAlerts", "DynamicScrollFrame_CreateButtons", "DynamicScrollFrame_OnVerticalScroll", "DynamicScrollFrame_UnlockAllHighlights", "DynamicScrollFrame_Update", "EasyMenu", "EasyMenu_Initialize", "EditBox_ClearFocus", "EditBox_ClearHighlight", "EditBox_HandleTabbing", "EditBox_HighlightText", "EditBox_SetFocus", "EditMacro", "EjectPassengerFromSeat", "EmoteMenu_Click", "EmoteMenu_OnLoad", "EnableAddOn", "EnableAllAddOns", "EnablePagingButton", "EnableSpellAutocast", "Enable_BagButtons", "EndBoundTradeable", "EndRefund", "EnumerateFrames", "EnumerateServerChannels", "EquipCursorItem", "EquipItemByName", "EquipPendingItem", "EquipmentManagerClearIgnoredSlotsForSave", "EquipmentManagerIgnoreSlotForSave", "EquipmentManagerIsSlotIgnoredForSave", "EquipmentManagerUnignoreSlotForSave", "EquipmentManager_EquipContainerItem", "EquipmentManager_EquipInventoryItem", "EquipmentManager_EquipItemByLocation", "EquipmentManager_EquipSet", "EquipmentManager_GetItemInfoByLocation", "EquipmentManager_OnEvent", "EquipmentManager_PutItemInInventory", "EquipmentManager_RunAction", "EquipmentManager_UnequipItemInSlot", "EquipmentManager_UnpackLocation", "EquipmentManager_UpdateFreeBagSpace", "EquipmentSetContainsLockedItems", "ExhaustionTick_OnEvent", "ExhaustionTick_OnLoad", "ExhaustionTick_OnUpdate", "ExhaustionToolTipText", "ExpandAllFactionHeaders", "ExpandChannelHeader", "ExpandCurrencyList", "ExpandFactionHeader", "ExpandQuestHeader", "ExpandSkillHeader", "ExpandTradeSkillSubClass", "ExpandTrainerSkillLine", "EyeTemplate_OnUpdate", "EyeTemplate_StartAnimating", "EyeTemplate_StopAnimating", "FCFChannelDropDown_OnClick", "FCFClickAnywhereButton_OnEvent", "FCFClickAnywhereButton_OnLoad", "FCFClickAnywhereButton_UpdateState", "FCFDockOverflowButton_OnClick", "FCFDockOverflowButton_OnEvent", "FCFDockOverflowButton_UpdatePulseState", "FCFDockOverflowListButton_OnClick", "FCFDockOverflowListButton_SetValue", "FCFDockOverflowList_Update", "FCFDockOverflow_CloseLists", "FCFDockScrollFrame_GetLeftmostTab", "FCFDockScrollFrame_GetScrollDistanceNeeded", "FCFDockScrollFrame_JumpToTab", "FCFDockScrollFrame_OnUpdate", "FCFDock_AddChatFrame", "FCFDock_CalculateTabSize", "FCFDock_ForceReanchoring", "FCFDock_GetChatFrames", "FCFDock_GetInsertIndex", "FCFDock_GetSelectedWindow", "FCFDock_HasDockedChatFrame", "FCFDock_HideInsertHighlight", "FCFDock_OnEvent", "FCFDock_OnLoad", "FCFDock_OnPrimarySizeChanged", "FCFDock_OnUpdate", "FCFDock_PlaceInsertHighlight", "FCFDock_RemoveChatFrame", "FCFDock_ScrollToSelectedTab", "FCFDock_SelectWindow", "FCFDock_SetDirty", "FCFDock_SetPrimary", "FCFDock_UpdateTabs", "FCFDropDown_LoadChannels", "FCFDropDown_LoadChatTypes", "FCFManager_GetNumDedicatedFrames", "FCFManager_RegisterDedicatedFrame", "FCFManager_ShouldSuppressMessage", "FCFManager_UnregisterDedicatedFrame", "FCFMessageTypeDropDown_OnClick", "FCFMin_UpdateColors", "FCFOptionsDropDown_Initialize", "FCFOptionsDropDown_OnLoad", "FCFTab_OnDragStop", "FCFTab_OnUpdate", "FCFTab_UpdateAlpha", "FCFTab_UpdateColors", "FCF_CancelFontColorSettings", "FCF_CancelWindowColorSettings", "FCF_Close", "FCF_CopyChatSettings", "FCF_CreateMinimizedFrame", "FCF_DockFrame", "FCF_DockUpdate", "FCF_FadeInChatFrame", "FCF_FadeOutChatFrame", "FCF_FlagMinimizedPositionReset", "FCF_FlashTab", "FCF_GetButtonSide", "FCF_GetChatWindowInfo", "FCF_GetCurrentChatFrame", "FCF_GetCurrentChatFrameID", "FCF_GetNumActiveChatFrames", "FCF_HideOnFadeFinished", "FCF_IsValidChatFrame", "FCF_LeaveConversation", "FCF_LoadChatSubTypes", "FCF_MaximizeFrame", "FCF_MinimizeFrame", "FCF_NewChatWindow", "FCF_OnUpdate", "FCF_OpenNewWindow", "FCF_OpenTemporaryWindow", "FCF_PopInWindow", "FCF_RenameChatWindow_Popup", "FCF_ResetAllWindows", "FCF_ResetChatWindows", "FCF_RestoreChatsToFrame", "FCF_RestorePositionAndDimensions", "FCF_SaveDock", "FCF_SavePositionAndDimensions", "FCF_SelectDockFrame", "FCF_SetButtonSide", "FCF_SetChatTypeColor", "FCF_SetChatWindowBackGroundColor", "FCF_SetChatWindowFontSize", "FCF_SetChatWindowOpacity", "FCF_SetExpandedUninteractable", "FCF_SetLocked", "FCF_SetTabPosition", "FCF_SetTemporaryWindowType", "FCF_SetUninteractable", "FCF_SetWindowAlpha", "FCF_SetWindowColor", "FCF_SetWindowName", "FCF_Set_NormalChat", "FCF_StartAlertFlash", "FCF_StopAlertFlash", "FCF_StopDragging", "FCF_StripChatMsg", "FCF_TabCompare", "FCF_Tab_OnClick", "FCF_ToggleLock", "FCF_ToggleUninteractable", "FCF_UnDockFrame", "FCF_UpdateButtonSide", "FCF_UpdateDockPosition", "FactionToggleAtWar", "FadingFrame_OnLoad", "FadingFrame_OnUpdate", "FadingFrame_SetFadeInTime", "FadingFrame_SetFadeOutTime", "FadingFrame_SetHoldTime", "FadingFrame_Show", "FauxScrollFrame_GetOffset", "FauxScrollFrame_OnVerticalScroll", "FauxScrollFrame_SetOffset", "FauxScrollFrame_Update", "FillLocalizedClassList", "FindSpellBookSlotByID", "FlagTutorial", "FlipCameraYaw", "FloatingChatFrameManager_OnEvent", "FloatingChatFrameManager_OnLoad", "FloatingChatFrame_OnEvent", "FloatingChatFrame_OnLoad", "FloatingChatFrame_OnMouseScroll", "FloatingChatFrame_Update", "FocusFrameDropDown_Initialize", "FocusFrame_IsLocked", "FocusFrame_OnDragStart", "FocusFrame_OnDragStop", "FocusFrame_SetLock", "FocusFrame_SetSmallSize", "FocusUnit", "FollowUnit", "ForceGossip", "ForceLogout", "ForceQuit", "FormatPaperDollTooltipStat", "FrameXML_Debug", "FriendsFrameAddFriendButton_OnClick", "FriendsFrameBNDropDown_Initialize", "FriendsFrameBNOfflineDropDown_Initialize", "FriendsFrameBroadcastInput_OnClearPressed", "FriendsFrameBroadcastInput_OnEnterPressed", "FriendsFrameBroadcastInput_OnEscapePressed", "FriendsFrameBroadcastInput_UpdateDisplay", "FriendsFrameDropDown_Initialize", "FriendsFrameFriendButton_OnClick", "FriendsFrameGuildStatusButton_OnClick", "FriendsFrameIgnoreButton_OnClick", "FriendsFrameMuteButton_OnClick", "FriendsFrameOfflineDropDown_Initialize", "FriendsFramePendingScrollFrame_AdjustScroll", "FriendsFrameSendMessageButton_OnClick", "FriendsFrameStatusDropDown_Initialize", "FriendsFrameStatusDropDown_OnLoad", "FriendsFrameStatusDropDown_OnShow", "FriendsFrameStatusDropDown_ShowTooltip", "FriendsFrameStatusDropDown_Update", "FriendsFrameTooltip_SetLine", "FriendsFrameTooltip_Show", "FriendsFrameUnsquelchButton_OnClick", "FriendsFrameWhoButton_OnClick", "FriendsFrame_CheckBattlenetStatus", "FriendsFrame_ClickSummonButton", "FriendsFrame_GetLastOnline", "FriendsFrame_GetTopButton", "FriendsFrame_GroupInvite", "FriendsFrame_OnEvent", "FriendsFrame_OnHide", "FriendsFrame_OnLoad", "FriendsFrame_OnShow", "FriendsFrame_RemoveFriend", "FriendsFrame_SelectFriend", "FriendsFrame_SelectSquelched", "FriendsFrame_SendMessage", "FriendsFrame_SetButton", "FriendsFrame_SetOnlineStatus", "FriendsFrame_ShowBNDropdown", "FriendsFrame_ShowDropdown", "FriendsFrame_ShowSubFrame", "FriendsFrame_SummonButton_OnEvent", "FriendsFrame_SummonButton_OnShow", "FriendsFrame_SummonButton_Update", "FriendsFrame_UnBlock", "FriendsFrame_UnIgnore", "FriendsFrame_UnMute", "FriendsFrame_Update", "FriendsFriendsButton_OnClick", "FriendsFriendsFrameDropDown_Initialize", "FriendsFriendsFrameDropDown_OnClick", "FriendsFriendsFrame_Close", "FriendsFriendsFrame_OnEvent", "FriendsFriendsFrame_Reset", "FriendsFriendsFrame_SendRequest", "FriendsFriendsFrame_Show", "FriendsFriendsList_Update", "FriendsList_Update", "GMChatFrame_LoadUI", "GMReportLag", "GMRequestPlayerInfo", "GMResponseNeedMoreHelp", "GMResponseResolve", "GMSurveyAnswer", "GMSurveyAnswerSubmit", "GMSurveyCommentSubmit", "GMSurveyFrame_LoadUI", "GMSurveyNumAnswers", "GMSurveyQuestion", "GMSurveySubmit", "GameMovieFinished", "GameTimeFrame_OnClick", "GameTimeFrame_OnEnter", "GameTimeFrame_OnEvent", "GameTimeFrame_OnLoad", "GameTimeFrame_OnUpdate", "GameTimeFrame_SetDate", "GameTime_ComputeMilitaryTime", "GameTime_ComputeMinutes", "GameTime_ComputeStandardTime", "GameTime_GetFormattedTime", "GameTime_GetGameTime", "GameTime_GetLocalTime", "GameTime_GetTime", "GameTime_UpdateTooltip", "GameTooltip_AddNewbieTip", "GameTooltip_ClearMoney", "GameTooltip_ClearStatusBars", "GameTooltip_Hide", "GameTooltip_HideResetCursor", "GameTooltip_OnHide", "GameTooltip_OnLoad", "GameTooltip_OnTooltipAddMoney", "GameTooltip_OnUpdate", "GameTooltip_SetDefaultAnchor", "GameTooltip_ShowCompareItem", "GameTooltip_ShowStatusBar", "GameTooltip_UnitColor", "GearManagerDialogDeleteSet_OnClick", "GearManagerDialogEquipSet_OnClick", "GearManagerDialogPopupCancel_OnClick", "GearManagerDialogPopupOkay_OnClick", "GearManagerDialogPopupOkay_Update", "GearManagerDialogPopup_OnHide", "GearManagerDialogPopup_OnLoad", "GearManagerDialogPopup_OnShow", "GearManagerDialogPopup_Update", "GearManagerDialogSaveSet_OnClick", "GearManagerDialog_OnEvent", "GearManagerDialog_OnHide", "GearManagerDialog_OnLoad", "GearManagerDialog_OnShow", "GearManagerDialog_Update", "GearSetButton_OnClick", "GearSetButton_OnEnter", "GearSetPopupButton_OnClick", "GetAbandonQuestItems", "GetAbandonQuestName", "GetAccountExpansionLevel", "GetAchievementCategory", "GetAchievementComparisonInfo", "GetAchievementCriteriaInfo", "GetAchievementInfo", "GetAchievementInfoFromCriteria", "GetAchievementLink", "GetAchievementNumCriteria", "GetAchievementNumRewards", "GetAchievementReward", "GetActionAutocast", "GetActionBarPage", "GetActionBarToggles", "GetActionCooldown", "GetActionCount", "GetActionInfo", "GetActionText", "GetActionTexture", "GetActiveLevel", "GetActiveTalentGroup", "GetActiveTitle", "GetActiveVoiceChannel", "GetAddOnCPUUsage", "GetAddOnDependencies", "GetAddOnInfo", "GetAddOnMemoryUsage", "GetAddOnMetadata", "GetAdjustedSkillPoints", "GetAllowLowLevelRaid", "GetAreaSpiritHealerTime", "GetArenaCurrency", "GetArenaTeam", "GetArenaTeamGdfInfo", "GetArenaTeamRosterInfo", "GetArenaTeamRosterSelection", "GetArenaTeamRosterShowOffline", "GetArmorPenetration", "GetAttackPowerForStat", "GetAuctionHouseDepositRate", "GetAuctionInvTypes", "GetAuctionItemClasses", "GetAuctionItemInfo", "GetAuctionItemLink", "GetAuctionItemSubClasses", "GetAuctionItemTimeLeft", "GetAuctionSellItemInfo", "GetAuctionSort", "GetAutoCompletePresenceID", "GetAutoCompleteResults", "GetAvailableLevel", "GetAvailableQuestInfo", "GetAvailableRoles", "GetAvailableTitle", "GetBackgroundTexCoordsForRole", "GetBackpackCurrencyInfo", "GetBackpackFrame", "GetBagName", "GetBankSlotCost", "GetBarberShopStyleInfo", "GetBarberShopTotalCost", "GetBaseMip", "GetBattlefieldArenaFaction", "GetBattlefieldEstimatedWaitTime", "GetBattlefieldFlagPosition", "GetBattlefieldInfo", "GetBattlefieldInstanceExpiration", "GetBattlefieldInstanceInfo", "GetBattlefieldInstanceRunTime", "GetBattlefieldMapIconScale", "GetBattlefieldPortExpiration", "GetBattlefieldPosition", "GetBattlefieldScore", "GetBattlefieldStatData", "GetBattlefieldStatInfo", "GetBattlefieldStatus", "GetBattlefieldTeamInfo", "GetBattlefieldTimeWaited", "GetBattlefieldVehicleInfo", "GetBattlefieldWinner", "GetBattlegroundInfo", "GetBidderAuctionItems", "GetBillingTimeRested", "GetBindLocation", "GetBinding", "GetBindingAction", "GetBindingByKey", "GetBindingFromClick", "GetBindingKey", "GetBindingText", "GetBlockChance", "GetBonusBarOffset", "GetBuildInfo", "GetBuybackItemInfo", "GetBuybackItemLink", "GetCVar", "GetCVarAbsoluteMax", "GetCVarAbsoluteMin", "GetCVarBool", "GetCVarDefault", "GetCVarInfo", "GetCVarMax", "GetCVarMin", "GetCategoryInfo", "GetCategoryList", "GetCategoryNumAchievements", "GetChannelDisplayInfo", "GetChannelList", "GetChannelName", "GetChannelRosterInfo", "GetChatTypeIndex", "GetChatUnitColor", "GetChatWindowChannels", "GetChatWindowInfo", "GetChatWindowMessages", "GetChatWindowSavedDimensions", "GetChatWindowSavedPosition", "GetClickFrame", "GetCoinIcon", "GetCoinText", "GetCoinTextureString", "GetColoredName", "GetCombatRating", "GetCombatRatingBonus", "GetComboPoints", "GetCompanionCooldown", "GetCompanionInfo", "GetComparisonAchievementPoints", "GetComparisonCategoryNumAchievements", "GetComparisonStatistic", "GetContainerFreeSlots", "GetContainerItemCooldown", "GetContainerItemDurability", "GetContainerItemGems", "GetContainerItemID", "GetContainerItemInfo", "GetContainerItemLink", "GetContainerItemPurchaseInfo", "GetContainerItemPurchaseItem", "GetContainerItemQuestInfo", "GetContainerNumFreeSlots", "GetContainerNumSlots", "GetCorpseMapPosition", "GetCorpseRecoveryDelay", "GetCritChance", "GetCritChanceFromAgility", "GetCurrencyListInfo", "GetCurrencyListSize", "GetCurrentArenaSeason", "GetCurrentBindingSet", "GetCurrentGuildBankTab", "GetCurrentKeyBoardFocus", "GetCurrentMapAreaID", "GetCurrentMapContinent", "GetCurrentMapDungeonLevel", "GetCurrentMapZone", "GetCurrentMultisampleFormat", "GetCurrentResolution", "GetCurrentTitle", "GetCursorInfo", "GetCursorMoney", "GetCursorPosition", "GetDailyQuestsCompleted", "GetDamageBonusStat", "GetDeathReleasePosition", "GetDebugStats", "GetDebugZoneMap", "GetDefaultLanguage", "GetDenominationsFromCopper", "GetDodgeBlockParryChanceFromDefense", "GetDodgeChance", "GetDungeonDifficulty", "GetDungeonNameWithDifficulty", "GetEquipmentSetIconInfo", "GetEquipmentSetInfo", "GetEquipmentSetInfoByName", "GetEquipmentSetItemIDs", "GetEquipmentSetLocations", "GetEventCPUUsage", "GetExistingLocales", "GetExistingSocketInfo", "GetExistingSocketLink", "GetExpansionLevel", "GetExpertise", "GetExpertisePercent", "GetExtendedItemInfo", "GetFacialHairCustomization", "GetFactionInfo", "GetFactionInfoByID", "GetFarclip", "GetFirstTradeSkill", "GetFixedLink", "GetFrameCPUUsage", "GetFrameHandle", "GetFrameHandleFrame", "GetFramerate", "GetFramesRegisteredForEvent", "GetFriendInfo", "GetFullRaidList", "GetFunctionCPUUsage", "GetGMStatus", "GetGMTicket", "GetGMTicketCategories", "GetGameTime", "GetGamma", "GetGlyphLink", "GetGlyphSocketInfo", "GetGossipActiveQuests", "GetGossipAvailableQuests", "GetGossipOptions", "GetGossipText", "GetGreetingText", "GetGroupPreviewTalentPointsSpent", "GetGuildBankItemInfo", "GetGuildBankItemLink", "GetGuildBankMoney", "GetGuildBankMoneyTransaction", "GetGuildBankTabCost", "GetGuildBankTabInfo", "GetGuildBankTabPermissions", "GetGuildBankText", "GetGuildBankTransaction", "GetGuildBankWithdrawLimit", "GetGuildBankWithdrawMoney", "GetGuildCharterCost", "GetGuildEventInfo", "GetGuildInfo", "GetGuildInfoText", "GetGuildRosterInfo", "GetGuildRosterLastOnline", "GetGuildRosterMOTD", "GetGuildRosterSelection", "GetGuildRosterShowOffline", "GetGuildTabardFileNames", "GetHairCustomization", "GetHolidayBGHonorCurrencyBonuses", "GetHonorCurrency", "GetIgnoreName", "GetInboxHeaderInfo", "GetInboxInvoiceInfo", "GetInboxItem", "GetInboxItemLink", "GetInboxNumItems", "GetInboxText", "GetInspectArenaTeamData", "GetInspectHonorData", "GetInstanceBootTimeRemaining", "GetInstanceDifficulty", "GetInstanceInfo", "GetInstanceLockTimeRemaining", "GetInstanceLockTimeRemainingEncounter", "GetInventoryAlertStatus", "GetInventoryItemBroken", "GetInventoryItemCooldown", "GetInventoryItemCount", "GetInventoryItemDurability", "GetInventoryItemGems", "GetInventoryItemID", "GetInventoryItemLink", "GetInventoryItemQuality", "GetInventoryItemTexture", "GetInventoryItemsForSlot", "GetInventorySlotInfo", "GetItemCooldown", "GetItemCount", "GetItemFamily", "GetItemGem", "GetItemIcon", "GetItemInfo", "GetItemQualityColor", "GetItemSpell", "GetItemStatDelta", "GetItemStats", "GetItemUniqueness", "GetKeyRingSize", "GetKnownSlotFromHighestRankSlot", "GetLFDChoiceCollapseState", "GetLFDChoiceEnabledState", "GetLFDChoiceInfo", "GetLFDChoiceLockedState", "GetLFDChoiceOrder", "GetLFDLockInfo", "GetLFDLockPlayerCount", "GetLFGBootProposal", "GetLFGCompletionReward", "GetLFGCompletionRewardItem", "GetLFGDeserterExpiration", "GetLFGDungeonInfo", "GetLFGDungeonRewardInfo", "GetLFGDungeonRewardLink", "GetLFGDungeonRewards", "GetLFGInfoLocal", "GetLFGInfoServer", "GetLFGMode", "GetLFGProposal", "GetLFGProposalEncounter", "GetLFGProposalMember", "GetLFGQueueStats", "GetLFGQueuedList", "GetLFGRandomCooldownExpiration", "GetLFGRandomDungeonInfo", "GetLFGRoleUpdate", "GetLFGRoleUpdateMember", "GetLFGRoleUpdateSlot", "GetLFGRoles", "GetLFGTypes", "GetLFRChoiceOrder", "GetLanguageByIndex", "GetLastQueueStatusIndex", "GetLatestCompletedAchievements", "GetLatestCompletedComparisonAchievements", "GetLatestThreeSenders", "GetLatestUpdatedComparisonStats", "GetLatestUpdatedStats", "GetLocale", "GetLootMethod", "GetLootRollItemInfo", "GetLootRollItemLink", "GetLootRollTimeLeft", "GetLootSlotInfo", "GetLootSlotLink", "GetLootThreshold", "GetMacroBody", "GetMacroIconInfo", "GetMacroIndexByName", "GetMacroInfo", "GetMacroItem", "GetMacroItemIconInfo", "GetMacroSpell", "GetManaRegen", "GetManagedEnvironment", "GetMapContinents", "GetMapDebugObjectInfo", "GetMapInfo", "GetMapLandmarkInfo", "GetMapOverlayInfo", "GetMapZones", "GetMasterLootCandidate", "GetMaterialTextColors", "GetMaxArenaCurrency", "GetMaxCombatRatingBonus", "GetMaxDailyQuests", "GetMaxUIPanelsWidth", "GetMerchantItemCostInfo", "GetMerchantItemCostItem", "GetMerchantItemInfo", "GetMerchantItemLink", "GetMerchantItemMaxStack", "GetMerchantNumItems", "GetMessageTypeColor", "GetMessageTypeState", "GetMinigameState", "GetMinigameType", "GetMinimapZoneText", "GetMirrorTimerInfo", "GetMirrorTimerProgress", "GetModifiedClick", "GetModifiedClickAction", "GetMoney", "GetMoneyString", "GetMouseButtonClicked", "GetMouseButtonName", "GetMouseFocus", "GetMovieResolution", "GetMultiCastBarOffset", "GetMultiCastTotemSpells", "GetMultisampleFormats", "GetMuteName", "GetMuteStatus", "GetNetStats", "GetNewSocketInfo", "GetNewSocketLink", "GetNextAchievement", "GetNextCompleatedTutorial", "GetNextStableSlotCost", "GetNumActiveQuests", "GetNumAddOns", "GetNumArenaOpponents", "GetNumArenaTeamMembers", "GetNumAuctionItems", "GetNumAvailableQuests", "GetNumBankSlots", "GetNumBattlefieldFlagPositions", "GetNumBattlefieldPositions", "GetNumBattlefieldScores", "GetNumBattlefieldStats", "GetNumBattlefieldVehicles", "GetNumBattlefields", "GetNumBattlegroundTypes", "GetNumBindings", "GetNumBuybackItems", "GetNumChannelMembers", "GetNumCompanions", "GetNumComparisonCompletedAchievements", "GetNumCompletedAchievements", "GetNumDeclensionSets", "GetNumDisplayChannels", "GetNumDungeonMapLevels", "GetNumEquipmentSets", "GetNumFactions", "GetNumFrames", "GetNumFriends", "GetNumGlyphSockets", "GetNumGossipActiveQuests", "GetNumGossipAvailableQuests", "GetNumGossipOptions", "GetNumGuildBankMoneyTransactions", "GetNumGuildBankTabs", "GetNumGuildBankTransactions", "GetNumGuildEvents", "GetNumGuildMembers", "GetNumIgnores", "GetNumLanguages", "GetNumLootItems", "GetNumMacroIcons", "GetNumMacroItemIcons", "GetNumMacros", "GetNumMapDebugObjects", "GetNumMapLandmarks", "GetNumMapOverlays", "GetNumModifiedClickActions", "GetNumMutes", "GetNumPackages", "GetNumPartyMembers", "GetNumPetitionItems", "GetNumPetitionNames", "GetNumQuestChoices", "GetNumQuestItemDrops", "GetNumQuestItems", "GetNumQuestLeaderBoards", "GetNumQuestLogChoices", "GetNumQuestLogEntries", "GetNumQuestLogRewardFactions", "GetNumQuestLogRewards", "GetNumQuestRewards", "GetNumQuestWatches", "GetNumRaidMembers", "GetNumRandomDungeons", "GetNumRoutes", "GetNumSavedInstances", "GetNumShapeshiftForms", "GetNumSkillLines", "GetNumSockets", "GetNumSpellTabs", "GetNumStablePets", "GetNumStableSlots", "GetNumStationeries", "GetNumTalentGroups", "GetNumTalentTabs", "GetNumTalents", "GetNumTitles", "GetNumTrackedAchievements", "GetNumTrackingTypes", "GetNumTradeSkills", "GetNumTrainerServices", "GetNumVoiceSessionMembersBySessionID", "GetNumVoiceSessions", "GetNumWatchedTokens", "GetNumWhoResults", "GetNumWorldStateUI", "GetObjectiveText", "GetOptOutOfLoot", "GetOwnerAuctionItems", "GetPVPDesired", "GetPVPLifetimeStats", "GetPVPRankInfo", "GetPVPRankProgress", "GetPVPSessionStats", "GetPVPTimer", "GetPVPYesterdayStats", "GetPackageInfo", "GetParryChance", "GetPartyAssignment", "GetPartyLFGBackfillInfo", "GetPartyLeaderIndex", "GetPartyMember", "GetPetActionCooldown", "GetPetActionInfo", "GetPetActionSlotUsable", "GetPetActionsUsable", "GetPetExperience", "GetPetFoodTypes", "GetPetHappiness", "GetPetIcon", "GetPetSpellBonusDamage", "GetPetTalentTree", "GetPetTimeRemaining", "GetPetitionInfo", "GetPetitionItemInfo", "GetPetitionNameInfo", "GetPlayerFacing", "GetPlayerInfoByGUID", "GetPlayerMapPosition", "GetPlayerTradeMoney", "GetPossessInfo", "GetPowerRegen", "GetPrevCompleatedTutorial", "GetPreviewTalentPointsSpent", "GetPreviousAchievement", "GetPreviousArenaSeason", "GetProgressText", "GetQuestBackgroundMaterial", "GetQuestDifficultyColor", "GetQuestGreenRange", "GetQuestIndexForTimer", "GetQuestIndexForWatch", "GetQuestItemInfo", "GetQuestItemLink", "GetQuestLink", "GetQuestLogChoiceInfo", "GetQuestLogCompletionText", "GetQuestLogGroupNum", "GetQuestLogItemDrop", "GetQuestLogItemLink", "GetQuestLogLeaderBoard", "GetQuestLogPushable", "GetQuestLogQuestText", "GetQuestLogRequiredMoney", "GetQuestLogRewardArenaPoints", "GetQuestLogRewardFactionInfo", "GetQuestLogRewardHonor", "GetQuestLogRewardInfo", "GetQuestLogRewardMoney", "GetQuestLogRewardSpell", "GetQuestLogRewardTalents", "GetQuestLogRewardTitle", "GetQuestLogRewardXP", "GetQuestLogSelection", "GetQuestLogSpecialItemCooldown", "GetQuestLogSpecialItemInfo", "GetQuestLogSpellLink", "GetQuestLogTimeLeft", "GetQuestLogTitle", "GetQuestMoneyToGet", "GetQuestPOILeaderBoard", "GetQuestResetTime", "GetQuestReward", "GetQuestSortIndex", "GetQuestSpellLink", "GetQuestText", "GetQuestTimers", "GetQuestWatchIndex", "GetQuestWorldMapAreaID", "GetQuestsCompleted", "GetRaidDifficulty", "GetRaidRosterInfo", "GetRaidRosterSelection", "GetRaidTargetIndex", "GetRandomArgument", "GetRandomBGHonorCurrencyBonuses", "GetRandomDungeonBestChoice", "GetRangedCritChance", "GetReadonlyRestrictedTable", "GetReadyCheckStatus", "GetReadyCheckTimeLeft", "GetRealNumPartyMembers", "GetRealNumRaidMembers", "GetRealZoneText", "GetRealmName", "GetRefreshRates", "GetReleaseTimeRemaining", "GetRepairAllCost", "GetResSicknessDuration", "GetRestState", "GetRewardArenaPoints", "GetRewardHonor", "GetRewardMoney", "GetRewardSpell", "GetRewardTalents", "GetRewardText", "GetRewardTitle", "GetRewardXP", "GetRuneCooldown", "GetRuneCount", "GetRuneType", "GetRunningMacro", "GetRunningMacroButton", "GetSavedInstanceInfo", "GetScreenHeight", "GetScreenHeightScale", "GetScreenResolutions", "GetScreenWidth", "GetScreenWidthScale", "GetScriptCPUUsage", "GetSelectedAuctionItem", "GetSelectedBattlefield", "GetSelectedDisplayChannel", "GetSelectedFaction", "GetSelectedFriend", "GetSelectedIgnore", "GetSelectedMute", "GetSelectedSkill", "GetSelectedStablePet", "GetSelectedStationeryTexture", "GetSendMailCOD", "GetSendMailItem", "GetSendMailItemLink", "GetSendMailMoney", "GetSendMailPrice", "GetShapeshiftForm", "GetShapeshiftFormCooldown", "GetShapeshiftFormInfo", "GetShieldBlock", "GetSkillLineInfo", "GetSocketItemBoundTradeable", "GetSocketItemInfo", "GetSocketItemRefundable", "GetSocketTypes", "GetSpellAutocast", "GetSpellBonusDamage", "GetSpellBonusHealing", "GetSpellCooldown", "GetSpellCount", "GetSpellCritChance", "GetSpellCritChanceFromIntellect", "GetSpellInfo", "GetSpellLink", "GetSpellName", "GetSpellNameColor", "GetSpellPenetration", "GetSpellTabInfo", "GetSpellTexture", "GetStablePetFoodTypes", "GetStablePetInfo", "GetStationeryInfo", "GetStatistic", "GetStatisticsCategoryList", "GetSubZoneText", "GetSuggestedGroupNum", "GetSummonConfirmAreaName", "GetSummonConfirmSummoner", "GetSummonConfirmTimeLeft", "GetSummonFriendCooldown", "GetTabardCreationCost", "GetTabardInfo", "GetTableColor", "GetTalentInfo", "GetTalentLink", "GetTalentPrereqs", "GetTalentTabInfo", "GetTargetTradeMoney", "GetTaxiBenchmarkMode", "GetTerrainMip", "GetTexCoordsByGrid", "GetTexCoordsForRole", "GetTexLodBias", "GetText", "GetThreatStatusColor", "GetTime", "GetTimeToWellRested", "GetTimerTextColor", "GetTitleName", "GetTitleText", "GetTotalAchievementPoints", "GetTotemInfo", "GetTotemTimeLeft", "GetTrackedAchievements", "GetTrackingInfo", "GetTrackingTexture", "GetTradePlayerItemInfo", "GetTradePlayerItemLink", "GetTradeSkillCooldown", "GetTradeSkillDescription", "GetTradeSkillIcon", "GetTradeSkillInfo", "GetTradeSkillInvSlotFilter", "GetTradeSkillInvSlots", "GetTradeSkillItemLevelFilter", "GetTradeSkillItemLink", "GetTradeSkillItemNameFilter", "GetTradeSkillLine", "GetTradeSkillListLink", "GetTradeSkillNumMade", "GetTradeSkillNumReagents", "GetTradeSkillReagentInfo", "GetTradeSkillReagentItemLink", "GetTradeSkillRecipeLink", "GetTradeSkillSelectionIndex", "GetTradeSkillSubClassFilter", "GetTradeSkillSubClasses", "GetTradeSkillTools", "GetTradeTargetItemInfo", "GetTradeTargetItemLink", "GetTradeskillRepeatCount", "GetTrainerGreetingText", "GetTrainerSelectionIndex", "GetTrainerServiceAbilityReq", "GetTrainerServiceCost", "GetTrainerServiceDescription", "GetTrainerServiceIcon", "GetTrainerServiceInfo", "GetTrainerServiceItemLink", "GetTrainerServiceLevelReq", "GetTrainerServiceNumAbilityReq", "GetTrainerServiceSkillLine", "GetTrainerServiceSkillReq", "GetTrainerServiceStepIncrease", "GetTrainerServiceStepReq", "GetTrainerServiceTypeFilter", "GetTrainerSkillLineFilter", "GetTrainerSkillLines", "GetUIPanel", "GetUIPanelWidth", "GetUnitHealthModifier", "GetUnitHealthRegenRateFromSpirit", "GetUnitManaRegenRateFromSpirit", "GetUnitMaxHealthModifier", "GetUnitName", "GetUnitPitch", "GetUnitPowerModifier", "GetUnitSpeed", "GetUnspentTalentPoints", "GetVehicleUIIndicator", "GetVehicleUIIndicatorSeat", "GetVideoCaps", "GetVoiceCurrentSessionID", "GetVoiceSessionInfo", "GetVoiceSessionMemberInfoBySessionID", "GetVoiceStatus", "GetWatchedFactionInfo", "GetWaterDetail", "GetWeaponEnchantInfo", "GetWhoInfo", "GetWintergraspWaitTime", "GetWorldPVPQueueStatus", "GetWorldStateUIInfo", "GetXPExhaustion", "GetZonePVPInfo", "GetZoneText", "GiveMasterLoot", "GlyphFrame_LoadUI", "GlyphMatchesSocket", "GossipFrameActiveQuestsUpdate", "GossipFrameAvailableQuestsUpdate", "GossipFrameOptionsUpdate", "GossipFrameUpdate", "GossipFrame_OnEvent", "GossipFrame_OnLoad", "GossipResize", "GossipTitleButton_OnClick", "GrantLevel", "GroupLootDropDown_GiveLoot", "GroupLootDropDown_Initialize", "GroupLootDropDown_OnLoad", "GroupLootFrame_DisableLootButton", "GroupLootFrame_EnableLootButton", "GroupLootFrame_OnEvent", "GroupLootFrame_OnHide", "GroupLootFrame_OnShow", "GroupLootFrame_OnUpdate", "GroupLootFrame_OpenNewFrame", "GuildBankFrame_LoadUI", "GuildBankTabPermissionsTab_OnClick", "GuildControlAddRank", "GuildControlCheckboxUpdate", "GuildControlDelRank", "GuildControlGetNumRanks", "GuildControlGetRankFlags", "GuildControlGetRankName", "GuildControlPopupAcceptButton_OnClick", "GuildControlPopupFrameAddRankButton_OnUpdate", "GuildControlPopupFrameDropDownButton_OnClick", "GuildControlPopupFrameDropDown_Initialize", "GuildControlPopupFrameDropDown_OnLoad", "GuildControlPopupFrameRemoveRankButton_OnClick", "GuildControlPopupFrameRemoveRankButton_OnUpdate", "GuildControlPopupFrame_Initialize", "GuildControlPopupFrame_OnEvent", "GuildControlPopupFrame_OnHide", "GuildControlPopupFrame_OnLoad", "GuildControlPopupFrame_OnShow", "GuildControlPopup_UpdateDepositCheckBox", "GuildControlPopupframe_Update", "GuildControlSaveRank", "GuildControlSetRank", "GuildControlSetRankFlag", "GuildDemote", "GuildDisband", "GuildEventLog_Update", "GuildFrameControlButton_OnUpdate", "GuildFrameGuildListToggleButton_OnClick", "GuildFramePopup_HideAll", "GuildFramePopup_Show", "GuildFrame_GetLastOnline", "GuildInfo", "GuildInvite", "GuildLeave", "GuildPromote", "GuildRegistrar_OnShow", "GuildRegistrar_ShowPurchaseFrame", "GuildRoster", "GuildRosterSetOfficerNote", "GuildRosterSetPublicNote", "GuildSetLeader", "GuildSetMOTD", "GuildStatus_Update", "GuildUninvite", "HandleModifiedItemClick", "HasAction", "HasCompletedAnyAchievement", "HasDebugZoneMap", "HasFilledPetition", "HasFullControl", "HasInspectHonorData", "HasKey", "HasLFGRestrictions", "HasMessageType", "HasMessageTypeGroup", "HasMultiCastActionBar", "HasMultiCastActionPage", "HasNewMail", "HasPetSpells", "HasPetUI", "HasSoulstone", "HasWandEquipped", "HealthBar_OnValueChanged", "HearthAndResurrectFromArea", "HelpFrameGMTalk_OnShow", "HelpFrameOpenTicketCancel_OnClick", "HelpFrameOpenTicketSubmit_OnClick", "HelpFrameReportIssue_OnShow", "HelpFrameStuck_OnShow", "HelpFrameViewResponseButton_OnLoad", "HelpFrameViewResponseIssueResolved_OnClick", "HelpFrameViewResponseMoreHelp_OnClick", "HelpFrame_HaveGMResponse", "HelpFrame_HaveGMTicket", "HelpFrame_IsGMTicketQueueActive", "HelpFrame_OnEvent", "HelpFrame_OnHide", "HelpFrame_OnLoad", "HelpFrame_OnShow", "HelpFrame_PopAllFrames", "HelpFrame_PopFrame", "HelpFrame_ShowFrame", "HelpReportLag", "HideBonusActionBar", "HideDropDownMenu", "HideMultiCastActionBar", "HideParentPanel", "HidePartyFrame", "HidePetActionBar", "HideRepairCursor", "HideTextStatusBarText", "HideUIPanel", "HideWatchedReputationBarText", "HonorFrame_OnEvent", "HonorFrame_OnLoad", "HonorFrame_Update", "HybridScrollFrameScrollButton_OnClick", "HybridScrollFrameScrollButton_OnUpdate", "HybridScrollFrameScrollChild_OnLoad", "HybridScrollFrame_CollapseButton", "HybridScrollFrame_CreateButtons", "HybridScrollFrame_ExpandButton", "HybridScrollFrame_GetOffset", "HybridScrollFrame_OnLoad", "HybridScrollFrame_OnMouseWheel", "HybridScrollFrame_OnValueChanged", "HybridScrollFrame_SetOffset", "HybridScrollFrame_Update", "HybridScrollFrame_UpdateButtonStates", "IgnoreList_SetHeader", "IgnoreList_Update", "InCinematic", "InCombatLockdown", "InGuildCheck", "InRepairMode", "InboxFrameItem_OnEnter", "InboxFrame_OnClick", "InboxFrame_OnModifiedClick", "InboxFrame_Update", "InboxGetMoreMail", "InboxItemCanDelete", "InboxNextPage", "InboxPrevPage", "InitWorldMapPing", "InitiateTrade", "InspectAchievements", "InspectFrame_LoadUI", "InspectUnit", "InstanceLock_OnEnter", "InteractUnit", "InterfaceAddOnsList_Update", "InterfaceCategoryList_Update", "InterfaceOptionsActionBarsPanel_OnEvent", "InterfaceOptionsActionBarsPanel_OnLoad", "InterfaceOptionsBattlenetPanel_OnLoad", "InterfaceOptionsBuffsPanel_OnEvent", "InterfaceOptionsBuffsPanel_OnLoad", "InterfaceOptionsCameraPanelStyleDropDown_Initialize", "InterfaceOptionsCameraPanelStyleDropDown_OnClick", "InterfaceOptionsCameraPanelStyleDropDown_OnEvent", "InterfaceOptionsCameraPanel_OnEvent", "InterfaceOptionsCameraPanel_OnLoad", "InterfaceOptionsCombatPanelFocusCastKeyDropDown_Initialize", "InterfaceOptionsCombatPanelFocusCastKeyDropDown_OnClick", "InterfaceOptionsCombatPanelFocusCastKeyDropDown_OnEvent", "InterfaceOptionsCombatPanelSelfCastKeyDropDown_Initialize", "InterfaceOptionsCombatPanelSelfCastKeyDropDown_OnClick", "InterfaceOptionsCombatPanelSelfCastKeyDropDown_OnEvent", "InterfaceOptionsCombatPanelTOTDropDown_Initialize", "InterfaceOptionsCombatPanelTOTDropDown_OnClick", "InterfaceOptionsCombatPanelTOTDropDown_OnEvent", "InterfaceOptionsCombatTextPanelFCTDropDown_Initialize", "InterfaceOptionsCombatTextPanelFCTDropDown_OnClick", "InterfaceOptionsCombatTextPanelFCTDropDown_OnEvent", "InterfaceOptionsCombatTextPanel_OnEvent", "InterfaceOptionsCombatTextPanel_OnLoad", "InterfaceOptionsControlsPanelAutoLootKeyDropDown_Initialize", "InterfaceOptionsControlsPanelAutoLootKeyDropDown_OnClick", "InterfaceOptionsControlsPanelAutoLootKeyDropDown_OnEvent", "InterfaceOptionsControlsPanelAutoLootKeyDropDown_Update", "InterfaceOptionsDisplayPanelAggroWarningDisplay_Initialize", "InterfaceOptionsDisplayPanelAggroWarningDisplay_OnClick", "InterfaceOptionsDisplayPanelAggroWarningDisplay_OnEvent", "InterfaceOptionsDisplayPanelPreviewTalentChanges_SetFunc", "InterfaceOptionsDisplayPanelShowAggroPercentage_SetFunc", "InterfaceOptionsDisplayPanelShowClock_SetFunc", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay_Initialize", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay_OnClick", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay_OnEvent", "InterfaceOptionsDisplayPanel_OnEvent", "InterfaceOptionsDisplayPanel_OnLoad", "InterfaceOptionsFrameCancel_OnClick", "InterfaceOptionsFrameDefaults_OnClick", "InterfaceOptionsFrameOkay_OnClick", "InterfaceOptionsFrame_InitializeUVars", "InterfaceOptionsFrame_LoadUVars", "InterfaceOptionsFrame_OnEvent", "InterfaceOptionsFrame_OnHide", "InterfaceOptionsFrame_OnLoad", "InterfaceOptionsFrame_OnShow", "InterfaceOptionsFrame_OpenToCategory", "InterfaceOptionsFrame_SetAllToDefaults", "InterfaceOptionsFrame_SetCurrentToDefaults", "InterfaceOptionsFrame_Show", "InterfaceOptionsFrame_TabOnClick", "InterfaceOptionsLanguagesPanelLocaleDropDown_Initialize", "InterfaceOptionsLanguagesPanelLocaleDropDown_InitializeHelper", "InterfaceOptionsLanguagesPanelLocaleDropDown_OnClick", "InterfaceOptionsLanguagesPanelLocaleDropDown_OnEvent", "InterfaceOptionsLanguagesPanel_OnLoad", "InterfaceOptionsListButton_OnClick", "InterfaceOptionsListButton_ToggleSubCategories", "InterfaceOptionsList_DisplayPanel", "InterfaceOptionsMousePanelClickMoveStyleDropDown_Initialize", "InterfaceOptionsMousePanelClickMoveStyleDropDown_OnClick", "InterfaceOptionsMousePanelClickMoveStyleDropDown_OnEvent", "InterfaceOptionsObjectivesPanel_OnEvent", "InterfaceOptionsObjectivesPanel_OnLoad", "InterfaceOptionsOptionsFrame_RefreshAddOns", "InterfaceOptionsOptionsFrame_RefreshCategories", "InterfaceOptionsPanel_CheckButton_OnClick", "InterfaceOptionsPanel_CheckButton_Update", "InterfaceOptionsPanel_OnLoad", "InterfaceOptionsSocialPanelChatMouseScroll_SetScrolling", "InterfaceOptionsSocialPanelChatStyle_Initialize", "InterfaceOptionsSocialPanelChatStyle_OnClick", "InterfaceOptionsSocialPanelChatStyle_OnEvent", "InterfaceOptionsSocialPanelChatStyle_SetChatStyle", "InterfaceOptionsSocialPanelConversationMode_Initialize", "InterfaceOptionsSocialPanelConversationMode_OnClick", "InterfaceOptionsSocialPanelConversationMode_OnEvent", "InterfaceOptionsSocialPanelProfanityFilter_SyncWithBattlenet", "InterfaceOptionsSocialPanelProfanityFilter_UpdateDisplay", "InterfaceOptionsSocialPanelTimestamps_AddTimestampFormat", "InterfaceOptionsSocialPanelTimestamps_Initialize", "InterfaceOptionsSocialPanelTimestamps_OnClick", "InterfaceOptionsSocialPanelTimestamps_OnEvent", "InterfaceOptionsSocialPanel_OnEvent", "InterfaceOptionsSocialPanel_OnLoad", "InterfaceOptions_AddCategory", "InterfaceOptions_UpdateMultiActionBars", "InviteUnit", "IsActionInRange", "IsActiveBattlefieldArena", "IsActiveQuestTrivial", "IsAddOnLoadOnDemand", "IsAddOnLoaded", "IsAlreadyInQueue", "IsAltKeyDown", "IsArenaTeamCaptain", "IsAtStableMaster", "IsAttackAction", "IsAttackSpell", "IsAuctionSortReversed", "IsAutoRepeatAction", "IsAutoRepeatSpell", "IsAvailableQuestTrivial", "IsBNLogin", "IsBagOpen", "IsBattlefieldArena", "IsClassColoringMessageType", "IsCombatLog", "IsConsumableAction", "IsConsumableItem", "IsConsumableSpell", "IsControlKeyDown", "IsCurrentAction", "IsCurrentItem", "IsCurrentQuestFailed", "IsCurrentSpell", "IsDebugBuild", "IsDesaturateSupported", "IsDisplayChannelModerator", "IsDisplayChannelOwner", "IsDressableItem", "IsEquippableItem", "IsEquippedAction", "IsEquippedItem", "IsEquippedItemType", "IsFactionInactive", "IsFalling", "IsFishingLoot", "IsFlyableArea", "IsFlying", "IsFrameHandle", "IsGuildLeader", "IsHarmfulItem", "IsHarmfulSpell", "IsHelpfulItem", "IsHelpfulSpell", "IsIgnored", "IsIgnoredOrMuted", "IsInArenaTeam", "IsInGuild", "IsInInstance", "IsInLFGDungeon", "IsIndoors", "IsInventoryItemLocked", "IsItemInRange", "IsLFGDungeonJoinable", "IsLeftAltKeyDown", "IsLeftControlKeyDown", "IsLeftShiftKeyDown", "IsLinuxClient", "IsListedInLFR", "IsListeningForMessageType", "IsLoggedIn", "IsMacClient", "IsMessageDoneBy", "IsMessageDoneTo", "IsModifiedClick", "IsModifierKeyDown", "IsMounted", "IsMouseButtonDown", "IsMouselooking", "IsMuted", "IsOptionFrameOpen", "IsOutOfBounds", "IsOutdoors", "IsPVPTimerRunning", "IsPartyLFG", "IsPartyLeader", "IsPassiveSpell", "IsPetAttackAction", "IsPetAttackActive", "IsPlayerResolutionAvailable", "IsPossessBarVisible", "IsQuestCompletable", "IsQuestLogSpecialItemInRange", "IsQuestWatched", "IsRaidLeader", "IsRaidOfficer", "IsRealPartyLeader", "IsRealRaidLeader", "IsReferAFriendLinked", "IsResting", "IsRightAltKeyDown", "IsRightControlKeyDown", "IsRightShiftKeyDown", "IsSecureCmd", "IsSelectedSpell", "IsShiftKeyDown", "IsSilenced", "IsSpellInRange", "IsSpellKnown", "IsStackableAction", "IsStealthed", "IsStereoVideoAvailable", "IsSubZonePVPPOI", "IsSwimming", "IsThreatWarningEnabled", "IsTitleKnown", "IsTrackedAchievement", "IsTradeSkillLinked", "IsTradeskillTrainer", "IsTrainerServiceSkillStep", "IsTutorialFlagged", "IsUnitOnQuest", "IsUsableAction", "IsUsableItem", "IsUsableSpell", "IsUsingVehicleControls", "IsVehicleAimAngleAdjustable", "IsVehicleAimPowerAdjustable", "IsVoiceChatAllowed", "IsVoiceChatAllowedByServer", "IsVoiceChatEnabled", "IsWindowsClient", "IsXPUserDisabled", "IsZoomOutAvailable", "ItemAnim_OnAnimFinished", "ItemAnim_OnEvent", "ItemAnim_OnLoad", "ItemHasRange", "ItemSocketingFrame_LoadUI", "ItemTextFrame_OnEvent", "ItemTextFrame_OnLoad", "ItemTextFrame_OnUpdate", "ItemTextGetCreator", "ItemTextGetItem", "ItemTextGetMaterial", "ItemTextGetPage", "ItemTextGetText", "ItemTextHasNextPage", "ItemTextNextPage", "ItemTextPrevPage", "JoinBattlefield", "JoinChannelByName", "JoinLFG", "JoinPermanentChannel", "JoinTemporaryChannel", "JumpOrAscendStart", "KBArticle_BeginLoading", "KBArticle_GetData", "KBArticle_IsLoaded", "KBQuery_BeginLoading", "KBQuery_GetArticleHeaderCount", "KBQuery_GetArticleHeaderData", "KBQuery_GetTotalArticleCount", "KBQuery_IsLoaded", "KBSetup_BeginLoading", "KBSetup_GetArticleHeaderCount", "KBSetup_GetArticleHeaderData", "KBSetup_GetCategoryCount", "KBSetup_GetCategoryData", "KBSetup_GetLanguageCount", "KBSetup_GetLanguageData", "KBSetup_GetSubCategoryCount", "KBSetup_GetSubCategoryData", "KBSetup_GetTotalArticleCount", "KBSetup_IsLoaded", "KBSystem_GetMOTD", "KBSystem_GetServerNotice", "KBSystem_GetServerStatus", "KeyBindingFrame_LoadUI", "KeyRingButtonIDToInvSlotID", "KnowledgeBaseArticleListFrame_HideArticleList", "KnowledgeBaseArticleListFrame_NextPage", "KnowledgeBaseArticleListFrame_PopulateArticleList", "KnowledgeBaseArticleListFrame_PreviousPage", "KnowledgeBaseArticleListItem_OnClick", "KnowledgeBaseArticleListItem_OnEnter", "KnowledgeBaseArticleListItem_OnLeave", "KnowledgeBaseArticleListItem_OnUpdate", "KnowledgeBaseArticleListItem_Update", "KnowledgeBaseErrorFrame_SetErrorMessage", "KnowledgeBaseFrameCategoryButton_OnClick", "KnowledgeBaseFrameCategoryDropDown_AddInfo", "KnowledgeBaseFrameCategoryDropDown_Initialize", "KnowledgeBaseFrameCategoryDropDown_OnLoad", "KnowledgeBaseFrameSubCategoryButton_OnClick", "KnowledgeBaseFrameSubCategoryDropDown_AddInfo", "KnowledgeBaseFrameSubCategoryDropDown_Initialize", "KnowledgeBaseFrameSubCategoryDropDown_OnLoad", "KnowledgeBaseFrame_DisableButtons", "KnowledgeBaseFrame_EnableButtons", "KnowledgeBaseFrame_LoadTopIssues", "KnowledgeBaseFrame_OnEvent", "KnowledgeBaseFrame_OnLoad", "KnowledgeBaseFrame_OnShow", "KnowledgeBaseFrame_Search", "KnowledgeBaseFrame_ShowArticleFrame", "KnowledgeBaseFrame_ShowErrorFrame", "KnowledgeBaseFrame_ShowSearchFrame", "KnowledgeBaseFrame_UpdateMotd", "KnowledgeBaseFrame_UpdateServerMessage", "KnowledgeBaseMotdTextFrame_OnEnter", "KnowledgeBaseMotdTextFrame_OnLeave", "KnowledgeBaseMotdTextFrame_OnUpdate", "KnowledgeBaseServerMessageTextFrame_OnEnter", "KnowledgeBaseServerMessageTextFrame_OnLeave", "KnowledgeBaseServerMessageTextFrame_OnUpdate", "KnowledgeBaseUpdateTopPanelPositions", "LFDConstructDeclinedMessage", "LFDDungeonReadyDialogInstanceInfo_OnEnter", "LFDDungeonReadyDialogReward_OnEnter", "LFDDungeonReadyDialogReward_SetMisc", "LFDDungeonReadyDialogReward_SetReward", "LFDDungeonReadyDialog_UpdateInstanceInfo", "LFDDungeonReadyDialog_UpdateRewards", "LFDDungeonReadyPopup_OnFail", "LFDDungeonReadyPopup_OnUpdate", "LFDDungeonReadyPopup_Update", "LFDDungeonReadyStatus_ResetReadyStates", "LFDDungeonReadyStatus_UpdateIcon", "LFDFrameRoleCheckButton_OnClick", "LFDFrameRoleCheckButton_OnEnter", "LFDFrame_OnEvent", "LFDFrame_OnHide", "LFDFrame_OnLoad", "LFDFrame_OnShow", "LFDFrame_UpdateBackfill", "LFDGetNumDungeons", "LFDList_SetDungeonEnabled", "LFDList_SetHeaderCollapsed", "LFDList_SetHeaderEnabled", "LFDQueueFrameDungeonChoiceEnableButton_OnClick", "LFDQueueFrameDungeonListButton_OnEnter", "LFDQueueFrameExpandOrCollapseButton_OnClick", "LFDQueueFrameFindGroupButton_Update", "LFDQueueFrameRandomCooldownFrame_OnEvent", "LFDQueueFrameRandomCooldownFrame_OnLoad", "LFDQueueFrameRandomCooldownFrame_OnUpdate", "LFDQueueFrameRandomCooldownFrame_Update", "LFDQueueFrameRandom_UpdateFrame", "LFDQueueFrameSpecificListButton_SetDungeon", "LFDQueueFrameSpecificList_Update", "LFDQueueFrameTypeDropDownButton_OnClick", "LFDQueueFrameTypeDropDown_Initialize", "LFDQueueFrameTypeDropDown_SetUp", "LFDQueueFrame_Join", "LFDQueueFrame_QueueForInstanceIfEnabled", "LFDQueueFrame_SetRoles", "LFDQueueFrame_SetType", "LFDQueueFrame_SetTypeRandomDungeon", "LFDQueueFrame_SetTypeSpecificDungeon", "LFDQueueFrame_Update", "LFDQueueFrame_UpdatePortrait", "LFDRoleCheckPopupAccept_OnClick", "LFDRoleCheckPopupDecline_OnClick", "LFDRoleCheckPopupDescription_OnEnter", "LFDRoleCheckPopup_Update", "LFDSearchStatusPlayer_SetFound", "LFDSearchStatus_OnEvent", "LFDSearchStatus_OnUpdate", "LFDSearchStatus_Update", "LFDSearchStatus_UpdateRoles", "LFD_CURRENT_FILTER", "LFD_IsEmpowered", "LFGDebug", "LFGDungeonList_Setup", "LFGEventFrame_OnEvent", "LFGEventFrame_OnLoad", "LFGGetDungeonInfoByID", "LFGIsIDHeader", "LFGListFilterChoices", "LFGListRemoveCollapsedChildren", "LFGListRemoveHeadersWithoutChildren", "LFGListUpdateHeaderEnabledAndLockedStates", "LFGQueueFrame_UpdateLFGDungeonList", "LFGSpecificChoiceEnableButton_SetIsRadio", "LFGTeleport", "LFG_DisableRoleButton", "LFG_EnableRoleButton", "LFG_PermanentlyDisableRoleButton", "LFG_UpdateAvailableRoles", "LFG_UpdateFindGroupButtons", "LFG_UpdateFramesIfShown", "LFG_UpdateLockedOutPanels", "LFG_UpdateQueuedList", "LFG_UpdateRoleCheckboxes", "LFG_UpdateRolesChangeable", "LFRBrowseButton_OnClick", "LFRBrowseButton_OnEnter", "LFRBrowseFrameListButton_SetData", "LFRBrowseFrameList_Update", "LFRBrowseFrameRaidDropDownButton_OnClick", "LFRBrowseFrameRaidDropDown_Initialize", "LFRBrowseFrameRaidDropDown_SetUp", "LFRBrowseFrameRefreshButton_OnUpdate", "LFRBrowseFrame_OnLoad", "LFRBrowseFrame_OnUpdateAlways", "LFRBrowse_UpdateButtonStates", "LFRFrameRoleCheckButton_OnClick", "LFRFrame_OnEvent", "LFRFrame_OnLoad", "LFRFrame_SetActiveTab", "LFRGetNumDungeons", "LFRList_DefaultFilterFunction", "LFRList_SetHeaderCollapsed", "LFRList_SetHeaderEnabled", "LFRList_SetRaidEnabled", "LFRQueueFrameDungeonChoiceEnableButton_OnClick", "LFRQueueFrameExpandOrCollapseButton_OnClick", "LFRQueueFrameFindGroupButton_Update", "LFRQueueFrameSpecificListButton_SetDungeon", "LFRQueueFrameSpecificList_Update", "LFRQueueFrame_Join", "LFRQueueFrame_QueueForInstanceIfEnabled", "LFRQueueFrame_SetRoles", "LFRQueueFrame_Update", "LFR_CanQueueForLockedInstances", "LFR_CanQueueForMultiple", "LFR_IsEmpowered", "LanguageMenu_Click", "LanguageMenu_LoadLanguages", "LanguageMenu_OnEvent", "LanguageMenu_OnLoad", "LearnPreviewTalents", "LearnTalent", "LeaveBattlefield", "LeaveChannelByName", "LeaveLFG", "LeaveParty", "ListChannelByName", "ListChannels", "LoadAddOn", "LoadBindings", "LoadMicroButtonTextures", "Localize", "LocalizeFrames", "LocalizePost", "LockMultiCastActionBar", "LockPetActionBar", "LoggingChat", "LoggingCombat", "Logout", "LoopbackVUMeter_OnLoad", "LoopbackVUMeter_OnUpdate", "LootButton_OnClick", "LootFrame_OnEvent", "LootFrame_OnHide", "LootFrame_OnLoad", "LootFrame_OnShow", "LootFrame_PageDown", "LootFrame_PageUp", "LootFrame_Show", "LootFrame_Update", "LootFrame_UpdateButton", "LootItem_OnEnter", "LootSlot", "LootSlotIsCoin", "LootSlotIsItem", "LowHealthFrame_OnUpdate", "LowHealthFrame_StartFlashing", "LowHealthFrame_StopFlashing", "LowerFrameLevel", "MacOptionsCancelFrame_OnShow", "MacOptionsCompressFrame_OnShow", "MacOptionsFrameCodecDropDown_Initialize", "MacOptionsFrameCodecDropDown_OnClick", "MacOptionsFrameCodecDropDown_OnLoad", "MacOptionsFrameFramerateDropDown_Initialize", "MacOptionsFrameFramerateDropDown_OnClick", "MacOptionsFrameFramerateDropDown_OnLoad", "MacOptionsFrameResolutionButton_OnClick", "MacOptionsFrameResolutionDropDown_Initialize", "MacOptionsFrameResolutionDropDown_OnLoad", "MacOptionsFrame_Cancel", "MacOptionsFrame_DisableCheckBox", "MacOptionsFrame_DisableSlider", "MacOptionsFrame_DisableText", "MacOptionsFrame_EnableCheckBox", "MacOptionsFrame_Load", "MacOptionsFrame_OnEvent", "MacOptionsFrame_OnLoad", "MacOptionsFrame_Save", "MacOptionsFrame_SetDefaults", "MacOptionsFrame_UpdateTime", "MacroFrame_LoadUI", "MacroFrame_SaveMacro", "MailFrameTab_OnClick", "MailFrame_OnEvent", "MailFrame_OnLoad", "MainMenuBarBackpackButton_OnEvent", "MainMenuBarBackpackButton_UpdateFreeSlots", "MainMenuBarPerformanceBarFrame_OnEnter", "MainMenuBarVehicleLeaveButton_OnEvent", "MainMenuBarVehicleLeaveButton_OnLoad", "MainMenuBarVehicleLeaveButton_Update", "MainMenuBar_AnimFinished", "MainMenuBar_OnEvent", "MainMenuBar_OnLoad", "MainMenuBar_ToPlayerArt", "MainMenuBar_ToVehicleArt", "MainMenuBar_UnlockAB", "MainMenuBar_UpdateArt", "MainMenuBar_UpdateKeyRing", "MainMenuExpBar_Update", "MainMenuMicroButton_SetNormal", "MainMenuMicroButton_SetPushed", "MakeMinigameMove", "ManageBackpackTokenFrame", "MerchantFrame_ConfirmExtendedItemCost", "MerchantFrame_ConfirmHighCostItem", "MerchantFrame_OnEvent", "MerchantFrame_OnHide", "MerchantFrame_OnLoad", "MerchantFrame_OnShow", "MerchantFrame_ResetRefundItem", "MerchantFrame_SetRefundItem", "MerchantFrame_Update", "MerchantFrame_UpdateAltCurrency", "MerchantFrame_UpdateBuybackInfo", "MerchantFrame_UpdateCanRepairAll", "MerchantFrame_UpdateGuildBankRepair", "MerchantFrame_UpdateMerchantInfo", "MerchantFrame_UpdateRepairButtons", "MerchantItemButton_OnClick", "MerchantItemButton_OnEnter", "MerchantItemButton_OnLoad", "MerchantItemButton_OnModifiedClick", "MerchantItemBuybackButton_OnLoad", "MerchantNextPageButton_OnClick", "MerchantPrevPageButton_OnClick", "MessageFrameScrollButton_OnLoad", "MessageFrameScrollButton_OnUpdate", "MessageTypeColor_OpenColorPicker", "MicroButtonTooltipText", "MiniMapBattlefieldDropDown_Initialize", "MiniMapBattlefieldDropDown_OnLoad", "MiniMapBattlefieldFrame_OnUpdate", "MiniMapBattlefieldFrame_isArena", "MiniMapInstanceDifficulty_OnEvent", "MiniMapLFGFrameDropDown_Update", "MiniMapLFGFrame_OnClick", "MiniMapLFGFrame_OnEnter", "MiniMapLFGFrame_OnLeave", "MiniMapLFGFrame_TeleportIn", "MiniMapLFGFrame_TeleportOut", "MiniMapLFG_UpdateIsShown", "MiniMapTrackingDropDown_Initialize", "MiniMapTrackingDropDown_OnLoad", "MiniMapTrackingShineFadeIn", "MiniMapTrackingShineFadeOut", "MiniMapTracking_SetTracking", "MiniMapTracking_Update", "MiniMapVoiceChatDropDown_Initialize", "MiniMapVoiceChatDropDown_OnLoad", "MiniMapVoiceChat_Update", "MinimapButton_OnMouseDown", "MinimapButton_OnMouseUp", "MinimapMailFrameUpdate", "MinimapPing_FadeOut", "MinimapPing_OnEvent", "MinimapPing_OnLoad", "MinimapPing_OnUpdate", "Minimap_OnClick", "Minimap_SetPing", "Minimap_SetTooltip", "Minimap_Update", "Minimap_UpdateRotationSetting", "Minimap_ZoomIn", "Minimap_ZoomInClick", "Minimap_ZoomOut", "Minimap_ZoomOutClick", "MirrorTimerFrame_OnEvent", "MirrorTimerFrame_OnLoad", "MirrorTimerFrame_OnUpdate", "MirrorTimer_Show", "Model_OnLoad", "Model_OnUpdate", "Model_RotateLeft", "Model_RotateRight", "MoneyFrame_OnEvent", "MoneyFrame_OnLoad", "MoneyFrame_SetType", "MoneyFrame_Update", "MoneyFrame_UpdateMoney", "MoneyInputFrame_ClearFocus", "MoneyInputFrame_GetCopper", "MoneyInputFrame_OnShow", "MoneyInputFrame_OnTextChanged", "MoneyInputFrame_ResetMoney", "MoneyInputFrame_SetCopper", "MoneyInputFrame_SetMode", "MoneyInputFrame_SetNextFocus", "MoneyInputFrame_SetOnValueChangedFunc", "MoneyInputFrame_SetPreviousFocus", "MoneyInputFrame_SetTextColor", "MouseIsOver", "MouselookStart", "MouselookStop", "MoveAndSteerStart", "MoveAndSteerStop", "MoveBackwardStart", "MoveBackwardStop", "MoveForwardStart", "MoveForwardStop", "MoveViewDownStart", "MoveViewDownStop", "MoveViewInStart", "MoveViewInStop", "MoveViewLeftStart", "MoveViewLeftStop", "MoveViewOutStart", "MoveViewOutStop", "MoveViewRightStart", "MoveViewRightStop", "MoveViewUpStart", "MoveViewUpStop", "MovieFrame_OnEvent", "MovieFrame_OnHide", "MovieFrame_OnKeyUp", "MovieFrame_OnLoad", "MovieFrame_OnMovieFinished", "MovieFrame_OnMovieHideSubtitle", "MovieFrame_OnMovieShowSubtitle", "MovieFrame_OnShow", "MovieFrame_OnUpdate", "MovieFrame_PlayMovie", "MovieRecordingProgress_OnUpdate", "MultiActionBarFrame_OnLoad", "MultiActionBar_HideAllGrids", "MultiActionBar_ShowAllGrids", "MultiActionBar_Update", "MultiActionBar_UpdateGrid", "MultiActionBar_UpdateGridVisibility", "MultiActionButtonDown", "MultiActionButtonUp", "MultiBar1_IsVisible", "MultiBar2_IsVisible", "MultiBar3_IsVisible", "MultiBar4_IsVisible", "MultiCastActionBarFrame_OnEvent", "MultiCastActionBarFrame_OnLoad", "MultiCastActionBarFrame_OnUpdate", "MultiCastActionBarFrame_Update", "MultiCastActionButtonDown", "MultiCastActionButtonUp", "MultiCastActionButton_OnEnter", "MultiCastActionButton_OnEvent", "MultiCastActionButton_OnLeave", "MultiCastActionButton_OnLoad", "MultiCastActionButton_OnPostClick", "MultiCastActionButton_OnShow", "MultiCastActionButton_Update", "MultiCastFlyoutButton_OnClick", "MultiCastFlyoutButton_OnEnter", "MultiCastFlyoutButton_OnLeave", "MultiCastFlyoutButton_OnLoad", "MultiCastFlyoutButton_SetTooltip", "MultiCastFlyoutFrameCloseButton_OnClick", "MultiCastFlyoutFrameOpenButton_Hide", "MultiCastFlyoutFrameOpenButton_OnClick", "MultiCastFlyoutFrameOpenButton_OnLeave", "MultiCastFlyoutFrameOpenButton_Show", "MultiCastFlyoutFrame_Hide", "MultiCastFlyoutFrame_LoadPageSpells", "MultiCastFlyoutFrame_LoadSlotSpells", "MultiCastFlyoutFrame_OnEnter", "MultiCastFlyoutFrame_OnHide", "MultiCastFlyoutFrame_OnLeave", "MultiCastFlyoutFrame_OnShow", "MultiCastFlyoutFrame_OnUpdate", "MultiCastFlyoutFrame_ToggleFlyout", "MultiCastRecallSpellButtonUp", "MultiCastRecallSpellButton_OnClick", "MultiCastRecallSpellButton_OnLoad", "MultiCastRecallSpellButton_Update", "MultiCastSlotButton_OnEnter", "MultiCastSlotButton_OnEvent", "MultiCastSlotButton_OnLeave", "MultiCastSlotButton_Update", "MultiCastSpellButton_OnEnter", "MultiCastSpellButton_OnEvent", "MultiCastSpellButton_OnLeave", "MultiCastSpellButton_OnLoad", "MultiCastSpellButton_SetTooltip", "MultiCastSpellButton_UpdateCooldown", "MultiCastSpellButton_UpdateState", "MultiCastSummonSpellButtonUp", "MultiCastSummonSpellButton_OnClick", "MultiCastSummonSpellButton_OnEnter", "MultiCastSummonSpellButton_OnEvent", "MultiCastSummonSpellButton_OnLeave", "MultiCastSummonSpellButton_OnLoad", "MultiCastSummonSpellButton_Update", "MultibarGrid_IsVisible", "Multibar_EmptyFunc", "NewGMTicket", "NextView", "NoPlayTime", "NotWhileDeadError", "NotifyInspect", "NumTaxiNodes", "OfferPetition", "OffhandHasWeapon", "OnMenuLoad", "OpenAllBags", "OpenBackpack", "OpenBag", "OpenCalendar", "OpenCoinPickupFrame", "OpenColorPicker", "OpenGlyphFrame", "OpenMailAttachment_OnClick", "OpenMailAttachment_OnEnter", "OpenMailFrame_OnHide", "OpenMailFrame_UpdateButtonPositions", "OpenMail_Delete", "OpenMail_GetItemCounts", "OpenMail_Reply", "OpenMail_ReportSpam", "OpenMail_Update", "OpenStackSplitFrame", "OpenTrainer", "OpeningCinematic", "OptionsCategoryFrame_Update", "OptionsFrameCancel_OnClick", "OptionsFrameDefault_OnClick", "OptionsFrameOkay_OnClick", "OptionsFrame_AddCategory", "OptionsFrame_OnHide", "OptionsFrame_OnLoad", "OptionsFrame_OnShow", "OptionsFrame_OpenToCategory", "OptionsFrame_RefreshCategories", "OptionsFrame_SetAllToDefaults", "OptionsFrame_SetCurrentToDefaults", "OptionsListButtonToggle_OnClick", "OptionsListButton_OnClick", "OptionsListButton_OnLoad", "OptionsListButton_ToggleSubCategories", "OptionsListScroll_Update", "OptionsList_ClearSelection", "OptionsList_DisplayButton", "OptionsList_DisplayPanel", "OptionsList_DisplayScrollBar", "OptionsList_HideButton", "OptionsList_HideScrollBar", "OptionsList_OnLoad", "OptionsList_SelectButton", "PVPBannerCustomization_Left", "PVPBannerCustomization_Right", "PVPBannerFrame_OnShow", "PVPBannerFrame_OpenColorPicker", "PVPBannerFrame_SaveBanner", "PVPBannerFrame_SetBannerColor", "PVPBannerFrame_SetBorderColor", "PVPBannerFrame_SetEmblemColor", "PVPBattlegroundButton_OnClick", "PVPBattlegroundFrameJoinButton_OnClick", "PVPBattlegroundFrame_OnEvent", "PVPBattlegroundFrame_OnHide", "PVPBattlegroundFrame_OnLoad", "PVPBattlegroundFrame_OnShow", "PVPBattlegroundFrame_UpdateGroupAvailable", "PVPBattlegroundFrame_UpdateVisible", "PVPBattleground_GetSelectedBattlegroundInfo", "PVPBattleground_ResetInfo", "PVPBattleground_UpdateBattlegrounds", "PVPBattleground_UpdateInfo", "PVPBattleground_UpdateJoinButton", "PVPBattleground_UpdateQueueStatus", "PVPBattleground_UpdateRandomInfo", "PVPDropDown_Initialize", "PVPFrameToggleButton_OnClick", "PVPFrame_IsJustBG", "PVPFrame_OnEvent", "PVPFrame_OnHide", "PVPFrame_OnLoad", "PVPFrame_OnShow", "PVPFrame_SetFaction", "PVPFrame_SetJustBG", "PVPFrame_SetToInSeason", "PVPFrame_SetToOffSeason", "PVPFrame_ShowDropdown", "PVPFrame_Update", "PVPHonor_Update", "PVPMicroButton_SetNormal", "PVPMicroButton_SetPushed", "PVPQueue_UpdateRandomInfo", "PVPStandard_OnLoad", "PVPTeamDetailsButton_OnClick", "PVPTeamDetailsToggleButton_OnClick", "PVPTeamDetails_OnHide", "PVPTeamDetails_OnShow", "PVPTeamDetails_Update", "PVPTeam_OnClick", "PVPTeam_OnEnter", "PVPTeam_OnLeave", "PVPTeam_OnMouseDown", "PVPTeam_OnMouseUp", "PVPTeam_Update", "PanelTemplates_DeselectTab", "PanelTemplates_DisableTab", "PanelTemplates_EnableTab", "PanelTemplates_GetSelectedTab", "PanelTemplates_GetTabWidth", "PanelTemplates_SelectTab", "PanelTemplates_SetDisabledTabState", "PanelTemplates_SetNumTabs", "PanelTemplates_SetTab", "PanelTemplates_TabResize", "PanelTemplates_Tab_OnClick", "PanelTemplates_UpdateTabs", "PaperDollFormatStat", "PaperDollFrameItemFlyoutButton_OnClick", "PaperDollFrameItemFlyoutButton_OnEnter", "PaperDollFrameItemFlyout_CreateButton", "PaperDollFrameItemFlyout_DisplayButton", "PaperDollFrameItemFlyout_DisplaySpecialButton", "PaperDollFrameItemFlyout_Hide", "PaperDollFrameItemFlyout_OnEvent", "PaperDollFrameItemFlyout_OnHide", "PaperDollFrameItemFlyout_OnShow", "PaperDollFrameItemFlyout_OnUpdate", "PaperDollFrameItemFlyout_Show", "PaperDollFrameItemPopoutButton_HideAll", "PaperDollFrameItemPopoutButton_OnClick", "PaperDollFrameItemPopoutButton_OnLoad", "PaperDollFrameItemPopoutButton_SetReversed", "PaperDollFrameItemPopoutButton_ShowAll", "PaperDollFrame_ClearIgnoredSlots", "PaperDollFrame_GetArmorReduction", "PaperDollFrame_IgnoreSlotsForSet", "PaperDollFrame_OnEvent", "PaperDollFrame_OnHide", "PaperDollFrame_OnLoad", "PaperDollFrame_OnShow", "PaperDollFrame_SetArmor", "PaperDollFrame_SetAttackBothHands", "PaperDollFrame_SetAttackPower", "PaperDollFrame_SetAttackSpeed", "PaperDollFrame_SetBlock", "PaperDollFrame_SetDamage", "PaperDollFrame_SetDefense", "PaperDollFrame_SetDodge", "PaperDollFrame_SetExpertise", "PaperDollFrame_SetGuild", "PaperDollFrame_SetLabelAndText", "PaperDollFrame_SetLevel", "PaperDollFrame_SetManaRegen", "PaperDollFrame_SetMeleeCritChance", "PaperDollFrame_SetParry", "PaperDollFrame_SetRangedAttack", "PaperDollFrame_SetRangedAttackPower", "PaperDollFrame_SetRangedAttackSpeed", "PaperDollFrame_SetRangedCritChance", "PaperDollFrame_SetRangedDamage", "PaperDollFrame_SetRating", "PaperDollFrame_SetResilience", "PaperDollFrame_SetResistances", "PaperDollFrame_SetSpellBonusDamage", "PaperDollFrame_SetSpellBonusHealing", "PaperDollFrame_SetSpellCritChance", "PaperDollFrame_SetSpellHaste", "PaperDollFrame_SetSpellPenetration", "PaperDollFrame_SetStat", "PaperDollFrame_UpdateStats", "PaperDollItemSlotButton_OnClick", "PaperDollItemSlotButton_OnEnter", "PaperDollItemSlotButton_OnEvent", "PaperDollItemSlotButton_OnHide", "PaperDollItemSlotButton_OnLeave", "PaperDollItemSlotButton_OnLoad", "PaperDollItemSlotButton_OnModifiedClick", "PaperDollItemSlotButton_OnShow", "PaperDollItemSlotButton_Update", "PaperDollItemSlotButton_UpdateFlyout", "PaperDollItemSlotButton_UpdateLock", "PaperDollStatTooltip", "PaperDoll_IsEquippedSlot", "PartialPlayTime", "PartyFrameDropDown_Initialize", "PartyFrameDropDown_OnLoad", "PartyLFGStartBackfill", "PartyMemberBackground_SaveOpacity", "PartyMemberBackground_SetOpacity", "PartyMemberBackground_ToggleOpacity", "PartyMemberBuffTooltip_Update", "PartyMemberFrame_OnEvent", "PartyMemberFrame_OnLoad", "PartyMemberFrame_OnUpdate", "PartyMemberFrame_RefreshPetDebuffs", "PartyMemberFrame_ToPlayerArt", "PartyMemberFrame_ToVehicleArt", "PartyMemberFrame_UpdateArt", "PartyMemberFrame_UpdateAssignedRoles", "PartyMemberFrame_UpdateLeader", "PartyMemberFrame_UpdateMember", "PartyMemberFrame_UpdateMemberHealth", "PartyMemberFrame_UpdateOnlineStatus", "PartyMemberFrame_UpdatePet", "PartyMemberFrame_UpdatePvPStatus", "PartyMemberFrame_UpdateReadyCheck", "PartyMemberFrame_UpdateStatusBarText", "PartyMemberFrame_UpdateVoiceStatus", "PartyMemberHealthCheck", "PendingListFrameDropDown_Initialize", "PendingListFrameDropDown_OnLoad", "PendingListFrame_BlockCommunication", "PendingListFrame_OnHide", "PendingListFrame_OnShow", "PendingListFrame_ReportPlayer", "PendingListFrame_ReportSpam", "PendingList_Scroll", "PendingList_Update", "PendingList_UpdateTab", "PetAbandon", "PetActionBarFrame_IsAboveShapeshift", "PetActionBarFrame_OnUpdate", "PetActionBar_HideGrid", "PetActionBar_OnEvent", "PetActionBar_OnLoad", "PetActionBar_ShowGrid", "PetActionBar_Update", "PetActionBar_UpdateCooldowns", "PetActionBar_UpdatePositionValues", "PetActionButtonDown", "PetActionButtonUp", "PetActionButton_IsFlashing", "PetActionButton_OnClick", "PetActionButton_OnDragStart", "PetActionButton_OnEnter", "PetActionButton_OnEvent", "PetActionButton_OnLeave", "PetActionButton_OnLoad", "PetActionButton_OnModifiedClick", "PetActionButton_OnReceiveDrag", "PetActionButton_OnUpdate", "PetActionButton_SetHotkeys", "PetActionButton_StartFlash", "PetActionButton_StopFlash", "PetAggressiveMode", "PetAttack", "PetCanBeAbandoned", "PetCanBeDismissed", "PetCanBeRenamed", "PetCastingBarFrame_OnEvent", "PetCastingBarFrame_OnLoad", "PetDefensiveMode", "PetDismiss", "PetExpBar_Update", "PetFollow", "PetFrameDropDown_Initialize", "PetFrameDropDown_OnLoad", "PetFrame_OnEvent", "PetFrame_OnLoad", "PetFrame_OnUpdate", "PetFrame_SetHappiness", "PetFrame_Update", "PetHasActionBar", "PetPaperDollFrame_FindCompanionIndex", "PetPaperDollFrame_OnEvent", "PetPaperDollFrame_OnHide", "PetPaperDollFrame_OnLoad", "PetPaperDollFrame_OnShow", "PetPaperDollFrame_SetCompanionPage", "PetPaperDollFrame_SetResistances", "PetPaperDollFrame_SetSpellBonusDamage", "PetPaperDollFrame_SetStats", "PetPaperDollFrame_SetTab", "PetPaperDollFrame_Update", "PetPaperDollFrame_UpdateCompanionCooldowns", "PetPaperDollFrame_UpdateCompanionPreview", "PetPaperDollFrame_UpdateCompanions", "PetPaperDollFrame_UpdateIsAvailable", "PetPaperDollFrame_UpdateTabs", "PetPassiveMode", "PetRename", "PetStable_NoPetsAllowed", "PetStable_OnEvent", "PetStable_OnLoad", "PetStable_Update", "PetStopAttack", "PetWait", "PetitionFrame_Update", "PickupAction", "PickupBagFromSlot", "PickupCompanion", "PickupContainerItem", "PickupEquipmentSet", "PickupEquipmentSetByName", "PickupGuildBankItem", "PickupGuildBankMoney", "PickupInventoryItem", "PickupItem", "PickupMacro", "PickupMerchantItem", "PickupPetAction", "PickupPlayerMoney", "PickupSpell", "PickupStablePet", "PickupTradeMoney", "PitchDownStart", "PitchDownStop", "PitchUpStart", "PitchUpStop", "PlaceAction", "PlaceAuctionBid", "PlaceGlyphInSocket", "PlayDance", "PlayMusic", "PlaySound", "PlaySoundFile", "PlayerCanTeleport", "PlayerFrameDropDown_Initialize", "PlayerFrameDropDown_OnLoad", "PlayerFrame_AnimFinished", "PlayerFrame_AnimateOut", "PlayerFrame_OnEvent", "PlayerFrame_OnLoad", "PlayerFrame_OnReceiveDrag", "PlayerFrame_OnUpdate", "PlayerFrame_SequenceFinished", "PlayerFrame_SetRunicPower", "PlayerFrame_SetupDeathKnniggetLayout", "PlayerFrame_ToPlayerArt", "PlayerFrame_ToVehicleArt", "PlayerFrame_Update", "PlayerFrame_UpdateArt", "PlayerFrame_UpdateGroupIndicator", "PlayerFrame_UpdateLayout", "PlayerFrame_UpdatePartyLeader", "PlayerFrame_UpdatePlaytime", "PlayerFrame_UpdatePvPStatus", "PlayerFrame_UpdateReadyCheck", "PlayerFrame_UpdateRolesAssigned", "PlayerFrame_UpdateStatus", "PlayerFrame_UpdateVoiceStatus", "PlayerIsPVPInactive", "PlayerStatFrameLeftDropDown_Initialize", "PlayerStatFrameLeftDropDown_OnClick", "PlayerStatFrameLeftDropDown_OnLoad", "PlayerStatFrameLeftDropDown_OnShow", "PlayerStatFrameRightDropDown_Initialize", "PlayerStatFrameRightDropDown_OnClick", "PlayerStatFrameRightDropDown_OnLoad", "PlayerStatFrameRightDropDown_OnShow", "PlayerTitleButton_OnClick", "PlayerTitleFrame_UpdateTitles", "PlayerTitlePickerFrame_Toggle", "PlayerTitlePickerScrollFrame_OnLoad", "PlayerTitlePickerScrollFrame_Update", "PositionMiniWorldMapArrowFrame", "PositionWorldMapArrowFrame", "PossessBar_OnEvent", "PossessBar_OnLoad", "PossessBar_Update", "PossessBar_UpdateState", "PossessButton_OnClick", "PossessButton_OnEnter", "PrevView", "ProcessMapClick", "ProcessQuestLogRewardFactions", "PromoteToAssistant", "PromoteToLeader", "PurchaseSlot", "PutItemInBackpack", "PutItemInBag", "PutKeyInKeyRing", "QueryAuctionItems", "QueryCastSequence", "QueryGuildBankLog", "QueryGuildBankTab", "QueryGuildBankText", "QueryGuildEventLog", "QueryQuestsCompleted", "QuestChooseRewardError", "QuestDetailAcceptButton_OnClick", "QuestDetailDeclineButton_OnClick", "QuestFlagsPVP", "QuestFrameDetailPanel_OnShow", "QuestFrameGreetingPanel_OnShow", "QuestFrameProgressItems_Update", "QuestFrameProgressPanel_OnShow", "QuestFrameRewardPanel_OnShow", "QuestFrame_GetMaterial", "QuestFrame_OnEvent", "QuestFrame_OnHide", "QuestFrame_OnLoad", "QuestFrame_OnShow", "QuestFrame_SetMaterial", "QuestFrame_SetPortrait", "QuestFrame_SetTextColor", "QuestFrame_SetTitleTextColor", "QuestGetAutoAccept", "QuestGoodbyeButton_OnClick", "QuestInfoFadingFrame_OnUpdate", "QuestInfoItem_OnClick", "QuestInfoTimerFrame_OnUpdate", "QuestInfo_Display", "QuestInfo_DoReputations", "QuestInfo_ShowAnchor", "QuestInfo_ShowDescriptionHeader", "QuestInfo_ShowDescriptionText", "QuestInfo_ShowFadingFrame", "QuestInfo_ShowGroupSize", "QuestInfo_ShowObjectives", "QuestInfo_ShowObjectivesHeader", "QuestInfo_ShowObjectivesText", "QuestInfo_ShowRequiredMoney", "QuestInfo_ShowRewardText", "QuestInfo_ShowRewards", "QuestInfo_ShowSpacer", "QuestInfo_ShowTimer", "QuestInfo_ShowTitle", "QuestInfo_ToggleRewardElement", "QuestIsDaily", "QuestIsWeekly", "QuestLogControlPanel_UpdatePosition", "QuestLogControlPanel_UpdateState", "QuestLogDetailFrame_AttachToQuestLog", "QuestLogDetailFrame_DetachFromQuestLog", "QuestLogDetailFrame_OnHide", "QuestLogDetailFrame_OnLoad", "QuestLogDetailFrame_OnShow", "QuestLogFrameTrackButton_OnClick", "QuestLogPushQuest", "QuestLogScrollFrame_OnLoad", "QuestLogShowMapPOI_UpdatePosition", "QuestLogTitleButton_OnClick", "QuestLogTitleButton_OnEnter", "QuestLogTitleButton_OnEvent", "QuestLogTitleButton_OnLeave", "QuestLogTitleButton_OnLoad", "QuestLogTitleButton_Resize", "QuestLog_GetFirstSelectableQuest", "QuestLog_OnEvent", "QuestLog_OnHide", "QuestLog_OnLoad", "QuestLog_OnShow", "QuestLog_OnUpdate", "QuestLog_OpenToQuest", "QuestLog_SetFirstValidSelection", "QuestLog_SetNearestValidSelection", "QuestLog_SetSelection", "QuestLog_UnsetSelection", "QuestLog_Update", "QuestLog_UpdateMap", "QuestLog_UpdateMapButton", "QuestLog_UpdatePartyInfoTooltip", "QuestLog_UpdateQuestCount", "QuestLog_UpdateQuestDetails", "QuestMapUpdateAllQuests", "QuestPOIButton_OnMouseDown", "QuestPOIButton_OnMouseUp", "QuestPOIGetIconInfo", "QuestPOIGetQuestIDByIndex", "QuestPOIGetQuestIDByVisibleIndex", "QuestPOIUpdateIcons", "QuestPOIUpdateTexture", "QuestPOI_DeselectButton", "QuestPOI_DeselectButtonByParent", "QuestPOI_DisplayButton", "QuestPOI_HideAllButtons", "QuestPOI_HideButtons", "QuestPOI_SelectButton", "QuestPOI_SelectButtonByIndex", "QuestPOI_SelectButtonByQuestId", "QuestPOI_SetTextColor", "QuestProgressCompleteButton_OnClick", "QuestRewardCancelButton_OnClick", "QuestRewardCompleteButton_OnClick", "QuestRewardItem_OnClick", "QuestTitleButton_OnClick", "Quit", "RaidBossEmoteFrame_OnEvent", "RaidBossEmoteFrame_OnLoad", "RaidButton_OnClick", "RaidClassButton_OnEnter", "RaidClassButton_OnLoad", "RaidClassButton_Update", "RaidFrameDropDown_Initialize", "RaidFrameRaidBrowserButton_Update", "RaidFrameReadyCheckButton_Update", "RaidFrame_LoadUI", "RaidFrame_OnEvent", "RaidFrame_OnLoad", "RaidFrame_Update", "RaidGroupButton_OnDragStart", "RaidGroupButton_OnDragStop", "RaidGroupButton_OnEnter", "RaidGroupButton_OnLoad", "RaidGroupButton_ShowMenu", "RaidGroupFrame_OnEvent", "RaidGroupFrame_OnHide", "RaidGroupFrame_OnLoad", "RaidGroupFrame_OnUpdate", "RaidGroupFrame_ReadyCheckFinished", "RaidGroupFrame_Update", "RaidGroupFrame_UpdateHealth", "RaidGroupFrame_UpdateLevel", "RaidGroup_ResetSlotButtons", "RaidInfoExtendButton_OnClick", "RaidInfoFrame_Update", "RaidInfoFrame_UpdateSelectedIndex", "RaidInfoInstance_OnClick", "RaidInfoInstance_OnEnter", "RaidInfoInstance_OnMouseDown", "RaidInfoInstance_OnMouseUp", "RaidInfoScrollFrame_OnLoad", "RaidNotice_AddMessage", "RaidNotice_FadeInit", "RaidNotice_OnUpdate", "RaidNotice_SetSlot", "RaidNotice_UpdateSlot", "RaidOptionsFrame_UpdatePartyFrames", "RaidPulloutButton_OnDragStart", "RaidPulloutButton_OnEvent", "RaidPulloutButton_OnLoad", "RaidPulloutButton_ShowMenu", "RaidPulloutButton_UpdateDead", "RaidPulloutButton_UpdateSwapFrames", "RaidPulloutButton_UpdateVoice", "RaidPulloutDropDown_Initialize", "RaidPulloutDropDown_OnLoad", "RaidPulloutStopMoving", "RaidPullout_GeneratePulloutFrame", "RaidPullout_GetFrame", "RaidPullout_MatchName", "RaidPullout_OnEvent", "RaidPullout_OnUpdate", "RaidPullout_ReadyCheckFinishFunc", "RaidPullout_ReadyCheckFinished", "RaidPullout_RenewFrames", "RaidPullout_SaveFrames", "RaidPullout_Update", "RaidPullout_UpdateTarget", "RaidWarningFrame_OnEvent", "RaidWarningFrame_OnLoad", "RaiseFrameLevel", "RaiseFrameLevelByTwo", "RandomRoll", "ReadFile", "ReadyCheckFrame_OnEvent", "ReadyCheckFrame_OnHide", "ReadyCheckFrame_OnLoad", "ReadyCheck_Confirm", "ReadyCheck_Finish", "ReadyCheck_OnUpdate", "ReadyCheck_Start", "RealPartyIsFull", "RecalculateGearManagerDialogPopup", "RecentTimeDate", "RecordLoopbackSoundButton_OnUpdate", "RefreshAuras", "RefreshBuffs", "RefreshDebuffs", "RefreshEquipmentSetIconInfo", "RefreshLFGList", "RefreshMoneyFrame", "RegisterAutoHide", "RegisterCVar", "RegisterForSave", "RegisterForSavePerCharacter", "RegisterStateDriver", "RegisterStaticConstants", "RegisterUnitWatch", "RejectProposal", "ReloadUI", "RemoveChatWindowChannel", "RemoveChatWindowMessages", "RemoveFriend", "RemoveGlyphFromSocket", "RemoveQuestWatch", "RemoveSkillUp", "RemoveTrackedAchievement", "RenameEquipmentSet", "RenamePetition", "RepairAllItems", "ReplaceEnchant", "ReplaceTradeEnchant", "RepopMe", "ReportBug", "ReportPlayerIsPVPAFK", "ReportSuggestion", "ReputationBar_DrawHorizontalLine", "ReputationBar_DrawVerticalLine", "ReputationBar_OnClick", "ReputationFrame_OnEvent", "ReputationFrame_OnLoad", "ReputationFrame_OnShow", "ReputationFrame_SetRowType", "ReputationFrame_Update", "ReputationWatchBar_Update", "RequestBattlefieldPositions", "RequestBattlefieldScoreData", "RequestBattlegroundInstanceInfo", "RequestInspectHonorData", "RequestLFDPartyLockInfo", "RequestLFDPlayerLockInfo", "RequestRaidInfo", "RequestTimePlayed", "ResetCPUUsage", "ResetChatColors", "ResetChatWindows", "ResetCursor", "ResetDisabledAddOns", "ResetGroupPreviewTalentPoints", "ResetInstances", "ResetPerformanceValues", "ResetPreviewTalentPoints", "ResetTutorials", "ResetView", "RespondInstanceLock", "RespondMailLockSendItem", "RestartGx", "RestoreVideoEffectsDefaults", "RestoreVideoResolutionDefaults", "RestoreVideoStereoDefaults", "ResurrectGetOfferer", "ResurrectHasSickness", "ResurrectHasTimer", "RetrieveCorpse", "ReturnInboxItem", "RollOnLoot", "RunBinding", "RunMacro", "RunMacroText", "RunScript", "RuneButton_OnEnter", "RuneButton_OnLeave", "RuneButton_OnLoad", "RuneButton_OnUpdate", "RuneButton_ShineFadeIn", "RuneButton_ShineFadeOut", "RuneButton_Update", "RuneFrame_AddRune", "RuneFrame_FixRunes", "RuneFrame_OnEvent", "RuneFrame_OnLoad", "SaveBindings", "SaveEquipmentSet", "SavePendingGuildBankTabPermissions", "SaveView", "ScorePlayerDropDown_Cancel", "ScorePlayerDropDown_Initialize", "ScorePlayerDropDown_OnClick", "ScorePlayer_OnMouseUp", "Screenshot", "ScrollFrameTemplate_OnMouseWheel", "ScrollFrame_OnLoad", "ScrollFrame_OnScrollRangeChanged", "ScrollingEdit_OnCursorChanged", "ScrollingEdit_OnTextChanged", "ScrollingEdit_OnUpdate", "SearchButton_OnUpdate", "SearchLFGGetEncounterResults", "SearchLFGGetJoinedID", "SearchLFGGetNumResults", "SearchLFGGetPartyResults", "SearchLFGGetResults", "SearchLFGJoin", "SearchLFGLeave", "SearchLFGSort", "SeatIndicator_Pulse", "SecondsToTime", "SecondsToTimeAbbrev", "SecureActionButton_OnClick", "SecureButton_GetAttribute", "SecureButton_GetButtonSuffix", "SecureButton_GetEffectiveButton", "SecureButton_GetModifiedAttribute", "SecureButton_GetModifiedUnit", "SecureButton_GetModifierPrefix", "SecureButton_GetUnit", "SecureButton_ParseModifierString", "SecureCmdItemParse", "SecureCmdOptionParse", "SecureCmdUseItem", "SecureGroupHeader_OnAttributeChanged", "SecureGroupHeader_OnEvent", "SecureGroupHeader_OnLoad", "SecureGroupHeader_Update", "SecureGroupPetHeader_OnAttributeChanged", "SecureGroupPetHeader_OnEvent", "SecureGroupPetHeader_OnLoad", "SecureGroupPetHeader_Update", "SecureHandlerExecute", "SecureHandlerSetFrameRef", "SecureHandlerUnwrapScript", "SecureHandlerWrapScript", "SecureHandler_AttributeOnAttributeChanged", "SecureHandler_OnClick", "SecureHandler_OnDragEvent", "SecureHandler_OnLoad", "SecureHandler_OnMouseUpDown", "SecureHandler_OnMouseWheel", "SecureHandler_OnSimpleEvent", "SecureHandler_StateOnAttributeChanged", "SecureUnitButton_OnClick", "SecureUnitButton_OnLoad", "SelectActiveQuest", "SelectAvailableQuest", "SelectGossipActiveQuest", "SelectGossipAvailableQuest", "SelectGossipOption", "SelectPackage", "SelectQuestLogEntry", "SelectStationery", "SelectTradeSkill", "SelectTrainerService", "SendAddonMessage", "SendChatMessage", "SendMail", "SendMailAttachmentButton_OnClick", "SendMailAttachmentButton_OnDropAny", "SendMailAttachment_OnEnter", "SendMailFrame_CanSend", "SendMailFrame_Reset", "SendMailFrame_SendMail", "SendMailFrame_Update", "SendMailMailButton_OnClick", "SendMailMoneyButton_OnClick", "SendMailRadioButton_OnClick", "SendSystemMessage", "SendWho", "SetAbandonQuest", "SetAchievementComparisonUnit", "SetActionBarToggles", "SetActiveTalentGroup", "SetActiveVoiceChannel", "SetActiveVoiceChannelBySessionID", "SetAllowLowLevelRaid", "SetArenaTeamRosterSelection", "SetArenaTeamRosterShowOffline", "SetAuctionsTabShowing", "SetBagPortraitTexture", "SetBaseMip", "SetBattlefieldScoreFaction", "SetBinding", "SetBindingClick", "SetBindingItem", "SetBindingMacro", "SetBindingSpell", "SetButtonPulse", "SetCVar", "SetChannelOwner", "SetChannelPassword", "SetChannelWatch", "SetChatColorNameByClass", "SetChatMouseOverDelay", "SetChatUnitColor", "SetChatWindowAlpha", "SetChatWindowColor", "SetChatWindowDocked", "SetChatWindowLocked", "SetChatWindowName", "SetChatWindowSavedDimensions", "SetChatWindowSavedPosition", "SetChatWindowShown", "SetChatWindowSize", "SetChatWindowUninteractable", "SetConsoleKey", "SetCurrencyBackpack", "SetCurrencyUnused", "SetCurrentGuildBankTab", "SetCurrentTitle", "SetCursor", "SetDesaturation", "SetDressUpBackground", "SetDungeonDifficulty", "SetDungeonMapLevel", "SetEuropeanNumbers", "SetFactionActive", "SetFactionInactive", "SetFarclip", "SetFriendNotes", "SetGamma", "SetGuildBankTabInfo", "SetGuildBankTabPermissions", "SetGuildBankTabWithdraw", "SetGuildBankText", "SetGuildBankWithdrawLimit", "SetGuildInfoText", "SetGuildRosterSelection", "SetGuildRosterShowOffline", "SetInventoryPortraitTexture", "SetItemButtonCount", "SetItemButtonDesaturated", "SetItemButtonNameFrameVertexColor", "SetItemButtonNormalTextureVertexColor", "SetItemButtonSlotVertexColor", "SetItemButtonStock", "SetItemButtonTexture", "SetItemButtonTextureVertexColor", "SetItemRef", "SetLFGBootVote", "SetLFGComment", "SetLFGDungeon", "SetLFGDungeonEnabled", "SetLFGHeaderCollapsed", "SetLFGRoles", "SetLayoutMode", "SetLootMethod", "SetLootPortrait", "SetLootThreshold", "SetMacroItem", "SetMacroSpell", "SetMapByID", "SetMapToCurrentZone", "SetMapZoom", "SetModifiedClick", "SetMoneyFrameColor", "SetMouselookOverrideBinding", "SetMultiCastSpell", "SetMultisampleFormat", "SetNextBarberShopStyle", "SetOptOutOfLoot", "SetOverrideBinding", "SetOverrideBindingClick", "SetOverrideBindingItem", "SetOverrideBindingMacro", "SetOverrideBindingSpell", "SetPOIIconOverlapDistance", "SetPOIIconOverlapPushDistance", "SetPVP", "SetPartyAssignment", "SetPendingGuildBankTabPermissions", "SetPendingGuildBankTabWithdraw", "SetPetStablePaperdoll", "SetPortraitTexture", "SetPortraitToTexture", "SetRaidDifficulty", "SetRaidRosterSelection", "SetRaidSubgroup", "SetRaidTarget", "SetRaidTargetIcon", "SetRaidTargetIconTexture", "SetSavedInstanceExtend", "SetScreenResolution", "SetSelectedAuctionItem", "SetSelectedBattlefield", "SetSelectedDisplayChannel", "SetSelectedFaction", "SetSelectedFriend", "SetSelectedIgnore", "SetSelectedMute", "SetSelectedSkill", "SetSelfMuteState", "SetSendMailCOD", "SetSendMailMoney", "SetSendMailShowing", "SetSpellNameColor", "SetTableColor", "SetTalentButtonLocation", "SetTargetSpellbarAspect", "SetTaxiBenchmarkMode", "SetTaxiMap", "SetTerrainMip", "SetTexLodBias", "SetTextStatusBarText", "SetTextStatusBarTextPrefix", "SetTextStatusBarTextZeroText", "SetTitleByName", "SetTooltipMoney", "SetTracking", "SetTradeMoney", "SetTradeSkillInvSlotFilter", "SetTradeSkillItemLevelFilter", "SetTradeSkillItemNameFilter", "SetTradeSkillSubClassFilter", "SetTrainerServiceTypeFilter", "SetTrainerSkillLineFilter", "SetUIVisibility", "SetUpAnimation", "SetView", "SetWatchedFactionIndex", "SetWaterDetail", "SetWhoToUI", "SetZoneText", "SetupFullscreenScale", "SetupUnitButtonConfiguration", "ShapeshiftBar_ChangeForm", "ShapeshiftBar_OnEvent", "ShapeshiftBar_OnLoad", "ShapeshiftBar_Update", "ShapeshiftBar_UpdateState", "ShiftQuestWatches", "ShowBonusActionBar", "ShowBuybackSellCursor", "ShowCloak", "ShowContainerSellCursor", "ShowFriends", "ShowHelm", "ShowInspectCursor", "ShowInventorySellCursor", "ShowMacroFrame", "ShowMerchantSellCursor", "ShowMiniWorldMapArrowFrame", "ShowMultiCastActionBar", "ShowNumericThreat", "ShowPartyFrame", "ShowPetActionBar", "ShowQuickButton", "ShowReadyCheck", "ShowRepairCursor", "ShowResurrectRequest", "ShowTextStatusBarText", "ShowUIPanel", "ShowWatchedReputationBarText", "ShowWhoPanel", "ShowWorldMapArrowFrame", "ShowingCloak", "ShowingHelm", "SignPetition", "SilenceMember", "SitStandOrDescendStart", "SkillBar_OnClick", "SkillDetailFrame_SetStatusBar", "SkillFrame_OnEvent", "SkillFrame_OnLoad", "SkillFrame_OnShow", "SkillFrame_SetStatusBar", "SkillFrame_UpdateSkills", "SmallMoneyFrame_OnLoad", "SocketContainerItem", "SocketInventoryItem", "SortArenaTeamRoster", "SortAuctionApplySort", "SortAuctionClearSort", "SortAuctionItems", "SortAuctionSetSort", "SortBGList", "SortBattlefieldScoreData", "SortGuildRoster", "SortQuestWatches", "SortWho", "Sound_ChatSystem_GetInputDriverNameByIndex", "Sound_ChatSystem_GetNumInputDrivers", "Sound_ChatSystem_GetNumOutputDrivers", "Sound_ChatSystem_GetOutputDriverNameByIndex", "Sound_GameSystem_GetInputDriverNameByIndex", "Sound_GameSystem_GetNumInputDrivers", "Sound_GameSystem_GetNumOutputDrivers", "Sound_GameSystem_GetOutputDriverNameByIndex", "Sound_GameSystem_RestartSoundSystem", "Sound_MasterVolumeDown", "Sound_MasterVolumeUp", "Sound_ToggleMusic", "Sound_ToggleSound", "SpellBookFrameTabButton_OnClick", "SpellBookFrame_HideSpells", "SpellBookFrame_OnEvent", "SpellBookFrame_OnHide", "SpellBookFrame_OnLoad", "SpellBookFrame_OnShow", "SpellBookFrame_PlayCloseSound", "SpellBookFrame_PlayOpenSound", "SpellBookFrame_SetTabType", "SpellBookFrame_ShowSpells", "SpellBookFrame_Update", "SpellBookFrame_UpdatePages", "SpellBookNextPageButton_OnClick", "SpellBookPrevPageButton_OnClick", "SpellBookSkillLineTab_OnClick", "SpellBook_GetAutoCastShine", "SpellBook_GetCurrentPage", "SpellBook_GetSpellID", "SpellBook_GetTabInfo", "SpellBook_ReleaseAutoCastShine", "SpellBook_UpdatePageArrows", "SpellButton_OnClick", "SpellButton_OnDrag", "SpellButton_OnEnter", "SpellButton_OnEvent", "SpellButton_OnHide", "SpellButton_OnLoad", "SpellButton_OnModifiedClick", "SpellButton_OnShow", "SpellButton_UpdateButton", "SpellButton_UpdateSelection", "SpellCanTargetGlyph", "SpellCanTargetItem", "SpellCanTargetUnit", "SpellColor_OpenColorPicker", "SpellHasRange", "SpellIsTargeting", "SpellStopCasting", "SpellStopTargeting", "SpellTargetItem", "SpellTargetUnit", "SplitContainerItem", "SplitGuildBankItem", "StablePet", "StackSplitFrameCancel_Click", "StackSplitFrameLeft_Click", "StackSplitFrameOkay_Click", "StackSplitFrameRight_Click", "StackSplitFrame_OnChar", "StackSplitFrame_OnHide", "StackSplitFrame_OnKeyDown", "StackSplitFrame_OnKeyUp", "StartAttack", "StartAuction", "StartDuel", "StaticPopupSpecial_Hide", "StaticPopupSpecial_Show", "StaticPopup_CollapseTable", "StaticPopup_EditBoxOnEnterPressed", "StaticPopup_EditBoxOnEscapePressed", "StaticPopup_EditBoxOnTextChanged", "StaticPopup_EscapePressed", "StaticPopup_FindVisible", "StaticPopup_Hide", "StaticPopup_HideExclusive", "StaticPopup_IsLastDisplayedFrame", "StaticPopup_OnClick", "StaticPopup_OnEvent", "StaticPopup_OnHide", "StaticPopup_OnKeyDown", "StaticPopup_OnShow", "StaticPopup_OnUpdate", "StaticPopup_Resize", "StaticPopup_SetUpPosition", "StaticPopup_Show", "StaticPopup_Visible", "StationeryPopupButton_OnClick", "StationeryPopupFrame_Update", "StatsFrame_OnLoad", "StatsFrame_OnUpdate", "StopAttack", "StopCinematic", "StopMacro", "StopMusic", "StopTradeSkillRepeat", "StopwatchCloseButton_OnClick", "StopwatchFrame_OnDragStart", "StopwatchFrame_OnDragStop", "StopwatchFrame_OnEvent", "StopwatchFrame_OnHide", "StopwatchFrame_OnLoad", "StopwatchFrame_OnMouseDown", "StopwatchFrame_OnMouseUp", "StopwatchFrame_OnShow", "StopwatchFrame_OnUpdate", "StopwatchPlayPauseButton_OnClick", "StopwatchResetButton_OnClick", "StopwatchTicker_OnUpdate", "StopwatchTicker_Update", "Stopwatch_Clear", "Stopwatch_FinishCountdown", "Stopwatch_IsPlaying", "Stopwatch_Pause", "Stopwatch_Play", "Stopwatch_StartCountdown", "Stopwatch_Toggle", "StrafeLeftStart", "StrafeLeftStop", "StrafeRightStart", "StrafeRightStop", "Stuck", "SubZoneText_OnLoad", "SummonFriend", "SummonRandomCritter", "SwapRaidSubgroup", "SynchronizeBNetStatus", "TEXT", "TabardCharacterModelFrame_OnLoad", "TabardCharacterModelFrame_OnUpdate", "TabardCharacterModelRotateLeftButton_OnClick", "TabardCharacterModelRotateRightButton_OnClick", "TabardCustomization_Left", "TabardCustomization_Right", "TabardFrame_OnEvent", "TabardFrame_OnLoad", "TabardFrame_UpdateButtons", "TabardFrame_UpdateTextures", "TakeInboxItem", "TakeInboxMoney", "TakeInboxTextItem", "TakeScreenshot", "TakeTaxiNode", "TalentFrame_DrawLines", "TalentFrame_GetArrowTexture", "TalentFrame_GetArrowTextureCount", "TalentFrame_GetBranchTexture", "TalentFrame_GetBranchTextureCount", "TalentFrame_Load", "TalentFrame_LoadUI", "TalentFrame_ResetArrowTextureCount", "TalentFrame_ResetBranchTextureCount", "TalentFrame_ResetBranches", "TalentFrame_SetArrowTexture", "TalentFrame_SetBranchTexture", "TalentFrame_SetPrereqs", "TalentFrame_Update", "TalentFrame_UpdateSpecInfoCache", "TalentFrame_UpdateTalentPoints", "TalentMicroButton_OnEvent", "TargetDirectionEnemy", "TargetDirectionFinished", "TargetDirectionFriend", "TargetFrameDropDown_Initialize", "TargetFrame_CheckClassification", "TargetFrame_CheckDead", "TargetFrame_CheckFaction", "TargetFrame_CheckLevel", "TargetFrame_CreateSpellbar", "TargetFrame_CreateTargetofTarget", "TargetFrame_HealthUpdate", "TargetFrame_OnEvent", "TargetFrame_OnHide", "TargetFrame_OnLoad", "TargetFrame_OnUpdate", "TargetFrame_Update", "TargetFrame_UpdateAuraPositions", "TargetFrame_UpdateAuras", "TargetFrame_UpdateBuffAnchor", "TargetFrame_UpdateDebuffAnchor", "TargetFrame_UpdateRaidTargetIcon", "TargetHealthCheck", "TargetLastEnemy", "TargetLastFriend", "TargetLastTarget", "TargetNearest", "TargetNearestEnemy", "TargetNearestEnemyPlayer", "TargetNearestFriend", "TargetNearestFriendPlayer", "TargetNearestPartyMember", "TargetNearestRaidMember", "TargetTotem", "TargetUnit", "Target_Spellbar_AdjustPosition", "Target_Spellbar_OnEvent", "TargetofTargetHealthCheck", "TargetofTarget_CheckDead", "TargetofTarget_OnHide", "TargetofTarget_Update", "TaxiFrame_OnEvent", "TaxiFrame_OnLoad", "TaxiGetDestX", "TaxiGetDestY", "TaxiGetSrcX", "TaxiGetSrcY", "TaxiNodeCost", "TaxiNodeGetType", "TaxiNodeName", "TaxiNodeOnButtonEnter", "TaxiNodePosition", "TaxiNodeSetCurrent", "TeleportToDebugObject", "TempEnchantButton_OnClick", "TempEnchantButton_OnEnter", "TempEnchantButton_OnLoad", "TempEnchantButton_OnUpdate", "TemporaryEnchantFrame_Hide", "TemporaryEnchantFrame_OnUpdate", "TextEmoteSort", "TextStatusBar_CapDisplayOfNumericValue", "TextStatusBar_Initialize", "TextStatusBar_OnEvent", "TextStatusBar_OnValueChanged", "TextStatusBar_UpdateTextString", "TicketStatusFrameButton_OnClick", "TicketStatusFrameButton_OnLoad", "TicketStatusFrame_OnEvent", "TicketStatusFrame_OnHide", "TicketStatusFrame_OnLoad", "TicketStatusFrame_OnShow", "TicketStatusFrame_OnUpdate", "TimeManagerAlarmAMPMDropDown_Initialize", "TimeManagerAlarmAMPMDropDown_OnClick", "TimeManagerAlarmAMPMDropDown_OnHide", "TimeManagerAlarmAMPMDropDown_OnShow", "TimeManagerAlarmEnabledButton_OnClick", "TimeManagerAlarmEnabledButton_Update", "TimeManagerAlarmHourDropDown_Initialize", "TimeManagerAlarmHourDropDown_OnClick", "TimeManagerAlarmMessageEditBox_OnEditFocusLost", "TimeManagerAlarmMessageEditBox_OnEnterPressed", "TimeManagerAlarmMessageEditBox_OnEscapePressed", "TimeManagerAlarmMinuteDropDown_Initialize", "TimeManagerAlarmMinuteDropDown_OnClick", "TimeManagerClockButton_Hide", "TimeManagerClockButton_OnClick", "TimeManagerClockButton_OnEnter", "TimeManagerClockButton_OnLeave", "TimeManagerClockButton_OnLoad", "TimeManagerClockButton_OnUpdate", "TimeManagerClockButton_OnUpdateWithTooltip", "TimeManagerClockButton_Show", "TimeManagerClockButton_Update", "TimeManagerClockButton_UpdateTooltip", "TimeManagerCloseButton_OnClick", "TimeManagerFrame_OnHide", "TimeManagerFrame_OnLoad", "TimeManagerFrame_OnShow", "TimeManagerFrame_OnUpdate", "TimeManagerLocalTimeCheck_OnClick", "TimeManagerMilitaryTimeCheck_OnClick", "TimeManagerStopwatchCheck_OnClick", "TimeManager_CheckAlarm", "TimeManager_FireAlarm", "TimeManager_FireAlarmWarning", "TimeManager_IsAlarmFiring", "TimeManager_LoadUI", "TimeManager_ShouldCheckAlarm", "TimeManager_StartCheckingAlarm", "TimeManager_Toggle", "TimeManager_ToggleLocalTime", "TimeManager_ToggleTimeFormat", "TimeManager_TurnOffAlarm", "TimeManager_Update", "TimeManager_UpdateAlarmTime", "TimeManager_UpdateTimeTicker", "ToggleAchievementFrame", "ToggleAutoRun", "ToggleBackpack", "ToggleBag", "ToggleBattlefieldMinimap", "ToggleCalendar", "ToggleCharacter", "ToggleChatChannel", "ToggleChatColorNamesByClassGroup", "ToggleChatMessageGroup", "ToggleCollision", "ToggleCollisionDisplay", "ToggleDropDownMenu", "ToggleFrame", "ToggleFramerate", "ToggleFriendsFrame", "ToggleFriendsPanel", "ToggleGameMenu", "ToggleGlyphFrame", "ToggleGuildEventLog", "ToggleGuildInfoFrame", "ToggleHelpFrame", "ToggleIgnorePanel", "ToggleKeyRing", "ToggleLFDParentFrame", "ToggleLFRParentFrame", "ToggleMapFramerate", "ToggleMessageDest", "ToggleMessageSource", "ToggleMessageType", "ToggleMessageTypeGroup", "ToggleMiniMapRotation", "ToggleMinimap", "TogglePVP", "TogglePVPFrame", "TogglePerformanceDisplay", "TogglePerformancePause", "TogglePerformanceValues", "TogglePetAutocast", "TogglePlayerBounds", "TogglePortals", "ToggleRun", "ToggleSheath", "ToggleSpellAutocast", "ToggleSpellBook", "ToggleStats", "ToggleTalentFrame", "ToggleTimeManager", "ToggleTris", "ToggleWorldStateScoreFrame", "TokenButtonLinkButton_OnClick", "TokenButton_OnClick", "TokenButton_OnLoad", "TokenFramePopup_CloseIfHidden", "TokenFrame_LoadUI", "TokenFrame_OnLoad", "TokenFrame_OnShow", "TokenFrame_Update", "TokenFrame_UpdatePopup", "TotemButton_OnClick", "TotemButton_OnLoad", "TotemButton_OnUpdate", "TotemButton_Update", "TotemFrame_OnEvent", "TotemFrame_OnLoad", "TotemFrame_Update", "TradeFrameCancelButton_OnClick", "TradeFrameTradeButton_Disable", "TradeFrameTradeButton_Enable", "TradeFrameTradeButton_SetToEnabledState", "TradeFrame_GetAvailableSlot", "TradeFrame_OnEvent", "TradeFrame_OnHide", "TradeFrame_OnLoad", "TradeFrame_OnMouseUp", "TradeFrame_OnShow", "TradeFrame_SetAcceptState", "TradeFrame_Update", "TradeFrame_UpdateMoney", "TradeFrame_UpdatePlayerItem", "TradeFrame_UpdateTargetItem", "TradeSkillFrame_LoadUI", "TradeSkillOnlyShowMakeable", "TradeSkillOnlyShowSkillUps", "TriggerTutorial", "TurnInArenaPetition", "TurnInGuildCharter", "TurnInPetition", "TurnLeftStart", "TurnLeftStop", "TurnOrActionStart", "TurnOrActionStop", "TurnRightStart", "TurnRightStop", "TutorialFrameNextButton_OnClick", "TutorialFramePrevButton_OnClick", "TutorialFrame_AlertButton_OnClick", "TutorialFrame_CheckBadge", "TutorialFrame_CheckNextPrevButtons", "TutorialFrame_ClearQueue", "TutorialFrame_ClearTextures", "TutorialFrame_Hide", "TutorialFrame_NewTutorial", "TutorialFrame_OnHide", "TutorialFrame_OnLoad", "TutorialFrame_OnShow", "TutorialFrame_Update", "UIDoFramesIntersect", "UIDropDownMenuButton_GetChecked", "UIDropDownMenuButton_GetName", "UIDropDownMenuButton_OnClick", "UIDropDownMenuButton_OpenColorPicker", "UIDropDownMenuDelegate_OnAttributeChanged", "UIDropDownMenu_AddButton", "UIDropDownMenu_ClearAll", "UIDropDownMenu_CreateFrames", "UIDropDownMenu_CreateInfo", "UIDropDownMenu_DisableButton", "UIDropDownMenu_DisableDropDown", "UIDropDownMenu_EnableButton", "UIDropDownMenu_EnableDropDown", "UIDropDownMenu_GetCurrentDropDown", "UIDropDownMenu_GetSelectedID", "UIDropDownMenu_GetSelectedName", "UIDropDownMenu_GetSelectedValue", "UIDropDownMenu_GetText", "UIDropDownMenu_GetValue", "UIDropDownMenu_Initialize", "UIDropDownMenu_InitializeHelper", "UIDropDownMenu_IsEnabled", "UIDropDownMenu_JustifyText", "UIDropDownMenu_OnHide", "UIDropDownMenu_OnUpdate", "UIDropDownMenu_Refresh", "UIDropDownMenu_SetAnchor", "UIDropDownMenu_SetButtonText", "UIDropDownMenu_SetButtonWidth", "UIDropDownMenu_SetSelectedID", "UIDropDownMenu_SetSelectedName", "UIDropDownMenu_SetSelectedValue", "UIDropDownMenu_SetText", "UIDropDownMenu_SetWidth", "UIDropDownMenu_StartCounting", "UIDropDownMenu_StopCounting", "UIErrorsFrame_OnEvent", "UIErrorsFrame_OnLoad", "UIFrameFade", "UIFrameFadeIn", "UIFrameFadeOut", "UIFrameFadeRemoveFrame", "UIFrameFade_OnUpdate", "UIFrameFlash", "UIFrameFlashRemoveFrame", "UIFrameFlashStop", "UIFrameFlash_OnUpdate", "UIFrameIsFading", "UIFrameIsFlashing", "UIMenuButton_OnClick", "UIMenuButton_OnEnter", "UIMenuButton_OnLeave", "UIMenuButton_OnLoad", "UIMenu_AddButton", "UIMenu_AutoSize", "UIMenu_FinishInitializing", "UIMenu_GetNumButtons", "UIMenu_Initialize", "UIMenu_OnShow", "UIMenu_OnUpdate", "UIMenu_StartCounting", "UIMenu_StopCounting", "UIParentLoadAddOn", "UIParent_ManageFramePosition", "UIParent_ManageFramePositions", "UIParent_OnEvent", "UIParent_OnLoad", "UnSilenceMember", "UninviteUnit", "UnitAffectingCombat", "UnitArmor", "UnitAttackBothHands", "UnitAttackPower", "UnitAttackSpeed", "UnitAura", "UnitBuff", "UnitCanAssist", "UnitCanAttack", "UnitCanCooperate", "UnitCastingInfo", "UnitChannelInfo", "UnitCharacterPoints", "UnitClass", "UnitClassBase", "UnitClassification", "UnitControllingVehicle", "UnitCreatureFamily", "UnitCreatureType", "UnitDamage", "UnitDebuff", "UnitDefense", "UnitDetailedThreatSituation", "UnitExists", "UnitFactionGroup", "UnitFrameHealthBar_Initialize", "UnitFrameHealthBar_OnEvent", "UnitFrameHealthBar_OnUpdate", "UnitFrameHealthBar_OnValueChanged", "UnitFrameHealthBar_Update", "UnitFrameManaBar_Initialize", "UnitFrameManaBar_OnEvent", "UnitFrameManaBar_OnUpdate", "UnitFrameManaBar_RegisterDefaultEvents", "UnitFrameManaBar_UnregisterDefaultEvents", "UnitFrameManaBar_Update", "UnitFrameManaBar_UpdateType", "UnitFramePortrait_Update", "UnitFrameThreatIndicator_Initialize", "UnitFrameThreatIndicator_OnEvent", "UnitFrame_Initialize", "UnitFrame_OnEnter", "UnitFrame_OnEvent", "UnitFrame_OnLeave", "UnitFrame_SetUnit", "UnitFrame_Update", "UnitFrame_UpdateThreatIndicator", "UnitFrame_UpdateTooltip", "UnitGUID", "UnitGroupRolesAssigned", "UnitHasLFGDeserter", "UnitHasLFGRandomCooldown", "UnitHasMana", "UnitHasRelicSlot", "UnitHasVehicleUI", "UnitHealth", "UnitHealthMax", "UnitInBattleground", "UnitInParty", "UnitInRaid", "UnitInRange", "UnitInVehicle", "UnitInVehicleControlSeat", "UnitIsAFK", "UnitIsCharmed", "UnitIsConnected", "UnitIsControlling", "UnitIsCorpse", "UnitIsDND", "UnitIsDead", "UnitIsDeadOrGhost", "UnitIsEnemy", "UnitIsFeignDeath", "UnitIsFriend", "UnitIsGhost", "UnitIsInMyGuild", "UnitIsPVP", "UnitIsPVPFreeForAll", "UnitIsPVPSanctuary", "UnitIsPartyLeader", "UnitIsPlayer", "UnitIsPossessed", "UnitIsRaidOfficer", "UnitIsSameServer", "UnitIsSilenced", "UnitIsTalking", "UnitIsTapped", "UnitIsTappedByAllThreatList", "UnitIsTappedByPlayer", "UnitIsTrivial", "UnitIsUnit", "UnitIsVisible", "UnitLevel", "UnitMana", "UnitManaMax", "UnitName", "UnitOnTaxi", "UnitPVPName", "UnitPVPRank", "UnitPlayerControlled", "UnitPlayerOrPetInParty", "UnitPlayerOrPetInRaid", "UnitPopup_HideButtons", "UnitPopup_OnClick", "UnitPopup_OnUpdate", "UnitPopup_ShowMenu", "UnitPower", "UnitPowerMax", "UnitPowerType", "UnitRace", "UnitRangedAttack", "UnitRangedAttackPower", "UnitRangedDamage", "UnitReaction", "UnitResistance", "UnitSelectionColor", "UnitSex", "UnitStat", "UnitSwitchToVehicleSeat", "UnitTargetsVehicleInRaidUI", "UnitThreatSituation", "UnitUsingVehicle", "UnitVehicleSeatCount", "UnitVehicleSeatInfo", "UnitVehicleSkin", "UnitWatchRegistered", "UnitXP", "UnitXPMax", "UnlockMultiCastActionBar", "UnlockPetActionBar", "UnregisterAutoHide", "UnregisterStateDriver", "UnregisterUnitWatch", "UnstablePet", "UpdateAddOnCPUUsage", "UpdateAddOnMemoryUsage", "UpdateBagButtonHighlight", "UpdateBagSlotStatus", "UpdateCoinPickupFrame", "UpdateGMTicket", "UpdateInventoryAlertStatus", "UpdateMapHighlight", "UpdateMenuBarTop", "UpdateMicroButtons", "UpdatePaperdollStats", "UpdatePartyMemberBackground", "UpdateSpells", "UpdateStackSplitFrame", "UpdateSubCategoryEnabledState", "UpdateUIPanelPositions", "UpdateWorldMapArrowFrames", "UploadSettings", "UseAction", "UseContainerItem", "UseEquipmentSet", "UseInventoryItem", "UseItemByName", "UseQuestLogSpecialItem", "UseSoulstone", "UsesGUID", "ValidateFramePosition", "VehicleActionButton_OnClick", "VehicleAimDecrement", "VehicleAimDownStart", "VehicleAimDownStop", "VehicleAimGetAngle", "VehicleAimGetNormAngle", "VehicleAimGetNormPower", "VehicleAimIncrement", "VehicleAimRequestAngle", "VehicleAimRequestNormAngle", "VehicleAimSetNormPower", "VehicleAimUpStart", "VehicleAimUpStop", "VehicleCameraZoomIn", "VehicleCameraZoomOut", "VehicleExit", "VehicleMenuBarPitch_OnClick", "VehicleMenuBarPitch_OnEvent", "VehicleMenuBarPitch_OnLoad", "VehicleMenuBarPitch_SetValue", "VehicleMenuBarStatusBars_ShowTooltip", "VehicleMenuBar_MoveMicroButtons", "VehicleMenuBar_OnEvent", "VehicleMenuBar_OnLoad", "VehicleMenuBar_ReleaseSkins", "VehicleMenuBar_SetSkin", "VehicleMenuBar_UpdateActionBars", "VehicleNextSeat", "VehiclePrevSeat", "VehicleSeatIndicatorButton_OnClick", "VehicleSeatIndicatorButton_OnEnter", "VehicleSeatIndicatorButton_OnLeave", "VehicleSeatIndicatorDropDown_Initialize", "VehicleSeatIndicatorDropDown_OnClick", "VehicleSeatIndicator_OnEvent", "VehicleSeatIndicator_OnLoad", "VehicleSeatIndicator_SetUpVehicle", "VehicleSeatIndicator_UnloadTextures", "VehicleSeatIndicator_Update", "VideoOptionsEffectsPanelSlider_OnValueChanged", "VideoOptionsEffectsPanel_Default", "VideoOptionsEffectsPanel_FixupQualityLevels", "VideoOptionsEffectsPanel_GetVideoQuality", "VideoOptionsEffectsPanel_OnEvent", "VideoOptionsEffectsPanel_OnLoad", "VideoOptionsEffectsPanel_Refresh", "VideoOptionsEffectsPanel_SetCustomQuality", "VideoOptionsEffectsPanel_SetPresetQuality", "VideoOptionsEffectsPanel_SetVideoQuality", "VideoOptionsEffectsPanel_SetVideoQualityLabels", "VideoOptionsEffectsPanel_UpdateVideoQuality", "VideoOptionsFrameCancel_OnClick", "VideoOptionsFrameDefault_OnClick", "VideoOptionsFrameOkay_OnClick", "VideoOptionsFrame_OnHide", "VideoOptionsFrame_OnLoad", "VideoOptionsFrame_SetAllToDefaults", "VideoOptionsFrame_SetCurrentToDefaults", "VideoOptionsFrame_Toggle", "VideoOptionsPanel_Cancel", "VideoOptionsPanel_Default", "VideoOptionsPanel_Okay", "VideoOptionsPanel_OnLoad", "VideoOptionsResolutionPanelMultiSampleDropDown_Initialize", "VideoOptionsResolutionPanelMultiSampleDropDown_OnClick", "VideoOptionsResolutionPanelMultiSampleDropDown_OnLoad", "VideoOptionsResolutionPanelRefreshDropDown_Initialize", "VideoOptionsResolutionPanelRefreshDropDown_OnClick", "VideoOptionsResolutionPanelRefreshDropDown_OnLoad", "VideoOptionsResolutionPanelResolutionDropDown_Initialize", "VideoOptionsResolutionPanelResolutionDropDown_LoadResolutions", "VideoOptionsResolutionPanelResolutionDropDown_OnClick", "VideoOptionsResolutionPanelResolutionDropDown_OnLoad", "VideoOptionsResolutionPanel_Default", "VideoOptionsResolutionPanel_GetMultisampleFormats", "VideoOptionsResolutionPanel_GetRefreshRates", "VideoOptionsResolutionPanel_OnEvent", "VideoOptionsResolutionPanel_OnLoad", "VideoOptionsResolutionPanel_Refresh", "VideoOptionsResolutionPanel_RefreshGammaControls", "VideoOptionsResolutionPanel_SetGamma", "VideoOptionsResolutionPanel_SetWindowed", "VideoOptionsStereoPanel_Default", "VideoOptionsStereoPanel_OnEvent", "VideoOptionsStereoPanel_OnLoad", "VoiceChatShineFadeIn", "VoiceChatShineFadeOut", "VoiceChatTalkers_CanHide", "VoiceChatTalkers_CreateButtons", "VoiceChatTalkers_FadeOut", "VoiceChatTalkers_OnEvent", "VoiceChatTalkers_OnLoad", "VoiceChatTalkers_OnUpdate", "VoiceChatTalkers_ResizeFrame", "VoiceChatTalkers_Update", "VoiceChat_ActivatePrimaryCaptureCallback", "VoiceChat_Animate", "VoiceChat_GetCurrentMicrophoneSignalLevel", "VoiceChat_IsPlayingLoopbackSound", "VoiceChat_IsRecordingLoopbackSound", "VoiceChat_OnUpdate", "VoiceChat_PlayLoopbackSound", "VoiceChat_RecordLoopbackSound", "VoiceChat_StartCapture", "VoiceChat_StopCapture", "VoiceChat_StopPlayingLoopbackSound", "VoiceChat_StopRecordingLoopbackSound", "VoiceChat_Toggle", "VoiceEnumerateCaptureDevices", "VoiceEnumerateOutputDevices", "VoiceGetCurrentCaptureDevice", "VoiceGetCurrentOutputDevice", "VoiceIsDisabledByClient", "VoiceMacroMenu_Click", "VoiceMacroMenu_OnLoad", "VoicePushToTalkStart", "VoicePushToTalkStop", "VoiceSelectCaptureDevice", "VoiceSelectOutputDevice", "WatchFrameDropDown_Initialize", "WatchFrameDropDown_OnHide", "WatchFrameDropDown_OnLoad", "WatchFrameHeaderDropDown_Initialize", "WatchFrameHeaderDropDown_OnLoad", "WatchFrameHeader_OnClick", "WatchFrameItem_OnClick", "WatchFrameItem_OnEnter", "WatchFrameItem_OnEvent", "WatchFrameItem_OnHide", "WatchFrameItem_OnLoad", "WatchFrameItem_OnShow", "WatchFrameItem_OnUpdate", "WatchFrameItem_UpdateCooldown", "WatchFrameLineTemplate_OnLoad", "WatchFrameLines_AddUpdateFunction", "WatchFrameLines_OnUpdate", "WatchFrameLines_RemoveUpdateFunction", "WatchFrameLinkButtonTemplate_Highlight", "WatchFrameLinkButtonTemplate_OnClick", "WatchFrameLinkButtonTemplate_OnLeftClick", "WatchFrameQuestPOI_OnClick", "WatchFrame_AbandonQuest", "WatchFrame_AddObjectiveHandler", "WatchFrame_ClearDisplay", "WatchFrame_Collapse", "WatchFrame_CollapseExpandButton_OnClick", "WatchFrame_DisplayQuestTimers", "WatchFrame_DisplayTrackedAchievements", "WatchFrame_DisplayTrackedQuests", "WatchFrame_Expand", "WatchFrame_GetCurrentMapQuests", "WatchFrame_GetVisibleIndex", "WatchFrame_HandleDisplayQuestTimers", "WatchFrame_HandleDisplayTrackedAchievements", "WatchFrame_HandleQuestTimerUpdate", "WatchFrame_MoveQuest", "WatchFrame_OnEvent", "WatchFrame_OnLoad", "WatchFrame_OnSizeChanged", "WatchFrame_OnUpdate", "WatchFrame_OpenAchievementFrame", "WatchFrame_OpenMapToQuest", "WatchFrame_OpenQuestLog", "WatchFrame_QuestTimerUpdateFunction", "WatchFrame_RemoveObjectiveHandler", "WatchFrame_ReverseQuestObjective", "WatchFrame_SetFilter", "WatchFrame_SetLine", "WatchFrame_SetSorting", "WatchFrame_SetWidth", "WatchFrame_ShareQuest", "WatchFrame_StopTrackingAchievement", "WatchFrame_StopTrackingQuest", "WatchFrame_Update", "WatchFrame_UpdateTimedAchievements", "WhoFrameColumn_SetWidth", "WhoFrameDropDownButton_OnClick", "WhoFrameDropDown_Initialize", "WhoFrameDropDown_OnLoad", "WhoFrameEditBox_OnEnterPressed", "WhoFrame_GetDefaultWhoCommand", "WhoList_Update", "WintergraspTimer_OnLoad", "WintergraspTimer_OnUpdate", "WithdrawGoldEditBox_Update", "WithdrawGuildBankMoney", "WorldFrame_OnLoad", "WorldFrame_OnUpdate", "WorldMapBlobFrame_CalculateHitTranslations", "WorldMapBlobFrame_OnLoad", "WorldMapBlobFrame_OnUpdate", "WorldMapButton_OnClick", "WorldMapButton_OnUpdate", "WorldMapContinentButton_OnClick", "WorldMapContinentsDropDown_Initialize", "WorldMapContinentsDropDown_Update", "WorldMapFrame_ChangeOpacity", "WorldMapFrame_ClearQuestPOIs", "WorldMapFrame_DisplayQuestPOI", "WorldMapFrame_DisplayQuests", "WorldMapFrame_GetQuestFrame", "WorldMapFrame_LoadContinents", "WorldMapFrame_LoadZones", "WorldMapFrame_OnEvent", "WorldMapFrame_OnHide", "WorldMapFrame_OnKeyDown", "WorldMapFrame_OnLoad", "WorldMapFrame_OnShow", "WorldMapFrame_OnUpdate", "WorldMapFrame_PingPlayerPosition", "WorldMapFrame_ResetFrameLevels", "WorldMapFrame_ResetQuestColors", "WorldMapFrame_ReverseQuestObjective", "WorldMapFrame_SaveOpacity", "WorldMapFrame_SelectQuestById", "WorldMapFrame_SelectQuestFrame", "WorldMapFrame_SetFullMapView", "WorldMapFrame_SetMapName", "WorldMapFrame_SetMiniMode", "WorldMapFrame_SetOpacity", "WorldMapFrame_SetPOIMaxBounds", "WorldMapFrame_SetQuestMapView", "WorldMapFrame_ToggleAdvanced", "WorldMapFrame_ToggleWindowSize", "WorldMapFrame_Update", "WorldMapFrame_UpdateMap", "WorldMapFrame_UpdateQuests", "WorldMapFrame_UpdateUnits", "WorldMapLevelButton_OnClick", "WorldMapLevelDown_OnClick", "WorldMapLevelDropDown_Initialize", "WorldMapLevelDropDown_Update", "WorldMapLevelUp_OnClick", "WorldMapPOI_OnClick", "WorldMapPOI_OnEnter", "WorldMapPOI_OnLeave", "WorldMapQuestFrame_OnEnter", "WorldMapQuestFrame_OnLeave", "WorldMapQuestFrame_OnMouseDown", "WorldMapQuestFrame_OnMouseUp", "WorldMapQuestFrame_UpdateMouseOver", "WorldMapQuestPOI_OnClick", "WorldMapQuestPOI_OnEnter", "WorldMapQuestPOI_OnLeave", "WorldMapQuestPOI_SetTooltip", "WorldMapQuestShowObjectives_AdjustPosition", "WorldMapQuestShowObjectives_Toggle", "WorldMapTitleButton_OnClick", "WorldMapTitleButton_OnDragStart", "WorldMapTitleButton_OnDragStop", "WorldMapTitleButton_OnLoad", "WorldMapTitleDropDown_Initialize", "WorldMapTitleDropDown_ToggleLock", "WorldMapTitleDropDown_ToggleOpacity", "WorldMapTrackQuest_Toggle", "WorldMapUnitDropDown_Initialize", "WorldMapUnitDropDown_OnClick", "WorldMapUnitDropDown_ReportAll_OnClick", "WorldMapUnit_OnEnter", "WorldMapUnit_OnEvent", "WorldMapUnit_OnHide", "WorldMapUnit_OnLeave", "WorldMapUnit_OnLoad", "WorldMapUnit_OnMouseUp", "WorldMapUnit_OnShow", "WorldMapUnit_Update", "WorldMapZoneButton_OnClick", "WorldMapZoneDropDown_Initialize", "WorldMapZoneDropDown_Update", "WorldMapZoneMinimapDropDown_GetText", "WorldMapZoneMinimapDropDown_Initialize", "WorldMapZoneMinimapDropDown_OnClick", "WorldMapZoneMinimapDropDown_Update", "WorldMapZoomOutButton_OnClick", "WorldMap_ClearTextures", "WorldMap_CreatePOI", "WorldMap_GetPOITextureCoords", "WorldMap_GetVehicleTexture", "WorldMap_LoadTextures", "WorldMap_OpenToQuest", "WorldMap_ToggleSizeDown", "WorldMap_ToggleSizeUp", "WorldStateAlwaysUpFrame_FilterChatMsgLoot", "WorldStateAlwaysUpFrame_FilterChatMsgSystem", "WorldStateAlwaysUpFrame_OnEvent", "WorldStateAlwaysUpFrame_OnLoad", "WorldStateAlwaysUpFrame_OnUpdate", "WorldStateAlwaysUpFrame_StartBGChatFilter", "WorldStateAlwaysUpFrame_StopBGChatFilter", "WorldStateAlwaysUpFrame_Update", "WorldStateFrame_CanShowBattlefieldMinimap", "WorldStateFrame_ToggleBattlefieldMinimap", "WorldStateScoreFrameTab_OnClick", "WorldStateScoreFrame_OnLoad", "WorldStateScoreFrame_Resize", "WorldStateScoreFrame_Update", "ZoneText_OnEvent", "ZoneText_OnLoad", "ZoomOut", "_ERRORMESSAGE", "_GetPlayerDifficultyMenuOptions", -- tables: FrameXML, Blizzard_CombatLog, Blizzard_CombatText, Blizzard_RaidUI, Blizzard_TimeManager, Blizzard_TokenUI "ADDED_PLAYERS", "AUTOCAST_SHINE_SPEEDS", "AUTOCAST_SHINE_TIMERS", "AUTOCOMPLETE_LIST", "AUTOCOMPLETE_LIST_TEMPLATES", "AchievementMicroButton", "ActionBarDownButton", "ActionBarUpButton", "ActionBarsPanelOptions", "ActionButton1", "ActionButton10", "ActionButton10Cooldown", "ActionButton11", "ActionButton11Cooldown", "ActionButton12", "ActionButton12Cooldown", "ActionButton1Cooldown", "ActionButton2", "ActionButton2Cooldown", "ActionButton3", "ActionButton3Cooldown", "ActionButton4", "ActionButton4Cooldown", "ActionButton5", "ActionButton5Cooldown", "ActionButton6", "ActionButton6Cooldown", "ActionButton7", "ActionButton7Cooldown", "ActionButton8", "ActionButton8Cooldown", "ActionButton9", "ActionButton9Cooldown", "ActionStatus", "AddFriendEntryFrame", "AddFriendEntryFrameAcceptButton", "AddFriendEntryFrameCancelButton", "AddFriendEntryFrameInfoButton", "AddFriendFrame", "AddFriendInfoFrame", "AddFriendInfoFrameContinueButton", "AddFriendNameEditBox", "AddFriendNoteEditBox", "AddFriendNoteFrame", "AddFriendNoteFrameScrollFrame", "AddFriendNoteFrameScrollFrameFocusButton", "AddFriendNoteFrameScrollFrameScrollBar", "AddFriendNoteFrameScrollFrameScrollBarScrollDownButton", "AddFriendNoteFrameScrollFrameScrollBarScrollUpButton", "AlertFrame", "AnimTimerFrame", "ArenaFrame", "ArenaFrameCancelButton", "ArenaFrameCloseButton", "ArenaFrameGroupJoinButton", "ArenaFrameJoinButton", "ArenaRegistrarButton1", "ArenaRegistrarButton2", "ArenaRegistrarButton3", "ArenaRegistrarButton4", "ArenaRegistrarButton5", "ArenaRegistrarButton6", "ArenaRegistrarFrame", "ArenaRegistrarFrameCancelButton", "ArenaRegistrarFrameCloseButton", "ArenaRegistrarFrameEditBox", "ArenaRegistrarFrameGoodbyeButton", "ArenaRegistrarFramePurchaseButton", "ArenaRegistrarGreetingFrame", "ArenaRegistrarMoneyFrame", "ArenaRegistrarMoneyFrameCopperButton", "ArenaRegistrarMoneyFrameGoldButton", "ArenaRegistrarMoneyFrameSilverButton", "ArenaRegistrarNpcNameFrame", "ArenaRegistrarPurchaseFrame", "ArenaZone1", "ArenaZone2", "ArenaZone3", "ArenaZone4", "ArenaZone5", "ArenaZone6", "AudioOptionsFrame", "AudioOptionsFrameCancel", "AudioOptionsFrameCategoryFrame", "AudioOptionsFrameCategoryFrameButton1", "AudioOptionsFrameCategoryFrameButton10", "AudioOptionsFrameCategoryFrameButton10Toggle", "AudioOptionsFrameCategoryFrameButton11", "AudioOptionsFrameCategoryFrameButton11Toggle", "AudioOptionsFrameCategoryFrameButton12", "AudioOptionsFrameCategoryFrameButton12Toggle", "AudioOptionsFrameCategoryFrameButton13", "AudioOptionsFrameCategoryFrameButton13Toggle", "AudioOptionsFrameCategoryFrameButton14", "AudioOptionsFrameCategoryFrameButton14Toggle", "AudioOptionsFrameCategoryFrameButton15", "AudioOptionsFrameCategoryFrameButton15Toggle", "AudioOptionsFrameCategoryFrameButton16", "AudioOptionsFrameCategoryFrameButton16Toggle", "AudioOptionsFrameCategoryFrameButton17", "AudioOptionsFrameCategoryFrameButton17Toggle", "AudioOptionsFrameCategoryFrameButton18", "AudioOptionsFrameCategoryFrameButton18Toggle", "AudioOptionsFrameCategoryFrameButton19", "AudioOptionsFrameCategoryFrameButton19Toggle", "AudioOptionsFrameCategoryFrameButton1Toggle", "AudioOptionsFrameCategoryFrameButton2", "AudioOptionsFrameCategoryFrameButton20", "AudioOptionsFrameCategoryFrameButton20Toggle", "AudioOptionsFrameCategoryFrameButton21", "AudioOptionsFrameCategoryFrameButton21Toggle", "AudioOptionsFrameCategoryFrameButton22", "AudioOptionsFrameCategoryFrameButton22Toggle", "AudioOptionsFrameCategoryFrameButton23", "AudioOptionsFrameCategoryFrameButton23Toggle", "AudioOptionsFrameCategoryFrameButton2Toggle", "AudioOptionsFrameCategoryFrameButton3", "AudioOptionsFrameCategoryFrameButton3Toggle", "AudioOptionsFrameCategoryFrameButton4", "AudioOptionsFrameCategoryFrameButton4Toggle", "AudioOptionsFrameCategoryFrameButton5", "AudioOptionsFrameCategoryFrameButton5Toggle", "AudioOptionsFrameCategoryFrameButton6", "AudioOptionsFrameCategoryFrameButton6Toggle", "AudioOptionsFrameCategoryFrameButton7", "AudioOptionsFrameCategoryFrameButton7Toggle", "AudioOptionsFrameCategoryFrameButton8", "AudioOptionsFrameCategoryFrameButton8Toggle", "AudioOptionsFrameCategoryFrameButton9", "AudioOptionsFrameCategoryFrameButton9Toggle", "AudioOptionsFrameCategoryFrameList", "AudioOptionsFrameCategoryFrameListScrollBar", "AudioOptionsFrameCategoryFrameListScrollBarScrollDownButton", "AudioOptionsFrameCategoryFrameListScrollBarScrollUpButton", "AudioOptionsFrameCategoryFrameListScrollChildFrame", "AudioOptionsFrameDefaults", "AudioOptionsFrameOkay", "AudioOptionsFramePanelContainer", "AudioOptionsSoundPanel", "AudioOptionsSoundPanelAmbienceVolume", "AudioOptionsSoundPanelAmbientSounds", "AudioOptionsSoundPanelEmoteSounds", "AudioOptionsSoundPanelEnableDSPs", "AudioOptionsSoundPanelEnableSound", "AudioOptionsSoundPanelErrorSpeech", "AudioOptionsSoundPanelHRTF", "AudioOptionsSoundPanelHardware", "AudioOptionsSoundPanelHardwareDropDown", "AudioOptionsSoundPanelHardwareDropDownButton", "AudioOptionsSoundPanelLoopMusic", "AudioOptionsSoundPanelMasterVolume", "AudioOptionsSoundPanelMusic", "AudioOptionsSoundPanelMusicVolume", "AudioOptionsSoundPanelPetSounds", "AudioOptionsSoundPanelPlayback", "AudioOptionsSoundPanelReverb", "AudioOptionsSoundPanelSoundChannels", "AudioOptionsSoundPanelSoundEffects", "AudioOptionsSoundPanelSoundInBG", "AudioOptionsSoundPanelSoundQuality", "AudioOptionsSoundPanelSoundVolume", "AudioOptionsSoundPanelUseHardware", "AudioOptionsSoundPanelVolume", "AudioOptionsVoicePanel", "AudioOptionsVoicePanelAmbienceFade", "AudioOptionsVoicePanelAudio", "AudioOptionsVoicePanelBinding", "AudioOptionsVoicePanelBindingOutput", "AudioOptionsVoicePanelChatMode1", "AudioOptionsVoicePanelChatMode1KeyBindingButton", "AudioOptionsVoicePanelChatMode2", "AudioOptionsVoicePanelChatModeDropDown", "AudioOptionsVoicePanelChatModeDropDownButton", "AudioOptionsVoicePanelDisabledMessage", "AudioOptionsVoicePanelEnableMicrophone", "AudioOptionsVoicePanelEnableVoice", "AudioOptionsVoicePanelInputDeviceDropDown", "AudioOptionsVoicePanelInputDeviceDropDownButton", "AudioOptionsVoicePanelListening", "AudioOptionsVoicePanelMicTest", "AudioOptionsVoicePanelMicrophoneVolume", "AudioOptionsVoicePanelMusicFade", "AudioOptionsVoicePanelOutputDeviceDropDown", "AudioOptionsVoicePanelOutputDeviceDropDownButton", "AudioOptionsVoicePanelPushToTalkSound", "AudioOptionsVoicePanelSoundFade", "AudioOptionsVoicePanelSpeakerVolume", "AudioOptionsVoicePanelTalking", "AudioOptionsVoicePanelVoiceActivateSlider", "AutoCompleteBox", "AutoCompleteButton1", "AutoCompleteButton2", "AutoCompleteButton3", "AutoCompleteButton4", "AutoCompleteButton5", "AutoFollowStatus", "AzerothButton", "BAD_BOY_UNITS", "BATTLEFIELD_TIMER_THRESHOLDS", "BNConversationInviteDialog", "BNConversationInviteDialogCancelButton", "BNConversationInviteDialogInviteButton", "BNConversationInviteDialogList", "BNConversationInviteDialogListFriend1", "BNConversationInviteDialogListFriend2", "BNConversationInviteDialogListFriend3", "BNConversationInviteDialogListFriend4", "BNConversationInviteDialogListFriend5", "BNConversationInviteDialogListFriend6", "BNConversationInviteDialogListFriend7", "BNConversationInviteDialogListScrollFrame", "BNConversationInviteDialogListScrollFrameScrollBar", "BNConversationInviteDialogListScrollFrameScrollBarScrollDownButton", "BNConversationInviteDialogListScrollFrameScrollBarScrollUpButton", "BNConversationInviteDialogListScrollFrameScrollChildFrame", "BNToastFrame", "BNToastFrameClickFrame", "BNToastFrameCloseButton", "BNToastFrameGlowFrame", "BNetEventFrame", "BNetReportFrame", "BNetReportFrameCancelButton", "BNetReportFrameComment", "BNetReportFrameCommentBox", "BNetReportFrameCommentScrollFrame", "BNetReportFrameCommentScrollFrameFocusButton", "BNetReportFrameCommentScrollFrameScrollBar", "BNetReportFrameCommentScrollFrameScrollBarScrollDownButton", "BNetReportFrameCommentScrollFrameScrollBarScrollUpButton", "BNetReportFrameReportButton", "BackpackTokenFrame", "BackpackTokenFrameToken1", "BackpackTokenFrameToken2", "BackpackTokenFrameToken3", "BankCloseButton", "BankFrame", "BankFrameBag1", "BankFrameBag1Cooldown", "BankFrameBag1HighlightFrame", "BankFrameBag2", "BankFrameBag2Cooldown", "BankFrameBag2HighlightFrame", "BankFrameBag3", "BankFrameBag3Cooldown", "BankFrameBag3HighlightFrame", "BankFrameBag4", "BankFrameBag4Cooldown", "BankFrameBag4HighlightFrame", "BankFrameBag5", "BankFrameBag5Cooldown", "BankFrameBag5HighlightFrame", "BankFrameBag6", "BankFrameBag6Cooldown", "BankFrameBag6HighlightFrame", "BankFrameBag7", "BankFrameBag7Cooldown", "BankFrameBag7HighlightFrame", "BankFrameDetailMoneyFrame", "BankFrameDetailMoneyFrameCopperButton", "BankFrameDetailMoneyFrameGoldButton", "BankFrameDetailMoneyFrameSilverButton", "BankFrameItem1", "BankFrameItem10", "BankFrameItem10Cooldown", "BankFrameItem11", "BankFrameItem11Cooldown", "BankFrameItem12", "BankFrameItem12Cooldown", "BankFrameItem13", "BankFrameItem13Cooldown", "BankFrameItem14", "BankFrameItem14Cooldown", "BankFrameItem15", "BankFrameItem15Cooldown", "BankFrameItem16", "BankFrameItem16Cooldown", "BankFrameItem17", "BankFrameItem17Cooldown", "BankFrameItem18", "BankFrameItem18Cooldown", "BankFrameItem19", "BankFrameItem19Cooldown", "BankFrameItem1Cooldown", "BankFrameItem2", "BankFrameItem20", "BankFrameItem20Cooldown", "BankFrameItem21", "BankFrameItem21Cooldown", "BankFrameItem22", "BankFrameItem22Cooldown", "BankFrameItem23", "BankFrameItem23Cooldown", "BankFrameItem24", "BankFrameItem24Cooldown", "BankFrameItem25", "BankFrameItem25Cooldown", "BankFrameItem26", "BankFrameItem26Cooldown", "BankFrameItem27", "BankFrameItem27Cooldown", "BankFrameItem28", "BankFrameItem28Cooldown", "BankFrameItem2Cooldown", "BankFrameItem3", "BankFrameItem3Cooldown", "BankFrameItem4", "BankFrameItem4Cooldown", "BankFrameItem5", "BankFrameItem5Cooldown", "BankFrameItem6", "BankFrameItem6Cooldown", "BankFrameItem7", "BankFrameItem7Cooldown", "BankFrameItem8", "BankFrameItem8Cooldown", "BankFrameItem9", "BankFrameItem9Cooldown", "BankFrameMoneyFrame", "BankFrameMoneyFrameCopperButton", "BankFrameMoneyFrameGoldButton", "BankFrameMoneyFrameSilverButton", "BankFramePurchaseButton", "BankFramePurchaseInfo", "BasicScriptErrors", "BasicScriptErrorsButton", "BattlefieldFrame", "BattlefieldFrameCancelButton", "BattlefieldFrameCloseButton", "BattlefieldFrameGroupJoinButton", "BattlefieldFrameInfoScrollFrame", "BattlefieldFrameInfoScrollFrameChildFrame", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfo", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossReward", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinReward", "BattlefieldFrameInfoScrollFrameScrollBar", "BattlefieldFrameInfoScrollFrameScrollBarScrollDownButton", "BattlefieldFrameInfoScrollFrameScrollBarScrollUpButton", "BattlefieldFrameJoinButton", "BattlefieldListScrollFrame", "BattlefieldListScrollFrameScrollBar", "BattlefieldListScrollFrameScrollBarScrollDownButton", "BattlefieldListScrollFrameScrollBarScrollUpButton", "BattlefieldListScrollFrameScrollChildFrame", "BattlefieldTimerFrame", "BattlefieldZone1", "BattlefieldZone2", "BattlefieldZone3", "BattlefieldZone4", "BattlefieldZone5", "BattlegroundType1", "BattlegroundType2", "BattlegroundType3", "BattlegroundType4", "BattlegroundType5", "BattlenetPanelOptions", "BlizzardStopwatchOptions", "Blizzard_CombatLog_CurrentSettings", "Blizzard_CombatLog_Filter_Defaults", "Blizzard_CombatLog_Filters", "BonusActionBarFrame", "BonusActionButton1", "BonusActionButton10", "BonusActionButton10Cooldown", "BonusActionButton11", "BonusActionButton11Cooldown", "BonusActionButton12", "BonusActionButton12Cooldown", "BonusActionButton1Cooldown", "BonusActionButton2", "BonusActionButton2Cooldown", "BonusActionButton3", "BonusActionButton3Cooldown", "BonusActionButton4", "BonusActionButton4Cooldown", "BonusActionButton5", "BonusActionButton5Cooldown", "BonusActionButton6", "BonusActionButton6Cooldown", "BonusActionButton7", "BonusActionButton7Cooldown", "BonusActionButton8", "BonusActionButton8Cooldown", "BonusActionButton9", "BonusActionButton9Cooldown", "Boss1TargetFrame", "Boss1TargetFrameBuffs", "Boss1TargetFrameDebuffs", "Boss1TargetFrameDropDown", "Boss1TargetFrameDropDownButton", "Boss1TargetFrameHealthBar", "Boss1TargetFrameManaBar", "Boss1TargetFrameNumericalThreat", "Boss1TargetFrameTextureFrame", "Boss2TargetFrame", "Boss2TargetFrameBuffs", "Boss2TargetFrameDebuffs", "Boss2TargetFrameDropDown", "Boss2TargetFrameDropDownButton", "Boss2TargetFrameHealthBar", "Boss2TargetFrameManaBar", "Boss2TargetFrameNumericalThreat", "Boss2TargetFrameTextureFrame", "Boss3TargetFrame", "Boss3TargetFrameBuffs", "Boss3TargetFrameDebuffs", "Boss3TargetFrameDropDown", "Boss3TargetFrameDropDownButton", "Boss3TargetFrameHealthBar", "Boss3TargetFrameManaBar", "Boss3TargetFrameNumericalThreat", "Boss3TargetFrameTextureFrame", "Boss4TargetFrame", "Boss4TargetFrameBuffs", "Boss4TargetFrameDebuffs", "Boss4TargetFrameDropDown", "Boss4TargetFrameDropDownButton", "Boss4TargetFrameHealthBar", "Boss4TargetFrameManaBar", "Boss4TargetFrameNumericalThreat", "Boss4TargetFrameTextureFrame", "BuffButton1", "BuffButton2", "BuffFrame", "BuffsPanelOptions", "CHANNELPULLOUT_FADEFRAMES", "CHANNELPULLOUT_OPTIONS", "CHARACTERFRAME_SUBFRAMES", "CHATCONFIG_SELECTED_FILTER_COLORS", "CHATCONFIG_SELECTED_FILTER_FILTERS", "CHATCONFIG_SELECTED_FILTER_SETTINGS", "CHAT_CATEGORY_LIST", "CHAT_CHANNEL_TABBING", "CHAT_CONFIG_CATEGORIES", "CHAT_CONFIG_CHANNEL_LIST", "CHAT_CONFIG_CHAT_CREATURE_LEFT", "CHAT_CONFIG_CHAT_LEFT", "CHAT_CONFIG_OTHER_COMBAT", "CHAT_CONFIG_OTHER_PVP", "CHAT_CONFIG_OTHER_SYSTEM", "CHAT_FONT_HEIGHTS", "CHAT_FRAMES", "CHAT_FRAME_TEXTURES", "CHAT_INVERTED_CATEGORY_LIST", "CHAT_OPTIONS", "CLASS_BUTTONS", "CLASS_ICON_TCOORDS", "CLASS_SORT_ORDER", "COINFRAME_BINDING_CACHE", "COMBATCONFIG_COLORPICKER_FUNCTIONS", "COMBATLOG", "COMBATLOG_DEFAULT_COLORS", "COMBATLOG_DEFAULT_SETTINGS", "COMBATLOG_EVENT_LIST", "COMBATLOG_FLAG_LIST", "COMBAT_CONFIG_MESSAGESOURCES_BY", "COMBAT_CONFIG_MESSAGESOURCES_TO", "COMBAT_CONFIG_MESSAGETYPES_LEFT", "COMBAT_CONFIG_MESSAGETYPES_MISC", "COMBAT_CONFIG_MESSAGETYPES_RIGHT", "COMBAT_CONFIG_TABS", "COMBAT_CONFIG_UNIT_COLORS", "COMBAT_TEXT_LOCATIONS", "COMBAT_TEXT_RUNE", "COMBAT_TEXT_TO_ANIMATE", "COMBAT_TEXT_TYPE_INFO", "CURRENT_BATTLEFIELD_QUEUES", "CURRENT_MAP_QUESTS", "CameraPanelOptions", "CastingBarFrame", "ChannelButton1", "ChannelButton10", "ChannelButton10SpeakerFrame", "ChannelButton11", "ChannelButton11SpeakerFrame", "ChannelButton12", "ChannelButton12SpeakerFrame", "ChannelButton13", "ChannelButton13SpeakerFrame", "ChannelButton14", "ChannelButton14SpeakerFrame", "ChannelButton15", "ChannelButton15SpeakerFrame", "ChannelButton16", "ChannelButton16SpeakerFrame", "ChannelButton17", "ChannelButton17SpeakerFrame", "ChannelButton18", "ChannelButton18SpeakerFrame", "ChannelButton19", "ChannelButton19SpeakerFrame", "ChannelButton1SpeakerFrame", "ChannelButton2", "ChannelButton20", "ChannelButton20SpeakerFrame", "ChannelButton2SpeakerFrame", "ChannelButton3", "ChannelButton3SpeakerFrame", "ChannelButton4", "ChannelButton4SpeakerFrame", "ChannelButton5", "ChannelButton5SpeakerFrame", "ChannelButton6", "ChannelButton6SpeakerFrame", "ChannelButton7", "ChannelButton7SpeakerFrame", "ChannelButton8", "ChannelButton8SpeakerFrame", "ChannelButton9", "ChannelButton9SpeakerFrame", "ChannelFrame", "ChannelFrameAutoJoin", "ChannelFrameAutoJoinBattleground", "ChannelFrameAutoJoinParty", "ChannelFrameDaughterFrame", "ChannelFrameDaughterFrameCancelButton", "ChannelFrameDaughterFrameChannelName", "ChannelFrameDaughterFrameChannelPassword", "ChannelFrameDaughterFrameDetailCloseButton", "ChannelFrameDaughterFrameOkayButton", "ChannelFrameNewButton", "ChannelFrameVerticalBar", "ChannelListDropDown", "ChannelListDropDownButton", "ChannelListScrollChildFrame", "ChannelListScrollFrame", "ChannelListScrollFrameScrollBar", "ChannelListScrollFrameScrollBarScrollDownButton", "ChannelListScrollFrameScrollBarScrollUpButton", "ChannelMemberButton1", "ChannelMemberButton10", "ChannelMemberButton10Rank", "ChannelMemberButton10SpeakerFrame", "ChannelMemberButton11", "ChannelMemberButton11Rank", "ChannelMemberButton11SpeakerFrame", "ChannelMemberButton12", "ChannelMemberButton12Rank", "ChannelMemberButton12SpeakerFrame", "ChannelMemberButton13", "ChannelMemberButton13Rank", "ChannelMemberButton13SpeakerFrame", "ChannelMemberButton14", "ChannelMemberButton14Rank", "ChannelMemberButton14SpeakerFrame", "ChannelMemberButton15", "ChannelMemberButton15Rank", "ChannelMemberButton15SpeakerFrame", "ChannelMemberButton16", "ChannelMemberButton16Rank", "ChannelMemberButton16SpeakerFrame", "ChannelMemberButton17", "ChannelMemberButton17Rank", "ChannelMemberButton17SpeakerFrame", "ChannelMemberButton18", "ChannelMemberButton18Rank", "ChannelMemberButton18SpeakerFrame", "ChannelMemberButton19", "ChannelMemberButton19Rank", "ChannelMemberButton19SpeakerFrame", "ChannelMemberButton1Rank", "ChannelMemberButton1SpeakerFrame", "ChannelMemberButton2", "ChannelMemberButton20", "ChannelMemberButton20Rank", "ChannelMemberButton20SpeakerFrame", "ChannelMemberButton21", "ChannelMemberButton21Rank", "ChannelMemberButton21SpeakerFrame", "ChannelMemberButton22", "ChannelMemberButton22Rank", "ChannelMemberButton22SpeakerFrame", "ChannelMemberButton2Rank", "ChannelMemberButton2SpeakerFrame", "ChannelMemberButton3", "ChannelMemberButton3Rank", "ChannelMemberButton3SpeakerFrame", "ChannelMemberButton4", "ChannelMemberButton4Rank", "ChannelMemberButton4SpeakerFrame", "ChannelMemberButton5", "ChannelMemberButton5Rank", "ChannelMemberButton5SpeakerFrame", "ChannelMemberButton6", "ChannelMemberButton6Rank", "ChannelMemberButton6SpeakerFrame", "ChannelMemberButton7", "ChannelMemberButton7Rank", "ChannelMemberButton7SpeakerFrame", "ChannelMemberButton8", "ChannelMemberButton8Rank", "ChannelMemberButton8SpeakerFrame", "ChannelMemberButton9", "ChannelMemberButton9Rank", "ChannelMemberButton9SpeakerFrame", "ChannelMenuChatTypeGroups", "ChannelPullout", "ChannelPulloutBackground", "ChannelPulloutCloseButton", "ChannelPulloutRoster", "ChannelPulloutRosterButton1", "ChannelPulloutRosterButton1Speaker", "ChannelPulloutRosterButton2", "ChannelPulloutRosterButton2Speaker", "ChannelPulloutRosterButton3", "ChannelPulloutRosterButton3Speaker", "ChannelPulloutRosterButton4", "ChannelPulloutRosterButton4Speaker", "ChannelPulloutRosterButton5", "ChannelPulloutRosterButton5Speaker", "ChannelPulloutRosterScroll", "ChannelPulloutRosterScrollDownBtn", "ChannelPulloutRosterScrollUpBtn", "ChannelPulloutTab", "ChannelPulloutTabDropDown", "ChannelPulloutTabDropDownButton", "ChannelPulloutTabFlash", "ChannelRoster", "ChannelRosterDropDown", "ChannelRosterDropDownButton", "ChannelRosterScrollFrame", "ChannelRosterScrollFrameScrollBar", "ChannelRosterScrollFrameScrollBarScrollDownButton", "ChannelRosterScrollFrameScrollBarScrollUpButton", "ChannelRosterScrollFrameScrollChildFrame", "CharacterAmmoSlot", "CharacterAmmoSlotCooldown", "CharacterAttributesFrame", "CharacterBackSlot", "CharacterBackSlotCooldown", "CharacterBackSlotPopoutButton", "CharacterBag0Slot", "CharacterBag0SlotItemAnim", "CharacterBag1Slot", "CharacterBag1SlotItemAnim", "CharacterBag2Slot", "CharacterBag2SlotItemAnim", "CharacterBag3Slot", "CharacterBag3SlotItemAnim", "CharacterChestSlot", "CharacterChestSlotCooldown", "CharacterChestSlotPopoutButton", "CharacterFeetSlot", "CharacterFeetSlotCooldown", "CharacterFeetSlotPopoutButton", "CharacterFinger0Slot", "CharacterFinger0SlotCooldown", "CharacterFinger0SlotPopoutButton", "CharacterFinger1Slot", "CharacterFinger1SlotCooldown", "CharacterFinger1SlotPopoutButton", "CharacterFrame", "CharacterFrameCloseButton", "CharacterFrameTab1", "CharacterFrameTab2", "CharacterFrameTab3", "CharacterFrameTab4", "CharacterFrameTab5", "CharacterHandsSlot", "CharacterHandsSlotCooldown", "CharacterHandsSlotPopoutButton", "CharacterHeadSlot", "CharacterHeadSlotCooldown", "CharacterHeadSlotPopoutButton", "CharacterLegsSlot", "CharacterLegsSlotCooldown", "CharacterLegsSlotPopoutButton", "CharacterMainHandSlot", "CharacterMainHandSlotCooldown", "CharacterMainHandSlotPopoutButton", "CharacterMicroButton", "CharacterModelFrame", "CharacterModelFrameRotateLeftButton", "CharacterModelFrameRotateRightButton", "CharacterNameFrame", "CharacterNeckSlot", "CharacterNeckSlotCooldown", "CharacterNeckSlotPopoutButton", "CharacterRangedSlot", "CharacterRangedSlotCooldown", "CharacterRangedSlotPopoutButton", "CharacterResistanceFrame", "CharacterSecondaryHandSlot", "CharacterSecondaryHandSlotCooldown", "CharacterSecondaryHandSlotPopoutButton", "CharacterShirtSlot", "CharacterShirtSlotCooldown", "CharacterShirtSlotPopoutButton", "CharacterShoulderSlot", "CharacterShoulderSlotCooldown", "CharacterShoulderSlotPopoutButton", "CharacterTabardSlot", "CharacterTabardSlotCooldown", "CharacterTabardSlotPopoutButton", "CharacterTrinket0Slot", "CharacterTrinket0SlotCooldown", "CharacterTrinket0SlotPopoutButton", "CharacterTrinket1Slot", "CharacterTrinket1SlotCooldown", "CharacterTrinket1SlotPopoutButton", "CharacterWaistSlot", "CharacterWaistSlotCooldown", "CharacterWaistSlotPopoutButton", "CharacterWristSlot", "CharacterWristSlotCooldown", "CharacterWristSlotPopoutButton", "ChatBNPlayerDropDown", "ChatBNPlayerDropDownButton", "ChatChannelDropDown", "ChatChannelDropDownButton", "ChatConfigBackgroundFrame", "ChatConfigCategoryFrame", "ChatConfigCategoryFrameButton1", "ChatConfigCategoryFrameButton2", "ChatConfigCategoryFrameButton3", "ChatConfigCategoryFrameButton4", "ChatConfigChannelSettings", "ChatConfigChannelSettingsClassColorLegend", "ChatConfigChannelSettingsLeft", "ChatConfigChatSettings", "ChatConfigChatSettingsClassColorLegend", "ChatConfigChatSettingsLeft", "ChatConfigChatSettingsLeftCheckBox1", "ChatConfigChatSettingsLeftCheckBox10", "ChatConfigChatSettingsLeftCheckBox10Check", "ChatConfigChatSettingsLeftCheckBox10ColorClasses", "ChatConfigChatSettingsLeftCheckBox10ColorSwatch", "ChatConfigChatSettingsLeftCheckBox11", "ChatConfigChatSettingsLeftCheckBox11Check", "ChatConfigChatSettingsLeftCheckBox11ColorClasses", "ChatConfigChatSettingsLeftCheckBox11ColorSwatch", "ChatConfigChatSettingsLeftCheckBox12", "ChatConfigChatSettingsLeftCheckBox12Check", "ChatConfigChatSettingsLeftCheckBox12ColorClasses", "ChatConfigChatSettingsLeftCheckBox12ColorSwatch", "ChatConfigChatSettingsLeftCheckBox13", "ChatConfigChatSettingsLeftCheckBox13Check", "ChatConfigChatSettingsLeftCheckBox13ColorClasses", "ChatConfigChatSettingsLeftCheckBox13ColorSwatch", "ChatConfigChatSettingsLeftCheckBox14", "ChatConfigChatSettingsLeftCheckBox14Check", "ChatConfigChatSettingsLeftCheckBox14ColorClasses", "ChatConfigChatSettingsLeftCheckBox14ColorSwatch", "ChatConfigChatSettingsLeftCheckBox15", "ChatConfigChatSettingsLeftCheckBox15Check", "ChatConfigChatSettingsLeftCheckBox15ColorClasses", "ChatConfigChatSettingsLeftCheckBox15ColorSwatch", "ChatConfigChatSettingsLeftCheckBox16", "ChatConfigChatSettingsLeftCheckBox16Check", "ChatConfigChatSettingsLeftCheckBox16ColorClasses", "ChatConfigChatSettingsLeftCheckBox16ColorSwatch", "ChatConfigChatSettingsLeftCheckBox17", "ChatConfigChatSettingsLeftCheckBox17Check", "ChatConfigChatSettingsLeftCheckBox17ColorClasses", "ChatConfigChatSettingsLeftCheckBox17ColorSwatch", "ChatConfigChatSettingsLeftCheckBox1Check", "ChatConfigChatSettingsLeftCheckBox1ColorClasses", "ChatConfigChatSettingsLeftCheckBox1ColorSwatch", "ChatConfigChatSettingsLeftCheckBox2", "ChatConfigChatSettingsLeftCheckBox2Check", "ChatConfigChatSettingsLeftCheckBox2ColorClasses", "ChatConfigChatSettingsLeftCheckBox2ColorSwatch", "ChatConfigChatSettingsLeftCheckBox3", "ChatConfigChatSettingsLeftCheckBox3Check", "ChatConfigChatSettingsLeftCheckBox3ColorClasses", "ChatConfigChatSettingsLeftCheckBox3ColorSwatch", "ChatConfigChatSettingsLeftCheckBox4", "ChatConfigChatSettingsLeftCheckBox4Check", "ChatConfigChatSettingsLeftCheckBox4ColorClasses", "ChatConfigChatSettingsLeftCheckBox4ColorSwatch", "ChatConfigChatSettingsLeftCheckBox5", "ChatConfigChatSettingsLeftCheckBox5Check", "ChatConfigChatSettingsLeftCheckBox5ColorClasses", "ChatConfigChatSettingsLeftCheckBox5ColorSwatch", "ChatConfigChatSettingsLeftCheckBox6", "ChatConfigChatSettingsLeftCheckBox6Check", "ChatConfigChatSettingsLeftCheckBox6ColorClasses", "ChatConfigChatSettingsLeftCheckBox6ColorSwatch", "ChatConfigChatSettingsLeftCheckBox7", "ChatConfigChatSettingsLeftCheckBox7Check", "ChatConfigChatSettingsLeftCheckBox7ColorClasses", "ChatConfigChatSettingsLeftCheckBox7ColorSwatch", "ChatConfigChatSettingsLeftCheckBox8", "ChatConfigChatSettingsLeftCheckBox8Check", "ChatConfigChatSettingsLeftCheckBox8ColorClasses", "ChatConfigChatSettingsLeftCheckBox8ColorSwatch", "ChatConfigChatSettingsLeftCheckBox9", "ChatConfigChatSettingsLeftCheckBox9Check", "ChatConfigChatSettingsLeftCheckBox9ColorClasses", "ChatConfigChatSettingsLeftCheckBox9ColorSwatch", "ChatConfigCombatSettings", "ChatConfigCombatSettingsFilters", "ChatConfigCombatSettingsFiltersAddFilterButton", "ChatConfigCombatSettingsFiltersButton1", "ChatConfigCombatSettingsFiltersButton2", "ChatConfigCombatSettingsFiltersButton3", "ChatConfigCombatSettingsFiltersButton4", "ChatConfigCombatSettingsFiltersCopyFilterButton", "ChatConfigCombatSettingsFiltersDeleteButton", "ChatConfigCombatSettingsFiltersScrollFrame", "ChatConfigCombatSettingsFiltersScrollFrameScrollBar", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarBorder", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarScrollDownButton", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarScrollUpButton", "ChatConfigCombatSettingsFiltersScrollFrameScrollChildFrame", "ChatConfigFrame", "ChatConfigFrameCancelButton", "ChatConfigFrameDefaultButton", "ChatConfigFrameOkayButton", "ChatConfigMoveFilterDownButton", "ChatConfigMoveFilterUpButton", "ChatConfigOtherSettings", "ChatConfigOtherSettingsCombat", "ChatConfigOtherSettingsCombatCheckBox1", "ChatConfigOtherSettingsCombatCheckBox10", "ChatConfigOtherSettingsCombatCheckBox10Check", "ChatConfigOtherSettingsCombatCheckBox10ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox1Check", "ChatConfigOtherSettingsCombatCheckBox1ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox2", "ChatConfigOtherSettingsCombatCheckBox2Check", "ChatConfigOtherSettingsCombatCheckBox2ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox3", "ChatConfigOtherSettingsCombatCheckBox3Check", "ChatConfigOtherSettingsCombatCheckBox3ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox4", "ChatConfigOtherSettingsCombatCheckBox4Check", "ChatConfigOtherSettingsCombatCheckBox4ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox5", "ChatConfigOtherSettingsCombatCheckBox5Check", "ChatConfigOtherSettingsCombatCheckBox5ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox6", "ChatConfigOtherSettingsCombatCheckBox6Check", "ChatConfigOtherSettingsCombatCheckBox6ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox7", "ChatConfigOtherSettingsCombatCheckBox7Check", "ChatConfigOtherSettingsCombatCheckBox7ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox8", "ChatConfigOtherSettingsCombatCheckBox8Check", "ChatConfigOtherSettingsCombatCheckBox8ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox9", "ChatConfigOtherSettingsCombatCheckBox9Check", "ChatConfigOtherSettingsCombatCheckBox9ColorSwatch", "ChatConfigOtherSettingsCreature", "ChatConfigOtherSettingsCreatureCheckBox1", "ChatConfigOtherSettingsCreatureCheckBox1Check", "ChatConfigOtherSettingsCreatureCheckBox1ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox2", "ChatConfigOtherSettingsCreatureCheckBox2Check", "ChatConfigOtherSettingsCreatureCheckBox2ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox3", "ChatConfigOtherSettingsCreatureCheckBox3Check", "ChatConfigOtherSettingsCreatureCheckBox3ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox4", "ChatConfigOtherSettingsCreatureCheckBox4Check", "ChatConfigOtherSettingsCreatureCheckBox4ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox5", "ChatConfigOtherSettingsCreatureCheckBox5Check", "ChatConfigOtherSettingsCreatureCheckBox5ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox6", "ChatConfigOtherSettingsCreatureCheckBox6Check", "ChatConfigOtherSettingsCreatureCheckBox6ColorSwatch", "ChatConfigOtherSettingsPVP", "ChatConfigOtherSettingsPVPCheckBox1", "ChatConfigOtherSettingsPVPCheckBox1Check", "ChatConfigOtherSettingsPVPCheckBox1ColorSwatch", "ChatConfigOtherSettingsPVPCheckBox2", "ChatConfigOtherSettingsPVPCheckBox2Check", "ChatConfigOtherSettingsPVPCheckBox2ColorSwatch", "ChatConfigOtherSettingsPVPCheckBox3", "ChatConfigOtherSettingsPVPCheckBox3Check", "ChatConfigOtherSettingsPVPCheckBox3ColorSwatch", "ChatConfigOtherSettingsSystem", "ChatConfigOtherSettingsSystemCheckBox1", "ChatConfigOtherSettingsSystemCheckBox1Check", "ChatConfigOtherSettingsSystemCheckBox1ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox2", "ChatConfigOtherSettingsSystemCheckBox2Check", "ChatConfigOtherSettingsSystemCheckBox2ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox3", "ChatConfigOtherSettingsSystemCheckBox3Check", "ChatConfigOtherSettingsSystemCheckBox3ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox4", "ChatConfigOtherSettingsSystemCheckBox4Check", "ChatConfigOtherSettingsSystemCheckBox4ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox5", "ChatConfigOtherSettingsSystemCheckBox5Check", "ChatConfigOtherSettingsSystemCheckBox5ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox6", "ChatConfigOtherSettingsSystemCheckBox6Check", "ChatConfigOtherSettingsSystemCheckBox6ColorSwatch", "ChatFrame10", "ChatFrame10ButtonFrame", "ChatFrame10ButtonFrameBottomButton", "ChatFrame10ButtonFrameDownButton", "ChatFrame10ButtonFrameMinimizeButton", "ChatFrame10ButtonFrameUpButton", "ChatFrame10ClickAnywhereButton", "ChatFrame10EditBox", "ChatFrame10EditBoxLanguage", "ChatFrame10ResizeButton", "ChatFrame10Tab", "ChatFrame10TabDropDown", "ChatFrame10TabDropDownButton", "ChatFrame10TabFlash", "ChatFrame1ButtonFrame", "ChatFrame1ButtonFrameBottomButton", "ChatFrame1ButtonFrameDownButton", "ChatFrame1ButtonFrameMinimizeButton", "ChatFrame1ButtonFrameUpButton", "ChatFrame1ClickAnywhereButton", "ChatFrame1EditBoxLanguage", "ChatFrame1ResizeButton", "ChatFrame1Tab", "ChatFrame1TabDropDown", "ChatFrame1TabDropDownButton", "ChatFrame1TabFlash", "ChatFrame2ButtonFrame", "ChatFrame2ButtonFrameBottomButton", "ChatFrame2ButtonFrameDownButton", "ChatFrame2ButtonFrameMinimizeButton", "ChatFrame2ButtonFrameUpButton", "ChatFrame2ClickAnywhereButton", "ChatFrame2EditBox", "ChatFrame2EditBoxLanguage", "ChatFrame2ResizeButton", "ChatFrame2Tab", "ChatFrame2TabDropDown", "ChatFrame2TabDropDownButton", "ChatFrame2TabFlash", "ChatFrame3", "ChatFrame3ButtonFrame", "ChatFrame3ButtonFrameBottomButton", "ChatFrame3ButtonFrameDownButton", "ChatFrame3ButtonFrameMinimizeButton", "ChatFrame3ButtonFrameUpButton", "ChatFrame3ClickAnywhereButton", "ChatFrame3EditBox", "ChatFrame3EditBoxLanguage", "ChatFrame3ResizeButton", "ChatFrame3Tab", "ChatFrame3TabDropDown", "ChatFrame3TabDropDownButton", "ChatFrame3TabFlash", "ChatFrame4", "ChatFrame4ButtonFrame", "ChatFrame4ButtonFrameBottomButton", "ChatFrame4ButtonFrameDownButton", "ChatFrame4ButtonFrameMinimizeButton", "ChatFrame4ButtonFrameUpButton", "ChatFrame4ClickAnywhereButton", "ChatFrame4EditBox", "ChatFrame4EditBoxLanguage", "ChatFrame4ResizeButton", "ChatFrame4Tab", "ChatFrame4TabDropDown", "ChatFrame4TabDropDownButton", "ChatFrame4TabFlash", "ChatFrame5", "ChatFrame5ButtonFrame", "ChatFrame5ButtonFrameBottomButton", "ChatFrame5ButtonFrameDownButton", "ChatFrame5ButtonFrameMinimizeButton", "ChatFrame5ButtonFrameUpButton", "ChatFrame5ClickAnywhereButton", "ChatFrame5EditBox", "ChatFrame5EditBoxLanguage", "ChatFrame5ResizeButton", "ChatFrame5Tab", "ChatFrame5TabDropDown", "ChatFrame5TabDropDownButton", "ChatFrame5TabFlash", "ChatFrame6", "ChatFrame6ButtonFrame", "ChatFrame6ButtonFrameBottomButton", "ChatFrame6ButtonFrameDownButton", "ChatFrame6ButtonFrameMinimizeButton", "ChatFrame6ButtonFrameUpButton", "ChatFrame6ClickAnywhereButton", "ChatFrame6EditBox", "ChatFrame6EditBoxLanguage", "ChatFrame6ResizeButton", "ChatFrame6Tab", "ChatFrame6TabDropDown", "ChatFrame6TabDropDownButton", "ChatFrame6TabFlash", "ChatFrame7", "ChatFrame7ButtonFrame", "ChatFrame7ButtonFrameBottomButton", "ChatFrame7ButtonFrameDownButton", "ChatFrame7ButtonFrameMinimizeButton", "ChatFrame7ButtonFrameUpButton", "ChatFrame7ClickAnywhereButton", "ChatFrame7EditBox", "ChatFrame7EditBoxLanguage", "ChatFrame7ResizeButton", "ChatFrame7Tab", "ChatFrame7TabDropDown", "ChatFrame7TabDropDownButton", "ChatFrame7TabFlash", "ChatFrame8", "ChatFrame8ButtonFrame", "ChatFrame8ButtonFrameBottomButton", "ChatFrame8ButtonFrameDownButton", "ChatFrame8ButtonFrameMinimizeButton", "ChatFrame8ButtonFrameUpButton", "ChatFrame8ClickAnywhereButton", "ChatFrame8EditBox", "ChatFrame8EditBoxLanguage", "ChatFrame8ResizeButton", "ChatFrame8Tab", "ChatFrame8TabDropDown", "ChatFrame8TabDropDownButton", "ChatFrame8TabFlash", "ChatFrame9", "ChatFrame9ButtonFrame", "ChatFrame9ButtonFrameBottomButton", "ChatFrame9ButtonFrameDownButton", "ChatFrame9ButtonFrameMinimizeButton", "ChatFrame9ButtonFrameUpButton", "ChatFrame9ClickAnywhereButton", "ChatFrame9EditBox", "ChatFrame9EditBoxLanguage", "ChatFrame9ResizeButton", "ChatFrame9Tab", "ChatFrame9TabDropDown", "ChatFrame9TabDropDownButton", "ChatFrame9TabFlash", "ChatFrameMenuButton", "ChatMenu", "ChatMenuButton1", "ChatMenuButton10", "ChatMenuButton11", "ChatMenuButton12", "ChatMenuButton13", "ChatMenuButton14", "ChatMenuButton15", "ChatMenuButton16", "ChatMenuButton17", "ChatMenuButton18", "ChatMenuButton19", "ChatMenuButton2", "ChatMenuButton20", "ChatMenuButton21", "ChatMenuButton22", "ChatMenuButton23", "ChatMenuButton24", "ChatMenuButton25", "ChatMenuButton26", "ChatMenuButton27", "ChatMenuButton28", "ChatMenuButton29", "ChatMenuButton3", "ChatMenuButton30", "ChatMenuButton31", "ChatMenuButton32", "ChatMenuButton4", "ChatMenuButton5", "ChatMenuButton6", "ChatMenuButton7", "ChatMenuButton8", "ChatMenuButton9", "ChatTypeGroup", "ChatTypeGroupInverted", "ChatTypeInfo", "CinematicFrame", "CoinPickupCancelButton", "CoinPickupFrame", "CoinPickupLeftButton", "CoinPickupOkayButton", "CoinPickupRightButton", "ColorPickerCancelButton", "ColorPickerFrame", "ColorPickerOkayButton", "CombatConfigColors", "CombatConfigColorsColorize", "CombatConfigColorsColorizeDamageNumber", "CombatConfigColorsColorizeDamageNumberCheck", "CombatConfigColorsColorizeDamageNumberColorSwatch", "CombatConfigColorsColorizeDamageNumberSchoolColoring", "CombatConfigColorsColorizeDamageSchool", "CombatConfigColorsColorizeDamageSchoolCheck", "CombatConfigColorsColorizeEntireLine", "CombatConfigColorsColorizeEntireLineBySource", "CombatConfigColorsColorizeEntireLineByTarget", "CombatConfigColorsColorizeEntireLineCheck", "CombatConfigColorsColorizeSpellNames", "CombatConfigColorsColorizeSpellNamesCheck", "CombatConfigColorsColorizeSpellNamesColorSwatch", "CombatConfigColorsColorizeSpellNamesSchoolColoring", "CombatConfigColorsColorizeUnitName", "CombatConfigColorsColorizeUnitNameCheck", "CombatConfigColorsHighlighting", "CombatConfigColorsHighlightingAbility", "CombatConfigColorsHighlightingDamage", "CombatConfigColorsHighlightingLine", "CombatConfigColorsHighlightingSchool", "CombatConfigColorsUnitColors", "CombatConfigColorsUnitColorsSwatch1", "CombatConfigColorsUnitColorsSwatch1ColorSwatch", "CombatConfigColorsUnitColorsSwatch2", "CombatConfigColorsUnitColorsSwatch2ColorSwatch", "CombatConfigColorsUnitColorsSwatch3", "CombatConfigColorsUnitColorsSwatch3ColorSwatch", "CombatConfigColorsUnitColorsSwatch4", "CombatConfigColorsUnitColorsSwatch4ColorSwatch", "CombatConfigColorsUnitColorsSwatch5", "CombatConfigColorsUnitColorsSwatch5ColorSwatch", "CombatConfigColorsUnitColorsSwatch6", "CombatConfigColorsUnitColorsSwatch6ColorSwatch", "CombatConfigColorsUnitColorsSwatch7", "CombatConfigColorsUnitColorsSwatch7ColorSwatch", "CombatConfigFormatting", "CombatConfigFormattingFullText", "CombatConfigFormattingItemNames", "CombatConfigFormattingShowBraces", "CombatConfigFormattingShowTimeStamp", "CombatConfigFormattingSpellNames", "CombatConfigFormattingUnitNames", "CombatConfigMessageSources", "CombatConfigMessageSourcesDoneBy", "CombatConfigMessageSourcesDoneByCheckBox1", "CombatConfigMessageSourcesDoneByCheckBox1Check", "CombatConfigMessageSourcesDoneByCheckBox2", "CombatConfigMessageSourcesDoneByCheckBox2Check", "CombatConfigMessageSourcesDoneByCheckBox3", "CombatConfigMessageSourcesDoneByCheckBox3Check", "CombatConfigMessageSourcesDoneByCheckBox4", "CombatConfigMessageSourcesDoneByCheckBox4Check", "CombatConfigMessageSourcesDoneByCheckBox5", "CombatConfigMessageSourcesDoneByCheckBox5Check", "CombatConfigMessageSourcesDoneByCheckBox6", "CombatConfigMessageSourcesDoneByCheckBox6Check", "CombatConfigMessageSourcesDoneByCheckBox7", "CombatConfigMessageSourcesDoneByCheckBox7Check", "CombatConfigMessageSourcesDoneTo", "CombatConfigMessageSourcesDoneToCheckBox1", "CombatConfigMessageSourcesDoneToCheckBox1Check", "CombatConfigMessageSourcesDoneToCheckBox2", "CombatConfigMessageSourcesDoneToCheckBox2Check", "CombatConfigMessageSourcesDoneToCheckBox3", "CombatConfigMessageSourcesDoneToCheckBox3Check", "CombatConfigMessageSourcesDoneToCheckBox4", "CombatConfigMessageSourcesDoneToCheckBox4Check", "CombatConfigMessageSourcesDoneToCheckBox5", "CombatConfigMessageSourcesDoneToCheckBox5Check", "CombatConfigMessageSourcesDoneToCheckBox6", "CombatConfigMessageSourcesDoneToCheckBox6Check", "CombatConfigMessageSourcesDoneToCheckBox7", "CombatConfigMessageSourcesDoneToCheckBox7Check", "CombatConfigMessageTypes", "CombatConfigMessageTypesLeft", "CombatConfigMessageTypesLeftCheckBox1", "CombatConfigMessageTypesLeftCheckBox1_1", "CombatConfigMessageTypesLeftCheckBox1_2", "CombatConfigMessageTypesLeftCheckBox2", "CombatConfigMessageTypesLeftCheckBox2_1", "CombatConfigMessageTypesLeftCheckBox2_2", "CombatConfigMessageTypesLeftCheckBox3", "CombatConfigMessageTypesLeftCheckBox3_1", "CombatConfigMessageTypesLeftCheckBox3_2", "CombatConfigMessageTypesLeftCheckBox3_3", "CombatConfigMessageTypesLeftCheckBox3_4", "CombatConfigMessageTypesLeftCheckBox4", "CombatConfigMessageTypesLeftCheckBox4_1", "CombatConfigMessageTypesLeftCheckBox4_2", "CombatConfigMessageTypesLeftCheckBox4_3", "CombatConfigMessageTypesLeftCheckBox4_4", "CombatConfigMessageTypesMisc", "CombatConfigMessageTypesMiscCheckBox1", "CombatConfigMessageTypesMiscCheckBox2", "CombatConfigMessageTypesMiscCheckBox3", "CombatConfigMessageTypesMiscCheckBox4", "CombatConfigMessageTypesRight", "CombatConfigMessageTypesRightCheckBox1", "CombatConfigMessageTypesRightCheckBox1_1", "CombatConfigMessageTypesRightCheckBox1_10", "CombatConfigMessageTypesRightCheckBox1_2", "CombatConfigMessageTypesRightCheckBox1_3", "CombatConfigMessageTypesRightCheckBox1_4", "CombatConfigMessageTypesRightCheckBox1_5", "CombatConfigMessageTypesRightCheckBox1_6", "CombatConfigMessageTypesRightCheckBox1_7", "CombatConfigMessageTypesRightCheckBox1_8", "CombatConfigMessageTypesRightCheckBox1_9", "CombatConfigMessageTypesRightCheckBox2", "CombatConfigMessageTypesRightCheckBox2_1", "CombatConfigMessageTypesRightCheckBox2_2", "CombatConfigMessageTypesRightCheckBox2_3", "CombatConfigSettings", "CombatConfigSettingsNameEditBox", "CombatConfigSettingsParty", "CombatConfigSettingsRaid", "CombatConfigSettingsSaveButton", "CombatConfigSettingsShowQuickButton", "CombatConfigSettingsSolo", "CombatConfigTab1", "CombatConfigTab2", "CombatConfigTab3", "CombatConfigTab4", "CombatConfigTab5", "CombatFeedbackText", "CombatLogDefaultButton", "CombatLogDropDown", "CombatLogDropDownButton", "CombatLogMenuChatTypeGroups", "CombatLogQuickButtonFrame", "CombatLogQuickButtonFrameButton1", "CombatLogQuickButtonFrameButton2", "CombatLogQuickButtonFrameButton3", "CombatLogQuickButtonFrame_Custom", "CombatLogQuickButtonFrame_CustomAdditionalFilterButton", "CombatLogQuickButtonFrame_CustomProgressBar", "CombatLogUpdateFrame", "CombatPanelOptions", "CombatText", "ComboFrame", "ComboPoint1", "ComboPoint2", "ComboPoint3", "ComboPoint4", "ComboPoint5", "CompanionButton1", "CompanionButton10", "CompanionButton10Cooldown", "CompanionButton11", "CompanionButton11Cooldown", "CompanionButton12", "CompanionButton12Cooldown", "CompanionButton1Cooldown", "CompanionButton2", "CompanionButton2Cooldown", "CompanionButton3", "CompanionButton3Cooldown", "CompanionButton4", "CompanionButton4Cooldown", "CompanionButton5", "CompanionButton5Cooldown", "CompanionButton6", "CompanionButton6Cooldown", "CompanionButton7", "CompanionButton7Cooldown", "CompanionButton8", "CompanionButton8Cooldown", "CompanionButton9", "CompanionButton9Cooldown", "CompanionModelFrame", "CompanionModelFrameRotateLeftButton", "CompanionModelFrameRotateRightButton", "CompanionNextPageButton", "CompanionPrevPageButton", "CompanionSummonButton", "ConsolidatedBuffs", "ConsolidatedBuffsContainer", "ConsolidatedBuffsTooltip", "ContainerFrame1", "ContainerFrame10", "ContainerFrame10CloseButton", "ContainerFrame10Item1", "ContainerFrame10Item10", "ContainerFrame10Item10Cooldown", "ContainerFrame10Item11", "ContainerFrame10Item11Cooldown", "ContainerFrame10Item12", "ContainerFrame10Item12Cooldown", "ContainerFrame10Item13", "ContainerFrame10Item13Cooldown", "ContainerFrame10Item14", "ContainerFrame10Item14Cooldown", "ContainerFrame10Item15", "ContainerFrame10Item15Cooldown", "ContainerFrame10Item16", "ContainerFrame10Item16Cooldown", "ContainerFrame10Item17", "ContainerFrame10Item17Cooldown", "ContainerFrame10Item18", "ContainerFrame10Item18Cooldown", "ContainerFrame10Item19", "ContainerFrame10Item19Cooldown", "ContainerFrame10Item1Cooldown", "ContainerFrame10Item2", "ContainerFrame10Item20", "ContainerFrame10Item20Cooldown", "ContainerFrame10Item21", "ContainerFrame10Item21Cooldown", "ContainerFrame10Item22", "ContainerFrame10Item22Cooldown", "ContainerFrame10Item23", "ContainerFrame10Item23Cooldown", "ContainerFrame10Item24", "ContainerFrame10Item24Cooldown", "ContainerFrame10Item25", "ContainerFrame10Item25Cooldown", "ContainerFrame10Item26", "ContainerFrame10Item26Cooldown", "ContainerFrame10Item27", "ContainerFrame10Item27Cooldown", "ContainerFrame10Item28", "ContainerFrame10Item28Cooldown", "ContainerFrame10Item29", "ContainerFrame10Item29Cooldown", "ContainerFrame10Item2Cooldown", "ContainerFrame10Item3", "ContainerFrame10Item30", "ContainerFrame10Item30Cooldown", "ContainerFrame10Item31", "ContainerFrame10Item31Cooldown", "ContainerFrame10Item32", "ContainerFrame10Item32Cooldown", "ContainerFrame10Item33", "ContainerFrame10Item33Cooldown", "ContainerFrame10Item34", "ContainerFrame10Item34Cooldown", "ContainerFrame10Item35", "ContainerFrame10Item35Cooldown", "ContainerFrame10Item36", "ContainerFrame10Item36Cooldown", "ContainerFrame10Item3Cooldown", "ContainerFrame10Item4", "ContainerFrame10Item4Cooldown", "ContainerFrame10Item5", "ContainerFrame10Item5Cooldown", "ContainerFrame10Item6", "ContainerFrame10Item6Cooldown", "ContainerFrame10Item7", "ContainerFrame10Item7Cooldown", "ContainerFrame10Item8", "ContainerFrame10Item8Cooldown", "ContainerFrame10Item9", "ContainerFrame10Item9Cooldown", "ContainerFrame10MoneyFrame", "ContainerFrame10MoneyFrameCopperButton", "ContainerFrame10MoneyFrameGoldButton", "ContainerFrame10MoneyFrameSilverButton", "ContainerFrame10PortraitButton", "ContainerFrame11", "ContainerFrame11CloseButton", "ContainerFrame11Item1", "ContainerFrame11Item10", "ContainerFrame11Item10Cooldown", "ContainerFrame11Item11", "ContainerFrame11Item11Cooldown", "ContainerFrame11Item12", "ContainerFrame11Item12Cooldown", "ContainerFrame11Item13", "ContainerFrame11Item13Cooldown", "ContainerFrame11Item14", "ContainerFrame11Item14Cooldown", "ContainerFrame11Item15", "ContainerFrame11Item15Cooldown", "ContainerFrame11Item16", "ContainerFrame11Item16Cooldown", "ContainerFrame11Item17", "ContainerFrame11Item17Cooldown", "ContainerFrame11Item18", "ContainerFrame11Item18Cooldown", "ContainerFrame11Item19", "ContainerFrame11Item19Cooldown", "ContainerFrame11Item1Cooldown", "ContainerFrame11Item2", "ContainerFrame11Item20", "ContainerFrame11Item20Cooldown", "ContainerFrame11Item21", "ContainerFrame11Item21Cooldown", "ContainerFrame11Item22", "ContainerFrame11Item22Cooldown", "ContainerFrame11Item23", "ContainerFrame11Item23Cooldown", "ContainerFrame11Item24", "ContainerFrame11Item24Cooldown", "ContainerFrame11Item25", "ContainerFrame11Item25Cooldown", "ContainerFrame11Item26", "ContainerFrame11Item26Cooldown", "ContainerFrame11Item27", "ContainerFrame11Item27Cooldown", "ContainerFrame11Item28", "ContainerFrame11Item28Cooldown", "ContainerFrame11Item29", "ContainerFrame11Item29Cooldown", "ContainerFrame11Item2Cooldown", "ContainerFrame11Item3", "ContainerFrame11Item30", "ContainerFrame11Item30Cooldown", "ContainerFrame11Item31", "ContainerFrame11Item31Cooldown", "ContainerFrame11Item32", "ContainerFrame11Item32Cooldown", "ContainerFrame11Item33", "ContainerFrame11Item33Cooldown", "ContainerFrame11Item34", "ContainerFrame11Item34Cooldown", "ContainerFrame11Item35", "ContainerFrame11Item35Cooldown", "ContainerFrame11Item36", "ContainerFrame11Item36Cooldown", "ContainerFrame11Item3Cooldown", "ContainerFrame11Item4", "ContainerFrame11Item4Cooldown", "ContainerFrame11Item5", "ContainerFrame11Item5Cooldown", "ContainerFrame11Item6", "ContainerFrame11Item6Cooldown", "ContainerFrame11Item7", "ContainerFrame11Item7Cooldown", "ContainerFrame11Item8", "ContainerFrame11Item8Cooldown", "ContainerFrame11Item9", "ContainerFrame11Item9Cooldown", "ContainerFrame11MoneyFrame", "ContainerFrame11MoneyFrameCopperButton", "ContainerFrame11MoneyFrameGoldButton", "ContainerFrame11MoneyFrameSilverButton", "ContainerFrame11PortraitButton", "ContainerFrame12", "ContainerFrame12CloseButton", "ContainerFrame12Item1", "ContainerFrame12Item10", "ContainerFrame12Item10Cooldown", "ContainerFrame12Item11", "ContainerFrame12Item11Cooldown", "ContainerFrame12Item12", "ContainerFrame12Item12Cooldown", "ContainerFrame12Item13", "ContainerFrame12Item13Cooldown", "ContainerFrame12Item14", "ContainerFrame12Item14Cooldown", "ContainerFrame12Item15", "ContainerFrame12Item15Cooldown", "ContainerFrame12Item16", "ContainerFrame12Item16Cooldown", "ContainerFrame12Item17", "ContainerFrame12Item17Cooldown", "ContainerFrame12Item18", "ContainerFrame12Item18Cooldown", "ContainerFrame12Item19", "ContainerFrame12Item19Cooldown", "ContainerFrame12Item1Cooldown", "ContainerFrame12Item2", "ContainerFrame12Item20", "ContainerFrame12Item20Cooldown", "ContainerFrame12Item21", "ContainerFrame12Item21Cooldown", "ContainerFrame12Item22", "ContainerFrame12Item22Cooldown", "ContainerFrame12Item23", "ContainerFrame12Item23Cooldown", "ContainerFrame12Item24", "ContainerFrame12Item24Cooldown", "ContainerFrame12Item25", "ContainerFrame12Item25Cooldown", "ContainerFrame12Item26", "ContainerFrame12Item26Cooldown", "ContainerFrame12Item27", "ContainerFrame12Item27Cooldown", "ContainerFrame12Item28", "ContainerFrame12Item28Cooldown", "ContainerFrame12Item29", "ContainerFrame12Item29Cooldown", "ContainerFrame12Item2Cooldown", "ContainerFrame12Item3", "ContainerFrame12Item30", "ContainerFrame12Item30Cooldown", "ContainerFrame12Item31", "ContainerFrame12Item31Cooldown", "ContainerFrame12Item32", "ContainerFrame12Item32Cooldown", "ContainerFrame12Item33", "ContainerFrame12Item33Cooldown", "ContainerFrame12Item34", "ContainerFrame12Item34Cooldown", "ContainerFrame12Item35", "ContainerFrame12Item35Cooldown", "ContainerFrame12Item36", "ContainerFrame12Item36Cooldown", "ContainerFrame12Item3Cooldown", "ContainerFrame12Item4", "ContainerFrame12Item4Cooldown", "ContainerFrame12Item5", "ContainerFrame12Item5Cooldown", "ContainerFrame12Item6", "ContainerFrame12Item6Cooldown", "ContainerFrame12Item7", "ContainerFrame12Item7Cooldown", "ContainerFrame12Item8", "ContainerFrame12Item8Cooldown", "ContainerFrame12Item9", "ContainerFrame12Item9Cooldown", "ContainerFrame12MoneyFrame", "ContainerFrame12MoneyFrameCopperButton", "ContainerFrame12MoneyFrameGoldButton", "ContainerFrame12MoneyFrameSilverButton", "ContainerFrame12PortraitButton", "ContainerFrame13", "ContainerFrame13CloseButton", "ContainerFrame13Item1", "ContainerFrame13Item10", "ContainerFrame13Item10Cooldown", "ContainerFrame13Item11", "ContainerFrame13Item11Cooldown", "ContainerFrame13Item12", "ContainerFrame13Item12Cooldown", "ContainerFrame13Item13", "ContainerFrame13Item13Cooldown", "ContainerFrame13Item14", "ContainerFrame13Item14Cooldown", "ContainerFrame13Item15", "ContainerFrame13Item15Cooldown", "ContainerFrame13Item16", "ContainerFrame13Item16Cooldown", "ContainerFrame13Item17", "ContainerFrame13Item17Cooldown", "ContainerFrame13Item18", "ContainerFrame13Item18Cooldown", "ContainerFrame13Item19", "ContainerFrame13Item19Cooldown", "ContainerFrame13Item1Cooldown", "ContainerFrame13Item2", "ContainerFrame13Item20", "ContainerFrame13Item20Cooldown", "ContainerFrame13Item21", "ContainerFrame13Item21Cooldown", "ContainerFrame13Item22", "ContainerFrame13Item22Cooldown", "ContainerFrame13Item23", "ContainerFrame13Item23Cooldown", "ContainerFrame13Item24", "ContainerFrame13Item24Cooldown", "ContainerFrame13Item25", "ContainerFrame13Item25Cooldown", "ContainerFrame13Item26", "ContainerFrame13Item26Cooldown", "ContainerFrame13Item27", "ContainerFrame13Item27Cooldown", "ContainerFrame13Item28", "ContainerFrame13Item28Cooldown", "ContainerFrame13Item29", "ContainerFrame13Item29Cooldown", "ContainerFrame13Item2Cooldown", "ContainerFrame13Item3", "ContainerFrame13Item30", "ContainerFrame13Item30Cooldown", "ContainerFrame13Item31", "ContainerFrame13Item31Cooldown", "ContainerFrame13Item32", "ContainerFrame13Item32Cooldown", "ContainerFrame13Item33", "ContainerFrame13Item33Cooldown", "ContainerFrame13Item34", "ContainerFrame13Item34Cooldown", "ContainerFrame13Item35", "ContainerFrame13Item35Cooldown", "ContainerFrame13Item36", "ContainerFrame13Item36Cooldown", "ContainerFrame13Item3Cooldown", "ContainerFrame13Item4", "ContainerFrame13Item4Cooldown", "ContainerFrame13Item5", "ContainerFrame13Item5Cooldown", "ContainerFrame13Item6", "ContainerFrame13Item6Cooldown", "ContainerFrame13Item7", "ContainerFrame13Item7Cooldown", "ContainerFrame13Item8", "ContainerFrame13Item8Cooldown", "ContainerFrame13Item9", "ContainerFrame13Item9Cooldown", "ContainerFrame13MoneyFrame", "ContainerFrame13MoneyFrameCopperButton", "ContainerFrame13MoneyFrameGoldButton", "ContainerFrame13MoneyFrameSilverButton", "ContainerFrame13PortraitButton", "ContainerFrame1CloseButton", "ContainerFrame1Item1", "ContainerFrame1Item10", "ContainerFrame1Item10Cooldown", "ContainerFrame1Item11", "ContainerFrame1Item11Cooldown", "ContainerFrame1Item12", "ContainerFrame1Item12Cooldown", "ContainerFrame1Item13", "ContainerFrame1Item13Cooldown", "ContainerFrame1Item14", "ContainerFrame1Item14Cooldown", "ContainerFrame1Item15", "ContainerFrame1Item15Cooldown", "ContainerFrame1Item16", "ContainerFrame1Item16Cooldown", "ContainerFrame1Item17", "ContainerFrame1Item17Cooldown", "ContainerFrame1Item18", "ContainerFrame1Item18Cooldown", "ContainerFrame1Item19", "ContainerFrame1Item19Cooldown", "ContainerFrame1Item1Cooldown", "ContainerFrame1Item2", "ContainerFrame1Item20", "ContainerFrame1Item20Cooldown", "ContainerFrame1Item21", "ContainerFrame1Item21Cooldown", "ContainerFrame1Item22", "ContainerFrame1Item22Cooldown", "ContainerFrame1Item23", "ContainerFrame1Item23Cooldown", "ContainerFrame1Item24", "ContainerFrame1Item24Cooldown", "ContainerFrame1Item25", "ContainerFrame1Item25Cooldown", "ContainerFrame1Item26", "ContainerFrame1Item26Cooldown", "ContainerFrame1Item27", "ContainerFrame1Item27Cooldown", "ContainerFrame1Item28", "ContainerFrame1Item28Cooldown", "ContainerFrame1Item29", "ContainerFrame1Item29Cooldown", "ContainerFrame1Item2Cooldown", "ContainerFrame1Item3", "ContainerFrame1Item30", "ContainerFrame1Item30Cooldown", "ContainerFrame1Item31", "ContainerFrame1Item31Cooldown", "ContainerFrame1Item32", "ContainerFrame1Item32Cooldown", "ContainerFrame1Item33", "ContainerFrame1Item33Cooldown", "ContainerFrame1Item34", "ContainerFrame1Item34Cooldown", "ContainerFrame1Item35", "ContainerFrame1Item35Cooldown", "ContainerFrame1Item36", "ContainerFrame1Item36Cooldown", "ContainerFrame1Item3Cooldown", "ContainerFrame1Item4", "ContainerFrame1Item4Cooldown", "ContainerFrame1Item5", "ContainerFrame1Item5Cooldown", "ContainerFrame1Item6", "ContainerFrame1Item6Cooldown", "ContainerFrame1Item7", "ContainerFrame1Item7Cooldown", "ContainerFrame1Item8", "ContainerFrame1Item8Cooldown", "ContainerFrame1Item9", "ContainerFrame1Item9Cooldown", "ContainerFrame1MoneyFrame", "ContainerFrame1MoneyFrameCopperButton", "ContainerFrame1MoneyFrameGoldButton", "ContainerFrame1MoneyFrameSilverButton", "ContainerFrame1PortraitButton", "ContainerFrame2", "ContainerFrame2CloseButton", "ContainerFrame2Item1", "ContainerFrame2Item10", "ContainerFrame2Item10Cooldown", "ContainerFrame2Item11", "ContainerFrame2Item11Cooldown", "ContainerFrame2Item12", "ContainerFrame2Item12Cooldown", "ContainerFrame2Item13", "ContainerFrame2Item13Cooldown", "ContainerFrame2Item14", "ContainerFrame2Item14Cooldown", "ContainerFrame2Item15", "ContainerFrame2Item15Cooldown", "ContainerFrame2Item16", "ContainerFrame2Item16Cooldown", "ContainerFrame2Item17", "ContainerFrame2Item17Cooldown", "ContainerFrame2Item18", "ContainerFrame2Item18Cooldown", "ContainerFrame2Item19", "ContainerFrame2Item19Cooldown", "ContainerFrame2Item1Cooldown", "ContainerFrame2Item2", "ContainerFrame2Item20", "ContainerFrame2Item20Cooldown", "ContainerFrame2Item21", "ContainerFrame2Item21Cooldown", "ContainerFrame2Item22", "ContainerFrame2Item22Cooldown", "ContainerFrame2Item23", "ContainerFrame2Item23Cooldown", "ContainerFrame2Item24", "ContainerFrame2Item24Cooldown", "ContainerFrame2Item25", "ContainerFrame2Item25Cooldown", "ContainerFrame2Item26", "ContainerFrame2Item26Cooldown", "ContainerFrame2Item27", "ContainerFrame2Item27Cooldown", "ContainerFrame2Item28", "ContainerFrame2Item28Cooldown", "ContainerFrame2Item29", "ContainerFrame2Item29Cooldown", "ContainerFrame2Item2Cooldown", "ContainerFrame2Item3", "ContainerFrame2Item30", "ContainerFrame2Item30Cooldown", "ContainerFrame2Item31", "ContainerFrame2Item31Cooldown", "ContainerFrame2Item32", "ContainerFrame2Item32Cooldown", "ContainerFrame2Item33", "ContainerFrame2Item33Cooldown", "ContainerFrame2Item34", "ContainerFrame2Item34Cooldown", "ContainerFrame2Item35", "ContainerFrame2Item35Cooldown", "ContainerFrame2Item36", "ContainerFrame2Item36Cooldown", "ContainerFrame2Item3Cooldown", "ContainerFrame2Item4", "ContainerFrame2Item4Cooldown", "ContainerFrame2Item5", "ContainerFrame2Item5Cooldown", "ContainerFrame2Item6", "ContainerFrame2Item6Cooldown", "ContainerFrame2Item7", "ContainerFrame2Item7Cooldown", "ContainerFrame2Item8", "ContainerFrame2Item8Cooldown", "ContainerFrame2Item9", "ContainerFrame2Item9Cooldown", "ContainerFrame2MoneyFrame", "ContainerFrame2MoneyFrameCopperButton", "ContainerFrame2MoneyFrameGoldButton", "ContainerFrame2MoneyFrameSilverButton", "ContainerFrame2PortraitButton", "ContainerFrame3", "ContainerFrame3CloseButton", "ContainerFrame3Item1", "ContainerFrame3Item10", "ContainerFrame3Item10Cooldown", "ContainerFrame3Item11", "ContainerFrame3Item11Cooldown", "ContainerFrame3Item12", "ContainerFrame3Item12Cooldown", "ContainerFrame3Item13", "ContainerFrame3Item13Cooldown", "ContainerFrame3Item14", "ContainerFrame3Item14Cooldown", "ContainerFrame3Item15", "ContainerFrame3Item15Cooldown", "ContainerFrame3Item16", "ContainerFrame3Item16Cooldown", "ContainerFrame3Item17", "ContainerFrame3Item17Cooldown", "ContainerFrame3Item18", "ContainerFrame3Item18Cooldown", "ContainerFrame3Item19", "ContainerFrame3Item19Cooldown", "ContainerFrame3Item1Cooldown", "ContainerFrame3Item2", "ContainerFrame3Item20", "ContainerFrame3Item20Cooldown", "ContainerFrame3Item21", "ContainerFrame3Item21Cooldown", "ContainerFrame3Item22", "ContainerFrame3Item22Cooldown", "ContainerFrame3Item23", "ContainerFrame3Item23Cooldown", "ContainerFrame3Item24", "ContainerFrame3Item24Cooldown", "ContainerFrame3Item25", "ContainerFrame3Item25Cooldown", "ContainerFrame3Item26", "ContainerFrame3Item26Cooldown", "ContainerFrame3Item27", "ContainerFrame3Item27Cooldown", "ContainerFrame3Item28", "ContainerFrame3Item28Cooldown", "ContainerFrame3Item29", "ContainerFrame3Item29Cooldown", "ContainerFrame3Item2Cooldown", "ContainerFrame3Item3", "ContainerFrame3Item30", "ContainerFrame3Item30Cooldown", "ContainerFrame3Item31", "ContainerFrame3Item31Cooldown", "ContainerFrame3Item32", "ContainerFrame3Item32Cooldown", "ContainerFrame3Item33", "ContainerFrame3Item33Cooldown", "ContainerFrame3Item34", "ContainerFrame3Item34Cooldown", "ContainerFrame3Item35", "ContainerFrame3Item35Cooldown", "ContainerFrame3Item36", "ContainerFrame3Item36Cooldown", "ContainerFrame3Item3Cooldown", "ContainerFrame3Item4", "ContainerFrame3Item4Cooldown", "ContainerFrame3Item5", "ContainerFrame3Item5Cooldown", "ContainerFrame3Item6", "ContainerFrame3Item6Cooldown", "ContainerFrame3Item7", "ContainerFrame3Item7Cooldown", "ContainerFrame3Item8", "ContainerFrame3Item8Cooldown", "ContainerFrame3Item9", "ContainerFrame3Item9Cooldown", "ContainerFrame3MoneyFrame", "ContainerFrame3MoneyFrameCopperButton", "ContainerFrame3MoneyFrameGoldButton", "ContainerFrame3MoneyFrameSilverButton", "ContainerFrame3PortraitButton", "ContainerFrame4", "ContainerFrame4CloseButton", "ContainerFrame4Item1", "ContainerFrame4Item10", "ContainerFrame4Item10Cooldown", "ContainerFrame4Item11", "ContainerFrame4Item11Cooldown", "ContainerFrame4Item12", "ContainerFrame4Item12Cooldown", "ContainerFrame4Item13", "ContainerFrame4Item13Cooldown", "ContainerFrame4Item14", "ContainerFrame4Item14Cooldown", "ContainerFrame4Item15", "ContainerFrame4Item15Cooldown", "ContainerFrame4Item16", "ContainerFrame4Item16Cooldown", "ContainerFrame4Item17", "ContainerFrame4Item17Cooldown", "ContainerFrame4Item18", "ContainerFrame4Item18Cooldown", "ContainerFrame4Item19", "ContainerFrame4Item19Cooldown", "ContainerFrame4Item1Cooldown", "ContainerFrame4Item2", "ContainerFrame4Item20", "ContainerFrame4Item20Cooldown", "ContainerFrame4Item21", "ContainerFrame4Item21Cooldown", "ContainerFrame4Item22", "ContainerFrame4Item22Cooldown", "ContainerFrame4Item23", "ContainerFrame4Item23Cooldown", "ContainerFrame4Item24", "ContainerFrame4Item24Cooldown", "ContainerFrame4Item25", "ContainerFrame4Item25Cooldown", "ContainerFrame4Item26", "ContainerFrame4Item26Cooldown", "ContainerFrame4Item27", "ContainerFrame4Item27Cooldown", "ContainerFrame4Item28", "ContainerFrame4Item28Cooldown", "ContainerFrame4Item29", "ContainerFrame4Item29Cooldown", "ContainerFrame4Item2Cooldown", "ContainerFrame4Item3", "ContainerFrame4Item30", "ContainerFrame4Item30Cooldown", "ContainerFrame4Item31", "ContainerFrame4Item31Cooldown", "ContainerFrame4Item32", "ContainerFrame4Item32Cooldown", "ContainerFrame4Item33", "ContainerFrame4Item33Cooldown", "ContainerFrame4Item34", "ContainerFrame4Item34Cooldown", "ContainerFrame4Item35", "ContainerFrame4Item35Cooldown", "ContainerFrame4Item36", "ContainerFrame4Item36Cooldown", "ContainerFrame4Item3Cooldown", "ContainerFrame4Item4", "ContainerFrame4Item4Cooldown", "ContainerFrame4Item5", "ContainerFrame4Item5Cooldown", "ContainerFrame4Item6", "ContainerFrame4Item6Cooldown", "ContainerFrame4Item7", "ContainerFrame4Item7Cooldown", "ContainerFrame4Item8", "ContainerFrame4Item8Cooldown", "ContainerFrame4Item9", "ContainerFrame4Item9Cooldown", "ContainerFrame4MoneyFrame", "ContainerFrame4MoneyFrameCopperButton", "ContainerFrame4MoneyFrameGoldButton", "ContainerFrame4MoneyFrameSilverButton", "ContainerFrame4PortraitButton", "ContainerFrame5", "ContainerFrame5CloseButton", "ContainerFrame5Item1", "ContainerFrame5Item10", "ContainerFrame5Item10Cooldown", "ContainerFrame5Item11", "ContainerFrame5Item11Cooldown", "ContainerFrame5Item12", "ContainerFrame5Item12Cooldown", "ContainerFrame5Item13", "ContainerFrame5Item13Cooldown", "ContainerFrame5Item14", "ContainerFrame5Item14Cooldown", "ContainerFrame5Item15", "ContainerFrame5Item15Cooldown", "ContainerFrame5Item16", "ContainerFrame5Item16Cooldown", "ContainerFrame5Item17", "ContainerFrame5Item17Cooldown", "ContainerFrame5Item18", "ContainerFrame5Item18Cooldown", "ContainerFrame5Item19", "ContainerFrame5Item19Cooldown", "ContainerFrame5Item1Cooldown", "ContainerFrame5Item2", "ContainerFrame5Item20", "ContainerFrame5Item20Cooldown", "ContainerFrame5Item21", "ContainerFrame5Item21Cooldown", "ContainerFrame5Item22", "ContainerFrame5Item22Cooldown", "ContainerFrame5Item23", "ContainerFrame5Item23Cooldown", "ContainerFrame5Item24", "ContainerFrame5Item24Cooldown", "ContainerFrame5Item25", "ContainerFrame5Item25Cooldown", "ContainerFrame5Item26", "ContainerFrame5Item26Cooldown", "ContainerFrame5Item27", "ContainerFrame5Item27Cooldown", "ContainerFrame5Item28", "ContainerFrame5Item28Cooldown", "ContainerFrame5Item29", "ContainerFrame5Item29Cooldown", "ContainerFrame5Item2Cooldown", "ContainerFrame5Item3", "ContainerFrame5Item30", "ContainerFrame5Item30Cooldown", "ContainerFrame5Item31", "ContainerFrame5Item31Cooldown", "ContainerFrame5Item32", "ContainerFrame5Item32Cooldown", "ContainerFrame5Item33", "ContainerFrame5Item33Cooldown", "ContainerFrame5Item34", "ContainerFrame5Item34Cooldown", "ContainerFrame5Item35", "ContainerFrame5Item35Cooldown", "ContainerFrame5Item36", "ContainerFrame5Item36Cooldown", "ContainerFrame5Item3Cooldown", "ContainerFrame5Item4", "ContainerFrame5Item4Cooldown", "ContainerFrame5Item5", "ContainerFrame5Item5Cooldown", "ContainerFrame5Item6", "ContainerFrame5Item6Cooldown", "ContainerFrame5Item7", "ContainerFrame5Item7Cooldown", "ContainerFrame5Item8", "ContainerFrame5Item8Cooldown", "ContainerFrame5Item9", "ContainerFrame5Item9Cooldown", "ContainerFrame5MoneyFrame", "ContainerFrame5MoneyFrameCopperButton", "ContainerFrame5MoneyFrameGoldButton", "ContainerFrame5MoneyFrameSilverButton", "ContainerFrame5PortraitButton", "ContainerFrame6", "ContainerFrame6CloseButton", "ContainerFrame6Item1", "ContainerFrame6Item10", "ContainerFrame6Item10Cooldown", "ContainerFrame6Item11", "ContainerFrame6Item11Cooldown", "ContainerFrame6Item12", "ContainerFrame6Item12Cooldown", "ContainerFrame6Item13", "ContainerFrame6Item13Cooldown", "ContainerFrame6Item14", "ContainerFrame6Item14Cooldown", "ContainerFrame6Item15", "ContainerFrame6Item15Cooldown", "ContainerFrame6Item16", "ContainerFrame6Item16Cooldown", "ContainerFrame6Item17", "ContainerFrame6Item17Cooldown", "ContainerFrame6Item18", "ContainerFrame6Item18Cooldown", "ContainerFrame6Item19", "ContainerFrame6Item19Cooldown", "ContainerFrame6Item1Cooldown", "ContainerFrame6Item2", "ContainerFrame6Item20", "ContainerFrame6Item20Cooldown", "ContainerFrame6Item21", "ContainerFrame6Item21Cooldown", "ContainerFrame6Item22", "ContainerFrame6Item22Cooldown", "ContainerFrame6Item23", "ContainerFrame6Item23Cooldown", "ContainerFrame6Item24", "ContainerFrame6Item24Cooldown", "ContainerFrame6Item25", "ContainerFrame6Item25Cooldown", "ContainerFrame6Item26", "ContainerFrame6Item26Cooldown", "ContainerFrame6Item27", "ContainerFrame6Item27Cooldown", "ContainerFrame6Item28", "ContainerFrame6Item28Cooldown", "ContainerFrame6Item29", "ContainerFrame6Item29Cooldown", "ContainerFrame6Item2Cooldown", "ContainerFrame6Item3", "ContainerFrame6Item30", "ContainerFrame6Item30Cooldown", "ContainerFrame6Item31", "ContainerFrame6Item31Cooldown", "ContainerFrame6Item32", "ContainerFrame6Item32Cooldown", "ContainerFrame6Item33", "ContainerFrame6Item33Cooldown", "ContainerFrame6Item34", "ContainerFrame6Item34Cooldown", "ContainerFrame6Item35", "ContainerFrame6Item35Cooldown", "ContainerFrame6Item36", "ContainerFrame6Item36Cooldown", "ContainerFrame6Item3Cooldown", "ContainerFrame6Item4", "ContainerFrame6Item4Cooldown", "ContainerFrame6Item5", "ContainerFrame6Item5Cooldown", "ContainerFrame6Item6", "ContainerFrame6Item6Cooldown", "ContainerFrame6Item7", "ContainerFrame6Item7Cooldown", "ContainerFrame6Item8", "ContainerFrame6Item8Cooldown", "ContainerFrame6Item9", "ContainerFrame6Item9Cooldown", "ContainerFrame6MoneyFrame", "ContainerFrame6MoneyFrameCopperButton", "ContainerFrame6MoneyFrameGoldButton", "ContainerFrame6MoneyFrameSilverButton", "ContainerFrame6PortraitButton", "ContainerFrame7", "ContainerFrame7CloseButton", "ContainerFrame7Item1", "ContainerFrame7Item10", "ContainerFrame7Item10Cooldown", "ContainerFrame7Item11", "ContainerFrame7Item11Cooldown", "ContainerFrame7Item12", "ContainerFrame7Item12Cooldown", "ContainerFrame7Item13", "ContainerFrame7Item13Cooldown", "ContainerFrame7Item14", "ContainerFrame7Item14Cooldown", "ContainerFrame7Item15", "ContainerFrame7Item15Cooldown", "ContainerFrame7Item16", "ContainerFrame7Item16Cooldown", "ContainerFrame7Item17", "ContainerFrame7Item17Cooldown", "ContainerFrame7Item18", "ContainerFrame7Item18Cooldown", "ContainerFrame7Item19", "ContainerFrame7Item19Cooldown", "ContainerFrame7Item1Cooldown", "ContainerFrame7Item2", "ContainerFrame7Item20", "ContainerFrame7Item20Cooldown", "ContainerFrame7Item21", "ContainerFrame7Item21Cooldown", "ContainerFrame7Item22", "ContainerFrame7Item22Cooldown", "ContainerFrame7Item23", "ContainerFrame7Item23Cooldown", "ContainerFrame7Item24", "ContainerFrame7Item24Cooldown", "ContainerFrame7Item25", "ContainerFrame7Item25Cooldown", "ContainerFrame7Item26", "ContainerFrame7Item26Cooldown", "ContainerFrame7Item27", "ContainerFrame7Item27Cooldown", "ContainerFrame7Item28", "ContainerFrame7Item28Cooldown", "ContainerFrame7Item29", "ContainerFrame7Item29Cooldown", "ContainerFrame7Item2Cooldown", "ContainerFrame7Item3", "ContainerFrame7Item30", "ContainerFrame7Item30Cooldown", "ContainerFrame7Item31", "ContainerFrame7Item31Cooldown", "ContainerFrame7Item32", "ContainerFrame7Item32Cooldown", "ContainerFrame7Item33", "ContainerFrame7Item33Cooldown", "ContainerFrame7Item34", "ContainerFrame7Item34Cooldown", "ContainerFrame7Item35", "ContainerFrame7Item35Cooldown", "ContainerFrame7Item36", "ContainerFrame7Item36Cooldown", "ContainerFrame7Item3Cooldown", "ContainerFrame7Item4", "ContainerFrame7Item4Cooldown", "ContainerFrame7Item5", "ContainerFrame7Item5Cooldown", "ContainerFrame7Item6", "ContainerFrame7Item6Cooldown", "ContainerFrame7Item7", "ContainerFrame7Item7Cooldown", "ContainerFrame7Item8", "ContainerFrame7Item8Cooldown", "ContainerFrame7Item9", "ContainerFrame7Item9Cooldown", "ContainerFrame7MoneyFrame", "ContainerFrame7MoneyFrameCopperButton", "ContainerFrame7MoneyFrameGoldButton", "ContainerFrame7MoneyFrameSilverButton", "ContainerFrame7PortraitButton", "ContainerFrame8", "ContainerFrame8CloseButton", "ContainerFrame8Item1", "ContainerFrame8Item10", "ContainerFrame8Item10Cooldown", "ContainerFrame8Item11", "ContainerFrame8Item11Cooldown", "ContainerFrame8Item12", "ContainerFrame8Item12Cooldown", "ContainerFrame8Item13", "ContainerFrame8Item13Cooldown", "ContainerFrame8Item14", "ContainerFrame8Item14Cooldown", "ContainerFrame8Item15", "ContainerFrame8Item15Cooldown", "ContainerFrame8Item16", "ContainerFrame8Item16Cooldown", "ContainerFrame8Item17", "ContainerFrame8Item17Cooldown", "ContainerFrame8Item18", "ContainerFrame8Item18Cooldown", "ContainerFrame8Item19", "ContainerFrame8Item19Cooldown", "ContainerFrame8Item1Cooldown", "ContainerFrame8Item2", "ContainerFrame8Item20", "ContainerFrame8Item20Cooldown", "ContainerFrame8Item21", "ContainerFrame8Item21Cooldown", "ContainerFrame8Item22", "ContainerFrame8Item22Cooldown", "ContainerFrame8Item23", "ContainerFrame8Item23Cooldown", "ContainerFrame8Item24", "ContainerFrame8Item24Cooldown", "ContainerFrame8Item25", "ContainerFrame8Item25Cooldown", "ContainerFrame8Item26", "ContainerFrame8Item26Cooldown", "ContainerFrame8Item27", "ContainerFrame8Item27Cooldown", "ContainerFrame8Item28", "ContainerFrame8Item28Cooldown", "ContainerFrame8Item29", "ContainerFrame8Item29Cooldown", "ContainerFrame8Item2Cooldown", "ContainerFrame8Item3", "ContainerFrame8Item30", "ContainerFrame8Item30Cooldown", "ContainerFrame8Item31", "ContainerFrame8Item31Cooldown", "ContainerFrame8Item32", "ContainerFrame8Item32Cooldown", "ContainerFrame8Item33", "ContainerFrame8Item33Cooldown", "ContainerFrame8Item34", "ContainerFrame8Item34Cooldown", "ContainerFrame8Item35", "ContainerFrame8Item35Cooldown", "ContainerFrame8Item36", "ContainerFrame8Item36Cooldown", "ContainerFrame8Item3Cooldown", "ContainerFrame8Item4", "ContainerFrame8Item4Cooldown", "ContainerFrame8Item5", "ContainerFrame8Item5Cooldown", "ContainerFrame8Item6", "ContainerFrame8Item6Cooldown", "ContainerFrame8Item7", "ContainerFrame8Item7Cooldown", "ContainerFrame8Item8", "ContainerFrame8Item8Cooldown", "ContainerFrame8Item9", "ContainerFrame8Item9Cooldown", "ContainerFrame8MoneyFrame", "ContainerFrame8MoneyFrameCopperButton", "ContainerFrame8MoneyFrameGoldButton", "ContainerFrame8MoneyFrameSilverButton", "ContainerFrame8PortraitButton", "ContainerFrame9", "ContainerFrame9CloseButton", "ContainerFrame9Item1", "ContainerFrame9Item10", "ContainerFrame9Item10Cooldown", "ContainerFrame9Item11", "ContainerFrame9Item11Cooldown", "ContainerFrame9Item12", "ContainerFrame9Item12Cooldown", "ContainerFrame9Item13", "ContainerFrame9Item13Cooldown", "ContainerFrame9Item14", "ContainerFrame9Item14Cooldown", "ContainerFrame9Item15", "ContainerFrame9Item15Cooldown", "ContainerFrame9Item16", "ContainerFrame9Item16Cooldown", "ContainerFrame9Item17", "ContainerFrame9Item17Cooldown", "ContainerFrame9Item18", "ContainerFrame9Item18Cooldown", "ContainerFrame9Item19", "ContainerFrame9Item19Cooldown", "ContainerFrame9Item1Cooldown", "ContainerFrame9Item2", "ContainerFrame9Item20", "ContainerFrame9Item20Cooldown", "ContainerFrame9Item21", "ContainerFrame9Item21Cooldown", "ContainerFrame9Item22", "ContainerFrame9Item22Cooldown", "ContainerFrame9Item23", "ContainerFrame9Item23Cooldown", "ContainerFrame9Item24", "ContainerFrame9Item24Cooldown", "ContainerFrame9Item25", "ContainerFrame9Item25Cooldown", "ContainerFrame9Item26", "ContainerFrame9Item26Cooldown", "ContainerFrame9Item27", "ContainerFrame9Item27Cooldown", "ContainerFrame9Item28", "ContainerFrame9Item28Cooldown", "ContainerFrame9Item29", "ContainerFrame9Item29Cooldown", "ContainerFrame9Item2Cooldown", "ContainerFrame9Item3", "ContainerFrame9Item30", "ContainerFrame9Item30Cooldown", "ContainerFrame9Item31", "ContainerFrame9Item31Cooldown", "ContainerFrame9Item32", "ContainerFrame9Item32Cooldown", "ContainerFrame9Item33", "ContainerFrame9Item33Cooldown", "ContainerFrame9Item34", "ContainerFrame9Item34Cooldown", "ContainerFrame9Item35", "ContainerFrame9Item35Cooldown", "ContainerFrame9Item36", "ContainerFrame9Item36Cooldown", "ContainerFrame9Item3Cooldown", "ContainerFrame9Item4", "ContainerFrame9Item4Cooldown", "ContainerFrame9Item5", "ContainerFrame9Item5Cooldown", "ContainerFrame9Item6", "ContainerFrame9Item6Cooldown", "ContainerFrame9Item7", "ContainerFrame9Item7Cooldown", "ContainerFrame9Item8", "ContainerFrame9Item8Cooldown", "ContainerFrame9Item9", "ContainerFrame9Item9Cooldown", "ContainerFrame9MoneyFrame", "ContainerFrame9MoneyFrameCopperButton", "ContainerFrame9MoneyFrameGoldButton", "ContainerFrame9MoneyFrameSilverButton", "ContainerFrame9PortraitButton", "ControlsPanelOptions", "CustomClassLayouts", "DEFAULT_CHATFRAME_COLOR", "DEFAULT_COMBATLOG_FILTER_TEMPLATE", "DEFAULT_TAB_SELECTED_COLOR_TABLE", "DOCKED_CHAT_FRAMES", "DOCK_COPY", "DebuffTypeColor", "DebuffTypeSymbol", "DisplayPanelOptions", "DressUpFrame", "DressUpFrameCancelButton", "DressUpFrameCloseButton", "DressUpFrameResetButton", "DressUpModel", "DressUpModelRotateLeftButton", "DressUpModelRotateRightButton", "DropDownList1", "DropDownList1Backdrop", "DropDownList1Button1", "DropDownList1Button10", "DropDownList1Button10ColorSwatch", "DropDownList1Button10ExpandArrow", "DropDownList1Button10InvisibleButton", "DropDownList1Button11", "DropDownList1Button11ColorSwatch", "DropDownList1Button11ExpandArrow", "DropDownList1Button11InvisibleButton", "DropDownList1Button12", "DropDownList1Button12ColorSwatch", "DropDownList1Button12ExpandArrow", "DropDownList1Button12InvisibleButton", "DropDownList1Button13", "DropDownList1Button13ColorSwatch", "DropDownList1Button13ExpandArrow", "DropDownList1Button13InvisibleButton", "DropDownList1Button14", "DropDownList1Button14ColorSwatch", "DropDownList1Button14ExpandArrow", "DropDownList1Button14InvisibleButton", "DropDownList1Button15", "DropDownList1Button15ColorSwatch", "DropDownList1Button15ExpandArrow", "DropDownList1Button15InvisibleButton", "DropDownList1Button16", "DropDownList1Button16ColorSwatch", "DropDownList1Button16ExpandArrow", "DropDownList1Button16InvisibleButton", "DropDownList1Button17", "DropDownList1Button17ColorSwatch", "DropDownList1Button17ExpandArrow", "DropDownList1Button17InvisibleButton", "DropDownList1Button18", "DropDownList1Button18ColorSwatch", "DropDownList1Button18ExpandArrow", "DropDownList1Button18InvisibleButton", "DropDownList1Button19", "DropDownList1Button19ColorSwatch", "DropDownList1Button19ExpandArrow", "DropDownList1Button19InvisibleButton", "DropDownList1Button1ColorSwatch", "DropDownList1Button1ExpandArrow", "DropDownList1Button1InvisibleButton", "DropDownList1Button2", "DropDownList1Button20", "DropDownList1Button20ColorSwatch", "DropDownList1Button20ExpandArrow", "DropDownList1Button20InvisibleButton", "DropDownList1Button21", "DropDownList1Button21ColorSwatch", "DropDownList1Button21ExpandArrow", "DropDownList1Button21InvisibleButton", "DropDownList1Button22", "DropDownList1Button22ColorSwatch", "DropDownList1Button22ExpandArrow", "DropDownList1Button22InvisibleButton", "DropDownList1Button23", "DropDownList1Button23ColorSwatch", "DropDownList1Button23ExpandArrow", "DropDownList1Button23InvisibleButton", "DropDownList1Button24", "DropDownList1Button24ColorSwatch", "DropDownList1Button24ExpandArrow", "DropDownList1Button24InvisibleButton", "DropDownList1Button2ColorSwatch", "DropDownList1Button2ExpandArrow", "DropDownList1Button2InvisibleButton", "DropDownList1Button3", "DropDownList1Button3ColorSwatch", "DropDownList1Button3ExpandArrow", "DropDownList1Button3InvisibleButton", "DropDownList1Button4", "DropDownList1Button4ColorSwatch", "DropDownList1Button4ExpandArrow", "DropDownList1Button4InvisibleButton", "DropDownList1Button5", "DropDownList1Button5ColorSwatch", "DropDownList1Button5ExpandArrow", "DropDownList1Button5InvisibleButton", "DropDownList1Button6", "DropDownList1Button6ColorSwatch", "DropDownList1Button6ExpandArrow", "DropDownList1Button6InvisibleButton", "DropDownList1Button7", "DropDownList1Button7ColorSwatch", "DropDownList1Button7ExpandArrow", "DropDownList1Button7InvisibleButton", "DropDownList1Button8", "DropDownList1Button8ColorSwatch", "DropDownList1Button8ExpandArrow", "DropDownList1Button8InvisibleButton", "DropDownList1Button9", "DropDownList1Button9ColorSwatch", "DropDownList1Button9ExpandArrow", "DropDownList1Button9InvisibleButton", "DropDownList1MenuBackdrop", "DropDownList2", "DropDownList2Backdrop", "DropDownList2Button1", "DropDownList2Button10", "DropDownList2Button10ColorSwatch", "DropDownList2Button10ExpandArrow", "DropDownList2Button10InvisibleButton", "DropDownList2Button11", "DropDownList2Button11ColorSwatch", "DropDownList2Button11ExpandArrow", "DropDownList2Button11InvisibleButton", "DropDownList2Button12", "DropDownList2Button12ColorSwatch", "DropDownList2Button12ExpandArrow", "DropDownList2Button12InvisibleButton", "DropDownList2Button13", "DropDownList2Button13ColorSwatch", "DropDownList2Button13ExpandArrow", "DropDownList2Button13InvisibleButton", "DropDownList2Button14", "DropDownList2Button14ColorSwatch", "DropDownList2Button14ExpandArrow", "DropDownList2Button14InvisibleButton", "DropDownList2Button15", "DropDownList2Button15ColorSwatch", "DropDownList2Button15ExpandArrow", "DropDownList2Button15InvisibleButton", "DropDownList2Button16", "DropDownList2Button16ColorSwatch", "DropDownList2Button16ExpandArrow", "DropDownList2Button16InvisibleButton", "DropDownList2Button17", "DropDownList2Button17ColorSwatch", "DropDownList2Button17ExpandArrow", "DropDownList2Button17InvisibleButton", "DropDownList2Button18", "DropDownList2Button18ColorSwatch", "DropDownList2Button18ExpandArrow", "DropDownList2Button18InvisibleButton", "DropDownList2Button19", "DropDownList2Button19ColorSwatch", "DropDownList2Button19ExpandArrow", "DropDownList2Button19InvisibleButton", "DropDownList2Button1ColorSwatch", "DropDownList2Button1ExpandArrow", "DropDownList2Button1InvisibleButton", "DropDownList2Button2", "DropDownList2Button20", "DropDownList2Button20ColorSwatch", "DropDownList2Button20ExpandArrow", "DropDownList2Button20InvisibleButton", "DropDownList2Button21", "DropDownList2Button21ColorSwatch", "DropDownList2Button21ExpandArrow", "DropDownList2Button21InvisibleButton", "DropDownList2Button22", "DropDownList2Button22ColorSwatch", "DropDownList2Button22ExpandArrow", "DropDownList2Button22InvisibleButton", "DropDownList2Button23", "DropDownList2Button23ColorSwatch", "DropDownList2Button23ExpandArrow", "DropDownList2Button23InvisibleButton", "DropDownList2Button24", "DropDownList2Button24ColorSwatch", "DropDownList2Button24ExpandArrow", "DropDownList2Button24InvisibleButton", "DropDownList2Button2ColorSwatch", "DropDownList2Button2ExpandArrow", "DropDownList2Button2InvisibleButton", "DropDownList2Button3", "DropDownList2Button3ColorSwatch", "DropDownList2Button3ExpandArrow", "DropDownList2Button3InvisibleButton", "DropDownList2Button4", "DropDownList2Button4ColorSwatch", "DropDownList2Button4ExpandArrow", "DropDownList2Button4InvisibleButton", "DropDownList2Button5", "DropDownList2Button5ColorSwatch", "DropDownList2Button5ExpandArrow", "DropDownList2Button5InvisibleButton", "DropDownList2Button6", "DropDownList2Button6ColorSwatch", "DropDownList2Button6ExpandArrow", "DropDownList2Button6InvisibleButton", "DropDownList2Button7", "DropDownList2Button7ColorSwatch", "DropDownList2Button7ExpandArrow", "DropDownList2Button7InvisibleButton", "DropDownList2Button8", "DropDownList2Button8ColorSwatch", "DropDownList2Button8ExpandArrow", "DropDownList2Button8InvisibleButton", "DropDownList2Button9", "DropDownList2Button9ColorSwatch", "DropDownList2Button9ExpandArrow", "DropDownList2Button9InvisibleButton", "DropDownList2MenuBackdrop", "DungeonCompletionAlertFrame1", "DungeonCompletionAlertFrame1GlowFrame", "DungeonCompletionAlertFrame1Reward1", "DurabilityFrame", "EQUIPMENTMANAGER_BAGSLOTS", "EQUIPMENTMANAGER_INVENTORYSLOTS", "EVENT_TEMPLATE_FORMATS", "EffectsPanelOptions", "EmoteList", "EmoteMenu", "EmoteMenuButton1", "EmoteMenuButton10", "EmoteMenuButton11", "EmoteMenuButton12", "EmoteMenuButton13", "EmoteMenuButton14", "EmoteMenuButton15", "EmoteMenuButton16", "EmoteMenuButton17", "EmoteMenuButton18", "EmoteMenuButton19", "EmoteMenuButton2", "EmoteMenuButton20", "EmoteMenuButton21", "EmoteMenuButton22", "EmoteMenuButton23", "EmoteMenuButton24", "EmoteMenuButton25", "EmoteMenuButton26", "EmoteMenuButton27", "EmoteMenuButton28", "EmoteMenuButton29", "EmoteMenuButton3", "EmoteMenuButton30", "EmoteMenuButton31", "EmoteMenuButton32", "EmoteMenuButton4", "EmoteMenuButton5", "EmoteMenuButton6", "EmoteMenuButton7", "EmoteMenuButton8", "EmoteMenuButton9", "EmptyQuestLogFrame", "EquipmentManager", "ExhaustionTick", "ExtendedUI", "FACTION_BAR_COLORS", "FADEFRAMES", "FCTPanelOptions", "FILTERED_BG_CHAT_ADD", "FILTERED_BG_CHAT_ADD_GLOBALS", "FILTERED_BG_CHAT_END", "FILTERED_BG_CHAT_END_GLOBALS", "FILTERED_BG_CHAT_SUBTRACT", "FILTERED_BG_CHAT_SUBTRACT_GLOBALS", "FLASHFRAMES", "FRIENDSFRAME_SUBFRAMES", "FRIENDS_BNET_BACKGROUND_COLOR", "FRIENDS_BNET_NAME_COLOR", "FRIENDS_GRAY_COLOR", "FRIENDS_OFFLINE_BACKGROUND_COLOR", "FRIENDS_WOW_BACKGROUND_COLOR", "FRIENDS_WOW_NAME_COLOR", "FactionMouseOver", "FeaturesPanelOptions", "FloatingChatFrameManager", "FocusFrame", "FocusFrameBuffs", "FocusFrameDebuffs", "FocusFrameDropDown", "FocusFrameDropDownButton", "FocusFrameHealthBar", "FocusFrameManaBar", "FocusFrameNumericalThreat", "FocusFrameSpellBar", "FocusFrameTextureFrame", "FocusFrameToT", "FocusFrameToTDebuff1", "FocusFrameToTDebuff1Cooldown", "FocusFrameToTDebuff2", "FocusFrameToTDebuff2Cooldown", "FocusFrameToTDebuff3", "FocusFrameToTDebuff3Cooldown", "FocusFrameToTDebuff4", "FocusFrameToTDebuff4Cooldown", "FocusFrameToTHealthBar", "FocusFrameToTManaBar", "FocusFrameToTTextureFrame", "FolderPicker", "FolderPickerButton01", "FriendsDropDown", "FriendsDropDownButton", "FriendsFrame", "FriendsFrameAddFriendButton", "FriendsFrameBattlenetStatus", "FriendsFrameBattlenetStatusInfoButton", "FriendsFrameBlockedInviteHeader", "FriendsFrameBlockedToonHeader", "FriendsFrameBroadcastInput", "FriendsFrameBroadcastInputClearButton", "FriendsFrameBroadcastInputTooltipButton", "FriendsFrameCloseButton", "FriendsFrameFriendsScrollFrame", "FriendsFrameFriendsScrollFrameButton1", "FriendsFrameFriendsScrollFrameButton10", "FriendsFrameFriendsScrollFrameButton10SummonButton", "FriendsFrameFriendsScrollFrameButton10SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton11", "FriendsFrameFriendsScrollFrameButton11SummonButton", "FriendsFrameFriendsScrollFrameButton11SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton12", "FriendsFrameFriendsScrollFrameButton12SummonButton", "FriendsFrameFriendsScrollFrameButton12SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton13", "FriendsFrameFriendsScrollFrameButton13SummonButton", "FriendsFrameFriendsScrollFrameButton13SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton14", "FriendsFrameFriendsScrollFrameButton14SummonButton", "FriendsFrameFriendsScrollFrameButton14SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton15", "FriendsFrameFriendsScrollFrameButton15SummonButton", "FriendsFrameFriendsScrollFrameButton15SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton16", "FriendsFrameFriendsScrollFrameButton16SummonButton", "FriendsFrameFriendsScrollFrameButton16SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton17", "FriendsFrameFriendsScrollFrameButton17SummonButton", "FriendsFrameFriendsScrollFrameButton17SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton18", "FriendsFrameFriendsScrollFrameButton18SummonButton", "FriendsFrameFriendsScrollFrameButton18SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton19", "FriendsFrameFriendsScrollFrameButton19SummonButton", "FriendsFrameFriendsScrollFrameButton19SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton1SummonButton", "FriendsFrameFriendsScrollFrameButton1SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton2", "FriendsFrameFriendsScrollFrameButton20", "FriendsFrameFriendsScrollFrameButton20SummonButton", "FriendsFrameFriendsScrollFrameButton20SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton21", "FriendsFrameFriendsScrollFrameButton21SummonButton", "FriendsFrameFriendsScrollFrameButton21SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton22", "FriendsFrameFriendsScrollFrameButton22SummonButton", "FriendsFrameFriendsScrollFrameButton22SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton23", "FriendsFrameFriendsScrollFrameButton23SummonButton", "FriendsFrameFriendsScrollFrameButton23SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton2SummonButton", "FriendsFrameFriendsScrollFrameButton2SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton3", "FriendsFrameFriendsScrollFrameButton3SummonButton", "FriendsFrameFriendsScrollFrameButton3SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton4", "FriendsFrameFriendsScrollFrameButton4SummonButton", "FriendsFrameFriendsScrollFrameButton4SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton5", "FriendsFrameFriendsScrollFrameButton5SummonButton", "FriendsFrameFriendsScrollFrameButton5SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton6", "FriendsFrameFriendsScrollFrameButton6SummonButton", "FriendsFrameFriendsScrollFrameButton6SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton7", "FriendsFrameFriendsScrollFrameButton7SummonButton", "FriendsFrameFriendsScrollFrameButton7SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton8", "FriendsFrameFriendsScrollFrameButton8SummonButton", "FriendsFrameFriendsScrollFrameButton8SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton9", "FriendsFrameFriendsScrollFrameButton9SummonButton", "FriendsFrameFriendsScrollFrameButton9SummonButtonCooldown", "FriendsFrameFriendsScrollFrameScrollBar", "FriendsFrameFriendsScrollFrameScrollBarScrollDownButton", "FriendsFrameFriendsScrollFrameScrollBarScrollUpButton", "FriendsFrameFriendsScrollFrameScrollChild", "FriendsFrameIgnoreButton1", "FriendsFrameIgnoreButton10", "FriendsFrameIgnoreButton11", "FriendsFrameIgnoreButton12", "FriendsFrameIgnoreButton13", "FriendsFrameIgnoreButton14", "FriendsFrameIgnoreButton15", "FriendsFrameIgnoreButton16", "FriendsFrameIgnoreButton17", "FriendsFrameIgnoreButton18", "FriendsFrameIgnoreButton19", "FriendsFrameIgnoreButton2", "FriendsFrameIgnoreButton3", "FriendsFrameIgnoreButton4", "FriendsFrameIgnoreButton5", "FriendsFrameIgnoreButton6", "FriendsFrameIgnoreButton7", "FriendsFrameIgnoreButton8", "FriendsFrameIgnoreButton9", "FriendsFrameIgnorePlayerButton", "FriendsFrameIgnoreScrollFrame", "FriendsFrameIgnoreScrollFrameScrollBar", "FriendsFrameIgnoreScrollFrameScrollBarScrollDownButton", "FriendsFrameIgnoreScrollFrameScrollBarScrollUpButton", "FriendsFrameIgnoreScrollFrameScrollChildFrame", "FriendsFrameIgnoredHeader", "FriendsFrameMutePlayerButton", "FriendsFrameMutedHeader", "FriendsFramePendingButton1", "FriendsFramePendingButton1AcceptButton", "FriendsFramePendingButton1BlockButton", "FriendsFramePendingButton1DeclineButton", "FriendsFramePendingButton1Highlight", "FriendsFramePendingButton1ReportButton", "FriendsFramePendingButton2", "FriendsFramePendingButton2AcceptButton", "FriendsFramePendingButton2BlockButton", "FriendsFramePendingButton2DeclineButton", "FriendsFramePendingButton2Highlight", "FriendsFramePendingButton2ReportButton", "FriendsFramePendingButton3", "FriendsFramePendingButton3AcceptButton", "FriendsFramePendingButton3BlockButton", "FriendsFramePendingButton3DeclineButton", "FriendsFramePendingButton3Highlight", "FriendsFramePendingButton3ReportButton", "FriendsFramePendingButton4", "FriendsFramePendingButton4AcceptButton", "FriendsFramePendingButton4BlockButton", "FriendsFramePendingButton4DeclineButton", "FriendsFramePendingButton4Highlight", "FriendsFramePendingButton4ReportButton", "FriendsFramePendingScrollFrame", "FriendsFramePendingScrollFrameScrollBar", "FriendsFramePendingScrollFrameScrollBarScrollDownButton", "FriendsFramePendingScrollFrameScrollBarScrollUpButton", "FriendsFramePendingScrollFrameScrollChild", "FriendsFrameSendMessageButton", "FriendsFrameStatusDropDown", "FriendsFrameStatusDropDownButton", "FriendsFrameStatusDropDownMouseOver", "FriendsFrameTab1", "FriendsFrameTab2", "FriendsFrameTab3", "FriendsFrameTab4", "FriendsFrameTab5", "FriendsFrameUnsquelchButton", "FriendsFriendsButton1", "FriendsFriendsButton10", "FriendsFriendsButton11", "FriendsFriendsButton2", "FriendsFriendsButton3", "FriendsFriendsButton4", "FriendsFriendsButton5", "FriendsFriendsButton6", "FriendsFriendsButton7", "FriendsFriendsButton8", "FriendsFriendsButton9", "FriendsFriendsCloseButton", "FriendsFriendsFrame", "FriendsFriendsFrameDropDown", "FriendsFriendsFrameDropDownButton", "FriendsFriendsList", "FriendsFriendsNoteEditBox", "FriendsFriendsNoteFrame", "FriendsFriendsNoteFrameScrollFrame", "FriendsFriendsNoteFrameScrollFrameFocusButton", "FriendsFriendsNoteFrameScrollFrameScrollBar", "FriendsFriendsNoteFrameScrollFrameScrollBarScrollDownButton", "FriendsFriendsNoteFrameScrollFrameScrollBarScrollUpButton", "FriendsFriendsScrollFrame", "FriendsFriendsScrollFrameScrollBar", "FriendsFriendsScrollFrameScrollBarScrollDownButton", "FriendsFriendsScrollFrameScrollBarScrollUpButton", "FriendsFriendsScrollFrameScrollChildFrame", "FriendsFriendsSendRequestButton", "FriendsFriendsWaitFrame", "FriendsListFrame", "FriendsMicroButton", "FriendsTabHeader", "FriendsTabHeaderInviteAlert", "FriendsTabHeaderTab1", "FriendsTabHeaderTab2", "FriendsTabHeaderTab3", "FriendsTooltip", "GMChatOpenLog", "GRAY_FONT_COLOR", "GREEN_FONT_COLOR", "GUILDFRAME_POPUPS", "GameMenuButtonContinue", "GameMenuButtonKeybindings", "GameMenuButtonLogout", "GameMenuButtonMacOptions", "GameMenuButtonMacros", "GameMenuButtonOptions", "GameMenuButtonQuit", "GameMenuButtonRatings", "GameMenuButtonSoundOptions", "GameMenuButtonUIOptions", "GameMenuFrame", "GameTimeFrame", "GameTooltip", "GameTooltipStatusBar", "GearManagerDialog", "GearManagerDialogClose", "GearManagerDialogDeleteSet", "GearManagerDialogEquipSet", "GearManagerDialogPopup", "GearManagerDialogPopupButton1", "GearManagerDialogPopupButton10", "GearManagerDialogPopupButton11", "GearManagerDialogPopupButton12", "GearManagerDialogPopupButton13", "GearManagerDialogPopupButton14", "GearManagerDialogPopupButton15", "GearManagerDialogPopupButton2", "GearManagerDialogPopupButton3", "GearManagerDialogPopupButton4", "GearManagerDialogPopupButton5", "GearManagerDialogPopupButton6", "GearManagerDialogPopupButton7", "GearManagerDialogPopupButton8", "GearManagerDialogPopupButton9", "GearManagerDialogPopupCancel", "GearManagerDialogPopupEditBox", "GearManagerDialogPopupOkay", "GearManagerDialogPopupScrollFrame", "GearManagerDialogPopupScrollFrameScrollBar", "GearManagerDialogPopupScrollFrameScrollBarScrollDownButton", "GearManagerDialogPopupScrollFrameScrollBarScrollUpButton", "GearManagerDialogPopupScrollFrameScrollChildFrame", "GearManagerDialogSaveSet", "GearManagerToggleButton", "GearSetButton1", "GearSetButton10", "GearSetButton2", "GearSetButton3", "GearSetButton4", "GearSetButton5", "GearSetButton6", "GearSetButton7", "GearSetButton8", "GearSetButton9", "GeneralDockManager", "GeneralDockManagerOverflowButton", "GeneralDockManagerOverflowButtonList", "GeneralDockManagerScrollFrame", "GeneralDockManagerScrollFrameChild", "GlobalCollectorDB", "GossipFrame", "GossipFrameCloseButton", "GossipFrameGreetingGoodbyeButton", "GossipFrameGreetingPanel", "GossipGreetingScrollChildFrame", "GossipGreetingScrollFrame", "GossipGreetingScrollFrameScrollBar", "GossipGreetingScrollFrameScrollBarScrollDownButton", "GossipGreetingScrollFrameScrollBarScrollUpButton", "GossipNpcNameFrame", "GossipSpacerFrame", "GossipTitleButton1", "GossipTitleButton10", "GossipTitleButton11", "GossipTitleButton12", "GossipTitleButton13", "GossipTitleButton14", "GossipTitleButton15", "GossipTitleButton16", "GossipTitleButton17", "GossipTitleButton18", "GossipTitleButton19", "GossipTitleButton2", "GossipTitleButton20", "GossipTitleButton21", "GossipTitleButton22", "GossipTitleButton23", "GossipTitleButton24", "GossipTitleButton25", "GossipTitleButton26", "GossipTitleButton27", "GossipTitleButton28", "GossipTitleButton29", "GossipTitleButton3", "GossipTitleButton30", "GossipTitleButton31", "GossipTitleButton32", "GossipTitleButton4", "GossipTitleButton5", "GossipTitleButton6", "GossipTitleButton7", "GossipTitleButton8", "GossipTitleButton9", "GraphicsQualityLevels", "GroupLootDropDown", "GroupLootDropDownButton", "GroupLootFrame1", "GroupLootFrame1DisenchantButton", "GroupLootFrame1GreedButton", "GroupLootFrame1IconFrame", "GroupLootFrame1PassButton", "GroupLootFrame1RollButton", "GroupLootFrame1Timer", "GroupLootFrame2", "GroupLootFrame2DisenchantButton", "GroupLootFrame2GreedButton", "GroupLootFrame2IconFrame", "GroupLootFrame2PassButton", "GroupLootFrame2RollButton", "GroupLootFrame2Timer", "GroupLootFrame3", "GroupLootFrame3DisenchantButton", "GroupLootFrame3GreedButton", "GroupLootFrame3IconFrame", "GroupLootFrame3PassButton", "GroupLootFrame3RollButton", "GroupLootFrame3Timer", "GroupLootFrame4", "GroupLootFrame4DisenchantButton", "GroupLootFrame4GreedButton", "GroupLootFrame4IconFrame", "GroupLootFrame4PassButton", "GroupLootFrame4RollButton", "GroupLootFrame4Timer", "GuildBankTabPermissionsTab1", "GuildBankTabPermissionsTab2", "GuildBankTabPermissionsTab3", "GuildBankTabPermissionsTab4", "GuildBankTabPermissionsTab5", "GuildBankTabPermissionsTab6", "GuildControlPopupAcceptButton", "GuildControlPopupFrame", "GuildControlPopupFrameAddRankButton", "GuildControlPopupFrameCancelButton", "GuildControlPopupFrameCheckbox1", "GuildControlPopupFrameCheckbox10", "GuildControlPopupFrameCheckbox11", "GuildControlPopupFrameCheckbox12", "GuildControlPopupFrameCheckbox13", "GuildControlPopupFrameCheckbox15", "GuildControlPopupFrameCheckbox16", "GuildControlPopupFrameCheckbox17", "GuildControlPopupFrameCheckbox2", "GuildControlPopupFrameCheckbox3", "GuildControlPopupFrameCheckbox4", "GuildControlPopupFrameCheckbox5", "GuildControlPopupFrameCheckbox6", "GuildControlPopupFrameCheckbox7", "GuildControlPopupFrameCheckbox8", "GuildControlPopupFrameCheckbox9", "GuildControlPopupFrameCheckboxes", "GuildControlPopupFrameDropDown", "GuildControlPopupFrameDropDownButton", "GuildControlPopupFrameEditBox", "GuildControlPopupFrameRemoveRankButton", "GuildControlPopupFrameTabPermissions", "GuildControlTabPermissionsDepositItems", "GuildControlTabPermissionsUpdateText", "GuildControlTabPermissionsViewTab", "GuildControlTabPermissionsWithdrawItems", "GuildControlWithdrawGold", "GuildControlWithdrawGoldEditBox", "GuildControlWithdrawGoldEditBoxMask", "GuildControlWithdrawItemsEditBox", "GuildControlWithdrawItemsEditBoxMask", "GuildEventFrame", "GuildEventLogCancelButton", "GuildEventLogCloseButton", "GuildEventLogFrame", "GuildEventLogScrollChildFrame", "GuildEventLogScrollFrame", "GuildEventLogScrollFrameScrollBar", "GuildEventLogScrollFrameScrollBarScrollDownButton", "GuildEventLogScrollFrameScrollBarScrollUpButton", "GuildFrame", "GuildFrameAddMemberButton", "GuildFrameButton1", "GuildFrameButton10", "GuildFrameButton11", "GuildFrameButton12", "GuildFrameButton13", "GuildFrameButton2", "GuildFrameButton3", "GuildFrameButton4", "GuildFrameButton5", "GuildFrameButton6", "GuildFrameButton7", "GuildFrameButton8", "GuildFrameButton9", "GuildFrameColumnHeader1", "GuildFrameColumnHeader2", "GuildFrameColumnHeader3", "GuildFrameColumnHeader4", "GuildFrameControlButton", "GuildFrameDemoteButton", "GuildFrameGuildInformationButton", "GuildFrameGuildListToggleButton", "GuildFrameGuildStatusButton1", "GuildFrameGuildStatusButton10", "GuildFrameGuildStatusButton11", "GuildFrameGuildStatusButton12", "GuildFrameGuildStatusButton13", "GuildFrameGuildStatusButton2", "GuildFrameGuildStatusButton3", "GuildFrameGuildStatusButton4", "GuildFrameGuildStatusButton5", "GuildFrameGuildStatusButton6", "GuildFrameGuildStatusButton7", "GuildFrameGuildStatusButton8", "GuildFrameGuildStatusButton9", "GuildFrameGuildStatusColumnHeader1", "GuildFrameGuildStatusColumnHeader2", "GuildFrameGuildStatusColumnHeader3", "GuildFrameGuildStatusColumnHeader4", "GuildFrameLFGButton", "GuildFrameLFGFrame", "GuildFramePromoteButton", "GuildInfoCancelButton", "GuildInfoCloseButton", "GuildInfoEditBox", "GuildInfoFrame", "GuildInfoFrameScrollFrame", "GuildInfoFrameScrollFrameScrollBar", "GuildInfoFrameScrollFrameScrollBarScrollDownButton", "GuildInfoFrameScrollFrameScrollBarScrollUpButton", "GuildInfoGuildEventButton", "GuildInfoSaveButton", "GuildInfoTextBackground", "GuildListScrollFrame", "GuildListScrollFrameScrollBar", "GuildListScrollFrameScrollBarScrollDownButton", "GuildListScrollFrameScrollBarScrollUpButton", "GuildListScrollFrameScrollChildFrame", "GuildMOTDEditButton", "GuildMemberDetailCloseButton", "GuildMemberDetailFrame", "GuildMemberGroupInviteButton", "GuildMemberNoteBackground", "GuildMemberOfficerNoteBackground", "GuildMemberRemoveButton", "GuildPlayerStatusFrame", "GuildRegistrarButton1", "GuildRegistrarButton2", "GuildRegistrarFrame", "GuildRegistrarFrameCancelButton", "GuildRegistrarFrameCloseButton", "GuildRegistrarFrameEditBox", "GuildRegistrarFrameGoodbyeButton", "GuildRegistrarFramePurchaseButton", "GuildRegistrarGreetingFrame", "GuildRegistrarMoneyFrame", "GuildRegistrarMoneyFrameCopperButton", "GuildRegistrarMoneyFrameGoldButton", "GuildRegistrarMoneyFrameSilverButton", "GuildRegistrarNpcNameFrame", "GuildRegistrarPurchaseFrame", "GuildStatusFrame", "HIGHLIGHT_FONT_COLOR", "HUNTER_PET_BONUS", "HelpFrame", "HelpFrameCloseButton", "HelpFrameGMTalk", "HelpFrameGMTalkCancel", "HelpFrameGMTalkOpenTicket", "HelpFrameLag", "HelpFrameLagAuctionHouse", "HelpFrameLagCancel", "HelpFrameLagChat", "HelpFrameLagLoot", "HelpFrameLagMail", "HelpFrameLagMovement", "HelpFrameLagSpell", "HelpFrameOpenTicket", "HelpFrameOpenTicketCancel", "HelpFrameOpenTicketDivider", "HelpFrameOpenTicketEditBox", "HelpFrameOpenTicketScrollFrame", "HelpFrameOpenTicketScrollFrameScrollBar", "HelpFrameOpenTicketScrollFrameScrollBarScrollDownButton", "HelpFrameOpenTicketScrollFrameScrollBarScrollUpButton", "HelpFrameOpenTicketSubmit", "HelpFrameReportIssue", "HelpFrameReportIssueBullet1", "HelpFrameReportIssueBullet2", "HelpFrameReportIssueCancel", "HelpFrameReportIssueOpenTicket", "HelpFrameStuck", "HelpFrameStuckCancel", "HelpFrameStuckOpenTicket", "HelpFrameStuckStuck", "HelpFrameViewResponse", "HelpFrameViewResponseCancel", "HelpFrameViewResponseDivider", "HelpFrameViewResponseIssueResolved", "HelpFrameViewResponseIssueScrollFrame", "HelpFrameViewResponseIssueScrollFrameScrollBar", "HelpFrameViewResponseIssueScrollFrameScrollBarScrollDownButton", "HelpFrameViewResponseIssueScrollFrameScrollBarScrollUpButton", "HelpFrameViewResponseIssueScrollFrameScrollChild", "HelpFrameViewResponseMessageScrollFrame", "HelpFrameViewResponseMessageScrollFrameScrollBar", "HelpFrameViewResponseMessageScrollFrameScrollBarScrollDownButton", "HelpFrameViewResponseMessageScrollFrameScrollBarScrollUpButton", "HelpFrameViewResponseMessageScrollFrameScrollChild", "HelpFrameViewResponseMoreHelp", "HelpFrameWelcome", "HelpFrameWelcomeCancel", "HelpFrameWelcomeGMTalk", "HelpFrameWelcomeReportIssue", "HelpFrameWelcomeStuck", "HelpMicroButton", "HelpPanelOptions", "HonorFrame", "HonorFrameCurrentDK", "HonorFrameCurrentHK", "HonorFrameLastWeekContribution", "HonorFrameLastWeekHK", "HonorFrameLastWeekStanding", "HonorFrameLifeTimeDK", "HonorFrameLifeTimeHK", "HonorFrameLifeTimeRank", "HonorFrameProgressBar", "HonorFrameProgressButton", "HonorFrameRankButton", "HonorFrameThisWeekContribution", "HonorFrameThisWeekHK", "HonorFrameYesterdayContribution", "HonorFrameYesterdayHK", "ICON_LIST", "ICON_TAG_LIST", "INTERFACEOPTIONS_ADDONCATEGORIES", "INVENTORY_ALERT_COLORS", "INVENTORY_ALERT_STATUS_SLOTS", "INVSLOTS_EQUIPABLE_IN_COMBAT", "ITEM_QUALITY_COLORS", "IgnoreListFrame", "InboxCloseButton", "InboxFrame", "InboxNextPageButton", "InboxPrevPageButton", "InboxTooMuchMail", "InterfaceOptionsActionBarsPanel", "InterfaceOptionsActionBarsPanelAlwaysShowActionBars", "InterfaceOptionsActionBarsPanelBottomLeft", "InterfaceOptionsActionBarsPanelBottomRight", "InterfaceOptionsActionBarsPanelLockActionBars", "InterfaceOptionsActionBarsPanelRight", "InterfaceOptionsActionBarsPanelRightTwo", "InterfaceOptionsActionBarsPanelSecureAbilityToggle", "InterfaceOptionsBattlenetPanel", "InterfaceOptionsBattlenetPanelBroadcasts", "InterfaceOptionsBattlenetPanelConversations", "InterfaceOptionsBattlenetPanelFriendRequests", "InterfaceOptionsBattlenetPanelOfflineFriends", "InterfaceOptionsBattlenetPanelOnlineFriends", "InterfaceOptionsBattlenetPanelShowToastWindow", "InterfaceOptionsBattlenetPanelToastDurationSlider", "InterfaceOptionsBuffsPanel", "InterfaceOptionsBuffsPanelBuffDurations", "InterfaceOptionsBuffsPanelCastableBuffs", "InterfaceOptionsBuffsPanelConsolidateBuffs", "InterfaceOptionsBuffsPanelDispellableDebuffs", "InterfaceOptionsBuffsPanelShowCastableDebuffs", "InterfaceOptionsCameraPanel", "InterfaceOptionsCameraPanelFollowSpeedSlider", "InterfaceOptionsCameraPanelFollowTerrain", "InterfaceOptionsCameraPanelHeadBob", "InterfaceOptionsCameraPanelMaxDistanceSlider", "InterfaceOptionsCameraPanelSmartPivot", "InterfaceOptionsCameraPanelStyleDropDown", "InterfaceOptionsCameraPanelStyleDropDownButton", "InterfaceOptionsCameraPanelWaterCollision", "InterfaceOptionsCombatPanel", "InterfaceOptionsCombatPanelAttackOnAssist", "InterfaceOptionsCombatPanelAutoRange", "InterfaceOptionsCombatPanelAutoSelfCast", "InterfaceOptionsCombatPanelEnemyCastBars", "InterfaceOptionsCombatPanelEnemyCastBarsOnNameplates", "InterfaceOptionsCombatPanelEnemyCastBarsOnPortrait", "InterfaceOptionsCombatPanelFocusCastKeyDropDown", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButton", "InterfaceOptionsCombatPanelNameplateClassColors", "InterfaceOptionsCombatPanelSelfCastKeyDropDown", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButton", "InterfaceOptionsCombatPanelStopAutoAttack", "InterfaceOptionsCombatPanelTOTDropDown", "InterfaceOptionsCombatPanelTOTDropDownButton", "InterfaceOptionsCombatPanelTargetOfTarget", "InterfaceOptionsCombatTextPanel", "InterfaceOptionsCombatTextPanelAuras", "InterfaceOptionsCombatTextPanelCombatState", "InterfaceOptionsCombatTextPanelComboPoints", "InterfaceOptionsCombatTextPanelDamageReduction", "InterfaceOptionsCombatTextPanelDodgeParryMiss", "InterfaceOptionsCombatTextPanelEnableFCT", "InterfaceOptionsCombatTextPanelEnergyGains", "InterfaceOptionsCombatTextPanelFCTDropDown", "InterfaceOptionsCombatTextPanelFCTDropDownButton", "InterfaceOptionsCombatTextPanelFriendlyHealerNames", "InterfaceOptionsCombatTextPanelHealing", "InterfaceOptionsCombatTextPanelHonorGains", "InterfaceOptionsCombatTextPanelLowManaHealth", "InterfaceOptionsCombatTextPanelOtherTargetEffects", "InterfaceOptionsCombatTextPanelPeriodicDamage", "InterfaceOptionsCombatTextPanelPeriodicEnergyGains", "InterfaceOptionsCombatTextPanelPetDamage", "InterfaceOptionsCombatTextPanelReactiveAbilities", "InterfaceOptionsCombatTextPanelRepChanges", "InterfaceOptionsCombatTextPanelTargetDamage", "InterfaceOptionsCombatTextPanelTargetEffects", "InterfaceOptionsControlsPanel", "InterfaceOptionsControlsPanelAutoClearAFK", "InterfaceOptionsControlsPanelAutoDismount", "InterfaceOptionsControlsPanelAutoLootCorpse", "InterfaceOptionsControlsPanelAutoLootKeyDropDown", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButton", "InterfaceOptionsControlsPanelBlockTrades", "InterfaceOptionsControlsPanelLootAtMouse", "InterfaceOptionsControlsPanelStickyTargeting", "InterfaceOptionsDisplayPanel", "InterfaceOptionsDisplayPanelAggroWarningDisplay", "InterfaceOptionsDisplayPanelAggroWarningDisplayButton", "InterfaceOptionsDisplayPanelCinematicSubtitles", "InterfaceOptionsDisplayPanelColorblindMode", "InterfaceOptionsDisplayPanelDetailedLootInfo", "InterfaceOptionsDisplayPanelPlayAggroSounds", "InterfaceOptionsDisplayPanelRotateMinimap", "InterfaceOptionsDisplayPanelScreenEdgeFlash", "InterfaceOptionsDisplayPanelShowAggroPercentage", "InterfaceOptionsDisplayPanelShowCloak", "InterfaceOptionsDisplayPanelShowClock", "InterfaceOptionsDisplayPanelShowFreeBagSpace", "InterfaceOptionsDisplayPanelShowHelm", "InterfaceOptionsDisplayPanelShowItemLevel", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButton", "InterfaceOptionsFeaturesPanel", "InterfaceOptionsFeaturesPanelEquipmentManager", "InterfaceOptionsFeaturesPanelPreviewTalentChanges", "InterfaceOptionsFrame", "InterfaceOptionsFrameAddOns", "InterfaceOptionsFrameAddOnsButton1", "InterfaceOptionsFrameAddOnsButton10", "InterfaceOptionsFrameAddOnsButton10Toggle", "InterfaceOptionsFrameAddOnsButton11", "InterfaceOptionsFrameAddOnsButton11Toggle", "InterfaceOptionsFrameAddOnsButton12", "InterfaceOptionsFrameAddOnsButton12Toggle", "InterfaceOptionsFrameAddOnsButton13", "InterfaceOptionsFrameAddOnsButton13Toggle", "InterfaceOptionsFrameAddOnsButton14", "InterfaceOptionsFrameAddOnsButton14Toggle", "InterfaceOptionsFrameAddOnsButton15", "InterfaceOptionsFrameAddOnsButton15Toggle", "InterfaceOptionsFrameAddOnsButton16", "InterfaceOptionsFrameAddOnsButton16Toggle", "InterfaceOptionsFrameAddOnsButton17", "InterfaceOptionsFrameAddOnsButton17Toggle", "InterfaceOptionsFrameAddOnsButton18", "InterfaceOptionsFrameAddOnsButton18Toggle", "InterfaceOptionsFrameAddOnsButton19", "InterfaceOptionsFrameAddOnsButton19Toggle", "InterfaceOptionsFrameAddOnsButton1Toggle", "InterfaceOptionsFrameAddOnsButton2", "InterfaceOptionsFrameAddOnsButton20", "InterfaceOptionsFrameAddOnsButton20Toggle", "InterfaceOptionsFrameAddOnsButton21", "InterfaceOptionsFrameAddOnsButton21Toggle", "InterfaceOptionsFrameAddOnsButton22", "InterfaceOptionsFrameAddOnsButton22Toggle", "InterfaceOptionsFrameAddOnsButton23", "InterfaceOptionsFrameAddOnsButton23Toggle", "InterfaceOptionsFrameAddOnsButton2Toggle", "InterfaceOptionsFrameAddOnsButton3", "InterfaceOptionsFrameAddOnsButton3Toggle", "InterfaceOptionsFrameAddOnsButton4", "InterfaceOptionsFrameAddOnsButton4Toggle", "InterfaceOptionsFrameAddOnsButton5", "InterfaceOptionsFrameAddOnsButton5Toggle", "InterfaceOptionsFrameAddOnsButton6", "InterfaceOptionsFrameAddOnsButton6Toggle", "InterfaceOptionsFrameAddOnsButton7", "InterfaceOptionsFrameAddOnsButton7Toggle", "InterfaceOptionsFrameAddOnsButton8", "InterfaceOptionsFrameAddOnsButton8Toggle", "InterfaceOptionsFrameAddOnsButton9", "InterfaceOptionsFrameAddOnsButton9Toggle", "InterfaceOptionsFrameAddOnsList", "InterfaceOptionsFrameAddOnsListScrollBar", "InterfaceOptionsFrameAddOnsListScrollBarScrollDownButton", "InterfaceOptionsFrameAddOnsListScrollBarScrollUpButton", "InterfaceOptionsFrameAddOnsListScrollChildFrame", "InterfaceOptionsFrameCancel", "InterfaceOptionsFrameCategories", "InterfaceOptionsFrameCategoriesButton1", "InterfaceOptionsFrameCategoriesButton10", "InterfaceOptionsFrameCategoriesButton10Toggle", "InterfaceOptionsFrameCategoriesButton11", "InterfaceOptionsFrameCategoriesButton11Toggle", "InterfaceOptionsFrameCategoriesButton12", "InterfaceOptionsFrameCategoriesButton12Toggle", "InterfaceOptionsFrameCategoriesButton13", "InterfaceOptionsFrameCategoriesButton13Toggle", "InterfaceOptionsFrameCategoriesButton14", "InterfaceOptionsFrameCategoriesButton14Toggle", "InterfaceOptionsFrameCategoriesButton15", "InterfaceOptionsFrameCategoriesButton15Toggle", "InterfaceOptionsFrameCategoriesButton16", "InterfaceOptionsFrameCategoriesButton16Toggle", "InterfaceOptionsFrameCategoriesButton17", "InterfaceOptionsFrameCategoriesButton17Toggle", "InterfaceOptionsFrameCategoriesButton18", "InterfaceOptionsFrameCategoriesButton18Toggle", "InterfaceOptionsFrameCategoriesButton19", "InterfaceOptionsFrameCategoriesButton19Toggle", "InterfaceOptionsFrameCategoriesButton1Toggle", "InterfaceOptionsFrameCategoriesButton2", "InterfaceOptionsFrameCategoriesButton20", "InterfaceOptionsFrameCategoriesButton20Toggle", "InterfaceOptionsFrameCategoriesButton21", "InterfaceOptionsFrameCategoriesButton21Toggle", "InterfaceOptionsFrameCategoriesButton22", "InterfaceOptionsFrameCategoriesButton22Toggle", "InterfaceOptionsFrameCategoriesButton23", "InterfaceOptionsFrameCategoriesButton23Toggle", "InterfaceOptionsFrameCategoriesButton2Toggle", "InterfaceOptionsFrameCategoriesButton3", "InterfaceOptionsFrameCategoriesButton3Toggle", "InterfaceOptionsFrameCategoriesButton4", "InterfaceOptionsFrameCategoriesButton4Toggle", "InterfaceOptionsFrameCategoriesButton5", "InterfaceOptionsFrameCategoriesButton5Toggle", "InterfaceOptionsFrameCategoriesButton6", "InterfaceOptionsFrameCategoriesButton6Toggle", "InterfaceOptionsFrameCategoriesButton7", "InterfaceOptionsFrameCategoriesButton7Toggle", "InterfaceOptionsFrameCategoriesButton8", "InterfaceOptionsFrameCategoriesButton8Toggle", "InterfaceOptionsFrameCategoriesButton9", "InterfaceOptionsFrameCategoriesButton9Toggle", "InterfaceOptionsFrameCategoriesList", "InterfaceOptionsFrameCategoriesListScrollBar", "InterfaceOptionsFrameCategoriesListScrollBarScrollDownButton", "InterfaceOptionsFrameCategoriesListScrollBarScrollUpButton", "InterfaceOptionsFrameCategoriesListScrollChildFrame", "InterfaceOptionsFrameDefaults", "InterfaceOptionsFrameOkay", "InterfaceOptionsFramePanelContainer", "InterfaceOptionsFrameTab1", "InterfaceOptionsFrameTab2", "InterfaceOptionsHelpPanel", "InterfaceOptionsHelpPanelBeginnerTooltips", "InterfaceOptionsHelpPanelEnhancedTooltips", "InterfaceOptionsHelpPanelLoadingScreenTips", "InterfaceOptionsHelpPanelResetTutorials", "InterfaceOptionsHelpPanelShowLuaErrors", "InterfaceOptionsHelpPanelShowTutorials", "InterfaceOptionsLanguagesPanel", "InterfaceOptionsLanguagesPanelLocaleDropDown", "InterfaceOptionsLanguagesPanelLocaleDropDownButton", "InterfaceOptionsLanguagesPanelUseEnglishAudio", "InterfaceOptionsMousePanel", "InterfaceOptionsMousePanelClickMoveStyleDropDown", "InterfaceOptionsMousePanelClickMoveStyleDropDownButton", "InterfaceOptionsMousePanelClickToMove", "InterfaceOptionsMousePanelInvertMouse", "InterfaceOptionsMousePanelMouseLookSpeedSlider", "InterfaceOptionsMousePanelMouseSensitivitySlider", "InterfaceOptionsMousePanelWoWMouse", "InterfaceOptionsNamesPanel", "InterfaceOptionsNamesPanelEnemy", "InterfaceOptionsNamesPanelEnemyGuardians", "InterfaceOptionsNamesPanelEnemyPets", "InterfaceOptionsNamesPanelEnemyPlayerNames", "InterfaceOptionsNamesPanelEnemyTotems", "InterfaceOptionsNamesPanelFriendly", "InterfaceOptionsNamesPanelFriendlyGuardians", "InterfaceOptionsNamesPanelFriendlyPets", "InterfaceOptionsNamesPanelFriendlyPlayerNames", "InterfaceOptionsNamesPanelFriendlyTotems", "InterfaceOptionsNamesPanelGuilds", "InterfaceOptionsNamesPanelMyName", "InterfaceOptionsNamesPanelNPCNames", "InterfaceOptionsNamesPanelNonCombatCreature", "InterfaceOptionsNamesPanelTitles", "InterfaceOptionsNamesPanelUnitNameplates", "InterfaceOptionsNamesPanelUnitNameplatesAllowOverlap", "InterfaceOptionsNamesPanelUnitNameplatesEnemies", "InterfaceOptionsNamesPanelUnitNameplatesEnemyGuardians", "InterfaceOptionsNamesPanelUnitNameplatesEnemyPets", "InterfaceOptionsNamesPanelUnitNameplatesEnemyTotems", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyGuardians", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyPets", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyTotems", "InterfaceOptionsNamesPanelUnitNameplatesFriends", "InterfaceOptionsObjectivesPanel", "InterfaceOptionsObjectivesPanelAdvancedWorldMap", "InterfaceOptionsObjectivesPanelAutoQuestProgress", "InterfaceOptionsObjectivesPanelAutoQuestTracking", "InterfaceOptionsObjectivesPanelInstantQuestText", "InterfaceOptionsObjectivesPanelMapQuestDifficulty", "InterfaceOptionsObjectivesPanelWatchFrameWidth", "InterfaceOptionsSocialPanel", "InterfaceOptionsSocialPanelChatBubbles", "InterfaceOptionsSocialPanelChatHoverDelay", "InterfaceOptionsSocialPanelChatMouseScroll", "InterfaceOptionsSocialPanelChatStyle", "InterfaceOptionsSocialPanelChatStyleButton", "InterfaceOptionsSocialPanelConversationMode", "InterfaceOptionsSocialPanelConversationModeButton", "InterfaceOptionsSocialPanelGuildMemberAlert", "InterfaceOptionsSocialPanelGuildRecruitment", "InterfaceOptionsSocialPanelPartyChat", "InterfaceOptionsSocialPanelProfanityFilter", "InterfaceOptionsSocialPanelSpamFilter", "InterfaceOptionsSocialPanelTimestampsButton", "InterfaceOptionsSocialPanelWholeChatWindowClickable", "InterfaceOptionsStatusTextPanel", "InterfaceOptionsStatusTextPanelParty", "InterfaceOptionsStatusTextPanelPercentages", "InterfaceOptionsStatusTextPanelPet", "InterfaceOptionsStatusTextPanelPlayer", "InterfaceOptionsStatusTextPanelTarget", "InterfaceOptionsStatusTextPanelXP", "InterfaceOptionsUnitFramePanel", "InterfaceOptionsUnitFramePanelArenaEnemyCastBar", "InterfaceOptionsUnitFramePanelArenaEnemyFrames", "InterfaceOptionsUnitFramePanelArenaEnemyPets", "InterfaceOptionsUnitFramePanelFullSizeFocusFrame", "InterfaceOptionsUnitFramePanelPartyBackground", "InterfaceOptionsUnitFramePanelPartyInRaid", "InterfaceOptionsUnitFramePanelPartyPets", "InterfaceOptionsUnitFramePanelRaidRange", "ItemRefCloseButton", "ItemRefShoppingTooltip1", "ItemRefShoppingTooltip2", "ItemRefShoppingTooltip3", "ItemRefTooltip", "ItemRefTooltipStatusBar", "ItemTextCloseButton", "ItemTextFrame", "ItemTextNextPageButton", "ItemTextPageScrollChild", "ItemTextPageText", "ItemTextPrevPageButton", "ItemTextScrollFrame", "ItemTextScrollFrameScrollBar", "ItemTextScrollFrameScrollBarScrollDownButton", "ItemTextScrollFrameScrollBarScrollUpButton", "ItemTextStatusBar", "KeyRingButton", "KeyRingButtonItemAnim", "KnowledgeBaseArticleListFrame", "KnowledgeBaseArticleListFrameNextButton", "KnowledgeBaseArticleListFramePreviousButton", "KnowledgeBaseArticleListItem1", "KnowledgeBaseArticleListItem10", "KnowledgeBaseArticleListItem11", "KnowledgeBaseArticleListItem12", "KnowledgeBaseArticleListItem13", "KnowledgeBaseArticleListItem14", "KnowledgeBaseArticleListItem15", "KnowledgeBaseArticleListItem16", "KnowledgeBaseArticleListItem17", "KnowledgeBaseArticleListItem18", "KnowledgeBaseArticleListItem19", "KnowledgeBaseArticleListItem2", "KnowledgeBaseArticleListItem20", "KnowledgeBaseArticleListItem3", "KnowledgeBaseArticleListItem4", "KnowledgeBaseArticleListItem5", "KnowledgeBaseArticleListItem6", "KnowledgeBaseArticleListItem7", "KnowledgeBaseArticleListItem8", "KnowledgeBaseArticleListItem9", "KnowledgeBaseArticleScrollChildFrame", "KnowledgeBaseArticleScrollChildFrameBackButton", "KnowledgeBaseArticleScrollFrame", "KnowledgeBaseArticleScrollFrameScrollBar", "KnowledgeBaseArticleScrollFrameScrollBarScrollDownButton", "KnowledgeBaseArticleScrollFrameScrollBarScrollUpButton", "KnowledgeBaseErrorFrame", "KnowledgeBaseFrame", "KnowledgeBaseFrameAbandonTicket", "KnowledgeBaseFrameCancel", "KnowledgeBaseFrameCategoryDropDown", "KnowledgeBaseFrameCategoryDropDownButton", "KnowledgeBaseFrameDivider", "KnowledgeBaseFrameDivider2", "KnowledgeBaseFrameEditBox", "KnowledgeBaseFrameEditTicket", "KnowledgeBaseFrameGMTalk", "KnowledgeBaseFrameLag", "KnowledgeBaseFrameReportIssue", "KnowledgeBaseFrameSearchButton", "KnowledgeBaseFrameStuck", "KnowledgeBaseFrameSubCategoryDropDown", "KnowledgeBaseFrameSubCategoryDropDownButton", "KnowledgeBaseFrameTopIssuesButton", "KnowledgeBaseMotdTextFrame", "KnowledgeBaseServerMessageTextFrame", "LFDDungeonReadyDialog", "LFDDungeonReadyDialogCloseButton", "LFDDungeonReadyDialogEnterDungeonButton", "LFDDungeonReadyDialogInstanceInfoFrame", "LFDDungeonReadyDialogLeaveQueueButton", "LFDDungeonReadyDialogRandomInProgressFrame", "LFDDungeonReadyDialogRewardsFrame", "LFDDungeonReadyDialogRewardsFrameReward1", "LFDDungeonReadyDialogRewardsFrameReward2", "LFDDungeonReadyDialogRoleIcon", "LFDDungeonReadyPopup", "LFDDungeonReadyStatus", "LFDDungeonReadyStatusCloseButton", "LFDDungeonReadyStatusPlayer1", "LFDDungeonReadyStatusPlayer2", "LFDDungeonReadyStatusPlayer3", "LFDDungeonReadyStatusPlayer4", "LFDDungeonReadyStatusPlayer5", "LFDHiddenByCollapseList", "LFDMicroButton", "LFDParentFrame", "LFDParentFramePortrait", "LFDQueueFrame", "LFDQueueFrameCancelButton", "LFDQueueFrameCooldownFrame", "LFDQueueFrameFindGroupButton", "LFDQueueFrameNoLFDWhileLFR", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButton", "LFDQueueFramePartyBackfill", "LFDQueueFramePartyBackfillBackfillButton", "LFDQueueFramePartyBackfillNoBackfillButton", "LFDQueueFrameRandom", "LFDQueueFrameRandomScrollFrame", "LFDQueueFrameRandomScrollFrameChildFrame", "LFDQueueFrameRandomScrollFrameChildFrameItem1", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrame", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameCopperButton", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameGoldButton", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameSilverButton", "LFDQueueFrameRandomScrollFrameChildFrameSpacer", "LFDQueueFrameRandomScrollFrameScrollBar", "LFDQueueFrameRandomScrollFrameScrollBarScrollDownButton", "LFDQueueFrameRandomScrollFrameScrollBarScrollUpButton", "LFDQueueFrameRoleButtonDPS", "LFDQueueFrameRoleButtonHealer", "LFDQueueFrameRoleButtonLeader", "LFDQueueFrameRoleButtonTank", "LFDQueueFrameSpecific", "LFDQueueFrameSpecificListButton1", "LFDQueueFrameSpecificListButton10", "LFDQueueFrameSpecificListButton10EnableButton", "LFDQueueFrameSpecificListButton10ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton11", "LFDQueueFrameSpecificListButton11EnableButton", "LFDQueueFrameSpecificListButton11ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton12", "LFDQueueFrameSpecificListButton12EnableButton", "LFDQueueFrameSpecificListButton12ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton13", "LFDQueueFrameSpecificListButton13EnableButton", "LFDQueueFrameSpecificListButton13ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton14", "LFDQueueFrameSpecificListButton14EnableButton", "LFDQueueFrameSpecificListButton14ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton15", "LFDQueueFrameSpecificListButton15EnableButton", "LFDQueueFrameSpecificListButton15ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton1EnableButton", "LFDQueueFrameSpecificListButton1ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton2", "LFDQueueFrameSpecificListButton2EnableButton", "LFDQueueFrameSpecificListButton2ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton3", "LFDQueueFrameSpecificListButton3EnableButton", "LFDQueueFrameSpecificListButton3ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton4", "LFDQueueFrameSpecificListButton4EnableButton", "LFDQueueFrameSpecificListButton4ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton5", "LFDQueueFrameSpecificListButton5EnableButton", "LFDQueueFrameSpecificListButton5ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton6", "LFDQueueFrameSpecificListButton6EnableButton", "LFDQueueFrameSpecificListButton6ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton7", "LFDQueueFrameSpecificListButton7EnableButton", "LFDQueueFrameSpecificListButton7ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton8", "LFDQueueFrameSpecificListButton8EnableButton", "LFDQueueFrameSpecificListButton8ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton9", "LFDQueueFrameSpecificListButton9EnableButton", "LFDQueueFrameSpecificListButton9ExpandOrCollapseButton", "LFDQueueFrameSpecificListScrollFrame", "LFDQueueFrameSpecificListScrollFrameScrollBar", "LFDQueueFrameSpecificListScrollFrameScrollBarScrollDownButton", "LFDQueueFrameSpecificListScrollFrameScrollBarScrollUpButton", "LFDQueueFrameSpecificListScrollFrameScrollChildFrame", "LFDQueueFrameTypeDropDown", "LFDQueueFrameTypeDropDownButton", "LFDRoleCheckPopup", "LFDRoleCheckPopupAcceptButton", "LFDRoleCheckPopupDeclineButton", "LFDRoleCheckPopupDescription", "LFDRoleCheckPopupRoleButtonDPS", "LFDRoleCheckPopupRoleButtonHealer", "LFDRoleCheckPopupRoleButtonTank", "LFDSearchStatus", "LFDSearchStatusDamage1", "LFDSearchStatusDamage2", "LFDSearchStatusDamage3", "LFDSearchStatusHealer1", "LFDSearchStatusTank1", "LFGEventFrame", "LFGLockList", "LFGQueuedForList", "LFG_INSTANCE_INVALID_CODES", "LFG_RETURN_VALUES", "LFRBrowseFrame", "LFRBrowseFrameColumnHeader1", "LFRBrowseFrameColumnHeader2", "LFRBrowseFrameColumnHeader3", "LFRBrowseFrameColumnHeader4", "LFRBrowseFrameColumnHeader5", "LFRBrowseFrameColumnHeader6", "LFRBrowseFrameColumnHeader7", "LFRBrowseFrameInviteButton", "LFRBrowseFrameListButton1", "LFRBrowseFrameListButton10", "LFRBrowseFrameListButton11", "LFRBrowseFrameListButton12", "LFRBrowseFrameListButton13", "LFRBrowseFrameListButton14", "LFRBrowseFrameListButton15", "LFRBrowseFrameListButton16", "LFRBrowseFrameListButton17", "LFRBrowseFrameListButton18", "LFRBrowseFrameListButton19", "LFRBrowseFrameListButton2", "LFRBrowseFrameListButton3", "LFRBrowseFrameListButton4", "LFRBrowseFrameListButton5", "LFRBrowseFrameListButton6", "LFRBrowseFrameListButton7", "LFRBrowseFrameListButton8", "LFRBrowseFrameListButton9", "LFRBrowseFrameListScrollFrame", "LFRBrowseFrameListScrollFrameScrollBar", "LFRBrowseFrameListScrollFrameScrollBarScrollDownButton", "LFRBrowseFrameListScrollFrameScrollBarScrollUpButton", "LFRBrowseFrameListScrollFrameScrollChildFrame", "LFRBrowseFrameRaidDropDown", "LFRBrowseFrameRaidDropDownButton", "LFRBrowseFrameRefreshButton", "LFRBrowseFrameSendMessageButton", "LFRHiddenByCollapseList", "LFRParentFrame", "LFRParentFrameTab1", "LFRParentFrameTab2", "LFRQueueFrame", "LFRQueueFrameAcceptCommentButton", "LFRQueueFrameComment", "LFRQueueFrameCommentTextButton", "LFRQueueFrameFindGroupButton", "LFRQueueFrameNoLFRWhileLFD", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButton", "LFRQueueFrameRoleButtonDPS", "LFRQueueFrameRoleButtonHealer", "LFRQueueFrameRoleButtonTank", "LFRQueueFrameSpecific", "LFRQueueFrameSpecificListButton1", "LFRQueueFrameSpecificListButton10", "LFRQueueFrameSpecificListButton10EnableButton", "LFRQueueFrameSpecificListButton10ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton11", "LFRQueueFrameSpecificListButton11EnableButton", "LFRQueueFrameSpecificListButton11ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton12", "LFRQueueFrameSpecificListButton12EnableButton", "LFRQueueFrameSpecificListButton12ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton13", "LFRQueueFrameSpecificListButton13EnableButton", "LFRQueueFrameSpecificListButton13ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton14", "LFRQueueFrameSpecificListButton14EnableButton", "LFRQueueFrameSpecificListButton14ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton1EnableButton", "LFRQueueFrameSpecificListButton1ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton2", "LFRQueueFrameSpecificListButton2EnableButton", "LFRQueueFrameSpecificListButton2ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton3", "LFRQueueFrameSpecificListButton3EnableButton", "LFRQueueFrameSpecificListButton3ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton4", "LFRQueueFrameSpecificListButton4EnableButton", "LFRQueueFrameSpecificListButton4ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton5", "LFRQueueFrameSpecificListButton5EnableButton", "LFRQueueFrameSpecificListButton5ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton6", "LFRQueueFrameSpecificListButton6EnableButton", "LFRQueueFrameSpecificListButton6ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton7", "LFRQueueFrameSpecificListButton7EnableButton", "LFRQueueFrameSpecificListButton7ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton8", "LFRQueueFrameSpecificListButton8EnableButton", "LFRQueueFrameSpecificListButton8ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton9", "LFRQueueFrameSpecificListButton9EnableButton", "LFRQueueFrameSpecificListButton9ExpandOrCollapseButton", "LFRQueueFrameSpecificListScrollFrame", "LFRQueueFrameSpecificListScrollFrameScrollBar", "LFRQueueFrameSpecificListScrollFrameScrollBarScrollDownButton", "LFRQueueFrameSpecificListScrollFrameScrollBarScrollUpButton", "LFRQueueFrameSpecificListScrollFrameScrollChildFrame", "LIGHTYELLOW_FONT_COLOR", "LOCALIZED_CLASS_NAMES_FEMALE", "LOCALIZED_CLASS_NAMES_MALE", "LOCAL_MAP_QUESTS", "LanguageMenu", "LanguageMenuButton1", "LanguageMenuButton10", "LanguageMenuButton11", "LanguageMenuButton12", "LanguageMenuButton13", "LanguageMenuButton14", "LanguageMenuButton15", "LanguageMenuButton16", "LanguageMenuButton17", "LanguageMenuButton18", "LanguageMenuButton19", "LanguageMenuButton2", "LanguageMenuButton20", "LanguageMenuButton21", "LanguageMenuButton22", "LanguageMenuButton23", "LanguageMenuButton24", "LanguageMenuButton25", "LanguageMenuButton26", "LanguageMenuButton27", "LanguageMenuButton28", "LanguageMenuButton29", "LanguageMenuButton3", "LanguageMenuButton30", "LanguageMenuButton31", "LanguageMenuButton32", "LanguageMenuButton4", "LanguageMenuButton5", "LanguageMenuButton6", "LanguageMenuButton7", "LanguageMenuButton8", "LanguageMenuButton9", "LanguagesPanelOptions", "LoopbackVUMeter", "LootButton1", "LootButton2", "LootButton3", "LootButton4", "LootCloseButton", "LootFrame", "LootFrameDownButton", "LootFrameUpButton", "LowHealthFrame", "MAP_VEHICLES", "MATERIAL_TEXT_COLOR_TABLE", "MATERIAL_TITLETEXT_COLOR_TABLE", "MAX_PLAYER_LEVEL_TABLE", "MacOptionsButtonCompress", "MacOptionsButtonKeybindings", "MacOptionsCancelFrame", "MacOptionsCancelFrameNo", "MacOptionsCancelFrameYes", "MacOptionsCompressFrame", "MacOptionsCompressFrameCompress", "MacOptionsCompressFrameDelete", "MacOptionsCompressFrameSkip", "MacOptionsFrame", "MacOptionsFrameCancel", "MacOptionsFrameCheckButton1", "MacOptionsFrameCheckButton2", "MacOptionsFrameCheckButton3", "MacOptionsFrameCheckButton4", "MacOptionsFrameCheckButton5", "MacOptionsFrameCheckButton6", "MacOptionsFrameCheckButton7", "MacOptionsFrameCheckButton8", "MacOptionsFrameCheckButtons", "MacOptionsFrameCodecDropDown", "MacOptionsFrameCodecDropDownButton", "MacOptionsFrameDefaults", "MacOptionsFrameFramerateDropDown", "MacOptionsFrameFramerateDropDownButton", "MacOptionsFrameMovieRecording", "MacOptionsFrameOkay", "MacOptionsFrameQualitySlider", "MacOptionsFrameResolutionDropDown", "MacOptionsFrameResolutionDropDownButton", "MacOptionsITunesRemote", "MacroEditBox", "MagicResFrame1", "MagicResFrame2", "MagicResFrame3", "MagicResFrame4", "MagicResFrame5", "MailFrame", "MailFrameTab1", "MailFrameTab2", "MailItem1", "MailItem1Button", "MailItem1ExpireTime", "MailItem2", "MailItem2Button", "MailItem2ExpireTime", "MailItem3", "MailItem3Button", "MailItem3ExpireTime", "MailItem4", "MailItem4Button", "MailItem4ExpireTime", "MailItem5", "MailItem5Button", "MailItem5ExpireTime", "MailItem6", "MailItem6Button", "MailItem6ExpireTime", "MailItem7", "MailItem7Button", "MailItem7ExpireTime", "MainMenuBar", "MainMenuBarArtFrame", "MainMenuBarBackpackButton", "MainMenuBarBackpackButtonItemAnim", "MainMenuBarMaxLevelBar", "MainMenuBarOverlayFrame", "MainMenuBarVehicleLeaveButton", "MainMenuExpBar", "MainMenuMicroButton", "MerchantBuyBackItem", "MerchantBuyBackItemItemButton", "MerchantBuyBackItemMoneyFrame", "MerchantBuyBackItemMoneyFrameCopperButton", "MerchantBuyBackItemMoneyFrameGoldButton", "MerchantBuyBackItemMoneyFrameSilverButton", "MerchantFrame", "MerchantFrameCloseButton", "MerchantFrameTab1", "MerchantFrameTab2", "MerchantGuildBankRepairButton", "MerchantItem1", "MerchantItem10", "MerchantItem10AltCurrencyFrame", "MerchantItem10AltCurrencyFrameArena", "MerchantItem10AltCurrencyFrameHonor", "MerchantItem10AltCurrencyFrameItem1", "MerchantItem10AltCurrencyFrameItem2", "MerchantItem10AltCurrencyFrameItem3", "MerchantItem10ItemButton", "MerchantItem10MoneyFrame", "MerchantItem10MoneyFrameCopperButton", "MerchantItem10MoneyFrameGoldButton", "MerchantItem10MoneyFrameSilverButton", "MerchantItem11", "MerchantItem11AltCurrencyFrame", "MerchantItem11AltCurrencyFrameArena", "MerchantItem11AltCurrencyFrameHonor", "MerchantItem11AltCurrencyFrameItem1", "MerchantItem11AltCurrencyFrameItem2", "MerchantItem11AltCurrencyFrameItem3", "MerchantItem11ItemButton", "MerchantItem11MoneyFrame", "MerchantItem11MoneyFrameCopperButton", "MerchantItem11MoneyFrameGoldButton", "MerchantItem11MoneyFrameSilverButton", "MerchantItem12", "MerchantItem12AltCurrencyFrame", "MerchantItem12AltCurrencyFrameArena", "MerchantItem12AltCurrencyFrameHonor", "MerchantItem12AltCurrencyFrameItem1", "MerchantItem12AltCurrencyFrameItem2", "MerchantItem12AltCurrencyFrameItem3", "MerchantItem12ItemButton", "MerchantItem12MoneyFrame", "MerchantItem12MoneyFrameCopperButton", "MerchantItem12MoneyFrameGoldButton", "MerchantItem12MoneyFrameSilverButton", "MerchantItem1AltCurrencyFrame", "MerchantItem1AltCurrencyFrameArena", "MerchantItem1AltCurrencyFrameHonor", "MerchantItem1AltCurrencyFrameItem1", "MerchantItem1AltCurrencyFrameItem2", "MerchantItem1AltCurrencyFrameItem3", "MerchantItem1ItemButton", "MerchantItem1MoneyFrame", "MerchantItem1MoneyFrameCopperButton", "MerchantItem1MoneyFrameGoldButton", "MerchantItem1MoneyFrameSilverButton", "MerchantItem2", "MerchantItem2AltCurrencyFrame", "MerchantItem2AltCurrencyFrameArena", "MerchantItem2AltCurrencyFrameHonor", "MerchantItem2AltCurrencyFrameItem1", "MerchantItem2AltCurrencyFrameItem2", "MerchantItem2AltCurrencyFrameItem3", "MerchantItem2ItemButton", "MerchantItem2MoneyFrame", "MerchantItem2MoneyFrameCopperButton", "MerchantItem2MoneyFrameGoldButton", "MerchantItem2MoneyFrameSilverButton", "MerchantItem3", "MerchantItem3AltCurrencyFrame", "MerchantItem3AltCurrencyFrameArena", "MerchantItem3AltCurrencyFrameHonor", "MerchantItem3AltCurrencyFrameItem1", "MerchantItem3AltCurrencyFrameItem2", "MerchantItem3AltCurrencyFrameItem3", "MerchantItem3ItemButton", "MerchantItem3MoneyFrame", "MerchantItem3MoneyFrameCopperButton", "MerchantItem3MoneyFrameGoldButton", "MerchantItem3MoneyFrameSilverButton", "MerchantItem4", "MerchantItem4AltCurrencyFrame", "MerchantItem4AltCurrencyFrameArena", "MerchantItem4AltCurrencyFrameHonor", "MerchantItem4AltCurrencyFrameItem1", "MerchantItem4AltCurrencyFrameItem2", "MerchantItem4AltCurrencyFrameItem3", "MerchantItem4ItemButton", "MerchantItem4MoneyFrame", "MerchantItem4MoneyFrameCopperButton", "MerchantItem4MoneyFrameGoldButton", "MerchantItem4MoneyFrameSilverButton", "MerchantItem5", "MerchantItem5AltCurrencyFrame", "MerchantItem5AltCurrencyFrameArena", "MerchantItem5AltCurrencyFrameHonor", "MerchantItem5AltCurrencyFrameItem1", "MerchantItem5AltCurrencyFrameItem2", "MerchantItem5AltCurrencyFrameItem3", "MerchantItem5ItemButton", "MerchantItem5MoneyFrame", "MerchantItem5MoneyFrameCopperButton", "MerchantItem5MoneyFrameGoldButton", "MerchantItem5MoneyFrameSilverButton", "MerchantItem6", "MerchantItem6AltCurrencyFrame", "MerchantItem6AltCurrencyFrameArena", "MerchantItem6AltCurrencyFrameHonor", "MerchantItem6AltCurrencyFrameItem1", "MerchantItem6AltCurrencyFrameItem2", "MerchantItem6AltCurrencyFrameItem3", "MerchantItem6ItemButton", "MerchantItem6MoneyFrame", "MerchantItem6MoneyFrameCopperButton", "MerchantItem6MoneyFrameGoldButton", "MerchantItem6MoneyFrameSilverButton", "MerchantItem7", "MerchantItem7AltCurrencyFrame", "MerchantItem7AltCurrencyFrameArena", "MerchantItem7AltCurrencyFrameHonor", "MerchantItem7AltCurrencyFrameItem1", "MerchantItem7AltCurrencyFrameItem2", "MerchantItem7AltCurrencyFrameItem3", "MerchantItem7ItemButton", "MerchantItem7MoneyFrame", "MerchantItem7MoneyFrameCopperButton", "MerchantItem7MoneyFrameGoldButton", "MerchantItem7MoneyFrameSilverButton", "MerchantItem8", "MerchantItem8AltCurrencyFrame", "MerchantItem8AltCurrencyFrameArena", "MerchantItem8AltCurrencyFrameHonor", "MerchantItem8AltCurrencyFrameItem1", "MerchantItem8AltCurrencyFrameItem2", "MerchantItem8AltCurrencyFrameItem3", "MerchantItem8ItemButton", "MerchantItem8MoneyFrame", "MerchantItem8MoneyFrameCopperButton", "MerchantItem8MoneyFrameGoldButton", "MerchantItem8MoneyFrameSilverButton", "MerchantItem9", "MerchantItem9AltCurrencyFrame", "MerchantItem9AltCurrencyFrameArena", "MerchantItem9AltCurrencyFrameHonor", "MerchantItem9AltCurrencyFrameItem1", "MerchantItem9AltCurrencyFrameItem2", "MerchantItem9AltCurrencyFrameItem3", "MerchantItem9ItemButton", "MerchantItem9MoneyFrame", "MerchantItem9MoneyFrameCopperButton", "MerchantItem9MoneyFrameGoldButton", "MerchantItem9MoneyFrameSilverButton", "MerchantMoneyFrame", "MerchantMoneyFrameCopperButton", "MerchantMoneyFrameGoldButton", "MerchantMoneyFrameSilverButton", "MerchantNextPageButton", "MerchantPrevPageButton", "MerchantRepairAllButton", "MerchantRepairItemButton", "MiniMapBattlefieldDropDown", "MiniMapBattlefieldDropDownButton", "MiniMapBattlefieldFrame", "MiniMapInstanceDifficulty", "MiniMapLFGFrame", "MiniMapLFGFrameDropDown", "MiniMapLFGFrameDropDownButton", "MiniMapLFGFrameIcon", "MiniMapMailFrame", "MiniMapRecordingButton", "MiniMapTracking", "MiniMapTrackingButton", "MiniMapTrackingDropDown", "MiniMapTrackingDropDownButton", "MiniMapVoiceChatDropDown", "MiniMapVoiceChatDropDownButton", "MiniMapVoiceChatFrame", "MiniMapVoiceChatFrameIcon", "MiniMapWorldMapButton", "Minimap", "MinimapBackdrop", "MinimapCluster", "MinimapPing", "MinimapZoneTextButton", "MinimapZoomIn", "MinimapZoomOut", "MirrorTimer1", "MirrorTimer1StatusBar", "MirrorTimer2", "MirrorTimer2StatusBar", "MirrorTimer3", "MirrorTimer3StatusBar", "MirrorTimerColors", "MoneyTypeInfo", "MousePanelOptions", "MovieFrame", "MovieProgressBar", "MovieProgressFrame", "MovieRecordingCancelButton", "MovieRecordingFrameTextTooltip1", "MovieRecordingFrameTextTooltip2", "MultiBarBottomLeft", "MultiBarBottomLeftButton1", "MultiBarBottomLeftButton10", "MultiBarBottomLeftButton10Cooldown", "MultiBarBottomLeftButton11", "MultiBarBottomLeftButton11Cooldown", "MultiBarBottomLeftButton12", "MultiBarBottomLeftButton12Cooldown", "MultiBarBottomLeftButton1Cooldown", "MultiBarBottomLeftButton2", "MultiBarBottomLeftButton2Cooldown", "MultiBarBottomLeftButton3", "MultiBarBottomLeftButton3Cooldown", "MultiBarBottomLeftButton4", "MultiBarBottomLeftButton4Cooldown", "MultiBarBottomLeftButton5", "MultiBarBottomLeftButton5Cooldown", "MultiBarBottomLeftButton6", "MultiBarBottomLeftButton6Cooldown", "MultiBarBottomLeftButton7", "MultiBarBottomLeftButton7Cooldown", "MultiBarBottomLeftButton8", "MultiBarBottomLeftButton8Cooldown", "MultiBarBottomLeftButton9", "MultiBarBottomLeftButton9Cooldown", "MultiBarBottomRight", "MultiBarBottomRightButton1", "MultiBarBottomRightButton10", "MultiBarBottomRightButton10Cooldown", "MultiBarBottomRightButton11", "MultiBarBottomRightButton11Cooldown", "MultiBarBottomRightButton12", "MultiBarBottomRightButton12Cooldown", "MultiBarBottomRightButton1Cooldown", "MultiBarBottomRightButton2", "MultiBarBottomRightButton2Cooldown", "MultiBarBottomRightButton3", "MultiBarBottomRightButton3Cooldown", "MultiBarBottomRightButton4", "MultiBarBottomRightButton4Cooldown", "MultiBarBottomRightButton5", "MultiBarBottomRightButton5Cooldown", "MultiBarBottomRightButton6", "MultiBarBottomRightButton6Cooldown", "MultiBarBottomRightButton7", "MultiBarBottomRightButton7Cooldown", "MultiBarBottomRightButton8", "MultiBarBottomRightButton8Cooldown", "MultiBarBottomRightButton9", "MultiBarBottomRightButton9Cooldown", "MultiBarLeft", "MultiBarLeftButton1", "MultiBarLeftButton10", "MultiBarLeftButton10Cooldown", "MultiBarLeftButton11", "MultiBarLeftButton11Cooldown", "MultiBarLeftButton12", "MultiBarLeftButton12Cooldown", "MultiBarLeftButton1Cooldown", "MultiBarLeftButton2", "MultiBarLeftButton2Cooldown", "MultiBarLeftButton3", "MultiBarLeftButton3Cooldown", "MultiBarLeftButton4", "MultiBarLeftButton4Cooldown", "MultiBarLeftButton5", "MultiBarLeftButton5Cooldown", "MultiBarLeftButton6", "MultiBarLeftButton6Cooldown", "MultiBarLeftButton7", "MultiBarLeftButton7Cooldown", "MultiBarLeftButton8", "MultiBarLeftButton8Cooldown", "MultiBarLeftButton9", "MultiBarLeftButton9Cooldown", "MultiBarRight", "MultiBarRightButton1", "MultiBarRightButton10", "MultiBarRightButton10Cooldown", "MultiBarRightButton11", "MultiBarRightButton11Cooldown", "MultiBarRightButton12", "MultiBarRightButton12Cooldown", "MultiBarRightButton1Cooldown", "MultiBarRightButton2", "MultiBarRightButton2Cooldown", "MultiBarRightButton3", "MultiBarRightButton3Cooldown", "MultiBarRightButton4", "MultiBarRightButton4Cooldown", "MultiBarRightButton5", "MultiBarRightButton5Cooldown", "MultiBarRightButton6", "MultiBarRightButton6Cooldown", "MultiBarRightButton7", "MultiBarRightButton7Cooldown", "MultiBarRightButton8", "MultiBarRightButton8Cooldown", "MultiBarRightButton9", "MultiBarRightButton9Cooldown", "MultiCastActionBarFrame", "MultiCastActionButton1", "MultiCastActionButton10", "MultiCastActionButton10Cooldown", "MultiCastActionButton11", "MultiCastActionButton11Cooldown", "MultiCastActionButton12", "MultiCastActionButton12Cooldown", "MultiCastActionButton1Cooldown", "MultiCastActionButton2", "MultiCastActionButton2Cooldown", "MultiCastActionButton3", "MultiCastActionButton3Cooldown", "MultiCastActionButton4", "MultiCastActionButton4Cooldown", "MultiCastActionButton5", "MultiCastActionButton5Cooldown", "MultiCastActionButton6", "MultiCastActionButton6Cooldown", "MultiCastActionButton7", "MultiCastActionButton7Cooldown", "MultiCastActionButton8", "MultiCastActionButton8Cooldown", "MultiCastActionButton9", "MultiCastActionButton9Cooldown", "MultiCastActionPage1", "MultiCastActionPage2", "MultiCastActionPage3", "MultiCastFlyoutFrame", "MultiCastFlyoutFrameCloseButton", "MultiCastFlyoutFrameOpenButton", "MultiCastRecallSpellButton", "MultiCastRecallSpellButtonCooldown", "MultiCastSlotButton1", "MultiCastSlotButton2", "MultiCastSlotButton3", "MultiCastSlotButton4", "MultiCastSummonSpellButton", "MultiCastSummonSpellButtonCooldown", "MultiCastSummonSpellButtonFlyoutButton", "NORMAL_FONT_COLOR", "NamePanelOptions", "OPEN_DROPDOWNMENUS", "ORANGE_FONT_COLOR", "ObjectivesPanelOptions", "OpacityFrame", "OpacityFrameCloseButton", "OpacityFrameSlider", "OpacitySliderFrame", "OpenMailAttachmentButton1", "OpenMailAttachmentButton10", "OpenMailAttachmentButton11", "OpenMailAttachmentButton12", "OpenMailAttachmentButton13", "OpenMailAttachmentButton14", "OpenMailAttachmentButton15", "OpenMailAttachmentButton16", "OpenMailAttachmentButton2", "OpenMailAttachmentButton3", "OpenMailAttachmentButton4", "OpenMailAttachmentButton5", "OpenMailAttachmentButton6", "OpenMailAttachmentButton7", "OpenMailAttachmentButton8", "OpenMailAttachmentButton9", "OpenMailCancelButton", "OpenMailCloseButton", "OpenMailDeleteButton", "OpenMailDepositMoneyFrame", "OpenMailDepositMoneyFrameCopperButton", "OpenMailDepositMoneyFrameGoldButton", "OpenMailDepositMoneyFrameSilverButton", "OpenMailFrame", "OpenMailHouseCutMoneyFrame", "OpenMailHouseCutMoneyFrameCopperButton", "OpenMailHouseCutMoneyFrameGoldButton", "OpenMailHouseCutMoneyFrameSilverButton", "OpenMailInvoiceFrame", "OpenMailLetterButton", "OpenMailMoneyButton", "OpenMailReplyButton", "OpenMailReportSpamButton", "OpenMailSalePriceMoneyFrame", "OpenMailSalePriceMoneyFrameCopperButton", "OpenMailSalePriceMoneyFrameGoldButton", "OpenMailSalePriceMoneyFrameSilverButton", "OpenMailScrollChildFrame", "OpenMailScrollFrame", "OpenMailScrollFrameScrollBar", "OpenMailScrollFrameScrollBarScrollDownButton", "OpenMailScrollFrameScrollBarScrollUpButton", "OpenMailTransactionAmountMoneyFrame", "OpenMailTransactionAmountMoneyFrameCopperButton", "OpenMailTransactionAmountMoneyFrameGoldButton", "OpenMailTransactionAmountMoneyFrameSilverButton", "OtherMenuChatTypeGroups", "OutlandButton", "PASSIVE_SPELL_FONT_COLOR", "PDFITEMFLYOUT_MULTIROW_BOTTOM_COORDS", "PDFITEMFLYOUT_MULTIROW_MIDDLE_COORDS", "PDFITEMFLYOUT_MULTIROW_TOP_COORDS", "PDFITEMFLYOUT_ONEROW_CENTER_COORDS", "PDFITEMFLYOUT_ONEROW_LEFT_COORDS", "PDFITEMFLYOUT_ONEROW_RIGHT_COORDS", "PDFITEMFLYOUT_ONESLOT_LEFT_COORDS", "PDFITEMFLYOUT_ONESLOT_RIGHT_COORDS", "PENDING_GUILDBANK_PERMISSIONS", "PLAYERSTAT_DROPDOWN_OPTIONS", "PLAYER_FACTION_GROUP", "PREVIOUS_BATTLEFIELD_QUEUES", "PULSEBUTTONS", "PVPBannerFrame", "PVPBannerFrameAcceptButton", "PVPBannerFrameCancelButton", "PVPBannerFrameCloseButton", "PVPBannerFrameCustomization1", "PVPBannerFrameCustomization1LeftButton", "PVPBannerFrameCustomization1RightButton", "PVPBannerFrameCustomization2", "PVPBannerFrameCustomization2LeftButton", "PVPBannerFrameCustomization2RightButton", "PVPBannerFrameCustomizationFrame", "PVPBannerFrameSaveButton", "PVPBannerFrameStandard", "PVPBattlegroundFrame", "PVPBattlegroundFrameCancelButton", "PVPBattlegroundFrameGroupJoinButton", "PVPBattlegroundFrameInfoScrollFrame", "PVPBattlegroundFrameInfoScrollFrameChildFrame", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfo", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossReward", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinReward", "PVPBattlegroundFrameInfoScrollFrameScrollBar", "PVPBattlegroundFrameInfoScrollFrameScrollBarScrollDownButton", "PVPBattlegroundFrameInfoScrollFrameScrollBarScrollUpButton", "PVPBattlegroundFrameJoinButton", "PVPBattlegroundFrameTypeScrollFrame", "PVPBattlegroundFrameTypeScrollFrameScrollBar", "PVPBattlegroundFrameTypeScrollFrameScrollBarScrollDownButton", "PVPBattlegroundFrameTypeScrollFrameScrollBarScrollUpButton", "PVPBattlegroundFrameTypeScrollFrameScrollChildFrame", "PVPColorPickerButton1", "PVPColorPickerButton2", "PVPColorPickerButton3", "PVPDropDown", "PVPDropDownButton", "PVPFrame", "PVPFrameArena", "PVPFrameHonor", "PVPFrameOffSeason", "PVPFrameToggleButton", "PVPHonor", "PVPMicroButton", "PVPParentFrame", "PVPParentFrameCloseButton", "PVPParentFrameTab1", "PVPParentFrameTab2", "PVPTeam1", "PVPTeam1Data", "PVPTeam1Highlight", "PVPTeam1Standard", "PVPTeam2", "PVPTeam2Data", "PVPTeam2Highlight", "PVPTeam2Standard", "PVPTeam3", "PVPTeam3Data", "PVPTeam3Highlight", "PVPTeam3Standard", "PVPTeamDetails", "PVPTeamDetailsAddTeamMember", "PVPTeamDetailsButton1", "PVPTeamDetailsButton10", "PVPTeamDetailsButton10Class", "PVPTeamDetailsButton10Name", "PVPTeamDetailsButton10Played", "PVPTeamDetailsButton10Rating", "PVPTeamDetailsButton10WinLoss", "PVPTeamDetailsButton1Class", "PVPTeamDetailsButton1Name", "PVPTeamDetailsButton1Played", "PVPTeamDetailsButton1Rating", "PVPTeamDetailsButton1WinLoss", "PVPTeamDetailsButton2", "PVPTeamDetailsButton2Class", "PVPTeamDetailsButton2Name", "PVPTeamDetailsButton2Played", "PVPTeamDetailsButton2Rating", "PVPTeamDetailsButton2WinLoss", "PVPTeamDetailsButton3", "PVPTeamDetailsButton3Class", "PVPTeamDetailsButton3Name", "PVPTeamDetailsButton3Played", "PVPTeamDetailsButton3Rating", "PVPTeamDetailsButton3WinLoss", "PVPTeamDetailsButton4", "PVPTeamDetailsButton4Class", "PVPTeamDetailsButton4Name", "PVPTeamDetailsButton4Played", "PVPTeamDetailsButton4Rating", "PVPTeamDetailsButton4WinLoss", "PVPTeamDetailsButton5", "PVPTeamDetailsButton5Class", "PVPTeamDetailsButton5Name", "PVPTeamDetailsButton5Played", "PVPTeamDetailsButton5Rating", "PVPTeamDetailsButton5WinLoss", "PVPTeamDetailsButton6", "PVPTeamDetailsButton6Class", "PVPTeamDetailsButton6Name", "PVPTeamDetailsButton6Played", "PVPTeamDetailsButton6Rating", "PVPTeamDetailsButton6WinLoss", "PVPTeamDetailsButton7", "PVPTeamDetailsButton7Class", "PVPTeamDetailsButton7Name", "PVPTeamDetailsButton7Played", "PVPTeamDetailsButton7Rating", "PVPTeamDetailsButton7WinLoss", "PVPTeamDetailsButton8", "PVPTeamDetailsButton8Class", "PVPTeamDetailsButton8Name", "PVPTeamDetailsButton8Played", "PVPTeamDetailsButton8Rating", "PVPTeamDetailsButton8WinLoss", "PVPTeamDetailsButton9", "PVPTeamDetailsButton9Class", "PVPTeamDetailsButton9Name", "PVPTeamDetailsButton9Played", "PVPTeamDetailsButton9Rating", "PVPTeamDetailsButton9WinLoss", "PVPTeamDetailsCloseButton", "PVPTeamDetailsFrameColumnHeader1", "PVPTeamDetailsFrameColumnHeader2", "PVPTeamDetailsFrameColumnHeader3", "PVPTeamDetailsFrameColumnHeader4", "PVPTeamDetailsFrameColumnHeader5", "PVPTeamDetailsToggleButton", "PaperDollFrame", "PaperDollFrameItemFlyout", "PaperDollFrameItemFlyoutButtons", "PartyMemberBackground", "PartyMemberBuffTooltip", "PartyMemberBuffTooltipBuff1", "PartyMemberBuffTooltipBuff10", "PartyMemberBuffTooltipBuff11", "PartyMemberBuffTooltipBuff12", "PartyMemberBuffTooltipBuff13", "PartyMemberBuffTooltipBuff14", "PartyMemberBuffTooltipBuff15", "PartyMemberBuffTooltipBuff16", "PartyMemberBuffTooltipBuff2", "PartyMemberBuffTooltipBuff3", "PartyMemberBuffTooltipBuff4", "PartyMemberBuffTooltipBuff5", "PartyMemberBuffTooltipBuff6", "PartyMemberBuffTooltipBuff7", "PartyMemberBuffTooltipBuff8", "PartyMemberBuffTooltipBuff9", "PartyMemberBuffTooltipDebuff1", "PartyMemberBuffTooltipDebuff2", "PartyMemberBuffTooltipDebuff3", "PartyMemberBuffTooltipDebuff4", "PartyMemberBuffTooltipDebuff5", "PartyMemberBuffTooltipDebuff6", "PartyMemberBuffTooltipDebuff7", "PartyMemberBuffTooltipDebuff8", "PartyMemberFrame1", "PartyMemberFrame1Debuff1", "PartyMemberFrame1Debuff2", "PartyMemberFrame1Debuff3", "PartyMemberFrame1Debuff4", "PartyMemberFrame1DropDown", "PartyMemberFrame1DropDownButton", "PartyMemberFrame1HealthBar", "PartyMemberFrame1ManaBar", "PartyMemberFrame1PetFrame", "PartyMemberFrame1PetFrameDebuff1", "PartyMemberFrame1PetFrameDebuff2", "PartyMemberFrame1PetFrameDebuff3", "PartyMemberFrame1PetFrameDebuff4", "PartyMemberFrame1PetFrameHealthBar", "PartyMemberFrame1ReadyCheck", "PartyMemberFrame1Speaker", "PartyMemberFrame1SpeakerFrame", "PartyMemberFrame2", "PartyMemberFrame2Debuff1", "PartyMemberFrame2Debuff2", "PartyMemberFrame2Debuff3", "PartyMemberFrame2Debuff4", "PartyMemberFrame2DropDown", "PartyMemberFrame2DropDownButton", "PartyMemberFrame2HealthBar", "PartyMemberFrame2ManaBar", "PartyMemberFrame2PetFrame", "PartyMemberFrame2PetFrameDebuff1", "PartyMemberFrame2PetFrameDebuff2", "PartyMemberFrame2PetFrameDebuff3", "PartyMemberFrame2PetFrameDebuff4", "PartyMemberFrame2PetFrameHealthBar", "PartyMemberFrame2ReadyCheck", "PartyMemberFrame2Speaker", "PartyMemberFrame2SpeakerFrame", "PartyMemberFrame3", "PartyMemberFrame3Debuff1", "PartyMemberFrame3Debuff2", "PartyMemberFrame3Debuff3", "PartyMemberFrame3Debuff4", "PartyMemberFrame3DropDown", "PartyMemberFrame3DropDownButton", "PartyMemberFrame3HealthBar", "PartyMemberFrame3ManaBar", "PartyMemberFrame3PetFrame", "PartyMemberFrame3PetFrameDebuff1", "PartyMemberFrame3PetFrameDebuff2", "PartyMemberFrame3PetFrameDebuff3", "PartyMemberFrame3PetFrameDebuff4", "PartyMemberFrame3PetFrameHealthBar", "PartyMemberFrame3ReadyCheck", "PartyMemberFrame3Speaker", "PartyMemberFrame3SpeakerFrame", "PartyMemberFrame4", "PartyMemberFrame4Debuff1", "PartyMemberFrame4Debuff2", "PartyMemberFrame4Debuff3", "PartyMemberFrame4Debuff4", "PartyMemberFrame4DropDown", "PartyMemberFrame4DropDownButton", "PartyMemberFrame4HealthBar", "PartyMemberFrame4ManaBar", "PartyMemberFrame4PetFrame", "PartyMemberFrame4PetFrameDebuff1", "PartyMemberFrame4PetFrameDebuff2", "PartyMemberFrame4PetFrameDebuff3", "PartyMemberFrame4PetFrameDebuff4", "PartyMemberFrame4PetFrameHealthBar", "PartyMemberFrame4ReadyCheck", "PartyMemberFrame4Speaker", "PartyMemberFrame4SpeakerFrame", "PendingListFrame", "PendingListFrameDropDown", "PendingListFrameDropDownButton", "PendingListInfoFrame", "PendingListInfoFrameContinueButton", "PetActionBarFrame", "PetActionButton1", "PetActionButton10", "PetActionButton10Cooldown", "PetActionButton10Shine", "PetActionButton1Cooldown", "PetActionButton1Shine", "PetActionButton2", "PetActionButton2Cooldown", "PetActionButton2Shine", "PetActionButton3", "PetActionButton3Cooldown", "PetActionButton3Shine", "PetActionButton4", "PetActionButton4Cooldown", "PetActionButton4Shine", "PetActionButton5", "PetActionButton5Cooldown", "PetActionButton5Shine", "PetActionButton6", "PetActionButton6Cooldown", "PetActionButton6Shine", "PetActionButton7", "PetActionButton7Cooldown", "PetActionButton7Shine", "PetActionButton8", "PetActionButton8Cooldown", "PetActionButton8Shine", "PetActionButton9", "PetActionButton9Cooldown", "PetActionButton9Shine", "PetArmorFrame", "PetArmorFrameStat", "PetAttackPowerFrame", "PetAttackPowerFrameStat", "PetAttributesFrame", "PetCastingBarFrame", "PetDamageFrame", "PetDamageFrameStat", "PetFrame", "PetFrameDebuff1", "PetFrameDebuff2", "PetFrameDebuff3", "PetFrameDebuff4", "PetFrameDropDown", "PetFrameDropDownButton", "PetFrameHappiness", "PetFrameHealthBar", "PetFrameManaBar", "PetMagicResFrame1", "PetMagicResFrame2", "PetMagicResFrame3", "PetMagicResFrame4", "PetMagicResFrame5", "PetModelFrame", "PetModelFrameRotateLeftButton", "PetModelFrameRotateRightButton", "PetPaperDollCloseButton", "PetPaperDollFrame", "PetPaperDollFrameCompanionFrame", "PetPaperDollFrameExpBar", "PetPaperDollFramePetFrame", "PetPaperDollFrameTab1", "PetPaperDollFrameTab2", "PetPaperDollFrameTab3", "PetPaperDollPetInfo", "PetResistanceFrame", "PetSpellDamageFrame", "PetSpellDamageFrameStat", "PetStableCostMoneyFrame", "PetStableCostMoneyFrameCopperButton", "PetStableCostMoneyFrameGoldButton", "PetStableCostMoneyFrameSilverButton", "PetStableCurrentPet", "PetStableFrame", "PetStableFrameCloseButton", "PetStableModel", "PetStableModelRotateLeftButton", "PetStableModelRotateRightButton", "PetStableMoneyFrame", "PetStableMoneyFrameCopperButton", "PetStableMoneyFrameGoldButton", "PetStableMoneyFrameSilverButton", "PetStablePetInfo", "PetStablePurchaseButton", "PetStableStabledPet1", "PetStableStabledPet2", "PetStableStabledPet3", "PetStableStabledPet4", "PetStatFrame1", "PetStatFrame1Stat", "PetStatFrame2", "PetStatFrame2Stat", "PetStatFrame3", "PetStatFrame3Stat", "PetStatFrame4", "PetStatFrame4Stat", "PetStatFrame5", "PetStatFrame5Stat", "PetitionFrame", "PetitionFrameCancelButton", "PetitionFrameCloseButton", "PetitionFrameRenameButton", "PetitionFrameRequestButton", "PetitionFrameSignButton", "PetitionNpcNameFrame", "PlayLoopbackSoundButton", "PlayerArrowEffectFrame", "PlayerArrowFrame", "PlayerFrame", "PlayerFrameAlternateManaBar", "PlayerFrameDropDown", "PlayerFrameDropDownButton", "PlayerFrameGroupIndicator", "PlayerFrameHealthBar", "PlayerFrameManaBar", "PlayerFrameReadyCheck", "PlayerPVPIconHitArea", "PlayerPlayTime", "PlayerSpeakerFrame", "PlayerStatFrameLeft1", "PlayerStatFrameLeft1Stat", "PlayerStatFrameLeft2", "PlayerStatFrameLeft2Stat", "PlayerStatFrameLeft3", "PlayerStatFrameLeft3Stat", "PlayerStatFrameLeft4", "PlayerStatFrameLeft4Stat", "PlayerStatFrameLeft5", "PlayerStatFrameLeft5Stat", "PlayerStatFrameLeft6", "PlayerStatFrameLeft6Stat", "PlayerStatFrameLeftDropDown", "PlayerStatFrameLeftDropDownButton", "PlayerStatFrameRight1", "PlayerStatFrameRight1Stat", "PlayerStatFrameRight2", "PlayerStatFrameRight2Stat", "PlayerStatFrameRight3", "PlayerStatFrameRight3Stat", "PlayerStatFrameRight4", "PlayerStatFrameRight4Stat", "PlayerStatFrameRight5", "PlayerStatFrameRight5Stat", "PlayerStatFrameRight6", "PlayerStatFrameRight6Stat", "PlayerStatFrameRightDropDown", "PlayerStatFrameRightDropDownButton", "PlayerStatusGlow", "PlayerTitleFrame", "PlayerTitleFrameButton", "PlayerTitlePickerFrame", "PlayerTitlePickerScrollFrame", "PlayerTitlePickerScrollFrameButton1", "PlayerTitlePickerScrollFrameButton2", "PlayerTitlePickerScrollFrameButton3", "PlayerTitlePickerScrollFrameButton4", "PlayerTitlePickerScrollFrameButton5", "PlayerTitlePickerScrollFrameButton6", "PlayerTitlePickerScrollFrameButton7", "PlayerTitlePickerScrollFrameButton8", "PlayerTitlePickerScrollFrameScrollBar", "PlayerTitlePickerScrollFrameScrollBarScrollDownButton", "PlayerTitlePickerScrollFrameScrollBarScrollUpButton", "PlayerTitlePickerScrollFrameScrollChild", "PossessBarFrame", "PossessButton1", "PossessButton1Cooldown", "PossessButton2", "PossessButton2Cooldown", "PowerBarColor", "QUEST_POI_SWAP_BUTTONS", "QUEST_TEMPLATE_DETAIL1", "QUEST_TEMPLATE_DETAIL2", "QUEST_TEMPLATE_LOG", "QUEST_TEMPLATE_MAP1", "QUEST_TEMPLATE_MAP2", "QUEST_TEMPLATE_REWARD", "QuestDetailScrollChildFrame", "QuestDetailScrollFrame", "QuestDetailScrollFrameScrollBar", "QuestDetailScrollFrameScrollBarScrollDownButton", "QuestDetailScrollFrameScrollBarScrollUpButton", "QuestDifficultyColors", "QuestFrame", "QuestFrameAcceptButton", "QuestFrameCancelButton", "QuestFrameCloseButton", "QuestFrameCompleteButton", "QuestFrameCompleteQuestButton", "QuestFrameDeclineButton", "QuestFrameDetailPanel", "QuestFrameGoodbyeButton", "QuestFrameGreetingGoodbyeButton", "QuestFrameGreetingPanel", "QuestFrameProgressPanel", "QuestFrameRewardPanel", "QuestGreetingScrollChildFrame", "QuestGreetingScrollFrame", "QuestGreetingScrollFrameScrollBar", "QuestGreetingScrollFrameScrollBarScrollDownButton", "QuestGreetingScrollFrameScrollBarScrollUpButton", "QuestInfoArenaPointsFrame", "QuestInfoFadingFrame", "QuestInfoFrame", "QuestInfoHonorFrame", "QuestInfoItem1", "QuestInfoItem10", "QuestInfoItem2", "QuestInfoItem3", "QuestInfoItem4", "QuestInfoItem5", "QuestInfoItem6", "QuestInfoItem7", "QuestInfoItem8", "QuestInfoItem9", "QuestInfoItemHighlight", "QuestInfoMoneyFrame", "QuestInfoMoneyFrameCopperButton", "QuestInfoMoneyFrameGoldButton", "QuestInfoMoneyFrameSilverButton", "QuestInfoObjectivesFrame", "QuestInfoPlayerTitleFrame", "QuestInfoReputation1", "QuestInfoReputation10", "QuestInfoReputation2", "QuestInfoReputation3", "QuestInfoReputation4", "QuestInfoReputation5", "QuestInfoReputation6", "QuestInfoReputation7", "QuestInfoReputation8", "QuestInfoReputation9", "QuestInfoReputationsFrame", "QuestInfoRequiredMoneyDisplay", "QuestInfoRequiredMoneyDisplayCopperButton", "QuestInfoRequiredMoneyDisplayGoldButton", "QuestInfoRequiredMoneyDisplaySilverButton", "QuestInfoRequiredMoneyFrame", "QuestInfoRewardsFrame", "QuestInfoSpacerFrame", "QuestInfoTalentFrame", "QuestInfoTimerFrame", "QuestInfoXPFrame", "QuestLogControlPanel", "QuestLogCount", "QuestLogDailyQuestCountMouseOverFrame", "QuestLogDetailFrame", "QuestLogDetailFrameCloseButton", "QuestLogDetailScrollChildFrame", "QuestLogDetailScrollFrame", "QuestLogDetailScrollFrameScrollBar", "QuestLogDetailScrollFrameScrollBarScrollDownButton", "QuestLogDetailScrollFrameScrollBarScrollUpButton", "QuestLogFrame", "QuestLogFrameAbandonButton", "QuestLogFrameCancelButton", "QuestLogFrameCloseButton", "QuestLogFramePushQuestButton", "QuestLogFrameShowMapButton", "QuestLogFrameTrackButton", "QuestLogHighlightFrame", "QuestLogMapFrame", "QuestLogMicroButton", "QuestLogScrollFrame", "QuestLogScrollFrameButton1", "QuestLogScrollFrameButton10", "QuestLogScrollFrameButton11", "QuestLogScrollFrameButton12", "QuestLogScrollFrameButton13", "QuestLogScrollFrameButton14", "QuestLogScrollFrameButton15", "QuestLogScrollFrameButton16", "QuestLogScrollFrameButton17", "QuestLogScrollFrameButton18", "QuestLogScrollFrameButton19", "QuestLogScrollFrameButton2", "QuestLogScrollFrameButton20", "QuestLogScrollFrameButton21", "QuestLogScrollFrameButton22", "QuestLogScrollFrameButton3", "QuestLogScrollFrameButton4", "QuestLogScrollFrameButton5", "QuestLogScrollFrameButton6", "QuestLogScrollFrameButton7", "QuestLogScrollFrameButton8", "QuestLogScrollFrameButton9", "QuestLogScrollFrameScrollBar", "QuestLogScrollFrameScrollBarScrollDownButton", "QuestLogScrollFrameScrollBarScrollUpButton", "QuestLogScrollFrameScrollChild", "QuestNpcNameFrame", "QuestProgressItem1", "QuestProgressItem2", "QuestProgressItem3", "QuestProgressItem4", "QuestProgressItem5", "QuestProgressItem6", "QuestProgressRequiredMoneyFrame", "QuestProgressRequiredMoneyFrameCopperButton", "QuestProgressRequiredMoneyFrameGoldButton", "QuestProgressRequiredMoneyFrameSilverButton", "QuestProgressScrollChildFrame", "QuestProgressScrollFrame", "QuestProgressScrollFrameScrollBar", "QuestProgressScrollFrameScrollBarScrollDownButton", "QuestProgressScrollFrameScrollBarScrollUpButton", "QuestRewardScrollChildFrame", "QuestRewardScrollFrame", "QuestRewardScrollFrameScrollBar", "QuestRewardScrollFrameScrollBarScrollDownButton", "QuestRewardScrollFrameScrollBarScrollUpButton", "QuestTitleButton1", "QuestTitleButton10", "QuestTitleButton11", "QuestTitleButton12", "QuestTitleButton13", "QuestTitleButton14", "QuestTitleButton15", "QuestTitleButton16", "QuestTitleButton17", "QuestTitleButton18", "QuestTitleButton19", "QuestTitleButton2", "QuestTitleButton20", "QuestTitleButton21", "QuestTitleButton22", "QuestTitleButton23", "QuestTitleButton24", "QuestTitleButton25", "QuestTitleButton26", "QuestTitleButton27", "QuestTitleButton28", "QuestTitleButton29", "QuestTitleButton3", "QuestTitleButton30", "QuestTitleButton31", "QuestTitleButton32", "QuestTitleButton4", "QuestTitleButton5", "QuestTitleButton6", "QuestTitleButton7", "QuestTitleButton8", "QuestTitleButton9", "RAID_CLASS_BUTTONS", "RAID_CLASS_COLORS", "RAID_PULLOUT_POSITIONS", "RAID_PULLOUT_SAVED_SETTINGS", "RAID_SINGLE_POSITIONS", "RAID_SUBGROUP_LISTS", "RED_FONT_COLOR", "RaidBossEmoteFrame", "RaidClassButton1", "RaidClassButton10", "RaidClassButton11", "RaidClassButton12", "RaidClassButton13", "RaidClassButton2", "RaidClassButton3", "RaidClassButton4", "RaidClassButton5", "RaidClassButton6", "RaidClassButton7", "RaidClassButton8", "RaidClassButton9", "RaidFrame", "RaidFrameConvertToRaidButton", "RaidFrameNotInRaid", "RaidFrameNotInRaidRaidBrowserButton", "RaidFrameRaidBrowserButton", "RaidFrameRaidInfoButton", "RaidFrameReadyCheckButton", "RaidGroup1", "RaidGroup1Label", "RaidGroup1Slot1", "RaidGroup1Slot2", "RaidGroup1Slot3", "RaidGroup1Slot4", "RaidGroup1Slot5", "RaidGroup2", "RaidGroup2Label", "RaidGroup2Slot1", "RaidGroup2Slot2", "RaidGroup2Slot3", "RaidGroup2Slot4", "RaidGroup2Slot5", "RaidGroup3", "RaidGroup3Label", "RaidGroup3Slot1", "RaidGroup3Slot2", "RaidGroup3Slot3", "RaidGroup3Slot4", "RaidGroup3Slot5", "RaidGroup4", "RaidGroup4Label", "RaidGroup4Slot1", "RaidGroup4Slot2", "RaidGroup4Slot3", "RaidGroup4Slot4", "RaidGroup4Slot5", "RaidGroup5", "RaidGroup5Label", "RaidGroup5Slot1", "RaidGroup5Slot2", "RaidGroup5Slot3", "RaidGroup5Slot4", "RaidGroup5Slot5", "RaidGroup6", "RaidGroup6Label", "RaidGroup6Slot1", "RaidGroup6Slot2", "RaidGroup6Slot3", "RaidGroup6Slot4", "RaidGroup6Slot5", "RaidGroup7", "RaidGroup7Label", "RaidGroup7Slot1", "RaidGroup7Slot2", "RaidGroup7Slot3", "RaidGroup7Slot4", "RaidGroup7Slot5", "RaidGroup8", "RaidGroup8Label", "RaidGroup8Slot1", "RaidGroup8Slot2", "RaidGroup8Slot3", "RaidGroup8Slot4", "RaidGroup8Slot5", "RaidGroupButton1", "RaidGroupButton10", "RaidGroupButton10Loot", "RaidGroupButton10Rank", "RaidGroupButton10ReadyCheck", "RaidGroupButton10Role", "RaidGroupButton11", "RaidGroupButton11Loot", "RaidGroupButton11Rank", "RaidGroupButton11ReadyCheck", "RaidGroupButton11Role", "RaidGroupButton12", "RaidGroupButton12Loot", "RaidGroupButton12Rank", "RaidGroupButton12ReadyCheck", "RaidGroupButton12Role", "RaidGroupButton13", "RaidGroupButton13Loot", "RaidGroupButton13Rank", "RaidGroupButton13ReadyCheck", "RaidGroupButton13Role", "RaidGroupButton14", "RaidGroupButton14Loot", "RaidGroupButton14Rank", "RaidGroupButton14ReadyCheck", "RaidGroupButton14Role", "RaidGroupButton15", "RaidGroupButton15Loot", "RaidGroupButton15Rank", "RaidGroupButton15ReadyCheck", "RaidGroupButton15Role", "RaidGroupButton16", "RaidGroupButton16Loot", "RaidGroupButton16Rank", "RaidGroupButton16ReadyCheck", "RaidGroupButton16Role", "RaidGroupButton17", "RaidGroupButton17Loot", "RaidGroupButton17Rank", "RaidGroupButton17ReadyCheck", "RaidGroupButton17Role", "RaidGroupButton18", "RaidGroupButton18Loot", "RaidGroupButton18Rank", "RaidGroupButton18ReadyCheck", "RaidGroupButton18Role", "RaidGroupButton19", "RaidGroupButton19Loot", "RaidGroupButton19Rank", "RaidGroupButton19ReadyCheck", "RaidGroupButton19Role", "RaidGroupButton1Loot", "RaidGroupButton1Rank", "RaidGroupButton1ReadyCheck", "RaidGroupButton1Role", "RaidGroupButton2", "RaidGroupButton20", "RaidGroupButton20Loot", "RaidGroupButton20Rank", "RaidGroupButton20ReadyCheck", "RaidGroupButton20Role", "RaidGroupButton21", "RaidGroupButton21Loot", "RaidGroupButton21Rank", "RaidGroupButton21ReadyCheck", "RaidGroupButton21Role", "RaidGroupButton22", "RaidGroupButton22Loot", "RaidGroupButton22Rank", "RaidGroupButton22ReadyCheck", "RaidGroupButton22Role", "RaidGroupButton23", "RaidGroupButton23Loot", "RaidGroupButton23Rank", "RaidGroupButton23ReadyCheck", "RaidGroupButton23Role", "RaidGroupButton24", "RaidGroupButton24Loot", "RaidGroupButton24Rank", "RaidGroupButton24ReadyCheck", "RaidGroupButton24Role", "RaidGroupButton25", "RaidGroupButton25Loot", "RaidGroupButton25Rank", "RaidGroupButton25ReadyCheck", "RaidGroupButton25Role", "RaidGroupButton26", "RaidGroupButton26Loot", "RaidGroupButton26Rank", "RaidGroupButton26ReadyCheck", "RaidGroupButton26Role", "RaidGroupButton27", "RaidGroupButton27Loot", "RaidGroupButton27Rank", "RaidGroupButton27ReadyCheck", "RaidGroupButton27Role", "RaidGroupButton28", "RaidGroupButton28Loot", "RaidGroupButton28Rank", "RaidGroupButton28ReadyCheck", "RaidGroupButton28Role", "RaidGroupButton29", "RaidGroupButton29Loot", "RaidGroupButton29Rank", "RaidGroupButton29ReadyCheck", "RaidGroupButton29Role", "RaidGroupButton2Loot", "RaidGroupButton2Rank", "RaidGroupButton2ReadyCheck", "RaidGroupButton2Role", "RaidGroupButton3", "RaidGroupButton30", "RaidGroupButton30Loot", "RaidGroupButton30Rank", "RaidGroupButton30ReadyCheck", "RaidGroupButton30Role", "RaidGroupButton31", "RaidGroupButton31Loot", "RaidGroupButton31Rank", "RaidGroupButton31ReadyCheck", "RaidGroupButton31Role", "RaidGroupButton32", "RaidGroupButton32Loot", "RaidGroupButton32Rank", "RaidGroupButton32ReadyCheck", "RaidGroupButton32Role", "RaidGroupButton33", "RaidGroupButton33Loot", "RaidGroupButton33Rank", "RaidGroupButton33ReadyCheck", "RaidGroupButton33Role", "RaidGroupButton34", "RaidGroupButton34Loot", "RaidGroupButton34Rank", "RaidGroupButton34ReadyCheck", "RaidGroupButton34Role", "RaidGroupButton35", "RaidGroupButton35Loot", "RaidGroupButton35Rank", "RaidGroupButton35ReadyCheck", "RaidGroupButton35Role", "RaidGroupButton36", "RaidGroupButton36Loot", "RaidGroupButton36Rank", "RaidGroupButton36ReadyCheck", "RaidGroupButton36Role", "RaidGroupButton37", "RaidGroupButton37Loot", "RaidGroupButton37Rank", "RaidGroupButton37ReadyCheck", "RaidGroupButton37Role", "RaidGroupButton38", "RaidGroupButton38Loot", "RaidGroupButton38Rank", "RaidGroupButton38ReadyCheck", "RaidGroupButton38Role", "RaidGroupButton39", "RaidGroupButton39Loot", "RaidGroupButton39Rank", "RaidGroupButton39ReadyCheck", "RaidGroupButton39Role", "RaidGroupButton3Loot", "RaidGroupButton3Rank", "RaidGroupButton3ReadyCheck", "RaidGroupButton3Role", "RaidGroupButton4", "RaidGroupButton40", "RaidGroupButton40Loot", "RaidGroupButton40Rank", "RaidGroupButton40ReadyCheck", "RaidGroupButton40Role", "RaidGroupButton4Loot", "RaidGroupButton4Rank", "RaidGroupButton4ReadyCheck", "RaidGroupButton4Role", "RaidGroupButton5", "RaidGroupButton5Loot", "RaidGroupButton5Rank", "RaidGroupButton5ReadyCheck", "RaidGroupButton5Role", "RaidGroupButton6", "RaidGroupButton6Loot", "RaidGroupButton6Rank", "RaidGroupButton6ReadyCheck", "RaidGroupButton6Role", "RaidGroupButton7", "RaidGroupButton7Loot", "RaidGroupButton7Rank", "RaidGroupButton7ReadyCheck", "RaidGroupButton7Role", "RaidGroupButton8", "RaidGroupButton8Loot", "RaidGroupButton8Rank", "RaidGroupButton8ReadyCheck", "RaidGroupButton8Role", "RaidGroupButton9", "RaidGroupButton9Loot", "RaidGroupButton9Rank", "RaidGroupButton9ReadyCheck", "RaidGroupButton9Role", "RaidInfoCancelButton", "RaidInfoCloseButton", "RaidInfoExtendButton", "RaidInfoFrame", "RaidInfoIDLabel", "RaidInfoInstanceLabel", "RaidInfoScrollFrame", "RaidInfoScrollFrameButton1", "RaidInfoScrollFrameButton2", "RaidInfoScrollFrameButton3", "RaidInfoScrollFrameButton4", "RaidInfoScrollFrameButton5", "RaidInfoScrollFrameButton6", "RaidInfoScrollFrameButton7", "RaidInfoScrollFrameScrollBar", "RaidInfoScrollFrameScrollBarScrollDownButton", "RaidInfoScrollFrameScrollBarScrollUpButton", "RaidInfoScrollFrameScrollChild", "RaidWarningFrame", "RatingMenuButtonOkay", "RatingMenuFrame", "ReadyCheckFrame", "ReadyCheckFrameNoButton", "ReadyCheckFrameYesButton", "ReadyCheckListenerFrame", "RecordLoopbackSoundButton", "ReputationBar1", "ReputationBar10", "ReputationBar10ExpandOrCollapseButton", "ReputationBar10ReputationBar", "ReputationBar11", "ReputationBar11ExpandOrCollapseButton", "ReputationBar11ReputationBar", "ReputationBar12", "ReputationBar12ExpandOrCollapseButton", "ReputationBar12ReputationBar", "ReputationBar13", "ReputationBar13ExpandOrCollapseButton", "ReputationBar13ReputationBar", "ReputationBar14", "ReputationBar14ExpandOrCollapseButton", "ReputationBar14ReputationBar", "ReputationBar15", "ReputationBar15ExpandOrCollapseButton", "ReputationBar15ReputationBar", "ReputationBar1ExpandOrCollapseButton", "ReputationBar1ReputationBar", "ReputationBar2", "ReputationBar2ExpandOrCollapseButton", "ReputationBar2ReputationBar", "ReputationBar3", "ReputationBar3ExpandOrCollapseButton", "ReputationBar3ReputationBar", "ReputationBar4", "ReputationBar4ExpandOrCollapseButton", "ReputationBar4ReputationBar", "ReputationBar5", "ReputationBar5ExpandOrCollapseButton", "ReputationBar5ReputationBar", "ReputationBar6", "ReputationBar6ExpandOrCollapseButton", "ReputationBar6ReputationBar", "ReputationBar7", "ReputationBar7ExpandOrCollapseButton", "ReputationBar7ReputationBar", "ReputationBar8", "ReputationBar8ExpandOrCollapseButton", "ReputationBar8ReputationBar", "ReputationBar9", "ReputationBar9ExpandOrCollapseButton", "ReputationBar9ReputationBar", "ReputationDetailAtWarCheckBox", "ReputationDetailCloseButton", "ReputationDetailFrame", "ReputationDetailInactiveCheckBox", "ReputationDetailMainScreenCheckBox", "ReputationFrame", "ReputationListScrollFrame", "ReputationListScrollFrameScrollBar", "ReputationListScrollFrameScrollBarScrollDownButton", "ReputationListScrollFrameScrollBarScrollUpButton", "ReputationListScrollFrameScrollChildFrame", "ReputationWatchBar", "ReputationWatchBarOverlayFrame", "ReputationWatchStatusBar", "ResolutionPanelOptions", "RuneButtonIndividual1", "RuneButtonIndividual1Border", "RuneButtonIndividual1Cooldown", "RuneButtonIndividual1Shine", "RuneButtonIndividual2", "RuneButtonIndividual2Border", "RuneButtonIndividual2Cooldown", "RuneButtonIndividual2Shine", "RuneButtonIndividual3", "RuneButtonIndividual3Border", "RuneButtonIndividual3Cooldown", "RuneButtonIndividual3Shine", "RuneButtonIndividual4", "RuneButtonIndividual4Border", "RuneButtonIndividual4Cooldown", "RuneButtonIndividual4Shine", "RuneButtonIndividual5", "RuneButtonIndividual5Border", "RuneButtonIndividual5Cooldown", "RuneButtonIndividual5Shine", "RuneButtonIndividual6", "RuneButtonIndividual6Border", "RuneButtonIndividual6Cooldown", "RuneButtonIndividual6Shine", "RuneFrame", "SELECTED_DOCK_FRAME", "SEND_MAIL_TAB_LIST", "SHINES_TO_ANIMATE", "SPELLBOOK_PAGENUMBERS", "STATIC_CONSTANTS", "SUBTRACTED_PLAYERS", "ScorePlayerDropDown", "ScorePlayerDropDownButton", "SecureHandlersUpdateFrame", "SecureHoverDriverManager", "SecureStateDriverManager", "SendMailAttachment1", "SendMailAttachment10", "SendMailAttachment11", "SendMailAttachment12", "SendMailAttachment13", "SendMailAttachment14", "SendMailAttachment15", "SendMailAttachment16", "SendMailAttachment2", "SendMailAttachment3", "SendMailAttachment4", "SendMailAttachment5", "SendMailAttachment6", "SendMailAttachment7", "SendMailAttachment8", "SendMailAttachment9", "SendMailBodyEditBox", "SendMailCODButton", "SendMailCancelButton", "SendMailCostMoneyFrame", "SendMailCostMoneyFrameCopperButton", "SendMailCostMoneyFrameGoldButton", "SendMailCostMoneyFrameSilverButton", "SendMailFrame", "SendMailFrameLockSendMail", "SendMailMailButton", "SendMailMoney", "SendMailMoneyButton", "SendMailMoneyCopper", "SendMailMoneyFrame", "SendMailMoneyFrameCopperButton", "SendMailMoneyFrameGoldButton", "SendMailMoneyFrameSilverButton", "SendMailMoneyGold", "SendMailMoneySilver", "SendMailNameEditBox", "SendMailScrollChildFrame", "SendMailScrollFrame", "SendMailScrollFrameScrollBar", "SendMailScrollFrameScrollBarScrollDownButton", "SendMailScrollFrameScrollBarScrollUpButton", "SendMailSendMoneyButton", "SendMailSubjectEditBox", "SetContainer", "ShapeshiftBarFrame", "ShapeshiftButton1", "ShapeshiftButton10", "ShapeshiftButton10Cooldown", "ShapeshiftButton1Cooldown", "ShapeshiftButton2", "ShapeshiftButton2Cooldown", "ShapeshiftButton3", "ShapeshiftButton3Cooldown", "ShapeshiftButton4", "ShapeshiftButton4Cooldown", "ShapeshiftButton5", "ShapeshiftButton5Cooldown", "ShapeshiftButton6", "ShapeshiftButton6Cooldown", "ShapeshiftButton7", "ShapeshiftButton7Cooldown", "ShapeshiftButton8", "ShapeshiftButton8Cooldown", "ShapeshiftButton9", "ShapeshiftButton9Cooldown", "ShoppingTooltip1", "ShoppingTooltip2", "ShoppingTooltip3", "ShowAllSpellRanksCheckBox", "SkillDetailScrollChildFrame", "SkillDetailScrollFrame", "SkillDetailScrollFrameScrollBar", "SkillDetailScrollFrameScrollBarScrollDownButton", "SkillDetailScrollFrameScrollBarScrollUpButton", "SkillDetailStatusBar", "SkillDetailStatusBarLearnSkillButton", "SkillDetailStatusBarLeftArrow", "SkillDetailStatusBarRightArrow", "SkillDetailStatusBarUnlearnButton", "SkillFrame", "SkillFrameCancelButton", "SkillFrameCollapseAllButton", "SkillFrameExpandButtonFrame", "SkillListScrollFrame", "SkillListScrollFrameScrollBar", "SkillListScrollFrameScrollBarScrollDownButton", "SkillListScrollFrameScrollBarScrollUpButton", "SkillListScrollFrameScrollChildFrame", "SkillRankFrame1", "SkillRankFrame10", "SkillRankFrame10Border", "SkillRankFrame11", "SkillRankFrame11Border", "SkillRankFrame12", "SkillRankFrame12Border", "SkillRankFrame1Border", "SkillRankFrame2", "SkillRankFrame2Border", "SkillRankFrame3", "SkillRankFrame3Border", "SkillRankFrame4", "SkillRankFrame4Border", "SkillRankFrame5", "SkillRankFrame5Border", "SkillRankFrame6", "SkillRankFrame6Border", "SkillRankFrame7", "SkillRankFrame7Border", "SkillRankFrame8", "SkillRankFrame8Border", "SkillRankFrame9", "SkillRankFrame9Border", "SkillTypeLabel1", "SkillTypeLabel10", "SkillTypeLabel11", "SkillTypeLabel12", "SkillTypeLabel2", "SkillTypeLabel3", "SkillTypeLabel4", "SkillTypeLabel5", "SkillTypeLabel6", "SkillTypeLabel7", "SkillTypeLabel8", "SkillTypeLabel9", "SlashCmdList", "SmallTextTooltip", "SocialPanelOptions", "SocialsMicroButton", "SoundPanelOptions", "SparkleDimensions", "SparkleFrame", "SpellBookCloseButton", "SpellBookFrame", "SpellBookFrameTabButton1", "SpellBookFrameTabButton2", "SpellBookFrameTabButton3", "SpellBookNextPageButton", "SpellBookPrevPageButton", "SpellBookSkillLineTab1", "SpellBookSkillLineTab2", "SpellBookSkillLineTab3", "SpellBookSkillLineTab4", "SpellBookSkillLineTab5", "SpellBookSkillLineTab6", "SpellBookSkillLineTab7", "SpellBookSkillLineTab8", "SpellBookTabFlashFrame", "SpellButton1", "SpellButton10", "SpellButton10Cooldown", "SpellButton11", "SpellButton11Cooldown", "SpellButton12", "SpellButton12Cooldown", "SpellButton1Cooldown", "SpellButton2", "SpellButton2Cooldown", "SpellButton3", "SpellButton3Cooldown", "SpellButton4", "SpellButton4Cooldown", "SpellButton5", "SpellButton5Cooldown", "SpellButton6", "SpellButton6Cooldown", "SpellButton7", "SpellButton7Cooldown", "SpellButton8", "SpellButton8Cooldown", "SpellButton9", "SpellButton9Cooldown", "SpellbookMicroButton", "StackSplitCancelButton", "StackSplitFrame", "StackSplitLeftButton", "StackSplitOkayButton", "StackSplitRightButton", "StandingMouseOver", "StaticPopup1", "StaticPopup1Button1", "StaticPopup1Button2", "StaticPopup1Button3", "StaticPopup1CloseButton", "StaticPopup1EditBox", "StaticPopup1ExtraFrame", "StaticPopup1ItemFrame", "StaticPopup1MoneyFrame", "StaticPopup1MoneyFrameCopperButton", "StaticPopup1MoneyFrameGoldButton", "StaticPopup1MoneyFrameSilverButton", "StaticPopup1MoneyInputFrame", "StaticPopup1MoneyInputFrameCopper", "StaticPopup1MoneyInputFrameGold", "StaticPopup1MoneyInputFrameSilver", "StaticPopup1WideEditBox", "StaticPopup2", "StaticPopup2Button1", "StaticPopup2Button2", "StaticPopup2Button3", "StaticPopup2CloseButton", "StaticPopup2EditBox", "StaticPopup2ExtraFrame", "StaticPopup2ItemFrame", "StaticPopup2MoneyFrame", "StaticPopup2MoneyFrameCopperButton", "StaticPopup2MoneyFrameGoldButton", "StaticPopup2MoneyFrameSilverButton", "StaticPopup2MoneyInputFrame", "StaticPopup2MoneyInputFrameCopper", "StaticPopup2MoneyInputFrameGold", "StaticPopup2MoneyInputFrameSilver", "StaticPopup2WideEditBox", "StaticPopup3", "StaticPopup3Button1", "StaticPopup3Button2", "StaticPopup3Button3", "StaticPopup3CloseButton", "StaticPopup3EditBox", "StaticPopup3ExtraFrame", "StaticPopup3ItemFrame", "StaticPopup3MoneyFrame", "StaticPopup3MoneyFrameCopperButton", "StaticPopup3MoneyFrameGoldButton", "StaticPopup3MoneyFrameSilverButton", "StaticPopup3MoneyInputFrame", "StaticPopup3MoneyInputFrameCopper", "StaticPopup3MoneyInputFrameGold", "StaticPopup3MoneyInputFrameSilver", "StaticPopup3WideEditBox", "StaticPopup4", "StaticPopup4Button1", "StaticPopup4Button2", "StaticPopup4Button3", "StaticPopup4CloseButton", "StaticPopup4EditBox", "StaticPopup4ExtraFrame", "StaticPopup4ItemFrame", "StaticPopup4MoneyFrame", "StaticPopup4MoneyFrameCopperButton", "StaticPopup4MoneyFrameGoldButton", "StaticPopup4MoneyFrameSilverButton", "StaticPopup4MoneyInputFrame", "StaticPopup4MoneyInputFrameCopper", "StaticPopup4MoneyInputFrameGold", "StaticPopup4MoneyInputFrameSilver", "StaticPopup4WideEditBox", "StaticPopupDialogs", "StaticPopup_DisplayedFrames", "StationeryPopupButton1", "StationeryPopupButton1MoneyFrame", "StationeryPopupButton1MoneyFrameCopperButton", "StationeryPopupButton1MoneyFrameGoldButton", "StationeryPopupButton1MoneyFrameSilverButton", "StationeryPopupButton2", "StationeryPopupButton2MoneyFrame", "StationeryPopupButton2MoneyFrameCopperButton", "StationeryPopupButton2MoneyFrameGoldButton", "StationeryPopupButton2MoneyFrameSilverButton", "StationeryPopupButton3", "StationeryPopupButton3MoneyFrame", "StationeryPopupButton3MoneyFrameCopperButton", "StationeryPopupButton3MoneyFrameGoldButton", "StationeryPopupButton3MoneyFrameSilverButton", "StationeryPopupButton4", "StationeryPopupButton4MoneyFrame", "StationeryPopupButton4MoneyFrameCopperButton", "StationeryPopupButton4MoneyFrameGoldButton", "StationeryPopupButton4MoneyFrameSilverButton", "StationeryPopupButton5", "StationeryPopupButton5MoneyFrame", "StationeryPopupButton5MoneyFrameCopperButton", "StationeryPopupButton5MoneyFrameGoldButton", "StationeryPopupButton5MoneyFrameSilverButton", "StationeryPopupCancelButton", "StationeryPopupFrame", "StationeryPopupOkayButton", "StationeryPopupScrollFrame", "StationeryPopupScrollFrameScrollBar", "StationeryPopupScrollFrameScrollBarScrollDownButton", "StationeryPopupScrollFrameScrollBarScrollUpButton", "StationeryPopupScrollFrameScrollChildFrame", "StatsFrame", "StatusTextPanelOptions", "StopwatchCloseButton", "StopwatchFrame", "StopwatchPlayPauseButton", "StopwatchResetButton", "StopwatchTabFrame", "StopwatchTicker", "SubZoneTextFrame", "TALENT_ACTIVATION_SPELLS", "TALENT_ARROW_TEXTURECOORDS", "TALENT_BRANCH_TEXTURECOORDS", "TALENT_SORT_ORDER", "TOOLTIP_DEFAULT_BACKGROUND_COLOR", "TOOLTIP_DEFAULT_COLOR", "TOTEM_MULTI_CAST_RECALL_SPELLS", "TOTEM_MULTI_CAST_SUMMON_SPELLS", "TOTEM_PRIORITIES", "TabardCharacterModelRotateLeftButton", "TabardCharacterModelRotateRightButton", "TabardFrame", "TabardFrameAcceptButton", "TabardFrameCancelButton", "TabardFrameCloseButton", "TabardFrameCostFrame", "TabardFrameCostMoneyFrame", "TabardFrameCostMoneyFrameCopperButton", "TabardFrameCostMoneyFrameGoldButton", "TabardFrameCostMoneyFrameSilverButton", "TabardFrameCustomization1", "TabardFrameCustomization1LeftButton", "TabardFrameCustomization1RightButton", "TabardFrameCustomization2", "TabardFrameCustomization2LeftButton", "TabardFrameCustomization2RightButton", "TabardFrameCustomization3", "TabardFrameCustomization3LeftButton", "TabardFrameCustomization3RightButton", "TabardFrameCustomization4", "TabardFrameCustomization4LeftButton", "TabardFrameCustomization4RightButton", "TabardFrameCustomization5", "TabardFrameCustomization5LeftButton", "TabardFrameCustomization5RightButton", "TabardFrameCustomizationFrame", "TabardFrameMoneyFrame", "TabardFrameMoneyFrameCopperButton", "TabardFrameMoneyFrameGoldButton", "TabardFrameMoneyFrameSilverButton", "TabardModel", "TalentMicroButton", "TargetFrame", "TargetFrameBuffs", "TargetFrameDebuffs", "TargetFrameDropDown", "TargetFrameDropDownButton", "TargetFrameHealthBar", "TargetFrameManaBar", "TargetFrameNumericalThreat", "TargetFrameSpellBar", "TargetFrameTextureFrame", "TargetFrameToT", "TargetFrameToTDebuff1", "TargetFrameToTDebuff1Cooldown", "TargetFrameToTDebuff2", "TargetFrameToTDebuff2Cooldown", "TargetFrameToTDebuff3", "TargetFrameToTDebuff3Cooldown", "TargetFrameToTDebuff4", "TargetFrameToTDebuff4Cooldown", "TargetFrameToTHealthBar", "TargetFrameToTManaBar", "TargetFrameToTTextureFrame", "TaxiButtonTypes", "TaxiCloseButton", "TaxiFrame", "TaxiRouteMap", "TempEnchant1", "TempEnchant2", "TemporaryEnchantFrame", "TextEmoteSpeechList", "TicketStatusFrame", "TicketStatusFrameButton", "TimeManagerAlarmAMPMDropDown", "TimeManagerAlarmAMPMDropDownButton", "TimeManagerAlarmEnabledButton", "TimeManagerAlarmHourDropDown", "TimeManagerAlarmHourDropDownButton", "TimeManagerAlarmMessageEditBox", "TimeManagerAlarmMessageFrame", "TimeManagerAlarmMinuteDropDown", "TimeManagerAlarmMinuteDropDownButton", "TimeManagerAlarmTimeFrame", "TimeManagerClockButton", "TimeManagerCloseButton", "TimeManagerFrame", "TimeManagerLocalTimeCheck", "TimeManagerMilitaryTimeCheck", "TimeManagerStopwatchCheck", "TimeManagerStopwatchFrame", "TokenFrame", "TokenFrameCancelButton", "TokenFrameContainer", "TokenFrameContainerButton1", "TokenFrameContainerButton10", "TokenFrameContainerButton11", "TokenFrameContainerButton12", "TokenFrameContainerButton13", "TokenFrameContainerButton14", "TokenFrameContainerButton15", "TokenFrameContainerButton16", "TokenFrameContainerButton17", "TokenFrameContainerButton18", "TokenFrameContainerButton19", "TokenFrameContainerButton2", "TokenFrameContainerButton20", "TokenFrameContainerButton21", "TokenFrameContainerButton3", "TokenFrameContainerButton4", "TokenFrameContainerButton5", "TokenFrameContainerButton6", "TokenFrameContainerButton7", "TokenFrameContainerButton8", "TokenFrameContainerButton9", "TokenFrameContainerScrollBar", "TokenFrameContainerScrollBarScrollDownButton", "TokenFrameContainerScrollBarScrollUpButton", "TokenFrameContainerScrollChild", "TokenFrameMoneyFrame", "TokenFrameMoneyFrameCopperButton", "TokenFrameMoneyFrameGoldButton", "TokenFrameMoneyFrameSilverButton", "TokenFramePopup", "TokenFramePopupBackpackCheckBox", "TokenFramePopupCloseButton", "TokenFramePopupInactiveCheckBox", "TotemFrame", "TotemFrameTotem1", "TotemFrameTotem1Icon", "TotemFrameTotem1IconCooldown", "TotemFrameTotem2", "TotemFrameTotem2Icon", "TotemFrameTotem2IconCooldown", "TotemFrameTotem3", "TotemFrameTotem3Icon", "TotemFrameTotem3IconCooldown", "TotemFrameTotem4", "TotemFrameTotem4Icon", "TotemFrameTotem4IconCooldown", "TradeFrame", "TradeFrameCancelButton", "TradeFrameCloseButton", "TradeFrameTradeButton", "TradeHighlightPlayer", "TradeHighlightPlayerEnchant", "TradeHighlightRecipient", "TradeHighlightRecipientEnchant", "TradePlayerInputMoneyFrame", "TradePlayerInputMoneyFrameCopper", "TradePlayerInputMoneyFrameGold", "TradePlayerInputMoneyFrameSilver", "TradePlayerItem1", "TradePlayerItem1ItemButton", "TradePlayerItem2", "TradePlayerItem2ItemButton", "TradePlayerItem3", "TradePlayerItem3ItemButton", "TradePlayerItem4", "TradePlayerItem4ItemButton", "TradePlayerItem5", "TradePlayerItem5ItemButton", "TradePlayerItem6", "TradePlayerItem6ItemButton", "TradePlayerItem7", "TradePlayerItem7ItemButton", "TradeRecipientItem1", "TradeRecipientItem1ItemButton", "TradeRecipientItem2", "TradeRecipientItem2ItemButton", "TradeRecipientItem3", "TradeRecipientItem3ItemButton", "TradeRecipientItem4", "TradeRecipientItem4ItemButton", "TradeRecipientItem5", "TradeRecipientItem5ItemButton", "TradeRecipientItem6", "TradeRecipientItem6ItemButton", "TradeRecipientItem7", "TradeRecipientItem7ItemButton", "TradeRecipientMoneyFrame", "TradeRecipientMoneyFrameCopperButton", "TradeRecipientMoneyFrameGoldButton", "TradeRecipientMoneyFrameSilverButton", "TutorialFrame", "TutorialFrameAlertButton", "TutorialFrameAlertButtonBadge", "TutorialFrameCallOut", "TutorialFrameNextButton", "TutorialFrameOkayButton", "TutorialFramePrevButton", "TutorialFrameTextScrollChildFrame", "TutorialFrameTextScrollFrame", "TutorialFrameTextScrollFrameScrollBar", "TutorialFrameTextScrollFrameScrollBarScrollDownButton", "TutorialFrameTextScrollFrameScrollBarScrollUpButton", "TutorialTextBorder", "UIChildWindows", "UIDROPDOWNMENU_INIT_MENU", "UIErrorsFrame", "UIFrameCache", "UIMenus", "UIPARENT_MANAGED_FRAME_POSITIONS", "UIPanelWindows", "UIParent", "UISpecialFrames", "UnitFramePanelOptions", "UnitLootMethod", "UnitPopupButtons", "UnitPopupFrames", "UnitPopupMenus", "UnitPopupShown", "VEHICLE_TEXTURES", "VIEWABLE_ACTION_BAR_PAGES", "VISIBLE_WATCHES", "VOICECHAT_TALKERS", "VehicleMenuBar", "VehicleMenuBarActionButton1", "VehicleMenuBarActionButton1Cooldown", "VehicleMenuBarActionButton2", "VehicleMenuBarActionButton2Cooldown", "VehicleMenuBarActionButton3", "VehicleMenuBarActionButton3Cooldown", "VehicleMenuBarActionButton4", "VehicleMenuBarActionButton4Cooldown", "VehicleMenuBarActionButton5", "VehicleMenuBarActionButton5Cooldown", "VehicleMenuBarActionButton6", "VehicleMenuBarActionButton6Cooldown", "VehicleMenuBarActionButtonFrame", "VehicleMenuBarArtFrame", "VehicleMenuBarHealthBar", "VehicleMenuBarLeaveButton", "VehicleMenuBarPitchDownButton", "VehicleMenuBarPitchSlider", "VehicleMenuBarPitchUpButton", "VehicleMenuBarPowerBar", "VehicleSeatIndicator", "VehicleSeatIndicatorDropDown", "VehicleSeatIndicatorDropDownButton", "VideoOptionsEffectsPanel", "VideoOptionsEffectsPanelClutterDensity", "VideoOptionsEffectsPanelClutterRadius", "VideoOptionsEffectsPanelDeathEffect", "VideoOptionsEffectsPanelEnvironmentDetail", "VideoOptionsEffectsPanelFullScreenGlow", "VideoOptionsEffectsPanelParticleDensity", "VideoOptionsEffectsPanelPlayerTexture", "VideoOptionsEffectsPanelProjectedTextures", "VideoOptionsEffectsPanelQuality", "VideoOptionsEffectsPanelQualitySlider", "VideoOptionsEffectsPanelShaders", "VideoOptionsEffectsPanelShadowQuality", "VideoOptionsEffectsPanelSpecularLighting", "VideoOptionsEffectsPanelTerrainDetail", "VideoOptionsEffectsPanelTextureFiltering", "VideoOptionsEffectsPanelTextureResolution", "VideoOptionsEffectsPanelViewDistance", "VideoOptionsEffectsPanelWeatherIntensity", "VideoOptionsFrame", "VideoOptionsFrameApply", "VideoOptionsFrameCancel", "VideoOptionsFrameCategoryFrame", "VideoOptionsFrameCategoryFrameButton1", "VideoOptionsFrameCategoryFrameButton10", "VideoOptionsFrameCategoryFrameButton10Toggle", "VideoOptionsFrameCategoryFrameButton11", "VideoOptionsFrameCategoryFrameButton11Toggle", "VideoOptionsFrameCategoryFrameButton12", "VideoOptionsFrameCategoryFrameButton12Toggle", "VideoOptionsFrameCategoryFrameButton13", "VideoOptionsFrameCategoryFrameButton13Toggle", "VideoOptionsFrameCategoryFrameButton14", "VideoOptionsFrameCategoryFrameButton14Toggle", "VideoOptionsFrameCategoryFrameButton15", "VideoOptionsFrameCategoryFrameButton15Toggle", "VideoOptionsFrameCategoryFrameButton16", "VideoOptionsFrameCategoryFrameButton16Toggle", "VideoOptionsFrameCategoryFrameButton17", "VideoOptionsFrameCategoryFrameButton17Toggle", "VideoOptionsFrameCategoryFrameButton18", "VideoOptionsFrameCategoryFrameButton18Toggle", "VideoOptionsFrameCategoryFrameButton19", "VideoOptionsFrameCategoryFrameButton19Toggle", "VideoOptionsFrameCategoryFrameButton1Toggle", "VideoOptionsFrameCategoryFrameButton2", "VideoOptionsFrameCategoryFrameButton20", "VideoOptionsFrameCategoryFrameButton20Toggle", "VideoOptionsFrameCategoryFrameButton21", "VideoOptionsFrameCategoryFrameButton21Toggle", "VideoOptionsFrameCategoryFrameButton22", "VideoOptionsFrameCategoryFrameButton22Toggle", "VideoOptionsFrameCategoryFrameButton23", "VideoOptionsFrameCategoryFrameButton23Toggle", "VideoOptionsFrameCategoryFrameButton2Toggle", "VideoOptionsFrameCategoryFrameButton3", "VideoOptionsFrameCategoryFrameButton3Toggle", "VideoOptionsFrameCategoryFrameButton4", "VideoOptionsFrameCategoryFrameButton4Toggle", "VideoOptionsFrameCategoryFrameButton5", "VideoOptionsFrameCategoryFrameButton5Toggle", "VideoOptionsFrameCategoryFrameButton6", "VideoOptionsFrameCategoryFrameButton6Toggle", "VideoOptionsFrameCategoryFrameButton7", "VideoOptionsFrameCategoryFrameButton7Toggle", "VideoOptionsFrameCategoryFrameButton8", "VideoOptionsFrameCategoryFrameButton8Toggle", "VideoOptionsFrameCategoryFrameButton9", "VideoOptionsFrameCategoryFrameButton9Toggle", "VideoOptionsFrameCategoryFrameList", "VideoOptionsFrameCategoryFrameListScrollBar", "VideoOptionsFrameCategoryFrameListScrollBarScrollDownButton", "VideoOptionsFrameCategoryFrameListScrollBarScrollUpButton", "VideoOptionsFrameCategoryFrameListScrollChildFrame", "VideoOptionsFrameDefaults", "VideoOptionsFrameOkay", "VideoOptionsFramePanelContainer", "VideoOptionsResolutionPanel", "VideoOptionsResolutionPanelBrightness", "VideoOptionsResolutionPanelDesktopGamma", "VideoOptionsResolutionPanelDisableResize", "VideoOptionsResolutionPanelFixInputLag", "VideoOptionsResolutionPanelGammaSlider", "VideoOptionsResolutionPanelHardwareCursor", "VideoOptionsResolutionPanelMaximized", "VideoOptionsResolutionPanelMultiSampleDropDown", "VideoOptionsResolutionPanelMultiSampleDropDownButton", "VideoOptionsResolutionPanelRefreshDropDown", "VideoOptionsResolutionPanelRefreshDropDownButton", "VideoOptionsResolutionPanelResolutionDropDown", "VideoOptionsResolutionPanelResolutionDropDownButton", "VideoOptionsResolutionPanelTripleBuffer", "VideoOptionsResolutionPanelUIScaleSlider", "VideoOptionsResolutionPanelUseUIScale", "VideoOptionsResolutionPanelVSync", "VideoOptionsResolutionPanelWindowed", "VideoOptionsStereoPanel", "VideoOptionsStereoPanelConvergence", "VideoOptionsStereoPanelEnabled", "VideoOptionsStereoPanelEyeSeparation", "VideoOptionsStereoPanelHardwareCursor", "VideoStereoPanelOptions", "VoiceChatTalkers", "VoiceChatTalkersButton1", "VoiceChatTalkersButton1SecureButton", "VoiceChatTalkersButton1Speaker", "VoiceChatTalkersSpeaker", "VoiceMacroMenu", "VoiceMacroMenuButton1", "VoiceMacroMenuButton10", "VoiceMacroMenuButton11", "VoiceMacroMenuButton12", "VoiceMacroMenuButton13", "VoiceMacroMenuButton14", "VoiceMacroMenuButton15", "VoiceMacroMenuButton16", "VoiceMacroMenuButton17", "VoiceMacroMenuButton18", "VoiceMacroMenuButton19", "VoiceMacroMenuButton2", "VoiceMacroMenuButton20", "VoiceMacroMenuButton21", "VoiceMacroMenuButton22", "VoiceMacroMenuButton23", "VoiceMacroMenuButton24", "VoiceMacroMenuButton25", "VoiceMacroMenuButton26", "VoiceMacroMenuButton27", "VoiceMacroMenuButton28", "VoiceMacroMenuButton29", "VoiceMacroMenuButton3", "VoiceMacroMenuButton30", "VoiceMacroMenuButton31", "VoiceMacroMenuButton32", "VoiceMacroMenuButton4", "VoiceMacroMenuButton5", "VoiceMacroMenuButton6", "VoiceMacroMenuButton7", "VoiceMacroMenuButton8", "VoiceMacroMenuButton9", "VoicePanelOptions", "WARLOCK_PET_BONUS", "WATCHFRAME_ACHIEVEMENTLINES", "WATCHFRAME_FLAGS", "WATCHFRAME_LINKBUTTONS", "WATCHFRAME_OBJECTIVEHANDLERS", "WATCHFRAME_QUESTLINES", "WATCHFRAME_TIMEDCRITERIA", "WATCHFRAME_TIMERLINES", "WHOFRAME_DROPDOWN_LIST", "WORLDMAP_DEBUG_ICON_INFO", "WORLDMAP_SETTINGS", "WORLDSTATEALWAYSUPFRAME_SUSPENDEDCHATFRAMES", "WatchFrame", "WatchFrameCollapseExpandButton", "WatchFrameDropDown", "WatchFrameDropDownButton", "WatchFrameHeader", "WatchFrameHeaderDropDown", "WatchFrameHeaderDropDownButton", "WatchFrameLine1", "WatchFrameLines", "WhoFrame", "WhoFrameAddFriendButton", "WhoFrameButton1", "WhoFrameButton10", "WhoFrameButton11", "WhoFrameButton12", "WhoFrameButton13", "WhoFrameButton14", "WhoFrameButton15", "WhoFrameButton16", "WhoFrameButton17", "WhoFrameButton2", "WhoFrameButton3", "WhoFrameButton4", "WhoFrameButton5", "WhoFrameButton6", "WhoFrameButton7", "WhoFrameButton8", "WhoFrameButton9", "WhoFrameColumnHeader1", "WhoFrameColumnHeader2", "WhoFrameColumnHeader3", "WhoFrameColumnHeader4", "WhoFrameDropDown", "WhoFrameDropDownButton", "WhoFrameEditBox", "WhoFrameGroupInviteButton", "WhoFrameWhoButton", "WhoListScrollFrame", "WhoListScrollFrameScrollBar", "WhoListScrollFrameScrollBarScrollDownButton", "WhoListScrollFrameScrollBarScrollUpButton", "WhoListScrollFrameScrollChildFrame", "WintergraspTimer", "WorldFrame", "WorldMapBlobFrame", "WorldMapButton", "WorldMapCompareTooltip1", "WorldMapCompareTooltip2", "WorldMapCompareTooltip3", "WorldMapContinentDropDown", "WorldMapContinentDropDownButton", "WorldMapCorpse", "WorldMapDeathRelease", "WorldMapDetailFrame", "WorldMapFlag1", "WorldMapFlag2", "WorldMapFrame", "WorldMapFrameAreaFrame", "WorldMapFrameCloseButton", "WorldMapFrameSizeDownButton", "WorldMapFrameSizeUpButton", "WorldMapLevelDownButton", "WorldMapLevelDropDown", "WorldMapLevelDropDownButton", "WorldMapLevelUpButton", "WorldMapMagnifyingGlassButton", "WorldMapPOIFrame", "WorldMapParty1", "WorldMapParty2", "WorldMapParty3", "WorldMapParty4", "WorldMapPing", "WorldMapPlayer", "WorldMapPositioningGuide", "WorldMapQuestDetailScrollChildFrame", "WorldMapQuestDetailScrollFrame", "WorldMapQuestDetailScrollFrameScrollBar", "WorldMapQuestDetailScrollFrameScrollBarScrollDownButton", "WorldMapQuestDetailScrollFrameScrollBarScrollUpButton", "WorldMapQuestFrame0", "WorldMapQuestHighlightedFrame", "WorldMapQuestRewardScrollChildFrame", "WorldMapQuestRewardScrollFrame", "WorldMapQuestRewardScrollFrameScrollBar", "WorldMapQuestRewardScrollFrameScrollBarScrollDownButton", "WorldMapQuestRewardScrollFrameScrollBarScrollUpButton", "WorldMapQuestScrollChildFrame", "WorldMapQuestScrollFrame", "WorldMapQuestScrollFrameScrollBar", "WorldMapQuestScrollFrameScrollBarScrollDownButton", "WorldMapQuestScrollFrameScrollBarScrollUpButton", "WorldMapQuestSelectedFrame", "WorldMapQuestShowObjectives", "WorldMapRaid1", "WorldMapRaid10", "WorldMapRaid11", "WorldMapRaid12", "WorldMapRaid13", "WorldMapRaid14", "WorldMapRaid15", "WorldMapRaid16", "WorldMapRaid17", "WorldMapRaid18", "WorldMapRaid19", "WorldMapRaid2", "WorldMapRaid20", "WorldMapRaid21", "WorldMapRaid22", "WorldMapRaid23", "WorldMapRaid24", "WorldMapRaid25", "WorldMapRaid26", "WorldMapRaid27", "WorldMapRaid28", "WorldMapRaid29", "WorldMapRaid3", "WorldMapRaid30", "WorldMapRaid31", "WorldMapRaid32", "WorldMapRaid33", "WorldMapRaid34", "WorldMapRaid35", "WorldMapRaid36", "WorldMapRaid37", "WorldMapRaid38", "WorldMapRaid39", "WorldMapRaid4", "WorldMapRaid40", "WorldMapRaid5", "WorldMapRaid6", "WorldMapRaid7", "WorldMapRaid8", "WorldMapRaid9", "WorldMapScreenAnchor", "WorldMapTitleButton", "WorldMapTitleDropDown", "WorldMapTitleDropDownButton", "WorldMapTooltip", "WorldMapTooltipStatusBar", "WorldMapTrackQuest", "WorldMapUnitDropDown", "WorldMapUnitDropDownButton", "WorldMapZoneDropDown", "WorldMapZoneDropDownButton", "WorldMapZoneMinimapDropDown", "WorldMapZoneMinimapDropDownButton", "WorldMapZoomOutButton", "WorldStateAlwaysUpFrame", "WorldStateScoreButton1", "WorldStateScoreButton10", "WorldStateScoreButton10ClassButton", "WorldStateScoreButton10Name", "WorldStateScoreButton11", "WorldStateScoreButton11ClassButton", "WorldStateScoreButton11Name", "WorldStateScoreButton12", "WorldStateScoreButton12ClassButton", "WorldStateScoreButton12Name", "WorldStateScoreButton13", "WorldStateScoreButton13ClassButton", "WorldStateScoreButton13Name", "WorldStateScoreButton14", "WorldStateScoreButton14ClassButton", "WorldStateScoreButton14Name", "WorldStateScoreButton15", "WorldStateScoreButton15ClassButton", "WorldStateScoreButton15Name", "WorldStateScoreButton16", "WorldStateScoreButton16ClassButton", "WorldStateScoreButton16Name", "WorldStateScoreButton17", "WorldStateScoreButton17ClassButton", "WorldStateScoreButton17Name", "WorldStateScoreButton18", "WorldStateScoreButton18ClassButton", "WorldStateScoreButton18Name", "WorldStateScoreButton19", "WorldStateScoreButton19ClassButton", "WorldStateScoreButton19Name", "WorldStateScoreButton1ClassButton", "WorldStateScoreButton1Name", "WorldStateScoreButton2", "WorldStateScoreButton20", "WorldStateScoreButton20ClassButton", "WorldStateScoreButton20Name", "WorldStateScoreButton2ClassButton", "WorldStateScoreButton2Name", "WorldStateScoreButton3", "WorldStateScoreButton3ClassButton", "WorldStateScoreButton3Name", "WorldStateScoreButton4", "WorldStateScoreButton4ClassButton", "WorldStateScoreButton4Name", "WorldStateScoreButton5", "WorldStateScoreButton5ClassButton", "WorldStateScoreButton5Name", "WorldStateScoreButton6", "WorldStateScoreButton6ClassButton", "WorldStateScoreButton6Name", "WorldStateScoreButton7", "WorldStateScoreButton7ClassButton", "WorldStateScoreButton7Name", "WorldStateScoreButton8", "WorldStateScoreButton8ClassButton", "WorldStateScoreButton8Name", "WorldStateScoreButton9", "WorldStateScoreButton9ClassButton", "WorldStateScoreButton9Name", "WorldStateScoreColumn1", "WorldStateScoreColumn2", "WorldStateScoreColumn3", "WorldStateScoreColumn4", "WorldStateScoreColumn5", "WorldStateScoreColumn6", "WorldStateScoreColumn7", "WorldStateScoreFrame", "WorldStateScoreFrameClass", "WorldStateScoreFrameCloseButton", "WorldStateScoreFrameDamageDone", "WorldStateScoreFrameDeaths", "WorldStateScoreFrameHK", "WorldStateScoreFrameHealingDone", "WorldStateScoreFrameHonorGained", "WorldStateScoreFrameKB", "WorldStateScoreFrameLeaveButton", "WorldStateScoreFrameName", "WorldStateScoreFrameTab1", "WorldStateScoreFrameTab2", "WorldStateScoreFrameTab3", "WorldStateScoreFrameTeam", "WorldStateScoreFrameTeamSkill", "WorldStateScoreScrollFrame", "WorldStateScoreScrollFrameScrollBar", "WorldStateScoreScrollFrameScrollBarScrollDownButton", "WorldStateScoreScrollFrameScrollBarScrollUpButton", "WorldStateScoreScrollFrameScrollChildFrame", "WorldStateScoreWinnerFrame", "YELLOW_FONT_COLOR", "ZoneTextFrame", "hash_ChatTypeInfoList", "hash_EmoteTokenList", "hash_SlashCmdList", "poiWorldMapQuestScrollChildFrame1_0", "runeMapping", "shineGet", "this", "uvarInfo", -- frames: FrameXML, Blizzard_CombatLog, Blizzard_CombatText, Blizzard_RaidUI, Blizzard_TimeManager, Blizzard_TokenUI "BasicScriptErrors", "BasicScriptErrorsButton", "WorldFrame", "ActionStatus", "UIParent", "AnimTimerFrame", "ShoppingTooltip1", "ShoppingTooltip2", "ShoppingTooltip3", "GameTooltip", "GameTooltipStatusBar", "SmallTextTooltip", "DropDownList1", "DropDownList1Backdrop", "DropDownList1MenuBackdrop", "DropDownList1Button1", "DropDownList1Button1ColorSwatch", "DropDownList1Button1ExpandArrow", "DropDownList1Button1InvisibleButton", "DropDownList1Button2", "DropDownList1Button2ColorSwatch", "DropDownList1Button2ExpandArrow", "DropDownList1Button2InvisibleButton", "DropDownList1Button3", "DropDownList1Button3ColorSwatch", "DropDownList1Button3ExpandArrow", "DropDownList1Button3InvisibleButton", "DropDownList1Button4", "DropDownList1Button4ColorSwatch", "DropDownList1Button4ExpandArrow", "DropDownList1Button4InvisibleButton", "DropDownList1Button5", "DropDownList1Button5ColorSwatch", "DropDownList1Button5ExpandArrow", "DropDownList1Button5InvisibleButton", "DropDownList1Button6", "DropDownList1Button6ColorSwatch", "DropDownList1Button6ExpandArrow", "DropDownList1Button6InvisibleButton", "DropDownList1Button7", "DropDownList1Button7ColorSwatch", "DropDownList1Button7ExpandArrow", "DropDownList1Button7InvisibleButton", "DropDownList1Button8", "DropDownList1Button8ColorSwatch", "DropDownList1Button8ExpandArrow", "DropDownList1Button8InvisibleButton", "DropDownList2", "DropDownList2Backdrop", "DropDownList2MenuBackdrop", "DropDownList2Button1", "DropDownList2Button1ColorSwatch", "DropDownList2Button1ExpandArrow", "DropDownList2Button1InvisibleButton", "DropDownList2Button2", "DropDownList2Button2ColorSwatch", "DropDownList2Button2ExpandArrow", "DropDownList2Button2InvisibleButton", "DropDownList2Button3", "DropDownList2Button3ColorSwatch", "DropDownList2Button3ExpandArrow", "DropDownList2Button3InvisibleButton", "DropDownList2Button4", "DropDownList2Button4ColorSwatch", "DropDownList2Button4ExpandArrow", "DropDownList2Button4InvisibleButton", "DropDownList2Button5", "DropDownList2Button5ColorSwatch", "DropDownList2Button5ExpandArrow", "DropDownList2Button5InvisibleButton", "DropDownList2Button6", "DropDownList2Button6ColorSwatch", "DropDownList2Button6ExpandArrow", "DropDownList2Button6InvisibleButton", "DropDownList2Button7", "DropDownList2Button7ColorSwatch", "DropDownList2Button7ExpandArrow", "DropDownList2Button7InvisibleButton", "DropDownList2Button8", "DropDownList2Button8ColorSwatch", "DropDownList2Button8ExpandArrow", "DropDownList2Button8InvisibleButton", "SecureStateDriverManager", "SecureHoverDriverManager", "SecureHandlersUpdateFrame", "GameMenuFrame", "GameMenuButtonOptions", "GameMenuButtonSoundOptions", "GameMenuButtonUIOptions", "GameMenuButtonMacOptions", "GameMenuButtonKeybindings", "GameMenuButtonMacros", "GameMenuButtonRatings", "GameMenuButtonLogout", "GameMenuButtonQuit", "GameMenuButtonContinue", "UIErrorsFrame", "AutoCompleteBox", "AutoCompleteButton1", "AutoCompleteButton2", "AutoCompleteButton3", "AutoCompleteButton4", "AutoCompleteButton5", "StaticPopup1", "StaticPopup1ExtraFrame", "StaticPopup1CloseButton", "StaticPopup1Button1", "StaticPopup1Button2", "StaticPopup1Button3", "StaticPopup1EditBox", "StaticPopup1WideEditBox", "StaticPopup1MoneyFrame", "StaticPopup1MoneyFrameCopperButton", "StaticPopup1MoneyFrameSilverButton", "StaticPopup1MoneyFrameGoldButton", "StaticPopup1MoneyInputFrame", "StaticPopup1MoneyInputFrameGold", "StaticPopup1MoneyInputFrameSilver", "StaticPopup1MoneyInputFrameCopper", "StaticPopup1ItemFrame", "StaticPopup2", "StaticPopup2ExtraFrame", "StaticPopup2CloseButton", "StaticPopup2Button1", "StaticPopup2Button2", "StaticPopup2Button3", "StaticPopup2EditBox", "StaticPopup2WideEditBox", "StaticPopup2MoneyFrame", "StaticPopup2MoneyFrameCopperButton", "StaticPopup2MoneyFrameSilverButton", "StaticPopup2MoneyFrameGoldButton", "StaticPopup2MoneyInputFrame", "StaticPopup2MoneyInputFrameGold", "StaticPopup2MoneyInputFrameSilver", "StaticPopup2MoneyInputFrameCopper", "StaticPopup2ItemFrame", "StaticPopup3", "StaticPopup3ExtraFrame", "StaticPopup3CloseButton", "StaticPopup3Button1", "StaticPopup3Button2", "StaticPopup3Button3", "StaticPopup3EditBox", "StaticPopup3WideEditBox", "StaticPopup3MoneyFrame", "StaticPopup3MoneyFrameCopperButton", "StaticPopup3MoneyFrameSilverButton", "StaticPopup3MoneyFrameGoldButton", "StaticPopup3MoneyInputFrame", "StaticPopup3MoneyInputFrameGold", "StaticPopup3MoneyInputFrameSilver", "StaticPopup3MoneyInputFrameCopper", "StaticPopup3ItemFrame", "StaticPopup4", "StaticPopup4ExtraFrame", "StaticPopup4CloseButton", "StaticPopup4Button1", "StaticPopup4Button2", "StaticPopup4Button3", "StaticPopup4EditBox", "StaticPopup4WideEditBox", "StaticPopup4MoneyFrame", "StaticPopup4MoneyFrameCopperButton", "StaticPopup4MoneyFrameSilverButton", "StaticPopup4MoneyFrameGoldButton", "StaticPopup4MoneyInputFrame", "StaticPopup4MoneyInputFrameGold", "StaticPopup4MoneyInputFrameSilver", "StaticPopup4MoneyInputFrameCopper", "StaticPopup4ItemFrame", "VideoOptionsFrame", "VideoOptionsFrameCategoryFrame", "VideoOptionsFrameCategoryFrameList", "VideoOptionsFrameCategoryFrameListScrollBar", "VideoOptionsFrameCategoryFrameListScrollBarScrollUpButton", "VideoOptionsFrameCategoryFrameListScrollBarScrollDownButton", "VideoOptionsFrameCategoryFrameListScrollChildFrame", "VideoOptionsFrameCategoryFrameButton1", "VideoOptionsFrameCategoryFrameButton1Toggle", "VideoOptionsFrameCategoryFrameButton2", "VideoOptionsFrameCategoryFrameButton2Toggle", "VideoOptionsFrameCategoryFrameButton3", "VideoOptionsFrameCategoryFrameButton3Toggle", "VideoOptionsFrameCategoryFrameButton4", "VideoOptionsFrameCategoryFrameButton4Toggle", "VideoOptionsFrameCategoryFrameButton5", "VideoOptionsFrameCategoryFrameButton5Toggle", "VideoOptionsFrameCategoryFrameButton6", "VideoOptionsFrameCategoryFrameButton6Toggle", "VideoOptionsFrameCategoryFrameButton7", "VideoOptionsFrameCategoryFrameButton7Toggle", "VideoOptionsFrameCategoryFrameButton8", "VideoOptionsFrameCategoryFrameButton8Toggle", "VideoOptionsFrameCategoryFrameButton9", "VideoOptionsFrameCategoryFrameButton9Toggle", "VideoOptionsFrameCategoryFrameButton10", "VideoOptionsFrameCategoryFrameButton10Toggle", "VideoOptionsFrameCategoryFrameButton11", "VideoOptionsFrameCategoryFrameButton11Toggle", "VideoOptionsFrameCategoryFrameButton12", "VideoOptionsFrameCategoryFrameButton12Toggle", "VideoOptionsFrameCategoryFrameButton13", "VideoOptionsFrameCategoryFrameButton13Toggle", "VideoOptionsFrameCategoryFrameButton14", "VideoOptionsFrameCategoryFrameButton14Toggle", "VideoOptionsFrameCategoryFrameButton15", "VideoOptionsFrameCategoryFrameButton15Toggle", "VideoOptionsFrameCategoryFrameButton16", "VideoOptionsFrameCategoryFrameButton16Toggle", "VideoOptionsFrameCategoryFrameButton17", "VideoOptionsFrameCategoryFrameButton17Toggle", "VideoOptionsFrameCategoryFrameButton18", "VideoOptionsFrameCategoryFrameButton18Toggle", "VideoOptionsFrameCategoryFrameButton19", "VideoOptionsFrameCategoryFrameButton19Toggle", "VideoOptionsFrameCategoryFrameButton20", "VideoOptionsFrameCategoryFrameButton20Toggle", "VideoOptionsFrameCategoryFrameButton21", "VideoOptionsFrameCategoryFrameButton21Toggle", "VideoOptionsFrameCategoryFrameButton22", "VideoOptionsFrameCategoryFrameButton22Toggle", "VideoOptionsFrameCategoryFrameButton23", "VideoOptionsFrameCategoryFrameButton23Toggle", "VideoOptionsFramePanelContainer", "VideoOptionsFrameApply", "VideoOptionsFrameCancel", "VideoOptionsFrameOkay", "VideoOptionsFrameDefaults", "VideoOptionsResolutionPanel", "VideoOptionsResolutionPanelResolutionDropDown", "VideoOptionsResolutionPanelResolutionDropDownButton", "DropDownList1Button9", "DropDownList1Button9ColorSwatch", "DropDownList1Button9ExpandArrow", "DropDownList1Button9InvisibleButton", "DropDownList2Button9", "DropDownList2Button9ColorSwatch", "DropDownList2Button9ExpandArrow", "DropDownList2Button9InvisibleButton", "DropDownList1Button10", "DropDownList1Button10ColorSwatch", "DropDownList1Button10ExpandArrow", "DropDownList1Button10InvisibleButton", "DropDownList2Button10", "DropDownList2Button10ColorSwatch", "DropDownList2Button10ExpandArrow", "DropDownList2Button10InvisibleButton", "DropDownList1Button11", "DropDownList1Button11ColorSwatch", "DropDownList1Button11ExpandArrow", "DropDownList1Button11InvisibleButton", "DropDownList2Button11", "DropDownList2Button11ColorSwatch", "DropDownList2Button11ExpandArrow", "DropDownList2Button11InvisibleButton", "DropDownList1Button12", "DropDownList1Button12ColorSwatch", "DropDownList1Button12ExpandArrow", "DropDownList1Button12InvisibleButton", "DropDownList2Button12", "DropDownList2Button12ColorSwatch", "DropDownList2Button12ExpandArrow", "DropDownList2Button12InvisibleButton", "DropDownList1Button13", "DropDownList1Button13ColorSwatch", "DropDownList1Button13ExpandArrow", "DropDownList1Button13InvisibleButton", "DropDownList2Button13", "DropDownList2Button13ColorSwatch", "DropDownList2Button13ExpandArrow", "DropDownList2Button13InvisibleButton", "DropDownList1Button14", "DropDownList1Button14ColorSwatch", "DropDownList1Button14ExpandArrow", "DropDownList1Button14InvisibleButton", "DropDownList2Button14", "DropDownList2Button14ColorSwatch", "DropDownList2Button14ExpandArrow", "DropDownList2Button14InvisibleButton", "DropDownList1Button15", "DropDownList1Button15ColorSwatch", "DropDownList1Button15ExpandArrow", "DropDownList1Button15InvisibleButton", "DropDownList2Button15", "DropDownList2Button15ColorSwatch", "DropDownList2Button15ExpandArrow", "DropDownList2Button15InvisibleButton", "DropDownList1Button16", "DropDownList1Button16ColorSwatch", "DropDownList1Button16ExpandArrow", "DropDownList1Button16InvisibleButton", "DropDownList2Button16", "DropDownList2Button16ColorSwatch", "DropDownList2Button16ExpandArrow", "DropDownList2Button16InvisibleButton", "DropDownList1Button17", "DropDownList1Button17ColorSwatch", "DropDownList1Button17ExpandArrow", "DropDownList1Button17InvisibleButton", "DropDownList2Button17", "DropDownList2Button17ColorSwatch", "DropDownList2Button17ExpandArrow", "DropDownList2Button17InvisibleButton", "DropDownList1Button18", "DropDownList1Button18ColorSwatch", "DropDownList1Button18ExpandArrow", "DropDownList1Button18InvisibleButton", "DropDownList2Button18", "DropDownList2Button18ColorSwatch", "DropDownList2Button18ExpandArrow", "DropDownList2Button18InvisibleButton", "DropDownList1Button19", "DropDownList1Button19ColorSwatch", "DropDownList1Button19ExpandArrow", "DropDownList1Button19InvisibleButton", "DropDownList2Button19", "DropDownList2Button19ColorSwatch", "DropDownList2Button19ExpandArrow", "DropDownList2Button19InvisibleButton", "VideoOptionsResolutionPanelRefreshDropDown", "VideoOptionsResolutionPanelRefreshDropDownButton", "VideoOptionsResolutionPanelMultiSampleDropDown", "VideoOptionsResolutionPanelMultiSampleDropDownButton", "VideoOptionsResolutionPanelUseUIScale", "VideoOptionsResolutionPanelUIScaleSlider", "VideoOptionsResolutionPanelVSync", "VideoOptionsResolutionPanelTripleBuffer", "VideoOptionsResolutionPanelHardwareCursor", "VideoOptionsResolutionPanelFixInputLag", "VideoOptionsResolutionPanelWindowed", "VideoOptionsResolutionPanelMaximized", "VideoOptionsResolutionPanelDisableResize", "VideoOptionsResolutionPanelBrightness", "VideoOptionsResolutionPanelDesktopGamma", "VideoOptionsResolutionPanelGammaSlider", "VideoOptionsEffectsPanel", "VideoOptionsEffectsPanelQuality", "VideoOptionsEffectsPanelQualitySlider", "VideoOptionsEffectsPanelViewDistance", "VideoOptionsEffectsPanelTerrainDetail", "VideoOptionsEffectsPanelParticleDensity", "VideoOptionsEffectsPanelShadowQuality", "VideoOptionsEffectsPanelEnvironmentDetail", "VideoOptionsEffectsPanelClutterDensity", "VideoOptionsEffectsPanelClutterRadius", "VideoOptionsEffectsPanelTextureResolution", "VideoOptionsEffectsPanelTextureFiltering", "VideoOptionsEffectsPanelWeatherIntensity", "VideoOptionsEffectsPanelPlayerTexture", "VideoOptionsEffectsPanelShaders", "VideoOptionsEffectsPanelSpecularLighting", "VideoOptionsEffectsPanelFullScreenGlow", "VideoOptionsEffectsPanelDeathEffect", "VideoOptionsEffectsPanelProjectedTextures", "VideoOptionsStereoPanel", "VideoOptionsStereoPanelEnabled", "VideoOptionsStereoPanelHardwareCursor", "VideoOptionsStereoPanelConvergence", "VideoOptionsStereoPanelEyeSeparation", "AudioOptionsFrame", "AudioOptionsFrameCategoryFrame", "AudioOptionsFrameCategoryFrameList", "AudioOptionsFrameCategoryFrameListScrollBar", "AudioOptionsFrameCategoryFrameListScrollBarScrollUpButton", "AudioOptionsFrameCategoryFrameListScrollBarScrollDownButton", "AudioOptionsFrameCategoryFrameListScrollChildFrame", "AudioOptionsFrameCategoryFrameButton1", "AudioOptionsFrameCategoryFrameButton1Toggle", "AudioOptionsFrameCategoryFrameButton2", "AudioOptionsFrameCategoryFrameButton2Toggle", "AudioOptionsFrameCategoryFrameButton3", "AudioOptionsFrameCategoryFrameButton3Toggle", "AudioOptionsFrameCategoryFrameButton4", "AudioOptionsFrameCategoryFrameButton4Toggle", "AudioOptionsFrameCategoryFrameButton5", "AudioOptionsFrameCategoryFrameButton5Toggle", "AudioOptionsFrameCategoryFrameButton6", "AudioOptionsFrameCategoryFrameButton6Toggle", "AudioOptionsFrameCategoryFrameButton7", "AudioOptionsFrameCategoryFrameButton7Toggle", "AudioOptionsFrameCategoryFrameButton8", "AudioOptionsFrameCategoryFrameButton8Toggle", "AudioOptionsFrameCategoryFrameButton9", "AudioOptionsFrameCategoryFrameButton9Toggle", "AudioOptionsFrameCategoryFrameButton10", "AudioOptionsFrameCategoryFrameButton10Toggle", "AudioOptionsFrameCategoryFrameButton11", "AudioOptionsFrameCategoryFrameButton11Toggle", "AudioOptionsFrameCategoryFrameButton12", "AudioOptionsFrameCategoryFrameButton12Toggle", "AudioOptionsFrameCategoryFrameButton13", "AudioOptionsFrameCategoryFrameButton13Toggle", "AudioOptionsFrameCategoryFrameButton14", "AudioOptionsFrameCategoryFrameButton14Toggle", "AudioOptionsFrameCategoryFrameButton15", "AudioOptionsFrameCategoryFrameButton15Toggle", "AudioOptionsFrameCategoryFrameButton16", "AudioOptionsFrameCategoryFrameButton16Toggle", "AudioOptionsFrameCategoryFrameButton17", "AudioOptionsFrameCategoryFrameButton17Toggle", "AudioOptionsFrameCategoryFrameButton18", "AudioOptionsFrameCategoryFrameButton18Toggle", "AudioOptionsFrameCategoryFrameButton19", "AudioOptionsFrameCategoryFrameButton19Toggle", "AudioOptionsFrameCategoryFrameButton20", "AudioOptionsFrameCategoryFrameButton20Toggle", "AudioOptionsFrameCategoryFrameButton21", "AudioOptionsFrameCategoryFrameButton21Toggle", "AudioOptionsFrameCategoryFrameButton22", "AudioOptionsFrameCategoryFrameButton22Toggle", "AudioOptionsFrameCategoryFrameButton23", "AudioOptionsFrameCategoryFrameButton23Toggle", "AudioOptionsFramePanelContainer", "AudioOptionsFrameCancel", "AudioOptionsFrameOkay", "AudioOptionsFrameDefaults", "AudioOptionsSoundPanel", "AudioOptionsSoundPanelEnableSound", "AudioOptionsSoundPanelPlayback", "AudioOptionsSoundPanelSoundEffects", "AudioOptionsSoundPanelErrorSpeech", "AudioOptionsSoundPanelEmoteSounds", "AudioOptionsSoundPanelPetSounds", "AudioOptionsSoundPanelMusic", "AudioOptionsSoundPanelLoopMusic", "AudioOptionsSoundPanelAmbientSounds", "AudioOptionsSoundPanelSoundInBG", "AudioOptionsSoundPanelReverb", "AudioOptionsSoundPanelHRTF", "AudioOptionsSoundPanelEnableDSPs", "AudioOptionsSoundPanelSoundQuality", "AudioOptionsSoundPanelHardware", "AudioOptionsSoundPanelHardwareDropDown", "AudioOptionsSoundPanelHardwareDropDownButton", "AudioOptionsSoundPanelSoundChannels", "AudioOptionsSoundPanelUseHardware", "AudioOptionsSoundPanelVolume", "AudioOptionsSoundPanelMasterVolume", "AudioOptionsSoundPanelSoundVolume", "AudioOptionsSoundPanelMusicVolume", "AudioOptionsSoundPanelAmbienceVolume", "AudioOptionsVoicePanel", "AudioOptionsVoicePanelDisabledMessage", "AudioOptionsVoicePanelEnableVoice", "AudioOptionsVoicePanelTalking", "AudioOptionsVoicePanelEnableMicrophone", "AudioOptionsVoicePanelInputDeviceDropDown", "AudioOptionsVoicePanelInputDeviceDropDownButton", "AudioOptionsVoicePanelMicrophoneVolume", "AudioOptionsVoicePanelMicTest", "RecordLoopbackSoundButton", "PlayLoopbackSoundButton", "LoopbackVUMeter", "AudioOptionsVoicePanelBinding", "AudioOptionsVoicePanelChatModeDropDown", "AudioOptionsVoicePanelChatModeDropDownButton", "AudioOptionsVoicePanelChatMode1", "AudioOptionsVoicePanelChatMode1KeyBindingButton", "AudioOptionsVoicePanelPushToTalkSound", "AudioOptionsVoicePanelBindingOutput", "AudioOptionsVoicePanelChatMode2", "AudioOptionsVoicePanelVoiceActivateSlider", "AudioOptionsVoicePanelListening", "AudioOptionsVoicePanelOutputDeviceDropDown", "AudioOptionsVoicePanelOutputDeviceDropDownButton", "AudioOptionsVoicePanelSpeakerVolume", "AudioOptionsVoicePanelAudio", "AudioOptionsVoicePanelSoundFade", "AudioOptionsVoicePanelMusicFade", "AudioOptionsVoicePanelAmbienceFade", "InterfaceOptionsFrame", "InterfaceOptionsFrameCancel", "InterfaceOptionsFrameOkay", "InterfaceOptionsFrameDefaults", "InterfaceOptionsFrameCategories", "InterfaceOptionsFrameCategoriesList", "InterfaceOptionsFrameCategoriesListScrollBar", "InterfaceOptionsFrameCategoriesListScrollBarScrollUpButton", "InterfaceOptionsFrameCategoriesListScrollBarScrollDownButton", "InterfaceOptionsFrameCategoriesListScrollChildFrame", "InterfaceOptionsFrameCategoriesButton1", "InterfaceOptionsFrameCategoriesButton1Toggle", "InterfaceOptionsFrameCategoriesButton2", "InterfaceOptionsFrameCategoriesButton2Toggle", "InterfaceOptionsFrameCategoriesButton3", "InterfaceOptionsFrameCategoriesButton3Toggle", "InterfaceOptionsFrameCategoriesButton4", "InterfaceOptionsFrameCategoriesButton4Toggle", "InterfaceOptionsFrameCategoriesButton5", "InterfaceOptionsFrameCategoriesButton5Toggle", "InterfaceOptionsFrameCategoriesButton6", "InterfaceOptionsFrameCategoriesButton6Toggle", "InterfaceOptionsFrameCategoriesButton7", "InterfaceOptionsFrameCategoriesButton7Toggle", "InterfaceOptionsFrameCategoriesButton8", "InterfaceOptionsFrameCategoriesButton8Toggle", "InterfaceOptionsFrameCategoriesButton9", "InterfaceOptionsFrameCategoriesButton9Toggle", "InterfaceOptionsFrameCategoriesButton10", "InterfaceOptionsFrameCategoriesButton10Toggle", "InterfaceOptionsFrameCategoriesButton11", "InterfaceOptionsFrameCategoriesButton11Toggle", "InterfaceOptionsFrameCategoriesButton12", "InterfaceOptionsFrameCategoriesButton12Toggle", "InterfaceOptionsFrameCategoriesButton13", "InterfaceOptionsFrameCategoriesButton13Toggle", "InterfaceOptionsFrameCategoriesButton14", "InterfaceOptionsFrameCategoriesButton14Toggle", "InterfaceOptionsFrameCategoriesButton15", "InterfaceOptionsFrameCategoriesButton15Toggle", "InterfaceOptionsFrameCategoriesButton16", "InterfaceOptionsFrameCategoriesButton16Toggle", "InterfaceOptionsFrameCategoriesButton17", "InterfaceOptionsFrameCategoriesButton17Toggle", "InterfaceOptionsFrameCategoriesButton18", "InterfaceOptionsFrameCategoriesButton18Toggle", "InterfaceOptionsFrameCategoriesButton19", "InterfaceOptionsFrameCategoriesButton19Toggle", "InterfaceOptionsFrameCategoriesButton20", "InterfaceOptionsFrameCategoriesButton20Toggle", "InterfaceOptionsFrameCategoriesButton21", "InterfaceOptionsFrameCategoriesButton21Toggle", "InterfaceOptionsFrameCategoriesButton22", "InterfaceOptionsFrameCategoriesButton22Toggle", "InterfaceOptionsFrameCategoriesButton23", "InterfaceOptionsFrameCategoriesButton23Toggle", "InterfaceOptionsFrameAddOns", "InterfaceOptionsFrameAddOnsList", "InterfaceOptionsFrameAddOnsListScrollBar", "InterfaceOptionsFrameAddOnsListScrollBarScrollUpButton", "InterfaceOptionsFrameAddOnsListScrollBarScrollDownButton", "InterfaceOptionsFrameAddOnsListScrollChildFrame", "InterfaceOptionsFrameAddOnsButton1", "InterfaceOptionsFrameAddOnsButton1Toggle", "InterfaceOptionsFrameAddOnsButton2", "InterfaceOptionsFrameAddOnsButton2Toggle", "InterfaceOptionsFrameAddOnsButton3", "InterfaceOptionsFrameAddOnsButton3Toggle", "InterfaceOptionsFrameAddOnsButton4", "InterfaceOptionsFrameAddOnsButton4Toggle", "InterfaceOptionsFrameAddOnsButton5", "InterfaceOptionsFrameAddOnsButton5Toggle", "InterfaceOptionsFrameAddOnsButton6", "InterfaceOptionsFrameAddOnsButton6Toggle", "InterfaceOptionsFrameAddOnsButton7", "InterfaceOptionsFrameAddOnsButton7Toggle", "InterfaceOptionsFrameAddOnsButton8", "InterfaceOptionsFrameAddOnsButton8Toggle", "InterfaceOptionsFrameAddOnsButton9", "InterfaceOptionsFrameAddOnsButton9Toggle", "InterfaceOptionsFrameAddOnsButton10", "InterfaceOptionsFrameAddOnsButton10Toggle", "InterfaceOptionsFrameAddOnsButton11", "InterfaceOptionsFrameAddOnsButton11Toggle", "InterfaceOptionsFrameAddOnsButton12", "InterfaceOptionsFrameAddOnsButton12Toggle", "InterfaceOptionsFrameAddOnsButton13", "InterfaceOptionsFrameAddOnsButton13Toggle", "InterfaceOptionsFrameAddOnsButton14", "InterfaceOptionsFrameAddOnsButton14Toggle", "InterfaceOptionsFrameAddOnsButton15", "InterfaceOptionsFrameAddOnsButton15Toggle", "InterfaceOptionsFrameAddOnsButton16", "InterfaceOptionsFrameAddOnsButton16Toggle", "InterfaceOptionsFrameAddOnsButton17", "InterfaceOptionsFrameAddOnsButton17Toggle", "InterfaceOptionsFrameAddOnsButton18", "InterfaceOptionsFrameAddOnsButton18Toggle", "InterfaceOptionsFrameAddOnsButton19", "InterfaceOptionsFrameAddOnsButton19Toggle", "InterfaceOptionsFrameAddOnsButton20", "InterfaceOptionsFrameAddOnsButton20Toggle", "InterfaceOptionsFrameAddOnsButton21", "InterfaceOptionsFrameAddOnsButton21Toggle", "InterfaceOptionsFrameAddOnsButton22", "InterfaceOptionsFrameAddOnsButton22Toggle", "InterfaceOptionsFrameAddOnsButton23", "InterfaceOptionsFrameAddOnsButton23Toggle", "InterfaceOptionsFramePanelContainer", "InterfaceOptionsFrameTab1", "InterfaceOptionsFrameTab2", "InterfaceOptionsControlsPanel", "InterfaceOptionsControlsPanelStickyTargeting", "InterfaceOptionsControlsPanelAutoDismount", "InterfaceOptionsControlsPanelAutoClearAFK", "InterfaceOptionsControlsPanelBlockTrades", "InterfaceOptionsControlsPanelLootAtMouse", "InterfaceOptionsControlsPanelAutoLootCorpse", "InterfaceOptionsControlsPanelAutoLootKeyDropDown", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButton", "InterfaceOptionsCombatPanel", "InterfaceOptionsCombatPanelAttackOnAssist", "InterfaceOptionsCombatPanelAutoRange", "InterfaceOptionsCombatPanelStopAutoAttack", "InterfaceOptionsCombatPanelNameplateClassColors", "InterfaceOptionsCombatPanelAutoSelfCast", "InterfaceOptionsCombatPanelSelfCastKeyDropDown", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButton", "InterfaceOptionsCombatPanelEnemyCastBars", "InterfaceOptionsCombatPanelEnemyCastBarsOnPortrait", "InterfaceOptionsCombatPanelEnemyCastBarsOnNameplates", "InterfaceOptionsCombatPanelTargetOfTarget", "InterfaceOptionsCombatPanelTOTDropDown", "InterfaceOptionsCombatPanelTOTDropDownButton", "InterfaceOptionsCombatPanelFocusCastKeyDropDown", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButton", "InterfaceOptionsDisplayPanel", "InterfaceOptionsDisplayPanelShowCloak", "InterfaceOptionsDisplayPanelShowHelm", "InterfaceOptionsDisplayPanelRotateMinimap", "InterfaceOptionsDisplayPanelScreenEdgeFlash", "InterfaceOptionsDisplayPanelDetailedLootInfo", "InterfaceOptionsDisplayPanelShowFreeBagSpace", "InterfaceOptionsDisplayPanelShowClock", "InterfaceOptionsDisplayPanelAggroWarningDisplay", "InterfaceOptionsDisplayPanelAggroWarningDisplayButton", "InterfaceOptionsDisplayPanelShowAggroPercentage", "InterfaceOptionsDisplayPanelPlayAggroSounds", "InterfaceOptionsDisplayPanelColorblindMode", "InterfaceOptionsDisplayPanelShowItemLevel", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplay", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButton", "InterfaceOptionsDisplayPanelCinematicSubtitles", "InterfaceOptionsObjectivesPanel", "InterfaceOptionsObjectivesPanelInstantQuestText", "InterfaceOptionsObjectivesPanelAutoQuestTracking", "InterfaceOptionsObjectivesPanelAutoQuestProgress", "InterfaceOptionsObjectivesPanelMapQuestDifficulty", "InterfaceOptionsObjectivesPanelAdvancedWorldMap", "InterfaceOptionsObjectivesPanelWatchFrameWidth", "InterfaceOptionsSocialPanel", "InterfaceOptionsSocialPanelProfanityFilter", "InterfaceOptionsSocialPanelChatBubbles", "InterfaceOptionsSocialPanelPartyChat", "InterfaceOptionsSocialPanelSpamFilter", "InterfaceOptionsSocialPanelChatHoverDelay", "InterfaceOptionsSocialPanelGuildMemberAlert", "InterfaceOptionsSocialPanelGuildRecruitment", "InterfaceOptionsSocialPanelChatMouseScroll", "InterfaceOptionsSocialPanelChatStyle", "InterfaceOptionsSocialPanelChatStyleButton", "InterfaceOptionsSocialPanelWholeChatWindowClickable", "InterfaceOptionsSocialPanelConversationMode", "InterfaceOptionsSocialPanelConversationModeButton", "InterfaceOptionsSocialPanelTimestamps", "InterfaceOptionsSocialPanelTimestampsButton", "InterfaceOptionsActionBarsPanel", "InterfaceOptionsActionBarsPanelBottomLeft", "InterfaceOptionsActionBarsPanelBottomRight", "InterfaceOptionsActionBarsPanelRight", "InterfaceOptionsActionBarsPanelRightTwo", "InterfaceOptionsActionBarsPanelLockActionBars", "InterfaceOptionsActionBarsPanelAlwaysShowActionBars", "InterfaceOptionsActionBarsPanelSecureAbilityToggle", "InterfaceOptionsNamesPanel", "InterfaceOptionsNamesPanelMyName", "InterfaceOptionsNamesPanelNPCNames", "InterfaceOptionsNamesPanelNonCombatCreature", "InterfaceOptionsNamesPanelGuilds", "InterfaceOptionsNamesPanelTitles", "InterfaceOptionsNamesPanelFriendly", "InterfaceOptionsNamesPanelFriendlyPlayerNames", "InterfaceOptionsNamesPanelFriendlyPets", "InterfaceOptionsNamesPanelFriendlyGuardians", "InterfaceOptionsNamesPanelFriendlyTotems", "InterfaceOptionsNamesPanelEnemy", "InterfaceOptionsNamesPanelEnemyPlayerNames", "InterfaceOptionsNamesPanelEnemyPets", "InterfaceOptionsNamesPanelEnemyGuardians", "InterfaceOptionsNamesPanelEnemyTotems", "InterfaceOptionsNamesPanelUnitNameplates", "InterfaceOptionsNamesPanelUnitNameplatesAllowOverlap", "InterfaceOptionsNamesPanelUnitNameplatesFriends", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyPets", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyGuardians", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyTotems", "InterfaceOptionsNamesPanelUnitNameplatesEnemies", "InterfaceOptionsNamesPanelUnitNameplatesEnemyPets", "InterfaceOptionsNamesPanelUnitNameplatesEnemyGuardians", "InterfaceOptionsNamesPanelUnitNameplatesEnemyTotems", "InterfaceOptionsCombatTextPanel", "InterfaceOptionsCombatTextPanelTargetDamage", "InterfaceOptionsCombatTextPanelPeriodicDamage", "InterfaceOptionsCombatTextPanelPetDamage", "InterfaceOptionsCombatTextPanelHealing", "InterfaceOptionsCombatTextPanelTargetEffects", "InterfaceOptionsCombatTextPanelOtherTargetEffects", "InterfaceOptionsCombatTextPanelEnableFCT", "InterfaceOptionsCombatTextPanelFCTDropDown", "InterfaceOptionsCombatTextPanelFCTDropDownButton", "InterfaceOptionsCombatTextPanelDodgeParryMiss", "InterfaceOptionsCombatTextPanelDamageReduction", "InterfaceOptionsCombatTextPanelRepChanges", "InterfaceOptionsCombatTextPanelReactiveAbilities", "InterfaceOptionsCombatTextPanelFriendlyHealerNames", "InterfaceOptionsCombatTextPanelCombatState", "InterfaceOptionsCombatTextPanelComboPoints", "InterfaceOptionsCombatTextPanelLowManaHealth", "InterfaceOptionsCombatTextPanelEnergyGains", "InterfaceOptionsCombatTextPanelPeriodicEnergyGains", "InterfaceOptionsCombatTextPanelHonorGains", "InterfaceOptionsCombatTextPanelAuras", "InterfaceOptionsStatusTextPanel", "InterfaceOptionsStatusTextPanelPlayer", "InterfaceOptionsStatusTextPanelPet", "InterfaceOptionsStatusTextPanelParty", "InterfaceOptionsStatusTextPanelTarget", "InterfaceOptionsStatusTextPanelPercentages", "InterfaceOptionsStatusTextPanelXP", "InterfaceOptionsUnitFramePanel", "InterfaceOptionsUnitFramePanelPartyBackground", "InterfaceOptionsUnitFramePanelPartyInRaid", "InterfaceOptionsUnitFramePanelPartyPets", "InterfaceOptionsUnitFramePanelRaidRange", "InterfaceOptionsUnitFramePanelArenaEnemyFrames", "InterfaceOptionsUnitFramePanelArenaEnemyCastBar", "InterfaceOptionsUnitFramePanelArenaEnemyPets", "InterfaceOptionsUnitFramePanelFullSizeFocusFrame", "InterfaceOptionsBuffsPanel", "InterfaceOptionsBuffsPanelBuffDurations", "InterfaceOptionsBuffsPanelDispellableDebuffs", "InterfaceOptionsBuffsPanelCastableBuffs", "InterfaceOptionsBuffsPanelConsolidateBuffs", "InterfaceOptionsBuffsPanelShowCastableDebuffs", "InterfaceOptionsBattlenetPanel", "InterfaceOptionsBattlenetPanelOnlineFriends", "InterfaceOptionsBattlenetPanelOfflineFriends", "InterfaceOptionsBattlenetPanelBroadcasts", "InterfaceOptionsBattlenetPanelFriendRequests", "InterfaceOptionsBattlenetPanelConversations", "InterfaceOptionsBattlenetPanelShowToastWindow", "InterfaceOptionsBattlenetPanelToastDurationSlider", "InterfaceOptionsCameraPanel", "InterfaceOptionsCameraPanelStyleDropDown", "InterfaceOptionsCameraPanelStyleDropDownButton", "InterfaceOptionsCameraPanelFollowSpeedSlider", "InterfaceOptionsCameraPanelMaxDistanceSlider", "InterfaceOptionsCameraPanelFollowTerrain", "InterfaceOptionsCameraPanelHeadBob", "InterfaceOptionsCameraPanelWaterCollision", "InterfaceOptionsCameraPanelSmartPivot", "InterfaceOptionsMousePanel", "InterfaceOptionsMousePanelInvertMouse", "InterfaceOptionsMousePanelClickToMove", "InterfaceOptionsMousePanelMouseSensitivitySlider", "InterfaceOptionsMousePanelMouseLookSpeedSlider", "InterfaceOptionsMousePanelWoWMouse", "InterfaceOptionsMousePanelClickMoveStyleDropDown", "InterfaceOptionsMousePanelClickMoveStyleDropDownButton", "InterfaceOptionsFeaturesPanel", "InterfaceOptionsFeaturesPanelEquipmentManager", "InterfaceOptionsFeaturesPanelPreviewTalentChanges", "InterfaceOptionsHelpPanel", "InterfaceOptionsHelpPanelShowTutorials", "InterfaceOptionsHelpPanelLoadingScreenTips", "InterfaceOptionsHelpPanelEnhancedTooltips", "InterfaceOptionsHelpPanelBeginnerTooltips", "InterfaceOptionsHelpPanelShowLuaErrors", "InterfaceOptionsHelpPanelResetTutorials", "InterfaceOptionsLanguagesPanel", "InterfaceOptionsLanguagesPanelLocaleDropDown", "InterfaceOptionsLanguagesPanelLocaleDropDownButton", "InterfaceOptionsLanguagesPanelUseEnglishAudio", "DungeonCompletionAlertFrame1", "DungeonCompletionAlertFrame1Reward1", "DungeonCompletionAlertFrame1GlowFrame", "AlertFrame", "MirrorTimer1", "MirrorTimer1StatusBar", "MirrorTimer2", "MirrorTimer2StatusBar", "MirrorTimer3", "MirrorTimer3StatusBar", "CoinPickupFrame", "CoinPickupLeftButton", "CoinPickupRightButton", "CoinPickupOkayButton", "CoinPickupCancelButton", "StackSplitFrame", "StackSplitLeftButton", "StackSplitRightButton", "StackSplitOkayButton", "StackSplitCancelButton", "ZoneTextFrame", "SubZoneTextFrame", "AutoFollowStatus", "BattlefieldFrame", "BattlefieldZone1", "BattlefieldZone2", "BattlefieldZone3", "BattlefieldZone4", "BattlefieldZone5", "BattlefieldListScrollFrame", "BattlefieldListScrollFrameScrollChildFrame", "BattlefieldListScrollFrameScrollBar", "BattlefieldListScrollFrameScrollBarScrollUpButton", "BattlefieldListScrollFrameScrollBarScrollDownButton", "BattlefieldFrameInfoScrollFrame", "BattlefieldFrameInfoScrollFrameChildFrame", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfo", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinReward", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossReward", "BattlefieldFrameInfoScrollFrameScrollBar", "BattlefieldFrameInfoScrollFrameScrollBarScrollUpButton", "BattlefieldFrameInfoScrollFrameScrollBarScrollDownButton", "BattlefieldFrameCancelButton", "BattlefieldFrameJoinButton", "BattlefieldFrameGroupJoinButton", "BattlefieldFrameCloseButton", "BattlefieldTimerFrame", "MainMenuBar", "MainMenuExpBar", "MainMenuBarOverlayFrame", "MainMenuBarMaxLevelBar", "MainMenuBarArtFrame", "MainMenuBarVehicleLeaveButton", "ExhaustionTick", "CharacterMicroButton", "SpellbookMicroButton", "TalentMicroButton", "AchievementMicroButton", "QuestLogMicroButton", "SocialsMicroButton", "PVPMicroButton", "LFDMicroButton", "MainMenuMicroButton", "HelpMicroButton", "TutorialFrame", "TutorialFrameTextScrollFrame", "TutorialFrameTextScrollChildFrame", "TutorialFrameTextScrollFrameScrollBar", "TutorialFrameTextScrollFrameScrollBarScrollUpButton", "TutorialFrameTextScrollFrameScrollBarScrollDownButton", "TutorialTextBorder", "TutorialFrameCallOut", "TutorialFrameOkayButton", "TutorialFramePrevButton", "TutorialFrameNextButton", "TutorialFrameAlertButton", "TutorialFrameAlertButtonBadge", "MinimapCluster", "MinimapZoneTextButton", "Minimap", "MiniMapMailFrame", "MiniMapBattlefieldFrame", "MiniMapBattlefieldDropDown", "MiniMapBattlefieldDropDownButton", "MinimapPing", "MinimapBackdrop", "MiniMapWorldMapButton", "MiniMapTracking", "MiniMapTrackingDropDown", "MiniMapTrackingDropDownButton", "MiniMapTrackingButton", "MiniMapLFGFrame", "MiniMapLFGFrameIcon", "MiniMapLFGFrameDropDown", "MiniMapLFGFrameDropDownButton", "MinimapZoomIn", "MinimapZoomOut", "MiniMapRecordingButton", "MiniMapInstanceDifficulty", "GameTimeFrame", "ActionButton1", "ActionButton1Cooldown", "ActionButton2", "ActionButton2Cooldown", "ActionButton3", "ActionButton3Cooldown", "ActionButton4", "ActionButton4Cooldown", "ActionButton5", "ActionButton5Cooldown", "ActionButton6", "ActionButton6Cooldown", "ActionButton7", "ActionButton7Cooldown", "ActionButton8", "ActionButton8Cooldown", "ActionButton9", "ActionButton9Cooldown", "ActionButton10", "ActionButton10Cooldown", "ActionButton11", "ActionButton11Cooldown", "ActionButton12", "ActionButton12Cooldown", "ActionBarUpButton", "ActionBarDownButton", "MultiBarBottomLeft", "MultiBarBottomLeftButton1", "MultiBarBottomLeftButton1Cooldown", "MultiBarBottomLeftButton2", "MultiBarBottomLeftButton2Cooldown", "MultiBarBottomLeftButton3", "MultiBarBottomLeftButton3Cooldown", "MultiBarBottomLeftButton4", "MultiBarBottomLeftButton4Cooldown", "MultiBarBottomLeftButton5", "MultiBarBottomLeftButton5Cooldown", "MultiBarBottomLeftButton6", "MultiBarBottomLeftButton6Cooldown", "MultiBarBottomLeftButton7", "MultiBarBottomLeftButton7Cooldown", "MultiBarBottomLeftButton8", "MultiBarBottomLeftButton8Cooldown", "MultiBarBottomLeftButton9", "MultiBarBottomLeftButton9Cooldown", "MultiBarBottomLeftButton10", "MultiBarBottomLeftButton10Cooldown", "MultiBarBottomLeftButton11", "MultiBarBottomLeftButton11Cooldown", "MultiBarBottomLeftButton12", "MultiBarBottomLeftButton12Cooldown", "MultiBarBottomRight", "MultiBarBottomRightButton1", "MultiBarBottomRightButton1Cooldown", "MultiBarBottomRightButton2", "MultiBarBottomRightButton2Cooldown", "MultiBarBottomRightButton3", "MultiBarBottomRightButton3Cooldown", "MultiBarBottomRightButton4", "MultiBarBottomRightButton4Cooldown", "MultiBarBottomRightButton5", "MultiBarBottomRightButton5Cooldown", "MultiBarBottomRightButton6", "MultiBarBottomRightButton6Cooldown", "MultiBarBottomRightButton7", "MultiBarBottomRightButton7Cooldown", "MultiBarBottomRightButton8", "MultiBarBottomRightButton8Cooldown", "MultiBarBottomRightButton9", "MultiBarBottomRightButton9Cooldown", "MultiBarBottomRightButton10", "MultiBarBottomRightButton10Cooldown", "MultiBarBottomRightButton11", "MultiBarBottomRightButton11Cooldown", "MultiBarBottomRightButton12", "MultiBarBottomRightButton12Cooldown", "MultiBarRight", "MultiBarRightButton1", "MultiBarRightButton1Cooldown", "MultiBarRightButton2", "MultiBarRightButton2Cooldown", "MultiBarRightButton3", "MultiBarRightButton3Cooldown", "MultiBarRightButton4", "MultiBarRightButton4Cooldown", "MultiBarRightButton5", "MultiBarRightButton5Cooldown", "MultiBarRightButton6", "MultiBarRightButton6Cooldown", "MultiBarRightButton7", "MultiBarRightButton7Cooldown", "MultiBarRightButton8", "MultiBarRightButton8Cooldown", "MultiBarRightButton9", "MultiBarRightButton9Cooldown", "MultiBarRightButton10", "MultiBarRightButton10Cooldown", "MultiBarRightButton11", "MultiBarRightButton11Cooldown", "MultiBarRightButton12", "MultiBarRightButton12Cooldown", "MultiBarLeft", "MultiBarLeftButton1", "MultiBarLeftButton1Cooldown", "MultiBarLeftButton2", "MultiBarLeftButton2Cooldown", "MultiBarLeftButton3", "MultiBarLeftButton3Cooldown", "MultiBarLeftButton4", "MultiBarLeftButton4Cooldown", "MultiBarLeftButton5", "MultiBarLeftButton5Cooldown", "MultiBarLeftButton6", "MultiBarLeftButton6Cooldown", "MultiBarLeftButton7", "MultiBarLeftButton7Cooldown", "MultiBarLeftButton8", "MultiBarLeftButton8Cooldown", "MultiBarLeftButton9", "MultiBarLeftButton9Cooldown", "MultiBarLeftButton10", "MultiBarLeftButton10Cooldown", "MultiBarLeftButton11", "MultiBarLeftButton11Cooldown", "MultiBarLeftButton12", "MultiBarLeftButton12Cooldown", "BuffFrame", "ConsolidatedBuffs", "ConsolidatedBuffsTooltip", "ConsolidatedBuffsContainer", "TemporaryEnchantFrame", "TempEnchant1", "TempEnchant2", "LowHealthFrame", "CastingBarFrame", "BNetEventFrame", "BNToastFrame", "BNToastFrameClickFrame", "BNToastFrameGlowFrame", "BNToastFrameCloseButton", "BNetReportFrame", "BNetReportFrameComment", "BNetReportFrameCommentScrollFrame", "BNetReportFrameCommentBox", "BNetReportFrameCommentScrollFrameScrollBar", "BNetReportFrameCommentScrollFrameScrollBarScrollUpButton", "BNetReportFrameCommentScrollFrameScrollBarScrollDownButton", "BNetReportFrameCommentScrollFrameFocusButton", "BNetReportFrameReportButton", "BNetReportFrameCancelButton", "BNConversationInviteDialog", "BNConversationInviteDialogList", "BNConversationInviteDialogListScrollFrame", "BNConversationInviteDialogListScrollFrameScrollChildFrame", "BNConversationInviteDialogListScrollFrameScrollBar", "BNConversationInviteDialogListScrollFrameScrollBarScrollUpButton", "BNConversationInviteDialogListScrollFrameScrollBarScrollDownButton", "BNConversationInviteDialogListFriend1", "BNConversationInviteDialogListFriend2", "BNConversationInviteDialogListFriend3", "BNConversationInviteDialogListFriend4", "BNConversationInviteDialogListFriend5", "BNConversationInviteDialogListFriend6", "BNConversationInviteDialogListFriend7", "BNConversationInviteDialogInviteButton", "BNConversationInviteDialogCancelButton", "MacroEditBox", "ChatChannelDropDown", "ChatChannelDropDownButton", "ChatBNPlayerDropDown", "ChatBNPlayerDropDownButton", "GeneralDockManager", "GeneralDockManagerOverflowButton", "GeneralDockManagerOverflowButtonList", "GeneralDockManagerScrollFrame", "GeneralDockManagerScrollFrameChild", "ChatFrame1Tab", "ChatFrame1TabFlash", "ChatFrame1TabDropDown", "ChatFrame1TabDropDownButton", "ChatFrame1", "ChatFrame1ClickAnywhereButton", "ChatFrame1ResizeButton", "ChatFrame1ButtonFrame", "ChatFrame1ButtonFrameBottomButton", "ChatFrame1ButtonFrameDownButton", "ChatFrame1ButtonFrameUpButton", "ChatFrame1ButtonFrameMinimizeButton", "ChatFrame1EditBox", "ChatFrame1EditBoxLanguage", "ChatFrameMenuButton", "FriendsMicroButton", "ChatMenu", "ChatMenuButton1", "ChatMenuButton2", "ChatMenuButton3", "ChatMenuButton4", "ChatMenuButton5", "ChatMenuButton6", "ChatMenuButton7", "ChatMenuButton8", "ChatMenuButton9", "ChatMenuButton10", "ChatMenuButton11", "ChatMenuButton12", "ChatMenuButton13", "ChatMenuButton14", "ChatMenuButton15", "ChatMenuButton16", "ChatMenuButton17", "ChatMenuButton18", "ChatMenuButton19", "ChatMenuButton20", "ChatMenuButton21", "ChatMenuButton22", "ChatMenuButton23", "ChatMenuButton24", "ChatMenuButton25", "ChatMenuButton26", "ChatMenuButton27", "ChatMenuButton28", "ChatMenuButton29", "ChatMenuButton30", "ChatMenuButton31", "ChatMenuButton32", "EmoteMenu", "EmoteMenuButton1", "EmoteMenuButton2", "EmoteMenuButton3", "EmoteMenuButton4", "EmoteMenuButton5", "EmoteMenuButton6", "EmoteMenuButton7", "EmoteMenuButton8", "EmoteMenuButton9", "EmoteMenuButton10", "EmoteMenuButton11", "EmoteMenuButton12", "EmoteMenuButton13", "EmoteMenuButton14", "EmoteMenuButton15", "EmoteMenuButton16", "EmoteMenuButton17", "EmoteMenuButton18", "EmoteMenuButton19", "EmoteMenuButton20", "EmoteMenuButton21", "EmoteMenuButton22", "EmoteMenuButton23", "EmoteMenuButton24", "EmoteMenuButton25", "EmoteMenuButton26", "EmoteMenuButton27", "EmoteMenuButton28", "EmoteMenuButton29", "EmoteMenuButton30", "EmoteMenuButton31", "EmoteMenuButton32", "LanguageMenu", "LanguageMenuButton1", "LanguageMenuButton2", "LanguageMenuButton3", "LanguageMenuButton4", "LanguageMenuButton5", "LanguageMenuButton6", "LanguageMenuButton7", "LanguageMenuButton8", "LanguageMenuButton9", "LanguageMenuButton10", "LanguageMenuButton11", "LanguageMenuButton12", "LanguageMenuButton13", "LanguageMenuButton14", "LanguageMenuButton15", "LanguageMenuButton16", "LanguageMenuButton17", "LanguageMenuButton18", "LanguageMenuButton19", "LanguageMenuButton20", "LanguageMenuButton21", "LanguageMenuButton22", "LanguageMenuButton23", "LanguageMenuButton24", "LanguageMenuButton25", "LanguageMenuButton26", "LanguageMenuButton27", "LanguageMenuButton28", "LanguageMenuButton29", "LanguageMenuButton30", "LanguageMenuButton31", "LanguageMenuButton32", "VoiceMacroMenu", "VoiceMacroMenuButton1", "VoiceMacroMenuButton2", "VoiceMacroMenuButton3", "VoiceMacroMenuButton4", "VoiceMacroMenuButton5", "VoiceMacroMenuButton6", "VoiceMacroMenuButton7", "VoiceMacroMenuButton8", "VoiceMacroMenuButton9", "VoiceMacroMenuButton10", "VoiceMacroMenuButton11", "VoiceMacroMenuButton12", "VoiceMacroMenuButton13", "VoiceMacroMenuButton14", "VoiceMacroMenuButton15", "VoiceMacroMenuButton16", "VoiceMacroMenuButton17", "VoiceMacroMenuButton18", "VoiceMacroMenuButton19", "VoiceMacroMenuButton20", "VoiceMacroMenuButton21", "VoiceMacroMenuButton22", "VoiceMacroMenuButton23", "VoiceMacroMenuButton24", "VoiceMacroMenuButton25", "VoiceMacroMenuButton26", "VoiceMacroMenuButton27", "VoiceMacroMenuButton28", "VoiceMacroMenuButton29", "VoiceMacroMenuButton30", "VoiceMacroMenuButton31", "VoiceMacroMenuButton32", "ChatFrame2Tab", "ChatFrame2TabFlash", "ChatFrame2TabDropDown", "ChatFrame2TabDropDownButton", "ChatFrame2", "ChatFrame2ClickAnywhereButton", "ChatFrame2ResizeButton", "ChatFrame2ButtonFrame", "ChatFrame2ButtonFrameBottomButton", "ChatFrame2ButtonFrameDownButton", "ChatFrame2ButtonFrameUpButton", "ChatFrame2ButtonFrameMinimizeButton", "ChatFrame2EditBox", "ChatFrame2EditBoxLanguage", "ChatFrame3Tab", "ChatFrame3TabFlash", "ChatFrame3TabDropDown", "ChatFrame3TabDropDownButton", "ChatFrame3", "ChatFrame3ClickAnywhereButton", "ChatFrame3ResizeButton", "ChatFrame3ButtonFrame", "ChatFrame3ButtonFrameBottomButton", "ChatFrame3ButtonFrameDownButton", "ChatFrame3ButtonFrameUpButton", "ChatFrame3ButtonFrameMinimizeButton", "ChatFrame3EditBox", "ChatFrame3EditBoxLanguage", "ChatFrame4Tab", "ChatFrame4TabFlash", "ChatFrame4TabDropDown", "ChatFrame4TabDropDownButton", "ChatFrame4", "ChatFrame4ClickAnywhereButton", "ChatFrame4ResizeButton", "ChatFrame4ButtonFrame", "ChatFrame4ButtonFrameBottomButton", "ChatFrame4ButtonFrameDownButton", "ChatFrame4ButtonFrameUpButton", "ChatFrame4ButtonFrameMinimizeButton", "ChatFrame4EditBox", "ChatFrame4EditBoxLanguage", "ChatFrame5Tab", "ChatFrame5TabFlash", "ChatFrame5TabDropDown", "ChatFrame5TabDropDownButton", "ChatFrame5", "ChatFrame5ClickAnywhereButton", "ChatFrame5ResizeButton", "ChatFrame5ButtonFrame", "ChatFrame5ButtonFrameBottomButton", "ChatFrame5ButtonFrameDownButton", "ChatFrame5ButtonFrameUpButton", "ChatFrame5ButtonFrameMinimizeButton", "ChatFrame5EditBox", "ChatFrame5EditBoxLanguage", "ChatFrame6Tab", "ChatFrame6TabFlash", "ChatFrame6TabDropDown", "ChatFrame6TabDropDownButton", "ChatFrame6", "ChatFrame6ClickAnywhereButton", "ChatFrame6ResizeButton", "ChatFrame6ButtonFrame", "ChatFrame6ButtonFrameBottomButton", "ChatFrame6ButtonFrameDownButton", "ChatFrame6ButtonFrameUpButton", "ChatFrame6ButtonFrameMinimizeButton", "ChatFrame6EditBox", "ChatFrame6EditBoxLanguage", "ChatFrame7Tab", "ChatFrame7TabFlash", "ChatFrame7TabDropDown", "ChatFrame7TabDropDownButton", "ChatFrame7", "ChatFrame7ClickAnywhereButton", "ChatFrame7ResizeButton", "ChatFrame7ButtonFrame", "ChatFrame7ButtonFrameBottomButton", "ChatFrame7ButtonFrameDownButton", "ChatFrame7ButtonFrameUpButton", "ChatFrame7ButtonFrameMinimizeButton", "ChatFrame7EditBox", "ChatFrame7EditBoxLanguage", "ChatFrame8Tab", "ChatFrame8TabFlash", "ChatFrame8TabDropDown", "ChatFrame8TabDropDownButton", "ChatFrame8", "ChatFrame8ClickAnywhereButton", "ChatFrame8ResizeButton", "ChatFrame8ButtonFrame", "ChatFrame8ButtonFrameBottomButton", "ChatFrame8ButtonFrameDownButton", "ChatFrame8ButtonFrameUpButton", "ChatFrame8ButtonFrameMinimizeButton", "ChatFrame8EditBox", "ChatFrame8EditBoxLanguage", "ChatFrame9Tab", "ChatFrame9TabFlash", "ChatFrame9TabDropDown", "ChatFrame9TabDropDownButton", "ChatFrame9", "ChatFrame9ClickAnywhereButton", "ChatFrame9ResizeButton", "ChatFrame9ButtonFrame", "ChatFrame9ButtonFrameBottomButton", "ChatFrame9ButtonFrameDownButton", "ChatFrame9ButtonFrameUpButton", "ChatFrame9ButtonFrameMinimizeButton", "ChatFrame9EditBox", "ChatFrame9EditBoxLanguage", "ChatFrame10Tab", "ChatFrame10TabFlash", "ChatFrame10TabDropDown", "ChatFrame10TabDropDownButton", "ChatFrame10", "ChatFrame10ClickAnywhereButton", "ChatFrame10ResizeButton", "ChatFrame10ButtonFrame", "ChatFrame10ButtonFrameBottomButton", "ChatFrame10ButtonFrameDownButton", "ChatFrame10ButtonFrameUpButton", "ChatFrame10ButtonFrameMinimizeButton", "ChatFrame10EditBox", "ChatFrame10EditBoxLanguage", "FloatingChatFrameManager", "VoiceChatTalkers", "VoiceChatTalkersSpeaker", "VoiceChatTalkersButton1", "VoiceChatTalkersButton1SecureButton", "VoiceChatTalkersButton1Speaker", "MiniMapVoiceChatFrame", "MiniMapVoiceChatFrameIcon", "MiniMapVoiceChatDropDown", "MiniMapVoiceChatDropDownButton", "ReadyCheckFrame", "ReadyCheckListenerFrame", "ReadyCheckFrameYesButton", "ReadyCheckFrameNoButton", "PlayerFrame", "PlayerSpeakerFrame", "PlayerFrameReadyCheck", "PlayerPVPIconHitArea", "PlayerStatusGlow", "PlayerPlayTime", "PlayerFrameHealthBar", "PlayerFrameManaBar", "PlayerFrameDropDown", "PlayerFrameDropDownButton", "PlayerFrameGroupIndicator", "PartyMemberFrame1", "PartyMemberFrame1DropDown", "PartyMemberFrame1DropDownButton", "PartyMemberFrame1HealthBar", "PartyMemberFrame1ManaBar", "PartyMemberFrame1Speaker", "PartyMemberFrame1SpeakerFrame", "PartyMemberFrame1ReadyCheck", "PartyMemberFrame1Debuff1", "PartyMemberFrame1Debuff2", "PartyMemberFrame1Debuff3", "PartyMemberFrame1Debuff4", "PartyMemberFrame1PetFrame", "PartyMemberFrame1PetFrameHealthBar", "PartyMemberFrame1PetFrameDebuff1", "PartyMemberFrame1PetFrameDebuff2", "PartyMemberFrame1PetFrameDebuff3", "PartyMemberFrame1PetFrameDebuff4", "PartyMemberFrame2", "PartyMemberFrame2DropDown", "PartyMemberFrame2DropDownButton", "PartyMemberFrame2HealthBar", "PartyMemberFrame2ManaBar", "PartyMemberFrame2Speaker", "PartyMemberFrame2SpeakerFrame", "PartyMemberFrame2ReadyCheck", "PartyMemberFrame2Debuff1", "PartyMemberFrame2Debuff2", "PartyMemberFrame2Debuff3", "PartyMemberFrame2Debuff4", "PartyMemberFrame2PetFrame", "PartyMemberFrame2PetFrameHealthBar", "PartyMemberFrame2PetFrameDebuff1", "PartyMemberFrame2PetFrameDebuff2", "PartyMemberFrame2PetFrameDebuff3", "PartyMemberFrame2PetFrameDebuff4", "PartyMemberFrame3", "PartyMemberFrame3DropDown", "PartyMemberFrame3DropDownButton", "PartyMemberFrame3HealthBar", "PartyMemberFrame3ManaBar", "PartyMemberFrame3Speaker", "PartyMemberFrame3SpeakerFrame", "PartyMemberFrame3ReadyCheck", "PartyMemberFrame3Debuff1", "PartyMemberFrame3Debuff2", "PartyMemberFrame3Debuff3", "PartyMemberFrame3Debuff4", "PartyMemberFrame3PetFrame", "PartyMemberFrame3PetFrameHealthBar", "PartyMemberFrame3PetFrameDebuff1", "PartyMemberFrame3PetFrameDebuff2", "PartyMemberFrame3PetFrameDebuff3", "PartyMemberFrame3PetFrameDebuff4", "PartyMemberFrame4", "PartyMemberFrame4DropDown", "PartyMemberFrame4DropDownButton", "PartyMemberFrame4HealthBar", "PartyMemberFrame4ManaBar", "PartyMemberFrame4Speaker", "PartyMemberFrame4SpeakerFrame", "PartyMemberFrame4ReadyCheck", "PartyMemberFrame4Debuff1", "PartyMemberFrame4Debuff2", "PartyMemberFrame4Debuff3", "PartyMemberFrame4Debuff4", "PartyMemberFrame4PetFrame", "PartyMemberFrame4PetFrameHealthBar", "PartyMemberFrame4PetFrameDebuff1", "PartyMemberFrame4PetFrameDebuff2", "PartyMemberFrame4PetFrameDebuff3", "PartyMemberFrame4PetFrameDebuff4", "PartyMemberBuffTooltip", "PartyMemberBuffTooltipBuff1", "PartyMemberBuffTooltipBuff2", "PartyMemberBuffTooltipBuff3", "PartyMemberBuffTooltipBuff4", "PartyMemberBuffTooltipBuff5", "PartyMemberBuffTooltipBuff6", "PartyMemberBuffTooltipBuff7", "PartyMemberBuffTooltipBuff8", "PartyMemberBuffTooltipBuff9", "PartyMemberBuffTooltipBuff10", "PartyMemberBuffTooltipBuff11", "PartyMemberBuffTooltipBuff12", "PartyMemberBuffTooltipBuff13", "PartyMemberBuffTooltipBuff14", "PartyMemberBuffTooltipBuff15", "PartyMemberBuffTooltipBuff16", "PartyMemberBuffTooltipDebuff1", "PartyMemberBuffTooltipDebuff2", "PartyMemberBuffTooltipDebuff3", "PartyMemberBuffTooltipDebuff4", "PartyMemberBuffTooltipDebuff5", "PartyMemberBuffTooltipDebuff6", "PartyMemberBuffTooltipDebuff7", "PartyMemberBuffTooltipDebuff8", "PartyMemberBackground", "TargetFrame", "TargetFrameTextureFrame", "TargetFrameDropDown", "TargetFrameDropDownButton", "TargetFrameHealthBar", "TargetFrameManaBar", "TargetFrameBuffs", "TargetFrameDebuffs", "TargetFrameNumericalThreat", "TargetFrameSpellBar", "TargetFrameToT", "TargetFrameToTTextureFrame", "TargetFrameToTHealthBar", "TargetFrameToTManaBar", "TargetFrameToTDebuff1", "TargetFrameToTDebuff1Cooldown", "TargetFrameToTDebuff2", "TargetFrameToTDebuff2Cooldown", "TargetFrameToTDebuff3", "TargetFrameToTDebuff3Cooldown", "TargetFrameToTDebuff4", "TargetFrameToTDebuff4Cooldown", "FocusFrame", "FocusFrameTextureFrame", "FocusFrameDropDown", "FocusFrameDropDownButton", "FocusFrameHealthBar", "FocusFrameManaBar", "FocusFrameBuffs", "FocusFrameDebuffs", "FocusFrameNumericalThreat", "FocusFrameSpellBar", "FocusFrameToT", "FocusFrameToTTextureFrame", "FocusFrameToTHealthBar", "FocusFrameToTManaBar", "FocusFrameToTDebuff1", "FocusFrameToTDebuff1Cooldown", "FocusFrameToTDebuff2", "FocusFrameToTDebuff2Cooldown", "FocusFrameToTDebuff3", "FocusFrameToTDebuff3Cooldown", "FocusFrameToTDebuff4", "FocusFrameToTDebuff4Cooldown", "Boss1TargetFrame", "Boss1TargetFrameTextureFrame", "Boss1TargetFrameDropDown", "Boss1TargetFrameDropDownButton", "Boss1TargetFrameHealthBar", "Boss1TargetFrameManaBar", "Boss1TargetFrameBuffs", "Boss1TargetFrameDebuffs", "Boss1TargetFrameNumericalThreat", "Boss2TargetFrame", "Boss2TargetFrameTextureFrame", "Boss2TargetFrameDropDown", "Boss2TargetFrameDropDownButton", "Boss2TargetFrameHealthBar", "Boss2TargetFrameManaBar", "Boss2TargetFrameBuffs", "Boss2TargetFrameDebuffs", "Boss2TargetFrameNumericalThreat", "Boss3TargetFrame", "Boss3TargetFrameTextureFrame", "Boss3TargetFrameDropDown", "Boss3TargetFrameDropDownButton", "Boss3TargetFrameHealthBar", "Boss3TargetFrameManaBar", "Boss3TargetFrameBuffs", "Boss3TargetFrameDebuffs", "Boss3TargetFrameNumericalThreat", "Boss4TargetFrame", "Boss4TargetFrameTextureFrame", "Boss4TargetFrameDropDown", "Boss4TargetFrameDropDownButton", "Boss4TargetFrameHealthBar", "Boss4TargetFrameManaBar", "Boss4TargetFrameBuffs", "Boss4TargetFrameDebuffs", "Boss4TargetFrameNumericalThreat", "TotemFrame", "TotemFrameTotem1", "TotemFrameTotem1Icon", "TotemFrameTotem1IconCooldown", "TotemFrameTotem2", "TotemFrameTotem2Icon", "TotemFrameTotem2IconCooldown", "TotemFrameTotem3", "TotemFrameTotem3Icon", "TotemFrameTotem3IconCooldown", "TotemFrameTotem4", "TotemFrameTotem4Icon", "TotemFrameTotem4IconCooldown", "PetFrame", "PetFrameDropDown", "PetFrameDropDownButton", "PetFrameHealthBar", "PetFrameManaBar", "PetFrameDebuff1", "PetFrameDebuff2", "PetFrameDebuff3", "PetFrameDebuff4", "PetFrameHappiness", "PetCastingBarFrame", "StatsFrame", "SpellBookFrame", "SpellBookFrameTabButton1", "SpellBookFrameTabButton2", "SpellBookFrameTabButton3", "SpellBookPrevPageButton", "SpellBookNextPageButton", "SpellBookCloseButton", "ShowAllSpellRanksCheckBox", "SpellButton1", "SpellButton1Cooldown", "SpellButton2", "SpellButton2Cooldown", "SpellButton3", "SpellButton3Cooldown", "SpellButton4", "SpellButton4Cooldown", "SpellButton5", "SpellButton5Cooldown", "SpellButton6", "SpellButton6Cooldown", "SpellButton7", "SpellButton7Cooldown", "SpellButton8", "SpellButton8Cooldown", "SpellButton9", "SpellButton9Cooldown", "SpellButton10", "SpellButton10Cooldown", "SpellButton11", "SpellButton11Cooldown", "SpellButton12", "SpellButton12Cooldown", "SpellBookSkillLineTab1", "SpellBookSkillLineTab2", "SpellBookSkillLineTab3", "SpellBookSkillLineTab4", "SpellBookSkillLineTab5", "SpellBookSkillLineTab6", "SpellBookSkillLineTab7", "SpellBookSkillLineTab8", "SpellBookTabFlashFrame", "CharacterFrame", "CharacterNameFrame", "CharacterFrameCloseButton", "CharacterFrameTab1", "CharacterFrameTab2", "CharacterFrameTab3", "CharacterFrameTab4", "CharacterFrameTab5", "PaperDollFrame", "PlayerTitleFrame", "PlayerTitleFrameButton", "PlayerTitlePickerFrame", "PlayerTitlePickerScrollFrame", "PlayerTitlePickerScrollFrameScrollChild", "PlayerTitlePickerScrollFrameScrollBar", "PlayerTitlePickerScrollFrameScrollBarScrollUpButton", "PlayerTitlePickerScrollFrameScrollBarScrollDownButton", "PlayerTitlePickerScrollFrameButton1", "PlayerTitlePickerScrollFrameButton2", "PlayerTitlePickerScrollFrameButton3", "PlayerTitlePickerScrollFrameButton4", "PlayerTitlePickerScrollFrameButton5", "PlayerTitlePickerScrollFrameButton6", "PlayerTitlePickerScrollFrameButton7", "CharacterModelFrame", "CharacterModelFrameRotateLeftButton", "CharacterModelFrameRotateRightButton", "CharacterAttributesFrame", "PlayerStatFrameLeft1", "PlayerStatFrameLeft1Stat", "PlayerStatFrameLeft2", "PlayerStatFrameLeft2Stat", "PlayerStatFrameLeft3", "PlayerStatFrameLeft3Stat", "PlayerStatFrameLeft4", "PlayerStatFrameLeft4Stat", "PlayerStatFrameLeft5", "PlayerStatFrameLeft5Stat", "PlayerStatFrameLeft6", "PlayerStatFrameLeft6Stat", "PlayerStatFrameRight1", "PlayerStatFrameRight1Stat", "PlayerStatFrameRight2", "PlayerStatFrameRight2Stat", "PlayerStatFrameRight3", "PlayerStatFrameRight3Stat", "PlayerStatFrameRight4", "PlayerStatFrameRight4Stat", "PlayerStatFrameRight5", "PlayerStatFrameRight5Stat", "PlayerStatFrameRight6", "PlayerStatFrameRight6Stat", "PlayerStatFrameLeftDropDown", "PlayerStatFrameLeftDropDownButton", "PlayerStatFrameRightDropDown", "PlayerStatFrameRightDropDownButton", "CharacterResistanceFrame", "MagicResFrame1", "MagicResFrame2", "MagicResFrame3", "MagicResFrame4", "MagicResFrame5", "CharacterHeadSlot", "CharacterHeadSlotCooldown", "CharacterHeadSlotPopoutButton", "CharacterNeckSlot", "CharacterNeckSlotCooldown", "CharacterNeckSlotPopoutButton", "CharacterShoulderSlot", "CharacterShoulderSlotCooldown", "CharacterShoulderSlotPopoutButton", "CharacterBackSlot", "CharacterBackSlotCooldown", "CharacterBackSlotPopoutButton", "CharacterChestSlot", "CharacterChestSlotCooldown", "CharacterChestSlotPopoutButton", "CharacterShirtSlot", "CharacterShirtSlotCooldown", "CharacterShirtSlotPopoutButton", "CharacterTabardSlot", "CharacterTabardSlotCooldown", "CharacterTabardSlotPopoutButton", "CharacterWristSlot", "CharacterWristSlotCooldown", "CharacterWristSlotPopoutButton", "CharacterHandsSlot", "CharacterHandsSlotCooldown", "CharacterHandsSlotPopoutButton", "CharacterWaistSlot", "CharacterWaistSlotCooldown", "CharacterWaistSlotPopoutButton", "CharacterLegsSlot", "CharacterLegsSlotCooldown", "CharacterLegsSlotPopoutButton", "CharacterFeetSlot", "CharacterFeetSlotCooldown", "CharacterFeetSlotPopoutButton", "CharacterFinger0Slot", "CharacterFinger0SlotCooldown", "CharacterFinger0SlotPopoutButton", "CharacterFinger1Slot", "CharacterFinger1SlotCooldown", "CharacterFinger1SlotPopoutButton", "CharacterTrinket0Slot", "CharacterTrinket0SlotCooldown", "CharacterTrinket0SlotPopoutButton", "CharacterTrinket1Slot", "CharacterTrinket1SlotCooldown", "CharacterTrinket1SlotPopoutButton", "CharacterMainHandSlot", "CharacterMainHandSlotCooldown", "CharacterMainHandSlotPopoutButton", "CharacterSecondaryHandSlot", "CharacterSecondaryHandSlotCooldown", "CharacterSecondaryHandSlotPopoutButton", "CharacterRangedSlot", "CharacterRangedSlotCooldown", "CharacterRangedSlotPopoutButton", "CharacterAmmoSlot", "CharacterAmmoSlotCooldown", "GearManagerToggleButton", "PaperDollFrameItemFlyout", "PaperDollFrameItemFlyoutButtons", "GearManagerDialog", "GearManagerDialogClose", "SetContainer", "GearManagerDialogDeleteSet", "GearManagerDialogEquipSet", "GearManagerDialogSaveSet", "GearManagerDialogPopup", "GearManagerDialogPopupScrollFrame", "GearManagerDialogPopupScrollFrameScrollChildFrame", "GearManagerDialogPopupScrollFrameScrollBar", "GearManagerDialogPopupScrollFrameScrollBarScrollUpButton", "GearManagerDialogPopupScrollFrameScrollBarScrollDownButton", "GearManagerDialogPopupEditBox", "GearManagerDialogPopupCancel", "GearManagerDialogPopupOkay", "GearManagerDialogPopupButton1", "GearManagerDialogPopupButton2", "GearManagerDialogPopupButton3", "GearManagerDialogPopupButton4", "GearManagerDialogPopupButton5", "GearManagerDialogPopupButton6", "GearManagerDialogPopupButton7", "GearManagerDialogPopupButton8", "GearManagerDialogPopupButton9", "GearManagerDialogPopupButton10", "GearManagerDialogPopupButton11", "GearManagerDialogPopupButton12", "GearManagerDialogPopupButton13", "GearManagerDialogPopupButton14", "GearManagerDialogPopupButton15", "GearSetButton1", "GearSetButton2", "GearSetButton3", "GearSetButton4", "GearSetButton5", "GearSetButton6", "GearSetButton7", "GearSetButton8", "GearSetButton9", "GearSetButton10", "PetPaperDollFrame", "PetPaperDollFramePetFrame", "PetPaperDollFrameExpBar", "PetModelFrame", "PetModelFrameRotateLeftButton", "PetModelFrameRotateRightButton", "PetPaperDollPetInfo", "PetPaperDollCloseButton", "PetAttributesFrame", "PetStatFrame1", "PetStatFrame1Stat", "PetStatFrame2", "PetStatFrame2Stat", "PetStatFrame3", "PetStatFrame3Stat", "PetStatFrame4", "PetStatFrame4Stat", "PetStatFrame5", "PetStatFrame5Stat", "PetAttackPowerFrame", "PetAttackPowerFrameStat", "PetDamageFrame", "PetDamageFrameStat", "PetSpellDamageFrame", "PetSpellDamageFrameStat", "PetArmorFrame", "PetArmorFrameStat", "PetResistanceFrame", "PetMagicResFrame1", "PetMagicResFrame2", "PetMagicResFrame3", "PetMagicResFrame4", "PetMagicResFrame5", "PetPaperDollFrameCompanionFrame", "CompanionModelFrame", "CompanionModelFrameRotateLeftButton", "CompanionModelFrameRotateRightButton", "CompanionSummonButton", "CompanionButton1", "CompanionButton1Cooldown", "CompanionButton2", "CompanionButton2Cooldown", "CompanionButton3", "CompanionButton3Cooldown", "CompanionButton4", "CompanionButton4Cooldown", "CompanionButton5", "CompanionButton5Cooldown", "CompanionButton6", "CompanionButton6Cooldown", "CompanionButton7", "CompanionButton7Cooldown", "CompanionButton8", "CompanionButton8Cooldown", "CompanionButton9", "CompanionButton9Cooldown", "CompanionButton10", "CompanionButton10Cooldown", "CompanionButton11", "CompanionButton11Cooldown", "CompanionButton12", "CompanionButton12Cooldown", "CompanionPrevPageButton", "CompanionNextPageButton", "PetPaperDollFrameTab1", "PetPaperDollFrameTab2", "PetPaperDollFrameTab3", "SkillFrame", "SkillFrameExpandButtonFrame", "SkillFrameCollapseAllButton", "SkillFrameCancelButton", "SkillTypeLabel1", "SkillTypeLabel2", "SkillTypeLabel3", "SkillTypeLabel4", "SkillTypeLabel5", "SkillTypeLabel6", "SkillTypeLabel7", "SkillTypeLabel8", "SkillTypeLabel9", "SkillTypeLabel10", "SkillTypeLabel11", "SkillTypeLabel12", "SkillListScrollFrame", "SkillListScrollFrameScrollChildFrame", "SkillListScrollFrameScrollBar", "SkillListScrollFrameScrollBarScrollUpButton", "SkillListScrollFrameScrollBarScrollDownButton", "SkillDetailScrollFrame", "SkillDetailScrollChildFrame", "SkillDetailStatusBar", "SkillDetailStatusBarLearnSkillButton", "SkillDetailStatusBarLeftArrow", "SkillDetailStatusBarRightArrow", "SkillDetailStatusBarUnlearnButton", "SkillDetailScrollFrameScrollBar", "SkillDetailScrollFrameScrollBarScrollUpButton", "SkillDetailScrollFrameScrollBarScrollDownButton", "SkillRankFrame1", "SkillRankFrame1Border", "SkillRankFrame2", "SkillRankFrame2Border", "SkillRankFrame3", "SkillRankFrame3Border", "SkillRankFrame4", "SkillRankFrame4Border", "SkillRankFrame5", "SkillRankFrame5Border", "SkillRankFrame6", "SkillRankFrame6Border", "SkillRankFrame7", "SkillRankFrame7Border", "SkillRankFrame8", "SkillRankFrame8Border", "SkillRankFrame9", "SkillRankFrame9Border", "SkillRankFrame10", "SkillRankFrame10Border", "SkillRankFrame11", "SkillRankFrame11Border", "SkillRankFrame12", "SkillRankFrame12Border", "ReputationFrame", "ReputationBar1", "ReputationBar1ExpandOrCollapseButton", "ReputationBar1ReputationBar", "ReputationBar2", "ReputationBar2ExpandOrCollapseButton", "ReputationBar2ReputationBar", "ReputationBar3", "ReputationBar3ExpandOrCollapseButton", "ReputationBar3ReputationBar", "ReputationBar4", "ReputationBar4ExpandOrCollapseButton", "ReputationBar4ReputationBar", "ReputationBar5", "ReputationBar5ExpandOrCollapseButton", "ReputationBar5ReputationBar", "ReputationBar6", "ReputationBar6ExpandOrCollapseButton", "ReputationBar6ReputationBar", "ReputationBar7", "ReputationBar7ExpandOrCollapseButton", "ReputationBar7ReputationBar", "ReputationBar8", "ReputationBar8ExpandOrCollapseButton", "ReputationBar8ReputationBar", "ReputationBar9", "ReputationBar9ExpandOrCollapseButton", "ReputationBar9ReputationBar", "ReputationBar10", "ReputationBar10ExpandOrCollapseButton", "ReputationBar10ReputationBar", "ReputationBar11", "ReputationBar11ExpandOrCollapseButton", "ReputationBar11ReputationBar", "ReputationBar12", "ReputationBar12ExpandOrCollapseButton", "ReputationBar12ReputationBar", "ReputationBar13", "ReputationBar13ExpandOrCollapseButton", "ReputationBar13ReputationBar", "ReputationBar14", "ReputationBar14ExpandOrCollapseButton", "ReputationBar14ReputationBar", "ReputationBar15", "ReputationBar15ExpandOrCollapseButton", "ReputationBar15ReputationBar", "ReputationListScrollFrame", "ReputationListScrollFrameScrollChildFrame", "ReputationListScrollFrameScrollBar", "ReputationListScrollFrameScrollBarScrollUpButton", "ReputationListScrollFrameScrollBarScrollDownButton", "FactionMouseOver", "StandingMouseOver", "ReputationDetailFrame", "ReputationDetailCloseButton", "ReputationDetailAtWarCheckBox", "ReputationDetailInactiveCheckBox", "ReputationDetailMainScreenCheckBox", "ReputationWatchBar", "ReputationWatchStatusBar", "ReputationWatchBarOverlayFrame", "HonorFrame", "HonorFrameCurrentHK", "HonorFrameCurrentDK", "HonorFrameYesterdayHK", "HonorFrameYesterdayContribution", "HonorFrameThisWeekHK", "HonorFrameThisWeekContribution", "HonorFrameLastWeekHK", "HonorFrameLastWeekContribution", "HonorFrameLastWeekStanding", "HonorFrameLifeTimeHK", "HonorFrameLifeTimeDK", "HonorFrameLifeTimeRank", "HonorFrameRankButton", "HonorFrameProgressBar", "HonorFrameProgressButton", "QuestFrame", "QuestNpcNameFrame", "QuestFrameCloseButton", "QuestFrameRewardPanel", "QuestFrameCancelButton", "QuestFrameCompleteQuestButton", "QuestRewardScrollFrame", "QuestRewardScrollChildFrame", "QuestRewardScrollFrameScrollBar", "QuestRewardScrollFrameScrollBarScrollUpButton", "QuestRewardScrollFrameScrollBarScrollDownButton", "QuestFrameProgressPanel", "QuestFrameGoodbyeButton", "QuestFrameCompleteButton", "QuestProgressScrollFrame", "QuestProgressScrollChildFrame", "QuestProgressRequiredMoneyFrame", "QuestProgressRequiredMoneyFrameCopperButton", "QuestProgressRequiredMoneyFrameSilverButton", "QuestProgressRequiredMoneyFrameGoldButton", "QuestProgressItem1", "QuestProgressItem2", "QuestProgressItem3", "QuestProgressItem4", "QuestProgressItem5", "QuestProgressItem6", "QuestProgressScrollFrameScrollBar", "QuestProgressScrollFrameScrollBarScrollUpButton", "QuestProgressScrollFrameScrollBarScrollDownButton", "QuestFrameDetailPanel", "QuestFrameDeclineButton", "QuestFrameAcceptButton", "QuestDetailScrollFrame", "QuestDetailScrollChildFrame", "QuestDetailScrollFrameScrollBar", "QuestDetailScrollFrameScrollBarScrollUpButton", "QuestDetailScrollFrameScrollBarScrollDownButton", "QuestFrameGreetingPanel", "QuestFrameGreetingGoodbyeButton", "QuestGreetingScrollFrame", "QuestGreetingScrollChildFrame", "QuestTitleButton1", "QuestTitleButton2", "QuestTitleButton3", "QuestTitleButton4", "QuestTitleButton5", "QuestTitleButton6", "QuestTitleButton7", "QuestTitleButton8", "QuestTitleButton9", "QuestTitleButton10", "QuestTitleButton11", "QuestTitleButton12", "QuestTitleButton13", "QuestTitleButton14", "QuestTitleButton15", "QuestTitleButton16", "QuestTitleButton17", "QuestTitleButton18", "QuestTitleButton19", "QuestTitleButton20", "QuestTitleButton21", "QuestTitleButton22", "QuestTitleButton23", "QuestTitleButton24", "QuestTitleButton25", "QuestTitleButton26", "QuestTitleButton27", "QuestTitleButton28", "QuestTitleButton29", "QuestTitleButton30", "QuestTitleButton31", "QuestTitleButton32", "QuestGreetingScrollFrameScrollBar", "QuestGreetingScrollFrameScrollBarScrollUpButton", "QuestGreetingScrollFrameScrollBarScrollDownButton", "WatchFrame", "WatchFrameHeader", "WatchFrameCollapseExpandButton", "WatchFrameLines", "WatchFrameLine1", "WatchFrameHeaderDropDown", "WatchFrameHeaderDropDownButton", "WatchFrameDropDown", "WatchFrameDropDownButton", "QuestLogControlPanel", "QuestLogFrameAbandonButton", "QuestLogFrameTrackButton", "QuestLogFramePushQuestButton", "QuestLogDetailFrame", "QuestLogDetailFrameCloseButton", "QuestLogDetailScrollFrame", "QuestLogDetailScrollChildFrame", "QuestLogDetailScrollFrameScrollBar", "QuestLogDetailScrollFrameScrollBarScrollUpButton", "QuestLogDetailScrollFrameScrollBarScrollDownButton", "QuestLogMapFrame", "QuestLogFrame", "QuestLogFrameCloseButton", "QuestLogFrameCancelButton", "QuestLogFrameShowMapButton", "EmptyQuestLogFrame", "QuestLogCount", "QuestLogDailyQuestCountMouseOverFrame", "QuestLogScrollFrame", "QuestLogScrollFrameScrollChild", "QuestLogScrollFrameScrollBar", "QuestLogScrollFrameScrollBarScrollUpButton", "QuestLogScrollFrameScrollBarScrollDownButton", "QuestLogHighlightFrame", "QuestLogScrollFrameButton1", "QuestLogScrollFrameButton2", "QuestLogScrollFrameButton3", "QuestLogScrollFrameButton4", "QuestLogScrollFrameButton5", "QuestLogScrollFrameButton6", "QuestLogScrollFrameButton7", "QuestLogScrollFrameButton8", "QuestLogScrollFrameButton9", "QuestLogScrollFrameButton10", "QuestLogScrollFrameButton11", "QuestLogScrollFrameButton12", "QuestLogScrollFrameButton13", "QuestLogScrollFrameButton14", "QuestLogScrollFrameButton15", "QuestLogScrollFrameButton16", "QuestLogScrollFrameButton17", "QuestLogScrollFrameButton18", "QuestLogScrollFrameButton19", "QuestLogScrollFrameButton20", "QuestLogScrollFrameButton21", "QuestLogScrollFrameButton22", "QuestInfoObjectivesFrame", "QuestInfoTimerFrame", "QuestInfoRequiredMoneyFrame", "QuestInfoRequiredMoneyDisplay", "QuestInfoRequiredMoneyDisplayCopperButton", "QuestInfoRequiredMoneyDisplaySilverButton", "QuestInfoRequiredMoneyDisplayGoldButton", "QuestInfoFrame", "QuestInfoFadingFrame", "QuestInfoSpacerFrame", "QuestInfoRewardsFrame", "QuestInfoItem1", "QuestInfoItem2", "QuestInfoItem3", "QuestInfoItem4", "QuestInfoItem5", "QuestInfoItem6", "QuestInfoItem7", "QuestInfoItem8", "QuestInfoItem9", "QuestInfoItem10", "QuestInfoMoneyFrame", "QuestInfoMoneyFrameCopperButton", "QuestInfoMoneyFrameSilverButton", "QuestInfoMoneyFrameGoldButton", "QuestInfoHonorFrame", "QuestInfoArenaPointsFrame", "QuestInfoTalentFrame", "QuestInfoXPFrame", "QuestInfoPlayerTitleFrame", "QuestInfoItemHighlight", "QuestInfoReputationsFrame", "QuestInfoReputation1", "QuestInfoReputation2", "QuestInfoReputation3", "QuestInfoReputation4", "QuestInfoReputation5", "QuestInfoReputation6", "QuestInfoReputation7", "QuestInfoReputation8", "QuestInfoReputation9", "QuestInfoReputation10", "MerchantFrame", "MerchantItem1", "MerchantItem1ItemButton", "MerchantItem1MoneyFrame", "MerchantItem1MoneyFrameCopperButton", "MerchantItem1MoneyFrameSilverButton", "MerchantItem1MoneyFrameGoldButton", "MerchantItem1AltCurrencyFrame", "MerchantItem1AltCurrencyFrameHonor", "MerchantItem1AltCurrencyFrameArena", "MerchantItem1AltCurrencyFrameItem1", "MerchantItem1AltCurrencyFrameItem2", "MerchantItem1AltCurrencyFrameItem3", "MerchantItem2", "MerchantItem2ItemButton", "MerchantItem2MoneyFrame", "MerchantItem2MoneyFrameCopperButton", "MerchantItem2MoneyFrameSilverButton", "MerchantItem2MoneyFrameGoldButton", "MerchantItem2AltCurrencyFrame", "MerchantItem2AltCurrencyFrameHonor", "MerchantItem2AltCurrencyFrameArena", "MerchantItem2AltCurrencyFrameItem1", "MerchantItem2AltCurrencyFrameItem2", "MerchantItem2AltCurrencyFrameItem3", "MerchantItem3", "MerchantItem3ItemButton", "MerchantItem3MoneyFrame", "MerchantItem3MoneyFrameCopperButton", "MerchantItem3MoneyFrameSilverButton", "MerchantItem3MoneyFrameGoldButton", "MerchantItem3AltCurrencyFrame", "MerchantItem3AltCurrencyFrameHonor", "MerchantItem3AltCurrencyFrameArena", "MerchantItem3AltCurrencyFrameItem1", "MerchantItem3AltCurrencyFrameItem2", "MerchantItem3AltCurrencyFrameItem3", "MerchantItem4", "MerchantItem4ItemButton", "MerchantItem4MoneyFrame", "MerchantItem4MoneyFrameCopperButton", "MerchantItem4MoneyFrameSilverButton", "MerchantItem4MoneyFrameGoldButton", "MerchantItem4AltCurrencyFrame", "MerchantItem4AltCurrencyFrameHonor", "MerchantItem4AltCurrencyFrameArena", "MerchantItem4AltCurrencyFrameItem1", "MerchantItem4AltCurrencyFrameItem2", "MerchantItem4AltCurrencyFrameItem3", "MerchantItem5", "MerchantItem5ItemButton", "MerchantItem5MoneyFrame", "MerchantItem5MoneyFrameCopperButton", "MerchantItem5MoneyFrameSilverButton", "MerchantItem5MoneyFrameGoldButton", "MerchantItem5AltCurrencyFrame", "MerchantItem5AltCurrencyFrameHonor", "MerchantItem5AltCurrencyFrameArena", "MerchantItem5AltCurrencyFrameItem1", "MerchantItem5AltCurrencyFrameItem2", "MerchantItem5AltCurrencyFrameItem3", "MerchantItem6", "MerchantItem6ItemButton", "MerchantItem6MoneyFrame", "MerchantItem6MoneyFrameCopperButton", "MerchantItem6MoneyFrameSilverButton", "MerchantItem6MoneyFrameGoldButton", "MerchantItem6AltCurrencyFrame", "MerchantItem6AltCurrencyFrameHonor", "MerchantItem6AltCurrencyFrameArena", "MerchantItem6AltCurrencyFrameItem1", "MerchantItem6AltCurrencyFrameItem2", "MerchantItem6AltCurrencyFrameItem3", "MerchantItem7", "MerchantItem7ItemButton", "MerchantItem7MoneyFrame", "MerchantItem7MoneyFrameCopperButton", "MerchantItem7MoneyFrameSilverButton", "MerchantItem7MoneyFrameGoldButton", "MerchantItem7AltCurrencyFrame", "MerchantItem7AltCurrencyFrameHonor", "MerchantItem7AltCurrencyFrameArena", "MerchantItem7AltCurrencyFrameItem1", "MerchantItem7AltCurrencyFrameItem2", "MerchantItem7AltCurrencyFrameItem3", "MerchantItem8", "MerchantItem8ItemButton", "MerchantItem8MoneyFrame", "MerchantItem8MoneyFrameCopperButton", "MerchantItem8MoneyFrameSilverButton", "MerchantItem8MoneyFrameGoldButton", "MerchantItem8AltCurrencyFrame", "MerchantItem8AltCurrencyFrameHonor", "MerchantItem8AltCurrencyFrameArena", "MerchantItem8AltCurrencyFrameItem1", "MerchantItem8AltCurrencyFrameItem2", "MerchantItem8AltCurrencyFrameItem3", "MerchantItem9", "MerchantItem9ItemButton", "MerchantItem9MoneyFrame", "MerchantItem9MoneyFrameCopperButton", "MerchantItem9MoneyFrameSilverButton", "MerchantItem9MoneyFrameGoldButton", "MerchantItem9AltCurrencyFrame", "MerchantItem9AltCurrencyFrameHonor", "MerchantItem9AltCurrencyFrameArena", "MerchantItem9AltCurrencyFrameItem1", "MerchantItem9AltCurrencyFrameItem2", "MerchantItem9AltCurrencyFrameItem3", "MerchantItem10", "MerchantItem10ItemButton", "MerchantItem10MoneyFrame", "MerchantItem10MoneyFrameCopperButton", "MerchantItem10MoneyFrameSilverButton", "MerchantItem10MoneyFrameGoldButton", "MerchantItem10AltCurrencyFrame", "MerchantItem10AltCurrencyFrameHonor", "MerchantItem10AltCurrencyFrameArena", "MerchantItem10AltCurrencyFrameItem1", "MerchantItem10AltCurrencyFrameItem2", "MerchantItem10AltCurrencyFrameItem3", "MerchantItem11", "MerchantItem11ItemButton", "MerchantItem11MoneyFrame", "MerchantItem11MoneyFrameCopperButton", "MerchantItem11MoneyFrameSilverButton", "MerchantItem11MoneyFrameGoldButton", "MerchantItem11AltCurrencyFrame", "MerchantItem11AltCurrencyFrameHonor", "MerchantItem11AltCurrencyFrameArena", "MerchantItem11AltCurrencyFrameItem1", "MerchantItem11AltCurrencyFrameItem2", "MerchantItem11AltCurrencyFrameItem3", "MerchantItem12", "MerchantItem12ItemButton", "MerchantItem12MoneyFrame", "MerchantItem12MoneyFrameCopperButton", "MerchantItem12MoneyFrameSilverButton", "MerchantItem12MoneyFrameGoldButton", "MerchantItem12AltCurrencyFrame", "MerchantItem12AltCurrencyFrameHonor", "MerchantItem12AltCurrencyFrameArena", "MerchantItem12AltCurrencyFrameItem1", "MerchantItem12AltCurrencyFrameItem2", "MerchantItem12AltCurrencyFrameItem3", "MerchantRepairAllButton", "MerchantRepairItemButton", "MerchantGuildBankRepairButton", "MerchantBuyBackItem", "MerchantBuyBackItemItemButton", "MerchantBuyBackItemMoneyFrame", "MerchantBuyBackItemMoneyFrameCopperButton", "MerchantBuyBackItemMoneyFrameSilverButton", "MerchantBuyBackItemMoneyFrameGoldButton", "MerchantMoneyFrame", "MerchantMoneyFrameCopperButton", "MerchantMoneyFrameSilverButton", "MerchantMoneyFrameGoldButton", "MerchantPrevPageButton", "MerchantNextPageButton", "MerchantFrameCloseButton", "MerchantFrameTab1", "MerchantFrameTab2", "TradeFrame", "TradeHighlightPlayer", "TradeHighlightRecipient", "TradeHighlightPlayerEnchant", "TradeHighlightRecipientEnchant", "TradeRecipientItem1", "TradeRecipientItem1ItemButton", "TradeRecipientItem2", "TradeRecipientItem2ItemButton", "TradeRecipientItem3", "TradeRecipientItem3ItemButton", "TradeRecipientItem4", "TradeRecipientItem4ItemButton", "TradeRecipientItem5", "TradeRecipientItem5ItemButton", "TradeRecipientItem6", "TradeRecipientItem6ItemButton", "TradeRecipientItem7", "TradeRecipientItem7ItemButton", "TradePlayerItem1", "TradePlayerItem1ItemButton", "TradePlayerItem2", "TradePlayerItem2ItemButton", "TradePlayerItem3", "TradePlayerItem3ItemButton", "TradePlayerItem4", "TradePlayerItem4ItemButton", "TradePlayerItem5", "TradePlayerItem5ItemButton", "TradePlayerItem6", "TradePlayerItem6ItemButton", "TradePlayerItem7", "TradePlayerItem7ItemButton", "TradeFrameTradeButton", "TradeFrameCancelButton", "TradeFrameCloseButton", "TradePlayerInputMoneyFrame", "TradePlayerInputMoneyFrameGold", "TradePlayerInputMoneyFrameSilver", "TradePlayerInputMoneyFrameCopper", "TradeRecipientMoneyFrame", "TradeRecipientMoneyFrameCopperButton", "TradeRecipientMoneyFrameSilverButton", "TradeRecipientMoneyFrameGoldButton", "ContainerFrame1", "ContainerFrame1MoneyFrame", "ContainerFrame1MoneyFrameCopperButton", "ContainerFrame1MoneyFrameSilverButton", "ContainerFrame1MoneyFrameGoldButton", "ContainerFrame1Item1", "ContainerFrame1Item1Cooldown", "ContainerFrame1Item2", "ContainerFrame1Item2Cooldown", "ContainerFrame1Item3", "ContainerFrame1Item3Cooldown", "ContainerFrame1Item4", "ContainerFrame1Item4Cooldown", "ContainerFrame1Item5", "ContainerFrame1Item5Cooldown", "ContainerFrame1Item6", "ContainerFrame1Item6Cooldown", "ContainerFrame1Item7", "ContainerFrame1Item7Cooldown", "ContainerFrame1Item8", "ContainerFrame1Item8Cooldown", "ContainerFrame1Item9", "ContainerFrame1Item9Cooldown", "ContainerFrame1Item10", "ContainerFrame1Item10Cooldown", "ContainerFrame1Item11", "ContainerFrame1Item11Cooldown", "ContainerFrame1Item12", "ContainerFrame1Item12Cooldown", "ContainerFrame1Item13", "ContainerFrame1Item13Cooldown", "ContainerFrame1Item14", "ContainerFrame1Item14Cooldown", "ContainerFrame1Item15", "ContainerFrame1Item15Cooldown", "ContainerFrame1Item16", "ContainerFrame1Item16Cooldown", "ContainerFrame1Item17", "ContainerFrame1Item17Cooldown", "ContainerFrame1Item18", "ContainerFrame1Item18Cooldown", "ContainerFrame1Item19", "ContainerFrame1Item19Cooldown", "ContainerFrame1Item20", "ContainerFrame1Item20Cooldown", "ContainerFrame1Item21", "ContainerFrame1Item21Cooldown", "ContainerFrame1Item22", "ContainerFrame1Item22Cooldown", "ContainerFrame1Item23", "ContainerFrame1Item23Cooldown", "ContainerFrame1Item24", "ContainerFrame1Item24Cooldown", "ContainerFrame1Item25", "ContainerFrame1Item25Cooldown", "ContainerFrame1Item26", "ContainerFrame1Item26Cooldown", "ContainerFrame1Item27", "ContainerFrame1Item27Cooldown", "ContainerFrame1Item28", "ContainerFrame1Item28Cooldown", "ContainerFrame1Item29", "ContainerFrame1Item29Cooldown", "ContainerFrame1Item30", "ContainerFrame1Item30Cooldown", "ContainerFrame1Item31", "ContainerFrame1Item31Cooldown", "ContainerFrame1Item32", "ContainerFrame1Item32Cooldown", "ContainerFrame1Item33", "ContainerFrame1Item33Cooldown", "ContainerFrame1Item34", "ContainerFrame1Item34Cooldown", "ContainerFrame1Item35", "ContainerFrame1Item35Cooldown", "ContainerFrame1Item36", "ContainerFrame1Item36Cooldown", "ContainerFrame1PortraitButton", "ContainerFrame1CloseButton", "ContainerFrame2", "ContainerFrame2MoneyFrame", "ContainerFrame2MoneyFrameCopperButton", "ContainerFrame2MoneyFrameSilverButton", "ContainerFrame2MoneyFrameGoldButton", "ContainerFrame2Item1", "ContainerFrame2Item1Cooldown", "ContainerFrame2Item2", "ContainerFrame2Item2Cooldown", "ContainerFrame2Item3", "ContainerFrame2Item3Cooldown", "ContainerFrame2Item4", "ContainerFrame2Item4Cooldown", "ContainerFrame2Item5", "ContainerFrame2Item5Cooldown", "ContainerFrame2Item6", "ContainerFrame2Item6Cooldown", "ContainerFrame2Item7", "ContainerFrame2Item7Cooldown", "ContainerFrame2Item8", "ContainerFrame2Item8Cooldown", "ContainerFrame2Item9", "ContainerFrame2Item9Cooldown", "ContainerFrame2Item10", "ContainerFrame2Item10Cooldown", "ContainerFrame2Item11", "ContainerFrame2Item11Cooldown", "ContainerFrame2Item12", "ContainerFrame2Item12Cooldown", "ContainerFrame2Item13", "ContainerFrame2Item13Cooldown", "ContainerFrame2Item14", "ContainerFrame2Item14Cooldown", "ContainerFrame2Item15", "ContainerFrame2Item15Cooldown", "ContainerFrame2Item16", "ContainerFrame2Item16Cooldown", "ContainerFrame2Item17", "ContainerFrame2Item17Cooldown", "ContainerFrame2Item18", "ContainerFrame2Item18Cooldown", "ContainerFrame2Item19", "ContainerFrame2Item19Cooldown", "ContainerFrame2Item20", "ContainerFrame2Item20Cooldown", "ContainerFrame2Item21", "ContainerFrame2Item21Cooldown", "ContainerFrame2Item22", "ContainerFrame2Item22Cooldown", "ContainerFrame2Item23", "ContainerFrame2Item23Cooldown", "ContainerFrame2Item24", "ContainerFrame2Item24Cooldown", "ContainerFrame2Item25", "ContainerFrame2Item25Cooldown", "ContainerFrame2Item26", "ContainerFrame2Item26Cooldown", "ContainerFrame2Item27", "ContainerFrame2Item27Cooldown", "ContainerFrame2Item28", "ContainerFrame2Item28Cooldown", "ContainerFrame2Item29", "ContainerFrame2Item29Cooldown", "ContainerFrame2Item30", "ContainerFrame2Item30Cooldown", "ContainerFrame2Item31", "ContainerFrame2Item31Cooldown", "ContainerFrame2Item32", "ContainerFrame2Item32Cooldown", "ContainerFrame2Item33", "ContainerFrame2Item33Cooldown", "ContainerFrame2Item34", "ContainerFrame2Item34Cooldown", "ContainerFrame2Item35", "ContainerFrame2Item35Cooldown", "ContainerFrame2Item36", "ContainerFrame2Item36Cooldown", "ContainerFrame2PortraitButton", "ContainerFrame2CloseButton", "ContainerFrame3", "ContainerFrame3MoneyFrame", "ContainerFrame3MoneyFrameCopperButton", "ContainerFrame3MoneyFrameSilverButton", "ContainerFrame3MoneyFrameGoldButton", "ContainerFrame3Item1", "ContainerFrame3Item1Cooldown", "ContainerFrame3Item2", "ContainerFrame3Item2Cooldown", "ContainerFrame3Item3", "ContainerFrame3Item3Cooldown", "ContainerFrame3Item4", "ContainerFrame3Item4Cooldown", "ContainerFrame3Item5", "ContainerFrame3Item5Cooldown", "ContainerFrame3Item6", "ContainerFrame3Item6Cooldown", "ContainerFrame3Item7", "ContainerFrame3Item7Cooldown", "ContainerFrame3Item8", "ContainerFrame3Item8Cooldown", "ContainerFrame3Item9", "ContainerFrame3Item9Cooldown", "ContainerFrame3Item10", "ContainerFrame3Item10Cooldown", "ContainerFrame3Item11", "ContainerFrame3Item11Cooldown", "ContainerFrame3Item12", "ContainerFrame3Item12Cooldown", "ContainerFrame3Item13", "ContainerFrame3Item13Cooldown", "ContainerFrame3Item14", "ContainerFrame3Item14Cooldown", "ContainerFrame3Item15", "ContainerFrame3Item15Cooldown", "ContainerFrame3Item16", "ContainerFrame3Item16Cooldown", "ContainerFrame3Item17", "ContainerFrame3Item17Cooldown", "ContainerFrame3Item18", "ContainerFrame3Item18Cooldown", "ContainerFrame3Item19", "ContainerFrame3Item19Cooldown", "ContainerFrame3Item20", "ContainerFrame3Item20Cooldown", "ContainerFrame3Item21", "ContainerFrame3Item21Cooldown", "ContainerFrame3Item22", "ContainerFrame3Item22Cooldown", "ContainerFrame3Item23", "ContainerFrame3Item23Cooldown", "ContainerFrame3Item24", "ContainerFrame3Item24Cooldown", "ContainerFrame3Item25", "ContainerFrame3Item25Cooldown", "ContainerFrame3Item26", "ContainerFrame3Item26Cooldown", "ContainerFrame3Item27", "ContainerFrame3Item27Cooldown", "ContainerFrame3Item28", "ContainerFrame3Item28Cooldown", "ContainerFrame3Item29", "ContainerFrame3Item29Cooldown", "ContainerFrame3Item30", "ContainerFrame3Item30Cooldown", "ContainerFrame3Item31", "ContainerFrame3Item31Cooldown", "ContainerFrame3Item32", "ContainerFrame3Item32Cooldown", "ContainerFrame3Item33", "ContainerFrame3Item33Cooldown", "ContainerFrame3Item34", "ContainerFrame3Item34Cooldown", "ContainerFrame3Item35", "ContainerFrame3Item35Cooldown", "ContainerFrame3Item36", "ContainerFrame3Item36Cooldown", "ContainerFrame3PortraitButton", "ContainerFrame3CloseButton", "ContainerFrame4", "ContainerFrame4MoneyFrame", "ContainerFrame4MoneyFrameCopperButton", "ContainerFrame4MoneyFrameSilverButton", "ContainerFrame4MoneyFrameGoldButton", "ContainerFrame4Item1", "ContainerFrame4Item1Cooldown", "ContainerFrame4Item2", "ContainerFrame4Item2Cooldown", "ContainerFrame4Item3", "ContainerFrame4Item3Cooldown", "ContainerFrame4Item4", "ContainerFrame4Item4Cooldown", "ContainerFrame4Item5", "ContainerFrame4Item5Cooldown", "ContainerFrame4Item6", "ContainerFrame4Item6Cooldown", "ContainerFrame4Item7", "ContainerFrame4Item7Cooldown", "ContainerFrame4Item8", "ContainerFrame4Item8Cooldown", "ContainerFrame4Item9", "ContainerFrame4Item9Cooldown", "ContainerFrame4Item10", "ContainerFrame4Item10Cooldown", "ContainerFrame4Item11", "ContainerFrame4Item11Cooldown", "ContainerFrame4Item12", "ContainerFrame4Item12Cooldown", "ContainerFrame4Item13", "ContainerFrame4Item13Cooldown", "ContainerFrame4Item14", "ContainerFrame4Item14Cooldown", "ContainerFrame4Item15", "ContainerFrame4Item15Cooldown", "ContainerFrame4Item16", "ContainerFrame4Item16Cooldown", "ContainerFrame4Item17", "ContainerFrame4Item17Cooldown", "ContainerFrame4Item18", "ContainerFrame4Item18Cooldown", "ContainerFrame4Item19", "ContainerFrame4Item19Cooldown", "ContainerFrame4Item20", "ContainerFrame4Item20Cooldown", "ContainerFrame4Item21", "ContainerFrame4Item21Cooldown", "ContainerFrame4Item22", "ContainerFrame4Item22Cooldown", "ContainerFrame4Item23", "ContainerFrame4Item23Cooldown", "ContainerFrame4Item24", "ContainerFrame4Item24Cooldown", "ContainerFrame4Item25", "ContainerFrame4Item25Cooldown", "ContainerFrame4Item26", "ContainerFrame4Item26Cooldown", "ContainerFrame4Item27", "ContainerFrame4Item27Cooldown", "ContainerFrame4Item28", "ContainerFrame4Item28Cooldown", "ContainerFrame4Item29", "ContainerFrame4Item29Cooldown", "ContainerFrame4Item30", "ContainerFrame4Item30Cooldown", "ContainerFrame4Item31", "ContainerFrame4Item31Cooldown", "ContainerFrame4Item32", "ContainerFrame4Item32Cooldown", "ContainerFrame4Item33", "ContainerFrame4Item33Cooldown", "ContainerFrame4Item34", "ContainerFrame4Item34Cooldown", "ContainerFrame4Item35", "ContainerFrame4Item35Cooldown", "ContainerFrame4Item36", "ContainerFrame4Item36Cooldown", "ContainerFrame4PortraitButton", "ContainerFrame4CloseButton", "ContainerFrame5", "ContainerFrame5MoneyFrame", "ContainerFrame5MoneyFrameCopperButton", "ContainerFrame5MoneyFrameSilverButton", "ContainerFrame5MoneyFrameGoldButton", "ContainerFrame5Item1", "ContainerFrame5Item1Cooldown", "ContainerFrame5Item2", "ContainerFrame5Item2Cooldown", "ContainerFrame5Item3", "ContainerFrame5Item3Cooldown", "ContainerFrame5Item4", "ContainerFrame5Item4Cooldown", "ContainerFrame5Item5", "ContainerFrame5Item5Cooldown", "ContainerFrame5Item6", "ContainerFrame5Item6Cooldown", "ContainerFrame5Item7", "ContainerFrame5Item7Cooldown", "ContainerFrame5Item8", "ContainerFrame5Item8Cooldown", "ContainerFrame5Item9", "ContainerFrame5Item9Cooldown", "ContainerFrame5Item10", "ContainerFrame5Item10Cooldown", "ContainerFrame5Item11", "ContainerFrame5Item11Cooldown", "ContainerFrame5Item12", "ContainerFrame5Item12Cooldown", "ContainerFrame5Item13", "ContainerFrame5Item13Cooldown", "ContainerFrame5Item14", "ContainerFrame5Item14Cooldown", "ContainerFrame5Item15", "ContainerFrame5Item15Cooldown", "ContainerFrame5Item16", "ContainerFrame5Item16Cooldown", "ContainerFrame5Item17", "ContainerFrame5Item17Cooldown", "ContainerFrame5Item18", "ContainerFrame5Item18Cooldown", "ContainerFrame5Item19", "ContainerFrame5Item19Cooldown", "ContainerFrame5Item20", "ContainerFrame5Item20Cooldown", "ContainerFrame5Item21", "ContainerFrame5Item21Cooldown", "ContainerFrame5Item22", "ContainerFrame5Item22Cooldown", "ContainerFrame5Item23", "ContainerFrame5Item23Cooldown", "ContainerFrame5Item24", "ContainerFrame5Item24Cooldown", "ContainerFrame5Item25", "ContainerFrame5Item25Cooldown", "ContainerFrame5Item26", "ContainerFrame5Item26Cooldown", "ContainerFrame5Item27", "ContainerFrame5Item27Cooldown", "ContainerFrame5Item28", "ContainerFrame5Item28Cooldown", "ContainerFrame5Item29", "ContainerFrame5Item29Cooldown", "ContainerFrame5Item30", "ContainerFrame5Item30Cooldown", "ContainerFrame5Item31", "ContainerFrame5Item31Cooldown", "ContainerFrame5Item32", "ContainerFrame5Item32Cooldown", "ContainerFrame5Item33", "ContainerFrame5Item33Cooldown", "ContainerFrame5Item34", "ContainerFrame5Item34Cooldown", "ContainerFrame5Item35", "ContainerFrame5Item35Cooldown", "ContainerFrame5Item36", "ContainerFrame5Item36Cooldown", "ContainerFrame5PortraitButton", "ContainerFrame5CloseButton", "ContainerFrame6", "ContainerFrame6MoneyFrame", "ContainerFrame6MoneyFrameCopperButton", "ContainerFrame6MoneyFrameSilverButton", "ContainerFrame6MoneyFrameGoldButton", "ContainerFrame6Item1", "ContainerFrame6Item1Cooldown", "ContainerFrame6Item2", "ContainerFrame6Item2Cooldown", "ContainerFrame6Item3", "ContainerFrame6Item3Cooldown", "ContainerFrame6Item4", "ContainerFrame6Item4Cooldown", "ContainerFrame6Item5", "ContainerFrame6Item5Cooldown", "ContainerFrame6Item6", "ContainerFrame6Item6Cooldown", "ContainerFrame6Item7", "ContainerFrame6Item7Cooldown", "ContainerFrame6Item8", "ContainerFrame6Item8Cooldown", "ContainerFrame6Item9", "ContainerFrame6Item9Cooldown", "ContainerFrame6Item10", "ContainerFrame6Item10Cooldown", "ContainerFrame6Item11", "ContainerFrame6Item11Cooldown", "ContainerFrame6Item12", "ContainerFrame6Item12Cooldown", "ContainerFrame6Item13", "ContainerFrame6Item13Cooldown", "ContainerFrame6Item14", "ContainerFrame6Item14Cooldown", "ContainerFrame6Item15", "ContainerFrame6Item15Cooldown", "ContainerFrame6Item16", "ContainerFrame6Item16Cooldown", "ContainerFrame6Item17", "ContainerFrame6Item17Cooldown", "ContainerFrame6Item18", "ContainerFrame6Item18Cooldown", "ContainerFrame6Item19", "ContainerFrame6Item19Cooldown", "ContainerFrame6Item20", "ContainerFrame6Item20Cooldown", "ContainerFrame6Item21", "ContainerFrame6Item21Cooldown", "ContainerFrame6Item22", "ContainerFrame6Item22Cooldown", "ContainerFrame6Item23", "ContainerFrame6Item23Cooldown", "ContainerFrame6Item24", "ContainerFrame6Item24Cooldown", "ContainerFrame6Item25", "ContainerFrame6Item25Cooldown", "ContainerFrame6Item26", "ContainerFrame6Item26Cooldown", "ContainerFrame6Item27", "ContainerFrame6Item27Cooldown", "ContainerFrame6Item28", "ContainerFrame6Item28Cooldown", "ContainerFrame6Item29", "ContainerFrame6Item29Cooldown", "ContainerFrame6Item30", "ContainerFrame6Item30Cooldown", "ContainerFrame6Item31", "ContainerFrame6Item31Cooldown", "ContainerFrame6Item32", "ContainerFrame6Item32Cooldown", "ContainerFrame6Item33", "ContainerFrame6Item33Cooldown", "ContainerFrame6Item34", "ContainerFrame6Item34Cooldown", "ContainerFrame6Item35", "ContainerFrame6Item35Cooldown", "ContainerFrame6Item36", "ContainerFrame6Item36Cooldown", "ContainerFrame6PortraitButton", "ContainerFrame6CloseButton", "ContainerFrame7", "ContainerFrame7MoneyFrame", "ContainerFrame7MoneyFrameCopperButton", "ContainerFrame7MoneyFrameSilverButton", "ContainerFrame7MoneyFrameGoldButton", "ContainerFrame7Item1", "ContainerFrame7Item1Cooldown", "ContainerFrame7Item2", "ContainerFrame7Item2Cooldown", "ContainerFrame7Item3", "ContainerFrame7Item3Cooldown", "ContainerFrame7Item4", "ContainerFrame7Item4Cooldown", "ContainerFrame7Item5", "ContainerFrame7Item5Cooldown", "ContainerFrame7Item6", "ContainerFrame7Item6Cooldown", "ContainerFrame7Item7", "ContainerFrame7Item7Cooldown", "ContainerFrame7Item8", "ContainerFrame7Item8Cooldown", "ContainerFrame7Item9", "ContainerFrame7Item9Cooldown", "ContainerFrame7Item10", "ContainerFrame7Item10Cooldown", "ContainerFrame7Item11", "ContainerFrame7Item11Cooldown", "ContainerFrame7Item12", "ContainerFrame7Item12Cooldown", "ContainerFrame7Item13", "ContainerFrame7Item13Cooldown", "ContainerFrame7Item14", "ContainerFrame7Item14Cooldown", "ContainerFrame7Item15", "ContainerFrame7Item15Cooldown", "ContainerFrame7Item16", "ContainerFrame7Item16Cooldown", "ContainerFrame7Item17", "ContainerFrame7Item17Cooldown", "ContainerFrame7Item18", "ContainerFrame7Item18Cooldown", "ContainerFrame7Item19", "ContainerFrame7Item19Cooldown", "ContainerFrame7Item20", "ContainerFrame7Item20Cooldown", "ContainerFrame7Item21", "ContainerFrame7Item21Cooldown", "ContainerFrame7Item22", "ContainerFrame7Item22Cooldown", "ContainerFrame7Item23", "ContainerFrame7Item23Cooldown", "ContainerFrame7Item24", "ContainerFrame7Item24Cooldown", "ContainerFrame7Item25", "ContainerFrame7Item25Cooldown", "ContainerFrame7Item26", "ContainerFrame7Item26Cooldown", "ContainerFrame7Item27", "ContainerFrame7Item27Cooldown", "ContainerFrame7Item28", "ContainerFrame7Item28Cooldown", "ContainerFrame7Item29", "ContainerFrame7Item29Cooldown", "ContainerFrame7Item30", "ContainerFrame7Item30Cooldown", "ContainerFrame7Item31", "ContainerFrame7Item31Cooldown", "ContainerFrame7Item32", "ContainerFrame7Item32Cooldown", "ContainerFrame7Item33", "ContainerFrame7Item33Cooldown", "ContainerFrame7Item34", "ContainerFrame7Item34Cooldown", "ContainerFrame7Item35", "ContainerFrame7Item35Cooldown", "ContainerFrame7Item36", "ContainerFrame7Item36Cooldown", "ContainerFrame7PortraitButton", "ContainerFrame7CloseButton", "ContainerFrame8", "ContainerFrame8MoneyFrame", "ContainerFrame8MoneyFrameCopperButton", "ContainerFrame8MoneyFrameSilverButton", "ContainerFrame8MoneyFrameGoldButton", "ContainerFrame8Item1", "ContainerFrame8Item1Cooldown", "ContainerFrame8Item2", "ContainerFrame8Item2Cooldown", "ContainerFrame8Item3", "ContainerFrame8Item3Cooldown", "ContainerFrame8Item4", "ContainerFrame8Item4Cooldown", "ContainerFrame8Item5", "ContainerFrame8Item5Cooldown", "ContainerFrame8Item6", "ContainerFrame8Item6Cooldown", "ContainerFrame8Item7", "ContainerFrame8Item7Cooldown", "ContainerFrame8Item8", "ContainerFrame8Item8Cooldown", "ContainerFrame8Item9", "ContainerFrame8Item9Cooldown", "ContainerFrame8Item10", "ContainerFrame8Item10Cooldown", "ContainerFrame8Item11", "ContainerFrame8Item11Cooldown", "ContainerFrame8Item12", "ContainerFrame8Item12Cooldown", "ContainerFrame8Item13", "ContainerFrame8Item13Cooldown", "ContainerFrame8Item14", "ContainerFrame8Item14Cooldown", "ContainerFrame8Item15", "ContainerFrame8Item15Cooldown", "ContainerFrame8Item16", "ContainerFrame8Item16Cooldown", "ContainerFrame8Item17", "ContainerFrame8Item17Cooldown", "ContainerFrame8Item18", "ContainerFrame8Item18Cooldown", "ContainerFrame8Item19", "ContainerFrame8Item19Cooldown", "ContainerFrame8Item20", "ContainerFrame8Item20Cooldown", "ContainerFrame8Item21", "ContainerFrame8Item21Cooldown", "ContainerFrame8Item22", "ContainerFrame8Item22Cooldown", "ContainerFrame8Item23", "ContainerFrame8Item23Cooldown", "ContainerFrame8Item24", "ContainerFrame8Item24Cooldown", "ContainerFrame8Item25", "ContainerFrame8Item25Cooldown", "ContainerFrame8Item26", "ContainerFrame8Item26Cooldown", "ContainerFrame8Item27", "ContainerFrame8Item27Cooldown", "ContainerFrame8Item28", "ContainerFrame8Item28Cooldown", "ContainerFrame8Item29", "ContainerFrame8Item29Cooldown", "ContainerFrame8Item30", "ContainerFrame8Item30Cooldown", "ContainerFrame8Item31", "ContainerFrame8Item31Cooldown", "ContainerFrame8Item32", "ContainerFrame8Item32Cooldown", "ContainerFrame8Item33", "ContainerFrame8Item33Cooldown", "ContainerFrame8Item34", "ContainerFrame8Item34Cooldown", "ContainerFrame8Item35", "ContainerFrame8Item35Cooldown", "ContainerFrame8Item36", "ContainerFrame8Item36Cooldown", "ContainerFrame8PortraitButton", "ContainerFrame8CloseButton", "ContainerFrame9", "ContainerFrame9MoneyFrame", "ContainerFrame9MoneyFrameCopperButton", "ContainerFrame9MoneyFrameSilverButton", "ContainerFrame9MoneyFrameGoldButton", "ContainerFrame9Item1", "ContainerFrame9Item1Cooldown", "ContainerFrame9Item2", "ContainerFrame9Item2Cooldown", "ContainerFrame9Item3", "ContainerFrame9Item3Cooldown", "ContainerFrame9Item4", "ContainerFrame9Item4Cooldown", "ContainerFrame9Item5", "ContainerFrame9Item5Cooldown", "ContainerFrame9Item6", "ContainerFrame9Item6Cooldown", "ContainerFrame9Item7", "ContainerFrame9Item7Cooldown", "ContainerFrame9Item8", "ContainerFrame9Item8Cooldown", "ContainerFrame9Item9", "ContainerFrame9Item9Cooldown", "ContainerFrame9Item10", "ContainerFrame9Item10Cooldown", "ContainerFrame9Item11", "ContainerFrame9Item11Cooldown", "ContainerFrame9Item12", "ContainerFrame9Item12Cooldown", "ContainerFrame9Item13", "ContainerFrame9Item13Cooldown", "ContainerFrame9Item14", "ContainerFrame9Item14Cooldown", "ContainerFrame9Item15", "ContainerFrame9Item15Cooldown", "ContainerFrame9Item16", "ContainerFrame9Item16Cooldown", "ContainerFrame9Item17", "ContainerFrame9Item17Cooldown", "ContainerFrame9Item18", "ContainerFrame9Item18Cooldown", "ContainerFrame9Item19", "ContainerFrame9Item19Cooldown", "ContainerFrame9Item20", "ContainerFrame9Item20Cooldown", "ContainerFrame9Item21", "ContainerFrame9Item21Cooldown", "ContainerFrame9Item22", "ContainerFrame9Item22Cooldown", "ContainerFrame9Item23", "ContainerFrame9Item23Cooldown", "ContainerFrame9Item24", "ContainerFrame9Item24Cooldown", "ContainerFrame9Item25", "ContainerFrame9Item25Cooldown", "ContainerFrame9Item26", "ContainerFrame9Item26Cooldown", "ContainerFrame9Item27", "ContainerFrame9Item27Cooldown", "ContainerFrame9Item28", "ContainerFrame9Item28Cooldown", "ContainerFrame9Item29", "ContainerFrame9Item29Cooldown", "ContainerFrame9Item30", "ContainerFrame9Item30Cooldown", "ContainerFrame9Item31", "ContainerFrame9Item31Cooldown", "ContainerFrame9Item32", "ContainerFrame9Item32Cooldown", "ContainerFrame9Item33", "ContainerFrame9Item33Cooldown", "ContainerFrame9Item34", "ContainerFrame9Item34Cooldown", "ContainerFrame9Item35", "ContainerFrame9Item35Cooldown", "ContainerFrame9Item36", "ContainerFrame9Item36Cooldown", "ContainerFrame9PortraitButton", "ContainerFrame9CloseButton", "ContainerFrame10", "ContainerFrame10MoneyFrame", "ContainerFrame10MoneyFrameCopperButton", "ContainerFrame10MoneyFrameSilverButton", "ContainerFrame10MoneyFrameGoldButton", "ContainerFrame10Item1", "ContainerFrame10Item1Cooldown", "ContainerFrame10Item2", "ContainerFrame10Item2Cooldown", "ContainerFrame10Item3", "ContainerFrame10Item3Cooldown", "ContainerFrame10Item4", "ContainerFrame10Item4Cooldown", "ContainerFrame10Item5", "ContainerFrame10Item5Cooldown", "ContainerFrame10Item6", "ContainerFrame10Item6Cooldown", "ContainerFrame10Item7", "ContainerFrame10Item7Cooldown", "ContainerFrame10Item8", "ContainerFrame10Item8Cooldown", "ContainerFrame10Item9", "ContainerFrame10Item9Cooldown", "ContainerFrame10Item10", "ContainerFrame10Item10Cooldown", "ContainerFrame10Item11", "ContainerFrame10Item11Cooldown", "ContainerFrame10Item12", "ContainerFrame10Item12Cooldown", "ContainerFrame10Item13", "ContainerFrame10Item13Cooldown", "ContainerFrame10Item14", "ContainerFrame10Item14Cooldown", "ContainerFrame10Item15", "ContainerFrame10Item15Cooldown", "ContainerFrame10Item16", "ContainerFrame10Item16Cooldown", "ContainerFrame10Item17", "ContainerFrame10Item17Cooldown", "ContainerFrame10Item18", "ContainerFrame10Item18Cooldown", "ContainerFrame10Item19", "ContainerFrame10Item19Cooldown", "ContainerFrame10Item20", "ContainerFrame10Item20Cooldown", "ContainerFrame10Item21", "ContainerFrame10Item21Cooldown", "ContainerFrame10Item22", "ContainerFrame10Item22Cooldown", "ContainerFrame10Item23", "ContainerFrame10Item23Cooldown", "ContainerFrame10Item24", "ContainerFrame10Item24Cooldown", "ContainerFrame10Item25", "ContainerFrame10Item25Cooldown", "ContainerFrame10Item26", "ContainerFrame10Item26Cooldown", "ContainerFrame10Item27", "ContainerFrame10Item27Cooldown", "ContainerFrame10Item28", "ContainerFrame10Item28Cooldown", "ContainerFrame10Item29", "ContainerFrame10Item29Cooldown", "ContainerFrame10Item30", "ContainerFrame10Item30Cooldown", "ContainerFrame10Item31", "ContainerFrame10Item31Cooldown", "ContainerFrame10Item32", "ContainerFrame10Item32Cooldown", "ContainerFrame10Item33", "ContainerFrame10Item33Cooldown", "ContainerFrame10Item34", "ContainerFrame10Item34Cooldown", "ContainerFrame10Item35", "ContainerFrame10Item35Cooldown", "ContainerFrame10Item36", "ContainerFrame10Item36Cooldown", "ContainerFrame10PortraitButton", "ContainerFrame10CloseButton", "ContainerFrame11", "ContainerFrame11MoneyFrame", "ContainerFrame11MoneyFrameCopperButton", "ContainerFrame11MoneyFrameSilverButton", "ContainerFrame11MoneyFrameGoldButton", "ContainerFrame11Item1", "ContainerFrame11Item1Cooldown", "ContainerFrame11Item2", "ContainerFrame11Item2Cooldown", "ContainerFrame11Item3", "ContainerFrame11Item3Cooldown", "ContainerFrame11Item4", "ContainerFrame11Item4Cooldown", "ContainerFrame11Item5", "ContainerFrame11Item5Cooldown", "ContainerFrame11Item6", "ContainerFrame11Item6Cooldown", "ContainerFrame11Item7", "ContainerFrame11Item7Cooldown", "ContainerFrame11Item8", "ContainerFrame11Item8Cooldown", "ContainerFrame11Item9", "ContainerFrame11Item9Cooldown", "ContainerFrame11Item10", "ContainerFrame11Item10Cooldown", "ContainerFrame11Item11", "ContainerFrame11Item11Cooldown", "ContainerFrame11Item12", "ContainerFrame11Item12Cooldown", "ContainerFrame11Item13", "ContainerFrame11Item13Cooldown", "ContainerFrame11Item14", "ContainerFrame11Item14Cooldown", "ContainerFrame11Item15", "ContainerFrame11Item15Cooldown", "ContainerFrame11Item16", "ContainerFrame11Item16Cooldown", "ContainerFrame11Item17", "ContainerFrame11Item17Cooldown", "ContainerFrame11Item18", "ContainerFrame11Item18Cooldown", "ContainerFrame11Item19", "ContainerFrame11Item19Cooldown", "ContainerFrame11Item20", "ContainerFrame11Item20Cooldown", "ContainerFrame11Item21", "ContainerFrame11Item21Cooldown", "ContainerFrame11Item22", "ContainerFrame11Item22Cooldown", "ContainerFrame11Item23", "ContainerFrame11Item23Cooldown", "ContainerFrame11Item24", "ContainerFrame11Item24Cooldown", "ContainerFrame11Item25", "ContainerFrame11Item25Cooldown", "ContainerFrame11Item26", "ContainerFrame11Item26Cooldown", "ContainerFrame11Item27", "ContainerFrame11Item27Cooldown", "ContainerFrame11Item28", "ContainerFrame11Item28Cooldown", "ContainerFrame11Item29", "ContainerFrame11Item29Cooldown", "ContainerFrame11Item30", "ContainerFrame11Item30Cooldown", "ContainerFrame11Item31", "ContainerFrame11Item31Cooldown", "ContainerFrame11Item32", "ContainerFrame11Item32Cooldown", "ContainerFrame11Item33", "ContainerFrame11Item33Cooldown", "ContainerFrame11Item34", "ContainerFrame11Item34Cooldown", "ContainerFrame11Item35", "ContainerFrame11Item35Cooldown", "ContainerFrame11Item36", "ContainerFrame11Item36Cooldown", "ContainerFrame11PortraitButton", "ContainerFrame11CloseButton", "ContainerFrame12", "ContainerFrame12MoneyFrame", "ContainerFrame12MoneyFrameCopperButton", "ContainerFrame12MoneyFrameSilverButton", "ContainerFrame12MoneyFrameGoldButton", "ContainerFrame12Item1", "ContainerFrame12Item1Cooldown", "ContainerFrame12Item2", "ContainerFrame12Item2Cooldown", "ContainerFrame12Item3", "ContainerFrame12Item3Cooldown", "ContainerFrame12Item4", "ContainerFrame12Item4Cooldown", "ContainerFrame12Item5", "ContainerFrame12Item5Cooldown", "ContainerFrame12Item6", "ContainerFrame12Item6Cooldown", "ContainerFrame12Item7", "ContainerFrame12Item7Cooldown", "ContainerFrame12Item8", "ContainerFrame12Item8Cooldown", "ContainerFrame12Item9", "ContainerFrame12Item9Cooldown", "ContainerFrame12Item10", "ContainerFrame12Item10Cooldown", "ContainerFrame12Item11", "ContainerFrame12Item11Cooldown", "ContainerFrame12Item12", "ContainerFrame12Item12Cooldown", "ContainerFrame12Item13", "ContainerFrame12Item13Cooldown", "ContainerFrame12Item14", "ContainerFrame12Item14Cooldown", "ContainerFrame12Item15", "ContainerFrame12Item15Cooldown", "ContainerFrame12Item16", "ContainerFrame12Item16Cooldown", "ContainerFrame12Item17", "ContainerFrame12Item17Cooldown", "ContainerFrame12Item18", "ContainerFrame12Item18Cooldown", "ContainerFrame12Item19", "ContainerFrame12Item19Cooldown", "ContainerFrame12Item20", "ContainerFrame12Item20Cooldown", "ContainerFrame12Item21", "ContainerFrame12Item21Cooldown", "ContainerFrame12Item22", "ContainerFrame12Item22Cooldown", "ContainerFrame12Item23", "ContainerFrame12Item23Cooldown", "ContainerFrame12Item24", "ContainerFrame12Item24Cooldown", "ContainerFrame12Item25", "ContainerFrame12Item25Cooldown", "ContainerFrame12Item26", "ContainerFrame12Item26Cooldown", "ContainerFrame12Item27", "ContainerFrame12Item27Cooldown", "ContainerFrame12Item28", "ContainerFrame12Item28Cooldown", "ContainerFrame12Item29", "ContainerFrame12Item29Cooldown", "ContainerFrame12Item30", "ContainerFrame12Item30Cooldown", "ContainerFrame12Item31", "ContainerFrame12Item31Cooldown", "ContainerFrame12Item32", "ContainerFrame12Item32Cooldown", "ContainerFrame12Item33", "ContainerFrame12Item33Cooldown", "ContainerFrame12Item34", "ContainerFrame12Item34Cooldown", "ContainerFrame12Item35", "ContainerFrame12Item35Cooldown", "ContainerFrame12Item36", "ContainerFrame12Item36Cooldown", "ContainerFrame12PortraitButton", "ContainerFrame12CloseButton", "ContainerFrame13", "ContainerFrame13MoneyFrame", "ContainerFrame13MoneyFrameCopperButton", "ContainerFrame13MoneyFrameSilverButton", "ContainerFrame13MoneyFrameGoldButton", "ContainerFrame13Item1", "ContainerFrame13Item1Cooldown", "ContainerFrame13Item2", "ContainerFrame13Item2Cooldown", "ContainerFrame13Item3", "ContainerFrame13Item3Cooldown", "ContainerFrame13Item4", "ContainerFrame13Item4Cooldown", "ContainerFrame13Item5", "ContainerFrame13Item5Cooldown", "ContainerFrame13Item6", "ContainerFrame13Item6Cooldown", "ContainerFrame13Item7", "ContainerFrame13Item7Cooldown", "ContainerFrame13Item8", "ContainerFrame13Item8Cooldown", "ContainerFrame13Item9", "ContainerFrame13Item9Cooldown", "ContainerFrame13Item10", "ContainerFrame13Item10Cooldown", "ContainerFrame13Item11", "ContainerFrame13Item11Cooldown", "ContainerFrame13Item12", "ContainerFrame13Item12Cooldown", "ContainerFrame13Item13", "ContainerFrame13Item13Cooldown", "ContainerFrame13Item14", "ContainerFrame13Item14Cooldown", "ContainerFrame13Item15", "ContainerFrame13Item15Cooldown", "ContainerFrame13Item16", "ContainerFrame13Item16Cooldown", "ContainerFrame13Item17", "ContainerFrame13Item17Cooldown", "ContainerFrame13Item18", "ContainerFrame13Item18Cooldown", "ContainerFrame13Item19", "ContainerFrame13Item19Cooldown", "ContainerFrame13Item20", "ContainerFrame13Item20Cooldown", "ContainerFrame13Item21", "ContainerFrame13Item21Cooldown", "ContainerFrame13Item22", "ContainerFrame13Item22Cooldown", "ContainerFrame13Item23", "ContainerFrame13Item23Cooldown", "ContainerFrame13Item24", "ContainerFrame13Item24Cooldown", "ContainerFrame13Item25", "ContainerFrame13Item25Cooldown", "ContainerFrame13Item26", "ContainerFrame13Item26Cooldown", "ContainerFrame13Item27", "ContainerFrame13Item27Cooldown", "ContainerFrame13Item28", "ContainerFrame13Item28Cooldown", "ContainerFrame13Item29", "ContainerFrame13Item29Cooldown", "ContainerFrame13Item30", "ContainerFrame13Item30Cooldown", "ContainerFrame13Item31", "ContainerFrame13Item31Cooldown", "ContainerFrame13Item32", "ContainerFrame13Item32Cooldown", "ContainerFrame13Item33", "ContainerFrame13Item33Cooldown", "ContainerFrame13Item34", "ContainerFrame13Item34Cooldown", "ContainerFrame13Item35", "ContainerFrame13Item35Cooldown", "ContainerFrame13Item36", "ContainerFrame13Item36Cooldown", "ContainerFrame13PortraitButton", "ContainerFrame13CloseButton", "LootFrame", "LootCloseButton", "LootButton1", "LootButton2", "LootButton3", "LootButton4", "LootFrameUpButton", "LootFrameDownButton", "GroupLootDropDown", "GroupLootDropDownButton", "GroupLootFrame1", "GroupLootFrame1IconFrame", "GroupLootFrame1PassButton", "GroupLootFrame1RollButton", "GroupLootFrame1GreedButton", "GroupLootFrame1DisenchantButton", "GroupLootFrame1Timer", "GroupLootFrame2", "GroupLootFrame2IconFrame", "GroupLootFrame2PassButton", "GroupLootFrame2RollButton", "GroupLootFrame2GreedButton", "GroupLootFrame2DisenchantButton", "GroupLootFrame2Timer", "GroupLootFrame3", "GroupLootFrame3IconFrame", "GroupLootFrame3PassButton", "GroupLootFrame3RollButton", "GroupLootFrame3GreedButton", "GroupLootFrame3DisenchantButton", "GroupLootFrame3Timer", "GroupLootFrame4", "GroupLootFrame4IconFrame", "GroupLootFrame4PassButton", "GroupLootFrame4RollButton", "GroupLootFrame4GreedButton", "GroupLootFrame4DisenchantButton", "GroupLootFrame4Timer", "ItemTextFrame", "ItemTextScrollFrame", "ItemTextPageScrollChild", "ItemTextPageText", "ItemTextScrollFrameScrollBar", "ItemTextScrollFrameScrollBarScrollUpButton", "ItemTextScrollFrameScrollBarScrollDownButton", "ItemTextStatusBar", "ItemTextPrevPageButton", "ItemTextNextPageButton", "ItemTextCloseButton", "TaxiFrame", "TaxiCloseButton", "TaxiRouteMap", "BankFrame", "BankCloseButton", "BankFrameItem1", "BankFrameItem1Cooldown", "BankFrameItem2", "BankFrameItem2Cooldown", "BankFrameItem3", "BankFrameItem3Cooldown", "BankFrameItem4", "BankFrameItem4Cooldown", "BankFrameItem5", "BankFrameItem5Cooldown", "BankFrameItem6", "BankFrameItem6Cooldown", "BankFrameItem7", "BankFrameItem7Cooldown", "BankFrameItem8", "BankFrameItem8Cooldown", "BankFrameItem9", "BankFrameItem9Cooldown", "BankFrameItem10", "BankFrameItem10Cooldown", "BankFrameItem11", "BankFrameItem11Cooldown", "BankFrameItem12", "BankFrameItem12Cooldown", "BankFrameItem13", "BankFrameItem13Cooldown", "BankFrameItem14", "BankFrameItem14Cooldown", "BankFrameItem15", "BankFrameItem15Cooldown", "BankFrameItem16", "BankFrameItem16Cooldown", "BankFrameItem17", "BankFrameItem17Cooldown", "BankFrameItem18", "BankFrameItem18Cooldown", "BankFrameItem19", "BankFrameItem19Cooldown", "BankFrameItem20", "BankFrameItem20Cooldown", "BankFrameItem21", "BankFrameItem21Cooldown", "BankFrameItem22", "BankFrameItem22Cooldown", "BankFrameItem23", "BankFrameItem23Cooldown", "BankFrameItem24", "BankFrameItem24Cooldown", "BankFrameItem25", "BankFrameItem25Cooldown", "BankFrameItem26", "BankFrameItem26Cooldown", "BankFrameItem27", "BankFrameItem27Cooldown", "BankFrameItem28", "BankFrameItem28Cooldown", "BankFrameBag1", "BankFrameBag1Cooldown", "BankFrameBag1HighlightFrame", "BankFrameBag2", "BankFrameBag2Cooldown", "BankFrameBag2HighlightFrame", "BankFrameBag3", "BankFrameBag3Cooldown", "BankFrameBag3HighlightFrame", "BankFrameBag4", "BankFrameBag4Cooldown", "BankFrameBag4HighlightFrame", "BankFrameBag5", "BankFrameBag5Cooldown", "BankFrameBag5HighlightFrame", "BankFrameBag6", "BankFrameBag6Cooldown", "BankFrameBag6HighlightFrame", "BankFrameBag7", "BankFrameBag7Cooldown", "BankFrameBag7HighlightFrame", "BankFramePurchaseInfo", "BankFramePurchaseButton", "BankFrameDetailMoneyFrame", "BankFrameDetailMoneyFrameCopperButton", "BankFrameDetailMoneyFrameSilverButton", "BankFrameDetailMoneyFrameGoldButton", "BankFrameMoneyFrame", "BankFrameMoneyFrameCopperButton", "BankFrameMoneyFrameSilverButton", "BankFrameMoneyFrameGoldButton", "FriendsFrame", "FriendsDropDown", "FriendsDropDownButton", "FriendsFrameCloseButton", "FriendsTabHeader", "FriendsFrameBattlenetStatus", "FriendsFrameBattlenetStatusInfoButton", "FriendsFrameStatusDropDown", "FriendsFrameStatusDropDownButton", "FriendsFrameStatusDropDownMouseOver", "FriendsFrameBroadcastInput", "FriendsFrameBroadcastInputTooltipButton", "FriendsFrameBroadcastInputClearButton", "FriendsTabHeaderTab1", "FriendsTabHeaderTab2", "FriendsTabHeaderTab3", "FriendsTabHeaderInviteAlert", "FriendsListFrame", "FriendsFrameAddFriendButton", "FriendsFrameSendMessageButton", "FriendsFrameFriendsScrollFrame", "FriendsFrameFriendsScrollFrameScrollChild", "FriendsFrameFriendsScrollFrameScrollBar", "FriendsFrameFriendsScrollFrameScrollBarScrollUpButton", "FriendsFrameFriendsScrollFrameScrollBarScrollDownButton", "IgnoreListFrame", "FriendsFrameIgnorePlayerButton", "FriendsFrameUnsquelchButton", "FriendsFrameMutePlayerButton", "FriendsFrameIgnoredHeader", "FriendsFrameBlockedInviteHeader", "FriendsFrameBlockedToonHeader", "FriendsFrameMutedHeader", "FriendsFrameIgnoreButton1", "FriendsFrameIgnoreButton2", "FriendsFrameIgnoreButton3", "FriendsFrameIgnoreButton4", "FriendsFrameIgnoreButton5", "FriendsFrameIgnoreButton6", "FriendsFrameIgnoreButton7", "FriendsFrameIgnoreButton8", "FriendsFrameIgnoreButton9", "FriendsFrameIgnoreButton10", "FriendsFrameIgnoreButton11", "FriendsFrameIgnoreButton12", "FriendsFrameIgnoreButton13", "FriendsFrameIgnoreButton14", "FriendsFrameIgnoreButton15", "FriendsFrameIgnoreButton16", "FriendsFrameIgnoreButton17", "FriendsFrameIgnoreButton18", "FriendsFrameIgnoreButton19", "FriendsFrameIgnoreScrollFrame", "FriendsFrameIgnoreScrollFrameScrollChildFrame", "FriendsFrameIgnoreScrollFrameScrollBar", "FriendsFrameIgnoreScrollFrameScrollBarScrollUpButton", "FriendsFrameIgnoreScrollFrameScrollBarScrollDownButton", "PendingListFrame", "PendingListFrameDropDown", "PendingListFrameDropDownButton", "PendingListInfoFrame", "PendingListInfoFrameContinueButton", "FriendsFramePendingScrollFrame", "FriendsFramePendingScrollFrameScrollChild", "FriendsFramePendingButton1", "FriendsFramePendingButton1Highlight", "FriendsFramePendingButton1AcceptButton", "FriendsFramePendingButton1DeclineButton", "FriendsFramePendingButton1ReportButton", "FriendsFramePendingButton1BlockButton", "FriendsFramePendingButton2", "FriendsFramePendingButton2Highlight", "FriendsFramePendingButton2AcceptButton", "FriendsFramePendingButton2DeclineButton", "FriendsFramePendingButton2ReportButton", "FriendsFramePendingButton2BlockButton", "FriendsFramePendingButton3", "FriendsFramePendingButton3Highlight", "FriendsFramePendingButton3AcceptButton", "FriendsFramePendingButton3DeclineButton", "FriendsFramePendingButton3ReportButton", "FriendsFramePendingButton3BlockButton", "FriendsFramePendingButton4", "FriendsFramePendingButton4Highlight", "FriendsFramePendingButton4AcceptButton", "FriendsFramePendingButton4DeclineButton", "FriendsFramePendingButton4ReportButton", "FriendsFramePendingButton4BlockButton", "FriendsFramePendingScrollFrameScrollBar", "FriendsFramePendingScrollFrameScrollBarScrollUpButton", "FriendsFramePendingScrollFrameScrollBarScrollDownButton", "WhoFrame", "WhoFrameColumnHeader1", "WhoFrameColumnHeader2", "WhoFrameDropDown", "WhoFrameDropDownButton", "WhoFrameColumnHeader3", "WhoFrameColumnHeader4", "WhoFrameButton1", "WhoFrameButton2", "WhoFrameButton3", "WhoFrameButton4", "WhoFrameButton5", "WhoFrameButton6", "WhoFrameButton7", "WhoFrameButton8", "WhoFrameButton9", "WhoFrameButton10", "WhoFrameButton11", "WhoFrameButton12", "WhoFrameButton13", "WhoFrameButton14", "WhoFrameButton15", "WhoFrameButton16", "WhoFrameButton17", "WhoFrameGroupInviteButton", "WhoFrameAddFriendButton", "WhoFrameWhoButton", "WhoFrameEditBox", "WhoListScrollFrame", "WhoListScrollFrameScrollChildFrame", "WhoListScrollFrameScrollBar", "WhoListScrollFrameScrollBarScrollUpButton", "WhoListScrollFrameScrollBarScrollDownButton", "GuildFrame", "GuildFrameLFGFrame", "GuildFrameLFGButton", "GuildPlayerStatusFrame", "GuildFrameColumnHeader1", "GuildFrameColumnHeader2", "GuildFrameColumnHeader3", "GuildFrameColumnHeader4", "GuildFrameButton1", "GuildFrameButton2", "GuildFrameButton3", "GuildFrameButton4", "GuildFrameButton5", "GuildFrameButton6", "GuildFrameButton7", "GuildFrameButton8", "GuildFrameButton9", "GuildFrameButton10", "GuildFrameButton11", "GuildFrameButton12", "GuildFrameButton13", "GuildStatusFrame", "GuildFrameGuildStatusColumnHeader1", "GuildFrameGuildStatusColumnHeader2", "GuildFrameGuildStatusColumnHeader3", "GuildFrameGuildStatusColumnHeader4", "GuildFrameGuildStatusButton1", "GuildFrameGuildStatusButton2", "GuildFrameGuildStatusButton3", "GuildFrameGuildStatusButton4", "GuildFrameGuildStatusButton5", "GuildFrameGuildStatusButton6", "GuildFrameGuildStatusButton7", "GuildFrameGuildStatusButton8", "GuildFrameGuildStatusButton9", "GuildFrameGuildStatusButton10", "GuildFrameGuildStatusButton11", "GuildFrameGuildStatusButton12", "GuildFrameGuildStatusButton13", "GuildListScrollFrame", "GuildListScrollFrameScrollChildFrame", "GuildListScrollFrameScrollBar", "GuildListScrollFrameScrollBarScrollUpButton", "GuildListScrollFrameScrollBarScrollDownButton", "GuildFrameGuildListToggleButton", "GuildFrameControlButton", "GuildFrameAddMemberButton", "GuildFrameGuildInformationButton", "GuildMOTDEditButton", "GuildControlPopupFrame", "GuildControlPopupFrameCheckboxes", "GuildControlPopupFrameDropDown", "GuildControlPopupFrameDropDownButton", "GuildControlPopupFrameAddRankButton", "GuildControlPopupFrameRemoveRankButton", "GuildControlPopupFrameCheckbox1", "GuildControlPopupFrameCheckbox3", "GuildControlPopupFrameCheckbox5", "GuildControlPopupFrameCheckbox7", "GuildControlPopupFrameCheckbox9", "GuildControlPopupFrameCheckbox11", "GuildControlPopupFrameCheckbox13", "GuildControlWithdrawGold", "GuildControlWithdrawGoldEditBox", "GuildControlWithdrawGoldEditBoxMask", "GuildControlPopupFrameCheckbox2", "GuildControlPopupFrameCheckbox4", "GuildControlPopupFrameCheckbox6", "GuildControlPopupFrameCheckbox8", "GuildControlPopupFrameCheckbox10", "GuildControlPopupFrameCheckbox12", "GuildControlPopupFrameCheckbox17", "GuildControlPopupFrameCheckbox16", "GuildControlPopupFrameCheckbox15", "GuildControlPopupFrameCancelButton", "GuildControlPopupAcceptButton", "GuildControlPopupFrameEditBox", "GuildControlPopupFrameTabPermissions", "GuildControlTabPermissionsViewTab", "GuildControlTabPermissionsDepositItems", "GuildControlTabPermissionsUpdateText", "GuildControlTabPermissionsWithdrawItems", "GuildControlWithdrawItemsEditBox", "GuildControlWithdrawItemsEditBoxMask", "GuildBankTabPermissionsTab6", "GuildBankTabPermissionsTab5", "GuildBankTabPermissionsTab4", "GuildBankTabPermissionsTab3", "GuildBankTabPermissionsTab2", "GuildBankTabPermissionsTab1", "GuildInfoFrame", "GuildInfoTextBackground", "GuildInfoFrameScrollFrame", "GuildInfoEditBox", "GuildInfoFrameScrollFrameScrollBar", "GuildInfoFrameScrollFrameScrollBarScrollUpButton", "GuildInfoFrameScrollFrameScrollBarScrollDownButton", "GuildInfoCloseButton", "GuildInfoSaveButton", "GuildInfoCancelButton", "GuildInfoGuildEventButton", "GuildMemberDetailFrame", "GuildMemberDetailCloseButton", "GuildMemberRemoveButton", "GuildMemberGroupInviteButton", "GuildFramePromoteButton", "GuildFrameDemoteButton", "GuildMemberNoteBackground", "GuildMemberOfficerNoteBackground", "GuildEventLogFrame", "GuildEventFrame", "GuildEventLogScrollFrame", "GuildEventLogScrollChildFrame", "GuildEventLogScrollFrameScrollBar", "GuildEventLogScrollFrameScrollBarScrollUpButton", "GuildEventLogScrollFrameScrollBarScrollDownButton", "GuildEventLogCloseButton", "GuildEventLogCancelButton", "FriendsFrameTab1", "FriendsFrameTab2", "FriendsFrameTab3", "FriendsFrameTab4", "FriendsFrameTab5", "FriendsTooltip", "FriendsFrameFriendsScrollFrameButton1", "FriendsFrameFriendsScrollFrameButton1SummonButton", "FriendsFrameFriendsScrollFrameButton1SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton1SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton2", "FriendsFrameFriendsScrollFrameButton2SummonButton", "FriendsFrameFriendsScrollFrameButton2SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton2SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton3", "FriendsFrameFriendsScrollFrameButton3SummonButton", "FriendsFrameFriendsScrollFrameButton3SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton3SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton4", "FriendsFrameFriendsScrollFrameButton4SummonButton", "FriendsFrameFriendsScrollFrameButton4SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton4SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton5", "FriendsFrameFriendsScrollFrameButton5SummonButton", "FriendsFrameFriendsScrollFrameButton5SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton5SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton6", "FriendsFrameFriendsScrollFrameButton6SummonButton", "FriendsFrameFriendsScrollFrameButton6SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton6SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton7", "FriendsFrameFriendsScrollFrameButton7SummonButton", "FriendsFrameFriendsScrollFrameButton7SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton7SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton8", "FriendsFrameFriendsScrollFrameButton8SummonButton", "FriendsFrameFriendsScrollFrameButton8SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton8SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton9", "FriendsFrameFriendsScrollFrameButton9SummonButton", "FriendsFrameFriendsScrollFrameButton9SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton9SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton10", "FriendsFrameFriendsScrollFrameButton10SummonButton", "FriendsFrameFriendsScrollFrameButton10SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton10SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton11", "FriendsFrameFriendsScrollFrameButton11SummonButton", "FriendsFrameFriendsScrollFrameButton11SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton11SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton12", "FriendsFrameFriendsScrollFrameButton12SummonButton", "FriendsFrameFriendsScrollFrameButton12SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton12SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton13", "FriendsFrameFriendsScrollFrameButton13SummonButton", "FriendsFrameFriendsScrollFrameButton13SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton13SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton14", "FriendsFrameFriendsScrollFrameButton14SummonButton", "FriendsFrameFriendsScrollFrameButton14SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton14SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton15", "FriendsFrameFriendsScrollFrameButton15SummonButton", "FriendsFrameFriendsScrollFrameButton15SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton15SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton16", "FriendsFrameFriendsScrollFrameButton16SummonButton", "FriendsFrameFriendsScrollFrameButton16SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton16SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton17", "FriendsFrameFriendsScrollFrameButton17SummonButton", "FriendsFrameFriendsScrollFrameButton17SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton17SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton18", "FriendsFrameFriendsScrollFrameButton18SummonButton", "FriendsFrameFriendsScrollFrameButton18SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton18SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton19", "FriendsFrameFriendsScrollFrameButton19SummonButton", "FriendsFrameFriendsScrollFrameButton19SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton19SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton20", "FriendsFrameFriendsScrollFrameButton20SummonButton", "FriendsFrameFriendsScrollFrameButton20SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton20SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton21", "FriendsFrameFriendsScrollFrameButton21SummonButton", "FriendsFrameFriendsScrollFrameButton21SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton21SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton22", "FriendsFrameFriendsScrollFrameButton22SummonButton", "FriendsFrameFriendsScrollFrameButton22SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton22SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton23", "FriendsFrameFriendsScrollFrameButton23SummonButton", "FriendsFrameFriendsScrollFrameButton23SummonButtonCooldown", "FriendsFrameFriendsScrollFrameButton23SummonButtonCooldown", "AddFriendFrame", "AddFriendInfoFrame", "AddFriendInfoFrameContinueButton", "AddFriendEntryFrame", "AddFriendEntryFrameInfoButton", "AddFriendNameEditBox", "AddFriendNoteFrame", "AddFriendNoteFrameScrollFrame", "AddFriendNoteEditBox", "AddFriendNoteFrameScrollFrameScrollBar", "AddFriendNoteFrameScrollFrameScrollBarScrollUpButton", "AddFriendNoteFrameScrollFrameScrollBarScrollDownButton", "AddFriendNoteFrameScrollFrameFocusButton", "AddFriendEntryFrameAcceptButton", "AddFriendEntryFrameCancelButton", "FriendsFriendsFrame", "FriendsFriendsFrameDropDown", "FriendsFriendsFrameDropDownButton", "FriendsFriendsList", "FriendsFriendsButton1", "FriendsFriendsButton2", "FriendsFriendsButton3", "FriendsFriendsButton4", "FriendsFriendsButton5", "FriendsFriendsButton6", "FriendsFriendsButton7", "FriendsFriendsButton8", "FriendsFriendsButton9", "FriendsFriendsButton10", "FriendsFriendsButton11", "FriendsFriendsScrollFrame", "FriendsFriendsScrollFrameScrollChildFrame", "FriendsFriendsScrollFrameScrollBar", "FriendsFriendsScrollFrameScrollBarScrollUpButton", "FriendsFriendsScrollFrameScrollBarScrollDownButton", "FriendsFriendsWaitFrame", "FriendsFriendsNoteFrame", "FriendsFriendsNoteFrameScrollFrame", "FriendsFriendsNoteEditBox", "FriendsFriendsNoteFrameScrollFrameScrollBar", "FriendsFriendsNoteFrameScrollFrameScrollBarScrollUpButton", "FriendsFriendsNoteFrameScrollFrameScrollBarScrollDownButton", "FriendsFriendsNoteFrameScrollFrameFocusButton", "FriendsFriendsSendRequestButton", "FriendsFriendsCloseButton", "RaidFrame", "RaidFrameNotInRaid", "RaidFrameNotInRaidRaidBrowserButton", "RaidFrameConvertToRaidButton", "RaidFrameRaidInfoButton", "RaidInfoFrame", "RaidInfoInstanceLabel", "RaidInfoIDLabel", "RaidInfoCloseButton", "RaidInfoScrollFrame", "RaidInfoScrollFrameScrollChild", "RaidInfoScrollFrameScrollBar", "RaidInfoScrollFrameScrollBarScrollUpButton", "RaidInfoScrollFrameScrollBarScrollDownButton", "RaidInfoScrollFrameButton1", "RaidInfoScrollFrameButton2", "RaidInfoScrollFrameButton3", "RaidInfoScrollFrameButton4", "RaidInfoScrollFrameButton5", "RaidInfoScrollFrameButton6", "RaidInfoScrollFrameButton7", "RaidInfoExtendButton", "RaidInfoCancelButton", "ChannelFrame", "ChannelFrameVerticalBar", "ChannelFrameAutoJoin", "ChannelFrameAutoJoinParty", "ChannelFrameAutoJoinBattleground", "ChannelFrameNewButton", "ChannelListScrollFrame", "ChannelListScrollChildFrame", "ChannelButton1", "ChannelButton1SpeakerFrame", "ChannelButton2", "ChannelButton2SpeakerFrame", "ChannelButton3", "ChannelButton3SpeakerFrame", "ChannelButton4", "ChannelButton4SpeakerFrame", "ChannelButton5", "ChannelButton5SpeakerFrame", "ChannelButton6", "ChannelButton6SpeakerFrame", "ChannelButton7", "ChannelButton7SpeakerFrame", "ChannelButton8", "ChannelButton8SpeakerFrame", "ChannelButton9", "ChannelButton9SpeakerFrame", "ChannelButton10", "ChannelButton10SpeakerFrame", "ChannelButton11", "ChannelButton11SpeakerFrame", "ChannelButton12", "ChannelButton12SpeakerFrame", "ChannelButton13", "ChannelButton13SpeakerFrame", "ChannelButton14", "ChannelButton14SpeakerFrame", "ChannelButton15", "ChannelButton15SpeakerFrame", "ChannelButton16", "ChannelButton16SpeakerFrame", "ChannelButton17", "ChannelButton17SpeakerFrame", "ChannelButton18", "ChannelButton18SpeakerFrame", "ChannelButton19", "ChannelButton19SpeakerFrame", "ChannelButton20", "ChannelButton20SpeakerFrame", "ChannelListScrollFrameScrollBar", "ChannelListScrollFrameScrollBarScrollUpButton", "ChannelListScrollFrameScrollBarScrollDownButton", "ChannelRoster", "ChannelRosterScrollFrame", "ChannelRosterScrollFrameScrollChildFrame", "ChannelRosterScrollFrameScrollBar", "ChannelRosterScrollFrameScrollBarScrollUpButton", "ChannelRosterScrollFrameScrollBarScrollDownButton", "ChannelMemberButton1", "ChannelMemberButton1Rank", "ChannelMemberButton1SpeakerFrame", "ChannelMemberButton2", "ChannelMemberButton2Rank", "ChannelMemberButton2SpeakerFrame", "ChannelMemberButton3", "ChannelMemberButton3Rank", "ChannelMemberButton3SpeakerFrame", "ChannelMemberButton4", "ChannelMemberButton4Rank", "ChannelMemberButton4SpeakerFrame", "ChannelMemberButton5", "ChannelMemberButton5Rank", "ChannelMemberButton5SpeakerFrame", "ChannelMemberButton6", "ChannelMemberButton6Rank", "ChannelMemberButton6SpeakerFrame", "ChannelMemberButton7", "ChannelMemberButton7Rank", "ChannelMemberButton7SpeakerFrame", "ChannelMemberButton8", "ChannelMemberButton8Rank", "ChannelMemberButton8SpeakerFrame", "ChannelMemberButton9", "ChannelMemberButton9Rank", "ChannelMemberButton9SpeakerFrame", "ChannelMemberButton10", "ChannelMemberButton10Rank", "ChannelMemberButton10SpeakerFrame", "ChannelMemberButton11", "ChannelMemberButton11Rank", "ChannelMemberButton11SpeakerFrame", "ChannelMemberButton12", "ChannelMemberButton12Rank", "ChannelMemberButton12SpeakerFrame", "ChannelMemberButton13", "ChannelMemberButton13Rank", "ChannelMemberButton13SpeakerFrame", "ChannelMemberButton14", "ChannelMemberButton14Rank", "ChannelMemberButton14SpeakerFrame", "ChannelMemberButton15", "ChannelMemberButton15Rank", "ChannelMemberButton15SpeakerFrame", "ChannelMemberButton16", "ChannelMemberButton16Rank", "ChannelMemberButton16SpeakerFrame", "ChannelMemberButton17", "ChannelMemberButton17Rank", "ChannelMemberButton17SpeakerFrame", "ChannelMemberButton18", "ChannelMemberButton18Rank", "ChannelMemberButton18SpeakerFrame", "ChannelMemberButton19", "ChannelMemberButton19Rank", "ChannelMemberButton19SpeakerFrame", "ChannelMemberButton20", "ChannelMemberButton20Rank", "ChannelMemberButton20SpeakerFrame", "ChannelMemberButton21", "ChannelMemberButton21Rank", "ChannelMemberButton21SpeakerFrame", "ChannelMemberButton22", "ChannelMemberButton22Rank", "ChannelMemberButton22SpeakerFrame", "ChannelRosterDropDown", "ChannelRosterDropDownButton", "ChannelFrameDaughterFrame", "ChannelFrameDaughterFrameChannelName", "ChannelFrameDaughterFrameChannelPassword", "ChannelFrameDaughterFrameDetailCloseButton", "ChannelFrameDaughterFrameOkayButton", "ChannelFrameDaughterFrameCancelButton", "ChannelListDropDown", "ChannelListDropDownButton", "ChannelPulloutTab", "ChannelPulloutTabFlash", "ChannelPulloutTabDropDown", "ChannelPulloutTabDropDownButton", "ChannelPullout", "ChannelPulloutBackground", "ChannelPulloutCloseButton", "ChannelPulloutRoster", "ChannelPulloutRosterScroll", "ChannelPulloutRosterScrollUpBtn", "ChannelPulloutRosterScrollDownBtn", "PetActionBarFrame", "PetActionButton1", "PetActionButton1Cooldown", "PetActionButton1Shine", "PetActionButton2", "PetActionButton2Cooldown", "PetActionButton2Shine", "PetActionButton3", "PetActionButton3Cooldown", "PetActionButton3Shine", "PetActionButton4", "PetActionButton4Cooldown", "PetActionButton4Shine", "PetActionButton5", "PetActionButton5Cooldown", "PetActionButton5Shine", "PetActionButton6", "PetActionButton6Cooldown", "PetActionButton6Shine", "PetActionButton7", "PetActionButton7Cooldown", "PetActionButton7Shine", "PetActionButton8", "PetActionButton8Cooldown", "PetActionButton8Shine", "PetActionButton9", "PetActionButton9Cooldown", "PetActionButton9Shine", "PetActionButton10", "PetActionButton10Cooldown", "PetActionButton10Shine", "MultiCastActionBarFrame", "MultiCastFlyoutFrame", "MultiCastFlyoutFrameCloseButton", "MultiCastFlyoutFrameOpenButton", "MultiCastSummonSpellButton", "MultiCastSummonSpellButtonCooldown", "MultiCastSummonSpellButtonFlyoutButton", "MultiCastSlotButton1", "MultiCastSlotButton2", "MultiCastSlotButton3", "MultiCastSlotButton4", "MultiCastActionPage1", "MultiCastActionButton1", "MultiCastActionButton1Cooldown", "MultiCastActionButton2", "MultiCastActionButton2Cooldown", "MultiCastActionButton3", "MultiCastActionButton3Cooldown", "MultiCastActionButton4", "MultiCastActionButton4Cooldown", "MultiCastActionPage2", "MultiCastActionButton5", "MultiCastActionButton5Cooldown", "MultiCastActionButton6", "MultiCastActionButton6Cooldown", "MultiCastActionButton7", "MultiCastActionButton7Cooldown", "MultiCastActionButton8", "MultiCastActionButton8Cooldown", "MultiCastActionPage3", "MultiCastActionButton9", "MultiCastActionButton9Cooldown", "MultiCastActionButton10", "MultiCastActionButton10Cooldown", "MultiCastActionButton11", "MultiCastActionButton11Cooldown", "MultiCastActionButton12", "MultiCastActionButton12Cooldown", "MultiCastRecallSpellButton", "MultiCastRecallSpellButtonCooldown", "BonusActionBarFrame", "BonusActionButton1", "BonusActionButton1Cooldown", "BonusActionButton2", "BonusActionButton2Cooldown", "BonusActionButton3", "BonusActionButton3Cooldown", "BonusActionButton4", "BonusActionButton4Cooldown", "BonusActionButton5", "BonusActionButton5Cooldown", "BonusActionButton6", "BonusActionButton6Cooldown", "BonusActionButton7", "BonusActionButton7Cooldown", "BonusActionButton8", "BonusActionButton8Cooldown", "BonusActionButton9", "BonusActionButton9Cooldown", "BonusActionButton10", "BonusActionButton10Cooldown", "BonusActionButton11", "BonusActionButton11Cooldown", "BonusActionButton12", "BonusActionButton12Cooldown", "ShapeshiftBarFrame", "ShapeshiftButton1", "ShapeshiftButton1Cooldown", "ShapeshiftButton2", "ShapeshiftButton2Cooldown", "ShapeshiftButton3", "ShapeshiftButton3Cooldown", "ShapeshiftButton4", "ShapeshiftButton4Cooldown", "ShapeshiftButton5", "ShapeshiftButton5Cooldown", "ShapeshiftButton6", "ShapeshiftButton6Cooldown", "ShapeshiftButton7", "ShapeshiftButton7Cooldown", "ShapeshiftButton8", "ShapeshiftButton8Cooldown", "ShapeshiftButton9", "ShapeshiftButton9Cooldown", "ShapeshiftButton10", "ShapeshiftButton10Cooldown", "PossessBarFrame", "PossessButton1", "PossessButton1Cooldown", "PossessButton2", "PossessButton2Cooldown", "MainMenuBarBackpackButton", "MainMenuBarBackpackButtonItemAnim", "CharacterBag0Slot", "CharacterBag0SlotItemAnim", "CharacterBag1Slot", "CharacterBag1SlotItemAnim", "CharacterBag2Slot", "CharacterBag2SlotItemAnim", "CharacterBag3Slot", "CharacterBag3SlotItemAnim", "KeyRingButton", "KeyRingButtonItemAnim", "WorldMapFrame", "WorldMapTitleDropDown", "WorldMapTitleDropDownButton", "WorldMapPositioningGuide", "WorldMapZoneMinimapDropDown", "WorldMapZoneMinimapDropDownButton", "WorldMapContinentDropDown", "WorldMapContinentDropDownButton", "WorldMapZoneDropDown", "WorldMapZoneDropDownButton", "WorldMapZoomOutButton", "WorldMapLevelDropDown", "WorldMapLevelDropDownButton", "WorldMapLevelUpButton", "WorldMapLevelDownButton", "WorldMapMagnifyingGlassButton", "WorldMapFrameCloseButton", "WorldMapFrameSizeDownButton", "WorldMapFrameSizeUpButton", "WorldMapDetailFrame", "WorldMapBlobFrame", "WorldMapButton", "WorldMapPlayer", "WorldMapUnitDropDown", "WorldMapUnitDropDownButton", "WorldMapParty1", "WorldMapParty2", "WorldMapParty3", "WorldMapParty4", "WorldMapRaid1", "WorldMapRaid2", "WorldMapRaid3", "WorldMapRaid4", "WorldMapRaid5", "WorldMapRaid6", "WorldMapRaid7", "WorldMapRaid8", "WorldMapRaid9", "WorldMapRaid10", "WorldMapRaid11", "WorldMapRaid12", "WorldMapRaid13", "WorldMapRaid14", "WorldMapRaid15", "WorldMapRaid16", "WorldMapRaid17", "WorldMapRaid18", "WorldMapRaid19", "WorldMapRaid20", "WorldMapRaid21", "WorldMapRaid22", "WorldMapRaid23", "WorldMapRaid24", "WorldMapRaid25", "WorldMapRaid26", "WorldMapRaid27", "WorldMapRaid28", "WorldMapRaid29", "WorldMapRaid30", "WorldMapRaid31", "WorldMapRaid32", "WorldMapRaid33", "WorldMapRaid34", "WorldMapRaid35", "WorldMapRaid36", "WorldMapRaid37", "WorldMapRaid38", "WorldMapRaid39", "WorldMapRaid40", "WorldMapFlag1", "WorldMapFlag2", "WorldMapCorpse", "WorldMapDeathRelease", "WorldMapPing", "WorldMapFrameAreaFrame", "OutlandButton", "AzerothButton", "WorldMapPOIFrame", "WorldMapQuestScrollFrame", "WorldMapQuestScrollChildFrame", "WorldMapQuestSelectedFrame", "WorldMapQuestHighlightedFrame", "WorldMapQuestScrollFrameScrollBar", "WorldMapQuestScrollFrameScrollBarScrollUpButton", "WorldMapQuestScrollFrameScrollBarScrollDownButton", "WorldMapQuestDetailScrollFrame", "WorldMapQuestDetailScrollChildFrame", "WorldMapQuestDetailScrollFrameScrollBar", "WorldMapQuestDetailScrollFrameScrollBarScrollUpButton", "WorldMapQuestDetailScrollFrameScrollBarScrollDownButton", "WorldMapQuestRewardScrollFrame", "WorldMapQuestRewardScrollChildFrame", "WorldMapQuestRewardScrollFrameScrollBar", "WorldMapQuestRewardScrollFrameScrollBarScrollUpButton", "WorldMapQuestRewardScrollFrameScrollBarScrollDownButton", "WorldMapTrackQuest", "WorldMapQuestShowObjectives", "PlayerArrowFrame", "PlayerArrowEffectFrame", "WorldMapQuestFrame0", "poiWorldMapQuestScrollChildFrame1_0", "WorldMapCompareTooltip1", "WorldMapCompareTooltip2", "WorldMapCompareTooltip3", "WorldMapTooltip", "WorldMapTooltipStatusBar", "WorldMapScreenAnchor", "WorldMapTitleButton", "CinematicFrame", "ItemRefShoppingTooltip1", "ItemRefShoppingTooltip2", "ItemRefShoppingTooltip3", "ItemRefTooltip", "ItemRefTooltipStatusBar", "ItemRefCloseButton", "ComboFrame", "ComboPoint1", "ComboPoint2", "ComboPoint3", "ComboPoint4", "ComboPoint5", "TabardFrame", "TabardModel", "TabardCharacterModelRotateLeftButton", "TabardCharacterModelRotateRightButton", "TabardFrameCostFrame", "TabardFrameCostMoneyFrame", "TabardFrameCostMoneyFrameCopperButton", "TabardFrameCostMoneyFrameSilverButton", "TabardFrameCostMoneyFrameGoldButton", "TabardFrameCustomizationFrame", "TabardFrameCustomization1", "TabardFrameCustomization1LeftButton", "TabardFrameCustomization1RightButton", "TabardFrameCustomization2", "TabardFrameCustomization2LeftButton", "TabardFrameCustomization2RightButton", "TabardFrameCustomization3", "TabardFrameCustomization3LeftButton", "TabardFrameCustomization3RightButton", "TabardFrameCustomization4", "TabardFrameCustomization4LeftButton", "TabardFrameCustomization4RightButton", "TabardFrameCustomization5", "TabardFrameCustomization5LeftButton", "TabardFrameCustomization5RightButton", "TabardFrameMoneyFrame", "TabardFrameMoneyFrameCopperButton", "TabardFrameMoneyFrameSilverButton", "TabardFrameMoneyFrameGoldButton", "TabardFrameAcceptButton", "TabardFrameCancelButton", "TabardFrameCloseButton", "GuildRegistrarFrame", "GuildRegistrarNpcNameFrame", "GuildRegistrarFrameCloseButton", "GuildRegistrarGreetingFrame", "GuildRegistrarFrameGoodbyeButton", "GuildRegistrarButton1", "GuildRegistrarButton2", "GuildRegistrarPurchaseFrame", "GuildRegistrarMoneyFrame", "GuildRegistrarMoneyFrameCopperButton", "GuildRegistrarMoneyFrameSilverButton", "GuildRegistrarMoneyFrameGoldButton", "GuildRegistrarFrameCancelButton", "GuildRegistrarFramePurchaseButton", "GuildRegistrarFrameEditBox", "PetitionFrame", "PetitionNpcNameFrame", "PetitionFrameCancelButton", "PetitionFrameSignButton", "PetitionFrameRequestButton", "PetitionFrameCloseButton", "PetitionFrameRenameButton", "HelpFrame", "HelpFrameCloseButton", "HelpFrameGMTalk", "HelpFrameGMTalkOpenTicket", "HelpFrameGMTalkCancel", "HelpFrameReportIssue", "HelpFrameReportIssueBullet1", "HelpFrameReportIssueBullet2", "HelpFrameReportIssueOpenTicket", "HelpFrameReportIssueCancel", "HelpFrameLag", "HelpFrameLagLoot", "HelpFrameLagAuctionHouse", "HelpFrameLagMail", "HelpFrameLagChat", "HelpFrameLagMovement", "HelpFrameLagSpell", "HelpFrameLagCancel", "HelpFrameStuck", "HelpFrameStuckStuck", "HelpFrameStuckOpenTicket", "HelpFrameStuckCancel", "HelpFrameOpenTicket", "HelpFrameOpenTicketDivider", "HelpFrameOpenTicketScrollFrame", "HelpFrameOpenTicketEditBox", "HelpFrameOpenTicketScrollFrameScrollBar", "HelpFrameOpenTicketScrollFrameScrollBarScrollUpButton", "HelpFrameOpenTicketScrollFrameScrollBarScrollDownButton", "HelpFrameOpenTicketCancel", "HelpFrameOpenTicketSubmit", "HelpFrameViewResponse", "HelpFrameViewResponseIssueScrollFrame", "HelpFrameViewResponseIssueScrollFrameScrollChild", "HelpFrameViewResponseIssueScrollFrameScrollBar", "HelpFrameViewResponseIssueScrollFrameScrollBarScrollUpButton", "HelpFrameViewResponseIssueScrollFrameScrollBarScrollDownButton", "HelpFrameViewResponseDivider", "HelpFrameViewResponseMessageScrollFrame", "HelpFrameViewResponseMessageScrollFrameScrollChild", "HelpFrameViewResponseMessageScrollFrameScrollBar", "HelpFrameViewResponseMessageScrollFrameScrollBarScrollUpButton", "HelpFrameViewResponseMessageScrollFrameScrollBarScrollDownButton", "HelpFrameViewResponseCancel", "HelpFrameViewResponseMoreHelp", "HelpFrameViewResponseIssueResolved", "HelpFrameWelcome", "HelpFrameWelcomeGMTalk", "HelpFrameWelcomeReportIssue", "HelpFrameWelcomeStuck", "HelpFrameWelcomeCancel", "TicketStatusFrame", "TicketStatusFrameButton", "KnowledgeBaseFrame", "KnowledgeBaseFrameTopIssuesButton", "GMChatOpenLog", "KnowledgeBaseMotdTextFrame", "KnowledgeBaseServerMessageTextFrame", "KnowledgeBaseFrameDivider", "KnowledgeBaseFrameEditBox", "KnowledgeBaseFrameCategoryDropDown", "KnowledgeBaseFrameCategoryDropDownButton", "KnowledgeBaseFrameSubCategoryDropDown", "KnowledgeBaseFrameSubCategoryDropDownButton", "KnowledgeBaseFrameSearchButton", "KnowledgeBaseFrameDivider2", "KnowledgeBaseArticleListFrame", "KnowledgeBaseArticleListFrameNextButton", "KnowledgeBaseArticleListFramePreviousButton", "KnowledgeBaseArticleListItem1", "KnowledgeBaseArticleListItem2", "KnowledgeBaseArticleListItem3", "KnowledgeBaseArticleListItem4", "KnowledgeBaseArticleListItem5", "KnowledgeBaseArticleListItem6", "KnowledgeBaseArticleListItem7", "KnowledgeBaseArticleListItem8", "KnowledgeBaseArticleListItem9", "KnowledgeBaseArticleListItem10", "KnowledgeBaseArticleListItem11", "KnowledgeBaseArticleListItem12", "KnowledgeBaseArticleListItem13", "KnowledgeBaseArticleListItem14", "KnowledgeBaseArticleListItem15", "KnowledgeBaseArticleListItem16", "KnowledgeBaseArticleListItem17", "KnowledgeBaseArticleListItem18", "KnowledgeBaseArticleListItem19", "KnowledgeBaseArticleListItem20", "KnowledgeBaseArticleScrollFrame", "KnowledgeBaseArticleScrollChildFrame", "KnowledgeBaseArticleScrollChildFrameBackButton", "KnowledgeBaseArticleScrollFrameScrollBar", "KnowledgeBaseArticleScrollFrameScrollBarScrollUpButton", "KnowledgeBaseArticleScrollFrameScrollBarScrollDownButton", "KnowledgeBaseErrorFrame", "KnowledgeBaseFrameReportIssue", "KnowledgeBaseFrameGMTalk", "KnowledgeBaseFrameAbandonTicket", "KnowledgeBaseFrameEditTicket", "KnowledgeBaseFrameStuck", "KnowledgeBaseFrameLag", "KnowledgeBaseFrameCancel", "ColorPickerFrame", "ColorPickerCancelButton", "ColorPickerOkayButton", "OpacitySliderFrame", "OpacityFrame", "OpacityFrameSlider", "OpacityFrameCloseButton", "GossipFrame", "GossipNpcNameFrame", "GossipFrameCloseButton", "GossipFrameGreetingPanel", "GossipFrameGreetingGoodbyeButton", "GossipGreetingScrollFrame", "GossipGreetingScrollChildFrame", "GossipTitleButton1", "GossipTitleButton2", "GossipTitleButton3", "GossipTitleButton4", "GossipTitleButton5", "GossipTitleButton6", "GossipTitleButton7", "GossipTitleButton8", "GossipTitleButton9", "GossipTitleButton10", "GossipTitleButton11", "GossipTitleButton12", "GossipTitleButton13", "GossipTitleButton14", "GossipTitleButton15", "GossipTitleButton16", "GossipTitleButton17", "GossipTitleButton18", "GossipTitleButton19", "GossipTitleButton20", "GossipTitleButton21", "GossipTitleButton22", "GossipTitleButton23", "GossipTitleButton24", "GossipTitleButton25", "GossipTitleButton26", "GossipTitleButton27", "GossipTitleButton28", "GossipTitleButton29", "GossipTitleButton30", "GossipTitleButton31", "GossipTitleButton32", "GossipSpacerFrame", "GossipGreetingScrollFrameScrollBar", "GossipGreetingScrollFrameScrollBarScrollUpButton", "GossipGreetingScrollFrameScrollBarScrollDownButton", "MailFrame", "InboxFrame", "InboxTooMuchMail", "MailItem1", "MailItem1ExpireTime", "MailItem1Button", "MailItem2", "MailItem2ExpireTime", "MailItem2Button", "MailItem3", "MailItem3ExpireTime", "MailItem3Button", "MailItem4", "MailItem4ExpireTime", "MailItem4Button", "MailItem5", "MailItem5ExpireTime", "MailItem5Button", "MailItem6", "MailItem6ExpireTime", "MailItem6Button", "MailItem7", "MailItem7ExpireTime", "MailItem7Button", "InboxPrevPageButton", "InboxNextPageButton", "SendMailFrame", "SendMailScrollFrame", "SendMailScrollChildFrame", "SendMailBodyEditBox", "SendMailScrollFrameScrollBar", "SendMailScrollFrameScrollBarScrollUpButton", "SendMailScrollFrameScrollBarScrollDownButton", "SendMailNameEditBox", "SendMailCostMoneyFrame", "SendMailCostMoneyFrameCopperButton", "SendMailCostMoneyFrameSilverButton", "SendMailCostMoneyFrameGoldButton", "SendMailSubjectEditBox", "SendMailAttachment1", "SendMailAttachment2", "SendMailAttachment3", "SendMailAttachment4", "SendMailAttachment5", "SendMailAttachment6", "SendMailAttachment7", "SendMailAttachment8", "SendMailAttachment9", "SendMailAttachment10", "SendMailAttachment11", "SendMailAttachment12", "SendMailAttachment13", "SendMailAttachment14", "SendMailAttachment15", "SendMailAttachment16", "SendMailMoneyButton", "SendMailMoney", "SendMailMoneyGold", "SendMailMoneySilver", "SendMailMoneyCopper", "SendMailSendMoneyButton", "SendMailCODButton", "SendMailMoneyFrame", "SendMailMoneyFrameCopperButton", "SendMailMoneyFrameSilverButton", "SendMailMoneyFrameGoldButton", "SendMailCancelButton", "SendMailMailButton", "SendMailFrameLockSendMail", "InboxCloseButton", "MailFrameTab1", "MailFrameTab2", "StationeryPopupFrame", "StationeryPopupScrollFrame", "StationeryPopupScrollFrameScrollChildFrame", "StationeryPopupScrollFrameScrollBar", "StationeryPopupScrollFrameScrollBarScrollUpButton", "StationeryPopupScrollFrameScrollBarScrollDownButton", "StationeryPopupButton1", "StationeryPopupButton1MoneyFrame", "StationeryPopupButton1MoneyFrameCopperButton", "StationeryPopupButton1MoneyFrameSilverButton", "StationeryPopupButton1MoneyFrameGoldButton", "StationeryPopupButton2", "StationeryPopupButton2MoneyFrame", "StationeryPopupButton2MoneyFrameCopperButton", "StationeryPopupButton2MoneyFrameSilverButton", "StationeryPopupButton2MoneyFrameGoldButton", "StationeryPopupButton3", "StationeryPopupButton3MoneyFrame", "StationeryPopupButton3MoneyFrameCopperButton", "StationeryPopupButton3MoneyFrameSilverButton", "StationeryPopupButton3MoneyFrameGoldButton", "StationeryPopupButton4", "StationeryPopupButton4MoneyFrame", "StationeryPopupButton4MoneyFrameCopperButton", "StationeryPopupButton4MoneyFrameSilverButton", "StationeryPopupButton4MoneyFrameGoldButton", "StationeryPopupButton5", "StationeryPopupButton5MoneyFrame", "StationeryPopupButton5MoneyFrameCopperButton", "StationeryPopupButton5MoneyFrameSilverButton", "StationeryPopupButton5MoneyFrameGoldButton", "StationeryPopupCancelButton", "StationeryPopupOkayButton", "OpenMailFrame", "OpenMailReportSpamButton", "OpenMailScrollFrame", "OpenMailScrollChildFrame", "OpenMailInvoiceFrame", "OpenMailTransactionAmountMoneyFrame", "OpenMailTransactionAmountMoneyFrameCopperButton", "OpenMailTransactionAmountMoneyFrameSilverButton", "OpenMailTransactionAmountMoneyFrameGoldButton", "OpenMailDepositMoneyFrame", "OpenMailDepositMoneyFrameCopperButton", "OpenMailDepositMoneyFrameSilverButton", "OpenMailDepositMoneyFrameGoldButton", "OpenMailHouseCutMoneyFrame", "OpenMailHouseCutMoneyFrameCopperButton", "OpenMailHouseCutMoneyFrameSilverButton", "OpenMailHouseCutMoneyFrameGoldButton", "OpenMailSalePriceMoneyFrame", "OpenMailSalePriceMoneyFrameCopperButton", "OpenMailSalePriceMoneyFrameSilverButton", "OpenMailSalePriceMoneyFrameGoldButton", "OpenMailScrollFrameScrollBar", "OpenMailScrollFrameScrollBarScrollUpButton", "OpenMailScrollFrameScrollBarScrollDownButton", "OpenMailLetterButton", "OpenMailAttachmentButton1", "OpenMailAttachmentButton2", "OpenMailAttachmentButton3", "OpenMailAttachmentButton4", "OpenMailAttachmentButton5", "OpenMailAttachmentButton6", "OpenMailAttachmentButton7", "OpenMailAttachmentButton8", "OpenMailAttachmentButton9", "OpenMailAttachmentButton10", "OpenMailAttachmentButton11", "OpenMailAttachmentButton12", "OpenMailAttachmentButton13", "OpenMailAttachmentButton14", "OpenMailAttachmentButton15", "OpenMailAttachmentButton16", "OpenMailMoneyButton", "OpenMailCancelButton", "OpenMailDeleteButton", "OpenMailReplyButton", "OpenMailCloseButton", "PetStableFrame", "PetStableModel", "PetStableModelRotateLeftButton", "PetStableModelRotateRightButton", "PetStablePetInfo", "PetStableCurrentPet", "PetStableStabledPet1", "PetStableStabledPet2", "PetStableStabledPet3", "PetStableStabledPet4", "PetStablePurchaseButton", "PetStableMoneyFrame", "PetStableMoneyFrameCopperButton", "PetStableMoneyFrameSilverButton", "PetStableMoneyFrameGoldButton", "PetStableCostMoneyFrame", "PetStableCostMoneyFrameCopperButton", "PetStableCostMoneyFrameSilverButton", "PetStableCostMoneyFrameGoldButton", "PetStableFrameCloseButton", "DurabilityFrame", "WorldStateAlwaysUpFrame", "WorldStateScoreFrame", "WorldStateScoreFrameClass", "WorldStateScoreFrameName", "WorldStateScoreFrameTeam", "WorldStateScoreFrameKB", "WorldStateScoreFrameDeaths", "WorldStateScoreFrameHK", "WorldStateScoreFrameDamageDone", "WorldStateScoreFrameHealingDone", "WorldStateScoreFrameTeamSkill", "WorldStateScoreFrameHonorGained", "WorldStateScoreColumn1", "WorldStateScoreColumn2", "WorldStateScoreColumn3", "WorldStateScoreColumn4", "WorldStateScoreColumn5", "WorldStateScoreColumn6", "WorldStateScoreColumn7", "ScorePlayerDropDown", "ScorePlayerDropDownButton", "WorldStateScoreButton1", "WorldStateScoreButton1ClassButton", "WorldStateScoreButton1Name", "WorldStateScoreButton2", "WorldStateScoreButton2ClassButton", "WorldStateScoreButton2Name", "WorldStateScoreButton3", "WorldStateScoreButton3ClassButton", "WorldStateScoreButton3Name", "WorldStateScoreButton4", "WorldStateScoreButton4ClassButton", "WorldStateScoreButton4Name", "WorldStateScoreButton5", "WorldStateScoreButton5ClassButton", "WorldStateScoreButton5Name", "WorldStateScoreButton6", "WorldStateScoreButton6ClassButton", "WorldStateScoreButton6Name", "WorldStateScoreButton7", "WorldStateScoreButton7ClassButton", "WorldStateScoreButton7Name", "WorldStateScoreButton8", "WorldStateScoreButton8ClassButton", "WorldStateScoreButton8Name", "WorldStateScoreButton9", "WorldStateScoreButton9ClassButton", "WorldStateScoreButton9Name", "WorldStateScoreButton10", "WorldStateScoreButton10ClassButton", "WorldStateScoreButton10Name", "WorldStateScoreButton11", "WorldStateScoreButton11ClassButton", "WorldStateScoreButton11Name", "WorldStateScoreButton12", "WorldStateScoreButton12ClassButton", "WorldStateScoreButton12Name", "WorldStateScoreButton13", "WorldStateScoreButton13ClassButton", "WorldStateScoreButton13Name", "WorldStateScoreButton14", "WorldStateScoreButton14ClassButton", "WorldStateScoreButton14Name", "WorldStateScoreButton15", "WorldStateScoreButton15ClassButton", "WorldStateScoreButton15Name", "WorldStateScoreButton16", "WorldStateScoreButton16ClassButton", "WorldStateScoreButton16Name", "WorldStateScoreButton17", "WorldStateScoreButton17ClassButton", "WorldStateScoreButton17Name", "WorldStateScoreButton18", "WorldStateScoreButton18ClassButton", "WorldStateScoreButton18Name", "WorldStateScoreButton19", "WorldStateScoreButton19ClassButton", "WorldStateScoreButton19Name", "WorldStateScoreButton20", "WorldStateScoreButton20ClassButton", "WorldStateScoreButton20Name", "WorldStateScoreScrollFrame", "WorldStateScoreScrollFrameScrollChildFrame", "WorldStateScoreScrollFrameScrollBar", "WorldStateScoreScrollFrameScrollBarScrollUpButton", "WorldStateScoreScrollFrameScrollBarScrollDownButton", "WorldStateScoreFrameCloseButton", "WorldStateScoreFrameTab1", "WorldStateScoreFrameTab2", "WorldStateScoreFrameTab3", "WorldStateScoreFrameLeaveButton", "WorldStateScoreWinnerFrame", "DressUpFrame", "DressUpFrameCloseButton", "DressUpFrameCancelButton", "DressUpFrameResetButton", "DressUpModel", "DressUpModelRotateLeftButton", "DressUpModelRotateRightButton", "RaidWarningFrame", "RaidBossEmoteFrame", "PVPParentFrame", "PVPParentFrameCloseButton", "PVPFrame", "PVPFrameOffSeason", "PVPFrameHonor", "PVPFrameArena", "PVPHonor", "PVPTeam1Standard", "PVPTeam1", "PVPTeam1Highlight", "PVPTeam1Data", "PVPTeam2Standard", "PVPTeam2", "PVPTeam2Highlight", "PVPTeam2Data", "PVPTeam3Standard", "PVPTeam3", "PVPTeam3Highlight", "PVPTeam3Data", "PVPFrameToggleButton", "PVPTeamDetails", "PVPDropDown", "PVPDropDownButton", "PVPTeamDetailsCloseButton", "PVPTeamDetailsFrameColumnHeader1", "PVPTeamDetailsFrameColumnHeader2", "PVPTeamDetailsFrameColumnHeader3", "PVPTeamDetailsFrameColumnHeader4", "PVPTeamDetailsFrameColumnHeader5", "PVPTeamDetailsButton1", "PVPTeamDetailsButton1Name", "PVPTeamDetailsButton1Class", "PVPTeamDetailsButton1Played", "PVPTeamDetailsButton1WinLoss", "PVPTeamDetailsButton1Rating", "PVPTeamDetailsButton2", "PVPTeamDetailsButton2Name", "PVPTeamDetailsButton2Class", "PVPTeamDetailsButton2Played", "PVPTeamDetailsButton2WinLoss", "PVPTeamDetailsButton2Rating", "PVPTeamDetailsButton3", "PVPTeamDetailsButton3Name", "PVPTeamDetailsButton3Class", "PVPTeamDetailsButton3Played", "PVPTeamDetailsButton3WinLoss", "PVPTeamDetailsButton3Rating", "PVPTeamDetailsButton4", "PVPTeamDetailsButton4Name", "PVPTeamDetailsButton4Class", "PVPTeamDetailsButton4Played", "PVPTeamDetailsButton4WinLoss", "PVPTeamDetailsButton4Rating", "PVPTeamDetailsButton5", "PVPTeamDetailsButton5Name", "PVPTeamDetailsButton5Class", "PVPTeamDetailsButton5Played", "PVPTeamDetailsButton5WinLoss", "PVPTeamDetailsButton5Rating", "PVPTeamDetailsButton6", "PVPTeamDetailsButton6Name", "PVPTeamDetailsButton6Class", "PVPTeamDetailsButton6Played", "PVPTeamDetailsButton6WinLoss", "PVPTeamDetailsButton6Rating", "PVPTeamDetailsButton7", "PVPTeamDetailsButton7Name", "PVPTeamDetailsButton7Class", "PVPTeamDetailsButton7Played", "PVPTeamDetailsButton7WinLoss", "PVPTeamDetailsButton7Rating", "PVPTeamDetailsButton8", "PVPTeamDetailsButton8Name", "PVPTeamDetailsButton8Class", "PVPTeamDetailsButton8Played", "PVPTeamDetailsButton8WinLoss", "PVPTeamDetailsButton8Rating", "PVPTeamDetailsButton9", "PVPTeamDetailsButton9Name", "PVPTeamDetailsButton9Class", "PVPTeamDetailsButton9Played", "PVPTeamDetailsButton9WinLoss", "PVPTeamDetailsButton9Rating", "PVPTeamDetailsButton10", "PVPTeamDetailsButton10Name", "PVPTeamDetailsButton10Class", "PVPTeamDetailsButton10Played", "PVPTeamDetailsButton10WinLoss", "PVPTeamDetailsButton10Rating", "PVPTeamDetailsAddTeamMember", "PVPTeamDetailsToggleButton", "PVPParentFrameTab1", "PVPParentFrameTab2", "PVPBattlegroundFrame", "WintergraspTimer", "BattlegroundType1", "BattlegroundType2", "BattlegroundType3", "BattlegroundType4", "BattlegroundType5", "PVPBattlegroundFrameTypeScrollFrame", "PVPBattlegroundFrameTypeScrollFrameScrollChildFrame", "PVPBattlegroundFrameTypeScrollFrameScrollBar", "PVPBattlegroundFrameTypeScrollFrameScrollBarScrollUpButton", "PVPBattlegroundFrameTypeScrollFrameScrollBarScrollDownButton", "PVPBattlegroundFrameCancelButton", "PVPBattlegroundFrameInfoScrollFrame", "PVPBattlegroundFrameInfoScrollFrameChildFrame", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfo", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinReward", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossReward", "PVPBattlegroundFrameInfoScrollFrameScrollBar", "PVPBattlegroundFrameInfoScrollFrameScrollBarScrollUpButton", "PVPBattlegroundFrameInfoScrollFrameScrollBarScrollDownButton", "PVPBattlegroundFrameJoinButton", "PVPBattlegroundFrameGroupJoinButton", "ArenaFrame", "ArenaZone1", "ArenaZone2", "ArenaZone3", "ArenaZone4", "ArenaZone5", "ArenaZone6", "ArenaFrameCancelButton", "ArenaFrameJoinButton", "ArenaFrameGroupJoinButton", "ArenaFrameCloseButton", "ArenaRegistrarFrame", "ArenaRegistrarNpcNameFrame", "ArenaRegistrarFrameCloseButton", "ArenaRegistrarGreetingFrame", "ArenaRegistrarFrameGoodbyeButton", "ArenaRegistrarButton1", "ArenaRegistrarButton2", "ArenaRegistrarButton3", "ArenaRegistrarButton4", "ArenaRegistrarButton5", "ArenaRegistrarButton6", "ArenaRegistrarPurchaseFrame", "ArenaRegistrarMoneyFrame", "ArenaRegistrarMoneyFrameCopperButton", "ArenaRegistrarMoneyFrameSilverButton", "ArenaRegistrarMoneyFrameGoldButton", "ArenaRegistrarFrameCancelButton", "ArenaRegistrarFramePurchaseButton", "ArenaRegistrarFrameEditBox", "PVPBannerFrame", "PVPBannerFrameStandard", "PVPBannerFrameCustomizationFrame", "PVPBannerFrameCustomization1", "PVPBannerFrameCustomization1LeftButton", "PVPBannerFrameCustomization1RightButton", "PVPBannerFrameCustomization2", "PVPBannerFrameCustomization2LeftButton", "PVPBannerFrameCustomization2RightButton", "PVPColorPickerButton1", "PVPColorPickerButton2", "PVPColorPickerButton3", "PVPBannerFrameCancelButton", "PVPBannerFrameSaveButton", "PVPBannerFrameAcceptButton", "PVPBannerFrameCancelButton", "PVPBannerFrameCloseButton", "LFGEventFrame", "LFDDungeonReadyPopup", "LFDDungeonReadyStatus", "LFDDungeonReadyStatusCloseButton", "LFDDungeonReadyStatusPlayer1", "LFDDungeonReadyStatusPlayer2", "LFDDungeonReadyStatusPlayer3", "LFDDungeonReadyStatusPlayer4", "LFDDungeonReadyStatusPlayer5", "LFDDungeonReadyDialog", "LFDDungeonReadyDialogCloseButton", "LFDDungeonReadyDialogEnterDungeonButton", "LFDDungeonReadyDialogLeaveQueueButton", "LFDDungeonReadyDialogRoleIcon", "LFDDungeonReadyDialogRandomInProgressFrame", "LFDDungeonReadyDialogInstanceInfoFrame", "LFDDungeonReadyDialogRewardsFrame", "LFDDungeonReadyDialogRewardsFrameReward1", "LFDDungeonReadyDialogRewardsFrameReward2", "LFDRoleCheckPopup", "LFDRoleCheckPopupRoleButtonTank", "LFDRoleCheckPopupRoleButtonHealer", "LFDRoleCheckPopupRoleButtonDPS", "LFDRoleCheckPopupAcceptButton", "LFDRoleCheckPopupDeclineButton", "LFDRoleCheckPopupDescription", "LFDSearchStatus", "LFDSearchStatusTank1", "LFDSearchStatusHealer1", "LFDSearchStatusDamage1", "LFDSearchStatusDamage2", "LFDSearchStatusDamage3", "LFDParentFrame", "LFDQueueFrame", "LFDQueueFrameRoleButtonTank", "LFDQueueFrameRoleButtonHealer", "LFDQueueFrameRoleButtonDPS", "LFDQueueFrameRoleButtonLeader", "LFDQueueFrameTypeDropDown", "LFDQueueFrameTypeDropDownButton", "LFDQueueFrameRandom", "LFDQueueFrameRandomScrollFrame", "LFDQueueFrameRandomScrollFrameChildFrame", "LFDQueueFrameRandomScrollFrameChildFrameItem1", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrame", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameCopperButton", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameSilverButton", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameGoldButton", "LFDQueueFrameRandomScrollFrameChildFrameSpacer", "LFDQueueFrameRandomScrollFrameScrollBar", "LFDQueueFrameRandomScrollFrameScrollBarScrollUpButton", "LFDQueueFrameRandomScrollFrameScrollBarScrollDownButton", "LFDQueueFrameSpecific", "LFDQueueFrameSpecificListButton1", "LFDQueueFrameSpecificListButton1EnableButton", "LFDQueueFrameSpecificListButton1ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton2", "LFDQueueFrameSpecificListButton2EnableButton", "LFDQueueFrameSpecificListButton2ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton3", "LFDQueueFrameSpecificListButton3EnableButton", "LFDQueueFrameSpecificListButton3ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton4", "LFDQueueFrameSpecificListButton4EnableButton", "LFDQueueFrameSpecificListButton4ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton5", "LFDQueueFrameSpecificListButton5EnableButton", "LFDQueueFrameSpecificListButton5ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton6", "LFDQueueFrameSpecificListButton6EnableButton", "LFDQueueFrameSpecificListButton6ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton7", "LFDQueueFrameSpecificListButton7EnableButton", "LFDQueueFrameSpecificListButton7ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton8", "LFDQueueFrameSpecificListButton8EnableButton", "LFDQueueFrameSpecificListButton8ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton9", "LFDQueueFrameSpecificListButton9EnableButton", "LFDQueueFrameSpecificListButton9ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton10", "LFDQueueFrameSpecificListButton10EnableButton", "LFDQueueFrameSpecificListButton10ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton11", "LFDQueueFrameSpecificListButton11EnableButton", "LFDQueueFrameSpecificListButton11ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton12", "LFDQueueFrameSpecificListButton12EnableButton", "LFDQueueFrameSpecificListButton12ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton13", "LFDQueueFrameSpecificListButton13EnableButton", "LFDQueueFrameSpecificListButton13ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton14", "LFDQueueFrameSpecificListButton14EnableButton", "LFDQueueFrameSpecificListButton14ExpandOrCollapseButton", "LFDQueueFrameSpecificListButton15", "LFDQueueFrameSpecificListButton15EnableButton", "LFDQueueFrameSpecificListButton15ExpandOrCollapseButton", "LFDQueueFrameSpecificListScrollFrame", "LFDQueueFrameSpecificListScrollFrameScrollChildFrame", "LFDQueueFrameSpecificListScrollFrameScrollBar", "LFDQueueFrameSpecificListScrollFrameScrollBarScrollUpButton", "LFDQueueFrameSpecificListScrollFrameScrollBarScrollDownButton", "LFDQueueFrameFindGroupButton", "LFDQueueFrameCancelButton", "LFDQueueFrameCooldownFrame", "LFDQueueFramePartyBackfill", "LFDQueueFramePartyBackfillBackfillButton", "LFDQueueFramePartyBackfillNoBackfillButton", "LFDQueueFrameNoLFDWhileLFR", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButton", "LFDParentFramePortrait", "LFRParentFrame", "LFRQueueFrame", "LFRQueueFrameRoleButtonTank", "LFRQueueFrameRoleButtonHealer", "LFRQueueFrameRoleButtonDPS", "LFRQueueFrameComment", "LFRQueueFrameCommentTextButton", "LFRQueueFrameSpecific", "LFRQueueFrameSpecificListButton1", "LFRQueueFrameSpecificListButton1EnableButton", "LFRQueueFrameSpecificListButton1ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton2", "LFRQueueFrameSpecificListButton2EnableButton", "LFRQueueFrameSpecificListButton2ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton3", "LFRQueueFrameSpecificListButton3EnableButton", "LFRQueueFrameSpecificListButton3ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton4", "LFRQueueFrameSpecificListButton4EnableButton", "LFRQueueFrameSpecificListButton4ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton5", "LFRQueueFrameSpecificListButton5EnableButton", "LFRQueueFrameSpecificListButton5ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton6", "LFRQueueFrameSpecificListButton6EnableButton", "LFRQueueFrameSpecificListButton6ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton7", "LFRQueueFrameSpecificListButton7EnableButton", "LFRQueueFrameSpecificListButton7ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton8", "LFRQueueFrameSpecificListButton8EnableButton", "LFRQueueFrameSpecificListButton8ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton9", "LFRQueueFrameSpecificListButton9EnableButton", "LFRQueueFrameSpecificListButton9ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton10", "LFRQueueFrameSpecificListButton10EnableButton", "LFRQueueFrameSpecificListButton10ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton11", "LFRQueueFrameSpecificListButton11EnableButton", "LFRQueueFrameSpecificListButton11ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton12", "LFRQueueFrameSpecificListButton12EnableButton", "LFRQueueFrameSpecificListButton12ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton13", "LFRQueueFrameSpecificListButton13EnableButton", "LFRQueueFrameSpecificListButton13ExpandOrCollapseButton", "LFRQueueFrameSpecificListButton14", "LFRQueueFrameSpecificListButton14EnableButton", "LFRQueueFrameSpecificListButton14ExpandOrCollapseButton", "LFRQueueFrameSpecificListScrollFrame", "LFRQueueFrameSpecificListScrollFrameScrollChildFrame", "LFRQueueFrameSpecificListScrollFrameScrollBar", "LFRQueueFrameSpecificListScrollFrameScrollBarScrollUpButton", "LFRQueueFrameSpecificListScrollFrameScrollBarScrollDownButton", "LFRQueueFrameFindGroupButton", "LFRQueueFrameAcceptCommentButton", "LFRQueueFrameNoLFRWhileLFD", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButton", "LFRBrowseFrame", "LFRBrowseFrameRaidDropDown", "LFRBrowseFrameRaidDropDownButton", "LFRBrowseFrameColumnHeader1", "LFRBrowseFrameColumnHeader2", "LFRBrowseFrameColumnHeader3", "LFRBrowseFrameColumnHeader4", "LFRBrowseFrameColumnHeader5", "LFRBrowseFrameColumnHeader6", "LFRBrowseFrameColumnHeader7", "LFRBrowseFrameListButton1", "LFRBrowseFrameListButton2", "LFRBrowseFrameListButton3", "LFRBrowseFrameListButton4", "LFRBrowseFrameListButton5", "LFRBrowseFrameListButton6", "LFRBrowseFrameListButton7", "LFRBrowseFrameListButton8", "LFRBrowseFrameListButton9", "LFRBrowseFrameListButton10", "LFRBrowseFrameListButton11", "LFRBrowseFrameListButton12", "LFRBrowseFrameListButton13", "LFRBrowseFrameListButton14", "LFRBrowseFrameListButton15", "LFRBrowseFrameListButton16", "LFRBrowseFrameListButton17", "LFRBrowseFrameListButton18", "LFRBrowseFrameListButton19", "LFRBrowseFrameListScrollFrame", "LFRBrowseFrameListScrollFrameScrollChildFrame", "LFRBrowseFrameListScrollFrameScrollBar", "LFRBrowseFrameListScrollFrameScrollBarScrollUpButton", "LFRBrowseFrameListScrollFrameScrollBarScrollDownButton", "LFRBrowseFrameSendMessageButton", "LFRBrowseFrameInviteButton", "LFRBrowseFrameRefreshButton", "LFRParentFrameTab1", "LFRParentFrameTab2", "MovieProgressFrame", "MovieProgressBar", "MovieRecordingCancelButton", "MacOptionsFrame", "MacOptionsFrameMovieRecording", "MacOptionsFrameResolutionDropDown", "MacOptionsFrameResolutionDropDownButton", "MacOptionsFrameFramerateDropDown", "MacOptionsFrameFramerateDropDownButton", "MacOptionsFrameCodecDropDown", "MacOptionsFrameCodecDropDownButton", "MacOptionsFrameQualitySlider", "MacOptionsFrameCheckButton1", "MacOptionsFrameCheckButton3", "MacOptionsFrameCheckButton2", "MacOptionsFrameCheckButton4", "MacOptionsFrameCheckButton5", "MacOptionsFrameCheckButton6", "MacOptionsButtonCompress", "MovieRecordingFrameTextTooltip1", "MovieRecordingFrameTextTooltip2", "MacOptionsITunesRemote", "MacOptionsFrameCheckButton7", "MacOptionsFrameCheckButton8", "MacOptionsFrameCancel", "MacOptionsFrameOkay", "MacOptionsFrameDefaults", "MacOptionsButtonKeybindings", "MacOptionsCompressFrame", "MacOptionsCompressFrameDelete", "MacOptionsCompressFrameSkip", "MacOptionsCompressFrameCompress", "MacOptionsCancelFrame", "MacOptionsCancelFrameNo", "MacOptionsCancelFrameYes", "FolderPicker", "FolderPickerButton01", "RatingMenuFrame", "RatingMenuButtonOkay", "RuneFrame", "RuneButtonIndividual1", "RuneButtonIndividual1Cooldown", "RuneButtonIndividual1Border", "RuneButtonIndividual1Shine", "RuneButtonIndividual2", "RuneButtonIndividual2Cooldown", "RuneButtonIndividual2Border", "RuneButtonIndividual2Shine", "RuneButtonIndividual3", "RuneButtonIndividual3Cooldown", "RuneButtonIndividual3Border", "RuneButtonIndividual3Shine", "RuneButtonIndividual4", "RuneButtonIndividual4Cooldown", "RuneButtonIndividual4Border", "RuneButtonIndividual4Shine", "RuneButtonIndividual5", "RuneButtonIndividual5Cooldown", "RuneButtonIndividual5Border", "RuneButtonIndividual5Shine", "RuneButtonIndividual6", "RuneButtonIndividual6Cooldown", "RuneButtonIndividual6Border", "RuneButtonIndividual6Shine", "ChatConfigFrame", "ChatConfigCategoryFrame", "ChatConfigCategoryFrameButton1", "ChatConfigCategoryFrameButton2", "ChatConfigCategoryFrameButton3", "ChatConfigCategoryFrameButton4", "ChatConfigBackgroundFrame", "ChatConfigChatSettings", "ChatConfigChatSettingsLeft", "ChatConfigChatSettingsClassColorLegend", "ChatConfigChannelSettings", "ChatConfigChannelSettingsLeft", "ChatConfigChannelSettingsClassColorLegend", "ChatConfigOtherSettings", "ChatConfigOtherSettingsCombat", "ChatConfigOtherSettingsPVP", "ChatConfigOtherSettingsSystem", "ChatConfigOtherSettingsCreature", "ChatConfigCombatSettings", "ChatConfigCombatSettingsFilters", "ChatConfigCombatSettingsFiltersScrollFrame", "ChatConfigCombatSettingsFiltersScrollFrameScrollChildFrame", "ChatConfigCombatSettingsFiltersScrollFrameScrollBar", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarScrollUpButton", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarScrollDownButton", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarBorder", "ChatConfigCombatSettingsFiltersButton1", "ChatConfigCombatSettingsFiltersButton2", "ChatConfigCombatSettingsFiltersButton3", "ChatConfigCombatSettingsFiltersButton4", "ChatConfigCombatSettingsFiltersDeleteButton", "ChatConfigCombatSettingsFiltersAddFilterButton", "ChatConfigCombatSettingsFiltersCopyFilterButton", "ChatConfigMoveFilterUpButton", "ChatConfigMoveFilterDownButton", "CombatConfigMessageSources", "CombatConfigMessageSourcesDoneBy", "CombatConfigMessageSourcesDoneTo", "CombatConfigMessageTypes", "CombatConfigMessageTypesLeft", "CombatConfigMessageTypesRight", "CombatConfigMessageTypesMisc", "CombatConfigColors", "CombatConfigColorsUnitColors", "CombatConfigColorsHighlighting", "CombatConfigColorsHighlightingLine", "CombatConfigColorsHighlightingAbility", "CombatConfigColorsHighlightingDamage", "CombatConfigColorsHighlightingSchool", "CombatConfigColorsColorize", "CombatConfigColorsColorizeUnitName", "CombatConfigColorsColorizeUnitNameCheck", "CombatConfigColorsColorizeSpellNames", "CombatConfigColorsColorizeSpellNamesCheck", "CombatConfigColorsColorizeSpellNamesSchoolColoring", "CombatConfigColorsColorizeSpellNamesColorSwatch", "CombatConfigColorsColorizeDamageNumber", "CombatConfigColorsColorizeDamageNumberCheck", "CombatConfigColorsColorizeDamageNumberSchoolColoring", "CombatConfigColorsColorizeDamageNumberColorSwatch", "CombatConfigColorsColorizeDamageSchool", "CombatConfigColorsColorizeDamageSchoolCheck", "CombatConfigColorsColorizeEntireLine", "CombatConfigColorsColorizeEntireLineCheck", "CombatConfigColorsColorizeEntireLineBySource", "CombatConfigColorsColorizeEntireLineByTarget", "CombatConfigFormatting", "CombatConfigFormattingShowTimeStamp", "CombatConfigFormattingShowBraces", "CombatConfigFormattingUnitNames", "CombatConfigFormattingSpellNames", "CombatConfigFormattingItemNames", "CombatConfigFormattingFullText", "CombatConfigSettings", "CombatConfigSettingsNameEditBox", "CombatConfigSettingsSaveButton", "CombatConfigSettingsShowQuickButton", "CombatConfigSettingsSolo", "CombatConfigSettingsParty", "CombatConfigSettingsRaid", "CombatConfigTab1", "CombatConfigTab2", "CombatConfigTab3", "CombatConfigTab4", "CombatConfigTab5", "ChatConfigFrameDefaultButton", "CombatLogDefaultButton", "ChatConfigFrameCancelButton", "ChatConfigFrameOkayButton", "MovieFrame", "VehicleSeatIndicator", "VehicleSeatIndicatorDropDown", "VehicleSeatIndicatorDropDownButton", "VehicleMenuBar", "VehicleMenuBarPitchUpButton", "VehicleMenuBarPitchDownButton", "VehicleMenuBarLeaveButton", "VehicleMenuBarActionButtonFrame", "VehicleMenuBarActionButton1", "VehicleMenuBarActionButton1Cooldown", "VehicleMenuBarActionButton2", "VehicleMenuBarActionButton2Cooldown", "VehicleMenuBarActionButton3", "VehicleMenuBarActionButton3Cooldown", "VehicleMenuBarActionButton4", "VehicleMenuBarActionButton4Cooldown", "VehicleMenuBarActionButton5", "VehicleMenuBarActionButton5Cooldown", "VehicleMenuBarActionButton6", "VehicleMenuBarActionButton6Cooldown", "VehicleMenuBarPitchSlider", "VehicleMenuBarArtFrame", "VehicleMenuBarHealthBar", "VehicleMenuBarPowerBar", "PlayerFrameAlternateManaBar", "TokenFrame", "TokenFrameContainer", "TokenFrameContainerScrollChild", "TokenFrameContainerScrollBar", "TokenFrameContainerScrollBarScrollUpButton", "TokenFrameContainerScrollBarScrollDownButton", "TokenFrameMoneyFrame", "TokenFrameMoneyFrameCopperButton", "TokenFrameMoneyFrameSilverButton", "TokenFrameMoneyFrameGoldButton", "TokenFrameCancelButton", "TokenFrameContainerButton1", "TokenFrameContainerButton2", "TokenFrameContainerButton3", "TokenFrameContainerButton4", "TokenFrameContainerButton5", "TokenFrameContainerButton6", "TokenFrameContainerButton7", "TokenFrameContainerButton8", "TokenFrameContainerButton9", "TokenFrameContainerButton10", "TokenFrameContainerButton11", "TokenFrameContainerButton12", "TokenFrameContainerButton13", "TokenFrameContainerButton14", "TokenFrameContainerButton15", "TokenFrameContainerButton16", "TokenFrameContainerButton17", "TokenFrameContainerButton18", "TokenFrameContainerButton19", "TokenFrameContainerButton20", "TokenFrameContainerButton21", "TokenFramePopup", "TokenFramePopupInactiveCheckBox", "TokenFramePopupBackpackCheckBox", "TokenFramePopupCloseButton", "BackpackTokenFrame", "BackpackTokenFrameToken1", "BackpackTokenFrameToken2", "BackpackTokenFrameToken3", "CombatLogUpdateFrame", "CombatLogQuickButtonFrame", "CombatLogDropDown", "CombatLogDropDownButton", "CombatLogQuickButtonFrame_Custom", "CombatLogQuickButtonFrame_CustomProgressBar", "CombatLogQuickButtonFrame_CustomAdditionalFilterButton", "CombatLogQuickButtonFrameButton1", "CombatLogQuickButtonFrameButton2", "CombatLogQuickButtonFrameButton3", "TimeManagerFrame", "TimeManagerCloseButton", "TimeManagerStopwatchFrame", "TimeManagerStopwatchCheck", "TimeManagerAlarmTimeFrame", "TimeManagerAlarmHourDropDown", "TimeManagerAlarmHourDropDownButton", "TimeManagerAlarmMinuteDropDown", "TimeManagerAlarmMinuteDropDownButton", "TimeManagerAlarmAMPMDropDown", "TimeManagerAlarmAMPMDropDownButton", "TimeManagerAlarmMessageFrame", "TimeManagerAlarmMessageEditBox", "TimeManagerAlarmEnabledButton", "TimeManagerMilitaryTimeCheck", "TimeManagerLocalTimeCheck", "DropDownList1Button20", "DropDownList1Button20ColorSwatch", "DropDownList1Button20ExpandArrow", "DropDownList1Button20InvisibleButton", "DropDownList2Button20", "DropDownList2Button20ColorSwatch", "DropDownList2Button20ExpandArrow", "DropDownList2Button20InvisibleButton", "DropDownList1Button21", "DropDownList1Button21ColorSwatch", "DropDownList1Button21ExpandArrow", "DropDownList1Button21InvisibleButton", "DropDownList2Button21", "DropDownList2Button21ColorSwatch", "DropDownList2Button21ExpandArrow", "DropDownList2Button21InvisibleButton", "DropDownList1Button22", "DropDownList1Button22ColorSwatch", "DropDownList1Button22ExpandArrow", "DropDownList1Button22InvisibleButton", "DropDownList2Button22", "DropDownList2Button22ColorSwatch", "DropDownList2Button22ExpandArrow", "DropDownList2Button22InvisibleButton", "DropDownList1Button23", "DropDownList1Button23ColorSwatch", "DropDownList1Button23ExpandArrow", "DropDownList1Button23InvisibleButton", "DropDownList2Button23", "DropDownList2Button23ColorSwatch", "DropDownList2Button23ExpandArrow", "DropDownList2Button23InvisibleButton", "DropDownList1Button24", "DropDownList1Button24ColorSwatch", "DropDownList1Button24ExpandArrow", "DropDownList1Button24InvisibleButton", "DropDownList2Button24", "DropDownList2Button24ColorSwatch", "DropDownList2Button24ExpandArrow", "DropDownList2Button24InvisibleButton", "TimeManagerClockButton", "StopwatchFrame", "StopwatchTicker", "StopwatchTabFrame", "StopwatchCloseButton", "StopwatchResetButton", "StopwatchPlayPauseButton", "CombatText", "ChannelPulloutRosterButton1", "ChannelPulloutRosterButton1Speaker", "ChannelPulloutRosterButton2", "ChannelPulloutRosterButton2Speaker", "ChannelPulloutRosterButton3", "ChannelPulloutRosterButton3Speaker", "ChannelPulloutRosterButton4", "ChannelPulloutRosterButton4Speaker", "ChannelPulloutRosterButton5", "ChannelPulloutRosterButton5Speaker", "ChatConfigChatSettingsLeftCheckBox1", "ChatConfigChatSettingsLeftCheckBox1Check", "ChatConfigChatSettingsLeftCheckBox1ColorSwatch", "ChatConfigChatSettingsLeftCheckBox1ColorClasses", "ChatConfigChatSettingsLeftCheckBox2", "ChatConfigChatSettingsLeftCheckBox2Check", "ChatConfigChatSettingsLeftCheckBox2ColorSwatch", "ChatConfigChatSettingsLeftCheckBox2ColorClasses", "ChatConfigChatSettingsLeftCheckBox3", "ChatConfigChatSettingsLeftCheckBox3Check", "ChatConfigChatSettingsLeftCheckBox3ColorSwatch", "ChatConfigChatSettingsLeftCheckBox3ColorClasses", "ChatConfigChatSettingsLeftCheckBox4", "ChatConfigChatSettingsLeftCheckBox4Check", "ChatConfigChatSettingsLeftCheckBox4ColorSwatch", "ChatConfigChatSettingsLeftCheckBox4ColorClasses", "ChatConfigChatSettingsLeftCheckBox5", "ChatConfigChatSettingsLeftCheckBox5Check", "ChatConfigChatSettingsLeftCheckBox5ColorSwatch", "ChatConfigChatSettingsLeftCheckBox5ColorClasses", "ChatConfigChatSettingsLeftCheckBox6", "ChatConfigChatSettingsLeftCheckBox6Check", "ChatConfigChatSettingsLeftCheckBox6ColorSwatch", "ChatConfigChatSettingsLeftCheckBox6ColorClasses", "ChatConfigChatSettingsLeftCheckBox7", "ChatConfigChatSettingsLeftCheckBox7Check", "ChatConfigChatSettingsLeftCheckBox7ColorSwatch", "ChatConfigChatSettingsLeftCheckBox7ColorClasses", "ChatConfigChatSettingsLeftCheckBox8", "ChatConfigChatSettingsLeftCheckBox8Check", "ChatConfigChatSettingsLeftCheckBox8ColorSwatch", "ChatConfigChatSettingsLeftCheckBox8ColorClasses", "ChatConfigChatSettingsLeftCheckBox9", "ChatConfigChatSettingsLeftCheckBox9Check", "ChatConfigChatSettingsLeftCheckBox9ColorSwatch", "ChatConfigChatSettingsLeftCheckBox9ColorClasses", "ChatConfigChatSettingsLeftCheckBox10", "ChatConfigChatSettingsLeftCheckBox10Check", "ChatConfigChatSettingsLeftCheckBox10ColorSwatch", "ChatConfigChatSettingsLeftCheckBox10ColorClasses", "ChatConfigChatSettingsLeftCheckBox11", "ChatConfigChatSettingsLeftCheckBox11Check", "ChatConfigChatSettingsLeftCheckBox11ColorSwatch", "ChatConfigChatSettingsLeftCheckBox11ColorClasses", "ChatConfigChatSettingsLeftCheckBox12", "ChatConfigChatSettingsLeftCheckBox12Check", "ChatConfigChatSettingsLeftCheckBox12ColorSwatch", "ChatConfigChatSettingsLeftCheckBox12ColorClasses", "ChatConfigChatSettingsLeftCheckBox13", "ChatConfigChatSettingsLeftCheckBox13Check", "ChatConfigChatSettingsLeftCheckBox13ColorSwatch", "ChatConfigChatSettingsLeftCheckBox13ColorClasses", "ChatConfigChatSettingsLeftCheckBox14", "ChatConfigChatSettingsLeftCheckBox14Check", "ChatConfigChatSettingsLeftCheckBox14ColorSwatch", "ChatConfigChatSettingsLeftCheckBox14ColorClasses", "ChatConfigChatSettingsLeftCheckBox15", "ChatConfigChatSettingsLeftCheckBox15Check", "ChatConfigChatSettingsLeftCheckBox15ColorSwatch", "ChatConfigChatSettingsLeftCheckBox15ColorClasses", "ChatConfigChatSettingsLeftCheckBox16", "ChatConfigChatSettingsLeftCheckBox16Check", "ChatConfigChatSettingsLeftCheckBox16ColorSwatch", "ChatConfigChatSettingsLeftCheckBox16ColorClasses", "ChatConfigChatSettingsLeftCheckBox17", "ChatConfigChatSettingsLeftCheckBox17Check", "ChatConfigChatSettingsLeftCheckBox17ColorSwatch", "ChatConfigChatSettingsLeftCheckBox17ColorClasses", "ChatConfigOtherSettingsCombatCheckBox1", "ChatConfigOtherSettingsCombatCheckBox1Check", "ChatConfigOtherSettingsCombatCheckBox1ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox2", "ChatConfigOtherSettingsCombatCheckBox2Check", "ChatConfigOtherSettingsCombatCheckBox2ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox3", "ChatConfigOtherSettingsCombatCheckBox3Check", "ChatConfigOtherSettingsCombatCheckBox3ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox4", "ChatConfigOtherSettingsCombatCheckBox4Check", "ChatConfigOtherSettingsCombatCheckBox4ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox5", "ChatConfigOtherSettingsCombatCheckBox5Check", "ChatConfigOtherSettingsCombatCheckBox5ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox6", "ChatConfigOtherSettingsCombatCheckBox6Check", "ChatConfigOtherSettingsCombatCheckBox6ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox7", "ChatConfigOtherSettingsCombatCheckBox7Check", "ChatConfigOtherSettingsCombatCheckBox7ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox8", "ChatConfigOtherSettingsCombatCheckBox8Check", "ChatConfigOtherSettingsCombatCheckBox8ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox9", "ChatConfigOtherSettingsCombatCheckBox9Check", "ChatConfigOtherSettingsCombatCheckBox9ColorSwatch", "ChatConfigOtherSettingsCombatCheckBox10", "ChatConfigOtherSettingsCombatCheckBox10Check", "ChatConfigOtherSettingsCombatCheckBox10ColorSwatch", "ChatConfigOtherSettingsPVPCheckBox1", "ChatConfigOtherSettingsPVPCheckBox1Check", "ChatConfigOtherSettingsPVPCheckBox1ColorSwatch", "ChatConfigOtherSettingsPVPCheckBox2", "ChatConfigOtherSettingsPVPCheckBox2Check", "ChatConfigOtherSettingsPVPCheckBox2ColorSwatch", "ChatConfigOtherSettingsPVPCheckBox3", "ChatConfigOtherSettingsPVPCheckBox3Check", "ChatConfigOtherSettingsPVPCheckBox3ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox1", "ChatConfigOtherSettingsSystemCheckBox1Check", "ChatConfigOtherSettingsSystemCheckBox1ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox2", "ChatConfigOtherSettingsSystemCheckBox2Check", "ChatConfigOtherSettingsSystemCheckBox2ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox3", "ChatConfigOtherSettingsSystemCheckBox3Check", "ChatConfigOtherSettingsSystemCheckBox3ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox4", "ChatConfigOtherSettingsSystemCheckBox4Check", "ChatConfigOtherSettingsSystemCheckBox4ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox5", "ChatConfigOtherSettingsSystemCheckBox5Check", "ChatConfigOtherSettingsSystemCheckBox5ColorSwatch", "ChatConfigOtherSettingsSystemCheckBox6", "ChatConfigOtherSettingsSystemCheckBox6Check", "ChatConfigOtherSettingsSystemCheckBox6ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox1", "ChatConfigOtherSettingsCreatureCheckBox1Check", "ChatConfigOtherSettingsCreatureCheckBox1ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox2", "ChatConfigOtherSettingsCreatureCheckBox2Check", "ChatConfigOtherSettingsCreatureCheckBox2ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox3", "ChatConfigOtherSettingsCreatureCheckBox3Check", "ChatConfigOtherSettingsCreatureCheckBox3ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox4", "ChatConfigOtherSettingsCreatureCheckBox4Check", "ChatConfigOtherSettingsCreatureCheckBox4ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox5", "ChatConfigOtherSettingsCreatureCheckBox5Check", "ChatConfigOtherSettingsCreatureCheckBox5ColorSwatch", "ChatConfigOtherSettingsCreatureCheckBox6", "ChatConfigOtherSettingsCreatureCheckBox6Check", "ChatConfigOtherSettingsCreatureCheckBox6ColorSwatch", "CombatConfigMessageSourcesDoneByCheckBox1", "CombatConfigMessageSourcesDoneByCheckBox1Check", "CombatConfigMessageSourcesDoneByCheckBox2", "CombatConfigMessageSourcesDoneByCheckBox2Check", "CombatConfigMessageSourcesDoneByCheckBox3", "CombatConfigMessageSourcesDoneByCheckBox3Check", "CombatConfigMessageSourcesDoneByCheckBox4", "CombatConfigMessageSourcesDoneByCheckBox4Check", "CombatConfigMessageSourcesDoneByCheckBox5", "CombatConfigMessageSourcesDoneByCheckBox5Check", "CombatConfigMessageSourcesDoneByCheckBox6", "CombatConfigMessageSourcesDoneByCheckBox6Check", "CombatConfigMessageSourcesDoneByCheckBox7", "CombatConfigMessageSourcesDoneByCheckBox7Check", "CombatConfigMessageSourcesDoneToCheckBox1", "CombatConfigMessageSourcesDoneToCheckBox1Check", "CombatConfigMessageSourcesDoneToCheckBox2", "CombatConfigMessageSourcesDoneToCheckBox2Check", "CombatConfigMessageSourcesDoneToCheckBox3", "CombatConfigMessageSourcesDoneToCheckBox3Check", "CombatConfigMessageSourcesDoneToCheckBox4", "CombatConfigMessageSourcesDoneToCheckBox4Check", "CombatConfigMessageSourcesDoneToCheckBox5", "CombatConfigMessageSourcesDoneToCheckBox5Check", "CombatConfigMessageSourcesDoneToCheckBox6", "CombatConfigMessageSourcesDoneToCheckBox6Check", "CombatConfigMessageSourcesDoneToCheckBox7", "CombatConfigMessageSourcesDoneToCheckBox7Check", "CombatConfigMessageTypesLeftCheckBox1", "CombatConfigMessageTypesLeftCheckBox1_1", "CombatConfigMessageTypesLeftCheckBox1_2", "CombatConfigMessageTypesLeftCheckBox2", "CombatConfigMessageTypesLeftCheckBox2_1", "CombatConfigMessageTypesLeftCheckBox2_2", "CombatConfigMessageTypesLeftCheckBox3", "CombatConfigMessageTypesLeftCheckBox3_1", "CombatConfigMessageTypesLeftCheckBox3_2", "CombatConfigMessageTypesLeftCheckBox3_3", "CombatConfigMessageTypesLeftCheckBox3_4", "CombatConfigMessageTypesLeftCheckBox4", "CombatConfigMessageTypesLeftCheckBox4_1", "CombatConfigMessageTypesLeftCheckBox4_2", "CombatConfigMessageTypesLeftCheckBox4_3", "CombatConfigMessageTypesLeftCheckBox4_4", "CombatConfigMessageTypesRightCheckBox1", "CombatConfigMessageTypesRightCheckBox1_1", "CombatConfigMessageTypesRightCheckBox1_2", "CombatConfigMessageTypesRightCheckBox1_3", "CombatConfigMessageTypesRightCheckBox1_4", "CombatConfigMessageTypesRightCheckBox1_5", "CombatConfigMessageTypesRightCheckBox1_6", "CombatConfigMessageTypesRightCheckBox1_7", "CombatConfigMessageTypesRightCheckBox1_8", "CombatConfigMessageTypesRightCheckBox1_9", "CombatConfigMessageTypesRightCheckBox1_10", "CombatConfigMessageTypesRightCheckBox2", "CombatConfigMessageTypesRightCheckBox2_1", "CombatConfigMessageTypesRightCheckBox2_2", "CombatConfigMessageTypesRightCheckBox2_3", "CombatConfigMessageTypesMiscCheckBox1", "CombatConfigMessageTypesMiscCheckBox2", "CombatConfigMessageTypesMiscCheckBox3", "CombatConfigMessageTypesMiscCheckBox4", "CombatConfigColorsUnitColorsSwatch1", "CombatConfigColorsUnitColorsSwatch1ColorSwatch", "CombatConfigColorsUnitColorsSwatch2", "CombatConfigColorsUnitColorsSwatch2ColorSwatch", "CombatConfigColorsUnitColorsSwatch3", "CombatConfigColorsUnitColorsSwatch3ColorSwatch", "CombatConfigColorsUnitColorsSwatch4", "CombatConfigColorsUnitColorsSwatch4ColorSwatch", "CombatConfigColorsUnitColorsSwatch5", "CombatConfigColorsUnitColorsSwatch5ColorSwatch", "CombatConfigColorsUnitColorsSwatch6", "CombatConfigColorsUnitColorsSwatch6ColorSwatch", "CombatConfigColorsUnitColorsSwatch7", "CombatConfigColorsUnitColorsSwatch7ColorSwatch", "PlayerTitlePickerScrollFrameButton8", "BuffButton1", "BuffButton2", "RaidFrameRaidBrowserButton", "RaidFrameReadyCheckButton", "RaidClassButton13", "RaidClassButton12", "RaidClassButton11", "RaidClassButton10", "RaidClassButton9", "RaidClassButton8", "RaidClassButton7", "RaidClassButton6", "RaidClassButton5", "RaidClassButton4", "RaidClassButton3", "RaidClassButton2", "RaidClassButton1", "RaidGroup1", "RaidGroup1Label", "RaidGroup1Slot1", "RaidGroup1Slot2", "RaidGroup1Slot3", "RaidGroup1Slot4", "RaidGroup1Slot5", "RaidGroup2", "RaidGroup2Label", "RaidGroup2Slot1", "RaidGroup2Slot2", "RaidGroup2Slot3", "RaidGroup2Slot4", "RaidGroup2Slot5", "RaidGroup3", "RaidGroup3Label", "RaidGroup3Slot1", "RaidGroup3Slot2", "RaidGroup3Slot3", "RaidGroup3Slot4", "RaidGroup3Slot5", "RaidGroup4", "RaidGroup4Label", "RaidGroup4Slot1", "RaidGroup4Slot2", "RaidGroup4Slot3", "RaidGroup4Slot4", "RaidGroup4Slot5", "RaidGroup5", "RaidGroup5Label", "RaidGroup5Slot1", "RaidGroup5Slot2", "RaidGroup5Slot3", "RaidGroup5Slot4", "RaidGroup5Slot5", "RaidGroup6", "RaidGroup6Label", "RaidGroup6Slot1", "RaidGroup6Slot2", "RaidGroup6Slot3", "RaidGroup6Slot4", "RaidGroup6Slot5", "RaidGroup7", "RaidGroup7Label", "RaidGroup7Slot1", "RaidGroup7Slot2", "RaidGroup7Slot3", "RaidGroup7Slot4", "RaidGroup7Slot5", "RaidGroup8", "RaidGroup8Label", "RaidGroup8Slot1", "RaidGroup8Slot2", "RaidGroup8Slot3", "RaidGroup8Slot4", "RaidGroup8Slot5", "RaidGroupButton1", "RaidGroupButton1Rank", "RaidGroupButton1Role", "RaidGroupButton1Loot", "RaidGroupButton1ReadyCheck", "RaidGroupButton2", "RaidGroupButton2Rank", "RaidGroupButton2Role", "RaidGroupButton2Loot", "RaidGroupButton2ReadyCheck", "RaidGroupButton3", "RaidGroupButton3Rank", "RaidGroupButton3Role", "RaidGroupButton3Loot", "RaidGroupButton3ReadyCheck", "RaidGroupButton4", "RaidGroupButton4Rank", "RaidGroupButton4Role", "RaidGroupButton4Loot", "RaidGroupButton4ReadyCheck", "RaidGroupButton5", "RaidGroupButton5Rank", "RaidGroupButton5Role", "RaidGroupButton5Loot", "RaidGroupButton5ReadyCheck", "RaidGroupButton6", "RaidGroupButton6Rank", "RaidGroupButton6Role", "RaidGroupButton6Loot", "RaidGroupButton6ReadyCheck", "RaidGroupButton7", "RaidGroupButton7Rank", "RaidGroupButton7Role", "RaidGroupButton7Loot", "RaidGroupButton7ReadyCheck", "RaidGroupButton8", "RaidGroupButton8Rank", "RaidGroupButton8Role", "RaidGroupButton8Loot", "RaidGroupButton8ReadyCheck", "RaidGroupButton9", "RaidGroupButton9Rank", "RaidGroupButton9Role", "RaidGroupButton9Loot", "RaidGroupButton9ReadyCheck", "RaidGroupButton10", "RaidGroupButton10Rank", "RaidGroupButton10Role", "RaidGroupButton10Loot", "RaidGroupButton10ReadyCheck", "RaidGroupButton11", "RaidGroupButton11Rank", "RaidGroupButton11Role", "RaidGroupButton11Loot", "RaidGroupButton11ReadyCheck", "RaidGroupButton12", "RaidGroupButton12Rank", "RaidGroupButton12Role", "RaidGroupButton12Loot", "RaidGroupButton12ReadyCheck", "RaidGroupButton13", "RaidGroupButton13Rank", "RaidGroupButton13Role", "RaidGroupButton13Loot", "RaidGroupButton13ReadyCheck", "RaidGroupButton14", "RaidGroupButton14Rank", "RaidGroupButton14Role", "RaidGroupButton14Loot", "RaidGroupButton14ReadyCheck", "RaidGroupButton15", "RaidGroupButton15Rank", "RaidGroupButton15Role", "RaidGroupButton15Loot", "RaidGroupButton15ReadyCheck", "RaidGroupButton16", "RaidGroupButton16Rank", "RaidGroupButton16Role", "RaidGroupButton16Loot", "RaidGroupButton16ReadyCheck", "RaidGroupButton17", "RaidGroupButton17Rank", "RaidGroupButton17Role", "RaidGroupButton17Loot", "RaidGroupButton17ReadyCheck", "RaidGroupButton18", "RaidGroupButton18Rank", "RaidGroupButton18Role", "RaidGroupButton18Loot", "RaidGroupButton18ReadyCheck", "RaidGroupButton19", "RaidGroupButton19Rank", "RaidGroupButton19Role", "RaidGroupButton19Loot", "RaidGroupButton19ReadyCheck", "RaidGroupButton20", "RaidGroupButton20Rank", "RaidGroupButton20Role", "RaidGroupButton20Loot", "RaidGroupButton20ReadyCheck", "RaidGroupButton21", "RaidGroupButton21Rank", "RaidGroupButton21Role", "RaidGroupButton21Loot", "RaidGroupButton21ReadyCheck", "RaidGroupButton22", "RaidGroupButton22Rank", "RaidGroupButton22Role", "RaidGroupButton22Loot", "RaidGroupButton22ReadyCheck", "RaidGroupButton23", "RaidGroupButton23Rank", "RaidGroupButton23Role", "RaidGroupButton23Loot", "RaidGroupButton23ReadyCheck", "RaidGroupButton24", "RaidGroupButton24Rank", "RaidGroupButton24Role", "RaidGroupButton24Loot", "RaidGroupButton24ReadyCheck", "RaidGroupButton25", "RaidGroupButton25Rank", "RaidGroupButton25Role", "RaidGroupButton25Loot", "RaidGroupButton25ReadyCheck", "RaidGroupButton26", "RaidGroupButton26Rank", "RaidGroupButton26Role", "RaidGroupButton26Loot", "RaidGroupButton26ReadyCheck", "RaidGroupButton27", "RaidGroupButton27Rank", "RaidGroupButton27Role", "RaidGroupButton27Loot", "RaidGroupButton27ReadyCheck", "RaidGroupButton28", "RaidGroupButton28Rank", "RaidGroupButton28Role", "RaidGroupButton28Loot", "RaidGroupButton28ReadyCheck", "RaidGroupButton29", "RaidGroupButton29Rank", "RaidGroupButton29Role", "RaidGroupButton29Loot", "RaidGroupButton29ReadyCheck", "RaidGroupButton30", "RaidGroupButton30Rank", "RaidGroupButton30Role", "RaidGroupButton30Loot", "RaidGroupButton30ReadyCheck", "RaidGroupButton31", "RaidGroupButton31Rank", "RaidGroupButton31Role", "RaidGroupButton31Loot", "RaidGroupButton31ReadyCheck", "RaidGroupButton32", "RaidGroupButton32Rank", "RaidGroupButton32Role", "RaidGroupButton32Loot", "RaidGroupButton32ReadyCheck", "RaidGroupButton33", "RaidGroupButton33Rank", "RaidGroupButton33Role", "RaidGroupButton33Loot", "RaidGroupButton33ReadyCheck", "RaidGroupButton34", "RaidGroupButton34Rank", "RaidGroupButton34Role", "RaidGroupButton34Loot", "RaidGroupButton34ReadyCheck", "RaidGroupButton35", "RaidGroupButton35Rank", "RaidGroupButton35Role", "RaidGroupButton35Loot", "RaidGroupButton35ReadyCheck", "RaidGroupButton36", "RaidGroupButton36Rank", "RaidGroupButton36Role", "RaidGroupButton36Loot", "RaidGroupButton36ReadyCheck", "RaidGroupButton37", "RaidGroupButton37Rank", "RaidGroupButton37Role", "RaidGroupButton37Loot", "RaidGroupButton37ReadyCheck", "RaidGroupButton38", "RaidGroupButton38Rank", "RaidGroupButton38Role", "RaidGroupButton38Loot", "RaidGroupButton38ReadyCheck", "RaidGroupButton39", "RaidGroupButton39Rank", "RaidGroupButton39Role", "RaidGroupButton39Loot", "RaidGroupButton39ReadyCheck", "RaidGroupButton40", "RaidGroupButton40Rank", "RaidGroupButton40Role", "RaidGroupButton40Loot", "RaidGroupButton40ReadyCheck", -- widgets: FrameXML, Blizzard_CombatLog, Blizzard_CombatText, Blizzard_RaidUI, Blizzard_TimeManager, Blizzard_TokenUI "AchievementCriteriaFont", "AchievementDateFont", "AchievementDescriptionFont", "AchievementFont_Small", "AchievementPointsFont", "AchievementPointsFontSmall", "ActionButton10Border", "ActionButton10Count", "ActionButton10Flash", "ActionButton10HotKey", "ActionButton10Icon", "ActionButton10Name", "ActionButton10NormalTexture", "ActionButton11Border", "ActionButton11Count", "ActionButton11Flash", "ActionButton11HotKey", "ActionButton11Icon", "ActionButton11Name", "ActionButton11NormalTexture", "ActionButton12Border", "ActionButton12Count", "ActionButton12Flash", "ActionButton12HotKey", "ActionButton12Icon", "ActionButton12Name", "ActionButton12NormalTexture", "ActionButton1Border", "ActionButton1Count", "ActionButton1Flash", "ActionButton1HotKey", "ActionButton1Icon", "ActionButton1Name", "ActionButton1NormalTexture", "ActionButton2Border", "ActionButton2Count", "ActionButton2Flash", "ActionButton2HotKey", "ActionButton2Icon", "ActionButton2Name", "ActionButton2NormalTexture", "ActionButton3Border", "ActionButton3Count", "ActionButton3Flash", "ActionButton3HotKey", "ActionButton3Icon", "ActionButton3Name", "ActionButton3NormalTexture", "ActionButton4Border", "ActionButton4Count", "ActionButton4Flash", "ActionButton4HotKey", "ActionButton4Icon", "ActionButton4Name", "ActionButton4NormalTexture", "ActionButton5Border", "ActionButton5Count", "ActionButton5Flash", "ActionButton5HotKey", "ActionButton5Icon", "ActionButton5Name", "ActionButton5NormalTexture", "ActionButton6Border", "ActionButton6Count", "ActionButton6Flash", "ActionButton6HotKey", "ActionButton6Icon", "ActionButton6Name", "ActionButton6NormalTexture", "ActionButton7Border", "ActionButton7Count", "ActionButton7Flash", "ActionButton7HotKey", "ActionButton7Icon", "ActionButton7Name", "ActionButton7NormalTexture", "ActionButton8Border", "ActionButton8Count", "ActionButton8Flash", "ActionButton8HotKey", "ActionButton8Icon", "ActionButton8Name", "ActionButton8NormalTexture", "ActionButton9Border", "ActionButton9Count", "ActionButton9Flash", "ActionButton9HotKey", "ActionButton9Icon", "ActionButton9Name", "ActionButton9NormalTexture", "ActionStatusText", "AddFriendEntryFrameAcceptButtonLeft", "AddFriendEntryFrameAcceptButtonMiddle", "AddFriendEntryFrameAcceptButtonRight", "AddFriendEntryFrameAcceptButtonText", "AddFriendEntryFrameCancelButtonLeft", "AddFriendEntryFrameCancelButtonMiddle", "AddFriendEntryFrameCancelButtonRight", "AddFriendEntryFrameCancelButtonText", "AddFriendEntryFrameInfoButtonTexture", "AddFriendEntryFrameLeftDescription", "AddFriendEntryFrameLeftFriend", "AddFriendEntryFrameLeftIcon", "AddFriendEntryFrameLeftTitle", "AddFriendEntryFrameOrLabel", "AddFriendEntryFrameRightDescription", "AddFriendEntryFrameRightFriend", "AddFriendEntryFrameRightIcon", "AddFriendEntryFrameRightTitle", "AddFriendEntryFrameTopTitle", "AddFriendInfoFrameContinueButtonLeft", "AddFriendInfoFrameContinueButtonMiddle", "AddFriendInfoFrameContinueButtonRight", "AddFriendInfoFrameContinueButtonText", "AddFriendInfoFrameFactionIcon", "AddFriendInfoFrameLeftFriend", "AddFriendInfoFrameLeftTitle", "AddFriendInfoFrameRightFriend", "AddFriendInfoFrameRightTitle", "AddFriendNameEditBoxFill", "AddFriendNameEditBoxLeft", "AddFriendNameEditBoxMiddle", "AddFriendNameEditBoxRight", "AddFriendNoteEditBoxFill", "AddFriendNoteFrameBottom", "AddFriendNoteFrameBottomLeft", "AddFriendNoteFrameBottomRight", "AddFriendNoteFrameLeft", "AddFriendNoteFrameMiddle", "AddFriendNoteFrameRight", "AddFriendNoteFrameScrollFrameScrollBarThumbTexture", "AddFriendNoteFrameTop", "AddFriendNoteFrameTopLeft", "AddFriendNoteFrameTopRight", "AnimTimerFrameCountdownAnimGroup", "ArenaFrameCancelButtonText", "ArenaFrameDivider", "ArenaFrameFrameLabel", "ArenaFrameGroupJoinButtonText", "ArenaFrameJoinButtonText", "ArenaFrameNameHeader", "ArenaFrameNameHeader2", "ArenaFramePortrait", "ArenaFrameZoneDescription", "ArenaRegistrarButton1QuestIcon", "ArenaRegistrarButton2QuestIcon", "ArenaRegistrarButton3QuestIcon", "ArenaRegistrarButton4QuestIcon", "ArenaRegistrarButton5QuestIcon", "ArenaRegistrarButton6QuestIcon", "ArenaRegistrarCostLabel", "ArenaRegistrarFrameCancelButtonText", "ArenaRegistrarFrameGoodbyeButtonText", "ArenaRegistrarFrameNpcNameText", "ArenaRegistrarFramePortrait", "ArenaRegistrarFramePurchaseButtonText", "ArenaRegistrarMoneyFrameCopperButtonText", "ArenaRegistrarMoneyFrameGoldButtonText", "ArenaRegistrarMoneyFrameSilverButtonText", "ArenaRegistrarPurchaseText", "ArenaRegistrarText", "ArenaZone1Highlight", "ArenaZone1Status", "ArenaZone1Text", "ArenaZone2Highlight", "ArenaZone2Status", "ArenaZone2Text", "ArenaZone3Highlight", "ArenaZone3Status", "ArenaZone3Text", "ArenaZone4Highlight", "ArenaZone4Status", "ArenaZone4Text", "ArenaZone5Highlight", "ArenaZone5Status", "ArenaZone5Text", "ArenaZone6Highlight", "ArenaZone6Status", "ArenaZone6Text", "AudioOptionsFrameCancelText", "AudioOptionsFrameCategoryFrameBottom", "AudioOptionsFrameCategoryFrameBottomLeft", "AudioOptionsFrameCategoryFrameBottomRight", "AudioOptionsFrameCategoryFrameButton10Text", "AudioOptionsFrameCategoryFrameButton10ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton10ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton10TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton11Text", "AudioOptionsFrameCategoryFrameButton11ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton11ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton11TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton12Text", "AudioOptionsFrameCategoryFrameButton12ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton12ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton12TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton13Text", "AudioOptionsFrameCategoryFrameButton13ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton13ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton13TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton14Text", "AudioOptionsFrameCategoryFrameButton14ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton14ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton14TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton15Text", "AudioOptionsFrameCategoryFrameButton15ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton15ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton15TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton16Text", "AudioOptionsFrameCategoryFrameButton16ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton16ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton16TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton17Text", "AudioOptionsFrameCategoryFrameButton17ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton17ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton17TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton18Text", "AudioOptionsFrameCategoryFrameButton18ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton18ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton18TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton19Text", "AudioOptionsFrameCategoryFrameButton19ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton19ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton19TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton1Text", "AudioOptionsFrameCategoryFrameButton1ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton1ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton1TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton20Text", "AudioOptionsFrameCategoryFrameButton20ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton20ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton20TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton21Text", "AudioOptionsFrameCategoryFrameButton21ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton21ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton21TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton22Text", "AudioOptionsFrameCategoryFrameButton22ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton22ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton22TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton23Text", "AudioOptionsFrameCategoryFrameButton23ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton23ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton23TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton2Text", "AudioOptionsFrameCategoryFrameButton2ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton2ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton2TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton3Text", "AudioOptionsFrameCategoryFrameButton3ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton3ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton3TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton4Text", "AudioOptionsFrameCategoryFrameButton4ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton4ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton4TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton5Text", "AudioOptionsFrameCategoryFrameButton5ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton5ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton5TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton6Text", "AudioOptionsFrameCategoryFrameButton6ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton6ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton6TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton7Text", "AudioOptionsFrameCategoryFrameButton7ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton7ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton7TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton8Text", "AudioOptionsFrameCategoryFrameButton8ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton8ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton8TogglePushedTexture", "AudioOptionsFrameCategoryFrameButton9Text", "AudioOptionsFrameCategoryFrameButton9ToggleHighlightTexture", "AudioOptionsFrameCategoryFrameButton9ToggleNormalTexture", "AudioOptionsFrameCategoryFrameButton9TogglePushedTexture", "AudioOptionsFrameCategoryFrameLeft", "AudioOptionsFrameCategoryFrameListScrollBarThumbTexture", "AudioOptionsFrameCategoryFrameRight", "AudioOptionsFrameCategoryFrameTop", "AudioOptionsFrameCategoryFrameTopLeft", "AudioOptionsFrameCategoryFrameTopRight", "AudioOptionsFrameHeader", "AudioOptionsFrameHeaderText", "AudioOptionsFrameOkayText", "AudioOptionsSoundPanelAmbienceVolumeHigh", "AudioOptionsSoundPanelAmbienceVolumeLabel", "AudioOptionsSoundPanelAmbienceVolumeLow", "AudioOptionsSoundPanelAmbienceVolumeText", "AudioOptionsSoundPanelAmbienceVolumeThumb", "AudioOptionsSoundPanelAmbientSoundsText", "AudioOptionsSoundPanelEmoteSoundsText", "AudioOptionsSoundPanelEnableDSPsText", "AudioOptionsSoundPanelEnableSoundText", "AudioOptionsSoundPanelErrorSpeechText", "AudioOptionsSoundPanelHRTFText", "AudioOptionsSoundPanelHardwareDropDownButtonDisabledTexture", "AudioOptionsSoundPanelHardwareDropDownButtonHighlightTexture", "AudioOptionsSoundPanelHardwareDropDownButtonNormalTexture", "AudioOptionsSoundPanelHardwareDropDownButtonPushedTexture", "AudioOptionsSoundPanelHardwareDropDownLabel", "AudioOptionsSoundPanelHardwareDropDownLeft", "AudioOptionsSoundPanelHardwareDropDownMiddle", "AudioOptionsSoundPanelHardwareDropDownRight", "AudioOptionsSoundPanelHardwareDropDownText", "AudioOptionsSoundPanelHardwareTitle", "AudioOptionsSoundPanelLoopMusicText", "AudioOptionsSoundPanelMasterVolumeHigh", "AudioOptionsSoundPanelMasterVolumeLabel", "AudioOptionsSoundPanelMasterVolumeLow", "AudioOptionsSoundPanelMasterVolumeText", "AudioOptionsSoundPanelMasterVolumeThumb", "AudioOptionsSoundPanelMusicText", "AudioOptionsSoundPanelMusicVolumeHigh", "AudioOptionsSoundPanelMusicVolumeLabel", "AudioOptionsSoundPanelMusicVolumeLow", "AudioOptionsSoundPanelMusicVolumeText", "AudioOptionsSoundPanelMusicVolumeThumb", "AudioOptionsSoundPanelPetSoundsText", "AudioOptionsSoundPanelPlaybackTitle", "AudioOptionsSoundPanelReverbText", "AudioOptionsSoundPanelSoundChannelsHigh", "AudioOptionsSoundPanelSoundChannelsLow", "AudioOptionsSoundPanelSoundChannelsText", "AudioOptionsSoundPanelSoundChannelsThumb", "AudioOptionsSoundPanelSoundEffectsText", "AudioOptionsSoundPanelSoundInBGText", "AudioOptionsSoundPanelSoundQualityHigh", "AudioOptionsSoundPanelSoundQualityLow", "AudioOptionsSoundPanelSoundQualityText", "AudioOptionsSoundPanelSoundQualityThumb", "AudioOptionsSoundPanelSoundVolumeHigh", "AudioOptionsSoundPanelSoundVolumeLabel", "AudioOptionsSoundPanelSoundVolumeLow", "AudioOptionsSoundPanelSoundVolumeText", "AudioOptionsSoundPanelSoundVolumeThumb", "AudioOptionsSoundPanelSubText", "AudioOptionsSoundPanelTitle", "AudioOptionsSoundPanelUseHardwareText", "AudioOptionsSoundPanelVolumeTitle", "AudioOptionsVoicePanelAmbienceFadeHigh", "AudioOptionsVoicePanelAmbienceFadeLabel", "AudioOptionsVoicePanelAmbienceFadeLow", "AudioOptionsVoicePanelAmbienceFadeText", "AudioOptionsVoicePanelAmbienceFadeThumb", "AudioOptionsVoicePanelAudioDescription", "AudioOptionsVoicePanelAudioLabel", "AudioOptionsVoicePanelAudioNormal", "AudioOptionsVoicePanelAudioOff", "AudioOptionsVoicePanelBindingOutputText", "AudioOptionsVoicePanelBindingOutputTextConflict", "AudioOptionsVoicePanelBindingTitle", "AudioOptionsVoicePanelChatMode1KeyBindingButtonHiddenText", "AudioOptionsVoicePanelChatMode1KeyBindingButtonText", "AudioOptionsVoicePanelChatMode1Label", "AudioOptionsVoicePanelChatModeDropDownButtonDisabledTexture", "AudioOptionsVoicePanelChatModeDropDownButtonHighlightTexture", "AudioOptionsVoicePanelChatModeDropDownButtonNormalTexture", "AudioOptionsVoicePanelChatModeDropDownButtonPushedTexture", "AudioOptionsVoicePanelChatModeDropDownLabel", "AudioOptionsVoicePanelChatModeDropDownLeft", "AudioOptionsVoicePanelChatModeDropDownMiddle", "AudioOptionsVoicePanelChatModeDropDownRight", "AudioOptionsVoicePanelChatModeDropDownText", "AudioOptionsVoicePanelDisabledMessageText", "AudioOptionsVoicePanelEnableMicrophoneText", "AudioOptionsVoicePanelEnableVoiceText", "AudioOptionsVoicePanelInputDeviceDropDownButtonDisabledTexture", "AudioOptionsVoicePanelInputDeviceDropDownButtonHighlightTexture", "AudioOptionsVoicePanelInputDeviceDropDownButtonNormalTexture", "AudioOptionsVoicePanelInputDeviceDropDownButtonPushedTexture", "AudioOptionsVoicePanelInputDeviceDropDownLeft", "AudioOptionsVoicePanelInputDeviceDropDownMiddle", "AudioOptionsVoicePanelInputDeviceDropDownRight", "AudioOptionsVoicePanelInputDeviceDropDownText", "AudioOptionsVoicePanelListeningTitle", "AudioOptionsVoicePanelMicTestText", "AudioOptionsVoicePanelMicTestTitle", "AudioOptionsVoicePanelMicrophoneVolumeHigh", "AudioOptionsVoicePanelMicrophoneVolumeLabel", "AudioOptionsVoicePanelMicrophoneVolumeLow", "AudioOptionsVoicePanelMicrophoneVolumeText", "AudioOptionsVoicePanelMicrophoneVolumeThumb", "AudioOptionsVoicePanelMusicFadeHigh", "AudioOptionsVoicePanelMusicFadeLabel", "AudioOptionsVoicePanelMusicFadeLow", "AudioOptionsVoicePanelMusicFadeText", "AudioOptionsVoicePanelMusicFadeThumb", "AudioOptionsVoicePanelOutputDeviceDropDownButtonDisabledTexture", "AudioOptionsVoicePanelOutputDeviceDropDownButtonHighlightTexture", "AudioOptionsVoicePanelOutputDeviceDropDownButtonNormalTexture", "AudioOptionsVoicePanelOutputDeviceDropDownButtonPushedTexture", "AudioOptionsVoicePanelOutputDeviceDropDownLabel", "AudioOptionsVoicePanelOutputDeviceDropDownLeft", "AudioOptionsVoicePanelOutputDeviceDropDownMiddle", "AudioOptionsVoicePanelOutputDeviceDropDownRight", "AudioOptionsVoicePanelOutputDeviceDropDownText", "AudioOptionsVoicePanelPushToTalkSoundText", "AudioOptionsVoicePanelSoundFadeHigh", "AudioOptionsVoicePanelSoundFadeLabel", "AudioOptionsVoicePanelSoundFadeLow", "AudioOptionsVoicePanelSoundFadeText", "AudioOptionsVoicePanelSoundFadeThumb", "AudioOptionsVoicePanelSpeakerVolumeHigh", "AudioOptionsVoicePanelSpeakerVolumeLabel", "AudioOptionsVoicePanelSpeakerVolumeLow", "AudioOptionsVoicePanelSpeakerVolumeText", "AudioOptionsVoicePanelSpeakerVolumeThumb", "AudioOptionsVoicePanelSubText", "AudioOptionsVoicePanelTalkingTitle", "AudioOptionsVoicePanelTitle", "AudioOptionsVoicePanelVoiceActivateSliderHigh", "AudioOptionsVoicePanelVoiceActivateSliderLow", "AudioOptionsVoicePanelVoiceActivateSliderText", "AudioOptionsVoicePanelVoiceActivateSliderThumb", "AutoCompleteButton1Text", "AutoCompleteButton2Text", "AutoCompleteButton3Text", "AutoCompleteButton4Text", "AutoCompleteButton5Text", "AutoCompleteInfoDelayer", "AutoCompleteInstructions", "AutoFollowStatusText", "AvailableQuestsText", "AvailableServicesText", "AzerothButtonHighlight", "BNConversationInviteDialogCancelButtonText", "BNConversationInviteDialogHeader", "BNConversationInviteDialogHeaderText", "BNConversationInviteDialogInstructionText", "BNConversationInviteDialogInviteButtonText", "BNConversationInviteDialogListFriend1Text", "BNConversationInviteDialogListFriend2Text", "BNConversationInviteDialogListFriend3Text", "BNConversationInviteDialogListFriend4Text", "BNConversationInviteDialogListFriend5Text", "BNConversationInviteDialogListFriend6Text", "BNConversationInviteDialogListFriend7Text", "BNConversationInviteDialogListScrollFrameScrollBarThumbTexture", "BNToastFrameAnimIn", "BNToastFrameBottomLine", "BNToastFrameDoubleLine", "BNToastFrameGlowFrameGlow", "BNToastFrameGlowFrameGlowAnimIn", "BNToastFrameIconTexture", "BNToastFrameTopLine", "BNToastFrameWaitAndAnimOut", "BNetReportFrameCancelButtonLeft", "BNetReportFrameCancelButtonMiddle", "BNetReportFrameCancelButtonRight", "BNetReportFrameCancelButtonText", "BNetReportFrameCommentBottom", "BNetReportFrameCommentBottomLeft", "BNetReportFrameCommentBottomRight", "BNetReportFrameCommentBoxFill", "BNetReportFrameCommentLeft", "BNetReportFrameCommentMiddle", "BNetReportFrameCommentRight", "BNetReportFrameCommentScrollFrameScrollBarThumbTexture", "BNetReportFrameCommentTop", "BNetReportFrameCommentTopLeft", "BNetReportFrameCommentTopRight", "BNetReportFrameName", "BNetReportFrameReportButtonLeft", "BNetReportFrameReportButtonMiddle", "BNetReportFrameReportButtonRight", "BNetReportFrameReportButtonText", "BNetReportFrameTitle", "BackpackTokenFrameToken1Count", "BackpackTokenFrameToken1Icon", "BackpackTokenFrameToken2Count", "BackpackTokenFrameToken2Icon", "BackpackTokenFrameToken3Count", "BackpackTokenFrameToken3Icon", "BankFrameBag1Count", "BankFrameBag1HighlightFrameTexture", "BankFrameBag1IconTexture", "BankFrameBag1NormalTexture", "BankFrameBag1Stock", "BankFrameBag2Count", "BankFrameBag2HighlightFrameTexture", "BankFrameBag2IconTexture", "BankFrameBag2NormalTexture", "BankFrameBag2Stock", "BankFrameBag3Count", "BankFrameBag3HighlightFrameTexture", "BankFrameBag3IconTexture", "BankFrameBag3NormalTexture", "BankFrameBag3Stock", "BankFrameBag4Count", "BankFrameBag4HighlightFrameTexture", "BankFrameBag4IconTexture", "BankFrameBag4NormalTexture", "BankFrameBag4Stock", "BankFrameBag5Count", "BankFrameBag5HighlightFrameTexture", "BankFrameBag5IconTexture", "BankFrameBag5NormalTexture", "BankFrameBag5Stock", "BankFrameBag6Count", "BankFrameBag6HighlightFrameTexture", "BankFrameBag6IconTexture", "BankFrameBag6NormalTexture", "BankFrameBag6Stock", "BankFrameBag7Count", "BankFrameBag7HighlightFrameTexture", "BankFrameBag7IconTexture", "BankFrameBag7NormalTexture", "BankFrameBag7Stock", "BankFrameDetailMoneyFrameCopperButtonText", "BankFrameDetailMoneyFrameGoldButtonText", "BankFrameDetailMoneyFrameSilverButtonText", "BankFrameItem10Count", "BankFrameItem10IconQuestTexture", "BankFrameItem10IconTexture", "BankFrameItem10NormalTexture", "BankFrameItem10Stock", "BankFrameItem11Count", "BankFrameItem11IconQuestTexture", "BankFrameItem11IconTexture", "BankFrameItem11NormalTexture", "BankFrameItem11Stock", "BankFrameItem12Count", "BankFrameItem12IconQuestTexture", "BankFrameItem12IconTexture", "BankFrameItem12NormalTexture", "BankFrameItem12Stock", "BankFrameItem13Count", "BankFrameItem13IconQuestTexture", "BankFrameItem13IconTexture", "BankFrameItem13NormalTexture", "BankFrameItem13Stock", "BankFrameItem14Count", "BankFrameItem14IconQuestTexture", "BankFrameItem14IconTexture", "BankFrameItem14NormalTexture", "BankFrameItem14Stock", "BankFrameItem15Count", "BankFrameItem15IconQuestTexture", "BankFrameItem15IconTexture", "BankFrameItem15NormalTexture", "BankFrameItem15Stock", "BankFrameItem16Count", "BankFrameItem16IconQuestTexture", "BankFrameItem16IconTexture", "BankFrameItem16NormalTexture", "BankFrameItem16Stock", "BankFrameItem17Count", "BankFrameItem17IconQuestTexture", "BankFrameItem17IconTexture", "BankFrameItem17NormalTexture", "BankFrameItem17Stock", "BankFrameItem18Count", "BankFrameItem18IconQuestTexture", "BankFrameItem18IconTexture", "BankFrameItem18NormalTexture", "BankFrameItem18Stock", "BankFrameItem19Count", "BankFrameItem19IconQuestTexture", "BankFrameItem19IconTexture", "BankFrameItem19NormalTexture", "BankFrameItem19Stock", "BankFrameItem1Count", "BankFrameItem1IconQuestTexture", "BankFrameItem1IconTexture", "BankFrameItem1NormalTexture", "BankFrameItem1Stock", "BankFrameItem20Count", "BankFrameItem20IconQuestTexture", "BankFrameItem20IconTexture", "BankFrameItem20NormalTexture", "BankFrameItem20Stock", "BankFrameItem21Count", "BankFrameItem21IconQuestTexture", "BankFrameItem21IconTexture", "BankFrameItem21NormalTexture", "BankFrameItem21Stock", "BankFrameItem22Count", "BankFrameItem22IconQuestTexture", "BankFrameItem22IconTexture", "BankFrameItem22NormalTexture", "BankFrameItem22Stock", "BankFrameItem23Count", "BankFrameItem23IconQuestTexture", "BankFrameItem23IconTexture", "BankFrameItem23NormalTexture", "BankFrameItem23Stock", "BankFrameItem24Count", "BankFrameItem24IconQuestTexture", "BankFrameItem24IconTexture", "BankFrameItem24NormalTexture", "BankFrameItem24Stock", "BankFrameItem25Count", "BankFrameItem25IconQuestTexture", "BankFrameItem25IconTexture", "BankFrameItem25NormalTexture", "BankFrameItem25Stock", "BankFrameItem26Count", "BankFrameItem26IconQuestTexture", "BankFrameItem26IconTexture", "BankFrameItem26NormalTexture", "BankFrameItem26Stock", "BankFrameItem27Count", "BankFrameItem27IconQuestTexture", "BankFrameItem27IconTexture", "BankFrameItem27NormalTexture", "BankFrameItem27Stock", "BankFrameItem28Count", "BankFrameItem28IconQuestTexture", "BankFrameItem28IconTexture", "BankFrameItem28NormalTexture", "BankFrameItem28Stock", "BankFrameItem2Count", "BankFrameItem2IconQuestTexture", "BankFrameItem2IconTexture", "BankFrameItem2NormalTexture", "BankFrameItem2Stock", "BankFrameItem3Count", "BankFrameItem3IconQuestTexture", "BankFrameItem3IconTexture", "BankFrameItem3NormalTexture", "BankFrameItem3Stock", "BankFrameItem4Count", "BankFrameItem4IconQuestTexture", "BankFrameItem4IconTexture", "BankFrameItem4NormalTexture", "BankFrameItem4Stock", "BankFrameItem5Count", "BankFrameItem5IconQuestTexture", "BankFrameItem5IconTexture", "BankFrameItem5NormalTexture", "BankFrameItem5Stock", "BankFrameItem6Count", "BankFrameItem6IconQuestTexture", "BankFrameItem6IconTexture", "BankFrameItem6NormalTexture", "BankFrameItem6Stock", "BankFrameItem7Count", "BankFrameItem7IconQuestTexture", "BankFrameItem7IconTexture", "BankFrameItem7NormalTexture", "BankFrameItem7Stock", "BankFrameItem8Count", "BankFrameItem8IconQuestTexture", "BankFrameItem8IconTexture", "BankFrameItem8NormalTexture", "BankFrameItem8Stock", "BankFrameItem9Count", "BankFrameItem9IconQuestTexture", "BankFrameItem9IconTexture", "BankFrameItem9NormalTexture", "BankFrameItem9Stock", "BankFrameMoneyFrameCopperButtonText", "BankFrameMoneyFrameGoldButtonText", "BankFrameMoneyFrameSilverButtonText", "BankFramePurchaseButtonText", "BankFrameSlotCost", "BankFrameTitleText", "BankPortraitTexture", "BasicScriptErrorsText", "BattlefieldFrameCancelButtonText", "BattlefieldFrameFrameLabel", "BattlefieldFrameGroupJoinButtonText", "BattlefieldFrameInfoScrollFrameChildFrameDescription", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoDescription", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossRewardArenaAmount", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossRewardArenaSymbol", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossRewardHonorAmount", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossRewardHonorSymbol", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoLossRewardLabel", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoRewardsLabel", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoTitle", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinRewardArenaAmount", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinRewardArenaSymbol", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinRewardHonorAmount", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinRewardHonorSymbol", "BattlefieldFrameInfoScrollFrameChildFrameRewardsInfoWinRewardLabel", "BattlefieldFrameInfoScrollFrameScrollBarThumbTexture", "BattlefieldFrameJoinButtonText", "BattlefieldFrameNameHeader", "BattlefieldFramePortrait", "BattlefieldIconText", "BattlefieldListScrollFrameScrollBarThumbTexture", "BattlefieldZone1Highlight", "BattlefieldZone1Text", "BattlefieldZone2Highlight", "BattlefieldZone2Text", "BattlefieldZone3Highlight", "BattlefieldZone3Text", "BattlefieldZone4Highlight", "BattlefieldZone4Text", "BattlefieldZone5Highlight", "BattlefieldZone5Text", "BattlegroundShine", "BattlegroundType1Highlight", "BattlegroundType1Text", "BattlegroundType2Highlight", "BattlegroundType2Text", "BattlegroundType3Highlight", "BattlegroundType3Text", "BattlegroundType4Highlight", "BattlegroundType4Text", "BattlegroundType5Highlight", "BattlegroundType5Text", "BlackoutWorld", "BonusActionBarTexture0", "BonusActionBarTexture1", "BonusActionButton10Border", "BonusActionButton10Count", "BonusActionButton10Flash", "BonusActionButton10HotKey", "BonusActionButton10Icon", "BonusActionButton10Name", "BonusActionButton10NormalTexture", "BonusActionButton11Border", "BonusActionButton11Count", "BonusActionButton11Flash", "BonusActionButton11HotKey", "BonusActionButton11Icon", "BonusActionButton11Name", "BonusActionButton11NormalTexture", "BonusActionButton12Border", "BonusActionButton12Count", "BonusActionButton12Flash", "BonusActionButton12HotKey", "BonusActionButton12Icon", "BonusActionButton12Name", "BonusActionButton12NormalTexture", "BonusActionButton1Border", "BonusActionButton1Count", "BonusActionButton1Flash", "BonusActionButton1HotKey", "BonusActionButton1Icon", "BonusActionButton1Name", "BonusActionButton1NormalTexture", "BonusActionButton2Border", "BonusActionButton2Count", "BonusActionButton2Flash", "BonusActionButton2HotKey", "BonusActionButton2Icon", "BonusActionButton2Name", "BonusActionButton2NormalTexture", "BonusActionButton3Border", "BonusActionButton3Count", "BonusActionButton3Flash", "BonusActionButton3HotKey", "BonusActionButton3Icon", "BonusActionButton3Name", "BonusActionButton3NormalTexture", "BonusActionButton4Border", "BonusActionButton4Count", "BonusActionButton4Flash", "BonusActionButton4HotKey", "BonusActionButton4Icon", "BonusActionButton4Name", "BonusActionButton4NormalTexture", "BonusActionButton5Border", "BonusActionButton5Count", "BonusActionButton5Flash", "BonusActionButton5HotKey", "BonusActionButton5Icon", "BonusActionButton5Name", "BonusActionButton5NormalTexture", "BonusActionButton6Border", "BonusActionButton6Count", "BonusActionButton6Flash", "BonusActionButton6HotKey", "BonusActionButton6Icon", "BonusActionButton6Name", "BonusActionButton6NormalTexture", "BonusActionButton7Border", "BonusActionButton7Count", "BonusActionButton7Flash", "BonusActionButton7HotKey", "BonusActionButton7Icon", "BonusActionButton7Name", "BonusActionButton7NormalTexture", "BonusActionButton8Border", "BonusActionButton8Count", "BonusActionButton8Flash", "BonusActionButton8HotKey", "BonusActionButton8Icon", "BonusActionButton8Name", "BonusActionButton8NormalTexture", "BonusActionButton9Border", "BonusActionButton9Count", "BonusActionButton9Flash", "BonusActionButton9HotKey", "BonusActionButton9Icon", "BonusActionButton9Name", "BonusActionButton9NormalTexture", "Boss1TargetFrameBackground", "Boss1TargetFrameDropDownButtonDisabledTexture", "Boss1TargetFrameDropDownButtonHighlightTexture", "Boss1TargetFrameDropDownButtonNormalTexture", "Boss1TargetFrameDropDownButtonPushedTexture", "Boss1TargetFrameDropDownLeft", "Boss1TargetFrameDropDownMiddle", "Boss1TargetFrameDropDownRight", "Boss1TargetFrameDropDownText", "Boss1TargetFrameFlash", "Boss1TargetFrameNameBackground", "Boss1TargetFrameNumericalThreatBG", "Boss1TargetFrameNumericalThreatValue", "Boss1TargetFramePortrait", "Boss1TargetFrameTextureFrameDeadText", "Boss1TargetFrameTextureFrameHealthBarText", "Boss1TargetFrameTextureFrameHighLevelTexture", "Boss1TargetFrameTextureFrameLeaderIcon", "Boss1TargetFrameTextureFrameLevelText", "Boss1TargetFrameTextureFrameManaBarText", "Boss1TargetFrameTextureFrameName", "Boss1TargetFrameTextureFramePVPIcon", "Boss1TargetFrameTextureFrameRaidTargetIcon", "Boss1TargetFrameTextureFrameTexture", "Boss2TargetFrameBackground", "Boss2TargetFrameDropDownButtonDisabledTexture", "Boss2TargetFrameDropDownButtonHighlightTexture", "Boss2TargetFrameDropDownButtonNormalTexture", "Boss2TargetFrameDropDownButtonPushedTexture", "Boss2TargetFrameDropDownLeft", "Boss2TargetFrameDropDownMiddle", "Boss2TargetFrameDropDownRight", "Boss2TargetFrameDropDownText", "Boss2TargetFrameFlash", "Boss2TargetFrameNameBackground", "Boss2TargetFrameNumericalThreatBG", "Boss2TargetFrameNumericalThreatValue", "Boss2TargetFramePortrait", "Boss2TargetFrameTextureFrameDeadText", "Boss2TargetFrameTextureFrameHealthBarText", "Boss2TargetFrameTextureFrameHighLevelTexture", "Boss2TargetFrameTextureFrameLeaderIcon", "Boss2TargetFrameTextureFrameLevelText", "Boss2TargetFrameTextureFrameManaBarText", "Boss2TargetFrameTextureFrameName", "Boss2TargetFrameTextureFramePVPIcon", "Boss2TargetFrameTextureFrameRaidTargetIcon", "Boss2TargetFrameTextureFrameTexture", "Boss3TargetFrameBackground", "Boss3TargetFrameDropDownButtonDisabledTexture", "Boss3TargetFrameDropDownButtonHighlightTexture", "Boss3TargetFrameDropDownButtonNormalTexture", "Boss3TargetFrameDropDownButtonPushedTexture", "Boss3TargetFrameDropDownLeft", "Boss3TargetFrameDropDownMiddle", "Boss3TargetFrameDropDownRight", "Boss3TargetFrameDropDownText", "Boss3TargetFrameFlash", "Boss3TargetFrameNameBackground", "Boss3TargetFrameNumericalThreatBG", "Boss3TargetFrameNumericalThreatValue", "Boss3TargetFramePortrait", "Boss3TargetFrameTextureFrameDeadText", "Boss3TargetFrameTextureFrameHealthBarText", "Boss3TargetFrameTextureFrameHighLevelTexture", "Boss3TargetFrameTextureFrameLeaderIcon", "Boss3TargetFrameTextureFrameLevelText", "Boss3TargetFrameTextureFrameManaBarText", "Boss3TargetFrameTextureFrameName", "Boss3TargetFrameTextureFramePVPIcon", "Boss3TargetFrameTextureFrameRaidTargetIcon", "Boss3TargetFrameTextureFrameTexture", "Boss4TargetFrameBackground", "Boss4TargetFrameDropDownButtonDisabledTexture", "Boss4TargetFrameDropDownButtonHighlightTexture", "Boss4TargetFrameDropDownButtonNormalTexture", "Boss4TargetFrameDropDownButtonPushedTexture", "Boss4TargetFrameDropDownLeft", "Boss4TargetFrameDropDownMiddle", "Boss4TargetFrameDropDownRight", "Boss4TargetFrameDropDownText", "Boss4TargetFrameFlash", "Boss4TargetFrameNameBackground", "Boss4TargetFrameNumericalThreatBG", "Boss4TargetFrameNumericalThreatValue", "Boss4TargetFramePortrait", "Boss4TargetFrameTextureFrameDeadText", "Boss4TargetFrameTextureFrameHealthBarText", "Boss4TargetFrameTextureFrameHighLevelTexture", "Boss4TargetFrameTextureFrameLeaderIcon", "Boss4TargetFrameTextureFrameLevelText", "Boss4TargetFrameTextureFrameManaBarText", "Boss4TargetFrameTextureFrameName", "Boss4TargetFrameTextureFramePVPIcon", "Boss4TargetFrameTextureFrameRaidTargetIcon", "Boss4TargetFrameTextureFrameTexture", "BossEmoteNormalHuge", "BuffButton1Count", "BuffButton1Duration", "BuffButton1Icon", "BuffButton2Count", "BuffButton2Duration", "BuffButton2Icon", "BuybackFrameBotLeft", "BuybackFrameBotRight", "BuybackFrameTopLeft", "BuybackFrameTopRight", "CastingBarFrameBorder", "CastingBarFrameBorderShield", "CastingBarFrameFlash", "CastingBarFrameIcon", "CastingBarFrameSpark", "CastingBarFrameText", "ChannelButton10Collapsed", "ChannelButton10NormalTexture", "ChannelButton10SpeakerFrameFlash", "ChannelButton10SpeakerFrameMuted", "ChannelButton10SpeakerFrameOn", "ChannelButton10Text", "ChannelButton11Collapsed", "ChannelButton11NormalTexture", "ChannelButton11SpeakerFrameFlash", "ChannelButton11SpeakerFrameMuted", "ChannelButton11SpeakerFrameOn", "ChannelButton11Text", "ChannelButton12Collapsed", "ChannelButton12NormalTexture", "ChannelButton12SpeakerFrameFlash", "ChannelButton12SpeakerFrameMuted", "ChannelButton12SpeakerFrameOn", "ChannelButton12Text", "ChannelButton13Collapsed", "ChannelButton13NormalTexture", "ChannelButton13SpeakerFrameFlash", "ChannelButton13SpeakerFrameMuted", "ChannelButton13SpeakerFrameOn", "ChannelButton13Text", "ChannelButton14Collapsed", "ChannelButton14NormalTexture", "ChannelButton14SpeakerFrameFlash", "ChannelButton14SpeakerFrameMuted", "ChannelButton14SpeakerFrameOn", "ChannelButton14Text", "ChannelButton15Collapsed", "ChannelButton15NormalTexture", "ChannelButton15SpeakerFrameFlash", "ChannelButton15SpeakerFrameMuted", "ChannelButton15SpeakerFrameOn", "ChannelButton15Text", "ChannelButton16Collapsed", "ChannelButton16NormalTexture", "ChannelButton16SpeakerFrameFlash", "ChannelButton16SpeakerFrameMuted", "ChannelButton16SpeakerFrameOn", "ChannelButton16Text", "ChannelButton17Collapsed", "ChannelButton17NormalTexture", "ChannelButton17SpeakerFrameFlash", "ChannelButton17SpeakerFrameMuted", "ChannelButton17SpeakerFrameOn", "ChannelButton17Text", "ChannelButton18Collapsed", "ChannelButton18NormalTexture", "ChannelButton18SpeakerFrameFlash", "ChannelButton18SpeakerFrameMuted", "ChannelButton18SpeakerFrameOn", "ChannelButton18Text", "ChannelButton19Collapsed", "ChannelButton19NormalTexture", "ChannelButton19SpeakerFrameFlash", "ChannelButton19SpeakerFrameMuted", "ChannelButton19SpeakerFrameOn", "ChannelButton19Text", "ChannelButton1Collapsed", "ChannelButton1NormalTexture", "ChannelButton1SpeakerFrameFlash", "ChannelButton1SpeakerFrameMuted", "ChannelButton1SpeakerFrameOn", "ChannelButton1Text", "ChannelButton20Collapsed", "ChannelButton20NormalTexture", "ChannelButton20SpeakerFrameFlash", "ChannelButton20SpeakerFrameMuted", "ChannelButton20SpeakerFrameOn", "ChannelButton20Text", "ChannelButton2Collapsed", "ChannelButton2NormalTexture", "ChannelButton2SpeakerFrameFlash", "ChannelButton2SpeakerFrameMuted", "ChannelButton2SpeakerFrameOn", "ChannelButton2Text", "ChannelButton3Collapsed", "ChannelButton3NormalTexture", "ChannelButton3SpeakerFrameFlash", "ChannelButton3SpeakerFrameMuted", "ChannelButton3SpeakerFrameOn", "ChannelButton3Text", "ChannelButton4Collapsed", "ChannelButton4NormalTexture", "ChannelButton4SpeakerFrameFlash", "ChannelButton4SpeakerFrameMuted", "ChannelButton4SpeakerFrameOn", "ChannelButton4Text", "ChannelButton5Collapsed", "ChannelButton5NormalTexture", "ChannelButton5SpeakerFrameFlash", "ChannelButton5SpeakerFrameMuted", "ChannelButton5SpeakerFrameOn", "ChannelButton5Text", "ChannelButton6Collapsed", "ChannelButton6NormalTexture", "ChannelButton6SpeakerFrameFlash", "ChannelButton6SpeakerFrameMuted", "ChannelButton6SpeakerFrameOn", "ChannelButton6Text", "ChannelButton7Collapsed", "ChannelButton7NormalTexture", "ChannelButton7SpeakerFrameFlash", "ChannelButton7SpeakerFrameMuted", "ChannelButton7SpeakerFrameOn", "ChannelButton7Text", "ChannelButton8Collapsed", "ChannelButton8NormalTexture", "ChannelButton8SpeakerFrameFlash", "ChannelButton8SpeakerFrameMuted", "ChannelButton8SpeakerFrameOn", "ChannelButton8Text", "ChannelButton9Collapsed", "ChannelButton9NormalTexture", "ChannelButton9SpeakerFrameFlash", "ChannelButton9SpeakerFrameMuted", "ChannelButton9SpeakerFrameOn", "ChannelButton9Text", "ChannelFrameAutoJoinBattlegroundText", "ChannelFrameAutoJoinPartyText", "ChannelFrameDaughterFrameCancelButtonText", "ChannelFrameDaughterFrameChannelNameLabel", "ChannelFrameDaughterFrameChannelNameLeft", "ChannelFrameDaughterFrameChannelNameMiddle", "ChannelFrameDaughterFrameChannelNameRight", "ChannelFrameDaughterFrameChannelPasswordLabel", "ChannelFrameDaughterFrameChannelPasswordLeft", "ChannelFrameDaughterFrameChannelPasswordMiddle", "ChannelFrameDaughterFrameChannelPasswordOptional", "ChannelFrameDaughterFrameChannelPasswordRight", "ChannelFrameDaughterFrameCorner", "ChannelFrameDaughterFrameName", "ChannelFrameDaughterFrameOkayButtonText", "ChannelFrameDaughterFrameTitlebar", "ChannelFrameNewButtonText", "ChannelFrameVerticalBarMiddle", "ChannelFrameVerticalBarTop", "ChannelListDropDownButtonDisabledTexture", "ChannelListDropDownButtonHighlightTexture", "ChannelListDropDownButtonNormalTexture", "ChannelListDropDownButtonPushedTexture", "ChannelListDropDownLeft", "ChannelListDropDownMiddle", "ChannelListDropDownRight", "ChannelListDropDownText", "ChannelListScrollFrameBottom", "ChannelListScrollFrameScrollBarThumbTexture", "ChannelListScrollFrameTop", "ChannelMemberButton10Name", "ChannelMemberButton10RankTexture", "ChannelMemberButton10SpeakerFrameFlash", "ChannelMemberButton10SpeakerFrameMuted", "ChannelMemberButton10SpeakerFrameOn", "ChannelMemberButton11Name", "ChannelMemberButton11RankTexture", "ChannelMemberButton11SpeakerFrameFlash", "ChannelMemberButton11SpeakerFrameMuted", "ChannelMemberButton11SpeakerFrameOn", "ChannelMemberButton12Name", "ChannelMemberButton12RankTexture", "ChannelMemberButton12SpeakerFrameFlash", "ChannelMemberButton12SpeakerFrameMuted", "ChannelMemberButton12SpeakerFrameOn", "ChannelMemberButton13Name", "ChannelMemberButton13RankTexture", "ChannelMemberButton13SpeakerFrameFlash", "ChannelMemberButton13SpeakerFrameMuted", "ChannelMemberButton13SpeakerFrameOn", "ChannelMemberButton14Name", "ChannelMemberButton14RankTexture", "ChannelMemberButton14SpeakerFrameFlash", "ChannelMemberButton14SpeakerFrameMuted", "ChannelMemberButton14SpeakerFrameOn", "ChannelMemberButton15Name", "ChannelMemberButton15RankTexture", "ChannelMemberButton15SpeakerFrameFlash", "ChannelMemberButton15SpeakerFrameMuted", "ChannelMemberButton15SpeakerFrameOn", "ChannelMemberButton16Name", "ChannelMemberButton16RankTexture", "ChannelMemberButton16SpeakerFrameFlash", "ChannelMemberButton16SpeakerFrameMuted", "ChannelMemberButton16SpeakerFrameOn", "ChannelMemberButton17Name", "ChannelMemberButton17RankTexture", "ChannelMemberButton17SpeakerFrameFlash", "ChannelMemberButton17SpeakerFrameMuted", "ChannelMemberButton17SpeakerFrameOn", "ChannelMemberButton18Name", "ChannelMemberButton18RankTexture", "ChannelMemberButton18SpeakerFrameFlash", "ChannelMemberButton18SpeakerFrameMuted", "ChannelMemberButton18SpeakerFrameOn", "ChannelMemberButton19Name", "ChannelMemberButton19RankTexture", "ChannelMemberButton19SpeakerFrameFlash", "ChannelMemberButton19SpeakerFrameMuted", "ChannelMemberButton19SpeakerFrameOn", "ChannelMemberButton1Name", "ChannelMemberButton1RankTexture", "ChannelMemberButton1SpeakerFrameFlash", "ChannelMemberButton1SpeakerFrameMuted", "ChannelMemberButton1SpeakerFrameOn", "ChannelMemberButton20Name", "ChannelMemberButton20RankTexture", "ChannelMemberButton20SpeakerFrameFlash", "ChannelMemberButton20SpeakerFrameMuted", "ChannelMemberButton20SpeakerFrameOn", "ChannelMemberButton21Name", "ChannelMemberButton21RankTexture", "ChannelMemberButton21SpeakerFrameFlash", "ChannelMemberButton21SpeakerFrameMuted", "ChannelMemberButton21SpeakerFrameOn", "ChannelMemberButton22Name", "ChannelMemberButton22RankTexture", "ChannelMemberButton22SpeakerFrameFlash", "ChannelMemberButton22SpeakerFrameMuted", "ChannelMemberButton22SpeakerFrameOn", "ChannelMemberButton2Name", "ChannelMemberButton2RankTexture", "ChannelMemberButton2SpeakerFrameFlash", "ChannelMemberButton2SpeakerFrameMuted", "ChannelMemberButton2SpeakerFrameOn", "ChannelMemberButton3Name", "ChannelMemberButton3RankTexture", "ChannelMemberButton3SpeakerFrameFlash", "ChannelMemberButton3SpeakerFrameMuted", "ChannelMemberButton3SpeakerFrameOn", "ChannelMemberButton4Name", "ChannelMemberButton4RankTexture", "ChannelMemberButton4SpeakerFrameFlash", "ChannelMemberButton4SpeakerFrameMuted", "ChannelMemberButton4SpeakerFrameOn", "ChannelMemberButton5Name", "ChannelMemberButton5RankTexture", "ChannelMemberButton5SpeakerFrameFlash", "ChannelMemberButton5SpeakerFrameMuted", "ChannelMemberButton5SpeakerFrameOn", "ChannelMemberButton6Name", "ChannelMemberButton6RankTexture", "ChannelMemberButton6SpeakerFrameFlash", "ChannelMemberButton6SpeakerFrameMuted", "ChannelMemberButton6SpeakerFrameOn", "ChannelMemberButton7Name", "ChannelMemberButton7RankTexture", "ChannelMemberButton7SpeakerFrameFlash", "ChannelMemberButton7SpeakerFrameMuted", "ChannelMemberButton7SpeakerFrameOn", "ChannelMemberButton8Name", "ChannelMemberButton8RankTexture", "ChannelMemberButton8SpeakerFrameFlash", "ChannelMemberButton8SpeakerFrameMuted", "ChannelMemberButton8SpeakerFrameOn", "ChannelMemberButton9Name", "ChannelMemberButton9RankTexture", "ChannelMemberButton9SpeakerFrameFlash", "ChannelMemberButton9SpeakerFrameMuted", "ChannelMemberButton9SpeakerFrameOn", "ChannelPulloutRosterButton1Name", "ChannelPulloutRosterButton1SpeakerFlash", "ChannelPulloutRosterButton1SpeakerMuted", "ChannelPulloutRosterButton1SpeakerOn", "ChannelPulloutRosterButton2Name", "ChannelPulloutRosterButton2SpeakerFlash", "ChannelPulloutRosterButton2SpeakerMuted", "ChannelPulloutRosterButton2SpeakerOn", "ChannelPulloutRosterButton3Name", "ChannelPulloutRosterButton3SpeakerFlash", "ChannelPulloutRosterButton3SpeakerMuted", "ChannelPulloutRosterButton3SpeakerOn", "ChannelPulloutRosterButton4Name", "ChannelPulloutRosterButton4SpeakerFlash", "ChannelPulloutRosterButton4SpeakerMuted", "ChannelPulloutRosterButton4SpeakerOn", "ChannelPulloutRosterButton5Name", "ChannelPulloutRosterButton5SpeakerFlash", "ChannelPulloutRosterButton5SpeakerMuted", "ChannelPulloutRosterButton5SpeakerOn", "ChannelPulloutTabDropDownButtonDisabledTexture", "ChannelPulloutTabDropDownButtonHighlightTexture", "ChannelPulloutTabDropDownButtonNormalTexture", "ChannelPulloutTabDropDownButtonPushedTexture", "ChannelPulloutTabDropDownLeft", "ChannelPulloutTabDropDownMiddle", "ChannelPulloutTabDropDownRight", "ChannelPulloutTabDropDownText", "ChannelPulloutTabLeft", "ChannelPulloutTabMiddle", "ChannelPulloutTabRight", "ChannelPulloutTabText", "ChannelRosterChannelCount", "ChannelRosterChannelName", "ChannelRosterDropDownButtonDisabledTexture", "ChannelRosterDropDownButtonHighlightTexture", "ChannelRosterDropDownButtonNormalTexture", "ChannelRosterDropDownButtonPushedTexture", "ChannelRosterDropDownLeft", "ChannelRosterDropDownMiddle", "ChannelRosterDropDownRight", "ChannelRosterDropDownText", "ChannelRosterHiddenText", "ChannelRosterScrollFrameBottom", "ChannelRosterScrollFrameScrollBarThumbTexture", "ChannelRosterScrollFrameTop", "CharacterAmmoSlotCount", "CharacterAmmoSlotIconTexture", "CharacterAmmoSlotNormalTexture", "CharacterAmmoSlotStock", "CharacterBackSlotCount", "CharacterBackSlotIconTexture", "CharacterBackSlotNormalTexture", "CharacterBackSlotStock", "CharacterBag0SlotCount", "CharacterBag0SlotIconTexture", "CharacterBag0SlotNormalTexture", "CharacterBag0SlotStock", "CharacterBag1SlotCount", "CharacterBag1SlotIconTexture", "CharacterBag1SlotNormalTexture", "CharacterBag1SlotStock", "CharacterBag2SlotCount", "CharacterBag2SlotIconTexture", "CharacterBag2SlotNormalTexture", "CharacterBag2SlotStock", "CharacterBag3SlotCount", "CharacterBag3SlotIconTexture", "CharacterBag3SlotNormalTexture", "CharacterBag3SlotStock", "CharacterChestSlotCount", "CharacterChestSlotIconTexture", "CharacterChestSlotNormalTexture", "CharacterChestSlotStock", "CharacterFeetSlotCount", "CharacterFeetSlotIconTexture", "CharacterFeetSlotNormalTexture", "CharacterFeetSlotStock", "CharacterFinger0SlotCount", "CharacterFinger0SlotIconTexture", "CharacterFinger0SlotNormalTexture", "CharacterFinger0SlotStock", "CharacterFinger1SlotCount", "CharacterFinger1SlotIconTexture", "CharacterFinger1SlotNormalTexture", "CharacterFinger1SlotStock", "CharacterFramePortrait", "CharacterFrameTab1HighlightTexture", "CharacterFrameTab1Left", "CharacterFrameTab1LeftDisabled", "CharacterFrameTab1Middle", "CharacterFrameTab1MiddleDisabled", "CharacterFrameTab1Right", "CharacterFrameTab1RightDisabled", "CharacterFrameTab1Text", "CharacterFrameTab2HighlightTexture", "CharacterFrameTab2Left", "CharacterFrameTab2LeftDisabled", "CharacterFrameTab2Middle", "CharacterFrameTab2MiddleDisabled", "CharacterFrameTab2Right", "CharacterFrameTab2RightDisabled", "CharacterFrameTab2Text", "CharacterFrameTab3HighlightTexture", "CharacterFrameTab3Left", "CharacterFrameTab3LeftDisabled", "CharacterFrameTab3Middle", "CharacterFrameTab3MiddleDisabled", "CharacterFrameTab3Right", "CharacterFrameTab3RightDisabled", "CharacterFrameTab3Text", "CharacterFrameTab4HighlightTexture", "CharacterFrameTab4Left", "CharacterFrameTab4LeftDisabled", "CharacterFrameTab4Middle", "CharacterFrameTab4MiddleDisabled", "CharacterFrameTab4Right", "CharacterFrameTab4RightDisabled", "CharacterFrameTab4Text", "CharacterFrameTab5HighlightTexture", "CharacterFrameTab5Left", "CharacterFrameTab5LeftDisabled", "CharacterFrameTab5Middle", "CharacterFrameTab5MiddleDisabled", "CharacterFrameTab5Right", "CharacterFrameTab5RightDisabled", "CharacterFrameTab5Text", "CharacterGuildText", "CharacterHandsSlotCount", "CharacterHandsSlotIconTexture", "CharacterHandsSlotNormalTexture", "CharacterHandsSlotStock", "CharacterHeadSlotCount", "CharacterHeadSlotIconTexture", "CharacterHeadSlotNormalTexture", "CharacterHeadSlotStock", "CharacterLegsSlotCount", "CharacterLegsSlotIconTexture", "CharacterLegsSlotNormalTexture", "CharacterLegsSlotStock", "CharacterLevelText", "CharacterMainHandSlotCount", "CharacterMainHandSlotIconTexture", "CharacterMainHandSlotNormalTexture", "CharacterMainHandSlotStock", "CharacterNameText", "CharacterNeckSlotCount", "CharacterNeckSlotIconTexture", "CharacterNeckSlotNormalTexture", "CharacterNeckSlotStock", "CharacterRangedSlotCount", "CharacterRangedSlotIconTexture", "CharacterRangedSlotNormalTexture", "CharacterRangedSlotStock", "CharacterSecondaryHandSlotCount", "CharacterSecondaryHandSlotIconTexture", "CharacterSecondaryHandSlotNormalTexture", "CharacterSecondaryHandSlotStock", "CharacterShirtSlotCount", "CharacterShirtSlotIconTexture", "CharacterShirtSlotNormalTexture", "CharacterShirtSlotStock", "CharacterShoulderSlotCount", "CharacterShoulderSlotIconTexture", "CharacterShoulderSlotNormalTexture", "CharacterShoulderSlotStock", "CharacterTabardSlotCount", "CharacterTabardSlotIconTexture", "CharacterTabardSlotNormalTexture", "CharacterTabardSlotStock", "CharacterTitleText", "CharacterTrinket0SlotCount", "CharacterTrinket0SlotIconTexture", "CharacterTrinket0SlotNormalTexture", "CharacterTrinket0SlotStock", "CharacterTrinket1SlotCount", "CharacterTrinket1SlotIconTexture", "CharacterTrinket1SlotNormalTexture", "CharacterTrinket1SlotStock", "CharacterWaistSlotCount", "CharacterWaistSlotIconTexture", "CharacterWaistSlotNormalTexture", "CharacterWaistSlotStock", "CharacterWristSlotCount", "CharacterWristSlotIconTexture", "CharacterWristSlotNormalTexture", "CharacterWristSlotStock", "ChatBNPlayerDropDownButtonDisabledTexture", "ChatBNPlayerDropDownButtonHighlightTexture", "ChatBNPlayerDropDownButtonNormalTexture", "ChatBNPlayerDropDownButtonPushedTexture", "ChatBNPlayerDropDownLeft", "ChatBNPlayerDropDownMiddle", "ChatBNPlayerDropDownRight", "ChatBNPlayerDropDownText", "ChatChannelDropDownButtonDisabledTexture", "ChatChannelDropDownButtonHighlightTexture", "ChatChannelDropDownButtonNormalTexture", "ChatChannelDropDownButtonPushedTexture", "ChatChannelDropDownLeft", "ChatChannelDropDownMiddle", "ChatChannelDropDownRight", "ChatChannelDropDownText", "ChatConfigCategoryFrameButton1Highlight", "ChatConfigCategoryFrameButton1NormalText", "ChatConfigCategoryFrameButton2Highlight", "ChatConfigCategoryFrameButton2NormalText", "ChatConfigCategoryFrameButton3Highlight", "ChatConfigCategoryFrameButton3NormalText", "ChatConfigCategoryFrameButton4Highlight", "ChatConfigCategoryFrameButton4NormalText", "ChatConfigCategoryFrameTitle", "ChatConfigChannelSettingsClassColorLegendTitle", "ChatConfigChannelSettingsLeftClassColorHeader", "ChatConfigChannelSettingsLeftColorHeader", "ChatConfigChannelSettingsLeftTitle", "ChatConfigChatSettingsClassColorLegendTitle", "ChatConfigChatSettingsLeftCheckBox10CheckText", "ChatConfigChatSettingsLeftCheckBox10ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox10ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox11CheckText", "ChatConfigChatSettingsLeftCheckBox11ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox11ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox12CheckText", "ChatConfigChatSettingsLeftCheckBox12ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox12ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox13CheckText", "ChatConfigChatSettingsLeftCheckBox13ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox13ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox14CheckText", "ChatConfigChatSettingsLeftCheckBox14ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox14ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox15CheckText", "ChatConfigChatSettingsLeftCheckBox15ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox15ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox16CheckText", "ChatConfigChatSettingsLeftCheckBox16ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox16ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox17CheckText", "ChatConfigChatSettingsLeftCheckBox17ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox17ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox1CheckText", "ChatConfigChatSettingsLeftCheckBox1ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox1ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox2CheckText", "ChatConfigChatSettingsLeftCheckBox2ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox2ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox3CheckText", "ChatConfigChatSettingsLeftCheckBox3ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox3ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox4CheckText", "ChatConfigChatSettingsLeftCheckBox4ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox4ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox5CheckText", "ChatConfigChatSettingsLeftCheckBox5ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox5ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox6CheckText", "ChatConfigChatSettingsLeftCheckBox6ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox6ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox7CheckText", "ChatConfigChatSettingsLeftCheckBox7ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox7ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox8CheckText", "ChatConfigChatSettingsLeftCheckBox8ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox8ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftCheckBox9CheckText", "ChatConfigChatSettingsLeftCheckBox9ColorSwatchNormalTexture", "ChatConfigChatSettingsLeftCheckBox9ColorSwatchSwatchBg", "ChatConfigChatSettingsLeftClassColorHeader", "ChatConfigChatSettingsLeftColorHeader", "ChatConfigChatSettingsLeftTitle", "ChatConfigCombatSettingsFiltersAddFilterButtonText", "ChatConfigCombatSettingsFiltersButton1Highlight", "ChatConfigCombatSettingsFiltersButton1NormalText", "ChatConfigCombatSettingsFiltersButton2Highlight", "ChatConfigCombatSettingsFiltersButton2NormalText", "ChatConfigCombatSettingsFiltersButton3Highlight", "ChatConfigCombatSettingsFiltersButton3NormalText", "ChatConfigCombatSettingsFiltersButton4Highlight", "ChatConfigCombatSettingsFiltersButton4NormalText", "ChatConfigCombatSettingsFiltersCopyFilterButtonText", "ChatConfigCombatSettingsFiltersDeleteButtonText", "ChatConfigCombatSettingsFiltersScrollFrameScrollBarThumbTexture", "ChatConfigFrameCancelButtonText", "ChatConfigFrameHeader", "ChatConfigFrameHeaderText", "ChatConfigFrameOkayButtonText", "ChatConfigOtherSettingsCombatCheckBox10CheckText", "ChatConfigOtherSettingsCombatCheckBox10ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox10ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox1CheckText", "ChatConfigOtherSettingsCombatCheckBox1ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox1ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox2CheckText", "ChatConfigOtherSettingsCombatCheckBox2ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox2ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox3CheckText", "ChatConfigOtherSettingsCombatCheckBox3ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox3ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox4CheckText", "ChatConfigOtherSettingsCombatCheckBox4ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox4ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox5CheckText", "ChatConfigOtherSettingsCombatCheckBox5ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox5ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox6CheckText", "ChatConfigOtherSettingsCombatCheckBox6ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox6ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox7CheckText", "ChatConfigOtherSettingsCombatCheckBox7ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox7ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox8CheckText", "ChatConfigOtherSettingsCombatCheckBox8ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox8ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatCheckBox9CheckText", "ChatConfigOtherSettingsCombatCheckBox9ColorSwatchNormalTexture", "ChatConfigOtherSettingsCombatCheckBox9ColorSwatchSwatchBg", "ChatConfigOtherSettingsCombatTitle", "ChatConfigOtherSettingsCreatureCheckBox1CheckText", "ChatConfigOtherSettingsCreatureCheckBox1ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox1ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureCheckBox2CheckText", "ChatConfigOtherSettingsCreatureCheckBox2ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox2ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureCheckBox3CheckText", "ChatConfigOtherSettingsCreatureCheckBox3ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox3ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureCheckBox4CheckText", "ChatConfigOtherSettingsCreatureCheckBox4ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox4ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureCheckBox5CheckText", "ChatConfigOtherSettingsCreatureCheckBox5ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox5ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureCheckBox6CheckText", "ChatConfigOtherSettingsCreatureCheckBox6ColorSwatchNormalTexture", "ChatConfigOtherSettingsCreatureCheckBox6ColorSwatchSwatchBg", "ChatConfigOtherSettingsCreatureTitle", "ChatConfigOtherSettingsPVPCheckBox1CheckText", "ChatConfigOtherSettingsPVPCheckBox1ColorSwatchNormalTexture", "ChatConfigOtherSettingsPVPCheckBox1ColorSwatchSwatchBg", "ChatConfigOtherSettingsPVPCheckBox2CheckText", "ChatConfigOtherSettingsPVPCheckBox2ColorSwatchNormalTexture", "ChatConfigOtherSettingsPVPCheckBox2ColorSwatchSwatchBg", "ChatConfigOtherSettingsPVPCheckBox3CheckText", "ChatConfigOtherSettingsPVPCheckBox3ColorSwatchNormalTexture", "ChatConfigOtherSettingsPVPCheckBox3ColorSwatchSwatchBg", "ChatConfigOtherSettingsPVPTitle", "ChatConfigOtherSettingsSystemCheckBox1CheckText", "ChatConfigOtherSettingsSystemCheckBox1ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox1ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemCheckBox2CheckText", "ChatConfigOtherSettingsSystemCheckBox2ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox2ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemCheckBox3CheckText", "ChatConfigOtherSettingsSystemCheckBox3ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox3ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemCheckBox4CheckText", "ChatConfigOtherSettingsSystemCheckBox4ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox4ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemCheckBox5CheckText", "ChatConfigOtherSettingsSystemCheckBox5ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox5ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemCheckBox6CheckText", "ChatConfigOtherSettingsSystemCheckBox6ColorSwatchNormalTexture", "ChatConfigOtherSettingsSystemCheckBox6ColorSwatchSwatchBg", "ChatConfigOtherSettingsSystemTitle", "ChatFontNormal", "ChatFontSmall", "ChatFrame10Background", "ChatFrame10BottomLeftTexture", "ChatFrame10BottomRightTexture", "ChatFrame10BottomTexture", "ChatFrame10ButtonFrameBackground", "ChatFrame10ButtonFrameBottomButtonFlash", "ChatFrame10ButtonFrameBottomLeftTexture", "ChatFrame10ButtonFrameBottomRightTexture", "ChatFrame10ButtonFrameBottomTexture", "ChatFrame10ButtonFrameLeftTexture", "ChatFrame10ButtonFrameRightTexture", "ChatFrame10ButtonFrameTopLeftTexture", "ChatFrame10ButtonFrameTopRightTexture", "ChatFrame10ButtonFrameTopTexture", "ChatFrame10EditBoxFocusLeft", "ChatFrame10EditBoxFocusMid", "ChatFrame10EditBoxFocusRight", "ChatFrame10EditBoxHeader", "ChatFrame10EditBoxLeft", "ChatFrame10EditBoxMid", "ChatFrame10EditBoxRight", "ChatFrame10LeftTexture", "ChatFrame10RightTexture", "ChatFrame10TabDropDownButtonDisabledTexture", "ChatFrame10TabDropDownButtonHighlightTexture", "ChatFrame10TabDropDownButtonNormalTexture", "ChatFrame10TabDropDownButtonPushedTexture", "ChatFrame10TabDropDownLeft", "ChatFrame10TabDropDownMiddle", "ChatFrame10TabDropDownRight", "ChatFrame10TabDropDownText", "ChatFrame10TabGlow", "ChatFrame10TabHighlightLeft", "ChatFrame10TabHighlightMiddle", "ChatFrame10TabHighlightRight", "ChatFrame10TabLeft", "ChatFrame10TabMiddle", "ChatFrame10TabRight", "ChatFrame10TabSelectedLeft", "ChatFrame10TabSelectedMiddle", "ChatFrame10TabSelectedRight", "ChatFrame10TabText", "ChatFrame10TopLeftTexture", "ChatFrame10TopRightTexture", "ChatFrame10TopTexture", "ChatFrame1Background", "ChatFrame1BottomLeftTexture", "ChatFrame1BottomRightTexture", "ChatFrame1BottomTexture", "ChatFrame1ButtonFrameBackground", "ChatFrame1ButtonFrameBottomButtonFlash", "ChatFrame1ButtonFrameBottomLeftTexture", "ChatFrame1ButtonFrameBottomRightTexture", "ChatFrame1ButtonFrameBottomTexture", "ChatFrame1ButtonFrameLeftTexture", "ChatFrame1ButtonFrameRightTexture", "ChatFrame1ButtonFrameTopLeftTexture", "ChatFrame1ButtonFrameTopRightTexture", "ChatFrame1ButtonFrameTopTexture", "ChatFrame1EditBoxFocusLeft", "ChatFrame1EditBoxFocusMid", "ChatFrame1EditBoxFocusRight", "ChatFrame1EditBoxHeader", "ChatFrame1EditBoxLeft", "ChatFrame1EditBoxMid", "ChatFrame1EditBoxRight", "ChatFrame1LeftTexture", "ChatFrame1RightTexture", "ChatFrame1TabDropDownButtonDisabledTexture", "ChatFrame1TabDropDownButtonHighlightTexture", "ChatFrame1TabDropDownButtonNormalTexture", "ChatFrame1TabDropDownButtonPushedTexture", "ChatFrame1TabDropDownLeft", "ChatFrame1TabDropDownMiddle", "ChatFrame1TabDropDownRight", "ChatFrame1TabDropDownText", "ChatFrame1TabGlow", "ChatFrame1TabHighlightLeft", "ChatFrame1TabHighlightMiddle", "ChatFrame1TabHighlightRight", "ChatFrame1TabLeft", "ChatFrame1TabMiddle", "ChatFrame1TabRight", "ChatFrame1TabSelectedLeft", "ChatFrame1TabSelectedMiddle", "ChatFrame1TabSelectedRight", "ChatFrame1TabText", "ChatFrame1TopLeftTexture", "ChatFrame1TopRightTexture", "ChatFrame1TopTexture", "ChatFrame2Background", "ChatFrame2BottomLeftTexture", "ChatFrame2BottomRightTexture", "ChatFrame2BottomTexture", "ChatFrame2ButtonFrameBackground", "ChatFrame2ButtonFrameBottomButtonFlash", "ChatFrame2ButtonFrameBottomLeftTexture", "ChatFrame2ButtonFrameBottomRightTexture", "ChatFrame2ButtonFrameBottomTexture", "ChatFrame2ButtonFrameLeftTexture", "ChatFrame2ButtonFrameRightTexture", "ChatFrame2ButtonFrameTopLeftTexture", "ChatFrame2ButtonFrameTopRightTexture", "ChatFrame2ButtonFrameTopTexture", "ChatFrame2EditBoxFocusLeft", "ChatFrame2EditBoxFocusMid", "ChatFrame2EditBoxFocusRight", "ChatFrame2EditBoxHeader", "ChatFrame2EditBoxLeft", "ChatFrame2EditBoxMid", "ChatFrame2EditBoxRight", "ChatFrame2LeftTexture", "ChatFrame2RightTexture", "ChatFrame2TabDropDownButtonDisabledTexture", "ChatFrame2TabDropDownButtonHighlightTexture", "ChatFrame2TabDropDownButtonNormalTexture", "ChatFrame2TabDropDownButtonPushedTexture", "ChatFrame2TabDropDownLeft", "ChatFrame2TabDropDownMiddle", "ChatFrame2TabDropDownRight", "ChatFrame2TabDropDownText", "ChatFrame2TabGlow", "ChatFrame2TabHighlightLeft", "ChatFrame2TabHighlightMiddle", "ChatFrame2TabHighlightRight", "ChatFrame2TabLeft", "ChatFrame2TabMiddle", "ChatFrame2TabRight", "ChatFrame2TabSelectedLeft", "ChatFrame2TabSelectedMiddle", "ChatFrame2TabSelectedRight", "ChatFrame2TabText", "ChatFrame2TopLeftTexture", "ChatFrame2TopRightTexture", "ChatFrame2TopTexture", "ChatFrame3Background", "ChatFrame3BottomLeftTexture", "ChatFrame3BottomRightTexture", "ChatFrame3BottomTexture", "ChatFrame3ButtonFrameBackground", "ChatFrame3ButtonFrameBottomButtonFlash", "ChatFrame3ButtonFrameBottomLeftTexture", "ChatFrame3ButtonFrameBottomRightTexture", "ChatFrame3ButtonFrameBottomTexture", "ChatFrame3ButtonFrameLeftTexture", "ChatFrame3ButtonFrameRightTexture", "ChatFrame3ButtonFrameTopLeftTexture", "ChatFrame3ButtonFrameTopRightTexture", "ChatFrame3ButtonFrameTopTexture", "ChatFrame3EditBoxFocusLeft", "ChatFrame3EditBoxFocusMid", "ChatFrame3EditBoxFocusRight", "ChatFrame3EditBoxHeader", "ChatFrame3EditBoxLeft", "ChatFrame3EditBoxMid", "ChatFrame3EditBoxRight", "ChatFrame3LeftTexture", "ChatFrame3RightTexture", "ChatFrame3TabDropDownButtonDisabledTexture", "ChatFrame3TabDropDownButtonHighlightTexture", "ChatFrame3TabDropDownButtonNormalTexture", "ChatFrame3TabDropDownButtonPushedTexture", "ChatFrame3TabDropDownLeft", "ChatFrame3TabDropDownMiddle", "ChatFrame3TabDropDownRight", "ChatFrame3TabDropDownText", "ChatFrame3TabGlow", "ChatFrame3TabHighlightLeft", "ChatFrame3TabHighlightMiddle", "ChatFrame3TabHighlightRight", "ChatFrame3TabLeft", "ChatFrame3TabMiddle", "ChatFrame3TabRight", "ChatFrame3TabSelectedLeft", "ChatFrame3TabSelectedMiddle", "ChatFrame3TabSelectedRight", "ChatFrame3TabText", "ChatFrame3TopLeftTexture", "ChatFrame3TopRightTexture", "ChatFrame3TopTexture", "ChatFrame4Background", "ChatFrame4BottomLeftTexture", "ChatFrame4BottomRightTexture", "ChatFrame4BottomTexture", "ChatFrame4ButtonFrameBackground", "ChatFrame4ButtonFrameBottomButtonFlash", "ChatFrame4ButtonFrameBottomLeftTexture", "ChatFrame4ButtonFrameBottomRightTexture", "ChatFrame4ButtonFrameBottomTexture", "ChatFrame4ButtonFrameLeftTexture", "ChatFrame4ButtonFrameRightTexture", "ChatFrame4ButtonFrameTopLeftTexture", "ChatFrame4ButtonFrameTopRightTexture", "ChatFrame4ButtonFrameTopTexture", "ChatFrame4EditBoxFocusLeft", "ChatFrame4EditBoxFocusMid", "ChatFrame4EditBoxFocusRight", "ChatFrame4EditBoxHeader", "ChatFrame4EditBoxLeft", "ChatFrame4EditBoxMid", "ChatFrame4EditBoxRight", "ChatFrame4LeftTexture", "ChatFrame4RightTexture", "ChatFrame4TabDropDownButtonDisabledTexture", "ChatFrame4TabDropDownButtonHighlightTexture", "ChatFrame4TabDropDownButtonNormalTexture", "ChatFrame4TabDropDownButtonPushedTexture", "ChatFrame4TabDropDownLeft", "ChatFrame4TabDropDownMiddle", "ChatFrame4TabDropDownRight", "ChatFrame4TabDropDownText", "ChatFrame4TabGlow", "ChatFrame4TabHighlightLeft", "ChatFrame4TabHighlightMiddle", "ChatFrame4TabHighlightRight", "ChatFrame4TabLeft", "ChatFrame4TabMiddle", "ChatFrame4TabRight", "ChatFrame4TabSelectedLeft", "ChatFrame4TabSelectedMiddle", "ChatFrame4TabSelectedRight", "ChatFrame4TabText", "ChatFrame4TopLeftTexture", "ChatFrame4TopRightTexture", "ChatFrame4TopTexture", "ChatFrame5Background", "ChatFrame5BottomLeftTexture", "ChatFrame5BottomRightTexture", "ChatFrame5BottomTexture", "ChatFrame5ButtonFrameBackground", "ChatFrame5ButtonFrameBottomButtonFlash", "ChatFrame5ButtonFrameBottomLeftTexture", "ChatFrame5ButtonFrameBottomRightTexture", "ChatFrame5ButtonFrameBottomTexture", "ChatFrame5ButtonFrameLeftTexture", "ChatFrame5ButtonFrameRightTexture", "ChatFrame5ButtonFrameTopLeftTexture", "ChatFrame5ButtonFrameTopRightTexture", "ChatFrame5ButtonFrameTopTexture", "ChatFrame5EditBoxFocusLeft", "ChatFrame5EditBoxFocusMid", "ChatFrame5EditBoxFocusRight", "ChatFrame5EditBoxHeader", "ChatFrame5EditBoxLeft", "ChatFrame5EditBoxMid", "ChatFrame5EditBoxRight", "ChatFrame5LeftTexture", "ChatFrame5RightTexture", "ChatFrame5TabDropDownButtonDisabledTexture", "ChatFrame5TabDropDownButtonHighlightTexture", "ChatFrame5TabDropDownButtonNormalTexture", "ChatFrame5TabDropDownButtonPushedTexture", "ChatFrame5TabDropDownLeft", "ChatFrame5TabDropDownMiddle", "ChatFrame5TabDropDownRight", "ChatFrame5TabDropDownText", "ChatFrame5TabGlow", "ChatFrame5TabHighlightLeft", "ChatFrame5TabHighlightMiddle", "ChatFrame5TabHighlightRight", "ChatFrame5TabLeft", "ChatFrame5TabMiddle", "ChatFrame5TabRight", "ChatFrame5TabSelectedLeft", "ChatFrame5TabSelectedMiddle", "ChatFrame5TabSelectedRight", "ChatFrame5TabText", "ChatFrame5TopLeftTexture", "ChatFrame5TopRightTexture", "ChatFrame5TopTexture", "ChatFrame6Background", "ChatFrame6BottomLeftTexture", "ChatFrame6BottomRightTexture", "ChatFrame6BottomTexture", "ChatFrame6ButtonFrameBackground", "ChatFrame6ButtonFrameBottomButtonFlash", "ChatFrame6ButtonFrameBottomLeftTexture", "ChatFrame6ButtonFrameBottomRightTexture", "ChatFrame6ButtonFrameBottomTexture", "ChatFrame6ButtonFrameLeftTexture", "ChatFrame6ButtonFrameRightTexture", "ChatFrame6ButtonFrameTopLeftTexture", "ChatFrame6ButtonFrameTopRightTexture", "ChatFrame6ButtonFrameTopTexture", "ChatFrame6EditBoxFocusLeft", "ChatFrame6EditBoxFocusMid", "ChatFrame6EditBoxFocusRight", "ChatFrame6EditBoxHeader", "ChatFrame6EditBoxLeft", "ChatFrame6EditBoxMid", "ChatFrame6EditBoxRight", "ChatFrame6LeftTexture", "ChatFrame6RightTexture", "ChatFrame6TabDropDownButtonDisabledTexture", "ChatFrame6TabDropDownButtonHighlightTexture", "ChatFrame6TabDropDownButtonNormalTexture", "ChatFrame6TabDropDownButtonPushedTexture", "ChatFrame6TabDropDownLeft", "ChatFrame6TabDropDownMiddle", "ChatFrame6TabDropDownRight", "ChatFrame6TabDropDownText", "ChatFrame6TabGlow", "ChatFrame6TabHighlightLeft", "ChatFrame6TabHighlightMiddle", "ChatFrame6TabHighlightRight", "ChatFrame6TabLeft", "ChatFrame6TabMiddle", "ChatFrame6TabRight", "ChatFrame6TabSelectedLeft", "ChatFrame6TabSelectedMiddle", "ChatFrame6TabSelectedRight", "ChatFrame6TabText", "ChatFrame6TopLeftTexture", "ChatFrame6TopRightTexture", "ChatFrame6TopTexture", "ChatFrame7Background", "ChatFrame7BottomLeftTexture", "ChatFrame7BottomRightTexture", "ChatFrame7BottomTexture", "ChatFrame7ButtonFrameBackground", "ChatFrame7ButtonFrameBottomButtonFlash", "ChatFrame7ButtonFrameBottomLeftTexture", "ChatFrame7ButtonFrameBottomRightTexture", "ChatFrame7ButtonFrameBottomTexture", "ChatFrame7ButtonFrameLeftTexture", "ChatFrame7ButtonFrameRightTexture", "ChatFrame7ButtonFrameTopLeftTexture", "ChatFrame7ButtonFrameTopRightTexture", "ChatFrame7ButtonFrameTopTexture", "ChatFrame7EditBoxFocusLeft", "ChatFrame7EditBoxFocusMid", "ChatFrame7EditBoxFocusRight", "ChatFrame7EditBoxHeader", "ChatFrame7EditBoxLeft", "ChatFrame7EditBoxMid", "ChatFrame7EditBoxRight", "ChatFrame7LeftTexture", "ChatFrame7RightTexture", "ChatFrame7TabDropDownButtonDisabledTexture", "ChatFrame7TabDropDownButtonHighlightTexture", "ChatFrame7TabDropDownButtonNormalTexture", "ChatFrame7TabDropDownButtonPushedTexture", "ChatFrame7TabDropDownLeft", "ChatFrame7TabDropDownMiddle", "ChatFrame7TabDropDownRight", "ChatFrame7TabDropDownText", "ChatFrame7TabGlow", "ChatFrame7TabHighlightLeft", "ChatFrame7TabHighlightMiddle", "ChatFrame7TabHighlightRight", "ChatFrame7TabLeft", "ChatFrame7TabMiddle", "ChatFrame7TabRight", "ChatFrame7TabSelectedLeft", "ChatFrame7TabSelectedMiddle", "ChatFrame7TabSelectedRight", "ChatFrame7TabText", "ChatFrame7TopLeftTexture", "ChatFrame7TopRightTexture", "ChatFrame7TopTexture", "ChatFrame8Background", "ChatFrame8BottomLeftTexture", "ChatFrame8BottomRightTexture", "ChatFrame8BottomTexture", "ChatFrame8ButtonFrameBackground", "ChatFrame8ButtonFrameBottomButtonFlash", "ChatFrame8ButtonFrameBottomLeftTexture", "ChatFrame8ButtonFrameBottomRightTexture", "ChatFrame8ButtonFrameBottomTexture", "ChatFrame8ButtonFrameLeftTexture", "ChatFrame8ButtonFrameRightTexture", "ChatFrame8ButtonFrameTopLeftTexture", "ChatFrame8ButtonFrameTopRightTexture", "ChatFrame8ButtonFrameTopTexture", "ChatFrame8EditBoxFocusLeft", "ChatFrame8EditBoxFocusMid", "ChatFrame8EditBoxFocusRight", "ChatFrame8EditBoxHeader", "ChatFrame8EditBoxLeft", "ChatFrame8EditBoxMid", "ChatFrame8EditBoxRight", "ChatFrame8LeftTexture", "ChatFrame8RightTexture", "ChatFrame8TabDropDownButtonDisabledTexture", "ChatFrame8TabDropDownButtonHighlightTexture", "ChatFrame8TabDropDownButtonNormalTexture", "ChatFrame8TabDropDownButtonPushedTexture", "ChatFrame8TabDropDownLeft", "ChatFrame8TabDropDownMiddle", "ChatFrame8TabDropDownRight", "ChatFrame8TabDropDownText", "ChatFrame8TabGlow", "ChatFrame8TabHighlightLeft", "ChatFrame8TabHighlightMiddle", "ChatFrame8TabHighlightRight", "ChatFrame8TabLeft", "ChatFrame8TabMiddle", "ChatFrame8TabRight", "ChatFrame8TabSelectedLeft", "ChatFrame8TabSelectedMiddle", "ChatFrame8TabSelectedRight", "ChatFrame8TabText", "ChatFrame8TopLeftTexture", "ChatFrame8TopRightTexture", "ChatFrame8TopTexture", "ChatFrame9Background", "ChatFrame9BottomLeftTexture", "ChatFrame9BottomRightTexture", "ChatFrame9BottomTexture", "ChatFrame9ButtonFrameBackground", "ChatFrame9ButtonFrameBottomButtonFlash", "ChatFrame9ButtonFrameBottomLeftTexture", "ChatFrame9ButtonFrameBottomRightTexture", "ChatFrame9ButtonFrameBottomTexture", "ChatFrame9ButtonFrameLeftTexture", "ChatFrame9ButtonFrameRightTexture", "ChatFrame9ButtonFrameTopLeftTexture", "ChatFrame9ButtonFrameTopRightTexture", "ChatFrame9ButtonFrameTopTexture", "ChatFrame9EditBoxFocusLeft", "ChatFrame9EditBoxFocusMid", "ChatFrame9EditBoxFocusRight", "ChatFrame9EditBoxHeader", "ChatFrame9EditBoxLeft", "ChatFrame9EditBoxMid", "ChatFrame9EditBoxRight", "ChatFrame9LeftTexture", "ChatFrame9RightTexture", "ChatFrame9TabDropDownButtonDisabledTexture", "ChatFrame9TabDropDownButtonHighlightTexture", "ChatFrame9TabDropDownButtonNormalTexture", "ChatFrame9TabDropDownButtonPushedTexture", "ChatFrame9TabDropDownLeft", "ChatFrame9TabDropDownMiddle", "ChatFrame9TabDropDownRight", "ChatFrame9TabDropDownText", "ChatFrame9TabGlow", "ChatFrame9TabHighlightLeft", "ChatFrame9TabHighlightMiddle", "ChatFrame9TabHighlightRight", "ChatFrame9TabLeft", "ChatFrame9TabMiddle", "ChatFrame9TabRight", "ChatFrame9TabSelectedLeft", "ChatFrame9TabSelectedMiddle", "ChatFrame9TabSelectedRight", "ChatFrame9TabText", "ChatFrame9TopLeftTexture", "ChatFrame9TopRightTexture", "ChatFrame9TopTexture", "ChatMenuButton10ShortcutText", "ChatMenuButton11ShortcutText", "ChatMenuButton12ShortcutText", "ChatMenuButton13ShortcutText", "ChatMenuButton14ShortcutText", "ChatMenuButton15ShortcutText", "ChatMenuButton16ShortcutText", "ChatMenuButton17ShortcutText", "ChatMenuButton18ShortcutText", "ChatMenuButton19ShortcutText", "ChatMenuButton1ShortcutText", "ChatMenuButton20ShortcutText", "ChatMenuButton21ShortcutText", "ChatMenuButton22ShortcutText", "ChatMenuButton23ShortcutText", "ChatMenuButton24ShortcutText", "ChatMenuButton25ShortcutText", "ChatMenuButton26ShortcutText", "ChatMenuButton27ShortcutText", "ChatMenuButton28ShortcutText", "ChatMenuButton29ShortcutText", "ChatMenuButton2ShortcutText", "ChatMenuButton30ShortcutText", "ChatMenuButton31ShortcutText", "ChatMenuButton32ShortcutText", "ChatMenuButton3ShortcutText", "ChatMenuButton4ShortcutText", "ChatMenuButton5ShortcutText", "ChatMenuButton6ShortcutText", "ChatMenuButton7ShortcutText", "ChatMenuButton8ShortcutText", "ChatMenuButton9ShortcutText", "CoinPickupCancelButtonText", "CoinPickupCopperIcon", "CoinPickupGoldIcon", "CoinPickupLabel", "CoinPickupOkayButtonText", "CoinPickupSilverIcon", "CoinPickupText", "ColorPickerCancelButtonText", "ColorPickerFrameHeader", "ColorPickerOkayButtonText", "ColorPickerWheel", "ColorSwatch", "CombatConfigColorsColorizeDamageNumberCheckText", "CombatConfigColorsColorizeDamageNumberColorSwatchNormalTexture", "CombatConfigColorsColorizeDamageNumberColorSwatchSwatchBg", "CombatConfigColorsColorizeDamageNumberSchoolColoringText", "CombatConfigColorsColorizeDamageSchoolCheckText", "CombatConfigColorsColorizeEntireLineBySourceText", "CombatConfigColorsColorizeEntireLineByTargetText", "CombatConfigColorsColorizeEntireLineCheckText", "CombatConfigColorsColorizeSpellNamesCheckText", "CombatConfigColorsColorizeSpellNamesColorSwatchNormalTexture", "CombatConfigColorsColorizeSpellNamesColorSwatchSwatchBg", "CombatConfigColorsColorizeSpellNamesSchoolColoringText", "CombatConfigColorsColorizeUnitNameCheckText", "CombatConfigColorsExampleString1", "CombatConfigColorsExampleString2", "CombatConfigColorsExampleTitle", "CombatConfigColorsHighlightingAbilityText", "CombatConfigColorsHighlightingDamageText", "CombatConfigColorsHighlightingLineText", "CombatConfigColorsHighlightingSchoolText", "CombatConfigColorsHighlightingTitle", "CombatConfigColorsUnitColorsSwatch1ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch1ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch1Text", "CombatConfigColorsUnitColorsSwatch2ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch2ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch2Text", "CombatConfigColorsUnitColorsSwatch3ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch3ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch3Text", "CombatConfigColorsUnitColorsSwatch4ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch4ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch4Text", "CombatConfigColorsUnitColorsSwatch5ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch5ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch5Text", "CombatConfigColorsUnitColorsSwatch6ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch6ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch6Text", "CombatConfigColorsUnitColorsSwatch7ColorSwatchNormalTexture", "CombatConfigColorsUnitColorsSwatch7ColorSwatchSwatchBg", "CombatConfigColorsUnitColorsSwatch7Text", "CombatConfigColorsUnitColorsTitle", "CombatConfigFormattingExampleString1", "CombatConfigFormattingExampleString2", "CombatConfigFormattingExampleTitle", "CombatConfigFormattingFullTextText", "CombatConfigFormattingItemNamesText", "CombatConfigFormattingShowBracesText", "CombatConfigFormattingShowTimeStampText", "CombatConfigFormattingSpellNamesText", "CombatConfigFormattingUnitNamesText", "CombatConfigMessageSourcesDoneByCheckBox1CheckText", "CombatConfigMessageSourcesDoneByCheckBox2CheckText", "CombatConfigMessageSourcesDoneByCheckBox3CheckText", "CombatConfigMessageSourcesDoneByCheckBox4CheckText", "CombatConfigMessageSourcesDoneByCheckBox5CheckText", "CombatConfigMessageSourcesDoneByCheckBox6CheckText", "CombatConfigMessageSourcesDoneByCheckBox7CheckText", "CombatConfigMessageSourcesDoneByTitle", "CombatConfigMessageSourcesDoneToCheckBox1CheckText", "CombatConfigMessageSourcesDoneToCheckBox2CheckText", "CombatConfigMessageSourcesDoneToCheckBox3CheckText", "CombatConfigMessageSourcesDoneToCheckBox4CheckText", "CombatConfigMessageSourcesDoneToCheckBox5CheckText", "CombatConfigMessageSourcesDoneToCheckBox6CheckText", "CombatConfigMessageSourcesDoneToCheckBox7CheckText", "CombatConfigMessageSourcesDoneToTitle", "CombatConfigMessageTypesLeftCheckBox1Text", "CombatConfigMessageTypesLeftCheckBox1_1Text", "CombatConfigMessageTypesLeftCheckBox1_2Text", "CombatConfigMessageTypesLeftCheckBox2Text", "CombatConfigMessageTypesLeftCheckBox2_1Text", "CombatConfigMessageTypesLeftCheckBox2_2Text", "CombatConfigMessageTypesLeftCheckBox3Text", "CombatConfigMessageTypesLeftCheckBox3_1Text", "CombatConfigMessageTypesLeftCheckBox3_2Text", "CombatConfigMessageTypesLeftCheckBox3_3Text", "CombatConfigMessageTypesLeftCheckBox3_4Text", "CombatConfigMessageTypesLeftCheckBox4Text", "CombatConfigMessageTypesLeftCheckBox4_1Text", "CombatConfigMessageTypesLeftCheckBox4_2Text", "CombatConfigMessageTypesLeftCheckBox4_3Text", "CombatConfigMessageTypesLeftCheckBox4_4Text", "CombatConfigMessageTypesMiscCheckBox1Text", "CombatConfigMessageTypesMiscCheckBox2Text", "CombatConfigMessageTypesMiscCheckBox3Text", "CombatConfigMessageTypesMiscCheckBox4Text", "CombatConfigMessageTypesRightCheckBox1Text", "CombatConfigMessageTypesRightCheckBox1_10Text", "CombatConfigMessageTypesRightCheckBox1_1Text", "CombatConfigMessageTypesRightCheckBox1_2Text", "CombatConfigMessageTypesRightCheckBox1_3Text", "CombatConfigMessageTypesRightCheckBox1_4Text", "CombatConfigMessageTypesRightCheckBox1_5Text", "CombatConfigMessageTypesRightCheckBox1_6Text", "CombatConfigMessageTypesRightCheckBox1_7Text", "CombatConfigMessageTypesRightCheckBox1_8Text", "CombatConfigMessageTypesRightCheckBox1_9Text", "CombatConfigMessageTypesRightCheckBox2Text", "CombatConfigMessageTypesRightCheckBox2_1Text", "CombatConfigMessageTypesRightCheckBox2_2Text", "CombatConfigMessageTypesRightCheckBox2_3Text", "CombatConfigSettingsNameEditBoxLeft", "CombatConfigSettingsNameEditBoxMiddle", "CombatConfigSettingsNameEditBoxRight", "CombatConfigSettingsPartyText", "CombatConfigSettingsRaidText", "CombatConfigSettingsSaveButtonText", "CombatConfigSettingsShowQuickButtonText", "CombatConfigSettingsSoloText", "CombatConfigTab1Left", "CombatConfigTab1Middle", "CombatConfigTab1Right", "CombatConfigTab1Text", "CombatConfigTab2Left", "CombatConfigTab2Middle", "CombatConfigTab2Right", "CombatConfigTab2Text", "CombatConfigTab3Left", "CombatConfigTab3Middle", "CombatConfigTab3Right", "CombatConfigTab3Text", "CombatConfigTab4Left", "CombatConfigTab4Middle", "CombatConfigTab4Right", "CombatConfigTab4Text", "CombatConfigTab5Left", "CombatConfigTab5Middle", "CombatConfigTab5Right", "CombatConfigTab5Text", "CombatLogDropDownButtonDisabledTexture", "CombatLogDropDownButtonHighlightTexture", "CombatLogDropDownButtonNormalTexture", "CombatLogDropDownButtonPushedTexture", "CombatLogDropDownLeft", "CombatLogDropDownMiddle", "CombatLogDropDownRight", "CombatLogDropDownText", "CombatLogFont", "CombatLogQuickButtonFrame_CustomTexture", "CombatText1", "CombatText10", "CombatText11", "CombatText12", "CombatText13", "CombatText14", "CombatText15", "CombatText16", "CombatText17", "CombatText18", "CombatText19", "CombatText2", "CombatText20", "CombatText3", "CombatText4", "CombatText5", "CombatText6", "CombatText7", "CombatText8", "CombatText9", "CombatTextFont", "ComboPoint1Highlight", "ComboPoint1Shine", "ComboPoint2Highlight", "ComboPoint2Shine", "ComboPoint3Highlight", "ComboPoint3Shine", "ComboPoint4Highlight", "ComboPoint4Shine", "ComboPoint5Highlight", "ComboPoint5Shine", "CompanionButton10ActiveTexture", "CompanionButton10Highlight", "CompanionButton11ActiveTexture", "CompanionButton11Highlight", "CompanionButton12ActiveTexture", "CompanionButton12Highlight", "CompanionButton1ActiveTexture", "CompanionButton1Highlight", "CompanionButton2ActiveTexture", "CompanionButton2Highlight", "CompanionButton3ActiveTexture", "CompanionButton3Highlight", "CompanionButton4ActiveTexture", "CompanionButton4Highlight", "CompanionButton5ActiveTexture", "CompanionButton5Highlight", "CompanionButton6ActiveTexture", "CompanionButton6Highlight", "CompanionButton7ActiveTexture", "CompanionButton7Highlight", "CompanionButton8ActiveTexture", "CompanionButton8Highlight", "CompanionButton9ActiveTexture", "CompanionButton9Highlight", "CompanionPageNumber", "CompanionSelectedName", "CompanionSummonButtonText", "ConsolidatedBuffsCount", "ConsolidatedBuffsDuration", "ConsolidatedBuffsIcon", "ContainerFrame10Background1Slot", "ContainerFrame10BackgroundBottom", "ContainerFrame10BackgroundMiddle1", "ContainerFrame10BackgroundMiddle2", "ContainerFrame10BackgroundTop", "ContainerFrame10Item10Count", "ContainerFrame10Item10IconQuestTexture", "ContainerFrame10Item10IconTexture", "ContainerFrame10Item10NormalTexture", "ContainerFrame10Item10Stock", "ContainerFrame10Item11Count", "ContainerFrame10Item11IconQuestTexture", "ContainerFrame10Item11IconTexture", "ContainerFrame10Item11NormalTexture", "ContainerFrame10Item11Stock", "ContainerFrame10Item12Count", "ContainerFrame10Item12IconQuestTexture", "ContainerFrame10Item12IconTexture", "ContainerFrame10Item12NormalTexture", "ContainerFrame10Item12Stock", "ContainerFrame10Item13Count", "ContainerFrame10Item13IconQuestTexture", "ContainerFrame10Item13IconTexture", "ContainerFrame10Item13NormalTexture", "ContainerFrame10Item13Stock", "ContainerFrame10Item14Count", "ContainerFrame10Item14IconQuestTexture", "ContainerFrame10Item14IconTexture", "ContainerFrame10Item14NormalTexture", "ContainerFrame10Item14Stock", "ContainerFrame10Item15Count", "ContainerFrame10Item15IconQuestTexture", "ContainerFrame10Item15IconTexture", "ContainerFrame10Item15NormalTexture", "ContainerFrame10Item15Stock", "ContainerFrame10Item16Count", "ContainerFrame10Item16IconQuestTexture", "ContainerFrame10Item16IconTexture", "ContainerFrame10Item16NormalTexture", "ContainerFrame10Item16Stock", "ContainerFrame10Item17Count", "ContainerFrame10Item17IconQuestTexture", "ContainerFrame10Item17IconTexture", "ContainerFrame10Item17NormalTexture", "ContainerFrame10Item17Stock", "ContainerFrame10Item18Count", "ContainerFrame10Item18IconQuestTexture", "ContainerFrame10Item18IconTexture", "ContainerFrame10Item18NormalTexture", "ContainerFrame10Item18Stock", "ContainerFrame10Item19Count", "ContainerFrame10Item19IconQuestTexture", "ContainerFrame10Item19IconTexture", "ContainerFrame10Item19NormalTexture", "ContainerFrame10Item19Stock", "ContainerFrame10Item1Count", "ContainerFrame10Item1IconQuestTexture", "ContainerFrame10Item1IconTexture", "ContainerFrame10Item1NormalTexture", "ContainerFrame10Item1Stock", "ContainerFrame10Item20Count", "ContainerFrame10Item20IconQuestTexture", "ContainerFrame10Item20IconTexture", "ContainerFrame10Item20NormalTexture", "ContainerFrame10Item20Stock", "ContainerFrame10Item21Count", "ContainerFrame10Item21IconQuestTexture", "ContainerFrame10Item21IconTexture", "ContainerFrame10Item21NormalTexture", "ContainerFrame10Item21Stock", "ContainerFrame10Item22Count", "ContainerFrame10Item22IconQuestTexture", "ContainerFrame10Item22IconTexture", "ContainerFrame10Item22NormalTexture", "ContainerFrame10Item22Stock", "ContainerFrame10Item23Count", "ContainerFrame10Item23IconQuestTexture", "ContainerFrame10Item23IconTexture", "ContainerFrame10Item23NormalTexture", "ContainerFrame10Item23Stock", "ContainerFrame10Item24Count", "ContainerFrame10Item24IconQuestTexture", "ContainerFrame10Item24IconTexture", "ContainerFrame10Item24NormalTexture", "ContainerFrame10Item24Stock", "ContainerFrame10Item25Count", "ContainerFrame10Item25IconQuestTexture", "ContainerFrame10Item25IconTexture", "ContainerFrame10Item25NormalTexture", "ContainerFrame10Item25Stock", "ContainerFrame10Item26Count", "ContainerFrame10Item26IconQuestTexture", "ContainerFrame10Item26IconTexture", "ContainerFrame10Item26NormalTexture", "ContainerFrame10Item26Stock", "ContainerFrame10Item27Count", "ContainerFrame10Item27IconQuestTexture", "ContainerFrame10Item27IconTexture", "ContainerFrame10Item27NormalTexture", "ContainerFrame10Item27Stock", "ContainerFrame10Item28Count", "ContainerFrame10Item28IconQuestTexture", "ContainerFrame10Item28IconTexture", "ContainerFrame10Item28NormalTexture", "ContainerFrame10Item28Stock", "ContainerFrame10Item29Count", "ContainerFrame10Item29IconQuestTexture", "ContainerFrame10Item29IconTexture", "ContainerFrame10Item29NormalTexture", "ContainerFrame10Item29Stock", "ContainerFrame10Item2Count", "ContainerFrame10Item2IconQuestTexture", "ContainerFrame10Item2IconTexture", "ContainerFrame10Item2NormalTexture", "ContainerFrame10Item2Stock", "ContainerFrame10Item30Count", "ContainerFrame10Item30IconQuestTexture", "ContainerFrame10Item30IconTexture", "ContainerFrame10Item30NormalTexture", "ContainerFrame10Item30Stock", "ContainerFrame10Item31Count", "ContainerFrame10Item31IconQuestTexture", "ContainerFrame10Item31IconTexture", "ContainerFrame10Item31NormalTexture", "ContainerFrame10Item31Stock", "ContainerFrame10Item32Count", "ContainerFrame10Item32IconQuestTexture", "ContainerFrame10Item32IconTexture", "ContainerFrame10Item32NormalTexture", "ContainerFrame10Item32Stock", "ContainerFrame10Item33Count", "ContainerFrame10Item33IconQuestTexture", "ContainerFrame10Item33IconTexture", "ContainerFrame10Item33NormalTexture", "ContainerFrame10Item33Stock", "ContainerFrame10Item34Count", "ContainerFrame10Item34IconQuestTexture", "ContainerFrame10Item34IconTexture", "ContainerFrame10Item34NormalTexture", "ContainerFrame10Item34Stock", "ContainerFrame10Item35Count", "ContainerFrame10Item35IconQuestTexture", "ContainerFrame10Item35IconTexture", "ContainerFrame10Item35NormalTexture", "ContainerFrame10Item35Stock", "ContainerFrame10Item36Count", "ContainerFrame10Item36IconQuestTexture", "ContainerFrame10Item36IconTexture", "ContainerFrame10Item36NormalTexture", "ContainerFrame10Item36Stock", "ContainerFrame10Item3Count", "ContainerFrame10Item3IconQuestTexture", "ContainerFrame10Item3IconTexture", "ContainerFrame10Item3NormalTexture", "ContainerFrame10Item3Stock", "ContainerFrame10Item4Count", "ContainerFrame10Item4IconQuestTexture", "ContainerFrame10Item4IconTexture", "ContainerFrame10Item4NormalTexture", "ContainerFrame10Item4Stock", "ContainerFrame10Item5Count", "ContainerFrame10Item5IconQuestTexture", "ContainerFrame10Item5IconTexture", "ContainerFrame10Item5NormalTexture", "ContainerFrame10Item5Stock", "ContainerFrame10Item6Count", "ContainerFrame10Item6IconQuestTexture", "ContainerFrame10Item6IconTexture", "ContainerFrame10Item6NormalTexture", "ContainerFrame10Item6Stock", "ContainerFrame10Item7Count", "ContainerFrame10Item7IconQuestTexture", "ContainerFrame10Item7IconTexture", "ContainerFrame10Item7NormalTexture", "ContainerFrame10Item7Stock", "ContainerFrame10Item8Count", "ContainerFrame10Item8IconQuestTexture", "ContainerFrame10Item8IconTexture", "ContainerFrame10Item8NormalTexture", "ContainerFrame10Item8Stock", "ContainerFrame10Item9Count", "ContainerFrame10Item9IconQuestTexture", "ContainerFrame10Item9IconTexture", "ContainerFrame10Item9NormalTexture", "ContainerFrame10Item9Stock", "ContainerFrame10MoneyFrameCopperButtonText", "ContainerFrame10MoneyFrameGoldButtonText", "ContainerFrame10MoneyFrameSilverButtonText", "ContainerFrame10Name", "ContainerFrame10Portrait", "ContainerFrame11Background1Slot", "ContainerFrame11BackgroundBottom", "ContainerFrame11BackgroundMiddle1", "ContainerFrame11BackgroundMiddle2", "ContainerFrame11BackgroundTop", "ContainerFrame11Item10Count", "ContainerFrame11Item10IconQuestTexture", "ContainerFrame11Item10IconTexture", "ContainerFrame11Item10NormalTexture", "ContainerFrame11Item10Stock", "ContainerFrame11Item11Count", "ContainerFrame11Item11IconQuestTexture", "ContainerFrame11Item11IconTexture", "ContainerFrame11Item11NormalTexture", "ContainerFrame11Item11Stock", "ContainerFrame11Item12Count", "ContainerFrame11Item12IconQuestTexture", "ContainerFrame11Item12IconTexture", "ContainerFrame11Item12NormalTexture", "ContainerFrame11Item12Stock", "ContainerFrame11Item13Count", "ContainerFrame11Item13IconQuestTexture", "ContainerFrame11Item13IconTexture", "ContainerFrame11Item13NormalTexture", "ContainerFrame11Item13Stock", "ContainerFrame11Item14Count", "ContainerFrame11Item14IconQuestTexture", "ContainerFrame11Item14IconTexture", "ContainerFrame11Item14NormalTexture", "ContainerFrame11Item14Stock", "ContainerFrame11Item15Count", "ContainerFrame11Item15IconQuestTexture", "ContainerFrame11Item15IconTexture", "ContainerFrame11Item15NormalTexture", "ContainerFrame11Item15Stock", "ContainerFrame11Item16Count", "ContainerFrame11Item16IconQuestTexture", "ContainerFrame11Item16IconTexture", "ContainerFrame11Item16NormalTexture", "ContainerFrame11Item16Stock", "ContainerFrame11Item17Count", "ContainerFrame11Item17IconQuestTexture", "ContainerFrame11Item17IconTexture", "ContainerFrame11Item17NormalTexture", "ContainerFrame11Item17Stock", "ContainerFrame11Item18Count", "ContainerFrame11Item18IconQuestTexture", "ContainerFrame11Item18IconTexture", "ContainerFrame11Item18NormalTexture", "ContainerFrame11Item18Stock", "ContainerFrame11Item19Count", "ContainerFrame11Item19IconQuestTexture", "ContainerFrame11Item19IconTexture", "ContainerFrame11Item19NormalTexture", "ContainerFrame11Item19Stock", "ContainerFrame11Item1Count", "ContainerFrame11Item1IconQuestTexture", "ContainerFrame11Item1IconTexture", "ContainerFrame11Item1NormalTexture", "ContainerFrame11Item1Stock", "ContainerFrame11Item20Count", "ContainerFrame11Item20IconQuestTexture", "ContainerFrame11Item20IconTexture", "ContainerFrame11Item20NormalTexture", "ContainerFrame11Item20Stock", "ContainerFrame11Item21Count", "ContainerFrame11Item21IconQuestTexture", "ContainerFrame11Item21IconTexture", "ContainerFrame11Item21NormalTexture", "ContainerFrame11Item21Stock", "ContainerFrame11Item22Count", "ContainerFrame11Item22IconQuestTexture", "ContainerFrame11Item22IconTexture", "ContainerFrame11Item22NormalTexture", "ContainerFrame11Item22Stock", "ContainerFrame11Item23Count", "ContainerFrame11Item23IconQuestTexture", "ContainerFrame11Item23IconTexture", "ContainerFrame11Item23NormalTexture", "ContainerFrame11Item23Stock", "ContainerFrame11Item24Count", "ContainerFrame11Item24IconQuestTexture", "ContainerFrame11Item24IconTexture", "ContainerFrame11Item24NormalTexture", "ContainerFrame11Item24Stock", "ContainerFrame11Item25Count", "ContainerFrame11Item25IconQuestTexture", "ContainerFrame11Item25IconTexture", "ContainerFrame11Item25NormalTexture", "ContainerFrame11Item25Stock", "ContainerFrame11Item26Count", "ContainerFrame11Item26IconQuestTexture", "ContainerFrame11Item26IconTexture", "ContainerFrame11Item26NormalTexture", "ContainerFrame11Item26Stock", "ContainerFrame11Item27Count", "ContainerFrame11Item27IconQuestTexture", "ContainerFrame11Item27IconTexture", "ContainerFrame11Item27NormalTexture", "ContainerFrame11Item27Stock", "ContainerFrame11Item28Count", "ContainerFrame11Item28IconQuestTexture", "ContainerFrame11Item28IconTexture", "ContainerFrame11Item28NormalTexture", "ContainerFrame11Item28Stock", "ContainerFrame11Item29Count", "ContainerFrame11Item29IconQuestTexture", "ContainerFrame11Item29IconTexture", "ContainerFrame11Item29NormalTexture", "ContainerFrame11Item29Stock", "ContainerFrame11Item2Count", "ContainerFrame11Item2IconQuestTexture", "ContainerFrame11Item2IconTexture", "ContainerFrame11Item2NormalTexture", "ContainerFrame11Item2Stock", "ContainerFrame11Item30Count", "ContainerFrame11Item30IconQuestTexture", "ContainerFrame11Item30IconTexture", "ContainerFrame11Item30NormalTexture", "ContainerFrame11Item30Stock", "ContainerFrame11Item31Count", "ContainerFrame11Item31IconQuestTexture", "ContainerFrame11Item31IconTexture", "ContainerFrame11Item31NormalTexture", "ContainerFrame11Item31Stock", "ContainerFrame11Item32Count", "ContainerFrame11Item32IconQuestTexture", "ContainerFrame11Item32IconTexture", "ContainerFrame11Item32NormalTexture", "ContainerFrame11Item32Stock", "ContainerFrame11Item33Count", "ContainerFrame11Item33IconQuestTexture", "ContainerFrame11Item33IconTexture", "ContainerFrame11Item33NormalTexture", "ContainerFrame11Item33Stock", "ContainerFrame11Item34Count", "ContainerFrame11Item34IconQuestTexture", "ContainerFrame11Item34IconTexture", "ContainerFrame11Item34NormalTexture", "ContainerFrame11Item34Stock", "ContainerFrame11Item35Count", "ContainerFrame11Item35IconQuestTexture", "ContainerFrame11Item35IconTexture", "ContainerFrame11Item35NormalTexture", "ContainerFrame11Item35Stock", "ContainerFrame11Item36Count", "ContainerFrame11Item36IconQuestTexture", "ContainerFrame11Item36IconTexture", "ContainerFrame11Item36NormalTexture", "ContainerFrame11Item36Stock", "ContainerFrame11Item3Count", "ContainerFrame11Item3IconQuestTexture", "ContainerFrame11Item3IconTexture", "ContainerFrame11Item3NormalTexture", "ContainerFrame11Item3Stock", "ContainerFrame11Item4Count", "ContainerFrame11Item4IconQuestTexture", "ContainerFrame11Item4IconTexture", "ContainerFrame11Item4NormalTexture", "ContainerFrame11Item4Stock", "ContainerFrame11Item5Count", "ContainerFrame11Item5IconQuestTexture", "ContainerFrame11Item5IconTexture", "ContainerFrame11Item5NormalTexture", "ContainerFrame11Item5Stock", "ContainerFrame11Item6Count", "ContainerFrame11Item6IconQuestTexture", "ContainerFrame11Item6IconTexture", "ContainerFrame11Item6NormalTexture", "ContainerFrame11Item6Stock", "ContainerFrame11Item7Count", "ContainerFrame11Item7IconQuestTexture", "ContainerFrame11Item7IconTexture", "ContainerFrame11Item7NormalTexture", "ContainerFrame11Item7Stock", "ContainerFrame11Item8Count", "ContainerFrame11Item8IconQuestTexture", "ContainerFrame11Item8IconTexture", "ContainerFrame11Item8NormalTexture", "ContainerFrame11Item8Stock", "ContainerFrame11Item9Count", "ContainerFrame11Item9IconQuestTexture", "ContainerFrame11Item9IconTexture", "ContainerFrame11Item9NormalTexture", "ContainerFrame11Item9Stock", "ContainerFrame11MoneyFrameCopperButtonText", "ContainerFrame11MoneyFrameGoldButtonText", "ContainerFrame11MoneyFrameSilverButtonText", "ContainerFrame11Name", "ContainerFrame11Portrait", "ContainerFrame12Background1Slot", "ContainerFrame12BackgroundBottom", "ContainerFrame12BackgroundMiddle1", "ContainerFrame12BackgroundMiddle2", "ContainerFrame12BackgroundTop", "ContainerFrame12Item10Count", "ContainerFrame12Item10IconQuestTexture", "ContainerFrame12Item10IconTexture", "ContainerFrame12Item10NormalTexture", "ContainerFrame12Item10Stock", "ContainerFrame12Item11Count", "ContainerFrame12Item11IconQuestTexture", "ContainerFrame12Item11IconTexture", "ContainerFrame12Item11NormalTexture", "ContainerFrame12Item11Stock", "ContainerFrame12Item12Count", "ContainerFrame12Item12IconQuestTexture", "ContainerFrame12Item12IconTexture", "ContainerFrame12Item12NormalTexture", "ContainerFrame12Item12Stock", "ContainerFrame12Item13Count", "ContainerFrame12Item13IconQuestTexture", "ContainerFrame12Item13IconTexture", "ContainerFrame12Item13NormalTexture", "ContainerFrame12Item13Stock", "ContainerFrame12Item14Count", "ContainerFrame12Item14IconQuestTexture", "ContainerFrame12Item14IconTexture", "ContainerFrame12Item14NormalTexture", "ContainerFrame12Item14Stock", "ContainerFrame12Item15Count", "ContainerFrame12Item15IconQuestTexture", "ContainerFrame12Item15IconTexture", "ContainerFrame12Item15NormalTexture", "ContainerFrame12Item15Stock", "ContainerFrame12Item16Count", "ContainerFrame12Item16IconQuestTexture", "ContainerFrame12Item16IconTexture", "ContainerFrame12Item16NormalTexture", "ContainerFrame12Item16Stock", "ContainerFrame12Item17Count", "ContainerFrame12Item17IconQuestTexture", "ContainerFrame12Item17IconTexture", "ContainerFrame12Item17NormalTexture", "ContainerFrame12Item17Stock", "ContainerFrame12Item18Count", "ContainerFrame12Item18IconQuestTexture", "ContainerFrame12Item18IconTexture", "ContainerFrame12Item18NormalTexture", "ContainerFrame12Item18Stock", "ContainerFrame12Item19Count", "ContainerFrame12Item19IconQuestTexture", "ContainerFrame12Item19IconTexture", "ContainerFrame12Item19NormalTexture", "ContainerFrame12Item19Stock", "ContainerFrame12Item1Count", "ContainerFrame12Item1IconQuestTexture", "ContainerFrame12Item1IconTexture", "ContainerFrame12Item1NormalTexture", "ContainerFrame12Item1Stock", "ContainerFrame12Item20Count", "ContainerFrame12Item20IconQuestTexture", "ContainerFrame12Item20IconTexture", "ContainerFrame12Item20NormalTexture", "ContainerFrame12Item20Stock", "ContainerFrame12Item21Count", "ContainerFrame12Item21IconQuestTexture", "ContainerFrame12Item21IconTexture", "ContainerFrame12Item21NormalTexture", "ContainerFrame12Item21Stock", "ContainerFrame12Item22Count", "ContainerFrame12Item22IconQuestTexture", "ContainerFrame12Item22IconTexture", "ContainerFrame12Item22NormalTexture", "ContainerFrame12Item22Stock", "ContainerFrame12Item23Count", "ContainerFrame12Item23IconQuestTexture", "ContainerFrame12Item23IconTexture", "ContainerFrame12Item23NormalTexture", "ContainerFrame12Item23Stock", "ContainerFrame12Item24Count", "ContainerFrame12Item24IconQuestTexture", "ContainerFrame12Item24IconTexture", "ContainerFrame12Item24NormalTexture", "ContainerFrame12Item24Stock", "ContainerFrame12Item25Count", "ContainerFrame12Item25IconQuestTexture", "ContainerFrame12Item25IconTexture", "ContainerFrame12Item25NormalTexture", "ContainerFrame12Item25Stock", "ContainerFrame12Item26Count", "ContainerFrame12Item26IconQuestTexture", "ContainerFrame12Item26IconTexture", "ContainerFrame12Item26NormalTexture", "ContainerFrame12Item26Stock", "ContainerFrame12Item27Count", "ContainerFrame12Item27IconQuestTexture", "ContainerFrame12Item27IconTexture", "ContainerFrame12Item27NormalTexture", "ContainerFrame12Item27Stock", "ContainerFrame12Item28Count", "ContainerFrame12Item28IconQuestTexture", "ContainerFrame12Item28IconTexture", "ContainerFrame12Item28NormalTexture", "ContainerFrame12Item28Stock", "ContainerFrame12Item29Count", "ContainerFrame12Item29IconQuestTexture", "ContainerFrame12Item29IconTexture", "ContainerFrame12Item29NormalTexture", "ContainerFrame12Item29Stock", "ContainerFrame12Item2Count", "ContainerFrame12Item2IconQuestTexture", "ContainerFrame12Item2IconTexture", "ContainerFrame12Item2NormalTexture", "ContainerFrame12Item2Stock", "ContainerFrame12Item30Count", "ContainerFrame12Item30IconQuestTexture", "ContainerFrame12Item30IconTexture", "ContainerFrame12Item30NormalTexture", "ContainerFrame12Item30Stock", "ContainerFrame12Item31Count", "ContainerFrame12Item31IconQuestTexture", "ContainerFrame12Item31IconTexture", "ContainerFrame12Item31NormalTexture", "ContainerFrame12Item31Stock", "ContainerFrame12Item32Count", "ContainerFrame12Item32IconQuestTexture", "ContainerFrame12Item32IconTexture", "ContainerFrame12Item32NormalTexture", "ContainerFrame12Item32Stock", "ContainerFrame12Item33Count", "ContainerFrame12Item33IconQuestTexture", "ContainerFrame12Item33IconTexture", "ContainerFrame12Item33NormalTexture", "ContainerFrame12Item33Stock", "ContainerFrame12Item34Count", "ContainerFrame12Item34IconQuestTexture", "ContainerFrame12Item34IconTexture", "ContainerFrame12Item34NormalTexture", "ContainerFrame12Item34Stock", "ContainerFrame12Item35Count", "ContainerFrame12Item35IconQuestTexture", "ContainerFrame12Item35IconTexture", "ContainerFrame12Item35NormalTexture", "ContainerFrame12Item35Stock", "ContainerFrame12Item36Count", "ContainerFrame12Item36IconQuestTexture", "ContainerFrame12Item36IconTexture", "ContainerFrame12Item36NormalTexture", "ContainerFrame12Item36Stock", "ContainerFrame12Item3Count", "ContainerFrame12Item3IconQuestTexture", "ContainerFrame12Item3IconTexture", "ContainerFrame12Item3NormalTexture", "ContainerFrame12Item3Stock", "ContainerFrame12Item4Count", "ContainerFrame12Item4IconQuestTexture", "ContainerFrame12Item4IconTexture", "ContainerFrame12Item4NormalTexture", "ContainerFrame12Item4Stock", "ContainerFrame12Item5Count", "ContainerFrame12Item5IconQuestTexture", "ContainerFrame12Item5IconTexture", "ContainerFrame12Item5NormalTexture", "ContainerFrame12Item5Stock", "ContainerFrame12Item6Count", "ContainerFrame12Item6IconQuestTexture", "ContainerFrame12Item6IconTexture", "ContainerFrame12Item6NormalTexture", "ContainerFrame12Item6Stock", "ContainerFrame12Item7Count", "ContainerFrame12Item7IconQuestTexture", "ContainerFrame12Item7IconTexture", "ContainerFrame12Item7NormalTexture", "ContainerFrame12Item7Stock", "ContainerFrame12Item8Count", "ContainerFrame12Item8IconQuestTexture", "ContainerFrame12Item8IconTexture", "ContainerFrame12Item8NormalTexture", "ContainerFrame12Item8Stock", "ContainerFrame12Item9Count", "ContainerFrame12Item9IconQuestTexture", "ContainerFrame12Item9IconTexture", "ContainerFrame12Item9NormalTexture", "ContainerFrame12Item9Stock", "ContainerFrame12MoneyFrameCopperButtonText", "ContainerFrame12MoneyFrameGoldButtonText", "ContainerFrame12MoneyFrameSilverButtonText", "ContainerFrame12Name", "ContainerFrame12Portrait", "ContainerFrame13Background1Slot", "ContainerFrame13BackgroundBottom", "ContainerFrame13BackgroundMiddle1", "ContainerFrame13BackgroundMiddle2", "ContainerFrame13BackgroundTop", "ContainerFrame13Item10Count", "ContainerFrame13Item10IconQuestTexture", "ContainerFrame13Item10IconTexture", "ContainerFrame13Item10NormalTexture", "ContainerFrame13Item10Stock", "ContainerFrame13Item11Count", "ContainerFrame13Item11IconQuestTexture", "ContainerFrame13Item11IconTexture", "ContainerFrame13Item11NormalTexture", "ContainerFrame13Item11Stock", "ContainerFrame13Item12Count", "ContainerFrame13Item12IconQuestTexture", "ContainerFrame13Item12IconTexture", "ContainerFrame13Item12NormalTexture", "ContainerFrame13Item12Stock", "ContainerFrame13Item13Count", "ContainerFrame13Item13IconQuestTexture", "ContainerFrame13Item13IconTexture", "ContainerFrame13Item13NormalTexture", "ContainerFrame13Item13Stock", "ContainerFrame13Item14Count", "ContainerFrame13Item14IconQuestTexture", "ContainerFrame13Item14IconTexture", "ContainerFrame13Item14NormalTexture", "ContainerFrame13Item14Stock", "ContainerFrame13Item15Count", "ContainerFrame13Item15IconQuestTexture", "ContainerFrame13Item15IconTexture", "ContainerFrame13Item15NormalTexture", "ContainerFrame13Item15Stock", "ContainerFrame13Item16Count", "ContainerFrame13Item16IconQuestTexture", "ContainerFrame13Item16IconTexture", "ContainerFrame13Item16NormalTexture", "ContainerFrame13Item16Stock", "ContainerFrame13Item17Count", "ContainerFrame13Item17IconQuestTexture", "ContainerFrame13Item17IconTexture", "ContainerFrame13Item17NormalTexture", "ContainerFrame13Item17Stock", "ContainerFrame13Item18Count", "ContainerFrame13Item18IconQuestTexture", "ContainerFrame13Item18IconTexture", "ContainerFrame13Item18NormalTexture", "ContainerFrame13Item18Stock", "ContainerFrame13Item19Count", "ContainerFrame13Item19IconQuestTexture", "ContainerFrame13Item19IconTexture", "ContainerFrame13Item19NormalTexture", "ContainerFrame13Item19Stock", "ContainerFrame13Item1Count", "ContainerFrame13Item1IconQuestTexture", "ContainerFrame13Item1IconTexture", "ContainerFrame13Item1NormalTexture", "ContainerFrame13Item1Stock", "ContainerFrame13Item20Count", "ContainerFrame13Item20IconQuestTexture", "ContainerFrame13Item20IconTexture", "ContainerFrame13Item20NormalTexture", "ContainerFrame13Item20Stock", "ContainerFrame13Item21Count", "ContainerFrame13Item21IconQuestTexture", "ContainerFrame13Item21IconTexture", "ContainerFrame13Item21NormalTexture", "ContainerFrame13Item21Stock", "ContainerFrame13Item22Count", "ContainerFrame13Item22IconQuestTexture", "ContainerFrame13Item22IconTexture", "ContainerFrame13Item22NormalTexture", "ContainerFrame13Item22Stock", "ContainerFrame13Item23Count", "ContainerFrame13Item23IconQuestTexture", "ContainerFrame13Item23IconTexture", "ContainerFrame13Item23NormalTexture", "ContainerFrame13Item23Stock", "ContainerFrame13Item24Count", "ContainerFrame13Item24IconQuestTexture", "ContainerFrame13Item24IconTexture", "ContainerFrame13Item24NormalTexture", "ContainerFrame13Item24Stock", "ContainerFrame13Item25Count", "ContainerFrame13Item25IconQuestTexture", "ContainerFrame13Item25IconTexture", "ContainerFrame13Item25NormalTexture", "ContainerFrame13Item25Stock", "ContainerFrame13Item26Count", "ContainerFrame13Item26IconQuestTexture", "ContainerFrame13Item26IconTexture", "ContainerFrame13Item26NormalTexture", "ContainerFrame13Item26Stock", "ContainerFrame13Item27Count", "ContainerFrame13Item27IconQuestTexture", "ContainerFrame13Item27IconTexture", "ContainerFrame13Item27NormalTexture", "ContainerFrame13Item27Stock", "ContainerFrame13Item28Count", "ContainerFrame13Item28IconQuestTexture", "ContainerFrame13Item28IconTexture", "ContainerFrame13Item28NormalTexture", "ContainerFrame13Item28Stock", "ContainerFrame13Item29Count", "ContainerFrame13Item29IconQuestTexture", "ContainerFrame13Item29IconTexture", "ContainerFrame13Item29NormalTexture", "ContainerFrame13Item29Stock", "ContainerFrame13Item2Count", "ContainerFrame13Item2IconQuestTexture", "ContainerFrame13Item2IconTexture", "ContainerFrame13Item2NormalTexture", "ContainerFrame13Item2Stock", "ContainerFrame13Item30Count", "ContainerFrame13Item30IconQuestTexture", "ContainerFrame13Item30IconTexture", "ContainerFrame13Item30NormalTexture", "ContainerFrame13Item30Stock", "ContainerFrame13Item31Count", "ContainerFrame13Item31IconQuestTexture", "ContainerFrame13Item31IconTexture", "ContainerFrame13Item31NormalTexture", "ContainerFrame13Item31Stock", "ContainerFrame13Item32Count", "ContainerFrame13Item32IconQuestTexture", "ContainerFrame13Item32IconTexture", "ContainerFrame13Item32NormalTexture", "ContainerFrame13Item32Stock", "ContainerFrame13Item33Count", "ContainerFrame13Item33IconQuestTexture", "ContainerFrame13Item33IconTexture", "ContainerFrame13Item33NormalTexture", "ContainerFrame13Item33Stock", "ContainerFrame13Item34Count", "ContainerFrame13Item34IconQuestTexture", "ContainerFrame13Item34IconTexture", "ContainerFrame13Item34NormalTexture", "ContainerFrame13Item34Stock", "ContainerFrame13Item35Count", "ContainerFrame13Item35IconQuestTexture", "ContainerFrame13Item35IconTexture", "ContainerFrame13Item35NormalTexture", "ContainerFrame13Item35Stock", "ContainerFrame13Item36Count", "ContainerFrame13Item36IconQuestTexture", "ContainerFrame13Item36IconTexture", "ContainerFrame13Item36NormalTexture", "ContainerFrame13Item36Stock", "ContainerFrame13Item3Count", "ContainerFrame13Item3IconQuestTexture", "ContainerFrame13Item3IconTexture", "ContainerFrame13Item3NormalTexture", "ContainerFrame13Item3Stock", "ContainerFrame13Item4Count", "ContainerFrame13Item4IconQuestTexture", "ContainerFrame13Item4IconTexture", "ContainerFrame13Item4NormalTexture", "ContainerFrame13Item4Stock", "ContainerFrame13Item5Count", "ContainerFrame13Item5IconQuestTexture", "ContainerFrame13Item5IconTexture", "ContainerFrame13Item5NormalTexture", "ContainerFrame13Item5Stock", "ContainerFrame13Item6Count", "ContainerFrame13Item6IconQuestTexture", "ContainerFrame13Item6IconTexture", "ContainerFrame13Item6NormalTexture", "ContainerFrame13Item6Stock", "ContainerFrame13Item7Count", "ContainerFrame13Item7IconQuestTexture", "ContainerFrame13Item7IconTexture", "ContainerFrame13Item7NormalTexture", "ContainerFrame13Item7Stock", "ContainerFrame13Item8Count", "ContainerFrame13Item8IconQuestTexture", "ContainerFrame13Item8IconTexture", "ContainerFrame13Item8NormalTexture", "ContainerFrame13Item8Stock", "ContainerFrame13Item9Count", "ContainerFrame13Item9IconQuestTexture", "ContainerFrame13Item9IconTexture", "ContainerFrame13Item9NormalTexture", "ContainerFrame13Item9Stock", "ContainerFrame13MoneyFrameCopperButtonText", "ContainerFrame13MoneyFrameGoldButtonText", "ContainerFrame13MoneyFrameSilverButtonText", "ContainerFrame13Name", "ContainerFrame13Portrait", "ContainerFrame1Background1Slot", "ContainerFrame1BackgroundBottom", "ContainerFrame1BackgroundMiddle1", "ContainerFrame1BackgroundMiddle2", "ContainerFrame1BackgroundTop", "ContainerFrame1Item10Count", "ContainerFrame1Item10IconQuestTexture", "ContainerFrame1Item10IconTexture", "ContainerFrame1Item10NormalTexture", "ContainerFrame1Item10Stock", "ContainerFrame1Item11Count", "ContainerFrame1Item11IconQuestTexture", "ContainerFrame1Item11IconTexture", "ContainerFrame1Item11NormalTexture", "ContainerFrame1Item11Stock", "ContainerFrame1Item12Count", "ContainerFrame1Item12IconQuestTexture", "ContainerFrame1Item12IconTexture", "ContainerFrame1Item12NormalTexture", "ContainerFrame1Item12Stock", "ContainerFrame1Item13Count", "ContainerFrame1Item13IconQuestTexture", "ContainerFrame1Item13IconTexture", "ContainerFrame1Item13NormalTexture", "ContainerFrame1Item13Stock", "ContainerFrame1Item14Count", "ContainerFrame1Item14IconQuestTexture", "ContainerFrame1Item14IconTexture", "ContainerFrame1Item14NormalTexture", "ContainerFrame1Item14Stock", "ContainerFrame1Item15Count", "ContainerFrame1Item15IconQuestTexture", "ContainerFrame1Item15IconTexture", "ContainerFrame1Item15NormalTexture", "ContainerFrame1Item15Stock", "ContainerFrame1Item16Count", "ContainerFrame1Item16IconQuestTexture", "ContainerFrame1Item16IconTexture", "ContainerFrame1Item16NormalTexture", "ContainerFrame1Item16Stock", "ContainerFrame1Item17Count", "ContainerFrame1Item17IconQuestTexture", "ContainerFrame1Item17IconTexture", "ContainerFrame1Item17NormalTexture", "ContainerFrame1Item17Stock", "ContainerFrame1Item18Count", "ContainerFrame1Item18IconQuestTexture", "ContainerFrame1Item18IconTexture", "ContainerFrame1Item18NormalTexture", "ContainerFrame1Item18Stock", "ContainerFrame1Item19Count", "ContainerFrame1Item19IconQuestTexture", "ContainerFrame1Item19IconTexture", "ContainerFrame1Item19NormalTexture", "ContainerFrame1Item19Stock", "ContainerFrame1Item1Count", "ContainerFrame1Item1IconQuestTexture", "ContainerFrame1Item1IconTexture", "ContainerFrame1Item1NormalTexture", "ContainerFrame1Item1Stock", "ContainerFrame1Item20Count", "ContainerFrame1Item20IconQuestTexture", "ContainerFrame1Item20IconTexture", "ContainerFrame1Item20NormalTexture", "ContainerFrame1Item20Stock", "ContainerFrame1Item21Count", "ContainerFrame1Item21IconQuestTexture", "ContainerFrame1Item21IconTexture", "ContainerFrame1Item21NormalTexture", "ContainerFrame1Item21Stock", "ContainerFrame1Item22Count", "ContainerFrame1Item22IconQuestTexture", "ContainerFrame1Item22IconTexture", "ContainerFrame1Item22NormalTexture", "ContainerFrame1Item22Stock", "ContainerFrame1Item23Count", "ContainerFrame1Item23IconQuestTexture", "ContainerFrame1Item23IconTexture", "ContainerFrame1Item23NormalTexture", "ContainerFrame1Item23Stock", "ContainerFrame1Item24Count", "ContainerFrame1Item24IconQuestTexture", "ContainerFrame1Item24IconTexture", "ContainerFrame1Item24NormalTexture", "ContainerFrame1Item24Stock", "ContainerFrame1Item25Count", "ContainerFrame1Item25IconQuestTexture", "ContainerFrame1Item25IconTexture", "ContainerFrame1Item25NormalTexture", "ContainerFrame1Item25Stock", "ContainerFrame1Item26Count", "ContainerFrame1Item26IconQuestTexture", "ContainerFrame1Item26IconTexture", "ContainerFrame1Item26NormalTexture", "ContainerFrame1Item26Stock", "ContainerFrame1Item27Count", "ContainerFrame1Item27IconQuestTexture", "ContainerFrame1Item27IconTexture", "ContainerFrame1Item27NormalTexture", "ContainerFrame1Item27Stock", "ContainerFrame1Item28Count", "ContainerFrame1Item28IconQuestTexture", "ContainerFrame1Item28IconTexture", "ContainerFrame1Item28NormalTexture", "ContainerFrame1Item28Stock", "ContainerFrame1Item29Count", "ContainerFrame1Item29IconQuestTexture", "ContainerFrame1Item29IconTexture", "ContainerFrame1Item29NormalTexture", "ContainerFrame1Item29Stock", "ContainerFrame1Item2Count", "ContainerFrame1Item2IconQuestTexture", "ContainerFrame1Item2IconTexture", "ContainerFrame1Item2NormalTexture", "ContainerFrame1Item2Stock", "ContainerFrame1Item30Count", "ContainerFrame1Item30IconQuestTexture", "ContainerFrame1Item30IconTexture", "ContainerFrame1Item30NormalTexture", "ContainerFrame1Item30Stock", "ContainerFrame1Item31Count", "ContainerFrame1Item31IconQuestTexture", "ContainerFrame1Item31IconTexture", "ContainerFrame1Item31NormalTexture", "ContainerFrame1Item31Stock", "ContainerFrame1Item32Count", "ContainerFrame1Item32IconQuestTexture", "ContainerFrame1Item32IconTexture", "ContainerFrame1Item32NormalTexture", "ContainerFrame1Item32Stock", "ContainerFrame1Item33Count", "ContainerFrame1Item33IconQuestTexture", "ContainerFrame1Item33IconTexture", "ContainerFrame1Item33NormalTexture", "ContainerFrame1Item33Stock", "ContainerFrame1Item34Count", "ContainerFrame1Item34IconQuestTexture", "ContainerFrame1Item34IconTexture", "ContainerFrame1Item34NormalTexture", "ContainerFrame1Item34Stock", "ContainerFrame1Item35Count", "ContainerFrame1Item35IconQuestTexture", "ContainerFrame1Item35IconTexture", "ContainerFrame1Item35NormalTexture", "ContainerFrame1Item35Stock", "ContainerFrame1Item36Count", "ContainerFrame1Item36IconQuestTexture", "ContainerFrame1Item36IconTexture", "ContainerFrame1Item36NormalTexture", "ContainerFrame1Item36Stock", "ContainerFrame1Item3Count", "ContainerFrame1Item3IconQuestTexture", "ContainerFrame1Item3IconTexture", "ContainerFrame1Item3NormalTexture", "ContainerFrame1Item3Stock", "ContainerFrame1Item4Count", "ContainerFrame1Item4IconQuestTexture", "ContainerFrame1Item4IconTexture", "ContainerFrame1Item4NormalTexture", "ContainerFrame1Item4Stock", "ContainerFrame1Item5Count", "ContainerFrame1Item5IconQuestTexture", "ContainerFrame1Item5IconTexture", "ContainerFrame1Item5NormalTexture", "ContainerFrame1Item5Stock", "ContainerFrame1Item6Count", "ContainerFrame1Item6IconQuestTexture", "ContainerFrame1Item6IconTexture", "ContainerFrame1Item6NormalTexture", "ContainerFrame1Item6Stock", "ContainerFrame1Item7Count", "ContainerFrame1Item7IconQuestTexture", "ContainerFrame1Item7IconTexture", "ContainerFrame1Item7NormalTexture", "ContainerFrame1Item7Stock", "ContainerFrame1Item8Count", "ContainerFrame1Item8IconQuestTexture", "ContainerFrame1Item8IconTexture", "ContainerFrame1Item8NormalTexture", "ContainerFrame1Item8Stock", "ContainerFrame1Item9Count", "ContainerFrame1Item9IconQuestTexture", "ContainerFrame1Item9IconTexture", "ContainerFrame1Item9NormalTexture", "ContainerFrame1Item9Stock", "ContainerFrame1MoneyFrameCopperButtonText", "ContainerFrame1MoneyFrameGoldButtonText", "ContainerFrame1MoneyFrameSilverButtonText", "ContainerFrame1Name", "ContainerFrame1Portrait", "ContainerFrame2Background1Slot", "ContainerFrame2BackgroundBottom", "ContainerFrame2BackgroundMiddle1", "ContainerFrame2BackgroundMiddle2", "ContainerFrame2BackgroundTop", "ContainerFrame2Item10Count", "ContainerFrame2Item10IconQuestTexture", "ContainerFrame2Item10IconTexture", "ContainerFrame2Item10NormalTexture", "ContainerFrame2Item10Stock", "ContainerFrame2Item11Count", "ContainerFrame2Item11IconQuestTexture", "ContainerFrame2Item11IconTexture", "ContainerFrame2Item11NormalTexture", "ContainerFrame2Item11Stock", "ContainerFrame2Item12Count", "ContainerFrame2Item12IconQuestTexture", "ContainerFrame2Item12IconTexture", "ContainerFrame2Item12NormalTexture", "ContainerFrame2Item12Stock", "ContainerFrame2Item13Count", "ContainerFrame2Item13IconQuestTexture", "ContainerFrame2Item13IconTexture", "ContainerFrame2Item13NormalTexture", "ContainerFrame2Item13Stock", "ContainerFrame2Item14Count", "ContainerFrame2Item14IconQuestTexture", "ContainerFrame2Item14IconTexture", "ContainerFrame2Item14NormalTexture", "ContainerFrame2Item14Stock", "ContainerFrame2Item15Count", "ContainerFrame2Item15IconQuestTexture", "ContainerFrame2Item15IconTexture", "ContainerFrame2Item15NormalTexture", "ContainerFrame2Item15Stock", "ContainerFrame2Item16Count", "ContainerFrame2Item16IconQuestTexture", "ContainerFrame2Item16IconTexture", "ContainerFrame2Item16NormalTexture", "ContainerFrame2Item16Stock", "ContainerFrame2Item17Count", "ContainerFrame2Item17IconQuestTexture", "ContainerFrame2Item17IconTexture", "ContainerFrame2Item17NormalTexture", "ContainerFrame2Item17Stock", "ContainerFrame2Item18Count", "ContainerFrame2Item18IconQuestTexture", "ContainerFrame2Item18IconTexture", "ContainerFrame2Item18NormalTexture", "ContainerFrame2Item18Stock", "ContainerFrame2Item19Count", "ContainerFrame2Item19IconQuestTexture", "ContainerFrame2Item19IconTexture", "ContainerFrame2Item19NormalTexture", "ContainerFrame2Item19Stock", "ContainerFrame2Item1Count", "ContainerFrame2Item1IconQuestTexture", "ContainerFrame2Item1IconTexture", "ContainerFrame2Item1NormalTexture", "ContainerFrame2Item1Stock", "ContainerFrame2Item20Count", "ContainerFrame2Item20IconQuestTexture", "ContainerFrame2Item20IconTexture", "ContainerFrame2Item20NormalTexture", "ContainerFrame2Item20Stock", "ContainerFrame2Item21Count", "ContainerFrame2Item21IconQuestTexture", "ContainerFrame2Item21IconTexture", "ContainerFrame2Item21NormalTexture", "ContainerFrame2Item21Stock", "ContainerFrame2Item22Count", "ContainerFrame2Item22IconQuestTexture", "ContainerFrame2Item22IconTexture", "ContainerFrame2Item22NormalTexture", "ContainerFrame2Item22Stock", "ContainerFrame2Item23Count", "ContainerFrame2Item23IconQuestTexture", "ContainerFrame2Item23IconTexture", "ContainerFrame2Item23NormalTexture", "ContainerFrame2Item23Stock", "ContainerFrame2Item24Count", "ContainerFrame2Item24IconQuestTexture", "ContainerFrame2Item24IconTexture", "ContainerFrame2Item24NormalTexture", "ContainerFrame2Item24Stock", "ContainerFrame2Item25Count", "ContainerFrame2Item25IconQuestTexture", "ContainerFrame2Item25IconTexture", "ContainerFrame2Item25NormalTexture", "ContainerFrame2Item25Stock", "ContainerFrame2Item26Count", "ContainerFrame2Item26IconQuestTexture", "ContainerFrame2Item26IconTexture", "ContainerFrame2Item26NormalTexture", "ContainerFrame2Item26Stock", "ContainerFrame2Item27Count", "ContainerFrame2Item27IconQuestTexture", "ContainerFrame2Item27IconTexture", "ContainerFrame2Item27NormalTexture", "ContainerFrame2Item27Stock", "ContainerFrame2Item28Count", "ContainerFrame2Item28IconQuestTexture", "ContainerFrame2Item28IconTexture", "ContainerFrame2Item28NormalTexture", "ContainerFrame2Item28Stock", "ContainerFrame2Item29Count", "ContainerFrame2Item29IconQuestTexture", "ContainerFrame2Item29IconTexture", "ContainerFrame2Item29NormalTexture", "ContainerFrame2Item29Stock", "ContainerFrame2Item2Count", "ContainerFrame2Item2IconQuestTexture", "ContainerFrame2Item2IconTexture", "ContainerFrame2Item2NormalTexture", "ContainerFrame2Item2Stock", "ContainerFrame2Item30Count", "ContainerFrame2Item30IconQuestTexture", "ContainerFrame2Item30IconTexture", "ContainerFrame2Item30NormalTexture", "ContainerFrame2Item30Stock", "ContainerFrame2Item31Count", "ContainerFrame2Item31IconQuestTexture", "ContainerFrame2Item31IconTexture", "ContainerFrame2Item31NormalTexture", "ContainerFrame2Item31Stock", "ContainerFrame2Item32Count", "ContainerFrame2Item32IconQuestTexture", "ContainerFrame2Item32IconTexture", "ContainerFrame2Item32NormalTexture", "ContainerFrame2Item32Stock", "ContainerFrame2Item33Count", "ContainerFrame2Item33IconQuestTexture", "ContainerFrame2Item33IconTexture", "ContainerFrame2Item33NormalTexture", "ContainerFrame2Item33Stock", "ContainerFrame2Item34Count", "ContainerFrame2Item34IconQuestTexture", "ContainerFrame2Item34IconTexture", "ContainerFrame2Item34NormalTexture", "ContainerFrame2Item34Stock", "ContainerFrame2Item35Count", "ContainerFrame2Item35IconQuestTexture", "ContainerFrame2Item35IconTexture", "ContainerFrame2Item35NormalTexture", "ContainerFrame2Item35Stock", "ContainerFrame2Item36Count", "ContainerFrame2Item36IconQuestTexture", "ContainerFrame2Item36IconTexture", "ContainerFrame2Item36NormalTexture", "ContainerFrame2Item36Stock", "ContainerFrame2Item3Count", "ContainerFrame2Item3IconQuestTexture", "ContainerFrame2Item3IconTexture", "ContainerFrame2Item3NormalTexture", "ContainerFrame2Item3Stock", "ContainerFrame2Item4Count", "ContainerFrame2Item4IconQuestTexture", "ContainerFrame2Item4IconTexture", "ContainerFrame2Item4NormalTexture", "ContainerFrame2Item4Stock", "ContainerFrame2Item5Count", "ContainerFrame2Item5IconQuestTexture", "ContainerFrame2Item5IconTexture", "ContainerFrame2Item5NormalTexture", "ContainerFrame2Item5Stock", "ContainerFrame2Item6Count", "ContainerFrame2Item6IconQuestTexture", "ContainerFrame2Item6IconTexture", "ContainerFrame2Item6NormalTexture", "ContainerFrame2Item6Stock", "ContainerFrame2Item7Count", "ContainerFrame2Item7IconQuestTexture", "ContainerFrame2Item7IconTexture", "ContainerFrame2Item7NormalTexture", "ContainerFrame2Item7Stock", "ContainerFrame2Item8Count", "ContainerFrame2Item8IconQuestTexture", "ContainerFrame2Item8IconTexture", "ContainerFrame2Item8NormalTexture", "ContainerFrame2Item8Stock", "ContainerFrame2Item9Count", "ContainerFrame2Item9IconQuestTexture", "ContainerFrame2Item9IconTexture", "ContainerFrame2Item9NormalTexture", "ContainerFrame2Item9Stock", "ContainerFrame2MoneyFrameCopperButtonText", "ContainerFrame2MoneyFrameGoldButtonText", "ContainerFrame2MoneyFrameSilverButtonText", "ContainerFrame2Name", "ContainerFrame2Portrait", "ContainerFrame3Background1Slot", "ContainerFrame3BackgroundBottom", "ContainerFrame3BackgroundMiddle1", "ContainerFrame3BackgroundMiddle2", "ContainerFrame3BackgroundTop", "ContainerFrame3Item10Count", "ContainerFrame3Item10IconQuestTexture", "ContainerFrame3Item10IconTexture", "ContainerFrame3Item10NormalTexture", "ContainerFrame3Item10Stock", "ContainerFrame3Item11Count", "ContainerFrame3Item11IconQuestTexture", "ContainerFrame3Item11IconTexture", "ContainerFrame3Item11NormalTexture", "ContainerFrame3Item11Stock", "ContainerFrame3Item12Count", "ContainerFrame3Item12IconQuestTexture", "ContainerFrame3Item12IconTexture", "ContainerFrame3Item12NormalTexture", "ContainerFrame3Item12Stock", "ContainerFrame3Item13Count", "ContainerFrame3Item13IconQuestTexture", "ContainerFrame3Item13IconTexture", "ContainerFrame3Item13NormalTexture", "ContainerFrame3Item13Stock", "ContainerFrame3Item14Count", "ContainerFrame3Item14IconQuestTexture", "ContainerFrame3Item14IconTexture", "ContainerFrame3Item14NormalTexture", "ContainerFrame3Item14Stock", "ContainerFrame3Item15Count", "ContainerFrame3Item15IconQuestTexture", "ContainerFrame3Item15IconTexture", "ContainerFrame3Item15NormalTexture", "ContainerFrame3Item15Stock", "ContainerFrame3Item16Count", "ContainerFrame3Item16IconQuestTexture", "ContainerFrame3Item16IconTexture", "ContainerFrame3Item16NormalTexture", "ContainerFrame3Item16Stock", "ContainerFrame3Item17Count", "ContainerFrame3Item17IconQuestTexture", "ContainerFrame3Item17IconTexture", "ContainerFrame3Item17NormalTexture", "ContainerFrame3Item17Stock", "ContainerFrame3Item18Count", "ContainerFrame3Item18IconQuestTexture", "ContainerFrame3Item18IconTexture", "ContainerFrame3Item18NormalTexture", "ContainerFrame3Item18Stock", "ContainerFrame3Item19Count", "ContainerFrame3Item19IconQuestTexture", "ContainerFrame3Item19IconTexture", "ContainerFrame3Item19NormalTexture", "ContainerFrame3Item19Stock", "ContainerFrame3Item1Count", "ContainerFrame3Item1IconQuestTexture", "ContainerFrame3Item1IconTexture", "ContainerFrame3Item1NormalTexture", "ContainerFrame3Item1Stock", "ContainerFrame3Item20Count", "ContainerFrame3Item20IconQuestTexture", "ContainerFrame3Item20IconTexture", "ContainerFrame3Item20NormalTexture", "ContainerFrame3Item20Stock", "ContainerFrame3Item21Count", "ContainerFrame3Item21IconQuestTexture", "ContainerFrame3Item21IconTexture", "ContainerFrame3Item21NormalTexture", "ContainerFrame3Item21Stock", "ContainerFrame3Item22Count", "ContainerFrame3Item22IconQuestTexture", "ContainerFrame3Item22IconTexture", "ContainerFrame3Item22NormalTexture", "ContainerFrame3Item22Stock", "ContainerFrame3Item23Count", "ContainerFrame3Item23IconQuestTexture", "ContainerFrame3Item23IconTexture", "ContainerFrame3Item23NormalTexture", "ContainerFrame3Item23Stock", "ContainerFrame3Item24Count", "ContainerFrame3Item24IconQuestTexture", "ContainerFrame3Item24IconTexture", "ContainerFrame3Item24NormalTexture", "ContainerFrame3Item24Stock", "ContainerFrame3Item25Count", "ContainerFrame3Item25IconQuestTexture", "ContainerFrame3Item25IconTexture", "ContainerFrame3Item25NormalTexture", "ContainerFrame3Item25Stock", "ContainerFrame3Item26Count", "ContainerFrame3Item26IconQuestTexture", "ContainerFrame3Item26IconTexture", "ContainerFrame3Item26NormalTexture", "ContainerFrame3Item26Stock", "ContainerFrame3Item27Count", "ContainerFrame3Item27IconQuestTexture", "ContainerFrame3Item27IconTexture", "ContainerFrame3Item27NormalTexture", "ContainerFrame3Item27Stock", "ContainerFrame3Item28Count", "ContainerFrame3Item28IconQuestTexture", "ContainerFrame3Item28IconTexture", "ContainerFrame3Item28NormalTexture", "ContainerFrame3Item28Stock", "ContainerFrame3Item29Count", "ContainerFrame3Item29IconQuestTexture", "ContainerFrame3Item29IconTexture", "ContainerFrame3Item29NormalTexture", "ContainerFrame3Item29Stock", "ContainerFrame3Item2Count", "ContainerFrame3Item2IconQuestTexture", "ContainerFrame3Item2IconTexture", "ContainerFrame3Item2NormalTexture", "ContainerFrame3Item2Stock", "ContainerFrame3Item30Count", "ContainerFrame3Item30IconQuestTexture", "ContainerFrame3Item30IconTexture", "ContainerFrame3Item30NormalTexture", "ContainerFrame3Item30Stock", "ContainerFrame3Item31Count", "ContainerFrame3Item31IconQuestTexture", "ContainerFrame3Item31IconTexture", "ContainerFrame3Item31NormalTexture", "ContainerFrame3Item31Stock", "ContainerFrame3Item32Count", "ContainerFrame3Item32IconQuestTexture", "ContainerFrame3Item32IconTexture", "ContainerFrame3Item32NormalTexture", "ContainerFrame3Item32Stock", "ContainerFrame3Item33Count", "ContainerFrame3Item33IconQuestTexture", "ContainerFrame3Item33IconTexture", "ContainerFrame3Item33NormalTexture", "ContainerFrame3Item33Stock", "ContainerFrame3Item34Count", "ContainerFrame3Item34IconQuestTexture", "ContainerFrame3Item34IconTexture", "ContainerFrame3Item34NormalTexture", "ContainerFrame3Item34Stock", "ContainerFrame3Item35Count", "ContainerFrame3Item35IconQuestTexture", "ContainerFrame3Item35IconTexture", "ContainerFrame3Item35NormalTexture", "ContainerFrame3Item35Stock", "ContainerFrame3Item36Count", "ContainerFrame3Item36IconQuestTexture", "ContainerFrame3Item36IconTexture", "ContainerFrame3Item36NormalTexture", "ContainerFrame3Item36Stock", "ContainerFrame3Item3Count", "ContainerFrame3Item3IconQuestTexture", "ContainerFrame3Item3IconTexture", "ContainerFrame3Item3NormalTexture", "ContainerFrame3Item3Stock", "ContainerFrame3Item4Count", "ContainerFrame3Item4IconQuestTexture", "ContainerFrame3Item4IconTexture", "ContainerFrame3Item4NormalTexture", "ContainerFrame3Item4Stock", "ContainerFrame3Item5Count", "ContainerFrame3Item5IconQuestTexture", "ContainerFrame3Item5IconTexture", "ContainerFrame3Item5NormalTexture", "ContainerFrame3Item5Stock", "ContainerFrame3Item6Count", "ContainerFrame3Item6IconQuestTexture", "ContainerFrame3Item6IconTexture", "ContainerFrame3Item6NormalTexture", "ContainerFrame3Item6Stock", "ContainerFrame3Item7Count", "ContainerFrame3Item7IconQuestTexture", "ContainerFrame3Item7IconTexture", "ContainerFrame3Item7NormalTexture", "ContainerFrame3Item7Stock", "ContainerFrame3Item8Count", "ContainerFrame3Item8IconQuestTexture", "ContainerFrame3Item8IconTexture", "ContainerFrame3Item8NormalTexture", "ContainerFrame3Item8Stock", "ContainerFrame3Item9Count", "ContainerFrame3Item9IconQuestTexture", "ContainerFrame3Item9IconTexture", "ContainerFrame3Item9NormalTexture", "ContainerFrame3Item9Stock", "ContainerFrame3MoneyFrameCopperButtonText", "ContainerFrame3MoneyFrameGoldButtonText", "ContainerFrame3MoneyFrameSilverButtonText", "ContainerFrame3Name", "ContainerFrame3Portrait", "ContainerFrame4Background1Slot", "ContainerFrame4BackgroundBottom", "ContainerFrame4BackgroundMiddle1", "ContainerFrame4BackgroundMiddle2", "ContainerFrame4BackgroundTop", "ContainerFrame4Item10Count", "ContainerFrame4Item10IconQuestTexture", "ContainerFrame4Item10IconTexture", "ContainerFrame4Item10NormalTexture", "ContainerFrame4Item10Stock", "ContainerFrame4Item11Count", "ContainerFrame4Item11IconQuestTexture", "ContainerFrame4Item11IconTexture", "ContainerFrame4Item11NormalTexture", "ContainerFrame4Item11Stock", "ContainerFrame4Item12Count", "ContainerFrame4Item12IconQuestTexture", "ContainerFrame4Item12IconTexture", "ContainerFrame4Item12NormalTexture", "ContainerFrame4Item12Stock", "ContainerFrame4Item13Count", "ContainerFrame4Item13IconQuestTexture", "ContainerFrame4Item13IconTexture", "ContainerFrame4Item13NormalTexture", "ContainerFrame4Item13Stock", "ContainerFrame4Item14Count", "ContainerFrame4Item14IconQuestTexture", "ContainerFrame4Item14IconTexture", "ContainerFrame4Item14NormalTexture", "ContainerFrame4Item14Stock", "ContainerFrame4Item15Count", "ContainerFrame4Item15IconQuestTexture", "ContainerFrame4Item15IconTexture", "ContainerFrame4Item15NormalTexture", "ContainerFrame4Item15Stock", "ContainerFrame4Item16Count", "ContainerFrame4Item16IconQuestTexture", "ContainerFrame4Item16IconTexture", "ContainerFrame4Item16NormalTexture", "ContainerFrame4Item16Stock", "ContainerFrame4Item17Count", "ContainerFrame4Item17IconQuestTexture", "ContainerFrame4Item17IconTexture", "ContainerFrame4Item17NormalTexture", "ContainerFrame4Item17Stock", "ContainerFrame4Item18Count", "ContainerFrame4Item18IconQuestTexture", "ContainerFrame4Item18IconTexture", "ContainerFrame4Item18NormalTexture", "ContainerFrame4Item18Stock", "ContainerFrame4Item19Count", "ContainerFrame4Item19IconQuestTexture", "ContainerFrame4Item19IconTexture", "ContainerFrame4Item19NormalTexture", "ContainerFrame4Item19Stock", "ContainerFrame4Item1Count", "ContainerFrame4Item1IconQuestTexture", "ContainerFrame4Item1IconTexture", "ContainerFrame4Item1NormalTexture", "ContainerFrame4Item1Stock", "ContainerFrame4Item20Count", "ContainerFrame4Item20IconQuestTexture", "ContainerFrame4Item20IconTexture", "ContainerFrame4Item20NormalTexture", "ContainerFrame4Item20Stock", "ContainerFrame4Item21Count", "ContainerFrame4Item21IconQuestTexture", "ContainerFrame4Item21IconTexture", "ContainerFrame4Item21NormalTexture", "ContainerFrame4Item21Stock", "ContainerFrame4Item22Count", "ContainerFrame4Item22IconQuestTexture", "ContainerFrame4Item22IconTexture", "ContainerFrame4Item22NormalTexture", "ContainerFrame4Item22Stock", "ContainerFrame4Item23Count", "ContainerFrame4Item23IconQuestTexture", "ContainerFrame4Item23IconTexture", "ContainerFrame4Item23NormalTexture", "ContainerFrame4Item23Stock", "ContainerFrame4Item24Count", "ContainerFrame4Item24IconQuestTexture", "ContainerFrame4Item24IconTexture", "ContainerFrame4Item24NormalTexture", "ContainerFrame4Item24Stock", "ContainerFrame4Item25Count", "ContainerFrame4Item25IconQuestTexture", "ContainerFrame4Item25IconTexture", "ContainerFrame4Item25NormalTexture", "ContainerFrame4Item25Stock", "ContainerFrame4Item26Count", "ContainerFrame4Item26IconQuestTexture", "ContainerFrame4Item26IconTexture", "ContainerFrame4Item26NormalTexture", "ContainerFrame4Item26Stock", "ContainerFrame4Item27Count", "ContainerFrame4Item27IconQuestTexture", "ContainerFrame4Item27IconTexture", "ContainerFrame4Item27NormalTexture", "ContainerFrame4Item27Stock", "ContainerFrame4Item28Count", "ContainerFrame4Item28IconQuestTexture", "ContainerFrame4Item28IconTexture", "ContainerFrame4Item28NormalTexture", "ContainerFrame4Item28Stock", "ContainerFrame4Item29Count", "ContainerFrame4Item29IconQuestTexture", "ContainerFrame4Item29IconTexture", "ContainerFrame4Item29NormalTexture", "ContainerFrame4Item29Stock", "ContainerFrame4Item2Count", "ContainerFrame4Item2IconQuestTexture", "ContainerFrame4Item2IconTexture", "ContainerFrame4Item2NormalTexture", "ContainerFrame4Item2Stock", "ContainerFrame4Item30Count", "ContainerFrame4Item30IconQuestTexture", "ContainerFrame4Item30IconTexture", "ContainerFrame4Item30NormalTexture", "ContainerFrame4Item30Stock", "ContainerFrame4Item31Count", "ContainerFrame4Item31IconQuestTexture", "ContainerFrame4Item31IconTexture", "ContainerFrame4Item31NormalTexture", "ContainerFrame4Item31Stock", "ContainerFrame4Item32Count", "ContainerFrame4Item32IconQuestTexture", "ContainerFrame4Item32IconTexture", "ContainerFrame4Item32NormalTexture", "ContainerFrame4Item32Stock", "ContainerFrame4Item33Count", "ContainerFrame4Item33IconQuestTexture", "ContainerFrame4Item33IconTexture", "ContainerFrame4Item33NormalTexture", "ContainerFrame4Item33Stock", "ContainerFrame4Item34Count", "ContainerFrame4Item34IconQuestTexture", "ContainerFrame4Item34IconTexture", "ContainerFrame4Item34NormalTexture", "ContainerFrame4Item34Stock", "ContainerFrame4Item35Count", "ContainerFrame4Item35IconQuestTexture", "ContainerFrame4Item35IconTexture", "ContainerFrame4Item35NormalTexture", "ContainerFrame4Item35Stock", "ContainerFrame4Item36Count", "ContainerFrame4Item36IconQuestTexture", "ContainerFrame4Item36IconTexture", "ContainerFrame4Item36NormalTexture", "ContainerFrame4Item36Stock", "ContainerFrame4Item3Count", "ContainerFrame4Item3IconQuestTexture", "ContainerFrame4Item3IconTexture", "ContainerFrame4Item3NormalTexture", "ContainerFrame4Item3Stock", "ContainerFrame4Item4Count", "ContainerFrame4Item4IconQuestTexture", "ContainerFrame4Item4IconTexture", "ContainerFrame4Item4NormalTexture", "ContainerFrame4Item4Stock", "ContainerFrame4Item5Count", "ContainerFrame4Item5IconQuestTexture", "ContainerFrame4Item5IconTexture", "ContainerFrame4Item5NormalTexture", "ContainerFrame4Item5Stock", "ContainerFrame4Item6Count", "ContainerFrame4Item6IconQuestTexture", "ContainerFrame4Item6IconTexture", "ContainerFrame4Item6NormalTexture", "ContainerFrame4Item6Stock", "ContainerFrame4Item7Count", "ContainerFrame4Item7IconQuestTexture", "ContainerFrame4Item7IconTexture", "ContainerFrame4Item7NormalTexture", "ContainerFrame4Item7Stock", "ContainerFrame4Item8Count", "ContainerFrame4Item8IconQuestTexture", "ContainerFrame4Item8IconTexture", "ContainerFrame4Item8NormalTexture", "ContainerFrame4Item8Stock", "ContainerFrame4Item9Count", "ContainerFrame4Item9IconQuestTexture", "ContainerFrame4Item9IconTexture", "ContainerFrame4Item9NormalTexture", "ContainerFrame4Item9Stock", "ContainerFrame4MoneyFrameCopperButtonText", "ContainerFrame4MoneyFrameGoldButtonText", "ContainerFrame4MoneyFrameSilverButtonText", "ContainerFrame4Name", "ContainerFrame4Portrait", "ContainerFrame5Background1Slot", "ContainerFrame5BackgroundBottom", "ContainerFrame5BackgroundMiddle1", "ContainerFrame5BackgroundMiddle2", "ContainerFrame5BackgroundTop", "ContainerFrame5Item10Count", "ContainerFrame5Item10IconQuestTexture", "ContainerFrame5Item10IconTexture", "ContainerFrame5Item10NormalTexture", "ContainerFrame5Item10Stock", "ContainerFrame5Item11Count", "ContainerFrame5Item11IconQuestTexture", "ContainerFrame5Item11IconTexture", "ContainerFrame5Item11NormalTexture", "ContainerFrame5Item11Stock", "ContainerFrame5Item12Count", "ContainerFrame5Item12IconQuestTexture", "ContainerFrame5Item12IconTexture", "ContainerFrame5Item12NormalTexture", "ContainerFrame5Item12Stock", "ContainerFrame5Item13Count", "ContainerFrame5Item13IconQuestTexture", "ContainerFrame5Item13IconTexture", "ContainerFrame5Item13NormalTexture", "ContainerFrame5Item13Stock", "ContainerFrame5Item14Count", "ContainerFrame5Item14IconQuestTexture", "ContainerFrame5Item14IconTexture", "ContainerFrame5Item14NormalTexture", "ContainerFrame5Item14Stock", "ContainerFrame5Item15Count", "ContainerFrame5Item15IconQuestTexture", "ContainerFrame5Item15IconTexture", "ContainerFrame5Item15NormalTexture", "ContainerFrame5Item15Stock", "ContainerFrame5Item16Count", "ContainerFrame5Item16IconQuestTexture", "ContainerFrame5Item16IconTexture", "ContainerFrame5Item16NormalTexture", "ContainerFrame5Item16Stock", "ContainerFrame5Item17Count", "ContainerFrame5Item17IconQuestTexture", "ContainerFrame5Item17IconTexture", "ContainerFrame5Item17NormalTexture", "ContainerFrame5Item17Stock", "ContainerFrame5Item18Count", "ContainerFrame5Item18IconQuestTexture", "ContainerFrame5Item18IconTexture", "ContainerFrame5Item18NormalTexture", "ContainerFrame5Item18Stock", "ContainerFrame5Item19Count", "ContainerFrame5Item19IconQuestTexture", "ContainerFrame5Item19IconTexture", "ContainerFrame5Item19NormalTexture", "ContainerFrame5Item19Stock", "ContainerFrame5Item1Count", "ContainerFrame5Item1IconQuestTexture", "ContainerFrame5Item1IconTexture", "ContainerFrame5Item1NormalTexture", "ContainerFrame5Item1Stock", "ContainerFrame5Item20Count", "ContainerFrame5Item20IconQuestTexture", "ContainerFrame5Item20IconTexture", "ContainerFrame5Item20NormalTexture", "ContainerFrame5Item20Stock", "ContainerFrame5Item21Count", "ContainerFrame5Item21IconQuestTexture", "ContainerFrame5Item21IconTexture", "ContainerFrame5Item21NormalTexture", "ContainerFrame5Item21Stock", "ContainerFrame5Item22Count", "ContainerFrame5Item22IconQuestTexture", "ContainerFrame5Item22IconTexture", "ContainerFrame5Item22NormalTexture", "ContainerFrame5Item22Stock", "ContainerFrame5Item23Count", "ContainerFrame5Item23IconQuestTexture", "ContainerFrame5Item23IconTexture", "ContainerFrame5Item23NormalTexture", "ContainerFrame5Item23Stock", "ContainerFrame5Item24Count", "ContainerFrame5Item24IconQuestTexture", "ContainerFrame5Item24IconTexture", "ContainerFrame5Item24NormalTexture", "ContainerFrame5Item24Stock", "ContainerFrame5Item25Count", "ContainerFrame5Item25IconQuestTexture", "ContainerFrame5Item25IconTexture", "ContainerFrame5Item25NormalTexture", "ContainerFrame5Item25Stock", "ContainerFrame5Item26Count", "ContainerFrame5Item26IconQuestTexture", "ContainerFrame5Item26IconTexture", "ContainerFrame5Item26NormalTexture", "ContainerFrame5Item26Stock", "ContainerFrame5Item27Count", "ContainerFrame5Item27IconQuestTexture", "ContainerFrame5Item27IconTexture", "ContainerFrame5Item27NormalTexture", "ContainerFrame5Item27Stock", "ContainerFrame5Item28Count", "ContainerFrame5Item28IconQuestTexture", "ContainerFrame5Item28IconTexture", "ContainerFrame5Item28NormalTexture", "ContainerFrame5Item28Stock", "ContainerFrame5Item29Count", "ContainerFrame5Item29IconQuestTexture", "ContainerFrame5Item29IconTexture", "ContainerFrame5Item29NormalTexture", "ContainerFrame5Item29Stock", "ContainerFrame5Item2Count", "ContainerFrame5Item2IconQuestTexture", "ContainerFrame5Item2IconTexture", "ContainerFrame5Item2NormalTexture", "ContainerFrame5Item2Stock", "ContainerFrame5Item30Count", "ContainerFrame5Item30IconQuestTexture", "ContainerFrame5Item30IconTexture", "ContainerFrame5Item30NormalTexture", "ContainerFrame5Item30Stock", "ContainerFrame5Item31Count", "ContainerFrame5Item31IconQuestTexture", "ContainerFrame5Item31IconTexture", "ContainerFrame5Item31NormalTexture", "ContainerFrame5Item31Stock", "ContainerFrame5Item32Count", "ContainerFrame5Item32IconQuestTexture", "ContainerFrame5Item32IconTexture", "ContainerFrame5Item32NormalTexture", "ContainerFrame5Item32Stock", "ContainerFrame5Item33Count", "ContainerFrame5Item33IconQuestTexture", "ContainerFrame5Item33IconTexture", "ContainerFrame5Item33NormalTexture", "ContainerFrame5Item33Stock", "ContainerFrame5Item34Count", "ContainerFrame5Item34IconQuestTexture", "ContainerFrame5Item34IconTexture", "ContainerFrame5Item34NormalTexture", "ContainerFrame5Item34Stock", "ContainerFrame5Item35Count", "ContainerFrame5Item35IconQuestTexture", "ContainerFrame5Item35IconTexture", "ContainerFrame5Item35NormalTexture", "ContainerFrame5Item35Stock", "ContainerFrame5Item36Count", "ContainerFrame5Item36IconQuestTexture", "ContainerFrame5Item36IconTexture", "ContainerFrame5Item36NormalTexture", "ContainerFrame5Item36Stock", "ContainerFrame5Item3Count", "ContainerFrame5Item3IconQuestTexture", "ContainerFrame5Item3IconTexture", "ContainerFrame5Item3NormalTexture", "ContainerFrame5Item3Stock", "ContainerFrame5Item4Count", "ContainerFrame5Item4IconQuestTexture", "ContainerFrame5Item4IconTexture", "ContainerFrame5Item4NormalTexture", "ContainerFrame5Item4Stock", "ContainerFrame5Item5Count", "ContainerFrame5Item5IconQuestTexture", "ContainerFrame5Item5IconTexture", "ContainerFrame5Item5NormalTexture", "ContainerFrame5Item5Stock", "ContainerFrame5Item6Count", "ContainerFrame5Item6IconQuestTexture", "ContainerFrame5Item6IconTexture", "ContainerFrame5Item6NormalTexture", "ContainerFrame5Item6Stock", "ContainerFrame5Item7Count", "ContainerFrame5Item7IconQuestTexture", "ContainerFrame5Item7IconTexture", "ContainerFrame5Item7NormalTexture", "ContainerFrame5Item7Stock", "ContainerFrame5Item8Count", "ContainerFrame5Item8IconQuestTexture", "ContainerFrame5Item8IconTexture", "ContainerFrame5Item8NormalTexture", "ContainerFrame5Item8Stock", "ContainerFrame5Item9Count", "ContainerFrame5Item9IconQuestTexture", "ContainerFrame5Item9IconTexture", "ContainerFrame5Item9NormalTexture", "ContainerFrame5Item9Stock", "ContainerFrame5MoneyFrameCopperButtonText", "ContainerFrame5MoneyFrameGoldButtonText", "ContainerFrame5MoneyFrameSilverButtonText", "ContainerFrame5Name", "ContainerFrame5Portrait", "ContainerFrame6Background1Slot", "ContainerFrame6BackgroundBottom", "ContainerFrame6BackgroundMiddle1", "ContainerFrame6BackgroundMiddle2", "ContainerFrame6BackgroundTop", "ContainerFrame6Item10Count", "ContainerFrame6Item10IconQuestTexture", "ContainerFrame6Item10IconTexture", "ContainerFrame6Item10NormalTexture", "ContainerFrame6Item10Stock", "ContainerFrame6Item11Count", "ContainerFrame6Item11IconQuestTexture", "ContainerFrame6Item11IconTexture", "ContainerFrame6Item11NormalTexture", "ContainerFrame6Item11Stock", "ContainerFrame6Item12Count", "ContainerFrame6Item12IconQuestTexture", "ContainerFrame6Item12IconTexture", "ContainerFrame6Item12NormalTexture", "ContainerFrame6Item12Stock", "ContainerFrame6Item13Count", "ContainerFrame6Item13IconQuestTexture", "ContainerFrame6Item13IconTexture", "ContainerFrame6Item13NormalTexture", "ContainerFrame6Item13Stock", "ContainerFrame6Item14Count", "ContainerFrame6Item14IconQuestTexture", "ContainerFrame6Item14IconTexture", "ContainerFrame6Item14NormalTexture", "ContainerFrame6Item14Stock", "ContainerFrame6Item15Count", "ContainerFrame6Item15IconQuestTexture", "ContainerFrame6Item15IconTexture", "ContainerFrame6Item15NormalTexture", "ContainerFrame6Item15Stock", "ContainerFrame6Item16Count", "ContainerFrame6Item16IconQuestTexture", "ContainerFrame6Item16IconTexture", "ContainerFrame6Item16NormalTexture", "ContainerFrame6Item16Stock", "ContainerFrame6Item17Count", "ContainerFrame6Item17IconQuestTexture", "ContainerFrame6Item17IconTexture", "ContainerFrame6Item17NormalTexture", "ContainerFrame6Item17Stock", "ContainerFrame6Item18Count", "ContainerFrame6Item18IconQuestTexture", "ContainerFrame6Item18IconTexture", "ContainerFrame6Item18NormalTexture", "ContainerFrame6Item18Stock", "ContainerFrame6Item19Count", "ContainerFrame6Item19IconQuestTexture", "ContainerFrame6Item19IconTexture", "ContainerFrame6Item19NormalTexture", "ContainerFrame6Item19Stock", "ContainerFrame6Item1Count", "ContainerFrame6Item1IconQuestTexture", "ContainerFrame6Item1IconTexture", "ContainerFrame6Item1NormalTexture", "ContainerFrame6Item1Stock", "ContainerFrame6Item20Count", "ContainerFrame6Item20IconQuestTexture", "ContainerFrame6Item20IconTexture", "ContainerFrame6Item20NormalTexture", "ContainerFrame6Item20Stock", "ContainerFrame6Item21Count", "ContainerFrame6Item21IconQuestTexture", "ContainerFrame6Item21IconTexture", "ContainerFrame6Item21NormalTexture", "ContainerFrame6Item21Stock", "ContainerFrame6Item22Count", "ContainerFrame6Item22IconQuestTexture", "ContainerFrame6Item22IconTexture", "ContainerFrame6Item22NormalTexture", "ContainerFrame6Item22Stock", "ContainerFrame6Item23Count", "ContainerFrame6Item23IconQuestTexture", "ContainerFrame6Item23IconTexture", "ContainerFrame6Item23NormalTexture", "ContainerFrame6Item23Stock", "ContainerFrame6Item24Count", "ContainerFrame6Item24IconQuestTexture", "ContainerFrame6Item24IconTexture", "ContainerFrame6Item24NormalTexture", "ContainerFrame6Item24Stock", "ContainerFrame6Item25Count", "ContainerFrame6Item25IconQuestTexture", "ContainerFrame6Item25IconTexture", "ContainerFrame6Item25NormalTexture", "ContainerFrame6Item25Stock", "ContainerFrame6Item26Count", "ContainerFrame6Item26IconQuestTexture", "ContainerFrame6Item26IconTexture", "ContainerFrame6Item26NormalTexture", "ContainerFrame6Item26Stock", "ContainerFrame6Item27Count", "ContainerFrame6Item27IconQuestTexture", "ContainerFrame6Item27IconTexture", "ContainerFrame6Item27NormalTexture", "ContainerFrame6Item27Stock", "ContainerFrame6Item28Count", "ContainerFrame6Item28IconQuestTexture", "ContainerFrame6Item28IconTexture", "ContainerFrame6Item28NormalTexture", "ContainerFrame6Item28Stock", "ContainerFrame6Item29Count", "ContainerFrame6Item29IconQuestTexture", "ContainerFrame6Item29IconTexture", "ContainerFrame6Item29NormalTexture", "ContainerFrame6Item29Stock", "ContainerFrame6Item2Count", "ContainerFrame6Item2IconQuestTexture", "ContainerFrame6Item2IconTexture", "ContainerFrame6Item2NormalTexture", "ContainerFrame6Item2Stock", "ContainerFrame6Item30Count", "ContainerFrame6Item30IconQuestTexture", "ContainerFrame6Item30IconTexture", "ContainerFrame6Item30NormalTexture", "ContainerFrame6Item30Stock", "ContainerFrame6Item31Count", "ContainerFrame6Item31IconQuestTexture", "ContainerFrame6Item31IconTexture", "ContainerFrame6Item31NormalTexture", "ContainerFrame6Item31Stock", "ContainerFrame6Item32Count", "ContainerFrame6Item32IconQuestTexture", "ContainerFrame6Item32IconTexture", "ContainerFrame6Item32NormalTexture", "ContainerFrame6Item32Stock", "ContainerFrame6Item33Count", "ContainerFrame6Item33IconQuestTexture", "ContainerFrame6Item33IconTexture", "ContainerFrame6Item33NormalTexture", "ContainerFrame6Item33Stock", "ContainerFrame6Item34Count", "ContainerFrame6Item34IconQuestTexture", "ContainerFrame6Item34IconTexture", "ContainerFrame6Item34NormalTexture", "ContainerFrame6Item34Stock", "ContainerFrame6Item35Count", "ContainerFrame6Item35IconQuestTexture", "ContainerFrame6Item35IconTexture", "ContainerFrame6Item35NormalTexture", "ContainerFrame6Item35Stock", "ContainerFrame6Item36Count", "ContainerFrame6Item36IconQuestTexture", "ContainerFrame6Item36IconTexture", "ContainerFrame6Item36NormalTexture", "ContainerFrame6Item36Stock", "ContainerFrame6Item3Count", "ContainerFrame6Item3IconQuestTexture", "ContainerFrame6Item3IconTexture", "ContainerFrame6Item3NormalTexture", "ContainerFrame6Item3Stock", "ContainerFrame6Item4Count", "ContainerFrame6Item4IconQuestTexture", "ContainerFrame6Item4IconTexture", "ContainerFrame6Item4NormalTexture", "ContainerFrame6Item4Stock", "ContainerFrame6Item5Count", "ContainerFrame6Item5IconQuestTexture", "ContainerFrame6Item5IconTexture", "ContainerFrame6Item5NormalTexture", "ContainerFrame6Item5Stock", "ContainerFrame6Item6Count", "ContainerFrame6Item6IconQuestTexture", "ContainerFrame6Item6IconTexture", "ContainerFrame6Item6NormalTexture", "ContainerFrame6Item6Stock", "ContainerFrame6Item7Count", "ContainerFrame6Item7IconQuestTexture", "ContainerFrame6Item7IconTexture", "ContainerFrame6Item7NormalTexture", "ContainerFrame6Item7Stock", "ContainerFrame6Item8Count", "ContainerFrame6Item8IconQuestTexture", "ContainerFrame6Item8IconTexture", "ContainerFrame6Item8NormalTexture", "ContainerFrame6Item8Stock", "ContainerFrame6Item9Count", "ContainerFrame6Item9IconQuestTexture", "ContainerFrame6Item9IconTexture", "ContainerFrame6Item9NormalTexture", "ContainerFrame6Item9Stock", "ContainerFrame6MoneyFrameCopperButtonText", "ContainerFrame6MoneyFrameGoldButtonText", "ContainerFrame6MoneyFrameSilverButtonText", "ContainerFrame6Name", "ContainerFrame6Portrait", "ContainerFrame7Background1Slot", "ContainerFrame7BackgroundBottom", "ContainerFrame7BackgroundMiddle1", "ContainerFrame7BackgroundMiddle2", "ContainerFrame7BackgroundTop", "ContainerFrame7Item10Count", "ContainerFrame7Item10IconQuestTexture", "ContainerFrame7Item10IconTexture", "ContainerFrame7Item10NormalTexture", "ContainerFrame7Item10Stock", "ContainerFrame7Item11Count", "ContainerFrame7Item11IconQuestTexture", "ContainerFrame7Item11IconTexture", "ContainerFrame7Item11NormalTexture", "ContainerFrame7Item11Stock", "ContainerFrame7Item12Count", "ContainerFrame7Item12IconQuestTexture", "ContainerFrame7Item12IconTexture", "ContainerFrame7Item12NormalTexture", "ContainerFrame7Item12Stock", "ContainerFrame7Item13Count", "ContainerFrame7Item13IconQuestTexture", "ContainerFrame7Item13IconTexture", "ContainerFrame7Item13NormalTexture", "ContainerFrame7Item13Stock", "ContainerFrame7Item14Count", "ContainerFrame7Item14IconQuestTexture", "ContainerFrame7Item14IconTexture", "ContainerFrame7Item14NormalTexture", "ContainerFrame7Item14Stock", "ContainerFrame7Item15Count", "ContainerFrame7Item15IconQuestTexture", "ContainerFrame7Item15IconTexture", "ContainerFrame7Item15NormalTexture", "ContainerFrame7Item15Stock", "ContainerFrame7Item16Count", "ContainerFrame7Item16IconQuestTexture", "ContainerFrame7Item16IconTexture", "ContainerFrame7Item16NormalTexture", "ContainerFrame7Item16Stock", "ContainerFrame7Item17Count", "ContainerFrame7Item17IconQuestTexture", "ContainerFrame7Item17IconTexture", "ContainerFrame7Item17NormalTexture", "ContainerFrame7Item17Stock", "ContainerFrame7Item18Count", "ContainerFrame7Item18IconQuestTexture", "ContainerFrame7Item18IconTexture", "ContainerFrame7Item18NormalTexture", "ContainerFrame7Item18Stock", "ContainerFrame7Item19Count", "ContainerFrame7Item19IconQuestTexture", "ContainerFrame7Item19IconTexture", "ContainerFrame7Item19NormalTexture", "ContainerFrame7Item19Stock", "ContainerFrame7Item1Count", "ContainerFrame7Item1IconQuestTexture", "ContainerFrame7Item1IconTexture", "ContainerFrame7Item1NormalTexture", "ContainerFrame7Item1Stock", "ContainerFrame7Item20Count", "ContainerFrame7Item20IconQuestTexture", "ContainerFrame7Item20IconTexture", "ContainerFrame7Item20NormalTexture", "ContainerFrame7Item20Stock", "ContainerFrame7Item21Count", "ContainerFrame7Item21IconQuestTexture", "ContainerFrame7Item21IconTexture", "ContainerFrame7Item21NormalTexture", "ContainerFrame7Item21Stock", "ContainerFrame7Item22Count", "ContainerFrame7Item22IconQuestTexture", "ContainerFrame7Item22IconTexture", "ContainerFrame7Item22NormalTexture", "ContainerFrame7Item22Stock", "ContainerFrame7Item23Count", "ContainerFrame7Item23IconQuestTexture", "ContainerFrame7Item23IconTexture", "ContainerFrame7Item23NormalTexture", "ContainerFrame7Item23Stock", "ContainerFrame7Item24Count", "ContainerFrame7Item24IconQuestTexture", "ContainerFrame7Item24IconTexture", "ContainerFrame7Item24NormalTexture", "ContainerFrame7Item24Stock", "ContainerFrame7Item25Count", "ContainerFrame7Item25IconQuestTexture", "ContainerFrame7Item25IconTexture", "ContainerFrame7Item25NormalTexture", "ContainerFrame7Item25Stock", "ContainerFrame7Item26Count", "ContainerFrame7Item26IconQuestTexture", "ContainerFrame7Item26IconTexture", "ContainerFrame7Item26NormalTexture", "ContainerFrame7Item26Stock", "ContainerFrame7Item27Count", "ContainerFrame7Item27IconQuestTexture", "ContainerFrame7Item27IconTexture", "ContainerFrame7Item27NormalTexture", "ContainerFrame7Item27Stock", "ContainerFrame7Item28Count", "ContainerFrame7Item28IconQuestTexture", "ContainerFrame7Item28IconTexture", "ContainerFrame7Item28NormalTexture", "ContainerFrame7Item28Stock", "ContainerFrame7Item29Count", "ContainerFrame7Item29IconQuestTexture", "ContainerFrame7Item29IconTexture", "ContainerFrame7Item29NormalTexture", "ContainerFrame7Item29Stock", "ContainerFrame7Item2Count", "ContainerFrame7Item2IconQuestTexture", "ContainerFrame7Item2IconTexture", "ContainerFrame7Item2NormalTexture", "ContainerFrame7Item2Stock", "ContainerFrame7Item30Count", "ContainerFrame7Item30IconQuestTexture", "ContainerFrame7Item30IconTexture", "ContainerFrame7Item30NormalTexture", "ContainerFrame7Item30Stock", "ContainerFrame7Item31Count", "ContainerFrame7Item31IconQuestTexture", "ContainerFrame7Item31IconTexture", "ContainerFrame7Item31NormalTexture", "ContainerFrame7Item31Stock", "ContainerFrame7Item32Count", "ContainerFrame7Item32IconQuestTexture", "ContainerFrame7Item32IconTexture", "ContainerFrame7Item32NormalTexture", "ContainerFrame7Item32Stock", "ContainerFrame7Item33Count", "ContainerFrame7Item33IconQuestTexture", "ContainerFrame7Item33IconTexture", "ContainerFrame7Item33NormalTexture", "ContainerFrame7Item33Stock", "ContainerFrame7Item34Count", "ContainerFrame7Item34IconQuestTexture", "ContainerFrame7Item34IconTexture", "ContainerFrame7Item34NormalTexture", "ContainerFrame7Item34Stock", "ContainerFrame7Item35Count", "ContainerFrame7Item35IconQuestTexture", "ContainerFrame7Item35IconTexture", "ContainerFrame7Item35NormalTexture", "ContainerFrame7Item35Stock", "ContainerFrame7Item36Count", "ContainerFrame7Item36IconQuestTexture", "ContainerFrame7Item36IconTexture", "ContainerFrame7Item36NormalTexture", "ContainerFrame7Item36Stock", "ContainerFrame7Item3Count", "ContainerFrame7Item3IconQuestTexture", "ContainerFrame7Item3IconTexture", "ContainerFrame7Item3NormalTexture", "ContainerFrame7Item3Stock", "ContainerFrame7Item4Count", "ContainerFrame7Item4IconQuestTexture", "ContainerFrame7Item4IconTexture", "ContainerFrame7Item4NormalTexture", "ContainerFrame7Item4Stock", "ContainerFrame7Item5Count", "ContainerFrame7Item5IconQuestTexture", "ContainerFrame7Item5IconTexture", "ContainerFrame7Item5NormalTexture", "ContainerFrame7Item5Stock", "ContainerFrame7Item6Count", "ContainerFrame7Item6IconQuestTexture", "ContainerFrame7Item6IconTexture", "ContainerFrame7Item6NormalTexture", "ContainerFrame7Item6Stock", "ContainerFrame7Item7Count", "ContainerFrame7Item7IconQuestTexture", "ContainerFrame7Item7IconTexture", "ContainerFrame7Item7NormalTexture", "ContainerFrame7Item7Stock", "ContainerFrame7Item8Count", "ContainerFrame7Item8IconQuestTexture", "ContainerFrame7Item8IconTexture", "ContainerFrame7Item8NormalTexture", "ContainerFrame7Item8Stock", "ContainerFrame7Item9Count", "ContainerFrame7Item9IconQuestTexture", "ContainerFrame7Item9IconTexture", "ContainerFrame7Item9NormalTexture", "ContainerFrame7Item9Stock", "ContainerFrame7MoneyFrameCopperButtonText", "ContainerFrame7MoneyFrameGoldButtonText", "ContainerFrame7MoneyFrameSilverButtonText", "ContainerFrame7Name", "ContainerFrame7Portrait", "ContainerFrame8Background1Slot", "ContainerFrame8BackgroundBottom", "ContainerFrame8BackgroundMiddle1", "ContainerFrame8BackgroundMiddle2", "ContainerFrame8BackgroundTop", "ContainerFrame8Item10Count", "ContainerFrame8Item10IconQuestTexture", "ContainerFrame8Item10IconTexture", "ContainerFrame8Item10NormalTexture", "ContainerFrame8Item10Stock", "ContainerFrame8Item11Count", "ContainerFrame8Item11IconQuestTexture", "ContainerFrame8Item11IconTexture", "ContainerFrame8Item11NormalTexture", "ContainerFrame8Item11Stock", "ContainerFrame8Item12Count", "ContainerFrame8Item12IconQuestTexture", "ContainerFrame8Item12IconTexture", "ContainerFrame8Item12NormalTexture", "ContainerFrame8Item12Stock", "ContainerFrame8Item13Count", "ContainerFrame8Item13IconQuestTexture", "ContainerFrame8Item13IconTexture", "ContainerFrame8Item13NormalTexture", "ContainerFrame8Item13Stock", "ContainerFrame8Item14Count", "ContainerFrame8Item14IconQuestTexture", "ContainerFrame8Item14IconTexture", "ContainerFrame8Item14NormalTexture", "ContainerFrame8Item14Stock", "ContainerFrame8Item15Count", "ContainerFrame8Item15IconQuestTexture", "ContainerFrame8Item15IconTexture", "ContainerFrame8Item15NormalTexture", "ContainerFrame8Item15Stock", "ContainerFrame8Item16Count", "ContainerFrame8Item16IconQuestTexture", "ContainerFrame8Item16IconTexture", "ContainerFrame8Item16NormalTexture", "ContainerFrame8Item16Stock", "ContainerFrame8Item17Count", "ContainerFrame8Item17IconQuestTexture", "ContainerFrame8Item17IconTexture", "ContainerFrame8Item17NormalTexture", "ContainerFrame8Item17Stock", "ContainerFrame8Item18Count", "ContainerFrame8Item18IconQuestTexture", "ContainerFrame8Item18IconTexture", "ContainerFrame8Item18NormalTexture", "ContainerFrame8Item18Stock", "ContainerFrame8Item19Count", "ContainerFrame8Item19IconQuestTexture", "ContainerFrame8Item19IconTexture", "ContainerFrame8Item19NormalTexture", "ContainerFrame8Item19Stock", "ContainerFrame8Item1Count", "ContainerFrame8Item1IconQuestTexture", "ContainerFrame8Item1IconTexture", "ContainerFrame8Item1NormalTexture", "ContainerFrame8Item1Stock", "ContainerFrame8Item20Count", "ContainerFrame8Item20IconQuestTexture", "ContainerFrame8Item20IconTexture", "ContainerFrame8Item20NormalTexture", "ContainerFrame8Item20Stock", "ContainerFrame8Item21Count", "ContainerFrame8Item21IconQuestTexture", "ContainerFrame8Item21IconTexture", "ContainerFrame8Item21NormalTexture", "ContainerFrame8Item21Stock", "ContainerFrame8Item22Count", "ContainerFrame8Item22IconQuestTexture", "ContainerFrame8Item22IconTexture", "ContainerFrame8Item22NormalTexture", "ContainerFrame8Item22Stock", "ContainerFrame8Item23Count", "ContainerFrame8Item23IconQuestTexture", "ContainerFrame8Item23IconTexture", "ContainerFrame8Item23NormalTexture", "ContainerFrame8Item23Stock", "ContainerFrame8Item24Count", "ContainerFrame8Item24IconQuestTexture", "ContainerFrame8Item24IconTexture", "ContainerFrame8Item24NormalTexture", "ContainerFrame8Item24Stock", "ContainerFrame8Item25Count", "ContainerFrame8Item25IconQuestTexture", "ContainerFrame8Item25IconTexture", "ContainerFrame8Item25NormalTexture", "ContainerFrame8Item25Stock", "ContainerFrame8Item26Count", "ContainerFrame8Item26IconQuestTexture", "ContainerFrame8Item26IconTexture", "ContainerFrame8Item26NormalTexture", "ContainerFrame8Item26Stock", "ContainerFrame8Item27Count", "ContainerFrame8Item27IconQuestTexture", "ContainerFrame8Item27IconTexture", "ContainerFrame8Item27NormalTexture", "ContainerFrame8Item27Stock", "ContainerFrame8Item28Count", "ContainerFrame8Item28IconQuestTexture", "ContainerFrame8Item28IconTexture", "ContainerFrame8Item28NormalTexture", "ContainerFrame8Item28Stock", "ContainerFrame8Item29Count", "ContainerFrame8Item29IconQuestTexture", "ContainerFrame8Item29IconTexture", "ContainerFrame8Item29NormalTexture", "ContainerFrame8Item29Stock", "ContainerFrame8Item2Count", "ContainerFrame8Item2IconQuestTexture", "ContainerFrame8Item2IconTexture", "ContainerFrame8Item2NormalTexture", "ContainerFrame8Item2Stock", "ContainerFrame8Item30Count", "ContainerFrame8Item30IconQuestTexture", "ContainerFrame8Item30IconTexture", "ContainerFrame8Item30NormalTexture", "ContainerFrame8Item30Stock", "ContainerFrame8Item31Count", "ContainerFrame8Item31IconQuestTexture", "ContainerFrame8Item31IconTexture", "ContainerFrame8Item31NormalTexture", "ContainerFrame8Item31Stock", "ContainerFrame8Item32Count", "ContainerFrame8Item32IconQuestTexture", "ContainerFrame8Item32IconTexture", "ContainerFrame8Item32NormalTexture", "ContainerFrame8Item32Stock", "ContainerFrame8Item33Count", "ContainerFrame8Item33IconQuestTexture", "ContainerFrame8Item33IconTexture", "ContainerFrame8Item33NormalTexture", "ContainerFrame8Item33Stock", "ContainerFrame8Item34Count", "ContainerFrame8Item34IconQuestTexture", "ContainerFrame8Item34IconTexture", "ContainerFrame8Item34NormalTexture", "ContainerFrame8Item34Stock", "ContainerFrame8Item35Count", "ContainerFrame8Item35IconQuestTexture", "ContainerFrame8Item35IconTexture", "ContainerFrame8Item35NormalTexture", "ContainerFrame8Item35Stock", "ContainerFrame8Item36Count", "ContainerFrame8Item36IconQuestTexture", "ContainerFrame8Item36IconTexture", "ContainerFrame8Item36NormalTexture", "ContainerFrame8Item36Stock", "ContainerFrame8Item3Count", "ContainerFrame8Item3IconQuestTexture", "ContainerFrame8Item3IconTexture", "ContainerFrame8Item3NormalTexture", "ContainerFrame8Item3Stock", "ContainerFrame8Item4Count", "ContainerFrame8Item4IconQuestTexture", "ContainerFrame8Item4IconTexture", "ContainerFrame8Item4NormalTexture", "ContainerFrame8Item4Stock", "ContainerFrame8Item5Count", "ContainerFrame8Item5IconQuestTexture", "ContainerFrame8Item5IconTexture", "ContainerFrame8Item5NormalTexture", "ContainerFrame8Item5Stock", "ContainerFrame8Item6Count", "ContainerFrame8Item6IconQuestTexture", "ContainerFrame8Item6IconTexture", "ContainerFrame8Item6NormalTexture", "ContainerFrame8Item6Stock", "ContainerFrame8Item7Count", "ContainerFrame8Item7IconQuestTexture", "ContainerFrame8Item7IconTexture", "ContainerFrame8Item7NormalTexture", "ContainerFrame8Item7Stock", "ContainerFrame8Item8Count", "ContainerFrame8Item8IconQuestTexture", "ContainerFrame8Item8IconTexture", "ContainerFrame8Item8NormalTexture", "ContainerFrame8Item8Stock", "ContainerFrame8Item9Count", "ContainerFrame8Item9IconQuestTexture", "ContainerFrame8Item9IconTexture", "ContainerFrame8Item9NormalTexture", "ContainerFrame8Item9Stock", "ContainerFrame8MoneyFrameCopperButtonText", "ContainerFrame8MoneyFrameGoldButtonText", "ContainerFrame8MoneyFrameSilverButtonText", "ContainerFrame8Name", "ContainerFrame8Portrait", "ContainerFrame9Background1Slot", "ContainerFrame9BackgroundBottom", "ContainerFrame9BackgroundMiddle1", "ContainerFrame9BackgroundMiddle2", "ContainerFrame9BackgroundTop", "ContainerFrame9Item10Count", "ContainerFrame9Item10IconQuestTexture", "ContainerFrame9Item10IconTexture", "ContainerFrame9Item10NormalTexture", "ContainerFrame9Item10Stock", "ContainerFrame9Item11Count", "ContainerFrame9Item11IconQuestTexture", "ContainerFrame9Item11IconTexture", "ContainerFrame9Item11NormalTexture", "ContainerFrame9Item11Stock", "ContainerFrame9Item12Count", "ContainerFrame9Item12IconQuestTexture", "ContainerFrame9Item12IconTexture", "ContainerFrame9Item12NormalTexture", "ContainerFrame9Item12Stock", "ContainerFrame9Item13Count", "ContainerFrame9Item13IconQuestTexture", "ContainerFrame9Item13IconTexture", "ContainerFrame9Item13NormalTexture", "ContainerFrame9Item13Stock", "ContainerFrame9Item14Count", "ContainerFrame9Item14IconQuestTexture", "ContainerFrame9Item14IconTexture", "ContainerFrame9Item14NormalTexture", "ContainerFrame9Item14Stock", "ContainerFrame9Item15Count", "ContainerFrame9Item15IconQuestTexture", "ContainerFrame9Item15IconTexture", "ContainerFrame9Item15NormalTexture", "ContainerFrame9Item15Stock", "ContainerFrame9Item16Count", "ContainerFrame9Item16IconQuestTexture", "ContainerFrame9Item16IconTexture", "ContainerFrame9Item16NormalTexture", "ContainerFrame9Item16Stock", "ContainerFrame9Item17Count", "ContainerFrame9Item17IconQuestTexture", "ContainerFrame9Item17IconTexture", "ContainerFrame9Item17NormalTexture", "ContainerFrame9Item17Stock", "ContainerFrame9Item18Count", "ContainerFrame9Item18IconQuestTexture", "ContainerFrame9Item18IconTexture", "ContainerFrame9Item18NormalTexture", "ContainerFrame9Item18Stock", "ContainerFrame9Item19Count", "ContainerFrame9Item19IconQuestTexture", "ContainerFrame9Item19IconTexture", "ContainerFrame9Item19NormalTexture", "ContainerFrame9Item19Stock", "ContainerFrame9Item1Count", "ContainerFrame9Item1IconQuestTexture", "ContainerFrame9Item1IconTexture", "ContainerFrame9Item1NormalTexture", "ContainerFrame9Item1Stock", "ContainerFrame9Item20Count", "ContainerFrame9Item20IconQuestTexture", "ContainerFrame9Item20IconTexture", "ContainerFrame9Item20NormalTexture", "ContainerFrame9Item20Stock", "ContainerFrame9Item21Count", "ContainerFrame9Item21IconQuestTexture", "ContainerFrame9Item21IconTexture", "ContainerFrame9Item21NormalTexture", "ContainerFrame9Item21Stock", "ContainerFrame9Item22Count", "ContainerFrame9Item22IconQuestTexture", "ContainerFrame9Item22IconTexture", "ContainerFrame9Item22NormalTexture", "ContainerFrame9Item22Stock", "ContainerFrame9Item23Count", "ContainerFrame9Item23IconQuestTexture", "ContainerFrame9Item23IconTexture", "ContainerFrame9Item23NormalTexture", "ContainerFrame9Item23Stock", "ContainerFrame9Item24Count", "ContainerFrame9Item24IconQuestTexture", "ContainerFrame9Item24IconTexture", "ContainerFrame9Item24NormalTexture", "ContainerFrame9Item24Stock", "ContainerFrame9Item25Count", "ContainerFrame9Item25IconQuestTexture", "ContainerFrame9Item25IconTexture", "ContainerFrame9Item25NormalTexture", "ContainerFrame9Item25Stock", "ContainerFrame9Item26Count", "ContainerFrame9Item26IconQuestTexture", "ContainerFrame9Item26IconTexture", "ContainerFrame9Item26NormalTexture", "ContainerFrame9Item26Stock", "ContainerFrame9Item27Count", "ContainerFrame9Item27IconQuestTexture", "ContainerFrame9Item27IconTexture", "ContainerFrame9Item27NormalTexture", "ContainerFrame9Item27Stock", "ContainerFrame9Item28Count", "ContainerFrame9Item28IconQuestTexture", "ContainerFrame9Item28IconTexture", "ContainerFrame9Item28NormalTexture", "ContainerFrame9Item28Stock", "ContainerFrame9Item29Count", "ContainerFrame9Item29IconQuestTexture", "ContainerFrame9Item29IconTexture", "ContainerFrame9Item29NormalTexture", "ContainerFrame9Item29Stock", "ContainerFrame9Item2Count", "ContainerFrame9Item2IconQuestTexture", "ContainerFrame9Item2IconTexture", "ContainerFrame9Item2NormalTexture", "ContainerFrame9Item2Stock", "ContainerFrame9Item30Count", "ContainerFrame9Item30IconQuestTexture", "ContainerFrame9Item30IconTexture", "ContainerFrame9Item30NormalTexture", "ContainerFrame9Item30Stock", "ContainerFrame9Item31Count", "ContainerFrame9Item31IconQuestTexture", "ContainerFrame9Item31IconTexture", "ContainerFrame9Item31NormalTexture", "ContainerFrame9Item31Stock", "ContainerFrame9Item32Count", "ContainerFrame9Item32IconQuestTexture", "ContainerFrame9Item32IconTexture", "ContainerFrame9Item32NormalTexture", "ContainerFrame9Item32Stock", "ContainerFrame9Item33Count", "ContainerFrame9Item33IconQuestTexture", "ContainerFrame9Item33IconTexture", "ContainerFrame9Item33NormalTexture", "ContainerFrame9Item33Stock", "ContainerFrame9Item34Count", "ContainerFrame9Item34IconQuestTexture", "ContainerFrame9Item34IconTexture", "ContainerFrame9Item34NormalTexture", "ContainerFrame9Item34Stock", "ContainerFrame9Item35Count", "ContainerFrame9Item35IconQuestTexture", "ContainerFrame9Item35IconTexture", "ContainerFrame9Item35NormalTexture", "ContainerFrame9Item35Stock", "ContainerFrame9Item36Count", "ContainerFrame9Item36IconQuestTexture", "ContainerFrame9Item36IconTexture", "ContainerFrame9Item36NormalTexture", "ContainerFrame9Item36Stock", "ContainerFrame9Item3Count", "ContainerFrame9Item3IconQuestTexture", "ContainerFrame9Item3IconTexture", "ContainerFrame9Item3NormalTexture", "ContainerFrame9Item3Stock", "ContainerFrame9Item4Count", "ContainerFrame9Item4IconQuestTexture", "ContainerFrame9Item4IconTexture", "ContainerFrame9Item4NormalTexture", "ContainerFrame9Item4Stock", "ContainerFrame9Item5Count", "ContainerFrame9Item5IconQuestTexture", "ContainerFrame9Item5IconTexture", "ContainerFrame9Item5NormalTexture", "ContainerFrame9Item5Stock", "ContainerFrame9Item6Count", "ContainerFrame9Item6IconQuestTexture", "ContainerFrame9Item6IconTexture", "ContainerFrame9Item6NormalTexture", "ContainerFrame9Item6Stock", "ContainerFrame9Item7Count", "ContainerFrame9Item7IconQuestTexture", "ContainerFrame9Item7IconTexture", "ContainerFrame9Item7NormalTexture", "ContainerFrame9Item7Stock", "ContainerFrame9Item8Count", "ContainerFrame9Item8IconQuestTexture", "ContainerFrame9Item8IconTexture", "ContainerFrame9Item8NormalTexture", "ContainerFrame9Item8Stock", "ContainerFrame9Item9Count", "ContainerFrame9Item9IconQuestTexture", "ContainerFrame9Item9IconTexture", "ContainerFrame9Item9NormalTexture", "ContainerFrame9Item9Stock", "ContainerFrame9MoneyFrameCopperButtonText", "ContainerFrame9MoneyFrameGoldButtonText", "ContainerFrame9MoneyFrameSilverButtonText", "ContainerFrame9Name", "ContainerFrame9Portrait", "CurrentQuestsText", "DialogButtonHighlightText", "DialogButtonNormalText", "DressUpBackgroundBotLeft", "DressUpBackgroundBotRight", "DressUpBackgroundTopLeft", "DressUpBackgroundTopRight", "DressUpFrameCancelButtonText", "DressUpFrameDescriptionText", "DressUpFramePortrait", "DressUpFrameResetButtonText", "DressUpFrameTitleText", "DropDownList1Button10Check", "DropDownList1Button10ColorSwatchNormalTexture", "DropDownList1Button10ColorSwatchSwatchBg", "DropDownList1Button10Highlight", "DropDownList1Button10Icon", "DropDownList1Button10NormalText", "DropDownList1Button11Check", "DropDownList1Button11ColorSwatchNormalTexture", "DropDownList1Button11ColorSwatchSwatchBg", "DropDownList1Button11Highlight", "DropDownList1Button11Icon", "DropDownList1Button11NormalText", "DropDownList1Button12Check", "DropDownList1Button12ColorSwatchNormalTexture", "DropDownList1Button12ColorSwatchSwatchBg", "DropDownList1Button12Highlight", "DropDownList1Button12Icon", "DropDownList1Button12NormalText", "DropDownList1Button13Check", "DropDownList1Button13ColorSwatchNormalTexture", "DropDownList1Button13ColorSwatchSwatchBg", "DropDownList1Button13Highlight", "DropDownList1Button13Icon", "DropDownList1Button13NormalText", "DropDownList1Button14Check", "DropDownList1Button14ColorSwatchNormalTexture", "DropDownList1Button14ColorSwatchSwatchBg", "DropDownList1Button14Highlight", "DropDownList1Button14Icon", "DropDownList1Button14NormalText", "DropDownList1Button15Check", "DropDownList1Button15ColorSwatchNormalTexture", "DropDownList1Button15ColorSwatchSwatchBg", "DropDownList1Button15Highlight", "DropDownList1Button15Icon", "DropDownList1Button15NormalText", "DropDownList1Button16Check", "DropDownList1Button16ColorSwatchNormalTexture", "DropDownList1Button16ColorSwatchSwatchBg", "DropDownList1Button16Highlight", "DropDownList1Button16Icon", "DropDownList1Button16NormalText", "DropDownList1Button17Check", "DropDownList1Button17ColorSwatchNormalTexture", "DropDownList1Button17ColorSwatchSwatchBg", "DropDownList1Button17Highlight", "DropDownList1Button17Icon", "DropDownList1Button17NormalText", "DropDownList1Button18Check", "DropDownList1Button18ColorSwatchNormalTexture", "DropDownList1Button18ColorSwatchSwatchBg", "DropDownList1Button18Highlight", "DropDownList1Button18Icon", "DropDownList1Button18NormalText", "DropDownList1Button19Check", "DropDownList1Button19ColorSwatchNormalTexture", "DropDownList1Button19ColorSwatchSwatchBg", "DropDownList1Button19Highlight", "DropDownList1Button19Icon", "DropDownList1Button19NormalText", "DropDownList1Button1Check", "DropDownList1Button1ColorSwatchNormalTexture", "DropDownList1Button1ColorSwatchSwatchBg", "DropDownList1Button1Highlight", "DropDownList1Button1Icon", "DropDownList1Button1NormalText", "DropDownList1Button20Check", "DropDownList1Button20ColorSwatchNormalTexture", "DropDownList1Button20ColorSwatchSwatchBg", "DropDownList1Button20Highlight", "DropDownList1Button20Icon", "DropDownList1Button20NormalText", "DropDownList1Button21Check", "DropDownList1Button21ColorSwatchNormalTexture", "DropDownList1Button21ColorSwatchSwatchBg", "DropDownList1Button21Highlight", "DropDownList1Button21Icon", "DropDownList1Button21NormalText", "DropDownList1Button22Check", "DropDownList1Button22ColorSwatchNormalTexture", "DropDownList1Button22ColorSwatchSwatchBg", "DropDownList1Button22Highlight", "DropDownList1Button22Icon", "DropDownList1Button22NormalText", "DropDownList1Button23Check", "DropDownList1Button23ColorSwatchNormalTexture", "DropDownList1Button23ColorSwatchSwatchBg", "DropDownList1Button23Highlight", "DropDownList1Button23Icon", "DropDownList1Button23NormalText", "DropDownList1Button24Check", "DropDownList1Button24ColorSwatchNormalTexture", "DropDownList1Button24ColorSwatchSwatchBg", "DropDownList1Button24Highlight", "DropDownList1Button24Icon", "DropDownList1Button24NormalText", "DropDownList1Button2Check", "DropDownList1Button2ColorSwatchNormalTexture", "DropDownList1Button2ColorSwatchSwatchBg", "DropDownList1Button2Highlight", "DropDownList1Button2Icon", "DropDownList1Button2NormalText", "DropDownList1Button3Check", "DropDownList1Button3ColorSwatchNormalTexture", "DropDownList1Button3ColorSwatchSwatchBg", "DropDownList1Button3Highlight", "DropDownList1Button3Icon", "DropDownList1Button3NormalText", "DropDownList1Button4Check", "DropDownList1Button4ColorSwatchNormalTexture", "DropDownList1Button4ColorSwatchSwatchBg", "DropDownList1Button4Highlight", "DropDownList1Button4Icon", "DropDownList1Button4NormalText", "DropDownList1Button5Check", "DropDownList1Button5ColorSwatchNormalTexture", "DropDownList1Button5ColorSwatchSwatchBg", "DropDownList1Button5Highlight", "DropDownList1Button5Icon", "DropDownList1Button5NormalText", "DropDownList1Button6Check", "DropDownList1Button6ColorSwatchNormalTexture", "DropDownList1Button6ColorSwatchSwatchBg", "DropDownList1Button6Highlight", "DropDownList1Button6Icon", "DropDownList1Button6NormalText", "DropDownList1Button7Check", "DropDownList1Button7ColorSwatchNormalTexture", "DropDownList1Button7ColorSwatchSwatchBg", "DropDownList1Button7Highlight", "DropDownList1Button7Icon", "DropDownList1Button7NormalText", "DropDownList1Button8Check", "DropDownList1Button8ColorSwatchNormalTexture", "DropDownList1Button8ColorSwatchSwatchBg", "DropDownList1Button8Highlight", "DropDownList1Button8Icon", "DropDownList1Button8NormalText", "DropDownList1Button9Check", "DropDownList1Button9ColorSwatchNormalTexture", "DropDownList1Button9ColorSwatchSwatchBg", "DropDownList1Button9Highlight", "DropDownList1Button9Icon", "DropDownList1Button9NormalText", "DropDownList2Button10Check", "DropDownList2Button10ColorSwatchNormalTexture", "DropDownList2Button10ColorSwatchSwatchBg", "DropDownList2Button10Highlight", "DropDownList2Button10Icon", "DropDownList2Button10NormalText", "DropDownList2Button11Check", "DropDownList2Button11ColorSwatchNormalTexture", "DropDownList2Button11ColorSwatchSwatchBg", "DropDownList2Button11Highlight", "DropDownList2Button11Icon", "DropDownList2Button11NormalText", "DropDownList2Button12Check", "DropDownList2Button12ColorSwatchNormalTexture", "DropDownList2Button12ColorSwatchSwatchBg", "DropDownList2Button12Highlight", "DropDownList2Button12Icon", "DropDownList2Button12NormalText", "DropDownList2Button13Check", "DropDownList2Button13ColorSwatchNormalTexture", "DropDownList2Button13ColorSwatchSwatchBg", "DropDownList2Button13Highlight", "DropDownList2Button13Icon", "DropDownList2Button13NormalText", "DropDownList2Button14Check", "DropDownList2Button14ColorSwatchNormalTexture", "DropDownList2Button14ColorSwatchSwatchBg", "DropDownList2Button14Highlight", "DropDownList2Button14Icon", "DropDownList2Button14NormalText", "DropDownList2Button15Check", "DropDownList2Button15ColorSwatchNormalTexture", "DropDownList2Button15ColorSwatchSwatchBg", "DropDownList2Button15Highlight", "DropDownList2Button15Icon", "DropDownList2Button15NormalText", "DropDownList2Button16Check", "DropDownList2Button16ColorSwatchNormalTexture", "DropDownList2Button16ColorSwatchSwatchBg", "DropDownList2Button16Highlight", "DropDownList2Button16Icon", "DropDownList2Button16NormalText", "DropDownList2Button17Check", "DropDownList2Button17ColorSwatchNormalTexture", "DropDownList2Button17ColorSwatchSwatchBg", "DropDownList2Button17Highlight", "DropDownList2Button17Icon", "DropDownList2Button17NormalText", "DropDownList2Button18Check", "DropDownList2Button18ColorSwatchNormalTexture", "DropDownList2Button18ColorSwatchSwatchBg", "DropDownList2Button18Highlight", "DropDownList2Button18Icon", "DropDownList2Button18NormalText", "DropDownList2Button19Check", "DropDownList2Button19ColorSwatchNormalTexture", "DropDownList2Button19ColorSwatchSwatchBg", "DropDownList2Button19Highlight", "DropDownList2Button19Icon", "DropDownList2Button19NormalText", "DropDownList2Button1Check", "DropDownList2Button1ColorSwatchNormalTexture", "DropDownList2Button1ColorSwatchSwatchBg", "DropDownList2Button1Highlight", "DropDownList2Button1Icon", "DropDownList2Button1NormalText", "DropDownList2Button20Check", "DropDownList2Button20ColorSwatchNormalTexture", "DropDownList2Button20ColorSwatchSwatchBg", "DropDownList2Button20Highlight", "DropDownList2Button20Icon", "DropDownList2Button20NormalText", "DropDownList2Button21Check", "DropDownList2Button21ColorSwatchNormalTexture", "DropDownList2Button21ColorSwatchSwatchBg", "DropDownList2Button21Highlight", "DropDownList2Button21Icon", "DropDownList2Button21NormalText", "DropDownList2Button22Check", "DropDownList2Button22ColorSwatchNormalTexture", "DropDownList2Button22ColorSwatchSwatchBg", "DropDownList2Button22Highlight", "DropDownList2Button22Icon", "DropDownList2Button22NormalText", "DropDownList2Button23Check", "DropDownList2Button23ColorSwatchNormalTexture", "DropDownList2Button23ColorSwatchSwatchBg", "DropDownList2Button23Highlight", "DropDownList2Button23Icon", "DropDownList2Button23NormalText", "DropDownList2Button24Check", "DropDownList2Button24ColorSwatchNormalTexture", "DropDownList2Button24ColorSwatchSwatchBg", "DropDownList2Button24Highlight", "DropDownList2Button24Icon", "DropDownList2Button24NormalText", "DropDownList2Button2Check", "DropDownList2Button2ColorSwatchNormalTexture", "DropDownList2Button2ColorSwatchSwatchBg", "DropDownList2Button2Highlight", "DropDownList2Button2Icon", "DropDownList2Button2NormalText", "DropDownList2Button3Check", "DropDownList2Button3ColorSwatchNormalTexture", "DropDownList2Button3ColorSwatchSwatchBg", "DropDownList2Button3Highlight", "DropDownList2Button3Icon", "DropDownList2Button3NormalText", "DropDownList2Button4Check", "DropDownList2Button4ColorSwatchNormalTexture", "DropDownList2Button4ColorSwatchSwatchBg", "DropDownList2Button4Highlight", "DropDownList2Button4Icon", "DropDownList2Button4NormalText", "DropDownList2Button5Check", "DropDownList2Button5ColorSwatchNormalTexture", "DropDownList2Button5ColorSwatchSwatchBg", "DropDownList2Button5Highlight", "DropDownList2Button5Icon", "DropDownList2Button5NormalText", "DropDownList2Button6Check", "DropDownList2Button6ColorSwatchNormalTexture", "DropDownList2Button6ColorSwatchSwatchBg", "DropDownList2Button6Highlight", "DropDownList2Button6Icon", "DropDownList2Button6NormalText", "DropDownList2Button7Check", "DropDownList2Button7ColorSwatchNormalTexture", "DropDownList2Button7ColorSwatchSwatchBg", "DropDownList2Button7Highlight", "DropDownList2Button7Icon", "DropDownList2Button7NormalText", "DropDownList2Button8Check", "DropDownList2Button8ColorSwatchNormalTexture", "DropDownList2Button8ColorSwatchSwatchBg", "DropDownList2Button8Highlight", "DropDownList2Button8Icon", "DropDownList2Button8NormalText", "DropDownList2Button9Check", "DropDownList2Button9ColorSwatchNormalTexture", "DropDownList2Button9ColorSwatchSwatchBg", "DropDownList2Button9Highlight", "DropDownList2Button9Icon", "DropDownList2Button9NormalText", "DungeonCompletionAlertFrame1AnimIn", "DungeonCompletionAlertFrame1DungeonTexture", "DungeonCompletionAlertFrame1GlowFrameGlow", "DungeonCompletionAlertFrame1GlowFrameGlowAnimIn", "DungeonCompletionAlertFrame1HeroicIcon", "DungeonCompletionAlertFrame1InstanceName", "DungeonCompletionAlertFrame1Reward1Border", "DungeonCompletionAlertFrame1Reward1Texture", "DungeonCompletionAlertFrame1Shine", "DungeonCompletionAlertFrame1ShineAnimIn", "DungeonCompletionAlertFrame1WaitAndAnimOut", "DurabilityChest", "DurabilityFeet", "DurabilityHands", "DurabilityHead", "DurabilityLegs", "DurabilityOffWeapon", "DurabilityRanged", "DurabilityShield", "DurabilityShoulders", "DurabilityWaist", "DurabilityWeapon", "DurabilityWrists", "EmoteMenuButton10ShortcutText", "EmoteMenuButton11ShortcutText", "EmoteMenuButton12ShortcutText", "EmoteMenuButton13ShortcutText", "EmoteMenuButton14ShortcutText", "EmoteMenuButton15ShortcutText", "EmoteMenuButton16ShortcutText", "EmoteMenuButton17ShortcutText", "EmoteMenuButton18ShortcutText", "EmoteMenuButton19ShortcutText", "EmoteMenuButton1ShortcutText", "EmoteMenuButton20ShortcutText", "EmoteMenuButton21ShortcutText", "EmoteMenuButton22ShortcutText", "EmoteMenuButton23ShortcutText", "EmoteMenuButton24ShortcutText", "EmoteMenuButton25ShortcutText", "EmoteMenuButton26ShortcutText", "EmoteMenuButton27ShortcutText", "EmoteMenuButton28ShortcutText", "EmoteMenuButton29ShortcutText", "EmoteMenuButton2ShortcutText", "EmoteMenuButton30ShortcutText", "EmoteMenuButton31ShortcutText", "EmoteMenuButton32ShortcutText", "EmoteMenuButton3ShortcutText", "EmoteMenuButton4ShortcutText", "EmoteMenuButton5ShortcutText", "EmoteMenuButton6ShortcutText", "EmoteMenuButton7ShortcutText", "EmoteMenuButton8ShortcutText", "EmoteMenuButton9ShortcutText", "EmptyQuestLogFrameBackgroundBottomLeft", "EmptyQuestLogFrameBackgroundBottomRight", "EmptyQuestLogFrameBackgroundTopLeft", "EmptyQuestLogFrameBackgroundTopRight", "ErrorFont", "ExhaustionLevelFillBar", "ExhaustionTickHighlight", "ExhaustionTickNormal", "FocusFontSmall", "FocusFrameBackground", "FocusFrameDropDownButtonDisabledTexture", "FocusFrameDropDownButtonHighlightTexture", "FocusFrameDropDownButtonNormalTexture", "FocusFrameDropDownButtonPushedTexture", "FocusFrameDropDownLeft", "FocusFrameDropDownMiddle", "FocusFrameDropDownRight", "FocusFrameDropDownText", "FocusFrameFlash", "FocusFrameNameBackground", "FocusFrameNumericalThreatBG", "FocusFrameNumericalThreatValue", "FocusFramePortrait", "FocusFrameSpellBarBorder", "FocusFrameSpellBarBorderShield", "FocusFrameSpellBarFlash", "FocusFrameSpellBarIcon", "FocusFrameSpellBarSpark", "FocusFrameSpellBarText", "FocusFrameTextureFrameDeadText", "FocusFrameTextureFrameHealthBarText", "FocusFrameTextureFrameHighLevelTexture", "FocusFrameTextureFrameLeaderIcon", "FocusFrameTextureFrameLevelText", "FocusFrameTextureFrameManaBarText", "FocusFrameTextureFrameName", "FocusFrameTextureFramePVPIcon", "FocusFrameTextureFrameRaidTargetIcon", "FocusFrameTextureFrameTexture", "FocusFrameToTBackground", "FocusFrameToTDebuff1Border", "FocusFrameToTDebuff1Icon", "FocusFrameToTDebuff2Border", "FocusFrameToTDebuff2Icon", "FocusFrameToTDebuff3Border", "FocusFrameToTDebuff3Icon", "FocusFrameToTDebuff4Border", "FocusFrameToTDebuff4Icon", "FocusFrameToTPortrait", "FocusFrameToTTextureFrameDeadText", "FocusFrameToTTextureFrameName", "FocusFrameToTTextureFrameTexture", "FolderPickerButton01Name", "FolderPickerHeader", "FramerateLabel", "FramerateText", "FriendsDropDownButtonDisabledTexture", "FriendsDropDownButtonHighlightTexture", "FriendsDropDownButtonNormalTexture", "FriendsDropDownButtonPushedTexture", "FriendsDropDownLeft", "FriendsDropDownMiddle", "FriendsDropDownRight", "FriendsDropDownText", "FriendsFont_Large", "FriendsFont_Normal", "FriendsFont_Small", "FriendsFont_UserText", "FriendsFrameAddFriendButtonLeft", "FriendsFrameAddFriendButtonMiddle", "FriendsFrameAddFriendButtonRight", "FriendsFrameAddFriendButtonText", "FriendsFrameBattlenetStatusInfoButtonTexture", "FriendsFrameBattlenetStatusText", "FriendsFrameBlockedInviteHeaderTitle", "FriendsFrameBlockedToonHeaderTitle", "FriendsFrameBottomLeft", "FriendsFrameBottomRight", "FriendsFrameBroadcastInputFill", "FriendsFrameBroadcastInputLeft", "FriendsFrameBroadcastInputMiddle", "FriendsFrameBroadcastInputRight", "FriendsFrameFriendsScrollFrameButton10Background", "FriendsFrameFriendsScrollFrameButton10BroadcastIcon", "FriendsFrameFriendsScrollFrameButton10BroadcastMessage", "FriendsFrameFriendsScrollFrameButton10CompactInfo", "FriendsFrameFriendsScrollFrameButton10GameIcon", "FriendsFrameFriendsScrollFrameButton10Info", "FriendsFrameFriendsScrollFrameButton10Name", "FriendsFrameFriendsScrollFrameButton10Status", "FriendsFrameFriendsScrollFrameButton10SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton10SummonButtonCount", "FriendsFrameFriendsScrollFrameButton10SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton10SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton10SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton10SummonButtonName", "FriendsFrameFriendsScrollFrameButton10SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton11Background", "FriendsFrameFriendsScrollFrameButton11BroadcastIcon", "FriendsFrameFriendsScrollFrameButton11BroadcastMessage", "FriendsFrameFriendsScrollFrameButton11CompactInfo", "FriendsFrameFriendsScrollFrameButton11GameIcon", "FriendsFrameFriendsScrollFrameButton11Info", "FriendsFrameFriendsScrollFrameButton11Name", "FriendsFrameFriendsScrollFrameButton11Status", "FriendsFrameFriendsScrollFrameButton11SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton11SummonButtonCount", "FriendsFrameFriendsScrollFrameButton11SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton11SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton11SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton11SummonButtonName", "FriendsFrameFriendsScrollFrameButton11SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton12Background", "FriendsFrameFriendsScrollFrameButton12BroadcastIcon", "FriendsFrameFriendsScrollFrameButton12BroadcastMessage", "FriendsFrameFriendsScrollFrameButton12CompactInfo", "FriendsFrameFriendsScrollFrameButton12GameIcon", "FriendsFrameFriendsScrollFrameButton12Info", "FriendsFrameFriendsScrollFrameButton12Name", "FriendsFrameFriendsScrollFrameButton12Status", "FriendsFrameFriendsScrollFrameButton12SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton12SummonButtonCount", "FriendsFrameFriendsScrollFrameButton12SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton12SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton12SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton12SummonButtonName", "FriendsFrameFriendsScrollFrameButton12SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton13Background", "FriendsFrameFriendsScrollFrameButton13BroadcastIcon", "FriendsFrameFriendsScrollFrameButton13BroadcastMessage", "FriendsFrameFriendsScrollFrameButton13CompactInfo", "FriendsFrameFriendsScrollFrameButton13GameIcon", "FriendsFrameFriendsScrollFrameButton13Info", "FriendsFrameFriendsScrollFrameButton13Name", "FriendsFrameFriendsScrollFrameButton13Status", "FriendsFrameFriendsScrollFrameButton13SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton13SummonButtonCount", "FriendsFrameFriendsScrollFrameButton13SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton13SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton13SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton13SummonButtonName", "FriendsFrameFriendsScrollFrameButton13SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton14Background", "FriendsFrameFriendsScrollFrameButton14BroadcastIcon", "FriendsFrameFriendsScrollFrameButton14BroadcastMessage", "FriendsFrameFriendsScrollFrameButton14CompactInfo", "FriendsFrameFriendsScrollFrameButton14GameIcon", "FriendsFrameFriendsScrollFrameButton14Info", "FriendsFrameFriendsScrollFrameButton14Name", "FriendsFrameFriendsScrollFrameButton14Status", "FriendsFrameFriendsScrollFrameButton14SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton14SummonButtonCount", "FriendsFrameFriendsScrollFrameButton14SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton14SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton14SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton14SummonButtonName", "FriendsFrameFriendsScrollFrameButton14SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton15Background", "FriendsFrameFriendsScrollFrameButton15BroadcastIcon", "FriendsFrameFriendsScrollFrameButton15BroadcastMessage", "FriendsFrameFriendsScrollFrameButton15CompactInfo", "FriendsFrameFriendsScrollFrameButton15GameIcon", "FriendsFrameFriendsScrollFrameButton15Info", "FriendsFrameFriendsScrollFrameButton15Name", "FriendsFrameFriendsScrollFrameButton15Status", "FriendsFrameFriendsScrollFrameButton15SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton15SummonButtonCount", "FriendsFrameFriendsScrollFrameButton15SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton15SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton15SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton15SummonButtonName", "FriendsFrameFriendsScrollFrameButton15SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton16Background", "FriendsFrameFriendsScrollFrameButton16BroadcastIcon", "FriendsFrameFriendsScrollFrameButton16BroadcastMessage", "FriendsFrameFriendsScrollFrameButton16CompactInfo", "FriendsFrameFriendsScrollFrameButton16GameIcon", "FriendsFrameFriendsScrollFrameButton16Info", "FriendsFrameFriendsScrollFrameButton16Name", "FriendsFrameFriendsScrollFrameButton16Status", "FriendsFrameFriendsScrollFrameButton16SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton16SummonButtonCount", "FriendsFrameFriendsScrollFrameButton16SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton16SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton16SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton16SummonButtonName", "FriendsFrameFriendsScrollFrameButton16SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton17Background", "FriendsFrameFriendsScrollFrameButton17BroadcastIcon", "FriendsFrameFriendsScrollFrameButton17BroadcastMessage", "FriendsFrameFriendsScrollFrameButton17CompactInfo", "FriendsFrameFriendsScrollFrameButton17GameIcon", "FriendsFrameFriendsScrollFrameButton17Info", "FriendsFrameFriendsScrollFrameButton17Name", "FriendsFrameFriendsScrollFrameButton17Status", "FriendsFrameFriendsScrollFrameButton17SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton17SummonButtonCount", "FriendsFrameFriendsScrollFrameButton17SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton17SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton17SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton17SummonButtonName", "FriendsFrameFriendsScrollFrameButton17SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton18Background", "FriendsFrameFriendsScrollFrameButton18BroadcastIcon", "FriendsFrameFriendsScrollFrameButton18BroadcastMessage", "FriendsFrameFriendsScrollFrameButton18CompactInfo", "FriendsFrameFriendsScrollFrameButton18GameIcon", "FriendsFrameFriendsScrollFrameButton18Info", "FriendsFrameFriendsScrollFrameButton18Name", "FriendsFrameFriendsScrollFrameButton18Status", "FriendsFrameFriendsScrollFrameButton18SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton18SummonButtonCount", "FriendsFrameFriendsScrollFrameButton18SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton18SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton18SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton18SummonButtonName", "FriendsFrameFriendsScrollFrameButton18SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton19Background", "FriendsFrameFriendsScrollFrameButton19BroadcastIcon", "FriendsFrameFriendsScrollFrameButton19BroadcastMessage", "FriendsFrameFriendsScrollFrameButton19CompactInfo", "FriendsFrameFriendsScrollFrameButton19GameIcon", "FriendsFrameFriendsScrollFrameButton19Info", "FriendsFrameFriendsScrollFrameButton19Name", "FriendsFrameFriendsScrollFrameButton19Status", "FriendsFrameFriendsScrollFrameButton19SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton19SummonButtonCount", "FriendsFrameFriendsScrollFrameButton19SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton19SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton19SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton19SummonButtonName", "FriendsFrameFriendsScrollFrameButton19SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton1Background", "FriendsFrameFriendsScrollFrameButton1BroadcastIcon", "FriendsFrameFriendsScrollFrameButton1BroadcastMessage", "FriendsFrameFriendsScrollFrameButton1CompactInfo", "FriendsFrameFriendsScrollFrameButton1GameIcon", "FriendsFrameFriendsScrollFrameButton1Info", "FriendsFrameFriendsScrollFrameButton1Name", "FriendsFrameFriendsScrollFrameButton1Status", "FriendsFrameFriendsScrollFrameButton1SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton1SummonButtonCount", "FriendsFrameFriendsScrollFrameButton1SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton1SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton1SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton1SummonButtonName", "FriendsFrameFriendsScrollFrameButton1SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton20Background", "FriendsFrameFriendsScrollFrameButton20BroadcastIcon", "FriendsFrameFriendsScrollFrameButton20BroadcastMessage", "FriendsFrameFriendsScrollFrameButton20CompactInfo", "FriendsFrameFriendsScrollFrameButton20GameIcon", "FriendsFrameFriendsScrollFrameButton20Info", "FriendsFrameFriendsScrollFrameButton20Name", "FriendsFrameFriendsScrollFrameButton20Status", "FriendsFrameFriendsScrollFrameButton20SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton20SummonButtonCount", "FriendsFrameFriendsScrollFrameButton20SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton20SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton20SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton20SummonButtonName", "FriendsFrameFriendsScrollFrameButton20SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton21Background", "FriendsFrameFriendsScrollFrameButton21BroadcastIcon", "FriendsFrameFriendsScrollFrameButton21BroadcastMessage", "FriendsFrameFriendsScrollFrameButton21CompactInfo", "FriendsFrameFriendsScrollFrameButton21GameIcon", "FriendsFrameFriendsScrollFrameButton21Info", "FriendsFrameFriendsScrollFrameButton21Name", "FriendsFrameFriendsScrollFrameButton21Status", "FriendsFrameFriendsScrollFrameButton21SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton21SummonButtonCount", "FriendsFrameFriendsScrollFrameButton21SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton21SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton21SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton21SummonButtonName", "FriendsFrameFriendsScrollFrameButton21SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton22Background", "FriendsFrameFriendsScrollFrameButton22BroadcastIcon", "FriendsFrameFriendsScrollFrameButton22BroadcastMessage", "FriendsFrameFriendsScrollFrameButton22CompactInfo", "FriendsFrameFriendsScrollFrameButton22GameIcon", "FriendsFrameFriendsScrollFrameButton22Info", "FriendsFrameFriendsScrollFrameButton22Name", "FriendsFrameFriendsScrollFrameButton22Status", "FriendsFrameFriendsScrollFrameButton22SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton22SummonButtonCount", "FriendsFrameFriendsScrollFrameButton22SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton22SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton22SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton22SummonButtonName", "FriendsFrameFriendsScrollFrameButton22SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton23Background", "FriendsFrameFriendsScrollFrameButton23BroadcastIcon", "FriendsFrameFriendsScrollFrameButton23BroadcastMessage", "FriendsFrameFriendsScrollFrameButton23CompactInfo", "FriendsFrameFriendsScrollFrameButton23GameIcon", "FriendsFrameFriendsScrollFrameButton23Info", "FriendsFrameFriendsScrollFrameButton23Name", "FriendsFrameFriendsScrollFrameButton23Status", "FriendsFrameFriendsScrollFrameButton23SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton23SummonButtonCount", "FriendsFrameFriendsScrollFrameButton23SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton23SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton23SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton23SummonButtonName", "FriendsFrameFriendsScrollFrameButton23SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton2Background", "FriendsFrameFriendsScrollFrameButton2BroadcastIcon", "FriendsFrameFriendsScrollFrameButton2BroadcastMessage", "FriendsFrameFriendsScrollFrameButton2CompactInfo", "FriendsFrameFriendsScrollFrameButton2GameIcon", "FriendsFrameFriendsScrollFrameButton2Info", "FriendsFrameFriendsScrollFrameButton2Name", "FriendsFrameFriendsScrollFrameButton2Status", "FriendsFrameFriendsScrollFrameButton2SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton2SummonButtonCount", "FriendsFrameFriendsScrollFrameButton2SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton2SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton2SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton2SummonButtonName", "FriendsFrameFriendsScrollFrameButton2SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton3Background", "FriendsFrameFriendsScrollFrameButton3BroadcastIcon", "FriendsFrameFriendsScrollFrameButton3BroadcastMessage", "FriendsFrameFriendsScrollFrameButton3CompactInfo", "FriendsFrameFriendsScrollFrameButton3GameIcon", "FriendsFrameFriendsScrollFrameButton3Info", "FriendsFrameFriendsScrollFrameButton3Name", "FriendsFrameFriendsScrollFrameButton3Status", "FriendsFrameFriendsScrollFrameButton3SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton3SummonButtonCount", "FriendsFrameFriendsScrollFrameButton3SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton3SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton3SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton3SummonButtonName", "FriendsFrameFriendsScrollFrameButton3SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton4Background", "FriendsFrameFriendsScrollFrameButton4BroadcastIcon", "FriendsFrameFriendsScrollFrameButton4BroadcastMessage", "FriendsFrameFriendsScrollFrameButton4CompactInfo", "FriendsFrameFriendsScrollFrameButton4GameIcon", "FriendsFrameFriendsScrollFrameButton4Info", "FriendsFrameFriendsScrollFrameButton4Name", "FriendsFrameFriendsScrollFrameButton4Status", "FriendsFrameFriendsScrollFrameButton4SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton4SummonButtonCount", "FriendsFrameFriendsScrollFrameButton4SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton4SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton4SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton4SummonButtonName", "FriendsFrameFriendsScrollFrameButton4SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton5Background", "FriendsFrameFriendsScrollFrameButton5BroadcastIcon", "FriendsFrameFriendsScrollFrameButton5BroadcastMessage", "FriendsFrameFriendsScrollFrameButton5CompactInfo", "FriendsFrameFriendsScrollFrameButton5GameIcon", "FriendsFrameFriendsScrollFrameButton5Info", "FriendsFrameFriendsScrollFrameButton5Name", "FriendsFrameFriendsScrollFrameButton5Status", "FriendsFrameFriendsScrollFrameButton5SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton5SummonButtonCount", "FriendsFrameFriendsScrollFrameButton5SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton5SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton5SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton5SummonButtonName", "FriendsFrameFriendsScrollFrameButton5SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton6Background", "FriendsFrameFriendsScrollFrameButton6BroadcastIcon", "FriendsFrameFriendsScrollFrameButton6BroadcastMessage", "FriendsFrameFriendsScrollFrameButton6CompactInfo", "FriendsFrameFriendsScrollFrameButton6GameIcon", "FriendsFrameFriendsScrollFrameButton6Info", "FriendsFrameFriendsScrollFrameButton6Name", "FriendsFrameFriendsScrollFrameButton6Status", "FriendsFrameFriendsScrollFrameButton6SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton6SummonButtonCount", "FriendsFrameFriendsScrollFrameButton6SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton6SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton6SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton6SummonButtonName", "FriendsFrameFriendsScrollFrameButton6SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton7Background", "FriendsFrameFriendsScrollFrameButton7BroadcastIcon", "FriendsFrameFriendsScrollFrameButton7BroadcastMessage", "FriendsFrameFriendsScrollFrameButton7CompactInfo", "FriendsFrameFriendsScrollFrameButton7GameIcon", "FriendsFrameFriendsScrollFrameButton7Info", "FriendsFrameFriendsScrollFrameButton7Name", "FriendsFrameFriendsScrollFrameButton7Status", "FriendsFrameFriendsScrollFrameButton7SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton7SummonButtonCount", "FriendsFrameFriendsScrollFrameButton7SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton7SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton7SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton7SummonButtonName", "FriendsFrameFriendsScrollFrameButton7SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton8Background", "FriendsFrameFriendsScrollFrameButton8BroadcastIcon", "FriendsFrameFriendsScrollFrameButton8BroadcastMessage", "FriendsFrameFriendsScrollFrameButton8CompactInfo", "FriendsFrameFriendsScrollFrameButton8GameIcon", "FriendsFrameFriendsScrollFrameButton8Info", "FriendsFrameFriendsScrollFrameButton8Name", "FriendsFrameFriendsScrollFrameButton8Status", "FriendsFrameFriendsScrollFrameButton8SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton8SummonButtonCount", "FriendsFrameFriendsScrollFrameButton8SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton8SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton8SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton8SummonButtonName", "FriendsFrameFriendsScrollFrameButton8SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameButton9Background", "FriendsFrameFriendsScrollFrameButton9BroadcastIcon", "FriendsFrameFriendsScrollFrameButton9BroadcastMessage", "FriendsFrameFriendsScrollFrameButton9CompactInfo", "FriendsFrameFriendsScrollFrameButton9GameIcon", "FriendsFrameFriendsScrollFrameButton9Info", "FriendsFrameFriendsScrollFrameButton9Name", "FriendsFrameFriendsScrollFrameButton9Status", "FriendsFrameFriendsScrollFrameButton9SummonButtonBorder", "FriendsFrameFriendsScrollFrameButton9SummonButtonCount", "FriendsFrameFriendsScrollFrameButton9SummonButtonFlash", "FriendsFrameFriendsScrollFrameButton9SummonButtonHotKey", "FriendsFrameFriendsScrollFrameButton9SummonButtonIcon", "FriendsFrameFriendsScrollFrameButton9SummonButtonName", "FriendsFrameFriendsScrollFrameButton9SummonButtonNormalTexture", "FriendsFrameFriendsScrollFrameScrollBarThumbTexture", "FriendsFrameIgnoreButton10Name", "FriendsFrameIgnoreButton11Name", "FriendsFrameIgnoreButton12Name", "FriendsFrameIgnoreButton13Name", "FriendsFrameIgnoreButton14Name", "FriendsFrameIgnoreButton15Name", "FriendsFrameIgnoreButton16Name", "FriendsFrameIgnoreButton17Name", "FriendsFrameIgnoreButton18Name", "FriendsFrameIgnoreButton19Name", "FriendsFrameIgnoreButton1Name", "FriendsFrameIgnoreButton2Name", "FriendsFrameIgnoreButton3Name", "FriendsFrameIgnoreButton4Name", "FriendsFrameIgnoreButton5Name", "FriendsFrameIgnoreButton6Name", "FriendsFrameIgnoreButton7Name", "FriendsFrameIgnoreButton8Name", "FriendsFrameIgnoreButton9Name", "FriendsFrameIgnorePlayerButtonLeft", "FriendsFrameIgnorePlayerButtonMiddle", "FriendsFrameIgnorePlayerButtonRight", "FriendsFrameIgnorePlayerButtonText", "FriendsFrameIgnoreScrollFrameScrollBarThumbTexture", "FriendsFrameIgnoredHeaderTitle", "FriendsFrameMutePlayerButtonLeft", "FriendsFrameMutePlayerButtonMiddle", "FriendsFrameMutePlayerButtonRight", "FriendsFrameMutePlayerButtonText", "FriendsFrameMutedHeaderTitle", "FriendsFrameOfflineHeader", "FriendsFramePendingButton1AcceptButtonLeft", "FriendsFramePendingButton1AcceptButtonMiddle", "FriendsFramePendingButton1AcceptButtonRight", "FriendsFramePendingButton1AcceptButtonText", "FriendsFramePendingButton1Background", "FriendsFramePendingButton1DeclineButtonLeft", "FriendsFramePendingButton1DeclineButtonMiddle", "FriendsFramePendingButton1DeclineButtonRight", "FriendsFramePendingButton1DeclineButtonText", "FriendsFramePendingButton1Message", "FriendsFramePendingButton1Name", "FriendsFramePendingButton1Sent", "FriendsFramePendingButton2AcceptButtonLeft", "FriendsFramePendingButton2AcceptButtonMiddle", "FriendsFramePendingButton2AcceptButtonRight", "FriendsFramePendingButton2AcceptButtonText", "FriendsFramePendingButton2Background", "FriendsFramePendingButton2DeclineButtonLeft", "FriendsFramePendingButton2DeclineButtonMiddle", "FriendsFramePendingButton2DeclineButtonRight", "FriendsFramePendingButton2DeclineButtonText", "FriendsFramePendingButton2Message", "FriendsFramePendingButton2Name", "FriendsFramePendingButton2Sent", "FriendsFramePendingButton3AcceptButtonLeft", "FriendsFramePendingButton3AcceptButtonMiddle", "FriendsFramePendingButton3AcceptButtonRight", "FriendsFramePendingButton3AcceptButtonText", "FriendsFramePendingButton3Background", "FriendsFramePendingButton3DeclineButtonLeft", "FriendsFramePendingButton3DeclineButtonMiddle", "FriendsFramePendingButton3DeclineButtonRight", "FriendsFramePendingButton3DeclineButtonText", "FriendsFramePendingButton3Message", "FriendsFramePendingButton3Name", "FriendsFramePendingButton3Sent", "FriendsFramePendingButton4AcceptButtonLeft", "FriendsFramePendingButton4AcceptButtonMiddle", "FriendsFramePendingButton4AcceptButtonRight", "FriendsFramePendingButton4AcceptButtonText", "FriendsFramePendingButton4Background", "FriendsFramePendingButton4DeclineButtonLeft", "FriendsFramePendingButton4DeclineButtonMiddle", "FriendsFramePendingButton4DeclineButtonRight", "FriendsFramePendingButton4DeclineButtonText", "FriendsFramePendingButton4Message", "FriendsFramePendingButton4Name", "FriendsFramePendingButton4Sent", "FriendsFramePendingScrollFrameScrollBarThumbTexture", "FriendsFrameSendMessageButtonLeft", "FriendsFrameSendMessageButtonMiddle", "FriendsFrameSendMessageButtonRight", "FriendsFrameSendMessageButtonText", "FriendsFrameStatusDropDownButtonDisabledTexture", "FriendsFrameStatusDropDownButtonHighlightTexture", "FriendsFrameStatusDropDownButtonNormalTexture", "FriendsFrameStatusDropDownButtonPushedTexture", "FriendsFrameStatusDropDownLeft", "FriendsFrameStatusDropDownMiddle", "FriendsFrameStatusDropDownRight", "FriendsFrameStatusDropDownStatus", "FriendsFrameStatusDropDownText", "FriendsFrameTab1HighlightTexture", "FriendsFrameTab1Left", "FriendsFrameTab1LeftDisabled", "FriendsFrameTab1Middle", "FriendsFrameTab1MiddleDisabled", "FriendsFrameTab1Right", "FriendsFrameTab1RightDisabled", "FriendsFrameTab1Text", "FriendsFrameTab2HighlightTexture", "FriendsFrameTab2Left", "FriendsFrameTab2LeftDisabled", "FriendsFrameTab2Middle", "FriendsFrameTab2MiddleDisabled", "FriendsFrameTab2Right", "FriendsFrameTab2RightDisabled", "FriendsFrameTab2Text", "FriendsFrameTab3HighlightTexture", "FriendsFrameTab3Left", "FriendsFrameTab3LeftDisabled", "FriendsFrameTab3Middle", "FriendsFrameTab3MiddleDisabled", "FriendsFrameTab3Right", "FriendsFrameTab3RightDisabled", "FriendsFrameTab3Text", "FriendsFrameTab4HighlightTexture", "FriendsFrameTab4Left", "FriendsFrameTab4LeftDisabled", "FriendsFrameTab4Middle", "FriendsFrameTab4MiddleDisabled", "FriendsFrameTab4Right", "FriendsFrameTab4RightDisabled", "FriendsFrameTab4Text", "FriendsFrameTab5HighlightTexture", "FriendsFrameTab5Left", "FriendsFrameTab5LeftDisabled", "FriendsFrameTab5Middle", "FriendsFrameTab5MiddleDisabled", "FriendsFrameTab5Right", "FriendsFrameTab5RightDisabled", "FriendsFrameTab5Text", "FriendsFrameTitleText", "FriendsFrameTopLeft", "FriendsFrameTopRight", "FriendsFrameUnsquelchButtonLeft", "FriendsFrameUnsquelchButtonMiddle", "FriendsFrameUnsquelchButtonRight", "FriendsFrameUnsquelchButtonText", "FriendsFriendsButton10Name", "FriendsFriendsButton11Name", "FriendsFriendsButton1Name", "FriendsFriendsButton2Name", "FriendsFriendsButton3Name", "FriendsFriendsButton4Name", "FriendsFriendsButton5Name", "FriendsFriendsButton6Name", "FriendsFriendsButton7Name", "FriendsFriendsButton8Name", "FriendsFriendsButton9Name", "FriendsFriendsCloseButtonLeft", "FriendsFriendsCloseButtonMiddle", "FriendsFriendsCloseButtonRight", "FriendsFriendsCloseButtonText", "FriendsFriendsFrameDropDownButtonDisabledTexture", "FriendsFriendsFrameDropDownButtonHighlightTexture", "FriendsFriendsFrameDropDownButtonNormalTexture", "FriendsFriendsFrameDropDownButtonPushedTexture", "FriendsFriendsFrameDropDownLeft", "FriendsFriendsFrameDropDownMiddle", "FriendsFriendsFrameDropDownRight", "FriendsFriendsFrameDropDownText", "FriendsFriendsFrameTitle", "FriendsFriendsNoteEditBoxFill", "FriendsFriendsNoteFrameBottom", "FriendsFriendsNoteFrameBottomLeft", "FriendsFriendsNoteFrameBottomRight", "FriendsFriendsNoteFrameLeft", "FriendsFriendsNoteFrameMiddle", "FriendsFriendsNoteFrameRight", "FriendsFriendsNoteFrameScrollFrameScrollBarThumbTexture", "FriendsFriendsNoteFrameTop", "FriendsFriendsNoteFrameTopLeft", "FriendsFriendsNoteFrameTopRight", "FriendsFriendsScrollFrameScrollBarThumbTexture", "FriendsFriendsSendRequestButtonLeft", "FriendsFriendsSendRequestButtonMiddle", "FriendsFriendsSendRequestButtonRight", "FriendsFriendsSendRequestButtonText", "FriendsMicroButtonCount", "FriendsTabHeaderTab1HighlightTexture", "FriendsTabHeaderTab1Left", "FriendsTabHeaderTab1LeftDisabled", "FriendsTabHeaderTab1Middle", "FriendsTabHeaderTab1MiddleDisabled", "FriendsTabHeaderTab1Right", "FriendsTabHeaderTab1RightDisabled", "FriendsTabHeaderTab1Text", "FriendsTabHeaderTab2HighlightTexture", "FriendsTabHeaderTab2Left", "FriendsTabHeaderTab2LeftDisabled", "FriendsTabHeaderTab2Middle", "FriendsTabHeaderTab2MiddleDisabled", "FriendsTabHeaderTab2Right", "FriendsTabHeaderTab2RightDisabled", "FriendsTabHeaderTab2Text", "FriendsTabHeaderTab3HighlightTexture", "FriendsTabHeaderTab3Left", "FriendsTabHeaderTab3LeftDisabled", "FriendsTabHeaderTab3Middle", "FriendsTabHeaderTab3MiddleDisabled", "FriendsTabHeaderTab3Right", "FriendsTabHeaderTab3RightDisabled", "FriendsTabHeaderTab3Text", "FriendsTooltipBroadcastIcon", "FriendsTooltipBroadcastText", "FriendsTooltipHeader", "FriendsTooltipLastOnline", "FriendsTooltipNoteIcon", "FriendsTooltipNoteText", "FriendsTooltipOtherToons", "FriendsTooltipToon1Info", "FriendsTooltipToon1Name", "FriendsTooltipToon2Info", "FriendsTooltipToon2Name", "FriendsTooltipToon3Info", "FriendsTooltipToon3Name", "FriendsTooltipToon4Info", "FriendsTooltipToon4Name", "FriendsTooltipToon5Info", "FriendsTooltipToon5Name", "FriendsTooltipToonMany", "GMChatOpenLogText", "GameFontBlack", "GameFontBlackMedium", "GameFontBlackSmall", "GameFontBlackTiny", "GameFontDarkGraySmall", "GameFontDisable", "GameFontDisableLarge", "GameFontDisableLeft", "GameFontDisableSmall", "GameFontDisableSmallLeft", "GameFontGreen", "GameFontGreenLarge", "GameFontGreenSmall", "GameFontHighlight", "GameFontHighlightCenter", "GameFontHighlightExtraSmall", "GameFontHighlightExtraSmallLeft", "GameFontHighlightExtraSmallLeftTop", "GameFontHighlightLarge", "GameFontHighlightLeft", "GameFontHighlightMedium", "GameFontHighlightRight", "GameFontHighlightSmall", "GameFontHighlightSmallLeft", "GameFontHighlightSmallLeftTop", "GameFontHighlightSmallOutline", "GameFontHighlightSmallRight", "GameFontNormal", "GameFontNormalCenter", "GameFontNormalHuge", "GameFontNormalHugeBlack", "GameFontNormalLarge", "GameFontNormalLargeLeft", "GameFontNormalLargeLeftTop", "GameFontNormalLeft", "GameFontNormalLeftBottom", "GameFontNormalLeftGreen", "GameFontNormalLeftGrey", "GameFontNormalLeftLightGreen", "GameFontNormalLeftOrange", "GameFontNormalLeftRed", "GameFontNormalLeftYellow", "GameFontNormalMed3", "GameFontNormalRight", "GameFontNormalSmall", "GameFontNormalSmallLeft", "GameFontRed", "GameFontRedLarge", "GameFontRedSmall", "GameFontWhite", "GameFontWhiteSmall", "GameFontWhiteTiny", "GameMenuButtonContinueText", "GameMenuButtonKeybindingsText", "GameMenuButtonLogoutText", "GameMenuButtonMacOptionsText", "GameMenuButtonMacrosText", "GameMenuButtonOptionsText", "GameMenuButtonQuitText", "GameMenuButtonRatingsText", "GameMenuButtonSoundOptionsText", "GameMenuButtonUIOptionsText", "GameMenuFrameHeader", "GameTimeCalendarEventAlarmTexture", "GameTimeCalendarInvitesGlow", "GameTimeCalendarInvitesTexture", "GameTimeTexture", "GameTooltipHeader", "GameTooltipHeaderText", "GameTooltipStatusBarTexture", "GameTooltipText", "GameTooltipTextLeft1", "GameTooltipTextLeft2", "GameTooltipTextLeft3", "GameTooltipTextLeft4", "GameTooltipTextLeft5", "GameTooltipTextLeft6", "GameTooltipTextLeft7", "GameTooltipTextLeft8", "GameTooltipTextLeft9", "GameTooltipTextRight1", "GameTooltipTextRight2", "GameTooltipTextRight3", "GameTooltipTextRight4", "GameTooltipTextRight5", "GameTooltipTextRight6", "GameTooltipTextRight7", "GameTooltipTextRight8", "GameTooltipTextRight9", "GameTooltipTextSmall", "GameTooltipTexture1", "GameTooltipTexture10", "GameTooltipTexture2", "GameTooltipTexture3", "GameTooltipTexture4", "GameTooltipTexture5", "GameTooltipTexture6", "GameTooltipTexture7", "GameTooltipTexture8", "GameTooltipTexture9", "GearManagerDialogBottom", "GearManagerDialogBottomLeft", "GearManagerDialogBottomRight", "GearManagerDialogDeleteSetText", "GearManagerDialogDialogBG", "GearManagerDialogEquipSetText", "GearManagerDialogLeft", "GearManagerDialogPopupButton10Icon", "GearManagerDialogPopupButton10Name", "GearManagerDialogPopupButton11Icon", "GearManagerDialogPopupButton11Name", "GearManagerDialogPopupButton12Icon", "GearManagerDialogPopupButton12Name", "GearManagerDialogPopupButton13Icon", "GearManagerDialogPopupButton13Name", "GearManagerDialogPopupButton14Icon", "GearManagerDialogPopupButton14Name", "GearManagerDialogPopupButton15Icon", "GearManagerDialogPopupButton15Name", "GearManagerDialogPopupButton1Icon", "GearManagerDialogPopupButton1Name", "GearManagerDialogPopupButton2Icon", "GearManagerDialogPopupButton2Name", "GearManagerDialogPopupButton3Icon", "GearManagerDialogPopupButton3Name", "GearManagerDialogPopupButton4Icon", "GearManagerDialogPopupButton4Name", "GearManagerDialogPopupButton5Icon", "GearManagerDialogPopupButton5Name", "GearManagerDialogPopupButton6Icon", "GearManagerDialogPopupButton6Name", "GearManagerDialogPopupButton7Icon", "GearManagerDialogPopupButton7Name", "GearManagerDialogPopupButton8Icon", "GearManagerDialogPopupButton8Name", "GearManagerDialogPopupButton9Icon", "GearManagerDialogPopupButton9Name", "GearManagerDialogPopupCancelText", "GearManagerDialogPopupEditBoxLeft", "GearManagerDialogPopupEditBoxMiddle", "GearManagerDialogPopupEditBoxRight", "GearManagerDialogPopupOkayText", "GearManagerDialogPopupScrollFrameScrollBarThumbTexture", "GearManagerDialogRight", "GearManagerDialogSaveSetText", "GearManagerDialogTitleBG", "GearManagerDialogTop", "GearManagerDialogTopLeft", "GearManagerDialogTopRight", "GearSetButton10Icon", "GearSetButton10Name", "GearSetButton1Icon", "GearSetButton1Name", "GearSetButton2Icon", "GearSetButton2Name", "GearSetButton3Icon", "GearSetButton3Name", "GearSetButton4Icon", "GearSetButton4Name", "GearSetButton5Icon", "GearSetButton5Name", "GearSetButton6Icon", "GearSetButton6Name", "GearSetButton7Icon", "GearSetButton7Name", "GearSetButton8Icon", "GearSetButton8Name", "GearSetButton9Icon", "GearSetButton9Name", "GeneralDockManagerInsertHighlight", "GeneralDockManagerOverflowButtonListNumTabs", "GossipFrameGreetingGoodbyeButtonText", "GossipFrameGreetingPanelMaterialBotLeft", "GossipFrameGreetingPanelMaterialBotRight", "GossipFrameGreetingPanelMaterialTopLeft", "GossipFrameGreetingPanelMaterialTopRight", "GossipFrameNpcNameText", "GossipFramePortrait", "GossipGreetingScrollFrameScrollBarThumbTexture", "GossipGreetingText", "GossipTitleButton10GossipIcon", "GossipTitleButton11GossipIcon", "GossipTitleButton12GossipIcon", "GossipTitleButton13GossipIcon", "GossipTitleButton14GossipIcon", "GossipTitleButton15GossipIcon", "GossipTitleButton16GossipIcon", "GossipTitleButton17GossipIcon", "GossipTitleButton18GossipIcon", "GossipTitleButton19GossipIcon", "GossipTitleButton1GossipIcon", "GossipTitleButton20GossipIcon", "GossipTitleButton21GossipIcon", "GossipTitleButton22GossipIcon", "GossipTitleButton23GossipIcon", "GossipTitleButton24GossipIcon", "GossipTitleButton25GossipIcon", "GossipTitleButton26GossipIcon", "GossipTitleButton27GossipIcon", "GossipTitleButton28GossipIcon", "GossipTitleButton29GossipIcon", "GossipTitleButton2GossipIcon", "GossipTitleButton30GossipIcon", "GossipTitleButton31GossipIcon", "GossipTitleButton32GossipIcon", "GossipTitleButton3GossipIcon", "GossipTitleButton4GossipIcon", "GossipTitleButton5GossipIcon", "GossipTitleButton6GossipIcon", "GossipTitleButton7GossipIcon", "GossipTitleButton8GossipIcon", "GossipTitleButton9GossipIcon", "GreetingText", "GroupLootDropDownButtonDisabledTexture", "GroupLootDropDownButtonHighlightTexture", "GroupLootDropDownButtonNormalTexture", "GroupLootDropDownButtonPushedTexture", "GroupLootDropDownLeft", "GroupLootDropDownMiddle", "GroupLootDropDownRight", "GroupLootDropDownText", "GroupLootFrame1Corner", "GroupLootFrame1Decoration", "GroupLootFrame1IconFrameCount", "GroupLootFrame1IconFrameIcon", "GroupLootFrame1Name", "GroupLootFrame1NameFrame", "GroupLootFrame1SlotTexture", "GroupLootFrame1TimerBar", "GroupLootFrame2Corner", "GroupLootFrame2Decoration", "GroupLootFrame2IconFrameCount", "GroupLootFrame2IconFrameIcon", "GroupLootFrame2Name", "GroupLootFrame2NameFrame", "GroupLootFrame2SlotTexture", "GroupLootFrame2TimerBar", "GroupLootFrame3Corner", "GroupLootFrame3Decoration", "GroupLootFrame3IconFrameCount", "GroupLootFrame3IconFrameIcon", "GroupLootFrame3Name", "GroupLootFrame3NameFrame", "GroupLootFrame3SlotTexture", "GroupLootFrame3TimerBar", "GroupLootFrame4Corner", "GroupLootFrame4Decoration", "GroupLootFrame4IconFrameCount", "GroupLootFrame4IconFrameIcon", "GroupLootFrame4Name", "GroupLootFrame4NameFrame", "GroupLootFrame4SlotTexture", "GroupLootFrame4TimerBar", "GuildBankTabLabel", "GuildBankTabPermissionsTab1Background", "GuildBankTabPermissionsTab1Text", "GuildBankTabPermissionsTab2Background", "GuildBankTabPermissionsTab2Text", "GuildBankTabPermissionsTab3Background", "GuildBankTabPermissionsTab3Text", "GuildBankTabPermissionsTab4Background", "GuildBankTabPermissionsTab4Text", "GuildBankTabPermissionsTab5Background", "GuildBankTabPermissionsTab5Text", "GuildBankTabPermissionsTab6Background", "GuildBankTabPermissionsTab6Text", "GuildControlPopupAcceptButtonText", "GuildControlPopupFrameCancelButtonText", "GuildControlPopupFrameCheckbox10Text", "GuildControlPopupFrameCheckbox11Text", "GuildControlPopupFrameCheckbox12Text", "GuildControlPopupFrameCheckbox13Text", "GuildControlPopupFrameCheckbox15Text", "GuildControlPopupFrameCheckbox16Text", "GuildControlPopupFrameCheckbox17Text", "GuildControlPopupFrameCheckbox1Text", "GuildControlPopupFrameCheckbox2Text", "GuildControlPopupFrameCheckbox3Text", "GuildControlPopupFrameCheckbox4Text", "GuildControlPopupFrameCheckbox5Text", "GuildControlPopupFrameCheckbox6Text", "GuildControlPopupFrameCheckbox7Text", "GuildControlPopupFrameCheckbox8Text", "GuildControlPopupFrameCheckbox9Text", "GuildControlPopupFrameDropDownButtonDisabledTexture", "GuildControlPopupFrameDropDownButtonHighlightTexture", "GuildControlPopupFrameDropDownButtonNormalTexture", "GuildControlPopupFrameDropDownButtonPushedTexture", "GuildControlPopupFrameDropDownLeft", "GuildControlPopupFrameDropDownMiddle", "GuildControlPopupFrameDropDownRight", "GuildControlPopupFrameDropDownText", "GuildControlPopupFrameEditBoxLeft", "GuildControlPopupFrameEditBoxMiddle", "GuildControlPopupFrameEditBoxRight", "GuildControlTabPermissionsDepositItemsText", "GuildControlTabPermissionsUpdateTextText", "GuildControlTabPermissionsViewTabText", "GuildControlTabPermissionsWithdrawItemsText", "GuildControlWithdrawGoldAmountText", "GuildControlWithdrawGoldEditBoxLeft", "GuildControlWithdrawGoldEditBoxMiddle", "GuildControlWithdrawGoldEditBoxRight", "GuildControlWithdrawGoldText", "GuildControlWithdrawItemsEditBoxLeft", "GuildControlWithdrawItemsEditBoxMiddle", "GuildControlWithdrawItemsEditBoxRight", "GuildEventLogCancelButtonText", "GuildEventLogScrollFrameScrollBarThumbTexture", "GuildEventLogTitle", "GuildEventMessage", "GuildFrameAddMemberButtonText", "GuildFrameButton10Class", "GuildFrameButton10Group", "GuildFrameButton10Level", "GuildFrameButton10Name", "GuildFrameButton10Zone", "GuildFrameButton11Class", "GuildFrameButton11Group", "GuildFrameButton11Level", "GuildFrameButton11Name", "GuildFrameButton11Zone", "GuildFrameButton12Class", "GuildFrameButton12Group", "GuildFrameButton12Level", "GuildFrameButton12Name", "GuildFrameButton12Zone", "GuildFrameButton13Class", "GuildFrameButton13Group", "GuildFrameButton13Level", "GuildFrameButton13Name", "GuildFrameButton13Zone", "GuildFrameButton1Class", "GuildFrameButton1Group", "GuildFrameButton1Level", "GuildFrameButton1Name", "GuildFrameButton1Zone", "GuildFrameButton2Class", "GuildFrameButton2Group", "GuildFrameButton2Level", "GuildFrameButton2Name", "GuildFrameButton2Zone", "GuildFrameButton3Class", "GuildFrameButton3Group", "GuildFrameButton3Level", "GuildFrameButton3Name", "GuildFrameButton3Zone", "GuildFrameButton4Class", "GuildFrameButton4Group", "GuildFrameButton4Level", "GuildFrameButton4Name", "GuildFrameButton4Zone", "GuildFrameButton5Class", "GuildFrameButton5Group", "GuildFrameButton5Level", "GuildFrameButton5Name", "GuildFrameButton5Zone", "GuildFrameButton6Class", "GuildFrameButton6Group", "GuildFrameButton6Level", "GuildFrameButton6Name", "GuildFrameButton6Zone", "GuildFrameButton7Class", "GuildFrameButton7Group", "GuildFrameButton7Level", "GuildFrameButton7Name", "GuildFrameButton7Zone", "GuildFrameButton8Class", "GuildFrameButton8Group", "GuildFrameButton8Level", "GuildFrameButton8Name", "GuildFrameButton8Zone", "GuildFrameButton9Class", "GuildFrameButton9Group", "GuildFrameButton9Level", "GuildFrameButton9Name", "GuildFrameButton9Zone", "GuildFrameColumnHeader1HighlightTexture", "GuildFrameColumnHeader1Left", "GuildFrameColumnHeader1Middle", "GuildFrameColumnHeader1Right", "GuildFrameColumnHeader2HighlightTexture", "GuildFrameColumnHeader2Left", "GuildFrameColumnHeader2Middle", "GuildFrameColumnHeader2Right", "GuildFrameColumnHeader3HighlightTexture", "GuildFrameColumnHeader3Left", "GuildFrameColumnHeader3Middle", "GuildFrameColumnHeader3Right", "GuildFrameColumnHeader4HighlightTexture", "GuildFrameColumnHeader4Left", "GuildFrameColumnHeader4Middle", "GuildFrameColumnHeader4Right", "GuildFrameControlButtonText", "GuildFrameGuildInformationButtonText", "GuildFrameGuildStatusButton10Name", "GuildFrameGuildStatusButton10Note", "GuildFrameGuildStatusButton10Online", "GuildFrameGuildStatusButton10Rank", "GuildFrameGuildStatusButton11Name", "GuildFrameGuildStatusButton11Note", "GuildFrameGuildStatusButton11Online", "GuildFrameGuildStatusButton11Rank", "GuildFrameGuildStatusButton12Name", "GuildFrameGuildStatusButton12Note", "GuildFrameGuildStatusButton12Online", "GuildFrameGuildStatusButton12Rank", "GuildFrameGuildStatusButton13Name", "GuildFrameGuildStatusButton13Note", "GuildFrameGuildStatusButton13Online", "GuildFrameGuildStatusButton13Rank", "GuildFrameGuildStatusButton1Name", "GuildFrameGuildStatusButton1Note", "GuildFrameGuildStatusButton1Online", "GuildFrameGuildStatusButton1Rank", "GuildFrameGuildStatusButton2Name", "GuildFrameGuildStatusButton2Note", "GuildFrameGuildStatusButton2Online", "GuildFrameGuildStatusButton2Rank", "GuildFrameGuildStatusButton3Name", "GuildFrameGuildStatusButton3Note", "GuildFrameGuildStatusButton3Online", "GuildFrameGuildStatusButton3Rank", "GuildFrameGuildStatusButton4Name", "GuildFrameGuildStatusButton4Note", "GuildFrameGuildStatusButton4Online", "GuildFrameGuildStatusButton4Rank", "GuildFrameGuildStatusButton5Name", "GuildFrameGuildStatusButton5Note", "GuildFrameGuildStatusButton5Online", "GuildFrameGuildStatusButton5Rank", "GuildFrameGuildStatusButton6Name", "GuildFrameGuildStatusButton6Note", "GuildFrameGuildStatusButton6Online", "GuildFrameGuildStatusButton6Rank", "GuildFrameGuildStatusButton7Name", "GuildFrameGuildStatusButton7Note", "GuildFrameGuildStatusButton7Online", "GuildFrameGuildStatusButton7Rank", "GuildFrameGuildStatusButton8Name", "GuildFrameGuildStatusButton8Note", "GuildFrameGuildStatusButton8Online", "GuildFrameGuildStatusButton8Rank", "GuildFrameGuildStatusButton9Name", "GuildFrameGuildStatusButton9Note", "GuildFrameGuildStatusButton9Online", "GuildFrameGuildStatusButton9Rank", "GuildFrameGuildStatusColumnHeader1HighlightTexture", "GuildFrameGuildStatusColumnHeader1Left", "GuildFrameGuildStatusColumnHeader1Middle", "GuildFrameGuildStatusColumnHeader1Right", "GuildFrameGuildStatusColumnHeader2HighlightTexture", "GuildFrameGuildStatusColumnHeader2Left", "GuildFrameGuildStatusColumnHeader2Middle", "GuildFrameGuildStatusColumnHeader2Right", "GuildFrameGuildStatusColumnHeader3HighlightTexture", "GuildFrameGuildStatusColumnHeader3Left", "GuildFrameGuildStatusColumnHeader3Middle", "GuildFrameGuildStatusColumnHeader3Right", "GuildFrameGuildStatusColumnHeader4HighlightTexture", "GuildFrameGuildStatusColumnHeader4Left", "GuildFrameGuildStatusColumnHeader4Middle", "GuildFrameGuildStatusColumnHeader4Right", "GuildFrameLFGButtonText", "GuildFrameLFGFrameLeft", "GuildFrameLFGFrameMiddle", "GuildFrameLFGFrameRight", "GuildFrameNotesLabel", "GuildFrameNotesText", "GuildFrameOnlineTotals", "GuildFrameTotals", "GuildInfoCancelButtonText", "GuildInfoCorner", "GuildInfoFrameScrollFrameScrollBarThumbTexture", "GuildInfoGuildEventButtonText", "GuildInfoSaveButtonText", "GuildInfoTitle", "GuildListScrollFrameScrollBarThumbTexture", "GuildMemberDetailCorner", "GuildMemberDetailLevel", "GuildMemberDetailName", "GuildMemberDetailNoteLabel", "GuildMemberDetailOfficerNoteLabel", "GuildMemberDetailOnlineLabel", "GuildMemberDetailOnlineText", "GuildMemberDetailRankLabel", "GuildMemberDetailRankText", "GuildMemberDetailZoneLabel", "GuildMemberDetailZoneText", "GuildMemberGroupInviteButtonText", "GuildMemberRemoveButtonText", "GuildRegistrarButton1QuestIcon", "GuildRegistrarButton2QuestIcon", "GuildRegistrarCostLabel", "GuildRegistrarFrameCancelButtonText", "GuildRegistrarFrameGoodbyeButtonText", "GuildRegistrarFrameNpcNameText", "GuildRegistrarFramePortrait", "GuildRegistrarFramePurchaseButtonText", "GuildRegistrarMoneyFrameCopperButtonText", "GuildRegistrarMoneyFrameGoldButtonText", "GuildRegistrarMoneyFrameSilverButtonText", "GuildRegistrarPurchaseText", "GuildRegistrarText", "HelpFrameGMTalkCancelText", "HelpFrameGMTalkIssue1", "HelpFrameGMTalkIssue1Header", "HelpFrameGMTalkIssue2", "HelpFrameGMTalkIssue2Header", "HelpFrameGMTalkIssue3", "HelpFrameGMTalkIssue3Header", "HelpFrameGMTalkOpenTicketLeft", "HelpFrameGMTalkOpenTicketMiddle", "HelpFrameGMTalkOpenTicketRight", "HelpFrameGMTalkOpenTicketText", "HelpFrameGMTalkPvpPolicyUrl", "HelpFrameGMTalkText1", "HelpFrameGMTalkText2", "HelpFrameGMTalkTitle", "HelpFrameHeader", "HelpFrameLagAuctionHouseLeft", "HelpFrameLagAuctionHouseMiddle", "HelpFrameLagAuctionHouseRight", "HelpFrameLagAuctionHouseText", "HelpFrameLagCancelText", "HelpFrameLagChatLeft", "HelpFrameLagChatMiddle", "HelpFrameLagChatRight", "HelpFrameLagChatText", "HelpFrameLagLootLeft", "HelpFrameLagLootMiddle", "HelpFrameLagLootRight", "HelpFrameLagLootText", "HelpFrameLagMailLeft", "HelpFrameLagMailMiddle", "HelpFrameLagMailRight", "HelpFrameLagMailText", "HelpFrameLagMovementLeft", "HelpFrameLagMovementMiddle", "HelpFrameLagMovementRight", "HelpFrameLagMovementText", "HelpFrameLagSpellLeft", "HelpFrameLagSpellMiddle", "HelpFrameLagSpellRight", "HelpFrameLagSpellText", "HelpFrameLagText1", "HelpFrameLagTitle", "HelpFrameOpenTicketCancelText", "HelpFrameOpenTicketDividerLeft", "HelpFrameOpenTicketDividerMiddle", "HelpFrameOpenTicketDividerRight", "HelpFrameOpenTicketLabel", "HelpFrameOpenTicketScrollFrameScrollBarBottom", "HelpFrameOpenTicketScrollFrameScrollBarMiddle", "HelpFrameOpenTicketScrollFrameScrollBarThumbTexture", "HelpFrameOpenTicketScrollFrameScrollBarTop", "HelpFrameOpenTicketSubmitText", "HelpFrameReportIssueBullet1Text", "HelpFrameReportIssueBullet2Text", "HelpFrameReportIssueBulletTitle1", "HelpFrameReportIssueCancelText", "HelpFrameReportIssueOpenTicketLeft", "HelpFrameReportIssueOpenTicketMiddle", "HelpFrameReportIssueOpenTicketRight", "HelpFrameReportIssueOpenTicketText", "HelpFrameReportIssueText1", "HelpFrameReportIssueText2", "HelpFrameReportIssueTitle", "HelpFrameStuckCancelText", "HelpFrameStuckOpenTicketLeft", "HelpFrameStuckOpenTicketMiddle", "HelpFrameStuckOpenTicketRight", "HelpFrameStuckOpenTicketText", "HelpFrameStuckStuckLeft", "HelpFrameStuckStuckMiddle", "HelpFrameStuckStuckRight", "HelpFrameStuckStuckText", "HelpFrameStuckText1", "HelpFrameStuckTitle", "HelpFrameViewResponseCancelText", "HelpFrameViewResponseDividerLeft", "HelpFrameViewResponseDividerMiddle", "HelpFrameViewResponseDividerRight", "HelpFrameViewResponseIssueBody", "HelpFrameViewResponseIssueHeader", "HelpFrameViewResponseIssueResolvedText", "HelpFrameViewResponseIssueScrollFrameScrollBarBottom", "HelpFrameViewResponseIssueScrollFrameScrollBarMiddle", "HelpFrameViewResponseIssueScrollFrameScrollBarThumbTexture", "HelpFrameViewResponseIssueScrollFrameScrollBarTop", "HelpFrameViewResponseMessageBody", "HelpFrameViewResponseMessageHeader", "HelpFrameViewResponseMessageScrollFrameScrollBarBottom", "HelpFrameViewResponseMessageScrollFrameScrollBarMiddle", "HelpFrameViewResponseMessageScrollFrameScrollBarThumbTexture", "HelpFrameViewResponseMessageScrollFrameScrollBarTop", "HelpFrameViewResponseMoreHelpText", "HelpFrameWelcomeCancelText", "HelpFrameWelcomeGMTalkLeft", "HelpFrameWelcomeGMTalkMiddle", "HelpFrameWelcomeGMTalkRight", "HelpFrameWelcomeGMTalkText", "HelpFrameWelcomeReportIssueLeft", "HelpFrameWelcomeReportIssueMiddle", "HelpFrameWelcomeReportIssueRight", "HelpFrameWelcomeReportIssueText", "HelpFrameWelcomeStuckLeft", "HelpFrameWelcomeStuckMiddle", "HelpFrameWelcomeStuckRight", "HelpFrameWelcomeStuckText", "HelpFrameWelcomeText1", "HelpFrameWelcomeTitle", "HonorFrameCurrentDKText", "HonorFrameCurrentDKValue", "HonorFrameCurrentHKText", "HonorFrameCurrentHKValue", "HonorFrameCurrentPVPRank", "HonorFrameCurrentPVPTitle", "HonorFrameCurrentSessionTitle", "HonorFrameLastWeekContributionText", "HonorFrameLastWeekContributionValue", "HonorFrameLastWeekHKText", "HonorFrameLastWeekHKValue", "HonorFrameLastWeekStandingText", "HonorFrameLastWeekStandingValue", "HonorFrameLastWeekTitle", "HonorFrameLifeTimeDKText", "HonorFrameLifeTimeDKValue", "HonorFrameLifeTimeHKText", "HonorFrameLifeTimeHKValue", "HonorFrameLifeTimeRankText", "HonorFrameLifeTimeRankValue", "HonorFrameLifeTimeTitle", "HonorFrameProgressBarBar", "HonorFramePvPIcon", "HonorFrameThisWeekContributionText", "HonorFrameThisWeekContributionValue", "HonorFrameThisWeekHKText", "HonorFrameThisWeekHKValue", "HonorFrameThisWeekTitle", "HonorFrameYesterdayContributionText", "HonorFrameYesterdayContributionValue", "HonorFrameYesterdayHKText", "HonorFrameYesterdayHKValue", "HonorFrameYesterdayTitle", "HonorGuildText", "HonorLevelText", "InboxCurrentPage", "InboxTitleText", "InboxTooMuchMailText", "InterfaceOptionsActionBarsPanelAlwaysShowActionBarsText", "InterfaceOptionsActionBarsPanelBottomLeftText", "InterfaceOptionsActionBarsPanelBottomRightText", "InterfaceOptionsActionBarsPanelLockActionBarsText", "InterfaceOptionsActionBarsPanelRightText", "InterfaceOptionsActionBarsPanelRightTwoText", "InterfaceOptionsActionBarsPanelSecureAbilityToggleText", "InterfaceOptionsActionBarsPanelSubText", "InterfaceOptionsActionBarsPanelTitle", "InterfaceOptionsBattlenetPanelBroadcastsText", "InterfaceOptionsBattlenetPanelConversationsText", "InterfaceOptionsBattlenetPanelFriendRequestsText", "InterfaceOptionsBattlenetPanelOfflineFriendsText", "InterfaceOptionsBattlenetPanelOnlineFriendsText", "InterfaceOptionsBattlenetPanelShowToastWindowText", "InterfaceOptionsBattlenetPanelSubText", "InterfaceOptionsBattlenetPanelTitle", "InterfaceOptionsBattlenetPanelToastDurationSliderHigh", "InterfaceOptionsBattlenetPanelToastDurationSliderLow", "InterfaceOptionsBattlenetPanelToastDurationSliderText", "InterfaceOptionsBattlenetPanelToastDurationSliderThumb", "InterfaceOptionsBuffsPanelBuffDurationsText", "InterfaceOptionsBuffsPanelCastableBuffsText", "InterfaceOptionsBuffsPanelConsolidateBuffsText", "InterfaceOptionsBuffsPanelDispellableDebuffsText", "InterfaceOptionsBuffsPanelShowCastableDebuffsText", "InterfaceOptionsBuffsPanelSubText", "InterfaceOptionsBuffsPanelTitle", "InterfaceOptionsCameraPanelFollowSpeedSliderHigh", "InterfaceOptionsCameraPanelFollowSpeedSliderLow", "InterfaceOptionsCameraPanelFollowSpeedSliderText", "InterfaceOptionsCameraPanelFollowSpeedSliderThumb", "InterfaceOptionsCameraPanelFollowTerrainText", "InterfaceOptionsCameraPanelHeadBobText", "InterfaceOptionsCameraPanelMaxDistanceSliderHigh", "InterfaceOptionsCameraPanelMaxDistanceSliderLow", "InterfaceOptionsCameraPanelMaxDistanceSliderText", "InterfaceOptionsCameraPanelMaxDistanceSliderThumb", "InterfaceOptionsCameraPanelSmartPivotText", "InterfaceOptionsCameraPanelStyleDropDownButtonDisabledTexture", "InterfaceOptionsCameraPanelStyleDropDownButtonHighlightTexture", "InterfaceOptionsCameraPanelStyleDropDownButtonNormalTexture", "InterfaceOptionsCameraPanelStyleDropDownButtonPushedTexture", "InterfaceOptionsCameraPanelStyleDropDownLabel", "InterfaceOptionsCameraPanelStyleDropDownLeft", "InterfaceOptionsCameraPanelStyleDropDownMiddle", "InterfaceOptionsCameraPanelStyleDropDownRight", "InterfaceOptionsCameraPanelStyleDropDownText", "InterfaceOptionsCameraPanelSubText", "InterfaceOptionsCameraPanelTitle", "InterfaceOptionsCameraPanelWaterCollisionText", "InterfaceOptionsCombatPanelAttackOnAssistText", "InterfaceOptionsCombatPanelAutoRangeText", "InterfaceOptionsCombatPanelAutoSelfCastText", "InterfaceOptionsCombatPanelEnemyCastBarsLabel", "InterfaceOptionsCombatPanelEnemyCastBarsOnNameplatesText", "InterfaceOptionsCombatPanelEnemyCastBarsOnPortraitText", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButtonDisabledTexture", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButtonHighlightTexture", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButtonNormalTexture", "InterfaceOptionsCombatPanelFocusCastKeyDropDownButtonPushedTexture", "InterfaceOptionsCombatPanelFocusCastKeyDropDownLabel", "InterfaceOptionsCombatPanelFocusCastKeyDropDownLeft", "InterfaceOptionsCombatPanelFocusCastKeyDropDownMiddle", "InterfaceOptionsCombatPanelFocusCastKeyDropDownRight", "InterfaceOptionsCombatPanelFocusCastKeyDropDownText", "InterfaceOptionsCombatPanelNameplateClassColorsText", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButtonDisabledTexture", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButtonHighlightTexture", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButtonNormalTexture", "InterfaceOptionsCombatPanelSelfCastKeyDropDownButtonPushedTexture", "InterfaceOptionsCombatPanelSelfCastKeyDropDownLabel", "InterfaceOptionsCombatPanelSelfCastKeyDropDownLeft", "InterfaceOptionsCombatPanelSelfCastKeyDropDownMiddle", "InterfaceOptionsCombatPanelSelfCastKeyDropDownRight", "InterfaceOptionsCombatPanelSelfCastKeyDropDownText", "InterfaceOptionsCombatPanelStopAutoAttackText", "InterfaceOptionsCombatPanelSubText", "InterfaceOptionsCombatPanelTOTDropDownButtonDisabledTexture", "InterfaceOptionsCombatPanelTOTDropDownButtonHighlightTexture", "InterfaceOptionsCombatPanelTOTDropDownButtonNormalTexture", "InterfaceOptionsCombatPanelTOTDropDownButtonPushedTexture", "InterfaceOptionsCombatPanelTOTDropDownLeft", "InterfaceOptionsCombatPanelTOTDropDownMiddle", "InterfaceOptionsCombatPanelTOTDropDownRight", "InterfaceOptionsCombatPanelTOTDropDownText", "InterfaceOptionsCombatPanelTargetOfTargetText", "InterfaceOptionsCombatPanelTitle", "InterfaceOptionsCombatTextPanelAurasText", "InterfaceOptionsCombatTextPanelCombatStateText", "InterfaceOptionsCombatTextPanelComboPointsText", "InterfaceOptionsCombatTextPanelDamageReductionText", "InterfaceOptionsCombatTextPanelDodgeParryMissText", "InterfaceOptionsCombatTextPanelEnableFCTText", "InterfaceOptionsCombatTextPanelEnergyGainsText", "InterfaceOptionsCombatTextPanelFCTDropDownButtonDisabledTexture", "InterfaceOptionsCombatTextPanelFCTDropDownButtonHighlightTexture", "InterfaceOptionsCombatTextPanelFCTDropDownButtonNormalTexture", "InterfaceOptionsCombatTextPanelFCTDropDownButtonPushedTexture", "InterfaceOptionsCombatTextPanelFCTDropDownLabel", "InterfaceOptionsCombatTextPanelFCTDropDownLeft", "InterfaceOptionsCombatTextPanelFCTDropDownMiddle", "InterfaceOptionsCombatTextPanelFCTDropDownRight", "InterfaceOptionsCombatTextPanelFCTDropDownText", "InterfaceOptionsCombatTextPanelFriendlyHealerNamesText", "InterfaceOptionsCombatTextPanelHealingText", "InterfaceOptionsCombatTextPanelHonorGainsText", "InterfaceOptionsCombatTextPanelLowManaHealthText", "InterfaceOptionsCombatTextPanelOtherTargetEffectsText", "InterfaceOptionsCombatTextPanelPeriodicDamageText", "InterfaceOptionsCombatTextPanelPeriodicEnergyGainsText", "InterfaceOptionsCombatTextPanelPetDamageText", "InterfaceOptionsCombatTextPanelReactiveAbilitiesText", "InterfaceOptionsCombatTextPanelRepChangesText", "InterfaceOptionsCombatTextPanelSubText", "InterfaceOptionsCombatTextPanelTargetDamageText", "InterfaceOptionsCombatTextPanelTargetEffectsText", "InterfaceOptionsCombatTextPanelTitle", "InterfaceOptionsControlsPanelAutoClearAFKText", "InterfaceOptionsControlsPanelAutoDismountText", "InterfaceOptionsControlsPanelAutoLootCorpseText", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButtonDisabledTexture", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButtonHighlightTexture", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButtonNormalTexture", "InterfaceOptionsControlsPanelAutoLootKeyDropDownButtonPushedTexture", "InterfaceOptionsControlsPanelAutoLootKeyDropDownLabel", "InterfaceOptionsControlsPanelAutoLootKeyDropDownLeft", "InterfaceOptionsControlsPanelAutoLootKeyDropDownMiddle", "InterfaceOptionsControlsPanelAutoLootKeyDropDownRight", "InterfaceOptionsControlsPanelAutoLootKeyDropDownText", "InterfaceOptionsControlsPanelBlockTradesText", "InterfaceOptionsControlsPanelLootAtMouseText", "InterfaceOptionsControlsPanelStickyTargetingText", "InterfaceOptionsControlsPanelSubText", "InterfaceOptionsControlsPanelTitle", "InterfaceOptionsDisplayPanelAggroWarningDisplayButtonDisabledTexture", "InterfaceOptionsDisplayPanelAggroWarningDisplayButtonHighlightTexture", "InterfaceOptionsDisplayPanelAggroWarningDisplayButtonNormalTexture", "InterfaceOptionsDisplayPanelAggroWarningDisplayButtonPushedTexture", "InterfaceOptionsDisplayPanelAggroWarningDisplayLabel", "InterfaceOptionsDisplayPanelAggroWarningDisplayLeft", "InterfaceOptionsDisplayPanelAggroWarningDisplayMiddle", "InterfaceOptionsDisplayPanelAggroWarningDisplayRight", "InterfaceOptionsDisplayPanelAggroWarningDisplayText", "InterfaceOptionsDisplayPanelCinematicSubtitlesText", "InterfaceOptionsDisplayPanelColorblindModeText", "InterfaceOptionsDisplayPanelDetailedLootInfoText", "InterfaceOptionsDisplayPanelPlayAggroSoundsText", "InterfaceOptionsDisplayPanelRotateMinimapText", "InterfaceOptionsDisplayPanelScreenEdgeFlashText", "InterfaceOptionsDisplayPanelShowAggroPercentageText", "InterfaceOptionsDisplayPanelShowCloakText", "InterfaceOptionsDisplayPanelShowClockText", "InterfaceOptionsDisplayPanelShowFreeBagSpaceText", "InterfaceOptionsDisplayPanelShowHelmText", "InterfaceOptionsDisplayPanelShowItemLevelText", "InterfaceOptionsDisplayPanelSubText", "InterfaceOptionsDisplayPanelTitle", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButtonDisabledTexture", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButtonHighlightTexture", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButtonNormalTexture", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayButtonPushedTexture", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayLabel", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayLeft", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayMiddle", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayRight", "InterfaceOptionsDisplayPanelWorldPVPObjectiveDisplayText", "InterfaceOptionsFeaturesPanelEquipmentManagerDescription", "InterfaceOptionsFeaturesPanelEquipmentManagerText", "InterfaceOptionsFeaturesPanelPreviewTalentChangesDescription", "InterfaceOptionsFeaturesPanelPreviewTalentChangesText", "InterfaceOptionsFeaturesPanelSubText", "InterfaceOptionsFeaturesPanelTitle", "InterfaceOptionsFrameAddOnsBottom", "InterfaceOptionsFrameAddOnsBottomLeft", "InterfaceOptionsFrameAddOnsBottomRight", "InterfaceOptionsFrameAddOnsButton10Text", "InterfaceOptionsFrameAddOnsButton10ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton10ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton10TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton11Text", "InterfaceOptionsFrameAddOnsButton11ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton11ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton11TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton12Text", "InterfaceOptionsFrameAddOnsButton12ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton12ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton12TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton13Text", "InterfaceOptionsFrameAddOnsButton13ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton13ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton13TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton14Text", "InterfaceOptionsFrameAddOnsButton14ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton14ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton14TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton15Text", "InterfaceOptionsFrameAddOnsButton15ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton15ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton15TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton16Text", "InterfaceOptionsFrameAddOnsButton16ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton16ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton16TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton17Text", "InterfaceOptionsFrameAddOnsButton17ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton17ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton17TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton18Text", "InterfaceOptionsFrameAddOnsButton18ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton18ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton18TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton19Text", "InterfaceOptionsFrameAddOnsButton19ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton19ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton19TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton1Text", "InterfaceOptionsFrameAddOnsButton1ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton1ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton1TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton20Text", "InterfaceOptionsFrameAddOnsButton20ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton20ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton20TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton21Text", "InterfaceOptionsFrameAddOnsButton21ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton21ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton21TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton22Text", "InterfaceOptionsFrameAddOnsButton22ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton22ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton22TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton23Text", "InterfaceOptionsFrameAddOnsButton23ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton23ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton23TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton2Text", "InterfaceOptionsFrameAddOnsButton2ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton2ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton2TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton3Text", "InterfaceOptionsFrameAddOnsButton3ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton3ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton3TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton4Text", "InterfaceOptionsFrameAddOnsButton4ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton4ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton4TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton5Text", "InterfaceOptionsFrameAddOnsButton5ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton5ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton5TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton6Text", "InterfaceOptionsFrameAddOnsButton6ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton6ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton6TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton7Text", "InterfaceOptionsFrameAddOnsButton7ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton7ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton7TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton8Text", "InterfaceOptionsFrameAddOnsButton8ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton8ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton8TogglePushedTexture", "InterfaceOptionsFrameAddOnsButton9Text", "InterfaceOptionsFrameAddOnsButton9ToggleHighlightTexture", "InterfaceOptionsFrameAddOnsButton9ToggleNormalTexture", "InterfaceOptionsFrameAddOnsButton9TogglePushedTexture", "InterfaceOptionsFrameAddOnsLeft", "InterfaceOptionsFrameAddOnsListScrollBarThumbTexture", "InterfaceOptionsFrameAddOnsRight", "InterfaceOptionsFrameAddOnsTop", "InterfaceOptionsFrameAddOnsTopLeft", "InterfaceOptionsFrameAddOnsTopRight", "InterfaceOptionsFrameCancelText", "InterfaceOptionsFrameCategoriesBottom", "InterfaceOptionsFrameCategoriesBottomLeft", "InterfaceOptionsFrameCategoriesBottomRight", "InterfaceOptionsFrameCategoriesButton10Text", "InterfaceOptionsFrameCategoriesButton10ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton10ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton10TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton11Text", "InterfaceOptionsFrameCategoriesButton11ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton11ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton11TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton12Text", "InterfaceOptionsFrameCategoriesButton12ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton12ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton12TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton13Text", "InterfaceOptionsFrameCategoriesButton13ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton13ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton13TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton14Text", "InterfaceOptionsFrameCategoriesButton14ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton14ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton14TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton15Text", "InterfaceOptionsFrameCategoriesButton15ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton15ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton15TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton16Text", "InterfaceOptionsFrameCategoriesButton16ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton16ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton16TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton17Text", "InterfaceOptionsFrameCategoriesButton17ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton17ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton17TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton18Text", "InterfaceOptionsFrameCategoriesButton18ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton18ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton18TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton19Text", "InterfaceOptionsFrameCategoriesButton19ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton19ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton19TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton1Text", "InterfaceOptionsFrameCategoriesButton1ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton1ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton1TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton20Text", "InterfaceOptionsFrameCategoriesButton20ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton20ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton20TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton21Text", "InterfaceOptionsFrameCategoriesButton21ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton21ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton21TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton22Text", "InterfaceOptionsFrameCategoriesButton22ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton22ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton22TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton23Text", "InterfaceOptionsFrameCategoriesButton23ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton23ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton23TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton2Text", "InterfaceOptionsFrameCategoriesButton2ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton2ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton2TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton3Text", "InterfaceOptionsFrameCategoriesButton3ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton3ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton3TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton4Text", "InterfaceOptionsFrameCategoriesButton4ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton4ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton4TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton5Text", "InterfaceOptionsFrameCategoriesButton5ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton5ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton5TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton6Text", "InterfaceOptionsFrameCategoriesButton6ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton6ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton6TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton7Text", "InterfaceOptionsFrameCategoriesButton7ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton7ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton7TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton8Text", "InterfaceOptionsFrameCategoriesButton8ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton8ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton8TogglePushedTexture", "InterfaceOptionsFrameCategoriesButton9Text", "InterfaceOptionsFrameCategoriesButton9ToggleHighlightTexture", "InterfaceOptionsFrameCategoriesButton9ToggleNormalTexture", "InterfaceOptionsFrameCategoriesButton9TogglePushedTexture", "InterfaceOptionsFrameCategoriesLeft", "InterfaceOptionsFrameCategoriesListScrollBarThumbTexture", "InterfaceOptionsFrameCategoriesRight", "InterfaceOptionsFrameCategoriesTop", "InterfaceOptionsFrameCategoriesTopLeft", "InterfaceOptionsFrameCategoriesTopRight", "InterfaceOptionsFrameHeader", "InterfaceOptionsFrameHeaderText", "InterfaceOptionsFrameOkayText", "InterfaceOptionsFrameTab1HighlightTexture", "InterfaceOptionsFrameTab1Left", "InterfaceOptionsFrameTab1LeftDisabled", "InterfaceOptionsFrameTab1Middle", "InterfaceOptionsFrameTab1MiddleDisabled", "InterfaceOptionsFrameTab1Right", "InterfaceOptionsFrameTab1RightDisabled", "InterfaceOptionsFrameTab1TabSpacer", "InterfaceOptionsFrameTab1Text", "InterfaceOptionsFrameTab2HighlightTexture", "InterfaceOptionsFrameTab2Left", "InterfaceOptionsFrameTab2LeftDisabled", "InterfaceOptionsFrameTab2Middle", "InterfaceOptionsFrameTab2MiddleDisabled", "InterfaceOptionsFrameTab2Right", "InterfaceOptionsFrameTab2RightDisabled", "InterfaceOptionsFrameTab2TabSpacer1", "InterfaceOptionsFrameTab2TabSpacer2", "InterfaceOptionsFrameTab2Text", "InterfaceOptionsHelpPanelBeginnerTooltipsText", "InterfaceOptionsHelpPanelEnhancedTooltipsText", "InterfaceOptionsHelpPanelLoadingScreenTipsText", "InterfaceOptionsHelpPanelResetTutorialsText", "InterfaceOptionsHelpPanelShowLuaErrorsText", "InterfaceOptionsHelpPanelShowTutorialsText", "InterfaceOptionsHelpPanelSubText", "InterfaceOptionsHelpPanelTitle", "InterfaceOptionsLanguagesPanelLocaleDropDownButtonDisabledTexture", "InterfaceOptionsLanguagesPanelLocaleDropDownButtonHighlightTexture", "InterfaceOptionsLanguagesPanelLocaleDropDownButtonNormalTexture", "InterfaceOptionsLanguagesPanelLocaleDropDownButtonPushedTexture", "InterfaceOptionsLanguagesPanelLocaleDropDownLabel", "InterfaceOptionsLanguagesPanelLocaleDropDownLeft", "InterfaceOptionsLanguagesPanelLocaleDropDownMiddle", "InterfaceOptionsLanguagesPanelLocaleDropDownRight", "InterfaceOptionsLanguagesPanelLocaleDropDownText", "InterfaceOptionsLanguagesPanelSubText", "InterfaceOptionsLanguagesPanelTitle", "InterfaceOptionsLanguagesPanelUseEnglishAudioText", "InterfaceOptionsMousePanelClickMoveStyleDropDownButtonDisabledTexture", "InterfaceOptionsMousePanelClickMoveStyleDropDownButtonHighlightTexture", "InterfaceOptionsMousePanelClickMoveStyleDropDownButtonNormalTexture", "InterfaceOptionsMousePanelClickMoveStyleDropDownButtonPushedTexture", "InterfaceOptionsMousePanelClickMoveStyleDropDownLabel", "InterfaceOptionsMousePanelClickMoveStyleDropDownLeft", "InterfaceOptionsMousePanelClickMoveStyleDropDownMiddle", "InterfaceOptionsMousePanelClickMoveStyleDropDownRight", "InterfaceOptionsMousePanelClickMoveStyleDropDownText", "InterfaceOptionsMousePanelClickToMoveText", "InterfaceOptionsMousePanelInvertMouseText", "InterfaceOptionsMousePanelMouseLookSpeedSliderHigh", "InterfaceOptionsMousePanelMouseLookSpeedSliderLow", "InterfaceOptionsMousePanelMouseLookSpeedSliderText", "InterfaceOptionsMousePanelMouseLookSpeedSliderThumb", "InterfaceOptionsMousePanelMouseSensitivitySliderHigh", "InterfaceOptionsMousePanelMouseSensitivitySliderLow", "InterfaceOptionsMousePanelMouseSensitivitySliderText", "InterfaceOptionsMousePanelMouseSensitivitySliderThumb", "InterfaceOptionsMousePanelSubText", "InterfaceOptionsMousePanelTitle", "InterfaceOptionsMousePanelWoWMouseText", "InterfaceOptionsNamesPanelEnemyGuardiansText", "InterfaceOptionsNamesPanelEnemyPetsText", "InterfaceOptionsNamesPanelEnemyPlayerNamesText", "InterfaceOptionsNamesPanelEnemyTotemsText", "InterfaceOptionsNamesPanelFriendlyGuardiansText", "InterfaceOptionsNamesPanelFriendlyPetsText", "InterfaceOptionsNamesPanelFriendlyPlayerNamesText", "InterfaceOptionsNamesPanelFriendlyTotemsText", "InterfaceOptionsNamesPanelGuildsText", "InterfaceOptionsNamesPanelMyNameText", "InterfaceOptionsNamesPanelNPCNamesText", "InterfaceOptionsNamesPanelNonCombatCreatureText", "InterfaceOptionsNamesPanelSubText", "InterfaceOptionsNamesPanelTitle", "InterfaceOptionsNamesPanelTitlesText", "InterfaceOptionsNamesPanelUnitNameplatesAllowOverlapText", "InterfaceOptionsNamesPanelUnitNameplatesEnemiesText", "InterfaceOptionsNamesPanelUnitNameplatesEnemyGuardiansText", "InterfaceOptionsNamesPanelUnitNameplatesEnemyPetsText", "InterfaceOptionsNamesPanelUnitNameplatesEnemyTotemsText", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyGuardiansText", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyPetsText", "InterfaceOptionsNamesPanelUnitNameplatesFriendlyTotemsText", "InterfaceOptionsNamesPanelUnitNameplatesFriendsText", "InterfaceOptionsNamesPanelUnitNameplatesTitle", "InterfaceOptionsObjectivesPanelAdvancedWorldMapText", "InterfaceOptionsObjectivesPanelAutoQuestProgressText", "InterfaceOptionsObjectivesPanelAutoQuestTrackingText", "InterfaceOptionsObjectivesPanelInstantQuestTextText", "InterfaceOptionsObjectivesPanelMapQuestDifficultyText", "InterfaceOptionsObjectivesPanelSubText", "InterfaceOptionsObjectivesPanelTitle", "InterfaceOptionsObjectivesPanelWatchFrameWidthText", "InterfaceOptionsSocialPanelChatBubblesText", "InterfaceOptionsSocialPanelChatHoverDelayText", "InterfaceOptionsSocialPanelChatMouseScrollText", "InterfaceOptionsSocialPanelChatStyleButtonDisabledTexture", "InterfaceOptionsSocialPanelChatStyleButtonHighlightTexture", "InterfaceOptionsSocialPanelChatStyleButtonNormalTexture", "InterfaceOptionsSocialPanelChatStyleButtonPushedTexture", "InterfaceOptionsSocialPanelChatStyleLabel", "InterfaceOptionsSocialPanelChatStyleLeft", "InterfaceOptionsSocialPanelChatStyleMiddle", "InterfaceOptionsSocialPanelChatStyleRight", "InterfaceOptionsSocialPanelChatStyleText", "InterfaceOptionsSocialPanelConversationModeButtonDisabledTexture", "InterfaceOptionsSocialPanelConversationModeButtonHighlightTexture", "InterfaceOptionsSocialPanelConversationModeButtonNormalTexture", "InterfaceOptionsSocialPanelConversationModeButtonPushedTexture", "InterfaceOptionsSocialPanelConversationModeLabel", "InterfaceOptionsSocialPanelConversationModeLeft", "InterfaceOptionsSocialPanelConversationModeMiddle", "InterfaceOptionsSocialPanelConversationModeRight", "InterfaceOptionsSocialPanelConversationModeText", "InterfaceOptionsSocialPanelGuildMemberAlertText", "InterfaceOptionsSocialPanelGuildRecruitmentText", "InterfaceOptionsSocialPanelPartyChatText", "InterfaceOptionsSocialPanelProfanityFilterText", "InterfaceOptionsSocialPanelSpamFilterText", "InterfaceOptionsSocialPanelSubText", "InterfaceOptionsSocialPanelTimestampsButtonDisabledTexture", "InterfaceOptionsSocialPanelTimestampsButtonHighlightTexture", "InterfaceOptionsSocialPanelTimestampsButtonNormalTexture", "InterfaceOptionsSocialPanelTimestampsButtonPushedTexture", "InterfaceOptionsSocialPanelTimestampsLabel", "InterfaceOptionsSocialPanelTimestampsLeft", "InterfaceOptionsSocialPanelTimestampsMiddle", "InterfaceOptionsSocialPanelTimestampsRight", "InterfaceOptionsSocialPanelTimestampsText", "InterfaceOptionsSocialPanelTitle", "InterfaceOptionsSocialPanelWholeChatWindowClickableText", "InterfaceOptionsStatusTextPanelPartyText", "InterfaceOptionsStatusTextPanelPercentagesText", "InterfaceOptionsStatusTextPanelPetText", "InterfaceOptionsStatusTextPanelPlayerText", "InterfaceOptionsStatusTextPanelSubText", "InterfaceOptionsStatusTextPanelTargetText", "InterfaceOptionsStatusTextPanelTitle", "InterfaceOptionsStatusTextPanelXPText", "InterfaceOptionsUnitFramePanelArenaEnemyCastBarText", "InterfaceOptionsUnitFramePanelArenaEnemyFramesText", "InterfaceOptionsUnitFramePanelArenaEnemyPetsText", "InterfaceOptionsUnitFramePanelFullSizeFocusFrameText", "InterfaceOptionsUnitFramePanelPartyBackgroundText", "InterfaceOptionsUnitFramePanelPartyInRaidText", "InterfaceOptionsUnitFramePanelPartyPetsText", "InterfaceOptionsUnitFramePanelRaidRangeText", "InterfaceOptionsUnitFramePanelSubText", "InterfaceOptionsUnitFramePanelTitle", "InvoiceFont_Med", "InvoiceFont_Small", "InvoiceTextFontNormal", "InvoiceTextFontSmall", "ItemRefShoppingTooltip1TextLeft1", "ItemRefShoppingTooltip1TextLeft2", "ItemRefShoppingTooltip1TextLeft3", "ItemRefShoppingTooltip1TextLeft4", "ItemRefShoppingTooltip1TextRight1", "ItemRefShoppingTooltip1TextRight2", "ItemRefShoppingTooltip1TextRight3", "ItemRefShoppingTooltip1TextRight4", "ItemRefShoppingTooltip1Texture1", "ItemRefShoppingTooltip1Texture2", "ItemRefShoppingTooltip1Texture3", "ItemRefShoppingTooltip2TextLeft1", "ItemRefShoppingTooltip2TextLeft2", "ItemRefShoppingTooltip2TextLeft3", "ItemRefShoppingTooltip2TextLeft4", "ItemRefShoppingTooltip2TextRight1", "ItemRefShoppingTooltip2TextRight2", "ItemRefShoppingTooltip2TextRight3", "ItemRefShoppingTooltip2TextRight4", "ItemRefShoppingTooltip2Texture1", "ItemRefShoppingTooltip2Texture2", "ItemRefShoppingTooltip2Texture3", "ItemRefShoppingTooltip3TextLeft1", "ItemRefShoppingTooltip3TextLeft2", "ItemRefShoppingTooltip3TextLeft3", "ItemRefShoppingTooltip3TextLeft4", "ItemRefShoppingTooltip3TextRight1", "ItemRefShoppingTooltip3TextRight2", "ItemRefShoppingTooltip3TextRight3", "ItemRefShoppingTooltip3TextRight4", "ItemRefShoppingTooltip3Texture1", "ItemRefShoppingTooltip3Texture2", "ItemRefShoppingTooltip3Texture3", "ItemRefTooltipStatusBarTexture", "ItemRefTooltipTextLeft1", "ItemRefTooltipTextLeft2", "ItemRefTooltipTextLeft3", "ItemRefTooltipTextLeft4", "ItemRefTooltipTextLeft5", "ItemRefTooltipTextLeft6", "ItemRefTooltipTextLeft7", "ItemRefTooltipTextLeft8", "ItemRefTooltipTextRight1", "ItemRefTooltipTextRight2", "ItemRefTooltipTextRight3", "ItemRefTooltipTextRight4", "ItemRefTooltipTextRight5", "ItemRefTooltipTextRight6", "ItemRefTooltipTextRight7", "ItemRefTooltipTextRight8", "ItemRefTooltipTexture1", "ItemRefTooltipTexture10", "ItemRefTooltipTexture2", "ItemRefTooltipTexture3", "ItemRefTooltipTexture4", "ItemRefTooltipTexture5", "ItemRefTooltipTexture6", "ItemRefTooltipTexture7", "ItemRefTooltipTexture8", "ItemRefTooltipTexture9", "ItemTextCurrentPage", "ItemTextFontNormal", "ItemTextMaterialBotLeft", "ItemTextMaterialBotRight", "ItemTextMaterialTopLeft", "ItemTextMaterialTopRight", "ItemTextScrollFrameBottom", "ItemTextScrollFrameMiddle", "ItemTextScrollFrameScrollBarThumbTexture", "ItemTextScrollFrameTop", "ItemTextTitleText", "KnowledgeBaseArticleListFrameCount", "KnowledgeBaseArticleListFrameNextButtonText", "KnowledgeBaseArticleListFramePreviousButtonText", "KnowledgeBaseArticleListFrameTitle", "KnowledgeBaseArticleListItem10HotIcon", "KnowledgeBaseArticleListItem10Number", "KnowledgeBaseArticleListItem10Title", "KnowledgeBaseArticleListItem10UpdatedIcon", "KnowledgeBaseArticleListItem11HotIcon", "KnowledgeBaseArticleListItem11Number", "KnowledgeBaseArticleListItem11Title", "KnowledgeBaseArticleListItem11UpdatedIcon", "KnowledgeBaseArticleListItem12HotIcon", "KnowledgeBaseArticleListItem12Number", "KnowledgeBaseArticleListItem12Title", "KnowledgeBaseArticleListItem12UpdatedIcon", "KnowledgeBaseArticleListItem13HotIcon", "KnowledgeBaseArticleListItem13Number", "KnowledgeBaseArticleListItem13Title", "KnowledgeBaseArticleListItem13UpdatedIcon", "KnowledgeBaseArticleListItem14HotIcon", "KnowledgeBaseArticleListItem14Number", "KnowledgeBaseArticleListItem14Title", "KnowledgeBaseArticleListItem14UpdatedIcon", "KnowledgeBaseArticleListItem15HotIcon", "KnowledgeBaseArticleListItem15Number", "KnowledgeBaseArticleListItem15Title", "KnowledgeBaseArticleListItem15UpdatedIcon", "KnowledgeBaseArticleListItem16HotIcon", "KnowledgeBaseArticleListItem16Number", "KnowledgeBaseArticleListItem16Title", "KnowledgeBaseArticleListItem16UpdatedIcon", "KnowledgeBaseArticleListItem17HotIcon", "KnowledgeBaseArticleListItem17Number", "KnowledgeBaseArticleListItem17Title", "KnowledgeBaseArticleListItem17UpdatedIcon", "KnowledgeBaseArticleListItem18HotIcon", "KnowledgeBaseArticleListItem18Number", "KnowledgeBaseArticleListItem18Title", "KnowledgeBaseArticleListItem18UpdatedIcon", "KnowledgeBaseArticleListItem19HotIcon", "KnowledgeBaseArticleListItem19Number", "KnowledgeBaseArticleListItem19Title", "KnowledgeBaseArticleListItem19UpdatedIcon", "KnowledgeBaseArticleListItem1HotIcon", "KnowledgeBaseArticleListItem1Number", "KnowledgeBaseArticleListItem1Title", "KnowledgeBaseArticleListItem1UpdatedIcon", "KnowledgeBaseArticleListItem20HotIcon", "KnowledgeBaseArticleListItem20Number", "KnowledgeBaseArticleListItem20Title", "KnowledgeBaseArticleListItem20UpdatedIcon", "KnowledgeBaseArticleListItem2HotIcon", "KnowledgeBaseArticleListItem2Number", "KnowledgeBaseArticleListItem2Title", "KnowledgeBaseArticleListItem2UpdatedIcon", "KnowledgeBaseArticleListItem3HotIcon", "KnowledgeBaseArticleListItem3Number", "KnowledgeBaseArticleListItem3Title", "KnowledgeBaseArticleListItem3UpdatedIcon", "KnowledgeBaseArticleListItem4HotIcon", "KnowledgeBaseArticleListItem4Number", "KnowledgeBaseArticleListItem4Title", "KnowledgeBaseArticleListItem4UpdatedIcon", "KnowledgeBaseArticleListItem5HotIcon", "KnowledgeBaseArticleListItem5Number", "KnowledgeBaseArticleListItem5Title", "KnowledgeBaseArticleListItem5UpdatedIcon", "KnowledgeBaseArticleListItem6HotIcon", "KnowledgeBaseArticleListItem6Number", "KnowledgeBaseArticleListItem6Title", "KnowledgeBaseArticleListItem6UpdatedIcon", "KnowledgeBaseArticleListItem7HotIcon", "KnowledgeBaseArticleListItem7Number", "KnowledgeBaseArticleListItem7Title", "KnowledgeBaseArticleListItem7UpdatedIcon", "KnowledgeBaseArticleListItem8HotIcon", "KnowledgeBaseArticleListItem8Number", "KnowledgeBaseArticleListItem8Title", "KnowledgeBaseArticleListItem8UpdatedIcon", "KnowledgeBaseArticleListItem9HotIcon", "KnowledgeBaseArticleListItem9Number", "KnowledgeBaseArticleListItem9Title", "KnowledgeBaseArticleListItem9UpdatedIcon", "KnowledgeBaseArticleScrollChildFrameArticleId", "KnowledgeBaseArticleScrollChildFrameBackButtonText", "KnowledgeBaseArticleScrollChildFrameText", "KnowledgeBaseArticleScrollChildFrameTitle", "KnowledgeBaseArticleScrollFrameScrollBarThumbTexture", "KnowledgeBaseErrorFrameText", "KnowledgeBaseFrameAbandonTicketText", "KnowledgeBaseFrameCancelText", "KnowledgeBaseFrameCategoryDropDownButtonDisabledTexture", "KnowledgeBaseFrameCategoryDropDownButtonHighlightTexture", "KnowledgeBaseFrameCategoryDropDownButtonNormalTexture", "KnowledgeBaseFrameCategoryDropDownButtonPushedTexture", "KnowledgeBaseFrameCategoryDropDownLeft", "KnowledgeBaseFrameCategoryDropDownMiddle", "KnowledgeBaseFrameCategoryDropDownRight", "KnowledgeBaseFrameCategoryDropDownText", "KnowledgeBaseFrameDivider2Left", "KnowledgeBaseFrameDivider2Middle", "KnowledgeBaseFrameDivider2Right", "KnowledgeBaseFrameDividerLeft", "KnowledgeBaseFrameDividerMiddle", "KnowledgeBaseFrameDividerRight", "KnowledgeBaseFrameEditBoxLeft", "KnowledgeBaseFrameEditBoxMiddle", "KnowledgeBaseFrameEditBoxRight", "KnowledgeBaseFrameEditTicketText", "KnowledgeBaseFrameGMTalkText", "KnowledgeBaseFrameHeader", "KnowledgeBaseFrameLagText", "KnowledgeBaseFrameReportIssueText", "KnowledgeBaseFrameSearchButtonText", "KnowledgeBaseFrameStuckText", "KnowledgeBaseFrameSubCategoryDropDownButtonDisabledTexture", "KnowledgeBaseFrameSubCategoryDropDownButtonHighlightTexture", "KnowledgeBaseFrameSubCategoryDropDownButtonNormalTexture", "KnowledgeBaseFrameSubCategoryDropDownButtonPushedTexture", "KnowledgeBaseFrameSubCategoryDropDownLeft", "KnowledgeBaseFrameSubCategoryDropDownMiddle", "KnowledgeBaseFrameSubCategoryDropDownRight", "KnowledgeBaseFrameSubCategoryDropDownText", "KnowledgeBaseFrameTopIssuesButtonText", "KnowledgeBaseMotdLabel", "KnowledgeBaseMotdText", "KnowledgeBaseServerMessageLabel", "KnowledgeBaseServerMessageText", "LFDDungeonReadyDialogBackground", "LFDDungeonReadyDialogBottomArt", "LFDDungeonReadyDialogEnterDungeonButtonLeft", "LFDDungeonReadyDialogEnterDungeonButtonMiddle", "LFDDungeonReadyDialogEnterDungeonButtonRight", "LFDDungeonReadyDialogEnterDungeonButtonText", "LFDDungeonReadyDialogFiligree", "LFDDungeonReadyDialogInstanceInfoFrameName", "LFDDungeonReadyDialogInstanceInfoFrameStatusText", "LFDDungeonReadyDialogLabel", "LFDDungeonReadyDialogLeaveQueueButtonLeft", "LFDDungeonReadyDialogLeaveQueueButtonMiddle", "LFDDungeonReadyDialogLeaveQueueButtonRight", "LFDDungeonReadyDialogLeaveQueueButtonText", "LFDDungeonReadyDialogRandomInProgressFrameStatusText", "LFDDungeonReadyDialogRewardsFrameLabel", "LFDDungeonReadyDialogRewardsFrameReward1Border", "LFDDungeonReadyDialogRewardsFrameReward1Texture", "LFDDungeonReadyDialogRewardsFrameReward2Border", "LFDDungeonReadyDialogRewardsFrameReward2Texture", "LFDDungeonReadyDialogRoleIconLeaderIcon", "LFDDungeonReadyDialogRoleIconTexture", "LFDDungeonReadyDialogRoleLabel", "LFDDungeonReadyDialogYourRoleDescription", "LFDDungeonReadyStatusLabel", "LFDDungeonReadyStatusPlayer1StatusIcon", "LFDDungeonReadyStatusPlayer1Texture", "LFDDungeonReadyStatusPlayer2StatusIcon", "LFDDungeonReadyStatusPlayer2Texture", "LFDDungeonReadyStatusPlayer3StatusIcon", "LFDDungeonReadyStatusPlayer3Texture", "LFDDungeonReadyStatusPlayer4StatusIcon", "LFDDungeonReadyStatusPlayer4Texture", "LFDDungeonReadyStatusPlayer5StatusIcon", "LFDDungeonReadyStatusPlayer5Texture", "LFDParentFramePortraitIcon", "LFDParentFramePortraitTexture", "LFDQueueFrameBackground", "LFDQueueFrameCancelButtonLeft", "LFDQueueFrameCancelButtonMiddle", "LFDQueueFrameCancelButtonRight", "LFDQueueFrameCancelButtonText", "LFDQueueFrameCooldownFrameBlackFilter", "LFDQueueFrameCooldownFrameDescription", "LFDQueueFrameCooldownFrameName1", "LFDQueueFrameCooldownFrameName2", "LFDQueueFrameCooldownFrameName3", "LFDQueueFrameCooldownFrameName4", "LFDQueueFrameCooldownFrameStatus1", "LFDQueueFrameCooldownFrameStatus2", "LFDQueueFrameCooldownFrameStatus3", "LFDQueueFrameCooldownFrameStatus4", "LFDQueueFrameCooldownFrameTime", "LFDQueueFrameFindGroupButtonLeft", "LFDQueueFrameFindGroupButtonMiddle", "LFDQueueFrameFindGroupButtonRight", "LFDQueueFrameFindGroupButtonText", "LFDQueueFrameLayout", "LFDQueueFrameNoLFDWhileLFRBlackFilter", "LFDQueueFrameNoLFDWhileLFRDescription", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButtonLeft", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButtonMiddle", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButtonRight", "LFDQueueFrameNoLFDWhileLFRLeaveQueueButtonText", "LFDQueueFramePartyBackfillBackfillButtonLeft", "LFDQueueFramePartyBackfillBackfillButtonMiddle", "LFDQueueFramePartyBackfillBackfillButtonRight", "LFDQueueFramePartyBackfillBackfillButtonText", "LFDQueueFramePartyBackfillBlackFilter", "LFDQueueFramePartyBackfillDescription", "LFDQueueFramePartyBackfillNoBackfillButtonLeft", "LFDQueueFramePartyBackfillNoBackfillButtonMiddle", "LFDQueueFramePartyBackfillNoBackfillButtonRight", "LFDQueueFramePartyBackfillNoBackfillButtonText", "LFDQueueFrameRandomScrollFrameChildFrameDescription", "LFDQueueFrameRandomScrollFrameChildFrameItem1Count", "LFDQueueFrameRandomScrollFrameChildFrameItem1IconTexture", "LFDQueueFrameRandomScrollFrameChildFrameItem1Name", "LFDQueueFrameRandomScrollFrameChildFrameItem1NameFrame", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameCopperButtonText", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameGoldButtonText", "LFDQueueFrameRandomScrollFrameChildFrameMoneyFrameSilverButtonText", "LFDQueueFrameRandomScrollFrameChildFrameMoneyLabel", "LFDQueueFrameRandomScrollFrameChildFramePUGDescription", "LFDQueueFrameRandomScrollFrameChildFrameRewardsDescription", "LFDQueueFrameRandomScrollFrameChildFrameRewardsLabel", "LFDQueueFrameRandomScrollFrameChildFrameTitle", "LFDQueueFrameRandomScrollFrameChildFrameXPAmount", "LFDQueueFrameRandomScrollFrameChildFrameXPLabel", "LFDQueueFrameRandomScrollFrameScrollBackground", "LFDQueueFrameRandomScrollFrameScrollBackgroundBottomRight", "LFDQueueFrameRandomScrollFrameScrollBackgroundTopLeft", "LFDQueueFrameRandomScrollFrameScrollBarThumbTexture", "LFDQueueFrameRoleButtonDPSBackground", "LFDQueueFrameRoleButtonHealerBackground", "LFDQueueFrameRoleButtonTankBackground", "LFDQueueFrameSpecificListButton10ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton10HeroicIcon", "LFDQueueFrameSpecificListButton10InstanceLevel", "LFDQueueFrameSpecificListButton10InstanceName", "LFDQueueFrameSpecificListButton10LockedIndicator", "LFDQueueFrameSpecificListButton11ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton11HeroicIcon", "LFDQueueFrameSpecificListButton11InstanceLevel", "LFDQueueFrameSpecificListButton11InstanceName", "LFDQueueFrameSpecificListButton11LockedIndicator", "LFDQueueFrameSpecificListButton12ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton12HeroicIcon", "LFDQueueFrameSpecificListButton12InstanceLevel", "LFDQueueFrameSpecificListButton12InstanceName", "LFDQueueFrameSpecificListButton12LockedIndicator", "LFDQueueFrameSpecificListButton13ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton13HeroicIcon", "LFDQueueFrameSpecificListButton13InstanceLevel", "LFDQueueFrameSpecificListButton13InstanceName", "LFDQueueFrameSpecificListButton13LockedIndicator", "LFDQueueFrameSpecificListButton14ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton14HeroicIcon", "LFDQueueFrameSpecificListButton14InstanceLevel", "LFDQueueFrameSpecificListButton14InstanceName", "LFDQueueFrameSpecificListButton14LockedIndicator", "LFDQueueFrameSpecificListButton15ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton15HeroicIcon", "LFDQueueFrameSpecificListButton15InstanceLevel", "LFDQueueFrameSpecificListButton15InstanceName", "LFDQueueFrameSpecificListButton15LockedIndicator", "LFDQueueFrameSpecificListButton1ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton1HeroicIcon", "LFDQueueFrameSpecificListButton1InstanceLevel", "LFDQueueFrameSpecificListButton1InstanceName", "LFDQueueFrameSpecificListButton1LockedIndicator", "LFDQueueFrameSpecificListButton2ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton2HeroicIcon", "LFDQueueFrameSpecificListButton2InstanceLevel", "LFDQueueFrameSpecificListButton2InstanceName", "LFDQueueFrameSpecificListButton2LockedIndicator", "LFDQueueFrameSpecificListButton3ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton3HeroicIcon", "LFDQueueFrameSpecificListButton3InstanceLevel", "LFDQueueFrameSpecificListButton3InstanceName", "LFDQueueFrameSpecificListButton3LockedIndicator", "LFDQueueFrameSpecificListButton4ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton4HeroicIcon", "LFDQueueFrameSpecificListButton4InstanceLevel", "LFDQueueFrameSpecificListButton4InstanceName", "LFDQueueFrameSpecificListButton4LockedIndicator", "LFDQueueFrameSpecificListButton5ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton5HeroicIcon", "LFDQueueFrameSpecificListButton5InstanceLevel", "LFDQueueFrameSpecificListButton5InstanceName", "LFDQueueFrameSpecificListButton5LockedIndicator", "LFDQueueFrameSpecificListButton6ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton6HeroicIcon", "LFDQueueFrameSpecificListButton6InstanceLevel", "LFDQueueFrameSpecificListButton6InstanceName", "LFDQueueFrameSpecificListButton6LockedIndicator", "LFDQueueFrameSpecificListButton7ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton7HeroicIcon", "LFDQueueFrameSpecificListButton7InstanceLevel", "LFDQueueFrameSpecificListButton7InstanceName", "LFDQueueFrameSpecificListButton7LockedIndicator", "LFDQueueFrameSpecificListButton8ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton8HeroicIcon", "LFDQueueFrameSpecificListButton8InstanceLevel", "LFDQueueFrameSpecificListButton8InstanceName", "LFDQueueFrameSpecificListButton8LockedIndicator", "LFDQueueFrameSpecificListButton9ExpandOrCollapseButtonHighlight", "LFDQueueFrameSpecificListButton9HeroicIcon", "LFDQueueFrameSpecificListButton9InstanceLevel", "LFDQueueFrameSpecificListButton9InstanceName", "LFDQueueFrameSpecificListButton9LockedIndicator", "LFDQueueFrameSpecificListScrollFrameScrollBackgroundBottomRight", "LFDQueueFrameSpecificListScrollFrameScrollBackgroundTopLeft", "LFDQueueFrameSpecificListScrollFrameScrollBarThumbTexture", "LFDQueueFrameTitleText", "LFDQueueFrameTypeDropDownButtonDisabledTexture", "LFDQueueFrameTypeDropDownButtonHighlightTexture", "LFDQueueFrameTypeDropDownButtonNormalTexture", "LFDQueueFrameTypeDropDownButtonPushedTexture", "LFDQueueFrameTypeDropDownLeft", "LFDQueueFrameTypeDropDownMiddle", "LFDQueueFrameTypeDropDownName", "LFDQueueFrameTypeDropDownRight", "LFDQueueFrameTypeDropDownText", "LFDRoleCheckPopupAcceptButtonLeft", "LFDRoleCheckPopupAcceptButtonMiddle", "LFDRoleCheckPopupAcceptButtonRight", "LFDRoleCheckPopupAcceptButtonText", "LFDRoleCheckPopupDeclineButtonLeft", "LFDRoleCheckPopupDeclineButtonMiddle", "LFDRoleCheckPopupDeclineButtonRight", "LFDRoleCheckPopupDeclineButtonText", "LFDRoleCheckPopupDescriptionText", "LFDSearchStatusDamage1Texture", "LFDSearchStatusDamage2Texture", "LFDSearchStatusDamage3Texture", "LFDSearchStatusElapsedWaitTime", "LFDSearchStatusHealer1Texture", "LFDSearchStatusLookingFor", "LFDSearchStatusRoleIcon1", "LFDSearchStatusRoleIcon2", "LFDSearchStatusRoleIcon3", "LFDSearchStatusStatistic", "LFDSearchStatusTank1Texture", "LFDSearchStatusTitle", "LFRBrowseFrameColumnHeader1HighlightTexture", "LFRBrowseFrameColumnHeader1Left", "LFRBrowseFrameColumnHeader1Middle", "LFRBrowseFrameColumnHeader1Right", "LFRBrowseFrameColumnHeader2HighlightTexture", "LFRBrowseFrameColumnHeader2Left", "LFRBrowseFrameColumnHeader2Middle", "LFRBrowseFrameColumnHeader2Right", "LFRBrowseFrameColumnHeader3HighlightTexture", "LFRBrowseFrameColumnHeader3Left", "LFRBrowseFrameColumnHeader3Middle", "LFRBrowseFrameColumnHeader3Right", "LFRBrowseFrameColumnHeader4HighlightTexture", "LFRBrowseFrameColumnHeader4Icon", "LFRBrowseFrameColumnHeader4Left", "LFRBrowseFrameColumnHeader4Middle", "LFRBrowseFrameColumnHeader4Right", "LFRBrowseFrameColumnHeader5HighlightTexture", "LFRBrowseFrameColumnHeader5Icon", "LFRBrowseFrameColumnHeader5Left", "LFRBrowseFrameColumnHeader5Middle", "LFRBrowseFrameColumnHeader5Right", "LFRBrowseFrameColumnHeader6HighlightTexture", "LFRBrowseFrameColumnHeader6Icon", "LFRBrowseFrameColumnHeader6Left", "LFRBrowseFrameColumnHeader6Middle", "LFRBrowseFrameColumnHeader6Right", "LFRBrowseFrameColumnHeader7HighlightTexture", "LFRBrowseFrameColumnHeader7Icon", "LFRBrowseFrameColumnHeader7Left", "LFRBrowseFrameColumnHeader7Middle", "LFRBrowseFrameColumnHeader7Right", "LFRBrowseFrameInviteButtonLeft", "LFRBrowseFrameInviteButtonMiddle", "LFRBrowseFrameInviteButtonRight", "LFRBrowseFrameInviteButtonText", "LFRBrowseFrameLayout", "LFRBrowseFrameListButton10Class", "LFRBrowseFrameListButton10Level", "LFRBrowseFrameListButton10Name", "LFRBrowseFrameListButton10PartyIcon", "LFRBrowseFrameListButton10RoleDamageIcon", "LFRBrowseFrameListButton10RoleHealerIcon", "LFRBrowseFrameListButton10RoleTankIcon", "LFRBrowseFrameListButton11Class", "LFRBrowseFrameListButton11Level", "LFRBrowseFrameListButton11Name", "LFRBrowseFrameListButton11PartyIcon", "LFRBrowseFrameListButton11RoleDamageIcon", "LFRBrowseFrameListButton11RoleHealerIcon", "LFRBrowseFrameListButton11RoleTankIcon", "LFRBrowseFrameListButton12Class", "LFRBrowseFrameListButton12Level", "LFRBrowseFrameListButton12Name", "LFRBrowseFrameListButton12PartyIcon", "LFRBrowseFrameListButton12RoleDamageIcon", "LFRBrowseFrameListButton12RoleHealerIcon", "LFRBrowseFrameListButton12RoleTankIcon", "LFRBrowseFrameListButton13Class", "LFRBrowseFrameListButton13Level", "LFRBrowseFrameListButton13Name", "LFRBrowseFrameListButton13PartyIcon", "LFRBrowseFrameListButton13RoleDamageIcon", "LFRBrowseFrameListButton13RoleHealerIcon", "LFRBrowseFrameListButton13RoleTankIcon", "LFRBrowseFrameListButton14Class", "LFRBrowseFrameListButton14Level", "LFRBrowseFrameListButton14Name", "LFRBrowseFrameListButton14PartyIcon", "LFRBrowseFrameListButton14RoleDamageIcon", "LFRBrowseFrameListButton14RoleHealerIcon", "LFRBrowseFrameListButton14RoleTankIcon", "LFRBrowseFrameListButton15Class", "LFRBrowseFrameListButton15Level", "LFRBrowseFrameListButton15Name", "LFRBrowseFrameListButton15PartyIcon", "LFRBrowseFrameListButton15RoleDamageIcon", "LFRBrowseFrameListButton15RoleHealerIcon", "LFRBrowseFrameListButton15RoleTankIcon", "LFRBrowseFrameListButton16Class", "LFRBrowseFrameListButton16Level", "LFRBrowseFrameListButton16Name", "LFRBrowseFrameListButton16PartyIcon", "LFRBrowseFrameListButton16RoleDamageIcon", "LFRBrowseFrameListButton16RoleHealerIcon", "LFRBrowseFrameListButton16RoleTankIcon", "LFRBrowseFrameListButton17Class", "LFRBrowseFrameListButton17Level", "LFRBrowseFrameListButton17Name", "LFRBrowseFrameListButton17PartyIcon", "LFRBrowseFrameListButton17RoleDamageIcon", "LFRBrowseFrameListButton17RoleHealerIcon", "LFRBrowseFrameListButton17RoleTankIcon", "LFRBrowseFrameListButton18Class", "LFRBrowseFrameListButton18Level", "LFRBrowseFrameListButton18Name", "LFRBrowseFrameListButton18PartyIcon", "LFRBrowseFrameListButton18RoleDamageIcon", "LFRBrowseFrameListButton18RoleHealerIcon", "LFRBrowseFrameListButton18RoleTankIcon", "LFRBrowseFrameListButton19Class", "LFRBrowseFrameListButton19Level", "LFRBrowseFrameListButton19Name", "LFRBrowseFrameListButton19PartyIcon", "LFRBrowseFrameListButton19RoleDamageIcon", "LFRBrowseFrameListButton19RoleHealerIcon", "LFRBrowseFrameListButton19RoleTankIcon", "LFRBrowseFrameListButton1Class", "LFRBrowseFrameListButton1Level", "LFRBrowseFrameListButton1Name", "LFRBrowseFrameListButton1PartyIcon", "LFRBrowseFrameListButton1RoleDamageIcon", "LFRBrowseFrameListButton1RoleHealerIcon", "LFRBrowseFrameListButton1RoleTankIcon", "LFRBrowseFrameListButton2Class", "LFRBrowseFrameListButton2Level", "LFRBrowseFrameListButton2Name", "LFRBrowseFrameListButton2PartyIcon", "LFRBrowseFrameListButton2RoleDamageIcon", "LFRBrowseFrameListButton2RoleHealerIcon", "LFRBrowseFrameListButton2RoleTankIcon", "LFRBrowseFrameListButton3Class", "LFRBrowseFrameListButton3Level", "LFRBrowseFrameListButton3Name", "LFRBrowseFrameListButton3PartyIcon", "LFRBrowseFrameListButton3RoleDamageIcon", "LFRBrowseFrameListButton3RoleHealerIcon", "LFRBrowseFrameListButton3RoleTankIcon", "LFRBrowseFrameListButton4Class", "LFRBrowseFrameListButton4Level", "LFRBrowseFrameListButton4Name", "LFRBrowseFrameListButton4PartyIcon", "LFRBrowseFrameListButton4RoleDamageIcon", "LFRBrowseFrameListButton4RoleHealerIcon", "LFRBrowseFrameListButton4RoleTankIcon", "LFRBrowseFrameListButton5Class", "LFRBrowseFrameListButton5Level", "LFRBrowseFrameListButton5Name", "LFRBrowseFrameListButton5PartyIcon", "LFRBrowseFrameListButton5RoleDamageIcon", "LFRBrowseFrameListButton5RoleHealerIcon", "LFRBrowseFrameListButton5RoleTankIcon", "LFRBrowseFrameListButton6Class", "LFRBrowseFrameListButton6Level", "LFRBrowseFrameListButton6Name", "LFRBrowseFrameListButton6PartyIcon", "LFRBrowseFrameListButton6RoleDamageIcon", "LFRBrowseFrameListButton6RoleHealerIcon", "LFRBrowseFrameListButton6RoleTankIcon", "LFRBrowseFrameListButton7Class", "LFRBrowseFrameListButton7Level", "LFRBrowseFrameListButton7Name", "LFRBrowseFrameListButton7PartyIcon", "LFRBrowseFrameListButton7RoleDamageIcon", "LFRBrowseFrameListButton7RoleHealerIcon", "LFRBrowseFrameListButton7RoleTankIcon", "LFRBrowseFrameListButton8Class", "LFRBrowseFrameListButton8Level", "LFRBrowseFrameListButton8Name", "LFRBrowseFrameListButton8PartyIcon", "LFRBrowseFrameListButton8RoleDamageIcon", "LFRBrowseFrameListButton8RoleHealerIcon", "LFRBrowseFrameListButton8RoleTankIcon", "LFRBrowseFrameListButton9Class", "LFRBrowseFrameListButton9Level", "LFRBrowseFrameListButton9Name", "LFRBrowseFrameListButton9PartyIcon", "LFRBrowseFrameListButton9RoleDamageIcon", "LFRBrowseFrameListButton9RoleHealerIcon", "LFRBrowseFrameListButton9RoleTankIcon", "LFRBrowseFrameListScrollFrameScrollBarThumbTexture", "LFRBrowseFrameRaidDropDownButtonDisabledTexture", "LFRBrowseFrameRaidDropDownButtonHighlightTexture", "LFRBrowseFrameRaidDropDownButtonNormalTexture", "LFRBrowseFrameRaidDropDownButtonPushedTexture", "LFRBrowseFrameRaidDropDownLeft", "LFRBrowseFrameRaidDropDownMiddle", "LFRBrowseFrameRaidDropDownName", "LFRBrowseFrameRaidDropDownRight", "LFRBrowseFrameRaidDropDownText", "LFRBrowseFrameRefreshButtonLeft", "LFRBrowseFrameRefreshButtonMiddle", "LFRBrowseFrameRefreshButtonRight", "LFRBrowseFrameRefreshButtonText", "LFRBrowseFrameSendMessageButtonLeft", "LFRBrowseFrameSendMessageButtonMiddle", "LFRBrowseFrameSendMessageButtonRight", "LFRBrowseFrameSendMessageButtonText", "LFRBrowseFrameTitleText", "LFRParentFrameIcon", "LFRParentFrameTab1HighlightTexture", "LFRParentFrameTab1Left", "LFRParentFrameTab1LeftDisabled", "LFRParentFrameTab1Middle", "LFRParentFrameTab1MiddleDisabled", "LFRParentFrameTab1Right", "LFRParentFrameTab1RightDisabled", "LFRParentFrameTab1Text", "LFRParentFrameTab2HighlightTexture", "LFRParentFrameTab2Left", "LFRParentFrameTab2LeftDisabled", "LFRParentFrameTab2Middle", "LFRParentFrameTab2MiddleDisabled", "LFRParentFrameTab2Right", "LFRParentFrameTab2RightDisabled", "LFRParentFrameTab2Text", "LFRQueueFrameAcceptCommentButtonLeft", "LFRQueueFrameAcceptCommentButtonMiddle", "LFRQueueFrameAcceptCommentButtonRight", "LFRQueueFrameAcceptCommentButtonText", "LFRQueueFrameCommentExplanation", "LFRQueueFrameFindGroupButtonLeft", "LFRQueueFrameFindGroupButtonMiddle", "LFRQueueFrameFindGroupButtonRight", "LFRQueueFrameFindGroupButtonText", "LFRQueueFrameLayout", "LFRQueueFrameNoLFRWhileLFDBlackFilter", "LFRQueueFrameNoLFRWhileLFDDescription", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButtonLeft", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButtonMiddle", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButtonRight", "LFRQueueFrameNoLFRWhileLFDLeaveQueueButtonText", "LFRQueueFrameRoleButtonDPSBackground", "LFRQueueFrameRoleButtonHealerBackground", "LFRQueueFrameRoleButtonTankBackground", "LFRQueueFrameSpecificListButton10ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton10HeroicIcon", "LFRQueueFrameSpecificListButton10InstanceLevel", "LFRQueueFrameSpecificListButton10InstanceName", "LFRQueueFrameSpecificListButton10LockedIndicator", "LFRQueueFrameSpecificListButton11ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton11HeroicIcon", "LFRQueueFrameSpecificListButton11InstanceLevel", "LFRQueueFrameSpecificListButton11InstanceName", "LFRQueueFrameSpecificListButton11LockedIndicator", "LFRQueueFrameSpecificListButton12ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton12HeroicIcon", "LFRQueueFrameSpecificListButton12InstanceLevel", "LFRQueueFrameSpecificListButton12InstanceName", "LFRQueueFrameSpecificListButton12LockedIndicator", "LFRQueueFrameSpecificListButton13ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton13HeroicIcon", "LFRQueueFrameSpecificListButton13InstanceLevel", "LFRQueueFrameSpecificListButton13InstanceName", "LFRQueueFrameSpecificListButton13LockedIndicator", "LFRQueueFrameSpecificListButton14ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton14HeroicIcon", "LFRQueueFrameSpecificListButton14InstanceLevel", "LFRQueueFrameSpecificListButton14InstanceName", "LFRQueueFrameSpecificListButton14LockedIndicator", "LFRQueueFrameSpecificListButton1ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton1HeroicIcon", "LFRQueueFrameSpecificListButton1InstanceLevel", "LFRQueueFrameSpecificListButton1InstanceName", "LFRQueueFrameSpecificListButton1LockedIndicator", "LFRQueueFrameSpecificListButton2ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton2HeroicIcon", "LFRQueueFrameSpecificListButton2InstanceLevel", "LFRQueueFrameSpecificListButton2InstanceName", "LFRQueueFrameSpecificListButton2LockedIndicator", "LFRQueueFrameSpecificListButton3ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton3HeroicIcon", "LFRQueueFrameSpecificListButton3InstanceLevel", "LFRQueueFrameSpecificListButton3InstanceName", "LFRQueueFrameSpecificListButton3LockedIndicator", "LFRQueueFrameSpecificListButton4ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton4HeroicIcon", "LFRQueueFrameSpecificListButton4InstanceLevel", "LFRQueueFrameSpecificListButton4InstanceName", "LFRQueueFrameSpecificListButton4LockedIndicator", "LFRQueueFrameSpecificListButton5ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton5HeroicIcon", "LFRQueueFrameSpecificListButton5InstanceLevel", "LFRQueueFrameSpecificListButton5InstanceName", "LFRQueueFrameSpecificListButton5LockedIndicator", "LFRQueueFrameSpecificListButton6ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton6HeroicIcon", "LFRQueueFrameSpecificListButton6InstanceLevel", "LFRQueueFrameSpecificListButton6InstanceName", "LFRQueueFrameSpecificListButton6LockedIndicator", "LFRQueueFrameSpecificListButton7ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton7HeroicIcon", "LFRQueueFrameSpecificListButton7InstanceLevel", "LFRQueueFrameSpecificListButton7InstanceName", "LFRQueueFrameSpecificListButton7LockedIndicator", "LFRQueueFrameSpecificListButton8ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton8HeroicIcon", "LFRQueueFrameSpecificListButton8InstanceLevel", "LFRQueueFrameSpecificListButton8InstanceName", "LFRQueueFrameSpecificListButton8LockedIndicator", "LFRQueueFrameSpecificListButton9ExpandOrCollapseButtonHighlight", "LFRQueueFrameSpecificListButton9HeroicIcon", "LFRQueueFrameSpecificListButton9InstanceLevel", "LFRQueueFrameSpecificListButton9InstanceName", "LFRQueueFrameSpecificListButton9LockedIndicator", "LFRQueueFrameSpecificListScrollFrameScrollBackgroundBottomRight", "LFRQueueFrameSpecificListScrollFrameScrollBackgroundTopLeft", "LFRQueueFrameSpecificListScrollFrameScrollBarThumbTexture", "LFRQueueFrameSpecificNoRaidsAvailable", "LFRQueueFrameTitleText", "LanguageMenuButton10ShortcutText", "LanguageMenuButton11ShortcutText", "LanguageMenuButton12ShortcutText", "LanguageMenuButton13ShortcutText", "LanguageMenuButton14ShortcutText", "LanguageMenuButton15ShortcutText", "LanguageMenuButton16ShortcutText", "LanguageMenuButton17ShortcutText", "LanguageMenuButton18ShortcutText", "LanguageMenuButton19ShortcutText", "LanguageMenuButton1ShortcutText", "LanguageMenuButton20ShortcutText", "LanguageMenuButton21ShortcutText", "LanguageMenuButton22ShortcutText", "LanguageMenuButton23ShortcutText", "LanguageMenuButton24ShortcutText", "LanguageMenuButton25ShortcutText", "LanguageMenuButton26ShortcutText", "LanguageMenuButton27ShortcutText", "LanguageMenuButton28ShortcutText", "LanguageMenuButton29ShortcutText", "LanguageMenuButton2ShortcutText", "LanguageMenuButton30ShortcutText", "LanguageMenuButton31ShortcutText", "LanguageMenuButton32ShortcutText", "LanguageMenuButton3ShortcutText", "LanguageMenuButton4ShortcutText", "LanguageMenuButton5ShortcutText", "LanguageMenuButton6ShortcutText", "LanguageMenuButton7ShortcutText", "LanguageMenuButton8ShortcutText", "LanguageMenuButton9ShortcutText", "LootButton1Count", "LootButton1IconTexture", "LootButton1NameFrame", "LootButton1NormalTexture", "LootButton1Stock", "LootButton1Text", "LootButton2Count", "LootButton2IconTexture", "LootButton2NameFrame", "LootButton2NormalTexture", "LootButton2Stock", "LootButton2Text", "LootButton3Count", "LootButton3IconTexture", "LootButton3NameFrame", "LootButton3NormalTexture", "LootButton3Stock", "LootButton3Text", "LootButton4Count", "LootButton4IconTexture", "LootButton4NameFrame", "LootButton4NormalTexture", "LootButton4Stock", "LootButton4Text", "LootFrameNext", "LootFramePortraitOverlay", "LootFramePrev", "LowerBlackBar", "MacOptionsButtonCompressText", "MacOptionsButtonKeybindingsText", "MacOptionsCancelFrameFileName", "MacOptionsCancelFrameHeader", "MacOptionsCancelFrameNoText", "MacOptionsCancelFrameQuestion", "MacOptionsCancelFrameYesText", "MacOptionsCompressFrameCompressText", "MacOptionsCompressFrameDeleteText", "MacOptionsCompressFrameFileName", "MacOptionsCompressFrameHeader", "MacOptionsCompressFrameSkipText", "MacOptionsFrameCancelText", "MacOptionsFrameCheckButton1Text", "MacOptionsFrameCheckButton2Text", "MacOptionsFrameCheckButton3Text", "MacOptionsFrameCheckButton4Text", "MacOptionsFrameCheckButton5Text", "MacOptionsFrameCheckButton6Text", "MacOptionsFrameCheckButton7Text", "MacOptionsFrameCheckButton8Text", "MacOptionsFrameCodecDropDownButtonDisabledTexture", "MacOptionsFrameCodecDropDownButtonHighlightTexture", "MacOptionsFrameCodecDropDownButtonNormalTexture", "MacOptionsFrameCodecDropDownButtonPushedTexture", "MacOptionsFrameCodecDropDownLabel", "MacOptionsFrameCodecDropDownLeft", "MacOptionsFrameCodecDropDownMiddle", "MacOptionsFrameCodecDropDownRight", "MacOptionsFrameCodecDropDownText", "MacOptionsFrameFramerateDropDownButtonDisabledTexture", "MacOptionsFrameFramerateDropDownButtonHighlightTexture", "MacOptionsFrameFramerateDropDownButtonNormalTexture", "MacOptionsFrameFramerateDropDownButtonPushedTexture", "MacOptionsFrameFramerateDropDownLabel", "MacOptionsFrameFramerateDropDownLeft", "MacOptionsFrameFramerateDropDownMiddle", "MacOptionsFrameFramerateDropDownRight", "MacOptionsFrameFramerateDropDownText", "MacOptionsFrameHeader", "MacOptionsFrameMovieRecordingTitle", "MacOptionsFrameOkayText", "MacOptionsFrameQualitySliderHigh", "MacOptionsFrameQualitySliderLow", "MacOptionsFrameQualitySliderText", "MacOptionsFrameQualitySliderThumb", "MacOptionsFrameResolutionDropDownButtonDisabledTexture", "MacOptionsFrameResolutionDropDownButtonHighlightTexture", "MacOptionsFrameResolutionDropDownButtonNormalTexture", "MacOptionsFrameResolutionDropDownButtonPushedTexture", "MacOptionsFrameResolutionDropDownLabel", "MacOptionsFrameResolutionDropDownLeft", "MacOptionsFrameResolutionDropDownMiddle", "MacOptionsFrameResolutionDropDownRight", "MacOptionsFrameResolutionDropDownText", "MacOptionsFrameText1", "MacOptionsFrameText2", "MacOptionsFrameText3", "MacOptionsFrameText4", "MacOptionsITunesRemoteTitle", "MagicResText1", "MagicResText2", "MagicResText3", "MagicResText4", "MagicResText5", "MailFont_Large", "MailFrameBotLeft", "MailFrameBotRight", "MailFrameTab1HighlightTexture", "MailFrameTab1Left", "MailFrameTab1LeftDisabled", "MailFrameTab1Middle", "MailFrameTab1MiddleDisabled", "MailFrameTab1Right", "MailFrameTab1RightDisabled", "MailFrameTab1Text", "MailFrameTab2HighlightTexture", "MailFrameTab2Left", "MailFrameTab2LeftDisabled", "MailFrameTab2Middle", "MailFrameTab2MiddleDisabled", "MailFrameTab2Right", "MailFrameTab2RightDisabled", "MailFrameTab2Text", "MailFrameTopLeft", "MailFrameTopRight", "MailItem1ButtonCOD", "MailItem1ButtonCODBackground", "MailItem1ButtonCount", "MailItem1ButtonIcon", "MailItem1ButtonSlot", "MailItem1Sender", "MailItem1Subject", "MailItem2ButtonCOD", "MailItem2ButtonCODBackground", "MailItem2ButtonCount", "MailItem2ButtonIcon", "MailItem2ButtonSlot", "MailItem2Sender", "MailItem2Subject", "MailItem3ButtonCOD", "MailItem3ButtonCODBackground", "MailItem3ButtonCount", "MailItem3ButtonIcon", "MailItem3ButtonSlot", "MailItem3Sender", "MailItem3Subject", "MailItem4ButtonCOD", "MailItem4ButtonCODBackground", "MailItem4ButtonCount", "MailItem4ButtonIcon", "MailItem4ButtonSlot", "MailItem4Sender", "MailItem4Subject", "MailItem5ButtonCOD", "MailItem5ButtonCODBackground", "MailItem5ButtonCount", "MailItem5ButtonIcon", "MailItem5ButtonSlot", "MailItem5Sender", "MailItem5Subject", "MailItem6ButtonCOD", "MailItem6ButtonCODBackground", "MailItem6ButtonCount", "MailItem6ButtonIcon", "MailItem6ButtonSlot", "MailItem6Sender", "MailItem6Subject", "MailItem7ButtonCOD", "MailItem7ButtonCODBackground", "MailItem7ButtonCount", "MailItem7ButtonIcon", "MailItem7ButtonSlot", "MailItem7Sender", "MailItem7Subject", "MailTextFontNormal", "MainMenuBarBackpackButtonCount", "MainMenuBarBackpackButtonIconTexture", "MainMenuBarBackpackButtonNormalTexture", "MainMenuBarBackpackButtonStock", "MainMenuBarExpText", "MainMenuBarLeftEndCap", "MainMenuBarPageNumber", "MainMenuBarPerformanceBar", "MainMenuBarRightEndCap", "MainMenuBarTexture0", "MainMenuBarTexture1", "MainMenuBarTexture2", "MainMenuBarTexture3", "MainMenuMaxLevelBar0", "MainMenuMaxLevelBar1", "MainMenuMaxLevelBar2", "MainMenuMaxLevelBar3", "MainMenuXPBarTexture0", "MainMenuXPBarTexture1", "MainMenuXPBarTexture2", "MainMenuXPBarTexture3", "MapFramerateLabel", "MapFramerateText", "MerchantBuyBackItemItemButtonCount", "MerchantBuyBackItemItemButtonIconTexture", "MerchantBuyBackItemItemButtonNormalTexture", "MerchantBuyBackItemItemButtonStock", "MerchantBuyBackItemMoneyFrameCopperButtonText", "MerchantBuyBackItemMoneyFrameGoldButtonText", "MerchantBuyBackItemMoneyFrameSilverButtonText", "MerchantBuyBackItemName", "MerchantBuyBackItemNameFrame", "MerchantBuyBackItemSlotTexture", "MerchantFrameBottomLeftBorder", "MerchantFrameBottomRightBorder", "MerchantFramePortrait", "MerchantFrameTab1HighlightTexture", "MerchantFrameTab1Left", "MerchantFrameTab1LeftDisabled", "MerchantFrameTab1Middle", "MerchantFrameTab1MiddleDisabled", "MerchantFrameTab1Right", "MerchantFrameTab1RightDisabled", "MerchantFrameTab1Text", "MerchantFrameTab2HighlightTexture", "MerchantFrameTab2Left", "MerchantFrameTab2LeftDisabled", "MerchantFrameTab2Middle", "MerchantFrameTab2MiddleDisabled", "MerchantFrameTab2Right", "MerchantFrameTab2RightDisabled", "MerchantFrameTab2Text", "MerchantGuildBankRepairButtonIcon", "MerchantItem10AltCurrencyFrameArenaText", "MerchantItem10AltCurrencyFrameArenaTexture", "MerchantItem10AltCurrencyFrameHonorText", "MerchantItem10AltCurrencyFrameHonorTexture", "MerchantItem10AltCurrencyFrameItem1Text", "MerchantItem10AltCurrencyFrameItem1Texture", "MerchantItem10AltCurrencyFrameItem2Text", "MerchantItem10AltCurrencyFrameItem2Texture", "MerchantItem10AltCurrencyFrameItem3Text", "MerchantItem10AltCurrencyFrameItem3Texture", "MerchantItem10ItemButtonCount", "MerchantItem10ItemButtonIconTexture", "MerchantItem10ItemButtonNormalTexture", "MerchantItem10ItemButtonStock", "MerchantItem10MoneyFrameCopperButtonText", "MerchantItem10MoneyFrameGoldButtonText", "MerchantItem10MoneyFrameSilverButtonText", "MerchantItem10Name", "MerchantItem10NameFrame", "MerchantItem10SlotTexture", "MerchantItem11AltCurrencyFrameArenaText", "MerchantItem11AltCurrencyFrameArenaTexture", "MerchantItem11AltCurrencyFrameHonorText", "MerchantItem11AltCurrencyFrameHonorTexture", "MerchantItem11AltCurrencyFrameItem1Text", "MerchantItem11AltCurrencyFrameItem1Texture", "MerchantItem11AltCurrencyFrameItem2Text", "MerchantItem11AltCurrencyFrameItem2Texture", "MerchantItem11AltCurrencyFrameItem3Text", "MerchantItem11AltCurrencyFrameItem3Texture", "MerchantItem11ItemButtonCount", "MerchantItem11ItemButtonIconTexture", "MerchantItem11ItemButtonNormalTexture", "MerchantItem11ItemButtonStock", "MerchantItem11MoneyFrameCopperButtonText", "MerchantItem11MoneyFrameGoldButtonText", "MerchantItem11MoneyFrameSilverButtonText", "MerchantItem11Name", "MerchantItem11NameFrame", "MerchantItem11SlotTexture", "MerchantItem12AltCurrencyFrameArenaText", "MerchantItem12AltCurrencyFrameArenaTexture", "MerchantItem12AltCurrencyFrameHonorText", "MerchantItem12AltCurrencyFrameHonorTexture", "MerchantItem12AltCurrencyFrameItem1Text", "MerchantItem12AltCurrencyFrameItem1Texture", "MerchantItem12AltCurrencyFrameItem2Text", "MerchantItem12AltCurrencyFrameItem2Texture", "MerchantItem12AltCurrencyFrameItem3Text", "MerchantItem12AltCurrencyFrameItem3Texture", "MerchantItem12ItemButtonCount", "MerchantItem12ItemButtonIconTexture", "MerchantItem12ItemButtonNormalTexture", "MerchantItem12ItemButtonStock", "MerchantItem12MoneyFrameCopperButtonText", "MerchantItem12MoneyFrameGoldButtonText", "MerchantItem12MoneyFrameSilverButtonText", "MerchantItem12Name", "MerchantItem12NameFrame", "MerchantItem12SlotTexture", "MerchantItem1AltCurrencyFrameArenaText", "MerchantItem1AltCurrencyFrameArenaTexture", "MerchantItem1AltCurrencyFrameHonorText", "MerchantItem1AltCurrencyFrameHonorTexture", "MerchantItem1AltCurrencyFrameItem1Text", "MerchantItem1AltCurrencyFrameItem1Texture", "MerchantItem1AltCurrencyFrameItem2Text", "MerchantItem1AltCurrencyFrameItem2Texture", "MerchantItem1AltCurrencyFrameItem3Text", "MerchantItem1AltCurrencyFrameItem3Texture", "MerchantItem1ItemButtonCount", "MerchantItem1ItemButtonIconTexture", "MerchantItem1ItemButtonNormalTexture", "MerchantItem1ItemButtonStock", "MerchantItem1MoneyFrameCopperButtonText", "MerchantItem1MoneyFrameGoldButtonText", "MerchantItem1MoneyFrameSilverButtonText", "MerchantItem1Name", "MerchantItem1NameFrame", "MerchantItem1SlotTexture", "MerchantItem2AltCurrencyFrameArenaText", "MerchantItem2AltCurrencyFrameArenaTexture", "MerchantItem2AltCurrencyFrameHonorText", "MerchantItem2AltCurrencyFrameHonorTexture", "MerchantItem2AltCurrencyFrameItem1Text", "MerchantItem2AltCurrencyFrameItem1Texture", "MerchantItem2AltCurrencyFrameItem2Text", "MerchantItem2AltCurrencyFrameItem2Texture", "MerchantItem2AltCurrencyFrameItem3Text", "MerchantItem2AltCurrencyFrameItem3Texture", "MerchantItem2ItemButtonCount", "MerchantItem2ItemButtonIconTexture", "MerchantItem2ItemButtonNormalTexture", "MerchantItem2ItemButtonStock", "MerchantItem2MoneyFrameCopperButtonText", "MerchantItem2MoneyFrameGoldButtonText", "MerchantItem2MoneyFrameSilverButtonText", "MerchantItem2Name", "MerchantItem2NameFrame", "MerchantItem2SlotTexture", "MerchantItem3AltCurrencyFrameArenaText", "MerchantItem3AltCurrencyFrameArenaTexture", "MerchantItem3AltCurrencyFrameHonorText", "MerchantItem3AltCurrencyFrameHonorTexture", "MerchantItem3AltCurrencyFrameItem1Text", "MerchantItem3AltCurrencyFrameItem1Texture", "MerchantItem3AltCurrencyFrameItem2Text", "MerchantItem3AltCurrencyFrameItem2Texture", "MerchantItem3AltCurrencyFrameItem3Text", "MerchantItem3AltCurrencyFrameItem3Texture", "MerchantItem3ItemButtonCount", "MerchantItem3ItemButtonIconTexture", "MerchantItem3ItemButtonNormalTexture", "MerchantItem3ItemButtonStock", "MerchantItem3MoneyFrameCopperButtonText", "MerchantItem3MoneyFrameGoldButtonText", "MerchantItem3MoneyFrameSilverButtonText", "MerchantItem3Name", "MerchantItem3NameFrame", "MerchantItem3SlotTexture", "MerchantItem4AltCurrencyFrameArenaText", "MerchantItem4AltCurrencyFrameArenaTexture", "MerchantItem4AltCurrencyFrameHonorText", "MerchantItem4AltCurrencyFrameHonorTexture", "MerchantItem4AltCurrencyFrameItem1Text", "MerchantItem4AltCurrencyFrameItem1Texture", "MerchantItem4AltCurrencyFrameItem2Text", "MerchantItem4AltCurrencyFrameItem2Texture", "MerchantItem4AltCurrencyFrameItem3Text", "MerchantItem4AltCurrencyFrameItem3Texture", "MerchantItem4ItemButtonCount", "MerchantItem4ItemButtonIconTexture", "MerchantItem4ItemButtonNormalTexture", "MerchantItem4ItemButtonStock", "MerchantItem4MoneyFrameCopperButtonText", "MerchantItem4MoneyFrameGoldButtonText", "MerchantItem4MoneyFrameSilverButtonText", "MerchantItem4Name", "MerchantItem4NameFrame", "MerchantItem4SlotTexture", "MerchantItem5AltCurrencyFrameArenaText", "MerchantItem5AltCurrencyFrameArenaTexture", "MerchantItem5AltCurrencyFrameHonorText", "MerchantItem5AltCurrencyFrameHonorTexture", "MerchantItem5AltCurrencyFrameItem1Text", "MerchantItem5AltCurrencyFrameItem1Texture", "MerchantItem5AltCurrencyFrameItem2Text", "MerchantItem5AltCurrencyFrameItem2Texture", "MerchantItem5AltCurrencyFrameItem3Text", "MerchantItem5AltCurrencyFrameItem3Texture", "MerchantItem5ItemButtonCount", "MerchantItem5ItemButtonIconTexture", "MerchantItem5ItemButtonNormalTexture", "MerchantItem5ItemButtonStock", "MerchantItem5MoneyFrameCopperButtonText", "MerchantItem5MoneyFrameGoldButtonText", "MerchantItem5MoneyFrameSilverButtonText", "MerchantItem5Name", "MerchantItem5NameFrame", "MerchantItem5SlotTexture", "MerchantItem6AltCurrencyFrameArenaText", "MerchantItem6AltCurrencyFrameArenaTexture", "MerchantItem6AltCurrencyFrameHonorText", "MerchantItem6AltCurrencyFrameHonorTexture", "MerchantItem6AltCurrencyFrameItem1Text", "MerchantItem6AltCurrencyFrameItem1Texture", "MerchantItem6AltCurrencyFrameItem2Text", "MerchantItem6AltCurrencyFrameItem2Texture", "MerchantItem6AltCurrencyFrameItem3Text", "MerchantItem6AltCurrencyFrameItem3Texture", "MerchantItem6ItemButtonCount", "MerchantItem6ItemButtonIconTexture", "MerchantItem6ItemButtonNormalTexture", "MerchantItem6ItemButtonStock", "MerchantItem6MoneyFrameCopperButtonText", "MerchantItem6MoneyFrameGoldButtonText", "MerchantItem6MoneyFrameSilverButtonText", "MerchantItem6Name", "MerchantItem6NameFrame", "MerchantItem6SlotTexture", "MerchantItem7AltCurrencyFrameArenaText", "MerchantItem7AltCurrencyFrameArenaTexture", "MerchantItem7AltCurrencyFrameHonorText", "MerchantItem7AltCurrencyFrameHonorTexture", "MerchantItem7AltCurrencyFrameItem1Text", "MerchantItem7AltCurrencyFrameItem1Texture", "MerchantItem7AltCurrencyFrameItem2Text", "MerchantItem7AltCurrencyFrameItem2Texture", "MerchantItem7AltCurrencyFrameItem3Text", "MerchantItem7AltCurrencyFrameItem3Texture", "MerchantItem7ItemButtonCount", "MerchantItem7ItemButtonIconTexture", "MerchantItem7ItemButtonNormalTexture", "MerchantItem7ItemButtonStock", "MerchantItem7MoneyFrameCopperButtonText", "MerchantItem7MoneyFrameGoldButtonText", "MerchantItem7MoneyFrameSilverButtonText", "MerchantItem7Name", "MerchantItem7NameFrame", "MerchantItem7SlotTexture", "MerchantItem8AltCurrencyFrameArenaText", "MerchantItem8AltCurrencyFrameArenaTexture", "MerchantItem8AltCurrencyFrameHonorText", "MerchantItem8AltCurrencyFrameHonorTexture", "MerchantItem8AltCurrencyFrameItem1Text", "MerchantItem8AltCurrencyFrameItem1Texture", "MerchantItem8AltCurrencyFrameItem2Text", "MerchantItem8AltCurrencyFrameItem2Texture", "MerchantItem8AltCurrencyFrameItem3Text", "MerchantItem8AltCurrencyFrameItem3Texture", "MerchantItem8ItemButtonCount", "MerchantItem8ItemButtonIconTexture", "MerchantItem8ItemButtonNormalTexture", "MerchantItem8ItemButtonStock", "MerchantItem8MoneyFrameCopperButtonText", "MerchantItem8MoneyFrameGoldButtonText", "MerchantItem8MoneyFrameSilverButtonText", "MerchantItem8Name", "MerchantItem8NameFrame", "MerchantItem8SlotTexture", "MerchantItem9AltCurrencyFrameArenaText", "MerchantItem9AltCurrencyFrameArenaTexture", "MerchantItem9AltCurrencyFrameHonorText", "MerchantItem9AltCurrencyFrameHonorTexture", "MerchantItem9AltCurrencyFrameItem1Text", "MerchantItem9AltCurrencyFrameItem1Texture", "MerchantItem9AltCurrencyFrameItem2Text", "MerchantItem9AltCurrencyFrameItem2Texture", "MerchantItem9AltCurrencyFrameItem3Text", "MerchantItem9AltCurrencyFrameItem3Texture", "MerchantItem9ItemButtonCount", "MerchantItem9ItemButtonIconTexture", "MerchantItem9ItemButtonNormalTexture", "MerchantItem9ItemButtonStock", "MerchantItem9MoneyFrameCopperButtonText", "MerchantItem9MoneyFrameGoldButtonText", "MerchantItem9MoneyFrameSilverButtonText", "MerchantItem9Name", "MerchantItem9NameFrame", "MerchantItem9SlotTexture", "MerchantMoneyFrameCopperButtonText", "MerchantMoneyFrameGoldButtonText", "MerchantMoneyFrameSilverButtonText", "MerchantNameText", "MerchantPageText", "MerchantRepairAllIcon", "MerchantRepairText", "MicroButtonPortrait", "MiniMapBattlefieldBorder", "MiniMapBattlefieldDropDownButtonDisabledTexture", "MiniMapBattlefieldDropDownButtonHighlightTexture", "MiniMapBattlefieldDropDownButtonNormalTexture", "MiniMapBattlefieldDropDownButtonPushedTexture", "MiniMapBattlefieldDropDownLeft", "MiniMapBattlefieldDropDownMiddle", "MiniMapBattlefieldDropDownRight", "MiniMapBattlefieldDropDownText", "MiniMapBattlefieldIcon", "MiniMapInstanceDifficultyText", "MiniMapInstanceDifficultyTexture", "MiniMapLFGFrameBorder", "MiniMapLFGFrameDropDownButtonDisabledTexture", "MiniMapLFGFrameDropDownButtonHighlightTexture", "MiniMapLFGFrameDropDownButtonNormalTexture", "MiniMapLFGFrameDropDownButtonPushedTexture", "MiniMapLFGFrameDropDownLeft", "MiniMapLFGFrameDropDownMiddle", "MiniMapLFGFrameDropDownRight", "MiniMapLFGFrameDropDownText", "MiniMapLFGFrameIconTexture", "MiniMapMailBorder", "MiniMapMailIcon", "MiniMapRecordingBorder", "MiniMapTrackingBackground", "MiniMapTrackingButtonBorder", "MiniMapTrackingButtonShine", "MiniMapTrackingDropDownButtonDisabledTexture", "MiniMapTrackingDropDownButtonHighlightTexture", "MiniMapTrackingDropDownButtonNormalTexture", "MiniMapTrackingDropDownButtonPushedTexture", "MiniMapTrackingDropDownLeft", "MiniMapTrackingDropDownMiddle", "MiniMapTrackingDropDownRight", "MiniMapTrackingDropDownText", "MiniMapTrackingIcon", "MiniMapTrackingIconOverlay", "MiniMapVoiceChatDropDownButtonDisabledTexture", "MiniMapVoiceChatDropDownButtonHighlightTexture", "MiniMapVoiceChatDropDownButtonNormalTexture", "MiniMapVoiceChatDropDownButtonPushedTexture", "MiniMapVoiceChatDropDownLeft", "MiniMapVoiceChatDropDownMiddle", "MiniMapVoiceChatDropDownRight", "MiniMapVoiceChatDropDownText", "MiniMapVoiceChatFrameBackground", "MiniMapVoiceChatFrameBorder", "MiniMapVoiceChatFrameIconMuted", "MiniMapWorldBorder", "MiniMapWorldIcon", "MiniMapWorldMapButtonIcon", "MinimapBorder", "MinimapBorderTop", "MinimapCompassTexture", "MinimapNorthTag", "MinimapPingCenter", "MinimapPingExpander", "MinimapPingSpinner", "MinimapZoneText", "MirrorTimer1Border", "MirrorTimer1Text", "MirrorTimer2Border", "MirrorTimer2Text", "MirrorTimer3Border", "MirrorTimer3Text", "MovieFrameSubtitleString", "MovieProgressBarText", "MovieSubtitleFont", "MultiBarBottomLeftButton10Border", "MultiBarBottomLeftButton10Count", "MultiBarBottomLeftButton10Flash", "MultiBarBottomLeftButton10HotKey", "MultiBarBottomLeftButton10Icon", "MultiBarBottomLeftButton10Name", "MultiBarBottomLeftButton10NormalTexture", "MultiBarBottomLeftButton11Border", "MultiBarBottomLeftButton11Count", "MultiBarBottomLeftButton11Flash", "MultiBarBottomLeftButton11HotKey", "MultiBarBottomLeftButton11Icon", "MultiBarBottomLeftButton11Name", "MultiBarBottomLeftButton11NormalTexture", "MultiBarBottomLeftButton12Border", "MultiBarBottomLeftButton12Count", "MultiBarBottomLeftButton12Flash", "MultiBarBottomLeftButton12HotKey", "MultiBarBottomLeftButton12Icon", "MultiBarBottomLeftButton12Name", "MultiBarBottomLeftButton12NormalTexture", "MultiBarBottomLeftButton1Border", "MultiBarBottomLeftButton1Count", "MultiBarBottomLeftButton1Flash", "MultiBarBottomLeftButton1HotKey", "MultiBarBottomLeftButton1Icon", "MultiBarBottomLeftButton1Name", "MultiBarBottomLeftButton1NormalTexture", "MultiBarBottomLeftButton2Border", "MultiBarBottomLeftButton2Count", "MultiBarBottomLeftButton2Flash", "MultiBarBottomLeftButton2HotKey", "MultiBarBottomLeftButton2Icon", "MultiBarBottomLeftButton2Name", "MultiBarBottomLeftButton2NormalTexture", "MultiBarBottomLeftButton3Border", "MultiBarBottomLeftButton3Count", "MultiBarBottomLeftButton3Flash", "MultiBarBottomLeftButton3HotKey", "MultiBarBottomLeftButton3Icon", "MultiBarBottomLeftButton3Name", "MultiBarBottomLeftButton3NormalTexture", "MultiBarBottomLeftButton4Border", "MultiBarBottomLeftButton4Count", "MultiBarBottomLeftButton4Flash", "MultiBarBottomLeftButton4HotKey", "MultiBarBottomLeftButton4Icon", "MultiBarBottomLeftButton4Name", "MultiBarBottomLeftButton4NormalTexture", "MultiBarBottomLeftButton5Border", "MultiBarBottomLeftButton5Count", "MultiBarBottomLeftButton5Flash", "MultiBarBottomLeftButton5HotKey", "MultiBarBottomLeftButton5Icon", "MultiBarBottomLeftButton5Name", "MultiBarBottomLeftButton5NormalTexture", "MultiBarBottomLeftButton6Border", "MultiBarBottomLeftButton6Count", "MultiBarBottomLeftButton6Flash", "MultiBarBottomLeftButton6HotKey", "MultiBarBottomLeftButton6Icon", "MultiBarBottomLeftButton6Name", "MultiBarBottomLeftButton6NormalTexture", "MultiBarBottomLeftButton7Border", "MultiBarBottomLeftButton7Count", "MultiBarBottomLeftButton7Flash", "MultiBarBottomLeftButton7HotKey", "MultiBarBottomLeftButton7Icon", "MultiBarBottomLeftButton7Name", "MultiBarBottomLeftButton7NormalTexture", "MultiBarBottomLeftButton8Border", "MultiBarBottomLeftButton8Count", "MultiBarBottomLeftButton8Flash", "MultiBarBottomLeftButton8HotKey", "MultiBarBottomLeftButton8Icon", "MultiBarBottomLeftButton8Name", "MultiBarBottomLeftButton8NormalTexture", "MultiBarBottomLeftButton9Border", "MultiBarBottomLeftButton9Count", "MultiBarBottomLeftButton9Flash", "MultiBarBottomLeftButton9HotKey", "MultiBarBottomLeftButton9Icon", "MultiBarBottomLeftButton9Name", "MultiBarBottomLeftButton9NormalTexture", "MultiBarBottomRightButton10Border", "MultiBarBottomRightButton10Count", "MultiBarBottomRightButton10Flash", "MultiBarBottomRightButton10HotKey", "MultiBarBottomRightButton10Icon", "MultiBarBottomRightButton10Name", "MultiBarBottomRightButton10NormalTexture", "MultiBarBottomRightButton11Border", "MultiBarBottomRightButton11Count", "MultiBarBottomRightButton11Flash", "MultiBarBottomRightButton11HotKey", "MultiBarBottomRightButton11Icon", "MultiBarBottomRightButton11Name", "MultiBarBottomRightButton11NormalTexture", "MultiBarBottomRightButton12Border", "MultiBarBottomRightButton12Count", "MultiBarBottomRightButton12Flash", "MultiBarBottomRightButton12HotKey", "MultiBarBottomRightButton12Icon", "MultiBarBottomRightButton12Name", "MultiBarBottomRightButton12NormalTexture", "MultiBarBottomRightButton1Border", "MultiBarBottomRightButton1Count", "MultiBarBottomRightButton1Flash", "MultiBarBottomRightButton1HotKey", "MultiBarBottomRightButton1Icon", "MultiBarBottomRightButton1Name", "MultiBarBottomRightButton1NormalTexture", "MultiBarBottomRightButton2Border", "MultiBarBottomRightButton2Count", "MultiBarBottomRightButton2Flash", "MultiBarBottomRightButton2HotKey", "MultiBarBottomRightButton2Icon", "MultiBarBottomRightButton2Name", "MultiBarBottomRightButton2NormalTexture", "MultiBarBottomRightButton3Border", "MultiBarBottomRightButton3Count", "MultiBarBottomRightButton3Flash", "MultiBarBottomRightButton3HotKey", "MultiBarBottomRightButton3Icon", "MultiBarBottomRightButton3Name", "MultiBarBottomRightButton3NormalTexture", "MultiBarBottomRightButton4Border", "MultiBarBottomRightButton4Count", "MultiBarBottomRightButton4Flash", "MultiBarBottomRightButton4HotKey", "MultiBarBottomRightButton4Icon", "MultiBarBottomRightButton4Name", "MultiBarBottomRightButton4NormalTexture", "MultiBarBottomRightButton5Border", "MultiBarBottomRightButton5Count", "MultiBarBottomRightButton5Flash", "MultiBarBottomRightButton5HotKey", "MultiBarBottomRightButton5Icon", "MultiBarBottomRightButton5Name", "MultiBarBottomRightButton5NormalTexture", "MultiBarBottomRightButton6Border", "MultiBarBottomRightButton6Count", "MultiBarBottomRightButton6Flash", "MultiBarBottomRightButton6HotKey", "MultiBarBottomRightButton6Icon", "MultiBarBottomRightButton6Name", "MultiBarBottomRightButton6NormalTexture", "MultiBarBottomRightButton7Border", "MultiBarBottomRightButton7Count", "MultiBarBottomRightButton7Flash", "MultiBarBottomRightButton7HotKey", "MultiBarBottomRightButton7Icon", "MultiBarBottomRightButton7Name", "MultiBarBottomRightButton7NormalTexture", "MultiBarBottomRightButton8Border", "MultiBarBottomRightButton8Count", "MultiBarBottomRightButton8Flash", "MultiBarBottomRightButton8HotKey", "MultiBarBottomRightButton8Icon", "MultiBarBottomRightButton8Name", "MultiBarBottomRightButton8NormalTexture", "MultiBarBottomRightButton9Border", "MultiBarBottomRightButton9Count", "MultiBarBottomRightButton9Flash", "MultiBarBottomRightButton9HotKey", "MultiBarBottomRightButton9Icon", "MultiBarBottomRightButton9Name", "MultiBarBottomRightButton9NormalTexture", "MultiBarLeftButton10Border", "MultiBarLeftButton10Count", "MultiBarLeftButton10Flash", "MultiBarLeftButton10HotKey", "MultiBarLeftButton10Icon", "MultiBarLeftButton10Name", "MultiBarLeftButton10NormalTexture", "MultiBarLeftButton11Border", "MultiBarLeftButton11Count", "MultiBarLeftButton11Flash", "MultiBarLeftButton11HotKey", "MultiBarLeftButton11Icon", "MultiBarLeftButton11Name", "MultiBarLeftButton11NormalTexture", "MultiBarLeftButton12Border", "MultiBarLeftButton12Count", "MultiBarLeftButton12Flash", "MultiBarLeftButton12HotKey", "MultiBarLeftButton12Icon", "MultiBarLeftButton12Name", "MultiBarLeftButton12NormalTexture", "MultiBarLeftButton1Border", "MultiBarLeftButton1Count", "MultiBarLeftButton1Flash", "MultiBarLeftButton1HotKey", "MultiBarLeftButton1Icon", "MultiBarLeftButton1Name", "MultiBarLeftButton1NormalTexture", "MultiBarLeftButton2Border", "MultiBarLeftButton2Count", "MultiBarLeftButton2Flash", "MultiBarLeftButton2HotKey", "MultiBarLeftButton2Icon", "MultiBarLeftButton2Name", "MultiBarLeftButton2NormalTexture", "MultiBarLeftButton3Border", "MultiBarLeftButton3Count", "MultiBarLeftButton3Flash", "MultiBarLeftButton3HotKey", "MultiBarLeftButton3Icon", "MultiBarLeftButton3Name", "MultiBarLeftButton3NormalTexture", "MultiBarLeftButton4Border", "MultiBarLeftButton4Count", "MultiBarLeftButton4Flash", "MultiBarLeftButton4HotKey", "MultiBarLeftButton4Icon", "MultiBarLeftButton4Name", "MultiBarLeftButton4NormalTexture", "MultiBarLeftButton5Border", "MultiBarLeftButton5Count", "MultiBarLeftButton5Flash", "MultiBarLeftButton5HotKey", "MultiBarLeftButton5Icon", "MultiBarLeftButton5Name", "MultiBarLeftButton5NormalTexture", "MultiBarLeftButton6Border", "MultiBarLeftButton6Count", "MultiBarLeftButton6Flash", "MultiBarLeftButton6HotKey", "MultiBarLeftButton6Icon", "MultiBarLeftButton6Name", "MultiBarLeftButton6NormalTexture", "MultiBarLeftButton7Border", "MultiBarLeftButton7Count", "MultiBarLeftButton7Flash", "MultiBarLeftButton7HotKey", "MultiBarLeftButton7Icon", "MultiBarLeftButton7Name", "MultiBarLeftButton7NormalTexture", "MultiBarLeftButton8Border", "MultiBarLeftButton8Count", "MultiBarLeftButton8Flash", "MultiBarLeftButton8HotKey", "MultiBarLeftButton8Icon", "MultiBarLeftButton8Name", "MultiBarLeftButton8NormalTexture", "MultiBarLeftButton9Border", "MultiBarLeftButton9Count", "MultiBarLeftButton9Flash", "MultiBarLeftButton9HotKey", "MultiBarLeftButton9Icon", "MultiBarLeftButton9Name", "MultiBarLeftButton9NormalTexture", "MultiBarRightButton10Border", "MultiBarRightButton10Count", "MultiBarRightButton10Flash", "MultiBarRightButton10HotKey", "MultiBarRightButton10Icon", "MultiBarRightButton10Name", "MultiBarRightButton10NormalTexture", "MultiBarRightButton11Border", "MultiBarRightButton11Count", "MultiBarRightButton11Flash", "MultiBarRightButton11HotKey", "MultiBarRightButton11Icon", "MultiBarRightButton11Name", "MultiBarRightButton11NormalTexture", "MultiBarRightButton12Border", "MultiBarRightButton12Count", "MultiBarRightButton12Flash", "MultiBarRightButton12HotKey", "MultiBarRightButton12Icon", "MultiBarRightButton12Name", "MultiBarRightButton12NormalTexture", "MultiBarRightButton1Border", "MultiBarRightButton1Count", "MultiBarRightButton1Flash", "MultiBarRightButton1HotKey", "MultiBarRightButton1Icon", "MultiBarRightButton1Name", "MultiBarRightButton1NormalTexture", "MultiBarRightButton2Border", "MultiBarRightButton2Count", "MultiBarRightButton2Flash", "MultiBarRightButton2HotKey", "MultiBarRightButton2Icon", "MultiBarRightButton2Name", "MultiBarRightButton2NormalTexture", "MultiBarRightButton3Border", "MultiBarRightButton3Count", "MultiBarRightButton3Flash", "MultiBarRightButton3HotKey", "MultiBarRightButton3Icon", "MultiBarRightButton3Name", "MultiBarRightButton3NormalTexture", "MultiBarRightButton4Border", "MultiBarRightButton4Count", "MultiBarRightButton4Flash", "MultiBarRightButton4HotKey", "MultiBarRightButton4Icon", "MultiBarRightButton4Name", "MultiBarRightButton4NormalTexture", "MultiBarRightButton5Border", "MultiBarRightButton5Count", "MultiBarRightButton5Flash", "MultiBarRightButton5HotKey", "MultiBarRightButton5Icon", "MultiBarRightButton5Name", "MultiBarRightButton5NormalTexture", "MultiBarRightButton6Border", "MultiBarRightButton6Count", "MultiBarRightButton6Flash", "MultiBarRightButton6HotKey", "MultiBarRightButton6Icon", "MultiBarRightButton6Name", "MultiBarRightButton6NormalTexture", "MultiBarRightButton7Border", "MultiBarRightButton7Count", "MultiBarRightButton7Flash", "MultiBarRightButton7HotKey", "MultiBarRightButton7Icon", "MultiBarRightButton7Name", "MultiBarRightButton7NormalTexture", "MultiBarRightButton8Border", "MultiBarRightButton8Count", "MultiBarRightButton8Flash", "MultiBarRightButton8HotKey", "MultiBarRightButton8Icon", "MultiBarRightButton8Name", "MultiBarRightButton8NormalTexture", "MultiBarRightButton9Border", "MultiBarRightButton9Count", "MultiBarRightButton9Flash", "MultiBarRightButton9HotKey", "MultiBarRightButton9Icon", "MultiBarRightButton9Name", "MultiBarRightButton9NormalTexture", "MultiCastActionButton10Border", "MultiCastActionButton10Count", "MultiCastActionButton10Flash", "MultiCastActionButton10HotKey", "MultiCastActionButton10Icon", "MultiCastActionButton10Name", "MultiCastActionButton10NormalTexture", "MultiCastActionButton11Border", "MultiCastActionButton11Count", "MultiCastActionButton11Flash", "MultiCastActionButton11HotKey", "MultiCastActionButton11Icon", "MultiCastActionButton11Name", "MultiCastActionButton11NormalTexture", "MultiCastActionButton12Border", "MultiCastActionButton12Count", "MultiCastActionButton12Flash", "MultiCastActionButton12HotKey", "MultiCastActionButton12Icon", "MultiCastActionButton12Name", "MultiCastActionButton12NormalTexture", "MultiCastActionButton1Border", "MultiCastActionButton1Count", "MultiCastActionButton1Flash", "MultiCastActionButton1HotKey", "MultiCastActionButton1Icon", "MultiCastActionButton1Name", "MultiCastActionButton1NormalTexture", "MultiCastActionButton2Border", "MultiCastActionButton2Count", "MultiCastActionButton2Flash", "MultiCastActionButton2HotKey", "MultiCastActionButton2Icon", "MultiCastActionButton2Name", "MultiCastActionButton2NormalTexture", "MultiCastActionButton3Border", "MultiCastActionButton3Count", "MultiCastActionButton3Flash", "MultiCastActionButton3HotKey", "MultiCastActionButton3Icon", "MultiCastActionButton3Name", "MultiCastActionButton3NormalTexture", "MultiCastActionButton4Border", "MultiCastActionButton4Count", "MultiCastActionButton4Flash", "MultiCastActionButton4HotKey", "MultiCastActionButton4Icon", "MultiCastActionButton4Name", "MultiCastActionButton4NormalTexture", "MultiCastActionButton5Border", "MultiCastActionButton5Count", "MultiCastActionButton5Flash", "MultiCastActionButton5HotKey", "MultiCastActionButton5Icon", "MultiCastActionButton5Name", "MultiCastActionButton5NormalTexture", "MultiCastActionButton6Border", "MultiCastActionButton6Count", "MultiCastActionButton6Flash", "MultiCastActionButton6HotKey", "MultiCastActionButton6Icon", "MultiCastActionButton6Name", "MultiCastActionButton6NormalTexture", "MultiCastActionButton7Border", "MultiCastActionButton7Count", "MultiCastActionButton7Flash", "MultiCastActionButton7HotKey", "MultiCastActionButton7Icon", "MultiCastActionButton7Name", "MultiCastActionButton7NormalTexture", "MultiCastActionButton8Border", "MultiCastActionButton8Count", "MultiCastActionButton8Flash", "MultiCastActionButton8HotKey", "MultiCastActionButton8Icon", "MultiCastActionButton8Name", "MultiCastActionButton8NormalTexture", "MultiCastActionButton9Border", "MultiCastActionButton9Count", "MultiCastActionButton9Flash", "MultiCastActionButton9HotKey", "MultiCastActionButton9Icon", "MultiCastActionButton9Name", "MultiCastActionButton9NormalTexture", "MultiCastFlyoutFrameMiddle", "MultiCastFlyoutFrameTop", "MultiCastRecallSpellButtonBorder", "MultiCastRecallSpellButtonCount", "MultiCastRecallSpellButtonFlash", "MultiCastRecallSpellButtonHighlight", "MultiCastRecallSpellButtonHotKey", "MultiCastRecallSpellButtonIcon", "MultiCastRecallSpellButtonName", "MultiCastRecallSpellButtonNormalTexture", "MultiCastSummonSpellButtonBorder", "MultiCastSummonSpellButtonCount", "MultiCastSummonSpellButtonFlash", "MultiCastSummonSpellButtonHighlight", "MultiCastSummonSpellButtonHotKey", "MultiCastSummonSpellButtonIcon", "MultiCastSummonSpellButtonName", "MultiCastSummonSpellButtonNormalTexture", "NumberFontNormal", "NumberFontNormalHuge", "NumberFontNormalLarge", "NumberFontNormalLargeRight", "NumberFontNormalLargeRightRed", "NumberFontNormalLargeRightYellow", "NumberFontNormalLargeYellow", "NumberFontNormalRight", "NumberFontNormalRightRed", "NumberFontNormalRightYellow", "NumberFontNormalSmall", "NumberFontNormalSmallGray", "NumberFontNormalYellow", "NumberFont_OutlineThick_Mono_Small", "NumberFont_Outline_Huge", "NumberFont_Outline_Large", "NumberFont_Outline_Med", "NumberFont_Shadow_Med", "NumberFont_Shadow_Small", "OfficerNoteText", "OpacityFrameSliderText", "OpacitySliderFrameText", "OpenMailArithmeticLine", "OpenMailAttachmentButton10Count", "OpenMailAttachmentButton10IconTexture", "OpenMailAttachmentButton10NormalTexture", "OpenMailAttachmentButton10Stock", "OpenMailAttachmentButton11Count", "OpenMailAttachmentButton11IconTexture", "OpenMailAttachmentButton11NormalTexture", "OpenMailAttachmentButton11Stock", "OpenMailAttachmentButton12Count", "OpenMailAttachmentButton12IconTexture", "OpenMailAttachmentButton12NormalTexture", "OpenMailAttachmentButton12Stock", "OpenMailAttachmentButton13Count", "OpenMailAttachmentButton13IconTexture", "OpenMailAttachmentButton13NormalTexture", "OpenMailAttachmentButton13Stock", "OpenMailAttachmentButton14Count", "OpenMailAttachmentButton14IconTexture", "OpenMailAttachmentButton14NormalTexture", "OpenMailAttachmentButton14Stock", "OpenMailAttachmentButton15Count", "OpenMailAttachmentButton15IconTexture", "OpenMailAttachmentButton15NormalTexture", "OpenMailAttachmentButton15Stock", "OpenMailAttachmentButton16Count", "OpenMailAttachmentButton16IconTexture", "OpenMailAttachmentButton16NormalTexture", "OpenMailAttachmentButton16Stock", "OpenMailAttachmentButton1Count", "OpenMailAttachmentButton1IconTexture", "OpenMailAttachmentButton1NormalTexture", "OpenMailAttachmentButton1Stock", "OpenMailAttachmentButton2Count", "OpenMailAttachmentButton2IconTexture", "OpenMailAttachmentButton2NormalTexture", "OpenMailAttachmentButton2Stock", "OpenMailAttachmentButton3Count", "OpenMailAttachmentButton3IconTexture", "OpenMailAttachmentButton3NormalTexture", "OpenMailAttachmentButton3Stock", "OpenMailAttachmentButton4Count", "OpenMailAttachmentButton4IconTexture", "OpenMailAttachmentButton4NormalTexture", "OpenMailAttachmentButton4Stock", "OpenMailAttachmentButton5Count", "OpenMailAttachmentButton5IconTexture", "OpenMailAttachmentButton5NormalTexture", "OpenMailAttachmentButton5Stock", "OpenMailAttachmentButton6Count", "OpenMailAttachmentButton6IconTexture", "OpenMailAttachmentButton6NormalTexture", "OpenMailAttachmentButton6Stock", "OpenMailAttachmentButton7Count", "OpenMailAttachmentButton7IconTexture", "OpenMailAttachmentButton7NormalTexture", "OpenMailAttachmentButton7Stock", "OpenMailAttachmentButton8Count", "OpenMailAttachmentButton8IconTexture", "OpenMailAttachmentButton8NormalTexture", "OpenMailAttachmentButton8Stock", "OpenMailAttachmentButton9Count", "OpenMailAttachmentButton9IconTexture", "OpenMailAttachmentButton9NormalTexture", "OpenMailAttachmentButton9Stock", "OpenMailAttachmentText", "OpenMailBodyText", "OpenMailCancelButtonText", "OpenMailDeleteButtonText", "OpenMailDepositMoneyFrameCopperButtonText", "OpenMailDepositMoneyFrameGoldButtonText", "OpenMailDepositMoneyFrameSilverButtonText", "OpenMailFrameBotLeft", "OpenMailFrameBotRight", "OpenMailFrameIcon", "OpenMailFrameTopLeft", "OpenMailFrameTopRight", "OpenMailHorizontalBarLeft", "OpenMailHouseCutMoneyFrameCopperButtonText", "OpenMailHouseCutMoneyFrameGoldButtonText", "OpenMailHouseCutMoneyFrameSilverButtonText", "OpenMailInvoiceAmountReceived", "OpenMailInvoiceBuyMode", "OpenMailInvoiceDeposit", "OpenMailInvoiceHouseCut", "OpenMailInvoiceItemLabel", "OpenMailInvoiceMoneyDelay", "OpenMailInvoiceNotYetSent", "OpenMailInvoicePurchaser", "OpenMailInvoiceSalePrice", "OpenMailLetterButtonCount", "OpenMailLetterButtonIconTexture", "OpenMailLetterButtonNormalTexture", "OpenMailLetterButtonStock", "OpenMailMoneyButtonCount", "OpenMailMoneyButtonIconTexture", "OpenMailMoneyButtonNormalTexture", "OpenMailMoneyButtonStock", "OpenMailReplyButtonText", "OpenMailReportSpamButtonText", "OpenMailSalePriceMoneyFrameCopperButtonText", "OpenMailSalePriceMoneyFrameGoldButtonText", "OpenMailSalePriceMoneyFrameSilverButtonText", "OpenMailScrollFrameScrollBarThumbTexture", "OpenMailSender", "OpenMailSenderLabel", "OpenMailSubject", "OpenMailSubjectLabel", "OpenMailTitleText", "OpenMailTransactionAmountMoneyFrameCopperButtonText", "OpenMailTransactionAmountMoneyFrameGoldButtonText", "OpenMailTransactionAmountMoneyFrameSilverButtonText", "OpenScrollBarBackgroundTop", "OpenStationeryBackgroundLeft", "OpenStationeryBackgroundRight", "OutlandButtonHighlight", "PVPArenaTextString", "PVPBannerFrameAcceptButtonText", "PVPBannerFrameBackground", "PVPBannerFrameCancelButtonText", "PVPBannerFrameCustomization1Left", "PVPBannerFrameCustomization1Middle", "PVPBannerFrameCustomization1Right", "PVPBannerFrameCustomization1Text", "PVPBannerFrameCustomization2Left", "PVPBannerFrameCustomization2Middle", "PVPBannerFrameCustomization2Right", "PVPBannerFrameCustomization2Text", "PVPBannerFrameCustomizationBorder", "PVPBannerFrameEmblemBottomLeft", "PVPBannerFrameEmblemBottomRight", "PVPBannerFrameEmblemTopLeft", "PVPBannerFrameEmblemTopRight", "PVPBannerFrameGreetingText", "PVPBannerFrameNameText", "PVPBannerFrameOuterFrameBottom", "PVPBannerFrameOuterFrameBottomLeft", "PVPBannerFrameOuterFrameBottomRight", "PVPBannerFrameOuterFrameLeftBottom", "PVPBannerFrameOuterFrameLeftTop", "PVPBannerFrameOuterFrameRightBottom", "PVPBannerFrameOuterFrameRightTop", "PVPBannerFrameOuterFrameTop", "PVPBannerFrameOuterFrameTopLeft", "PVPBannerFrameOuterFrameTopRight", "PVPBannerFramePortrait", "PVPBannerFrameSaveButtonText", "PVPBannerFrameStandardBanner", "PVPBannerFrameStandardBorder", "PVPBannerFrameStandardEmblem", "PVPBannerFrameStandardEmblemWatermark", "PVPBattlegroundFrameBGTex", "PVPBattlegroundFrameCancelButtonText", "PVPBattlegroundFrameFrameLabel", "PVPBattlegroundFrameGroupJoinButtonText", "PVPBattlegroundFrameInfoScrollFrameChildFrameDescription", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoDescription", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossRewardArenaAmount", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossRewardArenaSymbol", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossRewardHonorAmount", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossRewardHonorSymbol", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoLossRewardLabel", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoRewardsLabel", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoTitle", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinRewardArenaAmount", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinRewardArenaSymbol", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinRewardHonorAmount", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinRewardHonorSymbol", "PVPBattlegroundFrameInfoScrollFrameChildFrameRewardsInfoWinRewardLabel", "PVPBattlegroundFrameInfoScrollFrameScrollBarThumbTexture", "PVPBattlegroundFrameJoinButtonText", "PVPBattlegroundFrameNameHeader", "PVPBattlegroundFramePortrait", "PVPBattlegroundFrameTypeScrollFrameScrollBarThumbTexture", "PVPColorPickerButton1Text", "PVPColorPickerButton2Text", "PVPColorPickerButton3Text", "PVPDropDownButtonDisabledTexture", "PVPDropDownButtonHighlightTexture", "PVPDropDownButtonNormalTexture", "PVPDropDownButtonPushedTexture", "PVPDropDownLeft", "PVPDropDownMiddle", "PVPDropDownRight", "PVPDropDownText", "PVPFrameArenaIcon", "PVPFrameArenaLabel", "PVPFrameArenaPoints", "PVPFrameBackground", "PVPFrameBlackFilter", "PVPFrameHonorIcon", "PVPFrameHonorLabel", "PVPFrameHonorPoints", "PVPFrameLine1", "PVPFrameOffSeasonText", "PVPFramePortrait", "PVPHonorHonorLabel", "PVPHonorKillsLabel", "PVPHonorLifetimeHonor", "PVPHonorLifetimeKills", "PVPHonorLifetimeLabel", "PVPHonorTodayHonor", "PVPHonorTodayKills", "PVPHonorTodayLabel", "PVPHonorYesterdayHonor", "PVPHonorYesterdayKills", "PVPHonorYesterdayLabel", "PVPInfoTextFont", "PVPInfoTextString", "PVPMicroButtonTexture", "PVPParentFrameTab1HighlightTexture", "PVPParentFrameTab1Left", "PVPParentFrameTab1LeftDisabled", "PVPParentFrameTab1Middle", "PVPParentFrameTab1MiddleDisabled", "PVPParentFrameTab1Right", "PVPParentFrameTab1RightDisabled", "PVPParentFrameTab1Text", "PVPParentFrameTab2HighlightTexture", "PVPParentFrameTab2Left", "PVPParentFrameTab2LeftDisabled", "PVPParentFrameTab2Middle", "PVPParentFrameTab2MiddleDisabled", "PVPParentFrameTab2Right", "PVPParentFrameTab2RightDisabled", "PVPParentFrameTab2Text", "PVPTeam1Background", "PVPTeam1Bottom", "PVPTeam1Data-", "PVPTeam1DataGames", "PVPTeam1DataGamesLabel", "PVPTeam1DataLoss", "PVPTeam1DataName", "PVPTeam1DataPlayed", "PVPTeam1DataPlayedLabel", "PVPTeam1DataRating", "PVPTeam1DataRatingLabel", "PVPTeam1DataTypeLabel", "PVPTeam1DataWinLossLabel", "PVPTeam1DataWins", "PVPTeam1Left", "PVPTeam1Right", "PVPTeam1StandardBanner", "PVPTeam1StandardBar", "PVPTeam1StandardBorder", "PVPTeam1StandardEmblem", "PVPTeam1TeamType", "PVPTeam1Top", "PVPTeam2Background", "PVPTeam2Bottom", "PVPTeam2Data-", "PVPTeam2DataGames", "PVPTeam2DataGamesLabel", "PVPTeam2DataLoss", "PVPTeam2DataName", "PVPTeam2DataPlayed", "PVPTeam2DataPlayedLabel", "PVPTeam2DataRating", "PVPTeam2DataRatingLabel", "PVPTeam2DataTypeLabel", "PVPTeam2DataWinLossLabel", "PVPTeam2DataWins", "PVPTeam2Left", "PVPTeam2Right", "PVPTeam2StandardBanner", "PVPTeam2StandardBar", "PVPTeam2StandardBorder", "PVPTeam2StandardEmblem", "PVPTeam2TeamType", "PVPTeam2Top", "PVPTeam3Background", "PVPTeam3Bottom", "PVPTeam3Data-", "PVPTeam3DataGames", "PVPTeam3DataGamesLabel", "PVPTeam3DataLoss", "PVPTeam3DataName", "PVPTeam3DataPlayed", "PVPTeam3DataPlayedLabel", "PVPTeam3DataRating", "PVPTeam3DataRatingLabel", "PVPTeam3DataTypeLabel", "PVPTeam3DataWinLossLabel", "PVPTeam3DataWins", "PVPTeam3Left", "PVPTeam3Right", "PVPTeam3StandardBanner", "PVPTeam3StandardBar", "PVPTeam3StandardBorder", "PVPTeam3StandardEmblem", "PVPTeam3TeamType", "PVPTeam3Top", "PVPTeamDetails-", "PVPTeamDetailsAddTeamMemberText", "PVPTeamDetailsButton10ClassText", "PVPTeamDetailsButton10NameText", "PVPTeamDetailsButton10PlayedText", "PVPTeamDetailsButton10RatingText", "PVPTeamDetailsButton10WinLoss-", "PVPTeamDetailsButton10WinLossLoss", "PVPTeamDetailsButton10WinLossWin", "PVPTeamDetailsButton1ClassText", "PVPTeamDetailsButton1NameText", "PVPTeamDetailsButton1PlayedText", "PVPTeamDetailsButton1RatingText", "PVPTeamDetailsButton1WinLoss-", "PVPTeamDetailsButton1WinLossLoss", "PVPTeamDetailsButton1WinLossWin", "PVPTeamDetailsButton2ClassText", "PVPTeamDetailsButton2NameText", "PVPTeamDetailsButton2PlayedText", "PVPTeamDetailsButton2RatingText", "PVPTeamDetailsButton2WinLoss-", "PVPTeamDetailsButton2WinLossLoss", "PVPTeamDetailsButton2WinLossWin", "PVPTeamDetailsButton3ClassText", "PVPTeamDetailsButton3NameText", "PVPTeamDetailsButton3PlayedText", "PVPTeamDetailsButton3RatingText", "PVPTeamDetailsButton3WinLoss-", "PVPTeamDetailsButton3WinLossLoss", "PVPTeamDetailsButton3WinLossWin", "PVPTeamDetailsButton4ClassText", "PVPTeamDetailsButton4NameText", "PVPTeamDetailsButton4PlayedText", "PVPTeamDetailsButton4RatingText", "PVPTeamDetailsButton4WinLoss-", "PVPTeamDetailsButton4WinLossLoss", "PVPTeamDetailsButton4WinLossWin", "PVPTeamDetailsButton5ClassText", "PVPTeamDetailsButton5NameText", "PVPTeamDetailsButton5PlayedText", "PVPTeamDetailsButton5RatingText", "PVPTeamDetailsButton5WinLoss-", "PVPTeamDetailsButton5WinLossLoss", "PVPTeamDetailsButton5WinLossWin", "PVPTeamDetailsButton6ClassText", "PVPTeamDetailsButton6NameText", "PVPTeamDetailsButton6PlayedText", "PVPTeamDetailsButton6RatingText", "PVPTeamDetailsButton6WinLoss-", "PVPTeamDetailsButton6WinLossLoss", "PVPTeamDetailsButton6WinLossWin", "PVPTeamDetailsButton7ClassText", "PVPTeamDetailsButton7NameText", "PVPTeamDetailsButton7PlayedText", "PVPTeamDetailsButton7RatingText", "PVPTeamDetailsButton7WinLoss-", "PVPTeamDetailsButton7WinLossLoss", "PVPTeamDetailsButton7WinLossWin", "PVPTeamDetailsButton8ClassText", "PVPTeamDetailsButton8NameText", "PVPTeamDetailsButton8PlayedText", "PVPTeamDetailsButton8RatingText", "PVPTeamDetailsButton8WinLoss-", "PVPTeamDetailsButton8WinLossLoss", "PVPTeamDetailsButton8WinLossWin", "PVPTeamDetailsButton9ClassText", "PVPTeamDetailsButton9NameText", "PVPTeamDetailsButton9PlayedText", "PVPTeamDetailsButton9RatingText", "PVPTeamDetailsButton9WinLoss-", "PVPTeamDetailsButton9WinLossLoss", "PVPTeamDetailsButton9WinLossWin", "PVPTeamDetailsFrameColumnHeader1HighlightTexture", "PVPTeamDetailsFrameColumnHeader1Left", "PVPTeamDetailsFrameColumnHeader1Middle", "PVPTeamDetailsFrameColumnHeader1Right", "PVPTeamDetailsFrameColumnHeader2HighlightTexture", "PVPTeamDetailsFrameColumnHeader2Left", "PVPTeamDetailsFrameColumnHeader2Middle", "PVPTeamDetailsFrameColumnHeader2Right", "PVPTeamDetailsFrameColumnHeader3HighlightTexture", "PVPTeamDetailsFrameColumnHeader3Left", "PVPTeamDetailsFrameColumnHeader3Middle", "PVPTeamDetailsFrameColumnHeader3Right", "PVPTeamDetailsFrameColumnHeader4HighlightTexture", "PVPTeamDetailsFrameColumnHeader4Left", "PVPTeamDetailsFrameColumnHeader4Middle", "PVPTeamDetailsFrameColumnHeader4Right", "PVPTeamDetailsFrameColumnHeader5HighlightTexture", "PVPTeamDetailsFrameColumnHeader5Left", "PVPTeamDetailsFrameColumnHeader5Middle", "PVPTeamDetailsFrameColumnHeader5Right", "PVPTeamDetailsGames", "PVPTeamDetailsGamesLabel", "PVPTeamDetailsLoss", "PVPTeamDetailsName", "PVPTeamDetailsRank", "PVPTeamDetailsRankLabel", "PVPTeamDetailsRating", "PVPTeamDetailsRatingLabel", "PVPTeamDetailsSize", "PVPTeamDetailsStatsType", "PVPTeamDetailsWinLossLabel", "PVPTeamDetailsWins", "PaperDollFrameItemFlyoutHighlight", "PartyMemberBuffTooltipBuff10Icon", "PartyMemberBuffTooltipBuff11Icon", "PartyMemberBuffTooltipBuff12Icon", "PartyMemberBuffTooltipBuff13Icon", "PartyMemberBuffTooltipBuff14Icon", "PartyMemberBuffTooltipBuff15Icon", "PartyMemberBuffTooltipBuff16Icon", "PartyMemberBuffTooltipBuff1Icon", "PartyMemberBuffTooltipBuff2Icon", "PartyMemberBuffTooltipBuff3Icon", "PartyMemberBuffTooltipBuff4Icon", "PartyMemberBuffTooltipBuff5Icon", "PartyMemberBuffTooltipBuff6Icon", "PartyMemberBuffTooltipBuff7Icon", "PartyMemberBuffTooltipBuff8Icon", "PartyMemberBuffTooltipBuff9Icon", "PartyMemberBuffTooltipDebuff1Border", "PartyMemberBuffTooltipDebuff1Icon", "PartyMemberBuffTooltipDebuff2Border", "PartyMemberBuffTooltipDebuff2Icon", "PartyMemberBuffTooltipDebuff3Border", "PartyMemberBuffTooltipDebuff3Icon", "PartyMemberBuffTooltipDebuff4Border", "PartyMemberBuffTooltipDebuff4Icon", "PartyMemberBuffTooltipDebuff5Border", "PartyMemberBuffTooltipDebuff5Icon", "PartyMemberBuffTooltipDebuff6Border", "PartyMemberBuffTooltipDebuff6Icon", "PartyMemberBuffTooltipDebuff7Border", "PartyMemberBuffTooltipDebuff7Icon", "PartyMemberBuffTooltipDebuff8Border", "PartyMemberBuffTooltipDebuff8Icon", "PartyMemberFrame1Background", "PartyMemberFrame1Debuff1Border", "PartyMemberFrame1Debuff1Icon", "PartyMemberFrame1Debuff2Border", "PartyMemberFrame1Debuff2Icon", "PartyMemberFrame1Debuff3Border", "PartyMemberFrame1Debuff3Icon", "PartyMemberFrame1Debuff4Border", "PartyMemberFrame1Debuff4Icon", "PartyMemberFrame1Disconnect", "PartyMemberFrame1DropDownButtonDisabledTexture", "PartyMemberFrame1DropDownButtonHighlightTexture", "PartyMemberFrame1DropDownButtonNormalTexture", "PartyMemberFrame1DropDownButtonPushedTexture", "PartyMemberFrame1DropDownLeft", "PartyMemberFrame1DropDownMiddle", "PartyMemberFrame1DropDownRight", "PartyMemberFrame1DropDownText", "PartyMemberFrame1Flash", "PartyMemberFrame1GuideIcon", "PartyMemberFrame1HealthBarText", "PartyMemberFrame1LeaderIcon", "PartyMemberFrame1ManaBarText", "PartyMemberFrame1MasterIcon", "PartyMemberFrame1Name", "PartyMemberFrame1PVPIcon", "PartyMemberFrame1PetFrameDebuff1Border", "PartyMemberFrame1PetFrameDebuff1Icon", "PartyMemberFrame1PetFrameDebuff2Border", "PartyMemberFrame1PetFrameDebuff2Icon", "PartyMemberFrame1PetFrameDebuff3Border", "PartyMemberFrame1PetFrameDebuff3Icon", "PartyMemberFrame1PetFrameDebuff4Border", "PartyMemberFrame1PetFrameDebuff4Icon", "PartyMemberFrame1PetFrameFlash", "PartyMemberFrame1PetFrameName", "PartyMemberFrame1PetFramePortrait", "PartyMemberFrame1PetFrameTexture", "PartyMemberFrame1Portrait", "PartyMemberFrame1ReadyCheckTexture", "PartyMemberFrame1RoleIcon", "PartyMemberFrame1SpeakerFlash", "PartyMemberFrame1SpeakerFrameFlash", "PartyMemberFrame1SpeakerFrameMuted", "PartyMemberFrame1SpeakerFrameOn", "PartyMemberFrame1SpeakerMuted", "PartyMemberFrame1SpeakerOn", "PartyMemberFrame1Status", "PartyMemberFrame1Texture", "PartyMemberFrame1VehicleTexture", "PartyMemberFrame2Background", "PartyMemberFrame2Debuff1Border", "PartyMemberFrame2Debuff1Icon", "PartyMemberFrame2Debuff2Border", "PartyMemberFrame2Debuff2Icon", "PartyMemberFrame2Debuff3Border", "PartyMemberFrame2Debuff3Icon", "PartyMemberFrame2Debuff4Border", "PartyMemberFrame2Debuff4Icon", "PartyMemberFrame2Disconnect", "PartyMemberFrame2DropDownButtonDisabledTexture", "PartyMemberFrame2DropDownButtonHighlightTexture", "PartyMemberFrame2DropDownButtonNormalTexture", "PartyMemberFrame2DropDownButtonPushedTexture", "PartyMemberFrame2DropDownLeft", "PartyMemberFrame2DropDownMiddle", "PartyMemberFrame2DropDownRight", "PartyMemberFrame2DropDownText", "PartyMemberFrame2Flash", "PartyMemberFrame2GuideIcon", "PartyMemberFrame2HealthBarText", "PartyMemberFrame2LeaderIcon", "PartyMemberFrame2ManaBarText", "PartyMemberFrame2MasterIcon", "PartyMemberFrame2Name", "PartyMemberFrame2PVPIcon", "PartyMemberFrame2PetFrameDebuff1Border", "PartyMemberFrame2PetFrameDebuff1Icon", "PartyMemberFrame2PetFrameDebuff2Border", "PartyMemberFrame2PetFrameDebuff2Icon", "PartyMemberFrame2PetFrameDebuff3Border", "PartyMemberFrame2PetFrameDebuff3Icon", "PartyMemberFrame2PetFrameDebuff4Border", "PartyMemberFrame2PetFrameDebuff4Icon", "PartyMemberFrame2PetFrameFlash", "PartyMemberFrame2PetFrameName", "PartyMemberFrame2PetFramePortrait", "PartyMemberFrame2PetFrameTexture", "PartyMemberFrame2Portrait", "PartyMemberFrame2ReadyCheckTexture", "PartyMemberFrame2RoleIcon", "PartyMemberFrame2SpeakerFlash", "PartyMemberFrame2SpeakerFrameFlash", "PartyMemberFrame2SpeakerFrameMuted", "PartyMemberFrame2SpeakerFrameOn", "PartyMemberFrame2SpeakerMuted", "PartyMemberFrame2SpeakerOn", "PartyMemberFrame2Status", "PartyMemberFrame2Texture", "PartyMemberFrame2VehicleTexture", "PartyMemberFrame3Background", "PartyMemberFrame3Debuff1Border", "PartyMemberFrame3Debuff1Icon", "PartyMemberFrame3Debuff2Border", "PartyMemberFrame3Debuff2Icon", "PartyMemberFrame3Debuff3Border", "PartyMemberFrame3Debuff3Icon", "PartyMemberFrame3Debuff4Border", "PartyMemberFrame3Debuff4Icon", "PartyMemberFrame3Disconnect", "PartyMemberFrame3DropDownButtonDisabledTexture", "PartyMemberFrame3DropDownButtonHighlightTexture", "PartyMemberFrame3DropDownButtonNormalTexture", "PartyMemberFrame3DropDownButtonPushedTexture", "PartyMemberFrame3DropDownLeft", "PartyMemberFrame3DropDownMiddle", "PartyMemberFrame3DropDownRight", "PartyMemberFrame3DropDownText", "PartyMemberFrame3Flash", "PartyMemberFrame3GuideIcon", "PartyMemberFrame3HealthBarText", "PartyMemberFrame3LeaderIcon", "PartyMemberFrame3ManaBarText", "PartyMemberFrame3MasterIcon", "PartyMemberFrame3Name", "PartyMemberFrame3PVPIcon", "PartyMemberFrame3PetFrameDebuff1Border", "PartyMemberFrame3PetFrameDebuff1Icon", "PartyMemberFrame3PetFrameDebuff2Border", "PartyMemberFrame3PetFrameDebuff2Icon", "PartyMemberFrame3PetFrameDebuff3Border", "PartyMemberFrame3PetFrameDebuff3Icon", "PartyMemberFrame3PetFrameDebuff4Border", "PartyMemberFrame3PetFrameDebuff4Icon", "PartyMemberFrame3PetFrameFlash", "PartyMemberFrame3PetFrameName", "PartyMemberFrame3PetFramePortrait", "PartyMemberFrame3PetFrameTexture", "PartyMemberFrame3Portrait", "PartyMemberFrame3ReadyCheckTexture", "PartyMemberFrame3RoleIcon", "PartyMemberFrame3SpeakerFlash", "PartyMemberFrame3SpeakerFrameFlash", "PartyMemberFrame3SpeakerFrameMuted", "PartyMemberFrame3SpeakerFrameOn", "PartyMemberFrame3SpeakerMuted", "PartyMemberFrame3SpeakerOn", "PartyMemberFrame3Status", "PartyMemberFrame3Texture", "PartyMemberFrame3VehicleTexture", "PartyMemberFrame4Background", "PartyMemberFrame4Debuff1Border", "PartyMemberFrame4Debuff1Icon", "PartyMemberFrame4Debuff2Border", "PartyMemberFrame4Debuff2Icon", "PartyMemberFrame4Debuff3Border", "PartyMemberFrame4Debuff3Icon", "PartyMemberFrame4Debuff4Border", "PartyMemberFrame4Debuff4Icon", "PartyMemberFrame4Disconnect", "PartyMemberFrame4DropDownButtonDisabledTexture", "PartyMemberFrame4DropDownButtonHighlightTexture", "PartyMemberFrame4DropDownButtonNormalTexture", "PartyMemberFrame4DropDownButtonPushedTexture", "PartyMemberFrame4DropDownLeft", "PartyMemberFrame4DropDownMiddle", "PartyMemberFrame4DropDownRight", "PartyMemberFrame4DropDownText", "PartyMemberFrame4Flash", "PartyMemberFrame4GuideIcon", "PartyMemberFrame4HealthBarText", "PartyMemberFrame4LeaderIcon", "PartyMemberFrame4ManaBarText", "PartyMemberFrame4MasterIcon", "PartyMemberFrame4Name", "PartyMemberFrame4PVPIcon", "PartyMemberFrame4PetFrameDebuff1Border", "PartyMemberFrame4PetFrameDebuff1Icon", "PartyMemberFrame4PetFrameDebuff2Border", "PartyMemberFrame4PetFrameDebuff2Icon", "PartyMemberFrame4PetFrameDebuff3Border", "PartyMemberFrame4PetFrameDebuff3Icon", "PartyMemberFrame4PetFrameDebuff4Border", "PartyMemberFrame4PetFrameDebuff4Icon", "PartyMemberFrame4PetFrameFlash", "PartyMemberFrame4PetFrameName", "PartyMemberFrame4PetFramePortrait", "PartyMemberFrame4PetFrameTexture", "PartyMemberFrame4Portrait", "PartyMemberFrame4ReadyCheckTexture", "PartyMemberFrame4RoleIcon", "PartyMemberFrame4SpeakerFlash", "PartyMemberFrame4SpeakerFrameFlash", "PartyMemberFrame4SpeakerFrameMuted", "PartyMemberFrame4SpeakerFrameOn", "PartyMemberFrame4SpeakerMuted", "PartyMemberFrame4SpeakerOn", "PartyMemberFrame4Status", "PartyMemberFrame4Texture", "PartyMemberFrame4VehicleTexture", "PendingListFrameDropDownButtonDisabledTexture", "PendingListFrameDropDownButtonHighlightTexture", "PendingListFrameDropDownButtonNormalTexture", "PendingListFrameDropDownButtonPushedTexture", "PendingListFrameDropDownLeft", "PendingListFrameDropDownMiddle", "PendingListFrameDropDownRight", "PendingListFrameDropDownText", "PendingListInfoFrameBattlenetIcon", "PendingListInfoFrameContinueButtonLeft", "PendingListInfoFrameContinueButtonMiddle", "PendingListInfoFrameContinueButtonRight", "PendingListInfoFrameContinueButtonText", "PendingListInfoFrameLeft", "PendingListInfoFramePlayerIcon", "PendingListInfoFrameTitle", "PersonalNoteText", "PetActionButton10AutoCastable", "PetActionButton10Border", "PetActionButton10Count", "PetActionButton10Flash", "PetActionButton10HotKey", "PetActionButton10Icon", "PetActionButton10Name", "PetActionButton10NormalTexture2", "PetActionButton10Shine1", "PetActionButton10Shine10", "PetActionButton10Shine11", "PetActionButton10Shine12", "PetActionButton10Shine13", "PetActionButton10Shine14", "PetActionButton10Shine15", "PetActionButton10Shine16", "PetActionButton10Shine2", "PetActionButton10Shine3", "PetActionButton10Shine4", "PetActionButton10Shine5", "PetActionButton10Shine6", "PetActionButton10Shine7", "PetActionButton10Shine8", "PetActionButton10Shine9", "PetActionButton1AutoCastable", "PetActionButton1Border", "PetActionButton1Count", "PetActionButton1Flash", "PetActionButton1HotKey", "PetActionButton1Icon", "PetActionButton1Name", "PetActionButton1NormalTexture2", "PetActionButton1Shine1", "PetActionButton1Shine10", "PetActionButton1Shine11", "PetActionButton1Shine12", "PetActionButton1Shine13", "PetActionButton1Shine14", "PetActionButton1Shine15", "PetActionButton1Shine16", "PetActionButton1Shine2", "PetActionButton1Shine3", "PetActionButton1Shine4", "PetActionButton1Shine5", "PetActionButton1Shine6", "PetActionButton1Shine7", "PetActionButton1Shine8", "PetActionButton1Shine9", "PetActionButton2AutoCastable", "PetActionButton2Border", "PetActionButton2Count", "PetActionButton2Flash", "PetActionButton2HotKey", "PetActionButton2Icon", "PetActionButton2Name", "PetActionButton2NormalTexture2", "PetActionButton2Shine1", "PetActionButton2Shine10", "PetActionButton2Shine11", "PetActionButton2Shine12", "PetActionButton2Shine13", "PetActionButton2Shine14", "PetActionButton2Shine15", "PetActionButton2Shine16", "PetActionButton2Shine2", "PetActionButton2Shine3", "PetActionButton2Shine4", "PetActionButton2Shine5", "PetActionButton2Shine6", "PetActionButton2Shine7", "PetActionButton2Shine8", "PetActionButton2Shine9", "PetActionButton3AutoCastable", "PetActionButton3Border", "PetActionButton3Count", "PetActionButton3Flash", "PetActionButton3HotKey", "PetActionButton3Icon", "PetActionButton3Name", "PetActionButton3NormalTexture2", "PetActionButton3Shine1", "PetActionButton3Shine10", "PetActionButton3Shine11", "PetActionButton3Shine12", "PetActionButton3Shine13", "PetActionButton3Shine14", "PetActionButton3Shine15", "PetActionButton3Shine16", "PetActionButton3Shine2", "PetActionButton3Shine3", "PetActionButton3Shine4", "PetActionButton3Shine5", "PetActionButton3Shine6", "PetActionButton3Shine7", "PetActionButton3Shine8", "PetActionButton3Shine9", "PetActionButton4AutoCastable", "PetActionButton4Border", "PetActionButton4Count", "PetActionButton4Flash", "PetActionButton4HotKey", "PetActionButton4Icon", "PetActionButton4Name", "PetActionButton4NormalTexture2", "PetActionButton4Shine1", "PetActionButton4Shine10", "PetActionButton4Shine11", "PetActionButton4Shine12", "PetActionButton4Shine13", "PetActionButton4Shine14", "PetActionButton4Shine15", "PetActionButton4Shine16", "PetActionButton4Shine2", "PetActionButton4Shine3", "PetActionButton4Shine4", "PetActionButton4Shine5", "PetActionButton4Shine6", "PetActionButton4Shine7", "PetActionButton4Shine8", "PetActionButton4Shine9", "PetActionButton5AutoCastable", "PetActionButton5Border", "PetActionButton5Count", "PetActionButton5Flash", "PetActionButton5HotKey", "PetActionButton5Icon", "PetActionButton5Name", "PetActionButton5NormalTexture2", "PetActionButton5Shine1", "PetActionButton5Shine10", "PetActionButton5Shine11", "PetActionButton5Shine12", "PetActionButton5Shine13", "PetActionButton5Shine14", "PetActionButton5Shine15", "PetActionButton5Shine16", "PetActionButton5Shine2", "PetActionButton5Shine3", "PetActionButton5Shine4", "PetActionButton5Shine5", "PetActionButton5Shine6", "PetActionButton5Shine7", "PetActionButton5Shine8", "PetActionButton5Shine9", "PetActionButton6AutoCastable", "PetActionButton6Border", "PetActionButton6Count", "PetActionButton6Flash", "PetActionButton6HotKey", "PetActionButton6Icon", "PetActionButton6Name", "PetActionButton6NormalTexture2", "PetActionButton6Shine1", "PetActionButton6Shine10", "PetActionButton6Shine11", "PetActionButton6Shine12", "PetActionButton6Shine13", "PetActionButton6Shine14", "PetActionButton6Shine15", "PetActionButton6Shine16", "PetActionButton6Shine2", "PetActionButton6Shine3", "PetActionButton6Shine4", "PetActionButton6Shine5", "PetActionButton6Shine6", "PetActionButton6Shine7", "PetActionButton6Shine8", "PetActionButton6Shine9", "PetActionButton7AutoCastable", "PetActionButton7Border", "PetActionButton7Count", "PetActionButton7Flash", "PetActionButton7HotKey", "PetActionButton7Icon", "PetActionButton7Name", "PetActionButton7NormalTexture2", "PetActionButton7Shine1", "PetActionButton7Shine10", "PetActionButton7Shine11", "PetActionButton7Shine12", "PetActionButton7Shine13", "PetActionButton7Shine14", "PetActionButton7Shine15", "PetActionButton7Shine16", "PetActionButton7Shine2", "PetActionButton7Shine3", "PetActionButton7Shine4", "PetActionButton7Shine5", "PetActionButton7Shine6", "PetActionButton7Shine7", "PetActionButton7Shine8", "PetActionButton7Shine9", "PetActionButton8AutoCastable", "PetActionButton8Border", "PetActionButton8Count", "PetActionButton8Flash", "PetActionButton8HotKey", "PetActionButton8Icon", "PetActionButton8Name", "PetActionButton8NormalTexture2", "PetActionButton8Shine1", "PetActionButton8Shine10", "PetActionButton8Shine11", "PetActionButton8Shine12", "PetActionButton8Shine13", "PetActionButton8Shine14", "PetActionButton8Shine15", "PetActionButton8Shine16", "PetActionButton8Shine2", "PetActionButton8Shine3", "PetActionButton8Shine4", "PetActionButton8Shine5", "PetActionButton8Shine6", "PetActionButton8Shine7", "PetActionButton8Shine8", "PetActionButton8Shine9", "PetActionButton9AutoCastable", "PetActionButton9Border", "PetActionButton9Count", "PetActionButton9Flash", "PetActionButton9HotKey", "PetActionButton9Icon", "PetActionButton9Name", "PetActionButton9NormalTexture2", "PetActionButton9Shine1", "PetActionButton9Shine10", "PetActionButton9Shine11", "PetActionButton9Shine12", "PetActionButton9Shine13", "PetActionButton9Shine14", "PetActionButton9Shine15", "PetActionButton9Shine16", "PetActionButton9Shine2", "PetActionButton9Shine3", "PetActionButton9Shine4", "PetActionButton9Shine5", "PetActionButton9Shine6", "PetActionButton9Shine7", "PetActionButton9Shine8", "PetActionButton9Shine9", "PetArmorFrameLabel", "PetArmorFrameStatText", "PetAttackModeTexture", "PetAttackPowerFrameLabel", "PetAttackPowerFrameStatText", "PetCastingBarFrameBorder", "PetCastingBarFrameBorderShield", "PetCastingBarFrameFlash", "PetCastingBarFrameIcon", "PetCastingBarFrameSpark", "PetCastingBarFrameText", "PetDamageFrameLabel", "PetDamageFrameStatText", "PetFrameDebuff1Border", "PetFrameDebuff1Icon", "PetFrameDebuff2Border", "PetFrameDebuff2Icon", "PetFrameDebuff3Border", "PetFrameDebuff3Icon", "PetFrameDebuff4Border", "PetFrameDebuff4Icon", "PetFrameDropDownButtonDisabledTexture", "PetFrameDropDownButtonHighlightTexture", "PetFrameDropDownButtonNormalTexture", "PetFrameDropDownButtonPushedTexture", "PetFrameDropDownLeft", "PetFrameDropDownMiddle", "PetFrameDropDownRight", "PetFrameDropDownText", "PetFrameFlash", "PetFrameHappinessTexture", "PetFrameHealthBarText", "PetFrameManaBarText", "PetFrameTexture", "PetHitIndicator", "PetLevelText", "PetMagicResText1", "PetMagicResText2", "PetMagicResText3", "PetMagicResText4", "PetMagicResText5", "PetName", "PetNameText", "PetPaperDollCloseButtonText", "PetPaperDollFrameExpBarText", "PetPaperDollFrameTab1HighlightTexture", "PetPaperDollFrameTab1Left", "PetPaperDollFrameTab1LeftDisabled", "PetPaperDollFrameTab1Middle", "PetPaperDollFrameTab1MiddleDisabled", "PetPaperDollFrameTab1Right", "PetPaperDollFrameTab1RightDisabled", "PetPaperDollFrameTab1Text", "PetPaperDollFrameTab2HighlightTexture", "PetPaperDollFrameTab2Left", "PetPaperDollFrameTab2LeftDisabled", "PetPaperDollFrameTab2Middle", "PetPaperDollFrameTab2MiddleDisabled", "PetPaperDollFrameTab2Right", "PetPaperDollFrameTab2RightDisabled", "PetPaperDollFrameTab2Text", "PetPaperDollFrameTab3HighlightTexture", "PetPaperDollFrameTab3Left", "PetPaperDollFrameTab3LeftDisabled", "PetPaperDollFrameTab3Middle", "PetPaperDollFrameTab3MiddleDisabled", "PetPaperDollFrameTab3Right", "PetPaperDollFrameTab3RightDisabled", "PetPaperDollFrameTab3Text", "PetPaperDollXPBar1", "PetPortrait", "PetSpellDamageFrameLabel", "PetSpellDamageFrameStatText", "PetStableCostLabel", "PetStableCostMoneyFrameCopperButtonText", "PetStableCostMoneyFrameGoldButtonText", "PetStableCostMoneyFrameSilverButtonText", "PetStableCurrentPetBackground", "PetStableCurrentPetIconTexture", "PetStableCurrentPetNormalTexture", "PetStableFrameBottomLeft", "PetStableFrameBottomRight", "PetStableFramePortrait", "PetStableLevelText", "PetStableMoneyFrameCopperButtonText", "PetStableMoneyFrameGoldButtonText", "PetStableMoneyFrameSilverButtonText", "PetStablePurchaseButtonText", "PetStableSlotText", "PetStableStabledPet1Background", "PetStableStabledPet1IconTexture", "PetStableStabledPet1NormalTexture", "PetStableStabledPet2Background", "PetStableStabledPet2IconTexture", "PetStableStabledPet2NormalTexture", "PetStableStabledPet3Background", "PetStableStabledPet3IconTexture", "PetStableStabledPet3NormalTexture", "PetStableStabledPet4Background", "PetStableStabledPet4IconTexture", "PetStableStabledPet4NormalTexture", "PetStableTitleLabel", "PetStatFrame1Label", "PetStatFrame1StatText", "PetStatFrame2Label", "PetStatFrame2StatText", "PetStatFrame3Label", "PetStatFrame3StatText", "PetStatFrame4Label", "PetStatFrame4StatText", "PetStatFrame5Label", "PetStatFrame5StatText", "PetitionFrameCancelButtonText", "PetitionFrameCharterName", "PetitionFrameCharterTitle", "PetitionFrameInstructions", "PetitionFrameMasterName", "PetitionFrameMasterTitle", "PetitionFrameMemberName1", "PetitionFrameMemberName2", "PetitionFrameMemberName3", "PetitionFrameMemberName4", "PetitionFrameMemberName5", "PetitionFrameMemberName6", "PetitionFrameMemberName7", "PetitionFrameMemberName8", "PetitionFrameMemberName9", "PetitionFrameMemberTitle", "PetitionFrameNpcNameText", "PetitionFramePortrait", "PetitionFrameRenameButtonText", "PetitionFrameRequestButtonText", "PetitionFrameSignButtonText", "PetitionText", "PlayLoopbackSoundButtonText", "PlayLoopbackSoundButtonTexture", "PlayerAttackBackground", "PlayerAttackGlow", "PlayerAttackIcon", "PlayerFrameAlternateManaBarBackground", "PlayerFrameAlternateManaBarBorder", "PlayerFrameAlternateManaBarText", "PlayerFrameBackground", "PlayerFrameDropDownButtonDisabledTexture", "PlayerFrameDropDownButtonHighlightTexture", "PlayerFrameDropDownButtonNormalTexture", "PlayerFrameDropDownButtonPushedTexture", "PlayerFrameDropDownLeft", "PlayerFrameDropDownMiddle", "PlayerFrameDropDownRight", "PlayerFrameDropDownText", "PlayerFrameFlash", "PlayerFrameGroupIndicatorLeft", "PlayerFrameGroupIndicatorMiddle", "PlayerFrameGroupIndicatorRight", "PlayerFrameGroupIndicatorText", "PlayerFrameHealthBarText", "PlayerFrameManaBarText", "PlayerFrameReadyCheckTexture", "PlayerFrameRoleIcon", "PlayerFrameTexture", "PlayerFrameVehicleTexture", "PlayerGuideIcon", "PlayerHitIndicator", "PlayerLeaderIcon", "PlayerLevelText", "PlayerMasterIcon", "PlayerName", "PlayerPVPIcon", "PlayerPVPTimerText", "PlayerPlayTimeIcon", "PlayerPortrait", "PlayerRestGlow", "PlayerRestIcon", "PlayerSpeakerFrameFlash", "PlayerSpeakerFrameMuted", "PlayerSpeakerFrameOn", "PlayerStatFrameLeft1Label", "PlayerStatFrameLeft1StatText", "PlayerStatFrameLeft2Label", "PlayerStatFrameLeft2StatText", "PlayerStatFrameLeft3Label", "PlayerStatFrameLeft3StatText", "PlayerStatFrameLeft4Label", "PlayerStatFrameLeft4StatText", "PlayerStatFrameLeft5Label", "PlayerStatFrameLeft5StatText", "PlayerStatFrameLeft6Label", "PlayerStatFrameLeft6StatText", "PlayerStatFrameLeftDropDownButtonDisabledTexture", "PlayerStatFrameLeftDropDownButtonHighlightTexture", "PlayerStatFrameLeftDropDownButtonNormalTexture", "PlayerStatFrameLeftDropDownButtonPushedTexture", "PlayerStatFrameLeftDropDownLeft", "PlayerStatFrameLeftDropDownMiddle", "PlayerStatFrameLeftDropDownRight", "PlayerStatFrameLeftDropDownText", "PlayerStatFrameRight1Label", "PlayerStatFrameRight1StatText", "PlayerStatFrameRight2Label", "PlayerStatFrameRight2StatText", "PlayerStatFrameRight3Label", "PlayerStatFrameRight3StatText", "PlayerStatFrameRight4Label", "PlayerStatFrameRight4StatText", "PlayerStatFrameRight5Label", "PlayerStatFrameRight5StatText", "PlayerStatFrameRight6Label", "PlayerStatFrameRight6StatText", "PlayerStatFrameRightDropDownButtonDisabledTexture", "PlayerStatFrameRightDropDownButtonHighlightTexture", "PlayerStatFrameRightDropDownButtonNormalTexture", "PlayerStatFrameRightDropDownButtonPushedTexture", "PlayerStatFrameRightDropDownLeft", "PlayerStatFrameRightDropDownMiddle", "PlayerStatFrameRightDropDownRight", "PlayerStatFrameRightDropDownText", "PlayerStatLeftBottom", "PlayerStatLeftMiddle", "PlayerStatLeftTop", "PlayerStatRightBottom", "PlayerStatRightMiddle", "PlayerStatRightTop", "PlayerStatusTexture", "PlayerTitleFrameButtonHighlightTexture", "PlayerTitleFrameButtonNormalTexture", "PlayerTitleFrameButtonPushedTexture", "PlayerTitleFrameLeft", "PlayerTitleFrameMiddle", "PlayerTitleFrameRight", "PlayerTitleFrameText", "PlayerTitlePickerScrollFrameButton1Check", "PlayerTitlePickerScrollFrameButton1TitleText", "PlayerTitlePickerScrollFrameButton2Check", "PlayerTitlePickerScrollFrameButton2TitleText", "PlayerTitlePickerScrollFrameButton3Check", "PlayerTitlePickerScrollFrameButton3TitleText", "PlayerTitlePickerScrollFrameButton4Check", "PlayerTitlePickerScrollFrameButton4TitleText", "PlayerTitlePickerScrollFrameButton5Check", "PlayerTitlePickerScrollFrameButton5TitleText", "PlayerTitlePickerScrollFrameButton6Check", "PlayerTitlePickerScrollFrameButton6TitleText", "PlayerTitlePickerScrollFrameButton7Check", "PlayerTitlePickerScrollFrameButton7TitleText", "PlayerTitlePickerScrollFrameButton8Check", "PlayerTitlePickerScrollFrameButton8TitleText", "PlayerTitlePickerScrollFrameScrollBarBG", "PlayerTitlePickerScrollFrameScrollBarBottom", "PlayerTitlePickerScrollFrameScrollBarMiddle", "PlayerTitlePickerScrollFrameScrollBarThumbTexture", "PlayerTitlePickerScrollFrameScrollBarTop", "PossessBackground1", "PossessBackground2", "PossessButton1Border", "PossessButton1Count", "PossessButton1Flash", "PossessButton1HotKey", "PossessButton1Icon", "PossessButton1Name", "PossessButton1NormalTexture", "PossessButton2Border", "PossessButton2Count", "PossessButton2Flash", "PossessButton2HotKey", "PossessButton2Icon", "PossessButton2Name", "PossessButton2NormalTexture", "QuestDetailScrollFrameScrollBarThumbTexture", "QuestDifficulty_Difficult", "QuestDifficulty_Header", "QuestDifficulty_Impossible", "QuestDifficulty_Standard", "QuestDifficulty_Trivial", "QuestDifficulty_VeryDifficult", "QuestFont", "QuestFontHighlight", "QuestFontLeft", "QuestFontNormalSmall", "QuestFont_Large", "QuestFont_Shadow_Huge", "QuestFrameAcceptButtonText", "QuestFrameCancelButtonText", "QuestFrameCompleteButtonText", "QuestFrameCompleteQuestButtonText", "QuestFrameDeclineButtonText", "QuestFrameDetailPanelBotRight", "QuestFrameDetailPanelMaterialBotLeft", "QuestFrameDetailPanelMaterialBotRight", "QuestFrameDetailPanelMaterialTopLeft", "QuestFrameDetailPanelMaterialTopRight", "QuestFrameGoodbyeButtonText", "QuestFrameGreetingGoodbyeButtonText", "QuestFrameGreetingPanelBotRight", "QuestFrameGreetingPanelMaterialBotLeft", "QuestFrameGreetingPanelMaterialBotRight", "QuestFrameGreetingPanelMaterialTopLeft", "QuestFrameGreetingPanelMaterialTopRight", "QuestFrameNpcNameText", "QuestFramePortrait", "QuestFrameProgressPanelBotRight", "QuestFrameProgressPanelMaterialBotLeft", "QuestFrameProgressPanelMaterialBotRight", "QuestFrameProgressPanelMaterialTopLeft", "QuestFrameProgressPanelMaterialTopRight", "QuestFrameRewardPanelBotRight", "QuestFrameRewardPanelMaterialBotLeft", "QuestFrameRewardPanelMaterialBotRight", "QuestFrameRewardPanelMaterialTopLeft", "QuestFrameRewardPanelMaterialTopRight", "QuestGreetingFrameHorizontalBreak", "QuestGreetingScrollFrameScrollBarThumbTexture", "QuestInfoAnchor", "QuestInfoArenaPointsFrameIcon", "QuestInfoArenaPointsFramePoints", "QuestInfoArenaPointsFrameReceiveText", "QuestInfoDescriptionHeader", "QuestInfoDescriptionText", "QuestInfoGroupSize", "QuestInfoHonorFrameIcon", "QuestInfoHonorFramePoints", "QuestInfoHonorFrameReceiveText", "QuestInfoItem10Count", "QuestInfoItem10IconTexture", "QuestInfoItem10Name", "QuestInfoItem10NameFrame", "QuestInfoItem1Count", "QuestInfoItem1IconTexture", "QuestInfoItem1Name", "QuestInfoItem1NameFrame", "QuestInfoItem2Count", "QuestInfoItem2IconTexture", "QuestInfoItem2Name", "QuestInfoItem2NameFrame", "QuestInfoItem3Count", "QuestInfoItem3IconTexture", "QuestInfoItem3Name", "QuestInfoItem3NameFrame", "QuestInfoItem4Count", "QuestInfoItem4IconTexture", "QuestInfoItem4Name", "QuestInfoItem4NameFrame", "QuestInfoItem5Count", "QuestInfoItem5IconTexture", "QuestInfoItem5Name", "QuestInfoItem5NameFrame", "QuestInfoItem6Count", "QuestInfoItem6IconTexture", "QuestInfoItem6Name", "QuestInfoItem6NameFrame", "QuestInfoItem7Count", "QuestInfoItem7IconTexture", "QuestInfoItem7Name", "QuestInfoItem7NameFrame", "QuestInfoItem8Count", "QuestInfoItem8IconTexture", "QuestInfoItem8Name", "QuestInfoItem8NameFrame", "QuestInfoItem9Count", "QuestInfoItem9IconTexture", "QuestInfoItem9Name", "QuestInfoItem9NameFrame", "QuestInfoItemChooseText", "QuestInfoItemReceiveText", "QuestInfoMoneyFrameCopperButtonText", "QuestInfoMoneyFrameGoldButtonText", "QuestInfoMoneyFrameSilverButtonText", "QuestInfoObjective1", "QuestInfoObjective10", "QuestInfoObjective2", "QuestInfoObjective3", "QuestInfoObjective4", "QuestInfoObjective5", "QuestInfoObjective6", "QuestInfoObjective7", "QuestInfoObjective8", "QuestInfoObjective9", "QuestInfoObjectivesHeader", "QuestInfoObjectivesText", "QuestInfoPlayerTitleFrameIconTexture", "QuestInfoPlayerTitleFrameTitle", "QuestInfoPlayerTitleFrameTitleFrameCenter", "QuestInfoPlayerTitleFrameTitleFrameLeft", "QuestInfoPlayerTitleFrameTitleLabel", "QuestInfoReputation10Amount", "QuestInfoReputation10Faction", "QuestInfoReputation1Amount", "QuestInfoReputation1Faction", "QuestInfoReputation2Amount", "QuestInfoReputation2Faction", "QuestInfoReputation3Amount", "QuestInfoReputation3Faction", "QuestInfoReputation4Amount", "QuestInfoReputation4Faction", "QuestInfoReputation5Amount", "QuestInfoReputation5Faction", "QuestInfoReputation6Amount", "QuestInfoReputation6Faction", "QuestInfoReputation7Amount", "QuestInfoReputation7Faction", "QuestInfoReputation8Amount", "QuestInfoReputation8Faction", "QuestInfoReputation9Amount", "QuestInfoReputation9Faction", "QuestInfoReputationText", "QuestInfoRequiredMoneyDisplayCopperButtonText", "QuestInfoRequiredMoneyDisplayGoldButtonText", "QuestInfoRequiredMoneyDisplaySilverButtonText", "QuestInfoRequiredMoneyText", "QuestInfoRewardText", "QuestInfoRewardsHeader", "QuestInfoSpellLearnText", "QuestInfoTalentFramePoints", "QuestInfoTalentFrameReceiveText", "QuestInfoTimerText", "QuestInfoTitleHeader", "QuestInfoXPFramePoints", "QuestInfoXPFrameReceiveText", "QuestLogCountBottomLeft", "QuestLogCountBottomMiddle", "QuestLogCountBottomRight", "QuestLogCountLeft", "QuestLogCountMiddleMiddle", "QuestLogCountRight", "QuestLogCountTopLeft", "QuestLogCountTopMiddle", "QuestLogCountTopRight", "QuestLogDailyQuestCount", "QuestLogDetailFrameBackgroundBottomLeft", "QuestLogDetailFrameBackgroundBottomRight", "QuestLogDetailFrameBackgroundTopLeft", "QuestLogDetailFrameBackgroundTopRight", "QuestLogDetailScrollFrameScrollBackgroundBottomRight", "QuestLogDetailScrollFrameScrollBackgroundTopLeft", "QuestLogDetailScrollFrameScrollBarThumbTexture", "QuestLogDetailTitleText", "QuestLogFrameAbandonButtonText", "QuestLogFrameCancelButtonText", "QuestLogFramePushQuestButtonText", "QuestLogFrameShowMapButtonHighlight", "QuestLogFrameShowMapButtonText", "QuestLogFrameShowMapButtonTexture", "QuestLogFrameTrackButtonText", "QuestLogMapFrame1", "QuestLogMapFrame10", "QuestLogMapFrame11", "QuestLogMapFrame12", "QuestLogMapFrame2", "QuestLogMapFrame3", "QuestLogMapFrame4", "QuestLogMapFrame5", "QuestLogMapFrame6", "QuestLogMapFrame7", "QuestLogMapFrame8", "QuestLogMapFrame9", "QuestLogNoQuestsText", "QuestLogQuestCount", "QuestLogScrollFrameButton10Check", "QuestLogScrollFrameButton10GroupMates", "QuestLogScrollFrameButton10Highlight", "QuestLogScrollFrameButton10NormalText", "QuestLogScrollFrameButton10Tag", "QuestLogScrollFrameButton11Check", "QuestLogScrollFrameButton11GroupMates", "QuestLogScrollFrameButton11Highlight", "QuestLogScrollFrameButton11NormalText", "QuestLogScrollFrameButton11Tag", "QuestLogScrollFrameButton12Check", "QuestLogScrollFrameButton12GroupMates", "QuestLogScrollFrameButton12Highlight", "QuestLogScrollFrameButton12NormalText", "QuestLogScrollFrameButton12Tag", "QuestLogScrollFrameButton13Check", "QuestLogScrollFrameButton13GroupMates", "QuestLogScrollFrameButton13Highlight", "QuestLogScrollFrameButton13NormalText", "QuestLogScrollFrameButton13Tag", "QuestLogScrollFrameButton14Check", "QuestLogScrollFrameButton14GroupMates", "QuestLogScrollFrameButton14Highlight", "QuestLogScrollFrameButton14NormalText", "QuestLogScrollFrameButton14Tag", "QuestLogScrollFrameButton15Check", "QuestLogScrollFrameButton15GroupMates", "QuestLogScrollFrameButton15Highlight", "QuestLogScrollFrameButton15NormalText", "QuestLogScrollFrameButton15Tag", "QuestLogScrollFrameButton16Check", "QuestLogScrollFrameButton16GroupMates", "QuestLogScrollFrameButton16Highlight", "QuestLogScrollFrameButton16NormalText", "QuestLogScrollFrameButton16Tag", "QuestLogScrollFrameButton17Check", "QuestLogScrollFrameButton17GroupMates", "QuestLogScrollFrameButton17Highlight", "QuestLogScrollFrameButton17NormalText", "QuestLogScrollFrameButton17Tag", "QuestLogScrollFrameButton18Check", "QuestLogScrollFrameButton18GroupMates", "QuestLogScrollFrameButton18Highlight", "QuestLogScrollFrameButton18NormalText", "QuestLogScrollFrameButton18Tag", "QuestLogScrollFrameButton19Check", "QuestLogScrollFrameButton19GroupMates", "QuestLogScrollFrameButton19Highlight", "QuestLogScrollFrameButton19NormalText", "QuestLogScrollFrameButton19Tag", "QuestLogScrollFrameButton1Check", "QuestLogScrollFrameButton1GroupMates", "QuestLogScrollFrameButton1Highlight", "QuestLogScrollFrameButton1NormalText", "QuestLogScrollFrameButton1Tag", "QuestLogScrollFrameButton20Check", "QuestLogScrollFrameButton20GroupMates", "QuestLogScrollFrameButton20Highlight", "QuestLogScrollFrameButton20NormalText", "QuestLogScrollFrameButton20Tag", "QuestLogScrollFrameButton21Check", "QuestLogScrollFrameButton21GroupMates", "QuestLogScrollFrameButton21Highlight", "QuestLogScrollFrameButton21NormalText", "QuestLogScrollFrameButton21Tag", "QuestLogScrollFrameButton22Check", "QuestLogScrollFrameButton22GroupMates", "QuestLogScrollFrameButton22Highlight", "QuestLogScrollFrameButton22NormalText", "QuestLogScrollFrameButton22Tag", "QuestLogScrollFrameButton2Check", "QuestLogScrollFrameButton2GroupMates", "QuestLogScrollFrameButton2Highlight", "QuestLogScrollFrameButton2NormalText", "QuestLogScrollFrameButton2Tag", "QuestLogScrollFrameButton3Check", "QuestLogScrollFrameButton3GroupMates", "QuestLogScrollFrameButton3Highlight", "QuestLogScrollFrameButton3NormalText", "QuestLogScrollFrameButton3Tag", "QuestLogScrollFrameButton4Check", "QuestLogScrollFrameButton4GroupMates", "QuestLogScrollFrameButton4Highlight", "QuestLogScrollFrameButton4NormalText", "QuestLogScrollFrameButton4Tag", "QuestLogScrollFrameButton5Check", "QuestLogScrollFrameButton5GroupMates", "QuestLogScrollFrameButton5Highlight", "QuestLogScrollFrameButton5NormalText", "QuestLogScrollFrameButton5Tag", "QuestLogScrollFrameButton6Check", "QuestLogScrollFrameButton6GroupMates", "QuestLogScrollFrameButton6Highlight", "QuestLogScrollFrameButton6NormalText", "QuestLogScrollFrameButton6Tag", "QuestLogScrollFrameButton7Check", "QuestLogScrollFrameButton7GroupMates", "QuestLogScrollFrameButton7Highlight", "QuestLogScrollFrameButton7NormalText", "QuestLogScrollFrameButton7Tag", "QuestLogScrollFrameButton8Check", "QuestLogScrollFrameButton8GroupMates", "QuestLogScrollFrameButton8Highlight", "QuestLogScrollFrameButton8NormalText", "QuestLogScrollFrameButton8Tag", "QuestLogScrollFrameButton9Check", "QuestLogScrollFrameButton9GroupMates", "QuestLogScrollFrameButton9Highlight", "QuestLogScrollFrameButton9NormalText", "QuestLogScrollFrameButton9Tag", "QuestLogScrollFrameScrollBarBG", "QuestLogScrollFrameScrollBarBottom", "QuestLogScrollFrameScrollBarMiddle", "QuestLogScrollFrameScrollBarThumbTexture", "QuestLogScrollFrameScrollBarTop", "QuestLogSkillHighlight", "QuestLogTitleText", "QuestProgressItem1Count", "QuestProgressItem1IconTexture", "QuestProgressItem1Name", "QuestProgressItem1NameFrame", "QuestProgressItem2Count", "QuestProgressItem2IconTexture", "QuestProgressItem2Name", "QuestProgressItem2NameFrame", "QuestProgressItem3Count", "QuestProgressItem3IconTexture", "QuestProgressItem3Name", "QuestProgressItem3NameFrame", "QuestProgressItem4Count", "QuestProgressItem4IconTexture", "QuestProgressItem4Name", "QuestProgressItem4NameFrame", "QuestProgressItem5Count", "QuestProgressItem5IconTexture", "QuestProgressItem5Name", "QuestProgressItem5NameFrame", "QuestProgressItem6Count", "QuestProgressItem6IconTexture", "QuestProgressItem6Name", "QuestProgressItem6NameFrame", "QuestProgressRequiredItemsText", "QuestProgressRequiredMoneyFrameCopperButtonText", "QuestProgressRequiredMoneyFrameGoldButtonText", "QuestProgressRequiredMoneyFrameSilverButtonText", "QuestProgressRequiredMoneyText", "QuestProgressScrollFrameScrollBarThumbTexture", "QuestProgressText", "QuestProgressTitleText", "QuestRewardScrollFrameScrollBarThumbTexture", "QuestTitleButton10QuestIcon", "QuestTitleButton11QuestIcon", "QuestTitleButton12QuestIcon", "QuestTitleButton13QuestIcon", "QuestTitleButton14QuestIcon", "QuestTitleButton15QuestIcon", "QuestTitleButton16QuestIcon", "QuestTitleButton17QuestIcon", "QuestTitleButton18QuestIcon", "QuestTitleButton19QuestIcon", "QuestTitleButton1QuestIcon", "QuestTitleButton20QuestIcon", "QuestTitleButton21QuestIcon", "QuestTitleButton22QuestIcon", "QuestTitleButton23QuestIcon", "QuestTitleButton24QuestIcon", "QuestTitleButton25QuestIcon", "QuestTitleButton26QuestIcon", "QuestTitleButton27QuestIcon", "QuestTitleButton28QuestIcon", "QuestTitleButton29QuestIcon", "QuestTitleButton2QuestIcon", "QuestTitleButton30QuestIcon", "QuestTitleButton31QuestIcon", "QuestTitleButton32QuestIcon", "QuestTitleButton3QuestIcon", "QuestTitleButton4QuestIcon", "QuestTitleButton5QuestIcon", "QuestTitleButton6QuestIcon", "QuestTitleButton7QuestIcon", "QuestTitleButton8QuestIcon", "QuestTitleButton9QuestIcon", "QuestTitleFont", "QuestTitleFontBlackShadow", "RaidBossEmoteFrameSlot1", "RaidBossEmoteFrameSlot2", "RaidClassButton10Count", "RaidClassButton10IconTexture", "RaidClassButton11Count", "RaidClassButton11IconTexture", "RaidClassButton12Count", "RaidClassButton12IconTexture", "RaidClassButton13Count", "RaidClassButton13IconTexture", "RaidClassButton1Count", "RaidClassButton1IconTexture", "RaidClassButton2Count", "RaidClassButton2IconTexture", "RaidClassButton3Count", "RaidClassButton3IconTexture", "RaidClassButton4Count", "RaidClassButton4IconTexture", "RaidClassButton5Count", "RaidClassButton5IconTexture", "RaidClassButton6Count", "RaidClassButton6IconTexture", "RaidClassButton7Count", "RaidClassButton7IconTexture", "RaidClassButton8Count", "RaidClassButton8IconTexture", "RaidClassButton9Count", "RaidClassButton9IconTexture", "RaidFrameConvertToRaidButtonText", "RaidFrameNotInRaidRaidBrowserButtonLeft", "RaidFrameNotInRaidRaidBrowserButtonMiddle", "RaidFrameNotInRaidRaidBrowserButtonRight", "RaidFrameNotInRaidRaidBrowserButtonText", "RaidFrameRaidBrowserButtonText", "RaidFrameRaidBrowserDescription", "RaidFrameRaidDescription", "RaidFrameRaidInfoButtonText", "RaidFrameReadyCheckButtonText", "RaidGroupButton10Class", "RaidGroupButton10Level", "RaidGroupButton10LootTexture", "RaidGroupButton10Name", "RaidGroupButton10RankTexture", "RaidGroupButton10ReadyCheckTexture", "RaidGroupButton10RoleTexture", "RaidGroupButton11Class", "RaidGroupButton11Level", "RaidGroupButton11LootTexture", "RaidGroupButton11Name", "RaidGroupButton11RankTexture", "RaidGroupButton11ReadyCheckTexture", "RaidGroupButton11RoleTexture", "RaidGroupButton12Class", "RaidGroupButton12Level", "RaidGroupButton12LootTexture", "RaidGroupButton12Name", "RaidGroupButton12RankTexture", "RaidGroupButton12ReadyCheckTexture", "RaidGroupButton12RoleTexture", "RaidGroupButton13Class", "RaidGroupButton13Level", "RaidGroupButton13LootTexture", "RaidGroupButton13Name", "RaidGroupButton13RankTexture", "RaidGroupButton13ReadyCheckTexture", "RaidGroupButton13RoleTexture", "RaidGroupButton14Class", "RaidGroupButton14Level", "RaidGroupButton14LootTexture", "RaidGroupButton14Name", "RaidGroupButton14RankTexture", "RaidGroupButton14ReadyCheckTexture", "RaidGroupButton14RoleTexture", "RaidGroupButton15Class", "RaidGroupButton15Level", "RaidGroupButton15LootTexture", "RaidGroupButton15Name", "RaidGroupButton15RankTexture", "RaidGroupButton15ReadyCheckTexture", "RaidGroupButton15RoleTexture", "RaidGroupButton16Class", "RaidGroupButton16Level", "RaidGroupButton16LootTexture", "RaidGroupButton16Name", "RaidGroupButton16RankTexture", "RaidGroupButton16ReadyCheckTexture", "RaidGroupButton16RoleTexture", "RaidGroupButton17Class", "RaidGroupButton17Level", "RaidGroupButton17LootTexture", "RaidGroupButton17Name", "RaidGroupButton17RankTexture", "RaidGroupButton17ReadyCheckTexture", "RaidGroupButton17RoleTexture", "RaidGroupButton18Class", "RaidGroupButton18Level", "RaidGroupButton18LootTexture", "RaidGroupButton18Name", "RaidGroupButton18RankTexture", "RaidGroupButton18ReadyCheckTexture", "RaidGroupButton18RoleTexture", "RaidGroupButton19Class", "RaidGroupButton19Level", "RaidGroupButton19LootTexture", "RaidGroupButton19Name", "RaidGroupButton19RankTexture", "RaidGroupButton19ReadyCheckTexture", "RaidGroupButton19RoleTexture", "RaidGroupButton1Class", "RaidGroupButton1Level", "RaidGroupButton1LootTexture", "RaidGroupButton1Name", "RaidGroupButton1RankTexture", "RaidGroupButton1ReadyCheckTexture", "RaidGroupButton1RoleTexture", "RaidGroupButton20Class", "RaidGroupButton20Level", "RaidGroupButton20LootTexture", "RaidGroupButton20Name", "RaidGroupButton20RankTexture", "RaidGroupButton20ReadyCheckTexture", "RaidGroupButton20RoleTexture", "RaidGroupButton21Class", "RaidGroupButton21Level", "RaidGroupButton21LootTexture", "RaidGroupButton21Name", "RaidGroupButton21RankTexture", "RaidGroupButton21ReadyCheckTexture", "RaidGroupButton21RoleTexture", "RaidGroupButton22Class", "RaidGroupButton22Level", "RaidGroupButton22LootTexture", "RaidGroupButton22Name", "RaidGroupButton22RankTexture", "RaidGroupButton22ReadyCheckTexture", "RaidGroupButton22RoleTexture", "RaidGroupButton23Class", "RaidGroupButton23Level", "RaidGroupButton23LootTexture", "RaidGroupButton23Name", "RaidGroupButton23RankTexture", "RaidGroupButton23ReadyCheckTexture", "RaidGroupButton23RoleTexture", "RaidGroupButton24Class", "RaidGroupButton24Level", "RaidGroupButton24LootTexture", "RaidGroupButton24Name", "RaidGroupButton24RankTexture", "RaidGroupButton24ReadyCheckTexture", "RaidGroupButton24RoleTexture", "RaidGroupButton25Class", "RaidGroupButton25Level", "RaidGroupButton25LootTexture", "RaidGroupButton25Name", "RaidGroupButton25RankTexture", "RaidGroupButton25ReadyCheckTexture", "RaidGroupButton25RoleTexture", "RaidGroupButton26Class", "RaidGroupButton26Level", "RaidGroupButton26LootTexture", "RaidGroupButton26Name", "RaidGroupButton26RankTexture", "RaidGroupButton26ReadyCheckTexture", "RaidGroupButton26RoleTexture", "RaidGroupButton27Class", "RaidGroupButton27Level", "RaidGroupButton27LootTexture", "RaidGroupButton27Name", "RaidGroupButton27RankTexture", "RaidGroupButton27ReadyCheckTexture", "RaidGroupButton27RoleTexture", "RaidGroupButton28Class", "RaidGroupButton28Level", "RaidGroupButton28LootTexture", "RaidGroupButton28Name", "RaidGroupButton28RankTexture", "RaidGroupButton28ReadyCheckTexture", "RaidGroupButton28RoleTexture", "RaidGroupButton29Class", "RaidGroupButton29Level", "RaidGroupButton29LootTexture", "RaidGroupButton29Name", "RaidGroupButton29RankTexture", "RaidGroupButton29ReadyCheckTexture", "RaidGroupButton29RoleTexture", "RaidGroupButton2Class", "RaidGroupButton2Level", "RaidGroupButton2LootTexture", "RaidGroupButton2Name", "RaidGroupButton2RankTexture", "RaidGroupButton2ReadyCheckTexture", "RaidGroupButton2RoleTexture", "RaidGroupButton30Class", "RaidGroupButton30Level", "RaidGroupButton30LootTexture", "RaidGroupButton30Name", "RaidGroupButton30RankTexture", "RaidGroupButton30ReadyCheckTexture", "RaidGroupButton30RoleTexture", "RaidGroupButton31Class", "RaidGroupButton31Level", "RaidGroupButton31LootTexture", "RaidGroupButton31Name", "RaidGroupButton31RankTexture", "RaidGroupButton31ReadyCheckTexture", "RaidGroupButton31RoleTexture", "RaidGroupButton32Class", "RaidGroupButton32Level", "RaidGroupButton32LootTexture", "RaidGroupButton32Name", "RaidGroupButton32RankTexture", "RaidGroupButton32ReadyCheckTexture", "RaidGroupButton32RoleTexture", "RaidGroupButton33Class", "RaidGroupButton33Level", "RaidGroupButton33LootTexture", "RaidGroupButton33Name", "RaidGroupButton33RankTexture", "RaidGroupButton33ReadyCheckTexture", "RaidGroupButton33RoleTexture", "RaidGroupButton34Class", "RaidGroupButton34Level", "RaidGroupButton34LootTexture", "RaidGroupButton34Name", "RaidGroupButton34RankTexture", "RaidGroupButton34ReadyCheckTexture", "RaidGroupButton34RoleTexture", "RaidGroupButton35Class", "RaidGroupButton35Level", "RaidGroupButton35LootTexture", "RaidGroupButton35Name", "RaidGroupButton35RankTexture", "RaidGroupButton35ReadyCheckTexture", "RaidGroupButton35RoleTexture", "RaidGroupButton36Class", "RaidGroupButton36Level", "RaidGroupButton36LootTexture", "RaidGroupButton36Name", "RaidGroupButton36RankTexture", "RaidGroupButton36ReadyCheckTexture", "RaidGroupButton36RoleTexture", "RaidGroupButton37Class", "RaidGroupButton37Level", "RaidGroupButton37LootTexture", "RaidGroupButton37Name", "RaidGroupButton37RankTexture", "RaidGroupButton37ReadyCheckTexture", "RaidGroupButton37RoleTexture", "RaidGroupButton38Class", "RaidGroupButton38Level", "RaidGroupButton38LootTexture", "RaidGroupButton38Name", "RaidGroupButton38RankTexture", "RaidGroupButton38ReadyCheckTexture", "RaidGroupButton38RoleTexture", "RaidGroupButton39Class", "RaidGroupButton39Level", "RaidGroupButton39LootTexture", "RaidGroupButton39Name", "RaidGroupButton39RankTexture", "RaidGroupButton39ReadyCheckTexture", "RaidGroupButton39RoleTexture", "RaidGroupButton3Class", "RaidGroupButton3Level", "RaidGroupButton3LootTexture", "RaidGroupButton3Name", "RaidGroupButton3RankTexture", "RaidGroupButton3ReadyCheckTexture", "RaidGroupButton3RoleTexture", "RaidGroupButton40Class", "RaidGroupButton40Level", "RaidGroupButton40LootTexture", "RaidGroupButton40Name", "RaidGroupButton40RankTexture", "RaidGroupButton40ReadyCheckTexture", "RaidGroupButton40RoleTexture", "RaidGroupButton4Class", "RaidGroupButton4Level", "RaidGroupButton4LootTexture", "RaidGroupButton4Name", "RaidGroupButton4RankTexture", "RaidGroupButton4ReadyCheckTexture", "RaidGroupButton4RoleTexture", "RaidGroupButton5Class", "RaidGroupButton5Level", "RaidGroupButton5LootTexture", "RaidGroupButton5Name", "RaidGroupButton5RankTexture", "RaidGroupButton5ReadyCheckTexture", "RaidGroupButton5RoleTexture", "RaidGroupButton6Class", "RaidGroupButton6Level", "RaidGroupButton6LootTexture", "RaidGroupButton6Name", "RaidGroupButton6RankTexture", "RaidGroupButton6ReadyCheckTexture", "RaidGroupButton6RoleTexture", "RaidGroupButton7Class", "RaidGroupButton7Level", "RaidGroupButton7LootTexture", "RaidGroupButton7Name", "RaidGroupButton7RankTexture", "RaidGroupButton7ReadyCheckTexture", "RaidGroupButton7RoleTexture", "RaidGroupButton8Class", "RaidGroupButton8Level", "RaidGroupButton8LootTexture", "RaidGroupButton8Name", "RaidGroupButton8RankTexture", "RaidGroupButton8ReadyCheckTexture", "RaidGroupButton8RoleTexture", "RaidGroupButton9Class", "RaidGroupButton9Level", "RaidGroupButton9LootTexture", "RaidGroupButton9Name", "RaidGroupButton9RankTexture", "RaidGroupButton9ReadyCheckTexture", "RaidGroupButton9RoleTexture", "RaidInfoCancelButtonLeft", "RaidInfoCancelButtonMiddle", "RaidInfoCancelButtonRight", "RaidInfoCancelButtonText", "RaidInfoDetailCorner", "RaidInfoDetailFooter", "RaidInfoDetailHeader", "RaidInfoExtendButtonLeft", "RaidInfoExtendButtonMiddle", "RaidInfoExtendButtonRight", "RaidInfoExtendButtonText", "RaidInfoFrameHeader", "RaidInfoFrameHeaderText", "RaidInfoIDLabelLeft", "RaidInfoIDLabelMiddle", "RaidInfoIDLabelRight", "RaidInfoInstanceLabelLeft", "RaidInfoInstanceLabelMiddle", "RaidInfoInstanceLabelRight", "RaidInfoScrollFrameButton1Difficulty", "RaidInfoScrollFrameButton1Extended", "RaidInfoScrollFrameButton1Name", "RaidInfoScrollFrameButton1Reset", "RaidInfoScrollFrameButton2Difficulty", "RaidInfoScrollFrameButton2Extended", "RaidInfoScrollFrameButton2Name", "RaidInfoScrollFrameButton2Reset", "RaidInfoScrollFrameButton3Difficulty", "RaidInfoScrollFrameButton3Extended", "RaidInfoScrollFrameButton3Name", "RaidInfoScrollFrameButton3Reset", "RaidInfoScrollFrameButton4Difficulty", "RaidInfoScrollFrameButton4Extended", "RaidInfoScrollFrameButton4Name", "RaidInfoScrollFrameButton4Reset", "RaidInfoScrollFrameButton5Difficulty", "RaidInfoScrollFrameButton5Extended", "RaidInfoScrollFrameButton5Name", "RaidInfoScrollFrameButton5Reset", "RaidInfoScrollFrameButton6Difficulty", "RaidInfoScrollFrameButton6Extended", "RaidInfoScrollFrameButton6Name", "RaidInfoScrollFrameButton6Reset", "RaidInfoScrollFrameButton7Difficulty", "RaidInfoScrollFrameButton7Extended", "RaidInfoScrollFrameButton7Name", "RaidInfoScrollFrameButton7Reset", "RaidInfoScrollFrameScrollBarBG", "RaidInfoScrollFrameScrollBarBottom", "RaidInfoScrollFrameScrollBarMiddle", "RaidInfoScrollFrameScrollBarThumbTexture", "RaidInfoScrollFrameScrollBarTop", "RaidWarningFrameSlot1", "RaidWarningFrameSlot2", "RatingMenuAge", "RatingMenuButtonOkayText", "RatingMenuDrugs", "RatingMenuFrameHeader", "RatingMenuFrameText", "RatingMenuViolence", "ReadyCheckFrameNoButtonText", "ReadyCheckFrameText", "ReadyCheckFrameYesButtonText", "ReadyCheckPortrait", "RecordLoopbackSoundButtonText", "RecordLoopbackSoundButtonTexture", "RegistrationText", "ReputationBar10Background", "ReputationBar10BottomLine", "ReputationBar10ExpandOrCollapseButtonHighlight", "ReputationBar10FactionName", "ReputationBar10LeftLine", "ReputationBar10ReputationBarAtWarHighlight1", "ReputationBar10ReputationBarAtWarHighlight2", "ReputationBar10ReputationBarFactionStanding", "ReputationBar10ReputationBarHighlight1", "ReputationBar10ReputationBarHighlight2", "ReputationBar10ReputationBarLeftTexture", "ReputationBar10ReputationBarRightTexture", "ReputationBar11Background", "ReputationBar11BottomLine", "ReputationBar11ExpandOrCollapseButtonHighlight", "ReputationBar11FactionName", "ReputationBar11LeftLine", "ReputationBar11ReputationBarAtWarHighlight1", "ReputationBar11ReputationBarAtWarHighlight2", "ReputationBar11ReputationBarFactionStanding", "ReputationBar11ReputationBarHighlight1", "ReputationBar11ReputationBarHighlight2", "ReputationBar11ReputationBarLeftTexture", "ReputationBar11ReputationBarRightTexture", "ReputationBar12Background", "ReputationBar12BottomLine", "ReputationBar12ExpandOrCollapseButtonHighlight", "ReputationBar12FactionName", "ReputationBar12LeftLine", "ReputationBar12ReputationBarAtWarHighlight1", "ReputationBar12ReputationBarAtWarHighlight2", "ReputationBar12ReputationBarFactionStanding", "ReputationBar12ReputationBarHighlight1", "ReputationBar12ReputationBarHighlight2", "ReputationBar12ReputationBarLeftTexture", "ReputationBar12ReputationBarRightTexture", "ReputationBar13Background", "ReputationBar13BottomLine", "ReputationBar13ExpandOrCollapseButtonHighlight", "ReputationBar13FactionName", "ReputationBar13LeftLine", "ReputationBar13ReputationBarAtWarHighlight1", "ReputationBar13ReputationBarAtWarHighlight2", "ReputationBar13ReputationBarFactionStanding", "ReputationBar13ReputationBarHighlight1", "ReputationBar13ReputationBarHighlight2", "ReputationBar13ReputationBarLeftTexture", "ReputationBar13ReputationBarRightTexture", "ReputationBar14Background", "ReputationBar14BottomLine", "ReputationBar14ExpandOrCollapseButtonHighlight", "ReputationBar14FactionName", "ReputationBar14LeftLine", "ReputationBar14ReputationBarAtWarHighlight1", "ReputationBar14ReputationBarAtWarHighlight2", "ReputationBar14ReputationBarFactionStanding", "ReputationBar14ReputationBarHighlight1", "ReputationBar14ReputationBarHighlight2", "ReputationBar14ReputationBarLeftTexture", "ReputationBar14ReputationBarRightTexture", "ReputationBar15Background", "ReputationBar15BottomLine", "ReputationBar15ExpandOrCollapseButtonHighlight", "ReputationBar15FactionName", "ReputationBar15LeftLine", "ReputationBar15ReputationBarAtWarHighlight1", "ReputationBar15ReputationBarAtWarHighlight2", "ReputationBar15ReputationBarFactionStanding", "ReputationBar15ReputationBarHighlight1", "ReputationBar15ReputationBarHighlight2", "ReputationBar15ReputationBarLeftTexture", "ReputationBar15ReputationBarRightTexture", "ReputationBar1Background", "ReputationBar1BottomLine", "ReputationBar1ExpandOrCollapseButtonHighlight", "ReputationBar1FactionName", "ReputationBar1LeftLine", "ReputationBar1ReputationBarAtWarHighlight1", "ReputationBar1ReputationBarAtWarHighlight2", "ReputationBar1ReputationBarFactionStanding", "ReputationBar1ReputationBarHighlight1", "ReputationBar1ReputationBarHighlight2", "ReputationBar1ReputationBarLeftTexture", "ReputationBar1ReputationBarRightTexture", "ReputationBar2Background", "ReputationBar2BottomLine", "ReputationBar2ExpandOrCollapseButtonHighlight", "ReputationBar2FactionName", "ReputationBar2LeftLine", "ReputationBar2ReputationBarAtWarHighlight1", "ReputationBar2ReputationBarAtWarHighlight2", "ReputationBar2ReputationBarFactionStanding", "ReputationBar2ReputationBarHighlight1", "ReputationBar2ReputationBarHighlight2", "ReputationBar2ReputationBarLeftTexture", "ReputationBar2ReputationBarRightTexture", "ReputationBar3Background", "ReputationBar3BottomLine", "ReputationBar3ExpandOrCollapseButtonHighlight", "ReputationBar3FactionName", "ReputationBar3LeftLine", "ReputationBar3ReputationBarAtWarHighlight1", "ReputationBar3ReputationBarAtWarHighlight2", "ReputationBar3ReputationBarFactionStanding", "ReputationBar3ReputationBarHighlight1", "ReputationBar3ReputationBarHighlight2", "ReputationBar3ReputationBarLeftTexture", "ReputationBar3ReputationBarRightTexture", "ReputationBar4Background", "ReputationBar4BottomLine", "ReputationBar4ExpandOrCollapseButtonHighlight", "ReputationBar4FactionName", "ReputationBar4LeftLine", "ReputationBar4ReputationBarAtWarHighlight1", "ReputationBar4ReputationBarAtWarHighlight2", "ReputationBar4ReputationBarFactionStanding", "ReputationBar4ReputationBarHighlight1", "ReputationBar4ReputationBarHighlight2", "ReputationBar4ReputationBarLeftTexture", "ReputationBar4ReputationBarRightTexture", "ReputationBar5Background", "ReputationBar5BottomLine", "ReputationBar5ExpandOrCollapseButtonHighlight", "ReputationBar5FactionName", "ReputationBar5LeftLine", "ReputationBar5ReputationBarAtWarHighlight1", "ReputationBar5ReputationBarAtWarHighlight2", "ReputationBar5ReputationBarFactionStanding", "ReputationBar5ReputationBarHighlight1", "ReputationBar5ReputationBarHighlight2", "ReputationBar5ReputationBarLeftTexture", "ReputationBar5ReputationBarRightTexture", "ReputationBar6Background", "ReputationBar6BottomLine", "ReputationBar6ExpandOrCollapseButtonHighlight", "ReputationBar6FactionName", "ReputationBar6LeftLine", "ReputationBar6ReputationBarAtWarHighlight1", "ReputationBar6ReputationBarAtWarHighlight2", "ReputationBar6ReputationBarFactionStanding", "ReputationBar6ReputationBarHighlight1", "ReputationBar6ReputationBarHighlight2", "ReputationBar6ReputationBarLeftTexture", "ReputationBar6ReputationBarRightTexture", "ReputationBar7Background", "ReputationBar7BottomLine", "ReputationBar7ExpandOrCollapseButtonHighlight", "ReputationBar7FactionName", "ReputationBar7LeftLine", "ReputationBar7ReputationBarAtWarHighlight1", "ReputationBar7ReputationBarAtWarHighlight2", "ReputationBar7ReputationBarFactionStanding", "ReputationBar7ReputationBarHighlight1", "ReputationBar7ReputationBarHighlight2", "ReputationBar7ReputationBarLeftTexture", "ReputationBar7ReputationBarRightTexture", "ReputationBar8Background", "ReputationBar8BottomLine", "ReputationBar8ExpandOrCollapseButtonHighlight", "ReputationBar8FactionName", "ReputationBar8LeftLine", "ReputationBar8ReputationBarAtWarHighlight1", "ReputationBar8ReputationBarAtWarHighlight2", "ReputationBar8ReputationBarFactionStanding", "ReputationBar8ReputationBarHighlight1", "ReputationBar8ReputationBarHighlight2", "ReputationBar8ReputationBarLeftTexture", "ReputationBar8ReputationBarRightTexture", "ReputationBar9Background", "ReputationBar9BottomLine", "ReputationBar9ExpandOrCollapseButtonHighlight", "ReputationBar9FactionName", "ReputationBar9LeftLine", "ReputationBar9ReputationBarAtWarHighlight1", "ReputationBar9ReputationBarAtWarHighlight2", "ReputationBar9ReputationBarFactionStanding", "ReputationBar9ReputationBarHighlight1", "ReputationBar9ReputationBarHighlight2", "ReputationBar9ReputationBarLeftTexture", "ReputationBar9ReputationBarRightTexture", "ReputationDetailAtWarCheckBoxText", "ReputationDetailCorner", "ReputationDetailDivider", "ReputationDetailFactionDescription", "ReputationDetailFactionName", "ReputationDetailFont", "ReputationDetailInactiveCheckBoxText", "ReputationDetailMainScreenCheckBoxText", "ReputationFrameFactionLabel", "ReputationFrameStandingLabel", "ReputationFrameTopTreeTexture", "ReputationFrameTopTreeTexture2", "ReputationListScrollFrameScrollBarThumbTexture", "ReputationWatchBarTexture0", "ReputationWatchBarTexture1", "ReputationWatchBarTexture2", "ReputationWatchBarTexture3", "ReputationWatchStatusBarBackground", "ReputationWatchStatusBarText", "ReputationXPBarTexture0", "ReputationXPBarTexture1", "ReputationXPBarTexture2", "ReputationXPBarTexture3", "RuneButtonIndividual1BorderTexture", "RuneButtonIndividual1Rune", "RuneButtonIndividual1ShineTexture", "RuneButtonIndividual2BorderTexture", "RuneButtonIndividual2Rune", "RuneButtonIndividual2ShineTexture", "RuneButtonIndividual3BorderTexture", "RuneButtonIndividual3Rune", "RuneButtonIndividual3ShineTexture", "RuneButtonIndividual4BorderTexture", "RuneButtonIndividual4Rune", "RuneButtonIndividual4ShineTexture", "RuneButtonIndividual5BorderTexture", "RuneButtonIndividual5Rune", "RuneButtonIndividual5ShineTexture", "RuneButtonIndividual6BorderTexture", "RuneButtonIndividual6Rune", "RuneButtonIndividual6ShineTexture", "ScorePlayerDropDownButtonDisabledTexture", "ScorePlayerDropDownButtonHighlightTexture", "ScorePlayerDropDownButtonNormalTexture", "ScorePlayerDropDownButtonPushedTexture", "ScorePlayerDropDownLeft", "ScorePlayerDropDownMiddle", "ScorePlayerDropDownRight", "ScorePlayerDropDownText", "SendMailAttachment10Count", "SendMailAttachment11Count", "SendMailAttachment12Count", "SendMailAttachment13Count", "SendMailAttachment14Count", "SendMailAttachment15Count", "SendMailAttachment16Count", "SendMailAttachment1Count", "SendMailAttachment2Count", "SendMailAttachment3Count", "SendMailAttachment4Count", "SendMailAttachment5Count", "SendMailAttachment6Count", "SendMailAttachment7Count", "SendMailAttachment8Count", "SendMailAttachment9Count", "SendMailCODButtonText", "SendMailCancelButtonText", "SendMailCostMoneyFrameCopperButtonText", "SendMailCostMoneyFrameGoldButtonText", "SendMailCostMoneyFrameSilverButtonText", "SendMailErrorCoin", "SendMailErrorText", "SendMailFrameLockSendMailBlackFilter", "SendMailHorizontalBarLeft", "SendMailHorizontalBarLeft2", "SendMailMailButtonText", "SendMailMoneyCopperLeft", "SendMailMoneyCopperMiddle", "SendMailMoneyCopperRight", "SendMailMoneyFrameCopperButtonText", "SendMailMoneyFrameGoldButtonText", "SendMailMoneyFrameSilverButtonText", "SendMailMoneyGoldLeft", "SendMailMoneyGoldMiddle", "SendMailMoneyGoldRight", "SendMailMoneySilverLeft", "SendMailMoneySilverMiddle", "SendMailMoneySilverRight", "SendMailMoneyText", "SendMailNameEditBoxLeft", "SendMailNameEditBoxMiddle", "SendMailNameEditBoxRight", "SendMailScrollFrameScrollBarThumbTexture", "SendMailSendMoneyButtonText", "SendMailSubjectEditBoxLeft", "SendMailSubjectEditBoxMiddle", "SendMailSubjectEditBoxRight", "SendMailTitleText", "SendScrollBarBackgroundTop", "SendStationeryBackgroundLeft", "SendStationeryBackgroundRight", "ShapeshiftBarLeft", "ShapeshiftBarMiddle", "ShapeshiftBarRight", "ShapeshiftButton10Border", "ShapeshiftButton10Count", "ShapeshiftButton10Flash", "ShapeshiftButton10HotKey", "ShapeshiftButton10Icon", "ShapeshiftButton10Name", "ShapeshiftButton10NormalTexture", "ShapeshiftButton1Border", "ShapeshiftButton1Count", "ShapeshiftButton1Flash", "ShapeshiftButton1HotKey", "ShapeshiftButton1Icon", "ShapeshiftButton1Name", "ShapeshiftButton1NormalTexture", "ShapeshiftButton2Border", "ShapeshiftButton2Count", "ShapeshiftButton2Flash", "ShapeshiftButton2HotKey", "ShapeshiftButton2Icon", "ShapeshiftButton2Name", "ShapeshiftButton2NormalTexture", "ShapeshiftButton3Border", "ShapeshiftButton3Count", "ShapeshiftButton3Flash", "ShapeshiftButton3HotKey", "ShapeshiftButton3Icon", "ShapeshiftButton3Name", "ShapeshiftButton3NormalTexture", "ShapeshiftButton4Border", "ShapeshiftButton4Count", "ShapeshiftButton4Flash", "ShapeshiftButton4HotKey", "ShapeshiftButton4Icon", "ShapeshiftButton4Name", "ShapeshiftButton4NormalTexture", "ShapeshiftButton5Border", "ShapeshiftButton5Count", "ShapeshiftButton5Flash", "ShapeshiftButton5HotKey", "ShapeshiftButton5Icon", "ShapeshiftButton5Name", "ShapeshiftButton5NormalTexture", "ShapeshiftButton6Border", "ShapeshiftButton6Count", "ShapeshiftButton6Flash", "ShapeshiftButton6HotKey", "ShapeshiftButton6Icon", "ShapeshiftButton6Name", "ShapeshiftButton6NormalTexture", "ShapeshiftButton7Border", "ShapeshiftButton7Count", "ShapeshiftButton7Flash", "ShapeshiftButton7HotKey", "ShapeshiftButton7Icon", "ShapeshiftButton7Name", "ShapeshiftButton7NormalTexture", "ShapeshiftButton8Border", "ShapeshiftButton8Count", "ShapeshiftButton8Flash", "ShapeshiftButton8HotKey", "ShapeshiftButton8Icon", "ShapeshiftButton8Name", "ShapeshiftButton8NormalTexture", "ShapeshiftButton9Border", "ShapeshiftButton9Count", "ShapeshiftButton9Flash", "ShapeshiftButton9HotKey", "ShapeshiftButton9Icon", "ShapeshiftButton9Name", "ShapeshiftButton9NormalTexture", "ShoppingTooltip1TextLeft1", "ShoppingTooltip1TextLeft2", "ShoppingTooltip1TextLeft3", "ShoppingTooltip1TextLeft4", "ShoppingTooltip1TextRight1", "ShoppingTooltip1TextRight2", "ShoppingTooltip1TextRight3", "ShoppingTooltip1TextRight4", "ShoppingTooltip1Texture1", "ShoppingTooltip1Texture2", "ShoppingTooltip1Texture3", "ShoppingTooltip2TextLeft1", "ShoppingTooltip2TextLeft2", "ShoppingTooltip2TextLeft3", "ShoppingTooltip2TextLeft4", "ShoppingTooltip2TextRight1", "ShoppingTooltip2TextRight2", "ShoppingTooltip2TextRight3", "ShoppingTooltip2TextRight4", "ShoppingTooltip2Texture1", "ShoppingTooltip2Texture2", "ShoppingTooltip2Texture3", "ShoppingTooltip3TextLeft1", "ShoppingTooltip3TextLeft2", "ShoppingTooltip3TextLeft3", "ShoppingTooltip3TextLeft4", "ShoppingTooltip3TextRight1", "ShoppingTooltip3TextRight2", "ShoppingTooltip3TextRight3", "ShoppingTooltip3TextRight4", "ShoppingTooltip3Texture1", "ShoppingTooltip3Texture2", "ShoppingTooltip3Texture3", "ShowAllSpellRanksCheckBoxText", "SkillDetailCostText", "SkillDetailDescriptionText", "SkillDetailScrollFrameScrollBarThumbTexture", "SkillDetailStatusBarBackground", "SkillDetailStatusBarBar", "SkillDetailStatusBarBorder", "SkillDetailStatusBarFillBar", "SkillDetailStatusBarSkillName", "SkillDetailStatusBarSkillRank", "SkillFrameCancelButtonText", "SkillFrameCollapseAllButtonNormalTexture", "SkillFrameExpandTabLeft", "SkillFrameExpandTabMiddle", "SkillFrameExpandTabRight", "SkillFrameHorizontalBarLeft", "SkillListScrollFrameScrollBarThumbTexture", "SkillRankFrame10Background", "SkillRankFrame10Bar", "SkillRankFrame10BorderHighlight", "SkillRankFrame10BorderNormal", "SkillRankFrame10FillBar", "SkillRankFrame10SkillName", "SkillRankFrame10SkillRank", "SkillRankFrame11Background", "SkillRankFrame11Bar", "SkillRankFrame11BorderHighlight", "SkillRankFrame11BorderNormal", "SkillRankFrame11FillBar", "SkillRankFrame11SkillName", "SkillRankFrame11SkillRank", "SkillRankFrame12Background", "SkillRankFrame12Bar", "SkillRankFrame12BorderHighlight", "SkillRankFrame12BorderNormal", "SkillRankFrame12FillBar", "SkillRankFrame12SkillName", "SkillRankFrame12SkillRank", "SkillRankFrame1Background", "SkillRankFrame1Bar", "SkillRankFrame1BorderHighlight", "SkillRankFrame1BorderNormal", "SkillRankFrame1FillBar", "SkillRankFrame1SkillName", "SkillRankFrame1SkillRank", "SkillRankFrame2Background", "SkillRankFrame2Bar", "SkillRankFrame2BorderHighlight", "SkillRankFrame2BorderNormal", "SkillRankFrame2FillBar", "SkillRankFrame2SkillName", "SkillRankFrame2SkillRank", "SkillRankFrame3Background", "SkillRankFrame3Bar", "SkillRankFrame3BorderHighlight", "SkillRankFrame3BorderNormal", "SkillRankFrame3FillBar", "SkillRankFrame3SkillName", "SkillRankFrame3SkillRank", "SkillRankFrame4Background", "SkillRankFrame4Bar", "SkillRankFrame4BorderHighlight", "SkillRankFrame4BorderNormal", "SkillRankFrame4FillBar", "SkillRankFrame4SkillName", "SkillRankFrame4SkillRank", "SkillRankFrame5Background", "SkillRankFrame5Bar", "SkillRankFrame5BorderHighlight", "SkillRankFrame5BorderNormal", "SkillRankFrame5FillBar", "SkillRankFrame5SkillName", "SkillRankFrame5SkillRank", "SkillRankFrame6Background", "SkillRankFrame6Bar", "SkillRankFrame6BorderHighlight", "SkillRankFrame6BorderNormal", "SkillRankFrame6FillBar", "SkillRankFrame6SkillName", "SkillRankFrame6SkillRank", "SkillRankFrame7Background", "SkillRankFrame7Bar", "SkillRankFrame7BorderHighlight", "SkillRankFrame7BorderNormal", "SkillRankFrame7FillBar", "SkillRankFrame7SkillName", "SkillRankFrame7SkillRank", "SkillRankFrame8Background", "SkillRankFrame8Bar", "SkillRankFrame8BorderHighlight", "SkillRankFrame8BorderNormal", "SkillRankFrame8FillBar", "SkillRankFrame8SkillName", "SkillRankFrame8SkillRank", "SkillRankFrame9Background", "SkillRankFrame9Bar", "SkillRankFrame9BorderHighlight", "SkillRankFrame9BorderNormal", "SkillRankFrame9FillBar", "SkillRankFrame9SkillName", "SkillRankFrame9SkillRank", "SkillTypeLabel10NormalTexture", "SkillTypeLabel11NormalTexture", "SkillTypeLabel12NormalTexture", "SkillTypeLabel1NormalTexture", "SkillTypeLabel2NormalTexture", "SkillTypeLabel3NormalTexture", "SkillTypeLabel4NormalTexture", "SkillTypeLabel5NormalTexture", "SkillTypeLabel6NormalTexture", "SkillTypeLabel7NormalTexture", "SkillTypeLabel8NormalTexture", "SkillTypeLabel9NormalTexture", "SlidingActionBarTexture0", "SlidingActionBarTexture1", "SmallTextTooltipText", "SpellBookFrameBotLeft", "SpellBookFrameBotRight", "SpellBookFrameIcon", "SpellBookFrameTopLeft", "SpellBookFrameTopRight", "SpellBookPageText", "SpellBookSkillLineTab1Flash", "SpellBookSkillLineTab2Flash", "SpellBookSkillLineTab3Flash", "SpellBookSkillLineTab4Flash", "SpellBookSkillLineTab5Flash", "SpellBookSkillLineTab6Flash", "SpellBookSkillLineTab7Flash", "SpellBookSkillLineTab8Flash", "SpellBookTitleText", "SpellButton10AutoCastable", "SpellButton10Background", "SpellButton10Highlight", "SpellButton10IconTexture", "SpellButton10NormalTexture", "SpellButton10SpellName", "SpellButton10SubSpellName", "SpellButton11AutoCastable", "SpellButton11Background", "SpellButton11Highlight", "SpellButton11IconTexture", "SpellButton11NormalTexture", "SpellButton11SpellName", "SpellButton11SubSpellName", "SpellButton12AutoCastable", "SpellButton12Background", "SpellButton12Highlight", "SpellButton12IconTexture", "SpellButton12NormalTexture", "SpellButton12SpellName", "SpellButton12SubSpellName", "SpellButton1AutoCastable", "SpellButton1Background", "SpellButton1Highlight", "SpellButton1IconTexture", "SpellButton1NormalTexture", "SpellButton1SpellName", "SpellButton1SubSpellName", "SpellButton2AutoCastable", "SpellButton2Background", "SpellButton2Highlight", "SpellButton2IconTexture", "SpellButton2NormalTexture", "SpellButton2SpellName", "SpellButton2SubSpellName", "SpellButton3AutoCastable", "SpellButton3Background", "SpellButton3Highlight", "SpellButton3IconTexture", "SpellButton3NormalTexture", "SpellButton3SpellName", "SpellButton3SubSpellName", "SpellButton4AutoCastable", "SpellButton4Background", "SpellButton4Highlight", "SpellButton4IconTexture", "SpellButton4NormalTexture", "SpellButton4SpellName", "SpellButton4SubSpellName", "SpellButton5AutoCastable", "SpellButton5Background", "SpellButton5Highlight", "SpellButton5IconTexture", "SpellButton5NormalTexture", "SpellButton5SpellName", "SpellButton5SubSpellName", "SpellButton6AutoCastable", "SpellButton6Background", "SpellButton6Highlight", "SpellButton6IconTexture", "SpellButton6NormalTexture", "SpellButton6SpellName", "SpellButton6SubSpellName", "SpellButton7AutoCastable", "SpellButton7Background", "SpellButton7Highlight", "SpellButton7IconTexture", "SpellButton7NormalTexture", "SpellButton7SpellName", "SpellButton7SubSpellName", "SpellButton8AutoCastable", "SpellButton8Background", "SpellButton8Highlight", "SpellButton8IconTexture", "SpellButton8NormalTexture", "SpellButton8SpellName", "SpellButton8SubSpellName", "SpellButton9AutoCastable", "SpellButton9Background", "SpellButton9Highlight", "SpellButton9IconTexture", "SpellButton9NormalTexture", "SpellButton9SpellName", "SpellButton9SubSpellName", "SpellFont_Small", "StackSplitCancelButtonText", "StackSplitOkayButtonText", "StackSplitText", "StaticPopup1AlertIcon", "StaticPopup1Button1Text", "StaticPopup1Button2Text", "StaticPopup1Button3Text", "StaticPopup1ItemFrameCount", "StaticPopup1ItemFrameIconTexture", "StaticPopup1ItemFrameNameFrame", "StaticPopup1ItemFrameNormalTexture", "StaticPopup1ItemFrameStock", "StaticPopup1ItemFrameText", "StaticPopup1MoneyFrameCopperButtonText", "StaticPopup1MoneyFrameGoldButtonText", "StaticPopup1MoneyFrameSilverButtonText", "StaticPopup1MoneyInputFrameCopperLeft", "StaticPopup1MoneyInputFrameCopperMiddle", "StaticPopup1MoneyInputFrameCopperRight", "StaticPopup1MoneyInputFrameGoldLeft", "StaticPopup1MoneyInputFrameGoldMiddle", "StaticPopup1MoneyInputFrameGoldRight", "StaticPopup1MoneyInputFrameSilverLeft", "StaticPopup1MoneyInputFrameSilverMiddle", "StaticPopup1MoneyInputFrameSilverRight", "StaticPopup1Text", "StaticPopup1WideEditBoxLeft", "StaticPopup1WideEditBoxRight", "StaticPopup2AlertIcon", "StaticPopup2Button1Text", "StaticPopup2Button2Text", "StaticPopup2Button3Text", "StaticPopup2ItemFrameCount", "StaticPopup2ItemFrameIconTexture", "StaticPopup2ItemFrameNameFrame", "StaticPopup2ItemFrameNormalTexture", "StaticPopup2ItemFrameStock", "StaticPopup2ItemFrameText", "StaticPopup2MoneyFrameCopperButtonText", "StaticPopup2MoneyFrameGoldButtonText", "StaticPopup2MoneyFrameSilverButtonText", "StaticPopup2MoneyInputFrameCopperLeft", "StaticPopup2MoneyInputFrameCopperMiddle", "StaticPopup2MoneyInputFrameCopperRight", "StaticPopup2MoneyInputFrameGoldLeft", "StaticPopup2MoneyInputFrameGoldMiddle", "StaticPopup2MoneyInputFrameGoldRight", "StaticPopup2MoneyInputFrameSilverLeft", "StaticPopup2MoneyInputFrameSilverMiddle", "StaticPopup2MoneyInputFrameSilverRight", "StaticPopup2Text", "StaticPopup2WideEditBoxLeft", "StaticPopup2WideEditBoxRight", "StaticPopup3AlertIcon", "StaticPopup3Button1Text", "StaticPopup3Button2Text", "StaticPopup3Button3Text", "StaticPopup3ItemFrameCount", "StaticPopup3ItemFrameIconTexture", "StaticPopup3ItemFrameNameFrame", "StaticPopup3ItemFrameNormalTexture", "StaticPopup3ItemFrameStock", "StaticPopup3ItemFrameText", "StaticPopup3MoneyFrameCopperButtonText", "StaticPopup3MoneyFrameGoldButtonText", "StaticPopup3MoneyFrameSilverButtonText", "StaticPopup3MoneyInputFrameCopperLeft", "StaticPopup3MoneyInputFrameCopperMiddle", "StaticPopup3MoneyInputFrameCopperRight", "StaticPopup3MoneyInputFrameGoldLeft", "StaticPopup3MoneyInputFrameGoldMiddle", "StaticPopup3MoneyInputFrameGoldRight", "StaticPopup3MoneyInputFrameSilverLeft", "StaticPopup3MoneyInputFrameSilverMiddle", "StaticPopup3MoneyInputFrameSilverRight", "StaticPopup3Text", "StaticPopup3WideEditBoxLeft", "StaticPopup3WideEditBoxRight", "StaticPopup4AlertIcon", "StaticPopup4Button1Text", "StaticPopup4Button2Text", "StaticPopup4Button3Text", "StaticPopup4ItemFrameCount", "StaticPopup4ItemFrameIconTexture", "StaticPopup4ItemFrameNameFrame", "StaticPopup4ItemFrameNormalTexture", "StaticPopup4ItemFrameStock", "StaticPopup4ItemFrameText", "StaticPopup4MoneyFrameCopperButtonText", "StaticPopup4MoneyFrameGoldButtonText", "StaticPopup4MoneyFrameSilverButtonText", "StaticPopup4MoneyInputFrameCopperLeft", "StaticPopup4MoneyInputFrameCopperMiddle", "StaticPopup4MoneyInputFrameCopperRight", "StaticPopup4MoneyInputFrameGoldLeft", "StaticPopup4MoneyInputFrameGoldMiddle", "StaticPopup4MoneyInputFrameGoldRight", "StaticPopup4MoneyInputFrameSilverLeft", "StaticPopup4MoneyInputFrameSilverMiddle", "StaticPopup4MoneyInputFrameSilverRight", "StaticPopup4Text", "StaticPopup4WideEditBoxLeft", "StaticPopup4WideEditBoxRight", "StationeryPopupButton1Icon", "StationeryPopupButton1MoneyFrameCopperButtonText", "StationeryPopupButton1MoneyFrameGoldButtonText", "StationeryPopupButton1MoneyFrameSilverButtonText", "StationeryPopupButton1Name", "StationeryPopupButton1NameFrame", "StationeryPopupButton2Icon", "StationeryPopupButton2MoneyFrameCopperButtonText", "StationeryPopupButton2MoneyFrameGoldButtonText", "StationeryPopupButton2MoneyFrameSilverButtonText", "StationeryPopupButton2Name", "StationeryPopupButton2NameFrame", "StationeryPopupButton3Icon", "StationeryPopupButton3MoneyFrameCopperButtonText", "StationeryPopupButton3MoneyFrameGoldButtonText", "StationeryPopupButton3MoneyFrameSilverButtonText", "StationeryPopupButton3Name", "StationeryPopupButton3NameFrame", "StationeryPopupButton4Icon", "StationeryPopupButton4MoneyFrameCopperButtonText", "StationeryPopupButton4MoneyFrameGoldButtonText", "StationeryPopupButton4MoneyFrameSilverButtonText", "StationeryPopupButton4Name", "StationeryPopupButton4NameFrame", "StationeryPopupButton5Icon", "StationeryPopupButton5MoneyFrameCopperButtonText", "StationeryPopupButton5MoneyFrameGoldButtonText", "StationeryPopupButton5MoneyFrameSilverButtonText", "StationeryPopupButton5Name", "StationeryPopupButton5NameFrame", "StationeryPopupCancelButtonText", "StationeryPopupOkayButtonText", "StationeryPopupScrollFrameScrollBarThumbTexture", "StatsFrameText", "StopwatchFrameBackgroundLeft", "StopwatchTabFrameLeft", "StopwatchTabFrameMiddle", "StopwatchTabFrameRight", "StopwatchTickerHour", "StopwatchTickerMinute", "StopwatchTickerSecond", "StopwatchTitle", "SubSpellFont", "SubZoneTextFont", "SubZoneTextString", "SystemFont_Huge1", "SystemFont_InverseShadow_Small", "SystemFont_Large", "SystemFont_Med1", "SystemFont_Med2", "SystemFont_Med3", "SystemFont_Outline", "SystemFont_OutlineThick_Huge2", "SystemFont_OutlineThick_Huge4", "SystemFont_OutlineThick_WTF", "SystemFont_Outline_Small", "SystemFont_Shadow_Huge1", "SystemFont_Shadow_Huge3", "SystemFont_Shadow_Large", "SystemFont_Shadow_Med1", "SystemFont_Shadow_Med2", "SystemFont_Shadow_Med3", "SystemFont_Shadow_Outline_Huge2", "SystemFont_Shadow_Small", "SystemFont_Small", "SystemFont_Tiny", "TabardFrameAcceptButtonText", "TabardFrameBackground", "TabardFrameCancelButtonText", "TabardFrameCostLabel", "TabardFrameCostMoneyFrameCopperButtonText", "TabardFrameCostMoneyFrameGoldButtonText", "TabardFrameCostMoneyFrameSilverButtonText", "TabardFrameCustomization1Left", "TabardFrameCustomization1Middle", "TabardFrameCustomization1Right", "TabardFrameCustomization1Text", "TabardFrameCustomization2Left", "TabardFrameCustomization2Middle", "TabardFrameCustomization2Right", "TabardFrameCustomization2Text", "TabardFrameCustomization3Left", "TabardFrameCustomization3Middle", "TabardFrameCustomization3Right", "TabardFrameCustomization3Text", "TabardFrameCustomization4Left", "TabardFrameCustomization4Middle", "TabardFrameCustomization4Right", "TabardFrameCustomization4Text", "TabardFrameCustomization5Left", "TabardFrameCustomization5Middle", "TabardFrameCustomization5Right", "TabardFrameCustomization5Text", "TabardFrameCustomizationBorder", "TabardFrameEmblemBottomLeft", "TabardFrameEmblemBottomRight", "TabardFrameEmblemTopLeft", "TabardFrameEmblemTopRight", "TabardFrameGreetingText", "TabardFrameMoneyFrameCopperButtonText", "TabardFrameMoneyFrameGoldButtonText", "TabardFrameMoneyFrameSilverButtonText", "TabardFrameNameText", "TabardFrameOuterFrameBottom", "TabardFrameOuterFrameBottomLeft", "TabardFrameOuterFrameBottomRight", "TabardFrameOuterFrameLeftBottom", "TabardFrameOuterFrameLeftTop", "TabardFrameOuterFrameRightBottom", "TabardFrameOuterFrameRightTop", "TabardFrameOuterFrameTop", "TabardFrameOuterFrameTopLeft", "TabardFrameOuterFrameTopRight", "TabardFramePortrait", "TargetFrameBackground", "TargetFrameDropDownButtonDisabledTexture", "TargetFrameDropDownButtonHighlightTexture", "TargetFrameDropDownButtonNormalTexture", "TargetFrameDropDownButtonPushedTexture", "TargetFrameDropDownLeft", "TargetFrameDropDownMiddle", "TargetFrameDropDownRight", "TargetFrameDropDownText", "TargetFrameFlash", "TargetFrameNameBackground", "TargetFrameNumericalThreatBG", "TargetFrameNumericalThreatValue", "TargetFramePortrait", "TargetFrameSpellBarBorder", "TargetFrameSpellBarBorderShield", "TargetFrameSpellBarFlash", "TargetFrameSpellBarIcon", "TargetFrameSpellBarSpark", "TargetFrameSpellBarText", "TargetFrameTextureFrameDeadText", "TargetFrameTextureFrameHealthBarText", "TargetFrameTextureFrameHighLevelTexture", "TargetFrameTextureFrameLeaderIcon", "TargetFrameTextureFrameLevelText", "TargetFrameTextureFrameManaBarText", "TargetFrameTextureFrameName", "TargetFrameTextureFramePVPIcon", "TargetFrameTextureFrameRaidTargetIcon", "TargetFrameTextureFrameTexture", "TargetFrameToTBackground", "TargetFrameToTDebuff1Border", "TargetFrameToTDebuff1Icon", "TargetFrameToTDebuff2Border", "TargetFrameToTDebuff2Icon", "TargetFrameToTDebuff3Border", "TargetFrameToTDebuff3Icon", "TargetFrameToTDebuff4Border", "TargetFrameToTDebuff4Icon", "TargetFrameToTPortrait", "TargetFrameToTTextureFrameDeadText", "TargetFrameToTTextureFrameName", "TargetFrameToTTextureFrameTexture", "TaxiMap", "TaxiMerchant", "TaxiPortrait", "TempEnchant1Border", "TempEnchant1Count", "TempEnchant1Duration", "TempEnchant1Icon", "TempEnchant2Border", "TempEnchant2Count", "TempEnchant2Duration", "TempEnchant2Icon", "TextStatusBarText", "TextStatusBarTextLarge", "TicketStatusFrameIcon", "TicketStatusTime", "TicketStatusTitleText", "TimeManagerAMPMDummyText", "TimeManagerAlarmAMPMDropDownButtonDisabledTexture", "TimeManagerAlarmAMPMDropDownButtonHighlightTexture", "TimeManagerAlarmAMPMDropDownButtonNormalTexture", "TimeManagerAlarmAMPMDropDownButtonPushedTexture", "TimeManagerAlarmAMPMDropDownLeft", "TimeManagerAlarmAMPMDropDownMiddle", "TimeManagerAlarmAMPMDropDownRight", "TimeManagerAlarmAMPMDropDownText", "TimeManagerAlarmEnabledButtonText", "TimeManagerAlarmFiredTexture", "TimeManagerAlarmHourDropDownButtonDisabledTexture", "TimeManagerAlarmHourDropDownButtonHighlightTexture", "TimeManagerAlarmHourDropDownButtonNormalTexture", "TimeManagerAlarmHourDropDownButtonPushedTexture", "TimeManagerAlarmHourDropDownLeft", "TimeManagerAlarmHourDropDownMiddle", "TimeManagerAlarmHourDropDownRight", "TimeManagerAlarmHourDropDownText", "TimeManagerAlarmMessageEditBoxLeft", "TimeManagerAlarmMessageEditBoxMiddle", "TimeManagerAlarmMessageEditBoxRight", "TimeManagerAlarmMessageLabel", "TimeManagerAlarmMinuteDropDownButtonDisabledTexture", "TimeManagerAlarmMinuteDropDownButtonHighlightTexture", "TimeManagerAlarmMinuteDropDownButtonNormalTexture", "TimeManagerAlarmMinuteDropDownButtonPushedTexture", "TimeManagerAlarmMinuteDropDownLeft", "TimeManagerAlarmMinuteDropDownMiddle", "TimeManagerAlarmMinuteDropDownRight", "TimeManagerAlarmMinuteDropDownText", "TimeManagerAlarmTimeLabel", "TimeManagerClockTicker", "TimeManagerFrameTicker", "TimeManagerGlobe", "TimeManagerLocalTimeCheckText", "TimeManagerMilitaryTimeCheckText", "TimeManagerStopwatchFrameBackground", "TimeManagerStopwatchFrameText", "TokenFrameCancelButtonText", "TokenFrameContainerButton10CategoryLeft", "TokenFrameContainerButton10CategoryRight", "TokenFrameContainerButton10Check", "TokenFrameContainerButton10Count", "TokenFrameContainerButton10ExpandIcon", "TokenFrameContainerButton10Highlight", "TokenFrameContainerButton10Icon", "TokenFrameContainerButton10Name", "TokenFrameContainerButton10Stripe", "TokenFrameContainerButton11CategoryLeft", "TokenFrameContainerButton11CategoryRight", "TokenFrameContainerButton11Check", "TokenFrameContainerButton11Count", "TokenFrameContainerButton11ExpandIcon", "TokenFrameContainerButton11Highlight", "TokenFrameContainerButton11Icon", "TokenFrameContainerButton11Name", "TokenFrameContainerButton11Stripe", "TokenFrameContainerButton12CategoryLeft", "TokenFrameContainerButton12CategoryRight", "TokenFrameContainerButton12Check", "TokenFrameContainerButton12Count", "TokenFrameContainerButton12ExpandIcon", "TokenFrameContainerButton12Highlight", "TokenFrameContainerButton12Icon", "TokenFrameContainerButton12Name", "TokenFrameContainerButton12Stripe", "TokenFrameContainerButton13CategoryLeft", "TokenFrameContainerButton13CategoryRight", "TokenFrameContainerButton13Check", "TokenFrameContainerButton13Count", "TokenFrameContainerButton13ExpandIcon", "TokenFrameContainerButton13Highlight", "TokenFrameContainerButton13Icon", "TokenFrameContainerButton13Name", "TokenFrameContainerButton13Stripe", "TokenFrameContainerButton14CategoryLeft", "TokenFrameContainerButton14CategoryRight", "TokenFrameContainerButton14Check", "TokenFrameContainerButton14Count", "TokenFrameContainerButton14ExpandIcon", "TokenFrameContainerButton14Highlight", "TokenFrameContainerButton14Icon", "TokenFrameContainerButton14Name", "TokenFrameContainerButton14Stripe", "TokenFrameContainerButton15CategoryLeft", "TokenFrameContainerButton15CategoryRight", "TokenFrameContainerButton15Check", "TokenFrameContainerButton15Count", "TokenFrameContainerButton15ExpandIcon", "TokenFrameContainerButton15Highlight", "TokenFrameContainerButton15Icon", "TokenFrameContainerButton15Name", "TokenFrameContainerButton15Stripe", "TokenFrameContainerButton16CategoryLeft", "TokenFrameContainerButton16CategoryRight", "TokenFrameContainerButton16Check", "TokenFrameContainerButton16Count", "TokenFrameContainerButton16ExpandIcon", "TokenFrameContainerButton16Highlight", "TokenFrameContainerButton16Icon", "TokenFrameContainerButton16Name", "TokenFrameContainerButton16Stripe", "TokenFrameContainerButton17CategoryLeft", "TokenFrameContainerButton17CategoryRight", "TokenFrameContainerButton17Check", "TokenFrameContainerButton17Count", "TokenFrameContainerButton17ExpandIcon", "TokenFrameContainerButton17Highlight", "TokenFrameContainerButton17Icon", "TokenFrameContainerButton17Name", "TokenFrameContainerButton17Stripe", "TokenFrameContainerButton18CategoryLeft", "TokenFrameContainerButton18CategoryRight", "TokenFrameContainerButton18Check", "TokenFrameContainerButton18Count", "TokenFrameContainerButton18ExpandIcon", "TokenFrameContainerButton18Highlight", "TokenFrameContainerButton18Icon", "TokenFrameContainerButton18Name", "TokenFrameContainerButton18Stripe", "TokenFrameContainerButton19CategoryLeft", "TokenFrameContainerButton19CategoryRight", "TokenFrameContainerButton19Check", "TokenFrameContainerButton19Count", "TokenFrameContainerButton19ExpandIcon", "TokenFrameContainerButton19Highlight", "TokenFrameContainerButton19Icon", "TokenFrameContainerButton19Name", "TokenFrameContainerButton19Stripe", "TokenFrameContainerButton1CategoryLeft", "TokenFrameContainerButton1CategoryRight", "TokenFrameContainerButton1Check", "TokenFrameContainerButton1Count", "TokenFrameContainerButton1ExpandIcon", "TokenFrameContainerButton1Highlight", "TokenFrameContainerButton1Icon", "TokenFrameContainerButton1Name", "TokenFrameContainerButton1Stripe", "TokenFrameContainerButton20CategoryLeft", "TokenFrameContainerButton20CategoryRight", "TokenFrameContainerButton20Check", "TokenFrameContainerButton20Count", "TokenFrameContainerButton20ExpandIcon", "TokenFrameContainerButton20Highlight", "TokenFrameContainerButton20Icon", "TokenFrameContainerButton20Name", "TokenFrameContainerButton20Stripe", "TokenFrameContainerButton21CategoryLeft", "TokenFrameContainerButton21CategoryRight", "TokenFrameContainerButton21Check", "TokenFrameContainerButton21Count", "TokenFrameContainerButton21ExpandIcon", "TokenFrameContainerButton21Highlight", "TokenFrameContainerButton21Icon", "TokenFrameContainerButton21Name", "TokenFrameContainerButton21Stripe", "TokenFrameContainerButton2CategoryLeft", "TokenFrameContainerButton2CategoryRight", "TokenFrameContainerButton2Check", "TokenFrameContainerButton2Count", "TokenFrameContainerButton2ExpandIcon", "TokenFrameContainerButton2Highlight", "TokenFrameContainerButton2Icon", "TokenFrameContainerButton2Name", "TokenFrameContainerButton2Stripe", "TokenFrameContainerButton3CategoryLeft", "TokenFrameContainerButton3CategoryRight", "TokenFrameContainerButton3Check", "TokenFrameContainerButton3Count", "TokenFrameContainerButton3ExpandIcon", "TokenFrameContainerButton3Highlight", "TokenFrameContainerButton3Icon", "TokenFrameContainerButton3Name", "TokenFrameContainerButton3Stripe", "TokenFrameContainerButton4CategoryLeft", "TokenFrameContainerButton4CategoryRight", "TokenFrameContainerButton4Check", "TokenFrameContainerButton4Count", "TokenFrameContainerButton4ExpandIcon", "TokenFrameContainerButton4Highlight", "TokenFrameContainerButton4Icon", "TokenFrameContainerButton4Name", "TokenFrameContainerButton4Stripe", "TokenFrameContainerButton5CategoryLeft", "TokenFrameContainerButton5CategoryRight", "TokenFrameContainerButton5Check", "TokenFrameContainerButton5Count", "TokenFrameContainerButton5ExpandIcon", "TokenFrameContainerButton5Highlight", "TokenFrameContainerButton5Icon", "TokenFrameContainerButton5Name", "TokenFrameContainerButton5Stripe", "TokenFrameContainerButton6CategoryLeft", "TokenFrameContainerButton6CategoryRight", "TokenFrameContainerButton6Check", "TokenFrameContainerButton6Count", "TokenFrameContainerButton6ExpandIcon", "TokenFrameContainerButton6Highlight", "TokenFrameContainerButton6Icon", "TokenFrameContainerButton6Name", "TokenFrameContainerButton6Stripe", "TokenFrameContainerButton7CategoryLeft", "TokenFrameContainerButton7CategoryRight", "TokenFrameContainerButton7Check", "TokenFrameContainerButton7Count", "TokenFrameContainerButton7ExpandIcon", "TokenFrameContainerButton7Highlight", "TokenFrameContainerButton7Icon", "TokenFrameContainerButton7Name", "TokenFrameContainerButton7Stripe", "TokenFrameContainerButton8CategoryLeft", "TokenFrameContainerButton8CategoryRight", "TokenFrameContainerButton8Check", "TokenFrameContainerButton8Count", "TokenFrameContainerButton8ExpandIcon", "TokenFrameContainerButton8Highlight", "TokenFrameContainerButton8Icon", "TokenFrameContainerButton8Name", "TokenFrameContainerButton8Stripe", "TokenFrameContainerButton9CategoryLeft", "TokenFrameContainerButton9CategoryRight", "TokenFrameContainerButton9Check", "TokenFrameContainerButton9Count", "TokenFrameContainerButton9ExpandIcon", "TokenFrameContainerButton9Highlight", "TokenFrameContainerButton9Icon", "TokenFrameContainerButton9Name", "TokenFrameContainerButton9Stripe", "TokenFrameContainerScrollBarBG", "TokenFrameContainerScrollBarBottom", "TokenFrameContainerScrollBarMiddle", "TokenFrameContainerScrollBarThumbTexture", "TokenFrameContainerScrollBarTop", "TokenFrameMoneyFrameCopperButtonText", "TokenFrameMoneyFrameGoldButtonText", "TokenFrameMoneyFrameSilverButtonText", "TokenFramePopupBackpackCheckBoxText", "TokenFramePopupCorner", "TokenFramePopupInactiveCheckBoxText", "TokenFramePopupTitle", "Tooltip_Med", "Tooltip_Small", "TotemFrameTotem1Background", "TotemFrameTotem1Duration", "TotemFrameTotem1IconTexture", "TotemFrameTotem2Background", "TotemFrameTotem2Duration", "TotemFrameTotem2IconTexture", "TotemFrameTotem3Background", "TotemFrameTotem3Duration", "TotemFrameTotem3IconTexture", "TotemFrameTotem4Background", "TotemFrameTotem4Duration", "TotemFrameTotem4IconTexture", "TradeFramePlayerEnchantText", "TradeFramePlayerNameText", "TradeFramePlayerPortrait", "TradeFrameRecipientEnchantText", "TradeFrameRecipientNameText", "TradeFrameRecipientPortrait", "TradeHighlightPlayerBottom", "TradeHighlightPlayerEnchantBottom", "TradeHighlightPlayerEnchantMiddle", "TradeHighlightPlayerEnchantTop", "TradeHighlightPlayerMiddle", "TradeHighlightPlayerTop", "TradeHighlightRecipientBottom", "TradeHighlightRecipientEnchantBottom", "TradeHighlightRecipientEnchantMiddle", "TradeHighlightRecipientEnchantTop", "TradeHighlightRecipientMiddle", "TradeHighlightRecipientTop", "TradePlayerInputMoneyFrameCopperLeft", "TradePlayerInputMoneyFrameCopperMiddle", "TradePlayerInputMoneyFrameCopperRight", "TradePlayerInputMoneyFrameGoldLeft", "TradePlayerInputMoneyFrameGoldMiddle", "TradePlayerInputMoneyFrameGoldRight", "TradePlayerInputMoneyFrameSilverLeft", "TradePlayerInputMoneyFrameSilverMiddle", "TradePlayerInputMoneyFrameSilverRight", "TradePlayerItem1ItemButtonCount", "TradePlayerItem1ItemButtonIconTexture", "TradePlayerItem1ItemButtonNormalTexture", "TradePlayerItem1ItemButtonStock", "TradePlayerItem1Name", "TradePlayerItem1NameFrame", "TradePlayerItem1SlotTexture", "TradePlayerItem2ItemButtonCount", "TradePlayerItem2ItemButtonIconTexture", "TradePlayerItem2ItemButtonNormalTexture", "TradePlayerItem2ItemButtonStock", "TradePlayerItem2Name", "TradePlayerItem2NameFrame", "TradePlayerItem2SlotTexture", "TradePlayerItem3ItemButtonCount", "TradePlayerItem3ItemButtonIconTexture", "TradePlayerItem3ItemButtonNormalTexture", "TradePlayerItem3ItemButtonStock", "TradePlayerItem3Name", "TradePlayerItem3NameFrame", "TradePlayerItem3SlotTexture", "TradePlayerItem4ItemButtonCount", "TradePlayerItem4ItemButtonIconTexture", "TradePlayerItem4ItemButtonNormalTexture", "TradePlayerItem4ItemButtonStock", "TradePlayerItem4Name", "TradePlayerItem4NameFrame", "TradePlayerItem4SlotTexture", "TradePlayerItem5ItemButtonCount", "TradePlayerItem5ItemButtonIconTexture", "TradePlayerItem5ItemButtonNormalTexture", "TradePlayerItem5ItemButtonStock", "TradePlayerItem5Name", "TradePlayerItem5NameFrame", "TradePlayerItem5SlotTexture", "TradePlayerItem6ItemButtonCount", "TradePlayerItem6ItemButtonIconTexture", "TradePlayerItem6ItemButtonNormalTexture", "TradePlayerItem6ItemButtonStock", "TradePlayerItem6Name", "TradePlayerItem6NameFrame", "TradePlayerItem6SlotTexture", "TradePlayerItem7ItemButtonCount", "TradePlayerItem7ItemButtonIconTexture", "TradePlayerItem7ItemButtonNormalTexture", "TradePlayerItem7ItemButtonStock", "TradePlayerItem7Name", "TradePlayerItem7NameFrame", "TradePlayerItem7SlotTexture", "TradeRecipientItem1ItemButtonCount", "TradeRecipientItem1ItemButtonIconTexture", "TradeRecipientItem1ItemButtonNormalTexture", "TradeRecipientItem1ItemButtonStock", "TradeRecipientItem1Name", "TradeRecipientItem1NameFrame", "TradeRecipientItem1SlotTexture", "TradeRecipientItem2ItemButtonCount", "TradeRecipientItem2ItemButtonIconTexture", "TradeRecipientItem2ItemButtonNormalTexture", "TradeRecipientItem2ItemButtonStock", "TradeRecipientItem2Name", "TradeRecipientItem2NameFrame", "TradeRecipientItem2SlotTexture", "TradeRecipientItem3ItemButtonCount", "TradeRecipientItem3ItemButtonIconTexture", "TradeRecipientItem3ItemButtonNormalTexture", "TradeRecipientItem3ItemButtonStock", "TradeRecipientItem3Name", "TradeRecipientItem3NameFrame", "TradeRecipientItem3SlotTexture", "TradeRecipientItem4ItemButtonCount", "TradeRecipientItem4ItemButtonIconTexture", "TradeRecipientItem4ItemButtonNormalTexture", "TradeRecipientItem4ItemButtonStock", "TradeRecipientItem4Name", "TradeRecipientItem4NameFrame", "TradeRecipientItem4SlotTexture", "TradeRecipientItem5ItemButtonCount", "TradeRecipientItem5ItemButtonIconTexture", "TradeRecipientItem5ItemButtonNormalTexture", "TradeRecipientItem5ItemButtonStock", "TradeRecipientItem5Name", "TradeRecipientItem5NameFrame", "TradeRecipientItem5SlotTexture", "TradeRecipientItem6ItemButtonCount", "TradeRecipientItem6ItemButtonIconTexture", "TradeRecipientItem6ItemButtonNormalTexture", "TradeRecipientItem6ItemButtonStock", "TradeRecipientItem6Name", "TradeRecipientItem6NameFrame", "TradeRecipientItem6SlotTexture", "TradeRecipientItem7ItemButtonCount", "TradeRecipientItem7ItemButtonIconTexture", "TradeRecipientItem7ItemButtonNormalTexture", "TradeRecipientItem7ItemButtonStock", "TradeRecipientItem7Name", "TradeRecipientItem7NameFrame", "TradeRecipientItem7SlotTexture", "TradeRecipientMoneyFrameCopperButtonText", "TradeRecipientMoneyFrameGoldButtonText", "TradeRecipientMoneyFrameSilverButtonText", "TutorialFrameAlertButtonBadgeText", "TutorialFrameArrowCurveDownLeft", "TutorialFrameArrowCurveDownRight", "TutorialFrameArrowCurveLeftDown", "TutorialFrameArrowCurveLeftUp", "TutorialFrameArrowCurveRightDown", "TutorialFrameArrowCurveRightUp", "TutorialFrameArrowCurveUpLeft", "TutorialFrameArrowCurveUpRight", "TutorialFrameArrowDown", "TutorialFrameArrowLeft", "TutorialFrameArrowRight", "TutorialFrameArrowUp", "TutorialFrameBackground", "TutorialFrameBottom", "TutorialFrameCallOutPulser", "TutorialFrameImage1", "TutorialFrameImage2", "TutorialFrameImage3", "TutorialFrameKey1", "TutorialFrameKey2", "TutorialFrameKey3", "TutorialFrameKey4", "TutorialFrameKeyString1", "TutorialFrameKeyString2", "TutorialFrameKeyString3", "TutorialFrameKeyString4", "TutorialFrameLeft1", "TutorialFrameLeft10", "TutorialFrameLeft11", "TutorialFrameLeft12", "TutorialFrameLeft13", "TutorialFrameLeft14", "TutorialFrameLeft15", "TutorialFrameLeft16", "TutorialFrameLeft17", "TutorialFrameLeft18", "TutorialFrameLeft19", "TutorialFrameLeft2", "TutorialFrameLeft20", "TutorialFrameLeft21", "TutorialFrameLeft22", "TutorialFrameLeft23", "TutorialFrameLeft24", "TutorialFrameLeft25", "TutorialFrameLeft26", "TutorialFrameLeft27", "TutorialFrameLeft28", "TutorialFrameLeft29", "TutorialFrameLeft3", "TutorialFrameLeft30", "TutorialFrameLeft4", "TutorialFrameLeft5", "TutorialFrameLeft6", "TutorialFrameLeft7", "TutorialFrameLeft8", "TutorialFrameLeft9", "TutorialFrameMouseBothClick", "TutorialFrameMouseLeftClick", "TutorialFrameMouseRightClick", "TutorialFrameMouseWheel", "TutorialFrameRight1", "TutorialFrameRight10", "TutorialFrameRight11", "TutorialFrameRight12", "TutorialFrameRight13", "TutorialFrameRight14", "TutorialFrameRight15", "TutorialFrameRight16", "TutorialFrameRight17", "TutorialFrameRight18", "TutorialFrameRight19", "TutorialFrameRight2", "TutorialFrameRight20", "TutorialFrameRight21", "TutorialFrameRight22", "TutorialFrameRight23", "TutorialFrameRight24", "TutorialFrameRight25", "TutorialFrameRight26", "TutorialFrameRight27", "TutorialFrameRight28", "TutorialFrameRight29", "TutorialFrameRight3", "TutorialFrameRight30", "TutorialFrameRight4", "TutorialFrameRight5", "TutorialFrameRight6", "TutorialFrameRight7", "TutorialFrameRight8", "TutorialFrameRight9", "TutorialFrameText", "TutorialFrameTextScrollFrameScrollBarThumbTexture", "TutorialFrameTitle", "TutorialFrameTop", "UpperBlackBar", "VehicleMenuBarActionButton1Border", "VehicleMenuBarActionButton1Count", "VehicleMenuBarActionButton1Flash", "VehicleMenuBarActionButton1HotKey", "VehicleMenuBarActionButton1Icon", "VehicleMenuBarActionButton1Name", "VehicleMenuBarActionButton1NormalTexture", "VehicleMenuBarActionButton2Border", "VehicleMenuBarActionButton2Count", "VehicleMenuBarActionButton2Flash", "VehicleMenuBarActionButton2HotKey", "VehicleMenuBarActionButton2Icon", "VehicleMenuBarActionButton2Name", "VehicleMenuBarActionButton2NormalTexture", "VehicleMenuBarActionButton3Border", "VehicleMenuBarActionButton3Count", "VehicleMenuBarActionButton3Flash", "VehicleMenuBarActionButton3HotKey", "VehicleMenuBarActionButton3Icon", "VehicleMenuBarActionButton3Name", "VehicleMenuBarActionButton3NormalTexture", "VehicleMenuBarActionButton4Border", "VehicleMenuBarActionButton4Count", "VehicleMenuBarActionButton4Flash", "VehicleMenuBarActionButton4HotKey", "VehicleMenuBarActionButton4Icon", "VehicleMenuBarActionButton4Name", "VehicleMenuBarActionButton4NormalTexture", "VehicleMenuBarActionButton5Border", "VehicleMenuBarActionButton5Count", "VehicleMenuBarActionButton5Flash", "VehicleMenuBarActionButton5HotKey", "VehicleMenuBarActionButton5Icon", "VehicleMenuBarActionButton5Name", "VehicleMenuBarActionButton5NormalTexture", "VehicleMenuBarActionButton6Border", "VehicleMenuBarActionButton6Count", "VehicleMenuBarActionButton6Flash", "VehicleMenuBarActionButton6HotKey", "VehicleMenuBarActionButton6Icon", "VehicleMenuBarActionButton6Name", "VehicleMenuBarActionButton6NormalTexture", "VehicleMenuBarArtFrameARTWORK1", "VehicleMenuBarArtFrameARTWORK10", "VehicleMenuBarArtFrameARTWORK2", "VehicleMenuBarArtFrameARTWORK3", "VehicleMenuBarArtFrameARTWORK4", "VehicleMenuBarArtFrameARTWORK5", "VehicleMenuBarArtFrameARTWORK6", "VehicleMenuBarArtFrameARTWORK7", "VehicleMenuBarArtFrameARTWORK8", "VehicleMenuBarArtFrameARTWORK9", "VehicleMenuBarArtFrameBACKGROUND1", "VehicleMenuBarArtFrameBACKGROUND2", "VehicleMenuBarArtFrameBACKGROUND3", "VehicleMenuBarArtFrameBORDER1", "VehicleMenuBarArtFrameBORDER2", "VehicleMenuBarArtFrameBORDER3", "VehicleMenuBarArtFrameBORDER4", "VehicleMenuBarArtFrameBORDER5", "VehicleMenuBarArtFrameBORDER6", "VehicleMenuBarArtFrameBORDER7", "VehicleMenuBarArtFrameOVERLAY1", "VehicleMenuBarArtFrameOVERLAY2", "VehicleMenuBarArtFrameOVERLAY3", "VehicleMenuBarArtFrameOVERLAY4", "VehicleMenuBarHealthBarBackground", "VehicleMenuBarHealthBarOverlay", "VehicleMenuBarHealthBarText", "VehicleMenuBarPitchSliderBG", "VehicleMenuBarPitchSliderMarker", "VehicleMenuBarPitchSliderOverlayThing", "VehicleMenuBarPowerBarBackground", "VehicleMenuBarPowerBarOverlay", "VehicleMenuBarPowerBarText", "VehicleMenuBarStatusBarText", "VehicleSeatIndicatorBackgroundTexture", "VehicleSeatIndicatorDropDownButtonDisabledTexture", "VehicleSeatIndicatorDropDownButtonHighlightTexture", "VehicleSeatIndicatorDropDownButtonNormalTexture", "VehicleSeatIndicatorDropDownButtonPushedTexture", "VehicleSeatIndicatorDropDownLeft", "VehicleSeatIndicatorDropDownMiddle", "VehicleSeatIndicatorDropDownRight", "VehicleSeatIndicatorDropDownText", "VideoOptionsEffectsPanelClutterDensityHigh", "VideoOptionsEffectsPanelClutterDensityLow", "VideoOptionsEffectsPanelClutterDensityText", "VideoOptionsEffectsPanelClutterDensityThumb", "VideoOptionsEffectsPanelClutterRadiusHigh", "VideoOptionsEffectsPanelClutterRadiusLow", "VideoOptionsEffectsPanelClutterRadiusText", "VideoOptionsEffectsPanelClutterRadiusThumb", "VideoOptionsEffectsPanelDeathEffectText", "VideoOptionsEffectsPanelEnvironmentDetailHigh", "VideoOptionsEffectsPanelEnvironmentDetailLow", "VideoOptionsEffectsPanelEnvironmentDetailText", "VideoOptionsEffectsPanelEnvironmentDetailThumb", "VideoOptionsEffectsPanelFullScreenGlowText", "VideoOptionsEffectsPanelParticleDensityHigh", "VideoOptionsEffectsPanelParticleDensityLow", "VideoOptionsEffectsPanelParticleDensityText", "VideoOptionsEffectsPanelParticleDensityThumb", "VideoOptionsEffectsPanelPlayerTextureHigh", "VideoOptionsEffectsPanelPlayerTextureLow", "VideoOptionsEffectsPanelPlayerTextureText", "VideoOptionsEffectsPanelPlayerTextureThumb", "VideoOptionsEffectsPanelProjectedTexturesText", "VideoOptionsEffectsPanelQualityLabel", "VideoOptionsEffectsPanelQualitySliderCustom", "VideoOptionsEffectsPanelQualitySliderHigh", "VideoOptionsEffectsPanelQualitySliderLow", "VideoOptionsEffectsPanelQualitySliderText", "VideoOptionsEffectsPanelQualitySliderThumb", "VideoOptionsEffectsPanelQualitySubText", "VideoOptionsEffectsPanelQualityTitle", "VideoOptionsEffectsPanelShadersTitle", "VideoOptionsEffectsPanelShadowQualityHigh", "VideoOptionsEffectsPanelShadowQualityLow", "VideoOptionsEffectsPanelShadowQualityText", "VideoOptionsEffectsPanelShadowQualityThumb", "VideoOptionsEffectsPanelSpecularLightingText", "VideoOptionsEffectsPanelSubText", "VideoOptionsEffectsPanelTerrainDetailHigh", "VideoOptionsEffectsPanelTerrainDetailLow", "VideoOptionsEffectsPanelTerrainDetailText", "VideoOptionsEffectsPanelTerrainDetailThumb", "VideoOptionsEffectsPanelTextureFilteringHigh", "VideoOptionsEffectsPanelTextureFilteringLow", "VideoOptionsEffectsPanelTextureFilteringText", "VideoOptionsEffectsPanelTextureFilteringThumb", "VideoOptionsEffectsPanelTextureResolutionHigh", "VideoOptionsEffectsPanelTextureResolutionLow", "VideoOptionsEffectsPanelTextureResolutionText", "VideoOptionsEffectsPanelTextureResolutionThumb", "VideoOptionsEffectsPanelTitle", "VideoOptionsEffectsPanelViewDistanceHigh", "VideoOptionsEffectsPanelViewDistanceLow", "VideoOptionsEffectsPanelViewDistanceText", "VideoOptionsEffectsPanelViewDistanceThumb", "VideoOptionsEffectsPanelWeatherIntensityHigh", "VideoOptionsEffectsPanelWeatherIntensityLow", "VideoOptionsEffectsPanelWeatherIntensityText", "VideoOptionsEffectsPanelWeatherIntensityThumb", "VideoOptionsFrameApplyText", "VideoOptionsFrameCancelText", "VideoOptionsFrameCategoryFrameBottom", "VideoOptionsFrameCategoryFrameBottomLeft", "VideoOptionsFrameCategoryFrameBottomRight", "VideoOptionsFrameCategoryFrameButton10Text", "VideoOptionsFrameCategoryFrameButton10ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton10ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton10TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton11Text", "VideoOptionsFrameCategoryFrameButton11ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton11ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton11TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton12Text", "VideoOptionsFrameCategoryFrameButton12ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton12ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton12TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton13Text", "VideoOptionsFrameCategoryFrameButton13ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton13ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton13TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton14Text", "VideoOptionsFrameCategoryFrameButton14ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton14ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton14TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton15Text", "VideoOptionsFrameCategoryFrameButton15ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton15ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton15TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton16Text", "VideoOptionsFrameCategoryFrameButton16ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton16ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton16TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton17Text", "VideoOptionsFrameCategoryFrameButton17ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton17ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton17TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton18Text", "VideoOptionsFrameCategoryFrameButton18ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton18ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton18TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton19Text", "VideoOptionsFrameCategoryFrameButton19ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton19ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton19TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton1Text", "VideoOptionsFrameCategoryFrameButton1ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton1ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton1TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton20Text", "VideoOptionsFrameCategoryFrameButton20ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton20ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton20TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton21Text", "VideoOptionsFrameCategoryFrameButton21ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton21ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton21TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton22Text", "VideoOptionsFrameCategoryFrameButton22ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton22ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton22TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton23Text", "VideoOptionsFrameCategoryFrameButton23ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton23ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton23TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton2Text", "VideoOptionsFrameCategoryFrameButton2ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton2ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton2TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton3Text", "VideoOptionsFrameCategoryFrameButton3ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton3ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton3TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton4Text", "VideoOptionsFrameCategoryFrameButton4ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton4ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton4TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton5Text", "VideoOptionsFrameCategoryFrameButton5ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton5ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton5TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton6Text", "VideoOptionsFrameCategoryFrameButton6ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton6ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton6TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton7Text", "VideoOptionsFrameCategoryFrameButton7ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton7ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton7TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton8Text", "VideoOptionsFrameCategoryFrameButton8ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton8ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton8TogglePushedTexture", "VideoOptionsFrameCategoryFrameButton9Text", "VideoOptionsFrameCategoryFrameButton9ToggleHighlightTexture", "VideoOptionsFrameCategoryFrameButton9ToggleNormalTexture", "VideoOptionsFrameCategoryFrameButton9TogglePushedTexture", "VideoOptionsFrameCategoryFrameLeft", "VideoOptionsFrameCategoryFrameListScrollBarThumbTexture", "VideoOptionsFrameCategoryFrameRight", "VideoOptionsFrameCategoryFrameTop", "VideoOptionsFrameCategoryFrameTopLeft", "VideoOptionsFrameCategoryFrameTopRight", "VideoOptionsFrameHeader", "VideoOptionsFrameHeaderText", "VideoOptionsFrameOkayText", "VideoOptionsResolutionPanelBrightnessGrayScale", "VideoOptionsResolutionPanelBrightnessTitle", "VideoOptionsResolutionPanelDesktopGammaText", "VideoOptionsResolutionPanelDisableResizeText", "VideoOptionsResolutionPanelFixInputLagText", "VideoOptionsResolutionPanelGammaSliderHigh", "VideoOptionsResolutionPanelGammaSliderLow", "VideoOptionsResolutionPanelGammaSliderText", "VideoOptionsResolutionPanelGammaSliderThumb", "VideoOptionsResolutionPanelHardwareCursorText", "VideoOptionsResolutionPanelMaximizedText", "VideoOptionsResolutionPanelMultiSampleDropDownButtonDisabledTexture", "VideoOptionsResolutionPanelMultiSampleDropDownButtonHighlightTexture", "VideoOptionsResolutionPanelMultiSampleDropDownButtonNormalTexture", "VideoOptionsResolutionPanelMultiSampleDropDownButtonPushedTexture", "VideoOptionsResolutionPanelMultiSampleDropDownLabel", "VideoOptionsResolutionPanelMultiSampleDropDownLeft", "VideoOptionsResolutionPanelMultiSampleDropDownMiddle", "VideoOptionsResolutionPanelMultiSampleDropDownRight", "VideoOptionsResolutionPanelMultiSampleDropDownText", "VideoOptionsResolutionPanelRefreshDropDownButtonDisabledTexture", "VideoOptionsResolutionPanelRefreshDropDownButtonHighlightTexture", "VideoOptionsResolutionPanelRefreshDropDownButtonNormalTexture", "VideoOptionsResolutionPanelRefreshDropDownButtonPushedTexture", "VideoOptionsResolutionPanelRefreshDropDownLabel", "VideoOptionsResolutionPanelRefreshDropDownLeft", "VideoOptionsResolutionPanelRefreshDropDownMiddle", "VideoOptionsResolutionPanelRefreshDropDownRight", "VideoOptionsResolutionPanelRefreshDropDownText", "VideoOptionsResolutionPanelResolutionDropDownButtonDisabledTexture", "VideoOptionsResolutionPanelResolutionDropDownButtonHighlightTexture", "VideoOptionsResolutionPanelResolutionDropDownButtonNormalTexture", "VideoOptionsResolutionPanelResolutionDropDownButtonPushedTexture", "VideoOptionsResolutionPanelResolutionDropDownLabel", "VideoOptionsResolutionPanelResolutionDropDownLeft", "VideoOptionsResolutionPanelResolutionDropDownMiddle", "VideoOptionsResolutionPanelResolutionDropDownRight", "VideoOptionsResolutionPanelResolutionDropDownText", "VideoOptionsResolutionPanelSubText", "VideoOptionsResolutionPanelTitle", "VideoOptionsResolutionPanelTripleBufferText", "VideoOptionsResolutionPanelUIScaleSliderHigh", "VideoOptionsResolutionPanelUIScaleSliderLow", "VideoOptionsResolutionPanelUIScaleSliderText", "VideoOptionsResolutionPanelUIScaleSliderThumb", "VideoOptionsResolutionPanelUseUIScaleText", "VideoOptionsResolutionPanelVSyncText", "VideoOptionsResolutionPanelWindowedText", "VideoOptionsStereoPanelConvergenceHigh", "VideoOptionsStereoPanelConvergenceLow", "VideoOptionsStereoPanelConvergenceText", "VideoOptionsStereoPanelConvergenceThumb", "VideoOptionsStereoPanelEnabledText", "VideoOptionsStereoPanelEyeSeparationHigh", "VideoOptionsStereoPanelEyeSeparationLow", "VideoOptionsStereoPanelEyeSeparationText", "VideoOptionsStereoPanelEyeSeparationThumb", "VideoOptionsStereoPanelHardwareCursorText", "VideoOptionsStereoPanelSubText", "VideoOptionsStereoPanelTitle", "VoiceChatShine", "VoiceChatTalkersButton1Text", "VoiceMacroMenuButton10ShortcutText", "VoiceMacroMenuButton11ShortcutText", "VoiceMacroMenuButton12ShortcutText", "VoiceMacroMenuButton13ShortcutText", "VoiceMacroMenuButton14ShortcutText", "VoiceMacroMenuButton15ShortcutText", "VoiceMacroMenuButton16ShortcutText", "VoiceMacroMenuButton17ShortcutText", "VoiceMacroMenuButton18ShortcutText", "VoiceMacroMenuButton19ShortcutText", "VoiceMacroMenuButton1ShortcutText", "VoiceMacroMenuButton20ShortcutText", "VoiceMacroMenuButton21ShortcutText", "VoiceMacroMenuButton22ShortcutText", "VoiceMacroMenuButton23ShortcutText", "VoiceMacroMenuButton24ShortcutText", "VoiceMacroMenuButton25ShortcutText", "VoiceMacroMenuButton26ShortcutText", "VoiceMacroMenuButton27ShortcutText", "VoiceMacroMenuButton28ShortcutText", "VoiceMacroMenuButton29ShortcutText", "VoiceMacroMenuButton2ShortcutText", "VoiceMacroMenuButton30ShortcutText", "VoiceMacroMenuButton31ShortcutText", "VoiceMacroMenuButton32ShortcutText", "VoiceMacroMenuButton3ShortcutText", "VoiceMacroMenuButton4ShortcutText", "VoiceMacroMenuButton5ShortcutText", "VoiceMacroMenuButton6ShortcutText", "VoiceMacroMenuButton7ShortcutText", "VoiceMacroMenuButton8ShortcutText", "VoiceMacroMenuButton9ShortcutText", "WatchFrameDropDownButtonDisabledTexture", "WatchFrameDropDownButtonHighlightTexture", "WatchFrameDropDownButtonNormalTexture", "WatchFrameDropDownButtonPushedTexture", "WatchFrameDropDownLeft", "WatchFrameDropDownMiddle", "WatchFrameDropDownRight", "WatchFrameDropDownText", "WatchFrameHeaderDropDownButtonDisabledTexture", "WatchFrameHeaderDropDownButtonHighlightTexture", "WatchFrameHeaderDropDownButtonNormalTexture", "WatchFrameHeaderDropDownButtonPushedTexture", "WatchFrameHeaderDropDownLeft", "WatchFrameHeaderDropDownMiddle", "WatchFrameHeaderDropDownRight", "WatchFrameHeaderDropDownText", "WatchFrameLine1Border", "WatchFrameLine1Dash", "WatchFrameLine1Icon", "WatchFrameLine1Text", "WatchFrameTitle", "WhoFrameAddFriendButtonText", "WhoFrameButton10Class", "WhoFrameButton10Level", "WhoFrameButton10Name", "WhoFrameButton10Variable", "WhoFrameButton11Class", "WhoFrameButton11Level", "WhoFrameButton11Name", "WhoFrameButton11Variable", "WhoFrameButton12Class", "WhoFrameButton12Level", "WhoFrameButton12Name", "WhoFrameButton12Variable", "WhoFrameButton13Class", "WhoFrameButton13Level", "WhoFrameButton13Name", "WhoFrameButton13Variable", "WhoFrameButton14Class", "WhoFrameButton14Level", "WhoFrameButton14Name", "WhoFrameButton14Variable", "WhoFrameButton15Class", "WhoFrameButton15Level", "WhoFrameButton15Name", "WhoFrameButton15Variable", "WhoFrameButton16Class", "WhoFrameButton16Level", "WhoFrameButton16Name", "WhoFrameButton16Variable", "WhoFrameButton17Class", "WhoFrameButton17Level", "WhoFrameButton17Name", "WhoFrameButton17Variable", "WhoFrameButton1Class", "WhoFrameButton1Level", "WhoFrameButton1Name", "WhoFrameButton1Variable", "WhoFrameButton2Class", "WhoFrameButton2Level", "WhoFrameButton2Name", "WhoFrameButton2Variable", "WhoFrameButton3Class", "WhoFrameButton3Level", "WhoFrameButton3Name", "WhoFrameButton3Variable", "WhoFrameButton4Class", "WhoFrameButton4Level", "WhoFrameButton4Name", "WhoFrameButton4Variable", "WhoFrameButton5Class", "WhoFrameButton5Level", "WhoFrameButton5Name", "WhoFrameButton5Variable", "WhoFrameButton6Class", "WhoFrameButton6Level", "WhoFrameButton6Name", "WhoFrameButton6Variable", "WhoFrameButton7Class", "WhoFrameButton7Level", "WhoFrameButton7Name", "WhoFrameButton7Variable", "WhoFrameButton8Class", "WhoFrameButton8Level", "WhoFrameButton8Name", "WhoFrameButton8Variable", "WhoFrameButton9Class", "WhoFrameButton9Level", "WhoFrameButton9Name", "WhoFrameButton9Variable", "WhoFrameColumnHeader1HighlightTexture", "WhoFrameColumnHeader1Left", "WhoFrameColumnHeader1Middle", "WhoFrameColumnHeader1Right", "WhoFrameColumnHeader2HighlightTexture", "WhoFrameColumnHeader2Left", "WhoFrameColumnHeader2Middle", "WhoFrameColumnHeader2Right", "WhoFrameColumnHeader3HighlightTexture", "WhoFrameColumnHeader3Left", "WhoFrameColumnHeader3Middle", "WhoFrameColumnHeader3Right", "WhoFrameColumnHeader4HighlightTexture", "WhoFrameColumnHeader4Left", "WhoFrameColumnHeader4Middle", "WhoFrameColumnHeader4Right", "WhoFrameDropDownButtonDisabledTexture", "WhoFrameDropDownButtonHighlightTexture", "WhoFrameDropDownButtonNormalTexture", "WhoFrameDropDownButtonPushedTexture", "WhoFrameDropDownHighlightTexture", "WhoFrameDropDownLeft", "WhoFrameDropDownMiddle", "WhoFrameDropDownRight", "WhoFrameDropDownText", "WhoFrameGroupInviteButtonText", "WhoFrameTotals", "WhoFrameWhoButtonText", "WhoListScrollFrameScrollBarThumbTexture", "WorldMapBlobFrameTexture", "WorldMapCompareTooltip1TextLeft1", "WorldMapCompareTooltip1TextLeft2", "WorldMapCompareTooltip1TextLeft3", "WorldMapCompareTooltip1TextLeft4", "WorldMapCompareTooltip1TextRight1", "WorldMapCompareTooltip1TextRight2", "WorldMapCompareTooltip1TextRight3", "WorldMapCompareTooltip1TextRight4", "WorldMapCompareTooltip1Texture1", "WorldMapCompareTooltip1Texture2", "WorldMapCompareTooltip1Texture3", "WorldMapCompareTooltip2TextLeft1", "WorldMapCompareTooltip2TextLeft2", "WorldMapCompareTooltip2TextLeft3", "WorldMapCompareTooltip2TextLeft4", "WorldMapCompareTooltip2TextRight1", "WorldMapCompareTooltip2TextRight2", "WorldMapCompareTooltip2TextRight3", "WorldMapCompareTooltip2TextRight4", "WorldMapCompareTooltip2Texture1", "WorldMapCompareTooltip2Texture2", "WorldMapCompareTooltip2Texture3", "WorldMapCompareTooltip3TextLeft1", "WorldMapCompareTooltip3TextLeft2", "WorldMapCompareTooltip3TextLeft3", "WorldMapCompareTooltip3TextLeft4", "WorldMapCompareTooltip3TextRight1", "WorldMapCompareTooltip3TextRight2", "WorldMapCompareTooltip3TextRight3", "WorldMapCompareTooltip3TextRight4", "WorldMapCompareTooltip3Texture1", "WorldMapCompareTooltip3Texture2", "WorldMapCompareTooltip3Texture3", "WorldMapContinentDropDownButtonDisabledTexture", "WorldMapContinentDropDownButtonHighlightTexture", "WorldMapContinentDropDownButtonNormalTexture", "WorldMapContinentDropDownButtonPushedTexture", "WorldMapContinentDropDownLeft", "WorldMapContinentDropDownMiddle", "WorldMapContinentDropDownRight", "WorldMapContinentDropDownText", "WorldMapDetailTile1", "WorldMapDetailTile10", "WorldMapDetailTile11", "WorldMapDetailTile12", "WorldMapDetailTile2", "WorldMapDetailTile3", "WorldMapDetailTile4", "WorldMapDetailTile5", "WorldMapDetailTile6", "WorldMapDetailTile7", "WorldMapDetailTile8", "WorldMapDetailTile9", "WorldMapFlag1Texture", "WorldMapFlag2Texture", "WorldMapFrameAreaDescription", "WorldMapFrameAreaLabel", "WorldMapFrameMiniBorderLeft", "WorldMapFrameMiniBorderRight", "WorldMapFrameTexture1", "WorldMapFrameTexture10", "WorldMapFrameTexture11", "WorldMapFrameTexture12", "WorldMapFrameTexture13", "WorldMapFrameTexture14", "WorldMapFrameTexture15", "WorldMapFrameTexture16", "WorldMapFrameTexture17", "WorldMapFrameTexture18", "WorldMapFrameTexture2", "WorldMapFrameTexture3", "WorldMapFrameTexture4", "WorldMapFrameTexture5", "WorldMapFrameTexture6", "WorldMapFrameTexture7", "WorldMapFrameTexture8", "WorldMapFrameTexture9", "WorldMapFrameTitle", "WorldMapHighlight", "WorldMapLevelDropDownButtonDisabledTexture", "WorldMapLevelDropDownButtonHighlightTexture", "WorldMapLevelDropDownButtonNormalTexture", "WorldMapLevelDropDownButtonPushedTexture", "WorldMapLevelDropDownLeft", "WorldMapLevelDropDownMiddle", "WorldMapLevelDropDownRight", "WorldMapLevelDropDownText", "WorldMapParty1Icon", "WorldMapParty2Icon", "WorldMapParty3Icon", "WorldMapParty4Icon", "WorldMapQuestDetailScrollFrameScrollBarThumbTexture", "WorldMapQuestDetailScrollFrameTrack", "WorldMapQuestFrame0Check", "WorldMapQuestFrame0Dashes", "WorldMapQuestFrame0Objectives", "WorldMapQuestFrame0Title", "WorldMapQuestHighlightBar", "WorldMapQuestRewardScrollFrameScrollBarThumbTexture", "WorldMapQuestRewardScrollFrameTrack", "WorldMapQuestScrollFrameScrollBarThumbTexture", "WorldMapQuestSelectBar", "WorldMapQuestShowObjectivesText", "WorldMapRaid10Icon", "WorldMapRaid11Icon", "WorldMapRaid12Icon", "WorldMapRaid13Icon", "WorldMapRaid14Icon", "WorldMapRaid15Icon", "WorldMapRaid16Icon", "WorldMapRaid17Icon", "WorldMapRaid18Icon", "WorldMapRaid19Icon", "WorldMapRaid1Icon", "WorldMapRaid20Icon", "WorldMapRaid21Icon", "WorldMapRaid22Icon", "WorldMapRaid23Icon", "WorldMapRaid24Icon", "WorldMapRaid25Icon", "WorldMapRaid26Icon", "WorldMapRaid27Icon", "WorldMapRaid28Icon", "WorldMapRaid29Icon", "WorldMapRaid2Icon", "WorldMapRaid30Icon", "WorldMapRaid31Icon", "WorldMapRaid32Icon", "WorldMapRaid33Icon", "WorldMapRaid34Icon", "WorldMapRaid35Icon", "WorldMapRaid36Icon", "WorldMapRaid37Icon", "WorldMapRaid38Icon", "WorldMapRaid39Icon", "WorldMapRaid3Icon", "WorldMapRaid40Icon", "WorldMapRaid4Icon", "WorldMapRaid5Icon", "WorldMapRaid6Icon", "WorldMapRaid7Icon", "WorldMapRaid8Icon", "WorldMapRaid9Icon", "WorldMapTextFont", "WorldMapTitleDropDownButtonDisabledTexture", "WorldMapTitleDropDownButtonHighlightTexture", "WorldMapTitleDropDownButtonNormalTexture", "WorldMapTitleDropDownButtonPushedTexture", "WorldMapTitleDropDownLeft", "WorldMapTitleDropDownMiddle", "WorldMapTitleDropDownRight", "WorldMapTitleDropDownText", "WorldMapTooltipStatusBarTexture", "WorldMapTooltipTextLeft1", "WorldMapTooltipTextLeft2", "WorldMapTooltipTextLeft3", "WorldMapTooltipTextLeft4", "WorldMapTooltipTextLeft5", "WorldMapTooltipTextLeft6", "WorldMapTooltipTextLeft7", "WorldMapTooltipTextLeft8", "WorldMapTooltipTextRight1", "WorldMapTooltipTextRight2", "WorldMapTooltipTextRight3", "WorldMapTooltipTextRight4", "WorldMapTooltipTextRight5", "WorldMapTooltipTextRight6", "WorldMapTooltipTextRight7", "WorldMapTooltipTextRight8", "WorldMapTooltipTexture1", "WorldMapTooltipTexture10", "WorldMapTooltipTexture2", "WorldMapTooltipTexture3", "WorldMapTooltipTexture4", "WorldMapTooltipTexture5", "WorldMapTooltipTexture6", "WorldMapTooltipTexture7", "WorldMapTooltipTexture8", "WorldMapTooltipTexture9", "WorldMapTrackQuestText", "WorldMapUnitDropDownButtonDisabledTexture", "WorldMapUnitDropDownButtonHighlightTexture", "WorldMapUnitDropDownButtonNormalTexture", "WorldMapUnitDropDownButtonPushedTexture", "WorldMapUnitDropDownLeft", "WorldMapUnitDropDownMiddle", "WorldMapUnitDropDownRight", "WorldMapUnitDropDownText", "WorldMapZoneDropDownButtonDisabledTexture", "WorldMapZoneDropDownButtonHighlightTexture", "WorldMapZoneDropDownButtonNormalTexture", "WorldMapZoneDropDownButtonPushedTexture", "WorldMapZoneDropDownLeft", "WorldMapZoneDropDownMiddle", "WorldMapZoneDropDownRight", "WorldMapZoneDropDownText", "WorldMapZoneInfo", "WorldMapZoneMinimapDropDownButtonDisabledTexture", "WorldMapZoneMinimapDropDownButtonHighlightTexture", "WorldMapZoneMinimapDropDownButtonNormalTexture", "WorldMapZoneMinimapDropDownButtonPushedTexture", "WorldMapZoneMinimapDropDownLeft", "WorldMapZoneMinimapDropDownMiddle", "WorldMapZoneMinimapDropDownRight", "WorldMapZoneMinimapDropDownText", "WorldMapZoomOutButtonText", "WorldStateScoreBattlegroundRunTime", "WorldStateScoreButton10ClassButtonIcon", "WorldStateScoreButton10Column1Icon", "WorldStateScoreButton10Column1Text", "WorldStateScoreButton10Column2Icon", "WorldStateScoreButton10Column2Text", "WorldStateScoreButton10Column3Icon", "WorldStateScoreButton10Column3Text", "WorldStateScoreButton10Column4Icon", "WorldStateScoreButton10Column4Text", "WorldStateScoreButton10Column5Icon", "WorldStateScoreButton10Column5Text", "WorldStateScoreButton10Column6Icon", "WorldStateScoreButton10Column6Text", "WorldStateScoreButton10Column7Icon", "WorldStateScoreButton10Column7Text", "WorldStateScoreButton10Damage", "WorldStateScoreButton10Deaths", "WorldStateScoreButton10FactionLeft", "WorldStateScoreButton10FactionRight", "WorldStateScoreButton10Healing", "WorldStateScoreButton10HonorGained", "WorldStateScoreButton10HonorableKills", "WorldStateScoreButton10KillingBlows", "WorldStateScoreButton10NameText", "WorldStateScoreButton10Team", "WorldStateScoreButton10TeamSkill", "WorldStateScoreButton11ClassButtonIcon", "WorldStateScoreButton11Column1Icon", "WorldStateScoreButton11Column1Text", "WorldStateScoreButton11Column2Icon", "WorldStateScoreButton11Column2Text", "WorldStateScoreButton11Column3Icon", "WorldStateScoreButton11Column3Text", "WorldStateScoreButton11Column4Icon", "WorldStateScoreButton11Column4Text", "WorldStateScoreButton11Column5Icon", "WorldStateScoreButton11Column5Text", "WorldStateScoreButton11Column6Icon", "WorldStateScoreButton11Column6Text", "WorldStateScoreButton11Column7Icon", "WorldStateScoreButton11Column7Text", "WorldStateScoreButton11Damage", "WorldStateScoreButton11Deaths", "WorldStateScoreButton11FactionLeft", "WorldStateScoreButton11FactionRight", "WorldStateScoreButton11Healing", "WorldStateScoreButton11HonorGained", "WorldStateScoreButton11HonorableKills", "WorldStateScoreButton11KillingBlows", "WorldStateScoreButton11NameText", "WorldStateScoreButton11Team", "WorldStateScoreButton11TeamSkill", "WorldStateScoreButton12ClassButtonIcon", "WorldStateScoreButton12Column1Icon", "WorldStateScoreButton12Column1Text", "WorldStateScoreButton12Column2Icon", "WorldStateScoreButton12Column2Text", "WorldStateScoreButton12Column3Icon", "WorldStateScoreButton12Column3Text", "WorldStateScoreButton12Column4Icon", "WorldStateScoreButton12Column4Text", "WorldStateScoreButton12Column5Icon", "WorldStateScoreButton12Column5Text", "WorldStateScoreButton12Column6Icon", "WorldStateScoreButton12Column6Text", "WorldStateScoreButton12Column7Icon", "WorldStateScoreButton12Column7Text", "WorldStateScoreButton12Damage", "WorldStateScoreButton12Deaths", "WorldStateScoreButton12FactionLeft", "WorldStateScoreButton12FactionRight", "WorldStateScoreButton12Healing", "WorldStateScoreButton12HonorGained", "WorldStateScoreButton12HonorableKills", "WorldStateScoreButton12KillingBlows", "WorldStateScoreButton12NameText", "WorldStateScoreButton12Team", "WorldStateScoreButton12TeamSkill", "WorldStateScoreButton13ClassButtonIcon", "WorldStateScoreButton13Column1Icon", "WorldStateScoreButton13Column1Text", "WorldStateScoreButton13Column2Icon", "WorldStateScoreButton13Column2Text", "WorldStateScoreButton13Column3Icon", "WorldStateScoreButton13Column3Text", "WorldStateScoreButton13Column4Icon", "WorldStateScoreButton13Column4Text", "WorldStateScoreButton13Column5Icon", "WorldStateScoreButton13Column5Text", "WorldStateScoreButton13Column6Icon", "WorldStateScoreButton13Column6Text", "WorldStateScoreButton13Column7Icon", "WorldStateScoreButton13Column7Text", "WorldStateScoreButton13Damage", "WorldStateScoreButton13Deaths", "WorldStateScoreButton13FactionLeft", "WorldStateScoreButton13FactionRight", "WorldStateScoreButton13Healing", "WorldStateScoreButton13HonorGained", "WorldStateScoreButton13HonorableKills", "WorldStateScoreButton13KillingBlows", "WorldStateScoreButton13NameText", "WorldStateScoreButton13Team", "WorldStateScoreButton13TeamSkill", "WorldStateScoreButton14ClassButtonIcon", "WorldStateScoreButton14Column1Icon", "WorldStateScoreButton14Column1Text", "WorldStateScoreButton14Column2Icon", "WorldStateScoreButton14Column2Text", "WorldStateScoreButton14Column3Icon", "WorldStateScoreButton14Column3Text", "WorldStateScoreButton14Column4Icon", "WorldStateScoreButton14Column4Text", "WorldStateScoreButton14Column5Icon", "WorldStateScoreButton14Column5Text", "WorldStateScoreButton14Column6Icon", "WorldStateScoreButton14Column6Text", "WorldStateScoreButton14Column7Icon", "WorldStateScoreButton14Column7Text", "WorldStateScoreButton14Damage", "WorldStateScoreButton14Deaths", "WorldStateScoreButton14FactionLeft", "WorldStateScoreButton14FactionRight", "WorldStateScoreButton14Healing", "WorldStateScoreButton14HonorGained", "WorldStateScoreButton14HonorableKills", "WorldStateScoreButton14KillingBlows", "WorldStateScoreButton14NameText", "WorldStateScoreButton14Team", "WorldStateScoreButton14TeamSkill", "WorldStateScoreButton15ClassButtonIcon", "WorldStateScoreButton15Column1Icon", "WorldStateScoreButton15Column1Text", "WorldStateScoreButton15Column2Icon", "WorldStateScoreButton15Column2Text", "WorldStateScoreButton15Column3Icon", "WorldStateScoreButton15Column3Text", "WorldStateScoreButton15Column4Icon", "WorldStateScoreButton15Column4Text", "WorldStateScoreButton15Column5Icon", "WorldStateScoreButton15Column5Text", "WorldStateScoreButton15Column6Icon", "WorldStateScoreButton15Column6Text", "WorldStateScoreButton15Column7Icon", "WorldStateScoreButton15Column7Text", "WorldStateScoreButton15Damage", "WorldStateScoreButton15Deaths", "WorldStateScoreButton15FactionLeft", "WorldStateScoreButton15FactionRight", "WorldStateScoreButton15Healing", "WorldStateScoreButton15HonorGained", "WorldStateScoreButton15HonorableKills", "WorldStateScoreButton15KillingBlows", "WorldStateScoreButton15NameText", "WorldStateScoreButton15Team", "WorldStateScoreButton15TeamSkill", "WorldStateScoreButton16ClassButtonIcon", "WorldStateScoreButton16Column1Icon", "WorldStateScoreButton16Column1Text", "WorldStateScoreButton16Column2Icon", "WorldStateScoreButton16Column2Text", "WorldStateScoreButton16Column3Icon", "WorldStateScoreButton16Column3Text", "WorldStateScoreButton16Column4Icon", "WorldStateScoreButton16Column4Text", "WorldStateScoreButton16Column5Icon", "WorldStateScoreButton16Column5Text", "WorldStateScoreButton16Column6Icon", "WorldStateScoreButton16Column6Text", "WorldStateScoreButton16Column7Icon", "WorldStateScoreButton16Column7Text", "WorldStateScoreButton16Damage", "WorldStateScoreButton16Deaths", "WorldStateScoreButton16FactionLeft", "WorldStateScoreButton16FactionRight", "WorldStateScoreButton16Healing", "WorldStateScoreButton16HonorGained", "WorldStateScoreButton16HonorableKills", "WorldStateScoreButton16KillingBlows", "WorldStateScoreButton16NameText", "WorldStateScoreButton16Team", "WorldStateScoreButton16TeamSkill", "WorldStateScoreButton17ClassButtonIcon", "WorldStateScoreButton17Column1Icon", "WorldStateScoreButton17Column1Text", "WorldStateScoreButton17Column2Icon", "WorldStateScoreButton17Column2Text", "WorldStateScoreButton17Column3Icon", "WorldStateScoreButton17Column3Text", "WorldStateScoreButton17Column4Icon", "WorldStateScoreButton17Column4Text", "WorldStateScoreButton17Column5Icon", "WorldStateScoreButton17Column5Text", "WorldStateScoreButton17Column6Icon", "WorldStateScoreButton17Column6Text", "WorldStateScoreButton17Column7Icon", "WorldStateScoreButton17Column7Text", "WorldStateScoreButton17Damage", "WorldStateScoreButton17Deaths", "WorldStateScoreButton17FactionLeft", "WorldStateScoreButton17FactionRight", "WorldStateScoreButton17Healing", "WorldStateScoreButton17HonorGained", "WorldStateScoreButton17HonorableKills", "WorldStateScoreButton17KillingBlows", "WorldStateScoreButton17NameText", "WorldStateScoreButton17Team", "WorldStateScoreButton17TeamSkill", "WorldStateScoreButton18ClassButtonIcon", "WorldStateScoreButton18Column1Icon", "WorldStateScoreButton18Column1Text", "WorldStateScoreButton18Column2Icon", "WorldStateScoreButton18Column2Text", "WorldStateScoreButton18Column3Icon", "WorldStateScoreButton18Column3Text", "WorldStateScoreButton18Column4Icon", "WorldStateScoreButton18Column4Text", "WorldStateScoreButton18Column5Icon", "WorldStateScoreButton18Column5Text", "WorldStateScoreButton18Column6Icon", "WorldStateScoreButton18Column6Text", "WorldStateScoreButton18Column7Icon", "WorldStateScoreButton18Column7Text", "WorldStateScoreButton18Damage", "WorldStateScoreButton18Deaths", "WorldStateScoreButton18FactionLeft", "WorldStateScoreButton18FactionRight", "WorldStateScoreButton18Healing", "WorldStateScoreButton18HonorGained", "WorldStateScoreButton18HonorableKills", "WorldStateScoreButton18KillingBlows", "WorldStateScoreButton18NameText", "WorldStateScoreButton18Team", "WorldStateScoreButton18TeamSkill", "WorldStateScoreButton19ClassButtonIcon", "WorldStateScoreButton19Column1Icon", "WorldStateScoreButton19Column1Text", "WorldStateScoreButton19Column2Icon", "WorldStateScoreButton19Column2Text", "WorldStateScoreButton19Column3Icon", "WorldStateScoreButton19Column3Text", "WorldStateScoreButton19Column4Icon", "WorldStateScoreButton19Column4Text", "WorldStateScoreButton19Column5Icon", "WorldStateScoreButton19Column5Text", "WorldStateScoreButton19Column6Icon", "WorldStateScoreButton19Column6Text", "WorldStateScoreButton19Column7Icon", "WorldStateScoreButton19Column7Text", "WorldStateScoreButton19Damage", "WorldStateScoreButton19Deaths", "WorldStateScoreButton19FactionLeft", "WorldStateScoreButton19FactionRight", "WorldStateScoreButton19Healing", "WorldStateScoreButton19HonorGained", "WorldStateScoreButton19HonorableKills", "WorldStateScoreButton19KillingBlows", "WorldStateScoreButton19NameText", "WorldStateScoreButton19Team", "WorldStateScoreButton19TeamSkill", "WorldStateScoreButton1ClassButtonIcon", "WorldStateScoreButton1Column1Icon", "WorldStateScoreButton1Column1Text", "WorldStateScoreButton1Column2Icon", "WorldStateScoreButton1Column2Text", "WorldStateScoreButton1Column3Icon", "WorldStateScoreButton1Column3Text", "WorldStateScoreButton1Column4Icon", "WorldStateScoreButton1Column4Text", "WorldStateScoreButton1Column5Icon", "WorldStateScoreButton1Column5Text", "WorldStateScoreButton1Column6Icon", "WorldStateScoreButton1Column6Text", "WorldStateScoreButton1Column7Icon", "WorldStateScoreButton1Column7Text", "WorldStateScoreButton1Damage", "WorldStateScoreButton1Deaths", "WorldStateScoreButton1FactionLeft", "WorldStateScoreButton1FactionRight", "WorldStateScoreButton1Healing", "WorldStateScoreButton1HonorGained", "WorldStateScoreButton1HonorableKills", "WorldStateScoreButton1KillingBlows", "WorldStateScoreButton1NameText", "WorldStateScoreButton1Team", "WorldStateScoreButton1TeamSkill", "WorldStateScoreButton20ClassButtonIcon", "WorldStateScoreButton20Column1Icon", "WorldStateScoreButton20Column1Text", "WorldStateScoreButton20Column2Icon", "WorldStateScoreButton20Column2Text", "WorldStateScoreButton20Column3Icon", "WorldStateScoreButton20Column3Text", "WorldStateScoreButton20Column4Icon", "WorldStateScoreButton20Column4Text", "WorldStateScoreButton20Column5Icon", "WorldStateScoreButton20Column5Text", "WorldStateScoreButton20Column6Icon", "WorldStateScoreButton20Column6Text", "WorldStateScoreButton20Column7Icon", "WorldStateScoreButton20Column7Text", "WorldStateScoreButton20Damage", "WorldStateScoreButton20Deaths", "WorldStateScoreButton20FactionLeft", "WorldStateScoreButton20FactionRight", "WorldStateScoreButton20Healing", "WorldStateScoreButton20HonorGained", "WorldStateScoreButton20HonorableKills", "WorldStateScoreButton20KillingBlows", "WorldStateScoreButton20NameText", "WorldStateScoreButton20Team", "WorldStateScoreButton20TeamSkill", "WorldStateScoreButton2ClassButtonIcon", "WorldStateScoreButton2Column1Icon", "WorldStateScoreButton2Column1Text", "WorldStateScoreButton2Column2Icon", "WorldStateScoreButton2Column2Text", "WorldStateScoreButton2Column3Icon", "WorldStateScoreButton2Column3Text", "WorldStateScoreButton2Column4Icon", "WorldStateScoreButton2Column4Text", "WorldStateScoreButton2Column5Icon", "WorldStateScoreButton2Column5Text", "WorldStateScoreButton2Column6Icon", "WorldStateScoreButton2Column6Text", "WorldStateScoreButton2Column7Icon", "WorldStateScoreButton2Column7Text", "WorldStateScoreButton2Damage", "WorldStateScoreButton2Deaths", "WorldStateScoreButton2FactionLeft", "WorldStateScoreButton2FactionRight", "WorldStateScoreButton2Healing", "WorldStateScoreButton2HonorGained", "WorldStateScoreButton2HonorableKills", "WorldStateScoreButton2KillingBlows", "WorldStateScoreButton2NameText", "WorldStateScoreButton2Team", "WorldStateScoreButton2TeamSkill", "WorldStateScoreButton3ClassButtonIcon", "WorldStateScoreButton3Column1Icon", "WorldStateScoreButton3Column1Text", "WorldStateScoreButton3Column2Icon", "WorldStateScoreButton3Column2Text", "WorldStateScoreButton3Column3Icon", "WorldStateScoreButton3Column3Text", "WorldStateScoreButton3Column4Icon", "WorldStateScoreButton3Column4Text", "WorldStateScoreButton3Column5Icon", "WorldStateScoreButton3Column5Text", "WorldStateScoreButton3Column6Icon", "WorldStateScoreButton3Column6Text", "WorldStateScoreButton3Column7Icon", "WorldStateScoreButton3Column7Text", "WorldStateScoreButton3Damage", "WorldStateScoreButton3Deaths", "WorldStateScoreButton3FactionLeft", "WorldStateScoreButton3FactionRight", "WorldStateScoreButton3Healing", "WorldStateScoreButton3HonorGained", "WorldStateScoreButton3HonorableKills", "WorldStateScoreButton3KillingBlows", "WorldStateScoreButton3NameText", "WorldStateScoreButton3Team", "WorldStateScoreButton3TeamSkill", "WorldStateScoreButton4ClassButtonIcon", "WorldStateScoreButton4Column1Icon", "WorldStateScoreButton4Column1Text", "WorldStateScoreButton4Column2Icon", "WorldStateScoreButton4Column2Text", "WorldStateScoreButton4Column3Icon", "WorldStateScoreButton4Column3Text", "WorldStateScoreButton4Column4Icon", "WorldStateScoreButton4Column4Text", "WorldStateScoreButton4Column5Icon", "WorldStateScoreButton4Column5Text", "WorldStateScoreButton4Column6Icon", "WorldStateScoreButton4Column6Text", "WorldStateScoreButton4Column7Icon", "WorldStateScoreButton4Column7Text", "WorldStateScoreButton4Damage", "WorldStateScoreButton4Deaths", "WorldStateScoreButton4FactionLeft", "WorldStateScoreButton4FactionRight", "WorldStateScoreButton4Healing", "WorldStateScoreButton4HonorGained", "WorldStateScoreButton4HonorableKills", "WorldStateScoreButton4KillingBlows", "WorldStateScoreButton4NameText", "WorldStateScoreButton4Team", "WorldStateScoreButton4TeamSkill", "WorldStateScoreButton5ClassButtonIcon", "WorldStateScoreButton5Column1Icon", "WorldStateScoreButton5Column1Text", "WorldStateScoreButton5Column2Icon", "WorldStateScoreButton5Column2Text", "WorldStateScoreButton5Column3Icon", "WorldStateScoreButton5Column3Text", "WorldStateScoreButton5Column4Icon", "WorldStateScoreButton5Column4Text", "WorldStateScoreButton5Column5Icon", "WorldStateScoreButton5Column5Text", "WorldStateScoreButton5Column6Icon", "WorldStateScoreButton5Column6Text", "WorldStateScoreButton5Column7Icon", "WorldStateScoreButton5Column7Text", "WorldStateScoreButton5Damage", "WorldStateScoreButton5Deaths", "WorldStateScoreButton5FactionLeft", "WorldStateScoreButton5FactionRight", "WorldStateScoreButton5Healing", "WorldStateScoreButton5HonorGained", "WorldStateScoreButton5HonorableKills", "WorldStateScoreButton5KillingBlows", "WorldStateScoreButton5NameText", "WorldStateScoreButton5Team", "WorldStateScoreButton5TeamSkill", "WorldStateScoreButton6ClassButtonIcon", "WorldStateScoreButton6Column1Icon", "WorldStateScoreButton6Column1Text", "WorldStateScoreButton6Column2Icon", "WorldStateScoreButton6Column2Text", "WorldStateScoreButton6Column3Icon", "WorldStateScoreButton6Column3Text", "WorldStateScoreButton6Column4Icon", "WorldStateScoreButton6Column4Text", "WorldStateScoreButton6Column5Icon", "WorldStateScoreButton6Column5Text", "WorldStateScoreButton6Column6Icon", "WorldStateScoreButton6Column6Text", "WorldStateScoreButton6Column7Icon", "WorldStateScoreButton6Column7Text", "WorldStateScoreButton6Damage", "WorldStateScoreButton6Deaths", "WorldStateScoreButton6FactionLeft", "WorldStateScoreButton6FactionRight", "WorldStateScoreButton6Healing", "WorldStateScoreButton6HonorGained", "WorldStateScoreButton6HonorableKills", "WorldStateScoreButton6KillingBlows", "WorldStateScoreButton6NameText", "WorldStateScoreButton6Team", "WorldStateScoreButton6TeamSkill", "WorldStateScoreButton7ClassButtonIcon", "WorldStateScoreButton7Column1Icon", "WorldStateScoreButton7Column1Text", "WorldStateScoreButton7Column2Icon", "WorldStateScoreButton7Column2Text", "WorldStateScoreButton7Column3Icon", "WorldStateScoreButton7Column3Text", "WorldStateScoreButton7Column4Icon", "WorldStateScoreButton7Column4Text", "WorldStateScoreButton7Column5Icon", "WorldStateScoreButton7Column5Text", "WorldStateScoreButton7Column6Icon", "WorldStateScoreButton7Column6Text", "WorldStateScoreButton7Column7Icon", "WorldStateScoreButton7Column7Text", "WorldStateScoreButton7Damage", "WorldStateScoreButton7Deaths", "WorldStateScoreButton7FactionLeft", "WorldStateScoreButton7FactionRight", "WorldStateScoreButton7Healing", "WorldStateScoreButton7HonorGained", "WorldStateScoreButton7HonorableKills", "WorldStateScoreButton7KillingBlows", "WorldStateScoreButton7NameText", "WorldStateScoreButton7Team", "WorldStateScoreButton7TeamSkill", "WorldStateScoreButton8ClassButtonIcon", "WorldStateScoreButton8Column1Icon", "WorldStateScoreButton8Column1Text", "WorldStateScoreButton8Column2Icon", "WorldStateScoreButton8Column2Text", "WorldStateScoreButton8Column3Icon", "WorldStateScoreButton8Column3Text", "WorldStateScoreButton8Column4Icon", "WorldStateScoreButton8Column4Text", "WorldStateScoreButton8Column5Icon", "WorldStateScoreButton8Column5Text", "WorldStateScoreButton8Column6Icon", "WorldStateScoreButton8Column6Text", "WorldStateScoreButton8Column7Icon", "WorldStateScoreButton8Column7Text", "WorldStateScoreButton8Damage", "WorldStateScoreButton8Deaths", "WorldStateScoreButton8FactionLeft", "WorldStateScoreButton8FactionRight", "WorldStateScoreButton8Healing", "WorldStateScoreButton8HonorGained", "WorldStateScoreButton8HonorableKills", "WorldStateScoreButton8KillingBlows", "WorldStateScoreButton8NameText", "WorldStateScoreButton8Team", "WorldStateScoreButton8TeamSkill", "WorldStateScoreButton9ClassButtonIcon", "WorldStateScoreButton9Column1Icon", "WorldStateScoreButton9Column1Text", "WorldStateScoreButton9Column2Icon", "WorldStateScoreButton9Column2Text", "WorldStateScoreButton9Column3Icon", "WorldStateScoreButton9Column3Text", "WorldStateScoreButton9Column4Icon", "WorldStateScoreButton9Column4Text", "WorldStateScoreButton9Column5Icon", "WorldStateScoreButton9Column5Text", "WorldStateScoreButton9Column6Icon", "WorldStateScoreButton9Column6Text", "WorldStateScoreButton9Column7Icon", "WorldStateScoreButton9Column7Text", "WorldStateScoreButton9Damage", "WorldStateScoreButton9Deaths", "WorldStateScoreButton9FactionLeft", "WorldStateScoreButton9FactionRight", "WorldStateScoreButton9Healing", "WorldStateScoreButton9HonorGained", "WorldStateScoreButton9HonorableKills", "WorldStateScoreButton9KillingBlows", "WorldStateScoreButton9NameText", "WorldStateScoreButton9Team", "WorldStateScoreButton9TeamSkill", "WorldStateScoreColumn1Text", "WorldStateScoreColumn2Text", "WorldStateScoreColumn3Text", "WorldStateScoreColumn4Text", "WorldStateScoreColumn5Text", "WorldStateScoreColumn6Text", "WorldStateScoreColumn7Text", "WorldStateScoreFrameBottom", "WorldStateScoreFrameBottomLeft", "WorldStateScoreFrameBottomRight", "WorldStateScoreFrameClassText", "WorldStateScoreFrameDamageDoneText", "WorldStateScoreFrameDeathsText", "WorldStateScoreFrameHKText", "WorldStateScoreFrameHealingDoneText", "WorldStateScoreFrameHonorGainedText", "WorldStateScoreFrameKBText", "WorldStateScoreFrameLabel", "WorldStateScoreFrameLeaveButtonText", "WorldStateScoreFrameNameText", "WorldStateScoreFrameTab1HighlightTexture", "WorldStateScoreFrameTab1Left", "WorldStateScoreFrameTab1LeftDisabled", "WorldStateScoreFrameTab1Middle", "WorldStateScoreFrameTab1MiddleDisabled", "WorldStateScoreFrameTab1Right", "WorldStateScoreFrameTab1RightDisabled", "WorldStateScoreFrameTab1Text", "WorldStateScoreFrameTab2HighlightTexture", "WorldStateScoreFrameTab2Left", "WorldStateScoreFrameTab2LeftDisabled", "WorldStateScoreFrameTab2Middle", "WorldStateScoreFrameTab2MiddleDisabled", "WorldStateScoreFrameTab2Right", "WorldStateScoreFrameTab2RightDisabled", "WorldStateScoreFrameTab2Text", "WorldStateScoreFrameTab3HighlightTexture", "WorldStateScoreFrameTab3Left", "WorldStateScoreFrameTab3LeftDisabled", "WorldStateScoreFrameTab3Middle", "WorldStateScoreFrameTab3MiddleDisabled", "WorldStateScoreFrameTab3Right", "WorldStateScoreFrameTab3RightDisabled", "WorldStateScoreFrameTab3Text", "WorldStateScoreFrameTeamSkillText", "WorldStateScoreFrameTeamText", "WorldStateScoreFrameTimer", "WorldStateScoreFrameTimerLabel", "WorldStateScoreFrameTop", "WorldStateScoreFrameTopBackground", "WorldStateScoreFrameTopLeft", "WorldStateScoreFrameTopRight", "WorldStateScorePlayerCount", "WorldStateScoreScrollFrameScrollBarThumbTexture", "WorldStateScoreScrollFrameScrollBarTop", "WorldStateScoreWinnerFrameLeft", "WorldStateScoreWinnerFrameRight", "WorldStateScoreWinnerFrameText", "ZoneTextFont", "ZoneTextString", "poiWorldMapQuestScrollChildFrame1_0IconNumber", "poiWorldMapQuestScrollChildFrame1_0IconTurnin", "tomtest", -- functions: Blizzard_AchievementUI "ACHIEVEMENTUI_SELECTEDFILTER", "AchievementButton_Collapse", "AchievementButton_Desaturate", "AchievementButton_DisplayAchievement", "AchievementButton_DisplayObjectives", "AchievementButton_Expand", "AchievementButton_GetCriteria", "AchievementButton_GetMeta", "AchievementButton_GetMiniAchievement", "AchievementButton_GetProgressBar", "AchievementButton_GetProgressivePoints", "AchievementButton_LocalizeMetaAchievement", "AchievementButton_LocalizeMiniAchievement", "AchievementButton_LocalizeProgressBar", "AchievementButton_OnClick", "AchievementButton_OnLoad", "AchievementButton_ResetCriteria", "AchievementButton_ResetMetas", "AchievementButton_ResetMiniAchievements", "AchievementButton_ResetObjectives", "AchievementButton_ResetProgressBars", "AchievementButton_ResetTable", "AchievementButton_Saturate", "AchievementButton_ToggleTracking", "AchievementButton_UpdatePlusMinusTexture", "AchievementCategoryButton_OnClick", "AchievementCategoryButton_OnLoad", "AchievementComparisonFriendButton_Desaturate", "AchievementComparisonFriendButton_OnLoad", "AchievementComparisonFriendButton_Saturate", "AchievementComparisonPlayerButton_Desaturate", "AchievementComparisonPlayerButton_OnLoad", "AchievementComparisonPlayerButton_Saturate", "AchievementFrameAchievementsBackdrop_OnLoad", "AchievementFrameAchievements_AdjustSelection", "AchievementFrameAchievements_ClearSelection", "AchievementFrameAchievements_FindSelection", "AchievementFrameAchievements_ForceUpdate", "AchievementFrameAchievements_OnEvent", "AchievementFrameAchievements_OnLoad", "AchievementFrameAchievements_OnShow", "AchievementFrameAchievements_SelectButton", "AchievementFrameAchievements_Update", "AchievementFrameBaseTab_OnClick", "AchievementFrameCategories_ClearSelection", "AchievementFrameCategories_DisplayButton", "AchievementFrameCategories_GetCategoryList", "AchievementFrameCategories_OnEvent", "AchievementFrameCategories_OnLoad", "AchievementFrameCategories_OnShow", "AchievementFrameCategories_SelectButton", "AchievementFrameCategories_Update", "AchievementFrameCategories_UpdateTooltip", "AchievementFrameCategory_FeatOfStrengthTooltip", "AchievementFrameCategory_StatusBarTooltip", "AchievementFrameComparisonContainer_OnLoad", "AchievementFrameComparisonStat_OnLoad", "AchievementFrameComparisonStatsContainer_OnLoad", "AchievementFrameComparisonStats_SetHeader", "AchievementFrameComparisonStats_SetStat", "AchievementFrameComparisonTab_OnClick", "AchievementFrameComparison_ClearSelection", "AchievementFrameComparison_DisplayAchievement", "AchievementFrameComparison_ForceUpdate", "AchievementFrameComparison_OnEvent", "AchievementFrameComparison_OnHide", "AchievementFrameComparison_OnLoad", "AchievementFrameComparison_OnShow", "AchievementFrameComparison_SetUnit", "AchievementFrameComparison_Update", "AchievementFrameComparison_UpdateStats", "AchievementFrameComparison_UpdateStatusBars", "AchievementFrameFilterDropDownButton_OnClick", "AchievementFrameFilterDropDown_Initialize", "AchievementFrameFilterDropDown_OnLoad", "AchievementFrameStats_OnEvent", "AchievementFrameStats_OnLoad", "AchievementFrameStats_SetHeader", "AchievementFrameStats_SetStat", "AchievementFrameStats_Update", "AchievementFrameSummaryAchievement_OnClick", "AchievementFrameSummaryAchievement_OnEnter", "AchievementFrameSummaryAchievement_OnLoad", "AchievementFrameSummaryCategoriesStatusBar_Update", "AchievementFrameSummaryCategoryButton_OnClick", "AchievementFrameSummaryCategory_OnEvent", "AchievementFrameSummaryCategory_OnHide", "AchievementFrameSummaryCategory_OnLoad", "AchievementFrameSummaryCategory_OnShow", "AchievementFrameSummary_LocalizeButton", "AchievementFrameSummary_OnShow", "AchievementFrameSummary_Update", "AchievementFrameSummary_UpdateAchievements", "AchievementFrame_ClearTextures", "AchievementFrame_DisplayComparison", "AchievementFrame_ForceUpdate", "AchievementFrame_GetCategoryNumAchievements_Complete", "AchievementFrame_GetCategoryNumAchievements_Incomplete", "AchievementFrame_GetCategoryTotalNumAchievements", "AchievementFrame_IsComparison", "AchievementFrame_IsFeatOfStrength", "AchievementFrame_LoadTextures", "AchievementFrame_LocalizeCriteria", "AchievementFrame_OnHide", "AchievementFrame_OnLoad", "AchievementFrame_OnShow", "AchievementFrame_SelectAchievement", "AchievementFrame_SelectSummaryStatistic", "AchievementFrame_SetFilter", "AchievementFrame_ShowSubFrame", "AchievementFrame_ToggleAchievementFrame", "AchievementIcon_Desaturate", "AchievementIcon_OnLoad", "AchievementIcon_Saturate", "AchievementObjectives_DisplayCriteria", "AchievementObjectives_DisplayProgressiveAchievement", "AchievementShield_Desaturate", "AchievementShield_OnLoad", "AchievementShield_Saturate", "AchievementShield_SetPoints", "AchievementStatButton_OnClick", "AchievementStatButton_OnLoad", -- tables: Blizzard_AchievementUI "ACHIEVEMENTFRAME_SUBFRAMES", "ACHIEVEMENTUI_CATEGORIES", "ACHIEVEMENTUI_DEFAULTSUMMARYACHIEVEMENTS", "ACHIEVEMENT_TEXTURES_TO_LOAD", "AchievementFrame", "AchievementFrameAchievements", "AchievementFrameAchievementsContainer", "AchievementFrameAchievementsContainerButton1", "AchievementFrameAchievementsContainerButton1Highlight", "AchievementFrameAchievementsContainerButton1Icon", "AchievementFrameAchievementsContainerButton1Objectives", "AchievementFrameAchievementsContainerButton1Shield", "AchievementFrameAchievementsContainerButton1Tracked", "AchievementFrameAchievementsContainerButton2", "AchievementFrameAchievementsContainerButton2Highlight", "AchievementFrameAchievementsContainerButton2Icon", "AchievementFrameAchievementsContainerButton2Objectives", "AchievementFrameAchievementsContainerButton2Shield", "AchievementFrameAchievementsContainerButton2Tracked", "AchievementFrameAchievementsContainerButton3", "AchievementFrameAchievementsContainerButton3Highlight", "AchievementFrameAchievementsContainerButton3Icon", "AchievementFrameAchievementsContainerButton3Objectives", "AchievementFrameAchievementsContainerButton3Shield", "AchievementFrameAchievementsContainerButton3Tracked", "AchievementFrameAchievementsContainerButton4", "AchievementFrameAchievementsContainerButton4Highlight", "AchievementFrameAchievementsContainerButton4Icon", "AchievementFrameAchievementsContainerButton4Objectives", "AchievementFrameAchievementsContainerButton4Shield", "AchievementFrameAchievementsContainerButton4Tracked", "AchievementFrameAchievementsContainerButton5", "AchievementFrameAchievementsContainerButton5Highlight", "AchievementFrameAchievementsContainerButton5Icon", "AchievementFrameAchievementsContainerButton5Objectives", "AchievementFrameAchievementsContainerButton5Shield", "AchievementFrameAchievementsContainerButton5Tracked", "AchievementFrameAchievementsContainerButton6", "AchievementFrameAchievementsContainerButton6Highlight", "AchievementFrameAchievementsContainerButton6Icon", "AchievementFrameAchievementsContainerButton6Objectives", "AchievementFrameAchievementsContainerButton6Shield", "AchievementFrameAchievementsContainerButton6Tracked", "AchievementFrameAchievementsContainerButton7", "AchievementFrameAchievementsContainerButton7Highlight", "AchievementFrameAchievementsContainerButton7Icon", "AchievementFrameAchievementsContainerButton7Objectives", "AchievementFrameAchievementsContainerButton7Shield", "AchievementFrameAchievementsContainerButton7Tracked", "AchievementFrameAchievementsContainerScrollBar", "AchievementFrameAchievementsContainerScrollBarScrollDownButton", "AchievementFrameAchievementsContainerScrollBarScrollUpButton", "AchievementFrameAchievementsContainerScrollChild", "AchievementFrameAchievementsObjectives", "AchievementFrameCategories", "AchievementFrameCategoriesContainer", "AchievementFrameCategoriesContainerScrollBar", "AchievementFrameCategoriesContainerScrollBarScrollDownButton", "AchievementFrameCategoriesContainerScrollBarScrollUpButton", "AchievementFrameCategoriesContainerScrollChild", "AchievementFrameCloseButton", "AchievementFrameComparison", "AchievementFrameComparisonContainer", "AchievementFrameComparisonContainerButton1", "AchievementFrameComparisonContainerButton10", "AchievementFrameComparisonContainerButton10Friend", "AchievementFrameComparisonContainerButton10FriendIcon", "AchievementFrameComparisonContainerButton10FriendShield", "AchievementFrameComparisonContainerButton10Player", "AchievementFrameComparisonContainerButton10PlayerIcon", "AchievementFrameComparisonContainerButton10PlayerShield", "AchievementFrameComparisonContainerButton1Friend", "AchievementFrameComparisonContainerButton1FriendIcon", "AchievementFrameComparisonContainerButton1FriendShield", "AchievementFrameComparisonContainerButton1Player", "AchievementFrameComparisonContainerButton1PlayerIcon", "AchievementFrameComparisonContainerButton1PlayerShield", "AchievementFrameComparisonContainerButton2", "AchievementFrameComparisonContainerButton2Friend", "AchievementFrameComparisonContainerButton2FriendIcon", "AchievementFrameComparisonContainerButton2FriendShield", "AchievementFrameComparisonContainerButton2Player", "AchievementFrameComparisonContainerButton2PlayerIcon", "AchievementFrameComparisonContainerButton2PlayerShield", "AchievementFrameComparisonContainerButton3", "AchievementFrameComparisonContainerButton3Friend", "AchievementFrameComparisonContainerButton3FriendIcon", "AchievementFrameComparisonContainerButton3FriendShield", "AchievementFrameComparisonContainerButton3Player", "AchievementFrameComparisonContainerButton3PlayerIcon", "AchievementFrameComparisonContainerButton3PlayerShield", "AchievementFrameComparisonContainerButton4", "AchievementFrameComparisonContainerButton4Friend", "AchievementFrameComparisonContainerButton4FriendIcon", "AchievementFrameComparisonContainerButton4FriendShield", "AchievementFrameComparisonContainerButton4Player", "AchievementFrameComparisonContainerButton4PlayerIcon", "AchievementFrameComparisonContainerButton4PlayerShield", "AchievementFrameComparisonContainerButton5", "AchievementFrameComparisonContainerButton5Friend", "AchievementFrameComparisonContainerButton5FriendIcon", "AchievementFrameComparisonContainerButton5FriendShield", "AchievementFrameComparisonContainerButton5Player", "AchievementFrameComparisonContainerButton5PlayerIcon", "AchievementFrameComparisonContainerButton5PlayerShield", "AchievementFrameComparisonContainerButton6", "AchievementFrameComparisonContainerButton6Friend", "AchievementFrameComparisonContainerButton6FriendIcon", "AchievementFrameComparisonContainerButton6FriendShield", "AchievementFrameComparisonContainerButton6Player", "AchievementFrameComparisonContainerButton6PlayerIcon", "AchievementFrameComparisonContainerButton6PlayerShield", "AchievementFrameComparisonContainerButton7", "AchievementFrameComparisonContainerButton7Friend", "AchievementFrameComparisonContainerButton7FriendIcon", "AchievementFrameComparisonContainerButton7FriendShield", "AchievementFrameComparisonContainerButton7Player", "AchievementFrameComparisonContainerButton7PlayerIcon", "AchievementFrameComparisonContainerButton7PlayerShield", "AchievementFrameComparisonContainerButton8", "AchievementFrameComparisonContainerButton8Friend", "AchievementFrameComparisonContainerButton8FriendIcon", "AchievementFrameComparisonContainerButton8FriendShield", "AchievementFrameComparisonContainerButton8Player", "AchievementFrameComparisonContainerButton8PlayerIcon", "AchievementFrameComparisonContainerButton8PlayerShield", "AchievementFrameComparisonContainerButton9", "AchievementFrameComparisonContainerButton9Friend", "AchievementFrameComparisonContainerButton9FriendIcon", "AchievementFrameComparisonContainerButton9FriendShield", "AchievementFrameComparisonContainerButton9Player", "AchievementFrameComparisonContainerButton9PlayerIcon", "AchievementFrameComparisonContainerButton9PlayerShield", "AchievementFrameComparisonContainerScrollBar", "AchievementFrameComparisonContainerScrollBarScrollDownButton", "AchievementFrameComparisonContainerScrollBarScrollUpButton", "AchievementFrameComparisonContainerScrollChild", "AchievementFrameComparisonHeader", "AchievementFrameComparisonStatsContainer", "AchievementFrameComparisonStatsContainerButton1", "AchievementFrameComparisonStatsContainerButton10", "AchievementFrameComparisonStatsContainerButton10Mouseover", "AchievementFrameComparisonStatsContainerButton11", "AchievementFrameComparisonStatsContainerButton11Mouseover", "AchievementFrameComparisonStatsContainerButton12", "AchievementFrameComparisonStatsContainerButton12Mouseover", "AchievementFrameComparisonStatsContainerButton13", "AchievementFrameComparisonStatsContainerButton13Mouseover", "AchievementFrameComparisonStatsContainerButton14", "AchievementFrameComparisonStatsContainerButton14Mouseover", "AchievementFrameComparisonStatsContainerButton15", "AchievementFrameComparisonStatsContainerButton15Mouseover", "AchievementFrameComparisonStatsContainerButton16", "AchievementFrameComparisonStatsContainerButton16Mouseover", "AchievementFrameComparisonStatsContainerButton17", "AchievementFrameComparisonStatsContainerButton17Mouseover", "AchievementFrameComparisonStatsContainerButton18", "AchievementFrameComparisonStatsContainerButton18Mouseover", "AchievementFrameComparisonStatsContainerButton19", "AchievementFrameComparisonStatsContainerButton19Mouseover", "AchievementFrameComparisonStatsContainerButton1Mouseover", "AchievementFrameComparisonStatsContainerButton2", "AchievementFrameComparisonStatsContainerButton20", "AchievementFrameComparisonStatsContainerButton20Mouseover", "AchievementFrameComparisonStatsContainerButton2Mouseover", "AchievementFrameComparisonStatsContainerButton3", "AchievementFrameComparisonStatsContainerButton3Mouseover", "AchievementFrameComparisonStatsContainerButton4", "AchievementFrameComparisonStatsContainerButton4Mouseover", "AchievementFrameComparisonStatsContainerButton5", "AchievementFrameComparisonStatsContainerButton5Mouseover", "AchievementFrameComparisonStatsContainerButton6", "AchievementFrameComparisonStatsContainerButton6Mouseover", "AchievementFrameComparisonStatsContainerButton7", "AchievementFrameComparisonStatsContainerButton7Mouseover", "AchievementFrameComparisonStatsContainerButton8", "AchievementFrameComparisonStatsContainerButton8Mouseover", "AchievementFrameComparisonStatsContainerButton9", "AchievementFrameComparisonStatsContainerButton9Mouseover", "AchievementFrameComparisonStatsContainerScrollBar", "AchievementFrameComparisonStatsContainerScrollBarScrollDownButton", "AchievementFrameComparisonStatsContainerScrollBarScrollUpButton", "AchievementFrameComparisonStatsContainerScrollChild", "AchievementFrameComparisonSummary", "AchievementFrameComparisonSummaryFriend", "AchievementFrameComparisonSummaryFriendStatusBar", "AchievementFrameComparisonSummaryPlayer", "AchievementFrameComparisonSummaryPlayerStatusBar", "AchievementFrameFilterDropDownButton", "AchievementFrameFilters", "AchievementFrameHeader", "AchievementFrameStats", "AchievementFrameStatsBG", "AchievementFrameStatsContainer", "AchievementFrameStatsContainerButton1", "AchievementFrameStatsContainerButton10", "AchievementFrameStatsContainerButton11", "AchievementFrameStatsContainerButton12", "AchievementFrameStatsContainerButton13", "AchievementFrameStatsContainerButton14", "AchievementFrameStatsContainerButton15", "AchievementFrameStatsContainerButton16", "AchievementFrameStatsContainerButton17", "AchievementFrameStatsContainerButton18", "AchievementFrameStatsContainerButton19", "AchievementFrameStatsContainerButton2", "AchievementFrameStatsContainerButton20", "AchievementFrameStatsContainerButton3", "AchievementFrameStatsContainerButton4", "AchievementFrameStatsContainerButton5", "AchievementFrameStatsContainerButton6", "AchievementFrameStatsContainerButton7", "AchievementFrameStatsContainerButton8", "AchievementFrameStatsContainerButton9", "AchievementFrameStatsContainerScrollBar", "AchievementFrameStatsContainerScrollBarScrollDownButton", "AchievementFrameStatsContainerScrollBarScrollUpButton", "AchievementFrameStatsContainerScrollChild", "AchievementFrameSummary", "AchievementFrameSummaryAchievements", "AchievementFrameSummaryAchievementsHeader", "AchievementFrameSummaryCategories", "AchievementFrameSummaryCategoriesCategory1", "AchievementFrameSummaryCategoriesCategory1Button", "AchievementFrameSummaryCategoriesCategory1ButtonHighlight", "AchievementFrameSummaryCategoriesCategory2", "AchievementFrameSummaryCategoriesCategory2Button", "AchievementFrameSummaryCategoriesCategory2ButtonHighlight", "AchievementFrameSummaryCategoriesCategory3", "AchievementFrameSummaryCategoriesCategory3Button", "AchievementFrameSummaryCategoriesCategory3ButtonHighlight", "AchievementFrameSummaryCategoriesCategory4", "AchievementFrameSummaryCategoriesCategory4Button", "AchievementFrameSummaryCategoriesCategory4ButtonHighlight", "AchievementFrameSummaryCategoriesCategory5", "AchievementFrameSummaryCategoriesCategory5Button", "AchievementFrameSummaryCategoriesCategory5ButtonHighlight", "AchievementFrameSummaryCategoriesCategory6", "AchievementFrameSummaryCategoriesCategory6Button", "AchievementFrameSummaryCategoriesCategory6ButtonHighlight", "AchievementFrameSummaryCategoriesCategory7", "AchievementFrameSummaryCategoriesCategory7Button", "AchievementFrameSummaryCategoriesCategory7ButtonHighlight", "AchievementFrameSummaryCategoriesCategory8", "AchievementFrameSummaryCategoriesCategory8Button", "AchievementFrameSummaryCategoriesCategory8ButtonHighlight", "AchievementFrameSummaryCategoriesHeader", "AchievementFrameSummaryCategoriesStatusBar", "AchievementFrameTab1", "AchievementFrameTab2", "COMPARISON_ACHIEVEMENT_FUNCTIONS", "COMPARISON_STAT_FUNCTIONS", "STAT_FUNCTIONS", "UIDROPDOWNMENU_INIT_MENU", "achievementFunctions", "this", -- frames: Blizzard_AchievementUI "AchievementFrameAchievementsObjectives", "AchievementFrame", "AchievementFrameHeader", "AchievementFrameCategories", "AchievementFrameCategoriesContainer", "AchievementFrameCategoriesContainerScrollChild", "AchievementFrameCategoriesContainerScrollBar", "AchievementFrameCategoriesContainerScrollBarScrollUpButton", "AchievementFrameCategoriesContainerScrollBarScrollDownButton", "AchievementFrameAchievements", "AchievementFrameAchievementsContainer", "AchievementFrameAchievementsContainerScrollChild", "AchievementFrameAchievementsContainerScrollBar", "AchievementFrameAchievementsContainerScrollBarScrollUpButton", "AchievementFrameAchievementsContainerScrollBarScrollDownButton", "AchievementFrameAchievementsContainerButton1", "AchievementFrameAchievementsContainerButton1Highlight", "AchievementFrameAchievementsContainerButton1Icon", "AchievementFrameAchievementsContainerButton1Shield", "AchievementFrameAchievementsContainerButton1Objectives", "AchievementFrameAchievementsContainerButton1Tracked", "AchievementFrameAchievementsContainerButton2", "AchievementFrameAchievementsContainerButton2Highlight", "AchievementFrameAchievementsContainerButton2Icon", "AchievementFrameAchievementsContainerButton2Shield", "AchievementFrameAchievementsContainerButton2Objectives", "AchievementFrameAchievementsContainerButton2Tracked", "AchievementFrameAchievementsContainerButton3", "AchievementFrameAchievementsContainerButton3Highlight", "AchievementFrameAchievementsContainerButton3Icon", "AchievementFrameAchievementsContainerButton3Shield", "AchievementFrameAchievementsContainerButton3Objectives", "AchievementFrameAchievementsContainerButton3Tracked", "AchievementFrameAchievementsContainerButton4", "AchievementFrameAchievementsContainerButton4Highlight", "AchievementFrameAchievementsContainerButton4Icon", "AchievementFrameAchievementsContainerButton4Shield", "AchievementFrameAchievementsContainerButton4Objectives", "AchievementFrameAchievementsContainerButton4Tracked", "AchievementFrameAchievementsContainerButton5", "AchievementFrameAchievementsContainerButton5Highlight", "AchievementFrameAchievementsContainerButton5Icon", "AchievementFrameAchievementsContainerButton5Shield", "AchievementFrameAchievementsContainerButton5Objectives", "AchievementFrameAchievementsContainerButton5Tracked", "AchievementFrameAchievementsContainerButton6", "AchievementFrameAchievementsContainerButton6Highlight", "AchievementFrameAchievementsContainerButton6Icon", "AchievementFrameAchievementsContainerButton6Shield", "AchievementFrameAchievementsContainerButton6Objectives", "AchievementFrameAchievementsContainerButton6Tracked", "AchievementFrameAchievementsContainerButton7", "AchievementFrameAchievementsContainerButton7Highlight", "AchievementFrameAchievementsContainerButton7Icon", "AchievementFrameAchievementsContainerButton7Shield", "AchievementFrameAchievementsContainerButton7Objectives", "AchievementFrameAchievementsContainerButton7Tracked", "AchievementFrameStats", "AchievementFrameStatsBG", "AchievementFrameStatsContainer", "AchievementFrameStatsContainerScrollChild", "AchievementFrameStatsContainerScrollBar", "AchievementFrameStatsContainerScrollBarScrollUpButton", "AchievementFrameStatsContainerScrollBarScrollDownButton", "AchievementFrameStatsContainerButton1", "AchievementFrameStatsContainerButton2", "AchievementFrameStatsContainerButton3", "AchievementFrameStatsContainerButton4", "AchievementFrameStatsContainerButton5", "AchievementFrameStatsContainerButton6", "AchievementFrameStatsContainerButton7", "AchievementFrameStatsContainerButton8", "AchievementFrameStatsContainerButton9", "AchievementFrameStatsContainerButton10", "AchievementFrameStatsContainerButton11", "AchievementFrameStatsContainerButton12", "AchievementFrameStatsContainerButton13", "AchievementFrameStatsContainerButton14", "AchievementFrameStatsContainerButton15", "AchievementFrameStatsContainerButton16", "AchievementFrameStatsContainerButton17", "AchievementFrameStatsContainerButton18", "AchievementFrameStatsContainerButton19", "AchievementFrameStatsContainerButton20", "AchievementFrameSummary", "AchievementFrameSummaryAchievements", "AchievementFrameSummaryAchievementsHeader", "AchievementFrameSummaryCategories", "AchievementFrameSummaryCategoriesHeader", "AchievementFrameSummaryCategoriesStatusBar", "AchievementFrameSummaryCategoriesCategory1", "AchievementFrameSummaryCategoriesCategory1Button", "AchievementFrameSummaryCategoriesCategory1ButtonHighlight", "AchievementFrameSummaryCategoriesCategory2", "AchievementFrameSummaryCategoriesCategory2Button", "AchievementFrameSummaryCategoriesCategory2ButtonHighlight", "AchievementFrameSummaryCategoriesCategory3", "AchievementFrameSummaryCategoriesCategory3Button", "AchievementFrameSummaryCategoriesCategory3ButtonHighlight", "AchievementFrameSummaryCategoriesCategory4", "AchievementFrameSummaryCategoriesCategory4Button", "AchievementFrameSummaryCategoriesCategory4ButtonHighlight", "AchievementFrameSummaryCategoriesCategory5", "AchievementFrameSummaryCategoriesCategory5Button", "AchievementFrameSummaryCategoriesCategory5ButtonHighlight", "AchievementFrameSummaryCategoriesCategory6", "AchievementFrameSummaryCategoriesCategory6Button", "AchievementFrameSummaryCategoriesCategory6ButtonHighlight", "AchievementFrameSummaryCategoriesCategory7", "AchievementFrameSummaryCategoriesCategory7Button", "AchievementFrameSummaryCategoriesCategory7ButtonHighlight", "AchievementFrameSummaryCategoriesCategory8", "AchievementFrameSummaryCategoriesCategory8Button", "AchievementFrameSummaryCategoriesCategory8ButtonHighlight", "AchievementFrameComparison", "AchievementFrameComparisonHeader", "AchievementFrameComparisonSummary", "AchievementFrameComparisonSummaryPlayer", "AchievementFrameComparisonSummaryPlayerStatusBar", "AchievementFrameComparisonSummaryFriend", "AchievementFrameComparisonSummaryFriendStatusBar", "AchievementFrameComparisonContainer", "AchievementFrameComparisonContainerScrollChild", "AchievementFrameComparisonContainerScrollBar", "AchievementFrameComparisonContainerScrollBarScrollUpButton", "AchievementFrameComparisonContainerScrollBarScrollDownButton", "AchievementFrameComparisonStatsContainer", "AchievementFrameComparisonStatsContainerScrollChild", "AchievementFrameComparisonStatsContainerScrollBar", "AchievementFrameComparisonStatsContainerScrollBarScrollUpButton", "AchievementFrameComparisonStatsContainerScrollBarScrollDownButton", "AchievementFrameComparisonContainerButton1", "AchievementFrameComparisonContainerButton1Player", "AchievementFrameComparisonContainerButton1PlayerIcon", "AchievementFrameComparisonContainerButton1PlayerShield", "AchievementFrameComparisonContainerButton1Friend", "AchievementFrameComparisonContainerButton1FriendIcon", "AchievementFrameComparisonContainerButton1FriendShield", "AchievementFrameComparisonContainerButton2", "AchievementFrameComparisonContainerButton2Player", "AchievementFrameComparisonContainerButton2PlayerIcon", "AchievementFrameComparisonContainerButton2PlayerShield", "AchievementFrameComparisonContainerButton2Friend", "AchievementFrameComparisonContainerButton2FriendIcon", "AchievementFrameComparisonContainerButton2FriendShield", "AchievementFrameComparisonContainerButton3", "AchievementFrameComparisonContainerButton3Player", "AchievementFrameComparisonContainerButton3PlayerIcon", "AchievementFrameComparisonContainerButton3PlayerShield", "AchievementFrameComparisonContainerButton3Friend", "AchievementFrameComparisonContainerButton3FriendIcon", "AchievementFrameComparisonContainerButton3FriendShield", "AchievementFrameComparisonContainerButton4", "AchievementFrameComparisonContainerButton4Player", "AchievementFrameComparisonContainerButton4PlayerIcon", "AchievementFrameComparisonContainerButton4PlayerShield", "AchievementFrameComparisonContainerButton4Friend", "AchievementFrameComparisonContainerButton4FriendIcon", "AchievementFrameComparisonContainerButton4FriendShield", "AchievementFrameComparisonContainerButton5", "AchievementFrameComparisonContainerButton5Player", "AchievementFrameComparisonContainerButton5PlayerIcon", "AchievementFrameComparisonContainerButton5PlayerShield", "AchievementFrameComparisonContainerButton5Friend", "AchievementFrameComparisonContainerButton5FriendIcon", "AchievementFrameComparisonContainerButton5FriendShield", "AchievementFrameComparisonContainerButton6", "AchievementFrameComparisonContainerButton6Player", "AchievementFrameComparisonContainerButton6PlayerIcon", "AchievementFrameComparisonContainerButton6PlayerShield", "AchievementFrameComparisonContainerButton6Friend", "AchievementFrameComparisonContainerButton6FriendIcon", "AchievementFrameComparisonContainerButton6FriendShield", "AchievementFrameComparisonContainerButton7", "AchievementFrameComparisonContainerButton7Player", "AchievementFrameComparisonContainerButton7PlayerIcon", "AchievementFrameComparisonContainerButton7PlayerShield", "AchievementFrameComparisonContainerButton7Friend", "AchievementFrameComparisonContainerButton7FriendIcon", "AchievementFrameComparisonContainerButton7FriendShield", "AchievementFrameComparisonContainerButton8", "AchievementFrameComparisonContainerButton8Player", "AchievementFrameComparisonContainerButton8PlayerIcon", "AchievementFrameComparisonContainerButton8PlayerShield", "AchievementFrameComparisonContainerButton8Friend", "AchievementFrameComparisonContainerButton8FriendIcon", "AchievementFrameComparisonContainerButton8FriendShield", "AchievementFrameComparisonContainerButton9", "AchievementFrameComparisonContainerButton9Player", "AchievementFrameComparisonContainerButton9PlayerIcon", "AchievementFrameComparisonContainerButton9PlayerShield", "AchievementFrameComparisonContainerButton9Friend", "AchievementFrameComparisonContainerButton9FriendIcon", "AchievementFrameComparisonContainerButton9FriendShield", "AchievementFrameComparisonContainerButton10", "AchievementFrameComparisonContainerButton10Player", "AchievementFrameComparisonContainerButton10PlayerIcon", "AchievementFrameComparisonContainerButton10PlayerShield", "AchievementFrameComparisonContainerButton10Friend", "AchievementFrameComparisonContainerButton10FriendIcon", "AchievementFrameComparisonContainerButton10FriendShield", "AchievementFrameComparisonStatsContainerButton1", "AchievementFrameComparisonStatsContainerButton1Mouseover", "AchievementFrameComparisonStatsContainerButton2", "AchievementFrameComparisonStatsContainerButton2Mouseover", "AchievementFrameComparisonStatsContainerButton3", "AchievementFrameComparisonStatsContainerButton3Mouseover", "AchievementFrameComparisonStatsContainerButton4", "AchievementFrameComparisonStatsContainerButton4Mouseover", "AchievementFrameComparisonStatsContainerButton5", "AchievementFrameComparisonStatsContainerButton5Mouseover", "AchievementFrameComparisonStatsContainerButton6", "AchievementFrameComparisonStatsContainerButton6Mouseover", "AchievementFrameComparisonStatsContainerButton7", "AchievementFrameComparisonStatsContainerButton7Mouseover", "AchievementFrameComparisonStatsContainerButton8", "AchievementFrameComparisonStatsContainerButton8Mouseover", "AchievementFrameComparisonStatsContainerButton9", "AchievementFrameComparisonStatsContainerButton9Mouseover", "AchievementFrameComparisonStatsContainerButton10", "AchievementFrameComparisonStatsContainerButton10Mouseover", "AchievementFrameComparisonStatsContainerButton11", "AchievementFrameComparisonStatsContainerButton11Mouseover", "AchievementFrameComparisonStatsContainerButton12", "AchievementFrameComparisonStatsContainerButton12Mouseover", "AchievementFrameComparisonStatsContainerButton13", "AchievementFrameComparisonStatsContainerButton13Mouseover", "AchievementFrameComparisonStatsContainerButton14", "AchievementFrameComparisonStatsContainerButton14Mouseover", "AchievementFrameComparisonStatsContainerButton15", "AchievementFrameComparisonStatsContainerButton15Mouseover", "AchievementFrameComparisonStatsContainerButton16", "AchievementFrameComparisonStatsContainerButton16Mouseover", "AchievementFrameComparisonStatsContainerButton17", "AchievementFrameComparisonStatsContainerButton17Mouseover", "AchievementFrameComparisonStatsContainerButton18", "AchievementFrameComparisonStatsContainerButton18Mouseover", "AchievementFrameComparisonStatsContainerButton19", "AchievementFrameComparisonStatsContainerButton19Mouseover", "AchievementFrameComparisonStatsContainerButton20", "AchievementFrameComparisonStatsContainerButton20Mouseover", "AchievementFrameCloseButton", "AchievementFrameTab1", "AchievementFrameTab2", "AchievementFrameFilterDropDown", "AchievementFrameFilterDropDownButton", -- widgets: Blizzard_AchievementUI "AchievementFrameAchievementsBackground", "AchievementFrameAchievementsContainerButton1Background", "AchievementFrameAchievementsContainerButton1BottomLeftTsunami", "AchievementFrameAchievementsContainerButton1BottomRightTsunami", "AchievementFrameAchievementsContainerButton1BottomTsunami1", "AchievementFrameAchievementsContainerButton1Check", "AchievementFrameAchievementsContainerButton1DateCompleted", "AchievementFrameAchievementsContainerButton1Description", "AchievementFrameAchievementsContainerButton1Glow", "AchievementFrameAchievementsContainerButton1HiddenDescription", "AchievementFrameAchievementsContainerButton1HighlightBottom", "AchievementFrameAchievementsContainerButton1HighlightBottomLeft", "AchievementFrameAchievementsContainerButton1HighlightBottomRight", "AchievementFrameAchievementsContainerButton1HighlightLeft", "AchievementFrameAchievementsContainerButton1HighlightRight", "AchievementFrameAchievementsContainerButton1HighlightTop", "AchievementFrameAchievementsContainerButton1HighlightTopLeft", "AchievementFrameAchievementsContainerButton1HighlightTopRight", "AchievementFrameAchievementsContainerButton1IconBackfill", "AchievementFrameAchievementsContainerButton1IconBling", "AchievementFrameAchievementsContainerButton1IconOverlay", "AchievementFrameAchievementsContainerButton1IconTexture", "AchievementFrameAchievementsContainerButton1Label", "AchievementFrameAchievementsContainerButton1PlusMinus", "AchievementFrameAchievementsContainerButton1Reward", "AchievementFrameAchievementsContainerButton1RewardBackground", "AchievementFrameAchievementsContainerButton1ShieldIcon", "AchievementFrameAchievementsContainerButton1ShieldPoints", "AchievementFrameAchievementsContainerButton1TitleBackground", "AchievementFrameAchievementsContainerButton1TopLeftTsunami", "AchievementFrameAchievementsContainerButton1TopRightTsunami", "AchievementFrameAchievementsContainerButton1TopTsunami1", "AchievementFrameAchievementsContainerButton1TrackedText", "AchievementFrameAchievementsContainerButton2Background", "AchievementFrameAchievementsContainerButton2BottomLeftTsunami", "AchievementFrameAchievementsContainerButton2BottomRightTsunami", "AchievementFrameAchievementsContainerButton2BottomTsunami1", "AchievementFrameAchievementsContainerButton2Check", "AchievementFrameAchievementsContainerButton2DateCompleted", "AchievementFrameAchievementsContainerButton2Description", "AchievementFrameAchievementsContainerButton2Glow", "AchievementFrameAchievementsContainerButton2HiddenDescription", "AchievementFrameAchievementsContainerButton2HighlightBottom", "AchievementFrameAchievementsContainerButton2HighlightBottomLeft", "AchievementFrameAchievementsContainerButton2HighlightBottomRight", "AchievementFrameAchievementsContainerButton2HighlightLeft", "AchievementFrameAchievementsContainerButton2HighlightRight", "AchievementFrameAchievementsContainerButton2HighlightTop", "AchievementFrameAchievementsContainerButton2HighlightTopLeft", "AchievementFrameAchievementsContainerButton2HighlightTopRight", "AchievementFrameAchievementsContainerButton2IconBackfill", "AchievementFrameAchievementsContainerButton2IconBling", "AchievementFrameAchievementsContainerButton2IconOverlay", "AchievementFrameAchievementsContainerButton2IconTexture", "AchievementFrameAchievementsContainerButton2Label", "AchievementFrameAchievementsContainerButton2PlusMinus", "AchievementFrameAchievementsContainerButton2Reward", "AchievementFrameAchievementsContainerButton2RewardBackground", "AchievementFrameAchievementsContainerButton2ShieldIcon", "AchievementFrameAchievementsContainerButton2ShieldPoints", "AchievementFrameAchievementsContainerButton2TitleBackground", "AchievementFrameAchievementsContainerButton2TopLeftTsunami", "AchievementFrameAchievementsContainerButton2TopRightTsunami", "AchievementFrameAchievementsContainerButton2TopTsunami1", "AchievementFrameAchievementsContainerButton2TrackedText", "AchievementFrameAchievementsContainerButton3Background", "AchievementFrameAchievementsContainerButton3BottomLeftTsunami", "AchievementFrameAchievementsContainerButton3BottomRightTsunami", "AchievementFrameAchievementsContainerButton3BottomTsunami1", "AchievementFrameAchievementsContainerButton3Check", "AchievementFrameAchievementsContainerButton3DateCompleted", "AchievementFrameAchievementsContainerButton3Description", "AchievementFrameAchievementsContainerButton3Glow", "AchievementFrameAchievementsContainerButton3HiddenDescription", "AchievementFrameAchievementsContainerButton3HighlightBottom", "AchievementFrameAchievementsContainerButton3HighlightBottomLeft", "AchievementFrameAchievementsContainerButton3HighlightBottomRight", "AchievementFrameAchievementsContainerButton3HighlightLeft", "AchievementFrameAchievementsContainerButton3HighlightRight", "AchievementFrameAchievementsContainerButton3HighlightTop", "AchievementFrameAchievementsContainerButton3HighlightTopLeft", "AchievementFrameAchievementsContainerButton3HighlightTopRight", "AchievementFrameAchievementsContainerButton3IconBackfill", "AchievementFrameAchievementsContainerButton3IconBling", "AchievementFrameAchievementsContainerButton3IconOverlay", "AchievementFrameAchievementsContainerButton3IconTexture", "AchievementFrameAchievementsContainerButton3Label", "AchievementFrameAchievementsContainerButton3PlusMinus", "AchievementFrameAchievementsContainerButton3Reward", "AchievementFrameAchievementsContainerButton3RewardBackground", "AchievementFrameAchievementsContainerButton3ShieldIcon", "AchievementFrameAchievementsContainerButton3ShieldPoints", "AchievementFrameAchievementsContainerButton3TitleBackground", "AchievementFrameAchievementsContainerButton3TopLeftTsunami", "AchievementFrameAchievementsContainerButton3TopRightTsunami", "AchievementFrameAchievementsContainerButton3TopTsunami1", "AchievementFrameAchievementsContainerButton3TrackedText", "AchievementFrameAchievementsContainerButton4Background", "AchievementFrameAchievementsContainerButton4BottomLeftTsunami", "AchievementFrameAchievementsContainerButton4BottomRightTsunami", "AchievementFrameAchievementsContainerButton4BottomTsunami1", "AchievementFrameAchievementsContainerButton4Check", "AchievementFrameAchievementsContainerButton4DateCompleted", "AchievementFrameAchievementsContainerButton4Description", "AchievementFrameAchievementsContainerButton4Glow", "AchievementFrameAchievementsContainerButton4HiddenDescription", "AchievementFrameAchievementsContainerButton4HighlightBottom", "AchievementFrameAchievementsContainerButton4HighlightBottomLeft", "AchievementFrameAchievementsContainerButton4HighlightBottomRight", "AchievementFrameAchievementsContainerButton4HighlightLeft", "AchievementFrameAchievementsContainerButton4HighlightRight", "AchievementFrameAchievementsContainerButton4HighlightTop", "AchievementFrameAchievementsContainerButton4HighlightTopLeft", "AchievementFrameAchievementsContainerButton4HighlightTopRight", "AchievementFrameAchievementsContainerButton4IconBackfill", "AchievementFrameAchievementsContainerButton4IconBling", "AchievementFrameAchievementsContainerButton4IconOverlay", "AchievementFrameAchievementsContainerButton4IconTexture", "AchievementFrameAchievementsContainerButton4Label", "AchievementFrameAchievementsContainerButton4PlusMinus", "AchievementFrameAchievementsContainerButton4Reward", "AchievementFrameAchievementsContainerButton4RewardBackground", "AchievementFrameAchievementsContainerButton4ShieldIcon", "AchievementFrameAchievementsContainerButton4ShieldPoints", "AchievementFrameAchievementsContainerButton4TitleBackground", "AchievementFrameAchievementsContainerButton4TopLeftTsunami", "AchievementFrameAchievementsContainerButton4TopRightTsunami", "AchievementFrameAchievementsContainerButton4TopTsunami1", "AchievementFrameAchievementsContainerButton4TrackedText", "AchievementFrameAchievementsContainerButton5Background", "AchievementFrameAchievementsContainerButton5BottomLeftTsunami", "AchievementFrameAchievementsContainerButton5BottomRightTsunami", "AchievementFrameAchievementsContainerButton5BottomTsunami1", "AchievementFrameAchievementsContainerButton5Check", "AchievementFrameAchievementsContainerButton5DateCompleted", "AchievementFrameAchievementsContainerButton5Description", "AchievementFrameAchievementsContainerButton5Glow", "AchievementFrameAchievementsContainerButton5HiddenDescription", "AchievementFrameAchievementsContainerButton5HighlightBottom", "AchievementFrameAchievementsContainerButton5HighlightBottomLeft", "AchievementFrameAchievementsContainerButton5HighlightBottomRight", "AchievementFrameAchievementsContainerButton5HighlightLeft", "AchievementFrameAchievementsContainerButton5HighlightRight", "AchievementFrameAchievementsContainerButton5HighlightTop", "AchievementFrameAchievementsContainerButton5HighlightTopLeft", "AchievementFrameAchievementsContainerButton5HighlightTopRight", "AchievementFrameAchievementsContainerButton5IconBackfill", "AchievementFrameAchievementsContainerButton5IconBling", "AchievementFrameAchievementsContainerButton5IconOverlay", "AchievementFrameAchievementsContainerButton5IconTexture", "AchievementFrameAchievementsContainerButton5Label", "AchievementFrameAchievementsContainerButton5PlusMinus", "AchievementFrameAchievementsContainerButton5Reward", "AchievementFrameAchievementsContainerButton5RewardBackground", "AchievementFrameAchievementsContainerButton5ShieldIcon", "AchievementFrameAchievementsContainerButton5ShieldPoints", "AchievementFrameAchievementsContainerButton5TitleBackground", "AchievementFrameAchievementsContainerButton5TopLeftTsunami", "AchievementFrameAchievementsContainerButton5TopRightTsunami", "AchievementFrameAchievementsContainerButton5TopTsunami1", "AchievementFrameAchievementsContainerButton5TrackedText", "AchievementFrameAchievementsContainerButton6Background", "AchievementFrameAchievementsContainerButton6BottomLeftTsunami", "AchievementFrameAchievementsContainerButton6BottomRightTsunami", "AchievementFrameAchievementsContainerButton6BottomTsunami1", "AchievementFrameAchievementsContainerButton6Check", "AchievementFrameAchievementsContainerButton6DateCompleted", "AchievementFrameAchievementsContainerButton6Description", "AchievementFrameAchievementsContainerButton6Glow", "AchievementFrameAchievementsContainerButton6HiddenDescription", "AchievementFrameAchievementsContainerButton6HighlightBottom", "AchievementFrameAchievementsContainerButton6HighlightBottomLeft", "AchievementFrameAchievementsContainerButton6HighlightBottomRight", "AchievementFrameAchievementsContainerButton6HighlightLeft", "AchievementFrameAchievementsContainerButton6HighlightRight", "AchievementFrameAchievementsContainerButton6HighlightTop", "AchievementFrameAchievementsContainerButton6HighlightTopLeft", "AchievementFrameAchievementsContainerButton6HighlightTopRight", "AchievementFrameAchievementsContainerButton6IconBackfill", "AchievementFrameAchievementsContainerButton6IconBling", "AchievementFrameAchievementsContainerButton6IconOverlay", "AchievementFrameAchievementsContainerButton6IconTexture", "AchievementFrameAchievementsContainerButton6Label", "AchievementFrameAchievementsContainerButton6PlusMinus", "AchievementFrameAchievementsContainerButton6Reward", "AchievementFrameAchievementsContainerButton6RewardBackground", "AchievementFrameAchievementsContainerButton6ShieldIcon", "AchievementFrameAchievementsContainerButton6ShieldPoints", "AchievementFrameAchievementsContainerButton6TitleBackground", "AchievementFrameAchievementsContainerButton6TopLeftTsunami", "AchievementFrameAchievementsContainerButton6TopRightTsunami", "AchievementFrameAchievementsContainerButton6TopTsunami1", "AchievementFrameAchievementsContainerButton6TrackedText", "AchievementFrameAchievementsContainerButton7Background", "AchievementFrameAchievementsContainerButton7BottomLeftTsunami", "AchievementFrameAchievementsContainerButton7BottomRightTsunami", "AchievementFrameAchievementsContainerButton7BottomTsunami1", "AchievementFrameAchievementsContainerButton7Check", "AchievementFrameAchievementsContainerButton7DateCompleted", "AchievementFrameAchievementsContainerButton7Description", "AchievementFrameAchievementsContainerButton7Glow", "AchievementFrameAchievementsContainerButton7HiddenDescription", "AchievementFrameAchievementsContainerButton7HighlightBottom", "AchievementFrameAchievementsContainerButton7HighlightBottomLeft", "AchievementFrameAchievementsContainerButton7HighlightBottomRight", "AchievementFrameAchievementsContainerButton7HighlightLeft", "AchievementFrameAchievementsContainerButton7HighlightRight", "AchievementFrameAchievementsContainerButton7HighlightTop", "AchievementFrameAchievementsContainerButton7HighlightTopLeft", "AchievementFrameAchievementsContainerButton7HighlightTopRight", "AchievementFrameAchievementsContainerButton7IconBackfill", "AchievementFrameAchievementsContainerButton7IconBling", "AchievementFrameAchievementsContainerButton7IconOverlay", "AchievementFrameAchievementsContainerButton7IconTexture", "AchievementFrameAchievementsContainerButton7Label", "AchievementFrameAchievementsContainerButton7PlusMinus", "AchievementFrameAchievementsContainerButton7Reward", "AchievementFrameAchievementsContainerButton7RewardBackground", "AchievementFrameAchievementsContainerButton7ShieldIcon", "AchievementFrameAchievementsContainerButton7ShieldPoints", "AchievementFrameAchievementsContainerButton7TitleBackground", "AchievementFrameAchievementsContainerButton7TopLeftTsunami", "AchievementFrameAchievementsContainerButton7TopRightTsunami", "AchievementFrameAchievementsContainerButton7TopTsunami1", "AchievementFrameAchievementsContainerButton7TrackedText", "AchievementFrameAchievementsContainerScrollBarBG", "AchievementFrameAchievementsContainerScrollBarBottom", "AchievementFrameAchievementsContainerScrollBarMiddle", "AchievementFrameAchievementsContainerScrollBarThumbTexture", "AchievementFrameAchievementsContainerScrollBarTop", "AchievementFrameAchievementsFeatOfStrengthText", "AchievementFrameBackground", "AchievementFrameCategoriesBG", "AchievementFrameCategoriesContainerScrollBarBG", "AchievementFrameCategoriesContainerScrollBarBottom", "AchievementFrameCategoriesContainerScrollBarMiddle", "AchievementFrameCategoriesContainerScrollBarThumbTexture", "AchievementFrameCategoriesContainerScrollBarTop", "AchievementFrameComparisonBackground", "AchievementFrameComparisonContainerButton10FriendBackground", "AchievementFrameComparisonContainerButton10FriendGlow", "AchievementFrameComparisonContainerButton10FriendIconBling", "AchievementFrameComparisonContainerButton10FriendIconOverlay", "AchievementFrameComparisonContainerButton10FriendIconTexture", "AchievementFrameComparisonContainerButton10FriendShieldIcon", "AchievementFrameComparisonContainerButton10FriendShieldPoints", "AchievementFrameComparisonContainerButton10FriendStatus", "AchievementFrameComparisonContainerButton10FriendTitleBackground", "AchievementFrameComparisonContainerButton10PlayerBackground", "AchievementFrameComparisonContainerButton10PlayerDateCompleted", "AchievementFrameComparisonContainerButton10PlayerDescription", "AchievementFrameComparisonContainerButton10PlayerGlow", "AchievementFrameComparisonContainerButton10PlayerIconBling", "AchievementFrameComparisonContainerButton10PlayerIconOverlay", "AchievementFrameComparisonContainerButton10PlayerIconTexture", "AchievementFrameComparisonContainerButton10PlayerLabel", "AchievementFrameComparisonContainerButton10PlayerShieldIcon", "AchievementFrameComparisonContainerButton10PlayerShieldPoints", "AchievementFrameComparisonContainerButton10PlayerTitleBackground", "AchievementFrameComparisonContainerButton1FriendBackground", "AchievementFrameComparisonContainerButton1FriendGlow", "AchievementFrameComparisonContainerButton1FriendIconBling", "AchievementFrameComparisonContainerButton1FriendIconOverlay", "AchievementFrameComparisonContainerButton1FriendIconTexture", "AchievementFrameComparisonContainerButton1FriendShieldIcon", "AchievementFrameComparisonContainerButton1FriendShieldPoints", "AchievementFrameComparisonContainerButton1FriendStatus", "AchievementFrameComparisonContainerButton1FriendTitleBackground", "AchievementFrameComparisonContainerButton1PlayerBackground", "AchievementFrameComparisonContainerButton1PlayerDateCompleted", "AchievementFrameComparisonContainerButton1PlayerDescription", "AchievementFrameComparisonContainerButton1PlayerGlow", "AchievementFrameComparisonContainerButton1PlayerIconBling", "AchievementFrameComparisonContainerButton1PlayerIconOverlay", "AchievementFrameComparisonContainerButton1PlayerIconTexture", "AchievementFrameComparisonContainerButton1PlayerLabel", "AchievementFrameComparisonContainerButton1PlayerShieldIcon", "AchievementFrameComparisonContainerButton1PlayerShieldPoints", "AchievementFrameComparisonContainerButton1PlayerTitleBackground", "AchievementFrameComparisonContainerButton2FriendBackground", "AchievementFrameComparisonContainerButton2FriendGlow", "AchievementFrameComparisonContainerButton2FriendIconBling", "AchievementFrameComparisonContainerButton2FriendIconOverlay", "AchievementFrameComparisonContainerButton2FriendIconTexture", "AchievementFrameComparisonContainerButton2FriendShieldIcon", "AchievementFrameComparisonContainerButton2FriendShieldPoints", "AchievementFrameComparisonContainerButton2FriendStatus", "AchievementFrameComparisonContainerButton2FriendTitleBackground", "AchievementFrameComparisonContainerButton2PlayerBackground", "AchievementFrameComparisonContainerButton2PlayerDateCompleted", "AchievementFrameComparisonContainerButton2PlayerDescription", "AchievementFrameComparisonContainerButton2PlayerGlow", "AchievementFrameComparisonContainerButton2PlayerIconBling", "AchievementFrameComparisonContainerButton2PlayerIconOverlay", "AchievementFrameComparisonContainerButton2PlayerIconTexture", "AchievementFrameComparisonContainerButton2PlayerLabel", "AchievementFrameComparisonContainerButton2PlayerShieldIcon", "AchievementFrameComparisonContainerButton2PlayerShieldPoints", "AchievementFrameComparisonContainerButton2PlayerTitleBackground", "AchievementFrameComparisonContainerButton3FriendBackground", "AchievementFrameComparisonContainerButton3FriendGlow", "AchievementFrameComparisonContainerButton3FriendIconBling", "AchievementFrameComparisonContainerButton3FriendIconOverlay", "AchievementFrameComparisonContainerButton3FriendIconTexture", "AchievementFrameComparisonContainerButton3FriendShieldIcon", "AchievementFrameComparisonContainerButton3FriendShieldPoints", "AchievementFrameComparisonContainerButton3FriendStatus", "AchievementFrameComparisonContainerButton3FriendTitleBackground", "AchievementFrameComparisonContainerButton3PlayerBackground", "AchievementFrameComparisonContainerButton3PlayerDateCompleted", "AchievementFrameComparisonContainerButton3PlayerDescription", "AchievementFrameComparisonContainerButton3PlayerGlow", "AchievementFrameComparisonContainerButton3PlayerIconBling", "AchievementFrameComparisonContainerButton3PlayerIconOverlay", "AchievementFrameComparisonContainerButton3PlayerIconTexture", "AchievementFrameComparisonContainerButton3PlayerLabel", "AchievementFrameComparisonContainerButton3PlayerShieldIcon", "AchievementFrameComparisonContainerButton3PlayerShieldPoints", "AchievementFrameComparisonContainerButton3PlayerTitleBackground", "AchievementFrameComparisonContainerButton4FriendBackground", "AchievementFrameComparisonContainerButton4FriendGlow", "AchievementFrameComparisonContainerButton4FriendIconBling", "AchievementFrameComparisonContainerButton4FriendIconOverlay", "AchievementFrameComparisonContainerButton4FriendIconTexture", "AchievementFrameComparisonContainerButton4FriendShieldIcon", "AchievementFrameComparisonContainerButton4FriendShieldPoints", "AchievementFrameComparisonContainerButton4FriendStatus", "AchievementFrameComparisonContainerButton4FriendTitleBackground", "AchievementFrameComparisonContainerButton4PlayerBackground", "AchievementFrameComparisonContainerButton4PlayerDateCompleted", "AchievementFrameComparisonContainerButton4PlayerDescription", "AchievementFrameComparisonContainerButton4PlayerGlow", "AchievementFrameComparisonContainerButton4PlayerIconBling", "AchievementFrameComparisonContainerButton4PlayerIconOverlay", "AchievementFrameComparisonContainerButton4PlayerIconTexture", "AchievementFrameComparisonContainerButton4PlayerLabel", "AchievementFrameComparisonContainerButton4PlayerShieldIcon", "AchievementFrameComparisonContainerButton4PlayerShieldPoints", "AchievementFrameComparisonContainerButton4PlayerTitleBackground", "AchievementFrameComparisonContainerButton5FriendBackground", "AchievementFrameComparisonContainerButton5FriendGlow", "AchievementFrameComparisonContainerButton5FriendIconBling", "AchievementFrameComparisonContainerButton5FriendIconOverlay", "AchievementFrameComparisonContainerButton5FriendIconTexture", "AchievementFrameComparisonContainerButton5FriendShieldIcon", "AchievementFrameComparisonContainerButton5FriendShieldPoints", "AchievementFrameComparisonContainerButton5FriendStatus", "AchievementFrameComparisonContainerButton5FriendTitleBackground", "AchievementFrameComparisonContainerButton5PlayerBackground", "AchievementFrameComparisonContainerButton5PlayerDateCompleted", "AchievementFrameComparisonContainerButton5PlayerDescription", "AchievementFrameComparisonContainerButton5PlayerGlow", "AchievementFrameComparisonContainerButton5PlayerIconBling", "AchievementFrameComparisonContainerButton5PlayerIconOverlay", "AchievementFrameComparisonContainerButton5PlayerIconTexture", "AchievementFrameComparisonContainerButton5PlayerLabel", "AchievementFrameComparisonContainerButton5PlayerShieldIcon", "AchievementFrameComparisonContainerButton5PlayerShieldPoints", "AchievementFrameComparisonContainerButton5PlayerTitleBackground", "AchievementFrameComparisonContainerButton6FriendBackground", "AchievementFrameComparisonContainerButton6FriendGlow", "AchievementFrameComparisonContainerButton6FriendIconBling", "AchievementFrameComparisonContainerButton6FriendIconOverlay", "AchievementFrameComparisonContainerButton6FriendIconTexture", "AchievementFrameComparisonContainerButton6FriendShieldIcon", "AchievementFrameComparisonContainerButton6FriendShieldPoints", "AchievementFrameComparisonContainerButton6FriendStatus", "AchievementFrameComparisonContainerButton6FriendTitleBackground", "AchievementFrameComparisonContainerButton6PlayerBackground", "AchievementFrameComparisonContainerButton6PlayerDateCompleted", "AchievementFrameComparisonContainerButton6PlayerDescription", "AchievementFrameComparisonContainerButton6PlayerGlow", "AchievementFrameComparisonContainerButton6PlayerIconBling", "AchievementFrameComparisonContainerButton6PlayerIconOverlay", "AchievementFrameComparisonContainerButton6PlayerIconTexture", "AchievementFrameComparisonContainerButton6PlayerLabel", "AchievementFrameComparisonContainerButton6PlayerShieldIcon", "AchievementFrameComparisonContainerButton6PlayerShieldPoints", "AchievementFrameComparisonContainerButton6PlayerTitleBackground", "AchievementFrameComparisonContainerButton7FriendBackground", "AchievementFrameComparisonContainerButton7FriendGlow", "AchievementFrameComparisonContainerButton7FriendIconBling", "AchievementFrameComparisonContainerButton7FriendIconOverlay", "AchievementFrameComparisonContainerButton7FriendIconTexture", "AchievementFrameComparisonContainerButton7FriendShieldIcon", "AchievementFrameComparisonContainerButton7FriendShieldPoints", "AchievementFrameComparisonContainerButton7FriendStatus", "AchievementFrameComparisonContainerButton7FriendTitleBackground", "AchievementFrameComparisonContainerButton7PlayerBackground", "AchievementFrameComparisonContainerButton7PlayerDateCompleted", "AchievementFrameComparisonContainerButton7PlayerDescription", "AchievementFrameComparisonContainerButton7PlayerGlow", "AchievementFrameComparisonContainerButton7PlayerIconBling", "AchievementFrameComparisonContainerButton7PlayerIconOverlay", "AchievementFrameComparisonContainerButton7PlayerIconTexture", "AchievementFrameComparisonContainerButton7PlayerLabel", "AchievementFrameComparisonContainerButton7PlayerShieldIcon", "AchievementFrameComparisonContainerButton7PlayerShieldPoints", "AchievementFrameComparisonContainerButton7PlayerTitleBackground", "AchievementFrameComparisonContainerButton8FriendBackground", "AchievementFrameComparisonContainerButton8FriendGlow", "AchievementFrameComparisonContainerButton8FriendIconBling", "AchievementFrameComparisonContainerButton8FriendIconOverlay", "AchievementFrameComparisonContainerButton8FriendIconTexture", "AchievementFrameComparisonContainerButton8FriendShieldIcon", "AchievementFrameComparisonContainerButton8FriendShieldPoints", "AchievementFrameComparisonContainerButton8FriendStatus", "AchievementFrameComparisonContainerButton8FriendTitleBackground", "AchievementFrameComparisonContainerButton8PlayerBackground", "AchievementFrameComparisonContainerButton8PlayerDateCompleted", "AchievementFrameComparisonContainerButton8PlayerDescription", "AchievementFrameComparisonContainerButton8PlayerGlow", "AchievementFrameComparisonContainerButton8PlayerIconBling", "AchievementFrameComparisonContainerButton8PlayerIconOverlay", "AchievementFrameComparisonContainerButton8PlayerIconTexture", "AchievementFrameComparisonContainerButton8PlayerLabel", "AchievementFrameComparisonContainerButton8PlayerShieldIcon", "AchievementFrameComparisonContainerButton8PlayerShieldPoints", "AchievementFrameComparisonContainerButton8PlayerTitleBackground", "AchievementFrameComparisonContainerButton9FriendBackground", "AchievementFrameComparisonContainerButton9FriendGlow", "AchievementFrameComparisonContainerButton9FriendIconBling", "AchievementFrameComparisonContainerButton9FriendIconOverlay", "AchievementFrameComparisonContainerButton9FriendIconTexture", "AchievementFrameComparisonContainerButton9FriendShieldIcon", "AchievementFrameComparisonContainerButton9FriendShieldPoints", "AchievementFrameComparisonContainerButton9FriendStatus", "AchievementFrameComparisonContainerButton9FriendTitleBackground", "AchievementFrameComparisonContainerButton9PlayerBackground", "AchievementFrameComparisonContainerButton9PlayerDateCompleted", "AchievementFrameComparisonContainerButton9PlayerDescription", "AchievementFrameComparisonContainerButton9PlayerGlow", "AchievementFrameComparisonContainerButton9PlayerIconBling", "AchievementFrameComparisonContainerButton9PlayerIconOverlay", "AchievementFrameComparisonContainerButton9PlayerIconTexture", "AchievementFrameComparisonContainerButton9PlayerLabel", "AchievementFrameComparisonContainerButton9PlayerShieldIcon", "AchievementFrameComparisonContainerButton9PlayerShieldPoints", "AchievementFrameComparisonContainerButton9PlayerTitleBackground", "AchievementFrameComparisonContainerScrollBarBG", "AchievementFrameComparisonContainerScrollBarBottom", "AchievementFrameComparisonContainerScrollBarMiddle", "AchievementFrameComparisonContainerScrollBarThumbTexture", "AchievementFrameComparisonContainerScrollBarTop", "AchievementFrameComparisonDark", "AchievementFrameComparisonHeaderBG", "AchievementFrameComparisonHeaderName", "AchievementFrameComparisonHeaderPoints", "AchievementFrameComparisonHeaderPortrait", "AchievementFrameComparisonHeaderShield", "AchievementFrameComparisonStatsContainerButton10BG", "AchievementFrameComparisonStatsContainerButton10ComparisonValue", "AchievementFrameComparisonStatsContainerButton10HeaderLeft", "AchievementFrameComparisonStatsContainerButton10HeaderLeft2", "AchievementFrameComparisonStatsContainerButton10HeaderMiddle", "AchievementFrameComparisonStatsContainerButton10HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton10HeaderRight", "AchievementFrameComparisonStatsContainerButton10HeaderRight2", "AchievementFrameComparisonStatsContainerButton10Text", "AchievementFrameComparisonStatsContainerButton10Title", "AchievementFrameComparisonStatsContainerButton10Value", "AchievementFrameComparisonStatsContainerButton11BG", "AchievementFrameComparisonStatsContainerButton11ComparisonValue", "AchievementFrameComparisonStatsContainerButton11HeaderLeft", "AchievementFrameComparisonStatsContainerButton11HeaderLeft2", "AchievementFrameComparisonStatsContainerButton11HeaderMiddle", "AchievementFrameComparisonStatsContainerButton11HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton11HeaderRight", "AchievementFrameComparisonStatsContainerButton11HeaderRight2", "AchievementFrameComparisonStatsContainerButton11Text", "AchievementFrameComparisonStatsContainerButton11Title", "AchievementFrameComparisonStatsContainerButton11Value", "AchievementFrameComparisonStatsContainerButton12BG", "AchievementFrameComparisonStatsContainerButton12ComparisonValue", "AchievementFrameComparisonStatsContainerButton12HeaderLeft", "AchievementFrameComparisonStatsContainerButton12HeaderLeft2", "AchievementFrameComparisonStatsContainerButton12HeaderMiddle", "AchievementFrameComparisonStatsContainerButton12HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton12HeaderRight", "AchievementFrameComparisonStatsContainerButton12HeaderRight2", "AchievementFrameComparisonStatsContainerButton12Text", "AchievementFrameComparisonStatsContainerButton12Title", "AchievementFrameComparisonStatsContainerButton12Value", "AchievementFrameComparisonStatsContainerButton13BG", "AchievementFrameComparisonStatsContainerButton13ComparisonValue", "AchievementFrameComparisonStatsContainerButton13HeaderLeft", "AchievementFrameComparisonStatsContainerButton13HeaderLeft2", "AchievementFrameComparisonStatsContainerButton13HeaderMiddle", "AchievementFrameComparisonStatsContainerButton13HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton13HeaderRight", "AchievementFrameComparisonStatsContainerButton13HeaderRight2", "AchievementFrameComparisonStatsContainerButton13Text", "AchievementFrameComparisonStatsContainerButton13Title", "AchievementFrameComparisonStatsContainerButton13Value", "AchievementFrameComparisonStatsContainerButton14BG", "AchievementFrameComparisonStatsContainerButton14ComparisonValue", "AchievementFrameComparisonStatsContainerButton14HeaderLeft", "AchievementFrameComparisonStatsContainerButton14HeaderLeft2", "AchievementFrameComparisonStatsContainerButton14HeaderMiddle", "AchievementFrameComparisonStatsContainerButton14HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton14HeaderRight", "AchievementFrameComparisonStatsContainerButton14HeaderRight2", "AchievementFrameComparisonStatsContainerButton14Text", "AchievementFrameComparisonStatsContainerButton14Title", "AchievementFrameComparisonStatsContainerButton14Value", "AchievementFrameComparisonStatsContainerButton15BG", "AchievementFrameComparisonStatsContainerButton15ComparisonValue", "AchievementFrameComparisonStatsContainerButton15HeaderLeft", "AchievementFrameComparisonStatsContainerButton15HeaderLeft2", "AchievementFrameComparisonStatsContainerButton15HeaderMiddle", "AchievementFrameComparisonStatsContainerButton15HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton15HeaderRight", "AchievementFrameComparisonStatsContainerButton15HeaderRight2", "AchievementFrameComparisonStatsContainerButton15Text", "AchievementFrameComparisonStatsContainerButton15Title", "AchievementFrameComparisonStatsContainerButton15Value", "AchievementFrameComparisonStatsContainerButton16BG", "AchievementFrameComparisonStatsContainerButton16ComparisonValue", "AchievementFrameComparisonStatsContainerButton16HeaderLeft", "AchievementFrameComparisonStatsContainerButton16HeaderLeft2", "AchievementFrameComparisonStatsContainerButton16HeaderMiddle", "AchievementFrameComparisonStatsContainerButton16HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton16HeaderRight", "AchievementFrameComparisonStatsContainerButton16HeaderRight2", "AchievementFrameComparisonStatsContainerButton16Text", "AchievementFrameComparisonStatsContainerButton16Title", "AchievementFrameComparisonStatsContainerButton16Value", "AchievementFrameComparisonStatsContainerButton17BG", "AchievementFrameComparisonStatsContainerButton17ComparisonValue", "AchievementFrameComparisonStatsContainerButton17HeaderLeft", "AchievementFrameComparisonStatsContainerButton17HeaderLeft2", "AchievementFrameComparisonStatsContainerButton17HeaderMiddle", "AchievementFrameComparisonStatsContainerButton17HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton17HeaderRight", "AchievementFrameComparisonStatsContainerButton17HeaderRight2", "AchievementFrameComparisonStatsContainerButton17Text", "AchievementFrameComparisonStatsContainerButton17Title", "AchievementFrameComparisonStatsContainerButton17Value", "AchievementFrameComparisonStatsContainerButton18BG", "AchievementFrameComparisonStatsContainerButton18ComparisonValue", "AchievementFrameComparisonStatsContainerButton18HeaderLeft", "AchievementFrameComparisonStatsContainerButton18HeaderLeft2", "AchievementFrameComparisonStatsContainerButton18HeaderMiddle", "AchievementFrameComparisonStatsContainerButton18HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton18HeaderRight", "AchievementFrameComparisonStatsContainerButton18HeaderRight2", "AchievementFrameComparisonStatsContainerButton18Text", "AchievementFrameComparisonStatsContainerButton18Title", "AchievementFrameComparisonStatsContainerButton18Value", "AchievementFrameComparisonStatsContainerButton19BG", "AchievementFrameComparisonStatsContainerButton19ComparisonValue", "AchievementFrameComparisonStatsContainerButton19HeaderLeft", "AchievementFrameComparisonStatsContainerButton19HeaderLeft2", "AchievementFrameComparisonStatsContainerButton19HeaderMiddle", "AchievementFrameComparisonStatsContainerButton19HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton19HeaderRight", "AchievementFrameComparisonStatsContainerButton19HeaderRight2", "AchievementFrameComparisonStatsContainerButton19Text", "AchievementFrameComparisonStatsContainerButton19Title", "AchievementFrameComparisonStatsContainerButton19Value", "AchievementFrameComparisonStatsContainerButton1BG", "AchievementFrameComparisonStatsContainerButton1ComparisonValue", "AchievementFrameComparisonStatsContainerButton1HeaderLeft", "AchievementFrameComparisonStatsContainerButton1HeaderLeft2", "AchievementFrameComparisonStatsContainerButton1HeaderMiddle", "AchievementFrameComparisonStatsContainerButton1HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton1HeaderRight", "AchievementFrameComparisonStatsContainerButton1HeaderRight2", "AchievementFrameComparisonStatsContainerButton1Text", "AchievementFrameComparisonStatsContainerButton1Title", "AchievementFrameComparisonStatsContainerButton1Value", "AchievementFrameComparisonStatsContainerButton20BG", "AchievementFrameComparisonStatsContainerButton20ComparisonValue", "AchievementFrameComparisonStatsContainerButton20HeaderLeft", "AchievementFrameComparisonStatsContainerButton20HeaderLeft2", "AchievementFrameComparisonStatsContainerButton20HeaderMiddle", "AchievementFrameComparisonStatsContainerButton20HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton20HeaderRight", "AchievementFrameComparisonStatsContainerButton20HeaderRight2", "AchievementFrameComparisonStatsContainerButton20Text", "AchievementFrameComparisonStatsContainerButton20Title", "AchievementFrameComparisonStatsContainerButton20Value", "AchievementFrameComparisonStatsContainerButton2BG", "AchievementFrameComparisonStatsContainerButton2ComparisonValue", "AchievementFrameComparisonStatsContainerButton2HeaderLeft", "AchievementFrameComparisonStatsContainerButton2HeaderLeft2", "AchievementFrameComparisonStatsContainerButton2HeaderMiddle", "AchievementFrameComparisonStatsContainerButton2HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton2HeaderRight", "AchievementFrameComparisonStatsContainerButton2HeaderRight2", "AchievementFrameComparisonStatsContainerButton2Text", "AchievementFrameComparisonStatsContainerButton2Title", "AchievementFrameComparisonStatsContainerButton2Value", "AchievementFrameComparisonStatsContainerButton3BG", "AchievementFrameComparisonStatsContainerButton3ComparisonValue", "AchievementFrameComparisonStatsContainerButton3HeaderLeft", "AchievementFrameComparisonStatsContainerButton3HeaderLeft2", "AchievementFrameComparisonStatsContainerButton3HeaderMiddle", "AchievementFrameComparisonStatsContainerButton3HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton3HeaderRight", "AchievementFrameComparisonStatsContainerButton3HeaderRight2", "AchievementFrameComparisonStatsContainerButton3Text", "AchievementFrameComparisonStatsContainerButton3Title", "AchievementFrameComparisonStatsContainerButton3Value", "AchievementFrameComparisonStatsContainerButton4BG", "AchievementFrameComparisonStatsContainerButton4ComparisonValue", "AchievementFrameComparisonStatsContainerButton4HeaderLeft", "AchievementFrameComparisonStatsContainerButton4HeaderLeft2", "AchievementFrameComparisonStatsContainerButton4HeaderMiddle", "AchievementFrameComparisonStatsContainerButton4HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton4HeaderRight", "AchievementFrameComparisonStatsContainerButton4HeaderRight2", "AchievementFrameComparisonStatsContainerButton4Text", "AchievementFrameComparisonStatsContainerButton4Title", "AchievementFrameComparisonStatsContainerButton4Value", "AchievementFrameComparisonStatsContainerButton5BG", "AchievementFrameComparisonStatsContainerButton5ComparisonValue", "AchievementFrameComparisonStatsContainerButton5HeaderLeft", "AchievementFrameComparisonStatsContainerButton5HeaderLeft2", "AchievementFrameComparisonStatsContainerButton5HeaderMiddle", "AchievementFrameComparisonStatsContainerButton5HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton5HeaderRight", "AchievementFrameComparisonStatsContainerButton5HeaderRight2", "AchievementFrameComparisonStatsContainerButton5Text", "AchievementFrameComparisonStatsContainerButton5Title", "AchievementFrameComparisonStatsContainerButton5Value", "AchievementFrameComparisonStatsContainerButton6BG", "AchievementFrameComparisonStatsContainerButton6ComparisonValue", "AchievementFrameComparisonStatsContainerButton6HeaderLeft", "AchievementFrameComparisonStatsContainerButton6HeaderLeft2", "AchievementFrameComparisonStatsContainerButton6HeaderMiddle", "AchievementFrameComparisonStatsContainerButton6HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton6HeaderRight", "AchievementFrameComparisonStatsContainerButton6HeaderRight2", "AchievementFrameComparisonStatsContainerButton6Text", "AchievementFrameComparisonStatsContainerButton6Title", "AchievementFrameComparisonStatsContainerButton6Value", "AchievementFrameComparisonStatsContainerButton7BG", "AchievementFrameComparisonStatsContainerButton7ComparisonValue", "AchievementFrameComparisonStatsContainerButton7HeaderLeft", "AchievementFrameComparisonStatsContainerButton7HeaderLeft2", "AchievementFrameComparisonStatsContainerButton7HeaderMiddle", "AchievementFrameComparisonStatsContainerButton7HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton7HeaderRight", "AchievementFrameComparisonStatsContainerButton7HeaderRight2", "AchievementFrameComparisonStatsContainerButton7Text", "AchievementFrameComparisonStatsContainerButton7Title", "AchievementFrameComparisonStatsContainerButton7Value", "AchievementFrameComparisonStatsContainerButton8BG", "AchievementFrameComparisonStatsContainerButton8ComparisonValue", "AchievementFrameComparisonStatsContainerButton8HeaderLeft", "AchievementFrameComparisonStatsContainerButton8HeaderLeft2", "AchievementFrameComparisonStatsContainerButton8HeaderMiddle", "AchievementFrameComparisonStatsContainerButton8HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton8HeaderRight", "AchievementFrameComparisonStatsContainerButton8HeaderRight2", "AchievementFrameComparisonStatsContainerButton8Text", "AchievementFrameComparisonStatsContainerButton8Title", "AchievementFrameComparisonStatsContainerButton8Value", "AchievementFrameComparisonStatsContainerButton9BG", "AchievementFrameComparisonStatsContainerButton9ComparisonValue", "AchievementFrameComparisonStatsContainerButton9HeaderLeft", "AchievementFrameComparisonStatsContainerButton9HeaderLeft2", "AchievementFrameComparisonStatsContainerButton9HeaderMiddle", "AchievementFrameComparisonStatsContainerButton9HeaderMiddle2", "AchievementFrameComparisonStatsContainerButton9HeaderRight", "AchievementFrameComparisonStatsContainerButton9HeaderRight2", "AchievementFrameComparisonStatsContainerButton9Text", "AchievementFrameComparisonStatsContainerButton9Title", "AchievementFrameComparisonStatsContainerButton9Value", "AchievementFrameComparisonStatsContainerScrollBarBG", "AchievementFrameComparisonStatsContainerScrollBarBottom", "AchievementFrameComparisonStatsContainerScrollBarMiddle", "AchievementFrameComparisonStatsContainerScrollBarThumbTexture", "AchievementFrameComparisonStatsContainerScrollBarTop", "AchievementFrameComparisonSummaryFriendBackground", "AchievementFrameComparisonSummaryFriendStatusBarBar", "AchievementFrameComparisonSummaryFriendStatusBarFillBar", "AchievementFrameComparisonSummaryFriendStatusBarLeft", "AchievementFrameComparisonSummaryFriendStatusBarMiddle", "AchievementFrameComparisonSummaryFriendStatusBarRight", "AchievementFrameComparisonSummaryFriendStatusBarText", "AchievementFrameComparisonSummaryFriendStatusBarTitle", "AchievementFrameComparisonSummaryPlayerBackground", "AchievementFrameComparisonSummaryPlayerStatusBarBar", "AchievementFrameComparisonSummaryPlayerStatusBarFillBar", "AchievementFrameComparisonSummaryPlayerStatusBarLeft", "AchievementFrameComparisonSummaryPlayerStatusBarMiddle", "AchievementFrameComparisonSummaryPlayerStatusBarRight", "AchievementFrameComparisonSummaryPlayerStatusBarText", "AchievementFrameComparisonSummaryPlayerStatusBarTitle", "AchievementFrameComparisonWatermark", "AchievementFrameFilterDropDownButtonDisabledTexture", "AchievementFrameFilterDropDownButtonHighlightTexture", "AchievementFrameFilterDropDownButtonNormalTexture", "AchievementFrameFilterDropDownButtonPushedTexture", "AchievementFrameFilterDropDownText", "AchievementFrameHeaderLeft", "AchievementFrameHeaderPointBorder", "AchievementFrameHeaderPoints", "AchievementFrameHeaderRight", "AchievementFrameHeaderRightDDLInset", "AchievementFrameHeaderShield", "AchievementFrameHeaderTitle", "AchievementFrameMetalBorderBottom", "AchievementFrameMetalBorderBottomLeft", "AchievementFrameMetalBorderBottomRight", "AchievementFrameMetalBorderLeft", "AchievementFrameMetalBorderRight", "AchievementFrameMetalBorderTop", "AchievementFrameMetalBorderTopLeft", "AchievementFrameMetalBorderTopRight", "AchievementFrameStatsContainerButton10BG", "AchievementFrameStatsContainerButton10HeaderLeft", "AchievementFrameStatsContainerButton10HeaderMiddle", "AchievementFrameStatsContainerButton10HeaderRight", "AchievementFrameStatsContainerButton10Title", "AchievementFrameStatsContainerButton10Value", "AchievementFrameStatsContainerButton11BG", "AchievementFrameStatsContainerButton11HeaderLeft", "AchievementFrameStatsContainerButton11HeaderMiddle", "AchievementFrameStatsContainerButton11HeaderRight", "AchievementFrameStatsContainerButton11Title", "AchievementFrameStatsContainerButton11Value", "AchievementFrameStatsContainerButton12BG", "AchievementFrameStatsContainerButton12HeaderLeft", "AchievementFrameStatsContainerButton12HeaderMiddle", "AchievementFrameStatsContainerButton12HeaderRight", "AchievementFrameStatsContainerButton12Title", "AchievementFrameStatsContainerButton12Value", "AchievementFrameStatsContainerButton13BG", "AchievementFrameStatsContainerButton13HeaderLeft", "AchievementFrameStatsContainerButton13HeaderMiddle", "AchievementFrameStatsContainerButton13HeaderRight", "AchievementFrameStatsContainerButton13Title", "AchievementFrameStatsContainerButton13Value", "AchievementFrameStatsContainerButton14BG", "AchievementFrameStatsContainerButton14HeaderLeft", "AchievementFrameStatsContainerButton14HeaderMiddle", "AchievementFrameStatsContainerButton14HeaderRight", "AchievementFrameStatsContainerButton14Title", "AchievementFrameStatsContainerButton14Value", "AchievementFrameStatsContainerButton15BG", "AchievementFrameStatsContainerButton15HeaderLeft", "AchievementFrameStatsContainerButton15HeaderMiddle", "AchievementFrameStatsContainerButton15HeaderRight", "AchievementFrameStatsContainerButton15Title", "AchievementFrameStatsContainerButton15Value", "AchievementFrameStatsContainerButton16BG", "AchievementFrameStatsContainerButton16HeaderLeft", "AchievementFrameStatsContainerButton16HeaderMiddle", "AchievementFrameStatsContainerButton16HeaderRight", "AchievementFrameStatsContainerButton16Title", "AchievementFrameStatsContainerButton16Value", "AchievementFrameStatsContainerButton17BG", "AchievementFrameStatsContainerButton17HeaderLeft", "AchievementFrameStatsContainerButton17HeaderMiddle", "AchievementFrameStatsContainerButton17HeaderRight", "AchievementFrameStatsContainerButton17Title", "AchievementFrameStatsContainerButton17Value", "AchievementFrameStatsContainerButton18BG", "AchievementFrameStatsContainerButton18HeaderLeft", "AchievementFrameStatsContainerButton18HeaderMiddle", "AchievementFrameStatsContainerButton18HeaderRight", "AchievementFrameStatsContainerButton18Title", "AchievementFrameStatsContainerButton18Value", "AchievementFrameStatsContainerButton19BG", "AchievementFrameStatsContainerButton19HeaderLeft", "AchievementFrameStatsContainerButton19HeaderMiddle", "AchievementFrameStatsContainerButton19HeaderRight", "AchievementFrameStatsContainerButton19Title", "AchievementFrameStatsContainerButton19Value", "AchievementFrameStatsContainerButton1BG", "AchievementFrameStatsContainerButton1HeaderLeft", "AchievementFrameStatsContainerButton1HeaderMiddle", "AchievementFrameStatsContainerButton1HeaderRight", "AchievementFrameStatsContainerButton1Title", "AchievementFrameStatsContainerButton1Value", "AchievementFrameStatsContainerButton20BG", "AchievementFrameStatsContainerButton20HeaderLeft", "AchievementFrameStatsContainerButton20HeaderMiddle", "AchievementFrameStatsContainerButton20HeaderRight", "AchievementFrameStatsContainerButton20Title", "AchievementFrameStatsContainerButton20Value", "AchievementFrameStatsContainerButton2BG", "AchievementFrameStatsContainerButton2HeaderLeft", "AchievementFrameStatsContainerButton2HeaderMiddle", "AchievementFrameStatsContainerButton2HeaderRight", "AchievementFrameStatsContainerButton2Title", "AchievementFrameStatsContainerButton2Value", "AchievementFrameStatsContainerButton3BG", "AchievementFrameStatsContainerButton3HeaderLeft", "AchievementFrameStatsContainerButton3HeaderMiddle", "AchievementFrameStatsContainerButton3HeaderRight", "AchievementFrameStatsContainerButton3Title", "AchievementFrameStatsContainerButton3Value", "AchievementFrameStatsContainerButton4BG", "AchievementFrameStatsContainerButton4HeaderLeft", "AchievementFrameStatsContainerButton4HeaderMiddle", "AchievementFrameStatsContainerButton4HeaderRight", "AchievementFrameStatsContainerButton4Title", "AchievementFrameStatsContainerButton4Value", "AchievementFrameStatsContainerButton5BG", "AchievementFrameStatsContainerButton5HeaderLeft", "AchievementFrameStatsContainerButton5HeaderMiddle", "AchievementFrameStatsContainerButton5HeaderRight", "AchievementFrameStatsContainerButton5Title", "AchievementFrameStatsContainerButton5Value", "AchievementFrameStatsContainerButton6BG", "AchievementFrameStatsContainerButton6HeaderLeft", "AchievementFrameStatsContainerButton6HeaderMiddle", "AchievementFrameStatsContainerButton6HeaderRight", "AchievementFrameStatsContainerButton6Title", "AchievementFrameStatsContainerButton6Value", "AchievementFrameStatsContainerButton7BG", "AchievementFrameStatsContainerButton7HeaderLeft", "AchievementFrameStatsContainerButton7HeaderMiddle", "AchievementFrameStatsContainerButton7HeaderRight", "AchievementFrameStatsContainerButton7Title", "AchievementFrameStatsContainerButton7Value", "AchievementFrameStatsContainerButton8BG", "AchievementFrameStatsContainerButton8HeaderLeft", "AchievementFrameStatsContainerButton8HeaderMiddle", "AchievementFrameStatsContainerButton8HeaderRight", "AchievementFrameStatsContainerButton8Title", "AchievementFrameStatsContainerButton8Value", "AchievementFrameStatsContainerButton9BG", "AchievementFrameStatsContainerButton9HeaderLeft", "AchievementFrameStatsContainerButton9HeaderMiddle", "AchievementFrameStatsContainerButton9HeaderRight", "AchievementFrameStatsContainerButton9Title", "AchievementFrameStatsContainerButton9Value", "AchievementFrameStatsContainerScrollBarBG", "AchievementFrameStatsContainerScrollBarBottom", "AchievementFrameStatsContainerScrollBarMiddle", "AchievementFrameStatsContainerScrollBarThumbTexture", "AchievementFrameStatsContainerScrollBarTop", "AchievementFrameSummaryAchievementsEmptyText", "AchievementFrameSummaryAchievementsHeaderHeader", "AchievementFrameSummaryAchievementsHeaderTitle", "AchievementFrameSummaryBackground", "AchievementFrameSummaryCategoriesCategory1Bar", "AchievementFrameSummaryCategoriesCategory1ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory1ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory1ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory1FillBar", "AchievementFrameSummaryCategoriesCategory1Label", "AchievementFrameSummaryCategoriesCategory1Left", "AchievementFrameSummaryCategoriesCategory1Middle", "AchievementFrameSummaryCategoriesCategory1Right", "AchievementFrameSummaryCategoriesCategory1Text", "AchievementFrameSummaryCategoriesCategory2Bar", "AchievementFrameSummaryCategoriesCategory2ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory2ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory2ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory2FillBar", "AchievementFrameSummaryCategoriesCategory2Label", "AchievementFrameSummaryCategoriesCategory2Left", "AchievementFrameSummaryCategoriesCategory2Middle", "AchievementFrameSummaryCategoriesCategory2Right", "AchievementFrameSummaryCategoriesCategory2Text", "AchievementFrameSummaryCategoriesCategory3Bar", "AchievementFrameSummaryCategoriesCategory3ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory3ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory3ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory3FillBar", "AchievementFrameSummaryCategoriesCategory3Label", "AchievementFrameSummaryCategoriesCategory3Left", "AchievementFrameSummaryCategoriesCategory3Middle", "AchievementFrameSummaryCategoriesCategory3Right", "AchievementFrameSummaryCategoriesCategory3Text", "AchievementFrameSummaryCategoriesCategory4Bar", "AchievementFrameSummaryCategoriesCategory4ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory4ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory4ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory4FillBar", "AchievementFrameSummaryCategoriesCategory4Label", "AchievementFrameSummaryCategoriesCategory4Left", "AchievementFrameSummaryCategoriesCategory4Middle", "AchievementFrameSummaryCategoriesCategory4Right", "AchievementFrameSummaryCategoriesCategory4Text", "AchievementFrameSummaryCategoriesCategory5Bar", "AchievementFrameSummaryCategoriesCategory5ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory5ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory5ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory5FillBar", "AchievementFrameSummaryCategoriesCategory5Label", "AchievementFrameSummaryCategoriesCategory5Left", "AchievementFrameSummaryCategoriesCategory5Middle", "AchievementFrameSummaryCategoriesCategory5Right", "AchievementFrameSummaryCategoriesCategory5Text", "AchievementFrameSummaryCategoriesCategory6Bar", "AchievementFrameSummaryCategoriesCategory6ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory6ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory6ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory6FillBar", "AchievementFrameSummaryCategoriesCategory6Label", "AchievementFrameSummaryCategoriesCategory6Left", "AchievementFrameSummaryCategoriesCategory6Middle", "AchievementFrameSummaryCategoriesCategory6Right", "AchievementFrameSummaryCategoriesCategory6Text", "AchievementFrameSummaryCategoriesCategory7Bar", "AchievementFrameSummaryCategoriesCategory7ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory7ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory7ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory7FillBar", "AchievementFrameSummaryCategoriesCategory7Label", "AchievementFrameSummaryCategoriesCategory7Left", "AchievementFrameSummaryCategoriesCategory7Middle", "AchievementFrameSummaryCategoriesCategory7Right", "AchievementFrameSummaryCategoriesCategory7Text", "AchievementFrameSummaryCategoriesCategory8Bar", "AchievementFrameSummaryCategoriesCategory8ButtonHighlightLeft", "AchievementFrameSummaryCategoriesCategory8ButtonHighlightMiddle", "AchievementFrameSummaryCategoriesCategory8ButtonHighlightRight", "AchievementFrameSummaryCategoriesCategory8FillBar", "AchievementFrameSummaryCategoriesCategory8Label", "AchievementFrameSummaryCategoriesCategory8Left", "AchievementFrameSummaryCategoriesCategory8Middle", "AchievementFrameSummaryCategoriesCategory8Right", "AchievementFrameSummaryCategoriesCategory8Text", "AchievementFrameSummaryCategoriesHeaderTexture", "AchievementFrameSummaryCategoriesHeaderTitle", "AchievementFrameSummaryCategoriesStatusBarBar", "AchievementFrameSummaryCategoriesStatusBarFillBar", "AchievementFrameSummaryCategoriesStatusBarLeft", "AchievementFrameSummaryCategoriesStatusBarMiddle", "AchievementFrameSummaryCategoriesStatusBarRight", "AchievementFrameSummaryCategoriesStatusBarText", "AchievementFrameSummaryCategoriesStatusBarTitle", "AchievementFrameTab1Left", "AchievementFrameTab1LeftDisabled", "AchievementFrameTab1LeftHighlight", "AchievementFrameTab1Middle", "AchievementFrameTab1MiddleDisabled", "AchievementFrameTab1MiddleHighlight", "AchievementFrameTab1Right", "AchievementFrameTab1RightDisabled", "AchievementFrameTab1RightHighlight", "AchievementFrameTab1Text", "AchievementFrameTab2Left", "AchievementFrameTab2LeftDisabled", "AchievementFrameTab2LeftHighlight", "AchievementFrameTab2Middle", "AchievementFrameTab2MiddleDisabled", "AchievementFrameTab2MiddleHighlight", "AchievementFrameTab2Right", "AchievementFrameTab2RightDisabled", "AchievementFrameTab2RightHighlight", "AchievementFrameTab2Text", "AchievementFrameWaterMark", "AchievementFrameWoodBorderBottomLeft", "AchievementFrameWoodBorderBottomRight", "AchievementFrameWoodBorderTopLeft", "AchievementFrameWoodBorderTopRight", -- functions: Blizzard_ArenaUI "ArenaEnemyBackground_SetOpacity", "ArenaEnemyDropDown_Initialize", "ArenaEnemyFrame_Lock", "ArenaEnemyFrame_OnEvent", "ArenaEnemyFrame_OnLoad", "ArenaEnemyFrame_SetMysteryPlayer", "ArenaEnemyFrame_Unlock", "ArenaEnemyFrame_UpdatePet", "ArenaEnemyFrame_UpdatePlayer", "ArenaEnemyFrames_Disable", "ArenaEnemyFrames_Enable", "ArenaEnemyFrames_OnEvent", "ArenaEnemyFrames_OnHide", "ArenaEnemyFrames_OnLoad", "ArenaEnemyFrames_OnShow", "ArenaEnemyFrames_UpdateVisible", "ArenaEnemyFrames_UpdateWatchFrame", "ArenaEnemyPetDropDown_Initialize", "ArenaEnemyPetFrame_OnEvent", "ArenaEnemyPetFrame_OnLoad", "UpdateArenaEnemyBackground", -- tables: Blizzard_ArenaUI "AchievementFrameCategoriesContainerButton1", "AchievementFrameCategoriesContainerButton10", "AchievementFrameCategoriesContainerButton11", "AchievementFrameCategoriesContainerButton12", "AchievementFrameCategoriesContainerButton13", "AchievementFrameCategoriesContainerButton14", "AchievementFrameCategoriesContainerButton15", "AchievementFrameCategoriesContainerButton16", "AchievementFrameCategoriesContainerButton17", "AchievementFrameCategoriesContainerButton18", "AchievementFrameCategoriesContainerButton19", "AchievementFrameCategoriesContainerButton2", "AchievementFrameCategoriesContainerButton20", "AchievementFrameCategoriesContainerButton3", "AchievementFrameCategoriesContainerButton4", "AchievementFrameCategoriesContainerButton5", "AchievementFrameCategoriesContainerButton6", "AchievementFrameCategoriesContainerButton7", "AchievementFrameCategoriesContainerButton8", "AchievementFrameCategoriesContainerButton9", "ArenaEnemyBackground", "ArenaEnemyFrame1", "ArenaEnemyFrame1CastingBar", "ArenaEnemyFrame1DropDown", "ArenaEnemyFrame1DropDownButton", "ArenaEnemyFrame1HealthBar", "ArenaEnemyFrame1ManaBar", "ArenaEnemyFrame1PetFrame", "ArenaEnemyFrame1PetFrameDropDown", "ArenaEnemyFrame1PetFrameDropDownButton", "ArenaEnemyFrame1PetFrameHealthBar", "ArenaEnemyFrame1PetFrameManaBar", "ArenaEnemyFrame2", "ArenaEnemyFrame2CastingBar", "ArenaEnemyFrame2DropDown", "ArenaEnemyFrame2DropDownButton", "ArenaEnemyFrame2HealthBar", "ArenaEnemyFrame2ManaBar", "ArenaEnemyFrame2PetFrame", "ArenaEnemyFrame2PetFrameDropDown", "ArenaEnemyFrame2PetFrameDropDownButton", "ArenaEnemyFrame2PetFrameHealthBar", "ArenaEnemyFrame2PetFrameManaBar", "ArenaEnemyFrame3", "ArenaEnemyFrame3CastingBar", "ArenaEnemyFrame3DropDown", "ArenaEnemyFrame3DropDownButton", "ArenaEnemyFrame3HealthBar", "ArenaEnemyFrame3ManaBar", "ArenaEnemyFrame3PetFrame", "ArenaEnemyFrame3PetFrameDropDown", "ArenaEnemyFrame3PetFrameDropDownButton", "ArenaEnemyFrame3PetFrameHealthBar", "ArenaEnemyFrame3PetFrameManaBar", "ArenaEnemyFrame4", "ArenaEnemyFrame4CastingBar", "ArenaEnemyFrame4DropDown", "ArenaEnemyFrame4DropDownButton", "ArenaEnemyFrame4HealthBar", "ArenaEnemyFrame4ManaBar", "ArenaEnemyFrame4PetFrame", "ArenaEnemyFrame4PetFrameDropDown", "ArenaEnemyFrame4PetFrameDropDownButton", "ArenaEnemyFrame4PetFrameHealthBar", "ArenaEnemyFrame4PetFrameManaBar", "ArenaEnemyFrame5", "ArenaEnemyFrame5CastingBar", "ArenaEnemyFrame5DropDownButton", "ArenaEnemyFrame5HealthBar", "ArenaEnemyFrame5ManaBar", "ArenaEnemyFrame5PetFrame", "ArenaEnemyFrame5PetFrameDropDown", "ArenaEnemyFrame5PetFrameDropDownButton", "ArenaEnemyFrame5PetFrameHealthBar", "ArenaEnemyFrame5PetFrameManaBar", "ArenaEnemyFrames", "UIDROPDOWNMENU_INIT_MENU", -- frames: Blizzard_ArenaUI "AchievementFrameCategoriesContainerButton1", "AchievementFrameCategoriesContainerButton2", "AchievementFrameCategoriesContainerButton3", "AchievementFrameCategoriesContainerButton4", "AchievementFrameCategoriesContainerButton5", "AchievementFrameCategoriesContainerButton6", "AchievementFrameCategoriesContainerButton7", "AchievementFrameCategoriesContainerButton8", "AchievementFrameCategoriesContainerButton9", "AchievementFrameCategoriesContainerButton10", "AchievementFrameCategoriesContainerButton11", "AchievementFrameCategoriesContainerButton12", "AchievementFrameCategoriesContainerButton13", "AchievementFrameCategoriesContainerButton14", "AchievementFrameCategoriesContainerButton15", "AchievementFrameCategoriesContainerButton16", "AchievementFrameCategoriesContainerButton17", "AchievementFrameCategoriesContainerButton18", "AchievementFrameCategoriesContainerButton19", "AchievementFrameCategoriesContainerButton20", "ArenaEnemyFrames", "ArenaEnemyFrame1", "ArenaEnemyFrame1DropDown", "ArenaEnemyFrame1DropDownButton", "ArenaEnemyFrame1HealthBar", "ArenaEnemyFrame1ManaBar", "ArenaEnemyFrame1PetFrame", "ArenaEnemyFrame1PetFrameHealthBar", "ArenaEnemyFrame1PetFrameManaBar", "ArenaEnemyFrame1PetFrameDropDown", "ArenaEnemyFrame1PetFrameDropDownButton", "ArenaEnemyFrame1CastingBar", "ArenaEnemyFrame2", "ArenaEnemyFrame2DropDown", "ArenaEnemyFrame2DropDownButton", "ArenaEnemyFrame2HealthBar", "ArenaEnemyFrame2ManaBar", "ArenaEnemyFrame2PetFrame", "ArenaEnemyFrame2PetFrameHealthBar", "ArenaEnemyFrame2PetFrameManaBar", "ArenaEnemyFrame2PetFrameDropDown", "ArenaEnemyFrame2PetFrameDropDownButton", "ArenaEnemyFrame2CastingBar", "ArenaEnemyFrame3", "ArenaEnemyFrame3DropDown", "ArenaEnemyFrame3DropDownButton", "ArenaEnemyFrame3HealthBar", "ArenaEnemyFrame3ManaBar", "ArenaEnemyFrame3PetFrame", "ArenaEnemyFrame3PetFrameHealthBar", "ArenaEnemyFrame3PetFrameManaBar", "ArenaEnemyFrame3PetFrameDropDown", "ArenaEnemyFrame3PetFrameDropDownButton", "ArenaEnemyFrame3CastingBar", "ArenaEnemyFrame4", "ArenaEnemyFrame4DropDown", "ArenaEnemyFrame4DropDownButton", "ArenaEnemyFrame4HealthBar", "ArenaEnemyFrame4ManaBar", "ArenaEnemyFrame4PetFrame", "ArenaEnemyFrame4PetFrameHealthBar", "ArenaEnemyFrame4PetFrameManaBar", "ArenaEnemyFrame4PetFrameDropDown", "ArenaEnemyFrame4PetFrameDropDownButton", "ArenaEnemyFrame4CastingBar", "ArenaEnemyFrame5", "ArenaEnemyFrame5DropDown", "ArenaEnemyFrame5DropDownButton", "ArenaEnemyFrame5HealthBar", "ArenaEnemyFrame5ManaBar", "ArenaEnemyFrame5PetFrame", "ArenaEnemyFrame5PetFrameHealthBar", "ArenaEnemyFrame5PetFrameManaBar", "ArenaEnemyFrame5PetFrameDropDown", "ArenaEnemyFrame5PetFrameDropDownButton", "ArenaEnemyFrame5CastingBar", "ArenaEnemyBackground", -- widgets: Blizzard_ArenaUI "AchievementFrameCategoriesContainerButton10Background", "AchievementFrameCategoriesContainerButton10Label", "AchievementFrameCategoriesContainerButton11Background", "AchievementFrameCategoriesContainerButton11Label", "AchievementFrameCategoriesContainerButton12Background", "AchievementFrameCategoriesContainerButton12Label", "AchievementFrameCategoriesContainerButton13Background", "AchievementFrameCategoriesContainerButton13Label", "AchievementFrameCategoriesContainerButton14Background", "AchievementFrameCategoriesContainerButton14Label", "AchievementFrameCategoriesContainerButton15Background", "AchievementFrameCategoriesContainerButton15Label", "AchievementFrameCategoriesContainerButton16Background", "AchievementFrameCategoriesContainerButton16Label", "AchievementFrameCategoriesContainerButton17Background", "AchievementFrameCategoriesContainerButton17Label", "AchievementFrameCategoriesContainerButton18Background", "AchievementFrameCategoriesContainerButton18Label", "AchievementFrameCategoriesContainerButton19Background", "AchievementFrameCategoriesContainerButton19Label", "AchievementFrameCategoriesContainerButton1Background", "AchievementFrameCategoriesContainerButton1Label", "AchievementFrameCategoriesContainerButton20Background", "AchievementFrameCategoriesContainerButton20Label", "AchievementFrameCategoriesContainerButton2Background", "AchievementFrameCategoriesContainerButton2Label", "AchievementFrameCategoriesContainerButton3Background", "AchievementFrameCategoriesContainerButton3Label", "AchievementFrameCategoriesContainerButton4Background", "AchievementFrameCategoriesContainerButton4Label", "AchievementFrameCategoriesContainerButton5Background", "AchievementFrameCategoriesContainerButton5Label", "AchievementFrameCategoriesContainerButton6Background", "AchievementFrameCategoriesContainerButton6Label", "AchievementFrameCategoriesContainerButton7Background", "AchievementFrameCategoriesContainerButton7Label", "AchievementFrameCategoriesContainerButton8Background", "AchievementFrameCategoriesContainerButton8Label", "AchievementFrameCategoriesContainerButton9Background", "AchievementFrameCategoriesContainerButton9Label", "ArenaEnemyFrame1Background", "ArenaEnemyFrame1CastingBarBorderShield", "ArenaEnemyFrame1CastingBarFlash", "ArenaEnemyFrame1CastingBarIcon", "ArenaEnemyFrame1CastingBarSpark", "ArenaEnemyFrame1CastingBarText", "ArenaEnemyFrame1ClassPortrait", "ArenaEnemyFrame1Disconnect", "ArenaEnemyFrame1DropDownButtonDisabledTexture", "ArenaEnemyFrame1DropDownButtonHighlightTexture", "ArenaEnemyFrame1DropDownButtonNormalTexture", "ArenaEnemyFrame1DropDownButtonPushedTexture", "ArenaEnemyFrame1DropDownLeft", "ArenaEnemyFrame1DropDownMiddle", "ArenaEnemyFrame1DropDownRight", "ArenaEnemyFrame1DropDownText", "ArenaEnemyFrame1Flash", "ArenaEnemyFrame1HealthBarText", "ArenaEnemyFrame1ManaBarText", "ArenaEnemyFrame1Name", "ArenaEnemyFrame1PetFrameDropDownButtonDisabledTexture", "ArenaEnemyFrame1PetFrameDropDownButtonHighlightTexture", "ArenaEnemyFrame1PetFrameDropDownButtonNormalTexture", "ArenaEnemyFrame1PetFrameDropDownButtonPushedTexture", "ArenaEnemyFrame1PetFrameDropDownLeft", "ArenaEnemyFrame1PetFrameDropDownMiddle", "ArenaEnemyFrame1PetFrameDropDownRight", "ArenaEnemyFrame1PetFrameDropDownText", "ArenaEnemyFrame1PetFrameFlash", "ArenaEnemyFrame1PetFrameName", "ArenaEnemyFrame1PetFramePortrait", "ArenaEnemyFrame1PetFrameTexture", "ArenaEnemyFrame1Status", "ArenaEnemyFrame1Texture", "ArenaEnemyFrame2Background", "ArenaEnemyFrame2CastingBarBorderShield", "ArenaEnemyFrame2CastingBarFlash", "ArenaEnemyFrame2CastingBarIcon", "ArenaEnemyFrame2CastingBarSpark", "ArenaEnemyFrame2CastingBarText", "ArenaEnemyFrame2ClassPortrait", "ArenaEnemyFrame2Disconnect", "ArenaEnemyFrame2DropDownButtonDisabledTexture", "ArenaEnemyFrame2DropDownButtonHighlightTexture", "ArenaEnemyFrame2DropDownButtonNormalTexture", "ArenaEnemyFrame2DropDownButtonPushedTexture", "ArenaEnemyFrame2DropDownLeft", "ArenaEnemyFrame2DropDownMiddle", "ArenaEnemyFrame2DropDownRight", "ArenaEnemyFrame2DropDownText", "ArenaEnemyFrame2Flash", "ArenaEnemyFrame2HealthBarText", "ArenaEnemyFrame2ManaBarText", "ArenaEnemyFrame2Name", "ArenaEnemyFrame2PetFrameDropDownButtonDisabledTexture", "ArenaEnemyFrame2PetFrameDropDownButtonHighlightTexture", "ArenaEnemyFrame2PetFrameDropDownButtonNormalTexture", "ArenaEnemyFrame2PetFrameDropDownButtonPushedTexture", "ArenaEnemyFrame2PetFrameDropDownLeft", "ArenaEnemyFrame2PetFrameDropDownMiddle", "ArenaEnemyFrame2PetFrameDropDownRight", "ArenaEnemyFrame2PetFrameDropDownText", "ArenaEnemyFrame2PetFrameFlash", "ArenaEnemyFrame2PetFrameName", "ArenaEnemyFrame2PetFramePortrait", "ArenaEnemyFrame2PetFrameTexture", "ArenaEnemyFrame2Status", "ArenaEnemyFrame2Texture", "ArenaEnemyFrame3Background", "ArenaEnemyFrame3CastingBarBorderShield", "ArenaEnemyFrame3CastingBarFlash", "ArenaEnemyFrame3CastingBarIcon", "ArenaEnemyFrame3CastingBarSpark", "ArenaEnemyFrame3CastingBarText", "ArenaEnemyFrame3ClassPortrait", "ArenaEnemyFrame3Disconnect", "ArenaEnemyFrame3DropDownButtonDisabledTexture", "ArenaEnemyFrame3DropDownButtonHighlightTexture", "ArenaEnemyFrame3DropDownButtonNormalTexture", "ArenaEnemyFrame3DropDownButtonPushedTexture", "ArenaEnemyFrame3DropDownLeft", "ArenaEnemyFrame3DropDownMiddle", "ArenaEnemyFrame3DropDownRight", "ArenaEnemyFrame3DropDownText", "ArenaEnemyFrame3Flash", "ArenaEnemyFrame3HealthBarText", "ArenaEnemyFrame3ManaBarText", "ArenaEnemyFrame3Name", "ArenaEnemyFrame3PetFrameDropDownButtonDisabledTexture", "ArenaEnemyFrame3PetFrameDropDownButtonHighlightTexture", "ArenaEnemyFrame3PetFrameDropDownButtonNormalTexture", "ArenaEnemyFrame3PetFrameDropDownButtonPushedTexture", "ArenaEnemyFrame3PetFrameDropDownLeft", "ArenaEnemyFrame3PetFrameDropDownMiddle", "ArenaEnemyFrame3PetFrameDropDownRight", "ArenaEnemyFrame3PetFrameDropDownText", "ArenaEnemyFrame3PetFrameFlash", "ArenaEnemyFrame3PetFrameName", "ArenaEnemyFrame3PetFramePortrait", "ArenaEnemyFrame3PetFrameTexture", "ArenaEnemyFrame3Status", "ArenaEnemyFrame3Texture", "ArenaEnemyFrame4Background", "ArenaEnemyFrame4CastingBarBorderShield", "ArenaEnemyFrame4CastingBarFlash", "ArenaEnemyFrame4CastingBarIcon", "ArenaEnemyFrame4CastingBarSpark", "ArenaEnemyFrame4CastingBarText", "ArenaEnemyFrame4ClassPortrait", "ArenaEnemyFrame4Disconnect", "ArenaEnemyFrame4DropDownButtonDisabledTexture", "ArenaEnemyFrame4DropDownButtonHighlightTexture", "ArenaEnemyFrame4DropDownButtonNormalTexture", "ArenaEnemyFrame4DropDownButtonPushedTexture", "ArenaEnemyFrame4DropDownLeft", "ArenaEnemyFrame4DropDownMiddle", "ArenaEnemyFrame4DropDownRight", "ArenaEnemyFrame4DropDownText", "ArenaEnemyFrame4Flash", "ArenaEnemyFrame4HealthBarText", "ArenaEnemyFrame4ManaBarText", "ArenaEnemyFrame4Name", "ArenaEnemyFrame4PetFrameDropDownButtonDisabledTexture", "ArenaEnemyFrame4PetFrameDropDownButtonHighlightTexture", "ArenaEnemyFrame4PetFrameDropDownButtonNormalTexture", "ArenaEnemyFrame4PetFrameDropDownButtonPushedTexture", "ArenaEnemyFrame4PetFrameDropDownLeft", "ArenaEnemyFrame4PetFrameDropDownMiddle", "ArenaEnemyFrame4PetFrameDropDownRight", "ArenaEnemyFrame4PetFrameDropDownText", "ArenaEnemyFrame4PetFrameFlash", "ArenaEnemyFrame4PetFrameName", "ArenaEnemyFrame4PetFramePortrait", "ArenaEnemyFrame4PetFrameTexture", "ArenaEnemyFrame4Status", "ArenaEnemyFrame4Texture", "ArenaEnemyFrame5Background", "ArenaEnemyFrame5CastingBarBorderShield", "ArenaEnemyFrame5CastingBarFlash", "ArenaEnemyFrame5CastingBarIcon", "ArenaEnemyFrame5CastingBarSpark", "ArenaEnemyFrame5CastingBarText", "ArenaEnemyFrame5ClassPortrait", "ArenaEnemyFrame5Disconnect", "ArenaEnemyFrame5DropDownButtonDisabledTexture", "ArenaEnemyFrame5DropDownButtonHighlightTexture", "ArenaEnemyFrame5DropDownButtonNormalTexture", "ArenaEnemyFrame5DropDownButtonPushedTexture", "ArenaEnemyFrame5DropDownLeft", "ArenaEnemyFrame5DropDownMiddle", "ArenaEnemyFrame5DropDownRight", "ArenaEnemyFrame5DropDownText", "ArenaEnemyFrame5Flash", "ArenaEnemyFrame5HealthBarText", "ArenaEnemyFrame5ManaBarText", "ArenaEnemyFrame5Name", "ArenaEnemyFrame5PetFrameDropDownButtonDisabledTexture", "ArenaEnemyFrame5PetFrameDropDownButtonHighlightTexture", "ArenaEnemyFrame5PetFrameDropDownButtonNormalTexture", "ArenaEnemyFrame5PetFrameDropDownButtonPushedTexture", "ArenaEnemyFrame5PetFrameDropDownLeft", "ArenaEnemyFrame5PetFrameDropDownMiddle", "ArenaEnemyFrame5PetFrameDropDownRight", "ArenaEnemyFrame5PetFrameDropDownText", "ArenaEnemyFrame5PetFrameFlash", "ArenaEnemyFrame5PetFrameName", "ArenaEnemyFrame5PetFramePortrait", "ArenaEnemyFrame5PetFrameTexture", "ArenaEnemyFrame5Status", "ArenaEnemyFrame5Texture", -- functions: Blizzard_AuctionUI "AuctionDressUpFrame_OnHide", "AuctionDressUpFrame_OnShow", "AuctionFrameAuctions_OnEvent", "AuctionFrameAuctions_OnLoad", "AuctionFrameAuctions_OnShow", "AuctionFrameAuctions_Update", "AuctionFrameBid_OnEvent", "AuctionFrameBid_OnLoad", "AuctionFrameBid_OnShow", "AuctionFrameBid_Update", "AuctionFrameBrowse_InitClasses", "AuctionFrameBrowse_OnEvent", "AuctionFrameBrowse_OnLoad", "AuctionFrameBrowse_OnShow", "AuctionFrameBrowse_Reset", "AuctionFrameBrowse_Search", "AuctionFrameBrowse_Update", "AuctionFrameBrowse_UpdateArrows", "AuctionFrameFilter_OnClick", "AuctionFrameFilters_Update", "AuctionFrameFilters_UpdateClasses", "AuctionFrameFilters_UpdateInvTypes", "AuctionFrameFilters_UpdateSubClasses", "AuctionFrameItem_OnEnter", "AuctionFrameTab_OnClick", "AuctionFrame_GetTimeLeftText", "AuctionFrame_GetTimeLeftTooltipText", "AuctionFrame_Hide", "AuctionFrame_OnClickSortColumn", "AuctionFrame_OnLoad", "AuctionFrame_OnShow", "AuctionFrame_SetSort", "AuctionFrame_Show", "AuctionProgressFrame_OnUpdate", "AuctionSellItemButton_OnClick", "AuctionSellItemButton_OnEvent", "AuctionsButton_OnClick", "AuctionsCreateAuctionButton_OnClick", "AuctionsFrameAuctions_ValidateAuction", "BidButton_OnClick", "BrowseButton_OnClick", "BrowseDropDown_Initialize", "BrowseDropDown_OnClick", "BrowseDropDown_OnLoad", "BrowseResetButton_OnUpdate", "BrowseSearchButton_OnUpdate", "CloseAuctionStaticPopups", "DressUpItemLink", "DurationDropDown_Initialize", "DurationDropDown_OnClick", "DurationDropDown_OnLoad", "FilterButton_SetType", "PriceDropDown_Initialize", "PriceDropDown_OnClick", "PriceDropDown_OnLoad", "SetAuctionDressUpBackground", "SetMaxStackSize", "SortButton_UpdateArrow", "UpdateDeposit", "UpdateMaximumButtons", -- tables: Blizzard_AuctionUI "AuctionDressUpFrame", "AuctionDressUpFrameCloseButton", "AuctionDressUpFrameResetButton", "AuctionDressUpModel", "AuctionDressUpModelRotateLeftButton", "AuctionDressUpModelRotateRightButton", "AuctionFilterButton1", "AuctionFilterButton10", "AuctionFilterButton11", "AuctionFilterButton12", "AuctionFilterButton13", "AuctionFilterButton14", "AuctionFilterButton15", "AuctionFilterButton2", "AuctionFilterButton3", "AuctionFilterButton4", "AuctionFilterButton5", "AuctionFilterButton6", "AuctionFilterButton7", "AuctionFilterButton8", "AuctionFilterButton9", "AuctionFrame", "AuctionFrameAuctions", "AuctionFrameBid", "AuctionFrameBrowse", "AuctionFrameCloseButton", "AuctionFrameMoneyFrame", "AuctionFrameMoneyFrameCopperButton", "AuctionFrameMoneyFrameGoldButton", "AuctionFrameMoneyFrameSilverButton", "AuctionFrameTab1", "AuctionFrameTab2", "AuctionFrameTab3", "AuctionProgressBar", "AuctionProgressFrame", "AuctionProgressFrameCancelButton", "AuctionSort", "AuctionsBidSort", "AuctionsBlockFrame", "AuctionsButton1", "AuctionsButton1BuyoutFrame", "AuctionsButton1BuyoutFrameMoney", "AuctionsButton1BuyoutFrameMoneyCopperButton", "AuctionsButton1BuyoutFrameMoneyGoldButton", "AuctionsButton1BuyoutFrameMoneySilverButton", "AuctionsButton1BuyoutFrameText", "AuctionsButton1ClosingTime", "AuctionsButton1Item", "AuctionsButton1MoneyFrame", "AuctionsButton1MoneyFrameCopperButton", "AuctionsButton1MoneyFrameGoldButton", "AuctionsButton1MoneyFrameSilverButton", "AuctionsButton2", "AuctionsButton2BuyoutFrame", "AuctionsButton2BuyoutFrameMoney", "AuctionsButton2BuyoutFrameMoneyCopperButton", "AuctionsButton2BuyoutFrameMoneyGoldButton", "AuctionsButton2BuyoutFrameMoneySilverButton", "AuctionsButton2BuyoutFrameText", "AuctionsButton2ClosingTime", "AuctionsButton2Item", "AuctionsButton2MoneyFrame", "AuctionsButton2MoneyFrameCopperButton", "AuctionsButton2MoneyFrameGoldButton", "AuctionsButton2MoneyFrameSilverButton", "AuctionsButton3", "AuctionsButton3BuyoutFrame", "AuctionsButton3BuyoutFrameMoney", "AuctionsButton3BuyoutFrameMoneyCopperButton", "AuctionsButton3BuyoutFrameMoneyGoldButton", "AuctionsButton3BuyoutFrameMoneySilverButton", "AuctionsButton3BuyoutFrameText", "AuctionsButton3ClosingTime", "AuctionsButton3Item", "AuctionsButton3MoneyFrame", "AuctionsButton3MoneyFrameCopperButton", "AuctionsButton3MoneyFrameGoldButton", "AuctionsButton3MoneyFrameSilverButton", "AuctionsButton4", "AuctionsButton4BuyoutFrame", "AuctionsButton4BuyoutFrameMoney", "AuctionsButton4BuyoutFrameMoneyCopperButton", "AuctionsButton4BuyoutFrameMoneyGoldButton", "AuctionsButton4BuyoutFrameMoneySilverButton", "AuctionsButton4BuyoutFrameText", "AuctionsButton4ClosingTime", "AuctionsButton4Item", "AuctionsButton4MoneyFrame", "AuctionsButton4MoneyFrameCopperButton", "AuctionsButton4MoneyFrameGoldButton", "AuctionsButton4MoneyFrameSilverButton", "AuctionsButton5", "AuctionsButton5BuyoutFrame", "AuctionsButton5BuyoutFrameMoney", "AuctionsButton5BuyoutFrameMoneyCopperButton", "AuctionsButton5BuyoutFrameMoneyGoldButton", "AuctionsButton5BuyoutFrameMoneySilverButton", "AuctionsButton5BuyoutFrameText", "AuctionsButton5ClosingTime", "AuctionsButton5Item", "AuctionsButton5MoneyFrame", "AuctionsButton5MoneyFrameCopperButton", "AuctionsButton5MoneyFrameGoldButton", "AuctionsButton5MoneyFrameSilverButton", "AuctionsButton6", "AuctionsButton6BuyoutFrame", "AuctionsButton6BuyoutFrameMoney", "AuctionsButton6BuyoutFrameMoneyCopperButton", "AuctionsButton6BuyoutFrameMoneyGoldButton", "AuctionsButton6BuyoutFrameMoneySilverButton", "AuctionsButton6BuyoutFrameText", "AuctionsButton6ClosingTime", "AuctionsButton6Item", "AuctionsButton6MoneyFrame", "AuctionsButton6MoneyFrameCopperButton", "AuctionsButton6MoneyFrameGoldButton", "AuctionsButton6MoneyFrameSilverButton", "AuctionsButton7", "AuctionsButton7BuyoutFrame", "AuctionsButton7BuyoutFrameMoney", "AuctionsButton7BuyoutFrameMoneyCopperButton", "AuctionsButton7BuyoutFrameMoneyGoldButton", "AuctionsButton7BuyoutFrameMoneySilverButton", "AuctionsButton7BuyoutFrameText", "AuctionsButton7ClosingTime", "AuctionsButton7Item", "AuctionsButton7MoneyFrame", "AuctionsButton7MoneyFrameCopperButton", "AuctionsButton7MoneyFrameGoldButton", "AuctionsButton7MoneyFrameSilverButton", "AuctionsButton8", "AuctionsButton8BuyoutFrame", "AuctionsButton8BuyoutFrameMoney", "AuctionsButton8BuyoutFrameMoneyCopperButton", "AuctionsButton8BuyoutFrameMoneyGoldButton", "AuctionsButton8BuyoutFrameMoneySilverButton", "AuctionsButton8BuyoutFrameText", "AuctionsButton8ClosingTime", "AuctionsButton8Item", "AuctionsButton8MoneyFrame", "AuctionsButton8MoneyFrameCopperButton", "AuctionsButton8MoneyFrameGoldButton", "AuctionsButton8MoneyFrameSilverButton", "AuctionsButton9", "AuctionsButton9BuyoutFrame", "AuctionsButton9BuyoutFrameMoney", "AuctionsButton9BuyoutFrameMoneyCopperButton", "AuctionsButton9BuyoutFrameMoneyGoldButton", "AuctionsButton9BuyoutFrameMoneySilverButton", "AuctionsButton9BuyoutFrameText", "AuctionsButton9ClosingTime", "AuctionsButton9Item", "AuctionsButton9MoneyFrame", "AuctionsButton9MoneyFrameCopperButton", "AuctionsButton9MoneyFrameGoldButton", "AuctionsButton9MoneyFrameSilverButton", "AuctionsBuyoutError", "AuctionsCancelAuctionButton", "AuctionsCloseButton", "AuctionsCreateAuctionButton", "AuctionsDepositMoneyFrame", "AuctionsDepositMoneyFrameCopperButton", "AuctionsDepositMoneyFrameGoldButton", "AuctionsDepositMoneyFrameSilverButton", "AuctionsDurationSort", "AuctionsHighBidderSort", "AuctionsItemButton", "AuctionsNumStacksEntry", "AuctionsNumStacksMaxButton", "AuctionsQualitySort", "AuctionsScrollFrame", "AuctionsScrollFrameScrollBar", "AuctionsScrollFrameScrollBarScrollDownButton", "AuctionsScrollFrameScrollBarScrollUpButton", "AuctionsScrollFrameScrollChildFrame", "AuctionsStackSizeEntry", "AuctionsStackSizeMaxButton", "BidBidButton", "BidBidPrice", "BidBidPriceCopper", "BidBidPriceGold", "BidBidPriceSilver", "BidBidSort", "BidButton1", "BidButton1BuyoutMoneyFrame", "BidButton1BuyoutMoneyFrameCopperButton", "BidButton1BuyoutMoneyFrameGoldButton", "BidButton1BuyoutMoneyFrameSilverButton", "BidButton1ClosingTime", "BidButton1CurrentBidMoneyFrame", "BidButton1CurrentBidMoneyFrameCopperButton", "BidButton1CurrentBidMoneyFrameGoldButton", "BidButton1CurrentBidMoneyFrameSilverButton", "BidButton1Item", "BidButton2", "BidButton2BuyoutMoneyFrame", "BidButton2BuyoutMoneyFrameCopperButton", "BidButton2BuyoutMoneyFrameGoldButton", "BidButton2BuyoutMoneyFrameSilverButton", "BidButton2ClosingTime", "BidButton2CurrentBidMoneyFrame", "BidButton2CurrentBidMoneyFrameCopperButton", "BidButton2CurrentBidMoneyFrameGoldButton", "BidButton2CurrentBidMoneyFrameSilverButton", "BidButton2Item", "BidButton3", "BidButton3BuyoutMoneyFrame", "BidButton3BuyoutMoneyFrameCopperButton", "BidButton3BuyoutMoneyFrameGoldButton", "BidButton3BuyoutMoneyFrameSilverButton", "BidButton3ClosingTime", "BidButton3CurrentBidMoneyFrame", "BidButton3CurrentBidMoneyFrameCopperButton", "BidButton3CurrentBidMoneyFrameGoldButton", "BidButton3CurrentBidMoneyFrameSilverButton", "BidButton3Item", "BidButton4", "BidButton4BuyoutMoneyFrame", "BidButton4BuyoutMoneyFrameCopperButton", "BidButton4BuyoutMoneyFrameGoldButton", "BidButton4BuyoutMoneyFrameSilverButton", "BidButton4ClosingTime", "BidButton4CurrentBidMoneyFrame", "BidButton4CurrentBidMoneyFrameCopperButton", "BidButton4CurrentBidMoneyFrameGoldButton", "BidButton4CurrentBidMoneyFrameSilverButton", "BidButton4Item", "BidButton5", "BidButton5BuyoutMoneyFrame", "BidButton5BuyoutMoneyFrameCopperButton", "BidButton5BuyoutMoneyFrameGoldButton", "BidButton5BuyoutMoneyFrameSilverButton", "BidButton5ClosingTime", "BidButton5CurrentBidMoneyFrame", "BidButton5CurrentBidMoneyFrameCopperButton", "BidButton5CurrentBidMoneyFrameGoldButton", "BidButton5CurrentBidMoneyFrameSilverButton", "BidButton5Item", "BidButton6", "BidButton6BuyoutMoneyFrame", "BidButton6BuyoutMoneyFrameCopperButton", "BidButton6BuyoutMoneyFrameGoldButton", "BidButton6BuyoutMoneyFrameSilverButton", "BidButton6ClosingTime", "BidButton6CurrentBidMoneyFrame", "BidButton6CurrentBidMoneyFrameCopperButton", "BidButton6CurrentBidMoneyFrameGoldButton", "BidButton6CurrentBidMoneyFrameSilverButton", "BidButton6Item", "BidButton7", "BidButton7BuyoutMoneyFrame", "BidButton7BuyoutMoneyFrameCopperButton", "BidButton7BuyoutMoneyFrameGoldButton", "BidButton7BuyoutMoneyFrameSilverButton", "BidButton7ClosingTime", "BidButton7CurrentBidMoneyFrame", "BidButton7CurrentBidMoneyFrameCopperButton", "BidButton7CurrentBidMoneyFrameGoldButton", "BidButton7CurrentBidMoneyFrameSilverButton", "BidButton7Item", "BidButton8", "BidButton8BuyoutMoneyFrame", "BidButton8BuyoutMoneyFrameCopperButton", "BidButton8BuyoutMoneyFrameGoldButton", "BidButton8BuyoutMoneyFrameSilverButton", "BidButton8ClosingTime", "BidButton8CurrentBidMoneyFrame", "BidButton8CurrentBidMoneyFrameCopperButton", "BidButton8CurrentBidMoneyFrameGoldButton", "BidButton8CurrentBidMoneyFrameSilverButton", "BidButton8Item", "BidButton9", "BidButton9BuyoutMoneyFrame", "BidButton9BuyoutMoneyFrameCopperButton", "BidButton9BuyoutMoneyFrameGoldButton", "BidButton9BuyoutMoneyFrameSilverButton", "BidButton9ClosingTime", "BidButton9CurrentBidMoneyFrame", "BidButton9CurrentBidMoneyFrameCopperButton", "BidButton9CurrentBidMoneyFrameGoldButton", "BidButton9CurrentBidMoneyFrameSilverButton", "BidButton9Item", "BidBuyoutButton", "BidBuyoutSort", "BidCloseButton", "BidDurationSort", "BidLevelSort", "BidQualitySort", "BidScrollFrame", "BidScrollFrameScrollBar", "BidScrollFrameScrollBarScrollDownButton", "BidScrollFrameScrollBarScrollUpButton", "BidScrollFrameScrollChildFrame", "BidStatusSort", "BrowseBidButton", "BrowseBidPrice", "BrowseBidPriceCopper", "BrowseBidPriceGold", "BrowseBidPriceSilver", "BrowseButton1", "BrowseButton1BuyoutFrame", "BrowseButton1BuyoutFrameMoney", "BrowseButton1BuyoutFrameMoneyCopperButton", "BrowseButton1BuyoutFrameMoneyGoldButton", "BrowseButton1BuyoutFrameMoneySilverButton", "BrowseButton1BuyoutFrameText", "BrowseButton1ClosingTime", "BrowseButton1Item", "BrowseButton1MoneyFrame", "BrowseButton1MoneyFrameCopperButton", "BrowseButton1MoneyFrameGoldButton", "BrowseButton1MoneyFrameSilverButton", "BrowseButton1YourBidText", "BrowseButton2", "BrowseButton2BuyoutFrame", "BrowseButton2BuyoutFrameMoney", "BrowseButton2BuyoutFrameMoneyCopperButton", "BrowseButton2BuyoutFrameMoneyGoldButton", "BrowseButton2BuyoutFrameMoneySilverButton", "BrowseButton2BuyoutFrameText", "BrowseButton2ClosingTime", "BrowseButton2Item", "BrowseButton2MoneyFrame", "BrowseButton2MoneyFrameCopperButton", "BrowseButton2MoneyFrameGoldButton", "BrowseButton2MoneyFrameSilverButton", "BrowseButton2YourBidText", "BrowseButton3", "BrowseButton3BuyoutFrame", "BrowseButton3BuyoutFrameMoney", "BrowseButton3BuyoutFrameMoneyCopperButton", "BrowseButton3BuyoutFrameMoneyGoldButton", "BrowseButton3BuyoutFrameMoneySilverButton", "BrowseButton3BuyoutFrameText", "BrowseButton3ClosingTime", "BrowseButton3Item", "BrowseButton3MoneyFrame", "BrowseButton3MoneyFrameCopperButton", "BrowseButton3MoneyFrameGoldButton", "BrowseButton3MoneyFrameSilverButton", "BrowseButton3YourBidText", "BrowseButton4", "BrowseButton4BuyoutFrame", "BrowseButton4BuyoutFrameMoney", "BrowseButton4BuyoutFrameMoneyCopperButton", "BrowseButton4BuyoutFrameMoneyGoldButton", "BrowseButton4BuyoutFrameMoneySilverButton", "BrowseButton4BuyoutFrameText", "BrowseButton4ClosingTime", "BrowseButton4Item", "BrowseButton4MoneyFrame", "BrowseButton4MoneyFrameCopperButton", "BrowseButton4MoneyFrameGoldButton", "BrowseButton4MoneyFrameSilverButton", "BrowseButton4YourBidText", "BrowseButton5", "BrowseButton5BuyoutFrame", "BrowseButton5BuyoutFrameMoney", "BrowseButton5BuyoutFrameMoneyCopperButton", "BrowseButton5BuyoutFrameMoneyGoldButton", "BrowseButton5BuyoutFrameMoneySilverButton", "BrowseButton5BuyoutFrameText", "BrowseButton5ClosingTime", "BrowseButton5Item", "BrowseButton5MoneyFrame", "BrowseButton5MoneyFrameCopperButton", "BrowseButton5MoneyFrameGoldButton", "BrowseButton5MoneyFrameSilverButton", "BrowseButton5YourBidText", "BrowseButton6", "BrowseButton6BuyoutFrame", "BrowseButton6BuyoutFrameMoney", "BrowseButton6BuyoutFrameMoneyCopperButton", "BrowseButton6BuyoutFrameMoneyGoldButton", "BrowseButton6BuyoutFrameMoneySilverButton", "BrowseButton6BuyoutFrameText", "BrowseButton6ClosingTime", "BrowseButton6Item", "BrowseButton6MoneyFrame", "BrowseButton6MoneyFrameCopperButton", "BrowseButton6MoneyFrameGoldButton", "BrowseButton6MoneyFrameSilverButton", "BrowseButton6YourBidText", "BrowseButton7", "BrowseButton7BuyoutFrame", "BrowseButton7BuyoutFrameMoney", "BrowseButton7BuyoutFrameMoneyCopperButton", "BrowseButton7BuyoutFrameMoneyGoldButton", "BrowseButton7BuyoutFrameMoneySilverButton", "BrowseButton7BuyoutFrameText", "BrowseButton7ClosingTime", "BrowseButton7Item", "BrowseButton7MoneyFrame", "BrowseButton7MoneyFrameCopperButton", "BrowseButton7MoneyFrameGoldButton", "BrowseButton7MoneyFrameSilverButton", "BrowseButton7YourBidText", "BrowseButton8", "BrowseButton8BuyoutFrame", "BrowseButton8BuyoutFrameMoney", "BrowseButton8BuyoutFrameMoneyCopperButton", "BrowseButton8BuyoutFrameMoneyGoldButton", "BrowseButton8BuyoutFrameMoneySilverButton", "BrowseButton8BuyoutFrameText", "BrowseButton8ClosingTime", "BrowseButton8Item", "BrowseButton8MoneyFrame", "BrowseButton8MoneyFrameCopperButton", "BrowseButton8MoneyFrameGoldButton", "BrowseButton8MoneyFrameSilverButton", "BrowseButton8YourBidText", "BrowseBuyoutButton", "BrowseCloseButton", "BrowseCurrentBidSort", "BrowseDropDown", "BrowseDropDownButton", "BrowseDurationSort", "BrowseFilterScrollFrame", "BrowseFilterScrollFrameScrollBar", "BrowseFilterScrollFrameScrollBarScrollDownButton", "BrowseFilterScrollFrameScrollBarScrollUpButton", "BrowseFilterScrollFrameScrollChildFrame", "BrowseHighBidderSort", "BrowseLevelSort", "BrowseMaxLevel", "BrowseMinLevel", "BrowseName", "BrowseNextPageButton", "BrowsePrevPageButton", "BrowseQualitySort", "BrowseResetButton", "BrowseScrollFrame", "BrowseScrollFrameScrollBar", "BrowseScrollFrameScrollBarScrollDownButton", "BrowseScrollFrameScrollBarScrollUpButton", "BrowseScrollFrameScrollChildFrame", "BrowseSearchButton", "BuyoutPrice", "BuyoutPriceCopper", "BuyoutPriceGold", "BuyoutPriceSilver", "CLASS_FILTERS", "DurationDropDown", "DurationDropDownButton", "IsUsableCheckButton", "OPEN_FILTER_LIST", "PriceDropDown", "PriceDropDownButton", "ShowOnPlayerCheckButton", "StartPrice", "StartPriceCopper", "StartPriceGold", "StartPriceSilver", -- frames: Blizzard_AuctionUI "AuctionFrame", "AuctionFrameTab1", "AuctionFrameTab2", "AuctionFrameTab3", "AuctionFrameMoneyFrame", "AuctionFrameMoneyFrameCopperButton", "AuctionFrameMoneyFrameSilverButton", "AuctionFrameMoneyFrameGoldButton", "AuctionFrameCloseButton", "AuctionFrameBrowse", "AuctionFilterButton1", "AuctionFilterButton2", "AuctionFilterButton3", "AuctionFilterButton4", "AuctionFilterButton5", "AuctionFilterButton6", "AuctionFilterButton7", "AuctionFilterButton8", "AuctionFilterButton9", "AuctionFilterButton10", "AuctionFilterButton11", "AuctionFilterButton12", "AuctionFilterButton13", "AuctionFilterButton14", "AuctionFilterButton15", "BrowseFilterScrollFrame", "BrowseFilterScrollFrameScrollChildFrame", "BrowseFilterScrollFrameScrollBar", "BrowseFilterScrollFrameScrollBarScrollUpButton", "BrowseFilterScrollFrameScrollBarScrollDownButton", "BrowseScrollFrame", "BrowseScrollFrameScrollChildFrame", "BrowseScrollFrameScrollBar", "BrowseScrollFrameScrollBarScrollUpButton", "BrowseScrollFrameScrollBarScrollDownButton", "BrowseQualitySort", "BrowseLevelSort", "BrowseDurationSort", "BrowseHighBidderSort", "BrowseCurrentBidSort", "BrowseButton1", "BrowseButton1Item", "BrowseButton1ClosingTime", "BrowseButton1MoneyFrame", "BrowseButton1MoneyFrameCopperButton", "BrowseButton1MoneyFrameSilverButton", "BrowseButton1MoneyFrameGoldButton", "BrowseButton1YourBidText", "BrowseButton1BuyoutFrame", "BrowseButton1BuyoutFrameMoney", "BrowseButton1BuyoutFrameMoneyCopperButton", "BrowseButton1BuyoutFrameMoneySilverButton", "BrowseButton1BuyoutFrameMoneyGoldButton", "BrowseButton1BuyoutFrameText", "BrowseButton2", "BrowseButton2Item", "BrowseButton2ClosingTime", "BrowseButton2MoneyFrame", "BrowseButton2MoneyFrameCopperButton", "BrowseButton2MoneyFrameSilverButton", "BrowseButton2MoneyFrameGoldButton", "BrowseButton2YourBidText", "BrowseButton2BuyoutFrame", "BrowseButton2BuyoutFrameMoney", "BrowseButton2BuyoutFrameMoneyCopperButton", "BrowseButton2BuyoutFrameMoneySilverButton", "BrowseButton2BuyoutFrameMoneyGoldButton", "BrowseButton2BuyoutFrameText", "BrowseButton3", "BrowseButton3Item", "BrowseButton3ClosingTime", "BrowseButton3MoneyFrame", "BrowseButton3MoneyFrameCopperButton", "BrowseButton3MoneyFrameSilverButton", "BrowseButton3MoneyFrameGoldButton", "BrowseButton3YourBidText", "BrowseButton3BuyoutFrame", "BrowseButton3BuyoutFrameMoney", "BrowseButton3BuyoutFrameMoneyCopperButton", "BrowseButton3BuyoutFrameMoneySilverButton", "BrowseButton3BuyoutFrameMoneyGoldButton", "BrowseButton3BuyoutFrameText", "BrowseButton4", "BrowseButton4Item", "BrowseButton4ClosingTime", "BrowseButton4MoneyFrame", "BrowseButton4MoneyFrameCopperButton", "BrowseButton4MoneyFrameSilverButton", "BrowseButton4MoneyFrameGoldButton", "BrowseButton4YourBidText", "BrowseButton4BuyoutFrame", "BrowseButton4BuyoutFrameMoney", "BrowseButton4BuyoutFrameMoneyCopperButton", "BrowseButton4BuyoutFrameMoneySilverButton", "BrowseButton4BuyoutFrameMoneyGoldButton", "BrowseButton4BuyoutFrameText", "BrowseButton5", "BrowseButton5Item", "BrowseButton5ClosingTime", "BrowseButton5MoneyFrame", "BrowseButton5MoneyFrameCopperButton", "BrowseButton5MoneyFrameSilverButton", "BrowseButton5MoneyFrameGoldButton", "BrowseButton5YourBidText", "BrowseButton5BuyoutFrame", "BrowseButton5BuyoutFrameMoney", "BrowseButton5BuyoutFrameMoneyCopperButton", "BrowseButton5BuyoutFrameMoneySilverButton", "BrowseButton5BuyoutFrameMoneyGoldButton", "BrowseButton5BuyoutFrameText", "BrowseButton6", "BrowseButton6Item", "BrowseButton6ClosingTime", "BrowseButton6MoneyFrame", "BrowseButton6MoneyFrameCopperButton", "BrowseButton6MoneyFrameSilverButton", "BrowseButton6MoneyFrameGoldButton", "BrowseButton6YourBidText", "BrowseButton6BuyoutFrame", "BrowseButton6BuyoutFrameMoney", "BrowseButton6BuyoutFrameMoneyCopperButton", "BrowseButton6BuyoutFrameMoneySilverButton", "BrowseButton6BuyoutFrameMoneyGoldButton", "BrowseButton6BuyoutFrameText", "BrowseButton7", "BrowseButton7Item", "BrowseButton7ClosingTime", "BrowseButton7MoneyFrame", "BrowseButton7MoneyFrameCopperButton", "BrowseButton7MoneyFrameSilverButton", "BrowseButton7MoneyFrameGoldButton", "BrowseButton7YourBidText", "BrowseButton7BuyoutFrame", "BrowseButton7BuyoutFrameMoney", "BrowseButton7BuyoutFrameMoneyCopperButton", "BrowseButton7BuyoutFrameMoneySilverButton", "BrowseButton7BuyoutFrameMoneyGoldButton", "BrowseButton7BuyoutFrameText", "BrowseButton8", "BrowseButton8Item", "BrowseButton8ClosingTime", "BrowseButton8MoneyFrame", "BrowseButton8MoneyFrameCopperButton", "BrowseButton8MoneyFrameSilverButton", "BrowseButton8MoneyFrameGoldButton", "BrowseButton8YourBidText", "BrowseButton8BuyoutFrame", "BrowseButton8BuyoutFrameMoney", "BrowseButton8BuyoutFrameMoneyCopperButton", "BrowseButton8BuyoutFrameMoneySilverButton", "BrowseButton8BuyoutFrameMoneyGoldButton", "BrowseButton8BuyoutFrameText", "BrowseName", "BrowseMinLevel", "BrowseMaxLevel", "BrowseDropDown", "BrowseDropDownButton", "IsUsableCheckButton", "ShowOnPlayerCheckButton", "BrowseSearchButton", "BrowsePrevPageButton", "BrowseNextPageButton", "BrowseCloseButton", "BrowseBuyoutButton", "BrowseBidButton", "BrowseBidPrice", "BrowseBidPriceGold", "BrowseBidPriceSilver", "BrowseBidPriceCopper", "BrowseResetButton", "AuctionFrameBid", "BidQualitySort", "BidLevelSort", "BidDurationSort", "BidBuyoutSort", "BidStatusSort", "BidBidSort", "BidScrollFrame", "BidScrollFrameScrollChildFrame", "BidScrollFrameScrollBar", "BidScrollFrameScrollBarScrollUpButton", "BidScrollFrameScrollBarScrollDownButton", "BidButton1", "BidButton1Item", "BidButton1ClosingTime", "BidButton1BuyoutMoneyFrame", "BidButton1BuyoutMoneyFrameCopperButton", "BidButton1BuyoutMoneyFrameSilverButton", "BidButton1BuyoutMoneyFrameGoldButton", "BidButton1CurrentBidMoneyFrame", "BidButton1CurrentBidMoneyFrameCopperButton", "BidButton1CurrentBidMoneyFrameSilverButton", "BidButton1CurrentBidMoneyFrameGoldButton", "BidButton2", "BidButton2Item", "BidButton2ClosingTime", "BidButton2BuyoutMoneyFrame", "BidButton2BuyoutMoneyFrameCopperButton", "BidButton2BuyoutMoneyFrameSilverButton", "BidButton2BuyoutMoneyFrameGoldButton", "BidButton2CurrentBidMoneyFrame", "BidButton2CurrentBidMoneyFrameCopperButton", "BidButton2CurrentBidMoneyFrameSilverButton", "BidButton2CurrentBidMoneyFrameGoldButton", "BidButton3", "BidButton3Item", "BidButton3ClosingTime", "BidButton3BuyoutMoneyFrame", "BidButton3BuyoutMoneyFrameCopperButton", "BidButton3BuyoutMoneyFrameSilverButton", "BidButton3BuyoutMoneyFrameGoldButton", "BidButton3CurrentBidMoneyFrame", "BidButton3CurrentBidMoneyFrameCopperButton", "BidButton3CurrentBidMoneyFrameSilverButton", "BidButton3CurrentBidMoneyFrameGoldButton", "BidButton4", "BidButton4Item", "BidButton4ClosingTime", "BidButton4BuyoutMoneyFrame", "BidButton4BuyoutMoneyFrameCopperButton", "BidButton4BuyoutMoneyFrameSilverButton", "BidButton4BuyoutMoneyFrameGoldButton", "BidButton4CurrentBidMoneyFrame", "BidButton4CurrentBidMoneyFrameCopperButton", "BidButton4CurrentBidMoneyFrameSilverButton", "BidButton4CurrentBidMoneyFrameGoldButton", "BidButton5", "BidButton5Item", "BidButton5ClosingTime", "BidButton5BuyoutMoneyFrame", "BidButton5BuyoutMoneyFrameCopperButton", "BidButton5BuyoutMoneyFrameSilverButton", "BidButton5BuyoutMoneyFrameGoldButton", "BidButton5CurrentBidMoneyFrame", "BidButton5CurrentBidMoneyFrameCopperButton", "BidButton5CurrentBidMoneyFrameSilverButton", "BidButton5CurrentBidMoneyFrameGoldButton", "BidButton6", "BidButton6Item", "BidButton6ClosingTime", "BidButton6BuyoutMoneyFrame", "BidButton6BuyoutMoneyFrameCopperButton", "BidButton6BuyoutMoneyFrameSilverButton", "BidButton6BuyoutMoneyFrameGoldButton", "BidButton6CurrentBidMoneyFrame", "BidButton6CurrentBidMoneyFrameCopperButton", "BidButton6CurrentBidMoneyFrameSilverButton", "BidButton6CurrentBidMoneyFrameGoldButton", "BidButton7", "BidButton7Item", "BidButton7ClosingTime", "BidButton7BuyoutMoneyFrame", "BidButton7BuyoutMoneyFrameCopperButton", "BidButton7BuyoutMoneyFrameSilverButton", "BidButton7BuyoutMoneyFrameGoldButton", "BidButton7CurrentBidMoneyFrame", "BidButton7CurrentBidMoneyFrameCopperButton", "BidButton7CurrentBidMoneyFrameSilverButton", "BidButton7CurrentBidMoneyFrameGoldButton", "BidButton8", "BidButton8Item", "BidButton8ClosingTime", "BidButton8BuyoutMoneyFrame", "BidButton8BuyoutMoneyFrameCopperButton", "BidButton8BuyoutMoneyFrameSilverButton", "BidButton8BuyoutMoneyFrameGoldButton", "BidButton8CurrentBidMoneyFrame", "BidButton8CurrentBidMoneyFrameCopperButton", "BidButton8CurrentBidMoneyFrameSilverButton", "BidButton8CurrentBidMoneyFrameGoldButton", "BidButton9", "BidButton9Item", "BidButton9ClosingTime", "BidButton9BuyoutMoneyFrame", "BidButton9BuyoutMoneyFrameCopperButton", "BidButton9BuyoutMoneyFrameSilverButton", "BidButton9BuyoutMoneyFrameGoldButton", "BidButton9CurrentBidMoneyFrame", "BidButton9CurrentBidMoneyFrameCopperButton", "BidButton9CurrentBidMoneyFrameSilverButton", "BidButton9CurrentBidMoneyFrameGoldButton", "BidBidPrice", "BidBidPriceGold", "BidBidPriceSilver", "BidBidPriceCopper", "BidCloseButton", "BidBuyoutButton", "BidBidButton", "AuctionFrameAuctions", "AuctionsQualitySort", "AuctionsDurationSort", "AuctionsHighBidderSort", "AuctionsBidSort", "AuctionsScrollFrame", "AuctionsScrollFrameScrollChildFrame", "AuctionsScrollFrameScrollBar", "AuctionsScrollFrameScrollBarScrollUpButton", "AuctionsScrollFrameScrollBarScrollDownButton", "AuctionsButton1", "AuctionsButton1Item", "AuctionsButton1ClosingTime", "AuctionsButton1MoneyFrame", "AuctionsButton1MoneyFrameCopperButton", "AuctionsButton1MoneyFrameSilverButton", "AuctionsButton1MoneyFrameGoldButton", "AuctionsButton1BuyoutFrame", "AuctionsButton1BuyoutFrameMoney", "AuctionsButton1BuyoutFrameMoneyCopperButton", "AuctionsButton1BuyoutFrameMoneySilverButton", "AuctionsButton1BuyoutFrameMoneyGoldButton", "AuctionsButton1BuyoutFrameText", "AuctionsButton2", "AuctionsButton2Item", "AuctionsButton2ClosingTime", "AuctionsButton2MoneyFrame", "AuctionsButton2MoneyFrameCopperButton", "AuctionsButton2MoneyFrameSilverButton", "AuctionsButton2MoneyFrameGoldButton", "AuctionsButton2BuyoutFrame", "AuctionsButton2BuyoutFrameMoney", "AuctionsButton2BuyoutFrameMoneyCopperButton", "AuctionsButton2BuyoutFrameMoneySilverButton", "AuctionsButton2BuyoutFrameMoneyGoldButton", "AuctionsButton2BuyoutFrameText", "AuctionsButton3", "AuctionsButton3Item", "AuctionsButton3ClosingTime", "AuctionsButton3MoneyFrame", "AuctionsButton3MoneyFrameCopperButton", "AuctionsButton3MoneyFrameSilverButton", "AuctionsButton3MoneyFrameGoldButton", "AuctionsButton3BuyoutFrame", "AuctionsButton3BuyoutFrameMoney", "AuctionsButton3BuyoutFrameMoneyCopperButton", "AuctionsButton3BuyoutFrameMoneySilverButton", "AuctionsButton3BuyoutFrameMoneyGoldButton", "AuctionsButton3BuyoutFrameText", "AuctionsButton4", "AuctionsButton4Item", "AuctionsButton4ClosingTime", "AuctionsButton4MoneyFrame", "AuctionsButton4MoneyFrameCopperButton", "AuctionsButton4MoneyFrameSilverButton", "AuctionsButton4MoneyFrameGoldButton", "AuctionsButton4BuyoutFrame", "AuctionsButton4BuyoutFrameMoney", "AuctionsButton4BuyoutFrameMoneyCopperButton", "AuctionsButton4BuyoutFrameMoneySilverButton", "AuctionsButton4BuyoutFrameMoneyGoldButton", "AuctionsButton4BuyoutFrameText", "AuctionsButton5", "AuctionsButton5Item", "AuctionsButton5ClosingTime", "AuctionsButton5MoneyFrame", "AuctionsButton5MoneyFrameCopperButton", "AuctionsButton5MoneyFrameSilverButton", "AuctionsButton5MoneyFrameGoldButton", "AuctionsButton5BuyoutFrame", "AuctionsButton5BuyoutFrameMoney", "AuctionsButton5BuyoutFrameMoneyCopperButton", "AuctionsButton5BuyoutFrameMoneySilverButton", "AuctionsButton5BuyoutFrameMoneyGoldButton", "AuctionsButton5BuyoutFrameText", "AuctionsButton6", "AuctionsButton6Item", "AuctionsButton6ClosingTime", "AuctionsButton6MoneyFrame", "AuctionsButton6MoneyFrameCopperButton", "AuctionsButton6MoneyFrameSilverButton", "AuctionsButton6MoneyFrameGoldButton", "AuctionsButton6BuyoutFrame", "AuctionsButton6BuyoutFrameMoney", "AuctionsButton6BuyoutFrameMoneyCopperButton", "AuctionsButton6BuyoutFrameMoneySilverButton", "AuctionsButton6BuyoutFrameMoneyGoldButton", "AuctionsButton6BuyoutFrameText", "AuctionsButton7", "AuctionsButton7Item", "AuctionsButton7ClosingTime", "AuctionsButton7MoneyFrame", "AuctionsButton7MoneyFrameCopperButton", "AuctionsButton7MoneyFrameSilverButton", "AuctionsButton7MoneyFrameGoldButton", "AuctionsButton7BuyoutFrame", "AuctionsButton7BuyoutFrameMoney", "AuctionsButton7BuyoutFrameMoneyCopperButton", "AuctionsButton7BuyoutFrameMoneySilverButton", "AuctionsButton7BuyoutFrameMoneyGoldButton", "AuctionsButton7BuyoutFrameText", "AuctionsButton8", "AuctionsButton8Item", "AuctionsButton8ClosingTime", "AuctionsButton8MoneyFrame", "AuctionsButton8MoneyFrameCopperButton", "AuctionsButton8MoneyFrameSilverButton", "AuctionsButton8MoneyFrameGoldButton", "AuctionsButton8BuyoutFrame", "AuctionsButton8BuyoutFrameMoney", "AuctionsButton8BuyoutFrameMoneyCopperButton", "AuctionsButton8BuyoutFrameMoneySilverButton", "AuctionsButton8BuyoutFrameMoneyGoldButton", "AuctionsButton8BuyoutFrameText", "AuctionsButton9", "AuctionsButton9Item", "AuctionsButton9ClosingTime", "AuctionsButton9MoneyFrame", "AuctionsButton9MoneyFrameCopperButton", "AuctionsButton9MoneyFrameSilverButton", "AuctionsButton9MoneyFrameGoldButton", "AuctionsButton9BuyoutFrame", "AuctionsButton9BuyoutFrameMoney", "AuctionsButton9BuyoutFrameMoneyCopperButton", "AuctionsButton9BuyoutFrameMoneySilverButton", "AuctionsButton9BuyoutFrameMoneyGoldButton", "AuctionsButton9BuyoutFrameText", "AuctionsItemButton", "AuctionsStackSizeEntry", "AuctionsStackSizeMaxButton", "AuctionsNumStacksEntry", "AuctionsNumStacksMaxButton", "PriceDropDown", "PriceDropDownButton", "StartPrice", "StartPriceGold", "StartPriceSilver", "StartPriceCopper", "BuyoutPrice", "BuyoutPriceGold", "BuyoutPriceSilver", "BuyoutPriceCopper", "AuctionsBuyoutError", "DurationDropDown", "DurationDropDownButton", "AuctionsDepositMoneyFrame", "AuctionsDepositMoneyFrameCopperButton", "AuctionsDepositMoneyFrameSilverButton", "AuctionsDepositMoneyFrameGoldButton", "AuctionsCloseButton", "AuctionsCancelAuctionButton", "AuctionsCreateAuctionButton", "AuctionsBlockFrame", "AuctionProgressFrame", "AuctionProgressBar", "AuctionProgressFrameCancelButton", "AuctionDressUpFrame", "AuctionDressUpModel", "AuctionDressUpModelRotateLeftButton", "AuctionDressUpModelRotateRightButton", "AuctionDressUpFrameResetButton", "AuctionDressUpFrameCloseButton", -- widgets: Blizzard_AuctionUI "AuctionDressUpBackgroundBot", "AuctionDressUpBackgroundTop", "AuctionDressUpFrameResetButtonText", "AuctionDressUpFrameTop", "AuctionFilterButton10Lines", "AuctionFilterButton10NormalText", "AuctionFilterButton10NormalTexture", "AuctionFilterButton11Lines", "AuctionFilterButton11NormalText", "AuctionFilterButton11NormalTexture", "AuctionFilterButton12Lines", "AuctionFilterButton12NormalText", "AuctionFilterButton12NormalTexture", "AuctionFilterButton13Lines", "AuctionFilterButton13NormalText", "AuctionFilterButton13NormalTexture", "AuctionFilterButton14Lines", "AuctionFilterButton14NormalText", "AuctionFilterButton14NormalTexture", "AuctionFilterButton15Lines", "AuctionFilterButton15NormalText", "AuctionFilterButton15NormalTexture", "AuctionFilterButton1Lines", "AuctionFilterButton1NormalText", "AuctionFilterButton1NormalTexture", "AuctionFilterButton2Lines", "AuctionFilterButton2NormalText", "AuctionFilterButton2NormalTexture", "AuctionFilterButton3Lines", "AuctionFilterButton3NormalText", "AuctionFilterButton3NormalTexture", "AuctionFilterButton4Lines", "AuctionFilterButton4NormalText", "AuctionFilterButton4NormalTexture", "AuctionFilterButton5Lines", "AuctionFilterButton5NormalText", "AuctionFilterButton5NormalTexture", "AuctionFilterButton6Lines", "AuctionFilterButton6NormalText", "AuctionFilterButton6NormalTexture", "AuctionFilterButton7Lines", "AuctionFilterButton7NormalText", "AuctionFilterButton7NormalTexture", "AuctionFilterButton8Lines", "AuctionFilterButton8NormalText", "AuctionFilterButton8NormalTexture", "AuctionFilterButton9Lines", "AuctionFilterButton9NormalText", "AuctionFilterButton9NormalTexture", "AuctionFrameBot", "AuctionFrameBotLeft", "AuctionFrameBotRight", "AuctionFrameMoneyFrameCopperButtonText", "AuctionFrameMoneyFrameGoldButtonText", "AuctionFrameMoneyFrameSilverButtonText", "AuctionFrameTab1HighlightTexture", "AuctionFrameTab1Left", "AuctionFrameTab1LeftDisabled", "AuctionFrameTab1Middle", "AuctionFrameTab1MiddleDisabled", "AuctionFrameTab1Right", "AuctionFrameTab1RightDisabled", "AuctionFrameTab1Text", "AuctionFrameTab2HighlightTexture", "AuctionFrameTab2Left", "AuctionFrameTab2LeftDisabled", "AuctionFrameTab2Middle", "AuctionFrameTab2MiddleDisabled", "AuctionFrameTab2Right", "AuctionFrameTab2RightDisabled", "AuctionFrameTab2Text", "AuctionFrameTab3HighlightTexture", "AuctionFrameTab3Left", "AuctionFrameTab3LeftDisabled", "AuctionFrameTab3Middle", "AuctionFrameTab3MiddleDisabled", "AuctionFrameTab3Right", "AuctionFrameTab3RightDisabled", "AuctionFrameTab3Text", "AuctionFrameTop", "AuctionFrameTopLeft", "AuctionFrameTopRight", "AuctionPortraitTexture", "AuctionProgressBarBorder", "AuctionProgressBarBorderShield", "AuctionProgressBarFlash", "AuctionProgressBarIcon", "AuctionProgressBarSpark", "AuctionProgressBarText", "AuctionProgressFrameFill", "AuctionProgressFrameLeft", "AuctionProgressFrameMiddle", "AuctionProgressFrameRight", "AuctionsBidSortArrow", "AuctionsBidSortLeft", "AuctionsBidSortMiddle", "AuctionsBidSortRight", "AuctionsBidSortText", "AuctionsButton1BuyoutFrameMoneyCopperButtonText", "AuctionsButton1BuyoutFrameMoneyGoldButtonText", "AuctionsButton1BuyoutFrameMoneySilverButtonText", "AuctionsButton1ClosingTimeText", "AuctionsButton1HighBidder", "AuctionsButton1Highlight", "AuctionsButton1ItemCount", "AuctionsButton1ItemIconTexture", "AuctionsButton1ItemNormalTexture", "AuctionsButton1ItemStock", "AuctionsButton1Left", "AuctionsButton1MoneyFrameCopperButtonText", "AuctionsButton1MoneyFrameGoldButtonText", "AuctionsButton1MoneyFrameLabel", "AuctionsButton1MoneyFrameSilverButtonText", "AuctionsButton1Name", "AuctionsButton1Right", "AuctionsButton2BuyoutFrameMoneyCopperButtonText", "AuctionsButton2BuyoutFrameMoneyGoldButtonText", "AuctionsButton2BuyoutFrameMoneySilverButtonText", "AuctionsButton2ClosingTimeText", "AuctionsButton2HighBidder", "AuctionsButton2Highlight", "AuctionsButton2ItemCount", "AuctionsButton2ItemIconTexture", "AuctionsButton2ItemNormalTexture", "AuctionsButton2ItemStock", "AuctionsButton2Left", "AuctionsButton2MoneyFrameCopperButtonText", "AuctionsButton2MoneyFrameGoldButtonText", "AuctionsButton2MoneyFrameLabel", "AuctionsButton2MoneyFrameSilverButtonText", "AuctionsButton2Name", "AuctionsButton2Right", "AuctionsButton3BuyoutFrameMoneyCopperButtonText", "AuctionsButton3BuyoutFrameMoneyGoldButtonText", "AuctionsButton3BuyoutFrameMoneySilverButtonText", "AuctionsButton3ClosingTimeText", "AuctionsButton3HighBidder", "AuctionsButton3Highlight", "AuctionsButton3ItemCount", "AuctionsButton3ItemIconTexture", "AuctionsButton3ItemNormalTexture", "AuctionsButton3ItemStock", "AuctionsButton3Left", "AuctionsButton3MoneyFrameCopperButtonText", "AuctionsButton3MoneyFrameGoldButtonText", "AuctionsButton3MoneyFrameLabel", "AuctionsButton3MoneyFrameSilverButtonText", "AuctionsButton3Name", "AuctionsButton3Right", "AuctionsButton4BuyoutFrameMoneyCopperButtonText", "AuctionsButton4BuyoutFrameMoneyGoldButtonText", "AuctionsButton4BuyoutFrameMoneySilverButtonText", "AuctionsButton4ClosingTimeText", "AuctionsButton4HighBidder", "AuctionsButton4Highlight", "AuctionsButton4ItemCount", "AuctionsButton4ItemIconTexture", "AuctionsButton4ItemNormalTexture", "AuctionsButton4ItemStock", "AuctionsButton4Left", "AuctionsButton4MoneyFrameCopperButtonText", "AuctionsButton4MoneyFrameGoldButtonText", "AuctionsButton4MoneyFrameLabel", "AuctionsButton4MoneyFrameSilverButtonText", "AuctionsButton4Name", "AuctionsButton4Right", "AuctionsButton5BuyoutFrameMoneyCopperButtonText", "AuctionsButton5BuyoutFrameMoneyGoldButtonText", "AuctionsButton5BuyoutFrameMoneySilverButtonText", "AuctionsButton5ClosingTimeText", "AuctionsButton5HighBidder", "AuctionsButton5Highlight", "AuctionsButton5ItemCount", "AuctionsButton5ItemIconTexture", "AuctionsButton5ItemNormalTexture", "AuctionsButton5ItemStock", "AuctionsButton5Left", "AuctionsButton5MoneyFrameCopperButtonText", "AuctionsButton5MoneyFrameGoldButtonText", "AuctionsButton5MoneyFrameLabel", "AuctionsButton5MoneyFrameSilverButtonText", "AuctionsButton5Name", "AuctionsButton5Right", "AuctionsButton6BuyoutFrameMoneyCopperButtonText", "AuctionsButton6BuyoutFrameMoneyGoldButtonText", "AuctionsButton6BuyoutFrameMoneySilverButtonText", "AuctionsButton6ClosingTimeText", "AuctionsButton6HighBidder", "AuctionsButton6Highlight", "AuctionsButton6ItemCount", "AuctionsButton6ItemIconTexture", "AuctionsButton6ItemNormalTexture", "AuctionsButton6ItemStock", "AuctionsButton6Left", "AuctionsButton6MoneyFrameCopperButtonText", "AuctionsButton6MoneyFrameGoldButtonText", "AuctionsButton6MoneyFrameLabel", "AuctionsButton6MoneyFrameSilverButtonText", "AuctionsButton6Name", "AuctionsButton6Right", "AuctionsButton7BuyoutFrameMoneyCopperButtonText", "AuctionsButton7BuyoutFrameMoneyGoldButtonText", "AuctionsButton7BuyoutFrameMoneySilverButtonText", "AuctionsButton7ClosingTimeText", "AuctionsButton7HighBidder", "AuctionsButton7Highlight", "AuctionsButton7ItemCount", "AuctionsButton7ItemIconTexture", "AuctionsButton7ItemNormalTexture", "AuctionsButton7ItemStock", "AuctionsButton7Left", "AuctionsButton7MoneyFrameCopperButtonText", "AuctionsButton7MoneyFrameGoldButtonText", "AuctionsButton7MoneyFrameLabel", "AuctionsButton7MoneyFrameSilverButtonText", "AuctionsButton7Name", "AuctionsButton7Right", "AuctionsButton8BuyoutFrameMoneyCopperButtonText", "AuctionsButton8BuyoutFrameMoneyGoldButtonText", "AuctionsButton8BuyoutFrameMoneySilverButtonText", "AuctionsButton8ClosingTimeText", "AuctionsButton8HighBidder", "AuctionsButton8Highlight", "AuctionsButton8ItemCount", "AuctionsButton8ItemIconTexture", "AuctionsButton8ItemNormalTexture", "AuctionsButton8ItemStock", "AuctionsButton8Left", "AuctionsButton8MoneyFrameCopperButtonText", "AuctionsButton8MoneyFrameGoldButtonText", "AuctionsButton8MoneyFrameLabel", "AuctionsButton8MoneyFrameSilverButtonText", "AuctionsButton8Name", "AuctionsButton8Right", "AuctionsButton9BuyoutFrameMoneyCopperButtonText", "AuctionsButton9BuyoutFrameMoneyGoldButtonText", "AuctionsButton9BuyoutFrameMoneySilverButtonText", "AuctionsButton9ClosingTimeText", "AuctionsButton9HighBidder", "AuctionsButton9Highlight", "AuctionsButton9ItemCount", "AuctionsButton9ItemIconTexture", "AuctionsButton9ItemNormalTexture", "AuctionsButton9ItemStock", "AuctionsButton9Left", "AuctionsButton9MoneyFrameCopperButtonText", "AuctionsButton9MoneyFrameGoldButtonText", "AuctionsButton9MoneyFrameLabel", "AuctionsButton9MoneyFrameSilverButtonText", "AuctionsButton9Name", "AuctionsButton9Right", "AuctionsBuyoutText", "AuctionsCancelAuctionButtonLeft", "AuctionsCancelAuctionButtonMiddle", "AuctionsCancelAuctionButtonRight", "AuctionsCancelAuctionButtonText", "AuctionsCloseButtonText", "AuctionsCreateAuctionButtonLeft", "AuctionsCreateAuctionButtonMiddle", "AuctionsCreateAuctionButtonRight", "AuctionsCreateAuctionButtonText", "AuctionsDepositMoneyFrameCopperButtonText", "AuctionsDepositMoneyFrameGoldButtonText", "AuctionsDepositMoneyFrameSilverButtonText", "AuctionsDepositText", "AuctionsDurationSortArrow", "AuctionsDurationSortLeft", "AuctionsDurationSortMiddle", "AuctionsDurationSortRight", "AuctionsDurationSortText", "AuctionsHighBidderSortArrow", "AuctionsHighBidderSortLeft", "AuctionsHighBidderSortMiddle", "AuctionsHighBidderSortRight", "AuctionsHighBidderSortText", "AuctionsItemButtonCount", "AuctionsItemButtonName", "AuctionsItemText", "AuctionsNumStacksEntryLeft", "AuctionsNumStacksEntryMiddle", "AuctionsNumStacksEntryRight", "AuctionsNumStacksMaxButtonLeft", "AuctionsNumStacksMaxButtonMiddle", "AuctionsNumStacksMaxButtonRight", "AuctionsNumStacksMaxButtonText", "AuctionsQualitySortArrow", "AuctionsQualitySortLeft", "AuctionsQualitySortMiddle", "AuctionsQualitySortRight", "AuctionsQualitySortText", "AuctionsScrollFrameScrollBarThumbTexture", "AuctionsSearchCountText", "AuctionsStackSizeEntryLeft", "AuctionsStackSizeEntryMiddle", "AuctionsStackSizeEntryRight", "AuctionsStackSizeMaxButtonLeft", "AuctionsStackSizeMaxButtonMiddle", "AuctionsStackSizeMaxButtonRight", "AuctionsStackSizeMaxButtonText", "AuctionsTabText", "AuctionsTitle", "BidBidButtonText", "BidBidPriceCopperLeft", "BidBidPriceCopperMiddle", "BidBidPriceCopperRight", "BidBidPriceGoldLeft", "BidBidPriceGoldMiddle", "BidBidPriceGoldRight", "BidBidPriceSilverLeft", "BidBidPriceSilverMiddle", "BidBidPriceSilverRight", "BidBidSortArrow", "BidBidSortLeft", "BidBidSortMiddle", "BidBidSortRight", "BidBidSortText", "BidBidText", "BidButton1BidStatus", "BidButton1BuyoutMoneyFrameCopperButtonText", "BidButton1BuyoutMoneyFrameGoldButtonText", "BidButton1BuyoutMoneyFrameSilverButtonText", "BidButton1ClosingTimeText", "BidButton1CurrentBidMoneyFrameCopperButtonText", "BidButton1CurrentBidMoneyFrameGoldButtonText", "BidButton1CurrentBidMoneyFrameSilverButtonText", "BidButton1Highlight", "BidButton1ItemCount", "BidButton1ItemIconTexture", "BidButton1ItemNormalTexture", "BidButton1ItemStock", "BidButton1Left", "BidButton1Level", "BidButton1Name", "BidButton1Right", "BidButton2BidStatus", "BidButton2BuyoutMoneyFrameCopperButtonText", "BidButton2BuyoutMoneyFrameGoldButtonText", "BidButton2BuyoutMoneyFrameSilverButtonText", "BidButton2ClosingTimeText", "BidButton2CurrentBidMoneyFrameCopperButtonText", "BidButton2CurrentBidMoneyFrameGoldButtonText", "BidButton2CurrentBidMoneyFrameSilverButtonText", "BidButton2Highlight", "BidButton2ItemCount", "BidButton2ItemIconTexture", "BidButton2ItemNormalTexture", "BidButton2ItemStock", "BidButton2Left", "BidButton2Level", "BidButton2Name", "BidButton2Right", "BidButton3BidStatus", "BidButton3BuyoutMoneyFrameCopperButtonText", "BidButton3BuyoutMoneyFrameGoldButtonText", "BidButton3BuyoutMoneyFrameSilverButtonText", "BidButton3ClosingTimeText", "BidButton3CurrentBidMoneyFrameCopperButtonText", "BidButton3CurrentBidMoneyFrameGoldButtonText", "BidButton3CurrentBidMoneyFrameSilverButtonText", "BidButton3Highlight", "BidButton3ItemCount", "BidButton3ItemIconTexture", "BidButton3ItemNormalTexture", "BidButton3ItemStock", "BidButton3Left", "BidButton3Level", "BidButton3Name", "BidButton3Right", "BidButton4BidStatus", "BidButton4BuyoutMoneyFrameCopperButtonText", "BidButton4BuyoutMoneyFrameGoldButtonText", "BidButton4BuyoutMoneyFrameSilverButtonText", "BidButton4ClosingTimeText", "BidButton4CurrentBidMoneyFrameCopperButtonText", "BidButton4CurrentBidMoneyFrameGoldButtonText", "BidButton4CurrentBidMoneyFrameSilverButtonText", "BidButton4Highlight", "BidButton4ItemCount", "BidButton4ItemIconTexture", "BidButton4ItemNormalTexture", "BidButton4ItemStock", "BidButton4Left", "BidButton4Level", "BidButton4Name", "BidButton4Right", "BidButton5BidStatus", "BidButton5BuyoutMoneyFrameCopperButtonText", "BidButton5BuyoutMoneyFrameGoldButtonText", "BidButton5BuyoutMoneyFrameSilverButtonText", "BidButton5ClosingTimeText", "BidButton5CurrentBidMoneyFrameCopperButtonText", "BidButton5CurrentBidMoneyFrameGoldButtonText", "BidButton5CurrentBidMoneyFrameSilverButtonText", "BidButton5Highlight", "BidButton5ItemCount", "BidButton5ItemIconTexture", "BidButton5ItemNormalTexture", "BidButton5ItemStock", "BidButton5Left", "BidButton5Level", "BidButton5Name", "BidButton5Right", "BidButton6BidStatus", "BidButton6BuyoutMoneyFrameCopperButtonText", "BidButton6BuyoutMoneyFrameGoldButtonText", "BidButton6BuyoutMoneyFrameSilverButtonText", "BidButton6ClosingTimeText", "BidButton6CurrentBidMoneyFrameCopperButtonText", "BidButton6CurrentBidMoneyFrameGoldButtonText", "BidButton6CurrentBidMoneyFrameSilverButtonText", "BidButton6Highlight", "BidButton6ItemCount", "BidButton6ItemIconTexture", "BidButton6ItemNormalTexture", "BidButton6ItemStock", "BidButton6Left", "BidButton6Level", "BidButton6Name", "BidButton6Right", "BidButton7BidStatus", "BidButton7BuyoutMoneyFrameCopperButtonText", "BidButton7BuyoutMoneyFrameGoldButtonText", "BidButton7BuyoutMoneyFrameSilverButtonText", "BidButton7ClosingTimeText", "BidButton7CurrentBidMoneyFrameCopperButtonText", "BidButton7CurrentBidMoneyFrameGoldButtonText", "BidButton7CurrentBidMoneyFrameSilverButtonText", "BidButton7Highlight", "BidButton7ItemCount", "BidButton7ItemIconTexture", "BidButton7ItemNormalTexture", "BidButton7ItemStock", "BidButton7Left", "BidButton7Level", "BidButton7Name", "BidButton7Right", "BidButton8BidStatus", "BidButton8BuyoutMoneyFrameCopperButtonText", "BidButton8BuyoutMoneyFrameGoldButtonText", "BidButton8BuyoutMoneyFrameSilverButtonText", "BidButton8ClosingTimeText", "BidButton8CurrentBidMoneyFrameCopperButtonText", "BidButton8CurrentBidMoneyFrameGoldButtonText", "BidButton8CurrentBidMoneyFrameSilverButtonText", "BidButton8Highlight", "BidButton8ItemCount", "BidButton8ItemIconTexture", "BidButton8ItemNormalTexture", "BidButton8ItemStock", "BidButton8Left", "BidButton8Level", "BidButton8Name", "BidButton8Right", "BidButton9BidStatus", "BidButton9BuyoutMoneyFrameCopperButtonText", "BidButton9BuyoutMoneyFrameGoldButtonText", "BidButton9BuyoutMoneyFrameSilverButtonText", "BidButton9ClosingTimeText", "BidButton9CurrentBidMoneyFrameCopperButtonText", "BidButton9CurrentBidMoneyFrameGoldButtonText", "BidButton9CurrentBidMoneyFrameSilverButtonText", "BidButton9Highlight", "BidButton9ItemCount", "BidButton9ItemIconTexture", "BidButton9ItemNormalTexture", "BidButton9ItemStock", "BidButton9Left", "BidButton9Level", "BidButton9Name", "BidButton9Right", "BidBuyoutButtonText", "BidBuyoutSortArrow", "BidBuyoutSortLeft", "BidBuyoutSortMiddle", "BidBuyoutSortRight", "BidBuyoutSortText", "BidCloseButtonText", "BidDurationSortArrow", "BidDurationSortLeft", "BidDurationSortMiddle", "BidDurationSortRight", "BidDurationSortText", "BidLevelSortArrow", "BidLevelSortLeft", "BidLevelSortMiddle", "BidLevelSortRight", "BidLevelSortText", "BidQualitySortArrow", "BidQualitySortLeft", "BidQualitySortMiddle", "BidQualitySortRight", "BidQualitySortText", "BidScrollFrameScrollBarThumbTexture", "BidSearchCountText", "BidStatusSortArrow", "BidStatusSortLeft", "BidStatusSortMiddle", "BidStatusSortRight", "BidStatusSortText", "BidTitle", "BrowseBidButtonText", "BrowseBidPriceCopperLeft", "BrowseBidPriceCopperMiddle", "BrowseBidPriceCopperRight", "BrowseBidPriceGoldLeft", "BrowseBidPriceGoldMiddle", "BrowseBidPriceGoldRight", "BrowseBidPriceSilverLeft", "BrowseBidPriceSilverMiddle", "BrowseBidPriceSilverRight", "BrowseBidText", "BrowseButton1BuyoutFrameMoneyCopperButtonText", "BrowseButton1BuyoutFrameMoneyGoldButtonText", "BrowseButton1BuyoutFrameMoneySilverButtonText", "BrowseButton1ClosingTimeText", "BrowseButton1HighBidder", "BrowseButton1Highlight", "BrowseButton1ItemCount", "BrowseButton1ItemIconTexture", "BrowseButton1ItemNormalTexture", "BrowseButton1ItemStock", "BrowseButton1Left", "BrowseButton1Level", "BrowseButton1MoneyFrameCopperButtonText", "BrowseButton1MoneyFrameGoldButtonText", "BrowseButton1MoneyFrameSilverButtonText", "BrowseButton1Name", "BrowseButton1Right", "BrowseButton2BuyoutFrameMoneyCopperButtonText", "BrowseButton2BuyoutFrameMoneyGoldButtonText", "BrowseButton2BuyoutFrameMoneySilverButtonText", "BrowseButton2ClosingTimeText", "BrowseButton2HighBidder", "BrowseButton2Highlight", "BrowseButton2ItemCount", "BrowseButton2ItemIconTexture", "BrowseButton2ItemNormalTexture", "BrowseButton2ItemStock", "BrowseButton2Left", "BrowseButton2Level", "BrowseButton2MoneyFrameCopperButtonText", "BrowseButton2MoneyFrameGoldButtonText", "BrowseButton2MoneyFrameSilverButtonText", "BrowseButton2Name", "BrowseButton2Right", "BrowseButton3BuyoutFrameMoneyCopperButtonText", "BrowseButton3BuyoutFrameMoneyGoldButtonText", "BrowseButton3BuyoutFrameMoneySilverButtonText", "BrowseButton3ClosingTimeText", "BrowseButton3HighBidder", "BrowseButton3Highlight", "BrowseButton3ItemCount", "BrowseButton3ItemIconTexture", "BrowseButton3ItemNormalTexture", "BrowseButton3ItemStock", "BrowseButton3Left", "BrowseButton3Level", "BrowseButton3MoneyFrameCopperButtonText", "BrowseButton3MoneyFrameGoldButtonText", "BrowseButton3MoneyFrameSilverButtonText", "BrowseButton3Name", "BrowseButton3Right", "BrowseButton4BuyoutFrameMoneyCopperButtonText", "BrowseButton4BuyoutFrameMoneyGoldButtonText", "BrowseButton4BuyoutFrameMoneySilverButtonText", "BrowseButton4ClosingTimeText", "BrowseButton4HighBidder", "BrowseButton4Highlight", "BrowseButton4ItemCount", "BrowseButton4ItemIconTexture", "BrowseButton4ItemNormalTexture", "BrowseButton4ItemStock", "BrowseButton4Left", "BrowseButton4Level", "BrowseButton4MoneyFrameCopperButtonText", "BrowseButton4MoneyFrameGoldButtonText", "BrowseButton4MoneyFrameSilverButtonText", "BrowseButton4Name", "BrowseButton4Right", "BrowseButton5BuyoutFrameMoneyCopperButtonText", "BrowseButton5BuyoutFrameMoneyGoldButtonText", "BrowseButton5BuyoutFrameMoneySilverButtonText", "BrowseButton5ClosingTimeText", "BrowseButton5HighBidder", "BrowseButton5Highlight", "BrowseButton5ItemCount", "BrowseButton5ItemIconTexture", "BrowseButton5ItemNormalTexture", "BrowseButton5ItemStock", "BrowseButton5Left", "BrowseButton5Level", "BrowseButton5MoneyFrameCopperButtonText", "BrowseButton5MoneyFrameGoldButtonText", "BrowseButton5MoneyFrameSilverButtonText", "BrowseButton5Name", "BrowseButton5Right", "BrowseButton6BuyoutFrameMoneyCopperButtonText", "BrowseButton6BuyoutFrameMoneyGoldButtonText", "BrowseButton6BuyoutFrameMoneySilverButtonText", "BrowseButton6ClosingTimeText", "BrowseButton6HighBidder", "BrowseButton6Highlight", "BrowseButton6ItemCount", "BrowseButton6ItemIconTexture", "BrowseButton6ItemNormalTexture", "BrowseButton6ItemStock", "BrowseButton6Left", "BrowseButton6Level", "BrowseButton6MoneyFrameCopperButtonText", "BrowseButton6MoneyFrameGoldButtonText", "BrowseButton6MoneyFrameSilverButtonText", "BrowseButton6Name", "BrowseButton6Right", "BrowseButton7BuyoutFrameMoneyCopperButtonText", "BrowseButton7BuyoutFrameMoneyGoldButtonText", "BrowseButton7BuyoutFrameMoneySilverButtonText", "BrowseButton7ClosingTimeText", "BrowseButton7HighBidder", "BrowseButton7Highlight", "BrowseButton7ItemCount", "BrowseButton7ItemIconTexture", "BrowseButton7ItemNormalTexture", "BrowseButton7ItemStock", "BrowseButton7Left", "BrowseButton7Level", "BrowseButton7MoneyFrameCopperButtonText", "BrowseButton7MoneyFrameGoldButtonText", "BrowseButton7MoneyFrameSilverButtonText", "BrowseButton7Name", "BrowseButton7Right", "BrowseButton8BuyoutFrameMoneyCopperButtonText", "BrowseButton8BuyoutFrameMoneyGoldButtonText", "BrowseButton8BuyoutFrameMoneySilverButtonText", "BrowseButton8ClosingTimeText", "BrowseButton8HighBidder", "BrowseButton8Highlight", "BrowseButton8ItemCount", "BrowseButton8ItemIconTexture", "BrowseButton8ItemNormalTexture", "BrowseButton8ItemStock", "BrowseButton8Left", "BrowseButton8Level", "BrowseButton8MoneyFrameCopperButtonText", "BrowseButton8MoneyFrameGoldButtonText", "BrowseButton8MoneyFrameSilverButtonText", "BrowseButton8Name", "BrowseButton8Right", "BrowseBuyoutButtonText", "BrowseCloseButtonText", "BrowseCurrentBidSortArrow", "BrowseCurrentBidSortLeft", "BrowseCurrentBidSortMiddle", "BrowseCurrentBidSortRight", "BrowseCurrentBidSortText", "BrowseDropDownButtonDisabledTexture", "BrowseDropDownButtonHighlightTexture", "BrowseDropDownButtonNormalTexture", "BrowseDropDownButtonPushedTexture", "BrowseDropDownLeft", "BrowseDropDownMiddle", "BrowseDropDownName", "BrowseDropDownRight", "BrowseDropDownText", "BrowseDurationSortArrow", "BrowseDurationSortLeft", "BrowseDurationSortMiddle", "BrowseDurationSortRight", "BrowseDurationSortText", "BrowseFilterScrollFrameScrollBarThumbTexture", "BrowseHighBidderSortArrow", "BrowseHighBidderSortLeft", "BrowseHighBidderSortMiddle", "BrowseHighBidderSortRight", "BrowseHighBidderSortText", "BrowseLevelHyphen", "BrowseLevelSortArrow", "BrowseLevelSortLeft", "BrowseLevelSortMiddle", "BrowseLevelSortRight", "BrowseLevelSortText", "BrowseLevelText", "BrowseMaxLevelLeft", "BrowseMaxLevelMiddle", "BrowseMaxLevelRight", "BrowseMinLevelLeft", "BrowseMinLevelMiddle", "BrowseMinLevelRight", "BrowseNameLeft", "BrowseNameMiddle", "BrowseNameRight", "BrowseNameText", "BrowseNoResultsText", "BrowseQualitySortArrow", "BrowseQualitySortLeft", "BrowseQualitySortMiddle", "BrowseQualitySortRight", "BrowseQualitySortText", "BrowseResetButtonText", "BrowseScrollFrameScrollBarThumbTexture", "BrowseSearchButtonText", "BrowseSearchCountText", "BrowseSearchDotsText", "BrowseTitle", "BuyoutPriceCopperLeft", "BuyoutPriceCopperMiddle", "BuyoutPriceCopperRight", "BuyoutPriceGoldLeft", "BuyoutPriceGoldMiddle", "BuyoutPriceGoldRight", "BuyoutPriceSilverLeft", "BuyoutPriceSilverMiddle", "BuyoutPriceSilverRight", "DurationDropDownButtonDisabledTexture", "DurationDropDownButtonHighlightTexture", "DurationDropDownButtonNormalTexture", "DurationDropDownButtonPushedTexture", "DurationDropDownLeft", "DurationDropDownMiddle", "DurationDropDownRight", "DurationDropDownText", "IsUsableCheckButtonText", "PriceDropDownButtonDisabledTexture", "PriceDropDownButtonHighlightTexture", "PriceDropDownButtonNormalTexture", "PriceDropDownButtonPushedTexture", "PriceDropDownLeft", "PriceDropDownMiddle", "PriceDropDownRight", "PriceDropDownText", "ShowOnPlayerCheckButtonText", "StartPriceCopperLeft", "StartPriceCopperMiddle", "StartPriceCopperRight", "StartPriceGoldLeft", "StartPriceGoldMiddle", "StartPriceGoldRight", "StartPriceSilverLeft", "StartPriceSilverMiddle", "StartPriceSilverRight", -- functions: Blizzard_BarbershopUI "BarberShop_OnEvent", "BarberShop_OnHide", "BarberShop_OnLoad", "BarberShop_OnShow", "BarberShop_ResetLabelColors", "BarberShop_SetLabelColor", "BarberShop_ToFourAttributeFormat", "BarberShop_Update", "BarberShop_UpdateBanner", "BarberShop_UpdateCost", "BarberShop_UpdateFacialHairCustomization", "BarberShop_UpdateHairCustomization", "BarberShop_UpdateSelector", -- tables: Blizzard_BarbershopUI "BarberShopBannerFrame", "BarberShopFrame", "BarberShopFrameCancelButton", "BarberShopFrameMoneyFrame", "BarberShopFrameMoneyFrameCopperButton", "BarberShopFrameMoneyFrameGoldButton", "BarberShopFrameMoneyFrameSilverButton", "BarberShopFrameOkayButton", "BarberShopFrameResetButton", "BarberShopFrameSelector1", "BarberShopFrameSelector1Next", "BarberShopFrameSelector1Prev", "BarberShopFrameSelector2", "BarberShopFrameSelector2Next", "BarberShopFrameSelector2Prev", "BarberShopFrameSelector3", "BarberShopFrameSelector3Next", "BarberShopFrameSelector3Prev", "BarberShopFrameSelector4", "BarberShopFrameSelector4Next", "BarberShopFrameSelector4Prev", -- frames: Blizzard_BarbershopUI "BarberShopFrame", "BarberShopFrameSelector1", "BarberShopFrameSelector1Prev", "BarberShopFrameSelector1Next", "BarberShopFrameSelector2", "BarberShopFrameSelector2Prev", "BarberShopFrameSelector2Next", "BarberShopFrameSelector3", "BarberShopFrameSelector3Prev", "BarberShopFrameSelector3Next", "BarberShopFrameSelector4", "BarberShopFrameSelector4Prev", "BarberShopFrameSelector4Next", "BarberShopFrameMoneyFrame", "BarberShopFrameMoneyFrameCopperButton", "BarberShopFrameMoneyFrameSilverButton", "BarberShopFrameMoneyFrameGoldButton", "BarberShopFrameOkayButton", "BarberShopFrameCancelButton", "BarberShopFrameResetButton", "BarberShopBannerFrame", -- widgets: Blizzard_BarbershopUI "BarberShopBannerFrameBGTexture", "BarberShopBannerFrameCaption", "BarberShopFrameBackground", "BarberShopFrameCancelButtonText", "BarberShopFrameMoneyFrameCopperButtonText", "BarberShopFrameMoneyFrameGoldButtonText", "BarberShopFrameMoneyFrameSilverButtonText", "BarberShopFrameOkayButtonText", "BarberShopFrameResetButtonText", "BarberShopFrameSelector1Category", "BarberShopFrameSelector2Category", "BarberShopFrameSelector3Category", "BarberShopFrameSelector4Category", -- functions: Blizzard_BattlefieldMinimap "BattlefieldMinimapTabDropDown_Initialize", "BattlefieldMinimapTabDropDown_ShowOpacity", "BattlefieldMinimapTabDropDown_ToggleLock", "BattlefieldMinimapTabDropDown_TogglePlayers", "BattlefieldMinimapTab_OnClick", "BattlefieldMinimapUnit_OnEnter", "BattlefieldMinimap_ClearTextures", "BattlefieldMinimap_CreatePOI", "BattlefieldMinimap_OnEvent", "BattlefieldMinimap_OnHide", "BattlefieldMinimap_OnLoad", "BattlefieldMinimap_OnShow", "BattlefieldMinimap_OnUpdate", "BattlefieldMinimap_Toggle", "BattlefieldMinimap_Update", "BattlefieldMinimap_UpdateOpacity", -- tables: Blizzard_BattlefieldMinimap "BG_VEHICLES", "BattlefieldMinimap", "BattlefieldMinimapCloseButton", "BattlefieldMinimapCorpse", "BattlefieldMinimapFlag1", "BattlefieldMinimapFlag2", "BattlefieldMinimapParty1", "BattlefieldMinimapParty2", "BattlefieldMinimapParty3", "BattlefieldMinimapParty4", "BattlefieldMinimapRaid1", "BattlefieldMinimapRaid10", "BattlefieldMinimapRaid11", "BattlefieldMinimapRaid12", "BattlefieldMinimapRaid13", "BattlefieldMinimapRaid14", "BattlefieldMinimapRaid15", "BattlefieldMinimapRaid16", "BattlefieldMinimapRaid17", "BattlefieldMinimapRaid18", "BattlefieldMinimapRaid19", "BattlefieldMinimapRaid2", "BattlefieldMinimapRaid20", "BattlefieldMinimapRaid21", "BattlefieldMinimapRaid22", "BattlefieldMinimapRaid23", "BattlefieldMinimapRaid24", "BattlefieldMinimapRaid25", "BattlefieldMinimapRaid26", "BattlefieldMinimapRaid27", "BattlefieldMinimapRaid28", "BattlefieldMinimapRaid29", "BattlefieldMinimapRaid3", "BattlefieldMinimapRaid30", "BattlefieldMinimapRaid31", "BattlefieldMinimapRaid32", "BattlefieldMinimapRaid33", "BattlefieldMinimapRaid34", "BattlefieldMinimapRaid35", "BattlefieldMinimapRaid36", "BattlefieldMinimapRaid37", "BattlefieldMinimapRaid38", "BattlefieldMinimapRaid39", "BattlefieldMinimapRaid4", "BattlefieldMinimapRaid40", "BattlefieldMinimapRaid5", "BattlefieldMinimapRaid6", "BattlefieldMinimapRaid7", "BattlefieldMinimapRaid8", "BattlefieldMinimapRaid9", "BattlefieldMinimapTab", "BattlefieldMinimapTabDropDown", "BattlefieldMinimapTabDropDownButton", "BattlefieldMinimapTabFlash", "PlayerMiniArrowEffectFrame", "PlayerMiniArrowFrame", -- frames: Blizzard_BattlefieldMinimap "BattlefieldMinimapTab", "BattlefieldMinimapTabFlash", "BattlefieldMinimapTabDropDown", "BattlefieldMinimapTabDropDownButton", "BattlefieldMinimap", "BattlefieldMinimapCloseButton", "BattlefieldMinimapParty1", "BattlefieldMinimapParty2", "BattlefieldMinimapParty3", "BattlefieldMinimapParty4", "BattlefieldMinimapRaid1", "BattlefieldMinimapRaid2", "BattlefieldMinimapRaid3", "BattlefieldMinimapRaid4", "BattlefieldMinimapRaid5", "BattlefieldMinimapRaid6", "BattlefieldMinimapRaid7", "BattlefieldMinimapRaid8", "BattlefieldMinimapRaid9", "BattlefieldMinimapRaid10", "BattlefieldMinimapRaid11", "BattlefieldMinimapRaid12", "BattlefieldMinimapRaid13", "BattlefieldMinimapRaid14", "BattlefieldMinimapRaid15", "BattlefieldMinimapRaid16", "BattlefieldMinimapRaid17", "BattlefieldMinimapRaid18", "BattlefieldMinimapRaid19", "BattlefieldMinimapRaid20", "BattlefieldMinimapRaid21", "BattlefieldMinimapRaid22", "BattlefieldMinimapRaid23", "BattlefieldMinimapRaid24", "BattlefieldMinimapRaid25", "BattlefieldMinimapRaid26", "BattlefieldMinimapRaid27", "BattlefieldMinimapRaid28", "BattlefieldMinimapRaid29", "BattlefieldMinimapRaid30", "BattlefieldMinimapRaid31", "BattlefieldMinimapRaid32", "BattlefieldMinimapRaid33", "BattlefieldMinimapRaid34", "BattlefieldMinimapRaid35", "BattlefieldMinimapRaid36", "BattlefieldMinimapRaid37", "BattlefieldMinimapRaid38", "BattlefieldMinimapRaid39", "BattlefieldMinimapRaid40", "BattlefieldMinimapCorpse", "BattlefieldMinimapFlag1", "BattlefieldMinimapFlag2", "PlayerMiniArrowFrame", "PlayerMiniArrowEffectFrame", -- widgets: Blizzard_BattlefieldMinimap "BattlefieldMinimap1", "BattlefieldMinimap10", "BattlefieldMinimap11", "BattlefieldMinimap12", "BattlefieldMinimap2", "BattlefieldMinimap3", "BattlefieldMinimap4", "BattlefieldMinimap5", "BattlefieldMinimap6", "BattlefieldMinimap7", "BattlefieldMinimap8", "BattlefieldMinimap9", "BattlefieldMinimapBackground", "BattlefieldMinimapCorner", "BattlefieldMinimapFlag1Texture", "BattlefieldMinimapFlag2Texture", "BattlefieldMinimapParty1Icon", "BattlefieldMinimapParty2Icon", "BattlefieldMinimapParty3Icon", "BattlefieldMinimapParty4Icon", "BattlefieldMinimapRaid10Icon", "BattlefieldMinimapRaid11Icon", "BattlefieldMinimapRaid12Icon", "BattlefieldMinimapRaid13Icon", "BattlefieldMinimapRaid14Icon", "BattlefieldMinimapRaid15Icon", "BattlefieldMinimapRaid16Icon", "BattlefieldMinimapRaid17Icon", "BattlefieldMinimapRaid18Icon", "BattlefieldMinimapRaid19Icon", "BattlefieldMinimapRaid1Icon", "BattlefieldMinimapRaid20Icon", "BattlefieldMinimapRaid21Icon", "BattlefieldMinimapRaid22Icon", "BattlefieldMinimapRaid23Icon", "BattlefieldMinimapRaid24Icon", "BattlefieldMinimapRaid25Icon", "BattlefieldMinimapRaid26Icon", "BattlefieldMinimapRaid27Icon", "BattlefieldMinimapRaid28Icon", "BattlefieldMinimapRaid29Icon", "BattlefieldMinimapRaid2Icon", "BattlefieldMinimapRaid30Icon", "BattlefieldMinimapRaid31Icon", "BattlefieldMinimapRaid32Icon", "BattlefieldMinimapRaid33Icon", "BattlefieldMinimapRaid34Icon", "BattlefieldMinimapRaid35Icon", "BattlefieldMinimapRaid36Icon", "BattlefieldMinimapRaid37Icon", "BattlefieldMinimapRaid38Icon", "BattlefieldMinimapRaid39Icon", "BattlefieldMinimapRaid3Icon", "BattlefieldMinimapRaid40Icon", "BattlefieldMinimapRaid4Icon", "BattlefieldMinimapRaid5Icon", "BattlefieldMinimapRaid6Icon", "BattlefieldMinimapRaid7Icon", "BattlefieldMinimapRaid8Icon", "BattlefieldMinimapRaid9Icon", "BattlefieldMinimapTabDropDownButtonDisabledTexture", "BattlefieldMinimapTabDropDownButtonHighlightTexture", "BattlefieldMinimapTabDropDownButtonNormalTexture", "BattlefieldMinimapTabDropDownButtonPushedTexture", "BattlefieldMinimapTabDropDownLeft", "BattlefieldMinimapTabDropDownMiddle", "BattlefieldMinimapTabDropDownRight", "BattlefieldMinimapTabDropDownText", "BattlefieldMinimapTabLeft", "BattlefieldMinimapTabMiddle", "BattlefieldMinimapTabRight", "BattlefieldMinimapTabText", -- functions: Blizzard_BindingUI "KeyBindingButton_OnClick", "KeyBindingFrame_ChangeBindingProfile", "KeyBindingFrame_OnKeyDown", "KeyBindingFrame_OnLoad", "KeyBindingFrame_OnShow", "KeyBindingFrame_SetBinding", "KeyBindingFrame_SetSelected", "KeyBindingFrame_UnbindKey", "KeyBindingFrame_Update", "KeyBindingFrame_UpdateUnbindKey", -- tables: Blizzard_BindingUI "BattlefieldMinimapOptions", "KeyBindingFrame", "KeyBindingFrameBinding1", "KeyBindingFrameBinding10", "KeyBindingFrameBinding10Key1Button", "KeyBindingFrameBinding10Key2Button", "KeyBindingFrameBinding11", "KeyBindingFrameBinding11Key1Button", "KeyBindingFrameBinding11Key2Button", "KeyBindingFrameBinding12", "KeyBindingFrameBinding12Key1Button", "KeyBindingFrameBinding12Key2Button", "KeyBindingFrameBinding13", "KeyBindingFrameBinding13Key1Button", "KeyBindingFrameBinding13Key2Button", "KeyBindingFrameBinding14", "KeyBindingFrameBinding14Key1Button", "KeyBindingFrameBinding14Key2Button", "KeyBindingFrameBinding15", "KeyBindingFrameBinding15Key1Button", "KeyBindingFrameBinding15Key2Button", "KeyBindingFrameBinding16", "KeyBindingFrameBinding16Key1Button", "KeyBindingFrameBinding16Key2Button", "KeyBindingFrameBinding17", "KeyBindingFrameBinding17Key1Button", "KeyBindingFrameBinding17Key2Button", "KeyBindingFrameBinding1Key1Button", "KeyBindingFrameBinding1Key2Button", "KeyBindingFrameBinding2", "KeyBindingFrameBinding2Key1Button", "KeyBindingFrameBinding2Key2Button", "KeyBindingFrameBinding3", "KeyBindingFrameBinding3Key1Button", "KeyBindingFrameBinding3Key2Button", "KeyBindingFrameBinding4", "KeyBindingFrameBinding4Key1Button", "KeyBindingFrameBinding4Key2Button", "KeyBindingFrameBinding5", "KeyBindingFrameBinding5Key1Button", "KeyBindingFrameBinding5Key2Button", "KeyBindingFrameBinding6", "KeyBindingFrameBinding6Key1Button", "KeyBindingFrameBinding6Key2Button", "KeyBindingFrameBinding7", "KeyBindingFrameBinding7Key1Button", "KeyBindingFrameBinding7Key2Button", "KeyBindingFrameBinding8", "KeyBindingFrameBinding8Key1Button", "KeyBindingFrameBinding8Key2Button", "KeyBindingFrameBinding9", "KeyBindingFrameBinding9Key1Button", "KeyBindingFrameBinding9Key2Button", "KeyBindingFrameCancelButton", "KeyBindingFrameCharacterButton", "KeyBindingFrameDefaultButton", "KeyBindingFrameOkayButton", "KeyBindingFrameScrollFrame", "KeyBindingFrameScrollFrameScrollBar", "KeyBindingFrameScrollFrameScrollBarScrollDownButton", "KeyBindingFrameScrollFrameScrollBarScrollUpButton", "KeyBindingFrameScrollFrameScrollChildFrame", "KeyBindingFrameUnbindButton", -- frames: Blizzard_BindingUI "KeyBindingFrame", "KeyBindingFrameBinding1", "KeyBindingFrameBinding1Key1Button", "KeyBindingFrameBinding1Key2Button", "KeyBindingFrameBinding2", "KeyBindingFrameBinding2Key1Button", "KeyBindingFrameBinding2Key2Button", "KeyBindingFrameBinding3", "KeyBindingFrameBinding3Key1Button", "KeyBindingFrameBinding3Key2Button", "KeyBindingFrameBinding4", "KeyBindingFrameBinding4Key1Button", "KeyBindingFrameBinding4Key2Button", "KeyBindingFrameBinding5", "KeyBindingFrameBinding5Key1Button", "KeyBindingFrameBinding5Key2Button", "KeyBindingFrameBinding6", "KeyBindingFrameBinding6Key1Button", "KeyBindingFrameBinding6Key2Button", "KeyBindingFrameBinding7", "KeyBindingFrameBinding7Key1Button", "KeyBindingFrameBinding7Key2Button", "KeyBindingFrameBinding8", "KeyBindingFrameBinding8Key1Button", "KeyBindingFrameBinding8Key2Button", "KeyBindingFrameBinding9", "KeyBindingFrameBinding9Key1Button", "KeyBindingFrameBinding9Key2Button", "KeyBindingFrameBinding10", "KeyBindingFrameBinding10Key1Button", "KeyBindingFrameBinding10Key2Button", "KeyBindingFrameBinding11", "KeyBindingFrameBinding11Key1Button", "KeyBindingFrameBinding11Key2Button", "KeyBindingFrameBinding12", "KeyBindingFrameBinding12Key1Button", "KeyBindingFrameBinding12Key2Button", "KeyBindingFrameBinding13", "KeyBindingFrameBinding13Key1Button", "KeyBindingFrameBinding13Key2Button", "KeyBindingFrameBinding14", "KeyBindingFrameBinding14Key1Button", "KeyBindingFrameBinding14Key2Button", "KeyBindingFrameBinding15", "KeyBindingFrameBinding15Key1Button", "KeyBindingFrameBinding15Key2Button", "KeyBindingFrameBinding16", "KeyBindingFrameBinding16Key1Button", "KeyBindingFrameBinding16Key2Button", "KeyBindingFrameBinding17", "KeyBindingFrameBinding17Key1Button", "KeyBindingFrameBinding17Key2Button", "KeyBindingFrameScrollFrame", "KeyBindingFrameScrollFrameScrollChildFrame", "KeyBindingFrameScrollFrameScrollBar", "KeyBindingFrameScrollFrameScrollBarScrollUpButton", "KeyBindingFrameScrollFrameScrollBarScrollDownButton", "KeyBindingFrameCharacterButton", "KeyBindingFrameDefaultButton", "KeyBindingFrameCancelButton", "KeyBindingFrameOkayButton", "KeyBindingFrameUnbindButton", -- widgets: Blizzard_BindingUI "KeyBindingFrameBinding10Description", "KeyBindingFrameBinding10Header", "KeyBindingFrameBinding10Key1ButtonLeft", "KeyBindingFrameBinding10Key1ButtonMiddle", "KeyBindingFrameBinding10Key1ButtonRight", "KeyBindingFrameBinding10Key1ButtonText", "KeyBindingFrameBinding10Key2ButtonLeft", "KeyBindingFrameBinding10Key2ButtonMiddle", "KeyBindingFrameBinding10Key2ButtonRight", "KeyBindingFrameBinding10Key2ButtonText", "KeyBindingFrameBinding11Description", "KeyBindingFrameBinding11Header", "KeyBindingFrameBinding11Key1ButtonLeft", "KeyBindingFrameBinding11Key1ButtonMiddle", "KeyBindingFrameBinding11Key1ButtonRight", "KeyBindingFrameBinding11Key1ButtonText", "KeyBindingFrameBinding11Key2ButtonLeft", "KeyBindingFrameBinding11Key2ButtonMiddle", "KeyBindingFrameBinding11Key2ButtonRight", "KeyBindingFrameBinding11Key2ButtonText", "KeyBindingFrameBinding12Description", "KeyBindingFrameBinding12Header", "KeyBindingFrameBinding12Key1ButtonLeft", "KeyBindingFrameBinding12Key1ButtonMiddle", "KeyBindingFrameBinding12Key1ButtonRight", "KeyBindingFrameBinding12Key1ButtonText", "KeyBindingFrameBinding12Key2ButtonLeft", "KeyBindingFrameBinding12Key2ButtonMiddle", "KeyBindingFrameBinding12Key2ButtonRight", "KeyBindingFrameBinding12Key2ButtonText", "KeyBindingFrameBinding13Description", "KeyBindingFrameBinding13Header", "KeyBindingFrameBinding13Key1ButtonLeft", "KeyBindingFrameBinding13Key1ButtonMiddle", "KeyBindingFrameBinding13Key1ButtonRight", "KeyBindingFrameBinding13Key1ButtonText", "KeyBindingFrameBinding13Key2ButtonLeft", "KeyBindingFrameBinding13Key2ButtonMiddle", "KeyBindingFrameBinding13Key2ButtonRight", "KeyBindingFrameBinding13Key2ButtonText", "KeyBindingFrameBinding14Description", "KeyBindingFrameBinding14Header", "KeyBindingFrameBinding14Key1ButtonLeft", "KeyBindingFrameBinding14Key1ButtonMiddle", "KeyBindingFrameBinding14Key1ButtonRight", "KeyBindingFrameBinding14Key1ButtonText", "KeyBindingFrameBinding14Key2ButtonLeft", "KeyBindingFrameBinding14Key2ButtonMiddle", "KeyBindingFrameBinding14Key2ButtonRight", "KeyBindingFrameBinding14Key2ButtonText", "KeyBindingFrameBinding15Description", "KeyBindingFrameBinding15Header", "KeyBindingFrameBinding15Key1ButtonLeft", "KeyBindingFrameBinding15Key1ButtonMiddle", "KeyBindingFrameBinding15Key1ButtonRight", "KeyBindingFrameBinding15Key1ButtonText", "KeyBindingFrameBinding15Key2ButtonLeft", "KeyBindingFrameBinding15Key2ButtonMiddle", "KeyBindingFrameBinding15Key2ButtonRight", "KeyBindingFrameBinding15Key2ButtonText", "KeyBindingFrameBinding16Description", "KeyBindingFrameBinding16Header", "KeyBindingFrameBinding16Key1ButtonLeft", "KeyBindingFrameBinding16Key1ButtonMiddle", "KeyBindingFrameBinding16Key1ButtonRight", "KeyBindingFrameBinding16Key1ButtonText", "KeyBindingFrameBinding16Key2ButtonLeft", "KeyBindingFrameBinding16Key2ButtonMiddle", "KeyBindingFrameBinding16Key2ButtonRight", "KeyBindingFrameBinding16Key2ButtonText", "KeyBindingFrameBinding17Description", "KeyBindingFrameBinding17Header", "KeyBindingFrameBinding17Key1ButtonLeft", "KeyBindingFrameBinding17Key1ButtonMiddle", "KeyBindingFrameBinding17Key1ButtonRight", "KeyBindingFrameBinding17Key1ButtonText", "KeyBindingFrameBinding17Key2ButtonLeft", "KeyBindingFrameBinding17Key2ButtonMiddle", "KeyBindingFrameBinding17Key2ButtonRight", "KeyBindingFrameBinding17Key2ButtonText", "KeyBindingFrameBinding1Description", "KeyBindingFrameBinding1Header", "KeyBindingFrameBinding1Key1ButtonLeft", "KeyBindingFrameBinding1Key1ButtonMiddle", "KeyBindingFrameBinding1Key1ButtonRight", "KeyBindingFrameBinding1Key1ButtonText", "KeyBindingFrameBinding1Key2ButtonLeft", "KeyBindingFrameBinding1Key2ButtonMiddle", "KeyBindingFrameBinding1Key2ButtonRight", "KeyBindingFrameBinding1Key2ButtonText", "KeyBindingFrameBinding2Description", "KeyBindingFrameBinding2Header", "KeyBindingFrameBinding2Key1ButtonLeft", "KeyBindingFrameBinding2Key1ButtonMiddle", "KeyBindingFrameBinding2Key1ButtonRight", "KeyBindingFrameBinding2Key1ButtonText", "KeyBindingFrameBinding2Key2ButtonLeft", "KeyBindingFrameBinding2Key2ButtonMiddle", "KeyBindingFrameBinding2Key2ButtonRight", "KeyBindingFrameBinding2Key2ButtonText", "KeyBindingFrameBinding3Description", "KeyBindingFrameBinding3Header", "KeyBindingFrameBinding3Key1ButtonLeft", "KeyBindingFrameBinding3Key1ButtonMiddle", "KeyBindingFrameBinding3Key1ButtonRight", "KeyBindingFrameBinding3Key1ButtonText", "KeyBindingFrameBinding3Key2ButtonLeft", "KeyBindingFrameBinding3Key2ButtonMiddle", "KeyBindingFrameBinding3Key2ButtonRight", "KeyBindingFrameBinding3Key2ButtonText", "KeyBindingFrameBinding4Description", "KeyBindingFrameBinding4Header", "KeyBindingFrameBinding4Key1ButtonLeft", "KeyBindingFrameBinding4Key1ButtonMiddle", "KeyBindingFrameBinding4Key1ButtonRight", "KeyBindingFrameBinding4Key1ButtonText", "KeyBindingFrameBinding4Key2ButtonLeft", "KeyBindingFrameBinding4Key2ButtonMiddle", "KeyBindingFrameBinding4Key2ButtonRight", "KeyBindingFrameBinding4Key2ButtonText", "KeyBindingFrameBinding5Description", "KeyBindingFrameBinding5Header", "KeyBindingFrameBinding5Key1ButtonLeft", "KeyBindingFrameBinding5Key1ButtonMiddle", "KeyBindingFrameBinding5Key1ButtonRight", "KeyBindingFrameBinding5Key1ButtonText", "KeyBindingFrameBinding5Key2ButtonLeft", "KeyBindingFrameBinding5Key2ButtonMiddle", "KeyBindingFrameBinding5Key2ButtonRight", "KeyBindingFrameBinding5Key2ButtonText", "KeyBindingFrameBinding6Description", "KeyBindingFrameBinding6Header", "KeyBindingFrameBinding6Key1ButtonLeft", "KeyBindingFrameBinding6Key1ButtonMiddle", "KeyBindingFrameBinding6Key1ButtonRight", "KeyBindingFrameBinding6Key1ButtonText", "KeyBindingFrameBinding6Key2ButtonLeft", "KeyBindingFrameBinding6Key2ButtonMiddle", "KeyBindingFrameBinding6Key2ButtonRight", "KeyBindingFrameBinding6Key2ButtonText", "KeyBindingFrameBinding7Description", "KeyBindingFrameBinding7Header", "KeyBindingFrameBinding7Key1ButtonLeft", "KeyBindingFrameBinding7Key1ButtonMiddle", "KeyBindingFrameBinding7Key1ButtonRight", "KeyBindingFrameBinding7Key1ButtonText", "KeyBindingFrameBinding7Key2ButtonLeft", "KeyBindingFrameBinding7Key2ButtonMiddle", "KeyBindingFrameBinding7Key2ButtonRight", "KeyBindingFrameBinding7Key2ButtonText", "KeyBindingFrameBinding8Description", "KeyBindingFrameBinding8Header", "KeyBindingFrameBinding8Key1ButtonLeft", "KeyBindingFrameBinding8Key1ButtonMiddle", "KeyBindingFrameBinding8Key1ButtonRight", "KeyBindingFrameBinding8Key1ButtonText", "KeyBindingFrameBinding8Key2ButtonLeft", "KeyBindingFrameBinding8Key2ButtonMiddle", "KeyBindingFrameBinding8Key2ButtonRight", "KeyBindingFrameBinding8Key2ButtonText", "KeyBindingFrameBinding9Description", "KeyBindingFrameBinding9Header", "KeyBindingFrameBinding9Key1ButtonLeft", "KeyBindingFrameBinding9Key1ButtonMiddle", "KeyBindingFrameBinding9Key1ButtonRight", "KeyBindingFrameBinding9Key1ButtonText", "KeyBindingFrameBinding9Key2ButtonLeft", "KeyBindingFrameBinding9Key2ButtonMiddle", "KeyBindingFrameBinding9Key2ButtonRight", "KeyBindingFrameBinding9Key2ButtonText", "KeyBindingFrameCancelButtonText", "KeyBindingFrameCharacterButtonText", "KeyBindingFrameCommandLabel", "KeyBindingFrameHeader", "KeyBindingFrameHeaderText", "KeyBindingFrameKey1Label", "KeyBindingFrameKey2Label", "KeyBindingFrameOkayButtonText", "KeyBindingFrameOutputText", "KeyBindingFrameScrollFrameScrollBarThumbTexture", "KeyBindingFrameUnbindButtonText", -- functions: Blizzard_Calendar "CalendarArenaTeamContextMenuButton_OnClick_CreateArenaTeamEvent", "CalendarArenaTeamContextMenu_Initialize", "CalendarArenaTeamContextMenu_OnEvent", "CalendarArenaTeamContextMenu_OnLoad", "CalendarArenaTeamContextMenu_OnShow", "CalendarClassButtonContainer_Hide", "CalendarClassButtonContainer_OnLoad", "CalendarClassButtonContainer_Show", "CalendarClassButtonContainer_Update", "CalendarClassButton_OnEnter", "CalendarClassButton_OnLoad", "CalendarClassTotalsButton_OnEnter", "CalendarClassTotalsButton_Update", "CalendarContextMenu_Hide", "CalendarContextMenu_OnEvent", "CalendarContextMenu_OnHide", "CalendarContextMenu_OnLoad", "CalendarContextMenu_Reset", "CalendarContextMenu_Show", "CalendarContextMenu_Toggle", "CalendarCreateEventAMPMDropDown_Initialize", "CalendarCreateEventAMPMDropDown_OnClick", "CalendarCreateEventAutoApproveCheck_OnClick", "CalendarCreateEventAutoApproveCheck_OnLoad", "CalendarCreateEventCreateButton_OnClick", "CalendarCreateEventCreateButton_OnUpdate", "CalendarCreateEventCreateButton_SetText", "CalendarCreateEventCreateButton_Update", "CalendarCreateEventCreatorName_Update", "CalendarCreateEventDescriptionScrollFrame_OnLoad", "CalendarCreateEventFrame_OnEvent", "CalendarCreateEventFrame_OnHide", "CalendarCreateEventFrame_OnLoad", "CalendarCreateEventFrame_OnShow", "CalendarCreateEventFrame_SetSelectedInvite", "CalendarCreateEventFrame_Update", "CalendarCreateEventHourDropDown_Initialize", "CalendarCreateEventHourDropDown_OnClick", "CalendarCreateEventInviteButton_OnClick", "CalendarCreateEventInviteButton_OnUpdate", "CalendarCreateEventInviteButton_Update", "CalendarCreateEventInviteContextMenu_Initialize", "CalendarCreateEventInviteEdit_OnEditFocusLost", "CalendarCreateEventInviteEdit_OnEnterPressed", "CalendarCreateEventInviteListButton_Click", "CalendarCreateEventInviteListButton_OnClick", "CalendarCreateEventInviteListScrollFrame_Update", "CalendarCreateEventInviteList_Update", "CalendarCreateEventLockEventCheck_OnClick", "CalendarCreateEventLockEventCheck_OnLoad", "CalendarCreateEventMassInviteButton_OnClick", "CalendarCreateEventMassInviteButton_OnUpdate", "CalendarCreateEventMassInviteButton_Update", "CalendarCreateEventMinuteDropDown_Initialize", "CalendarCreateEventMinuteDropDown_OnClick", "CalendarCreateEventRaidInviteButton_OnClick", "CalendarCreateEventRaidInviteButton_OnEnter", "CalendarCreateEventRaidInviteButton_OnEvent", "CalendarCreateEventRaidInviteButton_OnLoad", "CalendarCreateEventRaidInviteButton_Update", "CalendarCreateEventRepeatOptionDropDown_Initialize", "CalendarCreateEventRepeatOptionDropDown_OnClick", "CalendarCreateEventTexture_Update", "CalendarCreateEventTitleEdit_OnEditFocusLost", "CalendarCreateEventTitleEdit_OnTextChanged", "CalendarCreateEventTypeDropDown_InitEventTypes", "CalendarCreateEventTypeDropDown_InitRepeatOptions", "CalendarCreateEventTypeDropDown_Initialize", "CalendarCreateEventTypeDropDown_OnClick", "CalendarCreateEvent_SetAutoApprove", "CalendarCreateEvent_SetEventTime", "CalendarCreateEvent_SetLockEvent", "CalendarCreateEvent_UpdateEventTime", "CalendarCreateEvent_UpdateEventType", "CalendarCreateEvent_UpdateRepeatOption", "CalendarCreateEvent_UpdateTimeFormat", "CalendarDayButtonMoreEventsButton_OnClick", "CalendarDayButtonMoreEventsButton_OnEnter", "CalendarDayButtonMoreEventsButton_OnLeave", "CalendarDayButtonMoreEventsButton_OnLoad", "CalendarDayButton_Click", "CalendarDayButton_OnClick", "CalendarDayButton_OnEnter", "CalendarDayButton_OnLeave", "CalendarDayButton_OnLoad", "CalendarDayContextMenu_AcceptInvite", "CalendarDayContextMenu_CopyEvent", "CalendarDayContextMenu_CreateEvent", "CalendarDayContextMenu_CreateGuildAnnouncement", "CalendarDayContextMenu_CreateGuildEvent", "CalendarDayContextMenu_DeclineInvite", "CalendarDayContextMenu_DeleteEvent", "CalendarDayContextMenu_Initialize", "CalendarDayContextMenu_PasteEvent", "CalendarDayContextMenu_RefreshEvent", "CalendarDayContextMenu_RemoveInvite", "CalendarDayContextMenu_ReportSpam", "CalendarDayContextMenu_SignUp", "CalendarDayContextMenu_TentativeInvite", "CalendarDayContextMenu_UnlockHighlights", "CalendarDayEventButton_Click", "CalendarDayEventButton_OnClick", "CalendarDayEventButton_OnEnter", "CalendarDayEventButton_OnLeave", "CalendarDayEventButton_OnLoad", "CalendarEventCloseButton_OnClick", "CalendarEventDescriptionScrollFrame_OnEvent", "CalendarEventDescriptionScrollFrame_OnLoad", "CalendarEventFrameBlocker_OnHide", "CalendarEventFrameBlocker_OnShow", "CalendarEventFrameBlocker_Update", "CalendarEventInviteListButton_OnEnter", "CalendarEventInviteList_AnchorSortButtons", "CalendarEventInviteList_OnEvent", "CalendarEventInviteList_OnLoad", "CalendarEventInviteList_UpdateSortButtons", "CalendarEventInviteSortButton_OnClick", "CalendarEventInviteSortButton_OnLoad", "CalendarEventPickerButton_Click", "CalendarEventPickerButton_OnClick", "CalendarEventPickerButton_OnDoubleClick", "CalendarEventPickerButton_OnLoad", "CalendarEventPickerCloseButton_OnClick", "CalendarEventPickerFrame_Hide", "CalendarEventPickerFrame_OnEvent", "CalendarEventPickerFrame_OnLoad", "CalendarEventPickerFrame_SetSelectedEvent", "CalendarEventPickerFrame_Show", "CalendarEventPickerFrame_Toggle", "CalendarEventPickerScrollFrame_OnEvent", "CalendarEventPickerScrollFrame_OnLoad", "CalendarEventPickerScrollFrame_Update", "CalendarFilterButton_OnClick", "CalendarFilterDropDown_Initialize", "CalendarFilterDropDown_OnClick", "CalendarFilterDropDown_OnLoad", "CalendarFrame_CloseEvent", "CalendarFrame_GetEventFrame", "CalendarFrame_GetModal", "CalendarFrame_HideEventFrame", "CalendarFrame_InitDay", "CalendarFrame_InitWeekday", "CalendarFrame_OffsetMonth", "CalendarFrame_OnEvent", "CalendarFrame_OnHide", "CalendarFrame_OnLoad", "CalendarFrame_OnShow", "CalendarFrame_OpenEvent", "CalendarFrame_PopModal", "CalendarFrame_PushModal", "CalendarFrame_SetLastDay", "CalendarFrame_SetSelectedDay", "CalendarFrame_SetSelectedEvent", "CalendarFrame_SetToday", "CalendarFrame_ShowEventFrame", "CalendarFrame_Update", "CalendarFrame_UpdateDay", "CalendarFrame_UpdateDayEvents", "CalendarFrame_UpdateDayTextures", "CalendarFrame_UpdateFilter", "CalendarFrame_UpdateMonthOffsetButtons", "CalendarFrame_UpdateTimeFormat", "CalendarFrame_UpdateTitle", "CalendarInviteContextMenu_ClearModerator", "CalendarInviteContextMenu_InviteToGroup", "CalendarInviteContextMenu_RemoveInvite", "CalendarInviteContextMenu_SetModerator", "CalendarInviteContextMenu_UnlockHighlights", "CalendarInviteStatusContextMenu_Initialize", "CalendarInviteStatusContextMenu_OnEvent", "CalendarInviteStatusContextMenu_OnLoad", "CalendarInviteStatusContextMenu_OnShow", "CalendarInviteStatusContextMenu_SetStatusOption", "CalendarMassInviteArenaButton_OnClick", "CalendarMassInviteArenaButton_OnEnter", "CalendarMassInviteArenaButton_OnLoad", "CalendarMassInviteArena_Update", "CalendarMassInviteFrame_OnEvent", "CalendarMassInviteFrame_OnLoad", "CalendarMassInviteFrame_OnShow", "CalendarMassInviteFrame_OnUpdate", "CalendarMassInviteGuildAcceptButton_OnClick", "CalendarMassInviteGuildRankMenu_Initialize", "CalendarMassInviteGuildRankMenu_OnClick", "CalendarMassInviteGuild_Update", "CalendarModalDummy_Hide", "CalendarModalDummy_Show", "CalendarNextMonthButton_OnClick", "CalendarPrevMonthButton_OnClick", "CalendarTexturePickerAcceptButton_OnClick", "CalendarTexturePickerButton_OnClick", "CalendarTexturePickerButton_OnDoubleClick", "CalendarTexturePickerButton_OnLoad", "CalendarTexturePickerFrame_Hide", "CalendarTexturePickerFrame_OnLoad", "CalendarTexturePickerFrame_Show", "CalendarTexturePickerFrame_Toggle", "CalendarTexturePickerFrame_Update", "CalendarTexturePickerScrollFrame_OnEvent", "CalendarTexturePickerScrollFrame_OnLoad", "CalendarTexturePickerScrollFrame_Update", "CalendarTexturePickerTitleFrame_Update", "CalendarTitleFrame_SetText", "CalendarTodayFrame_OnUpdate", "CalendarViewEventAcceptButton_OnClick", "CalendarViewEventAcceptButton_OnEnter", "CalendarViewEventDeclineButton_OnClick", "CalendarViewEventDeclineButton_OnEnter", "CalendarViewEventDescriptionScrollFrame_OnLoad", "CalendarViewEventFrame_OnEvent", "CalendarViewEventFrame_OnHide", "CalendarViewEventFrame_OnLoad", "CalendarViewEventFrame_OnShow", "CalendarViewEventFrame_SetSelectedInvite", "CalendarViewEventFrame_Update", "CalendarViewEventInviteContextMenu_Initialize", "CalendarViewEventInviteListButton_Click", "CalendarViewEventInviteListButton_OnClick", "CalendarViewEventInviteListScrollFrame_Update", "CalendarViewEventInviteList_Update", "CalendarViewEventRSVPButton_OnUpdate", "CalendarViewEventRSVP_Update", "CalendarViewEventRemoveButton_OnClick", "CalendarViewEventRemoveButton_OnEnter", "CalendarViewEventTentativeButton_OnClick", "CalendarViewEventTentativeButton_OnEnter", "CalendarViewHolidayFrame_OnHide", "CalendarViewHolidayFrame_OnLoad", "CalendarViewHolidayFrame_OnShow", "CalendarViewHolidayFrame_Update", "CalendarViewRaidFrame_OnHide", "CalendarViewRaidFrame_OnLoad", "CalendarViewRaidFrame_OnShow", "CalendarViewRaidFrame_Update", "Calendar_Hide", "Calendar_Show", "Calendar_Toggle", "CloseCalendarMenus", -- tables: Blizzard_Calendar "CALENDAR_CREATEEVENTFRAME_TAB_LIST", "CalendarArenaTeamContextMenu", "CalendarArenaTeamContextMenuButton1", "CalendarArenaTeamContextMenuButton10", "CalendarArenaTeamContextMenuButton11", "CalendarArenaTeamContextMenuButton12", "CalendarArenaTeamContextMenuButton13", "CalendarArenaTeamContextMenuButton14", "CalendarArenaTeamContextMenuButton15", "CalendarArenaTeamContextMenuButton16", "CalendarArenaTeamContextMenuButton17", "CalendarArenaTeamContextMenuButton18", "CalendarArenaTeamContextMenuButton19", "CalendarArenaTeamContextMenuButton2", "CalendarArenaTeamContextMenuButton20", "CalendarArenaTeamContextMenuButton21", "CalendarArenaTeamContextMenuButton22", "CalendarArenaTeamContextMenuButton23", "CalendarArenaTeamContextMenuButton24", "CalendarArenaTeamContextMenuButton25", "CalendarArenaTeamContextMenuButton26", "CalendarArenaTeamContextMenuButton27", "CalendarArenaTeamContextMenuButton28", "CalendarArenaTeamContextMenuButton29", "CalendarArenaTeamContextMenuButton3", "CalendarArenaTeamContextMenuButton30", "CalendarArenaTeamContextMenuButton31", "CalendarArenaTeamContextMenuButton32", "CalendarArenaTeamContextMenuButton4", "CalendarArenaTeamContextMenuButton5", "CalendarArenaTeamContextMenuButton6", "CalendarArenaTeamContextMenuButton7", "CalendarArenaTeamContextMenuButton8", "CalendarArenaTeamContextMenuButton9", "CalendarClassButton1", "CalendarClassButton10", "CalendarClassButton2", "CalendarClassButton3", "CalendarClassButton4", "CalendarClassButton5", "CalendarClassButton6", "CalendarClassButton7", "CalendarClassButton8", "CalendarClassButton9", "CalendarClassButtonContainer", "CalendarClassTotalsButton", "CalendarCloseButton", "CalendarContextMenu", "CalendarContextMenuButton1", "CalendarContextMenuButton10", "CalendarContextMenuButton11", "CalendarContextMenuButton12", "CalendarContextMenuButton13", "CalendarContextMenuButton14", "CalendarContextMenuButton15", "CalendarContextMenuButton16", "CalendarContextMenuButton17", "CalendarContextMenuButton18", "CalendarContextMenuButton19", "CalendarContextMenuButton2", "CalendarContextMenuButton20", "CalendarContextMenuButton21", "CalendarContextMenuButton22", "CalendarContextMenuButton23", "CalendarContextMenuButton24", "CalendarContextMenuButton25", "CalendarContextMenuButton26", "CalendarContextMenuButton27", "CalendarContextMenuButton28", "CalendarContextMenuButton29", "CalendarContextMenuButton3", "CalendarContextMenuButton30", "CalendarContextMenuButton31", "CalendarContextMenuButton32", "CalendarContextMenuButton4", "CalendarContextMenuButton5", "CalendarContextMenuButton6", "CalendarContextMenuButton7", "CalendarContextMenuButton8", "CalendarContextMenuButton9", "CalendarCreateEventAMPMDropDown", "CalendarCreateEventAMPMDropDownButton", "CalendarCreateEventAutoApproveCheck", "CalendarCreateEventCloseButton", "CalendarCreateEventCreateButton", "CalendarCreateEventDescriptionContainer", "CalendarCreateEventDescriptionEdit", "CalendarCreateEventDescriptionScrollFrame", "CalendarCreateEventDescriptionScrollFrameFocusButton", "CalendarCreateEventDescriptionScrollFrameScrollBar", "CalendarCreateEventDescriptionScrollFrameScrollBarScrollDownButton", "CalendarCreateEventDescriptionScrollFrameScrollBarScrollUpButton", "CalendarCreateEventFrame", "CalendarCreateEventFrameModalOverlay", "CalendarCreateEventHourDropDown", "CalendarCreateEventHourDropDownButton", "CalendarCreateEventInviteButton", "CalendarCreateEventInviteEdit", "CalendarCreateEventInviteList", "CalendarCreateEventInviteListClassSortButton", "CalendarCreateEventInviteListNameSortButton", "CalendarCreateEventInviteListScrollFrame", "CalendarCreateEventInviteListScrollFrameScrollBar", "CalendarCreateEventInviteListScrollFrameScrollBarScrollDownButton", "CalendarCreateEventInviteListScrollFrameScrollBarScrollUpButton", "CalendarCreateEventInviteListScrollFrameScrollChild", "CalendarCreateEventInviteListSection", "CalendarCreateEventInviteListStatusSortButton", "CalendarCreateEventLockEventCheck", "CalendarCreateEventMassInviteButton", "CalendarCreateEventMinuteDropDown", "CalendarCreateEventMinuteDropDownButton", "CalendarCreateEventRaidInviteButton", "CalendarCreateEventRepeatOptionDropDown", "CalendarCreateEventRepeatOptionDropDownButton", "CalendarCreateEventTitleEdit", "CalendarCreateEventTitleFrame", "CalendarCreateEventTypeDropDown", "CalendarCreateEventTypeDropDownButton", "CalendarDayButton1", "CalendarDayButton10", "CalendarDayButton10DarkFrame", "CalendarDayButton10DateFrame", "CalendarDayButton10EventButton1", "CalendarDayButton10EventButton2", "CalendarDayButton10EventButton3", "CalendarDayButton10EventButton4", "CalendarDayButton10MoreEventsButton", "CalendarDayButton10OverlayFrame", "CalendarDayButton11", "CalendarDayButton11DarkFrame", "CalendarDayButton11DateFrame", "CalendarDayButton11EventButton1", "CalendarDayButton11EventButton2", "CalendarDayButton11EventButton3", "CalendarDayButton11EventButton4", "CalendarDayButton11MoreEventsButton", "CalendarDayButton11OverlayFrame", "CalendarDayButton12", "CalendarDayButton12DarkFrame", "CalendarDayButton12DateFrame", "CalendarDayButton12EventButton1", "CalendarDayButton12EventButton2", "CalendarDayButton12EventButton3", "CalendarDayButton12EventButton4", "CalendarDayButton12MoreEventsButton", "CalendarDayButton12OverlayFrame", "CalendarDayButton13", "CalendarDayButton13DarkFrame", "CalendarDayButton13DateFrame", "CalendarDayButton13EventButton1", "CalendarDayButton13EventButton2", "CalendarDayButton13EventButton3", "CalendarDayButton13EventButton4", "CalendarDayButton13MoreEventsButton", "CalendarDayButton13OverlayFrame", "CalendarDayButton14", "CalendarDayButton14DarkFrame", "CalendarDayButton14DateFrame", "CalendarDayButton14EventButton1", "CalendarDayButton14EventButton2", "CalendarDayButton14EventButton3", "CalendarDayButton14EventButton4", "CalendarDayButton14MoreEventsButton", "CalendarDayButton14OverlayFrame", "CalendarDayButton15", "CalendarDayButton15DarkFrame", "CalendarDayButton15DateFrame", "CalendarDayButton15EventButton1", "CalendarDayButton15EventButton2", "CalendarDayButton15EventButton3", "CalendarDayButton15EventButton4", "CalendarDayButton15MoreEventsButton", "CalendarDayButton15OverlayFrame", "CalendarDayButton16", "CalendarDayButton16DarkFrame", "CalendarDayButton16DateFrame", "CalendarDayButton16EventButton1", "CalendarDayButton16EventButton2", "CalendarDayButton16EventButton3", "CalendarDayButton16EventButton4", "CalendarDayButton16MoreEventsButton", "CalendarDayButton16OverlayFrame", "CalendarDayButton17", "CalendarDayButton17DarkFrame", "CalendarDayButton17DateFrame", "CalendarDayButton17EventButton1", "CalendarDayButton17EventButton2", "CalendarDayButton17EventButton3", "CalendarDayButton17EventButton4", "CalendarDayButton17MoreEventsButton", "CalendarDayButton17OverlayFrame", "CalendarDayButton18", "CalendarDayButton18DarkFrame", "CalendarDayButton18DateFrame", "CalendarDayButton18EventButton1", "CalendarDayButton18EventButton2", "CalendarDayButton18EventButton3", "CalendarDayButton18EventButton4", "CalendarDayButton18MoreEventsButton", "CalendarDayButton18OverlayFrame", "CalendarDayButton19", "CalendarDayButton19DarkFrame", "CalendarDayButton19DateFrame", "CalendarDayButton19EventButton1", "CalendarDayButton19EventButton2", "CalendarDayButton19EventButton3", "CalendarDayButton19EventButton4", "CalendarDayButton19MoreEventsButton", "CalendarDayButton19OverlayFrame", "CalendarDayButton1DarkFrame", "CalendarDayButton1DateFrame", "CalendarDayButton1EventButton1", "CalendarDayButton1EventButton2", "CalendarDayButton1EventButton3", "CalendarDayButton1EventButton4", "CalendarDayButton1MoreEventsButton", "CalendarDayButton1OverlayFrame", "CalendarDayButton2", "CalendarDayButton20", "CalendarDayButton20DarkFrame", "CalendarDayButton20DateFrame", "CalendarDayButton20EventButton1", "CalendarDayButton20EventButton2", "CalendarDayButton20EventButton3", "CalendarDayButton20EventButton4", "CalendarDayButton20MoreEventsButton", "CalendarDayButton20OverlayFrame", "CalendarDayButton21", "CalendarDayButton21DarkFrame", "CalendarDayButton21DateFrame", "CalendarDayButton21EventButton1", "CalendarDayButton21EventButton2", "CalendarDayButton21EventButton3", "CalendarDayButton21EventButton4", "CalendarDayButton21MoreEventsButton", "CalendarDayButton21OverlayFrame", "CalendarDayButton22", "CalendarDayButton22DarkFrame", "CalendarDayButton22DateFrame", "CalendarDayButton22EventButton1", "CalendarDayButton22EventButton2", "CalendarDayButton22EventButton3", "CalendarDayButton22EventButton4", "CalendarDayButton22MoreEventsButton", "CalendarDayButton22OverlayFrame", "CalendarDayButton23", "CalendarDayButton23DarkFrame", "CalendarDayButton23DateFrame", "CalendarDayButton23EventButton1", "CalendarDayButton23EventButton2", "CalendarDayButton23EventButton3", "CalendarDayButton23EventButton4", "CalendarDayButton23MoreEventsButton", "CalendarDayButton23OverlayFrame", "CalendarDayButton24", "CalendarDayButton24DarkFrame", "CalendarDayButton24DateFrame", "CalendarDayButton24EventButton1", "CalendarDayButton24EventButton2", "CalendarDayButton24EventButton3", "CalendarDayButton24EventButton4", "CalendarDayButton24MoreEventsButton", "CalendarDayButton24OverlayFrame", "CalendarDayButton25", "CalendarDayButton25DarkFrame", "CalendarDayButton25DateFrame", "CalendarDayButton25EventButton1", "CalendarDayButton25EventButton2", "CalendarDayButton25EventButton3", "CalendarDayButton25EventButton4", "CalendarDayButton25MoreEventsButton", "CalendarDayButton25OverlayFrame", "CalendarDayButton26", "CalendarDayButton26DarkFrame", "CalendarDayButton26DateFrame", "CalendarDayButton26EventButton1", "CalendarDayButton26EventButton2", "CalendarDayButton26EventButton3", "CalendarDayButton26EventButton4", "CalendarDayButton26MoreEventsButton", "CalendarDayButton26OverlayFrame", "CalendarDayButton27", "CalendarDayButton27DarkFrame", "CalendarDayButton27DateFrame", "CalendarDayButton27EventButton1", "CalendarDayButton27EventButton2", "CalendarDayButton27EventButton3", "CalendarDayButton27EventButton4", "CalendarDayButton27MoreEventsButton", "CalendarDayButton27OverlayFrame", "CalendarDayButton28", "CalendarDayButton28DarkFrame", "CalendarDayButton28DateFrame", "CalendarDayButton28EventButton1", "CalendarDayButton28EventButton2", "CalendarDayButton28EventButton3", "CalendarDayButton28EventButton4", "CalendarDayButton28MoreEventsButton", "CalendarDayButton28OverlayFrame", "CalendarDayButton29", "CalendarDayButton29DarkFrame", "CalendarDayButton29DateFrame", "CalendarDayButton29EventButton1", "CalendarDayButton29EventButton2", "CalendarDayButton29EventButton3", "CalendarDayButton29EventButton4", "CalendarDayButton29MoreEventsButton", "CalendarDayButton29OverlayFrame", "CalendarDayButton2DarkFrame", "CalendarDayButton2DateFrame", "CalendarDayButton2EventButton1", "CalendarDayButton2EventButton2", "CalendarDayButton2EventButton3", "CalendarDayButton2EventButton4", "CalendarDayButton2MoreEventsButton", "CalendarDayButton2OverlayFrame", "CalendarDayButton3", "CalendarDayButton30", "CalendarDayButton30DarkFrame", "CalendarDayButton30DateFrame", "CalendarDayButton30EventButton1", "CalendarDayButton30EventButton2", "CalendarDayButton30EventButton3", "CalendarDayButton30EventButton4", "CalendarDayButton30MoreEventsButton", "CalendarDayButton30OverlayFrame", "CalendarDayButton31", "CalendarDayButton31DarkFrame", "CalendarDayButton31DateFrame", "CalendarDayButton31EventButton1", "CalendarDayButton31EventButton2", "CalendarDayButton31EventButton3", "CalendarDayButton31EventButton4", "CalendarDayButton31MoreEventsButton", "CalendarDayButton31OverlayFrame", "CalendarDayButton32", "CalendarDayButton32DarkFrame", "CalendarDayButton32DateFrame", "CalendarDayButton32EventButton1", "CalendarDayButton32EventButton2", "CalendarDayButton32EventButton3", "CalendarDayButton32EventButton4", "CalendarDayButton32MoreEventsButton", "CalendarDayButton32OverlayFrame", "CalendarDayButton33", "CalendarDayButton33DarkFrame", "CalendarDayButton33DateFrame", "CalendarDayButton33EventButton1", "CalendarDayButton33EventButton2", "CalendarDayButton33EventButton3", "CalendarDayButton33EventButton4", "CalendarDayButton33MoreEventsButton", "CalendarDayButton33OverlayFrame", "CalendarDayButton34", "CalendarDayButton34DarkFrame", "CalendarDayButton34DateFrame", "CalendarDayButton34EventButton1", "CalendarDayButton34EventButton2", "CalendarDayButton34EventButton3", "CalendarDayButton34EventButton4", "CalendarDayButton34MoreEventsButton", "CalendarDayButton34OverlayFrame", "CalendarDayButton35", "CalendarDayButton35DarkFrame", "CalendarDayButton35DateFrame", "CalendarDayButton35EventButton1", "CalendarDayButton35EventButton2", "CalendarDayButton35EventButton3", "CalendarDayButton35EventButton4", "CalendarDayButton35MoreEventsButton", "CalendarDayButton35OverlayFrame", "CalendarDayButton36", "CalendarDayButton36DarkFrame", "CalendarDayButton36DateFrame", "CalendarDayButton36EventButton1", "CalendarDayButton36EventButton2", "CalendarDayButton36EventButton3", "CalendarDayButton36EventButton4", "CalendarDayButton36MoreEventsButton", "CalendarDayButton36OverlayFrame", "CalendarDayButton37", "CalendarDayButton37DarkFrame", "CalendarDayButton37DateFrame", "CalendarDayButton37EventButton1", "CalendarDayButton37EventButton2", "CalendarDayButton37EventButton3", "CalendarDayButton37EventButton4", "CalendarDayButton37MoreEventsButton", "CalendarDayButton37OverlayFrame", "CalendarDayButton38", "CalendarDayButton38DarkFrame", "CalendarDayButton38DateFrame", "CalendarDayButton38EventButton1", "CalendarDayButton38EventButton2", "CalendarDayButton38EventButton3", "CalendarDayButton38EventButton4", "CalendarDayButton38MoreEventsButton", "CalendarDayButton38OverlayFrame", "CalendarDayButton39", "CalendarDayButton39DarkFrame", "CalendarDayButton39DateFrame", "CalendarDayButton39EventButton1", "CalendarDayButton39EventButton2", "CalendarDayButton39EventButton3", "CalendarDayButton39EventButton4", "CalendarDayButton39MoreEventsButton", "CalendarDayButton39OverlayFrame", "CalendarDayButton3DarkFrame", "CalendarDayButton3DateFrame", "CalendarDayButton3EventButton1", "CalendarDayButton3EventButton2", "CalendarDayButton3EventButton3", "CalendarDayButton3EventButton4", "CalendarDayButton3MoreEventsButton", "CalendarDayButton3OverlayFrame", "CalendarDayButton4", "CalendarDayButton40", "CalendarDayButton40DarkFrame", "CalendarDayButton40DateFrame", "CalendarDayButton40EventButton1", "CalendarDayButton40EventButton2", "CalendarDayButton40EventButton3", "CalendarDayButton40EventButton4", "CalendarDayButton40MoreEventsButton", "CalendarDayButton40OverlayFrame", "CalendarDayButton41", "CalendarDayButton41DarkFrame", "CalendarDayButton41DateFrame", "CalendarDayButton41EventButton1", "CalendarDayButton41EventButton2", "CalendarDayButton41EventButton3", "CalendarDayButton41EventButton4", "CalendarDayButton41MoreEventsButton", "CalendarDayButton41OverlayFrame", "CalendarDayButton42", "CalendarDayButton42DarkFrame", "CalendarDayButton42DateFrame", "CalendarDayButton42EventButton1", "CalendarDayButton42EventButton2", "CalendarDayButton42EventButton3", "CalendarDayButton42EventButton4", "CalendarDayButton42MoreEventsButton", "CalendarDayButton42OverlayFrame", "CalendarDayButton4DarkFrame", "CalendarDayButton4DateFrame", "CalendarDayButton4EventButton1", "CalendarDayButton4EventButton2", "CalendarDayButton4EventButton3", "CalendarDayButton4EventButton4", "CalendarDayButton4MoreEventsButton", "CalendarDayButton4OverlayFrame", "CalendarDayButton5", "CalendarDayButton5DarkFrame", "CalendarDayButton5DateFrame", "CalendarDayButton5EventButton1", "CalendarDayButton5EventButton2", "CalendarDayButton5EventButton3", "CalendarDayButton5EventButton4", "CalendarDayButton5MoreEventsButton", "CalendarDayButton5OverlayFrame", "CalendarDayButton6", "CalendarDayButton6DarkFrame", "CalendarDayButton6DateFrame", "CalendarDayButton6EventButton1", "CalendarDayButton6EventButton2", "CalendarDayButton6EventButton3", "CalendarDayButton6EventButton4", "CalendarDayButton6MoreEventsButton", "CalendarDayButton6OverlayFrame", "CalendarDayButton7", "CalendarDayButton7DarkFrame", "CalendarDayButton7DateFrame", "CalendarDayButton7EventButton1", "CalendarDayButton7EventButton2", "CalendarDayButton7EventButton3", "CalendarDayButton7EventButton4", "CalendarDayButton7MoreEventsButton", "CalendarDayButton7OverlayFrame", "CalendarDayButton8", "CalendarDayButton8DarkFrame", "CalendarDayButton8DateFrame", "CalendarDayButton8EventButton1", "CalendarDayButton8EventButton2", "CalendarDayButton8EventButton3", "CalendarDayButton8EventButton4", "CalendarDayButton8MoreEventsButton", "CalendarDayButton8OverlayFrame", "CalendarDayButton9", "CalendarDayButton9DarkFrame", "CalendarDayButton9DateFrame", "CalendarDayButton9EventButton1", "CalendarDayButton9EventButton2", "CalendarDayButton9EventButton3", "CalendarDayButton9EventButton4", "CalendarDayButton9MoreEventsButton", "CalendarDayButton9OverlayFrame", "CalendarEventFrameBlocker", "CalendarEventPickerCloseButton", "CalendarEventPickerFrame", "CalendarEventPickerScrollBar", "CalendarEventPickerScrollBarScrollDownButton", "CalendarEventPickerScrollBarScrollUpButton", "CalendarEventPickerScrollFrame", "CalendarEventPickerScrollFrameScrollChild", "CalendarEventPickerTitleFrame", "CalendarFilterButton", "CalendarFilterDropDown", "CalendarFilterDropDownButton", "CalendarFilterFrame", "CalendarFrame", "CalendarFrameBlocker", "CalendarFrameModalOverlay", "CalendarInviteStatusContextMenu", "CalendarInviteStatusContextMenuButton1", "CalendarInviteStatusContextMenuButton10", "CalendarInviteStatusContextMenuButton11", "CalendarInviteStatusContextMenuButton12", "CalendarInviteStatusContextMenuButton13", "CalendarInviteStatusContextMenuButton14", "CalendarInviteStatusContextMenuButton15", "CalendarInviteStatusContextMenuButton16", "CalendarInviteStatusContextMenuButton17", "CalendarInviteStatusContextMenuButton18", "CalendarInviteStatusContextMenuButton19", "CalendarInviteStatusContextMenuButton2", "CalendarInviteStatusContextMenuButton20", "CalendarInviteStatusContextMenuButton21", "CalendarInviteStatusContextMenuButton22", "CalendarInviteStatusContextMenuButton23", "CalendarInviteStatusContextMenuButton24", "CalendarInviteStatusContextMenuButton25", "CalendarInviteStatusContextMenuButton26", "CalendarInviteStatusContextMenuButton27", "CalendarInviteStatusContextMenuButton28", "CalendarInviteStatusContextMenuButton29", "CalendarInviteStatusContextMenuButton3", "CalendarInviteStatusContextMenuButton30", "CalendarInviteStatusContextMenuButton31", "CalendarInviteStatusContextMenuButton32", "CalendarInviteStatusContextMenuButton4", "CalendarInviteStatusContextMenuButton5", "CalendarInviteStatusContextMenuButton6", "CalendarInviteStatusContextMenuButton7", "CalendarInviteStatusContextMenuButton8", "CalendarInviteStatusContextMenuButton9", "CalendarMassInviteArenaButton2", "CalendarMassInviteArenaButton3", "CalendarMassInviteArenaButton5", "CalendarMassInviteCloseButton", "CalendarMassInviteFrame", "CalendarMassInviteFrameModalOverlay", "CalendarMassInviteGuildAcceptButton", "CalendarMassInviteGuildMaxLevelEdit", "CalendarMassInviteGuildMinLevelEdit", "CalendarMassInviteGuildRankMenu", "CalendarMassInviteGuildRankMenuButton", "CalendarMassInviteTitleFrame", "CalendarModalDummy", "CalendarNextMonthButton", "CalendarPrevMonthButton", "CalendarTexturePickerAcceptButton", "CalendarTexturePickerCancelButton", "CalendarTexturePickerFrame", "CalendarTexturePickerScrollBar", "CalendarTexturePickerScrollBarScrollDownButton", "CalendarTexturePickerScrollBarScrollUpButton", "CalendarTexturePickerScrollFrame", "CalendarTexturePickerScrollFrameButton1", "CalendarTexturePickerScrollFrameButton10", "CalendarTexturePickerScrollFrameButton11", "CalendarTexturePickerScrollFrameButton12", "CalendarTexturePickerScrollFrameButton13", "CalendarTexturePickerScrollFrameButton14", "CalendarTexturePickerScrollFrameButton15", "CalendarTexturePickerScrollFrameButton16", "CalendarTexturePickerScrollFrameButton2", "CalendarTexturePickerScrollFrameButton3", "CalendarTexturePickerScrollFrameButton4", "CalendarTexturePickerScrollFrameButton5", "CalendarTexturePickerScrollFrameButton6", "CalendarTexturePickerScrollFrameButton7", "CalendarTexturePickerScrollFrameButton8", "CalendarTexturePickerScrollFrameButton9", "CalendarTexturePickerScrollFrameScrollChild", "CalendarTexturePickerTitleFrame", "CalendarTodayFrame", "CalendarViewEventAcceptButton", "CalendarViewEventCloseButton", "CalendarViewEventDeclineButton", "CalendarViewEventDescriptionContainer", "CalendarViewEventDescriptionScrollChild", "CalendarViewEventDescriptionScrollFrame", "CalendarViewEventDescriptionScrollFrameScrollBar", "CalendarViewEventDescriptionScrollFrameScrollBarScrollDownButton", "CalendarViewEventDescriptionScrollFrameScrollBarScrollUpButton", "CalendarViewEventFrame", "CalendarViewEventFrameModalOverlay", "CalendarViewEventInviteList", "CalendarViewEventInviteListClassSortButton", "CalendarViewEventInviteListNameSortButton", "CalendarViewEventInviteListScrollFrame", "CalendarViewEventInviteListScrollFrameScrollBar", "CalendarViewEventInviteListScrollFrameScrollBarScrollDownButton", "CalendarViewEventInviteListScrollFrameScrollBarScrollUpButton", "CalendarViewEventInviteListScrollFrameScrollChild", "CalendarViewEventInviteListSection", "CalendarViewEventInviteListStatusSortButton", "CalendarViewEventRemoveButton", "CalendarViewEventTentativeButton", "CalendarViewEventTitleFrame", "CalendarViewHolidayCloseButton", "CalendarViewHolidayFrame", "CalendarViewHolidayFrameModalOverlay", "CalendarViewHolidayScrollChild", "CalendarViewHolidayScrollFrame", "CalendarViewHolidayScrollFrameScrollBar", "CalendarViewHolidayScrollFrameScrollBarScrollDownButton", "CalendarViewHolidayScrollFrameScrollBarScrollUpButton", "CalendarViewHolidayTitleFrame", "CalendarViewRaidCloseButton", "CalendarViewRaidFrame", "CalendarViewRaidFrameModalOverlay", "CalendarViewRaidScrollChild", "CalendarViewRaidScrollFrame", "CalendarViewRaidScrollFrameScrollBar", "CalendarViewRaidScrollFrameScrollBarScrollDownButton", "CalendarViewRaidScrollFrameScrollBarScrollUpButton", "CalendarViewRaidTitleFrame", -- frames: Blizzard_Calendar "CalendarFrame", "CalendarTodayFrame", "CalendarPrevMonthButton", "CalendarNextMonthButton", "CalendarFilterFrame", "CalendarFilterButton", "CalendarFilterDropDown", "CalendarFilterDropDownButton", "CalendarCloseButton", "CalendarContextMenu", "CalendarContextMenuButton1", "CalendarContextMenuButton2", "CalendarContextMenuButton3", "CalendarContextMenuButton4", "CalendarContextMenuButton5", "CalendarContextMenuButton6", "CalendarContextMenuButton7", "CalendarContextMenuButton8", "CalendarContextMenuButton9", "CalendarContextMenuButton10", "CalendarContextMenuButton11", "CalendarContextMenuButton12", "CalendarContextMenuButton13", "CalendarContextMenuButton14", "CalendarContextMenuButton15", "CalendarContextMenuButton16", "CalendarContextMenuButton17", "CalendarContextMenuButton18", "CalendarContextMenuButton19", "CalendarContextMenuButton20", "CalendarContextMenuButton21", "CalendarContextMenuButton22", "CalendarContextMenuButton23", "CalendarContextMenuButton24", "CalendarContextMenuButton25", "CalendarContextMenuButton26", "CalendarContextMenuButton27", "CalendarContextMenuButton28", "CalendarContextMenuButton29", "CalendarContextMenuButton30", "CalendarContextMenuButton31", "CalendarContextMenuButton32", "CalendarArenaTeamContextMenu", "CalendarArenaTeamContextMenuButton1", "CalendarArenaTeamContextMenuButton2", "CalendarArenaTeamContextMenuButton3", "CalendarArenaTeamContextMenuButton4", "CalendarArenaTeamContextMenuButton5", "CalendarArenaTeamContextMenuButton6", "CalendarArenaTeamContextMenuButton7", "CalendarArenaTeamContextMenuButton8", "CalendarArenaTeamContextMenuButton9", "CalendarArenaTeamContextMenuButton10", "CalendarArenaTeamContextMenuButton11", "CalendarArenaTeamContextMenuButton12", "CalendarArenaTeamContextMenuButton13", "CalendarArenaTeamContextMenuButton14", "CalendarArenaTeamContextMenuButton15", "CalendarArenaTeamContextMenuButton16", "CalendarArenaTeamContextMenuButton17", "CalendarArenaTeamContextMenuButton18", "CalendarArenaTeamContextMenuButton19", "CalendarArenaTeamContextMenuButton20", "CalendarArenaTeamContextMenuButton21", "CalendarArenaTeamContextMenuButton22", "CalendarArenaTeamContextMenuButton23", "CalendarArenaTeamContextMenuButton24", "CalendarArenaTeamContextMenuButton25", "CalendarArenaTeamContextMenuButton26", "CalendarArenaTeamContextMenuButton27", "CalendarArenaTeamContextMenuButton28", "CalendarArenaTeamContextMenuButton29", "CalendarArenaTeamContextMenuButton30", "CalendarArenaTeamContextMenuButton31", "CalendarArenaTeamContextMenuButton32", "CalendarInviteStatusContextMenu", "CalendarInviteStatusContextMenuButton1", "CalendarInviteStatusContextMenuButton2", "CalendarInviteStatusContextMenuButton3", "CalendarInviteStatusContextMenuButton4", "CalendarInviteStatusContextMenuButton5", "CalendarInviteStatusContextMenuButton6", "CalendarInviteStatusContextMenuButton7", "CalendarInviteStatusContextMenuButton8", "CalendarInviteStatusContextMenuButton9", "CalendarInviteStatusContextMenuButton10", "CalendarInviteStatusContextMenuButton11", "CalendarInviteStatusContextMenuButton12", "CalendarInviteStatusContextMenuButton13", "CalendarInviteStatusContextMenuButton14", "CalendarInviteStatusContextMenuButton15", "CalendarInviteStatusContextMenuButton16", "CalendarInviteStatusContextMenuButton17", "CalendarInviteStatusContextMenuButton18", "CalendarInviteStatusContextMenuButton19", "CalendarInviteStatusContextMenuButton20", "CalendarInviteStatusContextMenuButton21", "CalendarInviteStatusContextMenuButton22", "CalendarInviteStatusContextMenuButton23", "CalendarInviteStatusContextMenuButton24", "CalendarInviteStatusContextMenuButton25", "CalendarInviteStatusContextMenuButton26", "CalendarInviteStatusContextMenuButton27", "CalendarInviteStatusContextMenuButton28", "CalendarInviteStatusContextMenuButton29", "CalendarInviteStatusContextMenuButton30", "CalendarInviteStatusContextMenuButton31", "CalendarInviteStatusContextMenuButton32", "CalendarModalDummy", "CalendarFrameBlocker", "CalendarEventFrameBlocker", "CalendarFrameModalOverlay", "CalendarDayButton1", "CalendarDayButton1OverlayFrame", "CalendarDayButton1DateFrame", "CalendarDayButton1MoreEventsButton", "CalendarDayButton1DarkFrame", "CalendarDayButton1EventButton1", "CalendarDayButton1EventButton2", "CalendarDayButton1EventButton3", "CalendarDayButton1EventButton4", "CalendarDayButton2", "CalendarDayButton2OverlayFrame", "CalendarDayButton2DateFrame", "CalendarDayButton2MoreEventsButton", "CalendarDayButton2DarkFrame", "CalendarDayButton2EventButton1", "CalendarDayButton2EventButton2", "CalendarDayButton2EventButton3", "CalendarDayButton2EventButton4", "CalendarDayButton3", "CalendarDayButton3OverlayFrame", "CalendarDayButton3DateFrame", "CalendarDayButton3MoreEventsButton", "CalendarDayButton3DarkFrame", "CalendarDayButton3EventButton1", "CalendarDayButton3EventButton2", "CalendarDayButton3EventButton3", "CalendarDayButton3EventButton4", "CalendarDayButton4", "CalendarDayButton4OverlayFrame", "CalendarDayButton4DateFrame", "CalendarDayButton4MoreEventsButton", "CalendarDayButton4DarkFrame", "CalendarDayButton4EventButton1", "CalendarDayButton4EventButton2", "CalendarDayButton4EventButton3", "CalendarDayButton4EventButton4", "CalendarDayButton5", "CalendarDayButton5OverlayFrame", "CalendarDayButton5DateFrame", "CalendarDayButton5MoreEventsButton", "CalendarDayButton5DarkFrame", "CalendarDayButton5EventButton1", "CalendarDayButton5EventButton2", "CalendarDayButton5EventButton3", "CalendarDayButton5EventButton4", "CalendarDayButton6", "CalendarDayButton6OverlayFrame", "CalendarDayButton6DateFrame", "CalendarDayButton6MoreEventsButton", "CalendarDayButton6DarkFrame", "CalendarDayButton6EventButton1", "CalendarDayButton6EventButton2", "CalendarDayButton6EventButton3", "CalendarDayButton6EventButton4", "CalendarDayButton7", "CalendarDayButton7OverlayFrame", "CalendarDayButton7DateFrame", "CalendarDayButton7MoreEventsButton", "CalendarDayButton7DarkFrame", "CalendarDayButton7EventButton1", "CalendarDayButton7EventButton2", "CalendarDayButton7EventButton3", "CalendarDayButton7EventButton4", "CalendarDayButton8", "CalendarDayButton8OverlayFrame", "CalendarDayButton8DateFrame", "CalendarDayButton8MoreEventsButton", "CalendarDayButton8DarkFrame", "CalendarDayButton8EventButton1", "CalendarDayButton8EventButton2", "CalendarDayButton8EventButton3", "CalendarDayButton8EventButton4", "CalendarDayButton9", "CalendarDayButton9OverlayFrame", "CalendarDayButton9DateFrame", "CalendarDayButton9MoreEventsButton", "CalendarDayButton9DarkFrame", "CalendarDayButton9EventButton1", "CalendarDayButton9EventButton2", "CalendarDayButton9EventButton3", "CalendarDayButton9EventButton4", "CalendarDayButton10", "CalendarDayButton10OverlayFrame", "CalendarDayButton10DateFrame", "CalendarDayButton10MoreEventsButton", "CalendarDayButton10DarkFrame", "CalendarDayButton10EventButton1", "CalendarDayButton10EventButton2", "CalendarDayButton10EventButton3", "CalendarDayButton10EventButton4", "CalendarDayButton11", "CalendarDayButton11OverlayFrame", "CalendarDayButton11DateFrame", "CalendarDayButton11MoreEventsButton", "CalendarDayButton11DarkFrame", "CalendarDayButton11EventButton1", "CalendarDayButton11EventButton2", "CalendarDayButton11EventButton3", "CalendarDayButton11EventButton4", "CalendarDayButton12", "CalendarDayButton12OverlayFrame", "CalendarDayButton12DateFrame", "CalendarDayButton12MoreEventsButton", "CalendarDayButton12DarkFrame", "CalendarDayButton12EventButton1", "CalendarDayButton12EventButton2", "CalendarDayButton12EventButton3", "CalendarDayButton12EventButton4", "CalendarDayButton13", "CalendarDayButton13OverlayFrame", "CalendarDayButton13DateFrame", "CalendarDayButton13MoreEventsButton", "CalendarDayButton13DarkFrame", "CalendarDayButton13EventButton1", "CalendarDayButton13EventButton2", "CalendarDayButton13EventButton3", "CalendarDayButton13EventButton4", "CalendarDayButton14", "CalendarDayButton14OverlayFrame", "CalendarDayButton14DateFrame", "CalendarDayButton14MoreEventsButton", "CalendarDayButton14DarkFrame", "CalendarDayButton14EventButton1", "CalendarDayButton14EventButton2", "CalendarDayButton14EventButton3", "CalendarDayButton14EventButton4", "CalendarDayButton15", "CalendarDayButton15OverlayFrame", "CalendarDayButton15DateFrame", "CalendarDayButton15MoreEventsButton", "CalendarDayButton15DarkFrame", "CalendarDayButton15EventButton1", "CalendarDayButton15EventButton2", "CalendarDayButton15EventButton3", "CalendarDayButton15EventButton4", "CalendarDayButton16", "CalendarDayButton16OverlayFrame", "CalendarDayButton16DateFrame", "CalendarDayButton16MoreEventsButton", "CalendarDayButton16DarkFrame", "CalendarDayButton16EventButton1", "CalendarDayButton16EventButton2", "CalendarDayButton16EventButton3", "CalendarDayButton16EventButton4", "CalendarDayButton17", "CalendarDayButton17OverlayFrame", "CalendarDayButton17DateFrame", "CalendarDayButton17MoreEventsButton", "CalendarDayButton17DarkFrame", "CalendarDayButton17EventButton1", "CalendarDayButton17EventButton2", "CalendarDayButton17EventButton3", "CalendarDayButton17EventButton4", "CalendarDayButton18", "CalendarDayButton18OverlayFrame", "CalendarDayButton18DateFrame", "CalendarDayButton18MoreEventsButton", "CalendarDayButton18DarkFrame", "CalendarDayButton18EventButton1", "CalendarDayButton18EventButton2", "CalendarDayButton18EventButton3", "CalendarDayButton18EventButton4", "CalendarDayButton19", "CalendarDayButton19OverlayFrame", "CalendarDayButton19DateFrame", "CalendarDayButton19MoreEventsButton", "CalendarDayButton19DarkFrame", "CalendarDayButton19EventButton1", "CalendarDayButton19EventButton2", "CalendarDayButton19EventButton3", "CalendarDayButton19EventButton4", "CalendarDayButton20", "CalendarDayButton20OverlayFrame", "CalendarDayButton20DateFrame", "CalendarDayButton20MoreEventsButton", "CalendarDayButton20DarkFrame", "CalendarDayButton20EventButton1", "CalendarDayButton20EventButton2", "CalendarDayButton20EventButton3", "CalendarDayButton20EventButton4", "CalendarDayButton21", "CalendarDayButton21OverlayFrame", "CalendarDayButton21DateFrame", "CalendarDayButton21MoreEventsButton", "CalendarDayButton21DarkFrame", "CalendarDayButton21EventButton1", "CalendarDayButton21EventButton2", "CalendarDayButton21EventButton3", "CalendarDayButton21EventButton4", "CalendarDayButton22", "CalendarDayButton22OverlayFrame", "CalendarDayButton22DateFrame", "CalendarDayButton22MoreEventsButton", "CalendarDayButton22DarkFrame", "CalendarDayButton22EventButton1", "CalendarDayButton22EventButton2", "CalendarDayButton22EventButton3", "CalendarDayButton22EventButton4", "CalendarDayButton23", "CalendarDayButton23OverlayFrame", "CalendarDayButton23DateFrame", "CalendarDayButton23MoreEventsButton", "CalendarDayButton23DarkFrame", "CalendarDayButton23EventButton1", "CalendarDayButton23EventButton2", "CalendarDayButton23EventButton3", "CalendarDayButton23EventButton4", "CalendarDayButton24", "CalendarDayButton24OverlayFrame", "CalendarDayButton24DateFrame", "CalendarDayButton24MoreEventsButton", "CalendarDayButton24DarkFrame", "CalendarDayButton24EventButton1", "CalendarDayButton24EventButton2", "CalendarDayButton24EventButton3", "CalendarDayButton24EventButton4", "CalendarDayButton25", "CalendarDayButton25OverlayFrame", "CalendarDayButton25DateFrame", "CalendarDayButton25MoreEventsButton", "CalendarDayButton25DarkFrame", "CalendarDayButton25EventButton1", "CalendarDayButton25EventButton2", "CalendarDayButton25EventButton3", "CalendarDayButton25EventButton4", "CalendarDayButton26", "CalendarDayButton26OverlayFrame", "CalendarDayButton26DateFrame", "CalendarDayButton26MoreEventsButton", "CalendarDayButton26DarkFrame", "CalendarDayButton26EventButton1", "CalendarDayButton26EventButton2", "CalendarDayButton26EventButton3", "CalendarDayButton26EventButton4", "CalendarDayButton27", "CalendarDayButton27OverlayFrame", "CalendarDayButton27DateFrame", "CalendarDayButton27MoreEventsButton", "CalendarDayButton27DarkFrame", "CalendarDayButton27EventButton1", "CalendarDayButton27EventButton2", "CalendarDayButton27EventButton3", "CalendarDayButton27EventButton4", "CalendarDayButton28", "CalendarDayButton28OverlayFrame", "CalendarDayButton28DateFrame", "CalendarDayButton28MoreEventsButton", "CalendarDayButton28DarkFrame", "CalendarDayButton28EventButton1", "CalendarDayButton28EventButton2", "CalendarDayButton28EventButton3", "CalendarDayButton28EventButton4", "CalendarDayButton29", "CalendarDayButton29OverlayFrame", "CalendarDayButton29DateFrame", "CalendarDayButton29MoreEventsButton", "CalendarDayButton29DarkFrame", "CalendarDayButton29EventButton1", "CalendarDayButton29EventButton2", "CalendarDayButton29EventButton3", "CalendarDayButton29EventButton4", "CalendarDayButton30", "CalendarDayButton30OverlayFrame", "CalendarDayButton30DateFrame", "CalendarDayButton30MoreEventsButton", "CalendarDayButton30DarkFrame", "CalendarDayButton30EventButton1", "CalendarDayButton30EventButton2", "CalendarDayButton30EventButton3", "CalendarDayButton30EventButton4", "CalendarDayButton31", "CalendarDayButton31OverlayFrame", "CalendarDayButton31DateFrame", "CalendarDayButton31MoreEventsButton", "CalendarDayButton31DarkFrame", "CalendarDayButton31EventButton1", "CalendarDayButton31EventButton2", "CalendarDayButton31EventButton3", "CalendarDayButton31EventButton4", "CalendarDayButton32", "CalendarDayButton32OverlayFrame", "CalendarDayButton32DateFrame", "CalendarDayButton32MoreEventsButton", "CalendarDayButton32DarkFrame", "CalendarDayButton32EventButton1", "CalendarDayButton32EventButton2", "CalendarDayButton32EventButton3", "CalendarDayButton32EventButton4", "CalendarDayButton33", "CalendarDayButton33OverlayFrame", "CalendarDayButton33DateFrame", "CalendarDayButton33MoreEventsButton", "CalendarDayButton33DarkFrame", "CalendarDayButton33EventButton1", "CalendarDayButton33EventButton2", "CalendarDayButton33EventButton3", "CalendarDayButton33EventButton4", "CalendarDayButton34", "CalendarDayButton34OverlayFrame", "CalendarDayButton34DateFrame", "CalendarDayButton34MoreEventsButton", "CalendarDayButton34DarkFrame", "CalendarDayButton34EventButton1", "CalendarDayButton34EventButton2", "CalendarDayButton34EventButton3", "CalendarDayButton34EventButton4", "CalendarDayButton35", "CalendarDayButton35OverlayFrame", "CalendarDayButton35DateFrame", "CalendarDayButton35MoreEventsButton", "CalendarDayButton35DarkFrame", "CalendarDayButton35EventButton1", "CalendarDayButton35EventButton2", "CalendarDayButton35EventButton3", "CalendarDayButton35EventButton4", "CalendarDayButton36", "CalendarDayButton36OverlayFrame", "CalendarDayButton36DateFrame", "CalendarDayButton36MoreEventsButton", "CalendarDayButton36DarkFrame", "CalendarDayButton36EventButton1", "CalendarDayButton36EventButton2", "CalendarDayButton36EventButton3", "CalendarDayButton36EventButton4", "CalendarDayButton37", "CalendarDayButton37OverlayFrame", "CalendarDayButton37DateFrame", "CalendarDayButton37MoreEventsButton", "CalendarDayButton37DarkFrame", "CalendarDayButton37EventButton1", "CalendarDayButton37EventButton2", "CalendarDayButton37EventButton3", "CalendarDayButton37EventButton4", "CalendarDayButton38", "CalendarDayButton38OverlayFrame", "CalendarDayButton38DateFrame", "CalendarDayButton38MoreEventsButton", "CalendarDayButton38DarkFrame", "CalendarDayButton38EventButton1", "CalendarDayButton38EventButton2", "CalendarDayButton38EventButton3", "CalendarDayButton38EventButton4", "CalendarDayButton39", "CalendarDayButton39OverlayFrame", "CalendarDayButton39DateFrame", "CalendarDayButton39MoreEventsButton", "CalendarDayButton39DarkFrame", "CalendarDayButton39EventButton1", "CalendarDayButton39EventButton2", "CalendarDayButton39EventButton3", "CalendarDayButton39EventButton4", "CalendarDayButton40", "CalendarDayButton40OverlayFrame", "CalendarDayButton40DateFrame", "CalendarDayButton40MoreEventsButton", "CalendarDayButton40DarkFrame", "CalendarDayButton40EventButton1", "CalendarDayButton40EventButton2", "CalendarDayButton40EventButton3", "CalendarDayButton40EventButton4", "CalendarDayButton41", "CalendarDayButton41OverlayFrame", "CalendarDayButton41DateFrame", "CalendarDayButton41MoreEventsButton", "CalendarDayButton41DarkFrame", "CalendarDayButton41EventButton1", "CalendarDayButton41EventButton2", "CalendarDayButton41EventButton3", "CalendarDayButton41EventButton4", "CalendarDayButton42", "CalendarDayButton42OverlayFrame", "CalendarDayButton42DateFrame", "CalendarDayButton42MoreEventsButton", "CalendarDayButton42DarkFrame", "CalendarDayButton42EventButton1", "CalendarDayButton42EventButton2", "CalendarDayButton42EventButton3", "CalendarDayButton42EventButton4", "CalendarViewHolidayFrame", "CalendarViewHolidayTitleFrame", "CalendarViewHolidayScrollFrame", "CalendarViewHolidayScrollChild", "CalendarViewHolidayScrollFrameScrollBar", "CalendarViewHolidayScrollFrameScrollBarScrollUpButton", "CalendarViewHolidayScrollFrameScrollBarScrollDownButton", "CalendarViewHolidayCloseButton", "CalendarViewHolidayFrameModalOverlay", "CalendarViewRaidFrame", "CalendarViewRaidTitleFrame", "CalendarViewRaidScrollFrame", "CalendarViewRaidScrollChild", "CalendarViewRaidScrollFrameScrollBar", "CalendarViewRaidScrollFrameScrollBarScrollUpButton", "CalendarViewRaidScrollFrameScrollBarScrollDownButton", "CalendarViewRaidCloseButton", "CalendarViewRaidFrameModalOverlay", "CalendarViewEventFrame", "CalendarViewEventTitleFrame", "CalendarViewEventDescriptionContainer", "CalendarViewEventDescriptionScrollFrame", "CalendarViewEventDescriptionScrollChild", "CalendarViewEventDescriptionScrollFrameScrollBar", "CalendarViewEventDescriptionScrollFrameScrollBarScrollUpButton", "CalendarViewEventDescriptionScrollFrameScrollBarScrollDownButton", "CalendarViewEventInviteListSection", "CalendarViewEventAcceptButton", "CalendarViewEventTentativeButton", "CalendarViewEventDeclineButton", "CalendarViewEventRemoveButton", "CalendarViewEventInviteList", "CalendarViewEventInviteListScrollFrame", "CalendarViewEventInviteListScrollFrameScrollChild", "CalendarViewEventInviteListScrollFrameScrollBar", "CalendarViewEventInviteListScrollFrameScrollBarScrollUpButton", "CalendarViewEventInviteListScrollFrameScrollBarScrollDownButton", "CalendarViewEventInviteListNameSortButton", "CalendarViewEventInviteListClassSortButton", "CalendarViewEventInviteListStatusSortButton", "CalendarViewEventCloseButton", "CalendarViewEventFrameModalOverlay", "CalendarCreateEventFrame", "CalendarCreateEventTitleFrame", "CalendarCreateEventTitleEdit", "CalendarCreateEventTypeDropDown", "CalendarCreateEventTypeDropDownButton", "CalendarCreateEventHourDropDown", "CalendarCreateEventHourDropDownButton", "CalendarCreateEventMinuteDropDown", "CalendarCreateEventMinuteDropDownButton", "CalendarCreateEventAMPMDropDown", "CalendarCreateEventAMPMDropDownButton", "CalendarCreateEventRepeatOptionDropDown", "CalendarCreateEventRepeatOptionDropDownButton", "CalendarCreateEventDescriptionContainer", "CalendarCreateEventDescriptionScrollFrame", "CalendarCreateEventDescriptionEdit", "CalendarCreateEventDescriptionScrollFrameScrollBar", "CalendarCreateEventDescriptionScrollFrameScrollBarScrollUpButton", "CalendarCreateEventDescriptionScrollFrameScrollBarScrollDownButton", "CalendarCreateEventDescriptionScrollFrameFocusButton", "CalendarCreateEventInviteListSection", "CalendarCreateEventAutoApproveCheck", "CalendarCreateEventLockEventCheck", "CalendarCreateEventInviteList", "CalendarCreateEventInviteListScrollFrame", "CalendarCreateEventInviteListScrollFrameScrollChild", "CalendarCreateEventInviteListScrollFrameScrollBar", "CalendarCreateEventInviteListScrollFrameScrollBarScrollUpButton", "CalendarCreateEventInviteListScrollFrameScrollBarScrollDownButton", "CalendarCreateEventInviteListNameSortButton", "CalendarCreateEventInviteListClassSortButton", "CalendarCreateEventInviteListStatusSortButton", "CalendarCreateEventInviteEdit", "CalendarCreateEventInviteButton", "CalendarCreateEventMassInviteButton", "CalendarCreateEventRaidInviteButton", "CalendarCreateEventCreateButton", "CalendarCreateEventCloseButton", "CalendarCreateEventFrameModalOverlay", "CalendarMassInviteFrame", "CalendarMassInviteTitleFrame", "CalendarMassInviteGuildMinLevelEdit", "CalendarMassInviteGuildMaxLevelEdit", "CalendarMassInviteGuildRankMenu", "CalendarMassInviteGuildRankMenuButton", "CalendarMassInviteGuildAcceptButton", "CalendarMassInviteArenaButton2", "CalendarMassInviteArenaButton3", "CalendarMassInviteArenaButton5", "CalendarMassInviteCloseButton", "CalendarMassInviteFrameModalOverlay", "CalendarEventPickerFrame", "CalendarEventPickerTitleFrame", "CalendarEventPickerScrollFrame", "CalendarEventPickerScrollFrameScrollChild", "CalendarEventPickerScrollBar", "CalendarEventPickerScrollBarScrollUpButton", "CalendarEventPickerScrollBarScrollDownButton", "CalendarEventPickerCloseButton", "CalendarTexturePickerFrame", "CalendarTexturePickerTitleFrame", "CalendarTexturePickerScrollFrame", "CalendarTexturePickerScrollFrameScrollChild", "CalendarTexturePickerScrollBar", "CalendarTexturePickerScrollBarScrollUpButton", "CalendarTexturePickerScrollBarScrollDownButton", "CalendarTexturePickerCancelButton", "CalendarTexturePickerAcceptButton", "CalendarTexturePickerScrollFrameButton1", "CalendarTexturePickerScrollFrameButton2", "CalendarTexturePickerScrollFrameButton3", "CalendarTexturePickerScrollFrameButton4", "CalendarTexturePickerScrollFrameButton5", "CalendarTexturePickerScrollFrameButton6", "CalendarTexturePickerScrollFrameButton7", "CalendarTexturePickerScrollFrameButton8", "CalendarTexturePickerScrollFrameButton9", "CalendarTexturePickerScrollFrameButton10", "CalendarTexturePickerScrollFrameButton11", "CalendarTexturePickerScrollFrameButton12", "CalendarTexturePickerScrollFrameButton13", "CalendarTexturePickerScrollFrameButton14", "CalendarTexturePickerScrollFrameButton15", "CalendarTexturePickerScrollFrameButton16", "CalendarClassButtonContainer", "CalendarClassTotalsButton", "CalendarClassButton1", "CalendarClassButton2", "CalendarClassButton3", "CalendarClassButton4", "CalendarClassButton5", "CalendarClassButton6", "CalendarClassButton7", "CalendarClassButton8", "CalendarClassButton9", "CalendarClassButton10", -- widgets: Blizzard_Calendar "CalendarArenaTeamContextMenuButton10ShortcutText", "CalendarArenaTeamContextMenuButton11ShortcutText", "CalendarArenaTeamContextMenuButton12ShortcutText", "CalendarArenaTeamContextMenuButton13ShortcutText", "CalendarArenaTeamContextMenuButton14ShortcutText", "CalendarArenaTeamContextMenuButton15ShortcutText", "CalendarArenaTeamContextMenuButton16ShortcutText", "CalendarArenaTeamContextMenuButton17ShortcutText", "CalendarArenaTeamContextMenuButton18ShortcutText", "CalendarArenaTeamContextMenuButton19ShortcutText", "CalendarArenaTeamContextMenuButton1ShortcutText", "CalendarArenaTeamContextMenuButton20ShortcutText", "CalendarArenaTeamContextMenuButton21ShortcutText", "CalendarArenaTeamContextMenuButton22ShortcutText", "CalendarArenaTeamContextMenuButton23ShortcutText", "CalendarArenaTeamContextMenuButton24ShortcutText", "CalendarArenaTeamContextMenuButton25ShortcutText", "CalendarArenaTeamContextMenuButton26ShortcutText", "CalendarArenaTeamContextMenuButton27ShortcutText", "CalendarArenaTeamContextMenuButton28ShortcutText", "CalendarArenaTeamContextMenuButton29ShortcutText", "CalendarArenaTeamContextMenuButton2ShortcutText", "CalendarArenaTeamContextMenuButton30ShortcutText", "CalendarArenaTeamContextMenuButton31ShortcutText", "CalendarArenaTeamContextMenuButton32ShortcutText", "CalendarArenaTeamContextMenuButton3ShortcutText", "CalendarArenaTeamContextMenuButton4ShortcutText", "CalendarArenaTeamContextMenuButton5ShortcutText", "CalendarArenaTeamContextMenuButton6ShortcutText", "CalendarArenaTeamContextMenuButton7ShortcutText", "CalendarArenaTeamContextMenuButton8ShortcutText", "CalendarArenaTeamContextMenuButton9ShortcutText", "CalendarClassButton10Count", "CalendarClassButton1Count", "CalendarClassButton2Count", "CalendarClassButton3Count", "CalendarClassButton4Count", "CalendarClassButton5Count", "CalendarClassButton6Count", "CalendarClassButton7Count", "CalendarClassButton8Count", "CalendarClassButton9Count", "CalendarClassTotalsButtonBackgroundBottom", "CalendarClassTotalsButtonBackgroundMiddle", "CalendarClassTotalsButtonBackgroundTop", "CalendarClassTotalsText", "CalendarContextMenuButton10ShortcutText", "CalendarContextMenuButton11ShortcutText", "CalendarContextMenuButton12ShortcutText", "CalendarContextMenuButton13ShortcutText", "CalendarContextMenuButton14ShortcutText", "CalendarContextMenuButton15ShortcutText", "CalendarContextMenuButton16ShortcutText", "CalendarContextMenuButton17ShortcutText", "CalendarContextMenuButton18ShortcutText", "CalendarContextMenuButton19ShortcutText", "CalendarContextMenuButton1ShortcutText", "CalendarContextMenuButton20ShortcutText", "CalendarContextMenuButton21ShortcutText", "CalendarContextMenuButton22ShortcutText", "CalendarContextMenuButton23ShortcutText", "CalendarContextMenuButton24ShortcutText", "CalendarContextMenuButton25ShortcutText", "CalendarContextMenuButton26ShortcutText", "CalendarContextMenuButton27ShortcutText", "CalendarContextMenuButton28ShortcutText", "CalendarContextMenuButton29ShortcutText", "CalendarContextMenuButton2ShortcutText", "CalendarContextMenuButton30ShortcutText", "CalendarContextMenuButton31ShortcutText", "CalendarContextMenuButton32ShortcutText", "CalendarContextMenuButton3ShortcutText", "CalendarContextMenuButton4ShortcutText", "CalendarContextMenuButton5ShortcutText", "CalendarContextMenuButton6ShortcutText", "CalendarContextMenuButton7ShortcutText", "CalendarContextMenuButton8ShortcutText", "CalendarContextMenuButton9ShortcutText", "CalendarCreateEventAMPMDropDownButtonDisabledTexture", "CalendarCreateEventAMPMDropDownButtonHighlightTexture", "CalendarCreateEventAMPMDropDownButtonNormalTexture", "CalendarCreateEventAMPMDropDownButtonPushedTexture", "CalendarCreateEventAMPMDropDownLeft", "CalendarCreateEventAMPMDropDownMiddle", "CalendarCreateEventAMPMDropDownRight", "CalendarCreateEventAMPMDropDownText", "CalendarCreateEventAutoApproveCheckText", "CalendarCreateEventBackground", "CalendarCreateEventCreateButtonBorder", "CalendarCreateEventCreateButtonLeft", "CalendarCreateEventCreateButtonMiddle", "CalendarCreateEventCreateButtonRight", "CalendarCreateEventCreateButtonText", "CalendarCreateEventCreatorName", "CalendarCreateEventDateLabel", "CalendarCreateEventDescriptionScrollFrameScrollBarThumbTexture", "CalendarCreateEventDivider", "CalendarCreateEventFrameButtonBackground", "CalendarCreateEventHourDropDownButtonDisabledTexture", "CalendarCreateEventHourDropDownButtonHighlightTexture", "CalendarCreateEventHourDropDownButtonNormalTexture", "CalendarCreateEventHourDropDownButtonPushedTexture", "CalendarCreateEventHourDropDownLeft", "CalendarCreateEventHourDropDownMiddle", "CalendarCreateEventHourDropDownRight", "CalendarCreateEventHourDropDownText", "CalendarCreateEventIcon", "CalendarCreateEventInviteButtonLeft", "CalendarCreateEventInviteButtonMiddle", "CalendarCreateEventInviteButtonRight", "CalendarCreateEventInviteButtonText", "CalendarCreateEventInviteEditLeft", "CalendarCreateEventInviteEditMiddle", "CalendarCreateEventInviteEditRight", "CalendarCreateEventInviteListClassSortButtonDirection", "CalendarCreateEventInviteListNameSortButtonDirection", "CalendarCreateEventInviteListScrollFrameScrollBarBG", "CalendarCreateEventInviteListScrollFrameScrollBarBottom", "CalendarCreateEventInviteListScrollFrameScrollBarMiddle", "CalendarCreateEventInviteListScrollFrameScrollBarThumbTexture", "CalendarCreateEventInviteListScrollFrameScrollBarTop", "CalendarCreateEventInviteListStatusSortButtonDirection", "CalendarCreateEventLockEventCheckText", "CalendarCreateEventMassInviteButtonBorder", "CalendarCreateEventMassInviteButtonLeft", "CalendarCreateEventMassInviteButtonMiddle", "CalendarCreateEventMassInviteButtonRight", "CalendarCreateEventMassInviteButtonText", "CalendarCreateEventMinuteDropDownButtonDisabledTexture", "CalendarCreateEventMinuteDropDownButtonHighlightTexture", "CalendarCreateEventMinuteDropDownButtonNormalTexture", "CalendarCreateEventMinuteDropDownButtonPushedTexture", "CalendarCreateEventMinuteDropDownLeft", "CalendarCreateEventMinuteDropDownMiddle", "CalendarCreateEventMinuteDropDownRight", "CalendarCreateEventMinuteDropDownText", "CalendarCreateEventRaidInviteButtonBorder", "CalendarCreateEventRaidInviteButtonLeft", "CalendarCreateEventRaidInviteButtonMiddle", "CalendarCreateEventRaidInviteButtonRight", "CalendarCreateEventRaidInviteButtonText", "CalendarCreateEventRepeatOptionDropDownButtonDisabledTexture", "CalendarCreateEventRepeatOptionDropDownButtonHighlightTexture", "CalendarCreateEventRepeatOptionDropDownButtonNormalTexture", "CalendarCreateEventRepeatOptionDropDownButtonPushedTexture", "CalendarCreateEventRepeatOptionDropDownLeft", "CalendarCreateEventRepeatOptionDropDownMiddle", "CalendarCreateEventRepeatOptionDropDownRight", "CalendarCreateEventRepeatOptionDropDownText", "CalendarCreateEventTextureName", "CalendarCreateEventTitleEditLeft", "CalendarCreateEventTitleEditMiddle", "CalendarCreateEventTitleEditRight", "CalendarCreateEventTitleFrameBackgroundLeft", "CalendarCreateEventTitleFrameBackgroundMiddle", "CalendarCreateEventTitleFrameBackgroundRight", "CalendarCreateEventTitleFrameText", "CalendarCreateEventTypeDropDownButtonDisabledTexture", "CalendarCreateEventTypeDropDownButtonHighlightTexture", "CalendarCreateEventTypeDropDownButtonNormalTexture", "CalendarCreateEventTypeDropDownButtonPushedTexture", "CalendarCreateEventTypeDropDownLeft", "CalendarCreateEventTypeDropDownMiddle", "CalendarCreateEventTypeDropDownRight", "CalendarCreateEventTypeDropDownText", "CalendarDayButton10DarkFrameBottom", "CalendarDayButton10DarkFrameTop", "CalendarDayButton10DateFrameBackground", "CalendarDayButton10DateFrameDate", "CalendarDayButton10EventBackgroundTexture", "CalendarDayButton10EventButton1Black", "CalendarDayButton10EventButton1Text1", "CalendarDayButton10EventButton1Text2", "CalendarDayButton10EventButton2Black", "CalendarDayButton10EventButton2Text1", "CalendarDayButton10EventButton2Text2", "CalendarDayButton10EventButton3Black", "CalendarDayButton10EventButton3Text1", "CalendarDayButton10EventButton3Text2", "CalendarDayButton10EventButton4Black", "CalendarDayButton10EventButton4Text1", "CalendarDayButton10EventButton4Text2", "CalendarDayButton10EventTexture", "CalendarDayButton10OverlayFrameTexture", "CalendarDayButton10PendingInviteTexture", "CalendarDayButton11DarkFrameBottom", "CalendarDayButton11DarkFrameTop", "CalendarDayButton11DateFrameBackground", "CalendarDayButton11DateFrameDate", "CalendarDayButton11EventBackgroundTexture", "CalendarDayButton11EventButton1Black", "CalendarDayButton11EventButton1Text1", "CalendarDayButton11EventButton1Text2", "CalendarDayButton11EventButton2Black", "CalendarDayButton11EventButton2Text1", "CalendarDayButton11EventButton2Text2", "CalendarDayButton11EventButton3Black", "CalendarDayButton11EventButton3Text1", "CalendarDayButton11EventButton3Text2", "CalendarDayButton11EventButton4Black", "CalendarDayButton11EventButton4Text1", "CalendarDayButton11EventButton4Text2", "CalendarDayButton11EventTexture", "CalendarDayButton11OverlayFrameTexture", "CalendarDayButton11PendingInviteTexture", "CalendarDayButton12DarkFrameBottom", "CalendarDayButton12DarkFrameTop", "CalendarDayButton12DateFrameBackground", "CalendarDayButton12DateFrameDate", "CalendarDayButton12EventBackgroundTexture", "CalendarDayButton12EventButton1Black", "CalendarDayButton12EventButton1Text1", "CalendarDayButton12EventButton1Text2", "CalendarDayButton12EventButton2Black", "CalendarDayButton12EventButton2Text1", "CalendarDayButton12EventButton2Text2", "CalendarDayButton12EventButton3Black", "CalendarDayButton12EventButton3Text1", "CalendarDayButton12EventButton3Text2", "CalendarDayButton12EventButton4Black", "CalendarDayButton12EventButton4Text1", "CalendarDayButton12EventButton4Text2", "CalendarDayButton12EventTexture", "CalendarDayButton12OverlayFrameTexture", "CalendarDayButton12PendingInviteTexture", "CalendarDayButton13DarkFrameBottom", "CalendarDayButton13DarkFrameTop", "CalendarDayButton13DateFrameBackground", "CalendarDayButton13DateFrameDate", "CalendarDayButton13EventBackgroundTexture", "CalendarDayButton13EventButton1Black", "CalendarDayButton13EventButton1Text1", "CalendarDayButton13EventButton1Text2", "CalendarDayButton13EventButton2Black", "CalendarDayButton13EventButton2Text1", "CalendarDayButton13EventButton2Text2", "CalendarDayButton13EventButton3Black", "CalendarDayButton13EventButton3Text1", "CalendarDayButton13EventButton3Text2", "CalendarDayButton13EventButton4Black", "CalendarDayButton13EventButton4Text1", "CalendarDayButton13EventButton4Text2", "CalendarDayButton13EventTexture", "CalendarDayButton13OverlayFrameTexture", "CalendarDayButton13PendingInviteTexture", "CalendarDayButton14DarkFrameBottom", "CalendarDayButton14DarkFrameTop", "CalendarDayButton14DateFrameBackground", "CalendarDayButton14DateFrameDate", "CalendarDayButton14EventBackgroundTexture", "CalendarDayButton14EventButton1Black", "CalendarDayButton14EventButton1Text1", "CalendarDayButton14EventButton1Text2", "CalendarDayButton14EventButton2Black", "CalendarDayButton14EventButton2Text1", "CalendarDayButton14EventButton2Text2", "CalendarDayButton14EventButton3Black", "CalendarDayButton14EventButton3Text1", "CalendarDayButton14EventButton3Text2", "CalendarDayButton14EventButton4Black", "CalendarDayButton14EventButton4Text1", "CalendarDayButton14EventButton4Text2", "CalendarDayButton14EventTexture", "CalendarDayButton14OverlayFrameTexture", "CalendarDayButton14PendingInviteTexture", "CalendarDayButton15DarkFrameBottom", "CalendarDayButton15DarkFrameTop", "CalendarDayButton15DateFrameBackground", "CalendarDayButton15DateFrameDate", "CalendarDayButton15EventBackgroundTexture", "CalendarDayButton15EventButton1Black", "CalendarDayButton15EventButton1Text1", "CalendarDayButton15EventButton1Text2", "CalendarDayButton15EventButton2Black", "CalendarDayButton15EventButton2Text1", "CalendarDayButton15EventButton2Text2", "CalendarDayButton15EventButton3Black", "CalendarDayButton15EventButton3Text1", "CalendarDayButton15EventButton3Text2", "CalendarDayButton15EventButton4Black", "CalendarDayButton15EventButton4Text1", "CalendarDayButton15EventButton4Text2", "CalendarDayButton15EventTexture", "CalendarDayButton15OverlayFrameTexture", "CalendarDayButton15PendingInviteTexture", "CalendarDayButton16DarkFrameBottom", "CalendarDayButton16DarkFrameTop", "CalendarDayButton16DateFrameBackground", "CalendarDayButton16DateFrameDate", "CalendarDayButton16EventBackgroundTexture", "CalendarDayButton16EventButton1Black", "CalendarDayButton16EventButton1Text1", "CalendarDayButton16EventButton1Text2", "CalendarDayButton16EventButton2Black", "CalendarDayButton16EventButton2Text1", "CalendarDayButton16EventButton2Text2", "CalendarDayButton16EventButton3Black", "CalendarDayButton16EventButton3Text1", "CalendarDayButton16EventButton3Text2", "CalendarDayButton16EventButton4Black", "CalendarDayButton16EventButton4Text1", "CalendarDayButton16EventButton4Text2", "CalendarDayButton16EventTexture", "CalendarDayButton16OverlayFrameTexture", "CalendarDayButton16PendingInviteTexture", "CalendarDayButton17DarkFrameBottom", "CalendarDayButton17DarkFrameTop", "CalendarDayButton17DateFrameBackground", "CalendarDayButton17DateFrameDate", "CalendarDayButton17EventBackgroundTexture", "CalendarDayButton17EventButton1Black", "CalendarDayButton17EventButton1Text1", "CalendarDayButton17EventButton1Text2", "CalendarDayButton17EventButton2Black", "CalendarDayButton17EventButton2Text1", "CalendarDayButton17EventButton2Text2", "CalendarDayButton17EventButton3Black", "CalendarDayButton17EventButton3Text1", "CalendarDayButton17EventButton3Text2", "CalendarDayButton17EventButton4Black", "CalendarDayButton17EventButton4Text1", "CalendarDayButton17EventButton4Text2", "CalendarDayButton17EventTexture", "CalendarDayButton17OverlayFrameTexture", "CalendarDayButton17PendingInviteTexture", "CalendarDayButton18DarkFrameBottom", "CalendarDayButton18DarkFrameTop", "CalendarDayButton18DateFrameBackground", "CalendarDayButton18DateFrameDate", "CalendarDayButton18EventBackgroundTexture", "CalendarDayButton18EventButton1Black", "CalendarDayButton18EventButton1Text1", "CalendarDayButton18EventButton1Text2", "CalendarDayButton18EventButton2Black", "CalendarDayButton18EventButton2Text1", "CalendarDayButton18EventButton2Text2", "CalendarDayButton18EventButton3Black", "CalendarDayButton18EventButton3Text1", "CalendarDayButton18EventButton3Text2", "CalendarDayButton18EventButton4Black", "CalendarDayButton18EventButton4Text1", "CalendarDayButton18EventButton4Text2", "CalendarDayButton18EventTexture", "CalendarDayButton18OverlayFrameTexture", "CalendarDayButton18PendingInviteTexture", "CalendarDayButton19DarkFrameBottom", "CalendarDayButton19DarkFrameTop", "CalendarDayButton19DateFrameBackground", "CalendarDayButton19DateFrameDate", "CalendarDayButton19EventBackgroundTexture", "CalendarDayButton19EventButton1Black", "CalendarDayButton19EventButton1Text1", "CalendarDayButton19EventButton1Text2", "CalendarDayButton19EventButton2Black", "CalendarDayButton19EventButton2Text1", "CalendarDayButton19EventButton2Text2", "CalendarDayButton19EventButton3Black", "CalendarDayButton19EventButton3Text1", "CalendarDayButton19EventButton3Text2", "CalendarDayButton19EventButton4Black", "CalendarDayButton19EventButton4Text1", "CalendarDayButton19EventButton4Text2", "CalendarDayButton19EventTexture", "CalendarDayButton19OverlayFrameTexture", "CalendarDayButton19PendingInviteTexture", "CalendarDayButton1DarkFrameBottom", "CalendarDayButton1DarkFrameTop", "CalendarDayButton1DateFrameBackground", "CalendarDayButton1DateFrameDate", "CalendarDayButton1EventBackgroundTexture", "CalendarDayButton1EventButton1Black", "CalendarDayButton1EventButton1Text1", "CalendarDayButton1EventButton1Text2", "CalendarDayButton1EventButton2Black", "CalendarDayButton1EventButton2Text1", "CalendarDayButton1EventButton2Text2", "CalendarDayButton1EventButton3Black", "CalendarDayButton1EventButton3Text1", "CalendarDayButton1EventButton3Text2", "CalendarDayButton1EventButton4Black", "CalendarDayButton1EventButton4Text1", "CalendarDayButton1EventButton4Text2", "CalendarDayButton1EventTexture", "CalendarDayButton1OverlayFrameTexture", "CalendarDayButton1PendingInviteTexture", "CalendarDayButton20DarkFrameBottom", "CalendarDayButton20DarkFrameTop", "CalendarDayButton20DateFrameBackground", "CalendarDayButton20DateFrameDate", "CalendarDayButton20EventBackgroundTexture", "CalendarDayButton20EventButton1Black", "CalendarDayButton20EventButton1Text1", "CalendarDayButton20EventButton1Text2", "CalendarDayButton20EventButton2Black", "CalendarDayButton20EventButton2Text1", "CalendarDayButton20EventButton2Text2", "CalendarDayButton20EventButton3Black", "CalendarDayButton20EventButton3Text1", "CalendarDayButton20EventButton3Text2", "CalendarDayButton20EventButton4Black", "CalendarDayButton20EventButton4Text1", "CalendarDayButton20EventButton4Text2", "CalendarDayButton20EventTexture", "CalendarDayButton20OverlayFrameTexture", "CalendarDayButton20PendingInviteTexture", "CalendarDayButton21DarkFrameBottom", "CalendarDayButton21DarkFrameTop", "CalendarDayButton21DateFrameBackground", "CalendarDayButton21DateFrameDate", "CalendarDayButton21EventBackgroundTexture", "CalendarDayButton21EventButton1Black", "CalendarDayButton21EventButton1Text1", "CalendarDayButton21EventButton1Text2", "CalendarDayButton21EventButton2Black", "CalendarDayButton21EventButton2Text1", "CalendarDayButton21EventButton2Text2", "CalendarDayButton21EventButton3Black", "CalendarDayButton21EventButton3Text1", "CalendarDayButton21EventButton3Text2", "CalendarDayButton21EventButton4Black", "CalendarDayButton21EventButton4Text1", "CalendarDayButton21EventButton4Text2", "CalendarDayButton21EventTexture", "CalendarDayButton21OverlayFrameTexture", "CalendarDayButton21PendingInviteTexture", "CalendarDayButton22DarkFrameBottom", "CalendarDayButton22DarkFrameTop", "CalendarDayButton22DateFrameBackground", "CalendarDayButton22DateFrameDate", "CalendarDayButton22EventBackgroundTexture", "CalendarDayButton22EventButton1Black", "CalendarDayButton22EventButton1Text1", "CalendarDayButton22EventButton1Text2", "CalendarDayButton22EventButton2Black", "CalendarDayButton22EventButton2Text1", "CalendarDayButton22EventButton2Text2", "CalendarDayButton22EventButton3Black", "CalendarDayButton22EventButton3Text1", "CalendarDayButton22EventButton3Text2", "CalendarDayButton22EventButton4Black", "CalendarDayButton22EventButton4Text1", "CalendarDayButton22EventButton4Text2", "CalendarDayButton22EventTexture", "CalendarDayButton22OverlayFrameTexture", "CalendarDayButton22PendingInviteTexture", "CalendarDayButton23DarkFrameBottom", "CalendarDayButton23DarkFrameTop", "CalendarDayButton23DateFrameBackground", "CalendarDayButton23DateFrameDate", "CalendarDayButton23EventBackgroundTexture", "CalendarDayButton23EventButton1Black", "CalendarDayButton23EventButton1Text1", "CalendarDayButton23EventButton1Text2", "CalendarDayButton23EventButton2Black", "CalendarDayButton23EventButton2Text1", "CalendarDayButton23EventButton2Text2", "CalendarDayButton23EventButton3Black", "CalendarDayButton23EventButton3Text1", "CalendarDayButton23EventButton3Text2", "CalendarDayButton23EventButton4Black", "CalendarDayButton23EventButton4Text1", "CalendarDayButton23EventButton4Text2", "CalendarDayButton23EventTexture", "CalendarDayButton23OverlayFrameTexture", "CalendarDayButton23PendingInviteTexture", "CalendarDayButton24DarkFrameBottom", "CalendarDayButton24DarkFrameTop", "CalendarDayButton24DateFrameBackground", "CalendarDayButton24DateFrameDate", "CalendarDayButton24EventBackgroundTexture", "CalendarDayButton24EventButton1Black", "CalendarDayButton24EventButton1Text1", "CalendarDayButton24EventButton1Text2", "CalendarDayButton24EventButton2Black", "CalendarDayButton24EventButton2Text1", "CalendarDayButton24EventButton2Text2", "CalendarDayButton24EventButton3Black", "CalendarDayButton24EventButton3Text1", "CalendarDayButton24EventButton3Text2", "CalendarDayButton24EventButton4Black", "CalendarDayButton24EventButton4Text1", "CalendarDayButton24EventButton4Text2", "CalendarDayButton24EventTexture", "CalendarDayButton24OverlayFrameTexture", "CalendarDayButton24PendingInviteTexture", "CalendarDayButton25DarkFrameBottom", "CalendarDayButton25DarkFrameTop", "CalendarDayButton25DateFrameBackground", "CalendarDayButton25DateFrameDate", "CalendarDayButton25EventBackgroundTexture", "CalendarDayButton25EventButton1Black", "CalendarDayButton25EventButton1Text1", "CalendarDayButton25EventButton1Text2", "CalendarDayButton25EventButton2Black", "CalendarDayButton25EventButton2Text1", "CalendarDayButton25EventButton2Text2", "CalendarDayButton25EventButton3Black", "CalendarDayButton25EventButton3Text1", "CalendarDayButton25EventButton3Text2", "CalendarDayButton25EventButton4Black", "CalendarDayButton25EventButton4Text1", "CalendarDayButton25EventButton4Text2", "CalendarDayButton25EventTexture", "CalendarDayButton25OverlayFrameTexture", "CalendarDayButton25PendingInviteTexture", "CalendarDayButton26DarkFrameBottom", "CalendarDayButton26DarkFrameTop", "CalendarDayButton26DateFrameBackground", "CalendarDayButton26DateFrameDate", "CalendarDayButton26EventBackgroundTexture", "CalendarDayButton26EventButton1Black", "CalendarDayButton26EventButton1Text1", "CalendarDayButton26EventButton1Text2", "CalendarDayButton26EventButton2Black", "CalendarDayButton26EventButton2Text1", "CalendarDayButton26EventButton2Text2", "CalendarDayButton26EventButton3Black", "CalendarDayButton26EventButton3Text1", "CalendarDayButton26EventButton3Text2", "CalendarDayButton26EventButton4Black", "CalendarDayButton26EventButton4Text1", "CalendarDayButton26EventButton4Text2", "CalendarDayButton26EventTexture", "CalendarDayButton26OverlayFrameTexture", "CalendarDayButton26PendingInviteTexture", "CalendarDayButton27DarkFrameBottom", "CalendarDayButton27DarkFrameTop", "CalendarDayButton27DateFrameBackground", "CalendarDayButton27DateFrameDate", "CalendarDayButton27EventBackgroundTexture", "CalendarDayButton27EventButton1Black", "CalendarDayButton27EventButton1Text1", "CalendarDayButton27EventButton1Text2", "CalendarDayButton27EventButton2Black", "CalendarDayButton27EventButton2Text1", "CalendarDayButton27EventButton2Text2", "CalendarDayButton27EventButton3Black", "CalendarDayButton27EventButton3Text1", "CalendarDayButton27EventButton3Text2", "CalendarDayButton27EventButton4Black", "CalendarDayButton27EventButton4Text1", "CalendarDayButton27EventButton4Text2", "CalendarDayButton27EventTexture", "CalendarDayButton27OverlayFrameTexture", "CalendarDayButton27PendingInviteTexture", "CalendarDayButton28DarkFrameBottom", "CalendarDayButton28DarkFrameTop", "CalendarDayButton28DateFrameBackground", "CalendarDayButton28DateFrameDate", "CalendarDayButton28EventBackgroundTexture", "CalendarDayButton28EventButton1Black", "CalendarDayButton28EventButton1Text1", "CalendarDayButton28EventButton1Text2", "CalendarDayButton28EventButton2Black", "CalendarDayButton28EventButton2Text1", "CalendarDayButton28EventButton2Text2", "CalendarDayButton28EventButton3Black", "CalendarDayButton28EventButton3Text1", "CalendarDayButton28EventButton3Text2", "CalendarDayButton28EventButton4Black", "CalendarDayButton28EventButton4Text1", "CalendarDayButton28EventButton4Text2", "CalendarDayButton28EventTexture", "CalendarDayButton28OverlayFrameTexture", "CalendarDayButton28PendingInviteTexture", "CalendarDayButton29DarkFrameBottom", "CalendarDayButton29DarkFrameTop", "CalendarDayButton29DateFrameBackground", "CalendarDayButton29DateFrameDate", "CalendarDayButton29EventBackgroundTexture", "CalendarDayButton29EventButton1Black", "CalendarDayButton29EventButton1Text1", "CalendarDayButton29EventButton1Text2", "CalendarDayButton29EventButton2Black", "CalendarDayButton29EventButton2Text1", "CalendarDayButton29EventButton2Text2", "CalendarDayButton29EventButton3Black", "CalendarDayButton29EventButton3Text1", "CalendarDayButton29EventButton3Text2", "CalendarDayButton29EventButton4Black", "CalendarDayButton29EventButton4Text1", "CalendarDayButton29EventButton4Text2", "CalendarDayButton29EventTexture", "CalendarDayButton29OverlayFrameTexture", "CalendarDayButton29PendingInviteTexture", "CalendarDayButton2DarkFrameBottom", "CalendarDayButton2DarkFrameTop", "CalendarDayButton2DateFrameBackground", "CalendarDayButton2DateFrameDate", "CalendarDayButton2EventBackgroundTexture", "CalendarDayButton2EventButton1Black", "CalendarDayButton2EventButton1Text1", "CalendarDayButton2EventButton1Text2", "CalendarDayButton2EventButton2Black", "CalendarDayButton2EventButton2Text1", "CalendarDayButton2EventButton2Text2", "CalendarDayButton2EventButton3Black", "CalendarDayButton2EventButton3Text1", "CalendarDayButton2EventButton3Text2", "CalendarDayButton2EventButton4Black", "CalendarDayButton2EventButton4Text1", "CalendarDayButton2EventButton4Text2", "CalendarDayButton2EventTexture", "CalendarDayButton2OverlayFrameTexture", "CalendarDayButton2PendingInviteTexture", "CalendarDayButton30DarkFrameBottom", "CalendarDayButton30DarkFrameTop", "CalendarDayButton30DateFrameBackground", "CalendarDayButton30DateFrameDate", "CalendarDayButton30EventBackgroundTexture", "CalendarDayButton30EventButton1Black", "CalendarDayButton30EventButton1Text1", "CalendarDayButton30EventButton1Text2", "CalendarDayButton30EventButton2Black", "CalendarDayButton30EventButton2Text1", "CalendarDayButton30EventButton2Text2", "CalendarDayButton30EventButton3Black", "CalendarDayButton30EventButton3Text1", "CalendarDayButton30EventButton3Text2", "CalendarDayButton30EventButton4Black", "CalendarDayButton30EventButton4Text1", "CalendarDayButton30EventButton4Text2", "CalendarDayButton30EventTexture", "CalendarDayButton30OverlayFrameTexture", "CalendarDayButton30PendingInviteTexture", "CalendarDayButton31DarkFrameBottom", "CalendarDayButton31DarkFrameTop", "CalendarDayButton31DateFrameBackground", "CalendarDayButton31DateFrameDate", "CalendarDayButton31EventBackgroundTexture", "CalendarDayButton31EventButton1Black", "CalendarDayButton31EventButton1Text1", "CalendarDayButton31EventButton1Text2", "CalendarDayButton31EventButton2Black", "CalendarDayButton31EventButton2Text1", "CalendarDayButton31EventButton2Text2", "CalendarDayButton31EventButton3Black", "CalendarDayButton31EventButton3Text1", "CalendarDayButton31EventButton3Text2", "CalendarDayButton31EventButton4Black", "CalendarDayButton31EventButton4Text1", "CalendarDayButton31EventButton4Text2", "CalendarDayButton31EventTexture", "CalendarDayButton31OverlayFrameTexture", "CalendarDayButton31PendingInviteTexture", "CalendarDayButton32DarkFrameBottom", "CalendarDayButton32DarkFrameTop", "CalendarDayButton32DateFrameBackground", "CalendarDayButton32DateFrameDate", "CalendarDayButton32EventBackgroundTexture", "CalendarDayButton32EventButton1Black", "CalendarDayButton32EventButton1Text1", "CalendarDayButton32EventButton1Text2", "CalendarDayButton32EventButton2Black", "CalendarDayButton32EventButton2Text1", "CalendarDayButton32EventButton2Text2", "CalendarDayButton32EventButton3Black", "CalendarDayButton32EventButton3Text1", "CalendarDayButton32EventButton3Text2", "CalendarDayButton32EventButton4Black", "CalendarDayButton32EventButton4Text1", "CalendarDayButton32EventButton4Text2", "CalendarDayButton32EventTexture", "CalendarDayButton32OverlayFrameTexture", "CalendarDayButton32PendingInviteTexture", "CalendarDayButton33DarkFrameBottom", "CalendarDayButton33DarkFrameTop", "CalendarDayButton33DateFrameBackground", "CalendarDayButton33DateFrameDate", "CalendarDayButton33EventBackgroundTexture", "CalendarDayButton33EventButton1Black", "CalendarDayButton33EventButton1Text1", "CalendarDayButton33EventButton1Text2", "CalendarDayButton33EventButton2Black", "CalendarDayButton33EventButton2Text1", "CalendarDayButton33EventButton2Text2", "CalendarDayButton33EventButton3Black", "CalendarDayButton33EventButton3Text1", "CalendarDayButton33EventButton3Text2", "CalendarDayButton33EventButton4Black", "CalendarDayButton33EventButton4Text1", "CalendarDayButton33EventButton4Text2", "CalendarDayButton33EventTexture", "CalendarDayButton33OverlayFrameTexture", "CalendarDayButton33PendingInviteTexture", "CalendarDayButton34DarkFrameBottom", "CalendarDayButton34DarkFrameTop", "CalendarDayButton34DateFrameBackground", "CalendarDayButton34DateFrameDate", "CalendarDayButton34EventBackgroundTexture", "CalendarDayButton34EventButton1Black", "CalendarDayButton34EventButton1Text1", "CalendarDayButton34EventButton1Text2", "CalendarDayButton34EventButton2Black", "CalendarDayButton34EventButton2Text1", "CalendarDayButton34EventButton2Text2", "CalendarDayButton34EventButton3Black", "CalendarDayButton34EventButton3Text1", "CalendarDayButton34EventButton3Text2", "CalendarDayButton34EventButton4Black", "CalendarDayButton34EventButton4Text1", "CalendarDayButton34EventButton4Text2", "CalendarDayButton34EventTexture", "CalendarDayButton34OverlayFrameTexture", "CalendarDayButton34PendingInviteTexture", "CalendarDayButton35DarkFrameBottom", "CalendarDayButton35DarkFrameTop", "CalendarDayButton35DateFrameBackground", "CalendarDayButton35DateFrameDate", "CalendarDayButton35EventBackgroundTexture", "CalendarDayButton35EventButton1Black", "CalendarDayButton35EventButton1Text1", "CalendarDayButton35EventButton1Text2", "CalendarDayButton35EventButton2Black", "CalendarDayButton35EventButton2Text1", "CalendarDayButton35EventButton2Text2", "CalendarDayButton35EventButton3Black", "CalendarDayButton35EventButton3Text1", "CalendarDayButton35EventButton3Text2", "CalendarDayButton35EventButton4Black", "CalendarDayButton35EventButton4Text1", "CalendarDayButton35EventButton4Text2", "CalendarDayButton35EventTexture", "CalendarDayButton35OverlayFrameTexture", "CalendarDayButton35PendingInviteTexture", "CalendarDayButton36DarkFrameBottom", "CalendarDayButton36DarkFrameTop", "CalendarDayButton36DateFrameBackground", "CalendarDayButton36DateFrameDate", "CalendarDayButton36EventBackgroundTexture", "CalendarDayButton36EventButton1Black", "CalendarDayButton36EventButton1Text1", "CalendarDayButton36EventButton1Text2", "CalendarDayButton36EventButton2Black", "CalendarDayButton36EventButton2Text1", "CalendarDayButton36EventButton2Text2", "CalendarDayButton36EventButton3Black", "CalendarDayButton36EventButton3Text1", "CalendarDayButton36EventButton3Text2", "CalendarDayButton36EventButton4Black", "CalendarDayButton36EventButton4Text1", "CalendarDayButton36EventButton4Text2", "CalendarDayButton36EventTexture", "CalendarDayButton36OverlayFrameTexture", "CalendarDayButton36PendingInviteTexture", "CalendarDayButton37DarkFrameBottom", "CalendarDayButton37DarkFrameTop", "CalendarDayButton37DateFrameBackground", "CalendarDayButton37DateFrameDate", "CalendarDayButton37EventBackgroundTexture", "CalendarDayButton37EventButton1Black", "CalendarDayButton37EventButton1Text1", "CalendarDayButton37EventButton1Text2", "CalendarDayButton37EventButton2Black", "CalendarDayButton37EventButton2Text1", "CalendarDayButton37EventButton2Text2", "CalendarDayButton37EventButton3Black", "CalendarDayButton37EventButton3Text1", "CalendarDayButton37EventButton3Text2", "CalendarDayButton37EventButton4Black", "CalendarDayButton37EventButton4Text1", "CalendarDayButton37EventButton4Text2", "CalendarDayButton37EventTexture", "CalendarDayButton37OverlayFrameTexture", "CalendarDayButton37PendingInviteTexture", "CalendarDayButton38DarkFrameBottom", "CalendarDayButton38DarkFrameTop", "CalendarDayButton38DateFrameBackground", "CalendarDayButton38DateFrameDate", "CalendarDayButton38EventBackgroundTexture", "CalendarDayButton38EventButton1Black", "CalendarDayButton38EventButton1Text1", "CalendarDayButton38EventButton1Text2", "CalendarDayButton38EventButton2Black", "CalendarDayButton38EventButton2Text1", "CalendarDayButton38EventButton2Text2", "CalendarDayButton38EventButton3Black", "CalendarDayButton38EventButton3Text1", "CalendarDayButton38EventButton3Text2", "CalendarDayButton38EventButton4Black", "CalendarDayButton38EventButton4Text1", "CalendarDayButton38EventButton4Text2", "CalendarDayButton38EventTexture", "CalendarDayButton38OverlayFrameTexture", "CalendarDayButton38PendingInviteTexture", "CalendarDayButton39DarkFrameBottom", "CalendarDayButton39DarkFrameTop", "CalendarDayButton39DateFrameBackground", "CalendarDayButton39DateFrameDate", "CalendarDayButton39EventBackgroundTexture", "CalendarDayButton39EventButton1Black", "CalendarDayButton39EventButton1Text1", "CalendarDayButton39EventButton1Text2", "CalendarDayButton39EventButton2Black", "CalendarDayButton39EventButton2Text1", "CalendarDayButton39EventButton2Text2", "CalendarDayButton39EventButton3Black", "CalendarDayButton39EventButton3Text1", "CalendarDayButton39EventButton3Text2", "CalendarDayButton39EventButton4Black", "CalendarDayButton39EventButton4Text1", "CalendarDayButton39EventButton4Text2", "CalendarDayButton39EventTexture", "CalendarDayButton39OverlayFrameTexture", "CalendarDayButton39PendingInviteTexture", "CalendarDayButton3DarkFrameBottom", "CalendarDayButton3DarkFrameTop", "CalendarDayButton3DateFrameBackground", "CalendarDayButton3DateFrameDate", "CalendarDayButton3EventBackgroundTexture", "CalendarDayButton3EventButton1Black", "CalendarDayButton3EventButton1Text1", "CalendarDayButton3EventButton1Text2", "CalendarDayButton3EventButton2Black", "CalendarDayButton3EventButton2Text1", "CalendarDayButton3EventButton2Text2", "CalendarDayButton3EventButton3Black", "CalendarDayButton3EventButton3Text1", "CalendarDayButton3EventButton3Text2", "CalendarDayButton3EventButton4Black", "CalendarDayButton3EventButton4Text1", "CalendarDayButton3EventButton4Text2", "CalendarDayButton3EventTexture", "CalendarDayButton3OverlayFrameTexture", "CalendarDayButton3PendingInviteTexture", "CalendarDayButton40DarkFrameBottom", "CalendarDayButton40DarkFrameTop", "CalendarDayButton40DateFrameBackground", "CalendarDayButton40DateFrameDate", "CalendarDayButton40EventBackgroundTexture", "CalendarDayButton40EventButton1Black", "CalendarDayButton40EventButton1Text1", "CalendarDayButton40EventButton1Text2", "CalendarDayButton40EventButton2Black", "CalendarDayButton40EventButton2Text1", "CalendarDayButton40EventButton2Text2", "CalendarDayButton40EventButton3Black", "CalendarDayButton40EventButton3Text1", "CalendarDayButton40EventButton3Text2", "CalendarDayButton40EventButton4Black", "CalendarDayButton40EventButton4Text1", "CalendarDayButton40EventButton4Text2", "CalendarDayButton40EventTexture", "CalendarDayButton40OverlayFrameTexture", "CalendarDayButton40PendingInviteTexture", "CalendarDayButton41DarkFrameBottom", "CalendarDayButton41DarkFrameTop", "CalendarDayButton41DateFrameBackground", "CalendarDayButton41DateFrameDate", "CalendarDayButton41EventBackgroundTexture", "CalendarDayButton41EventButton1Black", "CalendarDayButton41EventButton1Text1", "CalendarDayButton41EventButton1Text2", "CalendarDayButton41EventButton2Black", "CalendarDayButton41EventButton2Text1", "CalendarDayButton41EventButton2Text2", "CalendarDayButton41EventButton3Black", "CalendarDayButton41EventButton3Text1", "CalendarDayButton41EventButton3Text2", "CalendarDayButton41EventButton4Black", "CalendarDayButton41EventButton4Text1", "CalendarDayButton41EventButton4Text2", "CalendarDayButton41EventTexture", "CalendarDayButton41OverlayFrameTexture", "CalendarDayButton41PendingInviteTexture", "CalendarDayButton42DarkFrameBottom", "CalendarDayButton42DarkFrameTop", "CalendarDayButton42DateFrameBackground", "CalendarDayButton42DateFrameDate", "CalendarDayButton42EventBackgroundTexture", "CalendarDayButton42EventButton1Black", "CalendarDayButton42EventButton1Text1", "CalendarDayButton42EventButton1Text2", "CalendarDayButton42EventButton2Black", "CalendarDayButton42EventButton2Text1", "CalendarDayButton42EventButton2Text2", "CalendarDayButton42EventButton3Black", "CalendarDayButton42EventButton3Text1", "CalendarDayButton42EventButton3Text2", "CalendarDayButton42EventButton4Black", "CalendarDayButton42EventButton4Text1", "CalendarDayButton42EventButton4Text2", "CalendarDayButton42EventTexture", "CalendarDayButton42OverlayFrameTexture", "CalendarDayButton42PendingInviteTexture", "CalendarDayButton4DarkFrameBottom", "CalendarDayButton4DarkFrameTop", "CalendarDayButton4DateFrameBackground", "CalendarDayButton4DateFrameDate", "CalendarDayButton4EventBackgroundTexture", "CalendarDayButton4EventButton1Black", "CalendarDayButton4EventButton1Text1", "CalendarDayButton4EventButton1Text2", "CalendarDayButton4EventButton2Black", "CalendarDayButton4EventButton2Text1", "CalendarDayButton4EventButton2Text2", "CalendarDayButton4EventButton3Black", "CalendarDayButton4EventButton3Text1", "CalendarDayButton4EventButton3Text2", "CalendarDayButton4EventButton4Black", "CalendarDayButton4EventButton4Text1", "CalendarDayButton4EventButton4Text2", "CalendarDayButton4EventTexture", "CalendarDayButton4OverlayFrameTexture", "CalendarDayButton4PendingInviteTexture", "CalendarDayButton5DarkFrameBottom", "CalendarDayButton5DarkFrameTop", "CalendarDayButton5DateFrameBackground", "CalendarDayButton5DateFrameDate", "CalendarDayButton5EventBackgroundTexture", "CalendarDayButton5EventButton1Black", "CalendarDayButton5EventButton1Text1", "CalendarDayButton5EventButton1Text2", "CalendarDayButton5EventButton2Black", "CalendarDayButton5EventButton2Text1", "CalendarDayButton5EventButton2Text2", "CalendarDayButton5EventButton3Black", "CalendarDayButton5EventButton3Text1", "CalendarDayButton5EventButton3Text2", "CalendarDayButton5EventButton4Black", "CalendarDayButton5EventButton4Text1", "CalendarDayButton5EventButton4Text2", "CalendarDayButton5EventTexture", "CalendarDayButton5OverlayFrameTexture", "CalendarDayButton5PendingInviteTexture", "CalendarDayButton6DarkFrameBottom", "CalendarDayButton6DarkFrameTop", "CalendarDayButton6DateFrameBackground", "CalendarDayButton6DateFrameDate", "CalendarDayButton6EventBackgroundTexture", "CalendarDayButton6EventButton1Black", "CalendarDayButton6EventButton1Text1", "CalendarDayButton6EventButton1Text2", "CalendarDayButton6EventButton2Black", "CalendarDayButton6EventButton2Text1", "CalendarDayButton6EventButton2Text2", "CalendarDayButton6EventButton3Black", "CalendarDayButton6EventButton3Text1", "CalendarDayButton6EventButton3Text2", "CalendarDayButton6EventButton4Black", "CalendarDayButton6EventButton4Text1", "CalendarDayButton6EventButton4Text2", "CalendarDayButton6EventTexture", "CalendarDayButton6OverlayFrameTexture", "CalendarDayButton6PendingInviteTexture", "CalendarDayButton7DarkFrameBottom", "CalendarDayButton7DarkFrameTop", "CalendarDayButton7DateFrameBackground", "CalendarDayButton7DateFrameDate", "CalendarDayButton7EventBackgroundTexture", "CalendarDayButton7EventButton1Black", "CalendarDayButton7EventButton1Text1", "CalendarDayButton7EventButton1Text2", "CalendarDayButton7EventButton2Black", "CalendarDayButton7EventButton2Text1", "CalendarDayButton7EventButton2Text2", "CalendarDayButton7EventButton3Black", "CalendarDayButton7EventButton3Text1", "CalendarDayButton7EventButton3Text2", "CalendarDayButton7EventButton4Black", "CalendarDayButton7EventButton4Text1", "CalendarDayButton7EventButton4Text2", "CalendarDayButton7EventTexture", "CalendarDayButton7OverlayFrameTexture", "CalendarDayButton7PendingInviteTexture", "CalendarDayButton8DarkFrameBottom", "CalendarDayButton8DarkFrameTop", "CalendarDayButton8DateFrameBackground", "CalendarDayButton8DateFrameDate", "CalendarDayButton8EventBackgroundTexture", "CalendarDayButton8EventButton1Black", "CalendarDayButton8EventButton1Text1", "CalendarDayButton8EventButton1Text2", "CalendarDayButton8EventButton2Black", "CalendarDayButton8EventButton2Text1", "CalendarDayButton8EventButton2Text2", "CalendarDayButton8EventButton3Black", "CalendarDayButton8EventButton3Text1", "CalendarDayButton8EventButton3Text2", "CalendarDayButton8EventButton4Black", "CalendarDayButton8EventButton4Text1", "CalendarDayButton8EventButton4Text2", "CalendarDayButton8EventTexture", "CalendarDayButton8OverlayFrameTexture", "CalendarDayButton8PendingInviteTexture", "CalendarDayButton9DarkFrameBottom", "CalendarDayButton9DarkFrameTop", "CalendarDayButton9DateFrameBackground", "CalendarDayButton9DateFrameDate", "CalendarDayButton9EventBackgroundTexture", "CalendarDayButton9EventButton1Black", "CalendarDayButton9EventButton1Text1", "CalendarDayButton9EventButton1Text2", "CalendarDayButton9EventButton2Black", "CalendarDayButton9EventButton2Text1", "CalendarDayButton9EventButton2Text2", "CalendarDayButton9EventButton3Black", "CalendarDayButton9EventButton3Text1", "CalendarDayButton9EventButton3Text2", "CalendarDayButton9EventButton4Black", "CalendarDayButton9EventButton4Text1", "CalendarDayButton9EventButton4Text2", "CalendarDayButton9EventTexture", "CalendarDayButton9OverlayFrameTexture", "CalendarDayButton9PendingInviteTexture", "CalendarEventPickerCloseButtonBorder", "CalendarEventPickerCloseButtonLeft", "CalendarEventPickerCloseButtonMiddle", "CalendarEventPickerCloseButtonRight", "CalendarEventPickerCloseButtonText", "CalendarEventPickerFrameButtonBackground", "CalendarEventPickerScrollBarBG", "CalendarEventPickerScrollBarBottom", "CalendarEventPickerScrollBarMiddle", "CalendarEventPickerScrollBarThumbTexture", "CalendarEventPickerScrollBarTop", "CalendarEventPickerTitleFrameBackgroundLeft", "CalendarEventPickerTitleFrameBackgroundMiddle", "CalendarEventPickerTitleFrameBackgroundRight", "CalendarEventPickerTitleFrameText", "CalendarFilterButtonDisabledTexture", "CalendarFilterButtonHighlightTexture", "CalendarFilterButtonNormalTexture", "CalendarFilterButtonPushedTexture", "CalendarFilterDropDownButtonDisabledTexture", "CalendarFilterDropDownButtonHighlightTexture", "CalendarFilterDropDownButtonNormalTexture", "CalendarFilterDropDownButtonPushedTexture", "CalendarFilterDropDownLeft", "CalendarFilterDropDownMiddle", "CalendarFilterDropDownRight", "CalendarFilterDropDownText", "CalendarFilterFrameLeft", "CalendarFilterFrameMiddle", "CalendarFilterFrameRight", "CalendarFilterFrameText", "CalendarFrameBottomLeftTexture", "CalendarFrameBottomMiddleTexture", "CalendarFrameBottomRightTexture", "CalendarFrameLeftBottomTexture", "CalendarFrameLeftMiddleTexture", "CalendarFrameLeftTopTexture", "CalendarFrameRightBottomTexture", "CalendarFrameRightMiddleTexture", "CalendarFrameRightTopTexture", "CalendarFrameTopLeftTexture", "CalendarFrameTopMiddleTexture", "CalendarFrameTopRightTexture", "CalendarInviteStatusContextMenuButton10ShortcutText", "CalendarInviteStatusContextMenuButton11ShortcutText", "CalendarInviteStatusContextMenuButton12ShortcutText", "CalendarInviteStatusContextMenuButton13ShortcutText", "CalendarInviteStatusContextMenuButton14ShortcutText", "CalendarInviteStatusContextMenuButton15ShortcutText", "CalendarInviteStatusContextMenuButton16ShortcutText", "CalendarInviteStatusContextMenuButton17ShortcutText", "CalendarInviteStatusContextMenuButton18ShortcutText", "CalendarInviteStatusContextMenuButton19ShortcutText", "CalendarInviteStatusContextMenuButton1ShortcutText", "CalendarInviteStatusContextMenuButton20ShortcutText", "CalendarInviteStatusContextMenuButton21ShortcutText", "CalendarInviteStatusContextMenuButton22ShortcutText", "CalendarInviteStatusContextMenuButton23ShortcutText", "CalendarInviteStatusContextMenuButton24ShortcutText", "CalendarInviteStatusContextMenuButton25ShortcutText", "CalendarInviteStatusContextMenuButton26ShortcutText", "CalendarInviteStatusContextMenuButton27ShortcutText", "CalendarInviteStatusContextMenuButton28ShortcutText", "CalendarInviteStatusContextMenuButton29ShortcutText", "CalendarInviteStatusContextMenuButton2ShortcutText", "CalendarInviteStatusContextMenuButton30ShortcutText", "CalendarInviteStatusContextMenuButton31ShortcutText", "CalendarInviteStatusContextMenuButton32ShortcutText", "CalendarInviteStatusContextMenuButton3ShortcutText", "CalendarInviteStatusContextMenuButton4ShortcutText", "CalendarInviteStatusContextMenuButton5ShortcutText", "CalendarInviteStatusContextMenuButton6ShortcutText", "CalendarInviteStatusContextMenuButton7ShortcutText", "CalendarInviteStatusContextMenuButton8ShortcutText", "CalendarInviteStatusContextMenuButton9ShortcutText", "CalendarLastDayDarkTexture", "CalendarMassInviteArenaButton2Left", "CalendarMassInviteArenaButton2Middle", "CalendarMassInviteArenaButton2Right", "CalendarMassInviteArenaButton2Text", "CalendarMassInviteArenaButton3Left", "CalendarMassInviteArenaButton3Middle", "CalendarMassInviteArenaButton3Right", "CalendarMassInviteArenaButton3Text", "CalendarMassInviteArenaButton5Left", "CalendarMassInviteArenaButton5Middle", "CalendarMassInviteArenaButton5Right", "CalendarMassInviteArenaButton5Text", "CalendarMassInviteFrameDivider", "CalendarMassInviteFrameLevelDivider", "CalendarMassInviteGuildAcceptButtonLeft", "CalendarMassInviteGuildAcceptButtonMiddle", "CalendarMassInviteGuildAcceptButtonRight", "CalendarMassInviteGuildAcceptButtonText", "CalendarMassInviteGuildLevelText", "CalendarMassInviteGuildMaxLevelEditLeft", "CalendarMassInviteGuildMaxLevelEditMiddle", "CalendarMassInviteGuildMaxLevelEditRight", "CalendarMassInviteGuildMinLevelEditLeft", "CalendarMassInviteGuildMinLevelEditMiddle", "CalendarMassInviteGuildMinLevelEditRight", "CalendarMassInviteGuildRankMenuButtonDisabledTexture", "CalendarMassInviteGuildRankMenuButtonHighlightTexture", "CalendarMassInviteGuildRankMenuButtonNormalTexture", "CalendarMassInviteGuildRankMenuButtonPushedTexture", "CalendarMassInviteGuildRankMenuLeft", "CalendarMassInviteGuildRankMenuMiddle", "CalendarMassInviteGuildRankMenuRight", "CalendarMassInviteGuildRankMenuText", "CalendarMassInviteGuildRankText", "CalendarMassInviteTitleFrameBackgroundLeft", "CalendarMassInviteTitleFrameBackgroundMiddle", "CalendarMassInviteTitleFrameBackgroundRight", "CalendarMassInviteTitleFrameText", "CalendarMonthBackground", "CalendarMonthName", "CalendarTexturePickerAcceptButtonBorder", "CalendarTexturePickerAcceptButtonLeft", "CalendarTexturePickerAcceptButtonMiddle", "CalendarTexturePickerAcceptButtonRight", "CalendarTexturePickerAcceptButtonText", "CalendarTexturePickerCancelButtonBorder", "CalendarTexturePickerCancelButtonLeft", "CalendarTexturePickerCancelButtonMiddle", "CalendarTexturePickerCancelButtonRight", "CalendarTexturePickerCancelButtonText", "CalendarTexturePickerFrameButtonBackground", "CalendarTexturePickerScrollBarBG", "CalendarTexturePickerScrollBarBottom", "CalendarTexturePickerScrollBarMiddle", "CalendarTexturePickerScrollBarThumbTexture", "CalendarTexturePickerScrollBarTop", "CalendarTexturePickerScrollFrameButton10Icon", "CalendarTexturePickerScrollFrameButton10Title", "CalendarTexturePickerScrollFrameButton11Icon", "CalendarTexturePickerScrollFrameButton11Title", "CalendarTexturePickerScrollFrameButton12Icon", "CalendarTexturePickerScrollFrameButton12Title", "CalendarTexturePickerScrollFrameButton13Icon", "CalendarTexturePickerScrollFrameButton13Title", "CalendarTexturePickerScrollFrameButton14Icon", "CalendarTexturePickerScrollFrameButton14Title", "CalendarTexturePickerScrollFrameButton15Icon", "CalendarTexturePickerScrollFrameButton15Title", "CalendarTexturePickerScrollFrameButton16Icon", "CalendarTexturePickerScrollFrameButton16Title", "CalendarTexturePickerScrollFrameButton1Icon", "CalendarTexturePickerScrollFrameButton1Title", "CalendarTexturePickerScrollFrameButton2Icon", "CalendarTexturePickerScrollFrameButton2Title", "CalendarTexturePickerScrollFrameButton3Icon", "CalendarTexturePickerScrollFrameButton3Title", "CalendarTexturePickerScrollFrameButton4Icon", "CalendarTexturePickerScrollFrameButton4Title", "CalendarTexturePickerScrollFrameButton5Icon", "CalendarTexturePickerScrollFrameButton5Title", "CalendarTexturePickerScrollFrameButton6Icon", "CalendarTexturePickerScrollFrameButton6Title", "CalendarTexturePickerScrollFrameButton7Icon", "CalendarTexturePickerScrollFrameButton7Title", "CalendarTexturePickerScrollFrameButton8Icon", "CalendarTexturePickerScrollFrameButton8Title", "CalendarTexturePickerScrollFrameButton9Icon", "CalendarTexturePickerScrollFrameButton9Title", "CalendarTexturePickerTitleFrameBackgroundLeft", "CalendarTexturePickerTitleFrameBackgroundMiddle", "CalendarTexturePickerTitleFrameBackgroundRight", "CalendarTexturePickerTitleFrameText", "CalendarTodayTexture", "CalendarTodayTextureGlow", "CalendarViewEventAcceptButtonFlashTexture", "CalendarViewEventAcceptButtonLeft", "CalendarViewEventAcceptButtonMiddle", "CalendarViewEventAcceptButtonRight", "CalendarViewEventAcceptButtonText", "CalendarViewEventBackground", "CalendarViewEventCreatorName", "CalendarViewEventDateLabel", "CalendarViewEventDeclineButtonFlashTexture", "CalendarViewEventDeclineButtonLeft", "CalendarViewEventDeclineButtonMiddle", "CalendarViewEventDeclineButtonRight", "CalendarViewEventDeclineButtonText", "CalendarViewEventDescription", "CalendarViewEventDescriptionScrollFrameScrollBarThumbTexture", "CalendarViewEventDivider", "CalendarViewEventFlashTimer", "CalendarViewEventIcon", "CalendarViewEventInviteListClassSortButtonDirection", "CalendarViewEventInviteListNameSortButtonDirection", "CalendarViewEventInviteListScrollFrameScrollBarBG", "CalendarViewEventInviteListScrollFrameScrollBarBottom", "CalendarViewEventInviteListScrollFrameScrollBarMiddle", "CalendarViewEventInviteListScrollFrameScrollBarThumbTexture", "CalendarViewEventInviteListScrollFrameScrollBarTop", "CalendarViewEventInviteListStatusSortButtonDirection", "CalendarViewEventRemoveButtonLeft", "CalendarViewEventRemoveButtonMiddle", "CalendarViewEventRemoveButtonRight", "CalendarViewEventRemoveButtonText", "CalendarViewEventTentativeButtonFlashTexture", "CalendarViewEventTentativeButtonLeft", "CalendarViewEventTentativeButtonMiddle", "CalendarViewEventTentativeButtonRight", "CalendarViewEventTentativeButtonText", "CalendarViewEventTimeLabel", "CalendarViewEventTitle", "CalendarViewEventTitleFrameBackgroundLeft", "CalendarViewEventTitleFrameBackgroundMiddle", "CalendarViewEventTitleFrameBackgroundRight", "CalendarViewEventTitleFrameText", "CalendarViewEventTypeName", "CalendarViewHolidayBackground", "CalendarViewHolidayDescription", "CalendarViewHolidayInfoTexture", "CalendarViewHolidayScrollFrameScrollBarThumbTexture", "CalendarViewHolidayTitleFrameBackgroundLeft", "CalendarViewHolidayTitleFrameBackgroundMiddle", "CalendarViewHolidayTitleFrameBackgroundRight", "CalendarViewHolidayTitleFrameText", "CalendarViewRaidBackground", "CalendarViewRaidDescription", "CalendarViewRaidScrollFrameScrollBarThumbTexture", "CalendarViewRaidTitleFrameBackgroundLeft", "CalendarViewRaidTitleFrameBackgroundMiddle", "CalendarViewRaidTitleFrameBackgroundRight", "CalendarViewRaidTitleFrameText", "CalendarWeekday1Background", "CalendarWeekday1Name", "CalendarWeekday2Background", "CalendarWeekday2Name", "CalendarWeekday3Background", "CalendarWeekday3Name", "CalendarWeekday4Background", "CalendarWeekday4Name", "CalendarWeekday5Background", "CalendarWeekday5Name", "CalendarWeekday6Background", "CalendarWeekday6Name", "CalendarWeekday7Background", "CalendarWeekday7Name", "CalendarWeekdaySelectedTexture", "CalendarYearBackground", "CalendarYearName", -- functions: Blizzard_DebugTools "DebugTooltip_OnLoad", "DevTools_Dump", "DevTools_DumpCommand", "DevTools_RunDump", "EventTraceFrameEvent_DisplayTooltip", "EventTraceFrameEvent_OnClick", "EventTraceFrameEvent_OnEnter", "EventTraceFrameEvent_OnLeave", "EventTraceFrame_HandleSlashCmd", "EventTraceFrame_OnEvent", "EventTraceFrame_OnKeyUp", "EventTraceFrame_OnLoad", "EventTraceFrame_OnMouseWheel", "EventTraceFrame_OnSizeChanged", "EventTraceFrame_OnUpdate", "EventTraceFrame_StartEventCapture", "EventTraceFrame_StopEventCapture", "EventTraceFrame_Update", "EventTraceFrame_UpdateKeyboardStatus", "FrameStackTooltip_OnEnter", "FrameStackTooltip_OnUpdate", "FrameStackTooltip_Toggle", "ScriptErrorsFrameButton_OnClick", "ScriptErrorsFrame_DeleteError", "ScriptErrorsFrame_OnError", "ScriptErrorsFrame_OnLoad", "ScriptErrorsFrame_OnShow", "ScriptErrorsFrame_Update", "ScriptErrorsFrame_UpdateButtons", -- tables: Blizzard_DebugTools "CalendarCreateEventInviteListScrollFrameButton1", "CalendarCreateEventInviteListScrollFrameButton10", "CalendarCreateEventInviteListScrollFrameButton11", "CalendarCreateEventInviteListScrollFrameButton12", "CalendarCreateEventInviteListScrollFrameButton13", "CalendarCreateEventInviteListScrollFrameButton14", "CalendarCreateEventInviteListScrollFrameButton15", "CalendarCreateEventInviteListScrollFrameButton16", "CalendarCreateEventInviteListScrollFrameButton17", "CalendarCreateEventInviteListScrollFrameButton18", "CalendarCreateEventInviteListScrollFrameButton19", "CalendarCreateEventInviteListScrollFrameButton2", "CalendarCreateEventInviteListScrollFrameButton3", "CalendarCreateEventInviteListScrollFrameButton4", "CalendarCreateEventInviteListScrollFrameButton5", "CalendarCreateEventInviteListScrollFrameButton6", "CalendarCreateEventInviteListScrollFrameButton7", "CalendarCreateEventInviteListScrollFrameButton8", "CalendarCreateEventInviteListScrollFrameButton9", "CalendarEventPickerScrollFrameButton1", "CalendarEventPickerScrollFrameButton10", "CalendarEventPickerScrollFrameButton11", "CalendarEventPickerScrollFrameButton12", "CalendarEventPickerScrollFrameButton2", "CalendarEventPickerScrollFrameButton3", "CalendarEventPickerScrollFrameButton4", "CalendarEventPickerScrollFrameButton5", "CalendarEventPickerScrollFrameButton6", "CalendarEventPickerScrollFrameButton7", "CalendarEventPickerScrollFrameButton8", "CalendarEventPickerScrollFrameButton9", "CalendarViewEventInviteListScrollFrameButton1", "CalendarViewEventInviteListScrollFrameButton10", "CalendarViewEventInviteListScrollFrameButton11", "CalendarViewEventInviteListScrollFrameButton12", "CalendarViewEventInviteListScrollFrameButton13", "CalendarViewEventInviteListScrollFrameButton14", "CalendarViewEventInviteListScrollFrameButton15", "CalendarViewEventInviteListScrollFrameButton16", "CalendarViewEventInviteListScrollFrameButton17", "CalendarViewEventInviteListScrollFrameButton18", "CalendarViewEventInviteListScrollFrameButton19", "CalendarViewEventInviteListScrollFrameButton2", "CalendarViewEventInviteListScrollFrameButton3", "CalendarViewEventInviteListScrollFrameButton4", "CalendarViewEventInviteListScrollFrameButton5", "CalendarViewEventInviteListScrollFrameButton6", "CalendarViewEventInviteListScrollFrameButton7", "CalendarViewEventInviteListScrollFrameButton8", "CalendarViewEventInviteListScrollFrameButton9", "EVENT_TRACE_EVENT_COLORS", "EVENT_TRACE_SYSTEM_TIMES", "EventTraceFrame", "EventTraceFrameButton1", "EventTraceFrameButton10", "EventTraceFrameButton11", "EventTraceFrameButton12", "EventTraceFrameButton13", "EventTraceFrameButton14", "EventTraceFrameButton15", "EventTraceFrameButton16", "EventTraceFrameButton17", "EventTraceFrameButton18", "EventTraceFrameButton19", "EventTraceFrameButton2", "EventTraceFrameButton20", "EventTraceFrameButton21", "EventTraceFrameButton22", "EventTraceFrameButton23", "EventTraceFrameButton24", "EventTraceFrameButton25", "EventTraceFrameButton26", "EventTraceFrameButton27", "EventTraceFrameButton28", "EventTraceFrameButton29", "EventTraceFrameButton3", "EventTraceFrameButton4", "EventTraceFrameButton5", "EventTraceFrameButton6", "EventTraceFrameButton7", "EventTraceFrameButton8", "EventTraceFrameButton9", "EventTraceFrameCloseButton", "EventTraceFrameScroll", "EventTraceFrameTitleButton", "EventTraceFrameTitleButtonHighlight", "EventTraceTooltip", "EventTraceTooltipStatusBar", "FrameStackTooltip", "FrameStackTooltipStatusBar", "ScriptErrorsFrame", "ScriptErrorsFrameClose", "ScriptErrorsFrameScrollFrame", "ScriptErrorsFrameScrollFrameScrollBar", "ScriptErrorsFrameScrollFrameScrollBarScrollDownButton", "ScriptErrorsFrameScrollFrameScrollBarScrollUpButton", "ScriptErrorsFrameScrollFrameText", "ScriptErrorsFrameTitleButton", -- frames: Blizzard_DebugTools "CalendarViewEventInviteListScrollFrameButton1", "CalendarViewEventInviteListScrollFrameButton2", "CalendarViewEventInviteListScrollFrameButton3", "CalendarViewEventInviteListScrollFrameButton4", "CalendarViewEventInviteListScrollFrameButton5", "CalendarViewEventInviteListScrollFrameButton6", "CalendarViewEventInviteListScrollFrameButton7", "CalendarViewEventInviteListScrollFrameButton8", "CalendarViewEventInviteListScrollFrameButton9", "CalendarViewEventInviteListScrollFrameButton10", "CalendarViewEventInviteListScrollFrameButton11", "CalendarViewEventInviteListScrollFrameButton12", "CalendarViewEventInviteListScrollFrameButton13", "CalendarViewEventInviteListScrollFrameButton14", "CalendarViewEventInviteListScrollFrameButton15", "CalendarViewEventInviteListScrollFrameButton16", "CalendarViewEventInviteListScrollFrameButton17", "CalendarViewEventInviteListScrollFrameButton18", "CalendarViewEventInviteListScrollFrameButton19", "CalendarCreateEventInviteListScrollFrameButton1", "CalendarCreateEventInviteListScrollFrameButton2", "CalendarCreateEventInviteListScrollFrameButton3", "CalendarCreateEventInviteListScrollFrameButton4", "CalendarCreateEventInviteListScrollFrameButton5", "CalendarCreateEventInviteListScrollFrameButton6", "CalendarCreateEventInviteListScrollFrameButton7", "CalendarCreateEventInviteListScrollFrameButton8", "CalendarCreateEventInviteListScrollFrameButton9", "CalendarCreateEventInviteListScrollFrameButton10", "CalendarCreateEventInviteListScrollFrameButton11", "CalendarCreateEventInviteListScrollFrameButton12", "CalendarCreateEventInviteListScrollFrameButton13", "CalendarCreateEventInviteListScrollFrameButton14", "CalendarCreateEventInviteListScrollFrameButton15", "CalendarCreateEventInviteListScrollFrameButton16", "CalendarCreateEventInviteListScrollFrameButton17", "CalendarCreateEventInviteListScrollFrameButton18", "CalendarCreateEventInviteListScrollFrameButton19", "CalendarEventPickerScrollFrameButton1", "CalendarEventPickerScrollFrameButton2", "CalendarEventPickerScrollFrameButton3", "CalendarEventPickerScrollFrameButton4", "CalendarEventPickerScrollFrameButton5", "CalendarEventPickerScrollFrameButton6", "CalendarEventPickerScrollFrameButton7", "CalendarEventPickerScrollFrameButton8", "CalendarEventPickerScrollFrameButton9", "CalendarEventPickerScrollFrameButton10", "CalendarEventPickerScrollFrameButton11", "CalendarEventPickerScrollFrameButton12", "EventTraceFrame", "EventTraceFrameCloseButton", "EventTraceFrameTitleButton", "EventTraceFrameTitleButtonHighlight", "EventTraceFrameScroll", "EventTraceFrameButton1", "EventTraceFrameButton2", "EventTraceFrameButton3", "EventTraceFrameButton4", "EventTraceFrameButton5", "EventTraceFrameButton6", "EventTraceFrameButton7", "EventTraceFrameButton8", "EventTraceFrameButton9", "EventTraceFrameButton10", "EventTraceFrameButton11", "EventTraceFrameButton12", "EventTraceFrameButton13", "EventTraceFrameButton14", "EventTraceFrameButton15", "EventTraceFrameButton16", "EventTraceFrameButton17", "EventTraceFrameButton18", "EventTraceFrameButton19", "EventTraceFrameButton20", "EventTraceFrameButton21", "EventTraceFrameButton22", "EventTraceFrameButton23", "EventTraceFrameButton24", "EventTraceFrameButton25", "EventTraceFrameButton26", "EventTraceFrameButton27", "EventTraceFrameButton28", "EventTraceFrameButton29", "ScriptErrorsFrame", "ScriptErrorsFrameClose", "ScriptErrorsFrameTitleButton", "ScriptErrorsFrameScrollFrame", "ScriptErrorsFrameScrollFrameText", "ScriptErrorsFrameScrollFrameScrollBar", "ScriptErrorsFrameScrollFrameScrollBarScrollUpButton", "ScriptErrorsFrameScrollFrameScrollBarScrollDownButton", "FrameStackTooltip", "FrameStackTooltipStatusBar", "EventTraceTooltip", "EventTraceTooltipStatusBar", -- widgets: Blizzard_DebugTools "CalendarCreateEventInviteListScrollFrameButton10Class", "CalendarCreateEventInviteListScrollFrameButton10ModIcon", "CalendarCreateEventInviteListScrollFrameButton10Name", "CalendarCreateEventInviteListScrollFrameButton10PartyIcon", "CalendarCreateEventInviteListScrollFrameButton10Status", "CalendarCreateEventInviteListScrollFrameButton11Class", "CalendarCreateEventInviteListScrollFrameButton11ModIcon", "CalendarCreateEventInviteListScrollFrameButton11Name", "CalendarCreateEventInviteListScrollFrameButton11PartyIcon", "CalendarCreateEventInviteListScrollFrameButton11Status", "CalendarCreateEventInviteListScrollFrameButton12Class", "CalendarCreateEventInviteListScrollFrameButton12ModIcon", "CalendarCreateEventInviteListScrollFrameButton12Name", "CalendarCreateEventInviteListScrollFrameButton12PartyIcon", "CalendarCreateEventInviteListScrollFrameButton12Status", "CalendarCreateEventInviteListScrollFrameButton13Class", "CalendarCreateEventInviteListScrollFrameButton13ModIcon", "CalendarCreateEventInviteListScrollFrameButton13Name", "CalendarCreateEventInviteListScrollFrameButton13PartyIcon", "CalendarCreateEventInviteListScrollFrameButton13Status", "CalendarCreateEventInviteListScrollFrameButton14Class", "CalendarCreateEventInviteListScrollFrameButton14ModIcon", "CalendarCreateEventInviteListScrollFrameButton14Name", "CalendarCreateEventInviteListScrollFrameButton14PartyIcon", "CalendarCreateEventInviteListScrollFrameButton14Status", "CalendarCreateEventInviteListScrollFrameButton15Class", "CalendarCreateEventInviteListScrollFrameButton15ModIcon", "CalendarCreateEventInviteListScrollFrameButton15Name", "CalendarCreateEventInviteListScrollFrameButton15PartyIcon", "CalendarCreateEventInviteListScrollFrameButton15Status", "CalendarCreateEventInviteListScrollFrameButton16Class", "CalendarCreateEventInviteListScrollFrameButton16ModIcon", "CalendarCreateEventInviteListScrollFrameButton16Name", "CalendarCreateEventInviteListScrollFrameButton16PartyIcon", "CalendarCreateEventInviteListScrollFrameButton16Status", "CalendarCreateEventInviteListScrollFrameButton17Class", "CalendarCreateEventInviteListScrollFrameButton17ModIcon", "CalendarCreateEventInviteListScrollFrameButton17Name", "CalendarCreateEventInviteListScrollFrameButton17PartyIcon", "CalendarCreateEventInviteListScrollFrameButton17Status", "CalendarCreateEventInviteListScrollFrameButton18Class", "CalendarCreateEventInviteListScrollFrameButton18ModIcon", "CalendarCreateEventInviteListScrollFrameButton18Name", "CalendarCreateEventInviteListScrollFrameButton18PartyIcon", "CalendarCreateEventInviteListScrollFrameButton18Status", "CalendarCreateEventInviteListScrollFrameButton19Class", "CalendarCreateEventInviteListScrollFrameButton19ModIcon", "CalendarCreateEventInviteListScrollFrameButton19Name", "CalendarCreateEventInviteListScrollFrameButton19PartyIcon", "CalendarCreateEventInviteListScrollFrameButton19Status", "CalendarCreateEventInviteListScrollFrameButton1Class", "CalendarCreateEventInviteListScrollFrameButton1ModIcon", "CalendarCreateEventInviteListScrollFrameButton1Name", "CalendarCreateEventInviteListScrollFrameButton1PartyIcon", "CalendarCreateEventInviteListScrollFrameButton1Status", "CalendarCreateEventInviteListScrollFrameButton2Class", "CalendarCreateEventInviteListScrollFrameButton2ModIcon", "CalendarCreateEventInviteListScrollFrameButton2Name", "CalendarCreateEventInviteListScrollFrameButton2PartyIcon", "CalendarCreateEventInviteListScrollFrameButton2Status", "CalendarCreateEventInviteListScrollFrameButton3Class", "CalendarCreateEventInviteListScrollFrameButton3ModIcon", "CalendarCreateEventInviteListScrollFrameButton3Name", "CalendarCreateEventInviteListScrollFrameButton3PartyIcon", "CalendarCreateEventInviteListScrollFrameButton3Status", "CalendarCreateEventInviteListScrollFrameButton4Class", "CalendarCreateEventInviteListScrollFrameButton4ModIcon", "CalendarCreateEventInviteListScrollFrameButton4Name", "CalendarCreateEventInviteListScrollFrameButton4PartyIcon", "CalendarCreateEventInviteListScrollFrameButton4Status", "CalendarCreateEventInviteListScrollFrameButton5Class", "CalendarCreateEventInviteListScrollFrameButton5ModIcon", "CalendarCreateEventInviteListScrollFrameButton5Name", "CalendarCreateEventInviteListScrollFrameButton5PartyIcon", "CalendarCreateEventInviteListScrollFrameButton5Status", "CalendarCreateEventInviteListScrollFrameButton6Class", "CalendarCreateEventInviteListScrollFrameButton6ModIcon", "CalendarCreateEventInviteListScrollFrameButton6Name", "CalendarCreateEventInviteListScrollFrameButton6PartyIcon", "CalendarCreateEventInviteListScrollFrameButton6Status", "CalendarCreateEventInviteListScrollFrameButton7Class", "CalendarCreateEventInviteListScrollFrameButton7ModIcon", "CalendarCreateEventInviteListScrollFrameButton7Name", "CalendarCreateEventInviteListScrollFrameButton7PartyIcon", "CalendarCreateEventInviteListScrollFrameButton7Status", "CalendarCreateEventInviteListScrollFrameButton8Class", "CalendarCreateEventInviteListScrollFrameButton8ModIcon", "CalendarCreateEventInviteListScrollFrameButton8Name", "CalendarCreateEventInviteListScrollFrameButton8PartyIcon", "CalendarCreateEventInviteListScrollFrameButton8Status", "CalendarCreateEventInviteListScrollFrameButton9Class", "CalendarCreateEventInviteListScrollFrameButton9ModIcon", "CalendarCreateEventInviteListScrollFrameButton9Name", "CalendarCreateEventInviteListScrollFrameButton9PartyIcon", "CalendarCreateEventInviteListScrollFrameButton9Status", "CalendarEventPickerScrollFrameButton10Icon", "CalendarEventPickerScrollFrameButton10Time", "CalendarEventPickerScrollFrameButton10Title", "CalendarEventPickerScrollFrameButton11Icon", "CalendarEventPickerScrollFrameButton11Time", "CalendarEventPickerScrollFrameButton11Title", "CalendarEventPickerScrollFrameButton12Icon", "CalendarEventPickerScrollFrameButton12Time", "CalendarEventPickerScrollFrameButton12Title", "CalendarEventPickerScrollFrameButton1Icon", "CalendarEventPickerScrollFrameButton1Time", "CalendarEventPickerScrollFrameButton1Title", "CalendarEventPickerScrollFrameButton2Icon", "CalendarEventPickerScrollFrameButton2Time", "CalendarEventPickerScrollFrameButton2Title", "CalendarEventPickerScrollFrameButton3Icon", "CalendarEventPickerScrollFrameButton3Time", "CalendarEventPickerScrollFrameButton3Title", "CalendarEventPickerScrollFrameButton4Icon", "CalendarEventPickerScrollFrameButton4Time", "CalendarEventPickerScrollFrameButton4Title", "CalendarEventPickerScrollFrameButton5Icon", "CalendarEventPickerScrollFrameButton5Time", "CalendarEventPickerScrollFrameButton5Title", "CalendarEventPickerScrollFrameButton6Icon", "CalendarEventPickerScrollFrameButton6Time", "CalendarEventPickerScrollFrameButton6Title", "CalendarEventPickerScrollFrameButton7Icon", "CalendarEventPickerScrollFrameButton7Time", "CalendarEventPickerScrollFrameButton7Title", "CalendarEventPickerScrollFrameButton8Icon", "CalendarEventPickerScrollFrameButton8Time", "CalendarEventPickerScrollFrameButton8Title", "CalendarEventPickerScrollFrameButton9Icon", "CalendarEventPickerScrollFrameButton9Time", "CalendarEventPickerScrollFrameButton9Title", "CalendarViewEventInviteListScrollFrameButton10Class", "CalendarViewEventInviteListScrollFrameButton10ModIcon", "CalendarViewEventInviteListScrollFrameButton10Name", "CalendarViewEventInviteListScrollFrameButton10PartyIcon", "CalendarViewEventInviteListScrollFrameButton10Status", "CalendarViewEventInviteListScrollFrameButton11Class", "CalendarViewEventInviteListScrollFrameButton11ModIcon", "CalendarViewEventInviteListScrollFrameButton11Name", "CalendarViewEventInviteListScrollFrameButton11PartyIcon", "CalendarViewEventInviteListScrollFrameButton11Status", "CalendarViewEventInviteListScrollFrameButton12Class", "CalendarViewEventInviteListScrollFrameButton12ModIcon", "CalendarViewEventInviteListScrollFrameButton12Name", "CalendarViewEventInviteListScrollFrameButton12PartyIcon", "CalendarViewEventInviteListScrollFrameButton12Status", "CalendarViewEventInviteListScrollFrameButton13Class", "CalendarViewEventInviteListScrollFrameButton13ModIcon", "CalendarViewEventInviteListScrollFrameButton13Name", "CalendarViewEventInviteListScrollFrameButton13PartyIcon", "CalendarViewEventInviteListScrollFrameButton13Status", "CalendarViewEventInviteListScrollFrameButton14Class", "CalendarViewEventInviteListScrollFrameButton14ModIcon", "CalendarViewEventInviteListScrollFrameButton14Name", "CalendarViewEventInviteListScrollFrameButton14PartyIcon", "CalendarViewEventInviteListScrollFrameButton14Status", "CalendarViewEventInviteListScrollFrameButton15Class", "CalendarViewEventInviteListScrollFrameButton15ModIcon", "CalendarViewEventInviteListScrollFrameButton15Name", "CalendarViewEventInviteListScrollFrameButton15PartyIcon", "CalendarViewEventInviteListScrollFrameButton15Status", "CalendarViewEventInviteListScrollFrameButton16Class", "CalendarViewEventInviteListScrollFrameButton16ModIcon", "CalendarViewEventInviteListScrollFrameButton16Name", "CalendarViewEventInviteListScrollFrameButton16PartyIcon", "CalendarViewEventInviteListScrollFrameButton16Status", "CalendarViewEventInviteListScrollFrameButton17Class", "CalendarViewEventInviteListScrollFrameButton17ModIcon", "CalendarViewEventInviteListScrollFrameButton17Name", "CalendarViewEventInviteListScrollFrameButton17PartyIcon", "CalendarViewEventInviteListScrollFrameButton17Status", "CalendarViewEventInviteListScrollFrameButton18Class", "CalendarViewEventInviteListScrollFrameButton18ModIcon", "CalendarViewEventInviteListScrollFrameButton18Name", "CalendarViewEventInviteListScrollFrameButton18PartyIcon", "CalendarViewEventInviteListScrollFrameButton18Status", "CalendarViewEventInviteListScrollFrameButton19Class", "CalendarViewEventInviteListScrollFrameButton19ModIcon", "CalendarViewEventInviteListScrollFrameButton19Name", "CalendarViewEventInviteListScrollFrameButton19PartyIcon", "CalendarViewEventInviteListScrollFrameButton19Status", "CalendarViewEventInviteListScrollFrameButton1Class", "CalendarViewEventInviteListScrollFrameButton1ModIcon", "CalendarViewEventInviteListScrollFrameButton1Name", "CalendarViewEventInviteListScrollFrameButton1PartyIcon", "CalendarViewEventInviteListScrollFrameButton1Status", "CalendarViewEventInviteListScrollFrameButton2Class", "CalendarViewEventInviteListScrollFrameButton2ModIcon", "CalendarViewEventInviteListScrollFrameButton2Name", "CalendarViewEventInviteListScrollFrameButton2PartyIcon", "CalendarViewEventInviteListScrollFrameButton2Status", "CalendarViewEventInviteListScrollFrameButton3Class", "CalendarViewEventInviteListScrollFrameButton3ModIcon", "CalendarViewEventInviteListScrollFrameButton3Name", "CalendarViewEventInviteListScrollFrameButton3PartyIcon", "CalendarViewEventInviteListScrollFrameButton3Status", "CalendarViewEventInviteListScrollFrameButton4Class", "CalendarViewEventInviteListScrollFrameButton4ModIcon", "CalendarViewEventInviteListScrollFrameButton4Name", "CalendarViewEventInviteListScrollFrameButton4PartyIcon", "CalendarViewEventInviteListScrollFrameButton4Status", "CalendarViewEventInviteListScrollFrameButton5Class", "CalendarViewEventInviteListScrollFrameButton5ModIcon", "CalendarViewEventInviteListScrollFrameButton5Name", "CalendarViewEventInviteListScrollFrameButton5PartyIcon", "CalendarViewEventInviteListScrollFrameButton5Status", "CalendarViewEventInviteListScrollFrameButton6Class", "CalendarViewEventInviteListScrollFrameButton6ModIcon", "CalendarViewEventInviteListScrollFrameButton6Name", "CalendarViewEventInviteListScrollFrameButton6PartyIcon", "CalendarViewEventInviteListScrollFrameButton6Status", "CalendarViewEventInviteListScrollFrameButton7Class", "CalendarViewEventInviteListScrollFrameButton7ModIcon", "CalendarViewEventInviteListScrollFrameButton7Name", "CalendarViewEventInviteListScrollFrameButton7PartyIcon", "CalendarViewEventInviteListScrollFrameButton7Status", "CalendarViewEventInviteListScrollFrameButton8Class", "CalendarViewEventInviteListScrollFrameButton8ModIcon", "CalendarViewEventInviteListScrollFrameButton8Name", "CalendarViewEventInviteListScrollFrameButton8PartyIcon", "CalendarViewEventInviteListScrollFrameButton8Status", "CalendarViewEventInviteListScrollFrameButton9Class", "CalendarViewEventInviteListScrollFrameButton9ModIcon", "CalendarViewEventInviteListScrollFrameButton9Name", "CalendarViewEventInviteListScrollFrameButton9PartyIcon", "CalendarViewEventInviteListScrollFrameButton9Status", "EventTraceFrameBottom", "EventTraceFrameBottomLeft", "EventTraceFrameBottomRight", "EventTraceFrameDialogBG", "EventTraceFrameLeft", "EventTraceFrameRight", "EventTraceFrameScrollBG", "EventTraceFrameTitle", "EventTraceFrameTitleBG", "EventTraceFrameTop", "EventTraceFrameTopLeft", "EventTraceFrameTopRight", "EventTraceTooltipStatusBarTexture", "EventTraceTooltipTextLeft1", "EventTraceTooltipTextLeft2", "EventTraceTooltipTextLeft3", "EventTraceTooltipTextLeft4", "EventTraceTooltipTextLeft5", "EventTraceTooltipTextLeft6", "EventTraceTooltipTextLeft7", "EventTraceTooltipTextLeft8", "EventTraceTooltipTextRight1", "EventTraceTooltipTextRight2", "EventTraceTooltipTextRight3", "EventTraceTooltipTextRight4", "EventTraceTooltipTextRight5", "EventTraceTooltipTextRight6", "EventTraceTooltipTextRight7", "EventTraceTooltipTextRight8", "EventTraceTooltipTexture1", "EventTraceTooltipTexture10", "EventTraceTooltipTexture2", "EventTraceTooltipTexture3", "EventTraceTooltipTexture4", "EventTraceTooltipTexture5", "EventTraceTooltipTexture6", "EventTraceTooltipTexture7", "EventTraceTooltipTexture8", "EventTraceTooltipTexture9", "FrameStackTooltipStatusBarTexture", "FrameStackTooltipTextLeft1", "FrameStackTooltipTextLeft2", "FrameStackTooltipTextLeft3", "FrameStackTooltipTextLeft4", "FrameStackTooltipTextLeft5", "FrameStackTooltipTextLeft6", "FrameStackTooltipTextLeft7", "FrameStackTooltipTextLeft8", "FrameStackTooltipTextRight1", "FrameStackTooltipTextRight2", "FrameStackTooltipTextRight3", "FrameStackTooltipTextRight4", "FrameStackTooltipTextRight5", "FrameStackTooltipTextRight6", "FrameStackTooltipTextRight7", "FrameStackTooltipTextRight8", "FrameStackTooltipTexture1", "FrameStackTooltipTexture10", "FrameStackTooltipTexture2", "FrameStackTooltipTexture3", "FrameStackTooltipTexture4", "FrameStackTooltipTexture5", "FrameStackTooltipTexture6", "FrameStackTooltipTexture7", "FrameStackTooltipTexture8", "FrameStackTooltipTexture9", "ScriptErrorsFrameBottom", "ScriptErrorsFrameBottomLeft", "ScriptErrorsFrameBottomRight", "ScriptErrorsFrameDialogBG", "ScriptErrorsFrameLeft", "ScriptErrorsFrameRight", "ScriptErrorsFrameScrollFrameScrollBarThumbTexture", "ScriptErrorsFrameText", "ScriptErrorsFrameTitleBG", "ScriptErrorsFrameTop", "ScriptErrorsFrameTopLeft", "ScriptErrorsFrameTopRight", -- functions: Blizzard_GMChatUI "GMChatFrame_Close", "GMChatFrame_IsGM", "GMChatFrame_OnEvent", "GMChatFrame_OnHide", "GMChatFrame_OnLoad", "GMChatFrame_OnShow", "GMChatFrame_OnUpdate", "GMChatFrame_Show", "GMChatStatusFrame_OnClick", "GMChatStatusFrame_Pulse", -- tables: Blizzard_GMChatUI "GMChatFrame", "GMChatFrameButtonFrame", "GMChatFrameButtonFrameBottomButton", "GMChatFrameButtonFrameDownButton", "GMChatFrameButtonFrameMinimizeButton", "GMChatFrameButtonFrameUpButton", "GMChatFrameClickAnywhereButton", "GMChatFrameCloseButton", "GMChatFrameEditBox", "GMChatFrameEditBoxLanguage", "GMChatFrameResizeButton", "GMChatStatusFrame", "GMChatStatusFrameButton", "GMChatTab", "GMChatTabFlash", -- frames: Blizzard_GMChatUI "GMChatFrame", "GMChatFrameClickAnywhereButton", "GMChatFrameResizeButton", "GMChatFrameButtonFrame", "GMChatFrameButtonFrameBottomButton", "GMChatFrameButtonFrameDownButton", "GMChatFrameButtonFrameUpButton", "GMChatFrameButtonFrameMinimizeButton", "GMChatFrameEditBox", "GMChatFrameEditBoxLanguage", "GMChatTab", "GMChatTabFlash", "GMChatFrameCloseButton", "GMChatStatusFrame", "GMChatStatusFrameButton", -- widgets: Blizzard_GMChatUI "GMChatFrameBackground", "GMChatFrameBottomLeftTexture", "GMChatFrameBottomRightTexture", "GMChatFrameBottomTexture", "GMChatFrameButtonFrameBackground", "GMChatFrameButtonFrameBottomButtonFlash", "GMChatFrameButtonFrameBottomLeftTexture", "GMChatFrameButtonFrameBottomRightTexture", "GMChatFrameButtonFrameBottomTexture", "GMChatFrameButtonFrameLeftTexture", "GMChatFrameButtonFrameRightTexture", "GMChatFrameButtonFrameTopLeftTexture", "GMChatFrameButtonFrameTopRightTexture", "GMChatFrameButtonFrameTopTexture", "GMChatFrameEditBoxFocusLeft", "GMChatFrameEditBoxFocusMid", "GMChatFrameEditBoxFocusRight", "GMChatFrameEditBoxHeader", "GMChatFrameEditBoxLeft", "GMChatFrameEditBoxMid", "GMChatFrameEditBoxRight", "GMChatFrameLeftTexture", "GMChatFrameRightTexture", "GMChatFrameTopLeftTexture", "GMChatFrameTopRightTexture", "GMChatFrameTopTexture", "GMChatStatusFrameDescription", "GMChatStatusFramePulse", "GMChatStatusFrameTitleText", "GMChatTabLeft", "GMChatTabMiddle", "GMChatTabRight", "GMChatTabText", -- functions: Blizzard_GMSurveyUI "GMSurveyCommentScrollFrame_OnEvent", "GMSurveyCommentScrollFrame_OnLoad", "GMSurveyFrame_Update", "GMSurveyQuestion_OnLoad", "GMSurveyQuestion_OnShow", "GMSurveyQuestion_SpaceAnswers", "GMSurveyRadioButton_OnClick", "GMSurveyScrollFrame_OnEvent", "GMSurveyScrollFrame_OnLoad", "GMSurveySubmitButton_OnClick", -- tables: Blizzard_GMSurveyUI "GMBlock", "GMSurveyCancelButton", "GMSurveyCloseButton", "GMSurveyCommentFrame", "GMSurveyCommentScrollFrame", "GMSurveyCommentScrollFrameScrollBar", "GMSurveyCommentScrollFrameScrollBarScrollDownButton", "GMSurveyCommentScrollFrameScrollBarScrollUpButton", "GMSurveyFrame", "GMSurveyFrameComment", "GMSurveyHeader", "GMSurveyQuestion1", "GMSurveyQuestion10", "GMSurveyQuestion10RadioButton0", "GMSurveyQuestion10RadioButton1", "GMSurveyQuestion10RadioButton10", "GMSurveyQuestion10RadioButton11", "GMSurveyQuestion10RadioButton2", "GMSurveyQuestion10RadioButton3", "GMSurveyQuestion10RadioButton4", "GMSurveyQuestion10RadioButton5", "GMSurveyQuestion10RadioButton6", "GMSurveyQuestion10RadioButton7", "GMSurveyQuestion10RadioButton8", "GMSurveyQuestion10RadioButton9", "GMSurveyQuestion1RadioButton0", "GMSurveyQuestion1RadioButton1", "GMSurveyQuestion1RadioButton10", "GMSurveyQuestion1RadioButton11", "GMSurveyQuestion1RadioButton2", "GMSurveyQuestion1RadioButton3", "GMSurveyQuestion1RadioButton4", "GMSurveyQuestion1RadioButton5", "GMSurveyQuestion1RadioButton6", "GMSurveyQuestion1RadioButton7", "GMSurveyQuestion1RadioButton8", "GMSurveyQuestion1RadioButton9", "GMSurveyQuestion2", "GMSurveyQuestion2RadioButton0", "GMSurveyQuestion2RadioButton1", "GMSurveyQuestion2RadioButton10", "GMSurveyQuestion2RadioButton11", "GMSurveyQuestion2RadioButton2", "GMSurveyQuestion2RadioButton3", "GMSurveyQuestion2RadioButton4", "GMSurveyQuestion2RadioButton5", "GMSurveyQuestion2RadioButton6", "GMSurveyQuestion2RadioButton7", "GMSurveyQuestion2RadioButton8", "GMSurveyQuestion2RadioButton9", "GMSurveyQuestion3", "GMSurveyQuestion3RadioButton0", "GMSurveyQuestion3RadioButton1", "GMSurveyQuestion3RadioButton10", "GMSurveyQuestion3RadioButton11", "GMSurveyQuestion3RadioButton2", "GMSurveyQuestion3RadioButton3", "GMSurveyQuestion3RadioButton4", "GMSurveyQuestion3RadioButton5", "GMSurveyQuestion3RadioButton6", "GMSurveyQuestion3RadioButton7", "GMSurveyQuestion3RadioButton8", "GMSurveyQuestion3RadioButton9", "GMSurveyQuestion4", "GMSurveyQuestion4RadioButton0", "GMSurveyQuestion4RadioButton1", "GMSurveyQuestion4RadioButton10", "GMSurveyQuestion4RadioButton11", "GMSurveyQuestion4RadioButton2", "GMSurveyQuestion4RadioButton3", "GMSurveyQuestion4RadioButton4", "GMSurveyQuestion4RadioButton5", "GMSurveyQuestion4RadioButton6", "GMSurveyQuestion4RadioButton7", "GMSurveyQuestion4RadioButton8", "GMSurveyQuestion4RadioButton9", "GMSurveyQuestion5", "GMSurveyQuestion5RadioButton0", "GMSurveyQuestion5RadioButton1", "GMSurveyQuestion5RadioButton10", "GMSurveyQuestion5RadioButton11", "GMSurveyQuestion5RadioButton2", "GMSurveyQuestion5RadioButton3", "GMSurveyQuestion5RadioButton4", "GMSurveyQuestion5RadioButton5", "GMSurveyQuestion5RadioButton6", "GMSurveyQuestion5RadioButton7", "GMSurveyQuestion5RadioButton8", "GMSurveyQuestion5RadioButton9", "GMSurveyQuestion6", "GMSurveyQuestion6RadioButton0", "GMSurveyQuestion6RadioButton1", "GMSurveyQuestion6RadioButton10", "GMSurveyQuestion6RadioButton11", "GMSurveyQuestion6RadioButton2", "GMSurveyQuestion6RadioButton3", "GMSurveyQuestion6RadioButton4", "GMSurveyQuestion6RadioButton5", "GMSurveyQuestion6RadioButton6", "GMSurveyQuestion6RadioButton7", "GMSurveyQuestion6RadioButton8", "GMSurveyQuestion6RadioButton9", "GMSurveyQuestion7", "GMSurveyQuestion7RadioButton0", "GMSurveyQuestion7RadioButton1", "GMSurveyQuestion7RadioButton10", "GMSurveyQuestion7RadioButton11", "GMSurveyQuestion7RadioButton2", "GMSurveyQuestion7RadioButton3", "GMSurveyQuestion7RadioButton4", "GMSurveyQuestion7RadioButton5", "GMSurveyQuestion7RadioButton6", "GMSurveyQuestion7RadioButton7", "GMSurveyQuestion7RadioButton8", "GMSurveyQuestion7RadioButton9", "GMSurveyQuestion8", "GMSurveyQuestion8RadioButton0", "GMSurveyQuestion8RadioButton1", "GMSurveyQuestion8RadioButton10", "GMSurveyQuestion8RadioButton11", "GMSurveyQuestion8RadioButton2", "GMSurveyQuestion8RadioButton3", "GMSurveyQuestion8RadioButton4", "GMSurveyQuestion8RadioButton5", "GMSurveyQuestion8RadioButton6", "GMSurveyQuestion8RadioButton7", "GMSurveyQuestion8RadioButton8", "GMSurveyQuestion8RadioButton9", "GMSurveyQuestion9", "GMSurveyQuestion9RadioButton0", "GMSurveyQuestion9RadioButton1", "GMSurveyQuestion9RadioButton10", "GMSurveyQuestion9RadioButton11", "GMSurveyQuestion9RadioButton2", "GMSurveyQuestion9RadioButton3", "GMSurveyQuestion9RadioButton4", "GMSurveyQuestion9RadioButton5", "GMSurveyQuestion9RadioButton6", "GMSurveyQuestion9RadioButton7", "GMSurveyQuestion9RadioButton8", "GMSurveyQuestion9RadioButton9", "GMSurveyScrollChildFrame", "GMSurveyScrollFrame", "GMSurveyScrollFrameScrollBar", "GMSurveyScrollFrameScrollBarScrollDownButton", "GMSurveyScrollFrameScrollBarScrollUpButton", "GMSurveySubmitButton", -- frames: Blizzard_GMSurveyUI "GMSurveyFrame", "GMSurveyHeader", "GMSurveyScrollFrame", "GMSurveyScrollChildFrame", "GMSurveyQuestion1", "GMSurveyQuestion1RadioButton0", "GMSurveyQuestion1RadioButton1", "GMSurveyQuestion1RadioButton2", "GMSurveyQuestion1RadioButton3", "GMSurveyQuestion1RadioButton4", "GMSurveyQuestion1RadioButton5", "GMSurveyQuestion1RadioButton6", "GMSurveyQuestion1RadioButton7", "GMSurveyQuestion1RadioButton8", "GMSurveyQuestion1RadioButton9", "GMSurveyQuestion1RadioButton10", "GMSurveyQuestion1RadioButton11", "GMSurveyQuestion2", "GMSurveyQuestion2RadioButton0", "GMSurveyQuestion2RadioButton1", "GMSurveyQuestion2RadioButton2", "GMSurveyQuestion2RadioButton3", "GMSurveyQuestion2RadioButton4", "GMSurveyQuestion2RadioButton5", "GMSurveyQuestion2RadioButton6", "GMSurveyQuestion2RadioButton7", "GMSurveyQuestion2RadioButton8", "GMSurveyQuestion2RadioButton9", "GMSurveyQuestion2RadioButton10", "GMSurveyQuestion2RadioButton11", "GMBlock", "GMSurveyQuestion3", "GMSurveyQuestion3RadioButton0", "GMSurveyQuestion3RadioButton1", "GMSurveyQuestion3RadioButton2", "GMSurveyQuestion3RadioButton3", "GMSurveyQuestion3RadioButton4", "GMSurveyQuestion3RadioButton5", "GMSurveyQuestion3RadioButton6", "GMSurveyQuestion3RadioButton7", "GMSurveyQuestion3RadioButton8", "GMSurveyQuestion3RadioButton9", "GMSurveyQuestion3RadioButton10", "GMSurveyQuestion3RadioButton11", "GMSurveyQuestion4", "GMSurveyQuestion4RadioButton0", "GMSurveyQuestion4RadioButton1", "GMSurveyQuestion4RadioButton2", "GMSurveyQuestion4RadioButton3", "GMSurveyQuestion4RadioButton4", "GMSurveyQuestion4RadioButton5", "GMSurveyQuestion4RadioButton6", "GMSurveyQuestion4RadioButton7", "GMSurveyQuestion4RadioButton8", "GMSurveyQuestion4RadioButton9", "GMSurveyQuestion4RadioButton10", "GMSurveyQuestion4RadioButton11", "GMSurveyQuestion5", "GMSurveyQuestion5RadioButton0", "GMSurveyQuestion5RadioButton1", "GMSurveyQuestion5RadioButton2", "GMSurveyQuestion5RadioButton3", "GMSurveyQuestion5RadioButton4", "GMSurveyQuestion5RadioButton5", "GMSurveyQuestion5RadioButton6", "GMSurveyQuestion5RadioButton7", "GMSurveyQuestion5RadioButton8", "GMSurveyQuestion5RadioButton9", "GMSurveyQuestion5RadioButton10", "GMSurveyQuestion5RadioButton11", "GMSurveyQuestion6", "GMSurveyQuestion6RadioButton0", "GMSurveyQuestion6RadioButton1", "GMSurveyQuestion6RadioButton2", "GMSurveyQuestion6RadioButton3", "GMSurveyQuestion6RadioButton4", "GMSurveyQuestion6RadioButton5", "GMSurveyQuestion6RadioButton6", "GMSurveyQuestion6RadioButton7", "GMSurveyQuestion6RadioButton8", "GMSurveyQuestion6RadioButton9", "GMSurveyQuestion6RadioButton10", "GMSurveyQuestion6RadioButton11", "GMSurveyQuestion7", "GMSurveyQuestion7RadioButton0", "GMSurveyQuestion7RadioButton1", "GMSurveyQuestion7RadioButton2", "GMSurveyQuestion7RadioButton3", "GMSurveyQuestion7RadioButton4", "GMSurveyQuestion7RadioButton5", "GMSurveyQuestion7RadioButton6", "GMSurveyQuestion7RadioButton7", "GMSurveyQuestion7RadioButton8", "GMSurveyQuestion7RadioButton9", "GMSurveyQuestion7RadioButton10", "GMSurveyQuestion7RadioButton11", "GMSurveyQuestion8", "GMSurveyQuestion8RadioButton0", "GMSurveyQuestion8RadioButton1", "GMSurveyQuestion8RadioButton2", "GMSurveyQuestion8RadioButton3", "GMSurveyQuestion8RadioButton4", "GMSurveyQuestion8RadioButton5", "GMSurveyQuestion8RadioButton6", "GMSurveyQuestion8RadioButton7", "GMSurveyQuestion8RadioButton8", "GMSurveyQuestion8RadioButton9", "GMSurveyQuestion8RadioButton10", "GMSurveyQuestion8RadioButton11", "GMSurveyQuestion9", "GMSurveyQuestion9RadioButton0", "GMSurveyQuestion9RadioButton1", "GMSurveyQuestion9RadioButton2", "GMSurveyQuestion9RadioButton3", "GMSurveyQuestion9RadioButton4", "GMSurveyQuestion9RadioButton5", "GMSurveyQuestion9RadioButton6", "GMSurveyQuestion9RadioButton7", "GMSurveyQuestion9RadioButton8", "GMSurveyQuestion9RadioButton9", "GMSurveyQuestion9RadioButton10", "GMSurveyQuestion9RadioButton11", "GMSurveyQuestion10", "GMSurveyQuestion10RadioButton0", "GMSurveyQuestion10RadioButton1", "GMSurveyQuestion10RadioButton2", "GMSurveyQuestion10RadioButton3", "GMSurveyQuestion10RadioButton4", "GMSurveyQuestion10RadioButton5", "GMSurveyQuestion10RadioButton6", "GMSurveyQuestion10RadioButton7", "GMSurveyQuestion10RadioButton8", "GMSurveyQuestion10RadioButton9", "GMSurveyQuestion10RadioButton10", "GMSurveyQuestion10RadioButton11", "GMSurveyCommentFrame", "GMSurveyCommentScrollFrame", "GMSurveyFrameComment", "GMSurveyCommentScrollFrameScrollBar", "GMSurveyCommentScrollFrameScrollBarScrollUpButton", "GMSurveyCommentScrollFrameScrollBarScrollDownButton", "GMSurveyScrollFrameScrollBar", "GMSurveyScrollFrameScrollBarScrollUpButton", "GMSurveyScrollFrameScrollBarScrollDownButton", "GMSurveyCloseButton", "GMSurveyCancelButton", "GMSurveySubmitButton", -- widgets: Blizzard_GMSurveyUI "GMBlockText", "GMSurveyAdditionalCommentsText", "GMSurveyBottom", "GMSurveyBottomFiller", "GMSurveyBottomLeft", "GMSurveyBottomRight", "GMSurveyCancelButtonText", "GMSurveyCommentScrollFrameScrollBarThumbTexture", "GMSurveyHeaderCenter", "GMSurveyHeaderLeft", "GMSurveyHeaderRight", "GMSurveyHeaderText", "GMSurveyLeft", "GMSurveyMiddle", "GMSurveyMiddleFiller", "GMSurveyQuestion10RadioButton0Score", "GMSurveyQuestion10RadioButton0Text", "GMSurveyQuestion10RadioButton10Score", "GMSurveyQuestion10RadioButton10Text", "GMSurveyQuestion10RadioButton11NetPromoterHigh", "GMSurveyQuestion10RadioButton11Score", "GMSurveyQuestion10RadioButton11Text", "GMSurveyQuestion10RadioButton1NetPromoterLow", "GMSurveyQuestion10RadioButton1Score", "GMSurveyQuestion10RadioButton1Text", "GMSurveyQuestion10RadioButton2Score", "GMSurveyQuestion10RadioButton2Text", "GMSurveyQuestion10RadioButton3Score", "GMSurveyQuestion10RadioButton3Text", "GMSurveyQuestion10RadioButton4Score", "GMSurveyQuestion10RadioButton4Text", "GMSurveyQuestion10RadioButton5Score", "GMSurveyQuestion10RadioButton5Text", "GMSurveyQuestion10RadioButton6Score", "GMSurveyQuestion10RadioButton6Text", "GMSurveyQuestion10RadioButton7Score", "GMSurveyQuestion10RadioButton7Text", "GMSurveyQuestion10RadioButton8Score", "GMSurveyQuestion10RadioButton8Text", "GMSurveyQuestion10RadioButton9Score", "GMSurveyQuestion10RadioButton9Text", "GMSurveyQuestion10Text", "GMSurveyQuestion1RadioButton0Score", "GMSurveyQuestion1RadioButton0Text", "GMSurveyQuestion1RadioButton10Score", "GMSurveyQuestion1RadioButton10Text", "GMSurveyQuestion1RadioButton11NetPromoterHigh", "GMSurveyQuestion1RadioButton11Score", "GMSurveyQuestion1RadioButton11Text", "GMSurveyQuestion1RadioButton1NetPromoterLow", "GMSurveyQuestion1RadioButton1Score", "GMSurveyQuestion1RadioButton1Text", "GMSurveyQuestion1RadioButton2Score", "GMSurveyQuestion1RadioButton2Text", "GMSurveyQuestion1RadioButton3Score", "GMSurveyQuestion1RadioButton3Text", "GMSurveyQuestion1RadioButton4Score", "GMSurveyQuestion1RadioButton4Text", "GMSurveyQuestion1RadioButton5Score", "GMSurveyQuestion1RadioButton5Text", "GMSurveyQuestion1RadioButton6Score", "GMSurveyQuestion1RadioButton6Text", "GMSurveyQuestion1RadioButton7Score", "GMSurveyQuestion1RadioButton7Text", "GMSurveyQuestion1RadioButton8Score", "GMSurveyQuestion1RadioButton8Text", "GMSurveyQuestion1RadioButton9Score", "GMSurveyQuestion1RadioButton9Text", "GMSurveyQuestion1Text", "GMSurveyQuestion2RadioButton0Score", "GMSurveyQuestion2RadioButton0Text", "GMSurveyQuestion2RadioButton10Score", "GMSurveyQuestion2RadioButton10Text", "GMSurveyQuestion2RadioButton11NetPromoterHigh", "GMSurveyQuestion2RadioButton11Score", "GMSurveyQuestion2RadioButton11Text", "GMSurveyQuestion2RadioButton1NetPromoterLow", "GMSurveyQuestion2RadioButton1Score", "GMSurveyQuestion2RadioButton1Text", "GMSurveyQuestion2RadioButton2Score", "GMSurveyQuestion2RadioButton2Text", "GMSurveyQuestion2RadioButton3Score", "GMSurveyQuestion2RadioButton3Text", "GMSurveyQuestion2RadioButton4Score", "GMSurveyQuestion2RadioButton4Text", "GMSurveyQuestion2RadioButton5Score", "GMSurveyQuestion2RadioButton5Text", "GMSurveyQuestion2RadioButton6Score", "GMSurveyQuestion2RadioButton6Text", "GMSurveyQuestion2RadioButton7Score", "GMSurveyQuestion2RadioButton7Text", "GMSurveyQuestion2RadioButton8Score", "GMSurveyQuestion2RadioButton8Text", "GMSurveyQuestion2RadioButton9Score", "GMSurveyQuestion2RadioButton9Text", "GMSurveyQuestion2Text", "GMSurveyQuestion3RadioButton0Score", "GMSurveyQuestion3RadioButton0Text", "GMSurveyQuestion3RadioButton10Score", "GMSurveyQuestion3RadioButton10Text", "GMSurveyQuestion3RadioButton11NetPromoterHigh", "GMSurveyQuestion3RadioButton11Score", "GMSurveyQuestion3RadioButton11Text", "GMSurveyQuestion3RadioButton1NetPromoterLow", "GMSurveyQuestion3RadioButton1Score", "GMSurveyQuestion3RadioButton1Text", "GMSurveyQuestion3RadioButton2Score", "GMSurveyQuestion3RadioButton2Text", "GMSurveyQuestion3RadioButton3Score", "GMSurveyQuestion3RadioButton3Text", "GMSurveyQuestion3RadioButton4Score", "GMSurveyQuestion3RadioButton4Text", "GMSurveyQuestion3RadioButton5Score", "GMSurveyQuestion3RadioButton5Text", "GMSurveyQuestion3RadioButton6Score", "GMSurveyQuestion3RadioButton6Text", "GMSurveyQuestion3RadioButton7Score", "GMSurveyQuestion3RadioButton7Text", "GMSurveyQuestion3RadioButton8Score", "GMSurveyQuestion3RadioButton8Text", "GMSurveyQuestion3RadioButton9Score", "GMSurveyQuestion3RadioButton9Text", "GMSurveyQuestion3Text", "GMSurveyQuestion4RadioButton0Score", "GMSurveyQuestion4RadioButton0Text", "GMSurveyQuestion4RadioButton10Score", "GMSurveyQuestion4RadioButton10Text", "GMSurveyQuestion4RadioButton11NetPromoterHigh", "GMSurveyQuestion4RadioButton11Score", "GMSurveyQuestion4RadioButton11Text", "GMSurveyQuestion4RadioButton1NetPromoterLow", "GMSurveyQuestion4RadioButton1Score", "GMSurveyQuestion4RadioButton1Text", "GMSurveyQuestion4RadioButton2Score", "GMSurveyQuestion4RadioButton2Text", "GMSurveyQuestion4RadioButton3Score", "GMSurveyQuestion4RadioButton3Text", "GMSurveyQuestion4RadioButton4Score", "GMSurveyQuestion4RadioButton4Text", "GMSurveyQuestion4RadioButton5Score", "GMSurveyQuestion4RadioButton5Text", "GMSurveyQuestion4RadioButton6Score", "GMSurveyQuestion4RadioButton6Text", "GMSurveyQuestion4RadioButton7Score", "GMSurveyQuestion4RadioButton7Text", "GMSurveyQuestion4RadioButton8Score", "GMSurveyQuestion4RadioButton8Text", "GMSurveyQuestion4RadioButton9Score", "GMSurveyQuestion4RadioButton9Text", "GMSurveyQuestion4Text", "GMSurveyQuestion5RadioButton0Score", "GMSurveyQuestion5RadioButton0Text", "GMSurveyQuestion5RadioButton10Score", "GMSurveyQuestion5RadioButton10Text", "GMSurveyQuestion5RadioButton11NetPromoterHigh", "GMSurveyQuestion5RadioButton11Score", "GMSurveyQuestion5RadioButton11Text", "GMSurveyQuestion5RadioButton1NetPromoterLow", "GMSurveyQuestion5RadioButton1Score", "GMSurveyQuestion5RadioButton1Text", "GMSurveyQuestion5RadioButton2Score", "GMSurveyQuestion5RadioButton2Text", "GMSurveyQuestion5RadioButton3Score", "GMSurveyQuestion5RadioButton3Text", "GMSurveyQuestion5RadioButton4Score", "GMSurveyQuestion5RadioButton4Text", "GMSurveyQuestion5RadioButton5Score", "GMSurveyQuestion5RadioButton5Text", "GMSurveyQuestion5RadioButton6Score", "GMSurveyQuestion5RadioButton6Text", "GMSurveyQuestion5RadioButton7Score", "GMSurveyQuestion5RadioButton7Text", "GMSurveyQuestion5RadioButton8Score", "GMSurveyQuestion5RadioButton8Text", "GMSurveyQuestion5RadioButton9Score", "GMSurveyQuestion5RadioButton9Text", "GMSurveyQuestion5Text", "GMSurveyQuestion6RadioButton0Score", "GMSurveyQuestion6RadioButton0Text", "GMSurveyQuestion6RadioButton10Score", "GMSurveyQuestion6RadioButton10Text", "GMSurveyQuestion6RadioButton11NetPromoterHigh", "GMSurveyQuestion6RadioButton11Score", "GMSurveyQuestion6RadioButton11Text", "GMSurveyQuestion6RadioButton1NetPromoterLow", "GMSurveyQuestion6RadioButton1Score", "GMSurveyQuestion6RadioButton1Text", "GMSurveyQuestion6RadioButton2Score", "GMSurveyQuestion6RadioButton2Text", "GMSurveyQuestion6RadioButton3Score", "GMSurveyQuestion6RadioButton3Text", "GMSurveyQuestion6RadioButton4Score", "GMSurveyQuestion6RadioButton4Text", "GMSurveyQuestion6RadioButton5Score", "GMSurveyQuestion6RadioButton5Text", "GMSurveyQuestion6RadioButton6Score", "GMSurveyQuestion6RadioButton6Text", "GMSurveyQuestion6RadioButton7Score", "GMSurveyQuestion6RadioButton7Text", "GMSurveyQuestion6RadioButton8Score", "GMSurveyQuestion6RadioButton8Text", "GMSurveyQuestion6RadioButton9Score", "GMSurveyQuestion6RadioButton9Text", "GMSurveyQuestion6Text", "GMSurveyQuestion7RadioButton0Score", "GMSurveyQuestion7RadioButton0Text", "GMSurveyQuestion7RadioButton10Score", "GMSurveyQuestion7RadioButton10Text", "GMSurveyQuestion7RadioButton11NetPromoterHigh", "GMSurveyQuestion7RadioButton11Score", "GMSurveyQuestion7RadioButton11Text", "GMSurveyQuestion7RadioButton1NetPromoterLow", "GMSurveyQuestion7RadioButton1Score", "GMSurveyQuestion7RadioButton1Text", "GMSurveyQuestion7RadioButton2Score", "GMSurveyQuestion7RadioButton2Text", "GMSurveyQuestion7RadioButton3Score", "GMSurveyQuestion7RadioButton3Text", "GMSurveyQuestion7RadioButton4Score", "GMSurveyQuestion7RadioButton4Text", "GMSurveyQuestion7RadioButton5Score", "GMSurveyQuestion7RadioButton5Text", "GMSurveyQuestion7RadioButton6Score", "GMSurveyQuestion7RadioButton6Text", "GMSurveyQuestion7RadioButton7Score", "GMSurveyQuestion7RadioButton7Text", "GMSurveyQuestion7RadioButton8Score", "GMSurveyQuestion7RadioButton8Text", "GMSurveyQuestion7RadioButton9Score", "GMSurveyQuestion7RadioButton9Text", "GMSurveyQuestion7Text", "GMSurveyQuestion8RadioButton0Score", "GMSurveyQuestion8RadioButton0Text", "GMSurveyQuestion8RadioButton10Score", "GMSurveyQuestion8RadioButton10Text", "GMSurveyQuestion8RadioButton11NetPromoterHigh", "GMSurveyQuestion8RadioButton11Score", "GMSurveyQuestion8RadioButton11Text", "GMSurveyQuestion8RadioButton1NetPromoterLow", "GMSurveyQuestion8RadioButton1Score", "GMSurveyQuestion8RadioButton1Text", "GMSurveyQuestion8RadioButton2Score", "GMSurveyQuestion8RadioButton2Text", "GMSurveyQuestion8RadioButton3Score", "GMSurveyQuestion8RadioButton3Text", "GMSurveyQuestion8RadioButton4Score", "GMSurveyQuestion8RadioButton4Text", "GMSurveyQuestion8RadioButton5Score", "GMSurveyQuestion8RadioButton5Text", "GMSurveyQuestion8RadioButton6Score", "GMSurveyQuestion8RadioButton6Text", "GMSurveyQuestion8RadioButton7Score", "GMSurveyQuestion8RadioButton7Text", "GMSurveyQuestion8RadioButton8Score", "GMSurveyQuestion8RadioButton8Text", "GMSurveyQuestion8RadioButton9Score", "GMSurveyQuestion8RadioButton9Text", "GMSurveyQuestion8Text", "GMSurveyQuestion9RadioButton0Score", "GMSurveyQuestion9RadioButton0Text", "GMSurveyQuestion9RadioButton10Score", "GMSurveyQuestion9RadioButton10Text", "GMSurveyQuestion9RadioButton11NetPromoterHigh", "GMSurveyQuestion9RadioButton11Score", "GMSurveyQuestion9RadioButton11Text", "GMSurveyQuestion9RadioButton1NetPromoterLow", "GMSurveyQuestion9RadioButton1Score", "GMSurveyQuestion9RadioButton1Text", "GMSurveyQuestion9RadioButton2Score", "GMSurveyQuestion9RadioButton2Text", "GMSurveyQuestion9RadioButton3Score", "GMSurveyQuestion9RadioButton3Text", "GMSurveyQuestion9RadioButton4Score", "GMSurveyQuestion9RadioButton4Text", "GMSurveyQuestion9RadioButton5Score", "GMSurveyQuestion9RadioButton5Text", "GMSurveyQuestion9RadioButton6Score", "GMSurveyQuestion9RadioButton6Text", "GMSurveyQuestion9RadioButton7Score", "GMSurveyQuestion9RadioButton7Text", "GMSurveyQuestion9RadioButton8Score", "GMSurveyQuestion9RadioButton8Text", "GMSurveyQuestion9RadioButton9Score", "GMSurveyQuestion9RadioButton9Text", "GMSurveyQuestion9Text", "GMSurveyRight", "GMSurveyScrollFrameBottom", "GMSurveyScrollFrameMiddle", "GMSurveyScrollFrameScrollBarThumbTexture", "GMSurveyScrollFrameTop", "GMSurveySubmitButtonText", "GMSurveyTop", "GMSurveyTopFiller", "GMSurveyTopLeft", "GMSurveyTopRight", -- functions: Blizzard_GlyphUI "GlyphFrameGlyph_OnClick", "GlyphFrameGlyph_OnEnter", "GlyphFrameGlyph_OnLeave", "GlyphFrameGlyph_OnLoad", "GlyphFrameGlyph_OnUpdate", "GlyphFrameGlyph_SetGlyphType", "GlyphFrameGlyph_UpdateSlot", "GlyphFrame_OnEnter", "GlyphFrame_OnEvent", "GlyphFrame_OnLeave", "GlyphFrame_OnLoad", "GlyphFrame_OnShow", "GlyphFrame_OnUpdate", "GlyphFrame_Open", "GlyphFrame_PulseGlow", "GlyphFrame_StartSlotAnimation", "GlyphFrame_StopSlotAnimation", "GlyphFrame_Toggle", "GlyphFrame_Update", -- tables: Blizzard_GlyphUI "GLYPH_MAJOR", "GLYPH_MINOR", "GLYPH_SLOTS", "GlyphFrame", "GlyphFrameGlyph1", "GlyphFrameGlyph2", "GlyphFrameGlyph3", "GlyphFrameGlyph4", "GlyphFrameGlyph5", "GlyphFrameGlyph6", "GlyphFrameSparkleFrame", -- frames: Blizzard_GlyphUI "GlyphFrame", "GlyphFrameGlyph1", "GlyphFrameGlyph4", "GlyphFrameGlyph6", "GlyphFrameGlyph2", "GlyphFrameGlyph5", "GlyphFrameGlyph3", "GlyphFrameSparkleFrame", -- widgets: Blizzard_GlyphUI "GlyphFrameBackground", "GlyphFrameGlow", "GlyphFrameGlowPulse", "GlyphFrameGlowPulseIn", "GlyphFrameGlowPulseOut", "GlyphFrameGlyph1Background", "GlyphFrameGlyph1Glyph", "GlyphFrameGlyph1Highlight", "GlyphFrameGlyph1Ring", "GlyphFrameGlyph1Setting", "GlyphFrameGlyph1Shine", "GlyphFrameGlyph2Background", "GlyphFrameGlyph2Glyph", "GlyphFrameGlyph2Highlight", "GlyphFrameGlyph2Ring", "GlyphFrameGlyph2Setting", "GlyphFrameGlyph2Shine", "GlyphFrameGlyph3Background", "GlyphFrameGlyph3Glyph", "GlyphFrameGlyph3Highlight", "GlyphFrameGlyph3Ring", "GlyphFrameGlyph3Setting", "GlyphFrameGlyph3Shine", "GlyphFrameGlyph4Background", "GlyphFrameGlyph4Glyph", "GlyphFrameGlyph4Highlight", "GlyphFrameGlyph4Ring", "GlyphFrameGlyph4Setting", "GlyphFrameGlyph4Shine", "GlyphFrameGlyph5Background", "GlyphFrameGlyph5Glyph", "GlyphFrameGlyph5Highlight", "GlyphFrameGlyph5Ring", "GlyphFrameGlyph5Setting", "GlyphFrameGlyph5Shine", "GlyphFrameGlyph6Background", "GlyphFrameGlyph6Glyph", "GlyphFrameGlyph6Highlight", "GlyphFrameGlyph6Ring", "GlyphFrameGlyph6Setting", "GlyphFrameGlyph6Shine", "GlyphFrameTitleText", -- functions: Blizzard_GuildBankUI "GuildBankFrameTab_OnClick", "GuildBankFrame_ChangeBackground", "GuildBankFrame_ChangeBorder", "GuildBankFrame_ChangeEmblem", "GuildBankFrame_DesaturateColumns", "GuildBankFrame_HideColumns", "GuildBankFrame_OnEvent", "GuildBankFrame_OnLoad", "GuildBankFrame_OnShow", "GuildBankFrame_SelectAvailableTab", "GuildBankFrame_ShowColumns", "GuildBankFrame_Update", "GuildBankFrame_UpdateEmblem", "GuildBankFrame_UpdateLog", "GuildBankFrame_UpdateMoneyLog", "GuildBankFrame_UpdateTabBuyingInfo", "GuildBankFrame_UpdateTabInfo", "GuildBankFrame_UpdateTabard", "GuildBankFrame_UpdateTabs", "GuildBankFrame_UpdateWithdrawMoney", "GuildBankItemButton_OnEnter", "GuildBankItemButton_OnLoad", "GuildBankLogScroll", "GuildBankPopupButton_OnClick", "GuildBankPopupFrame_CancelEdit", "GuildBankPopupFrame_OnShow", "GuildBankPopupFrame_Update", "GuildBankPopupOkayButton_OnClick", "GuildBankTab_OnClick", "HandleModifiedItemClick", "IsTabViewable", "SetItemButtonCount", "SetItemButtonDesaturated", "SetItemButtonNameFrameVertexColor", "SetItemButtonNormalTextureVertexColor", "SetItemButtonSlotVertexColor", "SetItemButtonStock", "SetItemButtonTexture", "SetItemButtonTextureVertexColor", -- tables: Blizzard_GuildBankUI "GuildBankColumn1", "GuildBankColumn1Button1", "GuildBankColumn1Button10", "GuildBankColumn1Button10Cooldown", "GuildBankColumn1Button11", "GuildBankColumn1Button11Cooldown", "GuildBankColumn1Button12", "GuildBankColumn1Button12Cooldown", "GuildBankColumn1Button13", "GuildBankColumn1Button13Cooldown", "GuildBankColumn1Button14", "GuildBankColumn1Button14Cooldown", "GuildBankColumn1Button1Cooldown", "GuildBankColumn1Button2", "GuildBankColumn1Button2Cooldown", "GuildBankColumn1Button3", "GuildBankColumn1Button3Cooldown", "GuildBankColumn1Button4", "GuildBankColumn1Button4Cooldown", "GuildBankColumn1Button5", "GuildBankColumn1Button5Cooldown", "GuildBankColumn1Button6", "GuildBankColumn1Button6Cooldown", "GuildBankColumn1Button7", "GuildBankColumn1Button7Cooldown", "GuildBankColumn1Button8", "GuildBankColumn1Button8Cooldown", "GuildBankColumn1Button9", "GuildBankColumn1Button9Cooldown", "GuildBankColumn2", "GuildBankColumn2Button1", "GuildBankColumn2Button10", "GuildBankColumn2Button10Cooldown", "GuildBankColumn2Button11", "GuildBankColumn2Button11Cooldown", "GuildBankColumn2Button12", "GuildBankColumn2Button12Cooldown", "GuildBankColumn2Button13", "GuildBankColumn2Button13Cooldown", "GuildBankColumn2Button14", "GuildBankColumn2Button14Cooldown", "GuildBankColumn2Button1Cooldown", "GuildBankColumn2Button2", "GuildBankColumn2Button2Cooldown", "GuildBankColumn2Button3", "GuildBankColumn2Button3Cooldown", "GuildBankColumn2Button4", "GuildBankColumn2Button4Cooldown", "GuildBankColumn2Button5", "GuildBankColumn2Button5Cooldown", "GuildBankColumn2Button6", "GuildBankColumn2Button6Cooldown", "GuildBankColumn2Button7", "GuildBankColumn2Button7Cooldown", "GuildBankColumn2Button8", "GuildBankColumn2Button8Cooldown", "GuildBankColumn2Button9", "GuildBankColumn2Button9Cooldown", "GuildBankColumn3", "GuildBankColumn3Button1", "GuildBankColumn3Button10", "GuildBankColumn3Button10Cooldown", "GuildBankColumn3Button11", "GuildBankColumn3Button11Cooldown", "GuildBankColumn3Button12", "GuildBankColumn3Button12Cooldown", "GuildBankColumn3Button13", "GuildBankColumn3Button13Cooldown", "GuildBankColumn3Button14", "GuildBankColumn3Button14Cooldown", "GuildBankColumn3Button1Cooldown", "GuildBankColumn3Button2", "GuildBankColumn3Button2Cooldown", "GuildBankColumn3Button3", "GuildBankColumn3Button3Cooldown", "GuildBankColumn3Button4", "GuildBankColumn3Button4Cooldown", "GuildBankColumn3Button5", "GuildBankColumn3Button5Cooldown", "GuildBankColumn3Button6", "GuildBankColumn3Button6Cooldown", "GuildBankColumn3Button7", "GuildBankColumn3Button7Cooldown", "GuildBankColumn3Button8", "GuildBankColumn3Button8Cooldown", "GuildBankColumn3Button9", "GuildBankColumn3Button9Cooldown", "GuildBankColumn4", "GuildBankColumn4Button1", "GuildBankColumn4Button10", "GuildBankColumn4Button10Cooldown", "GuildBankColumn4Button11", "GuildBankColumn4Button11Cooldown", "GuildBankColumn4Button12", "GuildBankColumn4Button12Cooldown", "GuildBankColumn4Button13", "GuildBankColumn4Button13Cooldown", "GuildBankColumn4Button14", "GuildBankColumn4Button14Cooldown", "GuildBankColumn4Button1Cooldown", "GuildBankColumn4Button2", "GuildBankColumn4Button2Cooldown", "GuildBankColumn4Button3", "GuildBankColumn4Button3Cooldown", "GuildBankColumn4Button4", "GuildBankColumn4Button4Cooldown", "GuildBankColumn4Button5", "GuildBankColumn4Button5Cooldown", "GuildBankColumn4Button6", "GuildBankColumn4Button6Cooldown", "GuildBankColumn4Button7", "GuildBankColumn4Button7Cooldown", "GuildBankColumn4Button8", "GuildBankColumn4Button8Cooldown", "GuildBankColumn4Button9", "GuildBankColumn4Button9Cooldown", "GuildBankColumn5", "GuildBankColumn5Button1", "GuildBankColumn5Button10", "GuildBankColumn5Button10Cooldown", "GuildBankColumn5Button11", "GuildBankColumn5Button11Cooldown", "GuildBankColumn5Button12", "GuildBankColumn5Button12Cooldown", "GuildBankColumn5Button13", "GuildBankColumn5Button13Cooldown", "GuildBankColumn5Button14", "GuildBankColumn5Button14Cooldown", "GuildBankColumn5Button1Cooldown", "GuildBankColumn5Button2", "GuildBankColumn5Button2Cooldown", "GuildBankColumn5Button3", "GuildBankColumn5Button3Cooldown", "GuildBankColumn5Button4", "GuildBankColumn5Button4Cooldown", "GuildBankColumn5Button5", "GuildBankColumn5Button5Cooldown", "GuildBankColumn5Button6", "GuildBankColumn5Button6Cooldown", "GuildBankColumn5Button7", "GuildBankColumn5Button7Cooldown", "GuildBankColumn5Button8", "GuildBankColumn5Button8Cooldown", "GuildBankColumn5Button9", "GuildBankColumn5Button9Cooldown", "GuildBankColumn6", "GuildBankColumn6Button1", "GuildBankColumn6Button10", "GuildBankColumn6Button10Cooldown", "GuildBankColumn6Button11", "GuildBankColumn6Button11Cooldown", "GuildBankColumn6Button12", "GuildBankColumn6Button12Cooldown", "GuildBankColumn6Button13", "GuildBankColumn6Button13Cooldown", "GuildBankColumn6Button14", "GuildBankColumn6Button14Cooldown", "GuildBankColumn6Button1Cooldown", "GuildBankColumn6Button2", "GuildBankColumn6Button2Cooldown", "GuildBankColumn6Button3", "GuildBankColumn6Button3Cooldown", "GuildBankColumn6Button4", "GuildBankColumn6Button4Cooldown", "GuildBankColumn6Button5", "GuildBankColumn6Button5Cooldown", "GuildBankColumn6Button6", "GuildBankColumn6Button6Cooldown", "GuildBankColumn6Button7", "GuildBankColumn6Button7Cooldown", "GuildBankColumn6Button8", "GuildBankColumn6Button8Cooldown", "GuildBankColumn6Button9", "GuildBankColumn6Button9Cooldown", "GuildBankColumn7", "GuildBankColumn7Button1", "GuildBankColumn7Button10", "GuildBankColumn7Button10Cooldown", "GuildBankColumn7Button11", "GuildBankColumn7Button11Cooldown", "GuildBankColumn7Button12", "GuildBankColumn7Button12Cooldown", "GuildBankColumn7Button13", "GuildBankColumn7Button13Cooldown", "GuildBankColumn7Button14", "GuildBankColumn7Button14Cooldown", "GuildBankColumn7Button1Cooldown", "GuildBankColumn7Button2", "GuildBankColumn7Button2Cooldown", "GuildBankColumn7Button3", "GuildBankColumn7Button3Cooldown", "GuildBankColumn7Button4", "GuildBankColumn7Button4Cooldown", "GuildBankColumn7Button5", "GuildBankColumn7Button5Cooldown", "GuildBankColumn7Button6", "GuildBankColumn7Button6Cooldown", "GuildBankColumn7Button7", "GuildBankColumn7Button7Cooldown", "GuildBankColumn7Button8", "GuildBankColumn7Button8Cooldown", "GuildBankColumn7Button9", "GuildBankColumn7Button9Cooldown", "GuildBankEmblemFrame", "GuildBankFrame", "GuildBankFrameBuyInfo", "GuildBankFrameDepositButton", "GuildBankFrameLog", "GuildBankFramePurchaseButton", "GuildBankFrameTab1", "GuildBankFrameTab2", "GuildBankFrameTab3", "GuildBankFrameTab4", "GuildBankFrameTabCostMoneyFrame", "GuildBankFrameTabCostMoneyFrameCopperButton", "GuildBankFrameTabCostMoneyFrameGoldButton", "GuildBankFrameTabCostMoneyFrameSilverButton", "GuildBankFrameWithdrawButton", "GuildBankInfo", "GuildBankInfoSaveButton", "GuildBankInfoScrollFrame", "GuildBankInfoScrollFrameScrollBar", "GuildBankInfoScrollFrameScrollBarScrollDownButton", "GuildBankInfoScrollFrameScrollBarScrollUpButton", "GuildBankMessageFrame", "GuildBankMoneyFrame", "GuildBankMoneyFrameCopperButton", "GuildBankMoneyFrameGoldButton", "GuildBankMoneyFrameSilverButton", "GuildBankPopupButton1", "GuildBankPopupButton10", "GuildBankPopupButton11", "GuildBankPopupButton12", "GuildBankPopupButton13", "GuildBankPopupButton14", "GuildBankPopupButton15", "GuildBankPopupButton16", "GuildBankPopupButton2", "GuildBankPopupButton3", "GuildBankPopupButton4", "GuildBankPopupButton5", "GuildBankPopupButton6", "GuildBankPopupButton7", "GuildBankPopupButton8", "GuildBankPopupButton9", "GuildBankPopupCancelButton", "GuildBankPopupEditBox", "GuildBankPopupFrame", "GuildBankPopupOkayButton", "GuildBankPopupScrollFrame", "GuildBankPopupScrollFrameScrollBar", "GuildBankPopupScrollFrameScrollBarScrollDownButton", "GuildBankPopupScrollFrameScrollBarScrollUpButton", "GuildBankPopupScrollFrameScrollChildFrame", "GuildBankTab1", "GuildBankTab1Button", "GuildBankTab2", "GuildBankTab2Button", "GuildBankTab3", "GuildBankTab3Button", "GuildBankTab4", "GuildBankTab4Button", "GuildBankTab5", "GuildBankTab5Button", "GuildBankTab6", "GuildBankTab6Button", "GuildBankTabInfoEditBox", "GuildBankTransactionsScrollFrame", "GuildBankTransactionsScrollFrameScrollBar", "GuildBankTransactionsScrollFrameScrollBarScrollDownButton", "GuildBankTransactionsScrollFrameScrollBarScrollUpButton", "GuildBankTransactionsScrollFrameScrollChildFrame", "GuildBankWithdrawMoneyFrame", "GuildBankWithdrawMoneyFrameCopperButton", "GuildBankWithdrawMoneyFrameGoldButton", "GuildBankWithdrawMoneyFrameSilverButton", -- frames: Blizzard_GuildBankUI "GuildBankFrame", "GuildBankEmblemFrame", "GuildBankColumn1", "GuildBankColumn1Button1", "GuildBankColumn1Button1Cooldown", "GuildBankColumn1Button2", "GuildBankColumn1Button2Cooldown", "GuildBankColumn1Button3", "GuildBankColumn1Button3Cooldown", "GuildBankColumn1Button4", "GuildBankColumn1Button4Cooldown", "GuildBankColumn1Button5", "GuildBankColumn1Button5Cooldown", "GuildBankColumn1Button6", "GuildBankColumn1Button6Cooldown", "GuildBankColumn1Button7", "GuildBankColumn1Button7Cooldown", "GuildBankColumn1Button8", "GuildBankColumn1Button8Cooldown", "GuildBankColumn1Button9", "GuildBankColumn1Button9Cooldown", "GuildBankColumn1Button10", "GuildBankColumn1Button10Cooldown", "GuildBankColumn1Button11", "GuildBankColumn1Button11Cooldown", "GuildBankColumn1Button12", "GuildBankColumn1Button12Cooldown", "GuildBankColumn1Button13", "GuildBankColumn1Button13Cooldown", "GuildBankColumn1Button14", "GuildBankColumn1Button14Cooldown", "GuildBankColumn2", "GuildBankColumn2Button1", "GuildBankColumn2Button1Cooldown", "GuildBankColumn2Button2", "GuildBankColumn2Button2Cooldown", "GuildBankColumn2Button3", "GuildBankColumn2Button3Cooldown", "GuildBankColumn2Button4", "GuildBankColumn2Button4Cooldown", "GuildBankColumn2Button5", "GuildBankColumn2Button5Cooldown", "GuildBankColumn2Button6", "GuildBankColumn2Button6Cooldown", "GuildBankColumn2Button7", "GuildBankColumn2Button7Cooldown", "GuildBankColumn2Button8", "GuildBankColumn2Button8Cooldown", "GuildBankColumn2Button9", "GuildBankColumn2Button9Cooldown", "GuildBankColumn2Button10", "GuildBankColumn2Button10Cooldown", "GuildBankColumn2Button11", "GuildBankColumn2Button11Cooldown", "GuildBankColumn2Button12", "GuildBankColumn2Button12Cooldown", "GuildBankColumn2Button13", "GuildBankColumn2Button13Cooldown", "GuildBankColumn2Button14", "GuildBankColumn2Button14Cooldown", "GuildBankColumn3", "GuildBankColumn3Button1", "GuildBankColumn3Button1Cooldown", "GuildBankColumn3Button2", "GuildBankColumn3Button2Cooldown", "GuildBankColumn3Button3", "GuildBankColumn3Button3Cooldown", "GuildBankColumn3Button4", "GuildBankColumn3Button4Cooldown", "GuildBankColumn3Button5", "GuildBankColumn3Button5Cooldown", "GuildBankColumn3Button6", "GuildBankColumn3Button6Cooldown", "GuildBankColumn3Button7", "GuildBankColumn3Button7Cooldown", "GuildBankColumn3Button8", "GuildBankColumn3Button8Cooldown", "GuildBankColumn3Button9", "GuildBankColumn3Button9Cooldown", "GuildBankColumn3Button10", "GuildBankColumn3Button10Cooldown", "GuildBankColumn3Button11", "GuildBankColumn3Button11Cooldown", "GuildBankColumn3Button12", "GuildBankColumn3Button12Cooldown", "GuildBankColumn3Button13", "GuildBankColumn3Button13Cooldown", "GuildBankColumn3Button14", "GuildBankColumn3Button14Cooldown", "GuildBankColumn4", "GuildBankColumn4Button1", "GuildBankColumn4Button1Cooldown", "GuildBankColumn4Button2", "GuildBankColumn4Button2Cooldown", "GuildBankColumn4Button3", "GuildBankColumn4Button3Cooldown", "GuildBankColumn4Button4", "GuildBankColumn4Button4Cooldown", "GuildBankColumn4Button5", "GuildBankColumn4Button5Cooldown", "GuildBankColumn4Button6", "GuildBankColumn4Button6Cooldown", "GuildBankColumn4Button7", "GuildBankColumn4Button7Cooldown", "GuildBankColumn4Button8", "GuildBankColumn4Button8Cooldown", "GuildBankColumn4Button9", "GuildBankColumn4Button9Cooldown", "GuildBankColumn4Button10", "GuildBankColumn4Button10Cooldown", "GuildBankColumn4Button11", "GuildBankColumn4Button11Cooldown", "GuildBankColumn4Button12", "GuildBankColumn4Button12Cooldown", "GuildBankColumn4Button13", "GuildBankColumn4Button13Cooldown", "GuildBankColumn4Button14", "GuildBankColumn4Button14Cooldown", "GuildBankColumn5", "GuildBankColumn5Button1", "GuildBankColumn5Button1Cooldown", "GuildBankColumn5Button2", "GuildBankColumn5Button2Cooldown", "GuildBankColumn5Button3", "GuildBankColumn5Button3Cooldown", "GuildBankColumn5Button4", "GuildBankColumn5Button4Cooldown", "GuildBankColumn5Button5", "GuildBankColumn5Button5Cooldown", "GuildBankColumn5Button6", "GuildBankColumn5Button6Cooldown", "GuildBankColumn5Button7", "GuildBankColumn5Button7Cooldown", "GuildBankColumn5Button8", "GuildBankColumn5Button8Cooldown", "GuildBankColumn5Button9", "GuildBankColumn5Button9Cooldown", "GuildBankColumn5Button10", "GuildBankColumn5Button10Cooldown", "GuildBankColumn5Button11", "GuildBankColumn5Button11Cooldown", "GuildBankColumn5Button12", "GuildBankColumn5Button12Cooldown", "GuildBankColumn5Button13", "GuildBankColumn5Button13Cooldown", "GuildBankColumn5Button14", "GuildBankColumn5Button14Cooldown", "GuildBankColumn6", "GuildBankColumn6Button1", "GuildBankColumn6Button1Cooldown", "GuildBankColumn6Button2", "GuildBankColumn6Button2Cooldown", "GuildBankColumn6Button3", "GuildBankColumn6Button3Cooldown", "GuildBankColumn6Button4", "GuildBankColumn6Button4Cooldown", "GuildBankColumn6Button5", "GuildBankColumn6Button5Cooldown", "GuildBankColumn6Button6", "GuildBankColumn6Button6Cooldown", "GuildBankColumn6Button7", "GuildBankColumn6Button7Cooldown", "GuildBankColumn6Button8", "GuildBankColumn6Button8Cooldown", "GuildBankColumn6Button9", "GuildBankColumn6Button9Cooldown", "GuildBankColumn6Button10", "GuildBankColumn6Button10Cooldown", "GuildBankColumn6Button11", "GuildBankColumn6Button11Cooldown", "GuildBankColumn6Button12", "GuildBankColumn6Button12Cooldown", "GuildBankColumn6Button13", "GuildBankColumn6Button13Cooldown", "GuildBankColumn6Button14", "GuildBankColumn6Button14Cooldown", "GuildBankColumn7", "GuildBankColumn7Button1", "GuildBankColumn7Button1Cooldown", "GuildBankColumn7Button2", "GuildBankColumn7Button2Cooldown", "GuildBankColumn7Button3", "GuildBankColumn7Button3Cooldown", "GuildBankColumn7Button4", "GuildBankColumn7Button4Cooldown", "GuildBankColumn7Button5", "GuildBankColumn7Button5Cooldown", "GuildBankColumn7Button6", "GuildBankColumn7Button6Cooldown", "GuildBankColumn7Button7", "GuildBankColumn7Button7Cooldown", "GuildBankColumn7Button8", "GuildBankColumn7Button8Cooldown", "GuildBankColumn7Button9", "GuildBankColumn7Button9Cooldown", "GuildBankColumn7Button10", "GuildBankColumn7Button10Cooldown", "GuildBankColumn7Button11", "GuildBankColumn7Button11Cooldown", "GuildBankColumn7Button12", "GuildBankColumn7Button12Cooldown", "GuildBankColumn7Button13", "GuildBankColumn7Button13Cooldown", "GuildBankColumn7Button14", "GuildBankColumn7Button14Cooldown", "GuildBankMoneyFrame", "GuildBankMoneyFrameCopperButton", "GuildBankMoneyFrameSilverButton", "GuildBankMoneyFrameGoldButton", "GuildBankWithdrawMoneyFrame", "GuildBankWithdrawMoneyFrameCopperButton", "GuildBankWithdrawMoneyFrameSilverButton", "GuildBankWithdrawMoneyFrameGoldButton", "GuildBankFrameDepositButton", "GuildBankFrameWithdrawButton", "GuildBankFrameTab1", "GuildBankFrameTab2", "GuildBankFrameTab3", "GuildBankFrameTab4", "GuildBankTab1", "GuildBankTab1Button", "GuildBankTab2", "GuildBankTab2Button", "GuildBankTab3", "GuildBankTab3Button", "GuildBankTab4", "GuildBankTab4Button", "GuildBankTab5", "GuildBankTab5Button", "GuildBankTab6", "GuildBankTab6Button", "GuildBankFrameBuyInfo", "GuildBankFrameTabCostMoneyFrame", "GuildBankFrameTabCostMoneyFrameCopperButton", "GuildBankFrameTabCostMoneyFrameSilverButton", "GuildBankFrameTabCostMoneyFrameGoldButton", "GuildBankFramePurchaseButton", "GuildBankFrameLog", "GuildBankMessageFrame", "GuildBankTransactionsScrollFrame", "GuildBankTransactionsScrollFrameScrollChildFrame", "GuildBankTransactionsScrollFrameScrollBar", "GuildBankTransactionsScrollFrameScrollBarScrollUpButton", "GuildBankTransactionsScrollFrameScrollBarScrollDownButton", "GuildBankInfo", "GuildBankInfoSaveButton", "GuildBankInfoScrollFrame", "GuildBankTabInfoEditBox", "GuildBankInfoScrollFrameScrollBar", "GuildBankInfoScrollFrameScrollBarScrollUpButton", "GuildBankInfoScrollFrameScrollBarScrollDownButton", "GuildBankPopupFrame", "GuildBankPopupEditBox", "GuildBankPopupScrollFrame", "GuildBankPopupScrollFrameScrollChildFrame", "GuildBankPopupScrollFrameScrollBar", "GuildBankPopupScrollFrameScrollBarScrollUpButton", "GuildBankPopupScrollFrameScrollBarScrollDownButton", "GuildBankPopupButton1", "GuildBankPopupButton2", "GuildBankPopupButton3", "GuildBankPopupButton4", "GuildBankPopupButton5", "GuildBankPopupButton6", "GuildBankPopupButton7", "GuildBankPopupButton8", "GuildBankPopupButton9", "GuildBankPopupButton10", "GuildBankPopupButton11", "GuildBankPopupButton12", "GuildBankPopupButton13", "GuildBankPopupButton14", "GuildBankPopupButton15", "GuildBankPopupButton16", "GuildBankPopupCancelButton", "GuildBankPopupOkayButton", -- widgets: Blizzard_GuildBankUI "GuildBankColumn1Background", "GuildBankColumn1Button10Count", "GuildBankColumn1Button10IconTexture", "GuildBankColumn1Button10NormalTexture", "GuildBankColumn1Button10Stock", "GuildBankColumn1Button11Count", "GuildBankColumn1Button11IconTexture", "GuildBankColumn1Button11NormalTexture", "GuildBankColumn1Button11Stock", "GuildBankColumn1Button12Count", "GuildBankColumn1Button12IconTexture", "GuildBankColumn1Button12NormalTexture", "GuildBankColumn1Button12Stock", "GuildBankColumn1Button13Count", "GuildBankColumn1Button13IconTexture", "GuildBankColumn1Button13NormalTexture", "GuildBankColumn1Button13Stock", "GuildBankColumn1Button14Count", "GuildBankColumn1Button14IconTexture", "GuildBankColumn1Button14NormalTexture", "GuildBankColumn1Button14Stock", "GuildBankColumn1Button1Count", "GuildBankColumn1Button1IconTexture", "GuildBankColumn1Button1NormalTexture", "GuildBankColumn1Button1Stock", "GuildBankColumn1Button2Count", "GuildBankColumn1Button2IconTexture", "GuildBankColumn1Button2NormalTexture", "GuildBankColumn1Button2Stock", "GuildBankColumn1Button3Count", "GuildBankColumn1Button3IconTexture", "GuildBankColumn1Button3NormalTexture", "GuildBankColumn1Button3Stock", "GuildBankColumn1Button4Count", "GuildBankColumn1Button4IconTexture", "GuildBankColumn1Button4NormalTexture", "GuildBankColumn1Button4Stock", "GuildBankColumn1Button5Count", "GuildBankColumn1Button5IconTexture", "GuildBankColumn1Button5NormalTexture", "GuildBankColumn1Button5Stock", "GuildBankColumn1Button6Count", "GuildBankColumn1Button6IconTexture", "GuildBankColumn1Button6NormalTexture", "GuildBankColumn1Button6Stock", "GuildBankColumn1Button7Count", "GuildBankColumn1Button7IconTexture", "GuildBankColumn1Button7NormalTexture", "GuildBankColumn1Button7Stock", "GuildBankColumn1Button8Count", "GuildBankColumn1Button8IconTexture", "GuildBankColumn1Button8NormalTexture", "GuildBankColumn1Button8Stock", "GuildBankColumn1Button9Count", "GuildBankColumn1Button9IconTexture", "GuildBankColumn1Button9NormalTexture", "GuildBankColumn1Button9Stock", "GuildBankColumn2Background", "GuildBankColumn2Button10Count", "GuildBankColumn2Button10IconTexture", "GuildBankColumn2Button10NormalTexture", "GuildBankColumn2Button10Stock", "GuildBankColumn2Button11Count", "GuildBankColumn2Button11IconTexture", "GuildBankColumn2Button11NormalTexture", "GuildBankColumn2Button11Stock", "GuildBankColumn2Button12Count", "GuildBankColumn2Button12IconTexture", "GuildBankColumn2Button12NormalTexture", "GuildBankColumn2Button12Stock", "GuildBankColumn2Button13Count", "GuildBankColumn2Button13IconTexture", "GuildBankColumn2Button13NormalTexture", "GuildBankColumn2Button13Stock", "GuildBankColumn2Button14Count", "GuildBankColumn2Button14IconTexture", "GuildBankColumn2Button14NormalTexture", "GuildBankColumn2Button14Stock", "GuildBankColumn2Button1Count", "GuildBankColumn2Button1IconTexture", "GuildBankColumn2Button1NormalTexture", "GuildBankColumn2Button1Stock", "GuildBankColumn2Button2Count", "GuildBankColumn2Button2IconTexture", "GuildBankColumn2Button2NormalTexture", "GuildBankColumn2Button2Stock", "GuildBankColumn2Button3Count", "GuildBankColumn2Button3IconTexture", "GuildBankColumn2Button3NormalTexture", "GuildBankColumn2Button3Stock", "GuildBankColumn2Button4Count", "GuildBankColumn2Button4IconTexture", "GuildBankColumn2Button4NormalTexture", "GuildBankColumn2Button4Stock", "GuildBankColumn2Button5Count", "GuildBankColumn2Button5IconTexture", "GuildBankColumn2Button5NormalTexture", "GuildBankColumn2Button5Stock", "GuildBankColumn2Button6Count", "GuildBankColumn2Button6IconTexture", "GuildBankColumn2Button6NormalTexture", "GuildBankColumn2Button6Stock", "GuildBankColumn2Button7Count", "GuildBankColumn2Button7IconTexture", "GuildBankColumn2Button7NormalTexture", "GuildBankColumn2Button7Stock", "GuildBankColumn2Button8Count", "GuildBankColumn2Button8IconTexture", "GuildBankColumn2Button8NormalTexture", "GuildBankColumn2Button8Stock", "GuildBankColumn2Button9Count", "GuildBankColumn2Button9IconTexture", "GuildBankColumn2Button9NormalTexture", "GuildBankColumn2Button9Stock", "GuildBankColumn3Background", "GuildBankColumn3Button10Count", "GuildBankColumn3Button10IconTexture", "GuildBankColumn3Button10NormalTexture", "GuildBankColumn3Button10Stock", "GuildBankColumn3Button11Count", "GuildBankColumn3Button11IconTexture", "GuildBankColumn3Button11NormalTexture", "GuildBankColumn3Button11Stock", "GuildBankColumn3Button12Count", "GuildBankColumn3Button12IconTexture", "GuildBankColumn3Button12NormalTexture", "GuildBankColumn3Button12Stock", "GuildBankColumn3Button13Count", "GuildBankColumn3Button13IconTexture", "GuildBankColumn3Button13NormalTexture", "GuildBankColumn3Button13Stock", "GuildBankColumn3Button14Count", "GuildBankColumn3Button14IconTexture", "GuildBankColumn3Button14NormalTexture", "GuildBankColumn3Button14Stock", "GuildBankColumn3Button1Count", "GuildBankColumn3Button1IconTexture", "GuildBankColumn3Button1NormalTexture", "GuildBankColumn3Button1Stock", "GuildBankColumn3Button2Count", "GuildBankColumn3Button2IconTexture", "GuildBankColumn3Button2NormalTexture", "GuildBankColumn3Button2Stock", "GuildBankColumn3Button3Count", "GuildBankColumn3Button3IconTexture", "GuildBankColumn3Button3NormalTexture", "GuildBankColumn3Button3Stock", "GuildBankColumn3Button4Count", "GuildBankColumn3Button4IconTexture", "GuildBankColumn3Button4NormalTexture", "GuildBankColumn3Button4Stock", "GuildBankColumn3Button5Count", "GuildBankColumn3Button5IconTexture", "GuildBankColumn3Button5NormalTexture", "GuildBankColumn3Button5Stock", "GuildBankColumn3Button6Count", "GuildBankColumn3Button6IconTexture", "GuildBankColumn3Button6NormalTexture", "GuildBankColumn3Button6Stock", "GuildBankColumn3Button7Count", "GuildBankColumn3Button7IconTexture", "GuildBankColumn3Button7NormalTexture", "GuildBankColumn3Button7Stock", "GuildBankColumn3Button8Count", "GuildBankColumn3Button8IconTexture", "GuildBankColumn3Button8NormalTexture", "GuildBankColumn3Button8Stock", "GuildBankColumn3Button9Count", "GuildBankColumn3Button9IconTexture", "GuildBankColumn3Button9NormalTexture", "GuildBankColumn3Button9Stock", "GuildBankColumn4Background", "GuildBankColumn4Button10Count", "GuildBankColumn4Button10IconTexture", "GuildBankColumn4Button10NormalTexture", "GuildBankColumn4Button10Stock", "GuildBankColumn4Button11Count", "GuildBankColumn4Button11IconTexture", "GuildBankColumn4Button11NormalTexture", "GuildBankColumn4Button11Stock", "GuildBankColumn4Button12Count", "GuildBankColumn4Button12IconTexture", "GuildBankColumn4Button12NormalTexture", "GuildBankColumn4Button12Stock", "GuildBankColumn4Button13Count", "GuildBankColumn4Button13IconTexture", "GuildBankColumn4Button13NormalTexture", "GuildBankColumn4Button13Stock", "GuildBankColumn4Button14Count", "GuildBankColumn4Button14IconTexture", "GuildBankColumn4Button14NormalTexture", "GuildBankColumn4Button14Stock", "GuildBankColumn4Button1Count", "GuildBankColumn4Button1IconTexture", "GuildBankColumn4Button1NormalTexture", "GuildBankColumn4Button1Stock", "GuildBankColumn4Button2Count", "GuildBankColumn4Button2IconTexture", "GuildBankColumn4Button2NormalTexture", "GuildBankColumn4Button2Stock", "GuildBankColumn4Button3Count", "GuildBankColumn4Button3IconTexture", "GuildBankColumn4Button3NormalTexture", "GuildBankColumn4Button3Stock", "GuildBankColumn4Button4Count", "GuildBankColumn4Button4IconTexture", "GuildBankColumn4Button4NormalTexture", "GuildBankColumn4Button4Stock", "GuildBankColumn4Button5Count", "GuildBankColumn4Button5IconTexture", "GuildBankColumn4Button5NormalTexture", "GuildBankColumn4Button5Stock", "GuildBankColumn4Button6Count", "GuildBankColumn4Button6IconTexture", "GuildBankColumn4Button6NormalTexture", "GuildBankColumn4Button6Stock", "GuildBankColumn4Button7Count", "GuildBankColumn4Button7IconTexture", "GuildBankColumn4Button7NormalTexture", "GuildBankColumn4Button7Stock", "GuildBankColumn4Button8Count", "GuildBankColumn4Button8IconTexture", "GuildBankColumn4Button8NormalTexture", "GuildBankColumn4Button8Stock", "GuildBankColumn4Button9Count", "GuildBankColumn4Button9IconTexture", "GuildBankColumn4Button9NormalTexture", "GuildBankColumn4Button9Stock", "GuildBankColumn5Background", "GuildBankColumn5Button10Count", "GuildBankColumn5Button10IconTexture", "GuildBankColumn5Button10NormalTexture", "GuildBankColumn5Button10Stock", "GuildBankColumn5Button11Count", "GuildBankColumn5Button11IconTexture", "GuildBankColumn5Button11NormalTexture", "GuildBankColumn5Button11Stock", "GuildBankColumn5Button12Count", "GuildBankColumn5Button12IconTexture", "GuildBankColumn5Button12NormalTexture", "GuildBankColumn5Button12Stock", "GuildBankColumn5Button13Count", "GuildBankColumn5Button13IconTexture", "GuildBankColumn5Button13NormalTexture", "GuildBankColumn5Button13Stock", "GuildBankColumn5Button14Count", "GuildBankColumn5Button14IconTexture", "GuildBankColumn5Button14NormalTexture", "GuildBankColumn5Button14Stock", "GuildBankColumn5Button1Count", "GuildBankColumn5Button1IconTexture", "GuildBankColumn5Button1NormalTexture", "GuildBankColumn5Button1Stock", "GuildBankColumn5Button2Count", "GuildBankColumn5Button2IconTexture", "GuildBankColumn5Button2NormalTexture", "GuildBankColumn5Button2Stock", "GuildBankColumn5Button3Count", "GuildBankColumn5Button3IconTexture", "GuildBankColumn5Button3NormalTexture", "GuildBankColumn5Button3Stock", "GuildBankColumn5Button4Count", "GuildBankColumn5Button4IconTexture", "GuildBankColumn5Button4NormalTexture", "GuildBankColumn5Button4Stock", "GuildBankColumn5Button5Count", "GuildBankColumn5Button5IconTexture", "GuildBankColumn5Button5NormalTexture", "GuildBankColumn5Button5Stock", "GuildBankColumn5Button6Count", "GuildBankColumn5Button6IconTexture", "GuildBankColumn5Button6NormalTexture", "GuildBankColumn5Button6Stock", "GuildBankColumn5Button7Count", "GuildBankColumn5Button7IconTexture", "GuildBankColumn5Button7NormalTexture", "GuildBankColumn5Button7Stock", "GuildBankColumn5Button8Count", "GuildBankColumn5Button8IconTexture", "GuildBankColumn5Button8NormalTexture", "GuildBankColumn5Button8Stock", "GuildBankColumn5Button9Count", "GuildBankColumn5Button9IconTexture", "GuildBankColumn5Button9NormalTexture", "GuildBankColumn5Button9Stock", "GuildBankColumn6Background", "GuildBankColumn6Button10Count", "GuildBankColumn6Button10IconTexture", "GuildBankColumn6Button10NormalTexture", "GuildBankColumn6Button10Stock", "GuildBankColumn6Button11Count", "GuildBankColumn6Button11IconTexture", "GuildBankColumn6Button11NormalTexture", "GuildBankColumn6Button11Stock", "GuildBankColumn6Button12Count", "GuildBankColumn6Button12IconTexture", "GuildBankColumn6Button12NormalTexture", "GuildBankColumn6Button12Stock", "GuildBankColumn6Button13Count", "GuildBankColumn6Button13IconTexture", "GuildBankColumn6Button13NormalTexture", "GuildBankColumn6Button13Stock", "GuildBankColumn6Button14Count", "GuildBankColumn6Button14IconTexture", "GuildBankColumn6Button14NormalTexture", "GuildBankColumn6Button14Stock", "GuildBankColumn6Button1Count", "GuildBankColumn6Button1IconTexture", "GuildBankColumn6Button1NormalTexture", "GuildBankColumn6Button1Stock", "GuildBankColumn6Button2Count", "GuildBankColumn6Button2IconTexture", "GuildBankColumn6Button2NormalTexture", "GuildBankColumn6Button2Stock", "GuildBankColumn6Button3Count", "GuildBankColumn6Button3IconTexture", "GuildBankColumn6Button3NormalTexture", "GuildBankColumn6Button3Stock", "GuildBankColumn6Button4Count", "GuildBankColumn6Button4IconTexture", "GuildBankColumn6Button4NormalTexture", "GuildBankColumn6Button4Stock", "GuildBankColumn6Button5Count", "GuildBankColumn6Button5IconTexture", "GuildBankColumn6Button5NormalTexture", "GuildBankColumn6Button5Stock", "GuildBankColumn6Button6Count", "GuildBankColumn6Button6IconTexture", "GuildBankColumn6Button6NormalTexture", "GuildBankColumn6Button6Stock", "GuildBankColumn6Button7Count", "GuildBankColumn6Button7IconTexture", "GuildBankColumn6Button7NormalTexture", "GuildBankColumn6Button7Stock", "GuildBankColumn6Button8Count", "GuildBankColumn6Button8IconTexture", "GuildBankColumn6Button8NormalTexture", "GuildBankColumn6Button8Stock", "GuildBankColumn6Button9Count", "GuildBankColumn6Button9IconTexture", "GuildBankColumn6Button9NormalTexture", "GuildBankColumn6Button9Stock", "GuildBankColumn7Background", "GuildBankColumn7Button10Count", "GuildBankColumn7Button10IconTexture", "GuildBankColumn7Button10NormalTexture", "GuildBankColumn7Button10Stock", "GuildBankColumn7Button11Count", "GuildBankColumn7Button11IconTexture", "GuildBankColumn7Button11NormalTexture", "GuildBankColumn7Button11Stock", "GuildBankColumn7Button12Count", "GuildBankColumn7Button12IconTexture", "GuildBankColumn7Button12NormalTexture", "GuildBankColumn7Button12Stock", "GuildBankColumn7Button13Count", "GuildBankColumn7Button13IconTexture", "GuildBankColumn7Button13NormalTexture", "GuildBankColumn7Button13Stock", "GuildBankColumn7Button14Count", "GuildBankColumn7Button14IconTexture", "GuildBankColumn7Button14NormalTexture", "GuildBankColumn7Button14Stock", "GuildBankColumn7Button1Count", "GuildBankColumn7Button1IconTexture", "GuildBankColumn7Button1NormalTexture", "GuildBankColumn7Button1Stock", "GuildBankColumn7Button2Count", "GuildBankColumn7Button2IconTexture", "GuildBankColumn7Button2NormalTexture", "GuildBankColumn7Button2Stock", "GuildBankColumn7Button3Count", "GuildBankColumn7Button3IconTexture", "GuildBankColumn7Button3NormalTexture", "GuildBankColumn7Button3Stock", "GuildBankColumn7Button4Count", "GuildBankColumn7Button4IconTexture", "GuildBankColumn7Button4NormalTexture", "GuildBankColumn7Button4Stock", "GuildBankColumn7Button5Count", "GuildBankColumn7Button5IconTexture", "GuildBankColumn7Button5NormalTexture", "GuildBankColumn7Button5Stock", "GuildBankColumn7Button6Count", "GuildBankColumn7Button6IconTexture", "GuildBankColumn7Button6NormalTexture", "GuildBankColumn7Button6Stock", "GuildBankColumn7Button7Count", "GuildBankColumn7Button7IconTexture", "GuildBankColumn7Button7NormalTexture", "GuildBankColumn7Button7Stock", "GuildBankColumn7Button8Count", "GuildBankColumn7Button8IconTexture", "GuildBankColumn7Button8NormalTexture", "GuildBankColumn7Button8Stock", "GuildBankColumn7Button9Count", "GuildBankColumn7Button9IconTexture", "GuildBankColumn7Button9NormalTexture", "GuildBankColumn7Button9Stock", "GuildBankEmblemBL", "GuildBankEmblemBR", "GuildBankEmblemBackgroundBL", "GuildBankEmblemBackgroundBR", "GuildBankEmblemBackgroundUL", "GuildBankEmblemBackgroundUR", "GuildBankEmblemBorderBL", "GuildBankEmblemBorderBR", "GuildBankEmblemBorderUL", "GuildBankEmblemBorderUR", "GuildBankEmblemFrameLeft", "GuildBankEmblemFrameRight", "GuildBankEmblemUL", "GuildBankEmblemUR", "GuildBankErrorMessage", "GuildBankFrameBuyInfoNumTabsPurchasedText", "GuildBankFrameBuyInfoText", "GuildBankFrameDepositButtonText", "GuildBankFrameLeft", "GuildBankFramePortrait", "GuildBankFramePurchaseButtonText", "GuildBankFrameRight", "GuildBankFrameTab1HighlightTexture", "GuildBankFrameTab1Left", "GuildBankFrameTab1LeftDisabled", "GuildBankFrameTab1Middle", "GuildBankFrameTab1MiddleDisabled", "GuildBankFrameTab1Right", "GuildBankFrameTab1RightDisabled", "GuildBankFrameTab1Text", "GuildBankFrameTab2HighlightTexture", "GuildBankFrameTab2Left", "GuildBankFrameTab2LeftDisabled", "GuildBankFrameTab2Middle", "GuildBankFrameTab2MiddleDisabled", "GuildBankFrameTab2Right", "GuildBankFrameTab2RightDisabled", "GuildBankFrameTab2Text", "GuildBankFrameTab3HighlightTexture", "GuildBankFrameTab3Left", "GuildBankFrameTab3LeftDisabled", "GuildBankFrameTab3Middle", "GuildBankFrameTab3MiddleDisabled", "GuildBankFrameTab3Right", "GuildBankFrameTab3RightDisabled", "GuildBankFrameTab3Text", "GuildBankFrameTab4HighlightTexture", "GuildBankFrameTab4Left", "GuildBankFrameTab4LeftDisabled", "GuildBankFrameTab4Middle", "GuildBankFrameTab4MiddleDisabled", "GuildBankFrameTab4Right", "GuildBankFrameTab4RightDisabled", "GuildBankFrameTab4Text", "GuildBankFrameTabCost", "GuildBankFrameTabCostMoneyFrameCopperButtonText", "GuildBankFrameTabCostMoneyFrameGoldButtonText", "GuildBankFrameTabCostMoneyFrameSilverButtonText", "GuildBankFrameWithdrawButtonText", "GuildBankInfoSaveButtonText", "GuildBankInfoScrollFrameScrollBarThumbTexture", "GuildBankLimitLabel", "GuildBankMoneyFrameCopperButtonText", "GuildBankMoneyFrameGoldButtonText", "GuildBankMoneyFrameSilverButtonText", "GuildBankMoneyLimitLabel", "GuildBankMoneyUnlimitedLabel", "GuildBankPopupButton10Icon", "GuildBankPopupButton10Name", "GuildBankPopupButton11Icon", "GuildBankPopupButton11Name", "GuildBankPopupButton12Icon", "GuildBankPopupButton12Name", "GuildBankPopupButton13Icon", "GuildBankPopupButton13Name", "GuildBankPopupButton14Icon", "GuildBankPopupButton14Name", "GuildBankPopupButton15Icon", "GuildBankPopupButton15Name", "GuildBankPopupButton16Icon", "GuildBankPopupButton16Name", "GuildBankPopupButton1Icon", "GuildBankPopupButton1Name", "GuildBankPopupButton2Icon", "GuildBankPopupButton2Name", "GuildBankPopupButton3Icon", "GuildBankPopupButton3Name", "GuildBankPopupButton4Icon", "GuildBankPopupButton4Name", "GuildBankPopupButton5Icon", "GuildBankPopupButton5Name", "GuildBankPopupButton6Icon", "GuildBankPopupButton6Name", "GuildBankPopupButton7Icon", "GuildBankPopupButton7Name", "GuildBankPopupButton8Icon", "GuildBankPopupButton8Name", "GuildBankPopupButton9Icon", "GuildBankPopupButton9Name", "GuildBankPopupCancelButtonText", "GuildBankPopupFrameBottomLeft", "GuildBankPopupFrameTopLeft", "GuildBankPopupNameLeft", "GuildBankPopupNameMiddle", "GuildBankPopupNameRight", "GuildBankPopupOkayButtonText", "GuildBankPopupScrollFrameScrollBarThumbTexture", "GuildBankTab1ButtonCount", "GuildBankTab1ButtonIconTexture", "GuildBankTab1ButtonNormalTexture", "GuildBankTab2ButtonCount", "GuildBankTab2ButtonIconTexture", "GuildBankTab2ButtonNormalTexture", "GuildBankTab3ButtonCount", "GuildBankTab3ButtonIconTexture", "GuildBankTab3ButtonNormalTexture", "GuildBankTab4ButtonCount", "GuildBankTab4ButtonIconTexture", "GuildBankTab4ButtonNormalTexture", "GuildBankTab5ButtonCount", "GuildBankTab5ButtonIconTexture", "GuildBankTab5ButtonNormalTexture", "GuildBankTab6ButtonCount", "GuildBankTab6ButtonIconTexture", "GuildBankTab6ButtonNormalTexture", "GuildBankTabLimitBackground", "GuildBankTabLimitBackgroundLeft", "GuildBankTabLimitBackgroundRight", "GuildBankTabTitle", "GuildBankTabTitleBackground", "GuildBankTabTitleBackgroundLeft", "GuildBankTabTitleBackgroundRight", "GuildBankTransactionsScrollFrameScrollBarThumbTexture", "GuildBankWithdrawMoneyFrameCopperButtonText", "GuildBankWithdrawMoneyFrameGoldButtonText", "GuildBankWithdrawMoneyFrameSilverButtonText", -- functions: Blizzard_InspectUI "InspectFrameTab_OnClick", "InspectFrame_OnEvent", "InspectFrame_OnHide", "InspectFrame_OnLoad", "InspectFrame_OnShow", "InspectFrame_OnUpdate", "InspectFrame_Show", "InspectFrame_UnitChanged", "InspectFrame_UpdateTalentTab", "InspectModelFrame_OnLoad", "InspectModelFrame_OnUpdate", "InspectModelRotateLeftButton_OnClick", "InspectModelRotateRightButton_OnClick", "InspectPVPFrame_OnEvent", "InspectPVPFrame_OnLoad", "InspectPVPFrame_OnShow", "InspectPVPFrame_SetFaction", "InspectPVPFrame_Update", "InspectPVPHonor_Update", "InspectPVPTeam_Update", "InspectPaperDollFrame_OnEvent", "InspectPaperDollFrame_OnLoad", "InspectPaperDollFrame_OnShow", "InspectPaperDollFrame_SetLevel", "InspectPaperDollItemSlotButton_OnEnter", "InspectPaperDollItemSlotButton_OnEvent", "InspectPaperDollItemSlotButton_OnLoad", "InspectPaperDollItemSlotButton_Update", "InspectSwitchTabs", "InspectTalentFrameDownArrow_OnClick", "InspectTalentFramePointsBar_OnEnter", "InspectTalentFrameTalent_OnClick", "InspectTalentFrameTalent_OnEnter", "InspectTalentFrameTalent_OnEvent", "InspectTalentFrame_OnEvent", "InspectTalentFrame_OnHide", "InspectTalentFrame_OnLoad", "InspectTalentFrame_OnShow", "InspectTalentFrame_Refresh", "InspectTalentFrame_Update", "InspectTalentFrame_UpdateTabs", -- tables: Blizzard_InspectUI "INSPECTFRAME_SUBFRAMES", "InspectBackSlot", "InspectChestSlot", "InspectFeetSlot", "InspectFinger0Slot", "InspectFinger1Slot", "InspectFrame", "InspectFrameCloseButton", "InspectFrameTab1", "InspectFrameTab2", "InspectFrameTab3", "InspectHandsSlot", "InspectHeadSlot", "InspectLegsSlot", "InspectMainHandSlot", "InspectModelFrame", "InspectModelRotateLeftButton", "InspectModelRotateRightButton", "InspectNameFrame", "InspectNeckSlot", "InspectPVPFrame", "InspectPVPFrameArena", "InspectPVPFrameHonor", "InspectPVPHonor", "InspectPVPTeam1", "InspectPVPTeam1Data", "InspectPVPTeam1Highlight", "InspectPVPTeam1Standard", "InspectPVPTeam2", "InspectPVPTeam2Data", "InspectPVPTeam2Highlight", "InspectPVPTeam2Standard", "InspectPVPTeam3", "InspectPVPTeam3Data", "InspectPVPTeam3Highlight", "InspectPVPTeam3Standard", "InspectPaperDollFrame", "InspectRangedSlot", "InspectSecondaryHandSlot", "InspectShirtSlot", "InspectShoulderSlot", "InspectTabardSlot", "InspectTalentFrame", "InspectTalentFrameArrowFrame", "InspectTalentFrameCloseButton", "InspectTalentFramePointsBar", "InspectTalentFrameScrollButtonOverlay", "InspectTalentFrameScrollChildFrame", "InspectTalentFrameScrollFrame", "InspectTalentFrameScrollFrameScrollBar", "InspectTalentFrameScrollFrameScrollBarScrollDownButton", "InspectTalentFrameScrollFrameScrollBarScrollUpButton", "InspectTalentFrameTab1", "InspectTalentFrameTab2", "InspectTalentFrameTab3", "InspectTalentFrameTalent1", "InspectTalentFrameTalent10", "InspectTalentFrameTalent11", "InspectTalentFrameTalent12", "InspectTalentFrameTalent13", "InspectTalentFrameTalent14", "InspectTalentFrameTalent15", "InspectTalentFrameTalent16", "InspectTalentFrameTalent17", "InspectTalentFrameTalent18", "InspectTalentFrameTalent19", "InspectTalentFrameTalent2", "InspectTalentFrameTalent20", "InspectTalentFrameTalent21", "InspectTalentFrameTalent22", "InspectTalentFrameTalent23", "InspectTalentFrameTalent24", "InspectTalentFrameTalent25", "InspectTalentFrameTalent26", "InspectTalentFrameTalent27", "InspectTalentFrameTalent28", "InspectTalentFrameTalent29", "InspectTalentFrameTalent3", "InspectTalentFrameTalent30", "InspectTalentFrameTalent31", "InspectTalentFrameTalent32", "InspectTalentFrameTalent33", "InspectTalentFrameTalent34", "InspectTalentFrameTalent35", "InspectTalentFrameTalent36", "InspectTalentFrameTalent37", "InspectTalentFrameTalent38", "InspectTalentFrameTalent39", "InspectTalentFrameTalent4", "InspectTalentFrameTalent40", "InspectTalentFrameTalent5", "InspectTalentFrameTalent6", "InspectTalentFrameTalent7", "InspectTalentFrameTalent8", "InspectTalentFrameTalent9", "InspectTrinket0Slot", "InspectTrinket1Slot", "InspectWaistSlot", "InspectWristSlot", -- frames: Blizzard_InspectUI "InspectFrame", "InspectNameFrame", "InspectFrameCloseButton", "InspectFrameTab1", "InspectFrameTab2", "InspectFrameTab3", "InspectPaperDollFrame", "InspectModelFrame", "InspectModelRotateLeftButton", "InspectModelRotateRightButton", "InspectHeadSlot", "InspectNeckSlot", "InspectShoulderSlot", "InspectBackSlot", "InspectChestSlot", "InspectShirtSlot", "InspectTabardSlot", "InspectWristSlot", "InspectHandsSlot", "InspectWaistSlot", "InspectLegsSlot", "InspectFeetSlot", "InspectFinger0Slot", "InspectFinger1Slot", "InspectTrinket0Slot", "InspectTrinket1Slot", "InspectMainHandSlot", "InspectSecondaryHandSlot", "InspectRangedSlot", "InspectPVPFrame", "InspectPVPFrameHonor", "InspectPVPFrameArena", "InspectPVPHonor", "InspectPVPTeam1Standard", "InspectPVPTeam1", "InspectPVPTeam1Highlight", "InspectPVPTeam1Data", "InspectPVPTeam2Standard", "InspectPVPTeam2", "InspectPVPTeam2Highlight", "InspectPVPTeam2Data", "InspectPVPTeam3Standard", "InspectPVPTeam3", "InspectPVPTeam3Highlight", "InspectPVPTeam3Data", "InspectTalentFrame", "InspectTalentFrameTab1", "InspectTalentFrameTab2", "InspectTalentFrameTab3", "InspectTalentFrameCloseButton", "InspectTalentFramePointsBar", "InspectTalentFrameScrollFrame", "InspectTalentFrameScrollChildFrame", "InspectTalentFrameTalent1", "InspectTalentFrameTalent2", "InspectTalentFrameTalent3", "InspectTalentFrameTalent4", "InspectTalentFrameTalent5", "InspectTalentFrameTalent6", "InspectTalentFrameTalent7", "InspectTalentFrameTalent8", "InspectTalentFrameTalent9", "InspectTalentFrameTalent10", "InspectTalentFrameTalent11", "InspectTalentFrameTalent12", "InspectTalentFrameTalent13", "InspectTalentFrameTalent14", "InspectTalentFrameTalent15", "InspectTalentFrameTalent16", "InspectTalentFrameTalent17", "InspectTalentFrameTalent18", "InspectTalentFrameTalent19", "InspectTalentFrameTalent20", "InspectTalentFrameTalent21", "InspectTalentFrameTalent22", "InspectTalentFrameTalent23", "InspectTalentFrameTalent24", "InspectTalentFrameTalent25", "InspectTalentFrameTalent26", "InspectTalentFrameTalent27", "InspectTalentFrameTalent28", "InspectTalentFrameTalent29", "InspectTalentFrameTalent30", "InspectTalentFrameTalent31", "InspectTalentFrameTalent32", "InspectTalentFrameTalent33", "InspectTalentFrameTalent34", "InspectTalentFrameTalent35", "InspectTalentFrameTalent36", "InspectTalentFrameTalent37", "InspectTalentFrameTalent38", "InspectTalentFrameTalent39", "InspectTalentFrameTalent40", "InspectTalentFrameArrowFrame", "InspectTalentFrameScrollFrameScrollBar", "InspectTalentFrameScrollFrameScrollBarScrollUpButton", "InspectTalentFrameScrollFrameScrollBarScrollDownButton", "InspectTalentFrameScrollButtonOverlay", -- widgets: Blizzard_InspectUI "InspectBackSlotCount", "InspectBackSlotIconTexture", "InspectBackSlotStock", "InspectChestSlotCount", "InspectChestSlotIconTexture", "InspectChestSlotStock", "InspectFeetSlotCount", "InspectFeetSlotIconTexture", "InspectFeetSlotStock", "InspectFinger0SlotCount", "InspectFinger0SlotIconTexture", "InspectFinger0SlotStock", "InspectFinger1SlotCount", "InspectFinger1SlotIconTexture", "InspectFinger1SlotStock", "InspectFramePortrait", "InspectFrameTab1HighlightTexture", "InspectFrameTab1Left", "InspectFrameTab1LeftDisabled", "InspectFrameTab1Middle", "InspectFrameTab1MiddleDisabled", "InspectFrameTab1Right", "InspectFrameTab1RightDisabled", "InspectFrameTab1Text", "InspectFrameTab2HighlightTexture", "InspectFrameTab2Left", "InspectFrameTab2LeftDisabled", "InspectFrameTab2Middle", "InspectFrameTab2MiddleDisabled", "InspectFrameTab2Right", "InspectFrameTab2RightDisabled", "InspectFrameTab2Text", "InspectFrameTab3HighlightTexture", "InspectFrameTab3Left", "InspectFrameTab3LeftDisabled", "InspectFrameTab3Middle", "InspectFrameTab3MiddleDisabled", "InspectFrameTab3Right", "InspectFrameTab3RightDisabled", "InspectFrameTab3Text", "InspectGuildText", "InspectHandsSlotCount", "InspectHandsSlotIconTexture", "InspectHandsSlotStock", "InspectHeadSlotCount", "InspectHeadSlotIconTexture", "InspectHeadSlotStock", "InspectLegsSlotCount", "InspectLegsSlotIconTexture", "InspectLegsSlotStock", "InspectLevelText", "InspectMainHandSlotCount", "InspectMainHandSlotIconTexture", "InspectMainHandSlotStock", "InspectNameText", "InspectNeckSlotCount", "InspectNeckSlotIconTexture", "InspectNeckSlotStock", "InspectPVPFrameArenaIcon", "InspectPVPFrameArenaLabel", "InspectPVPFrameArenaPoints", "InspectPVPFrameBackground", "InspectPVPFrameHonorIcon", "InspectPVPFrameHonorLabel", "InspectPVPFrameHonorPoints", "InspectPVPFrameLine1", "InspectPVPHonorHonorLabel", "InspectPVPHonorKillsLabel", "InspectPVPHonorLifetimeHonor", "InspectPVPHonorLifetimeKills", "InspectPVPHonorLifetimeLabel", "InspectPVPHonorTodayHonor", "InspectPVPHonorTodayKills", "InspectPVPHonorTodayLabel", "InspectPVPHonorYesterdayHonor", "InspectPVPHonorYesterdayKills", "InspectPVPHonorYesterdayLabel", "InspectPVPTeam1Background", "InspectPVPTeam1Bottom", "InspectPVPTeam1Data-", "InspectPVPTeam1DataGames", "InspectPVPTeam1DataGamesLabel", "InspectPVPTeam1DataLoss", "InspectPVPTeam1DataName", "InspectPVPTeam1DataPlayed", "InspectPVPTeam1DataPlayedLabel", "InspectPVPTeam1DataRating", "InspectPVPTeam1DataRatingLabel", "InspectPVPTeam1DataTypeLabel", "InspectPVPTeam1DataWinLossLabel", "InspectPVPTeam1DataWins", "InspectPVPTeam1Left", "InspectPVPTeam1Right", "InspectPVPTeam1StandardBanner", "InspectPVPTeam1StandardBar", "InspectPVPTeam1StandardBorder", "InspectPVPTeam1StandardEmblem", "InspectPVPTeam1TeamType", "InspectPVPTeam1Top", "InspectPVPTeam2Background", "InspectPVPTeam2Bottom", "InspectPVPTeam2Data-", "InspectPVPTeam2DataGames", "InspectPVPTeam2DataGamesLabel", "InspectPVPTeam2DataLoss", "InspectPVPTeam2DataName", "InspectPVPTeam2DataPlayed", "InspectPVPTeam2DataPlayedLabel", "InspectPVPTeam2DataRating", "InspectPVPTeam2DataRatingLabel", "InspectPVPTeam2DataTypeLabel", "InspectPVPTeam2DataWinLossLabel", "InspectPVPTeam2DataWins", "InspectPVPTeam2Left", "InspectPVPTeam2Right", "InspectPVPTeam2StandardBanner", "InspectPVPTeam2StandardBar", "InspectPVPTeam2StandardBorder", "InspectPVPTeam2StandardEmblem", "InspectPVPTeam2TeamType", "InspectPVPTeam2Top", "InspectPVPTeam3Background", "InspectPVPTeam3Bottom", "InspectPVPTeam3Data-", "InspectPVPTeam3DataGames", "InspectPVPTeam3DataGamesLabel", "InspectPVPTeam3DataLoss", "InspectPVPTeam3DataName", "InspectPVPTeam3DataPlayed", "InspectPVPTeam3DataPlayedLabel", "InspectPVPTeam3DataRating", "InspectPVPTeam3DataRatingLabel", "InspectPVPTeam3DataTypeLabel", "InspectPVPTeam3DataWinLossLabel", "InspectPVPTeam3DataWins", "InspectPVPTeam3Left", "InspectPVPTeam3Right", "InspectPVPTeam3StandardBanner", "InspectPVPTeam3StandardBar", "InspectPVPTeam3StandardBorder", "InspectPVPTeam3StandardEmblem", "InspectPVPTeam3TeamType", "InspectPVPTeam3Top", "InspectRangedSlotCount", "InspectRangedSlotIconTexture", "InspectRangedSlotStock", "InspectSecondaryHandSlotCount", "InspectSecondaryHandSlotIconTexture", "InspectSecondaryHandSlotStock", "InspectShirtSlotCount", "InspectShirtSlotIconTexture", "InspectShirtSlotStock", "InspectShoulderSlotCount", "InspectShoulderSlotIconTexture", "InspectShoulderSlotStock", "InspectTabardSlotCount", "InspectTabardSlotIconTexture", "InspectTabardSlotStock", "InspectTalentFrameArrow1", "InspectTalentFrameArrow10", "InspectTalentFrameArrow11", "InspectTalentFrameArrow12", "InspectTalentFrameArrow13", "InspectTalentFrameArrow14", "InspectTalentFrameArrow15", "InspectTalentFrameArrow16", "InspectTalentFrameArrow17", "InspectTalentFrameArrow18", "InspectTalentFrameArrow19", "InspectTalentFrameArrow2", "InspectTalentFrameArrow20", "InspectTalentFrameArrow21", "InspectTalentFrameArrow22", "InspectTalentFrameArrow23", "InspectTalentFrameArrow24", "InspectTalentFrameArrow25", "InspectTalentFrameArrow26", "InspectTalentFrameArrow27", "InspectTalentFrameArrow28", "InspectTalentFrameArrow29", "InspectTalentFrameArrow3", "InspectTalentFrameArrow30", "InspectTalentFrameArrow4", "InspectTalentFrameArrow5", "InspectTalentFrameArrow6", "InspectTalentFrameArrow7", "InspectTalentFrameArrow8", "InspectTalentFrameArrow9", "InspectTalentFrameBackgroundBottomLeft", "InspectTalentFrameBackgroundBottomRight", "InspectTalentFrameBackgroundTopLeft", "InspectTalentFrameBackgroundTopRight", "InspectTalentFrameBranch1", "InspectTalentFrameBranch10", "InspectTalentFrameBranch11", "InspectTalentFrameBranch12", "InspectTalentFrameBranch13", "InspectTalentFrameBranch14", "InspectTalentFrameBranch15", "InspectTalentFrameBranch16", "InspectTalentFrameBranch17", "InspectTalentFrameBranch18", "InspectTalentFrameBranch19", "InspectTalentFrameBranch2", "InspectTalentFrameBranch20", "InspectTalentFrameBranch21", "InspectTalentFrameBranch22", "InspectTalentFrameBranch23", "InspectTalentFrameBranch24", "InspectTalentFrameBranch25", "InspectTalentFrameBranch26", "InspectTalentFrameBranch27", "InspectTalentFrameBranch28", "InspectTalentFrameBranch29", "InspectTalentFrameBranch3", "InspectTalentFrameBranch30", "InspectTalentFrameBranch4", "InspectTalentFrameBranch5", "InspectTalentFrameBranch6", "InspectTalentFrameBranch7", "InspectTalentFrameBranch8", "InspectTalentFrameBranch9", "InspectTalentFramePointsBarBackground", "InspectTalentFramePointsBarBorderLeft", "InspectTalentFramePointsBarBorderMiddle", "InspectTalentFramePointsBarBorderRight", "InspectTalentFramePortrait", "InspectTalentFrameScrollFrameScrollBarThumbTexture", "InspectTalentFrameSpentPointsText", "InspectTalentFrameTab1HighlightTexture", "InspectTalentFrameTab1Left", "InspectTalentFrameTab1LeftDisabled", "InspectTalentFrameTab1Middle", "InspectTalentFrameTab1MiddleDisabled", "InspectTalentFrameTab1Right", "InspectTalentFrameTab1RightDisabled", "InspectTalentFrameTab1Text", "InspectTalentFrameTab2HighlightTexture", "InspectTalentFrameTab2Left", "InspectTalentFrameTab2LeftDisabled", "InspectTalentFrameTab2Middle", "InspectTalentFrameTab2MiddleDisabled", "InspectTalentFrameTab2Right", "InspectTalentFrameTab2RightDisabled", "InspectTalentFrameTab2Text", "InspectTalentFrameTab3HighlightTexture", "InspectTalentFrameTab3Left", "InspectTalentFrameTab3LeftDisabled", "InspectTalentFrameTab3Middle", "InspectTalentFrameTab3MiddleDisabled", "InspectTalentFrameTab3Right", "InspectTalentFrameTab3RightDisabled", "InspectTalentFrameTab3Text", "InspectTalentFrameTalent10Count", "InspectTalentFrameTalent10IconTexture", "InspectTalentFrameTalent10NormalTexture", "InspectTalentFrameTalent10Rank", "InspectTalentFrameTalent10RankBorder", "InspectTalentFrameTalent10Slot", "InspectTalentFrameTalent10Stock", "InspectTalentFrameTalent11Count", "InspectTalentFrameTalent11IconTexture", "InspectTalentFrameTalent11NormalTexture", "InspectTalentFrameTalent11Rank", "InspectTalentFrameTalent11RankBorder", "InspectTalentFrameTalent11Slot", "InspectTalentFrameTalent11Stock", "InspectTalentFrameTalent12Count", "InspectTalentFrameTalent12IconTexture", "InspectTalentFrameTalent12NormalTexture", "InspectTalentFrameTalent12Rank", "InspectTalentFrameTalent12RankBorder", "InspectTalentFrameTalent12Slot", "InspectTalentFrameTalent12Stock", "InspectTalentFrameTalent13Count", "InspectTalentFrameTalent13IconTexture", "InspectTalentFrameTalent13NormalTexture", "InspectTalentFrameTalent13Rank", "InspectTalentFrameTalent13RankBorder", "InspectTalentFrameTalent13Slot", "InspectTalentFrameTalent13Stock", "InspectTalentFrameTalent14Count", "InspectTalentFrameTalent14IconTexture", "InspectTalentFrameTalent14NormalTexture", "InspectTalentFrameTalent14Rank", "InspectTalentFrameTalent14RankBorder", "InspectTalentFrameTalent14Slot", "InspectTalentFrameTalent14Stock", "InspectTalentFrameTalent15Count", "InspectTalentFrameTalent15IconTexture", "InspectTalentFrameTalent15NormalTexture", "InspectTalentFrameTalent15Rank", "InspectTalentFrameTalent15RankBorder", "InspectTalentFrameTalent15Slot", "InspectTalentFrameTalent15Stock", "InspectTalentFrameTalent16Count", "InspectTalentFrameTalent16IconTexture", "InspectTalentFrameTalent16NormalTexture", "InspectTalentFrameTalent16Rank", "InspectTalentFrameTalent16RankBorder", "InspectTalentFrameTalent16Slot", "InspectTalentFrameTalent16Stock", "InspectTalentFrameTalent17Count", "InspectTalentFrameTalent17IconTexture", "InspectTalentFrameTalent17NormalTexture", "InspectTalentFrameTalent17Rank", "InspectTalentFrameTalent17RankBorder", "InspectTalentFrameTalent17Slot", "InspectTalentFrameTalent17Stock", "InspectTalentFrameTalent18Count", "InspectTalentFrameTalent18IconTexture", "InspectTalentFrameTalent18NormalTexture", "InspectTalentFrameTalent18Rank", "InspectTalentFrameTalent18RankBorder", "InspectTalentFrameTalent18Slot", "InspectTalentFrameTalent18Stock", "InspectTalentFrameTalent19Count", "InspectTalentFrameTalent19IconTexture", "InspectTalentFrameTalent19NormalTexture", "InspectTalentFrameTalent19Rank", "InspectTalentFrameTalent19RankBorder", "InspectTalentFrameTalent19Slot", "InspectTalentFrameTalent19Stock", "InspectTalentFrameTalent1Count", "InspectTalentFrameTalent1IconTexture", "InspectTalentFrameTalent1NormalTexture", "InspectTalentFrameTalent1Rank", "InspectTalentFrameTalent1RankBorder", "InspectTalentFrameTalent1Slot", "InspectTalentFrameTalent1Stock", "InspectTalentFrameTalent20Count", "InspectTalentFrameTalent20IconTexture", "InspectTalentFrameTalent20NormalTexture", "InspectTalentFrameTalent20Rank", "InspectTalentFrameTalent20RankBorder", "InspectTalentFrameTalent20Slot", "InspectTalentFrameTalent20Stock", "InspectTalentFrameTalent21Count", "InspectTalentFrameTalent21IconTexture", "InspectTalentFrameTalent21NormalTexture", "InspectTalentFrameTalent21Rank", "InspectTalentFrameTalent21RankBorder", "InspectTalentFrameTalent21Slot", "InspectTalentFrameTalent21Stock", "InspectTalentFrameTalent22Count", "InspectTalentFrameTalent22IconTexture", "InspectTalentFrameTalent22NormalTexture", "InspectTalentFrameTalent22Rank", "InspectTalentFrameTalent22RankBorder", "InspectTalentFrameTalent22Slot", "InspectTalentFrameTalent22Stock", "InspectTalentFrameTalent23Count", "InspectTalentFrameTalent23IconTexture", "InspectTalentFrameTalent23NormalTexture", "InspectTalentFrameTalent23Rank", "InspectTalentFrameTalent23RankBorder", "InspectTalentFrameTalent23Slot", "InspectTalentFrameTalent23Stock", "InspectTalentFrameTalent24Count", "InspectTalentFrameTalent24IconTexture", "InspectTalentFrameTalent24NormalTexture", "InspectTalentFrameTalent24Rank", "InspectTalentFrameTalent24RankBorder", "InspectTalentFrameTalent24Slot", "InspectTalentFrameTalent24Stock", "InspectTalentFrameTalent25Count", "InspectTalentFrameTalent25IconTexture", "InspectTalentFrameTalent25NormalTexture", "InspectTalentFrameTalent25Rank", "InspectTalentFrameTalent25RankBorder", "InspectTalentFrameTalent25Slot", "InspectTalentFrameTalent25Stock", "InspectTalentFrameTalent26Count", "InspectTalentFrameTalent26IconTexture", "InspectTalentFrameTalent26NormalTexture", "InspectTalentFrameTalent26Rank", "InspectTalentFrameTalent26RankBorder", "InspectTalentFrameTalent26Slot", "InspectTalentFrameTalent26Stock", "InspectTalentFrameTalent27Count", "InspectTalentFrameTalent27IconTexture", "InspectTalentFrameTalent27NormalTexture", "InspectTalentFrameTalent27Rank", "InspectTalentFrameTalent27RankBorder", "InspectTalentFrameTalent27Slot", "InspectTalentFrameTalent27Stock", "InspectTalentFrameTalent28Count", "InspectTalentFrameTalent28IconTexture", "InspectTalentFrameTalent28NormalTexture", "InspectTalentFrameTalent28Rank", "InspectTalentFrameTalent28RankBorder", "InspectTalentFrameTalent28Slot", "InspectTalentFrameTalent28Stock", "InspectTalentFrameTalent29Count", "InspectTalentFrameTalent29IconTexture", "InspectTalentFrameTalent29NormalTexture", "InspectTalentFrameTalent29Rank", "InspectTalentFrameTalent29RankBorder", "InspectTalentFrameTalent29Slot", "InspectTalentFrameTalent29Stock", "InspectTalentFrameTalent2Count", "InspectTalentFrameTalent2IconTexture", "InspectTalentFrameTalent2NormalTexture", "InspectTalentFrameTalent2Rank", "InspectTalentFrameTalent2RankBorder", "InspectTalentFrameTalent2Slot", "InspectTalentFrameTalent2Stock", "InspectTalentFrameTalent30Count", "InspectTalentFrameTalent30IconTexture", "InspectTalentFrameTalent30NormalTexture", "InspectTalentFrameTalent30Rank", "InspectTalentFrameTalent30RankBorder", "InspectTalentFrameTalent30Slot", "InspectTalentFrameTalent30Stock", "InspectTalentFrameTalent31Count", "InspectTalentFrameTalent31IconTexture", "InspectTalentFrameTalent31NormalTexture", "InspectTalentFrameTalent31Rank", "InspectTalentFrameTalent31RankBorder", "InspectTalentFrameTalent31Slot", "InspectTalentFrameTalent31Stock", "InspectTalentFrameTalent32Count", "InspectTalentFrameTalent32IconTexture", "InspectTalentFrameTalent32NormalTexture", "InspectTalentFrameTalent32Rank", "InspectTalentFrameTalent32RankBorder", "InspectTalentFrameTalent32Slot", "InspectTalentFrameTalent32Stock", "InspectTalentFrameTalent33Count", "InspectTalentFrameTalent33IconTexture", "InspectTalentFrameTalent33NormalTexture", "InspectTalentFrameTalent33Rank", "InspectTalentFrameTalent33RankBorder", "InspectTalentFrameTalent33Slot", "InspectTalentFrameTalent33Stock", "InspectTalentFrameTalent34Count", "InspectTalentFrameTalent34IconTexture", "InspectTalentFrameTalent34NormalTexture", "InspectTalentFrameTalent34Rank", "InspectTalentFrameTalent34RankBorder", "InspectTalentFrameTalent34Slot", "InspectTalentFrameTalent34Stock", "InspectTalentFrameTalent35Count", "InspectTalentFrameTalent35IconTexture", "InspectTalentFrameTalent35NormalTexture", "InspectTalentFrameTalent35Rank", "InspectTalentFrameTalent35RankBorder", "InspectTalentFrameTalent35Slot", "InspectTalentFrameTalent35Stock", "InspectTalentFrameTalent36Count", "InspectTalentFrameTalent36IconTexture", "InspectTalentFrameTalent36NormalTexture", "InspectTalentFrameTalent36Rank", "InspectTalentFrameTalent36RankBorder", "InspectTalentFrameTalent36Slot", "InspectTalentFrameTalent36Stock", "InspectTalentFrameTalent37Count", "InspectTalentFrameTalent37IconTexture", "InspectTalentFrameTalent37NormalTexture", "InspectTalentFrameTalent37Rank", "InspectTalentFrameTalent37RankBorder", "InspectTalentFrameTalent37Slot", "InspectTalentFrameTalent37Stock", "InspectTalentFrameTalent38Count", "InspectTalentFrameTalent38IconTexture", "InspectTalentFrameTalent38NormalTexture", "InspectTalentFrameTalent38Rank", "InspectTalentFrameTalent38RankBorder", "InspectTalentFrameTalent38Slot", "InspectTalentFrameTalent38Stock", "InspectTalentFrameTalent39Count", "InspectTalentFrameTalent39IconTexture", "InspectTalentFrameTalent39NormalTexture", "InspectTalentFrameTalent39Rank", "InspectTalentFrameTalent39RankBorder", "InspectTalentFrameTalent39Slot", "InspectTalentFrameTalent39Stock", "InspectTalentFrameTalent3Count", "InspectTalentFrameTalent3IconTexture", "InspectTalentFrameTalent3NormalTexture", "InspectTalentFrameTalent3Rank", "InspectTalentFrameTalent3RankBorder", "InspectTalentFrameTalent3Slot", "InspectTalentFrameTalent3Stock", "InspectTalentFrameTalent40Count", "InspectTalentFrameTalent40IconTexture", "InspectTalentFrameTalent40NormalTexture", "InspectTalentFrameTalent40Rank", "InspectTalentFrameTalent40RankBorder", "InspectTalentFrameTalent40Slot", "InspectTalentFrameTalent40Stock", "InspectTalentFrameTalent4Count", "InspectTalentFrameTalent4IconTexture", "InspectTalentFrameTalent4NormalTexture", "InspectTalentFrameTalent4Rank", "InspectTalentFrameTalent4RankBorder", "InspectTalentFrameTalent4Slot", "InspectTalentFrameTalent4Stock", "InspectTalentFrameTalent5Count", "InspectTalentFrameTalent5IconTexture", "InspectTalentFrameTalent5NormalTexture", "InspectTalentFrameTalent5Rank", "InspectTalentFrameTalent5RankBorder", "InspectTalentFrameTalent5Slot", "InspectTalentFrameTalent5Stock", "InspectTalentFrameTalent6Count", "InspectTalentFrameTalent6IconTexture", "InspectTalentFrameTalent6NormalTexture", "InspectTalentFrameTalent6Rank", "InspectTalentFrameTalent6RankBorder", "InspectTalentFrameTalent6Slot", "InspectTalentFrameTalent6Stock", "InspectTalentFrameTalent7Count", "InspectTalentFrameTalent7IconTexture", "InspectTalentFrameTalent7NormalTexture", "InspectTalentFrameTalent7Rank", "InspectTalentFrameTalent7RankBorder", "InspectTalentFrameTalent7Slot", "InspectTalentFrameTalent7Stock", "InspectTalentFrameTalent8Count", "InspectTalentFrameTalent8IconTexture", "InspectTalentFrameTalent8NormalTexture", "InspectTalentFrameTalent8Rank", "InspectTalentFrameTalent8RankBorder", "InspectTalentFrameTalent8Slot", "InspectTalentFrameTalent8Stock", "InspectTalentFrameTalent9Count", "InspectTalentFrameTalent9IconTexture", "InspectTalentFrameTalent9NormalTexture", "InspectTalentFrameTalent9Rank", "InspectTalentFrameTalent9RankBorder", "InspectTalentFrameTalent9Slot", "InspectTalentFrameTalent9Stock", "InspectTalentFrameTalentPointsText", "InspectTitleText", "InspectTrinket0SlotCount", "InspectTrinket0SlotIconTexture", "InspectTrinket0SlotStock", "InspectTrinket1SlotCount", "InspectTrinket1SlotIconTexture", "InspectTrinket1SlotStock", "InspectWaistSlotCount", "InspectWaistSlotIconTexture", "InspectWaistSlotStock", "InspectWristSlotCount", "InspectWristSlotIconTexture", "InspectWristSlotStock", -- functions: Blizzard_ItemSocketingUI "ItemSocketingFrame_OnEvent", "ItemSocketingFrame_OnLoad", "ItemSocketingFrame_Update", "ItemSocketingSocketButton_Disable", "ItemSocketingSocketButton_Enable", "ItemSocketingSocketButton_OnEnter", "ItemSocketingSocketButton_OnEvent", "ItemSocketingSocketButton_OnScrollRangeChanged", -- tables: Blizzard_ItemSocketingUI "GEM_TYPE_INFO", "ItemSocketingCloseButton", "ItemSocketingDescription", "ItemSocketingDescriptionStatusBar", "ItemSocketingFrame", "ItemSocketingScrollChild", "ItemSocketingScrollFrame", "ItemSocketingScrollFrameScrollBar", "ItemSocketingScrollFrameScrollBarScrollDownButton", "ItemSocketingScrollFrameScrollBarScrollUpButton", "ItemSocketingSocket1", "ItemSocketingSocket1BracketFrame", "ItemSocketingSocket1Shine", "ItemSocketingSocket2", "ItemSocketingSocket2BracketFrame", "ItemSocketingSocket2Shine", "ItemSocketingSocket3", "ItemSocketingSocket3BracketFrame", "ItemSocketingSocket3Shine", "ItemSocketingSocketButton", -- frames: Blizzard_ItemSocketingUI "ItemSocketingFrame", "ItemSocketingScrollFrame", "ItemSocketingScrollChild", "ItemSocketingDescription", "ItemSocketingDescriptionStatusBar", "ItemSocketingScrollFrameScrollBar", "ItemSocketingScrollFrameScrollBarScrollUpButton", "ItemSocketingScrollFrameScrollBarScrollDownButton", "ItemSocketingSocket1", "ItemSocketingSocket1Shine", "ItemSocketingSocket1BracketFrame", "ItemSocketingSocket2", "ItemSocketingSocket2Shine", "ItemSocketingSocket2BracketFrame", "ItemSocketingSocket3", "ItemSocketingSocket3Shine", "ItemSocketingSocket3BracketFrame", "ItemSocketingSocketButton", "ItemSocketingCloseButton", -- widgets: Blizzard_ItemSocketingUI "ItemSocketingDescriptionStatusBarTexture", "ItemSocketingDescriptionTextLeft1", "ItemSocketingDescriptionTextLeft2", "ItemSocketingDescriptionTextLeft3", "ItemSocketingDescriptionTextLeft4", "ItemSocketingDescriptionTextLeft5", "ItemSocketingDescriptionTextLeft6", "ItemSocketingDescriptionTextLeft7", "ItemSocketingDescriptionTextLeft8", "ItemSocketingDescriptionTextRight1", "ItemSocketingDescriptionTextRight2", "ItemSocketingDescriptionTextRight3", "ItemSocketingDescriptionTextRight4", "ItemSocketingDescriptionTextRight5", "ItemSocketingDescriptionTextRight6", "ItemSocketingDescriptionTextRight7", "ItemSocketingDescriptionTextRight8", "ItemSocketingDescriptionTexture1", "ItemSocketingDescriptionTexture10", "ItemSocketingDescriptionTexture2", "ItemSocketingDescriptionTexture3", "ItemSocketingDescriptionTexture4", "ItemSocketingDescriptionTexture5", "ItemSocketingDescriptionTexture6", "ItemSocketingDescriptionTexture7", "ItemSocketingDescriptionTexture8", "ItemSocketingDescriptionTexture9", "ItemSocketingFramePortrait", "ItemSocketingScrollFrameBottom", "ItemSocketingScrollFrameScrollBarThumbTexture", "ItemSocketingScrollFrameTop", "ItemSocketingSocket1Background", "ItemSocketingSocket1BracketFrameClosedBracket", "ItemSocketingSocket1BracketFrameOpenBracket", "ItemSocketingSocket1Color", "ItemSocketingSocket1IconTexture", "ItemSocketingSocket1Left", "ItemSocketingSocket1Right", "ItemSocketingSocket1Shine1", "ItemSocketingSocket1Shine2", "ItemSocketingSocket1Shine3", "ItemSocketingSocket1Shine4", "ItemSocketingSocket2Background", "ItemSocketingSocket2BracketFrameClosedBracket", "ItemSocketingSocket2BracketFrameOpenBracket", "ItemSocketingSocket2Color", "ItemSocketingSocket2IconTexture", "ItemSocketingSocket2Left", "ItemSocketingSocket2Right", "ItemSocketingSocket2Shine1", "ItemSocketingSocket2Shine2", "ItemSocketingSocket2Shine3", "ItemSocketingSocket2Shine4", "ItemSocketingSocket3Background", "ItemSocketingSocket3BracketFrameClosedBracket", "ItemSocketingSocket3BracketFrameOpenBracket", "ItemSocketingSocket3Color", "ItemSocketingSocket3IconTexture", "ItemSocketingSocket3Left", "ItemSocketingSocket3Right", "ItemSocketingSocket3Shine1", "ItemSocketingSocket3Shine2", "ItemSocketingSocket3Shine3", "ItemSocketingSocket3Shine4", "ItemSocketingSocketButtonLeft", "ItemSocketingSocketButtonMiddle", "ItemSocketingSocketButtonRight", -- functions: Blizzard_MacroUI "MacroButtonContainer_OnLoad", "MacroButton_OnClick", "MacroEditButton_OnClick", "MacroFrame_AddMacroLine", "MacroFrame_DeleteMacro", "MacroFrame_HideDetails", "MacroFrame_OnHide", "MacroFrame_OnLoad", "MacroFrame_OnShow", "MacroFrame_SaveMacro", "MacroFrame_SelectMacro", "MacroFrame_SetAccountMacros", "MacroFrame_SetCharacterMacros", "MacroFrame_Show", "MacroFrame_ShowDetails", "MacroFrame_Update", "MacroNewButton_OnClick", "MacroPopupButton_OnClick", "MacroPopupButton_SelectTexture", "MacroPopupFrame_CancelEdit", "MacroPopupFrame_OnHide", "MacroPopupFrame_OnShow", "MacroPopupFrame_Update", "MacroPopupOkayButton_OnClick", "MacroPopupOkayButton_Update", -- tables: Blizzard_MacroUI "MacroButton1", "MacroButton10", "MacroButton11", "MacroButton12", "MacroButton13", "MacroButton14", "MacroButton15", "MacroButton16", "MacroButton17", "MacroButton18", "MacroButton19", "MacroButton2", "MacroButton20", "MacroButton21", "MacroButton22", "MacroButton23", "MacroButton24", "MacroButton25", "MacroButton26", "MacroButton27", "MacroButton28", "MacroButton29", "MacroButton3", "MacroButton30", "MacroButton31", "MacroButton32", "MacroButton33", "MacroButton34", "MacroButton35", "MacroButton36", "MacroButton4", "MacroButton5", "MacroButton6", "MacroButton7", "MacroButton8", "MacroButton9", "MacroButtonContainer", "MacroButtonScrollFrame", "MacroButtonScrollFrameScrollBar", "MacroButtonScrollFrameScrollBarScrollDownButton", "MacroButtonScrollFrameScrollBarScrollUpButton", "MacroDeleteButton", "MacroEditButton", "MacroExitButton", "MacroFrame", "MacroFrameCloseButton", "MacroFrameScrollFrame", "MacroFrameScrollFrameScrollBar", "MacroFrameScrollFrameScrollBarScrollDownButton", "MacroFrameScrollFrameScrollBarScrollUpButton", "MacroFrameSelectedMacroButton", "MacroFrameTab1", "MacroFrameTab2", "MacroFrameText", "MacroFrameTextBackground", "MacroFrameTextButton", "MacroNewButton", "MacroPopupButton1", "MacroPopupButton10", "MacroPopupButton11", "MacroPopupButton12", "MacroPopupButton13", "MacroPopupButton14", "MacroPopupButton15", "MacroPopupButton16", "MacroPopupButton17", "MacroPopupButton18", "MacroPopupButton19", "MacroPopupButton2", "MacroPopupButton20", "MacroPopupButton3", "MacroPopupButton4", "MacroPopupButton5", "MacroPopupButton6", "MacroPopupButton7", "MacroPopupButton8", "MacroPopupButton9", "MacroPopupCancelButton", "MacroPopupEditBox", "MacroPopupFrame", "MacroPopupOkayButton", "MacroPopupScrollFrame", "MacroPopupScrollFrameScrollBar", "MacroPopupScrollFrameScrollBarScrollDownButton", "MacroPopupScrollFrameScrollBarScrollUpButton", "MacroPopupScrollFrameScrollChildFrame", -- frames: Blizzard_MacroUI "MacroFrame", "MacroFrameSelectedMacroButton", "MacroButtonScrollFrame", "MacroButtonContainer", "MacroButton1", "MacroButton2", "MacroButton3", "MacroButton4", "MacroButton5", "MacroButton6", "MacroButton7", "MacroButton8", "MacroButton9", "MacroButton10", "MacroButton11", "MacroButton12", "MacroButton13", "MacroButton14", "MacroButton15", "MacroButton16", "MacroButton17", "MacroButton18", "MacroButton19", "MacroButton20", "MacroButton21", "MacroButton22", "MacroButton23", "MacroButton24", "MacroButton25", "MacroButton26", "MacroButton27", "MacroButton28", "MacroButton29", "MacroButton30", "MacroButton31", "MacroButton32", "MacroButton33", "MacroButton34", "MacroButton35", "MacroButton36", "MacroButtonScrollFrameScrollBar", "MacroButtonScrollFrameScrollBarScrollUpButton", "MacroButtonScrollFrameScrollBarScrollDownButton", "MacroEditButton", "MacroFrameScrollFrame", "MacroFrameText", "MacroFrameScrollFrameScrollBar", "MacroFrameScrollFrameScrollBarScrollUpButton", "MacroFrameScrollFrameScrollBarScrollDownButton", "MacroFrameTextButton", "MacroFrameTextBackground", "MacroFrameTab1", "MacroFrameTab2", "MacroDeleteButton", "MacroNewButton", "MacroExitButton", "MacroFrameCloseButton", "MacroPopupFrame", "MacroPopupEditBox", "MacroPopupScrollFrame", "MacroPopupScrollFrameScrollChildFrame", "MacroPopupScrollFrameScrollBar", "MacroPopupScrollFrameScrollBarScrollUpButton", "MacroPopupScrollFrameScrollBarScrollDownButton", "MacroPopupButton1", "MacroPopupButton2", "MacroPopupButton3", "MacroPopupButton4", "MacroPopupButton5", "MacroPopupButton6", "MacroPopupButton7", "MacroPopupButton8", "MacroPopupButton9", "MacroPopupButton10", "MacroPopupButton11", "MacroPopupButton12", "MacroPopupButton13", "MacroPopupButton14", "MacroPopupButton15", "MacroPopupButton16", "MacroPopupButton17", "MacroPopupButton18", "MacroPopupButton19", "MacroPopupButton20", "MacroPopupCancelButton", "MacroPopupOkayButton", -- widgets: Blizzard_MacroUI "MacroButton10Icon", "MacroButton10Name", "MacroButton11Icon", "MacroButton11Name", "MacroButton12Icon", "MacroButton12Name", "MacroButton13Icon", "MacroButton13Name", "MacroButton14Icon", "MacroButton14Name", "MacroButton15Icon", "MacroButton15Name", "MacroButton16Icon", "MacroButton16Name", "MacroButton17Icon", "MacroButton17Name", "MacroButton18Icon", "MacroButton18Name", "MacroButton19Icon", "MacroButton19Name", "MacroButton1Icon", "MacroButton1Name", "MacroButton20Icon", "MacroButton20Name", "MacroButton21Icon", "MacroButton21Name", "MacroButton22Icon", "MacroButton22Name", "MacroButton23Icon", "MacroButton23Name", "MacroButton24Icon", "MacroButton24Name", "MacroButton25Icon", "MacroButton25Name", "MacroButton26Icon", "MacroButton26Name", "MacroButton27Icon", "MacroButton27Name", "MacroButton28Icon", "MacroButton28Name", "MacroButton29Icon", "MacroButton29Name", "MacroButton2Icon", "MacroButton2Name", "MacroButton30Icon", "MacroButton30Name", "MacroButton31Icon", "MacroButton31Name", "MacroButton32Icon", "MacroButton32Name", "MacroButton33Icon", "MacroButton33Name", "MacroButton34Icon", "MacroButton34Name", "MacroButton35Icon", "MacroButton35Name", "MacroButton36Icon", "MacroButton36Name", "MacroButton3Icon", "MacroButton3Name", "MacroButton4Icon", "MacroButton4Name", "MacroButton5Icon", "MacroButton5Name", "MacroButton6Icon", "MacroButton6Name", "MacroButton7Icon", "MacroButton7Name", "MacroButton8Icon", "MacroButton8Name", "MacroButton9Icon", "MacroButton9Name", "MacroButtonScrollFrameBottom", "MacroButtonScrollFrameMiddle", "MacroButtonScrollFrameScrollBarThumbTexture", "MacroButtonScrollFrameTop", "MacroEditButtonText", "MacroExitButtonText", "MacroFrameCharLimitText", "MacroFrameEnterMacroText", "MacroFramePortrait", "MacroFrameScrollFrameScrollBarThumbTexture", "MacroFrameSelectedMacroBackground", "MacroFrameSelectedMacroButtonIcon", "MacroFrameSelectedMacroButtonName", "MacroFrameSelectedMacroName", "MacroFrameTab1HighlightTexture", "MacroFrameTab1Left", "MacroFrameTab1LeftDisabled", "MacroFrameTab1Middle", "MacroFrameTab1MiddleDisabled", "MacroFrameTab1Right", "MacroFrameTab1RightDisabled", "MacroFrameTab1Text", "MacroFrameTab2HighlightTexture", "MacroFrameTab2Left", "MacroFrameTab2LeftDisabled", "MacroFrameTab2Middle", "MacroFrameTab2MiddleDisabled", "MacroFrameTab2Right", "MacroFrameTab2RightDisabled", "MacroFrameTab2Text", "MacroHorizontalBarLeft", "MacroNewButtonText", "MacroPopupButton10Icon", "MacroPopupButton10Name", "MacroPopupButton11Icon", "MacroPopupButton11Name", "MacroPopupButton12Icon", "MacroPopupButton12Name", "MacroPopupButton13Icon", "MacroPopupButton13Name", "MacroPopupButton14Icon", "MacroPopupButton14Name", "MacroPopupButton15Icon", "MacroPopupButton15Name", "MacroPopupButton16Icon", "MacroPopupButton16Name", "MacroPopupButton17Icon", "MacroPopupButton17Name", "MacroPopupButton18Icon", "MacroPopupButton18Name", "MacroPopupButton19Icon", "MacroPopupButton19Name", "MacroPopupButton1Icon", "MacroPopupButton1Name", "MacroPopupButton20Icon", "MacroPopupButton20Name", "MacroPopupButton2Icon", "MacroPopupButton2Name", "MacroPopupButton3Icon", "MacroPopupButton3Name", "MacroPopupButton4Icon", "MacroPopupButton4Name", "MacroPopupButton5Icon", "MacroPopupButton5Name", "MacroPopupButton6Icon", "MacroPopupButton6Name", "MacroPopupButton7Icon", "MacroPopupButton7Name", "MacroPopupButton8Icon", "MacroPopupButton8Name", "MacroPopupButton9Icon", "MacroPopupButton9Name", "MacroPopupCancelButtonText", "MacroPopupNameLeft", "MacroPopupNameMiddle", "MacroPopupNameRight", "MacroPopupOkayButtonText", "MacroPopupScrollFrameScrollBarThumbTexture", -- functions: Blizzard_TalentUI "PlayerGlyphTab_OnClick", "PlayerGlyphTab_OnEvent", "PlayerGlyphTab_OnLoad", "PlayerSpecTab_Load", "PlayerSpecTab_OnClick", "PlayerSpecTab_OnEnter", "PlayerSpecTab_Update", "PlayerTalentFrameActivateButton_OnClick", "PlayerTalentFrameActivateButton_OnEvent", "PlayerTalentFrameActivateButton_OnHide", "PlayerTalentFrameActivateButton_OnLoad", "PlayerTalentFrameActivateButton_OnShow", "PlayerTalentFrameActivateButton_Update", "PlayerTalentFrameDownArrow_OnClick", "PlayerTalentFrameLearnButton_OnClick", "PlayerTalentFrameLearnButton_OnEnter", "PlayerTalentFrameResetButton_OnClick", "PlayerTalentFrameResetButton_OnEnter", "PlayerTalentFrameTab_OnClick", "PlayerTalentFrameTab_OnEnter", "PlayerTalentFrameTab_OnLoad", "PlayerTalentFrameTalent_OnClick", "PlayerTalentFrameTalent_OnEnter", "PlayerTalentFrameTalent_OnEvent", "PlayerTalentFrame_HideGlyphFrame", "PlayerTalentFrame_OnEvent", "PlayerTalentFrame_OnHide", "PlayerTalentFrame_OnLoad", "PlayerTalentFrame_OnShow", "PlayerTalentFrame_Open", "PlayerTalentFrame_OpenGlyphFrame", "PlayerTalentFrame_Refresh", "PlayerTalentFrame_ShowGlyphFrame", "PlayerTalentFrame_Toggle", "PlayerTalentFrame_ToggleGlyphFrame", "PlayerTalentFrame_Update", "PlayerTalentFrame_UpdateActiveSpec", "PlayerTalentFrame_UpdateControls", "PlayerTalentFrame_UpdateSpecs", "PlayerTalentFrame_UpdateTabs", "PlayerTalentTab_GetBestDefaultTab", "PlayerTalentTab_OnClick", "PlayerTalentTab_OnEvent", "PlayerTalentTab_OnLoad", -- tables: Blizzard_TalentUI "PlayerSpecTab1", "PlayerSpecTab2", "PlayerSpecTab3", "PlayerTalentFrame", "PlayerTalentFrameActivateButton", "PlayerTalentFrameActiveTalentGroupFrame", "PlayerTalentFrameArrowFrame", "PlayerTalentFrameCloseButton", "PlayerTalentFrameLearnButton", "PlayerTalentFramePointsBar", "PlayerTalentFramePreviewBar", "PlayerTalentFramePreviewBarFiller", "PlayerTalentFrameResetButton", "PlayerTalentFrameScrollButtonOverlay", "PlayerTalentFrameScrollChildFrame", "PlayerTalentFrameScrollFrame", "PlayerTalentFrameScrollFrameScrollBar", "PlayerTalentFrameScrollFrameScrollBarScrollDownButton", "PlayerTalentFrameScrollFrameScrollBarScrollUpButton", "PlayerTalentFrameStatusFrame", "PlayerTalentFrameTab1", "PlayerTalentFrameTab2", "PlayerTalentFrameTab3", "PlayerTalentFrameTab4", "PlayerTalentFrameTalent1", "PlayerTalentFrameTalent10", "PlayerTalentFrameTalent11", "PlayerTalentFrameTalent12", "PlayerTalentFrameTalent13", "PlayerTalentFrameTalent14", "PlayerTalentFrameTalent15", "PlayerTalentFrameTalent16", "PlayerTalentFrameTalent17", "PlayerTalentFrameTalent18", "PlayerTalentFrameTalent19", "PlayerTalentFrameTalent2", "PlayerTalentFrameTalent20", "PlayerTalentFrameTalent21", "PlayerTalentFrameTalent22", "PlayerTalentFrameTalent23", "PlayerTalentFrameTalent24", "PlayerTalentFrameTalent25", "PlayerTalentFrameTalent26", "PlayerTalentFrameTalent27", "PlayerTalentFrameTalent28", "PlayerTalentFrameTalent29", "PlayerTalentFrameTalent3", "PlayerTalentFrameTalent30", "PlayerTalentFrameTalent31", "PlayerTalentFrameTalent32", "PlayerTalentFrameTalent33", "PlayerTalentFrameTalent34", "PlayerTalentFrameTalent35", "PlayerTalentFrameTalent36", "PlayerTalentFrameTalent37", "PlayerTalentFrameTalent38", "PlayerTalentFrameTalent39", "PlayerTalentFrameTalent4", "PlayerTalentFrameTalent40", "PlayerTalentFrameTalent5", "PlayerTalentFrameTalent6", "PlayerTalentFrameTalent7", "PlayerTalentFrameTalent8", "PlayerTalentFrameTalent9", -- frames: Blizzard_TalentUI "PlayerTalentFrame", "PlayerTalentFrameCloseButton", "PlayerTalentFrameStatusFrame", "PlayerTalentFrameActivateButton", "PlayerTalentFramePointsBar", "PlayerTalentFramePreviewBar", "PlayerTalentFrameResetButton", "PlayerTalentFrameLearnButton", "PlayerTalentFramePreviewBarFiller", "PlayerTalentFrameScrollFrame", "PlayerTalentFrameScrollChildFrame", "PlayerTalentFrameTalent1", "PlayerTalentFrameTalent2", "PlayerTalentFrameTalent3", "PlayerTalentFrameTalent4", "PlayerTalentFrameTalent5", "PlayerTalentFrameTalent6", "PlayerTalentFrameTalent7", "PlayerTalentFrameTalent8", "PlayerTalentFrameTalent9", "PlayerTalentFrameTalent10", "PlayerTalentFrameTalent11", "PlayerTalentFrameTalent12", "PlayerTalentFrameTalent13", "PlayerTalentFrameTalent14", "PlayerTalentFrameTalent15", "PlayerTalentFrameTalent16", "PlayerTalentFrameTalent17", "PlayerTalentFrameTalent18", "PlayerTalentFrameTalent19", "PlayerTalentFrameTalent20", "PlayerTalentFrameTalent21", "PlayerTalentFrameTalent22", "PlayerTalentFrameTalent23", "PlayerTalentFrameTalent24", "PlayerTalentFrameTalent25", "PlayerTalentFrameTalent26", "PlayerTalentFrameTalent27", "PlayerTalentFrameTalent28", "PlayerTalentFrameTalent29", "PlayerTalentFrameTalent30", "PlayerTalentFrameTalent31", "PlayerTalentFrameTalent32", "PlayerTalentFrameTalent33", "PlayerTalentFrameTalent34", "PlayerTalentFrameTalent35", "PlayerTalentFrameTalent36", "PlayerTalentFrameTalent37", "PlayerTalentFrameTalent38", "PlayerTalentFrameTalent39", "PlayerTalentFrameTalent40", "PlayerTalentFrameArrowFrame", "PlayerTalentFrameScrollFrameScrollBar", "PlayerTalentFrameScrollFrameScrollBarScrollUpButton", "PlayerTalentFrameScrollFrameScrollBarScrollDownButton", "PlayerTalentFrameActiveTalentGroupFrame", "PlayerTalentFrameScrollButtonOverlay", "PlayerTalentFrameTab1", "PlayerTalentFrameTab2", "PlayerTalentFrameTab3", "PlayerTalentFrameTab4", "PlayerSpecTab1", "PlayerSpecTab2", "PlayerSpecTab3", -- widgets: Blizzard_TalentUI "PlayerSpecTab1Background", "PlayerSpecTab2Background", "PlayerSpecTab3Background", "PlayerTalentFrameActivateButtonLeft", "PlayerTalentFrameActivateButtonMiddle", "PlayerTalentFrameActivateButtonRight", "PlayerTalentFrameActivateButtonText", "PlayerTalentFrameActiveSpecTabHighlight", "PlayerTalentFrameArrow1", "PlayerTalentFrameArrow10", "PlayerTalentFrameArrow11", "PlayerTalentFrameArrow12", "PlayerTalentFrameArrow13", "PlayerTalentFrameArrow14", "PlayerTalentFrameArrow15", "PlayerTalentFrameArrow16", "PlayerTalentFrameArrow17", "PlayerTalentFrameArrow18", "PlayerTalentFrameArrow19", "PlayerTalentFrameArrow2", "PlayerTalentFrameArrow20", "PlayerTalentFrameArrow21", "PlayerTalentFrameArrow22", "PlayerTalentFrameArrow23", "PlayerTalentFrameArrow24", "PlayerTalentFrameArrow25", "PlayerTalentFrameArrow26", "PlayerTalentFrameArrow27", "PlayerTalentFrameArrow28", "PlayerTalentFrameArrow29", "PlayerTalentFrameArrow3", "PlayerTalentFrameArrow30", "PlayerTalentFrameArrow4", "PlayerTalentFrameArrow5", "PlayerTalentFrameArrow6", "PlayerTalentFrameArrow7", "PlayerTalentFrameArrow8", "PlayerTalentFrameArrow9", "PlayerTalentFrameBackgroundBottomLeft", "PlayerTalentFrameBackgroundBottomRight", "PlayerTalentFrameBackgroundTopLeft", "PlayerTalentFrameBackgroundTopRight", "PlayerTalentFrameBottomLeft", "PlayerTalentFrameBottomRight", "PlayerTalentFrameBranch1", "PlayerTalentFrameBranch10", "PlayerTalentFrameBranch11", "PlayerTalentFrameBranch12", "PlayerTalentFrameBranch13", "PlayerTalentFrameBranch14", "PlayerTalentFrameBranch15", "PlayerTalentFrameBranch16", "PlayerTalentFrameBranch17", "PlayerTalentFrameBranch18", "PlayerTalentFrameBranch19", "PlayerTalentFrameBranch2", "PlayerTalentFrameBranch20", "PlayerTalentFrameBranch21", "PlayerTalentFrameBranch22", "PlayerTalentFrameBranch23", "PlayerTalentFrameBranch24", "PlayerTalentFrameBranch25", "PlayerTalentFrameBranch26", "PlayerTalentFrameBranch27", "PlayerTalentFrameBranch28", "PlayerTalentFrameBranch29", "PlayerTalentFrameBranch3", "PlayerTalentFrameBranch30", "PlayerTalentFrameBranch4", "PlayerTalentFrameBranch5", "PlayerTalentFrameBranch6", "PlayerTalentFrameBranch7", "PlayerTalentFrameBranch8", "PlayerTalentFrameBranch9", "PlayerTalentFrameLearnButtonText", "PlayerTalentFramePointsBarBackground", "PlayerTalentFramePointsBarBorderLeft", "PlayerTalentFramePointsBarBorderMiddle", "PlayerTalentFramePointsBarBorderRight", "PlayerTalentFramePointsLeft", "PlayerTalentFramePointsMiddle", "PlayerTalentFramePointsRight", "PlayerTalentFramePortrait", "PlayerTalentFramePreviewBarButtonBorder", "PlayerTalentFramePreviewBarFillerButtonBackgroundLeft", "PlayerTalentFramePreviewBarFillerButtonBackgroundMiddle", "PlayerTalentFramePreviewBarFillerButtonBackgroundRight", "PlayerTalentFrameResetButtonText", "PlayerTalentFrameScrollFrameBackgroundBottom", "PlayerTalentFrameScrollFrameBackgroundTop", "PlayerTalentFrameScrollFrameScrollBarThumbTexture", "PlayerTalentFrameSpentPointsText", "PlayerTalentFrameStatusText", "PlayerTalentFrameTab1HighlightTexture", "PlayerTalentFrameTab1Left", "PlayerTalentFrameTab1LeftDisabled", "PlayerTalentFrameTab1Middle", "PlayerTalentFrameTab1MiddleDisabled", "PlayerTalentFrameTab1Right", "PlayerTalentFrameTab1RightDisabled", "PlayerTalentFrameTab1Text", "PlayerTalentFrameTab2HighlightTexture", "PlayerTalentFrameTab2Left", "PlayerTalentFrameTab2LeftDisabled", "PlayerTalentFrameTab2Middle", "PlayerTalentFrameTab2MiddleDisabled", "PlayerTalentFrameTab2Right", "PlayerTalentFrameTab2RightDisabled", "PlayerTalentFrameTab2Text", "PlayerTalentFrameTab3HighlightTexture", "PlayerTalentFrameTab3Left", "PlayerTalentFrameTab3LeftDisabled", "PlayerTalentFrameTab3Middle", "PlayerTalentFrameTab3MiddleDisabled", "PlayerTalentFrameTab3Right", "PlayerTalentFrameTab3RightDisabled", "PlayerTalentFrameTab3Text", "PlayerTalentFrameTab4HighlightTexture", "PlayerTalentFrameTab4Left", "PlayerTalentFrameTab4LeftDisabled", "PlayerTalentFrameTab4Middle", "PlayerTalentFrameTab4MiddleDisabled", "PlayerTalentFrameTab4Right", "PlayerTalentFrameTab4RightDisabled", "PlayerTalentFrameTab4Text", "PlayerTalentFrameTalent10Count", "PlayerTalentFrameTalent10IconTexture", "PlayerTalentFrameTalent10NormalTexture", "PlayerTalentFrameTalent10Rank", "PlayerTalentFrameTalent10RankBorder", "PlayerTalentFrameTalent10Slot", "PlayerTalentFrameTalent10Stock", "PlayerTalentFrameTalent11Count", "PlayerTalentFrameTalent11IconTexture", "PlayerTalentFrameTalent11NormalTexture", "PlayerTalentFrameTalent11Rank", "PlayerTalentFrameTalent11RankBorder", "PlayerTalentFrameTalent11Slot", "PlayerTalentFrameTalent11Stock", "PlayerTalentFrameTalent12Count", "PlayerTalentFrameTalent12IconTexture", "PlayerTalentFrameTalent12NormalTexture", "PlayerTalentFrameTalent12Rank", "PlayerTalentFrameTalent12RankBorder", "PlayerTalentFrameTalent12Slot", "PlayerTalentFrameTalent12Stock", "PlayerTalentFrameTalent13Count", "PlayerTalentFrameTalent13IconTexture", "PlayerTalentFrameTalent13NormalTexture", "PlayerTalentFrameTalent13Rank", "PlayerTalentFrameTalent13RankBorder", "PlayerTalentFrameTalent13Slot", "PlayerTalentFrameTalent13Stock", "PlayerTalentFrameTalent14Count", "PlayerTalentFrameTalent14IconTexture", "PlayerTalentFrameTalent14NormalTexture", "PlayerTalentFrameTalent14Rank", "PlayerTalentFrameTalent14RankBorder", "PlayerTalentFrameTalent14Slot", "PlayerTalentFrameTalent14Stock", "PlayerTalentFrameTalent15Count", "PlayerTalentFrameTalent15IconTexture", "PlayerTalentFrameTalent15NormalTexture", "PlayerTalentFrameTalent15Rank", "PlayerTalentFrameTalent15RankBorder", "PlayerTalentFrameTalent15Slot", "PlayerTalentFrameTalent15Stock", "PlayerTalentFrameTalent16Count", "PlayerTalentFrameTalent16IconTexture", "PlayerTalentFrameTalent16NormalTexture", "PlayerTalentFrameTalent16Rank", "PlayerTalentFrameTalent16RankBorder", "PlayerTalentFrameTalent16Slot", "PlayerTalentFrameTalent16Stock", "PlayerTalentFrameTalent17Count", "PlayerTalentFrameTalent17IconTexture", "PlayerTalentFrameTalent17NormalTexture", "PlayerTalentFrameTalent17Rank", "PlayerTalentFrameTalent17RankBorder", "PlayerTalentFrameTalent17Slot", "PlayerTalentFrameTalent17Stock", "PlayerTalentFrameTalent18Count", "PlayerTalentFrameTalent18IconTexture", "PlayerTalentFrameTalent18NormalTexture", "PlayerTalentFrameTalent18Rank", "PlayerTalentFrameTalent18RankBorder", "PlayerTalentFrameTalent18Slot", "PlayerTalentFrameTalent18Stock", "PlayerTalentFrameTalent19Count", "PlayerTalentFrameTalent19IconTexture", "PlayerTalentFrameTalent19NormalTexture", "PlayerTalentFrameTalent19Rank", "PlayerTalentFrameTalent19RankBorder", "PlayerTalentFrameTalent19Slot", "PlayerTalentFrameTalent19Stock", "PlayerTalentFrameTalent1Count", "PlayerTalentFrameTalent1IconTexture", "PlayerTalentFrameTalent1NormalTexture", "PlayerTalentFrameTalent1Rank", "PlayerTalentFrameTalent1RankBorder", "PlayerTalentFrameTalent1Slot", "PlayerTalentFrameTalent1Stock", "PlayerTalentFrameTalent20Count", "PlayerTalentFrameTalent20IconTexture", "PlayerTalentFrameTalent20NormalTexture", "PlayerTalentFrameTalent20Rank", "PlayerTalentFrameTalent20RankBorder", "PlayerTalentFrameTalent20Slot", "PlayerTalentFrameTalent20Stock", "PlayerTalentFrameTalent21Count", "PlayerTalentFrameTalent21IconTexture", "PlayerTalentFrameTalent21NormalTexture", "PlayerTalentFrameTalent21Rank", "PlayerTalentFrameTalent21RankBorder", "PlayerTalentFrameTalent21Slot", "PlayerTalentFrameTalent21Stock", "PlayerTalentFrameTalent22Count", "PlayerTalentFrameTalent22IconTexture", "PlayerTalentFrameTalent22NormalTexture", "PlayerTalentFrameTalent22Rank", "PlayerTalentFrameTalent22RankBorder", "PlayerTalentFrameTalent22Slot", "PlayerTalentFrameTalent22Stock", "PlayerTalentFrameTalent23Count", "PlayerTalentFrameTalent23IconTexture", "PlayerTalentFrameTalent23NormalTexture", "PlayerTalentFrameTalent23Rank", "PlayerTalentFrameTalent23RankBorder", "PlayerTalentFrameTalent23Slot", "PlayerTalentFrameTalent23Stock", "PlayerTalentFrameTalent24Count", "PlayerTalentFrameTalent24IconTexture", "PlayerTalentFrameTalent24NormalTexture", "PlayerTalentFrameTalent24Rank", "PlayerTalentFrameTalent24RankBorder", "PlayerTalentFrameTalent24Slot", "PlayerTalentFrameTalent24Stock", "PlayerTalentFrameTalent25Count", "PlayerTalentFrameTalent25IconTexture", "PlayerTalentFrameTalent25NormalTexture", "PlayerTalentFrameTalent25Rank", "PlayerTalentFrameTalent25RankBorder", "PlayerTalentFrameTalent25Slot", "PlayerTalentFrameTalent25Stock", "PlayerTalentFrameTalent26Count", "PlayerTalentFrameTalent26IconTexture", "PlayerTalentFrameTalent26NormalTexture", "PlayerTalentFrameTalent26Rank", "PlayerTalentFrameTalent26RankBorder", "PlayerTalentFrameTalent26Slot", "PlayerTalentFrameTalent26Stock", "PlayerTalentFrameTalent27Count", "PlayerTalentFrameTalent27IconTexture", "PlayerTalentFrameTalent27NormalTexture", "PlayerTalentFrameTalent27Rank", "PlayerTalentFrameTalent27RankBorder", "PlayerTalentFrameTalent27Slot", "PlayerTalentFrameTalent27Stock", "PlayerTalentFrameTalent28Count", "PlayerTalentFrameTalent28IconTexture", "PlayerTalentFrameTalent28NormalTexture", "PlayerTalentFrameTalent28Rank", "PlayerTalentFrameTalent28RankBorder", "PlayerTalentFrameTalent28Slot", "PlayerTalentFrameTalent28Stock", "PlayerTalentFrameTalent29Count", "PlayerTalentFrameTalent29IconTexture", "PlayerTalentFrameTalent29NormalTexture", "PlayerTalentFrameTalent29Rank", "PlayerTalentFrameTalent29RankBorder", "PlayerTalentFrameTalent29Slot", "PlayerTalentFrameTalent29Stock", "PlayerTalentFrameTalent2Count", "PlayerTalentFrameTalent2IconTexture", "PlayerTalentFrameTalent2NormalTexture", "PlayerTalentFrameTalent2Rank", "PlayerTalentFrameTalent2RankBorder", "PlayerTalentFrameTalent2Slot", "PlayerTalentFrameTalent2Stock", "PlayerTalentFrameTalent30Count", "PlayerTalentFrameTalent30IconTexture", "PlayerTalentFrameTalent30NormalTexture", "PlayerTalentFrameTalent30Rank", "PlayerTalentFrameTalent30RankBorder", "PlayerTalentFrameTalent30Slot", "PlayerTalentFrameTalent30Stock", "PlayerTalentFrameTalent31Count", "PlayerTalentFrameTalent31IconTexture", "PlayerTalentFrameTalent31NormalTexture", "PlayerTalentFrameTalent31Rank", "PlayerTalentFrameTalent31RankBorder", "PlayerTalentFrameTalent31Slot", "PlayerTalentFrameTalent31Stock", "PlayerTalentFrameTalent32Count", "PlayerTalentFrameTalent32IconTexture", "PlayerTalentFrameTalent32NormalTexture", "PlayerTalentFrameTalent32Rank", "PlayerTalentFrameTalent32RankBorder", "PlayerTalentFrameTalent32Slot", "PlayerTalentFrameTalent32Stock", "PlayerTalentFrameTalent33Count", "PlayerTalentFrameTalent33IconTexture", "PlayerTalentFrameTalent33NormalTexture", "PlayerTalentFrameTalent33Rank", "PlayerTalentFrameTalent33RankBorder", "PlayerTalentFrameTalent33Slot", "PlayerTalentFrameTalent33Stock", "PlayerTalentFrameTalent34Count", "PlayerTalentFrameTalent34IconTexture", "PlayerTalentFrameTalent34NormalTexture", "PlayerTalentFrameTalent34Rank", "PlayerTalentFrameTalent34RankBorder", "PlayerTalentFrameTalent34Slot", "PlayerTalentFrameTalent34Stock", "PlayerTalentFrameTalent35Count", "PlayerTalentFrameTalent35IconTexture", "PlayerTalentFrameTalent35NormalTexture", "PlayerTalentFrameTalent35Rank", "PlayerTalentFrameTalent35RankBorder", "PlayerTalentFrameTalent35Slot", "PlayerTalentFrameTalent35Stock", "PlayerTalentFrameTalent36Count", "PlayerTalentFrameTalent36IconTexture", "PlayerTalentFrameTalent36NormalTexture", "PlayerTalentFrameTalent36Rank", "PlayerTalentFrameTalent36RankBorder", "PlayerTalentFrameTalent36Slot", "PlayerTalentFrameTalent36Stock", "PlayerTalentFrameTalent37Count", "PlayerTalentFrameTalent37IconTexture", "PlayerTalentFrameTalent37NormalTexture", "PlayerTalentFrameTalent37Rank", "PlayerTalentFrameTalent37RankBorder", "PlayerTalentFrameTalent37Slot", "PlayerTalentFrameTalent37Stock", "PlayerTalentFrameTalent38Count", "PlayerTalentFrameTalent38IconTexture", "PlayerTalentFrameTalent38NormalTexture", "PlayerTalentFrameTalent38Rank", "PlayerTalentFrameTalent38RankBorder", "PlayerTalentFrameTalent38Slot", "PlayerTalentFrameTalent38Stock", "PlayerTalentFrameTalent39Count", "PlayerTalentFrameTalent39IconTexture", "PlayerTalentFrameTalent39NormalTexture", "PlayerTalentFrameTalent39Rank", "PlayerTalentFrameTalent39RankBorder", "PlayerTalentFrameTalent39Slot", "PlayerTalentFrameTalent39Stock", "PlayerTalentFrameTalent3Count", "PlayerTalentFrameTalent3IconTexture", "PlayerTalentFrameTalent3NormalTexture", "PlayerTalentFrameTalent3Rank", "PlayerTalentFrameTalent3RankBorder", "PlayerTalentFrameTalent3Slot", "PlayerTalentFrameTalent3Stock", "PlayerTalentFrameTalent40Count", "PlayerTalentFrameTalent40IconTexture", "PlayerTalentFrameTalent40NormalTexture", "PlayerTalentFrameTalent40Rank", "PlayerTalentFrameTalent40RankBorder", "PlayerTalentFrameTalent40Slot", "PlayerTalentFrameTalent40Stock", "PlayerTalentFrameTalent4Count", "PlayerTalentFrameTalent4IconTexture", "PlayerTalentFrameTalent4NormalTexture", "PlayerTalentFrameTalent4Rank", "PlayerTalentFrameTalent4RankBorder", "PlayerTalentFrameTalent4Slot", "PlayerTalentFrameTalent4Stock", "PlayerTalentFrameTalent5Count", "PlayerTalentFrameTalent5IconTexture", "PlayerTalentFrameTalent5NormalTexture", "PlayerTalentFrameTalent5Rank", "PlayerTalentFrameTalent5RankBorder", "PlayerTalentFrameTalent5Slot", "PlayerTalentFrameTalent5Stock", "PlayerTalentFrameTalent6Count", "PlayerTalentFrameTalent6IconTexture", "PlayerTalentFrameTalent6NormalTexture", "PlayerTalentFrameTalent6Rank", "PlayerTalentFrameTalent6RankBorder", "PlayerTalentFrameTalent6Slot", "PlayerTalentFrameTalent6Stock", "PlayerTalentFrameTalent7Count", "PlayerTalentFrameTalent7IconTexture", "PlayerTalentFrameTalent7NormalTexture", "PlayerTalentFrameTalent7Rank", "PlayerTalentFrameTalent7RankBorder", "PlayerTalentFrameTalent7Slot", "PlayerTalentFrameTalent7Stock", "PlayerTalentFrameTalent8Count", "PlayerTalentFrameTalent8IconTexture", "PlayerTalentFrameTalent8NormalTexture", "PlayerTalentFrameTalent8Rank", "PlayerTalentFrameTalent8RankBorder", "PlayerTalentFrameTalent8Slot", "PlayerTalentFrameTalent8Stock", "PlayerTalentFrameTalent9Count", "PlayerTalentFrameTalent9IconTexture", "PlayerTalentFrameTalent9NormalTexture", "PlayerTalentFrameTalent9Rank", "PlayerTalentFrameTalent9RankBorder", "PlayerTalentFrameTalent9Slot", "PlayerTalentFrameTalent9Stock", "PlayerTalentFrameTalentPointsText", "PlayerTalentFrameTitleText", "PlayerTalentFrameTopLeft", "PlayerTalentFrameTopRight", -- functions: Blizzard_TradeSkillUI "TradeSkillCollapseAllButton_OnClick", "TradeSkillFilterFrame_InvSlotName", "TradeSkillFilterFrame_LoadInvSlots", "TradeSkillFilterFrame_LoadSubClasses", "TradeSkillFilter_OnTextChanged", "TradeSkillFrameDecrement_OnClick", "TradeSkillFrameIncrement_OnClick", "TradeSkillFrame_Hide", "TradeSkillFrame_OnEvent", "TradeSkillFrame_OnLoad", "TradeSkillFrame_PlaytimeUpdate", "TradeSkillFrame_SetSelection", "TradeSkillFrame_Show", "TradeSkillFrame_ShowFailed", "TradeSkillFrame_Update", "TradeSkillInvSlotDropDownButton_OnClick", "TradeSkillInvSlotDropDown_Initialize", "TradeSkillInvSlotDropDown_OnLoad", "TradeSkillItem_OnEnter", "TradeSkillSkillButton_OnClick", "TradeSkillSubClassDropDownButton_OnClick", "TradeSkillSubClassDropDown_Initialize", "TradeSkillSubClassDropDown_OnLoad", -- tables: Blizzard_TradeSkillUI "TradeSkillCancelButton", "TradeSkillCollapseAllButton", "TradeSkillCreateAllButton", "TradeSkillCreateAllButtonMask", "TradeSkillCreateButton", "TradeSkillCreateButtonMask", "TradeSkillDecrementButton", "TradeSkillDetailScrollChildFrame", "TradeSkillDetailScrollFrame", "TradeSkillDetailScrollFrameScrollBar", "TradeSkillDetailScrollFrameScrollBarScrollDownButton", "TradeSkillDetailScrollFrameScrollBarScrollUpButton", "TradeSkillExpandButtonFrame", "TradeSkillFrame", "TradeSkillFrameAvailableFilterCheckButton", "TradeSkillFrameCloseButton", "TradeSkillFrameEditBox", "TradeSkillHighlightFrame", "TradeSkillIncrementButton", "TradeSkillInputBox", "TradeSkillInvSlotDropDown", "TradeSkillInvSlotDropDownButton", "TradeSkillLinkButton", "TradeSkillListScrollFrame", "TradeSkillListScrollFrameScrollBar", "TradeSkillListScrollFrameScrollBarScrollDownButton", "TradeSkillListScrollFrameScrollBarScrollUpButton", "TradeSkillListScrollFrameScrollChildFrame", "TradeSkillRankFrame", "TradeSkillReagent1", "TradeSkillReagent2", "TradeSkillReagent3", "TradeSkillReagent4", "TradeSkillReagent5", "TradeSkillReagent6", "TradeSkillReagent7", "TradeSkillReagent8", "TradeSkillSkill1", "TradeSkillSkill2", "TradeSkillSkill3", "TradeSkillSkill4", "TradeSkillSkill5", "TradeSkillSkill6", "TradeSkillSkill7", "TradeSkillSkill8", "TradeSkillSkillIcon", "TradeSkillSubClassDropDownButton", "TradeSkillTypeColor", "TradeSkillTypePrefix", "UIDROPDOWNMENU_INIT_MENU", -- frames: Blizzard_TradeSkillUI "TradeSkillFrame", "TradeSkillLinkButton", "TradeSkillFrameAvailableFilterCheckButton", "TradeSkillRankFrame", "TradeSkillFrameEditBox", "TradeSkillExpandButtonFrame", "TradeSkillCollapseAllButton", "TradeSkillInvSlotDropDown", "TradeSkillInvSlotDropDownButton", "TradeSkillSubClassDropDown", "TradeSkillSubClassDropDownButton", "TradeSkillHighlightFrame", "TradeSkillSkill1", "TradeSkillSkill2", "TradeSkillSkill3", "TradeSkillSkill4", "TradeSkillSkill5", "TradeSkillSkill6", "TradeSkillSkill7", "TradeSkillSkill8", "TradeSkillListScrollFrame", "TradeSkillListScrollFrameScrollChildFrame", "TradeSkillListScrollFrameScrollBar", "TradeSkillListScrollFrameScrollBarScrollUpButton", "TradeSkillListScrollFrameScrollBarScrollDownButton", "TradeSkillDetailScrollFrame", "TradeSkillDetailScrollChildFrame", "TradeSkillSkillIcon", "TradeSkillReagent1", "TradeSkillReagent2", "TradeSkillReagent3", "TradeSkillReagent4", "TradeSkillReagent5", "TradeSkillReagent6", "TradeSkillReagent7", "TradeSkillReagent8", "TradeSkillDetailScrollFrameScrollBar", "TradeSkillDetailScrollFrameScrollBarScrollUpButton", "TradeSkillDetailScrollFrameScrollBarScrollDownButton", "TradeSkillCreateButton", "TradeSkillCreateButtonMask", "TradeSkillCancelButton", "TradeSkillCreateAllButton", "TradeSkillCreateAllButtonMask", "TradeSkillDecrementButton", "TradeSkillInputBox", "TradeSkillIncrementButton", "TradeSkillFrameCloseButton", -- widgets: Blizzard_TradeSkillUI "TradeSkillCancelButtonText", "TradeSkillCollapseAllButtonHighlight", "TradeSkillCollapseAllButtonSubText", "TradeSkillCollapseAllButtonText", "TradeSkillCreateAllButtonText", "TradeSkillCreateButtonText", "TradeSkillDescription", "TradeSkillDetailHeaderLeft", "TradeSkillDetailScrollFrameBottom", "TradeSkillDetailScrollFrameScrollBarThumbTexture", "TradeSkillDetailScrollFrameTop", "TradeSkillExpandTabLeft", "TradeSkillExpandTabMiddle", "TradeSkillExpandTabRight", "TradeSkillFrameAvailableFilterCheckButtonText", "TradeSkillFrameBottomLeftTexture", "TradeSkillFrameBottomRightTexture", "TradeSkillFrameDummyString", "TradeSkillFrameEditBoxLeft", "TradeSkillFrameEditBoxMiddle", "TradeSkillFrameEditBoxRight", "TradeSkillFramePortrait", "TradeSkillFrameTitleText", "TradeSkillHighlight", "TradeSkillHorizontalBarLeft", "TradeSkillInputBoxLeft", "TradeSkillInputBoxMiddle", "TradeSkillInputBoxRight", "TradeSkillInvSlotDropDownButtonDisabledTexture", "TradeSkillInvSlotDropDownButtonHighlightTexture", "TradeSkillInvSlotDropDownButtonNormalTexture", "TradeSkillInvSlotDropDownButtonPushedTexture", "TradeSkillInvSlotDropDownLeft", "TradeSkillInvSlotDropDownMiddle", "TradeSkillInvSlotDropDownRight", "TradeSkillInvSlotDropDownText", "TradeSkillListScrollFrameScrollBarThumbTexture", "TradeSkillRankFrameBackground", "TradeSkillRankFrameBar", "TradeSkillRankFrameBorder", "TradeSkillRankFrameSkillRank", "TradeSkillReagent1Count", "TradeSkillReagent1IconTexture", "TradeSkillReagent1Name", "TradeSkillReagent1NameFrame", "TradeSkillReagent2Count", "TradeSkillReagent2IconTexture", "TradeSkillReagent2Name", "TradeSkillReagent2NameFrame", "TradeSkillReagent3Count", "TradeSkillReagent3IconTexture", "TradeSkillReagent3Name", "TradeSkillReagent3NameFrame", "TradeSkillReagent4Count", "TradeSkillReagent4IconTexture", "TradeSkillReagent4Name", "TradeSkillReagent4NameFrame", "TradeSkillReagent5Count", "TradeSkillReagent5IconTexture", "TradeSkillReagent5Name", "TradeSkillReagent5NameFrame", "TradeSkillReagent6Count", "TradeSkillReagent6IconTexture", "TradeSkillReagent6Name", "TradeSkillReagent6NameFrame", "TradeSkillReagent7Count", "TradeSkillReagent7IconTexture", "TradeSkillReagent7Name", "TradeSkillReagent7NameFrame", "TradeSkillReagent8Count", "TradeSkillReagent8IconTexture", "TradeSkillReagent8Name", "TradeSkillReagent8NameFrame", "TradeSkillReagentLabel", "TradeSkillRequirementLabel", "TradeSkillRequirementText", "TradeSkillSkill1Count", "TradeSkillSkill1Highlight", "TradeSkillSkill1SubText", "TradeSkillSkill1Text", "TradeSkillSkill2Count", "TradeSkillSkill2Highlight", "TradeSkillSkill2SubText", "TradeSkillSkill2Text", "TradeSkillSkill3Count", "TradeSkillSkill3Highlight", "TradeSkillSkill3SubText", "TradeSkillSkill3Text", "TradeSkillSkill4Count", "TradeSkillSkill4Highlight", "TradeSkillSkill4SubText", "TradeSkillSkill4Text", "TradeSkillSkill5Count", "TradeSkillSkill5Highlight", "TradeSkillSkill5SubText", "TradeSkillSkill5Text", "TradeSkillSkill6Count", "TradeSkillSkill6Highlight", "TradeSkillSkill6SubText", "TradeSkillSkill6Text", "TradeSkillSkill7Count", "TradeSkillSkill7Highlight", "TradeSkillSkill7SubText", "TradeSkillSkill7Text", "TradeSkillSkill8Count", "TradeSkillSkill8Highlight", "TradeSkillSkill8SubText", "TradeSkillSkill8Text", "TradeSkillSkillCooldown", "TradeSkillSkillIconCount", "TradeSkillSkillName", "TradeSkillSubClassDropDownButtonDisabledTexture", "TradeSkillSubClassDropDownButtonHighlightTexture", "TradeSkillSubClassDropDownButtonNormalTexture", "TradeSkillSubClassDropDownButtonPushedTexture", "TradeSkillSubClassDropDownLeft", "TradeSkillSubClassDropDownMiddle", "TradeSkillSubClassDropDownRight", "TradeSkillSubClassDropDownText", -- functions: Blizzard_TrainerUI "ClassTrainerCollapseAllButton_OnClick", "ClassTrainerFrameFilterDropDown_Initialize", "ClassTrainerFrameFilterDropDown_OnClick", "ClassTrainerFrameFilterDropDown_OnLoad", "ClassTrainerFrame_Hide", "ClassTrainerFrame_OnEvent", "ClassTrainerFrame_OnLoad", "ClassTrainerFrame_Show", "ClassTrainerFrame_Update", "ClassTrainerSkillButton_OnClick", "ClassTrainerTrainButton_OnClick", "ClassTrainer_HideSkillDetails", "ClassTrainer_SelectFirstLearnableSkill", "ClassTrainer_SetSelection", "ClassTrainer_SetSubTextColor", "ClassTrainer_SetToClassTrainer", "ClassTrainer_SetToTradeSkillTrainer", "ClassTrainer_ShowSkillDetails", -- tables: Blizzard_TrainerUI "ClassTrainerCancelButton", "ClassTrainerCollapseAllButton", "ClassTrainerDetailMoneyFrame", "ClassTrainerDetailMoneyFrameCopperButton", "ClassTrainerDetailMoneyFrameGoldButton", "ClassTrainerDetailMoneyFrameSilverButton", "ClassTrainerDetailScrollChildFrame", "ClassTrainerDetailScrollFrame", "ClassTrainerDetailScrollFrameScrollBar", "ClassTrainerDetailScrollFrameScrollBarScrollDownButton", "ClassTrainerDetailScrollFrameScrollBarScrollUpButton", "ClassTrainerExpandButtonFrame", "ClassTrainerFrame", "ClassTrainerFrameCloseButton", "ClassTrainerFrameFilterDropDown", "ClassTrainerFrameFilterDropDownButton", "ClassTrainerListScrollFrame", "ClassTrainerListScrollFrameScrollBar", "ClassTrainerListScrollFrameScrollBarScrollDownButton", "ClassTrainerListScrollFrameScrollBarScrollUpButton", "ClassTrainerListScrollFrameScrollChildFrame", "ClassTrainerMoneyFrame", "ClassTrainerMoneyFrameCopperButton", "ClassTrainerMoneyFrameGoldButton", "ClassTrainerMoneyFrameSilverButton", "ClassTrainerSkill1", "ClassTrainerSkill10", "ClassTrainerSkill11", "ClassTrainerSkill2", "ClassTrainerSkill3", "ClassTrainerSkill4", "ClassTrainerSkill5", "ClassTrainerSkill6", "ClassTrainerSkill7", "ClassTrainerSkill8", "ClassTrainerSkill9", "ClassTrainerSkillHighlightFrame", "ClassTrainerSkillIcon", "ClassTrainerTrainButton", -- frames: Blizzard_TrainerUI "ClassTrainerFrame", "ClassTrainerExpandButtonFrame", "ClassTrainerCollapseAllButton", "ClassTrainerFrameFilterDropDown", "ClassTrainerFrameFilterDropDownButton", "ClassTrainerSkillHighlightFrame", "ClassTrainerSkill1", "ClassTrainerSkill2", "ClassTrainerSkill3", "ClassTrainerSkill4", "ClassTrainerSkill5", "ClassTrainerSkill6", "ClassTrainerSkill7", "ClassTrainerSkill8", "ClassTrainerSkill9", "ClassTrainerSkill10", "ClassTrainerSkill11", "ClassTrainerListScrollFrame", "ClassTrainerListScrollFrameScrollChildFrame", "ClassTrainerListScrollFrameScrollBar", "ClassTrainerListScrollFrameScrollBarScrollUpButton", "ClassTrainerListScrollFrameScrollBarScrollDownButton", "ClassTrainerMoneyFrame", "ClassTrainerMoneyFrameCopperButton", "ClassTrainerMoneyFrameSilverButton", "ClassTrainerMoneyFrameGoldButton", "ClassTrainerDetailScrollFrame", "ClassTrainerDetailScrollChildFrame", "ClassTrainerSkillIcon", "ClassTrainerDetailMoneyFrame", "ClassTrainerDetailMoneyFrameCopperButton", "ClassTrainerDetailMoneyFrameSilverButton", "ClassTrainerDetailMoneyFrameGoldButton", "ClassTrainerDetailScrollFrameScrollBar", "ClassTrainerDetailScrollFrameScrollBarScrollUpButton", "ClassTrainerDetailScrollFrameScrollBarScrollDownButton", "ClassTrainerTrainButton", "ClassTrainerCancelButton", "ClassTrainerFrameCloseButton", -- widgets: Blizzard_TrainerUI "ClassTrainerCancelButtonText", "ClassTrainerCollapseAllButtonHighlight", "ClassTrainerCollapseAllButtonSubText", "ClassTrainerCollapseAllButtonText", "ClassTrainerCostLabel", "ClassTrainerDetailMoneyFrameCopperButtonText", "ClassTrainerDetailMoneyFrameGoldButtonText", "ClassTrainerDetailMoneyFrameSilverButtonText", "ClassTrainerDetailScrollFrameBottom", "ClassTrainerDetailScrollFrameScrollBarThumbTexture", "ClassTrainerDetailScrollFrameTop", "ClassTrainerExpandTabLeft", "ClassTrainerExpandTabMiddle", "ClassTrainerFrameBottomLeft", "ClassTrainerFrameBottomRight", "ClassTrainerFrameFilterDropDownButtonDisabledTexture", "ClassTrainerFrameFilterDropDownButtonHighlightTexture", "ClassTrainerFrameFilterDropDownButtonNormalTexture", "ClassTrainerFrameFilterDropDownButtonPushedTexture", "ClassTrainerFrameFilterDropDownLeft", "ClassTrainerFrameFilterDropDownMiddle", "ClassTrainerFrameFilterDropDownRight", "ClassTrainerFrameFilterDropDownText", "ClassTrainerFramePortrait", "ClassTrainerGreetingText", "ClassTrainerHorizontalBarLeft", "ClassTrainerListScrollFrameScrollBarThumbTexture", "ClassTrainerMoneyFrameCopperButtonText", "ClassTrainerMoneyFrameGoldButtonText", "ClassTrainerMoneyFrameSilverButtonText", "ClassTrainerNameText", "ClassTrainerSkill10Highlight", "ClassTrainerSkill10SubText", "ClassTrainerSkill10Text", "ClassTrainerSkill11Highlight", "ClassTrainerSkill11SubText", "ClassTrainerSkill11Text", "ClassTrainerSkill1Highlight", "ClassTrainerSkill1SubText", "ClassTrainerSkill1Text", "ClassTrainerSkill2Highlight", "ClassTrainerSkill2SubText", "ClassTrainerSkill2Text", "ClassTrainerSkill3Highlight", "ClassTrainerSkill3SubText", "ClassTrainerSkill3Text", "ClassTrainerSkill4Highlight", "ClassTrainerSkill4SubText", "ClassTrainerSkill4Text", "ClassTrainerSkill5Highlight", "ClassTrainerSkill5SubText", "ClassTrainerSkill5Text", "ClassTrainerSkill6Highlight", "ClassTrainerSkill6SubText", "ClassTrainerSkill6Text", "ClassTrainerSkill7Highlight", "ClassTrainerSkill7SubText", "ClassTrainerSkill7Text", "ClassTrainerSkill8Highlight", "ClassTrainerSkill8SubText", "ClassTrainerSkill8Text", "ClassTrainerSkill9Highlight", "ClassTrainerSkill9SubText", "ClassTrainerSkill9Text", "ClassTrainerSkillDescription", "ClassTrainerSkillHighlight", "ClassTrainerSkillName", "ClassTrainerSkillRequirements", "ClassTrainerSubSkillName", "ClassTrainerTrainButtonText", } ================================================ FILE: DBM-AQ20/AQ20Trash.lua ================================================ local mod = DBM:NewMod("AQ20Trash", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetModelID(15324) -- Qiraji Gladiator mod.isTrashMod = true mod:RegisterEvents( "SPELL_AURA_APPLIED 22997 25698 26079", "SPELL_AURA_REMOVED 22997", "SPELL_MISSED" ) mod:AddRangeFrameOption(10, 22997) --local eventsRegistered = false do-- Anubisath Plague/Explode - keep in sync - AQ40/AQ40Trash.lua AQ20/AQ20Trash.lua local warnPlague = mod:NewTargetAnnounce(22997, 2) local warnCauseInsanity = mod:NewTargetNoFilterAnnounce(26079, 2) local specWarnPlague = mod:NewSpecialWarningMoveAway(22997, nil, nil, nil, 1, 2) local yellPlague = mod:NewYell(22997) local specWarnExplode = mod:NewSpecialWarningRun(25698, "Melee", nil, 3, 4, 2) -- aura applied didn't seem to catch the reflects and other buffs function mod:SPELL_AURA_APPLIED(args) if args.spellId == 22997 then if args:IsPlayer() then specWarnPlague:Show() specWarnPlague:Play("runout") yellPlague:Yell() if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end else warnPlague:Show(args.destName) end elseif args.spellId == 25698 then specWarnExplode:Show() specWarnExplode:Play("justrun") elseif args.spellId == 26079 then warnCauseInsanity:CombinedShow(0.75, args.destName) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 22997 then if args:IsPlayer() and self.Options.RangeFrame then DBM.RangeCheck:Hide() end end end end do-- Anubisath Reflect - keep in sync - AQ40/AQ40Trash.lua AQ20/AQ20Trash.lua local specWarnShadowFrostReflect = mod:NewSpecialWarningReflect(19595, nil, nil, nil, 1, 2) local specWarnFireArcaneReflect = mod:NewSpecialWarningReflect(13022, nil, nil, nil, 1, 2) -- todo: thorns, shadow storm local playerGUID = UnitGUID("player") function mod:SPELL_MISSED(sourceGUID, _, _, _, destName, _, _, _, spellSchool, missType) if (missType == "REFLECT" or missType == "DEFLECT") and sourceGUID == playerGUID then if (spellSchool == 32 or spellSchool == 16) and self:AntiSpam(3, 1) then specWarnShadowFrostReflect:Show(destName) specWarnShadowFrostReflect:Play("stopattack") elseif (spellSchool == 4 or spellSchool == 64) and self:AntiSpam(3, 2) then specWarnFireArcaneReflect:Show(destName) specWarnFireArcaneReflect:Play("stopattack") end end -- if eventsRegistered then-- for AQ40 timer -- self:SPELL_DAMAGE(nil, nil, nil, destGUID) -- end end end ================================================ FILE: DBM-AQ20/Ayamiss.lua ================================================ local mod = DBM:NewMod("Ayamiss", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15369) mod:SetEncounterID(722) mod:SetModelID(15369) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 25725 8269", "SPELL_AURA_REMOVED 25725", "UNIT_HEALTH mouseover target" ) local warnPhase2 = mod:NewPhaseAnnounce(2) local warnParalyze = mod:NewTargetNoFilterAnnounce(25725, 3) local warnEnrage = mod:NewTargetNoFilterAnnounce(8269, 3) local timerParalyze = mod:NewTargetTimer(10, 25725, nil, nil, nil, 3) function mod:OnCombatStart() self:SetStage(1) end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25725 then warnParalyze:Show(args.destName) timerParalyze:Start(args.destName) elseif args.spellId == 8269 and args:IsDestTypeHostile() then warnEnrage:Show(args.destName) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 25725 then timerParalyze:Stop(args.destName) end end function mod:UNIT_HEALTH(uId) if self.vb.phase < 2 and self:GetUnitCreatureId(uId) == 15369 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.70 then self:SetStage(2) warnPhase2:Show() end end ================================================ FILE: DBM-AQ20/Buru.lua ================================================ local mod = DBM:NewMod("Buru", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15370) mod:SetEncounterID(721) mod:SetModelID(15370) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "CHAT_MSG_MONSTER_EMOTE" ) --TODO, see if CLASSIC data set has a spellID for pursuit before it can use generic alerts and voice pack suppot local WarnDismember = mod:NewStackAnnounce(96, 3, nil, "Tank", 3) local warnPursue = mod:NewAnnounce("WarnPursue", 3, 12021, false, 2) local specWarnDismember = mod:NewSpecialWarningStack(96, nil, 5, nil, nil, 1, 6) local specWarnDismemberTaunt = mod:NewSpecialWarningTaunt(96, nil, nil, nil, 1, 2) local specWarnPursue = mod:NewSpecialWarning("SpecWarnPursue", nil, nil, nil, 4, 2) local timerDismember = mod:NewTargetTimer(10, 96, nil, "Tank", 3, 5, nil, DBM_COMMON_L.TANK_ICON) function mod:OnCombatStart() if not self:IsTrivial(80) then self:RegisterShortTermEvents( "SPELL_AURA_APPLIED 96", "SPELL_AURA_APPLIED_DOSE 96", "SPELL_AURA_REMOVED 96" ) end end function mod:OnCombatEnd() self:UnregisterShortTermEvents() end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 96 then local amount = args.amount or 1 timerDismember:Start(args.destName) if amount >= 5 then if args:IsPlayer() then specWarnDismember:Show(amount) specWarnDismember:Play("stackhigh") elseif not DBM:UnitDebuff("player", args.spellName) and not UnitIsDeadOrGhost("player") then specWarnDismemberTaunt:Show(args.destName) specWarnDismemberTaunt:Play("tauntboss") else WarnDismember:Show(args.destName, amount) end else WarnDismember:Show(args.destName, amount) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args.spellId == 96 then timerDismember:Stop(args.destName) end end function mod:CHAT_MSG_MONSTER_EMOTE(msg, _, _, _, target) if (msg:find(L.PursueEmote) or msg == L.PursueEmote) and target then target = DBM:GetUnitFullName(target) if target == UnitName("player") then specWarnPursue:Show() specWarnPursue:Play("justrun") else warnPursue:Show(target) end end end ================================================ FILE: DBM-AQ20/DBM-AQ20.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ruins of Ahn'Qiraj|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ruinen von Ahn'Qiraj|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ruinas de Ahn'Qiraj|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ruinas de Ahn'Qiraj|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Ruines d'Ahn'Qiraj|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Руины Ан'Киража|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0안퀴라즈 폐허|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0安其拉废墟|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0安其拉廢墟|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMAQ20_AllSavedVars ## SavedVariablesPerCharacter: DBMAQ20_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: Classic ## X-DBM-StatTypes: normal ## X-DBM-Mod-Name: The Ruins of Ahn'Qiraj ## X-DBM-Mod-Name-zhCN: 安其拉废墟 ## X-DBM-Mod-Name-ruRU: Руины Ан'Киража ## X-DBM-Mod-Name-esES: Ruinas de Ahn'Qiraj ## X-DBM-Mod-MapID: 718 ## X-DBM-Mod-Sort: 1103 ## X-DBM-Mod-LoadZone: Ruins of Ahn'Qiraj ## X-DBM-Mod-LoadZone-esES: Ruinas de Ahn'Qiraj ## X-DBM-Mod-LoadZone-ruRU: Руины Ан'Киража ## X-DBM-Mod-LoadZone-frFR: Ruines d'Ahn'Qiraj ## X-DBM-Mod-LoadZone-esMX: Ruinas de Ahn'Qiraj ## X-DBM-Mod-LoadZone-zhTW: 安其拉廢墟 ## X-DBM-Mod-LoadZone-zhCN: 安其拉废墟 ## X-DBM-Mod-LoadZone-koKR: 안퀴라즈 폐허 ## X-DBM-Mod-LoadZone-deDE: Ruinen von Ahn'Qiraj localization.en.lua localization.de.lua localization.fr.lua localization.es.lua localization.mx.lua localization.ru.lua localization.kr.lua localization.tw.lua localization.cn.lua AQ20Trash.lua Kurinnaxx.lua Rajaxx.lua Moam.lua Buru.lua Ayamiss.lua Ossirian.lua ================================================ FILE: DBM-AQ20/Kurinnaxx.lua ================================================ local mod = DBM:NewMod("Kurinnaxx", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15348) mod:SetEncounterID(718) mod:SetModelID(15348) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CREATE 25648", "SPELL_AURA_APPLIED 25646 26527", "SPELL_AURA_APPLIED_DOSE 25646", "SPELL_AURA_REMOVED 25646" ) local warnWound = mod:NewStackAnnounce(25646, 2, nil, "Tank", 2) local warnSandTrap = mod:NewTargetNoFilterAnnounce(25656, 3) local warnFrenzy = mod:NewTargetNoFilterAnnounce(26527, 3) local specWarnSandTrap = mod:NewSpecialWarningYou(25656, nil, nil, nil, 1, 2) local yellSandTrap = mod:NewYell(25656) local specWarnWound = mod:NewSpecialWarningStack(25646, nil, 5, nil, nil, 1, 6) local specWarnWoundTaunt= mod:NewSpecialWarningTaunt(25646, nil, nil, nil, 1, 2) local timerWound = mod:NewTargetTimer(15, 25646, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON) local timerSandTrapCD = mod:NewCDTimer(8, 25656, nil, nil, nil, 3) --mod:AddSpeedClearOption("AQ20", true) --mod.vb.firstEngageTime = nil function mod:OnCombatStart(delay) timerSandTrapCD:Start(8-delay) --[[ if not self.vb.firstEngageTime then self.vb.firstEngageTime = time() if self.Options.FastestClear and self.Options.SpeedClearTimer then --Custom bar creation that's bound to core, not mod, so timer doesn't stop when mod stops it's own timers DBT:CreateBar(self.Options.FastestClear, DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT, "Interface\\Icons\\Spell_Nature_TimeStop") end end--]] end function mod:SPELL_CREATE(args) if args.spellId == 25648 then timerSandTrapCD:Start() if args:IsPlayerSource() then specWarnSandTrap:Show() specWarnSandTrap:Play("targetyou") yellSandTrap:Yell() else warnSandTrap:Show(args.sourceName) end end end function mod:SPELL_AURA_APPLIED(args) --if args.spellId == 25646 and not self:IsTrivial(80) then if args.spellID == 25646 then local amount = args.amount or 1 timerWound:Start(args.destName) if amount >= 5 then if args:IsPlayer() then specWarnWound:Show(amount) specWarnWound:Play("stackhigh") elseif not DBM:UnitDebuff("player", args.spellName) and not UnitIsDeadOrGhost("player") then specWarnWoundTaunt:Show(args.destName) specWarnWoundTaunt:Play("tauntboss") else warnWound:Show(args.destName, amount) end else warnWound:Show(args.destName, amount) end elseif args.spellId == 26527 and args:IsDestTypeHostile() then warnFrenzy:Show(args.destName) end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args.spellId == 25646 then timerWound:Stop(args.destName) end end ================================================ FILE: DBM-AQ20/Moam.lua ================================================ local mod = DBM:NewMod("Moam", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15340) mod:SetEncounterID(720) mod:SetModelID(15340) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 25685", "SPELL_AURA_REMOVED 25685" ) --Energize is mode boss goes in during Summon Mana Fiend Phase --TODO, update timrs on mana drains/etc --TODO, verify if arcane eruption wll always be the same --"Arcane Eruption-25672-npc:15340 = pull:325.8", -- [1] local warnEnergize = mod:NewSpellAnnounce(25685, 3) local timerEnergize = mod:NewNextTimer(90, 25685, nil, nil, nil, 6) local timerEnergizeDur = mod:NewBuffActiveTimer(90, 25685, nil, nil, nil, 6) function mod:OnCombatStart(delay) timerEnergize:Start(-delay) end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25685 and args:IsDestTypeHostile() then warnEnergize:Show() timerEnergizeDur:Start() end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 25685 and args:IsDestTypeHostile() then timerEnergizeDur:Stop() timerEnergize:Start() end end ================================================ FILE: DBM-AQ20/Ossirian.lua ================================================ local mod = DBM:NewMod("Ossirian", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15339) mod:SetEncounterID(723) mod:SetModelID(15339) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 25176 25189 25177 25178 25180 25181 25183", "SPELL_AURA_REMOVED 25189" ) local warnSupreme = mod:NewSpellAnnounce(25176, 3) local warnCyclone = mod:NewTargetNoFilterAnnounce(25189, 4) local warnVulnerable = mod:NewAnnounce("WarnVulnerable", 3, "Interface\\Icons\\INV_Enchant_EssenceMagicLarge") local timerCyclone = mod:NewTargetTimer(10, 25189, nil, nil, nil, 3) local timerVulnerable = mod:NewTimer(45, "TimerVulnerable", "Interface\\Icons\\INV_Enchant_EssenceMagicLarge", nil, nil, 6) -- local firstBossMod = DBM:GetModByName("Kurinnaxx") --function mod:OnCombatStart(delay, yellTriggered) --end --[[ function mod:OnCombatEnd(wipe) if not wipe then DBT:CancelBar(DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT) if firstBossMod.vb.firstEngageTime then local thisTime = time() - firstBossMod.vb.firstEngageTime if thisTime and thisTime > 0 then if not firstBossMod.Options.FastestClear then --First clear, just show current clear time DBM:AddMsg(DBM_CORE_L.RAID_DOWN:format("AQ20", DBM:strFromTime(thisTime))) firstBossMod.Options.FastestClear = thisTime elseif (firstBossMod.Options.FastestClear > thisTime) then --Update record time if this clear shorter than current saved record time and show users new time, compared to old time DBM:AddMsg(DBM_CORE_L.RAID_DOWN_NR:format("AQ20", DBM:strFromTime(thisTime), DBM:strFromTime(firstBossMod.Options.FastestClear))) firstBossMod.Options.FastestClear = thisTime else --Just show this clear time, and current record time (that you did NOT beat) DBM:AddMsg(DBM_CORE_L.RAID_DOWN_L:format("AQ20", DBM:strFromTime(thisTime), DBM:strFromTime(firstBossMod.Options.FastestClear))) end end firstBossMod.vb.firstEngageTime = nil end end end --]] function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25176 then warnSupreme:Show() elseif args.spellId == 25189 then warnCyclone:Show(args.destName) timerCyclone:Start(args.destName) elseif args:IsSpellID(25177, 25178, 25180, 25181, 25183) then warnVulnerable:Show(args.spellName) timerVulnerable:Show(args.spellName) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 25189 then timerCyclone:Stop(args.destName) end end ================================================ FILE: DBM-AQ20/Rajaxx.lua ================================================ local mod = DBM:NewMod("Rajaxx", "DBM-AQ20", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15341) mod:SetEncounterID(719) mod:SetModelID(15341) mod:RegisterCombat("combat") mod:RegisterEvents(--An exception to not use incombat events, cause boss might not engage until after his waves "SPELL_AURA_APPLIED 25471", "SPELL_CAST_SUCCESS 26550 25599", "CHAT_MSG_MONSTER_YELL" ) local warnWave = mod:NewAnnounce("WarnWave", 2) local warnOrder = mod:NewTargetNoFilterAnnounce(25471) local warnCloud = mod:NewSpellAnnounce(26550) local warnThundercrash = mod:NewSpellAnnounce(25599) local specWarnOrder = mod:NewSpecialWarningYou(25471, nil, nil, nil, 1, 2) local yellOrder = mod:NewYell(25471) local timerOrder = mod:NewTargetTimer(10, 25471, nil, nil, nil, 3) local timerCloud = mod:NewBuffActiveTimer(15, 26550, nil, nil, nil, 3)--? Good color? function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25471 then timerOrder:Start(args.destName) if args:IsPlayer() then specWarnOrder:Show() specWarnOrder:Play("targetyou") yellOrder:Yell() else warnOrder:Show(args.destName) end end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26550 then warnCloud:Show() timerCloud:Start() elseif args.spellId == 25599 then warnThundercrash:Show() end end function mod:CHAT_MSG_MONSTER_YELL(msg)--some of these yells have line breaks that message match doesn't grab, so will try find. if msg == L.Wave12 or msg:find(L.Wave12) or msg == L.Wave12Alt or msg:find(L.Wave12Alt) then self:SendSync("Wave", "1, 2") elseif msg == L.Wave3 or msg:find(L.Wave3) then self:SendSync("Wave", 3) elseif msg == L.Wave4 or msg:find(L.Wave4) then self:SendSync("Wave", 4) elseif msg == L.Wave5 or msg:find(L.Wave5) then self:SendSync("Wave", 5) elseif msg == L.Wave6 or msg:find(L.Wave6) then self:SendSync("Wave", 6) elseif msg == L.Wave7 or msg:find(L.Wave7) then self:SendSync("Wave", 7) elseif msg == L.Wave8 or msg:find(L.Wave8) then self:SendSync("Wave", 8) end end function mod:OnSync(msg, count) if DBM:GetCurrentArea() ~= 509 then return end--Block syncs if not in the zone if msg == "Wave" then warnWave:Show(count) end end ================================================ FILE: DBM-AQ20/localization.cn.lua ================================================ if GetLocale() ~= "zhCN" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "库林纳克斯" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "拉贾克斯将军" }) L:SetWarningLocalization({ WarnWave = "进攻次数%s", }) L:SetOptionLocalization({ WarnWave = "显示下一次进攻" }) L:SetMiscLocalization({ Wave12 = "拉贾克斯,还记得我说过要杀光其它虫子之后再干掉你么?", Wave12Alt = "它们来了。尽量别被它们干掉,新兵。", Wave3 = "我们复仇的时刻到了!让敌人的内心被黑暗吞噬吧!", Wave4 = "我们不用再呆在这座石墙里面了!我们很快就能报仇了!在我们的怒火面前,就连那些龙也会战栗!", Wave5 = "让敌人胆战心惊吧!让他们在恐惧中死去!", Wave6 = "鹿盔将会呜咽着哀求我饶他一命,就像他那懦弱的儿子一样!一千年来的屈辱会在今天洗清!", Wave7 = "范达尔!你的死期到了!藏到翡翠梦境里去吧,祈祷我们永远都找不到你!", Wave8 = "无礼的蠢货!我会亲自要了你们的命!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "莫阿姆" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "吞咽者布鲁" }) L:SetWarningLocalization({ WarnPursue = ">%s<被追击了", SpecWarnPursue = "你被追击了", WarnDismember = ">%2$s<中了%1$s(%s)" }) L:SetOptionLocalization({ WarnPursue = "提示被追击的目标", SpecWarnPursue = "当你被追击的时候显示特別警告" }) L:SetMiscLocalization({ PursueEmote = "%s凝视着" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "狩猎者阿亚米斯" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "无疤者奥斯里安" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "提示虛弱", TimerVulnerable = "为虛弱显示计时器" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20:全程计时" }) ================================================ FILE: DBM-AQ20/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Kurinnaxx" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "General Rajaxx" }) L:SetWarningLocalization({ WarnWave = "Welle %s" }) L:SetOptionLocalization({ WarnWave = "Zeige Meldung für nächste Angriffswelle" }) L:SetMiscLocalization({ Wave12 = "Hier kommen sie. Bleibt am Leben, Welpen.", Wave12Alt = "Erinnerst du dich daran, Rajaxx, wann ich dir das letzte Mal sagte, ich würde dich töten?", Wave3 = "Die Zeit der Vergeltung ist gekommen! Lasst uns die Herzen unserer Feinde mit Dunkelheit füllen!", Wave4 = "Wir werden nicht länger hinter verbarrikadierten Toren und Mauern aus Stein ausharren! Die Rache wird unser sein! Selbst die Drachen werden im Angesicht unseres Zornes erzittern!", Wave5 = "Wir kennen keine Furcht! Und wir werden unseren Feinden den Tod bringen!", Wave6 = "Staghelm wird winseln und um sein Leben betteln, genau wie sein räudiger Sohn! Eintausend Jahre der Ungerechtigkeit werden heute enden!", Wave7 = "Fandral! Deine Zeit ist gekommen! Geh und verstecke dich im Smaragdgrünen Traum, und bete, dass wir dich nie finden werden!", Wave8 = "Unverschämter Narr! Ich werde Euch höchstpersönlich töten!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Moam" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Buru der Verschlinger" }) L:SetWarningLocalization({ WarnPursue = "Verfolgung auf >%s<", SpecWarnPursue = "Du wirst verfolgt", WarnDismember = "%s auf >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Verkünde Ziele von Verfolgung", SpecWarnPursue = "Spezialwarnung, wenn du verfolgt wirst" }) L:SetMiscLocalization({ PursueEmote = "%s behält %s im Blickfeld!"--MIGHT NOT WORK }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Ayamiss der Jäger" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Ossirian der Narbenlose" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Verkünde Schwächen", TimerVulnerable = "Dauer der Schwächen anzeigen" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20 Trash" }) ================================================ FILE: DBM-AQ20/localization.en.lua ================================================ local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Kurinnaxx" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "General Rajaxx" }) L:SetWarningLocalization({ WarnWave = "Wave %s" }) L:SetOptionLocalization({ WarnWave = "Show announce for next incoming wave" }) L:SetMiscLocalization({ Wave12 = "They come now. Try not to get yourself killed, young blood.", Wave12Alt = "Remember, Rajaxx, when I said I'd kill you last?", Wave3 = "The time of our retribution is at hand! Let darkness reign in the hearts of our enemies!", Wave4 = "No longer will we wait behind barred doors and walls of stone! No longer will our vengeance be denied! The dragons themselves will tremble before our wrath!", Wave5 = "Fear is for the enemy! Fear and death!", Wave6 = "Staghelm will whimper and beg for his life, just as his whelp of a son did! One thousand years of injustice will end this day!", Wave7 = "Fandral! Your time has come! Go and hide in the Emerald Dream and pray we never find you!", Wave8 = "Impudent fool! I will kill you myself!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Moam" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Buru the Gorger" }) L:SetWarningLocalization({ WarnPursue = "Pursue on >%s<", SpecWarnPursue = "Pursue on you", WarnDismember = "%s on >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Announce pursue targets", SpecWarnPursue = "Show special warning when you are being pursued", WarnDismember = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(96) }) L:SetMiscLocalization({ PursueEmote = "%s sets eyes on" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Ayamiss the Hunter" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Ossirian the Unscarred" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Announce weaknesses", TimerVulnerable = "Show timer for weaknesses" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20 Trash" }) ================================================ FILE: DBM-AQ20/localization.es.lua ================================================ if GetLocale() ~= "esES" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Kurinnaxx" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "General Rajaxx" }) L:SetWarningLocalization({ WarnWave = "Oleada %s" }) L:SetOptionLocalization({ WarnWave = "Mostrar aviso previo para la siguiente oleada" }) L:SetMiscLocalization({ Wave12 = "Ahí vienen. Intenta que no te maten,",--Followed by 'chico' or 'chica' Wave12Alt = "Rajaxx, ¿recuerdas que te dije que serías el último en morir?", Wave3 = "¡Se acerca la hora de imponer nuestro castigo! ¡Que la oscuridad reine en los corazones de nuestros enemigos!", Wave4 = "¡No nos quedaremos esperando por más tiempo tras puertas con barrotes ni muros de piedra! ¡Ya no nos negarán nuestra venganza! ¡Hasta los propios dragones temblarán antes nuestra ira!", Wave5 = "¡El miedo es para el enemigo! ¡El miedo y la muerte!", Wave6 = "¡Corzocelada lloriqueará y suplicará por su vida, al igual que hizo el mocoso de su cría! ¡Hoy se pondrá fin a mil años de injusticia!", Wave7 = "¡Fandral! ¡Tu hora ha llegado! ¡Ve y escóndete en el Sueño Esmeralda y reza para que nunca te encontremos!", Wave8 = "¡Idiota insolente! ¡Te mataré yo mismo!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Moam" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Buru el Manducador" }) L:SetWarningLocalization({ WarnPursue = "Persiguiendo a >%s<", SpecWarnPursue = "Buru te está persiguiendo", WarnDismember = "%s en >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Anunciar objetivos de la persecución de Buru", SpecWarnPursue = "Mostrar aviso especial cuando te persiga el jefe", WarnDismember = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(96) }) L:SetMiscLocalization({ PursueEmote = "%s mira a" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Ayamiss el Cazador" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Osirio el Sinmarcas" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Anunciar debilidades", TimerVulnerable = "Mostrar temporizador para la duración de las debilidades" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20: Bichos" }) ================================================ FILE: DBM-AQ20/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Kurinnaxx" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "Général Rajaxx" }) L:SetWarningLocalization({ WarnWave = "Vague %s" }) L:SetOptionLocalization({ WarnWave = "Afficher l'annonce pour la prochaine vague entrante" }) L:SetMiscLocalization({ Wave12 = "Ils arrivent. Essayez de ne pas vous faire tuer, bleusaille.", Wave12Alt = "Alors, Rajaxx, tu te souviens que j’avais dit que je te tuerais le dernier ?", Wave3 = "L’heure de notre vengeance sonne enfin ! Que les ténèbres règnent dans le cœur de nos ennemis !", Wave4 = "C’en est fini d’attendre derrière des portes fermées et des murs de pierre ! Nous ne serons pas privés de notre vengeance ! Les dragons eux-mêmes trembleront devant notre courroux !", Wave5 = "La peur est pour l’ennemi ! La peur et la mort !", Wave6 = "Forteramure pleurnichera pour avoir la vie sauve, comme l’a fait son morveux de fils ! En ce jour, mille ans d’injustice s’achèvent !", Wave7 = "Fandral ! Ton heure est venue ! Va te cacher dans le Rêve d’Emeraude, et prie pour que nous ne te trouvions jamais !", Wave8 = "Imbécile imprudent ! Je vais te tuer moi-même !" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Moam" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Buru Grandgosier" }) L:SetWarningLocalization({ WarnPursue = "Poursuivre >%s<", SpecWarnPursue = "Te poursuivre", WarnDismember = "%s sur >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Annoncer des cibles de poursuite", SpecWarnPursue = "Afficher un avertissement spécial lorsque vous êtes poursuivi", WarnDismember = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(96) }) L:SetMiscLocalization({ PursueEmote = "%s pose ses yeux sur" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Ayamiss le Chasseur" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Ossirian l'Intouché" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Annoncer les sensibilités", TimerVulnerable = "Afficher le timer pour les sensibilités" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20: Ennemis communs" }) ================================================ FILE: DBM-AQ20/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "쿠린낙스" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "장군 라작스" }) L:SetWarningLocalization({ WarnWave = "공격 #%s" }) L:SetOptionLocalization({ WarnWave = "다음 공격 알림" }) L:SetMiscLocalization({ Wave12 = "그들이 오고 있다. 자신의 몸을 지키도록 하라!", Wave12Alt = "Remember, Rajaxx, when I said I'd kill you last?", Wave3 = "응보의 날이 다가왔다! 암흑이 적들의 마음을 지배하리라!", Wave4 = "더는 돌벽과 성문 뒤에서 기다릴 수 없다! 복수의 기회를 놓칠 수 없다. 우리가 분노를 터뜨리는 날 용족은 두려움에 떨리라.", Wave5 = "적에게 공포와 죽음의 향연을!", Wave6 = "스태그헬름은 흐느끼며 목숨을 구걸하리라. 그 아들놈이 그랬던 것처럼! 천 년의 한을 풀리라! 오늘에서야!", Wave7 = "판드랄! 때가 왔다! 에메랄드의 꿈속에 숨어서 기도나 올려라!", Wave8 = "건방진... 내 친히 너희를 처치해주마!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "모암" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "먹보 부루" }) L:SetWarningLocalization({ WarnPursue = "추적 : >%s<", SpecWarnPursue = "당신을 추적!", WarnDismember = "%s : >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "추적 대상 알림 보기", SpecWarnPursue = "추적 대상이 된 경우 특수 알림 보기" }) L:SetMiscLocalization({ PursueEmote = "노려봅니다!" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "사냥꾼 아야미스" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "무적의 오시리안" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "약화 알림 보기", TimerVulnerable = "약화 바 보기" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "안퀴20 일반몹" }) ================================================ FILE: DBM-AQ20/localization.mx.lua ================================================ if GetLocale() ~= "esMX" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Kurinnaxx" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "General Rajaxx" }) L:SetWarningLocalization({ WarnWave = "Oleada %s" }) L:SetOptionLocalization({ WarnWave = "Mostrar aviso previo para la siguiente oleada" }) L:SetMiscLocalization({ Wave12 = "Ahí vienen. Intenta que no te maten,",--Followed by 'chico' or 'chica' Wave12Alt = "Rajaxx, ¿recuerdas que te dije que serías el último en morir?", Wave3 = "¡La hora de las recompensas está próxima! ¡Que la oscuridad reine en el corazón de nuestros enemigos!", Wave4 = "¡No volveremos a esperar detrás de rejas y muros de piedra! ¡Nunca más podrán negarnos nuestra venganza! ¡Hasta los dragones temblarán frente a nuestra ira!", Wave5 = "¡El miedo es para el enemigo! ¡Miedo y muerte!", Wave6 = "¡Corzocelada llorará y rogará por su vida, igual que lo hizo su débil hijo! ¡Hoy acabará un milenio lleno de injusticia!", Wave7 = "¡Fandral! ¡Ha llegado tu hora! ¡Ve y escóndete en el Sueño Esmeralda y reza para que nunca te encontremos!", Wave8 = "¡Loco imprudente! ¡Acabaré contigo yo mismo!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Moam" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Buru el Manducador" }) L:SetWarningLocalization({ WarnPursue = "Persiguiendo a >%s<", SpecWarnPursue = "Buru te está persiguiendo", WarnDismember = "%s en >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Anunciar objetivos de la persecución de Buru", SpecWarnPursue = "Mostrar aviso especial cuando te persiga el jefe", WarnDismember = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(96) }) L:SetMiscLocalization({ PursueEmote = "¡%s mira a" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Ayamiss el Cazador" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Osirio el Sinmarcas" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Anunciar debilidades", TimerVulnerable = "Mostrar temporizador para la duración de las debilidades" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20: Bichos" }) ================================================ FILE: DBM-AQ20/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "Куриннакс" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "Генерал Раджакс" }) L:SetWarningLocalization({ WarnWave = "Волна %s", }) L:SetOptionLocalization({ WarnWave = "Показывать предупреждение о следующей волне" }) L:SetMiscLocalization({ Wave1 = "Они пришли. Постарайся не дать себя убить, ", Wave12Alt = "Раджакс, напомни, когда я в последний раз обещал тебя убить?", Wave3 = "Час возмездия близок! Да охватит мрак сердца наших врагов!", Wave4 = "Мы не будем больше ждать за закрытыми дверьми и каменными стенами! Мы не будем больше отказываться от возмездия! Даже драконы содрогнутся перед нашим гневом!", Wave5 = "Пусть наши враги трепещут! Смерть им!", Wave6 = "Олений Шлем будет скулить и молить о пощаде, в точности как его сопливый сынок! Тысячелетняя несправедливость сегодня закончится!", Wave7 = "Фэндрал! Твой час пробил! Иди же, прячься в изумрудном сне и молись, чтобы мы до тебя не добрались!", Wave8 = "Настырная тварь! Я сам тебя убью!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "Моам" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "Буру Ненасытный" }) L:SetWarningLocalization({ WarnPursue = "Преследует >%s<", SpecWarnPursue = "Преследует вас!", WarnDismember = "%s на >%s< (%s)" }) L:SetOptionLocalization({ WarnPursue = "Называть преследуемые цели", SpecWarnPursue = "Показывать специальное предупреждение, когда преследование на вас", WarnDismember = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(96) }) L:SetMiscLocalization({ PursueEmote = "%s смотрит на" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "Аямисса Охотница" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "Оссириан Неуязвимый" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "Объявлять слабость", TimerVulnerable = "Показывать таймер до слабости" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "АК20: Треш" }) ================================================ FILE: DBM-AQ20/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L --------------- -- Kurinnaxx -- --------------- L = DBM:GetModLocalization("Kurinnaxx") L:SetGeneralLocalization({ name = "庫林納克斯" }) ------------ -- Rajaxx -- ------------ L = DBM:GetModLocalization("Rajaxx") L:SetGeneralLocalization({ name = "拉賈克斯將軍" }) L:SetWarningLocalization({ WarnWave = "進攻波數%s", }) L:SetOptionLocalization({ WarnWave = "為下一次波進攻顯示提示" }) L:SetMiscLocalization({ Wave12 = "記得嗎,拉賈克斯,上次我說會殺了你?", Wave12Alt = "它們來了。盡量別被它們幹掉,新兵。", Wave3 = "我們復仇的時刻就在眼前!讓黑暗掌控敵人的內心吧!", Wave4 = "我們不用在被堵住的門和石牆後面等待了!沒有人能抵抗我們的復仇!巨龍將在我們的憤怒之前顫抖!", Wave5 = "恐懼留給敵人!恐懼吧!去死吧!", Wave6 = "鹿盔會為了活命而哭著乞求,就像他的兒子一樣!千年來的不公不義會在今天昭雪!", Wave7 = "范達爾!時候到了!躲進翡翠夢境,祈禱我們永遠不會找到你吧!", Wave8 = "不要臉的笨蛋!我要親手殺了你!" }) ---------- -- Moam -- ---------- L = DBM:GetModLocalization("Moam") L:SetGeneralLocalization({ name = "莫阿姆" }) ---------- -- Buru -- ---------- L = DBM:GetModLocalization("Buru") L:SetGeneralLocalization({ name = "『暴食者』布魯" }) L:SetWarningLocalization({ WarnPursue = ">%s<被追擊了", SpecWarnPursue = "你被追擊了", WarnDismember = ">%2$s<中了%1$s(%s)" }) L:SetOptionLocalization({ WarnPursue = "提示被追擊的目標", SpecWarnPursue = "當你被追擊的時候顯示特別警告" }) L:SetMiscLocalization({ PursueEmote = "%s凝視著" }) ------------- -- Ayamiss -- ------------- L = DBM:GetModLocalization("Ayamiss") L:SetGeneralLocalization({ name = "『狩獵者』阿亞米斯" }) -------------- -- Ossirian -- -------------- L = DBM:GetModLocalization("Ossirian") L:SetGeneralLocalization({ name = "『無疤者』奧斯里安" }) L:SetWarningLocalization({ WarnVulnerable = "%s" }) L:SetTimerLocalization({ TimerVulnerable = "%s" }) L:SetOptionLocalization({ WarnVulnerable = "提示虛弱", TimerVulnerable = "為虛弱顯示計時器" }) ---------------- -- AQ20 Trash -- ---------------- L = DBM:GetModLocalization("AQ20Trash") L:SetGeneralLocalization({ name = "AQ20:全程計時" }) ================================================ FILE: DBM-AQ40/AQ40Trash.lua ================================================ local mod = DBM:NewMod("AQ40Trash", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20240529121936") mod:SetModelID(15264) -- Anubisath Sentinel mod.isTrashMod = true mod:RegisterEvents( --"ENCOUNTER_END", "SPELL_AURA_APPLIED 22997 26556 25698 26079", "SPELL_AURA_REMOVED 22997 26556", "SPELL_DAMAGE", "SPELL_MISSED" ) --TODO, meteor those big guys use, maybe some other stuff --local specWarnPrimalRampage = mod:NewSpecialWarningDodge(198379, "Melee", nil, nil, 1, 2) mod:AddRangeFrameOption(10, 22997) mod:AddSpeedClearOption("AQ40", true) --Speed Clear variables mod.vb.firstEngageTime = nil mod.vb.requiredBosses = 0 --Register all damage events on mod load local eventsRegistered = true mod:RegisterShortTermEvents( "SWING_DAMAGE", "SWING_MISSED", "SPELL_PERIODIC_DAMAGE", "SPELL_PERIODIC_MISSED" ) --Request speed clear variables, in case it was already started before mod loaded mod:SendSync("IsAQ40Started") do-- Anubisath Plague/Explode - keep in sync - AQ40/AQ40Trash.lua AQ20/AQ20Trash.lua local warnPlague = mod:NewTargetNoFilterAnnounce(22997, 2) local warnCauseInsanity = mod:NewTargetNoFilterAnnounce(26079, 2) local specWarnPlague = mod:NewSpecialWarningMoveAway(22997, nil, nil, nil, 1, 2) local yellPlague = mod:NewYell(22997) local specWarnExplode = mod:NewSpecialWarningRun(25698, "Melee", nil, 3, 4, 2) -- aura applied didn't seem to catch the reflects and other buffs function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 22997 or spellId == 26556 then if args:IsPlayer() then specWarnPlague:Show() specWarnPlague:Play("runout") yellPlague:Yell() if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end else warnPlague:Show(args.destName) end elseif spellId == 25698 then specWarnExplode:Show() specWarnExplode:Play("justrun") elseif spellId == 26079 then warnCauseInsanity:CombinedShow(0.75, args.destName) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 22997 or args.spellId == 26556 then if args:IsPlayer() and self.Options.RangeFrame then DBM.RangeCheck:Hide() end end end end do local startCreatureIds = { [15264] = true,--Anubisath Sentinel [15262] = true--Obsidian Eradicator } local function checkFirstPull(self, GUID) local cid = self:GetCIDFromGUID(GUID) if startCreatureIds[cid] then if not self.vb.firstEngageTime then self.vb.firstEngageTime = time() if self.Options.FastestClear3 and self.Options.SpeedClearTimer then --Custom bar creation that's bound to core, not mod, so timer doesn't stop when mod stops it's own timers DBT:CreateBar(self.Options.FastestClear3, DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT, "Interface\\Icons\\Spell_Nature_TimeStop") end self:SendSync("AQ40Started", self.vb.firstEngageTime)--Also sync engage time end --Unregister high CPU combat log events self:UnregisterShortTermEvents() eventsRegistered = false end end -- Anubisath Reflect - keep in sync - AQ40/AQ40Trash.lua AQ20/AQ20Trash.lua local specWarnShadowFrostReflect = mod:NewSpecialWarningReflect(19595, nil, nil, nil, 1, 2) local specWarnFireArcaneReflect = mod:NewSpecialWarningReflect(13022, nil, nil, nil, 1, 2) local specWarnShadowStorm = mod:NewSpecialWarningMoveTo(26555, nil, nil, nil, 1, 2) -- todo: thorns local playerGUID = UnitGUID("player") function mod:SPELL_DAMAGE(_, sourceName, _, destGUID, _, _, spellId) if spellId == 26555 and destGUID == playerGUID and self:AntiSpam(3, 3) then specWarnShadowStorm:Show(sourceName) specWarnShadowStorm:Play("findshelter") end if eventsRegistered then-- for AQ40 timer checkFirstPull(self, destGUID or 0) end end function mod:SPELL_MISSED(sourceGUID, _, _, destGUID, destName, _, _, _, spellSchool, missType) if (missType == "REFLECT" or missType == "DEFLECT") and sourceGUID == playerGUID then if (spellSchool == 32 or spellSchool == 16) and self:AntiSpam(3, 1) then specWarnShadowFrostReflect:Show(destName) specWarnShadowFrostReflect:Play("stopattack") elseif (spellSchool == 4 or spellSchool == 64) and self:AntiSpam(3, 2) then specWarnFireArcaneReflect:Show(destName) specWarnFireArcaneReflect:Play("stopattack") end end if eventsRegistered then-- for AQ40 timer checkFirstPull(self, destGUID or 0) end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, destGUID) checkFirstPull(self, destGUID or 0) end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE function mod:SWING_DAMAGE(_, _, _, destGUID) checkFirstPull(self, destGUID or 0) end mod.SWING_MISSED = mod.SWING_DAMAGE --[[ local function updateDefeatedBosses(self, encounterId) if self:AntiSpam(10, encounterId) then if encounterId == 710 or encounterId == 713 or encounterId == 716 or encounterId == 717 or encounterId == 714 then self.vb.requiredBosses = self.vb.requiredBosses + 1 if self.vb.requiredBosses == 5 then DBT:CancelBar(DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT) if self.vb.firstEngageTime then local thisTime = time() - self.vb.firstEngageTime if thisTime and thisTime > 0 then if not self.Options.FastestClear3 then --First clear, just show current clear time DBM:AddMsg(DBM_CORE_L.RAID_DOWN:format("AQ40", DBM:strFromTime(thisTime))) self.Options.FastestClear3 = thisTime elseif (self.Options.FastestClear3 > thisTime) then --Update record time if this clear shorter than current saved record time and show users new time, compared to old time DBM:AddMsg(DBM_CORE_L.RAID_DOWN_NR:format("AQ40", DBM:strFromTime(thisTime), DBM:strFromTime(self.Options.FastestClear3))) self.Options.FastestClear3 = thisTime else --Just show this clear time, and current record time (that you did NOT beat) DBM:AddMsg(DBM_CORE_L.RAID_DOWN_L:format("AQ40", DBM:strFromTime(thisTime), DBM:strFromTime(self.Options.FastestClear3))) end end self.vb.firstEngageTime = nil end end end end end ]] function mod:OnSync(msg, timeOrEncounter, sender) --Sync recieved with start time and ours is currently not started --The reason this doesn't just check self.vb.firstEngageTime is nil, because it might not be if SendVariableInfo send it first if msg == "AQ40Started" and timeOrEncounter --[[ and not DBT:GetBar(DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT) ]] then if not self.vb.firstEngageTime then self.vb.firstEngageTime = tonumber(timeOrEncounter) end if self.Options.FastestClear3 and self.Options.SpeedClearTimer then --Custom bar creation that's bound to core, not mod, so timer doesn't stop when mod stops it's own timers local adjustment = time() - self.vb.firstEngageTime DBT:CreateBar(self.Options.FastestClear3 - adjustment, DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT, "Interface\\Icons\\Spell_Nature_TimeStop") end --Unregister high CPU combat log events self:UnregisterShortTermEvents() elseif msg == "IsAQ40Started" and self.vb.firstEngageTime then --Sadly this has to be done with two syncs, one for variables for bosses that have been killed and one to instruct starting of timer self:SendSync("AQ40Started", self.vb.firstEngageTime) --Send all variables from the mod.vb table in whisper comm to requester (and not sent to whole raid) --This is sadly still going to generate a LOT of comm traffic on zone in. upwards of 4-117 syncs, per player zone in --Reviewing code, it's hard to do this in less comms, it's either don't support recovering the speed clear timer in all situations (disconnect, reloadui, zoning in late) or cause a burst of syncs :\ DBM:SendVariableInfo(self, sender) --[[ elseif msg == "EncounterEnd" and timeOrEncounter then updateDefeatedBosses(self, timeOrEncounter)--In case player misses event (ie they released or are outside the raid for that particular boss ]] end end --[[function mod:ENCOUNTER_END(encounterId, _, _, _, success) if success == 0 then return end--wipe --All the required bosses for the raid to be full cleared. if encounterId == 710 or encounterId == 713 or encounterId == 716 or encounterId == 717 or encounterId == 714 then updateDefeatedBosses(self, encounterId)--Still want to fire this on event because the event will always be faster than sync self:SendSync("EncounterEnd", encounterId) end end]] end ================================================ FILE: DBM-AQ40/CThun.lua ================================================ local mod = DBM:NewMod("CThun", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15589, 15727) mod:SetEncounterID(717) mod:SetUsedIcons(1) mod:RegisterCombat("combat") mod:SetWipeTime(25) mod:RegisterEventsInCombat( "SPELL_CAST_START 26134", "SPELL_CAST_SUCCESS 26586", "SPELL_AURA_APPLIED 26476", "SPELL_AURA_REMOVED 26476", "CHAT_MSG_MONSTER_EMOTE", "UNIT_DIED", "UNIT_SPELLCAST_SUCCEEDED" ) local warnEyeTentacle = mod:NewAnnounce("WarnEyeTentacle", 2, 126) local warnClawTentacle = mod:NewAnnounce("WarnClawTentacle2", 2, 26391, false) local warnGiantEyeTentacle = mod:NewAnnounce("WarnGiantEyeTentacle", 3, 126) local warnGiantClawTentacle = mod:NewAnnounce("WarnGiantClawTentacle", 3, 26391) local warnPhase2 = mod:NewPhaseAnnounce(2) local specWarnDarkGlare = mod:NewSpecialWarningDodge(26029, nil, nil, nil, 3, 2) local specWarnWeakened = mod:NewSpecialWarning("SpecWarnWeakened", nil, nil, nil, 2, 2, nil, 28598) local specWarnEyeBeam = mod:NewSpecialWarningYou(26134, nil, nil, nil, 1, 2) local yellEyeBeam = mod:NewYell(26134) local timerDarkGlareCD = mod:NewNextTimer(86, 26029) -- [2024-07-05]@[19:45:12] - "Dark Glare-26029-npc:15589-188 = pull:53.52... local timerDarkGlare = mod:NewBuffActiveTimer(39, 26029) -- [...], 0.98, 0.98, 1.02, 1.03, 0.97, 1.02, 1.01, 0.98, 1.00, 1.00, 1.01, 0.99, 1.00, 1.00, 1.00, 0.99, 1.02, 0.98, 1.01, 0.99, 0.99, 1.00, 1.01, 1.01, 1.00, 1.01, 0.99 = 26.99 (but missing more) local timerEyeTentacle = mod:NewTimer(45, "TimerEyeTentacle", 126, nil, nil, 1) local timerGiantEyeTentacle = mod:NewTimer(60, "TimerGiantEyeTentacle", 126, nil, nil, 1) local timerClawTentacle = mod:NewTimer(8, "TimerClawTentacle", 26391, nil, nil, 1) -- every 8 seconds local timerGiantClawTentacle = mod:NewTimer(60, "TimerGiantClawTentacle", 26391, nil, nil, 1) local timerWeakened = mod:NewTimer(45, "TimerWeakened", 28598) mod:AddRangeFrameOption("10") mod:AddSetIconOption("SetIconOnEyeBeam", 26134, true, false, {1}) mod:AddInfoFrameOption(nil, true) local firstBossMod = DBM:GetModByName("AQ40Trash") local playersInStomach = {} local fleshTentacles, diedTentacles = {}, {} local updateInfoFrame do local twipe = table.wipe local lines = {} local sortedLines = {} local function addLine(key, value) -- sort by insertion order lines[key] = value sortedLines[#sortedLines + 1] = key end updateInfoFrame = function() twipe(lines) twipe(sortedLines) --First, process players in stomach and gather tentacle information and debuff stacks for i = 1, #playersInStomach do local name = playersInStomach[i] local uId = DBM:GetRaidUnitId(name) if uId then --First, display their stomach debuff stacks local spellName, _, _, count = DBM:UnitDebuff(uId, 26476) if spellName and count then addLine(name, count) end --Also, process their target information for tentacles local targetuId = uId.."target" local guid = UnitGUID(targetuId) if guid and (mod:GetCIDFromGUID(guid) == 15802) and not diedTentacles[guid] then--Targetting Flesh Tentacle fleshTentacles[guid] = math.floor(UnitHealth(targetuId) / UnitHealthMax(targetuId) * 100) end end end --Now, show tentacle data after it's been updated from player processing local nLines = 0 for _, health in pairs(fleshTentacles) do nLines = nLines + 1 addLine(L.FleshTent .. " " .. nLines, health .. '%') end return lines, sortedLines end end function mod:OnCombatStart(delay) table.wipe(playersInStomach) table.wipe(fleshTentacles) table.wipe(diedTentacles) self:SetStage(1) timerClawTentacle:Start(9-delay) -- Combatlog told me, the first Claw Tentacle spawn in 00:00:09, but need more test. timerEyeTentacle:Start(40.48-delay) timerDarkGlareCD:Start(53.52-delay) self:ScheduleMethod(53.52-delay, "DarkGlare") if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end end function mod:OnCombatEnd(wipe, isSecondRun) table.wipe(diedTentacles) if self.Options.RangeFrame then DBM.RangeCheck:Hide() end if self.Options.InfoFrame then DBM.InfoFrame:Hide() end --Only run on second run, to ensure trash mod has had enough time to update requiredBosses if not wipe and isSecondRun and firstBossMod.vb.firstEngageTime and firstBossMod.Options.SpeedClearTimer then if firstBossMod.vb.requiredBosses < 5 then DBM:AddMsg(L.NotValid:format(5 - firstBossMod.vb.requiredBosses .. "/4")) end end end function mod:DarkGlare() --ghost check, because if someone releases during encounter, this loop continues until they zone back in --We don't want to spam dark glare warnings while they are a ghost outside running back on a wipe if not UnitIsDeadOrGhost("player") then specWarnDarkGlare:Show() specWarnDarkGlare:Play("laserrun")--Or "watchstep" ? end timerDarkGlare:Start() timerDarkGlareCD:Start() self:ScheduleMethod(86, "DarkGlare") end function mod:EyeBeamTarget(targetname) if not targetname then return end if self.Options.SetIconOnEyeBeam then self:SetIcon(targetname, 1, 3) end if targetname == UnitName("player") then specWarnEyeBeam:Show() specWarnEyeBeam:Play("targetyou") yellEyeBeam:Yell() end end function mod:SPELL_CAST_START(args) if args.spellId == 26134 and args:IsSrcTypeHostile() then -- the eye target can change to the correct target a tiny bit after the cast starts self:ScheduleMethod(0.1, "BossTargetScanner", args.sourceGUID, "EyeBeamTarget", 0.1, 3) end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26586 then DBM:AddMsg("Birth 26586 SPELL_CAST_SUCCESS fixed on server script. Notify Zidras on Discord or GitHub") local cid = self:GetCIDFromGUID(args.sourceGUID) if self:AntiSpam(5, cid) then--Throttle multiple spawn within 5 seconds if cid == 15726 then--Eye Tentacle timerEyeTentacle:Stop() warnEyeTentacle:Show() timerEyeTentacle:Start(self.vb.phase == 2 and 30 or 45) elseif cid == 15725 then -- Claw Tentacle timerClawTentacle:Stop() warnClawTentacle:Show() timerClawTentacle:Start() elseif cid == 15334 then -- Giant Eye Tentacle timerGiantEyeTentacle:Stop() warnGiantEyeTentacle:Show() timerGiantEyeTentacle:Start() elseif cid == 15728 then -- Giant Claw Tentacle timerGiantClawTentacle:Stop() warnGiantClawTentacle:Show() timerGiantClawTentacle:Start() end end end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 26476 then --I'm aware debuff stacks, but it's a context that doesn't matter to this mod if not tContains(playersInStomach, args.destName) then table.insert(playersInStomach, args.destName) end if self.Options.InfoFrame and not DBM.InfoFrame:IsShown() then DBM.InfoFrame:SetHeader(L.Stomach) DBM.InfoFrame:Show(42, "function", updateInfoFrame, false, false) DBM.InfoFrame:SetColumns(1) end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 26476 then tDeleteItem(playersInStomach, args.destName) end end function mod:CHAT_MSG_MONSTER_EMOTE(msg) if msg == L.Weakened or msg:find(L.Weakened) then self:SendSync("Weakened") end end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 15589 then -- Eye of C'Thun self:SetStage(2) warnPhase2:Show() timerDarkGlareCD:Stop() timerEyeTentacle:Stop() timerClawTentacle:Stop() -- Claw Tentacle never respawns in phase2 timerEyeTentacle:Start(40.5) timerGiantClawTentacle:Start(10.5) timerGiantEyeTentacle:Start(41.3) self:UnscheduleMethod("DarkGlare") elseif cid == 15802 then -- Flesh Tentacle fleshTentacles[args.destGUID] = nil diedTentacles[args.destGUID] = true end end function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if spellName == DBM:GetSpellInfo(26586) then DBM:Debug("Birth") -- Since CLEU is hidden, this is here only as a placeholder until I get a VOD to ascertain whether or not this can be a generic warning (no cid is available, so perhaps target scanning?). end end function mod:OnSync(msg) if not self:IsInCombat() then return end if msg == "Weakened" then table.wipe(fleshTentacles) specWarnWeakened:Show() specWarnWeakened:Play("targetchange") timerEyeTentacle:Stop() timerGiantClawTentacle:Stop() timerGiantEyeTentacle:Stop() timerWeakened:Start() timerEyeTentacle:Start(83) -- 53+30 timerGiantClawTentacle:Start(53) -- Renew Giant Claw Tentacle Spawn Timer, After C'Thun be Weakened timerGiantEyeTentacle:Start(83.7) -- Renew Giant Eye Tentacle Spawn Timer, After C'Thun be Weakened, A litter later than Eye Tentacles Spawn.(0.7s) if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end end ================================================ FILE: DBM-AQ40/DBM-AQ40.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Temple of Ahn'Qiraj|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Tempel von Ahn'Qiraj|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Templo de Ahn'Qiraj|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Templo de Ahn'Qiraj|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Temple d'Ahn'Qiraj|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Храм Ан'Киража|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0안퀴라즈 사원|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0安其拉神殿|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0安其拉神廟|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMAQ40_AllSavedVars ## SavedVariablesPerCharacter: DBMAQ40_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: Classic ## X-DBM-StatTypes: normal ## X-DBM-Mod-MapID: 767 ## X-DBM-Mod-Sort: 1102 ## X-DBM-Mod-Name: The Temple of Ahn'Qiraj ## X-DBM-Mod-Name-zhCN: 安其拉神殿 ## X-DBM-Mod-Name-ruRU: Храм Ан'Киража ## X-DBM-Mod-Name-frFR: Le Temple d'Ahn'Qiraj ## X-DBM-Mod-LoadZone: Ahn'Qiraj ## X-DBM-Mod-LoadZone-esES: Ahn'Qiraj ## X-DBM-Mod-LoadZone-ruRU: Ан'Кираж ## X-DBM-Mod-LoadZone-frFR: Ahn'Qiraj ## X-DBM-Mod-LoadZone-esMX: Ahn'Qiraj ## X-DBM-Mod-LoadZone-zhTW: 安其拉 ## X-DBM-Mod-LoadZone-zhCN: 安其拉 ## X-DBM-Mod-LoadZone-koKR: 안퀴라즈 ## X-DBM-Mod-LoadZone-deDE: Ahn'Qiraj localization.en.lua localization.de.lua localization.fr.lua localization.es.lua localization.mx.lua localization.ru.lua localization.kr.lua localization.tw.lua localization.cn.lua AQ40Trash.lua Skeram.lua ThreeBugs.lua Sartura.lua Fankriss.lua Viscidus.lua Huhuran.lua Ouro.lua TwinEmps.lua CThun.lua ================================================ FILE: DBM-AQ40/Fankriss.lua ================================================ local mod = DBM:NewMod("Fankriss", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15510) mod:SetEncounterID(712) mod:SetModelID(15510) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_SUMMON 518 25832 25831" ) local warnEntangle = mod:NewTargetAnnounce(1121, 2) local warnWound = mod:NewStackAnnounce(25646, 3, nil, "Tank", 3) local warnWorm = mod:NewSpellAnnounce(25831, 3) local specWarnWound = mod:NewSpecialWarningStack(25646, nil, 5, nil, nil, 1, 6) local specWarnWoundTaunt= mod:NewSpecialWarningTaunt(25646, nil, nil, nil, 1, 2) local timerWound = mod:NewTargetTimer(20, 25646, nil, "Tank", 3, 5, nil, DBM_COMMON_L.TANK_ICON) local yellEntangle = mod:NewYell(1121) function mod:OnCombatStart() if not self:IsTrivial(85) then self:RegisterShortTermEvents( "SPELL_AURA_APPLIED 25646 1121", "SPELL_AURA_APPLIED_DOSE 25646", "SPELL_AURA_REMOVED 25646" ) end end function mod:OnCombatEnd() self:UnregisterShortTermEvents() end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25646 then local amount = args.amount or 1 timerWound:Show(args.destName) if amount >= 5 then if args:IsPlayer() then specWarnWound:Show(amount) specWarnWound:Play("stackhigh") elseif not DBM:UnitDebuff("player", args.spellName) and not UnitIsDeadOrGhost("player") then specWarnWoundTaunt:Show(args.destName) specWarnWoundTaunt:Play("tauntboss") else warnWound:Show(args.destName, amount) end else warnWound:Show(args.destName, amount) end elseif args.spellId == 1121 then if args:IsPlayer() then yellEntangle:Yell() end warnEntangle:Show(args.destName) end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args.spellId == 25646 then timerWound:Stop(args.destName) end end function mod:SPELL_SUMMON(args) if args:IsSpellID(518, 25832, 25831) then warnWorm:Show() end end ================================================ FILE: DBM-AQ40/Huhuran.lua ================================================ local mod = DBM:NewMod("Huhuran", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15509) mod:SetEncounterID(714) mod:SetModelID(15509) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 26180 26053 26051 26068 26050", "SPELL_AURA_APPLIED_DOSE 26050", "SPELL_AURA_REMOVED 26180 26053 26050", "SPELL_CAST_SUCCESS 26053", "UNIT_HEALTH mouseover focus target" ) local warnSting = mod:NewTargetNoFilterAnnounce(26180, 2, nil, "RemovePoison") local warnAcid = mod:NewStackAnnounce(26050, 3, nil, "Tank", 3) local warnPoison = mod:NewSpellAnnounce(26053, 3) local warnFrenzy = mod:NewSpellAnnounce(26051, 2, nil, "Healer|Tank|RemoveEnrage", 4) local warnBerserkSoon = mod:NewSoonAnnounce(26068, 2) local warnBerserk = mod:NewSpellAnnounce(26068, 2) local specWarnAcid = mod:NewSpecialWarningStack(26050, nil, 10, nil, nil, 1, 6) local specWarnAcidTaunt = mod:NewSpecialWarningTaunt(26050, nil, nil, nil, 1, 2) local specWarnFrenzy = mod:NewSpecialWarningDispel(26051, "RemoveEnrage", nil, nil, 1, 6) local timerSting = mod:NewBuffFadesTimer(12, 26180, nil, nil, nil, 5, nil, DBM_COMMON_L.POISON_ICON..DBM_COMMON_L.DEADLY_ICON) local timerStingCD = mod:NewCDTimer(25, 26180, nil, nil, nil, 3, nil, DBM_COMMON_L.POISON_ICON..DBM_COMMON_L.DEADLY_ICON) local timerPoisonCD = mod:NewCDTimer(11, 26053, nil, nil, nil, 3) local timerPoison = mod:NewBuffFadesTimer(8, 26053) local timerFrenzyCD = mod:NewCDTimer(11.8, 26051, nil, false, 3, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.HEALER_ICON)--Off by default do to ridiculous variation local timerAcid = mod:NewTargetTimer(30, 26050, nil, "Tank", 3, 5, nil, DBM_COMMON_L.TANK_ICON) local timerBerserk = mod:NewBerserkTimer(300) mod:AddRangeFrameOption("18", nil, "-Melee") mod.vb.prewarn_berserk = false local StingTargets = {} function mod:OnCombatStart(delay) self.vb.prewarn_berserk = false table.wipe(StingTargets) timerFrenzyCD:Start(9.6-delay) timerPoisonCD:Start(11-delay) timerStingCD:Start(20-delay) timerBerserk:Start(-delay) if self.Options.RangeFrame then DBM.RangeCheck:Show(18) end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end local function warnStingTargets() warnSting:Show(table.concat(StingTargets, "<, >")) timerStingCD:Start() table.wipe(StingTargets) end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26053 then warnPoison:Show() timerPoisonCD:Start() end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 26180 and args:IsDestTypePlayer() then StingTargets[#StingTargets + 1] = args.destName self:Unschedule(warnStingTargets) self:Schedule(1, warnStingTargets) if args:IsPlayer() then timerSting:Start() end elseif args.spellId == 26053 and args:IsPlayer() then timerPoison:Start() elseif args.spellId == 26051 and args:IsDestTypeHostile() then if self.Options.SpecWarn26051dispel then specWarnFrenzy:Show(args.destName) specWarnFrenzy:Play("enrage") else warnFrenzy:Show(args.destName) end timerFrenzyCD:Start() elseif args.spellId == 26068 and args:IsDestTypeHostile() then warnBerserk:Show() timerStingCD:Stop() timerFrenzyCD:Stop() timerPoisonCD:Stop() timerBerserk:Stop() --elseif args.spellId == 26050 and not self:IsTrivial(80) then elseif args.spellId == 26050 and args:IsPlayer() then local amount = args.amount or 1 timerAcid:Start(args.destName) if amount >= 10 then if args:IsPlayer() then specWarnAcid:Show(amount) specWarnAcid:Play("stackhigh") elseif not DBM:UnitDebuff("player", args.spellName) and not UnitIsDeadOrGhost("player") then specWarnAcidTaunt:Show(args.destName) specWarnAcidTaunt:Play("tauntboss") else warnAcid:Show(args.destName, amount) end else warnAcid:Show(args.destName, amount) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args.spellId == 26180 and args:IsDestTypePlayer() then timerSting:Stop() elseif args.spellId == 26053 and args:IsPlayer() then timerPoison:Stop() elseif args.spellId == 26050 and args:IsPlayer() then timerAcid:Stop(args.destName) end end function mod:UNIT_HEALTH(uId) if UnitHealth(uId) / UnitHealthMax(uId) <= 0.38 and self:GetUnitCreatureId(uId) == 15509 and not self.vb.prewarn_berserk then warnBerserkSoon:Show() self.vb.prewarn_berserk = true end end ================================================ FILE: DBM-AQ40/Ouro.lua ================================================ local mod = DBM:NewMod("Ouro", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15517) mod:SetEncounterID(716) mod:SetModelID(15517) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 26615", "SPELL_CAST_START 26102 26103", "SPELL_CAST_SUCCESS 26058", "UNIT_HEALTH mouseover focus target" ) --Submerge timer is not timer based, it has some kind of hidden condition we do not know. It's not health based either (other than fact the faster you kill boss less likely you are to see it) --[[ (ability.id = 26102 or ability.id = 26103) and type = "begincast" or ability.id = 26058 and type = "cast" or ability.id = 26615 --]] local warnSubmerge = mod:NewAnnounce("WarnSubmerge", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") local warnEmerge = mod:NewAnnounce("WarnEmerge", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") local warnSweep = mod:NewSpellAnnounce(26103, 2, nil, "Tank", 3) local warnBerserk = mod:NewSpellAnnounce(26615, 3) local warnBerserkSoon = mod:NewSoonAnnounce(26615, 2) local specWarnBlast = mod:NewSpecialWarningSpell(26102, nil, nil, nil, 2, 2) local timerSubmerge = mod:NewTimer(184, "TimerSubmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", nil, nil, 6) -- REVIEW! No data local timerEmerge = mod:NewTimer(58, "TimerEmerge", "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", nil, nil, 6) local timerSweepCD = mod:NewNextTimer(20, 26103, nil, nil, nil, 5, nil, DBM_COMMON_L.TANK_ICON) -- (Onyxia: 25N [2024-07-05]@[19:56:12]) - "Sweep-26103-npc:15517-449 = pull:21.97, 20.05, 20.03, 20.04, 86.38, 20.02, 22.00" local timerBlastCD = mod:NewNextTimer(20, 26102, nil, nil, nil, 2) -- (Onyxia: 25N [2024-07-05]@[19:56:12]) - "Sand Blast-26102-npc:15517-449 = pull:19.92, 20.05, 20.01, 20.03, 86.42, 19.98, 20.01" mod.vb.prewarn_Berserk = false mod.vb.Berserked = false function mod:OnCombatStart(delay) self.vb.prewarn_Berserk = false self.vb.Berserked = false timerSweepCD:Start(22-delay)--22-25 timerBlastCD:Start(19.92-delay)--20-26 timerSubmerge:Start(90-delay) end function mod:Emerge() warnEmerge:Show() timerSweepCD:Start(23)--23-24 (it might be 22-25 like pull) timerBlastCD:Start(24)--24-26 (it might be 20-26 like pull) timerSubmerge:Start() end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 26615 and args:IsDestTypeHostile() then self.vb.Berserked = true warnBerserk:Show() timerSubmerge:Stop() end end function mod:SPELL_CAST_START(args) if args.spellId == 26102 then specWarnBlast:Show() specWarnBlast:Play("stunsoon") timerBlastCD:Start() elseif args.spellId == 26103 and args:IsSrcTypeHostile() then warnSweep:Show() timerSweepCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26058 and self:AntiSpam(3) and not self.vb.Berserked then timerBlastCD:Stop() timerSweepCD:Stop() timerSubmerge:Stop() warnSubmerge:Show() timerEmerge:Start() self:ScheduleMethod(58, "Emerge") end end function mod:UNIT_HEALTH(uId) if self:GetUnitCreatureId(uId) == 15517 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.23 and not self.vb.prewarn_Berserk then self.vb.prewarn_Berserk = true warnBerserkSoon:Show() end end ================================================ FILE: DBM-AQ40/Sartura.lua ================================================ local mod = DBM:NewMod("Sartura", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15516) mod:SetEncounterID(711) mod:SetModelID(15516) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 26083 8269", "UNIT_HEALTH mouseover focus target" ) --Add sundering cleave? local warnEnrageSoon = mod:NewSoonAnnounce(8269, 2) local warnEnrage = mod:NewSpellAnnounce(8269, 4) local warnWhirlwind = mod:NewSpellAnnounce(26083, 3) local specWarnWhirlwind = mod:NewSpecialWarningRun(26083, false, nil, nil, 4, 2) local timerBerserk = mod:NewBerserkTimer(600) mod.vb.prewarn_enrage = false function mod:OnCombatStart(delay) self.vb.prewarn_enrage = false timerBerserk:Start(-delay) end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26083 and args:IsSrcTypeHostile() and self:AntiSpam(4, 1) then if self:CheckInterruptFilter(args.sourceGUID, true) and self.Options.SpecWarn26083run then specWarnWhirlwind:Show() specWarnWhirlwind:Play("justrun") else warnWhirlwind:Show() end elseif args.spellId == 8269 and args:IsSrcTypeHostile() then warnEnrage:Show() end end function mod:UNIT_HEALTH(uId) if UnitHealth(uId) / UnitHealthMax(uId) <= 0.35 and self:GetUnitCreatureId(uId) == 15516 and not self.vb.prewarn_enrage then warnEnrageSoon:Show() self.vb.prewarn_enrage = true end end ================================================ FILE: DBM-AQ40/Skeram.lua ================================================ local mod = DBM:NewMod("Skeram", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15263) mod:SetEncounterID(709) mod:SetModelID(15263) mod:SetUsedIcons(4, 5, 6, 7, 8) mod:DisableBossDeathKill() mod:SetHotfixNoticeRev(20240716000000) mod:RegisterCombat("combat") mod:RegisterKill("yell", L.YellKillSkeram) mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 785", "SPELL_AURA_REMOVED 785", "SPELL_CAST_SUCCESS 20449 4801 8195", "SPELL_SUMMON 747", "UNIT_HEALTH mouseover target" ) --TODO, special warning optimizing? local warnMindControl = mod:NewTargetNoFilterAnnounce(785, 4) local warnTeleport = mod:NewSpellAnnounce(20449, 3) local warnSummon = mod:NewSpellAnnounce(747, 3) local warnSummonSoon = mod:NewSoonAnnounce(747, 2) local timerMindControl = mod:NewBuffActiveTimer(20, 785, nil, nil, nil, 3) mod:AddSetIconOption("SetIconOnMC", 785, true, false, {4, 5, 6, 7, 8}) local MCTargets = {} mod.vb.splitCount = 0 mod.vb.MCIcon = 8 function mod:OnCombatStart() self.vb.splitCount = 0 table.wipe(MCTargets) self.vb.MCIcon = 8 end local function warnMCTargets(self) warnMindControl:Show(table.concat(MCTargets, "<, >")) timerMindControl:Start() table.wipe(MCTargets) self.vb.MCIcon = 8 end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 785 then MCTargets[#MCTargets + 1] = args.destName self:Unschedule(warnMCTargets) if self.Options.SetIconOnMC then self:SetIcon(args.destName, self.vb.MCIcon) end if #MCTargets >= 3 then warnMCTargets(self) else self:Schedule(0.5, warnMCTargets, self) end self.vb.MCIcon = self.vb.MCIcon - 1 end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 785 and self.Options.SetIconOnMC then self:SetIcon(args.destName, 0) end end function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(20449, 4801, 8195) and args:IsSrcTypeHostile() and self:AntiSpam(3, 1) then warnTeleport:Show() end end function mod:SPELL_SUMMON(args) if args.spellId == 747 and self:AntiSpam(3, 2) then warnSummon:Show() end end function mod:UNIT_HEALTH(uId) if self:GetUnitCreatureId(uId) == 15263 then local percent = UnitHealth(uId) / UnitHealthMax(uId) * 100 if percent <= 81 and percent >= 77 and self.vb.splitCount < 1 then warnSummonSoon:Show() self.vb.splitCount = 1 elseif percent <= 56 and percent >= 52 and self.vb.splitCount < 2 then warnSummonSoon:Show() self.vb.splitCount = 2 elseif percent <= 31 and percent >= 27 and self.vb.splitCount < 3 then warnSummonSoon:Show() self.vb.splitCount = 3 end end end ================================================ FILE: DBM-AQ40/ThreeBugs.lua ================================================ local mod = DBM:NewMod("ThreeBugs", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15544, 15511, 15543) mod:SetEncounterID(710) mod:SetModelID(15544) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 26580 25812", "SPELL_CAST_START 25807", "UNIT_DIED" ) local warnFear = mod:NewSpellAnnounce(26580, 2) local warnToxicVolley = mod:NewSpellAnnounce(25812, 2, nil, false) local warnHeal = mod:NewCastAnnounce(25807, 3) local specWarnHeal = mod:NewSpecialWarningInterrupt(25807, "HasInterrupt", nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(25786, nil, nil, nil, 1, 8) --"Toxic Volley-25812-npc:15511 = pull:11.8, 13.6, 16.8, 34.1, 14.8, 7.3, 8.3, 12.1, 15.8, 9.7, 19.6, 9.8", -- [12] --If users ask for a toxic volley timer, unless classic is different than retail (which i doubt), 7-34 second variable timer is not acceptable local timerFearCD = mod:NewCDTimer(20, 26580, nil, nil, nil, 2) -- (Lordaeron: Timewalking [2024-05-11]@[22:21:34] || Onyxia: 25N [2024-07-05]@[18:18:12]) - "Fear-26580-npc:15543-192 = pull:12.00" || "Fear-26580-npc:15543-193 = pull:11.99, 20.01" function mod:OnCombatStart(delay) timerFearCD:Start(12-delay) if not self:IsTrivial() then self:RegisterShortTermEvents( "SPELL_AURA_APPLIED 25786 25989", "SPELL_PERIODIC_DAMAGE 25786 25989", "SPELL_PERIODIC_MISSED 25786 25989" ) end end function mod:OnCombatEnd() self:UnregisterShortTermEvents() end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 26580 and args:IsSrcTypeHostile() and self:AntiSpam(3, 1) then warnFear:Show() timerFearCD:Start() elseif args.spellId == 25812 then warnToxicVolley:Show() end end function mod:SPELL_CAST_START(args) if args.spellId == 25807 and args:IsSrcTypeHostile() then if self:CheckInterruptFilter(args.sourceGUID, false, true) then specWarnHeal:Show(args.sourceName) specWarnHeal:Play("kickcast") else warnHeal:Show() end end end function mod:SPELL_AURA_APPLIED(args) if (args.spellId == 25786 or args.spellId == 25989) and args:IsPlayer() and self:AntiSpam(3, 2) then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") end end function mod:SPELL_PERIODIC_DAMAGE(_, _, _, destGUID, _, _, spellId, spellName) if (spellId == 25786 or spellId == 25989) and destGUID == UnitGUID("player") and self:AntiSpam(3, 2) then specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_PERIODIC_MISSED = mod.SPELL_PERIODIC_DAMAGE function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 15543 then timerFearCD:Stop() end end ================================================ FILE: DBM-AQ40/TwinEmps.lua ================================================ local mod = DBM:NewMod("TwinEmpsAQ", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15276, 15275) mod:SetEncounterID(715) --mod:SetModelID(15778)--Renders too close mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 799 800 26613 26607 804", "SPELL_AURA_REMOVED 804", "SPELL_CAST_SUCCESS 802 804"--26613 ) --Add warning for classic to actually swap for strike? boss taunt immune though. local warnStrike = mod:NewTargetNoFilterAnnounce(26613, 3, nil, "Tank|Healer", 2) local warnTeleport = mod:NewSpellAnnounce(800, 3) local warnMutateBug = mod:NewSpellAnnounce(802, 2, nil, false) local specWarnStrike = mod:NewSpecialWarningDefensive(26613, nil, nil, nil, 1, 2) --local specWarnExplodeBug = mod:NewSpecialWarningMove(804, nil, nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(26607, nil, nil, nil, 8, 2) local timerTeleport = mod:NewCDTimer(30, 800, nil, nil, nil, 6, nil, nil, true, 1, 4) -- SAA. No variance on Lordaeron. ~10s variance on Onyxia [30.17-40.23]. Added "keep" arg (Lordaeron: Timewalking [2024-05-11]@[22:35:41 ||| Onyxia: 25N [2024-07-05]@[18:51:40] || [2024-07-05]@[19:26:33])- "Twin Teleport-800-npc:15275-22 = pull:30.38, 30.13, 30.34, 30.20, 30.02, 30.43, 30.33, 30.32, 30.23, 30.28, 30.30, 30.25" ||| "Twin Teleport-800-npc:15275-22 = pull:30.17, 30.38, 30.75, 32.40, 40.16, 40.23, 32.55, 32.80" || "Twin Teleport-800-npc:15275-22 = pull:30.19, 30.76, 38.16, 39.69, 35.78, 37.14, 34.98" -- There is also SPELL_CAST_SUCCESS, which I assume is used internally for event scheduling, but I will keep parity with old code in this case - "Twin Teleport-800-npc:15276-23 = pull:30.38, 30.13, 30.34, 30.20, 30.02, 30.44, 30.33, 30.32, 30.23, 30.28, 30.30, 30.29" ||| "Twin Teleport-800-npc:15276-23 = pull:30.17, 30.38, 30.75, 32.40, 40.16, 40.23, 32.55, 32.80" || "Twin Teleport-800-npc:15276-23 = pull:30.19, 30.76, 38.16, 39.69, 35.78, 37.14, 34.98" local timerExplodeBugCD = mod:NewCDTimer(4.9, 804, nil, false, nil, 1)--4.9-9 local timerMutateBugCD = mod:NewCDTimer(11, 802, nil, false, nil, 1)--11-16 --local timerStrikeCD = mod:NewCDTimer(9.7, 26613, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--9.7-42.6 local berserkTimer = mod:NewBerserkTimer(900) --mod:AddNamePlateOption("NPAuraOnMutateBug", 802) function mod:OnCombatStart(delay) --timerStrikeCD:Start(14.2-delay) berserkTimer:Start() timerTeleport:Start(-delay) if self.Options.NPAuraOnMutateBug then DBM:FireEvent("BossMod_EnableHostileNameplates") end end function mod:OnCombatEnd() -- if self.Options.NPAuraOnMutateBug then -- DBM.Nameplate:Hide(true, nil, nil, nil, true, true) -- end end --pull:30.6, 35.2, 37.8, 40.1, 36.5, 36.6, 37.7, 31.9, 31.7, 38.8, 32.9, 30.4, 40.2, 30.6, 37.6, 35.4, 32.9, 34.2, 35.3, 36.5, 30.4, 29.2, 34.3, 32.8, 40.0, 35.4, 36.5, 35.3 function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(799, 800) and self:AntiSpam(5, 1) then warnTeleport:Show() timerTeleport:Start() --elseif args.spellId == 26613 and not self:IsTrivial(80) then elseif args.spellId == 26613 then if args:IsPlayer() then specWarnStrike:Show() specWarnStrike:Play("defensive") else warnStrike:Show(args.destName) end elseif args.spellId == 26607 and args:IsPlayer() and args:IsSrcTypeHostile() then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") elseif args.spellId == 804 then -- if self.Options.NPAuraOnMutateBug then -- DBM.Nameplate:Show(true, args.destGUID, 804, 135826, 4) -- end -- for i = 1, 40 do -- local GUID = UnitGUID("nameplate"..i) -- if GUID and GUID == args.destGUID then--Bug is in nameplate range -- specWarnExplodeBug:Show() -- specWarnExplodeBug:Play("runaway") -- break -- end -- end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 804 then -- if self.Options.NPAuraOnMutateBug then -- DBM.Nameplate:Hide(true, args.destGUID, 804, 135826) -- end end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 802 then warnMutateBug:Show() timerMutateBugCD:Start() elseif args.spellId == 804 then timerExplodeBugCD:Start() --elseif spellId == 26613 then --timerStrikeCD:Start() end end ================================================ FILE: DBM-AQ40/Viscidus.lua ================================================ local mod = DBM:NewMod("Viscidus", "DBM-AQ40", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(15299) mod:SetEncounterID(713) mod:SetModelID(15299) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 25991 25896", "SPELL_AURA_APPLIED 25989", "CHAT_MSG_MONSTER_EMOTE" ) local warnPoisonBoltVolley = mod:NewCountAnnounce(25991, 3) local warnFreeze = mod:NewAnnounce("WarnFreeze", 2, 16350) local warnShatter = mod:NewAnnounce("WarnShatter", 2, 12982) local specWarnGTFO = mod:NewSpecialWarningGTFO(25989, nil, nil, nil, 1, 8) local timerPoisonBoltVolleyCD = mod:NewCDCountTimer(10.13, 25991, nil, nil, nil, 2, nil, DBM_COMMON_L.POISON_ICON, true) -- ~5s variance [10.13-14.98]. Added "keep" arg (Onyxia: 25N [2024-07-05]@[18:31:25] || PTR: [2024-07-16]@[22:41:16]) - "Poison Bolt Volley-25991-npc:15299-610 = pull:13.42, 14.33, 13.24, 13.18, 10.50, 12.49, 10.18, 10.17, 10.46, 11.12, 13.84, 11.87, 13.18, 13.47, 10.61, 13.15, 12.13, 14.30, 13.97, 12.19, 14.32, 13.99, 10.55, 10.72, 13.85, 10.21, 12.42, 10.13, 14.38, 12.72, 12.41, 14.32, 13.27, 13.75, 12.15, 14.29, 13.68, 11.05, 13.90, 10.48, 14.25, 10.92, 14.90, 11.64, 12.02, 12.54, 11.47, 12.89, 14.15, 14.40, 10.78, 10.68, 13.01, 13.17, 14.98, 10.71, 12.79, 11.44" mod.vb.volleyCount = 0 function mod:OnCombatStart() self.vb.volleyCount = 0 timerPoisonBoltVolleyCD:Start(7.78, 1) end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 25991 then self.vb.volleyCount = self.vb.volleyCount + 1 warnPoisonBoltVolley:Show(self.vb.volleyCount) timerPoisonBoltVolleyCD:Start(nil, self.vb.volleyCount+1) end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 25989 and args:IsPlayer() and self:AntiSpam(3, 2) then specWarnGTFO:Show(args.spellName) specWarnGTFO:Play("watchfeet") end end function mod:CHAT_MSG_MONSTER_EMOTE(msg) if msg == L.Phase4 or msg:find(L.Phase4) then self:SendSync("Shatter", 1) elseif msg == L.Phase5 or msg:find(L.Phase5) then self:SendSync("Shatter", 2) elseif msg == L.Phase6 or msg:find(L.Phase6) then--No longer present in classic? self:SendSync("Shatter", 3) elseif msg == L.Slow or msg:find(L.Slow) then self:SendSync("Freeze", 1) elseif msg == L.Freezing or msg:find(L.Freezing) then self:SendSync("Freeze", 2) elseif msg == L.Frozen or msg:find(L.Frozen) then self:SendSync("Freeze", 3) end end function mod:OnSync(msg, count) if msg == "Shatter" and count then count = tonumber(count) warnShatter:Show(count) elseif msg == "Freeze" and count then count = tonumber(count) warnFreeze:Show(count) if count == 3 then timerPoisonBoltVolleyCD:Stop() end end end ================================================ FILE: DBM-AQ40/localization.cn.lua ================================================ -- Mini Dragon(projecteurs AT gmail.com) Brilla@金色平原 -- 枫聖@光芒 & Aoikaze@无畏 -- Last update: 2020/09/01 if GetLocale() ~= "zhCN" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "预言者斯克拉姆" }) L:SetMiscLocalization({ YellKillSkeram = "你是在逃避必然的命运!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "安其拉三宝" }) L:SetMiscLocalization({ Yauj = "亚尔基公主", Vem = "维姆", Kri = "克里勋爵" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "沙尔图拉" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "顽强的范克瑞斯" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "维希度斯" }) L:SetWarningLocalization({ WarnFreeze = "冰冻进度:%d/3", WarnShatter = "打碎进度:%d/3" }) L:SetOptionLocalization({ WarnFreeze = "提示冰冻状态", WarnShatter = "提示打碎状态" }) L:SetMiscLocalization({ Slow = "的速度慢下来了!", Freezing = "冻结了!", Frozen = "变成了坚硬的固体!", Phase4 = "开始出现裂缝!", Phase5 = "看起来就要碎裂了!", --Phase6 = "爆炸." --Checking the battle video, I didn't find this sentence. this emotion not exists in CN client. --by Aoikaze HitsRemain = "剩余攻击", Frost = "冰霜", Physical = "物理" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "哈霍兰公主" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "双子皇帝" }) L:SetMiscLocalization({ Veklor = "维克洛尔大帝", Veknil = "维克尼拉斯大帝" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "克苏恩" }) L:SetWarningLocalization({ WarnEyeTentacle = "眼球触须", WarnClawTentacle2 = "利爪触须", WarnGiantEyeTentacle = "巨眼触须", WarnGiantClawTentacle = "巨钩触须", SpecWarnWeakened = "克苏恩的力量被削弱了!" }) L:SetTimerLocalization({ TimerEyeTentacle = "下一次眼球触须", TimerClawTentacle = "下一次利爪触须", TimerGiantEyeTentacle = "下一次巨眼触须", TimerGiantClawTentacle = "下一次巨钩触须", TimerWeakened = "虚弱结束" }) L:SetOptionLocalization({ WarnEyeTentacle = "为眼球触须显示警报", WarnClawTentacle2 = "为利爪触须显示警报", WarnGiantEyeTentacle = "为巨眼触须显示警报", WarnGiantClawTentacle = "为巨钩触须显示警报", WarnWeakened = "当克苏恩虚弱時显示警报", SpecWarnWeakened = "当克苏恩虚弱時显示特別警报", TimerEyeTentacle = "为下一次眼球触须显示计时器", TimerClawTentacle = "为下一次利爪触须显示计时器", TimerGiantEyeTentacle = "为下一次巨眼触须显示计时器", TimerGiantClawTentacle = "为下一次巨钩触须显示计时器", TimerWeakened = "为克苏恩虚弱時间显示计时器", RangeFrame = "显示距离框架(10码)" }) L:SetMiscLocalization({ Stomach = "内场", Eye = "克苏恩之眼", FleshTent = "血肉触须",--Localized so it shows on frame in users language, not senders Weakened = "削弱了", NotValid = "AQ40 击杀信息: %s 可选Boss未击杀。" }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "奥罗" }) L:SetWarningLocalization({ WarnSubmerge = "钻地", WarnEmerge = "现身" }) L:SetTimerLocalization({ TimerSubmerge = "强制钻地", TimerEmerge = "现身" }) L:SetOptionLocalization({ WarnSubmerge = "为钻地显示警报", TimerSubmerge = "为钻地显示计时器,提示何时强制钻地。注意:如果近战都离开了奥罗近战范围,它随时可能钻地。", WarnEmerge = "为现身显示警报", TimerEmerge = "为现身显示计时器" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40:全程计时" }) ================================================ FILE: DBM-AQ40/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "Der Prophet Skeram" }) L:SetMiscLocalization({ YellKillSkeram = "Ihr zögert das Unvermeidliche nur hinaus!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Adel der Silithiden" }) L:SetMiscLocalization({ Yauj = "Prinzessin Yauj", Vem = "Vem", Kri = "Lord Kri" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Schlachtwache Sartura" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Fankriss der Unnachgiebige" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Viscidus" }) L:SetWarningLocalization({ WarnFreeze = "Eingefroren: %d/3", WarnShatter = "Zerspringen: %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Verkünde Eingefroren Status", WarnShatter = "Verkünde Zerspringen Status" }) L:SetMiscLocalization({ Slow = "wird langsamer!", Freezing= "friert ein!", Frozen = "ist tiefgefroren!", Phase4 = "geht die Puste aus!", Phase5 = "ist kurz davor, zu zerspringen!", Phase6 = "explodiert!", HitsRemain = "Verbleibende Treffer", Frost = "Frost", Physical = "Körperlich" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Prinzessin Huhuran" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Zwillingsimperatoren" }) L:SetMiscLocalization({ Veklor = "Imperator Vek'lor", Veknil = "Imperator Vek'nilash" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "C'Thun" }) L:SetWarningLocalization({ WarnEyeTentacle = "Augententakel erscheinen", WarnClawTentacle2 = "Klauententakel erscheinen", WarnGiantEyeTentacle = "Riesiges Augententakel erscheinen", WarnGiantClawTentacle = "Riesiges Klauententakel erscheinen", SpecWarnWeakened = "C'Thun ist geschwächt!" }) L:SetTimerLocalization({ TimerEyeTentacle = "Nächstes Augententakel", TimerClawTentacle = "Nächstes Klauententakel", TimerGiantEyeTentacle = "Nächstes Riesiges Augententakel", TimerGiantClawTentacle = "Nächstes Riesiges Klauententakel", TimerWeakened = "Schwäche endet" }) L:SetOptionLocalization({ WarnEyeTentacle = "Zeige Warnung, wenn Augententakel erscheinen", WarnClawTentacle2 = "Zeige Warnung, wenn Klauententakel erscheinen", WarnGiantEyeTentacle = "Zeige Warnung, wenn Riesiges Augententakel erscheinen", WarnGiantClawTentacle = "Zeige Warnung, wenn Riesiges Klauententakel erscheinen", SpecWarnWeakened = "Spezialwarnung, wenn C'Thun geschwächt ist", TimerEyeTentacle = "Zeige Zeit bis die nächsten Augententakel erscheinen", TimerClawTentacle = "Zeige Zeit bis die nächsten Klauententakel erscheinen", TimerGiantEyeTentacle = "Zeige Zeit bis die nächsten Riesiges Augententakel erscheinen", TimerGiantClawTentacle = "Zeige Zeit bis die nächsten Riesiges Klauententakel erscheinen", TimerWeakened = "Dauer der Schwäche von C'Thun anzeigen", RangeFrame = "Zeige Abstandsfenster (10m)" }) L:SetMiscLocalization({ Stomach = "Magen", Eye = "Auge von C'Thun", FleshTent = "Fleischtentakel", Weakened = "ist geschwächt!", NotValid = "AQ40 teilweise gelöscht. % s optionale Bosse bleiben erhalten." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Ouro" }) L:SetWarningLocalization({ WarnSubmerge = "Abtauchen", WarnEmerge = "Auftauchen" }) L:SetTimerLocalization({ TimerSubmerge = "Abtauchen", TimerEmerge = "Auftauchen" }) L:SetOptionLocalization({ WarnSubmerge = "Zeige Warnung für Abtauchen", TimerSubmerge = "Zeige Zeit bis Abtauchen", WarnEmerge = "Zeige Warnung für Auftauchen", TimerEmerge = "Zeige Zeit bis Auftauchen" }) ================================================ FILE: DBM-AQ40/localization.en.lua ================================================ local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "The Prophet Skeram" }) L:SetMiscLocalization({ YellKillSkeram = "You only delay the inevitable!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Bug Trio" }) L:SetMiscLocalization({ Yauj = "Princess Yauj", Vem = "Vem", Kri = "Lord Kri" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Battleguard Sartura" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Fankriss the Unyielding" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Viscidus" }) L:SetWarningLocalization({ WarnFreeze = "Freeze: %d/3", WarnShatter = "Shatter: %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Announce Freeze status", WarnShatter = "Announce Shatter status" }) L:SetMiscLocalization({ Slow = "begins to slow", Freezing= "is freezing up", Frozen = "is frozen solid", Phase4 = "begins to crack", Phase5 = "looks ready to shatter", Phase6 = "Explodes.", HitsRemain = "Hits Remaining", Frost = "Frost", Physical = "Physical" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Princess Huhuran" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Twin Emperors" }) L:SetMiscLocalization({ Veklor = "Emperor Vek'lor", Veknil = "Emperor Vek'nilash" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "C'Thun" }) L:SetWarningLocalization({ WarnEyeTentacle = "Eye Tentacle", WarnClawTentacle2 = "Claw Tentacle", WarnGiantEyeTentacle = "Giant Eye Tentacle", WarnGiantClawTentacle = "Giant Claw Tentacle", SpecWarnWeakened = "C'Thun Weaken!" }) L:SetTimerLocalization({ TimerEyeTentacle = "Eye Tentacle", TimerClawTentacle = "Claw Tentacle", TimerGiantEyeTentacle = "Giant Eye Tentacle", TimerGiantClawTentacle = "Giant Claw Tentacle", TimerWeakened = "Weaken ends" }) L:SetOptionLocalization({ WarnEyeTentacle = "Show warning for Eye Tentacle", WarnClawTentacle2 = "Show warning for Claw Tentacle", WarnGiantEyeTentacle = "Show warning for Giant Eye Tentacle", WarnGiantClawTentacle = "Show warning for Giant Claw Tentacle", SpecWarnWeakened = "Show special warning when boss weaken", TimerEyeTentacle = "Show timer for next Eye Tentacle", TimerClawTentacle = "Show timer for next Claw Tentacle", TimerGiantEyeTentacle = "Show timer for next Giant Eye Tentacle", TimerGiantClawTentacle = "Show timer for next Giant Claw Tentacle", TimerWeakened = "Show timer for boss weaken duration", RangeFrame = "Show range frame (10)" }) L:SetMiscLocalization({ Stomach = "Stomach", Eye = "Eye of C'Thun", FleshTent = "Flesh Tentacle",--Localized so it shows on frame in users language, not senders Weakened = "weaken", NotValid = "AQ40 partially cleared. %s optional bosses remain." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Ouro" }) L:SetWarningLocalization({ WarnSubmerge = "Submerge", WarnEmerge = "Emerge" }) L:SetTimerLocalization({ TimerSubmerge = "Forced Submerge", TimerEmerge = "Emerge" }) L:SetOptionLocalization({ WarnSubmerge = "Show warning for submerge", TimerSubmerge = "Show timer for when submerge will be forced. Note: He can still submerge at any time what so ever if his target leaves melee range.", WarnEmerge = "Show warning for emerge", TimerEmerge = "Show timer for emerge" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40 Trash" }) ================================================ FILE: DBM-AQ40/localization.es.lua ================================================ if GetLocale() ~= "esES" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "El profeta Skeram" }) L:SetMiscLocalization({ YellKillSkeram = "¡Únicamente estáis aplazando lo inevitable!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Realeza silítida" }) L:SetMiscLocalization({ Yauj = "Princesa Yauj", Vem = "Vem", Kri = "Lord Kri" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Guardia de batalla Sartura" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Fankriss el Implacable" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Viscidus" }) L:SetWarningLocalization({ WarnFreeze = "Congelación: %d/3", WarnShatter = "Hacerse añicos: %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Anunciar congelación", WarnShatter = "Anunciar hacerse añicos" }) L:SetMiscLocalization({ Slow = "comienza a remitir!", Freezing= "se queda inmóvil!", Frozen = "está paralizada!", Phase4 = "empieza a desmoronarse!", Phase5 = "parece a punto de hacerse añicos!", Phase6 = "explota!", HitsRemain = "Golpes restantes", Frost = "Escarcha", Physical = "Daño físico" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Princesa Huhuran" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Los Emperadores Gemelos" }) L:SetMiscLocalization({ Veklor = "Emperador Vek'lor", Veknil = "Emperador Vek'nilash" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "C'Thun" }) L:SetWarningLocalization({ WarnEyeTentacle = "Tentáculo ocular", WarnClawTentacle2 = "Tentáculo Garral", WarnGiantEyeTentacle = "Tentáculo ocular gigante", WarnGiantClawTentacle = "Tentáculo garral gigante", SpecWarnWeakened = "¡C'Thun está débil!" }) L:SetTimerLocalization({ TimerEyeTentacle = "Siguiente Tentáculo ocular", TimerClawTentacle = "Siguiente Tentáculo Garral", TimerGiantEyeTentacle = "Siguiente Tentáculo ocular gigante", TimerGiantClawTentacle = "Siguiente Tentáculo garral gigante", TimerWeakened = "Debilidad termina" }) L:SetOptionLocalization({ WarnEyeTentacle = "Mostrar aviso cuando aparezca un Tentáculo ocular", WarnClawTentacle2 = "Mostrar aviso cuando aparezca un Tentáculo Garral", WarnGiantEyeTentacle = "Mostrar aviso cuando aparezca un Tentáculo ocular gigante", WarnGiantClawTentacle = "Mostrar aviso cuando aparezca un Tentáculo garral gigante", WarnWeakened = "Mostrar aviso cuando C'Thun se vuelva débil", SpecWarnWeakened = "Mostrar aviso especial cuando C'Thun se vuelva débil", TimerEyeTentacle = "Mostrar temporizador para el siguiente Tentáculo ocular", TimerClawTentacle = "Mostrar temporizador para el siguiente Tentáculo Garral", TimerGiantEyeTentacle = "Mostrar temporizador para el siguiente Tentáculo ocular gigante", TimerGiantClawTentacle = "Mostrar temporizador para el siguiente Tentáculo garral gigante", TimerWeakened = "Mostrar temporizador para la duración de la debilidad de C'Thun", RangeFrame = "Mostrar marco de distancia (10 m)" }) L:SetMiscLocalization({ Stomach = "Estómago", Eye = "Ojo de C'Thun", FleshTent = "Tentáculo de carne", Weakened = "está débil!", NotValid = "AQ40 parcialmente limpiado. Quedan %s jefes opcionales." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Ouro" }) L:SetWarningLocalization({ WarnSubmerge = "Ouro se sumerge", WarnEmerge = "Ouro regresa" }) L:SetTimerLocalization({ TimerSubmerge = "Sumersión", TimerEmerge = "Emersión" }) L:SetOptionLocalization({ WarnSubmerge = "Mostrar aviso cuando Ouro se sumerja", TimerSubmerge = "Mostrar temporizador para cuando Ouro se sumerja", WarnEmerge = "Mostrar aviso cuando Ouro regrese a la superficie", TimerEmerge = "Mostrar temporizador para cuando Ouro regrese a la superficie" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40: Bichos" }) ================================================ FILE: DBM-AQ40/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "Le Prophète Skeram" }) L:SetMiscLocalization({ YellKillSkeram = "Vous ne faites que retarder l’inévitable !" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Trio d'insectes" }) L:SetMiscLocalization({ Yauj = "Princesse Yauj", Vem = "Vem", Kri = "Seigneur Kri" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Garde de guerre Sartura" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Fankriss l'Inflexible" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Viscidus" }) L:SetWarningLocalization({ WarnFreeze = "Gel : %d/3", WarnShatter = "Briser : %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Annoncer l'état de Gel", WarnShatter = "Annoncer l'état de Briser" }) L:SetMiscLocalization({ Slow = "commence à ralentir !", Freezing= "est gelé !", Frozen = "est congelé !", Phase4 = "commence à se briser !", Phase5 = "semble prêt à se briser !", Phase6 = "explose !", HitsRemain = "Touche restante", Frost = "Givre", Physical = "Physique" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Princesse Huhuran" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Empereurs Jumeaux" }) L:SetMiscLocalization({ Veklor = "Empereur Vek'lor", Veknil = "Empereur Vek'nilash" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "C'Thun" }) L:SetWarningLocalization({ WarnEyeTentacle = "Tentacule oculaire", WarnClawTentacle2 = "Tentacule griffu", WarnGiantEyeTentacle = "Tentacule oculaire géant", WarnGiantClawTentacle = "Tentacule griffu géant", SpecWarnWeakened = "C'Thun est affaibli !" }) L:SetTimerLocalization({ TimerEyeTentacle = "Prochain Tentacule oculaire", TimerClawTentacle = "Prochain Tentacule griffu", TimerGiantEyeTentacle = "Prochain Tentacule oculaire géant", TimerGiantClawTentacle = "Prochain Tentacule griffu géant", TimerWeakened = "Faiblesse terminé" }) L:SetOptionLocalization({ WarnEyeTentacle = "Afficher l'avertissement pour Tentacule oculaire", WarnClawTentacle2 = "Afficher l'avertissement pour Tentacule griffu", WarnGiantEyeTentacle = "Afficher l'avertissement pour Tentacule oculaire géant", WarnGiantClawTentacle = "Afficher l'avertissement pour Tentacule griffu géant", SpecWarnWeakened = "Afficher un avertissement spécial lorsque le boss s'affaiblit", TimerEyeTentacle = "Afficher le timer pour le prochain Tentacule oculaire", TimerClawTentacle = "Afficher le timer pour le prochain Tentacule griffu", TimerGiantEyeTentacle = "Afficher le timer pour le prochain Tentacule oculaire géant", TimerGiantClawTentacle = "Afficher le timer pour le prochain Tentacule griffu géant", TimerWeakened = "Afficher le timer pour la durée d'affaiblissement du boss", RangeFrame = "Afficher le cadre de portée (10 m)" }) L:SetMiscLocalization({ Stomach = "Estomac", Eye = "Oeil de C'Thun", FleshTent = "Tentacule de chair", Weakened = "est affaibli !", NotValid = "AQ40 partiellement effacé. %s bosses optionnels restent." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Ouro" }) L:SetWarningLocalization({ WarnSubmerge = "Submerger", WarnEmerge = "Émerger" }) L:SetTimerLocalization({ TimerSubmerge = "Submerger", TimerEmerge = "Émerger" }) L:SetOptionLocalization({ WarnSubmerge = "Afficher l'avertissement pour submerger", TimerSubmerge = "Afficher le timer pour submerger", WarnEmerge = "Afficher l'avertissement pour émerger", TimerEmerge = "Afficher le timer pour émerger" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40: Ennemis communs" }) ================================================ FILE: DBM-AQ40/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "예언자 스케람" }) L:SetMiscLocalization({ YellKillSkeram = "이런다고 피할 수는 없다!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "벌레 3형제" }) L:SetMiscLocalization({ Yauj = "공주 야우즈", Vem = "벰", Kri = "군주 크리" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "전투감시병 살투라" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "불굴의 판크리스" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "비시디우스" }) L:SetWarningLocalization({ WarnFreeze = "빙결 : %d/3", WarnShatter = "분해 : %d/3" }) L:SetOptionLocalization({ WarnFreeze = "빙결 알림 보기", WarnShatter = "분해 알림 보기" }) L:SetMiscLocalization({ Slow = "느려지기 시작했습니다!", Freezing= "얼어붙고 있습니다!", Frozen = "단단하게 얼었습니다!", Phase4 = "분해되기 시작합니다!", Phase5 = "부서질 것 같습니다!", Phase6 = "폭발", HitsRemain = "냉기 타격 남은 횟수", Frost = "냉기", Physical = "물리" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "공주 후후란" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "쌍둥이 제왕" }) L:SetMiscLocalization({ Veklor = "제왕 베클로어", Veknil = "제왕 베크닐라쉬" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "쑨" }) L:SetWarningLocalization({ WarnEyeTentacle = "눈 달린 촉수", WarnClawTentacle2 = "갈고리 촉수", WarnGiantEyeTentacle = "눈 달린 거대한 촉수", WarnGiantClawTentacle = "거대한 발톱 촉수", SpecWarnWeakened = "쑨 약화됨!" }) L:SetTimerLocalization({ TimerEyeTentacle = "눈 달린 촉수", TimerClawTentacle = "갈고리 촉수", TimerGiantEyeTentacle = "눈 달린 거대한 촉수", TimerGiantClawTentacle = "거대한 발톱 촉수", TimerWeakened = "쑨 약화 종료" }) L:SetOptionLocalization({ WarnEyeTentacle = "눈 달린 촉수 경고 보기", WarnClawTentacle2 = "갈고리 촉수 경고 보기", WarnGiantEyeTentacle = "눈 달린 거대한 촉수 경고 보기", WarnGiantClawTentacle = "거대한 발톱 촉수 경고 보기", SpecWarnWeakened = "보스 약화시 특수 경고 보기", TimerEyeTentacle = "다음 눈 달린 촉수 타이머 바 보기", TimerClawTentacle = "다음 갈고리 촉수 타이머 바 보기", TimerGiantEyeTentacle = "다음 눈 달린 거대한 촉수 타이머 바 보기", TimerGiantClawTentacle = "다음 거대한 발톱 촉수 타이머 바 보기", TimerWeakened = "보스 약화 지속시간 타이머 바 보기", RangeFrame = "거리 창 보기 (10m)" }) L:SetMiscLocalization({ Stomach = "뱃속", Eye = "쑨의 눈", FleshTent = "식인 촉수",--Localized so it shows on frame in users language, not senders Weakened = "약해집니다!", NotValid = "안퀴40 레이드를 일부만 클리어 했습니다. 부차적인 네임드가 %s마리 남아있습니다." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "아우로" }) L:SetWarningLocalization({ WarnSubmerge = "잠수", WarnEmerge = "등장", }) L:SetTimerLocalization({ TimerSubmerge = "강제 잠수", TimerEmerge = "등장" }) L:SetOptionLocalization({ WarnSubmerge = "잠수 경고 보기", TimerSubmerge = "잠수가 강제로 될 때 타이머 바를 표시합니다. 알림: 아우로는 현재 대상이 평타 사거리에 있더라도 여전히 아무때나 잠수를 할 수 있습니다.", WarnEmerge = "등장 경고 보기", TimerEmerge = "등장 타이머 바 보기" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "안퀴40 일반몹" }) ================================================ FILE: DBM-AQ40/localization.mx.lua ================================================ if GetLocale() ~= "esMX" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "El profeta Skeram" }) L:SetMiscLocalization({ YellKillSkeram = "¡Únicamente retrasan lo inevitable!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Realeza silítida" }) L:SetMiscLocalization({ Yauj = "Princesa Yauj", Vem = "Vem", Kri = "Lord Kri" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Guardia de batalla Sartura" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Fankriss el Implacable" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Viscidus" }) L:SetWarningLocalization({ WarnFreeze = "Congelación: %d/3", WarnShatter = "Hacerse añicos: %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Anunciar congelación", WarnShatter = "Anunciar hacerse añicos" }) L:SetMiscLocalization({ Slow = "comienza a ir más despacio!", Freezing= "se está congelando!", Frozen = "no se puede mover!", Phase4 = "comienza a desmoronarse!", Phase5 = "parece a punto de hacerse añicos!", Phase6 = "explota!", HitsRemain = "Golpes restantes", Frost = "Escarcha", Physical = "Daño físico" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Princesa Huhuran" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Los Emperadores Gemelos" }) L:SetMiscLocalization({ Veklor = "Emperador Vek'lor", Veknil = "Emperador Vek'nilash" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "C'Thun" }) L:SetWarningLocalization({ WarnEyeTentacle = "Tentáculo ocular", WarnClawTentacle2 = "Tentáculo Garral", WarnGiantEyeTentacle = "Tentáculo ocular gigante", WarnGiantClawTentacle = "Tentáculo garral gigante", SpecWarnWeakened = "¡C'Thun está débil!" }) L:SetTimerLocalization({ TimerEyeTentacle = "Siguiente Tentáculo ocular", TimerClawTentacle = "Siguiente Tentáculo Garral", TimerGiantEyeTentacle = "Siguiente Tentáculo ocular gigante", TimerGiantClawTentacle = "Siguiente Tentáculo garral gigante", TimerWeakened = "Debilidad termina" }) L:SetOptionLocalization({ WarnEyeTentacle = "Mostrar aviso cuando aparezca un Tentáculo ocular", WarnClawTentacle2 = "Mostrar aviso cuando aparezca un Tentáculo Garral", WarnGiantEyeTentacle = "Mostrar aviso cuando aparezca un Tentáculo ocular gigante", WarnGiantClawTentacle = "Mostrar aviso cuando aparezca un Tentáculo garral gigante", WarnWeakened = "Mostrar aviso cuando C'Thun se vuelva débil", SpecWarnWeakened = "Mostrar aviso especial cuando C'Thun se vuelva débil", TimerEyeTentacle = "Mostrar temporizador para el siguiente Tentáculo ocular", TimerClawTentacle = "Mostrar temporizador para el siguiente Tentáculo Garral", TimerGiantEyeTentacle = "Mostrar temporizador para el siguiente Tentáculo ocular gigante", TimerGiantClawTentacle = "Mostrar temporizador para el siguiente Tentáculo garral gigante", TimerWeakened = "Mostrar temporizador para la duración de la debilidad de C'Thun", RangeFrame = "Mostrar marco de distancia (10 m)" }) L:SetMiscLocalization({ Stomach = "Estómago", Eye = "Ojo de C'Thun", FleshTent = "Tentáculo de carne", Weakened = "está débil!", NotValid = "AQ40 parcialmente limpiado. Quedan %s jefes opcionales." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Ouro" }) L:SetWarningLocalization({ WarnSubmerge = "Ouro se sumerge", WarnEmerge = "Ouro regresa" }) L:SetTimerLocalization({ TimerSubmerge = "Sumersión", TimerEmerge = "Emersión" }) L:SetOptionLocalization({ WarnSubmerge = "Mostrar aviso cuando Ouro se sumerja", TimerSubmerge = "Mostrar temporizador para cuando Ouro se sumerja", WarnEmerge = "Mostrar aviso cuando Ouro regrese a la superficie", TimerEmerge = "Mostrar temporizador para cuando Ouro regrese a la superficie" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40: Bichos" }) ================================================ FILE: DBM-AQ40/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "Пророк Скерам" }) L:SetMiscLocalization({ YellKillSkeram = "Вы лишь откладываете неизбежное!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "Семейство жуков" }) L:SetMiscLocalization({ Yauj = "Принцесса Яудж", Vem = "Вем", Kri = "Лорд Кри" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "Боевой страж Сартура" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "Фанкрисс Непреклонный" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "Нечистотон" }) L:SetWarningLocalization({ WarnFreeze = "Заморожен: %d/3", WarnShatter = "Расколот: %d/3" }) L:SetOptionLocalization({ WarnFreeze = "Объявлять статус Заморозки", WarnShatter = "Объявлять статус Раскола" }) L:SetMiscLocalization({ Slow = "замедляется!", Freezing = "замораживается!", Frozen = "застывает!", Phase4 = "начинает раскалываться!", Phase5 = "едва держится!", Phase6 = "взрывается!", HitsRemain = "Ударов Осталось", Frost = "Лёд", Physical = "Физический урон" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "Принцесса Хухуран" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "Императоры-близнецы" }) L:SetMiscLocalization({ Veklor = "Император Век'лор", Veknil = "Император Век'нилаш" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "К'Тун" }) L:SetWarningLocalization({ WarnEyeTentacle = "Глазной отросток", WarnClawTentacle2 = "Когтещупальце", WarnGiantEyeTentacle = "Огромное глазастое щупальце", WarnGiantClawTentacle = "Гигантский когтещуп", WarnWeakened = "К'Тун ослаблен!" }) L:SetTimerLocalization({ TimerEyeTentacle = "Глазной отросток", TimerGiantEyeTentacle = "Огромное глазастое щупальце", TimerClawTentacle = "Когтещупальце", TimerGiantClawTentacle = "Гигантский когтещуп", TimerWeakened = "Ослаблен закончен" }) L:SetOptionLocalization({ WarnEyeTentacle = "Показывать предупреждение для Глазного отростка", WarnClawTentacle2 = "Показывать предупреждение для Когтещупальца", WarnGiantEyeTentacle = "Показывать предупреждение для Огромного глазастого щупальца", WarnGiantClawTentacle = "Показывать предупреждение для Гигантского когтещупа", SpecWarnWeakened = "Показывать специальное предупреждение, когда босс ослаблен", TimerEyeTentacle = "Показывать таймер до следующего Глазного отростка", TimerClawTentacle = "Показывать таймер до следующего Когтещупальца", TimerGiantEyeTentacle = "Показывать таймер до следующего Огромного глазастого щупальца", TimerGiantClawTentacle = "Показывать таймер до следующего Гигантского когтещупа", TimerWeakened = "Показывать таймер продолжительности ослабления босса", RangeFrame = "Показывать индикатор расстояния (10)" }) L:SetMiscLocalization({ Stomach = "Живот", Eye = "Око К'Туна", FleshTent = "Мясистое щупальце",--Localized so it shows on frame in users language, not senders Weakened = "ослаблен!", NotValid = "АК40 частично зачищен. %s необязательные боссы остались." }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "Оуро" }) L:SetWarningLocalization({ WarnSubmerge = "Закапывание", WarnEmerge = "Появление" }) L:SetTimerLocalization({ TimerSubmerge = "Закапывание", TimerEmerge = "Появление" }) L:SetOptionLocalization({ WarnSubmerge = "Показывать предупреждение о закапывании", TimerSubmerge = "Показывать таймер до закапывания", WarnEmerge = "Показывать предупреждение о появлении", TimerEmerge = "Показывать таймер до появления" }) ---------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "АК40: Треш" }) ================================================ FILE: DBM-AQ40/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L ------------ -- Skeram -- ------------ L = DBM:GetModLocalization("Skeram") L:SetGeneralLocalization({ name = "預言者斯克拉姆" }) L:SetMiscLocalization({ YellKillSkeram = "你只不過在延後遲早會發生的事情罷了!" }) ---------------- -- Three Bugs -- ---------------- L = DBM:GetModLocalization("ThreeBugs") L:SetGeneralLocalization({ name = "異種蠍皇族" }) L:SetMiscLocalization({ Yauj = "亞爾基公主", Vem = "維姆", Kri = "克里勳爵" }) ------------- -- Sartura -- ------------- L = DBM:GetModLocalization("Sartura") L:SetGeneralLocalization({ name = "沙爾圖拉" }) -------------- -- Fankriss -- -------------- L = DBM:GetModLocalization("Fankriss") L:SetGeneralLocalization({ name = "不屈的范克里斯" }) -------------- -- Viscidus -- -------------- L = DBM:GetModLocalization("Viscidus") L:SetGeneralLocalization({ name = "維希度斯" }) L:SetWarningLocalization({ WarnFreeze = "冰凍:%d/3", WarnShatter = "打碎:%d/3" }) L:SetOptionLocalization({ WarnFreeze = "提示冰凍狀態", WarnShatter = "提示打碎狀態" }) L:SetMiscLocalization({ Slow = "開始減速!", --Translation problem, this is an exclamation mark in English, please do not modify it. Freezing= "凍住了!", Frozen = "變成冰凍的固體!", --Translation problem, this is an exclamation mark in English, please do not modify it. Phase4 = "開始爆裂!", --Translation problem, this is an exclamation mark in English, please do not modify it. Phase5 = "看來準備好毀滅了!", Phase6 = "爆炸。", HitsRemain = "剩餘攻擊", Frost = "冰霜", Physical = "物理" }) ------------- -- Huhuran -- ------------- L = DBM:GetModLocalization("Huhuran") L:SetGeneralLocalization({ name = "哈霍蘭公主" }) --------------- -- Twin Emps -- --------------- L = DBM:GetModLocalization("TwinEmpsAQ") L:SetGeneralLocalization({ name = "雙子帝王" }) L:SetMiscLocalization({ Veklor = "維克洛爾大帝", Veknil = "維克尼拉斯大帝" }) ------------ -- C'Thun -- ------------ L = DBM:GetModLocalization("CThun") L:SetGeneralLocalization({ name = "克蘇恩" }) L:SetWarningLocalization({ WarnEyeTentacle = "眼球觸鬚", WarnClawTentacle2 = "利爪觸鬚", WarnGiantEyeTentacle = "巨型眼球觸鬚", WarnGiantClawTentacle = "巨型利爪觸鬚", WarnWeakened = "克蘇恩變得虛弱了" }) L:SetTimerLocalization({ TimerEyeTentacle = "下一次眼球觸鬚", TimerClawTentacle = "下一次利爪觸鬚", TimerGiantEyeTentacle = "下一次巨型眼球觸鬚", TimerGiantClawTentacle = "下一次巨型利爪觸鬚", TimerWeakened = "虛弱結束" }) L:SetOptionLocalization({ WarnEyeTentacle = "為眼球觸鬚顯示警告", WarnClawTentacle2 = "為利爪觸鬚顯示警告", WarnGiantEyeTentacle = "為巨型眼球觸鬚顯示警告", WarnGiantClawTentacle = "為巨型利爪觸鬚顯示警告", SpecWarnWeakened = "當首領虛弱時顯示特別警告", TimerEyeTentacle = "為下一次眼球觸鬚顯示計時器", TimerClawTentacle = "為下一次利爪觸鬚顯示計時器", TimerGiantEyeTentacle = "為下一次巨型眼球觸鬚顯示計時器", TimerGiantClawTentacle = "為下一次巨型利爪觸鬚顯示計時器", TimerWeakened = "為首領虛弱時間顯示計時器", RangeFrame = "顯示距離框架(10碼)" }) L:SetMiscLocalization({ Stomach = "內場", Eye = "克蘇恩之眼", FleshTent = "血肉觸鬚",--Localized so it shows on frame in users language, not senders Weakened = "變弱了", NotValid = "AQ40 擊殺信息: %s 首領未擊殺。" }) ---------------- -- Ouro -- ---------------- L = DBM:GetModLocalization("Ouro") L:SetGeneralLocalization({ name = "奧羅" }) L:SetWarningLocalization({ WarnSubmerge = "鑽地", WarnEmerge = "現身" }) L:SetTimerLocalization({ TimerSubmerge = "強制鑽地", TimerEmerge = "現身" }) L:SetOptionLocalization({ WarnSubmerge = "為鑽地顯示警告", TimerSubmerge = "為鑽地顯示計時器,確定何時將強制執行合併。 注意:如果近戰離開目標範圍,他仍然可以隨時鑽地。", WarnEmerge = "為現身顯示警告", TimerEmerge = "為現身顯示計時器" }) --------------- -- AQ40 Trash -- ---------------- L = DBM:GetModLocalization("AQ40Trash") L:SetGeneralLocalization({ name = "AQ40:全程計時" }) ================================================ FILE: DBM-Azeroth/Azuregos.lua ================================================ local mod = DBM:NewMod("Azuregos", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(6109)--121820 TW ID, 6109 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( "SPELL_CAST_START 21099", "SPELL_CAST_SUCCESS 22067 21147" ) local warningFrostBreath = mod:NewSpellAnnounce(21099, 3) local specWarnArcaneVacuum = mod:NewSpecialWarningSpell(21147, nil, nil, nil, 2, 5) local specWarnReflection = mod:NewSpecialWarningSpell(22067, "CasterDps", nil, nil, 1, 2) --Timers too variable, if the max is more than double the min time, a timer for min time is more misleading than helpful --local timerReflectionCD = mod:NewCDTimer(15.7, 22067, nil, "CasterDps", nil, 5, nil, DBM_CORE_L.DAMAGER_ICON)--15.7-33 --local timerFrostBreathCD = mod:NewCDTimer(10, 21099, nil, nil, nil, 3)--10-40 (lovely) --local timerArcaneVacuumCD = mod:NewCDTimer(16, 21147, nil, nil, nil, 2)--16-35 --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(_, yellTriggered) if yellTriggered then --timerFrostBreathCD:Start(5.8-delay) --timerArcaneVacuumCD:Start(5.7-delay)--5.7-12 --timerReflectionCD:Start(24.4-delay)--Recheck end end function mod:SPELL_CAST_START(args) if args.spellId == 21099 and self:AntiSpam(3, 2) then warningFrostBreath:Show() --timerFrostBreathCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 22067 then specWarnReflection:Show() specWarnReflection:Play("stilldanger") --pull:176.7, 31.3, 23.1, 20.8, 30.6, 26.2, 25.5, 15.7, 33.1, 30.1 --timerReflectionCD:Start() elseif args.spellId == 21147 and self:AntiSpam(5, 1) then specWarnArcaneVacuum:Show() specWarnArcaneVacuum:Play("teleyou") --timerArcaneVacuumCD:Start() end end ================================================ FILE: DBM-Azeroth/DBM-Azeroth.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Azeroth (Classic)|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Azeroth (Classic)|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Azeroth (Clásico)|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Azeroth (Clásico)|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Azeroth (Classique)|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Азерот (классический)|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0아제로스 (클래식)|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0艾澤拉斯 (經典)|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0世界首领 (经典)|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMAzeroth_AllSavedVars ## SavedVariablesPerCharacter: DBMAzeroth_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: Classic ## X-DBM-Mod-World-Boss: 1 ## X-DBM-StatTypes: normal ## X-DBM-Mod-Name: Azeroth (Classic) ## X-DBM-Mod-Name-deDE: Azeroth (Classic) ## X-DBM-Mod-Name-esES: Azeroth (Clásico) ## X-DBM-Mod-Name-esMX: Azeroth (Clásico) ## X-DBM-Mod-Name-frFR: Azeroth (Classique) ## X-DBM-Mod-Name-ptBR: Azeroth (Clássico) ## X-DBM-Mod-Name-ruRU: Азерот (классический) ## X-DBM-Mod-Name-koKR: 아제로스 (클래식) ## X-DBM-Mod-Name-zhTW: 艾澤拉斯 (經典) ## X-DBM-Mod-Name-zhCN: 世界首领 (经典) ## X-DBM-Mod-Sort: 1106 ## X-DBM-Mod-MapID: 182,35,44,27,122 ## X-DBM-Mod-LoadCID: 14889,14888,14887,14890,6109 localization.en.lua localization.de.lua localization.fr.lua localization.es.lua localization.mx.lua localization.ru.lua localization.kr.lua localization.tw.lua localization.cn.lua Azuregos.lua Taerar.lua Ysondre.lua Lethon.lua Emeriss.lua ================================================ FILE: DBM-Azeroth/Emeriss.lua ================================================ local mod = DBM:NewMod("Emeriss", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(14889)--121913 TW ID, 14889 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 24814 24813 24818", "SPELL_AURA_APPLIED 24818", "SPELL_AURA_APPLIED_DOSE 24818" ) --TODO, maybe taunt special warnings for classic version when it matters more. --TODO, Needs valid spellIDs for Classic local warnNoxiousBreath = mod:NewStackAnnounce(24818, 2, nil, "Tank", 2) local specWarnSleepingFog = mod:NewSpecialWarningDodge(24814, nil, nil, nil, 2, 2) --local specWarnMushroom = mod:NewSpecialWarningYou(243451, nil, nil, nil, 1, 2) --local timerNoxiousBreathCD = mod:NewCDTimer(18.3, 24818, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Iffy local timerSleepingFogCD = mod:NewCDTimer(15.8, 24814, nil, nil, nil, 3) --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(delay, yellTriggered) if yellTriggered then --timerNoxiousBreathCD:Start(11.9-delay)--13 timerSleepingFogCD:Start(18.4-delay)--19.2 end end --[[ function mod:SPELL_CAST_START(args) if args.spellId == 243401 and self:AntiSpam(3, 1) then timerNoxiousBreathCD:Start() end end --]] function mod:SPELL_CAST_SUCCESS(args) --if args.spellId == 24814 or args.spellId == 24813 then if args.spellId == 24814 then specWarnSleepingFog:Show() specWarnSleepingFog:Play("watchstep") timerSleepingFogCD:Start() --elseif args.spellId == 24818 and self:AntiSpam(3, 1) then --timerNoxiousBreathCD end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 24818 then if self:IsTanking(nil, nil, args.destName, nil, args.sourceGUID) then warnNoxiousBreath:Show(args.destName, args.amount or 1) end --elseif args.spellId == 243451 then --9.7-20 second timer --if args:IsPlayer() then -- specWarnMushroom:Show() -- specWarnMushroom:Play("targetyou") --end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED ================================================ FILE: DBM-Azeroth/KazzakClassic.lua ================================================ local mod = DBM:NewMod("KazzakClassic", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(12397)--121818 TW ID, 12397 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 21341", "SPELL_AURA_APPLIED 21056" ) local warningMark = mod:NewTargetNoFilterAnnounce(21056, 4) local warningShadowBoltVolley = mod:NewSpellAnnounce(21341, 2) local specWarnMark = mod:NewSpecialWarningYou(21056, nil, nil, nil, 1, 2)--No Yell on purpose, outdoor chat restrictions and all --Timers seem totally random, like 5-40 type random nonsense, so are utterly worthless --local timerMarkCD = mod:NewCDTimer(19.1, 21056, nil, nil, nil, 3, nil, DBM_COMMON_L.MAGIC_ICON) --local timerShadowBoltVolleyCD = mod:NewCDTimer(7.6, 21341, nil, nil, nil, 2) --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(_, yellTriggered) if yellTriggered then --timerShadowBoltVolleyCD:Start(11.5-delay) --timerMarkCD:Start(14.1-delay) end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 21341 and args:IsSrcTypeHostile() then warningShadowBoltVolley:Show() --timerShadowBoltVolleyCD:Start() end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 21056 then self:SendSync("Mark", args.destName) if self:AntiSpam(5, 1) then if args:IsPlayer() then specWarnMark:Show() specWarnMark:Play("targetyou") else warningMark:Show(args.destName) end end end end do local playerName = UnitName("player") function mod:OnSync(msg, targetName) if not self:IsInCombat() then return end if msg == "Mark" and targetName and self:AntiSpam(5, 1) then if targetName == playerName then specWarnMark:Show() specWarnMark:Play("targetyou") else warningMark:Show(targetName) end end end end ================================================ FILE: DBM-Azeroth/Lethon.lua ================================================ local mod = DBM:NewMod("Lethon", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(14888)--121821 TW ID, 14888 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( -- "SPELL_CAST_START 24818 243468", "SPELL_CAST_SUCCESS 24814 24813" -- "SPELL_AURA_APPLIED 243401", -- "SPELL_AURA_APPLIED_DOSE 243401" ) --TODO, maybe taunt special warnings for classic version when it matters more. --TODO, needs valid spellIds for Classic local warnNoxiousBreath = mod:NewStackAnnounce(24818, 2, nil, "Tank", 2) local specWarnSleepingFog = mod:NewSpecialWarningDodge(24814, nil, nil, nil, 2, 2) --local specWarnShadowBoltWhirl = mod:NewSpecialWarningDodge(243468, nil, nil, nil, 2, 2) --local timerNoxiousBreathCD = mod:NewCDTimer(18.3, 24818, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Iffy local timerSleepingFogCD = mod:NewCDTimer(16.8, 24814, nil, nil, nil, 3) --local timerShadowBoltWhirlCD = mod:NewCDTimer(15.8, 243468, nil, nil, nil, 3) --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(_, yellTriggered) if yellTriggered then --timerNoxiousBreathCD:Start(11.9-delay) --timerSleepingFogCD:Start(18.4-delay) end end --[[ function mod:SPELL_CAST_START(args) if args.spellId == 24818 then --timerNoxiousBreathCD:Start() elseif args.spellId == 243468 and self:AntiSpam(5, 1) then --specWarnShadowBoltWhirl:Show() --specWarnShadowBoltWhirl:Play("watchorb") --timerShadowBoltWhirlCD:Start() end end --]] function mod:SPELL_CAST_SUCCESS(args) --if args.spellId == 24814 or args.spellId == 24813 then if args.spellId == 24814 then specWarnSleepingFog:Show() specWarnSleepingFog:Play("watchstep") timerSleepingFogCD:Start() --elseif args.spellId == 24818 and self:AntiSpam(3, 1) then --timerNoxiousBreathCD end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 24818 then if self:IsTanking(nil, nil, args.destName, nil, args.sourceGUID) then--Basically, HAS to be bosses current target warnNoxiousBreath:Show(args.destName, args.amount or 1) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED ================================================ FILE: DBM-Azeroth/Taerar.lua ================================================ local mod = DBM:NewMod("Taerar", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(14890)--121911 TW ID, 14890 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( -- "SPELL_CAST_START 24818 243401", "SPELL_CAST_SUCCESS 24814 24813", "SPELL_AURA_APPLIED 24818", "SPELL_AURA_APPLIED_DOSE 24818" ) --TODO, maybe taunt special warnings for classic version when it matters more. --TODO, needs valid spellIds for classic local warnNoxiousBreath = mod:NewStackAnnounce(24818, 2, nil, "Tank", 2) --local warningBellowingRoar = mod:NewSpellAnnounce(243661, 3) local specWarnSleepingFog = mod:NewSpecialWarningDodge(24814, nil, nil, nil, 2, 2) --local timerNoxiousBreathCD = mod:NewCDTimer(19.4, 24818, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Iffy local timerSleepingFogCD = mod:NewCDTimer(21.9, 24814, nil, nil, nil, 3) --local timerBellowingRoarCD = mod:NewCDTimer(7.2, 243661, nil, nil, nil, 2) --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(delay, yellTriggered) if yellTriggered then --timerBellowingRoarCD:Start(10.5-delay) --timerNoxiousBreathCD:Start(14.3-delay) timerSleepingFogCD:Start(21.5-delay) end end --[[ function mod:SPELL_CAST_START(args) if args.spellId == 243661 and self:AntiSpam(3, 1) then warningBellowingRoar:Show() timerBellowingRoarCD:Start() elseif args.spellId == 24818 and self:AntiSpam(3, 2) then timerNoxiousBreathCD:Start() end end --]] function mod:SPELL_CAST_SUCCESS(args) --if args.spellId == 24814 or args.spellId == 24813 then if args.spellId == 24814 then specWarnSleepingFog:Show() specWarnSleepingFog:Play("watchstep") timerSleepingFogCD:Start() --elseif args.spellId == 24818 and self:AntiSpam(3, 1) then --timerNoxiousBreathCD end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 24818 then if self:IsTanking(nil, nil, args.destName, nil, args.sourceGUID) then--Basically, HAS to be bosses current target warnNoxiousBreath:Show(args.destName, args.amount or 1) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED ================================================ FILE: DBM-Azeroth/Ysondre.lua ================================================ local mod = DBM:NewMod("Ysondre", "DBM-Azeroth") local L = mod:GetLocalizedStrings() mod:SetRevision("20220518110528") mod:SetCreatureID(14887)--121912 TW ID, 14887 classic ID --mod:SetModelID(17887) mod:EnableWBEngageSync()--Enable syncing engage in outdoors mod:RegisterCombat("yell", L.Pull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 24814 24813 24818", "SPELL_AURA_APPLIED 24818", "SPELL_AURA_APPLIED_DOSE 24818", "UNIT_SPELLCAST_SUCCEEDED" ) --TODO, maybe taunt special warnings for classic version when it matters more. local warnNoxiousBreath = mod:NewStackAnnounce(24818, 2, nil, "Tank", 2) local warningLightningWave = mod:NewSpellAnnounce(24819, 3) local specWarnSleepingFog = mod:NewSpecialWarningDodge(24814, nil, nil, nil, 2, 2) --local timerNoxiousBreathCD = mod:NewCDTimer(19.4, 24818, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON)--Iffy local timerSleepingFogCD = mod:NewCDTimer(16.0, 24814, nil, nil, nil, 3) local timerLightningWaveCD = mod:NewCDTimer(13.4, 24819, nil, nil, nil, 3) --mod:AddReadyCheckOption(48620, false) function mod:OnCombatStart(delay, yellTriggered) if yellTriggered then --timerNoxiousBreathCD:Start(11.9-delay) timerSleepingFogCD:Start(18.4-delay) -- timerLightningWaveCD:Start(53-delay)--Iffy end end --[[ function mod:SPELL_CAST_START(args) if args.spellId == 24818 and self:AntiSpam(3, 1) then --timerNoxiousBreathCD:Start() end end --]] function mod:SPELL_CAST_SUCCESS(args) --if args.spellId == 24814 or args.spellId == 24813 then if args.spellId == 24814 then specWarnSleepingFog:Show() specWarnSleepingFog:Play("watchstep") timerSleepingFogCD:Start() --elseif args.spellId == 24818 and self:AntiSpam(3, 1) then --timerNoxiousBreathCD end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 24818 then if self:IsTanking(nil, nil, args.destName, nil, args.sourceGUID) then--Basically, HAS to be bosses current target warnNoxiousBreath:Show(args.destName, args.amount or 1) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED --Probably won't work in classic, unit_spellcast events disabled there for all but "player" function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if spellName == GetSpellInfo(24819) and self:AntiSpam(5, 2) then--Lightning Wave warningLightningWave:Show() timerLightningWaveCD:Start() end end ================================================ FILE: DBM-Azeroth/localization.cn.lua ================================================ if GetLocale() ~= "zhCN" then return end local L --Last update: 2020/07/03 (重新整理) -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "艾索雷葛斯" }) L:SetMiscLocalization({ Pull = "我保护着这个地方。神秘的秘法不能受到亵渎。" }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "泰拉尔" }) L:SetMiscLocalization({ Pull = "和平不过是短暂的梦想!让梦魇统治整个世界吧!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "伊森德雷" }) L:SetMiscLocalization({ Pull = "生命的希冀已被切断!梦游者要展开报复!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "莱索恩" }) L:SetMiscLocalization({ Pull = "我能感受到你内心的阴影。邪恶的侵蚀永远不会停止!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "艾莫莉丝" }) L:SetMiscLocalization({ Pull = "希望是灵魂染上的疾病!这片土地应该枯竭,从此死气腾腾!" }) ================================================ FILE: DBM-Azeroth/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Azuregos" }) L:SetMiscLocalization({ Pull = "Dieser Ort steht unter meinem Schutz. Die Mysterien des Arkanen werden unberührt bleiben." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Taerar" }) L:SetMiscLocalization({ Pull = "Frieden ist nur ein flüchtiger Traum! Von nun an herrscht der ALPTRAUM!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Ysondre" }) L:SetMiscLocalization({ Pull = "Die Fäden des LEBENS wurden durchtrennt! Die Träumer müssen gerächt werden!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Lethon" }) L:SetMiscLocalization({ Pull = "Ich fühle die SCHATTEN in Euren Herzen. Niemals darf das Böse Ruhe finden!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Emeriss" }) L:SetMiscLocalization({ Pull = "Die Hoffnung ist eine KRANKHEIT der Seele. Dieses Land wird verdorren und sterben!" }) ================================================ FILE: DBM-Azeroth/localization.en.lua ================================================ local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Azuregos" }) L:SetMiscLocalization({ Pull = "This place is under my protection. The mysteries of the arcane shall remain inviolate." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Taerar" }) L:SetMiscLocalization({ Pull = "Peace is but a fleeting dream! Let the NIGHTMARE reign!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Ysondre" }) L:SetMiscLocalization({ Pull = "The strands of LIFE have been severed! The Dreamers must be avenged!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Lethon" }) L:SetMiscLocalization({ Pull = "I can sense the SHADOW on your hearts. There can be no rest for the wicked!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Emeriss" }) L:SetMiscLocalization({ Pull = "Hope is a DISEASE of the soul! This land shall wither and die!" }) ================================================ FILE: DBM-Azeroth/localization.es.lua ================================================ if GetLocale() ~= "esES" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Azuregos" }) L:SetMiscLocalization({ Pull = "Este lugar está bajo mi protección. Los misterios arcanos no serán mancillados." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Taerar" }) L:SetMiscLocalization({ Pull = "¡La paz no es más que un sueño fugaz! ¡Que reine la PESADILLA!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Ysondre" }) L:SetMiscLocalization({ Pull = "¡Los hilos de la VIDA se han roto! ¡Tenemos que vengar a los Soñadores!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Lethon" }) L:SetMiscLocalization({ Pull = "Puedo sentir la SOMBRA en vuestros corazones. ¡No puede haber descanso para los malos!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Emeriss" }) L:SetMiscLocalization({ Pull = "¡La esperanza es una ENFERMEDAD del alma! ¡Esta tierra se marchitará y morirá!" }) ================================================ FILE: DBM-Azeroth/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Azuregos" }) L:SetMiscLocalization({ Pull = "Cet endroit est sous ma protection. Les secrets de l'arcane resteront inviolés." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Taerar" }) L:SetMiscLocalization({ Pull = "La paix n'est qu'un rêve éphémère ! Que le CAUCHEMAR règne !" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Ysondre" }) L:SetMiscLocalization({ Pull = "Les fils de la VIE ont été coupés ! Les Rêveurs doivent être vengés !" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Léthon" }) L:SetMiscLocalization({ Pull = "Je sens l'OMBRE dans vos cœurs. Il ne peut y avoir de repos pour les vilains !" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Emeriss" }) L:SetMiscLocalization({ Pull = "L'espoir est une MALADIE de l'âme ! Ces terres vont flétrir et mourir !" }) ================================================ FILE: DBM-Azeroth/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "아주어고스" }) L:SetMiscLocalization({ Pull = "여기는 내가 지킨다. 어느 누구도 비전술의 신비를 건드리지 못할 것이다." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "타에라" }) L:SetMiscLocalization({ Pull = "평화란 부질없는 꿈일 뿐! 이 세상은 악몽이 지배할 것이다!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "이손드레" }) L:SetMiscLocalization({ Pull = "생명의 끈이 끊어졌다! 꿈꾸는 자들이 복수하는 것이 틀림없다!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "레손" }) L:SetMiscLocalization({ Pull = "네놈들의 마음속에서 어둠이 느껴지는구나. 사악한 존재가 쉴 곳은 없다!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "에메리스" }) L:SetMiscLocalization({ Pull = "희망은 영혼의 병! 이 땅은 말라 죽을 것이다!" }) ================================================ FILE: DBM-Azeroth/localization.mx.lua ================================================ if GetLocale() ~= "esMX" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Azuregos" }) L:SetMiscLocalization({ Pull = "Este lugar está bajo mi protección. Los misterios arcanos no serán mancillados." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Taerar" }) L:SetMiscLocalization({ Pull = "¡La paz no es más que un sueño fugaz! ¡Que reine la PESADILLA!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Ysondre" }) L:SetMiscLocalization({ Pull = "¡Los hilos de la VIDA se han roto! ¡Tenemos que vengar a los Soñadores!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Lethon" }) L:SetMiscLocalization({ Pull = "Puedo sentir la SOMBRA en sus corazones. ¡No puede haber descanso para los malos!" --Does not have one :\ }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Emeriss" }) L:SetMiscLocalization({ Pull = "¡La esperanza es una ENFERMEDAD del alma! ¡Esta tierra se marchitará y morirá!" }) ================================================ FILE: DBM-Azeroth/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "Азурегос" }) L:SetMiscLocalization({ Pull = "Это место под моей защитой. Тайные мистерии останутся неоскверненными." }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "Таэрар" }) L:SetMiscLocalization({ Pull = "Мир – это всего лишь мимолетный сон. Пусть правит КОШМАР!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "Исондра" }) L:SetMiscLocalization({ Pull = "Нити ЖИЗНИ разорваны! Отомстим за Спящих!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "Летон" }) L:SetMiscLocalization({ Pull = "Я чувствую ТЕНЬ, нависшую над вашими сердцами. Нечестивцам не будет покоя!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "Эмерисс" }) L:SetMiscLocalization({ Pull = "Надежда – это БОЛЕЗНЬ души! Эта земля зачахнет и умрет!" }) ================================================ FILE: DBM-Azeroth/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L --Last update: 2020/07/03 (重新整理) -- Azuregos (Azshara) L = DBM:GetModLocalization("Azuregos") L:SetGeneralLocalization({ name = "艾索雷苟斯" }) L:SetMiscLocalization({ Pull = "我保護著這個地方。神秘的秘法不能受到褻瀆。" }) -- Taerar (Ashenvale) L = DBM:GetModLocalization("Taerar") L:SetGeneralLocalization({ name = "泰拉爾" }) L:SetMiscLocalization({ Pull = "和平不過是短暫的夢想!讓夢魘統治整個世界吧!" }) -- Ysondre (Feralas) L = DBM:GetModLocalization("Ysondre") L:SetGeneralLocalization({ name = "伊索德雷" }) L:SetMiscLocalization({ Pull = "生命的希冀已被切斷!夢遊者要展開報復!" }) -- Lethon (Hinterlands) L = DBM:GetModLocalization("Lethon") L:SetGeneralLocalization({ name = "雷索" }) L:SetMiscLocalization({ Pull = "我能感受到你內心的陰影。邪惡的侵蝕永遠不會停止!" }) -- Emeriss (Duskwood) L = DBM:GetModLocalization("Emeriss") L:SetGeneralLocalization({ name = "艾莫莉絲" }) L:SetMiscLocalization({ Pull = "希望是靈魂染上的疾病!這片土地應該枯竭,從此死氣騰騰!" }) ================================================ FILE: DBM-BWL/Broodlord.lua ================================================ local mod = DBM:NewMod("Broodlord", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(12017) mod:SetEncounterID(612) mod:SetModelID(14308) mod:RegisterCombat("combat_yell", L.Pull)--L.Pull is backup for classic, since classic probably won't have ENCOUNTER_START to rely on and player regen never works for this boss mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 23331 18670", "SPELL_AURA_APPLIED 24573", "SPELL_AURA_REMOVED 24573" ) --Mortal Strike: 10-20, Blast Wave: 12-32, Knock Away: 13-30. i.e., timers on this fight would be near useless --(ability.id = 18670 or ability.id = 23331 or ability.id = 24573) and type = "cast" local warnBlastWave = mod:NewSpellAnnounce(23331, 2) local warnKnockAway = mod:NewSpellAnnounce(18670, 3) local warnMortal = mod:NewTargetNoFilterAnnounce(24573, 2, nil, "Tank|Healer", 3) local timerBlastWaveCD = mod:NewCDTimer(20, 23331, nil, nil, nil, 2, nil, nil, true) -- 2024/02/25: timer fixed on 20 seconds. Previously was ~7s variance [8.20-15.27]. (25m Onyxia: [2024-02-03]@[22:41:24] || [2024-02-04]@[19:03:58] || [2024-02-25]@[19:27:42]) - "Blast Wave-23331-npc:12017-135 = pull:28.34, 11.30, 10.76, 8.39, 9.12, 8.20, 12.53, 10.57, 10.51, 12.82, 12.24, 8.67, 12.19" || "Blast Wave-23331-npc:12017-135 = pull:24.91, 13.00, 8.95, 15.27, 11.03, 13.03 || "Blast Wave-23331-npc:12017-135 = pull:19.96, 20.01 local timerKnockAwayCD = mod:NewCDTimer(21.68, 18670, nil, nil, nil, 3, nil, nil, true) -- ~13s variance [21.68-34.93]. Added "keep" arg. (25m Onyxia: [2024-02-03]@[22:41:24] || [2024-02-04]@[19:03:58]) - "Knock Away-25778-npc:12017-135 = pull:26.83, 24.87, 21.68, 28.09, 24.92, 34.93" || "Knock Away-25778-npc:12017-135 = pull:27.26, 23.44, 24.25 || "Knock Away-18670-npc:12017-135 = pull:29.97, 26.22 local timerMortal = mod:NewTargetTimer(5, 24573, nil, "Tank|Healer", 3, 5, nil, DBM_COMMON_L.TANK_ICON) function mod:OnCombatStart(delay) timerBlastWaveCD:Start(-delay) timerKnockAwayCD:Start(26.83-delay) end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 23331 and args:IsSrcTypeHostile() then warnBlastWave:Show() timerBlastWaveCD:Start() elseif spellId == 18670 then warnKnockAway:Show() timerKnockAwayCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 24573 and args:IsDestTypePlayer() then local destName = args.destName warnMortal:Show(destName) timerMortal:Start(destName) end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 24573 and args:IsDestTypePlayer() then timerMortal:Stop(args.destName) end end ================================================ FILE: DBM-BWL/Chromaggus.lua ================================================ local mod = DBM:NewMod("Chromaggus", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20251010003914") mod:SetCreatureID(14020) mod:SetEncounterID(616) mod:SetModelID(14367) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 23308 23309 23313 23314 23187 23189 23315 23316 23310 23312", "SPELL_AURA_APPLIED 23155 23169 23153 23154 23170 23128 23537", -- "SPELL_AURA_REFRESH", "SPELL_AURA_REMOVED 23155 23169 23153 23154 23170 23128", "UNIT_HEALTH boss1 mouseover target", "CHAT_MSG_MONSTER_EMOTE" ) --(ability.id = 23309 or ability.id = 23313 or ability.id = 23189 or ability.id = 23315 or ability.id = 23312 or ability.id = 23314) and type = "begincast" local warnBreath = mod:NewAnnounce("WarnBreath", 2, 23316, nil, nil, nil, 17087) local warnRed = mod:NewSpellAnnounce(23155, 2, nil, false) local warnGreen = mod:NewSpellAnnounce(23169, 2, nil, false) local warnBlue = mod:NewSpellAnnounce(23153, 2, nil, false) local warnBlack = mod:NewSpellAnnounce(23154, 2, nil, false) local warnFrenzy = mod:NewSpellAnnounce(23128, 3, nil, "Tank|RemoveEnrage|Healer", 4) local warnPhase2Soon = mod:NewPrePhaseAnnounce(2, 1) local warnPhase2 = mod:NewPhaseAnnounce(2) local warnMutation = mod:NewCountAnnounce(23174, 4) local warnVuln = mod:NewAnnounce("WarnVulnerable", 1, false, nil, nil, nil, 22277) local specWarnBronze = mod:NewSpecialWarningYou(23170, nil, nil, nil, 1, 8) local specWarnFrenzy = mod:NewSpecialWarningDispel(23128, "RemoveEnrage", nil, nil, 1, 6) local specWarnBreathSoon = mod:NewSpecialWarningSoon(17087) local timerBreath = mod:NewTimer(2, "TimerBreath", 23316, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, 17087) local timerBreathCD = mod:NewTimer(60, "TimerBreathCD", 23316, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, 17087) local timerFrenzy = mod:NewBuffActiveTimer(8, 23128, nil, "Tank|RemoveEnrage|Healer", 3, 5, nil, DBM_COMMON_L.TANK_ICON..DBM_COMMON_L.ENRAGE_ICON) local timerVuln = mod:NewTimer("v17-25", "TimerVulnCD", nil, nil, nil, nil, nil, true, nil, nil, nil, nil, nil, 22277) -- 2024/02/08 Warmane Changelog: 17-25 --mod:AddNamePlateOption("NPAuraOnVulnerable", 22277) mod:AddInfoFrameOption(22277, true) mod:GroupSpells(22277, 22278, 22279, 22280, 22281) -- Elemental Shield (Vulnerabilities to Fire, Frost, Shadow, Nature, Arcane) local mydebuffs = 0 local lastVulnName = nil local vulnerabilities = { -- [guid] = school } --Constants -- https://wow.gamepedia.com/COMBAT_LOG_EVENT local spellInfo = { [2] = {"Holy", {r=255, g=230, b=128}, "585"},-- Smite [4] = {"Fire", {r=255, g=128, b=0}, "11366"},-- Pyroblast [8] = {"Nature", {r=77, g=255, b=77}, "5176"},-- Wrath [16] = {"Frost", {r=128, g=255, b=255}, "116"},-- Frostbolt [32] = {"Shadow", {r=128, g=128, b=255}, "686"},-- Shadow Bolt [64] = {"Arcane", {r=255, g=128, b=255}, "5143"},-- Arcane Missiles } local vulnSpells = { --No Holy? [22277] = 4, [22280] = 8, [22278] = 16, [22279] = 32, [22281] = 64, } local updateInfoFrame do local twipe = table.wipe local lines, sortedLines = {}, {} local function addLine(key, value) -- sort by insertion order lines[key] = value sortedLines[#sortedLines + 1] = key end updateInfoFrame = function() twipe(lines) twipe(sortedLines) if lastVulnName then addLine(lastVulnName, "") end return lines, sortedLines end end --Local Functions -- in theory this should only alert on a new vulnerability on your target or when you change target local function update_vulnerability(self) local target = UnitGUID("target") local spellSchool = vulnerabilities[target] local cid = self:GetCIDFromGUID(target) if not spellSchool or cid ~= 14020 then return end local info = spellInfo[spellSchool] if not info then return end local name = L[info[1]] or info[1] timerVuln:SetColor(info[2]) timerVuln:UpdateIcon(info[3]) timerVuln:UpdateName(name) if not lastVulnName or lastVulnName ~= name then warnVuln.icon = info[3] warnVuln:Show(name) lastVulnName = name if self.Options.InfoFrame then if not DBM.InfoFrame:IsShown() then DBM.InfoFrame:SetHeader(L.Vuln) DBM.InfoFrame:Show(1, "function", updateInfoFrame, false, false, true) else DBM.InfoFrame:Update() end end -- if self.Options.NPAuraOnVulnerable then -- DBM.Nameplate:Hide(true, target, 22277, 135924) -- DBM.Nameplate:Hide(true, target, 22277, 135808) -- DBM.Nameplate:Hide(true, target, 22277, 136006) -- DBM.Nameplate:Hide(true, target, 22277, 135846) -- DBM.Nameplate:Hide(true, target, 22277, 136197) -- DBM.Nameplate:Hide(true, target, 22277, 136096) -- DBM.Nameplate:Show(true, target, 22277, tonumber(info[3])) -- end end self:UnregisterShortTermEvents()--Unregister SPELL_DAMAGE until next shimmer emote end local function check_spell_damage(self, target, amount, spellSchool, critical) local cid = self:GetCIDFromGUID(target) if cid ~= 14020 then return end if amount > (critical and 1600 or 800) then if not vulnerabilities[target] or vulnerabilities[target] ~= spellSchool then vulnerabilities[target] = spellSchool update_vulnerability(self) end end end local function check_target_vulns(self) local target = UnitGUID("target") local cid = self:GetCIDFromGUID(target) if cid ~= 14020 then return end local spellId = select(11, DBM:UnitBuff("target", 22277, 22280, 22278, 22279, 22281)) or 0 local vulnSchool = vulnSpells[spellId] if vulnSchool then return check_spell_damage(self, target, 10000, vulnSchool) end end function mod:OnCombatStart(delay) self:SetStage(1) timerBreathCD:Start(30-delay, L.Breath1) timerBreathCD:Start(60-delay, L.Breath2)--60 specWarnBreathSoon:Schedule(27-delay) -- +2 sec casting time == you got 5 seconds to run specWarnBreathSoon:Schedule(57-delay) mydebuffs = 0 table.wipe(vulnerabilities) if self.Options.WarnVulnerable then--Don't register high cpu combat log events if option isn't enabled self:RegisterShortTermEvents( "SPELL_DAMAGE" ) check_target_vulns(self) -- if self.Options.NPAuraOnVulnerable then -- DBM:FireEvent("BossMod_EnableHostileNameplates") -- end end end function mod:OnCombatEnd() table.wipe(vulnerabilities) self:UnregisterShortTermEvents() -- if self.Options.NPAuraOnVulnerable then -- DBM.Nameplate:Hide(true, nil, nil, nil, true, true)--isGUID, unit, spellId, texture, force, isHostile, isFriendly -- end if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end function mod:SPELL_CAST_START(args) if args:IsSpellID(23308, 23309, 23313, 23314, 23187, 23189, 23315, 23316, 23310, 23312) then -- 23308 and 23309 - Incinerate (Red) -- 23313 and 23314 - Corrosive Acid (Green) -- 23187 and 23189 - Frost Burn (Blue) -- 23315 and 23316 - Ignite Flesh (Black) -- 23310 and 23312 - Time Lapse (Bronzes) warnBreath:Show(args.spellName) timerBreath:Start(2, args.spellName) timerBreath:UpdateIcon(args.spellId) timerBreathCD:Start(60, args.spellName) timerBreathCD:UpdateIcon(args.spellId) specWarnBreathSoon:Schedule(57) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 23155 and self:AntiSpam(3, 1) then if self:AntiSpam(3, 3) then warnRed:Show() end if args:IsPlayer() then mydebuffs = mydebuffs + 1 if mydebuffs >= 3 then warnMutation:Show(mydebuffs.."/5") end end elseif spellId == 23169 and self:AntiSpam(3, 2) then if self:AntiSpam(3, 4) then warnGreen:Show() end if args:IsPlayer() then mydebuffs = mydebuffs + 1 if mydebuffs >= 3 then warnMutation:Show(mydebuffs.."/5") end end elseif spellId == 23153 and self:AntiSpam(3, 3) then if self:AntiSpam(3, 5) then warnBlue:Show() end if args:IsPlayer() then mydebuffs = mydebuffs + 1 if mydebuffs >= 3 then warnMutation:Show(mydebuffs.."/5") end end elseif spellId == 23154 and self:AntiSpam(3, 4) then if self:AntiSpam(3, 6) then warnBlack:Show() end if args:IsPlayer() then mydebuffs = mydebuffs + 1 if mydebuffs >= 3 then warnMutation:Show(mydebuffs.."/5") end end elseif spellId == 23170 and args:IsPlayer() then specWarnBronze:Show() specWarnBronze:Play("useitem") mydebuffs = mydebuffs + 1 if mydebuffs >= 3 then warnMutation:Show(mydebuffs.."/5") end elseif spellId == 23128 and args:IsDestTypeHostile() then if self.Options.SpecWarn23128dispel then specWarnFrenzy:Show(args.destName) specWarnFrenzy:Play("enrage") else warnFrenzy:Show() end timerFrenzy:Start() elseif spellId == 23537 and args:IsDestTypeHostile() then if self.vb.phase < 2 then self:SetStage(2) warnPhase2:Show() end end end --Possibly needed hard to say. --mod.SPELL_AURA_REFRESH = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 23128 and args:IsPlayer() then mydebuffs = mydebuffs - 1 elseif spellId == 23169 and self:AntiSpam(3, 2) and args:IsPlayer() then mydebuffs = mydebuffs - 1 elseif spellId == 23153 and self:AntiSpam(3, 3) and args:IsPlayer() then mydebuffs = mydebuffs - 1 elseif spellId == 23154 and self:AntiSpam(3, 4) and args:IsPlayer() then mydebuffs = mydebuffs - 1 elseif spellId == 23170 and args:IsPlayer() then mydebuffs = mydebuffs - 1 elseif spellId == 23128 and args:IsDestTypeHostile() then timerFrenzy:Stop() end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, _, _, spellSchool, amount, _, _, _, _, _, critical) check_spell_damage(self, destGUID, amount, spellSchool, critical) end function mod:UNIT_HEALTH(uId) if UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and self:GetUnitCreatureId(uId) == 14020 and self.vb.phase == 1 then warnPhase2Soon:Show() self:SetStage(1.5) end end function mod:CHAT_MSG_MONSTER_EMOTE(msg) if (msg == L.VulnEmote or msg:find(L.VulnEmote)) then self:SendSync("Vulnerable") end end function mod:OnSync(msg) if not self:IsInCombat() then return end if msg == "Vulnerable" then timerVuln:Start() table.wipe(vulnerabilities) if self.Options.WarnVulnerable then self:RegisterShortTermEvents( "SPELL_DAMAGE" ) check_target_vulns(self) end end end ================================================ FILE: DBM-BWL/DBM-BWL.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Blackwing Lair|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Pechschwingenhort|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Guarida de Alanegra|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Guarida de Alanegra|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Repaire de l'Aile noire|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Логово Крыла Тьмы|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0검은날개 둥지|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0黑翼之巢|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0黑翼之巢|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMBWL_AllSavedVars ## SavedVariablesPerCharacter: DBMBWL_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: Classic ## X-DBM-StatTypes: normal ## X-DBM-Mod-MapID: 756 ## X-DBM-Mod-Sort: 1105 ## X-DBM-Mod-Name: Blackwing Lair ## X-DBM-Mod-Name-zhCN: 黑翼之巢 ## X-DBM-Mod-Name-ruRU: Логово Крыла Тьмы ## X-DBM-Mod-Name-frFR: Repaire de l'Aile noire ## X-DBM-Mod-LoadZone: Blackwing Lair ## X-DBM-Mod-LoadZone-esES: Guarida Alanegra ## X-DBM-Mod-LoadZone-ruRU: Логово Крыла Тьмы ## X-DBM-Mod-LoadZone-frFR: Repaire de l'Aile noire ## X-DBM-Mod-LoadZone-esMX: Guarida Alanegra ## X-DBM-Mod-LoadZone-zhTW: 黑翼之巢 ## X-DBM-Mod-LoadZone-zhCN: 黑翼之巢 ## X-DBM-Mod-LoadZone-koKR: 검은날개 둥지 ## X-DBM-Mod-LoadZone-deDE: Pechschwingenhort localization.en.lua localization.de.lua localization.es.lua localization.mx.lua localization.ru.lua localization.kr.lua localization.tw.lua localization.cn.lua localization.fr.lua Razorgore.lua Vaelastrasz.lua Broodlord.lua Firemaw.lua Ebonroc.lua Flamegor.lua Chromaggus.lua Nefarian.lua TalonGuards.lua ================================================ FILE: DBM-BWL/Ebonroc.lua ================================================ local mod = DBM:NewMod("Ebonroc", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(14601) mod:SetEncounterID(614) mod:SetModelID(6377) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 23339 22539", "SPELL_AURA_APPLIED 23340", "SPELL_AURA_REMOVED 23340" ) --(ability.id = 23339 or ability.id = 22539) and type = "begincast" local warnWingBuffet = mod:NewCastAnnounce(23339, 2) local warnShadowFlame = mod:NewCastAnnounce(22539, 2) local warnShadow = mod:NewTargetNoFilterAnnounce(23340, 4, nil, "Tank|Healer") local specWarnShadowYou = mod:NewSpecialWarningYou(23340, nil, nil, nil, 1, 2) local specWarnShadow = mod:NewSpecialWarningTaunt(23340, nil, nil, nil, 1, 2) local timerWingBuffet = mod:NewNextTimer(30, 23339, nil, nil, nil, 2) -- Fixed timer. (25m Onyxia: [2024-02-04]@[19:03:58]) - "Wing Buffet-23339-npc:14601-356 = pull:29.98, 30.03 local timerShadowFlameCD= mod:NewNextTimer(20, 22539, nil, false, nil, 5) -- 08/02/2024 Warmane Changelog: Fixed Shadow Flame timer for Ebonroc. 20 seconds. Obsolete log parse will be kept for history: ~5s variance [14.02-19.44]. (25m Onyxia: [2024-02-04]@[19:03:58]) - "Shadow Flame-22539-npc:14601-356 = pull:13.31, 19.44, 17.96, 14.02, 16.53 local timerShadow = mod:NewTargetTimer(8, 23340, nil, "Tank|Healer", 2, 5, nil, DBM_COMMON_L.TANK_ICON) function mod:OnCombatStart(delay) timerShadowFlameCD:Start(-delay) timerWingBuffet:Start(-delay) end function mod:SPELL_CAST_START(args)--did not see ebon use any of these abilities local spellId = args.spellId if spellId == 23339 then warnWingBuffet:Show() timerWingBuffet:Start() elseif spellId == 22539 then warnShadowFlame:Show() timerShadowFlameCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 23340 then if args:IsPlayer() then specWarnShadowYou:Show() specWarnShadowYou:Play("targetyou") else if self.Options.SpecWarn23340taunt and (self:IsTank() or not DBM.Options.FilterTankSpec) then specWarnShadow:Show(args.destName) specWarnShadow:Play("tauntboss") else warnShadow:Show(args.destName) end end timerShadow:Start(args.destName) end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 23340 then timerShadow:Stop(args.destName) end end ================================================ FILE: DBM-BWL/Firemaw.lua ================================================ local mod = DBM:NewMod("Firemaw", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(11983) mod:SetEncounterID(613) mod:SetModelID(6377) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 23339 22539", "SPELL_AURA_APPLIED_DOSE 23341" ) --(ability.id = 23339 or ability.id = 22539) and type = "begincast" or ability.id = 23341 and type = "cast" local warnWingBuffet = mod:NewCastAnnounce(23339, 2) local warnShadowFlame = mod:NewCastAnnounce(22539, 2) local warnFlameBuffet = mod:NewStackAnnounce(23341, 3) local timerWingBuffet = mod:NewNextTimer(30, 23339, nil, nil, nil, 2) -- Fixed timer. (25m Onyxia: [2024-02-04]@[19:03:58]) - "Wing Buffet-23339-npc:11983-134 = pull:29.97, 30.03, 30.02, 30.02 local timerShadowFlameCD = mod:NewNextTimer(20, 22539, nil, false, nil, 5) -- 08/02/2024 Warmane Changelog: Fixed Shadow Flame timer for Firemaw. 20 seconds. Obsolete log parse will be kept for history: ~4s variance [12.68-16.58]. (25m Onyxia: [2024-02-04]@[19:03:58]) - "Shadow Flame-22539-npc:11983-134 = pull:16.71, 16.58, 15.07, 15.49, 14.93, 16.38, 12.68 function mod:OnCombatStart(delay) timerShadowFlameCD:Start(-delay) timerWingBuffet:Start(-delay) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 23339 then warnWingBuffet:Show() timerWingBuffet:Start() elseif spellId == 22539 then warnShadowFlame:Show() timerShadowFlameCD:Start() end end function mod:SPELL_AURA_APPLIED_DOSE(args) local spellId = args.spellId if spellId == 23341 and args:IsPlayer() then local amount = args.amount or 1 if (amount >= 4) and (amount % 2 == 0) then--Starting at 4, every even amount warn stack warnFlameBuffet:Show(amount) end end end ================================================ FILE: DBM-BWL/Flamegor.lua ================================================ local mod = DBM:NewMod("Flamegor", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(11981) mod:SetEncounterID(615) mod:SetModelID(6377) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 23339 22539", "SPELL_CAST_SUCCESS 23342", "SPELL_AURA_APPLIED 23342", "SPELL_AURA_REMOVED 23342" ) --(ability.id = 23339 or ability.id = 22539) and type = "begincast" or ability.id = 23342 and type = "cast" local warnWingBuffet = mod:NewCastAnnounce(23339, 2) local warnShadowFlame = mod:NewCastAnnounce(22539, 2) local warnFrenzy = mod:NewSpellAnnounce(23342, 3, nil, "Tank|RemoveEnrage|Healer", 4) local specWarnFrenzy = mod:NewSpecialWarningDispel(23342, "RemoveEnrage", nil, nil, 1, 6) local timerWingBuffet = mod:NewNextTimer(30, 23339, nil, nil, nil, 2) -- Fixed timer. (25m Onyxia: [2024-02-04]@[19:03:58] || [2024-02-25]@[19:27:42]) - "Wing Buffet-23339-npc:11981-357 = pull:31.79, 30.02" || "Wing Buffet-23339-npc:11981-357 = pull:29.99, 30.02 local timerShadowFlameCD = mod:NewNextTimer(20, 22539, nil, false, nil, 5) -- 08/02/2024 Warmane Changelog: Fixed Shadow Flame timer for Flamegor. 20 seconds. Obsolete log parse will be kept for history: ~5s variance [12.55-17.44]. (25m Onyxia: [2024-02-04]@[19:03:58]) - "Shadow Flame-22539-npc:11981-357 = pull:17.22, 12.55, 17.03, 17.74" local timerFrenzy = mod:NewBuffActiveTimer(10, 23342, nil, "Tank|RemoveEnrage|Healer", 4, 5, nil, DBM_COMMON_L.ENRAGE_ICON) function mod:OnCombatStart(delay) timerShadowFlameCD:Start(-delay) timerWingBuffet:Start(-delay) end function mod:SPELL_CAST_START(args)--did not see ebon use any of these abilities local spellId = args.spellId if spellId == 23339 then warnWingBuffet:Show() timerWingBuffet:Start() elseif spellId == 22539 then warnShadowFlame:Show() timerShadowFlameCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 23342 and args:IsSrcTypeHostile() then if self.Options.SpecWarn23342dispel then specWarnFrenzy:Show(args.sourceName) specWarnFrenzy:Play("enrage") else warnFrenzy:Show() end end end function mod:SPELL_AURA_APPLIED(args)--did not see ebon use any of these abilities local spellId = args.spellId if spellId == 23342 then timerFrenzy:Start() end end function mod:SPELL_AURA_REMOVED(args)--did not see ebon use any of these abilities local spellId = args.spellId if spellId == 23342 then timerFrenzy:Stop() end end ================================================ FILE: DBM-BWL/Nefarian.lua ================================================ local mod = DBM:NewMod("Nefarian-Classic", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(11583) mod:SetEncounterID(617) mod:SetModelID(11380) mod:RegisterCombat("combat_yell", L.YellP1)--ENCOUNTER_START appears to fire when he lands, so start of phase 2, ignoring all of phase 1 mod:SetWipeTime(50)--guesswork mod:SetHotfixNoticeRev(20240208000000) mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 22539 22686", "SPELL_AURA_APPLIED 22687 22667", "UNIT_DIED", "UNIT_HEALTH boss1 mouseover target" ) local WarnAddsLeft = mod:NewAnnounce("WarnAddsLeft", 2, "136116") local warnClassCall = mod:NewAnnounce("WarnClassCall", 3, "136116") local warnPhase = mod:NewPhaseChangeAnnounce() local warnPhase3Soon = mod:NewPrePhaseAnnounce(3) local warnShadowFlame = mod:NewCastAnnounce(22539, 2) local warnFear = mod:NewCastAnnounce(22686, 2) local specwarnShadowCommand = mod:NewSpecialWarningTarget(22667, nil, nil, 2, 1, 2) local specwarnVeilShadow = mod:NewSpecialWarningDispel(22687, "RemoveCurse", nil, nil, 1, 2) local specwarnClassCall = mod:NewSpecialWarning("specwarnClassCall", nil, nil, nil, 1, 2) local timerPhase = mod:NewPhaseTimer(15) local timerClassCall = mod:NewTimer(30, "TimerClassCall", "136116", nil, nil, 5) local timerFearNext = mod:NewCDTimer(26.7, 22686, nil, nil, nil, 2)--26-42.5 mod.vb.addLeft = 42 local addsGuidCheck = {} local firstBossMod = DBM:GetModByName("Razorgore") function mod:OnCombatStart() table.wipe(addsGuidCheck) self.vb.addLeft = 42 self:SetStage(1) end function mod:OnCombatEnd(wipe) if not wipe then DBT:CancelBar(DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT) if firstBossMod.vb.firstEngageTime then local thisTime = time() - firstBossMod.vb.firstEngageTime if thisTime and thisTime > 0 then if not firstBossMod.Options.FastestClear then --First clear, just show current clear time DBM:AddMsg(DBM_CORE_L.RAID_DOWN:format("BWL", DBM:strFromTime(thisTime))) firstBossMod.Options.FastestClear = thisTime elseif (firstBossMod.Options.FastestClear > thisTime) then --Update record time if this clear shorter than current saved record time and show users new time, compared to old time DBM:AddMsg(DBM_CORE_L.RAID_DOWN_NR:format("BWL", DBM:strFromTime(thisTime), DBM:strFromTime(firstBossMod.Options.FastestClear))) firstBossMod.Options.FastestClear = thisTime else --Just show this clear time, and current record time (that you did NOT beat) DBM:AddMsg(DBM_CORE_L.RAID_DOWN_L:format("BWL", DBM:strFromTime(thisTime), DBM:strFromTime(firstBossMod.Options.FastestClear))) end end firstBossMod.vb.firstEngageTime = nil end end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 22539 then warnShadowFlame:Show() elseif spellId == 22686 then warnFear:Show() timerFearNext:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 22687 then if self:CheckDispelFilter("curse") then specwarnVeilShadow:Show(args.destName) specwarnVeilShadow:Play("dispelnow") end elseif spellId == 22667 then specwarnShadowCommand:Show(args.destName) specwarnShadowCommand:Play("findmc") end end function mod:UNIT_DIED(args) local guid = args.destGUID local cid = self:GetCIDFromGUID(guid) if cid == 14264 or cid == 14263 or cid == 14261 or cid == 14265 or cid == 14262 or cid == 14302 then--Red, Bronze, Blue, Black, Green, Chromatic if not addsGuidCheck[guid] then addsGuidCheck[guid] = true self.vb.addLeft = self.vb.addLeft - 1 --40, 35, 30, 25, 20, 15, 12, 9, 6, 3 if self.vb.addLeft >= 15 and (self.vb.addLeft % 5 == 0) or self.vb.addLeft >= 1 and (self.vb.addLeft % 3 == 0) then WarnAddsLeft:Show(self.vb.addLeft) end end end end function mod:UNIT_HEALTH(uId) if UnitHealth(uId) / UnitHealthMax(uId) <= 0.25 and self:GetUnitCreatureId(uId) == 11583 and self.vb.phase < 2.5 then warnPhase3Soon:Show() self:SetStage(2.5) end end function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.YellDK or msg:find(L.YellDK) then self:SendSync("ClassCall", "DEATHKNIGHT") elseif msg == L.YellDruid or msg:find(L.YellDruid) then self:SendSync("ClassCall", "DRUID") elseif msg == L.YellHunter or msg:find(L.YellHunter) then self:SendSync("ClassCall", "HUNTER") elseif msg == L.YellWarlock or msg:find(L.YellWarlock) then self:SendSync("ClassCall", "WARLOCK") elseif msg == L.YellMage or msg:find(L.YellMage) then self:SendSync("ClassCall", "MAGE") elseif msg == L.YellPaladin or msg:find(L.YellPaladin) then self:SendSync("ClassCall", "PALADIN") elseif msg == L.YellPriest or msg:find(L.YellPriest) then self:SendSync("ClassCall", "PRIEST") elseif msg == L.YellRogue or msg:find(L.YellRogue) then self:SendSync("ClassCall", "ROGUE") elseif msg == L.YellShaman or msg:find(L.YellShaman) then self:SendSync("ClassCall", "SHAMAN") elseif msg == L.YellWarrior or msg:find(L.YellWarrior) then self:SendSync("ClassCall", "WARRIOR") elseif msg == L.YellP2 or msg:find(L.YellP2) then self:SendSync("Phase", 2) elseif msg == L.YellP3 or msg:find(L.YellP3) then self:SendSync("Phase", 3) end end do local playerClass = UnitClass("player") function mod:OnSync(msg, arg, sender) if msg == "Phase" and sender then local phase = tonumber(arg) or 0 if phase == 2 then self:SetStage(2) timerPhase:Start(15)--15 til encounter start fires, not til actual land? --timerFearNext:Start(46.6) elseif phase == 3 then self:SetStage(3) end warnPhase:Show(DBM_CORE_L.AUTO_ANNOUNCE_TEXTS.stage:format(arg)) end if not self:IsInCombat() then return end if msg == "ClassCall" and sender then local className = LOCALIZED_CLASS_NAMES_MALE[arg] if playerClass == className then specwarnClassCall:Show() specwarnClassCall:Play("targetyou") else warnClassCall:Show(className) end timerClassCall:Start(30, className) end end end ================================================ FILE: DBM-BWL/Razorgore.lua ================================================ local mod = DBM:NewMod("Razorgore", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(12435, 99999)--Bogus detection to prevent invalid kill detection if razorgore happens to die in phase 1 mod:SetEncounterID(610) --mod:DisableEEKillDetection()--So disable only EE mod:SetModelID(12435) mod:RegisterCombat("yell", L.YellPull) mod:SetWipeTime(180)--guesswork mod:RegisterEventsInCombat( "SPELL_CAST_START 22425", "SPELL_CAST_SUCCESS 23040 19873", "SPELL_AURA_APPLIED 23023", -- "CHAT_MSG_MONSTER_EMOTE", "UNIT_DIED", "UNIT_SPELLCAST_SUCCEEDED boss1" ) --ability.id = 22425 and type = "begincast" or (ability.id = 23040 or ability.id = 19873) and type = "cast" local warnPhase2 = mod:NewPhaseAnnounce(2) local warnFireballVolley = mod:NewCastAnnounce(22425, 3) local warnConflagration = mod:NewTargetAnnounce(23023, 2) local warnEggsLeft = mod:NewCountAnnounce(19873, 1) local specWarnFireballVolley= mod:NewSpecialWarningMoveTo(22425, false, nil, nil, 2, 2) local timerAddsSpawn = mod:NewTimer(47, "TimerAddsSpawn", 19879, nil, nil, 1)--Only for start of adds, not adds after the adds. mod:AddSpeedClearOption("BWL", true) mod.vb.eggsLeft = 30 mod.vb.firstEngageTime = nil local destroyEggName = DBM:GetSpellInfo(19873) function mod:OnCombatStart(delay) self:SetStage(1) timerAddsSpawn:Start(-delay) self.vb.eggsLeft = 30 if not self.vb.firstEngageTime then self.vb.firstEngageTime = time() if self.Options.FastestClear and self.Options.SpeedClearTimer then --Custom bar creation that's bound to core, not mod, so timer doesn't stop when mod stops it's own timers DBT:CreateBar(self.Options.FastestClear, DBM_CORE_L.SPEED_CLEAR_TIMER_TEXT, "Interface\\Icons\\Spell_Nature_TimeStop") end end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 22425 and args:IsDestTypePlayer() then if self.Options.SpecWarn22425moveto then specWarnFireballVolley:Show(DBM_COMMON_L.BREAK_LOS) specWarnFireballVolley:Play("findshelter") else warnFireballVolley:Show() end end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 23040 and self.vb.phase < 2 then warnPhase2:Show() self:SetStage(2) --This may not be accurate, it depends on how large expanded combat log range is elseif spellId == 19873 then DBM:AddMsg("Destroy Egg SPELL_CAST_SUCCESS unhidden from combat log. Notify Zidras on Discord or GitHub") -- self.vb.eggsLeft = self.vb.eggsLeft - 1 -- warnEggsLeft:Show(string.format("%d/%d",30-self.vb.eggsLeft,30)) end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 23023 and args:IsDestTypePlayer() then warnConflagration:CombinedShow(0.3, args.destName) end end --[[function mod:CHAT_MSG_MONSTER_EMOTE(msg) if (msg == L.Phase2Emote or msg:find(L.Phase2Emote)) and self.vb.phase < 2 then self:SendSync("Phase2") end end]] function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 12435 then--Only trigger kill for unit_died if he dies in phase 2 with everyone alive, otherwise it's an auto wipe. if DBM:NumRealAlivePlayers() > 0 and self.vb.phase == 2 then DBM:EndCombat(self) else DBM:EndCombat(self, true)--Pass wipe arg end combat end end end function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if spellName == destroyEggName then self.vb.eggsLeft = self.vb.eggsLeft - 1 warnEggsLeft:Show(string.format("%d/%d",30-self.vb.eggsLeft,30)) end end --[[function mod:OnSync(msg) if msg == "Phase2" and self.vb.phase < 2 then warnPhase2:Show() self:SetStage(2) end end]] ================================================ FILE: DBM-BWL/TalonGuards.lua ================================================ local mod = DBM:NewMod("TalonGuards", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20240708001905") mod:SetCreatureID(12460, 12461, 99999)--99999 to prevent mod from ending combat after one of each talon guard type die. Mod will effectively ALWAYS wipe, but it has disabled stats/reporting so irrelevant mod:SetModelID(12460) mod:RegisterCombat("combat") mod.noStatistics = true local warnVuln = mod:NewAnnounce("WarnVulnerable", 1, false) --mod:AddNamePlateOption("NPAuraOnVulnerable", 22277) local vulnerabilities = { -- [guid] = school } --redudnant, but fuck it, the code in this mod is already shit local lastAnnounce = { -- [guid] = school } --Constants local vulnMobs = { [12460] = true,--"Death Talon Wyrmguard" [12461] = true,--"Death Talon Overseer" } -- https://wow.gamepedia.com/COMBAT_LOG_EVENT local spellInfo = { [2] = {"Holy", {r=255, g=230, b=128}, "585"},-- Smite [4] = {"Fire", {r=255, g=128, b=0}, "11366"},-- Pyroblast [8] = {"Nature", {r=77, g=255, b=77}, "5176"},-- Wrath [16] = {"Frost", {r=128, g=255, b=255}, "116"},-- Frostbolt [32] = {"Shadow", {r=128, g=128, b=255}, "686"},-- Shadow Bolt [64] = {"Arcane", {r=255, g=128, b=255}, "5143"},-- Arcane Missiles } local vulnSpells = { --No Holy? [22277] = 4,--Fire [22280] = 8,--Nature [22278] = 16,--Frost [22279] = 32,--Shadow [22281] = 64,--Arcane } --Local Functions -- in theory this should only alert on a new vulnerability on your target or when you change target local function update_vulnerability(self) local target = UnitGUID("target") or "" local spellSchool = vulnerabilities[target] local cid = self:GetCIDFromGUID(target) if not spellSchool or not vulnMobs[cid] then return end local info = spellInfo[spellSchool] if not info then return end local name = L[info[1]] or info[1] if not lastAnnounce[target] or lastAnnounce[target] ~= name then warnVuln.icon = info[3] warnVuln:Show(name) lastAnnounce[target] = name -- if self.Options.NPAuraOnVulnerable then -- DBM.Nameplate:Hide(true, target, 22277, 135924) -- DBM.Nameplate:Hide(true, target, 22277, 135808) -- DBM.Nameplate:Hide(true, target, 22277, 136006) -- DBM.Nameplate:Hide(true, target, 22277, 135846) -- DBM.Nameplate:Hide(true, target, 22277, 136197) -- DBM.Nameplate:Hide(true, target, 22277, 136096) -- DBM.Nameplate:Show(true, target, 22277, tonumber(info[3])) -- end end end local function check_spell_damage(self, guid, amount, spellSchool, critical) local cid = self:GetCIDFromGUID(guid) if cid ~= 12460 and cid ~= 12461 then return end if amount > (critical and 1600 or 800) then if not vulnerabilities[guid] or vulnerabilities[guid] ~= spellSchool then vulnerabilities[guid] = spellSchool update_vulnerability(self) end end end local function check_target_vulns(self) local target = UnitGUID("target") local cid = self:GetCIDFromGUID(target) if not vulnMobs[cid] then return end local spellId = select(11, DBM:UnitBuff("target", 22277, 22280, 22278, 22279, 22281)) or 0 local vulnSchool = vulnSpells[spellId] if vulnSchool then return check_spell_damage(self, target, 10000, vulnSchool) end end function mod:OnCombatStart() table.wipe(vulnerabilities) if self.Options.WarnVulnerable then--Don't register high cpu combat log events if option isn't enabled self:RegisterShortTermEvents( "SPELL_DAMAGE", "PLAYER_TARGET_CHANGED" ) check_target_vulns(self) -- if self.Options.NPAuraOnVulnerable then -- DBM:FireEvent("BossMod_EnableHostileNameplates") -- end end end function mod:OnCombatEnd() table.wipe(vulnerabilities) self:UnregisterShortTermEvents() -- if self.Options.NPAuraOnVulnerable then -- DBM.Nameplate:Hide(true, nil, nil, nil, true, true)--isGUID, unit, spellId, texture, force, isHostile, isFriendly -- end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, _, _, spellSchool, amount, _, _, _, _, _, critical) check_spell_damage(self, destGUID, amount, spellSchool, critical) end function mod:PLAYER_TARGET_CHANGED() check_target_vulns(self) end ================================================ FILE: DBM-BWL/Vaelastrasz.lua ================================================ local mod = DBM:NewMod("Vaelastrasz", "DBM-BWL", 1) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(13020) mod:SetEncounterID(611) mod:SetModelID(13992) mod:SetUsedIcons(8, 7, 6) mod:RegisterCombat("combat") mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 23461", "SPELL_CAST_SUCCESS 18173", "SPELL_AURA_APPLIED 18173", "SPELL_AURA_REMOVED 18173" ) local warnBreath = mod:NewCastAnnounce(23461, 2, nil, nil, "Tank", 2) local warnAdrenaline = mod:NewTargetNoFilterAnnounce(18173, 2) local specWarnAdrenaline = mod:NewSpecialWarningYou(18173, nil, nil, nil, 1, 2) local specWarnAdrenalineOut = mod:NewSpecialWarningMoveAway(18173, nil, nil, nil, 1, 2) local yellAdrenaline = mod:NewYell(18173, nil, false) local yellAdrenalineFades = mod:NewShortFadesYell(18173) local timerAdrenalineCD = mod:NewCDTimer(15.05, 18173, nil, nil, nil, 3) -- REVIEW! variance? (25m Onyxia: [2024-02-04]@[19:03:58]) - "Burning Adrenaline-23620-npc:13020-127 = pull:16.97, 15.05 local timerAdrenaline = mod:NewTargetTimer(20, 18173, nil, nil, nil, 3) local timerCombatStart = mod:NewCombatTimer(44.08) -- [IEEU-YELL] - 770.50-726.42 mod:AddSetIconOption("SetIconOnDebuffTarget2", 18173, true, false, {8, 7, 6}) mod.vb.debuffIcon = 8 function mod:OnCombatStart(delay) self.vb.debuffIcon = 8 timerAdrenalineCD:Start(16.97-delay) end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 23461 then warnBreath:Show() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 18173 then timerAdrenalineCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 18173 then timerAdrenaline:Start(args.destName) if self.Options.SetIconOnDebuffTarget2 then self:SetIcon(args.destName, self.vb.debuffIcon) end if args:IsPlayer() then specWarnAdrenaline:Show() specWarnAdrenaline:Play("targetyou") yellAdrenaline:Yell() specWarnAdrenalineOut:Schedule(15) specWarnAdrenalineOut:ScheduleVoice(15, "runout") yellAdrenalineFades:Countdown(20) else warnAdrenaline:Show(args.destName) end self.vb.debuffIcon = self.vb.debuffIcon - 1 if self.vb.debuffIcon == 5 then self.vb.debuffIcon = 8 end end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 18173 then if args:IsPlayer() then specWarnAdrenalineOut:Cancel() specWarnAdrenalineOut:CancelVoice() yellAdrenalineFades:Cancel() end if self.Options.SetIconOnDebuffTarget2 then self:SetIcon(args.destName, 0) end timerAdrenaline:Stop(args.destName) end end --"<726.42 19:16:04> [CHAT_MSG_MONSTER_YELL] Too late, friends! Nefarius' corruption has taken hold...I cannot...control myself.\n#Vaelastrasz the Corrupt#####0#0##0#4985##0#" --"<8.85 19:59:36> [CHAT_MSG_MONSTER_YELL] I beg you, mortals - FLEE! Flee before I lose all sense of control! The black fire rages within my heart! I MUST- release it! #Vaelastrasz the Corrupt###Adornment##0#0##0#13862#nil#0#false#false# --"<28.25 19:59:55> [CHAT_MSG_MONSTER_YELL] FLAME! DEATH! DESTRUCTION! Cower, mortals before the wrath of Lord...NO - I MUST fight this! Alexstrasza help me, I MUST fight it! #Vaelastrasz the Corrupt###Adornment --"<38.98 20:00:06> [ENCOUNTER_START] 611#Vaelastrasz the Corrupt#9#40", -- [152] function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.Event or msg:find(L.Event) then self:SendSync("PullRP") end end function mod:OnSync(msg) if msg == "PullRP" then timerCombatStart:Start() end end ================================================ FILE: DBM-BWL/localization.cn.lua ================================================ --Mini Dragon (projecteurs[at]gmail.com) --Last update: 2020/5/24 if GetLocale() ~= "zhCN" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "狂野的拉佐格尔" }) L:SetTimerLocalization({ TimerAddsSpawn = "小怪重生" }) L:SetOptionLocalization({ TimerAddsSpawn = "为第一次小怪重生显示计时器" }) L:SetMiscLocalization({ Phase2Emote = "在宝珠的控制力消失的瞬间,%s逃走了。", YellPull = "入侵者闯进了孵化间!我们要不惜一切代价保护龙蛋!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "堕落的瓦拉斯塔茲" }) L:SetMiscLocalization({ Event = "太晚了,朋友们!奈法利安的堕落力量已经生效……我无法……控制自己。" }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "勒什雷尔" }) L:SetMiscLocalization({ Pull = "你怎么进来的?你们这种生物不能进来!我要毁灭你们!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "费尔默" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "埃博诺克" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "弗莱格尔" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "龙人护卫" }) L:SetWarningLocalization({ WarnVulnerable = "%s易伤" }) L:SetOptionLocalization({ WarnVulnerable = "为法术易伤显示提示" }) L:SetMiscLocalization({ Fire = "火焰", Nature = "自然", Frost = "冰霜", Shadow = "暗影", Arcane = "奥术", Holy = "神圣" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "克洛玛古斯" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "%s易伤" }) L:SetTimerLocalization({ TimerBreathCD = "%s冷却", TimerBreath = "%s施法", TimerVulnCD = "易伤切换" }) L:SetOptionLocalization({ WarnBreath = "为克洛玛古斯其中一个吐息显示警告", WarnVulnerable = "为易伤显示警告", TimerBreathCD = "显示吐息冷却", TimerBreath = "显示吐息施法", TimerVulnCD = "显示易伤周期" }) L:SetMiscLocalization({ Breath1 = "第一次吐息", Breath2 = "第二次吐息", VulnEmote = "%s的皮肤闪着微光,它畏缩了。", Fire = "火焰", Nature = "自然", Frost = "冰霜", Shadow = "暗影", Arcane = "奥术", Holy = "神圣" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "奈法利安" }) L:SetWarningLocalization({ WarnAddsLeft = "还剩%d个小怪", WarnClassCall = "点名%s", specwarnClassCall = "你的职业被点名!" }) L:SetTimerLocalization({ TimerClassCall = "点名%s结束" }) L:SetOptionLocalization({ TimerClassCall = "为点名持续时间显示计时器", WarnAddsLeft = "通报杀死的龙兽数量,直到进入第2阶段", WarnClassCall = "提示职业点名", specwarnClassCall = "警报:当你的职业被点名时显示警报。", WarnPhase = "提示阶段转换" }) L:SetMiscLocalization({ YellP1 = "让游戏开始吧!", YellP2 = "干得好,我的手下。凡人的勇气开始消退了!现在,让我们看看他们如何应对黑石塔的真正主人的力量!!!", YellP3 = "不可能!出现吧,我的仆人!再次为你们的主人效力!", YellShaman = "萨满祭司,让我看看你们的图腾到底是干什么用的!", YellPaladin = "圣骑士……听说你们有无数条命。让我看看到底是怎么样的吧。", YellDruid = "德鲁伊和你们愚蠢的变形法术。让我们看看有什么事情会发生吧!", YellPriest = "牧师们!如果你们要继续这么治疗的话,那我们就来玩点有趣的东西吧!", YellWarrior = "战士们,我知道你们可以更加勇猛!让我们见识一下!", YellRogue = "潜行者?不要躲躲藏藏了,勇敢地面对我吧!", YellWarlock = "术士们,不要随便去尝试那些你们根本不理解的法术。看到后果了吧?", YellHunter = "猎人们,还有你们那些讨厌的玩具枪!", YellMage = "你们也是法师?小心别玩火自焚……", YellDK = "死亡骑士们……到这儿来!" }) ================================================ FILE: DBM-BWL/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Razorgore der Ungezähmte" }) L:SetTimerLocalization({ TimerAddsSpawn = "Adds erscheinen" }) L:SetOptionLocalization({ TimerAddsSpawn = "Zeige Zeit bis die ersten Adds erscheinen" }) L:SetMiscLocalization({ Phase2Emote = "flieht während die kontrollierenden Kräfte der Kugel schwinden.", YellPull = "Eindringlinge sind in die Brutstätte vorgestoßen! Schlagt Alarm! Beschützt die Eier um jeden Preis!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Vaelastrasz der Verdorbene" }) L:SetMiscLocalization({ Event = "Zu spät, Freunde! Nefarius üble Macht wirkt bereits... Ich habe mich nicht... nicht mehr unter Kontrolle.." }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Brutwächter Dreschbringer" }) L:SetMiscLocalization({ Pull = "Euresgleichen sollte nicht hier sein! Ich werde Euch vernichten!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Feuerschwinge" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Schattenschwinge" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Flammenmaul" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Todeskrallenwache" }) L:SetWarningLocalization({ WarnVulnerable = "%sverwundbarkeit" }) L:SetOptionLocalization({ WarnVulnerable = "Zeige Warnung für Zauberverwundbarkeit" }) L:SetMiscLocalization({ Fire = "Feuer", Nature = "Natur", Frost = "Frost", Shadow = "Schatten", Arcane = "Arkan", Holy = "Heilig" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Chromaggus" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "%sverwundbarkeit" }) L:SetTimerLocalization({ TimerBreathCD = "Abklingzeit der %s", TimerBreath = "%s Zauber", TimerVulnCD = "Abklingzeit der Verwundbarkeit" }) L:SetOptionLocalization({ WarnBreath = "Zeige Warnung, wenn Chromaggus einen seiner Atem wirkt", WarnVulnerable = "Zeige Warnung für Zauberverwundbarkeit", TimerBreathCD = "Abklingzeit des Atem anzeigen", TimerBreath = "Zeige Atem Zauber", TimerVulnCD = "Zeige Abklingzeit der Verwundbarkeit" }) L:SetMiscLocalization({ Breath1 = "Erster Atem", Breath2 = "Zweiter Atem", VulnEmote = "%s weicht zurück, als die Haut schimmert.", Vuln = "Verwundbarkeit", Fire = "Feuer", Nature = "Natur", Frost = "Frost", Shadow = "Schatten", Arcane = "Arkan", Holy = "Heilig" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Nefarian" }) L:SetWarningLocalization({ WarnAddsLeft = "%d ausstehende Tötungen", WarnClassCall = "%s Ruf", specwarnClassCall = "Klassenruf auf Dir!" }) L:SetTimerLocalization({ TimerClassCall = "%s Ruf endet" }) L:SetOptionLocalization({ TimerClassCall = "Dauer der Klassenrufe anzeigen", WarnAddsLeft = "Kündige verbleibend Tötungen an bis 2 Phase ausgelöst ist.", WarnClassCall = "Verkünde Klassenrufe", specwarnClassCall = "Zeige besondere Warnung wenn Du von einem Klassenruf betroffen bist" }) L:SetMiscLocalization({ YellP1 = "Lasst die Spiele beginnen!", YellP2 = "Sehr gut, meine Diener. Der Mut der Sterblichen scheint zu schwinden! Nun lasst uns sehen, wie sie sich gegen den wahren Herrscher des Schwarzfels behaupten werden!", YellP3 = "Unmöglich! Erhebt Euch, meine Diener! Kämpft erneut für Euren Meister!", YellShaman = "Schamane, zeigt mir was eure Totems können!", YellPaladin = "Paladine... ich habe gehört, dass Ihr viele Leben habt. Zeigt es mir.", YellDruid = "Druiden und ihre lächerliche Gestaltwandlung. Zeigt mal was Ihr könnt!", YellPriest = "Priester! Wenn Ihr weiterhin so heilt, können wir es auch gerne etwas interessanter gestalten!", YellWarrior = "Krieger, Ich bin mir sicher, dass ihr kräftiger als das zuschlagen könnt! Lasst es mich sehen!", YellRogue = "Schurken? Kommt aus den Schatten und zeigt Euch!", YellWarlock = "Hexenmeister, Ihr solltet nicht mit Magie spielen, die Ihr nicht versteht. Seht Ihr was ich meine?", YellHunter = "Jäger und ihre lästigen Knallbüchsen!", YellMage = "Auch Magier? Ihr solltet vorsichtiger sein, wenn Ihr mit Magie spielt...", YellDK = "Todesritter... kommt hierher!" }) ================================================ FILE: DBM-BWL/localization.en.lua ================================================ local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Razorgore the Untamed" }) L:SetTimerLocalization({ TimerAddsSpawn = "Adds spawning" }) L:SetOptionLocalization({ TimerAddsSpawn = "Show timer for first adds spawning" }) L:SetMiscLocalization({ Phase2Emote = "flee as the controlling power of the orb is drained.", YellPull = "Intruders have breached the hatchery! Sound the alarm! Protect the eggs at all costs!\n" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Vaelastrasz the Corrupt" }) L:SetMiscLocalization({ Event = "Too late, friends! Nefarius' corruption has taken hold...I cannot...control myself.\n" }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Broodlord Lashlayer" }) L:SetMiscLocalization({ Pull = "None of your kind should be here! You've doomed only yourselves!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Firemaw" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Ebonroc" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Flamegor" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Talon Guards" }) L:SetWarningLocalization({ WarnVulnerable = "%s Vulnerability" }) L:SetOptionLocalization({ WarnVulnerable = "Show warning for spell vulnerabilities" }) L:SetMiscLocalization({ Fire = "Fire", Nature = "Nature", Frost = "Frost", Shadow = "Shadow", Arcane = "Arcane", Holy = "Holy" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Chromaggus" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "%s Vulnerability" }) L:SetTimerLocalization({ TimerBreathCD = "%s CD", TimerBreath = "%s cast", TimerVulnCD = "Vulnerability CD" }) L:SetOptionLocalization({ WarnBreath = "Show warning when Chromaggus casts one of his Breaths", WarnVulnerable = "Show warning for spell vulnerabilities", TimerBreathCD = "Show Breath CD", TimerBreath = "Show Breath cast", TimerVulnCD = "Show Vulnerability CD" }) L:SetMiscLocalization({ Breath1 = "First Breath", Breath2 = "Second Breath", VulnEmote = "%s flinches as its skin shimmers.", Vuln = "Vulnerability", Fire = "Fire", Nature = "Nature", Frost = "Frost", Shadow = "Shadow", Arcane = "Arcane", Holy = "Holy" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Nefarian" }) L:SetWarningLocalization({ WarnAddsLeft = "%d kills remaining", WarnClassCall = "%s call", specwarnClassCall = "Class call on you!" }) L:SetTimerLocalization({ TimerClassCall = "%s call ends" }) L:SetOptionLocalization({ TimerClassCall = "Show timer for class call duration", WarnAddsLeft = "Announce kills remaining until Stage 2 is triggered", WarnClassCall = "Announce class calls", specwarnClassCall = "Show Special warning when you are affected by class call" }) L:SetMiscLocalization({ YellP1 = "Let the games begin!", YellP2 = "Well done, my minions. The mortals' courage begins to wane! Now, let's see how they contend with the true Lord of Blackrock Spire!!!", YellP3 = "Impossible! Rise my minions! Serve your master once more!", YellShaman = "Shamans, show me what your totems can do!", YellPaladin = "Paladins... I've heard you have many lives. Show me.", YellDruid = "Druids and your silly shapeshifting. Lets see it in action!", YellPriest = "Priests! If you're going to keep healing like that, we might as well make it a little more interesting!", YellWarrior = "Warriors, I know you can hit harder than that! Let's see it!", YellRogue = "Rogues? Stop hiding and face me!", YellWarlock = "Warlocks, you shouldn't be playing with magic you don't understand. See what happens?", YellHunter = "Hunters and your annoying pea-shooters!", YellMage = "Mages too? You should be more careful when you play with magic...", YellDK = "Death Knights... get over here!" }) ================================================ FILE: DBM-BWL/localization.es.lua ================================================ if GetLocale() ~= "esES" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Sangrevaja el Indomable" }) L:SetTimerLocalization({ TimerAddsSpawn = "Primeros esbirros" }) L:SetOptionLocalization({ TimerAddsSpawn = "Mostrar temporizador para cuando aparezcan los primeros esbirros" }) L:SetMiscLocalization({ Phase2Emote = "huyen mientras se consume el poder del orbe.", YellPull = "¡Los invasores han penetrado en El Criadero! ¡Activad la alarma! ¡Hay que proteger los huevos a toda costa!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Vaelastrasz el Corrupto" }) L:SetMiscLocalization({ Event = "¡Demasiado tarde, amigos! Ahora estoy poseído por la corrupción de Nefarius... No puedo... controlarme." }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Señor de prole Capazote" }) L:SetMiscLocalization({ Pull = "¡Nadie de vuestra raza debería estar aquí! ¡Os aniquilaré!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Faucefogo" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Ebanorroca" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Flamagor" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Guardias Garramortal" }) L:SetWarningLocalization({ WarnVulnerable = "Vulnerabilidad: %s" }) L:SetOptionLocalization({ WarnVulnerable = "Mostrar aviso de vulnerabilidades de hechizo" }) L:SetMiscLocalization({ Fire = "Fuego", Nature = "Naturaleza", Frost = "Escarcha", Shadow = "Sombras", Arcane = "Arcano", Holy = "Sagrado" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Chromaggus" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "Vulnerabilidad: %s" }) L:SetTimerLocalization({ TimerBreathCD = "%s TdR", TimerBreath = "%s lanzamiento", TimerVulnCD = "TdR de Vulnerabilidad" }) L:SetOptionLocalization({ WarnBreath = "Mostrar aviso cuando Chromaggus lance uno de sus alientos", WarnVulnerable = "Mostrar temporizador para el tiempo de reutilización de los alientos", TimerBreathCD = "Mostrar TdR de aliento", TimerBreath = "Mostrar lanzamiento de aliento", TimerVulnCD = "Mostrar TdR de Vulnerabilidad" }) L:SetMiscLocalization({ Breath1 = "Primer aliento", Breath2 = "Segundo aliento", VulnEmote = "%s se estremece mientras su piel empieza a brillar.", Vuln = "Vulnerabilidad", Fire = "Fuego", Nature = "Naturaleza", Frost = "Escarcha", Shadow = "Sombras", Arcane = "Arcano", Holy = "Sagrado" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Nefarian" }) L:SetWarningLocalization({ WarnAddsLeft = "%d restante", WarnClassCall = "Llamada de %s", specwarnClassCall = "¡Llamada de tu clase!" }) L:SetTimerLocalization({ TimerClassCall = "Llamada de %s termina" }) L:SetOptionLocalization({ TimerClassCall = "Mostrar temporizador para la duración de las llamadas en cada clase", WarnAddsLeft = "Anunciar muertes restante hasta Fase 2", WarnClassCall = "Mostrar aviso para las llamadas de clase", specwarnClassCall = "Mostrar aviso especial cuando se ve afectado por la llamada de clase" }) L:SetMiscLocalization({ YellP1 = "¡Que comiencen los juegos!", YellP2 = "Bien hecho, mis esbirros. El coraje de los mortales empieza a mermar. ¡Veamos ahora cómo se enfrentan al verdadero Señor de la Cumbre de Roca Negra!", YellP3 = "¡Imposible! ¡Erguíos, mis esbirros! ¡Servid a vuestro maestro una vez más!", YellShaman = "¡Chamanes, mostradme lo que pueden hacer vuestros tótems!", YellPaladin = "Paladines... He oído que tenéis muchas vidas. Demostrádmelo.", YellDruid = "Los druidas y vuestro estúpido poder de cambiar de forma. ¡Veámoslo en acción!", YellPriest = "¡Sacerdotes! Si vais a seguir curando de esa forma, ¡podíamos hacerlo más interesante!", YellWarrior = "¡Sé que podéis golpear más fuerte, guerreros! ¡Veámoslo!", YellRogue = "¿Pícaros? ¡Dejad de esconderos y enfrentaos a mí!", YellWarlock = "Brujos... No deberíais estar jugando con magia que no comprendéis. ¿Veis lo que pasa?", YellHunter = "¡Cazadores y vuestras molestas cerbatanas!", YellMage = "¿Magos también? Deberíais tener más cuidado cuando jugáis con la magia...", YellDK = "¡Caballeros de la Muerte... venid aquí!" }) ================================================ FILE: DBM-BWL/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Tranchetripe l'Indompté" }) L:SetTimerLocalization({ TimerAddsSpawn = "Premiers serviteurs" }) L:SetOptionLocalization({ TimerAddsSpawn = "Afficher le timer pour les premiers serviteurs" }) L:SetMiscLocalization({ Phase2Emote = "s'enfuit car le contrôle de l'orbe s'affaiblit.", YellPull = "La chambre des œufs est envahie ! Sonnez l'alarme ! Protégez les œufs à tout prix !" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Vaelastrasz le Corrompu" }) L:SetMiscLocalization({ Event = "Trop tard, mes amis ! La corruption de Nefarius s'empare de moi… Je ne peux plus… me contrôler." }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Seigneur des couvées Lashlayer" }) L:SetMiscLocalization({ Pull = "Aucun membre de votre espèce ne devrait être ici ! Vous vous êtes condamnés vous-mêmes ! " }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Gueule-de-feu" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Rochébène" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Flamegor" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Gardes Griffemort" }) L:SetWarningLocalization({ WarnVulnerable = "Vulnérabilité : %s" }) L:SetOptionLocalization({ WarnVulnerable = "Afficher un avertissement pour les vulnérabilités des sorts" }) L:SetMiscLocalization({ Fire = "Feu", Nature = "Nature", Frost = "Givre", Shadow = "Ombre", Arcane = "Arcanes", Holy = "Sacré" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Chromaggus" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "Vulnérabilité : %s" }) L:SetTimerLocalization({ TimerBreathCD = "%s recharge", TimerBreath = "%s lancement", TimerVulnCD = "Recharge de Vulnérabilité" }) L:SetOptionLocalization({ WarnBreath = "Afficher un avertissement lorsque Chromaggus lance un de ses souffles", WarnVulnerable = "Afficher un avertissement pour les vulnérabilités des sorts", TimerBreathCD = "Afficher le temps de recharge de souffle", TimerBreath = "Afficher le lancement du souffle", TimerVulnCD = "Afficher le temps de recharge de vulnérabilité" }) L:SetMiscLocalization({ Breath1 = "Premier souffle", Breath2 = "Deuxième souffle", VulnEmote = "%s grimace lorsque sa peau se met à briller.", Fire = "Feu", Nature = "Nature", Frost = "Givre", Shadow = "Ombre", Arcane = "Arcanes", Holy = "Sacré" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Nefarian" }) L:SetWarningLocalization({ WarnAddsLeft = "%d restants", WarnClassCall = "L'appel de %s", specwarnClassCall = "Votre appel de classe !" }) L:SetTimerLocalization({ TimerClassCall = "L'appel de %s termine" }) L:SetOptionLocalization({ TimerClassCall = "Afficher le timer pour la durée de l'appel en classe", WarnAddsLeft = "Annoncer les éliminations restantes jusqu'au déclenchement de la phase 2", WarnClassCall = "Annoncer les appels de classe", specwarnClassCall = "Afficher un avertissement spécial lorsque vous êtes affecté par un appel de classe" }) L:SetMiscLocalization({ YellP1 = "Que les jeux commencent !", YellP2 = "Beau travail ! Le courage des mortels commence à faiblir ! Voyons maintenant s'ils peuvent lutter contre le véritable seigneur du pic Rochenoire !", YellP3 = "C'est impossible ! Relevez-vous, serviteurs ! Servez une nouvelle fois votre maître !", YellShaman = "Chamans, montrez-moi ce que vos totems peuvent faire !", YellPaladin = "Les paladins… J'ai entendu dire que vous aviez de nombreuses vies… Montrez-moi.", YellDruid = "Les druides et leur stupides changements de forme. Voyons ce qu'ils donnent en vrai…", YellPriest = "Prêtres ! Si vous continuez à soigner comme ça, nous pourrions rendre le processus plus intéressant !", YellWarrior = "Guerriers, je sais que vous pouvez frapper plus fort que ça ! Voyons ça !", YellRogue = "Voleurs, arrêtez de vous cacher et affrontez-moi !", YellWarlock = "Démonistes, vous ne devriez pas jouer avec une magie qui vous dépasse. Vous voyez ce qui arrive ?", YellHunter = "Ah, les chasseurs et les stupides sarbacanes !", YellMage = "Les mages aussi ? Vous devriez être plus prudents lorsque vous jouez avec la magie.", YellDK = "Chevalier de la mort… Venez ici !" }) ================================================ FILE: DBM-BWL/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "폭군 서슬송곳니" }) L:SetTimerLocalization({ TimerAddsSpawn = "추가 병력 등장" }) L:SetOptionLocalization({ TimerAddsSpawn = "첫번째 추가 병력 등장 바 보기" }) L:SetMiscLocalization({ Phase2Emote = "수정 구슬에서 통제력이 빠져나가자 %s|1이;가; 도망칩니다.", YellPull = "침입자들이 들어왔다! 어떤 희생이 있더라도 알을 반드시 수호하라!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "타락한 밸라스트라즈" }) L:SetMiscLocalization({ Event = "너무 늦었어! 네파리우스의 타락이 뿌리를 내려... 난... 나 자신을 통제할 수가 없어." }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "용기대장 래쉬레이어" }) L:SetMiscLocalization({ Pull = "너희 같은 놈들이 올 곳은 아닌데... 죽음을 자초했구나!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "화염아귀" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "에본로크" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "플레임고르" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "죽음의발톱 수호병" }) L:SetWarningLocalization({ WarnVulnerable = "%s 약화" }) L:SetOptionLocalization({ WarnVulnerable = "주문 속성 약화 경고 보기" }) L:SetMiscLocalization({ Fire = "화염", Nature = "자연", Frost = "냉기", Shadow = "암흑", Arcane = "비전", Holy = "신성" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "크로마구스" }) L:SetWarningLocalization({ WarnVulnerable = "%s 약화" }) L:SetTimerLocalization({ TimerBreathCD = "%s 쿨타임", TimerBreath = "%s 시전", TimerVulnCD = "약화 쿨타임" }) L:SetOptionLocalization({ WarnBreath = "크로마구스가 숨결 시전 시 경고 보기", WarnVulnerable = "주문 속성 약화 경고 보기", TimerBreathCD = "숨결 쿨타임 보기", TimerBreath = "숨결 시전 보기", TimerVulnCD = "약화 쿨타임 보기" }) L:SetMiscLocalization({ Breath1 = "1번 숨결", Breath2 = "2번 숨결", VulnEmote = "%s|1이;가; 가죽을 빛내며 주춤 물러섭니다.", Vuln = "약화 속성", Fire = "화염", Nature = "자연", Frost = "냉기", Shadow = "암흑", Arcane = "비전", Holy = "신성" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "네파리안" }) L:SetWarningLocalization({ WarnAddsLeft = "%d킬 남음", WarnClassCall = "%s 지목", specwarnClassCall = "당신이 직업 지목 대상입니다!" }) L:SetTimerLocalization({ TimerClassCall = "%s 지목 종료" }) L:SetOptionLocalization({ TimerClassCall = "직업 지목 지속 시간 타이머 바 보기", WarnAddsLeft = "2페이즈 전환까지 남은 쫄 킬 수 알림", WarnClassCall = "직업 지목 알림 보기", specwarnClassCall = "직업 지목 대상일 때 특수 알림 보기" }) L:SetMiscLocalization({ YellP1 = "경기를 시작하게!", YellP2 = "잘했다! 적들의 사기가 떨어지고 있다! 검은바위 첨탑의 군주에게 도전한 대가를 치르게 해주자!", YellP3 = "말도 안 돼! 일어나라! 다시 한 번 너희 주인을 섬겨라!", YellShaman = "주술사, 네 놈의 토템이 얼마나 쓸모 있는지 한번 보자!", YellPaladin = "성기사여... 네 목숨은 여러 개라고 하던데 어디 한번 보여 다오.", YellDruid = "드루이드 녀석, 그 바보 같은 변신을 했다고 내가 모를 줄 알았더냐? 받아라!", YellPriest = "사제야, 그렇게 치유를 계속할 테냐?! 그럼 어디 좀 더 재미있게 만들어 줄까!", YellWarrior = "전사들이로군, 네가 그보다 더 강하게 내려 칠 수 있다는 걸 알고 있다! 어디 한번 제대로 쳐 보란 말이다!", YellRogue = "도적들인가? 숨어 다니지만 말고 나와서 나와 맞서라!", YellWarlock = "흑마법사여, 네가 이해하지도 못하는 마법을 가지고 장난을 쳐서야 쓰나... 바로 이런 꼴이 되어 버렸지 않는가!", YellHunter = "사냥꾼 놈에다 그 장난감 같은 총이라니, 정말 거슬리는구나!", YellMage = "네가 마법사냐? 마법을 가지고 장난칠 상대를 고를 때는 좀 더 신중했어야지...", YellDK = "죽음의 기사여... 당장 이리 와라!" }) ================================================ FILE: DBM-BWL/localization.mx.lua ================================================ if GetLocale() ~= "esMX" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Sangrevaja el Indomable" }) L:SetTimerLocalization({ TimerAddsSpawn = "Primeros esbirros" }) L:SetOptionLocalization({ TimerAddsSpawn = "Mostrar temporizador para cuando aparezcan los primeros esbirros" }) L:SetMiscLocalization({ Phase2Emote = "huyen mientras se consume el poder del orbe.", YellPull = "¡Los invasores han penetrado en El Criadero! ¡Activa la alarma! ¡Hay que proteger los huevos a toda costa!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Vaelastrasz el Corrupto" }) L:SetMiscLocalization({ Event = "¡Demasiado tarde, amigos! Ahora estoy poseído por la corrupción de Nefarius... No puedo... controlarme." }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Señor de linaje Capazote" }) L:SetMiscLocalization({ Pull = "¡Nadie de su raza debería estar aquí! ¡Están condenados!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Faucefogo" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Ebanorroca" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Flamagor" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Guardias Garramortal" }) L:SetWarningLocalization({ WarnVulnerable = "Vulnerabilidad: %s" }) L:SetOptionLocalization({ WarnVulnerable = "Mostrar aviso de vulnerabilidades de hechizo" }) L:SetMiscLocalization({ Fire = "Fuego", Nature = "Naturaleza", Frost = "Escarcha", Shadow = "Sombras", Arcane = "Arcano", Holy = "Sagrado" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Chromaggus" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "Vulnerabilidad: %s" }) L:SetTimerLocalization({ TimerBreathCD = "%s TdR", TimerBreath = "%s lanzamiento", TimerVulnCD = "TdR de Vulnerabilidad" }) L:SetOptionLocalization({ WarnBreath = "Mostrar aviso cuando Chromaggus lance uno de sus alientos", WarnVulnerable = "Mostrar temporizador para el tiempo de reutilización de los alientos", TimerBreathCD = "Mostrar TdR de aliento", TimerBreath = "Mostrar lanzamiento de aliento", TimerVulnCD = "Mostrar TdR de Vulnerabilidad" }) L:SetMiscLocalization({ Breath1 = "Primer aliento", Breath2 = "Segundo aliento", VulnEmote = "%s se estremece mientras su piel empieza a brillar.", Vuln = "Vulnerabilidad", Fire = "Fuego", Nature = "Naturaleza", Frost = "Escarcha", Shadow = "Sombras", Arcane = "Arcano", Holy = "Sagrado" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Nefarian" }) L:SetWarningLocalization({ WarnAddsLeft = "%d restante", WarnClassCall = "Llamada de %s", specwarnClassCall = "¡Llamada de tu clase!" }) L:SetTimerLocalization({ TimerClassCall = "Llamada de %s termina" }) L:SetOptionLocalization({ TimerClassCall = "Mostrar temporizador para la duración de las llamadas en cada clase", WarnAddsLeft = "Anunciar muertes restante hasta Fase 2", WarnClassCall = "Mostrar aviso para las llamadas de clase", specwarnClassCall = "Mostrar aviso especial cuando se ve afectado por la llamada de clase" }) L:SetMiscLocalization({ YellP1 = "¡Que comiencen los juegos!", YellP2 = "Bien hecho, mis esbirros. El coraje de los mortales empieza a mermar. ¡Veamos ahora cómo se enfrentan al verdadero Señor de la Cumbre de Roca Negra!", YellP3 = "¡Imposible! ¡Levántense, mis esbirros! ¡Sirvan a su amo una vez más!", YellShaman = "¡Chamanes, muéstrenme lo que pueden hacer sus tótems!", YellPaladin = "Paladines... He oído que tenéis muchas vidas. Demostrádmelo.", YellDruid = "Los druidas y su estúpido poder de cambiar de forma. ¡Veámoslo en acción!", YellPriest = "¡Sacerdotes! Si vais a seguir curando de esa forma, ¡podíamos hacerlo más interesante!", YellWarrior = "¡Sé que podéis golpear más fuerte, guerreros! ¡Veámoslo!", YellRogue = "¿Pícaros? ¡Dejad de esconderos y enfrentaos a mí!", YellWarlock = "Brujos... No deberíais estar jugando con magia que no comprendéis. ¿Veis lo que pasa?", YellHunter = "¡Cazadores y sus molestas cerbatanas!", YellMage = "¿Magos también? Deberíais tener más cuidado cuando jugáis con la magia...", YellDK = "¡Caballeros de la Muerte... venid aquí!" }) ================================================ FILE: DBM-BWL/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "Бритвосмерт Неукротимый" }) L:SetTimerLocalization({ TimerAddsSpawn = "Появление аддов" }) L:SetOptionLocalization({ TimerAddsSpawn = "Показывать таймер до первого появления аддов" }) L:SetMiscLocalization({ Phase2Emote = "убегает, как только сила сферы пошла на спад.", YellPull = "Враги в инкубаторе! Бейте тревогу! Защищайте яйца любой ценой!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "Валестраз Порочный" }) L:SetMiscLocalization({ Event = "Умоляю, смертные! Бегите! Бегите, пока я еще могу себя удержать! Черный огонь бушует в моем сердце! Я должен... дать ему волю!" }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "Предводитель драконов Разящий Бич" }) L:SetMiscLocalization({ Pull = "Таких, как вы, здесь быть не должно! Смерть грозит лишь вам!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "Огнечрев" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "Черноскал" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "Пламегор" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "Стражи Когтя Смерти" }) L:SetWarningLocalization({ WarnVulnerable = "Уязвимость к %s" }) L:SetOptionLocalization({ WarnVulnerable = "Показывать предупреждение об уязвимости к заклинаниям" }) L:SetMiscLocalization({ Fire = "Огню", Nature = "силам Природы", Frost = "магии Льда", Shadow = "Темной магии", Arcane = "Тайной магии", Holy = "Светлой магии" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "Хромаггус" }) L:SetWarningLocalization({ WarnBreathSoon = "Скоро дыхание", WarnBreath = "%s", WarnVulnerable = "Уязвимость к %s", WarnPhase2Soon = "Скоро 2-ая фаза" }) L:SetTimerLocalization({ TimerBreathCD = "%s восстановление", TimerBreath = "Применение %s", TimerVulnCD = "Восстановление уязвимости" }) L:SetOptionLocalization({ WarnBreathSoon = "Предварительное предупреждение Дыхания Хромаггуса", WarnBreath = "Показывать предупреждение о дыханиях Хромаггуса", WarnVulnerable = "Показывать предупреждение об уязвимости к заклинаниям", TimerBreathCD = "Показывать время восстановления дыханий", TimerBreath = "Показывать применение Дыхания", TimerVulnCD = "Показывать восстановление уязвимости", WarnPhase2Soon = "Предупреждать о второй фазе" }) L:SetMiscLocalization({ Breath1 = "Первое Дыхание", Breath2 = "Второе Дыхание", VulnEmote = "%s изменяется, мерцая.", Vuln = "Уязвимость", Fire = "Огню", Nature = "силам Природы", Frost = "магии Льда", Shadow = "Темной магии", Arcane = "Тайной магии", Holy = "Светлой магии" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "Нефариан" }) L:SetWarningLocalization({ WarnAddsLeft = "Осталось %d убийств", WarnClassCallSoon = "Скоро вызов класса", WarnClassCall = "Дебафф на %s", WarnPhaseSoon = "Скоро фаза %s", WarnPhase = "Фаза %s", specwarnClassCall = "Классовый зов на тебе!" }) L:SetTimerLocalization({ TimerClassCall = "%s зов заканчивается" }) L:SetOptionLocalization({ TimerClassCall = "Показывать таймер классовых вызовов", WarnClassCallSoon = "Предупреждение классовых вызовов", WarnClassCall = "Объявлять классовый вызов", WarnPhaseSoon = "Объявлять, когда следующая фаза скоро начнется", WarnPhase = "Объявлять смену фаз", specwarnClassCall = "Показывать специальное предупреждение, когда вы подвержены классовому зову" }) L:SetMiscLocalization({ YellP1 = "Пусть состязания начнутся!", YellP2 = "Браво, слуги мои! Смертные утрачивают мужество! Поглядим же, как они справятся с истинным владыкой Черной горы!!!", YellP3 = "Не может быть! Восстаньте, мои прислужники! Послужите господину еще раз!", YellShaman = "Шаманы, покажите, на что способны ваши тотемы!", YellPaladin = "Паладины... Я слышал, у вас несколько жизней. Докажите.", YellDruid = "Друиды и их дурацкие превращения... Ну что ж, поглядим!", YellPriest = "Жрецы! Если вы собираетесь продолжать так лечить, то давайте хоть немного разнообразим процесс!", YellWarrior = "Я знаю, воины, вы можете бить сильнее! Ну-ка, покажите!", YellRogue = "Разбойники? Хватит прятаться, покажитесь!", YellWarlock = "Чернокнижники, ну не беритесь вы за волшебство, которого сами не понимаете! Видите, что получилось?", YellHunter = "Охотники со своими жалкими пугачами!", YellMage = "И маги тоже? Осторожнее надо быть, когда играешь с магией...", YellDK = "Рыцари смерти! Сюда!" }) ================================================ FILE: DBM-BWL/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L ----------------- -- Razorgore -- ----------------- L = DBM:GetModLocalization("Razorgore") L:SetGeneralLocalization({ name = "狂野的拉佐格爾" }) L:SetTimerLocalization({ TimerAddsSpawn = "小怪重生" }) L:SetOptionLocalization({ TimerAddsSpawn = "為第一次小怪重生顯示計時器" }) L:SetMiscLocalization({ Phase2Emote = "在寶珠的控制力消失之前逃走。", YellPull = "入侵者闖入孵化室了!警報!不惜一切代價保護蛋!" }) ------------------- -- Vaelastrasz -- ------------------- L = DBM:GetModLocalization("Vaelastrasz") L:SetGeneralLocalization({ name = "墮落的瓦拉斯塔茲" }) L:SetMiscLocalization({ Event = "太遲了,朋友! 奈法利斯的腐化已經掌握了我...我已經無法...控制我自己了。" }) ----------------- -- Broodlord -- ----------------- L = DBM:GetModLocalization("Broodlord") L:SetGeneralLocalization({ name = "勒西雷爾" }) L:SetMiscLocalization({ Pull = "你怎麼進來的?你們這種生物不能進來!我要毀滅你們!" }) --------------- -- Firemaw -- --------------- L = DBM:GetModLocalization("Firemaw") L:SetGeneralLocalization({ name = "費爾默" }) --------------- -- Ebonroc -- --------------- L = DBM:GetModLocalization("Ebonroc") L:SetGeneralLocalization({ name = "埃博諾克" }) ---------------- -- Flamegor -- ---------------- L = DBM:GetModLocalization("Flamegor") L:SetGeneralLocalization({ name = "弗萊格爾" }) ----------------------- -- Vulnerabilities -- ----------------------- -- Chromaggus, Death Talon Overseer and Death Talon Wyrmguard L = DBM:GetModLocalization("TalonGuards") L:SetGeneralLocalization({ name = "龍人護衛" }) L:SetWarningLocalization({ WarnVulnerable = "%s弱點" }) L:SetOptionLocalization({ WarnVulnerable = "爲法術弱點顯示警告" }) L:SetMiscLocalization({ Fire = "火焰", Nature = "自然", Frost = "冰霜", Shadow = "暗影", Arcane = "祕法", Holy = "神聖" }) ------------------ -- Chromaggus -- ------------------ L = DBM:GetModLocalization("Chromaggus") L:SetGeneralLocalization({ name = "克洛瑪古斯" }) L:SetWarningLocalization({ WarnBreath = "%s", WarnVulnerable = "%s弱點" }) L:SetTimerLocalization({ TimerBreathCD = "%s冷卻", TimerBreath = "%s施放", TimerVulnCD = "弱點冷卻" }) L:SetOptionLocalization({ WarnBreath = "為克洛瑪古斯其中一個吐息顯示警告", WarnVulnerable = "爲法術弱點顯示警告", TimerBreathCD = "顯示吐息冷卻", TimerBreath = "顯示吐息施放", TimerVulnCD = "顯示弱點冷卻" }) L:SetMiscLocalization({ Breath1 = "第一次吐息", Breath2 = "第二次吐息", VulnEmote = "%s因皮膚閃著微光而驚訝退縮。", Fire = "火焰", Nature = "自然", Frost = "冰霜", Shadow = "暗影", Arcane = "祕法", Holy = "神聖" }) ---------------- -- Nefarian -- ---------------- L = DBM:GetModLocalization("Nefarian-Classic") L:SetGeneralLocalization({ name = "奈法利安" }) L:SetWarningLocalization({ WarnAddsLeft = "剩下%d擊殺", WarnClassCall = "%s點名", specwarnClassCall = "你中了職業點名!" }) L:SetTimerLocalization({ TimerClassCall = "%s點名結束" }) L:SetOptionLocalization({ TimerClassCall = "為職業點名持續時間顯示計時器", WarnAddsLeft = "提示離第二階段開始剩多少擊殺", WarnClassCall = "提示職業點名", specwarnClassCall = "特別警告:當你中了職業點名時" }) L:SetMiscLocalization({ YellP1 = "讓賽事開始吧!", YellP2 = "幹得好,我的手下。凡人的勇氣開始消退!現在,現在讓我們看看他們如何應對黑石之王的力量!!!", YellP3 = "不可能!出現吧,我的僕人!再次為我的主人服務!", YellShaman = "薩滿,讓我看看你圖騰到底是什麼用處的!", YellPaladin = "聖騎士...聽說你有無數條命。讓我看看到底是怎麼樣的吧。", YellDruid = "德魯伊和你們愚蠢的變身術。讓我們看看什麼會發生吧!", YellPriest = "牧師!如果你要繼續這麼治療的話,那我們來玩點有趣的東西!", YellWarrior = "戰士,我知道你的力量不只如此!讓我們來見識一下吧!", YellRogue = "盜賊?不要躲了,面對我吧!", YellWarlock = "術士,不要隨便去玩那些你不理解的法術。看看會發生什麼吧?", YellHunter = "獵人和你那討厭的豌豆射擊!", YellMage = "還有法師?你應該小心使用你的魔法...", YellDK = "死亡騎士們...來這。" }) ================================================ FILE: DBM-BlackTemple/Bloodboil.lua ================================================ local mod = DBM:NewMod("Bloodboil", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22948) mod:SetEncounterID(605) mod:SetModelID(21443) mod:SetHotfixNoticeRev(20230108000000) mod:SetMinSyncRevision(20230108000000) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 40508", "SPELL_CAST_SUCCESS 42005 40491", "SPELL_AURA_APPLIED 42005 40481 40491 40604 40594", "SPELL_AURA_APPLIED_DOSE 40481", "SPELL_AURA_REFRESH 40481", "SPELL_AURA_REMOVED 40604 40594" ) --[[ ability.id = 40508 and type = "begincast" or (ability.id = 40491 or ability.id = 42005) and type = "cast" or ability.id = 40604 and type = "applydebuff" or ability.id = 40594 --]] --Most timers on fight are bad. there is a reason there is no strike or breath timer. blood and rage only ones that are kinda consistent -- General local berserkTimer = mod:NewBerserkTimer(600) -- Stage One: Boiling Blood mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(1)..": "..DBM:GetSpellInfo(38027)) local warnBlood = mod:NewTargetAnnounce(42005, 3) local warnWound = mod:NewStackAnnounce(40481, 2, nil, "Tank", 2) local warnStrike = mod:NewTargetNoFilterAnnounce(40491, 3, nil, "Tank", 2) local specWarnBlood = mod:NewSpecialWarningStack(42005, nil, 1, nil, nil, 1, 2) local timerBloodCD = mod:NewCDCountTimer(10, 42005, nil, nil, nil, 5, nil, DBM_COMMON_L.IMPORTANT_ICON) -- (Timewalking Frostmourne 2023-01-07) "Bloodboil-42005-npc:22948-406 = pull:9.5, 10.0, 10.0, 10.0, 10.0, 40.0, 10.0, 10.0, 10.0, 10.0, 10.0, 40.0, 10.0, 10.0, 10.0, 10.0, 10.0, 40.0, 10.0, 10.0, 10.0, 10.0, 10.0, 40.0" local timerStrikeCD = mod:NewCDCountTimer(20, 40491, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON) -- (Timewalking Frostmourne 2023-01-07) "Bewildering Strike-40491-npc:22948-406 = pull:9.4, 20.0, 20.0, 50.0, 20.0, 20.0, 50.0, 20.0, 20.0, 50.0, 20.0, 20.0 -- Stage Two: Fel Rage mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(2)..": "..DBM:GetSpellInfo(40594)) local warnRage = mod:NewTargetAnnounce(40604, 4) local warnRageSoon = mod:NewSoonAnnounce(40604, 3) local warnRageEnd = mod:NewEndAnnounce(40604, 4) local warnBreath = mod:NewSpellAnnounce(40508, 2) local specWarnRage = mod:NewSpecialWarningYou(40604, nil, nil, nil, 1, 2) local yellRage = mod:NewYell(40604) local timerRageCD = mod:NewCDTimer(90, 40604, nil, nil, nil, 3, nil, DBM_COMMON_L.IMPORTANT_ICON) -- (Timewalking Frostmourne 2023-01-07) "Fel Rage-40594-npc:22948-406 = pull:59.6, 89.9, 90.0, 90.0" local timerRageEnd = mod:NewBuffActiveTimer(30, 40604, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON) -- (Timewalking Frostmourne 2023-01-07) - 40604 (player debuff) is 30s ; 40594 (boss debuff) is 28s mod:AddInfoFrameOption(42005) mod.vb.bloodCount = 0 mod.vb.strikeCount = 0 function mod:OnCombatStart(delay) self:SetStage(1) self.vb.bloodCount = 0 self.vb.strikeCount = 0 berserkTimer:Start(-delay) warnRageSoon:Schedule(54.6-delay) timerBloodCD:Start(9.5-delay, 1) -- REVIEW! (Timewalking Frostmourne 2023-01-07) - 9.5 timerStrikeCD:Start(9.4-delay, 1) -- REVIEW! (Timewalking Frostmourne 2023-01-07) - 9.4 timerRageCD:Start(59.6-delay) -- REVIEW! (Timewalking Frostmourne 2023-01-07) - 59.6 if self.Options.InfoFrame then DBM.InfoFrame:SetHeader(DBM:GetSpellInfo(42005)) DBM.InfoFrame:Show(30, "playerdebuffstacks", 42005, 1) end end function mod:OnCombatEnd() if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end function mod:SPELL_CAST_START(args) if args.spellId == 40508 then warnBreath:Show() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 42005 then self.vb.bloodCount = self.vb.bloodCount + 1 if self.vb.bloodCount == 5 then timerBloodCD:Start(40, 1) else timerBloodCD:Start(self.vb.bloodCount+1) end elseif spellId == 40491 then self.vb.strikeCount = self.vb.strikeCount + 1 if self.vb.strikeCount == 3 then self.vb.strikeCount = 0 timerStrikeCD:Start(50, 1) else timerStrikeCD:Start(nil, self.vb.strikeCount+1) end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 42005 then warnBlood:CombinedShow(0.8, args.destName) if args:IsPlayer() then specWarnBlood:Show(args.amount) specWarnBlood:Play("targetyou") end elseif spellId == 40481 then local amount = args.amount or 1 if (amount % 5 == 0) then warnWound:Show(args.destName, amount) end elseif spellId == 40491 then warnStrike:Show(args.destName) elseif spellId == 40594 then -- Fel Rage (boss) timerRageEnd:Start(28, args.destName) warnRageSoon:Schedule(85) timerRageCD:Start() elseif spellId == 40604 then -- Fel Rage (player) self:SetStage(2) -- timerBloodCD:Stop() timerRageEnd:Start(args.destName) if args:IsPlayer() then specWarnRage:Show() specWarnRage:Play("targetyou") yellRage:Yell() else warnRage:Show(args.destName) end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED mod.SPELL_AURA_REFRESH = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 40604 then--Ending on player -- timerRageEnd:Stop(args.destName) elseif spellId == 40594 then--Ending on Boss self.vb.bloodCount = 0 self:SetStage(1) warnRageEnd:Show() -- timerBloodCD:Start(12.5) -- warnRageSoon:Schedule(47) -- timerRageCD:Start() end end ================================================ FILE: DBM-BlackTemple/DBM-BlackTemple.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Black Temple|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0검은 사원|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Der Schwarze Tempel|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Templo Oscuro|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Temple noir|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0黑暗神殿|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0黑暗神廟|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Черный храм|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMBlackTemple_AllSavedVars ## SavedVariablesPerCharacter: DBMBlackTemple_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: BC ## X-DBM-StatTypes: normal, timewalker ## X-DBM-Mod-MapID: 797 ## X-DBM-Mod-Sort: 1002 ## X-DBM-Mod-Name: Black Temple ## X-DBM-Mod-Name-zhCN: 黑暗神殿 ## X-DBM-Mod-Name-frFR: Temple noir ## X-DBM-Mod-Name-ruRU: Черный храм ## X-DBM-Mod-LoadZone: Black Temple ## X-DBM-Mod-LoadZone-deDE: Der Schwarze Tempel ## X-DBM-Mod-LoadZone-esES: Templo Oscuro ## X-DBM-Mod-LoadZone-esMX: Templo Oscuro ## X-DBM-Mod-LoadZone-frFR: Temple noir ## X-DBM-Mod-LoadZone-koKR: 검은 사원 ## X-DBM-Mod-LoadZone-zhCN: 黑暗神殿 ## X-DBM-Mod-LoadZone-zhTW: 黑暗神廟 ## X-DBM-Mod-LoadZone-ruRU: Черный храм localization.en.lua localization.cn.lua localization.de.lua localization.es.lua localization.fr.lua localization.kr.lua localization.ru.lua localization.tw.lua Najentus.lua Supremus.lua ShadeOfAkama.lua TeronGorefiend.lua Bloodboil.lua EssenceOfSouls.lua Shahraz.lua IllidariCouncil.lua Illidan.lua ================================================ FILE: DBM-BlackTemple/EssenceOfSouls.lua ================================================ local mod = DBM:NewMod("Souls", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20251027151520") mod:SetCreatureID(23418) -- 23418: Essence of Suffering ; 23419: Essence of Desire ; 23420: Essence of Anger mod:SetEncounterID(606) mod:SetHotfixNoticeRev(20250717000000) mod:SetModelID(21483) mod:SetUsedIcons(4, 5, 6, 7, 8) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 41305 41431 41376 41303 41294 41410", "SPELL_AURA_REMOVED 41305", "SPELL_CAST_START 41410 41426", "SPELL_CAST_SUCCESS 41350 41337", "SPELL_DAMAGE 41545", "SPELL_MISSED 41545", "CHAT_MSG_MONSTER_YELL", "UNIT_SPELLCAST_SUCCEEDED" ) --maybe a warning for Seethe if tanks mess up in phase 3 local warnFixate = mod:NewTargetNoFilterAnnounce(41294, 3, nil, "Tank|Healer", 2) local warnDrain = mod:NewTargetNoFilterAnnounce(41303, 3, nil, "Healer", 2) local warnFrenzy = mod:NewSpellAnnounce(41305, 3, nil, "Tank|Healer", 2) local warnFrenzySoon = mod:NewPreWarnAnnounce(41305, 5, 2) local warnFrenzyEnd = mod:NewEndAnnounce(41305, 1, nil, "Tank|Healer", 2) local warnPhase2 = mod:NewPhaseAnnounce(2, 2) local warnMana = mod:NewAnnounce("WarnMana", 4, 41350) local warnDeaden = mod:NewTargetNoFilterAnnounce(41410, 1) local specWarnShock = mod:NewSpecialWarningInterrupt(41426, "HasInterrupt", nil, 2) local warnPhase3 = mod:NewPhaseAnnounce(3, 2) local warnSoul = mod:NewSpellAnnounce(41545, 2, nil, "Tank", 2) local warnSpite = mod:NewTargetAnnounce(41376, 3) local specWarnShield = mod:NewSpecialWarningDispel(41431, "MagicDispeller", nil, 2, 1, 2) local specWarnSpite = mod:NewSpecialWarningYou(41376, nil, nil, nil, 1, 2) --Phase 1 local timerPhaseChange = mod:NewPhaseTimer(41) local timerFrenzy = mod:NewBuffActiveTimer(8, 41305, nil, "Tank|Healer", 2, 5, nil, DBM_COMMON_L.TANK_ICON) local timerNextFrenzy = mod:NewNextTimer(40, 41305, nil, "Tank|Healer", 2, 5, nil, DBM_COMMON_L.TANK_ICON) --Phase 2 local timerDeaden = mod:NewTargetTimer(10, 41410, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON, nil, mod:IsTank() and select(2, UnitClass("player")) == "WARRIOR" and 2, 4) local timerNextDeaden = mod:NewNextTimer(30, 41410, nil, nil, nil, 5)--Roll timer because I don't want to assign it interrupt one when many groups will use prot warrior. SPELL_CAST_START: (Onyxia: 25m [2025-10-17]@[21:31:34]) - "Deaden-41410-npc:23419-2404 = pull:152.22, 30.00, 30.01" local timerMana = mod:NewTimer(160, "TimerMana", 41350) local timerNextShock = mod:NewCDTimer("v5-12", 41426, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) -- Blizz lied, you can NOT solo interrupt these with most classes. SPELL_CAST_START: (Onyxia: 25m [2025-10-17]@[21:31:34]) - "Spirit Shock-41426-npc:23419-2404 = pull:134.25, 11.14, 5.71, 11.44, 6.55, 5.37, 6.72, 6.40, 10.76, 11.95, 5.54, 6.67, 5.28, 6.36, 6.35" --Phase 3 local timerNextShield = mod:NewCDTimer(15, 41431, nil, "MagicDispeller", 2, 5, nil, DBM_COMMON_L.MAGIC_ICON) local timerNextSoul = mod:NewCDTimer(10, 41545, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON) mod:AddSetIconOption("DrainIcon", 41303, false) mod:AddSetIconOption("SpiteIcon", 41376, false) mod.vb.lastFixate = "None" function mod:OnCombatStart(delay) self.vb.lastFixate = "None" timerNextFrenzy:Start(49-delay) warnFrenzySoon:Schedule(44-delay) end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 41305 then warnFrenzy:Show() timerFrenzy:Start() elseif args.spellId == 41431 and not args:IsDestTypePlayer() then timerNextShield:Start() specWarnShield:Show(args.destName) specWarnShield:Play("dispelboss") elseif args.spellId == 41376 then warnSpite:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnSpite:Show() specWarnSpite:Play("defensive") end if self.Options.SpiteIcon then self:SetAlphaIcon(0.5, args.destName) end elseif args.spellId == 41303 then warnDrain:CombinedShow(1, args.destName) if self.Options.DrainIcon then self:SetAlphaIcon(1, args.destName) end elseif args.spellId == 41294 then if self.vb.lastFixate ~= args.destName then warnFixate:Show(args.destName) self.vb.lastFixate = args.destName end elseif args.spellId == 41410 and not args:IsDestTypePlayer() then warnDeaden:Show(args.destName) timerDeaden:Start(args.destName) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 41305 then warnFrenzyEnd:Show() warnFrenzySoon:Schedule(35) timerNextFrenzy:Start() end end function mod:SPELL_CAST_START(args) if args.spellId == 41410 then timerNextDeaden:Start() elseif args.spellId == 41426 then timerNextShock:Start() specWarnShock:Show(args.sourceName) end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 41350 then --Aura of Desire warnPhase2:Show() warnMana:Schedule(130) timerMana:Start() timerNextShield:Start(13) timerNextDeaden:Start(25) -- REVIEW! ~1s variance? elseif args.spellId == 41337 then --Aura of Anger warnPhase3:Show() timerNextSoul:Start() end end function mod:SPELL_DAMAGE(_, _, _, _, _, _, spellId) if spellId == 41545 and self:AntiSpam(3, 1) then warnSoul:Show() timerNextSoul:Start() end end mod.SPELL_MISSED = mod.SPELL_DAMAGE --Boss Unit IDs stilln ot present in 7.2.5 so mouseover/target and antispam required function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if spellName == GetSpellInfo(28819) and self:AntiSpam(2, 2) then--Submerge Visual self:SendSync("PhaseEnd") end end --Backup to no one targetting boss function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.Phase1End or msg:find(L.Phase1End) or msg == L.Phase2End or msg:find(L.Phase2End) then self:SendSync("PhaseEnd") end end function mod:OnSync(msg) if not self:IsInCombat() then return end if msg == "PhaseEnd" then warnFrenzyEnd:Cancel() warnFrenzySoon:Cancel() warnMana:Cancel() timerNextFrenzy:Stop() timerFrenzy:Stop() timerMana:Stop() timerNextShield:Stop() timerNextDeaden:Stop() timerNextShock:Stop() timerPhaseChange:Start()--41 end end ================================================ FILE: DBM-BlackTemple/Illidan.lua ================================================ local mod = DBM:NewMod("Illidan", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20251027154359") mod:SetCreatureID(22917) mod:SetEncounterID(609) mod:SetModelID(21135) mod:SetUsedIcons(8) mod:RegisterCombat("combat") mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 40904 41117 39849 41032", "SPELL_CAST_SUCCESS 41126", "SPELL_AURA_APPLIED 41917 41914 40585 40932 41083 40683 40695 41032 39869", "SPELL_AURA_REMOVED 41917 41914", -- "SPELL_SUMMON 40018", "UNIT_DIED" ) --TODO, phase 4 log where I don't overkill boss too fast. -- General local timerCombatStart = mod:NewCombatTimer(42.35) local berserkTimer = mod:NewBerserkTimer(1500) -- Stage One: You Are Not Prepared mod:AddTimerLine(L.S1YouAreNotPrepared) local warnShearSoon = mod:NewSoonAnnounce(41032, 2, nil, "Tank") local warnDrawSoul = mod:NewSpellAnnounce(40904, 3, nil, "Tank", 2)--Needed? local warnParasite = mod:NewTargetAnnounce(41917, 3) local warnPhase2Soon = mod:NewPrePhaseAnnounce(2, 3) local specWarnShearBlock = mod:NewSpecialWarningDefensive(41032, "Tank", nil, nil, 1, 2) local specWarnShearTaunt = mod:NewSpecialWarningTaunt(41032, "Tank", nil, nil, 1, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(40832, nil, nil, nil, 1, 2) -- Phase 1: Flame Crash // Phase 2: Blaze local specWarnParasite = mod:NewSpecialWarningYou(41917, nil, nil, nil, 1, 2) local yellParasiteFades = mod:NewShortFadesYell(41917) local timerShearCD = mod:NewCDTimer(10, 41032, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON) -- (Timewalking Frostmourne [2023-02-18]@[22:07:38]) - "Shear-41032-npc:22917-337 = pull:10.0/Stage 1/10.0, 10.1, 11.3, 10.6, 10.1, 10.6, 10.8, 10.5, 11.9, 11.9, 10.5, 10.0, 10.5, Stage 2/13.0, Stage 3/76.5, 27.6/104.1/117.1, 10.0, 11.3, 10.1, 10.7, 88.9, 11.8, 11.3, 10.6, 10.0, Stage 4/81.4, 39.1/120.5, 10.1, 11.7, 10.2, 102.9" local timerDrawSoul = mod:NewCDTimer(35, 40904, nil, "Tank", nil, 5, nil, DBM_COMMON_L.TANK_ICON) -- (Timewalking Frostmourne [2023-02-18]@[22:07:38]) - "Draw Soul-40904-npc:22917-337 = pull:35.0/Stage 1/35.0, 35.0, 35.0, 35.6, Stage 2/11.4, Stage 3/76.5, 52.6/129.1/140.5, 131.0, Stage 4/100.1, 64.1/164.2", -- [3] local timerFlameCrash = mod:NewNextTimer(30, 40832, nil, nil ,nil, 3) -- (Timewalking Frostmourne [2023-02-18]@[22:07:38]) - "Flame Crash-40832-npc:22917-337 = pull:30.0/Stage 1/30.0, 30.0, 30.0, 30.0, Stage 2/31.9, Stage 3/76.5, 47.5/124.0/156.0, 131.0, Stage 4/105.1, 59.1/164.2" local timerParasite = mod:NewTargetTimer(10, 41917, nil, false, nil, 1, nil, DBM_COMMON_L.IMPORTANT_ICON) mod:AddSetIconOption("ParasiteIcon", 41917) -- Stage Two: Flames of Azzinoth mod:AddTimerLine(L.S2FlamesOfAzzinoth) --Illidan Stormrage local warnPhase2 = mod:NewPhaseAnnounce(2) local warnBarrage = mod:NewTargetAnnounce(40585, 3) local warnEyebeam = mod:NewSpellAnnounce(40018, 3) local specWarnBarrage = mod:NewSpecialWarningMoveAway(40585, nil, nil, nil, 1, 2) local specWarnUncagedWrath = mod:NewSpecialWarningDefensive(39869, nil, nil, nil, 3, 2) local timerBarrage = mod:NewTargetTimer(10, 40585, nil, false, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) local timerNextBarrage = mod:NewCDTimer(44, 40585, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) -- REVIEW! broken?? Fired on P3... local timerEyebeam = mod:NewCDTimer(30, 40018, nil, nil, nil, 2) -- (Timewalking Frostmourne [2023-02-18]@[22:07:38]) - "?-Stare into the eyes of the Betrayer!-npc:Illidan Stormrage = pull:182.7/Stage 2/31.2, 30.3, Stage 3/15.0, Stage 4/283.7", -- [16] -- Flame of Azzinoth --local specWarnGTFO = mod:NewSpecialWarningGTFO(40611, nil, nil, nil, 1, 2) -- Phase 2: Blaze -- Stage Three: The Demon Within mod:AddTimerLine(L.S3TheDemonWithin) local warnPhase3 = mod:NewPhaseAnnounce(3) local warnFlame = mod:NewTargetAnnounce(40932, 3) local warnPhase4Soon = mod:NewPrePhaseAnnounce(4, 3) --local timerFlame = mod:NewTargetTimer(60, 40932) -- [Stage Three: The Demon Within] Demon Form mod:AddTimerLine(DBM:GetSpellInfo(40506)) local warnDemon = mod:NewSpellAnnounce(40506, 3) local warnFlameBurst = mod:NewSpellAnnounce(41131, 3) local warnShadowDemon = mod:NewTargetNoFilterAnnounce(41117, 3) local warnHuman = mod:NewAnnounce("WarnHuman", 3, 62844, nil, nil, nil, 40506) local specWarnShadowDemon = mod:NewSpecialWarningSwitch(41117, "Dps", nil, nil, 3, 2) local timerNextFlameBurst = mod:NewCDTimer(20, 41131, nil, nil, nil, 3) local timerNextDemon = mod:NewCDTimer(60, 40506, nil, nil, nil, 6, nil, DBM_COMMON_L.IMPORTANT_ICON) -- REVIEW! phase 3 and 5 variance? (Timewalking Frostmourne [2023-02-18]@[21:51:02] || Timewalking Frostmourne [2023-02-18]@[22:07:38]) - ?-Behold the power... of the demon within!-npc:Illidan Stormrage = pull:296.2/Stage 3/77.8, 131.0, Stage 4/90.6, 89.1/179.7, 114.8 || pull:305.6/Stage 3/77.6, 131.0, Stage 4/75.1, 93.0/168.1" local timerShadowDemon = mod:NewCDTimer(34, 41117, nil, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON) local timerNextHuman = mod:NewTimer(60, "TimerNextHuman", 62844, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, 40506) -- Stage Four: The Long Hunt mod:AddTimerLine(L.S4TheLongHunt) local warnPhase4 = mod:NewPhaseAnnounce(4) local warnEnrage = mod:NewSpellAnnounce(40683, 3) -- Frenzy local timerPhase4 = mod:NewPhaseTimer(30) local timerEnrage = mod:NewBuffActiveTimer(10, 40683) --local timerNextEnrage = mod:NewCDTimer(40, 40683) -- Maiev Shadowsong local warnCaged = mod:NewSpellAnnounce(40695, 3) local timerCaged = mod:NewBuffActiveTimer(15, 40695, nil, nil, nil, 6) mod:AddRangeFrameOption("6/8")-- 40932: Spell is 5 yards, but give it 6 or good measure since 5 yard check is probably least precise one since nerfs. / 41917: Parasitic. REVIEW! arbitrary range mod.vb.flamesDown = 0 mod.vb.flameBursts = 0 mod.vb.warned_preP2 = false mod.vb.warned_preP4 = false mod.vb.demonForm = false local parasiticDebuffName = DBM:GetSpellInfo(41917) local parasiticDebuffFilter do parasiticDebuffFilter = function(uId) return DBM:UnitDebuff(uId, parasiticDebuffName) end end local function humanForms(self) -- corrected on the fly using UNIT_AURA, and checking debuff 40506 to OnSync self:Unschedule(humanForms) self.vb.demonForm = false warnHuman:Show() timerNextFlameBurst:Cancel() timerNextDemon:Start() timerShearCD:Start() timerFlameCrash:Start() if self.vb.phase == 4 then timerEnrage:Start() end end function mod:OnCombatStart(delay) self:SetStage(1) self.vb.flamesDown = 0 self.vb.flameBursts = 0 self.vb.warned_preP2 = false self.vb.warned_preP4 = false self.vb.demonForm = false timerShearCD:Start() timerFlameCrash:Start() berserkTimer:Start(-delay) if not self:IsTrivial() then self:RegisterShortTermEvents( "SPELL_DAMAGE 40841 40832 40611", "SPELL_MISSED 40841 40832 40611", "UNIT_HEALTH" ) end end function mod:OnCombatEnd() self:UnregisterShortTermEvents() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 40904 then warnDrawSoul:Show() timerDrawSoul:Start() elseif spellId == 41117 then specWarnShadowDemon:Show() specWarnShadowDemon:Play("killmob") elseif spellId == 39849 then--Throw Glaive self:SetStage(2) self.vb.flamesDown = 0 self.vb.warned_preP2 = true timerShearCD:Cancel() timerFlameCrash:Cancel() warnPhase2:Show() timerNextBarrage:Start(85) timerEyebeam:Start() elseif spellId == 41032 then -- Shear warnShearSoon:Schedule(7) -- 3s (+1.5s from cast time) is good enough to plan ahead timerShearCD:Start() specWarnShearBlock:Show() specWarnShearBlock:Play("defensive") elseif spellId == 40832 then -- Flame Crash timerFlameCrash:Start() end end function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId if spellId == 41126 then warnFlameBurst:Show() self.vb.flameBursts = self.vb.flameBursts + 1 if self.vb.flameBursts < 3 then timerNextFlameBurst:Start() end end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 41917 or spellId == 41914 then timerParasite:Start(args.destName) if args:IsPlayer() then specWarnParasite:Show() specWarnParasite:Play("targetyou") yellParasiteFades:Countdown(spellId) else warnParasite:Show(args.destName) end if self.Options.ParasiteIcon then self:SetIcon(args.destName, 8) end if self.Options.RangeFrame then if DBM:UnitDebuff("player", args.spellName) then -- You have debuff, show everyone DBM.RangeCheck:Show(8, nil) else -- You do not have debuff, only show players who do DBM.RangeCheck:Show(8, parasiticDebuffFilter) end end elseif spellId == 40585 then timerBarrage:Start(args.destName) timerNextBarrage:Start() if args:IsPlayer() then specWarnBarrage:Show() specWarnBarrage:Play("runout") specWarnBarrage:ScheduleVoice(1, "keepmove") else warnBarrage:Show(args.destName) end elseif spellId == 40932 then warnFlame:CombinedShow(0.3, args.destName) --timerFlame:Start(args.destName) elseif spellId == 41083 then warnShadowDemon:CombinedShow(1, args.destName) elseif spellId == 40683 then warnEnrage:Show() timerEnrage:Start() elseif spellId == 40695 then warnCaged:Show() timerCaged:Start() elseif spellId == 41032 then -- Shear if not args:IsPlayer() then specWarnShearTaunt:Show(args.destName) specWarnShearTaunt:Play("tauntboss") end elseif spellId == 39869 then -- Uncaged Wrath specWarnUncagedWrath:Show() specWarnUncagedWrath:Play("defensive") end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 41917 or spellId == 41914 then timerParasite:Stop(args.destName) if args:IsPlayer() then yellParasiteFades:Cancel() end if self.Options.ParasiteIcon then self:SetIcon(args.destName, 0) end end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, spellId) if (spellId == 40841 or spellId == 40832 or spellId == 40611) and destGUID == UnitGUID("player") and self:AntiSpam(4, 5) then -- Flame Crash / Blaze (Flame of Azzinoth) specWarnGTFO:Show() specWarnGTFO:Play("runaway") end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 22997 then self.vb.flamesDown = self.vb.flamesDown + 1 if self.vb.flamesDown >= 2 then self:SetStage(3) if self.Options.RangeFrame then DBM.RangeCheck:Show(6) end timerNextBarrage:Cancel() timerEyebeam:Cancel() warnPhase3:Show() timerNextDemon:Start(77.6) -- (Timewalking Frostmourne [2023-02-18]@[22:07:38]) - 77.6 timerShearCD:Start(27.6) timerFlameCrash:Start(47.5) self:RegisterShortTermEvents( "UNIT_AURA focus target mouseover" ) end end end function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.Pull or msg:find(L.Pull) or msg == L.PullWarmane or msg:find(L.PullWarmane)then -- Warmane bad string: https://www.warmane.com/bugtracker/report/131679 timerCombatStart:Start() elseif msg == L.Eyebeam or msg:find(L.Eyebeam) then warnEyebeam:Show() timerEyebeam:Start() elseif msg == L.Demon or msg:find(L.Demon) then self.vb.flameBursts = 0 self.vb.demonForm = true timerNextDemon:Cancel() warnDemon:Show() timerNextHuman:Start() timerNextFlameBurst:Start() timerShadowDemon:Start() -- self:Schedule(74, humanForms, self) elseif (msg == L.Phase4 or msg:find(L.Phase4)) and self.vb.phase < 4 then self:SetStage(4) self.vb.warned_preP4 = true -- self:Unschedule(humanForms) timerParasite:Cancel() --timerFlame:Cancel() timerNextFlameBurst:Cancel() timerShadowDemon:Cancel() timerNextHuman:Cancel() timerNextDemon:Cancel() timerPhase4:Start() warnPhase4:Schedule(30) timerNextDemon:Start(89.1) -- REVIEW! 5s variance? (Timewalking Frostmourne [2023-02-18]@[21:51:02] || Timewalking Frostmourne [2023-02-18]@[22:07:38]) - 89.1 || 93.0 end end function mod:UNIT_AURA(uId) if not self.vb.demonForm then return end -- Demon phase if DBM:GetUnitCreatureId(uId) ~= 22917 then return end -- Illidan local demonForm = DBM:UnitBuff(uId, 40506) if self.vb.demonForm and not demonForm then -- Illidan was in Demon Form but just lost buff and morphed into Human Form -- self.vb.demonForm = false -- redundancy. untested if it is actually needed, but theoretically I want to prevent UNIT_AURA from rerunning during OnSync runtime DBM:Debug(" Illidan switched to Human Form!") self:SendSync("humanForm") end end function mod:UNIT_HEALTH(uId) local cid = self:GetUnitCreatureId(uId) if not self.vb.warned_preP2 and cid == 22917 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.75 then self.vb.warned_preP2 = true warnPhase2Soon:Show() elseif not self.vb.warned_preP4 and cid == 22917 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.35 then self.vb.warned_preP4 = true warnPhase4Soon:Show() end end function mod:OnSync(msg) if msg == "humanForm" and self.vb.demonForm then DBM:Debug(" Illidan switched to Human Form!") humanForms(self) end end ================================================ FILE: DBM-BlackTemple/IllidariCouncil.lua ================================================ local mod = DBM:NewMod("Council", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22949, 22950, 22951, 22952) mod:SetEncounterID(608) mod:SetModelID(21416) mod:SetUsedIcons(1) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 41455", "SPELL_CAST_SUCCESS 41455", "SPELL_AURA_APPLIED 41485 41481 41482 41541 41476 41475 41452 41453 41450 41451", "SPELL_AURA_REMOVED 41479 41485" ) local warnPoison = mod:NewTargetNoFilterAnnounce(41485, 3, nil, "Healer", 3) local warnVanish = mod:NewTargetNoFilterAnnounce(41476, 3) local warnVanishEnd = mod:NewEndAnnounce(41476, 3) local warnDevAura = mod:NewSpellAnnounce(41452, 3, nil, "Physical", 2) local warnResAura = mod:NewSpellAnnounce(41453, 3, nil, "-Physical", 2) local specWarnShield = mod:NewSpecialWarningReflect(41475, "Dps", nil, nil, 1, 2) local specWarnFlame = mod:NewSpecialWarningMove(41481, nil, nil, nil, 1, 2) local specWarnBlizzard = mod:NewSpecialWarningMove(41482, nil, nil, nil, 1, 2) local specWarnConsecration = mod:NewSpecialWarningMove(41541, nil, nil, nil, 1, 2) local specWarnCoH = mod:NewSpecialWarningInterrupt(41455, "HasInterrupt", nil, 2, 1, 2) local specWarnImmune = mod:NewSpecialWarning("Immune", false) local timerVanish = mod:NewBuffActiveTimer(31, 41476, nil, nil, nil, 6) local timerShield = mod:NewBuffActiveTimer(20, 41475, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON..DBM_COMMON_L.DAMAGE_ICON) local timerMeleeImmune = mod:NewTargetTimer(15, 41450, nil, "Physical", 2, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerSpellImmune = mod:NewTargetTimer(15, 41451, nil, "-Physical", 2, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerDevAura = mod:NewBuffActiveTimer(30, 41452, nil, "Physical", 2, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerResAura = mod:NewBuffActiveTimer(30, 41453, nil, "-Physical", 2, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerNextCoH = mod:NewCDTimer(14, 41455, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local berserkTimer = mod:NewBerserkTimer(900) mod:AddSetIconOption("PoisonIcon", 41485) function mod:OnCombatStart(delay) berserkTimer:Start(-delay) end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 41485 then warnPoison:Show(args.destName) if self.Options.PoisonIcon then self:SetIcon(args.destName, 1) end elseif spellId == 41481 and args:IsPlayer() and self:AntiSpam(3, 1) and not self:IsTrivial() then specWarnFlame:Show() specWarnFlame:Play("runaway") elseif spellId == 41482 and args:IsPlayer() and self:AntiSpam(3, 2) and not self:IsTrivial() then specWarnBlizzard:Show() specWarnBlizzard:Play("runaway") elseif spellId == 41541 and args:IsPlayer() and self:AntiSpam(3, 3) and not self:IsTrivial() then specWarnConsecration:Show() specWarnConsecration:Play("runaway") elseif spellId == 41476 then warnVanish:Show(args.destName) timerVanish:Start(args.destName) elseif spellId == 41475 and not self:IsTrivial() then specWarnShield:Show(args.destName) specWarnShield:Play("stopattack") timerShield:Start(args.destName) elseif spellId == 41452 and self:GetCIDFromGUID(args.destGUID) == 22949 then warnDevAura:Show() timerDevAura:Start() elseif spellId == 41453 and self:GetCIDFromGUID(args.destGUID) == 22949 then warnResAura:Show() timerResAura:Start() elseif spellId == 41450 and self:GetCIDFromGUID(args.destGUID) == 22951 then timerMeleeImmune:Start(args.destName) specWarnImmune:Show(L.Melee) elseif spellId == 41451 and self:GetCIDFromGUID(args.destGUID) == 22951 then timerSpellImmune:Start(args.destName) specWarnImmune:Show(L.Spell) end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 41479 then warnVanishEnd:Show() elseif spellId == 41485 then if self.Options.PoisonIcon then self:SetIcon(args.destName, 0) end end end function mod:SPELL_CAST_START(args) if args.spellId == 41455 then if self:CheckInterruptFilter(args.sourceGUID) then specWarnCoH:Show(args.sourceName) specWarnCoH:Play("kickcast") end end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 41455 then timerNextCoH:Start(13.3) end end ================================================ FILE: DBM-BlackTemple/Najentus.lua ================================================ local mod = DBM:NewMod("Najentus", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20251027142500") mod:SetCreatureID(22887) mod:SetEncounterID(601) mod:SetModelID(21174) mod:SetUsedIcons(8) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 39872 39837", "SPELL_AURA_REMOVED 39837" ) local warnShield = mod:NewSpellAnnounce(39872, 4) local warnShieldSoon = mod:NewSoonAnnounce(39872, 10, 3) local warnSpine = mod:NewTargetNoFilterAnnounce(39837, 3) local specWarnSpineTank = mod:NewSpecialWarningTaunt(39837, nil, nil, nil, 1, 2) local yellSpine = mod:NewYell(39837) local timerShield = mod:NewNextTimer(60, 39872, nil, nil, nil, 5) -- (Onyxia: 25m [2025-10-17]@[20:25:19]) - "Tidal Shield-39872-npc:22887-247 = pull:60.02, 60.05" local berserkTimer = mod:NewBerserkTimer(300) mod:AddSetIconOption("SpineIcon", 39837) mod:AddInfoFrameOption(39878, true) mod:AddRangeFrameOption("8") function mod:OnCombatStart(delay) berserkTimer:Start(-delay) timerShield:Start(-delay) warnShieldSoon:Schedule(50-delay) if self.Options.RangeFrame then DBM.RangeCheck:Show(8) end if self.Options.InfoFrame and not self:IsTrivial() then DBM.InfoFrame:SetHeader(L.HealthInfo) DBM.InfoFrame:Show(5, "health", 1800) end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 39872 then warnShield:Show() warnShieldSoon:Schedule(50) timerShield:Start() elseif args.spellId == 39837 then warnSpine:Show(args.destName) if self.Options.SpineIcon then self:SetIcon(args.destName, 8) end if args:IsPlayer() then yellSpine:Yell() else local uId = DBM:GetRaidUnitId(args.destName) if self:IsTanking(uId) then--Tank got spike and it wasn't us --Taunt off spiked tank specWarnSpineTank:Show(args.destName) specWarnSpineTank:Play("tauntboss") end end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 39837 and self.Options.SpineIcon then self:SetIcon(args.destName, 0) end end ================================================ FILE: DBM-BlackTemple/ShadeOfAkama.lua ================================================ local mod = DBM:NewMod("Akama", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22841) mod:SetEncounterID(603) mod:SetModelID(21357) mod:RegisterCombat("combat") mod:SetWipeTime(50)--Adds come about every 50 seconds, so require at least this long to wipe combat if they die instantly mod:RegisterEventsInCombat( "UNIT_DIED" ) mod:RegisterEvents( "SPELL_AURA_REMOVED 34189" ) local warnPhase2 = mod:NewPhaseAnnounce(2) local warnDefender = mod:NewAnnounce("warnAshtongueDefender", 2, 41180) local warnSorc = mod:NewAnnounce("warnAshtongueSorcerer", 2, 40520) local specWarnAdds = mod:NewSpecialWarningAddsCustom(42035, "-Healer", nil, nil, 1, 2) local timerCombatStart = mod:NewCombatTimer(12) local timerAddsCD = mod:NewAddsCustomTimer(25, 42035)--NewAddsCustomTimer local timerDefenderCD = mod:NewTimer(25, "timerAshtongueDefender", 41180, nil, nil, 1) local timerSorcCD = mod:NewTimer(25, "timerAshtongueSorcerer", 40520, nil, nil, 1) mod.vb.AddsWestCount = 0 local function addsWestLoop(self) self.vb.AddsWestCount = self.vb.AddsWestCount + 1 specWarnAdds:Show(DBM_COMMON_L.WEST) specWarnAdds:Play("killmob") specWarnAdds:ScheduleVoice(1, "west") if self.vb.AddsWestCount == 2 then--Special self:Schedule(51, addsWestLoop, self) timerAddsCD:Start(51, DBM_COMMON_L.WEST) else self:Schedule(47, addsWestLoop, self) timerAddsCD:Start(47, DBM_COMMON_L.WEST) end end local function addsEastLoop(self) specWarnAdds:Show(DBM_COMMON_L.EAST) specWarnAdds:Play("killmob") specWarnAdds:ScheduleVoice(1, "east") self:Schedule(51, addsEastLoop, self) timerAddsCD:Start(51, DBM_COMMON_L.EAST) end local function sorcLoop(self) warnSorc:Show() self:Schedule(25, sorcLoop, self) timerSorcCD:Start(25) end local function defenderLoop(self) warnDefender:Show() self:Schedule(30, defenderLoop, self) timerDefenderCD:Start(30) end function mod:OnCombatStart() self:SetStage(1) self.vb.AddsWestCount = 0 self:RegisterShortTermEvents( "SWING_DAMAGE", "SWING_MISSED", "UNIT_SPELLCAST_SUCCEEDED" ) self:Schedule(1, defenderLoop, self) self:Schedule(1, sorcLoop, self) self:Schedule(1, addsWestLoop, self) self:Schedule(18, addsEastLoop, self) timerAddsCD:Start(18, DBM_COMMON_L.EAST or "East") end function mod:OnCombatEnd() self:UnregisterShortTermEvents() end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 34189 and args:GetDestCreatureID() == 23191 then--Coming out of stealth (he's been activated) timerCombatStart:Start() end end function mod:SWING_DAMAGE(_, sourceName) if sourceName == L.name and self.vb.phase == 1 then self:UnregisterShortTermEvents() self:SetStage(2) warnPhase2:Show() timerAddsCD:Stop() timerDefenderCD:Stop() timerSorcCD:Stop() self:Unschedule(addsWestLoop) self:Unschedule(addsEastLoop) self:Unschedule(sorcLoop) self:Unschedule(defenderLoop) end end mod.SWING_MISSED = mod.SWING_DAMAGE function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if (spellName == GetSpellInfo(40607) or spellName == GetSpellInfo(40955)) and self.vb.phase == 1 and self:AntiSpam(3, 1) then--Fixate/Summon Shade of Akama Trigger self:UnregisterShortTermEvents() self:SetStage(2) warnPhase2:Show() timerAddsCD:Stop() timerDefenderCD:Stop() timerSorcCD:Stop() self:Unschedule(addsWestLoop) self:Unschedule(addsEastLoop) self:Unschedule(sorcLoop) self:Unschedule(defenderLoop) end end function mod:UNIT_DIED(args) if self:GetCIDFromGUID(args.destGUID) == 22841 then DBM:EndCombat(self) end end ================================================ FILE: DBM-BlackTemple/Shahraz.lua ================================================ local mod = DBM:NewMod("Shahraz", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22947) mod:SetEncounterID(607) mod:SetModelID(21252) mod:SetUsedIcons(1, 2, 3) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "CHAT_MSG_RAID_BOSS_EMOTE", "SPELL_AURA_APPLIED 41001", "SPELL_AURA_REMOVED 41001", "SPELL_CAST_SUCCESS 40823", "UNIT_SPELLCAST_SUCCEEDED" ) --TODO, announce auras? local warnFA = mod:NewTargetNoFilterAnnounce(41001, 4) local warnShriek = mod:NewSpellAnnounce(40823) local warnEnrageSoon = mod:NewSoonAnnounce(21340)--not actual spell id local warnEnrage = mod:NewSpellAnnounce(21340) local specWarnFA = mod:NewSpecialWarningMoveAway(41001, nil, nil, nil, 1, 2) local timerFACD = mod:NewCDTimer(20.7, 41001, nil, nil, nil, 3)--20-28 local timerAura = mod:NewTimer(15, "timerAura", 22599) local timerShriekCD = mod:NewCDTimer(15.8, 40823, nil, nil, nil, 2) mod:AddSetIconOption("FAIcons", 41001, true) mod.vb.prewarn_enrage = false mod.vb.enrage = false mod.vb.FATargets = 0 local GetSpellInfo = GetSpellInfo local aura = { [GetSpellInfo(40880)] = true, [GetSpellInfo(40882)] = true, [GetSpellInfo(40883)] = true, [GetSpellInfo(40891)] = true, [GetSpellInfo(40896)] = true, [GetSpellInfo(40897)] = true } function mod:OnCombatStart(delay) self.vb.prewarn_enrage = false self.vb.enrage = false self.vb.FATargets = 0 timerShriekCD:Start(15.8-delay) timerFACD:Start(24.4-delay) if not self:IsTrivial() then self:RegisterShortTermEvents( "UNIT_HEALTH boss1" ) end end function mod:OnCombatEnd() self:UnregisterShortTermEvents() end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 41001 then warnFA:CombinedShow(1, args.destName) if args:IsPlayer() then specWarnFA:Show() specWarnFA:Play("scatter") end if self.Options.FAIcons then self:SetIcon(args.destName, self.vb.FATargets + 1) self.vb.FATargets = self.vb.FATargets + 1 end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 41001 and self.Options.FAIcons then self:SetIcon(args.destName, 0) self.vb.FATargets = self.vb.FATargets - 1 end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 40823 then warnShriek:Show() timerShriekCD:Start() end end function mod:CHAT_MSG_RAID_BOSS_EMOTE(_, source) if not self.vb.enrage and (source or "") == L.name then self.vb.enrage = true warnEnrage:Show() end end function mod:UNIT_HEALTH(uId) if UnitHealth(uId) / UnitHealthMax(uId) <= 0.23 and self:GetUnitCreatureId(uId) == 22947 and not self.vb.prewarn_enrage then self:UnregisterShortTermEvents() self.vb.prewarn_enrage = true warnEnrageSoon:Show() end end --["40869-Fatal Attraction"] = "pull:24.4, 26.8, 28.0, 20.7, 21.9, 26.6, 22.0, 23.2, 23.0, 25.7, 26.6, 26.8, 25.6, 23.1, 26.8, 25.4", function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if self:AntiSpam(3, spellName) then if aura[spellName] then timerAura:Start(spellName) elseif spellName == GetSpellInfo(40869) then--Cast event not in combat log, only applied and that can be resisted (especially on non timewalker). this ensures timer always exists timerFACD:Start() end end end ================================================ FILE: DBM-BlackTemple/Supremus.lua ================================================ local mod = DBM:NewMod("Supremus", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22898) mod:SetEncounterID(602) mod:SetModelID(21145) mod:SetUsedIcons(8) mod:SetHotfixNoticeRev(20230108000000) mod:SetMinSyncRevision(20230108000000) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "CHAT_MSG_RAID_BOSS_WHISPER" ) --TODO, see if CLEU method is reliable enough to scrap scan method. scan method may still have been faster. -- General local warnPhase = mod:NewAnnounce("WarnPhase", 4, 42052) local timerPhase = mod:NewTimer(60, "TimerPhase", 42052, nil, nil, 6) local berserkTimer = mod:NewBerserkTimer(600) -- Stage One: Supremus mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(1)..": "..L.name) local specWarnMolten = mod:NewSpecialWarningMove(40265, nil, nil, nil, 1, 2) local timerMoltenCD = mod:NewCDTimer(20, 40265, nil, nil, nil, 3) -- Stage Two: Pursuit mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(2)..": "..DBM:GetSpellInfo(68987)) local warnFixate = mod:NewTargetNoFilterAnnounce(41295, 3) local specWarnVolcano = mod:NewSpecialWarningMove(42052, nil, nil, nil, 1, 2) local specWarnFixate = mod:NewSpecialWarningRun(41295, nil, nil, nil, 4, 2) mod:AddBoolOption("KiteIcon", true) --mod.vb.phase2 = false mod.vb.lastTarget = "None" local function ScanTarget(self) local target, uId = self:GetBossTarget(22898) if target then if self.vb.lastTarget ~= target then self.vb.lastTarget = target if UnitIsUnit(uId, "player") and not self:IsTrivial() then specWarnFixate:Show() specWarnFixate:Play("justrun") specWarnFixate:ScheduleVoice(1, "keepmove") else warnFixate:Show(target) end if self.Options.KiteIcon then self:SetIcon(target, 8) end end end end local function warnMoltenSpawn(self) specWarnMolten:Show() specWarnMolten:Play("watchstep") timerMoltenCD:Start(20) self:Schedule(20, warnMoltenSpawn, self) end function mod:OnCombatStart(delay) self:SetStage(1) berserkTimer:Start(-delay) timerPhase:Start(-delay, L.Kite) timerMoltenCD:Start(10-delay) self:Schedule(10-delay, warnMoltenSpawn, self) self.vb.lastTarget = "None" if not self:IsTrivial() then--Only warning that uses these events is remorseless winter and that warning is completely useless spam for level 90s. self:RegisterShortTermEvents( "SPELL_DAMAGE 40265 42052", "SPELL_MISSED 40265 42052" ) end end function mod:OnCombatEnd() self:Unschedule(warnMoltenSpawn) self:UnregisterShortTermEvents() if self.vb.lastTarget ~= "None" then self:SetIcon(self.vb.lastTarget, 0) end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, spellId) if spellId == 40265 and destGUID == UnitGUID("player") and self:AntiSpam(4, 1) and not self:IsTrivial() then specWarnMolten:Show() specWarnMolten:Play("runaway") elseif spellId == 42052 and destGUID == UnitGUID("player") and self:AntiSpam(4, 2) and not self:IsTrivial() then specWarnVolcano:Show() specWarnVolcano:Play("runaway") end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:CHAT_MSG_RAID_BOSS_WHISPER(msg) if msg == L.PhaseKite or msg:find(L.PhaseKite) then self:SetStage(2) warnPhase:Show(L.Kite) timerPhase:Start(L.Tank) self:Unschedule(ScanTarget) self:Schedule(4, ScanTarget, self) if self.vb.lastTarget ~= "None" then self:SetIcon(self.vb.lastTarget, 0) end if self:IsMelee() and not self:IsTrivial() then --Melee Dps Not technically fixated but melee should run out at start of kite phase in case chosen. --Tank should run out because boss actually fixates tank for couple seconds before choosing new target. specWarnFixate:Show() specWarnFixate:Play("justrun") end elseif msg == L.PhaseTank or msg:find(L.PhaseTank) then self:SetStage(1) warnPhase:Show(L.Tank) timerPhase:Start(L.Kite) self:Unschedule(ScanTarget) if self.vb.lastTarget ~= "None" then self:SetIcon(self.vb.lastTarget, 0) end elseif msg == L.ChangeTarget or msg:find(L.ChangeTarget) then self:Unschedule(ScanTarget) self:Schedule(0.5, ScanTarget, self) end end ================================================ FILE: DBM-BlackTemple/TeronGorefiend.lua ================================================ local mod = DBM:NewMod("TeronGorefiend", "DBM-BlackTemple") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(22871) mod:SetEncounterID(604) mod:SetModelID(21254) mod:SetUsedIcons(4, 5, 6, 7, 8) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_AURA_APPLIED 40243 40251", "SPELL_AURA_REMOVED 40243 40251", "SPELL_CAST_SUCCESS 40239" ) --Incinerate useful? local warnCrushed = mod:NewTargetNoFilterAnnounce(40243, 3, nil, "Healer") local warnIncinerate = mod:NewSpellAnnounce(40239, 3) local warnDeath = mod:NewTargetNoFilterAnnounce(40251, 3) local specWarnDeath = mod:NewSpecialWarningYou(40251, nil, nil, nil, 1, 2) local specWarnDeathEnding = mod:NewSpecialWarningMoveAway(40251, nil, nil, nil, 3, 2) local timerCrushed = mod:NewBuffActiveTimer(15, 40243, nil, "Healer", 2, 5, nil, DBM_COMMON_L.HEALER_ICON) local timerDeathCD = mod:NewCDTimer(32, 40251, nil, nil, nil, 3)--32-40 (small sample size, could be bigger range) local timerDeath = mod:NewTargetTimer(55, 40251, nil, nil, nil, 3) local timerVengefulSpirit = mod:NewTimer(60, "TimerVengefulSpirit", 40325, nil, nil, 1) local berserkTimer = mod:NewBerserkTimer(300) mod:AddSetIconOption("CrushIcon", 40243, false, false, {1, 2, 3, 4, 5}) local CrushedTargets = {} mod.vb.crushIcon = 1 local function showCrushedTargets(self) warnCrushed:Show(table.concat(CrushedTargets, "<, >")) table.wipe(CrushedTargets) self.vb.crushIcon = 1 end function mod:OnCombatStart(delay) berserkTimer:Start(-delay) table.wipe(CrushedTargets) timerDeathCD:Start(11.1-delay)--11-13? end function mod:SPELL_AURA_APPLIED(args) if args.spellId == 40243 then CrushedTargets[#CrushedTargets + 1] = args.destName timerCrushed:Start() self:Unschedule(showCrushedTargets) if self.Options.CrushIcon then self:SetIcon(args.destName, self.vb.crushIcon, 15) self.vb.crushIcon = self.vb.crushIcon + 1 end self:Schedule(0.5, showCrushedTargets, self) elseif args.spellId == 40251 then timerDeath:Start(args.destName) if args:IsPlayer() then specWarnDeath:Show() specWarnDeath:Play("targetyou") specWarnDeathEnding:Schedule(50) specWarnDeathEnding:ScheduleVoice(50, "runout") else warnDeath:Show(args.destName) end end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 40243 then if self.Options.CrushIcon then self:SetIcon(args.destName, 0) end elseif args.spellId == 40251 then timerDeath:Stop(args.destName) timerVengefulSpirit:Start(args.destName) if args:IsPlayer() then specWarnDeathEnding:Cancel() specWarnDeathEnding:CancelVoice() end end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 40239 then warnIncinerate:Show() elseif args.spellId == 40251 then timerDeathCD:Start() end end ================================================ FILE: DBM-BlackTemple/localization.cn.lua ================================================ -- yleaf(yaroot@gmail.com) -- Mini Dragon(projecteurs@gmail.com) -- Last update: 2017/07/18 if GetLocale() ~= "zhCN" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "高阶督军纳因图斯" }) L:SetMiscLocalization({ HealthInfo = "Health Info" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "苏普雷姆斯" }) L:SetWarningLocalization({ WarnPhase = "%s Phase",--Translate }) L:SetTimerLocalization({ TimerPhase = "Next %s phase"--Translate }) L:SetOptionLocalization({ WarnPhase = "Show warning for next phase", TimerPhase = "Show time for next phase", KiteIcon = "Set icon on Kite target" }) L:SetMiscLocalization({ PhaseTank = "愤怒地击打着地面!",--Check if Backwards PhaseKite = "地面崩裂了!",--Check if Backwards ChangeTarget = "锁定了一个新目标!", Kite = "Kite",--Translate Tank = "Tank"--Translate }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "阿卡玛之影" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "塔隆·血魔" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Ghost : %s"--Translate }) L:SetOptionLocalization({ TimerVengefulSpirit = "Show timer for Ghost durations"--Translate }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "古尔图格·血沸" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "灵魂之匣" }) L:SetWarningLocalization({ WarnMana = "30秒后法力消耗殆尽" }) L:SetTimerLocalization({ TimerMana = "法力吸取" }) L:SetOptionLocalization({ WarnMana = "Show warning from zero mana in Phase 2",--Translate TimerEnrage = "Show timer for Enrage"--Translate }) L:SetMiscLocalization({ Suffering = "Essence of Suffering",--Translate Desire = "Essence of Desire",--Translate Anger = "Essence of Anger",--Translate Phase1End = "I don't want to go back!", Phase2End = "I won't be far!" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "莎赫拉丝主母" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "Show timer for Prismatic Aura" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "伊利达雷议会" }) L:SetGeneralLocalization({ name = "Illidari Council" }) L:SetWarningLocalization({ Immune = "Malande - %s immune for 15 sec" }) L:SetOptionLocalization({ Immune = "Show warning when Manalde becomes spell or melee immune" }) L:SetMiscLocalization({ Gathios = "击碎者加西奥斯", Malande = "女公爵玛兰德", Zerevor = "高阶灵术师塞勒沃尔", Veras = "薇尔莱丝·深影", Melee = "近战", Spell = "法术" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "伊利丹·怒风" }) L:SetWarningLocalization({ WarnHuman = "普通形态", WarnDemon = "恶魔形态" }) L:SetTimerLocalization({ TimerNextHuman = "下一个普通形态", TimerNextDemon = "下一个恶魔形态" }) L:SetOptionLocalization({ WarnHuman = "Show warning for 普通形态", WarnDemon = "Show warning for 恶魔形态", TimerNextHuman = "Show time for 下一个普通形态", TimerNextDemon = "Show time for 下一个恶魔形态", RangeFrame = "为阶段3和阶段4显示10码距离提示" }) L:SetMiscLocalization({ Pull = "阿卡玛。你的两面三刀并没有让我感到意外。我早就应该把你和你那些畸形的同胞全部杀掉。", Eyebeam = "直视背叛者的双眼吧!", Demon = "感受我体内的恶魔之力吧!", Phase4 = "你们就这点本事吗?这就是你们全部的能耐?", S1YouAreNotPrepared = "第一阶段:自寻死路", S2FlamesOfAzzinoth = "第二阶段:埃辛诺斯之焰", S3TheDemonWithin = "第三阶段:心魔", S4TheLongHunt = "第四阶段:漫长的追猎" }) ================================================ FILE: DBM-BlackTemple/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "Oberster Kriegsfürst Naj'entus" }) L:SetMiscLocalization({ HealthInfo = "Gesundheitsinfo" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "Supremus" }) L:SetWarningLocalization({ WarnPhase = "%sphase" }) L:SetTimerLocalization({ TimerPhase = "Nächste %sphase" }) L:SetOptionLocalization({ WarnPhase = "Zeige Warnung für nächste Phase", TimerPhase = "Zeige Zeit bis nächste Phase", KiteIcon = "Setze Zeichen auf das verfolgte Ziel" }) L:SetMiscLocalization({ PhaseTank = "schlägt wütend auf den Boden!", PhaseKite = "Der Boden beginnt aufzubrechen!", ChangeTarget = "wählt ein neues Ziel!", Kite = "Kite", Tank = "Tank" }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "Akamas Schemen" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "Teron Blutschatten" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Geist : %s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "Dauer der Rachsüchtigen Geister anzeigen" }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "Gurtogg Siedeblut" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "Reliquiar der Seelen" }) L:SetWarningLocalization({ WarnMana = "Null Mana in 30 Sek" }) L:SetTimerLocalization({ TimerMana = "Null Mana" }) L:SetOptionLocalization({ WarnMana = "Zeige Warnung für 0 Mana in Phase 2", TimerMana = "Zeige Zeit bis 0 Mana in Phase 2" }) L:SetMiscLocalization({ Suffering = "Essenz des Leidens", Desire = "Essenz der Begierde", Anger = "Essenz des Zorns", Phase1End = "Ich will nicht zurück!", Phase2End = "Ich bin immer in Eurer Nähe!" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "Mutter Shahraz" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "Dauer der Prismatischen Auren anzeigen" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "Der Rat der Illidari" }) L:SetWarningLocalization({ Immune = "Malande - %s für 15 Sek" }) L:SetOptionLocalization({ Immune = "Spezialwarnung, wenn Malande gegen magische oder körperliche Angriffe immun wird" }) L:SetMiscLocalization({ Gathios = "Gathios der Zerschmetterer", Malande = "Lady Malande", Zerevor = "Hochnethermant Zerevor", Veras = "Veras Schwarzschatten", Melee = "Körperliche Immunität", Spell = "Magieimmunität" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "Illidan Sturmgrimm" }) L:SetWarningLocalization({ WarnHuman = "Normalform", WarnDemon = "Dämonenform" }) L:SetTimerLocalization({ TimerNextHuman = "Normalform", TimerNextDemon = "Dämonenform" }) L:SetOptionLocalization({ WarnHuman = "Zeige Warnung für Normalform", WarnDemon = "Zeige Warnung für Dämonenform", TimerNextHuman = "Zeige Zeit bis nächste Normalform", TimerNextDemon = "Zeige Zeit bis nächste Dämonenform", RangeFrame = "Zeige Abstandsfenster (10m) in Phase 3 und 4" }) L:SetMiscLocalization({ Pull = "Akama. Euer falsches Spiel überrascht mich nicht. Ich hätte Euch und Eure missgestalteten Brüder schon vor langer Zeit abschlachten sollen.", Eyebeam = "Blickt in die Augen des Verräters!", Demon = "Erzittert vor der Macht des Dämonen!", Phase4 = "War's das schon, Sterbliche? Ist das alles, was Ihr zu bieten habt?", S1YouAreNotPrepared = "Phase 1: Ihr wisst nicht, was Euch erwartet", S2FlamesOfAzzinoth = "Phase 2: Flammen von Azzinoth", S3TheDemonWithin = "Phase 3: Der innere Dämon", S4TheLongHunt = "Phase 4: Die lange Jagd" }) ================================================ FILE: DBM-BlackTemple/localization.en.lua ================================================ local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "High Warlord Naj'entus" }) L:SetMiscLocalization({ HealthInfo = "Health Info" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "Supremus" }) L:SetWarningLocalization({ WarnPhase = "%s Phase" }) L:SetTimerLocalization({ TimerPhase = "Next %s phase" }) L:SetOptionLocalization({ WarnPhase = "Show warning for next phase", TimerPhase = "Show time for next phase", KiteIcon = "Set icon on Kite target" }) L:SetMiscLocalization({ PhaseTank = "punches the ground in anger!", PhaseKite = "The ground begins to crack open!", ChangeTarget = "acquires a new target", Kite = "Kite", Tank = "Tank" }) ------------------------- -- Shade of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "Shade of Akama" }) L:SetWarningLocalization({ warnAshtongueDefender = "Ashtongue Defender", warnAshtongueSorcerer = "Ashtongue Sorcerer" }) L:SetTimerLocalization({ timerAshtongueDefender = "Ashtongue Defender: %s", timerAshtongueSorcerer = "Ashtongue Sorcerer: %s" }) L:SetOptionLocalization({ warnAshtongueDefender = "Show warning for Ashtongue Defender", warnAshtongueSorcerer = "Show warning for Ashtongue Sorcerer", timerAshtongueDefender = "Show timer for Ashtongue Defender", timerAshtongueSorcerer = "Show timer for Ashtongue Sorcerer" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "Teron Gorefiend" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Ghost : %s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "Show timer for Ghost durations" }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "Gurtogg Bloodboil" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "Essence of Souls" }) L:SetWarningLocalization({ WarnMana = "Zero Mana in 30 sec" }) L:SetTimerLocalization({ TimerMana = "Mana 0" }) L:SetOptionLocalization({ WarnMana = "Show warning from zero mana in Phase 2", TimerMana = "Show timer for zero mana in Phase 2" }) L:SetMiscLocalization({ Suffering = "Essence of Suffering", Desire = "Essence of Desire", Anger = "Essence of Anger", Phase1End = "I don't want to go back!", Phase2End = "I won't be far!" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "Mother Shahraz" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "Show timer for Prismatic Aura" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "Illidari Council" }) L:SetWarningLocalization({ Immune = "Malande - %s immune for 15 sec" }) L:SetOptionLocalization({ Immune = "Show warning when Manalde becomes spell or melee immune" }) L:SetMiscLocalization({ Gathios = "Gathios the Shatterer", Malande = "Lady Malande", Zerevor = "High Nethermancer Zerevor", Veras = "Veras Darkshadow", Melee = "Melee", Spell = "Spell" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "Illidan Stormrage" }) L:SetWarningLocalization({ WarnHuman = "Human Phase", -- WarnDemon = "Demon Phase" }) L:SetTimerLocalization({ TimerNextHuman = "Next Human Phase", -- TimerNextDemon = "Next Demon Phase" }) L:SetOptionLocalization({ WarnHuman = "Show warning for Human Phase", -- WarnDemon = "Show warning for Demon Phase", TimerNextHuman = "Show time for Next Human Phase" -- TimerNextDemon = "Show time for Demon Human Phase" -- RangeFrame = "Show range frame (10 yards) in Phase 3 and 4" }) L:SetMiscLocalization({ Pull = "Akama. Your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago.", PullWarmane = "Akama... your duplicity is hardly surprising. I should have slaughtered you and your malformed brethren long ago.", Eyebeam = "Stare into the eyes of the Betrayer!", Demon = "Behold the power... of the demon within!", Phase4 = "Is this it, mortals? Is this all the fury you can muster?", S1YouAreNotPrepared = "Stage One: You Are Not Prepared", S2FlamesOfAzzinoth = "Stage Two: Flames of Azzinoth", S3TheDemonWithin = "Stage Three: The Demon Within", S4TheLongHunt = "Stage Four: The Long Hunt" }) ================================================ FILE: DBM-BlackTemple/localization.es.lua ================================================ if GetLocale() ~= "esES" or GetLocale() ~= "esMX" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "Gran señor de la guerra Naj'entus" }) L:SetOptionLocalization({ RangeFrame = DBM_CORE_L.AUTO_RANGE_OPTION_TEXT_SHORT:format(8) }) L:SetMiscLocalization({ HealthInfo = "Salud de los jugadores" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "Supremus" }) L:SetWarningLocalization({ WarnPhase = "Fase de %s", WarnKite = "Mirada en >%s<" }) L:SetTimerLocalization({ TimerPhase = "Siguiente fase de %s" }) L:SetOptionLocalization({ WarnPhase = "Anunciar cambios de fase", WarnKite = "Anunciar objetivos de Mirada", TimerPhase = "Mostrar temporizador para los cambios de fase", KiteIcon = "Poner icono en el objetivo de Mirada" }) L:SetMiscLocalization({ PhaseTank = "golpea el suelo enfadado!", PhaseKite = "El suelo comienza a abrirse.", ChangeTarget = "adquiere un nuevo objetivo!", Kite = "persecución", Tank = "tanqueo" }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "Sombra de Akama" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "Teron Sanguino" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Fantasma: %s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "Mostrar temporizador para la duración de la forma de fantasma" }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "Gurtogg Sangre Hirviente" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "Relicario de Almas" }) L:SetWarningLocalization({ WarnMana = "Sin maná en 30 s" }) L:SetTimerLocalization({ TimerMana = "Sin maná" }) L:SetOptionLocalization({ WarnMana = "Mostrar aviso previo para cuando el maná máximo de los jugadores llegue a cero en Fase 2", TimerMana = "Mostrar temporizador para cuando el maná máximo de los jugadores llegue a cero en Fase 2" }) L:SetMiscLocalization({ Suffering = "Esencia de sufrimiento", Desire = "Esencia de deseo", Anger = "Esencia de inquina" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "Madre Shahraz" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "Mostrar temporizador para la siguiente Aura centelleante" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "El Consejo Illidari" }) L:SetWarningLocalization({ Immune = "Malande inmune a %s durante 15 s" }) L:SetOptionLocalization({ Immune = "Mostrar aviso cuando Manalde se vuelva inmune al daño físico o de hechizos" }) L:SetMiscLocalization({ Gathios = "Gathios el Despedazador", Malande = "Lady Malande", Zerevor = "Sumo abisálico Zerevor", Veras = "Veras Sombra Oscura", Melee = "físico", Spell = "hechizos" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "Illidan Tempestira" }) L:SetWarningLocalization({ WarnHuman = "Fase humanoide", WarnDemon = "Fase demoníaca" }) L:SetTimerLocalization({ TimerNextHuman = "Siguiente fase humanoide", TimerNextDemon = "Siguiente fase demoníaca" }) L:SetOptionLocalization({ WarnHuman = "Anunciar cambio a fase humanoide", WarnDemon = "Anunciar cambio a fase demoníaca", TimerNextHuman = "Mostrar temporizador para la siguiente fase humanoide", TimerNextDemon = "Mostrar temporizador para la siguiente fase demoníaca", RangeFrame = "Mostrar marco de distancia (10 m) en las fases 3 y 4" }) L:SetMiscLocalization({ Pull = "Akama. Tu hipocresía no me sorprende. Debí acabar contigo y con tus malogrados hermanos hace tiempo.", Eyebeam = "¡Mirad los ojos del Traidor!", Demon = "¡Observad el poder...del demonio interior!",--sic Phase4 = "¿Esto es todo, mortales? ¿Es esta toda la furia que podéis reunir?", S1YouAreNotPrepared = "Fase 1: No estáis preparados", S2FlamesOfAzzinoth = "Fase 2: Las llamas de Azzinoth", S3TheDemonWithin = "Fase 3: El demonio interior", S4TheLongHunt = "Fase 4: La gran cacería" }) ================================================ FILE: DBM-BlackTemple/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L -- ----------------- -- -- Najentus -- -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "Grand seigneur de guerre Naj'entus" }) L:SetMiscLocalization({ HealthInfo = "Health Info" }) -- ---------------- -- -- Supremus -- -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "Supremus" }) L:SetWarningLocalization({ WarnPhase = "%s Phase" }) L:SetTimerLocalization({ TimerPhase = "Next %s phase" }) L:SetOptionLocalization({ WarnPhase = "Montre une alerte pour la prochaine phase", TimerPhase = "Montre un timer pour la prochaine phase", KiteIcon = "Mettre une icône sur la cible de $spell:41295", }) L:SetMiscLocalization({ PhaseTank = "De rage, Supremus frappe le sol !", PhaseKite = "Le sol commence à se fissurer !", ChangeTarget = "Supremus choisit une nouvelle cible !", Kite = "Kite", Tank = "Tank" }) -- ------------------------- -- -- Shade of Akama -- -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "Ombre d'Akama" }) L:SetWarningLocalization({ warnAshtongueDefender = "Défenseur cendrelangue", warnAshtongueSorcerer = "Sorcier cendrelangue" }) L:SetTimerLocalization({ timerAshtongueDefender = "Défenseur cendrelangue : %s", timerAshtongueSorcerer = "Sorcier cendrelangue : %s" }) L:SetOptionLocalization({ warnAshtongueDefender = "Afficher une alerte pour le Défenseur cendrelangue", warnAshtongueSorcerer = "Afficher une alerte pour le Sorcier cendrelangue", timerAshtongueDefender = "Afficher un timer pour le Défenseur cendrelangue", timerAshtongueSorcerer = "Afficher un timer pour le Sorcier cendrelangue" }) -- ------------------------- -- -- Teron Gorefiend -- -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "Teron Fielsang" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Esprit vengeur : %s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "Afficher un timer pour la durée d'esprit vengeur" }) -- ---------------------------- -- -- Gurtogg Bloodboil -- -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "Gurtogg Fièvresang" }) -- -------------------------- -- -- Essence Of Souls -- -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "Essence des âmes" }) L:SetWarningLocalization({ WarnMana = "Mana à zéro dans 30 sec" }) L:SetTimerLocalization({ TimerMana = "Mana à 0" }) L:SetOptionLocalization({ WarnMana = "Afficher une alerte pour le mana à zéro pendant la phase 2", TimerMana = "Afficher un timer pour le mana à zéro pendant la phase 2" }) L:SetMiscLocalization({ Suffering = "Essence de la souffrance", Desire = "Essence du désir.", Anger = "Essence de la colère", Phase1End = "Je ne veux pas y retourner !", Phase2End = "Je ne serai jamais loin !" }) -- ----------------------- -- -- Mother Shahraz -- -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "Mère Shahraz" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "Afficher un timer pour l'Aura prismatique" }) -- ---------------------- -- -- Illidari Council -- -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "Conseil illidari" }) L:SetWarningLocalization({ Immune = "Malande - %s immunisée pendant 15 sec" }) L:SetOptionLocalization({ Immune = "Afficher une alerte quand Malande devient immunisée aux sorts ou aux attaques" }) L:SetMiscLocalization({ Gathios = "Gathios le Briseur", Malande = "Dame Malande", Zerevor = "Grand néantomancien Zerevor", Veras = "Veras Ombrenoir", Melee = "Melee", Spell = "Spell" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "Illidan Hurlorage" }) L:SetWarningLocalization({ WarnHuman = "Phase humaine" }) L:SetTimerLocalization({ TimerNextHuman = "Prochaine phase humaine" }) L:SetOptionLocalization({ WarnHuman = "Afficher l'avertissement pour la phase humaine", TimerNextHuman = "Afficher l'heure de la prochaine phase humaine" }) L:SetMiscLocalization({ Pull = "Akama. Ta duplicité n'est pas très étonnante. J'aurais dû vous massacrer depuis longtemps, toi et tes frères déformés.", Eyebeam = "Soutenez le regard du Traître !", Demon = "Contemplez la puissance... du démon intérieur !", Phase4 = "C'est tout, mortels ? Est-ce là toute la fureur que vous pouvez évoquer ?", S1YouAreNotPrepared = "Phase 1 : Vous n’êtes pas prêts", S2FlamesOfAzzinoth = "Phase 2 : Les flammes d’Azzinoth", S3TheDemonWithin = "Phase 3 : Le démon intérieur", S4TheLongHunt = "Phase 4 : La longue traque" }) ================================================ FILE: DBM-BlackTemple/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "대장군 나젠투스" }) L:SetMiscLocalization({ HealthInfo = "생명력 정보" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "궁극의 심연" }) L:SetWarningLocalization({ WarnPhase = "%s 단계" }) L:SetTimerLocalization({ TimerPhase = "다음 %s 단계" }) L:SetOptionLocalization({ WarnPhase = "다음 단계 경고 보기", TimerPhase = "다음 단계 타이머 바 보기", KiteIcon = "드리블 대상에 공격대 징표 설정" }) L:SetMiscLocalization({ PhaseTank = "땅이 갈라져서 열리기 시작합니다!", PhaseKite = "분노하여 땅을 내리찍습니다!", ChangeTarget = "새로운 대상이 필요합니다!", Kite = "드리블", Tank = "일반" }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "아카마의 망령" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "테론 고어핀드" }) L:SetTimerLocalization({ TimerVengefulSpirit = "유령 : %s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "유령 지속시간 타이머 바 보기" }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "구르토그 블러드보일" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "영혼의 성물함" }) L:SetWarningLocalization({ WarnMana = "30초 후 마나 0" }) L:SetTimerLocalization({ TimerMana = "마나 0" }) L:SetOptionLocalization({ WarnMana = "2단계에서 마나 0이 되기 30초 전에 경고 보기", TimerMana = "2단계 마나 0 타이머 바 보기" }) L:SetMiscLocalization({ Suffering = "고뇌의 정수", Desire = "욕망의 정수", Anger = "격노의 정수", Phase1End = "나 안 돌아갈래!", Phase2End = "멀리 가진 않겠다!" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "대모 샤라즈" }) L:SetOptionLocalization({ timerAura = "변위의 오라 타이머 바 보기" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "일리다리 의회" }) L:SetWarningLocalization({ Immune = "말란데 - %s 면역 15초" }) L:SetOptionLocalization({ Immune = "말란데가 물리 또는 주문 면역이 되었을 때 특수 경고 보기" }) L:SetMiscLocalization({ Gathios = "파괴자 가디오스", Malande = "여군주 말란데", Zerevor = "고위 황천술사 제레보르", Veras = "베라스 다크섀도", Melee = "물리", Spell = "주문" }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "일리단 스톰레이지" }) L:SetWarningLocalization({ WarnHuman = "인간 단계", WarnDemon = "악마 단계" }) L:SetTimerLocalization({ TimerNextHuman = "다음 인간 단계", TimerNextDemon = "다음 악마 단계" }) L:SetOptionLocalization({ WarnHuman = "인간 단계 경고 보기", WarnDemon = "악마 단계 경고 보기", TimerNextHuman = "다음 인간 단계 타이머 바 보기", TimerNextDemon = "다음 악마 단계 타이머 바 보기", RangeFrame = "3, 4단계에서 거리 창 보기 (10m)" }) L:SetMiscLocalization({ Pull = "아카마, 너의 불충은 그리 놀랍지도 않구나. 너희 흉측한 형제들을 벌써 오래전에 없애버렸어야 했는데...", Eyebeam = "배신자의 눈을 똑바로 쳐다봐라!", Demon = "내 안에 깃든... 악마의 힘을 보여주마!", Phase4 = "필멸의 종족들이여, 나에 대한 증오가 고작 이 정도냐?", S1YouAreNotPrepared = "1단계: 너흰 아직 준비가 안 됐다", S2FlamesOfAzzinoth = "2단계: 아지노스의 불꽃", S3TheDemonWithin = "3단계: 내면의 악마", S4TheLongHunt = "4단계: 기나긴 사냥" }) ================================================ FILE: DBM-BlackTemple/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "Верховный Полководец Надж'ентус" }) L:SetOptionLocalization({ RangeFrame = "Show range frame (10)"--Translate }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "Супремус" }) L:SetWarningLocalization({ WarnPhase = "%s Phase",--Translate WarnPhaseSoon = "%s Phase in 10",--Translate WarnKite = "Gaze on >%s<"--Translate }) L:SetTimerLocalization({ TimerPhase = "Next %s phase"--Translate }) L:SetOptionLocalization({ WarnPhase = "Show warning for next phase",--Translate WarnPhaseSoon = "Show pre-warning for next phase",--Translate WarnKite = "Announce Kite targets",--Translate TimerPhase = "Show time for next phase",--Translate KiteIcon = "Set icon on Kite target",--Translate KiteWhisper = "Send whisper to Kite target (requires Raid Leader)"--Translate }) L:SetMiscLocalization({ PhaseTank = "в гневе ударяет по земле!",--Check if Backwards PhaseKite = "Земля начинает раскалываться!",--Check if Backwards ChangeTarget = "атакует новую цель!", Kite = "Kite",--Translate Tank = "Tank"--Translate }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "Тень Акамы" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "Терон Кровожад" }) L:SetTimerLocalization({ TimerVengefulSpirit = "Ghost : %s"--Translate }) L:SetOptionLocalization({ TimerVengefulSpirit = "Show timer for Ghost durations"--Translate }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "Гуртогг Кипящая Кровь" }) L:SetWarningLocalization({ WarnRageEnd = "Fel Rage End",--Translate }) L:SetTimerLocalization({ TimerRageEnd = "Fel Rage End"--Translate }) L:SetOptionLocalization({ WarnRageEnd = "Show warning for $spell:40604 ends",--Translate TimerRageEnd = "Show timer for $spell:40604 ends"--Translate }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "Воплощение Душ" }) L:SetWarningLocalization({ WarnEnrage = "Озверение", WarnEnrageSoon = "Озверение скоро", WarnEnrageEnd = "Озверение закончилось", WarnMana = "Ноль маны через 30 сек" }) L:SetTimerLocalization({ TimerEnrage = "Озверение", TimerNextEnrage = "Next Озверение",--Translate TimerMana = "Mana 0"--Translate }) L:SetOptionLocalization({ WarnEnrage = "Show warning for Enrage",--Translate WarnEnrageSoon = "Show pre-warning for Enrage",--Translate WarnEnrageEnd = "Show warning when Enrage ends",--Translate WarnMana = "Show warning from zero mana in Phase 2",--Translate TimerEnrage = "Show timer for Enrage",--Translate TimerNextEnrage = "Show timer for next Enrage",--Translate TimerMana = "Show timer for zero mana in Phase 2",--Translate SpiteWhisper = "Send whisper to $spell:41376 targets (requires Raid Leader)"--Translate }) L:SetMiscLocalization({ Enrage = "%s впадает в ярость!", SpiteWhisper = "Злоба на Вас!", Suffering = "Essence of Suffering",--Translate Desire = "Essence of Desire",--Translate Anger = "Essence of Anger"--Translate }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "Матушка Шахраз" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "Совет Иллидари" }) L:SetWarningLocalization({ WarnFadeSoon = "Vanish fades in 5 sec",--Translate WarnFaded = "Vanish faded",--Translate WarnDevAura = "Devotion Aura for 30 sec",--Translate WarnResAura = "Resistance Aura for 30 sec",--Translate Immune = "Malande - %s immune for 15 sec"--Translate }) L:SetOptionLocalization({ WarnFadeSoon = "Show warning 5 seconds before $spell:41476 fades",--Translate WarnFaded = "Show warning when $spell:41476 fades",--Translate WarnDevAura = "Show warning for $spell:41452",--Translate WarnResAura = "Show warning for $spell:41453",--Translate Immune = "Show warning when Manalde becomes spell or melee immune"--Translate }) L:SetMiscLocalization({ Gathios = "Гатиос Изувер", Malande = "Леди Маланда", Zerevor = "Верховный пустомант Зеревор", Veras = "Верас Глубокий Мрак", Melee = "Melee",--Translate Spell = "Spell",--Translate PoisonWhisper = "Deadly Poison on you!"--Translate }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "Иллидан Ярость Бури" }) L:SetWarningLocalization({ WarnPhase2Soon = "Фаза 2 скоро", WarnPhase4Soon = "Фаза 4 скоро", WarnHuman = "Обычная Фаза", WarnHumanSoon = "Обычная Фаза скоро", WarnDemon = "Демона Фаза", WarnDemonSoon = "Демона Фаза скоро" }) L:SetTimerLocalization({ TimerNextHuman = "Next Обычная Фаза",--Translate TimerNextDemon = "Next Демона Фаза"--Translate }) L:SetOptionLocalization({ WarnPhase2Soon = "Show pre-warning for Phase 2 transition (at ~75%)",--Translate WarnPhase4Soon = "Show pre-warning for Phase 4 transition (at ~35%)",--Translate WarnHuman = "Show warning for Human Phase",--Translate WarnHumanSoon = "Show pre-warning for Human Phase",--Translate WarnDemon = "Show warning for Demon Phase",--Translate WarnDemonSoon = "Show pre-warning for Demon Phase",--Translate TimerNextHuman = "Show time for Next Human Phase",--Translate TimerNextDemon = "Show time for Demon Human Phase",--Translate RangeFrame = "Show range frame (10 yards) in Phase 3 and 4"--Translate }) L:SetMiscLocalization({ Pull = "Акама! Твое двуличие меня не удивляет. Мне давным-давно стоило уничтожить тебя и твоих уродливых собратьев.", Eyebeam = "Посмотри в глаза Предателя!", Demon = "Узрите мощь демона!", Phase4 = "Это все, смертные? Это и есть вся ваша ярость?", S1YouAreNotPrepared = "Stage One: You Are Not Prepared", S2FlamesOfAzzinoth = "Stage Two: Flames of Azzinoth", S3TheDemonWithin = "Stage Three: The Demon Within", S4TheLongHunt = "Stage Four: The Long Hunt" }) ================================================ FILE: DBM-BlackTemple/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L ----------------- -- Najentus -- ----------------- L = DBM:GetModLocalization("Najentus") L:SetGeneralLocalization({ name = "高階督軍納珍塔斯" }) L:SetMiscLocalization({ HealthInfo = "血量資訊" }) ---------------- -- Supremus -- ---------------- L = DBM:GetModLocalization("Supremus") L:SetGeneralLocalization({ name = "瑟普莫斯" }) L:SetWarningLocalization({ WarnPhase = "%s階段" }) L:SetTimerLocalization({ TimerPhase = "下一次%s階段" }) L:SetOptionLocalization({ WarnPhase = "為下個階段顯示警告", TimerPhase = "為下個階段顯示計時器", KiteIcon = "為注視目標設置圖示", }) L:SetMiscLocalization({ PhaseTank = "瑟普莫斯憤怒的捶擊地面!",--Check if Backwards PhaseKite = "地上開始裂開!",--Check if Backwards ChangeTarget = "瑟普莫斯需要一個新目標!", Kite = "風箏", Tank = "坦克" }) ------------------------- -- Shape of Akama -- ------------------------- L = DBM:GetModLocalization("Akama") L:SetGeneralLocalization({ name = "阿卡瑪的黑暗面" }) ------------------------- -- Teron Gorefiend -- ------------------------- L = DBM:GetModLocalization("TeronGorefiend") L:SetGeneralLocalization({ name = "泰朗·血魔" }) L:SetTimerLocalization({ TimerVengefulSpirit = "鬼魂:%s" }) L:SetOptionLocalization({ TimerVengefulSpirit = "為鬼魂持續時間顯示計時器" }) ---------------------------- -- Gurtogg Bloodboil -- ---------------------------- L = DBM:GetModLocalization("Bloodboil") L:SetGeneralLocalization({ name = "葛塔格·血沸" }) -------------------------- -- Essence Of Souls -- -------------------------- L = DBM:GetModLocalization("Souls") L:SetGeneralLocalization({ name = "靈魂聖匣" }) L:SetWarningLocalization({ WarnMana = "30秒後法力用盡" }) L:SetTimerLocalization({ TimerMana = "法力耗盡" }) L:SetOptionLocalization({ WarnMana = "在第二階段耗盡法力顯示警告", TimerMana = "在第二階段法力耗盡顯示計時器" }) L:SetMiscLocalization({ Suffering = "受難精華", Desire = "慾望精華", Anger = "憤怒精華", Phase1End = "I don't want to go back!", Phase2End = "I won't be far!" }) ----------------------- -- Mother Shahraz -- ----------------------- L = DBM:GetModLocalization("Shahraz") L:SetGeneralLocalization({ name = "薩拉茲女士" }) L:SetTimerLocalization({ timerAura = "%s" }) L:SetOptionLocalization({ timerAura = "為稜石光環顯示計時器" }) ---------------------- -- Illidari Council -- ---------------------- L = DBM:GetModLocalization("Council") L:SetGeneralLocalization({ name = "伊利達瑞議會" }) L:SetWarningLocalization({ Immune = "瑪蘭黛 - %s免疫15秒" }) L:SetOptionLocalization({ Immune = "當瑪蘭黛法術或物理免疫時顯示警告", }) L:SetMiscLocalization({ Gathios = "粉碎者高希歐", Malande = "瑪蘭黛女士", Zerevor = "高等虛空術師札瑞佛", Veras = "維拉斯·深影", Melee = "物理", Spell = "法術", }) ------------------------- -- Illidan Stormrage -- ------------------------- L = DBM:GetModLocalization("Illidan") L:SetGeneralLocalization({ name = "伊利丹·怒風" }) L:SetWarningLocalization({ WarnHuman = "人形階段即將到來", WarnDemon = "惡魔階段" }) L:SetTimerLocalization({ TimerNextHuman = "人形階段", TimerNextDemon = "惡魔階段" }) L:SetOptionLocalization({ WarnHuman = "為人形階段顯示警告", WarnDemon = "為惡魔階段顯示計時器", TimerNextHuman = "為下一次人形階段顯示計時器", TimerNextDemon = "為下一次惡魔階段顯示計時器", RangeFrame = "為第3和第4階段顯示距離框架(10碼)" }) L:SetMiscLocalization({ Pull = "阿卡瑪。你的謊言真是老套。我很久前就應該殺了你和你那些畸形的同胞。", Eyebeam = "直視背叛者的雙眼吧!", Demon = "感受我體內的惡魔之力吧!", Phase4 = "你們就這點本事嗎?這就是你們全部的能耐?", S1YouAreNotPrepared = "階段一:你們還沒準備好", S2FlamesOfAzzinoth = "階段二:埃辛諾斯火焰", S3TheDemonWithin = "階段三:體內的惡魔", S4TheLongHunt = "階段四:長久的狩獵" }) ================================================ FILE: DBM-ChamberOfAspects/DBM-ChamberOfAspects.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Chamber of Aspects|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Kammer der Aspekte|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Палата Аспектов|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0守護巨龍之間|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0龙神之厅|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0흑요석 성소|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Chambre des Aspects|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Cámara de los Aspectos|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMChamberOfAspects_AllSavedVars ## SavedVariablesPerCharacter: DBMChamberOfAspects_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Type: RAID ## X-DBM-Mod-Category: WOTLK ## X-DBM-StatTypes: normal,normal25,heroic,heroic25 ## X-DBM-Mod-SubCategories: The Obsidian Sanctum, The Ruby Sanctum ## X-DBM-Mod-SubCategories-deDE: Das Obsidiansanktum, Das Rubinsanktum ## X-DBM-Mod-SubCategories-ruRU: Обсидиановое святилище, Рубиновое святилище ## X-DBM-Mod-SubCategories-zhTW: 黑曜聖所, 晶紅聖所 ## X-DBM-Mod-SubCategories-zhCN: 黑曜石圣殿, 红玉圣殿 ## X-DBM-Mod-SubCategories-koKR: 흑요석 성소, 루비 성소 ## X-DBM-Mod-SubCategories-frFR: Le sanctum Obsidien,Le sanctum Rubis ## X-DBM-Mod-SubCategories-esES: El Sagrario Obsidiana, El Sagrario Rubí ## X-DBM-Mod-SubCategories-esMX: El Sagrario Obsidiana, El Sagrario Rubí ## X-DBM-Mod-Name: Chamber of Aspects ## X-DBM-Mod-Name-deDE: Kammer der Aspekte ## X-DBM-Mod-Name-ruRU: Палата Аспектов ## X-DBM-Mod-Name-zhTW: 守護巨龍之間 ## X-DBM-Mod-Name-zhCN: 龙神之厅 ## X-DBM-Mod-Name-koKR: 고룡쉼터 사원 ## X-DBM-Mod-Name-frFR : Chambre des aspects ## X-DBM-Mod-Name-esES: Cámara de los Aspectos ## X-DBM-Mod-Name-esMX: Cámara de los Aspectos ## X-DBM-Mod-Sort: 1 ## X-DBM-Mod-MapID: 532,610 ## X-DBM-Mod-LoadZone: The Obsidian Sanctum,The Ruby Sanctum ## X-DBM-Mod-LoadZone-deDE: Das Obsidiansanktum,Das Rubinsanktum ## X-DBM-Mod-LoadZone-ruRU: Обсидиановое святилище,Рубиновое святилище ## X-DBM-Mod-LoadZone-zhTW: 黑曜聖所, 晶紅聖所 ## X-DBM-Mod-LoadZone-zhCN: 黑曜石圣殿, 红玉圣殿 ## X-DBM-Mod-LoadZone-koKR: 흑요석 성소,루비 성소 ## X-DBM-Mod-LoadZone-frFR: Le sanctum Obsidien,Le sanctum Rubis ## X-DBM-Mod-LoadZone-esES: El Sagrario Obsidiana,El Sagrario Rubí ## X-DBM-Mod-LoadZone-esMX: El Sagrario Obsidiana,El Sagrario Rubí localization.en.lua localization.de.lua localization.ru.lua localization.tw.lua localization.kr.lua localization.fr.lua localization.es.lua localization.cn.lua Obsidian\Shadron.lua Obsidian\Tenebron.lua Obsidian\Vesperon.lua Obsidian\Sartharion.lua Ruby\Baltharus.lua Ruby\Saviana.lua Ruby\Zarithrian.lua Ruby\Halion.lua ================================================ FILE: DBM-ChamberOfAspects/Obsidian/Sartharion.lua ================================================ local mod = DBM:NewMod("Sartharion", "DBM-ChamberOfAspects", 1) local L = mod:GetLocalizedStrings() mod.statTypes = "normal,normal25" mod:SetRevision("20250929220131") mod:SetCreatureID(28860) mod:SetEncounterID(742) --mod:RegisterCombat("combat") -- Don't use IEEU, because on Warmane 3 Drakes, Sartharion NOT is engaged first, but Tenebron > Shadron > Vesperon > Sartharion (Sartharion will end up on boss1). -- "<15.29 22:46:09> [CHAT_MSG_MONSTER_YELL] It is my charge to watch over these eggs. I will see you burn before any harm comes to them!:Sartharion:::::0:0::0:6450::0:", -- [120] -- "<15.30 22:46:09> [CLEU] SPELL_CAST_SUCCESS:0xF1300076F4000109:Tenebron:0x0000000000000000:nil:61248:Power of Tenebron:nil:nil:", -- [121] -- "<15.30 22:46:09> [DBM_Debug] INSTANCE_ENCOUNTER_ENGAGE_UNIT event fired for zoneId532:3:", -- [122] -- "<15.30 22:46:09> [DBM_Debug] StartCombat called by : IEEU for mod : Tenebron. LastInstanceMapID is 532:nil:", -- [123] -- "<15.30 22:46:09> [DBM_Pull] Tenebron:0:nil:100:", -- [124] -- "<15.30 22:46:09> [DBM_Debug] DBMv4-Pull 0 Tenebron 20220806121300 100 20221004114721 20220805000000 IEEU:3:", -- [125] -- "<15.30 22:46:09> [INSTANCE_ENCOUNTER_ENGAGE_UNIT] Fake Args::boss1:1:1:1:Tenebron:30452:0xF1300076F4000109:worldboss:1337325:boss2:nil:nil:nil:??:1:nil:normal:0:boss3:nil:nil:nil:??:1:nil:normal:0:boss4:nil:nil:nil:??:1:nil:normal:0:boss5:nil:nil:nil:??:1:nil:normal:0:Real Args::", -- [126] -- "<15.30 22:46:09> [CLEU] SPELL_CAST_SUCCESS:0xF1300076F300010A:Shadron:0x0000000000000000:nil:58105:Power of Shadron:nil:nil:", -- [127] -- "<15.30 22:46:09> [DBM_Debug] INSTANCE_ENCOUNTER_ENGAGE_UNIT event fired for zoneId532:3:", -- [128] -- "<15.30 22:46:09> [INSTANCE_ENCOUNTER_ENGAGE_UNIT] Fake Args::boss1:1:1:1:Tenebron:30452:0xF1300076F4000109:worldboss:1337325:boss2:1:1:1:Shadron:30451:0xF1300076F300010A:worldboss:1337325:boss3:nil:nil:nil:??:1:nil:normal:0:boss4:nil:nil:nil:??:1:nil:normal:0:boss5:nil:nil:nil:??:1:nil:normal:0:Real Args::", -- [129] -- "<15.30 22:46:09> [DBM_Debug] INSTANCE_ENCOUNTER_ENGAGE_UNIT event fired for zoneId532:3:", -- [130] -- "<15.30 22:46:09> [INSTANCE_ENCOUNTER_ENGAGE_UNIT] Fake Args::boss1:1:1:1:Tenebron:30452:0xF1300076F4000109:worldboss:1337325:boss2:1:1:1:Shadron:30451:0xF1300076F300010A:worldboss:1337325:boss3:1:1:1:Vesperon:30449:0xF1300076F100010B:worldboss:1337325:boss4:nil:nil:nil:??:1:nil:normal:0:boss5:nil:nil:nil:??:1:nil:normal:0:Real Args::", -- [131] -- "<15.30 22:46:09> [UNIT_SPELLCAST_SUCCEEDED] Vesperon(??) -Power of Vesperon- [[boss3:Power of Vesperon::0:]]", -- [132] -- "<15.30 22:46:09> [CLEU] SPELL_CAST_SUCCESS:0xF1300076F100010B:Vesperon:0x0000000000000000:nil:61251:Power of Vesperon:nil:nil:", -- [133] -- "<15.30 22:46:09> [UNIT_SPELLCAST_SUCCEEDED] Sartharion(Sanarticon) -Will of Sartharion- [[target:Will of Sartharion::0:]]", -- [134] -- "<15.30 22:46:09> [CLEU] SPELL_CAST_SUCCESS:0xF1300070BC000062:Sartharion:0x0000000000000000:nil:61254:Will of Sartharion:nil:nil:", -- [135] -- "<15.30 22:46:09> [DBM_Debug] INSTANCE_ENCOUNTER_ENGAGE_UNIT event fired for zoneId532:3:", -- [136] -- "<15.30 22:46:09> [DBM_Debug] StartCombat called by : IEEU for mod : Sartharion. LastInstanceMapID is 532:nil:", -- [137] -- "<15.30 22:46:09> [DBM_Pull] Sartharion:0:nil:100:", -- [138] -- "<15.30 22:46:09> [DBM_TimerStart] Timer43113next:Next Fire Wall:30:Interface\\Icons\\Spell_Fire_MoltenBlood:next:43113:2:Sartharion:nil:nil:Fire Wall:nil:", -- [139] -- "<15.30 22:46:09> [DBM_TimerStart] Timer58956cd:Flame Breath CD:10:Interface\\Icons\\Spell_Fire_Fire:cd:58956:5:Sartharion:nil:nil:Flame Breath:nil:", -- [140] -- "<15.30 22:46:09> [DBM_Debug] DBMv4-Pull 0 Sartharion 20220925145940 100 20221004114721 0 IEEU:3:", -- [141] -- "<15.30 22:46:09> [INSTANCE_ENCOUNTER_ENGAGE_UNIT] Fake Args::boss1:1:1:1:Sartharion:28860:0xF1300070BC000062:worldboss:4392675:boss2:1:1:1:Tenebron:30452:0xF1300076F4000109:worldboss:1337325:boss3:1:1:1:Shadron:30451:0xF1300076F300010A:worldboss:1337325:boss4:1:1:1:Vesperon:30449:0xF1300076F100010B:worldboss:1337325:boss5:nil:nil:nil:??:1:nil:normal:0:Real Args::", -- [142] mod:RegisterCombat("yell", L.YellSarthPull) mod:RegisterEventsInCombat( "SPELL_CAST_START 56908 58956", "SPELL_CAST_SUCCESS 57579 59127", "SPELL_AURA_APPLIED 57491", "SPELL_DAMAGE 59128", "CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_MONSTER_EMOTE" ) local warnShadowFissure = mod:NewSpellAnnounce(59127, 4, nil, nil, nil, nil, nil, 2) local warnBreathSoon = mod:NewSoonAnnounce(58956, 2, nil, "Tank|Healer") local warnTenebron = mod:NewAnnounce("WarningTenebron", 2, 61248) local warnShadron = mod:NewAnnounce("WarningShadron", 2, 58105) local warnVesperon = mod:NewAnnounce("WarningVesperon", 2, 61251) local warnTenebronWhelpsSoon = mod:NewAnnounce("WarningWhelpsSoon", 1, 1022, false) local warnShadronPortalSoon = mod:NewAnnounce("WarningPortalSoon", 1, 11420, false) local warnVesperonPortalSoon = mod:NewAnnounce("WarningReflectSoon", 1, 57988, false) local specWarnFireWall = mod:NewSpecialWarning("WarningFireWall", nil, nil, nil, 2, 2) local specWarnVesperonPortal = mod:NewSpecialWarning("WarningVesperonPortal", false, nil, nil, 1, 7) local specWarnTenebronPortal = mod:NewSpecialWarning("WarningTenebronPortal", false, nil, nil, 1, 7) local specWarnShadronPortal = mod:NewSpecialWarning("WarningShadronPortal", false, nil, nil, 1, 7) local timerShadowFissure = mod:NewCastTimer(5, 59128, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) --Cast timer until Void Blast. it's what happens when shadow fissure explodes. local timerBreath = mod:NewCDTimer(10, 58956, nil, "Tank|Healer", nil, 5) -- REVIEW! ~1s variance? (25N Lordaeron 2022/09/23) - 10.4, 11.4, 10.4, 10.1 local timerWall = mod:NewNextTimer(30, 43113, nil, nil, nil, 2) -- (25N Lordaeron 2022/09/23) - pull:30.0, 30.0 local timerTenebron = mod:NewTimer(30, "TimerTenebron", 61248, nil, nil, 1) local timerShadron = mod:NewTimer(80, "TimerShadron", 58105, nil, nil, 1) local timerVesperon = mod:NewTimer(120, "TimerVesperon", 61251, nil, nil, 1) local timerTenebronWhelps = mod:NewTimer(60, "TimerTenebronWhelps", 1022) local timerShadronPortal = mod:NewTimer(94, "TimerShadronPortal", 11420) local timerVesperonPortal = mod:NewTimer(139, "TimerVesperonPortal", 57988) local timerVesperonPortal2 = mod:NewTimer(199, "TimerVesperonPortal2", 57988) -- what's the purpose of this? mod:AddBoolOption("AnnounceFails", true, "announce") mod:GroupSpells(59127, 59128)--Shadow fissure with void blast local lastvoids = {} local lastfire = {} local tsort, tinsert, twipe = table.sort, table.insert, table.wipe local function isunitdebuffed(spellName) for uId in DBM:GetGroupMembers() do local debuff = DBM:UnitDebuff(uId, spellName) if debuff then return true end end return false end local function CheckDrakes(self, delay) if self.Options.HealthFrame then DBM.BossHealth:Show(L.name) DBM.BossHealth:AddBoss(28860, "Sartharion") end if isunitdebuffed(DBM:GetSpellInfo(61248)) then -- Power of Tenebron timerTenebron:Start(26 - delay) -- 30 warnTenebron:Schedule(21 - delay) -- 25 timerTenebronWhelps:Start(- delay) warnTenebronWhelpsSoon:Schedule(55 - delay) if self.Options.HealthFrame then DBM.BossHealth:AddBoss(30452, "Tenebron") end end if isunitdebuffed(DBM:GetSpellInfo(58105)) then -- Power of Shadron timerShadron:Start(74 - delay) -- 75 warnShadron:Schedule(69 - delay) -- 70 timerShadronPortal:Start(- delay) warnShadronPortalSoon:Schedule(89 - delay) if self.Options.HealthFrame then DBM.BossHealth:AddBoss(30451, "Shadron") end end if isunitdebuffed(DBM:GetSpellInfo(61251)) then -- Power of Vesperon timerVesperon:Start(119 - delay) -- 120 warnVesperon:Schedule(114 - delay) -- 115 timerVesperonPortal:Start(- delay) timerVesperonPortal2:Start(- delay) warnVesperonPortalSoon:Schedule(134 - delay) warnVesperonPortalSoon:Schedule(194 - delay) if self.Options.HealthFrame then DBM.BossHealth:AddBoss(30449, "Vesperon") end end end local sortedFails = {} local function sortFails1(e1, e2) return (lastvoids[e1] or 0) > (lastvoids[e2] or 0) end local function sortFails2(e1, e2) return (lastfire[e1] or 0) > (lastfire[e2] or 0) end function mod:OnCombatStart(delay) --Cache spellnames so a solo player check doesn't fail in CheckDrakes in 8.0+ self:Schedule(5, CheckDrakes, self, delay) timerWall:Start(-delay) warnBreathSoon:Schedule(5-delay) timerBreath:Start(-delay) -- REVIEW! variance? (25N Lordaeron 2022/09/23) - pull:11.0 twipe(lastvoids) twipe(lastfire) end function mod:OnCombatEnd() if not self.Options.AnnounceFails then return end if DBM:GetRaidRank() < 1 or not self.Options.Announce then return end local voids = "" for k, _ in pairs(lastvoids) do tinsert(sortedFails, k) end tsort(sortedFails, sortFails1) for _, v in ipairs(sortedFails) do voids = voids.." "..v.."("..(lastvoids[v] or "")..")" end SendChatMessage(L.VoidZones:format(voids), "RAID") twipe(sortedFails) local fire = "" for k, _ in pairs(lastfire) do tinsert(sortedFails, k) end tsort(sortedFails, sortFails2) for _, v in ipairs(sortedFails) do fire = fire.." "..v.."("..(lastfire[v] or "")..")" end SendChatMessage(L.FireWalls:format(fire), "RAID") twipe(sortedFails) end function mod:SPELL_CAST_START(args) if args:IsSpellID(56908, 58956) then -- Flame breath warnBreathSoon:Schedule(5) timerBreath:Start() end end function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(57579, 59127) then warnShadowFissure:Show() warnShadowFissure:Play("watchstep") timerShadowFissure:Start() end end function mod:SPELL_AURA_APPLIED(args) if self.Options.AnnounceFails and self.Options.Announce and args.spellId == 57491 and DBM:GetRaidRank() >= 1 and DBM:GetRaidUnitId(args.destName) ~= "none" and args.destName then lastfire[args.destName] = (lastfire[args.destName] or 0) + 1 SendChatMessage(L.FireWallOn:format(args.destName), "RAID") end end function mod:SPELL_DAMAGE(_, _, _, _, destName, _, spellId) if self.Options.AnnounceFails and self.Options.Announce and spellId == 59128 and DBM:GetRaidRank() >= 1 and DBM:GetRaidUnitId(destName) ~= "none" and destName then lastvoids[destName] = (lastvoids[destName] or 0) + 1 SendChatMessage(L.VoidZoneOn:format(destName), "RAID") end end function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, mob) if msg == L.Wall or msg:find(L.Wall) then self:SendSync("FireWall") elseif msg == L.Portal or msg:find(L.Portal) then if mob == L.NameVesperon then self:SendSync("VesperonPortal") elseif mob == L.NameTenebron then self:SendSync("TenebronPortal") elseif mob == L.NameShadron then self:SendSync("ShadronPortal") end end end mod.CHAT_MSG_MONSTER_EMOTE = mod.CHAT_MSG_RAID_BOSS_EMOTE function mod:OnSync(event) if event == "FireWall" then timerWall:Start() specWarnFireWall:Show() specWarnFireWall:Play("watchwave") elseif event == "VesperonPortal" then specWarnVesperonPortal:Show() specWarnVesperonPortal:Play("newportal") elseif event == "TenebronPortal" then specWarnTenebronPortal:Show() specWarnTenebronPortal:Play("newportal") elseif event == "ShadronPortal" then specWarnShadronPortal:Show() specWarnShadronPortal:Play("newportal") end end ================================================ FILE: DBM-ChamberOfAspects/Obsidian/Shadron.lua ================================================ local mod = DBM:NewMod("Shadron", "DBM-ChamberOfAspects", 1) local L = mod:GetLocalizedStrings() mod.statTypes = "normal,normal25" mod:SetRevision("20250929220131") mod:SetCreatureID(30451) mod:SetEncounterID(738) mod:SetHotfixNoticeRev(20221012000000) mod:SetMinSyncRevision(20221012000000) mod:DisableMultiBossPulls() --mod:RegisterCombat("combat") -- Don't use IEEU, because on Warmane 3 Drakes, Sartharion NOT is engaged first, but Tenebron > Shadron > Vesperon > Sartharion (Sartharion will end up on boss1). mod:RegisterCombat("yell", L.YellShadronPull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 57579 59127" ) local warnShadowFissure = mod:NewSpellAnnounce(59127, 4, nil, nil, nil, nil, 2) local timerShadowFissure = mod:NewCastTimer(5, 59128, nil, nil, nil, 3)--Cast timer until Void Blast. it's what happens when shadow fissure explodes. mod:GroupSpells(59127, 59128)--Shadow fissure with void blast function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(57579, 59127) then warnShadowFissure:Show() warnShadowFissure:Play("watchstep") timerShadowFissure:Start() end end ================================================ FILE: DBM-ChamberOfAspects/Obsidian/Tenebron.lua ================================================ local mod = DBM:NewMod("Tenebron", "DBM-ChamberOfAspects", 1) local L = mod:GetLocalizedStrings() mod.statTypes = "normal,normal25" mod:SetRevision("20250929220131") mod:SetCreatureID(30452) mod:SetEncounterID(736) mod:SetHotfixNoticeRev(20221012000000) mod:SetMinSyncRevision(20221012000000) mod:DisableMultiBossPulls() --mod:RegisterCombat("combat") -- Don't use IEEU, because on Warmane 3 Drakes, Sartharion NOT is engaged first, but Tenebron > Shadron > Vesperon > Sartharion (Sartharion will end up on boss1). mod:RegisterCombat("yell", L.YellTenebronPull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 57579 59127" ) local warnShadowFissure = mod:NewSpellAnnounce(59127, 4, nil, nil, nil, nil, 2) local timerShadowFissure = mod:NewCastTimer(5, 59128, nil, nil, nil, 3)--Cast timer until Void Blast. it's what happens when shadow fissure explodes. mod:GroupSpells(59127, 59128)--Shadow fissure with void blast function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(57579, 59127) then warnShadowFissure:Show() warnShadowFissure:Play("watchstep") timerShadowFissure:Start() end end ================================================ FILE: DBM-ChamberOfAspects/Obsidian/Vesperon.lua ================================================ local mod = DBM:NewMod("Vesperon", "DBM-ChamberOfAspects", 1) local L = mod:GetLocalizedStrings() mod.statTypes = "normal,normal25" mod:SetRevision("20250929220131") mod:SetCreatureID(30449) mod:SetEncounterID(740) mod:SetHotfixNoticeRev(20221012000000) mod:SetMinSyncRevision(20221012000000) mod:DisableMultiBossPulls() --mod:RegisterCombat("combat") -- Don't use IEEU, because on Warmane 3 Drakes, Sartharion NOT is engaged first, but Tenebron > Shadron > Vesperon > Sartharion (Sartharion will end up on boss1). mod:RegisterCombat("yell", L.YellVesperonPull) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 57579 59127" ) local warnShadowFissure = mod:NewSpellAnnounce(59127, 4, nil, nil, nil, nil, 2) local timerShadowFissure = mod:NewCastTimer(5, 59128, nil, nil, nil, 3)--Cast timer until Void Blast. it's what happens when shadow fissure explodes. mod:GroupSpells(59127, 59128)--Shadow fissure with void blast function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(57579, 59127) then warnShadowFissure:Show() warnShadowFissure:Play("watchstep") timerShadowFissure:Start() end end ================================================ FILE: DBM-ChamberOfAspects/Ruby/Baltharus.lua ================================================ local mod = DBM:NewMod("Baltharus", "DBM-ChamberOfAspects", 2) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(39751) mod:SetEncounterID(890) mod:SetUsedIcons(1, 2, 3, 4, 5, 6, 7, 8) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 74509", "SPELL_AURA_APPLIED 75125 74505", "INSTANCE_ENCOUNTER_ENGAGE_UNIT", "UNIT_HEALTH boss1" ) local warningSplitSoon = mod:NewAnnounce("WarningSplitSoon", 2) local warnWhirlwind = mod:NewSpellAnnounce(75125, 3, nil, "Tank|Healer") local warningWarnBrand = mod:NewTargetAnnounce(74505, 4) local specWarnBrand = mod:NewSpecialWarningYou(74505, nil, nil, nil, 3, 2) local specWarnRepellingWave = mod:NewSpecialWarningSpell(74509, nil, nil, nil, 2, 2) local timerWhirlwind = mod:NewBuffActiveTimer(4, 75125, nil, "Tank|Healer", nil, 3) local timerRepellingWave = mod:NewCastTimer(4, 74509, nil, nil, nil, 2)--1 second cast + 3 second stun local timerBrand = mod:NewBuffActiveTimer(10, 74505, nil, nil, nil, 5) local timerBladeTempest = mod:NewCDCountTimer("d24", 75125, nil, nil, 5) -- String timer starting with "d" means "allowDouble". REVIEW! ~1s variance? (boss1 timers: 25N Lordaeron 2022-09-19 || 25H Lordaeron 2022-09-23) - "Blade Tempest-75125-npc:39751-2 = pull:15.0, 25.2, 24.0, 25.2" || "Blade Tempest-75125-npc:39751-2 = pull:15.0, 25.2, 25.2" mod:AddRangeFrameOption(12, 74505) mod:AddSetIconOption("SetIconOnBrand", 74505, false, false, {1, 2, 3, 4, 5, 6, 7, 8}) mod.vb.warnedSplit1 = false mod.vb.warnedSplit2 = false mod.vb.warnedSplit3 = false local brandTargets = {} mod.vb.brandIcon = 8 mod.vb.allClonesSpawned = false local bossGUIDs = {} local function showBrandWarning(self) warningWarnBrand:Show(table.concat(brandTargets, "<, >")) table.wipe(brandTargets) self.vb.brandIcon = 8 end function mod:OnCombatStart(delay) self.vb.warnedSplit1 = false self.vb.warnedSplit2 = false self.vb.warnedSplit3 = false table.wipe(brandTargets) table.wipe(bossGUIDs) self.vb.brandIcon = 8 self.vb.allClonesSpawned = false timerBladeTempest:Start(15-delay, 1, UnitGUID("boss1")) -- REVIEW! (25N Lordaeron 2022-09-19 || 25H Lordaeron 2022-09-23) - 15.0 || 15.0 if self.Options.RangeFrame then DBM.RangeCheck:Show(12) end end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end function mod:SPELL_CAST_START(args) if args.spellId == 74509 then specWarnRepellingWave:Show() specWarnRepellingWave:Play("carefly") timerRepellingWave:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 75125 then if not tContains(bossGUIDs, args.destGUID) then tinsert(bossGUIDs, args.destGUID) end -- add boss to table by its first cast, checking for duplicates and preserving index to match bossN local bossN = DBM:tIndexOf(bossGUIDs, args.destGUID) warnWhirlwind:Show() timerWhirlwind:Show() timerBladeTempest:Start(nil, bossN, args.destGUID) elseif spellId == 74505 and self:IsInCombat() then--Only do this when boss is actually engaged, otherwise it doesn't really matter and just spams. brandTargets[#brandTargets + 1] = args.destName if args:IsPlayer() then specWarnBrand:Show() specWarnBrand:Play("targetyou") timerBrand:Show() end if self.vb.brandIcon > 0 then if self.Options.SetIconOnBrand then self:SetIcon(args.destName, self.vb.brandIcon, 10) end self.vb.brandIcon = self.vb.brandIcon - 1 end self:Unschedule(showBrandWarning) self:Schedule(0.5, showBrandWarning, self) end end function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT() if self.vb.allClonesSpawned then return end if UnitExists("boss3") then self.vb.allClonesSpawned = true timerBladeTempest:Start(20, 3, UnitGUID("boss3")) -- REVIEW! 5s variance? Based on clone spawn? (25N Lordaeron 2022-09-19 || 25H Lordaeron 2022-09-23) - 20.7 || 20.2 elseif UnitExists("boss2") then timerBladeTempest:Start(20, 2, UnitGUID("boss2")) -- REVIEW! 5s variance? Based on clone spawn? (25N Lordaeron 2022-09-19 || 25H Lordaeron 2022-09-23) - 24.3 || 19.9 end end function mod:UNIT_HEALTH(uId) if self:IsDifficulty("normal25", "heroic25") then if not self.vb.warnedSplit1 and self:GetUnitCreatureId(uId) == 39751 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.70 then self.vb.warnedSplit1 = true warningSplitSoon:Show() elseif not self.vb.warnedSplit3 and self:GetUnitCreatureId(uId) == 39751 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.37 then self.vb.warnedSplit3 = true warningSplitSoon:Show() end else if not self.vb.warnedSplit2 and self:GetUnitCreatureId(uId) == 39751 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.54 then self.vb.warnedSplit2 = true warningSplitSoon:Show() end end end ================================================ FILE: DBM-ChamberOfAspects/Ruby/Halion.lua ================================================ local mod = DBM:NewMod("Halion", "DBM-ChamberOfAspects", 2) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(39863)--40142 (twilight form) mod:SetEncounterID(887) mod:SetUsedIcons(7, 3) mod:SetMinSyncRevision(4358) -- try to preserve this as much as possible to receive old DBM comms mod:RegisterCombat("combat") --mod:RegisterKill("yell", L.Kill) mod:RegisterEventsInCombat( "SPELL_CAST_START 74806 75954 75955 75956 74525 74526 74527 74528", "SPELL_CAST_SUCCESS 74792 74562", "SPELL_AURA_APPLIED 74792 74562", "SPELL_AURA_REMOVED 74792 74562", "SPELL_DAMAGE", "SPELL_MISSED", "CHAT_MSG_MONSTER_YELL", "CHAT_MSG_RAID_BOSS_EMOTE", "UPDATE_WORLD_STATES", "UNIT_HEALTH boss1" ) -- General local berserkTimer = mod:NewBerserkTimer(480) mod:AddBoolOption("AnnounceAlternatePhase", true, "announce") -- Stage One - Physical Realm (100%) mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(1)..": "..L.PhysicalRealm) local warnPhase2Soon = mod:NewPrePhaseAnnounce(2) local warningFieryCombustion = mod:NewTargetNoFilterAnnounce(74562, 4) local warningMeteor = mod:NewSpellAnnounce(74648, 3) local warningFieryBreath = mod:NewSpellAnnounce(74525, 2, nil, "Tank|Healer") local specWarnFieryCombustion = mod:NewSpecialWarningRun(74562, nil, nil, nil, 4, 2) local yellFieryCombustion = mod:NewYellMe(74562) local specWarnMeteorStrike = mod:NewSpecialWarningMove(74648, nil, nil, nil, 1, 2) local timerFieryCombustionCD = mod:NewNextTimer(25, 74562, nil, nil, nil, 3) -- (25H Lordaeron 2022/10/09) - Stage 1/16.4, 25.6, 25.1, 25.1, Stage 2/0.2, Stage 3/104.2, 18.5/122.7/122.9, 25.1, 25.0, 26.0, 25.0, 25.0, 25.1, 25.0, 25.0", -- [2] local timerMeteorCD = mod:NewNextTimer(40, 74648, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON)--Target or aoe? tough call. It's a targeted aoe! Even though on pull has variance, can't implement "keep" due to OnSync phasing, unless I sync schedule and end timer flag but that's a bit overkill local timerMeteorCast = mod:NewCastTimer(7, 74648)--7-8 seconds from boss yell the meteor impacts. local timerFieryBreathCD = mod:NewCDTimer(13, 74525, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- REVIEW! ~4s variance [13.1-16.9]. Added "keep" arg (25H Lordaeron 2022/09/21 wipe2 || 25H Lordaeron 2022/09/23) - 16.1, 13.1, 13.8, 14.9, 14.6, 16.3, Stage 2/2.0, Stage 3/109.9, 17.4/127.3/129.3, 16.4 || 15.7, 15.7, 16.9, 16.7, 15.1, Stage 2/9.3, Stage 3/93.0, 13.0/106.0/115.4, 14.2, 14.5, 13.5, 13.8, 15.7, 15.0, 15.9, 16.0, 13.4, 15.0, 16.2, 16.8, 16.2 local timerTailLashCD = mod:NewCDTimer(10, 74531, nil, nil, nil, 2) -- Almost a fixed timer, with very occasional delay, on both Physical and Shadow realms. (25H Lordaeron 2022/09/23) - pull:10.1/Stage 1/10.1, 10.0, 10.0, 10.0, 10.1, 10.5, 10.0, 10.1, 11.7, Stage 2/13.5, 10.1, 10.0, 10.0, 10.1, 10.0, 10.0, 10.0, Stage 3/10.0, 10.0, 11.2, 10.0, 10.0, 10.0, 10.1, 10.1, 10.0, 10.0, 10.0, 10.0, 10.0, 10.1, 10.0, 10.0, 10.0, 11.0, 10.0 mod:AddSetIconOption("SetIconOnFireConsumption", 74562, true, false, {7})--Red x for Fire -- Stage Two - Twilight Realm (75%) local twilightRealmName = DBM:GetSpellInfo(74807) mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(2)..": "..twilightRealmName) local warnPhase3Soon = mod:NewPrePhaseAnnounce(3) local warnPhase2 = mod:NewPhaseAnnounce(2, 2, nil, nil, nil, nil, nil, 2) local warningSoulConsumption = mod:NewTargetNoFilterAnnounce(74792, 4) local warningShadowBreath = mod:NewSpellAnnounce(74806, 2, nil, "Tank|Healer") local warningTwilightCutter = mod:NewAnnounce("TwilightCutterCast", 4, 74769, nil, nil, nil, 74769) local specWarnSoulConsumption = mod:NewSpecialWarningRun(74792, nil, nil, nil, 4, 2) local yellSoulConsumption = mod:NewYellMe(74792) local specWarnTwilightCutter = mod:NewSpecialWarningSpell(74769, nil, nil, nil, 3, 2) local timerSoulConsumptionCD = mod:NewNextTimer(20, 74792, nil, nil, nil, 3) -- (25N Lordaeron 2022/09/20) - Stage 2/22.9, 20.0, 20.0, Stage 3/10.4, 9.6/20.0, 20.0, 60.0, 20.0 local timerTwilightCutterCast = mod:NewCastTimer(5, 74769, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON) local timerTwilightCutter = mod:NewBuffActiveTimer(10, 74769, nil, nil, nil, 6) local timerTwilightCutterCD = mod:NewNextTimer(15, 74769, nil, nil, nil, 6) local timerTwilightCutterSpawn = mod:NewTimer(20, "TimerCutterSpawn", 74769, false, nil, 6, nil, nil, nil, nil, nil, nil, nil, 74769) -- Combines CD + Cast, and disables them too local timerShadowBreathCD = mod:NewCDTimer(13, 74806, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- REVIEW! ~4s variance [13.0-16.9]. Added "keep" arg (25H Lordaeron 2022/09/21 wipe2 || 25H Lordaeron 2022/09/23) -- 14.0, 15.9, 13.8, 14.9, 14.3, 13.0 || 15.8, 13.7, 16.9, 15.3 mod:AddSetIconOption("SetIconOnShadowConsumption", 74792, true, false, {3})--Purple diamond for shadow -- Stage Three - Corporeality (50%) local twilightDivisionName = DBM:GetSpellInfo(75063) mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(3)..": "..twilightDivisionName) local warnPhase3 = mod:NewPhaseAnnounce(3, 2, nil, nil, nil, nil, nil, 2) local specWarnCorporeality = mod:NewSpecialWarningCount(74826, nil, nil, nil, 1, 2) mod.vb.warned_preP2 = false mod.vb.warned_preP3 = false local playerInShadowRealm = false local fieryCombustionCLEU = false -- Assigning a bool for CLEU check to prevent double timer starts from CLEU & Sync local fieryBreathCLEU = false -- Assigning a bool for CLEU check to prevent double timer starts from CLEU & Sync local soulConsumptionCLEU = false -- Assigning a bool for CLEU check to prevent double timer starts from CLEU & Sync local shadowBreathCLEU = false -- Assigning a bool for CLEU check to prevent double timer starts from CLEU & Sync local previousCorporeality = 0 local function clearKeepTimers(self) -- Attempt to clear "keep" negative timers that are not relevant to the realm and would otherwise tick to infinity -- if not self.AnnounceAlternatePhase then return end if timerShadowBreathCD:GetRemaining() < 0 then timerShadowBreathCD:Stop() end if timerFieryBreathCD:GetRemaining() < 0 then timerFieryBreathCD:Stop() end end function mod:OnCombatStart(delay) self.vb.warned_preP2 = false self.vb.warned_preP3 = false self:SetStage(1) playerInShadowRealm = false fieryCombustionCLEU = false fieryBreathCLEU = false soulConsumptionCLEU = false shadowBreathCLEU = false previousCorporeality = 0 berserkTimer:Start(-delay) timerMeteorCD:Start(20-delay) -- REVIEW! ~5s variance (25N Lordaeron 2022/09/20 || 25H Lordaeron 2022/10/09) - 20.7 || 24.5 timerFieryCombustionCD:Start(15-delay) -- (25N Lordaeron 2022/09/20 || 25H Lordaeron 2022/10/09) - 17.6 || 16.4 timerFieryBreathCD:Start(10-delay) -- (25H Lordaeron 2022/09/21 wipe1 || 25H Lordaeron 2022/09/21 wipe2 || 25H Lordaeron 2022/09/21 wipe3 || 25H Lordaeron 2022/09/23) - 10.5 || 11.3 || 12.4 || 10.3 timerTailLashCD:Start(-delay) end function mod:OnCombatEnd() if self.Options.HealthFrame then DBM.BossHealth:Hide() end end function mod:SPELL_CAST_START(args) if args:IsSpellID(74806, 75954, 75955, 75956) then warningShadowBreath:Show() timerShadowBreathCD:Start() shadowBreathCLEU = true if self:LatencyCheck() then self:SendSync("ShadowBreathCD") end elseif args:IsSpellID(74525, 74526, 74527, 74528) then warningFieryBreath:Show() timerFieryBreathCD:Start() fieryBreathCLEU = true if self:LatencyCheck() then self:SendSync("FieryBreathCD") end end end function mod:SPELL_CAST_SUCCESS(args)--We use spell cast success for debuff timers in case it gets resisted by a player we still get CD timer for next one local spellId = args.spellId if spellId == 74792 then timerSoulConsumptionCD:Start() soulConsumptionCLEU = true if self:LatencyCheck() then self:SendSync("ShadowCD") end elseif spellId == 74562 then timerFieryCombustionCD:Start() fieryCombustionCLEU = true if self:GetStage(1, 2) and self:LatencyCheck() then -- useless on phase 1 since everyone is in the same realm self:SendSync("FieryCD") end elseif spellId == 74531 then -- Tail Lash timerTailLashCD:Start() end end function mod:SPELL_AURA_APPLIED(args)--We don't use spell cast success for actual debuff on >player< warnings since it has a chance to be resisted. local spellId = args.spellId if spellId == 74792 then if self:LatencyCheck() then self:SendSync("ShadowTarget", args.destName) end if args:IsPlayer() then specWarnSoulConsumption:Show() specWarnSoulConsumption:Play("runout") yellSoulConsumption:Yell() end if not self.Options.AnnounceAlternatePhase then warningSoulConsumption:Show(args.destName) end if self.Options.SetIconOnShadowConsumption then self:SetIcon(args.destName, 3) end elseif spellId == 74562 then if self:LatencyCheck() then self:SendSync("FieryTarget", args.destName) end if args:IsPlayer() then specWarnFieryCombustion:Show() specWarnFieryCombustion:Play("runout") yellFieryCombustion:Yell() end if not self.Options.AnnounceAlternatePhase then warningFieryCombustion:Show(args.destName) end if self.Options.SetIconOnFireConsumption then self:SetIcon(args.destName, 7) end end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 74792 then if self.Options.SetIconOnShadowConsumption then self:SetIcon(args.destName, 0) end elseif spellId == 74562 then if self.Options.SetIconOnFireConsumption then self:SetIcon(args.destName, 0) end end end function mod:SPELL_DAMAGE(sourceGUID, _, _, destGUID, _, _, spellId) if (spellId == 75952 or spellId == 75951 or spellId == 75950 or spellId == 75949 or spellId == 75948 or spellId == 75947) and destGUID == UnitGUID("player") and self:AntiSpam() then specWarnMeteorStrike:Show() specWarnMeteorStrike:Play("runaway") -- Physical/Shadow Realm detection: -- OnCombatStarts already defines playerInShadowRealm as false. -- Code below is meant to handle P2 and P3 elseif (self:GetCIDFromGUID(sourceGUID) == 39863 or self:GetCIDFromGUID(destGUID) == 39863) and self.Options.HealthFrame and playerInShadowRealm then -- check if Physical Realm boss exists and playerInShadowRealm is still cached as true playerInShadowRealm = false DBM.BossHealth:Clear() DBM.BossHealth:AddBoss(39863, L.NormalHalion) elseif (self:GetCIDFromGUID(sourceGUID) == 40142 or self:GetCIDFromGUID(destGUID) == 40142) and self.Options.HealthFrame and not playerInShadowRealm then -- check if Shadow Realm boss exists playerInShadowRealm = true DBM.BossHealth:Clear() DBM.BossHealth:AddBoss(40142, L.TwilightHalion) end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:UNIT_HEALTH(uId) if not self.vb.warned_preP2 and self:GetUnitCreatureId(uId) == 39863 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.79 then self.vb.warned_preP2 = true warnPhase2Soon:Show() elseif not self.vb.warned_preP3 and self:GetUnitCreatureId(uId) == 40142 and UnitHealth(uId) / UnitHealthMax(uId) <= 0.54 then self:SendSync("Phase3soon") end end function mod:UPDATE_WORLD_STATES() for i = 1, GetNumWorldStateUI() do local _, state, text = GetWorldStateUIInfo(i) if state == 1 and strfind(text, "%%") then local corporeality = tonumber(strmatch(text, "%d+")) if corporeality > 0 and previousCorporeality ~= corporeality then specWarnCorporeality:Show(corporeality) previousCorporeality = corporeality if corporeality > 60 then -- only voice for >= 70%, 60% is still manageable so default to the selected SA sound if self:IsTank() then specWarnCorporeality:Play("defensive") end end if corporeality < 40 then if self:IsDps() then specWarnCorporeality:Play("dpsstop") end elseif corporeality == 40 then if self:IsDps() then specWarnCorporeality:Play("dpsslow") end elseif corporeality == 60 then if self:IsDps() then specWarnCorporeality:Play("dpsmore") end elseif corporeality > 60 then if self:IsDps() then specWarnCorporeality:Play("dpshard") end end end end end end function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.Phase2 or msg:find(L.Phase2) then self:SendSync("Phase2") elseif msg == L.Phase3 or msg:find(L.Phase3) then self:SendSync("Phase3") elseif msg == L.MeteorCast or msg:find(L.MeteorCast) then--There is no CLEU cast trigger for meteor, only yell warningMeteor:Play("meteorrun") if not self.Options.AnnounceAlternatePhase then warningMeteor:Show() timerMeteorCast:Start()--7 seconds from boss yell the meteor impacts. timerMeteorCD:Start() end if self:LatencyCheck() then self:SendSync("Meteor") end elseif msg == L.twilightcutter or msg:find(L.twilightcutter) then -- 2022/10/14: No longer required since this has been fixed serverside! Nevertheless, there is no loss in functionality by doing this in Yell instead of Emote; it's even the first event fired from the pair! (~~Edited (specific for Warmane since CHAT_MSG_RAID_BOSS_EMOTE fires twice: at 5s and at cutter)~~) specWarnTwilightCutter:Schedule(5) specWarnTwilightCutter:ScheduleVoice(5, "farfromline") if not self.Options.AnnounceAlternatePhase then timerTwilightCutterCD:Cancel() warningTwilightCutter:Show() timerTwilightCutter:Schedule(5)--Delay it since it happens 5 seconds after the emote if self.Options.TimerCutterSpawn then timerTwilightCutterSpawn:Schedule(15) else timerTwilightCutterCast:Start() timerTwilightCutterCD:Schedule(15) end end if self:LatencyCheck() then self:SendSync("TwilightCutter") end end end function mod:OnSync(msg, target) if msg == "TwilightCutter" then if self.Options.AnnounceAlternatePhase then -- 2022/10/14: Removed antispam workaround since this has been fixed serverside! (~~Edited to circumvent Warmane double cutter boss emote~~) timerTwilightCutterCD:Cancel() warningTwilightCutter:Show() timerTwilightCutter:Schedule(5)--Delay it since it happens 5 seconds after the emote if self.Options.TimerCutterSpawn then timerTwilightCutterSpawn:Schedule(15) else timerTwilightCutterCast:Start() timerTwilightCutterCD:Schedule(15) end end elseif msg == "Meteor" then if self.Options.AnnounceAlternatePhase then warningMeteor:Show() timerMeteorCast:Start() timerMeteorCD:Start() end elseif msg == "ShadowTarget" then if self.Options.AnnounceAlternatePhase then warningSoulConsumption:Show(target) end elseif msg == "FieryTarget" then if self.Options.AnnounceAlternatePhase then warningFieryCombustion:Show(target) end elseif msg == "ShadowCD" then if self.Options.AnnounceAlternatePhase and not soulConsumptionCLEU then soulConsumptionCLEU = false -- reset state for next CLEU/sync check timerSoulConsumptionCD:Start() end elseif msg == "ShadowBreathCD" then if self.Options.AnnounceAlternatePhase and not shadowBreathCLEU then shadowBreathCLEU = false -- reset state for next CLEU/sync check warningShadowBreath:Show() timerShadowBreathCD:Start() end elseif msg == "FieryBreathCD" then if self.Options.AnnounceAlternatePhase and not fieryBreathCLEU then fieryBreathCLEU = false -- reset state for next CLEU/sync check warningFieryBreath:Show() timerFieryBreathCD:Start() end elseif msg == "FieryCD" and self:GetStage(1, 2) then -- block old comms that run this for the entirety of the raid, which is useless on phase 1 since everyone is in the same realm if self.Options.AnnounceAlternatePhase and not fieryCombustionCLEU then fieryCombustionCLEU = false -- reset state for next CLEU/sync check timerFieryCombustionCD:Start() end elseif msg == "Phase2" and self:GetStage(2, 1) then self:SetStage(2) timerFieryBreathCD:Cancel() timerMeteorCD:Cancel() timerFieryCombustionCD:Cancel() warnPhase2:Show() warnPhase2:Play("ptwo") timerShadowBreathCD:Start() -- ~5s variance [13.7-18.4] (25H Lordaeron 2022/09/21 wipe1 || 25H Lordaeron 2022/09/21 wipe2 || 25H Lordaeron 2022/09/21 wipe3 || 25H Lordaeron 2022/09/23) - 15.9 || 13.7 || 18.1 || 18.4 timerSoulConsumptionCD:Start(22.8)--Edited. not exact, 15 seconds from tank aggro, but easier to add 5 seconds to it as a estimate timer than trying to detect this. (25N Lordaeron 2022/10/09 || 25H Lordaeron 2022/10/15 || 25H Lordaeron 2022/10/30) - 23.8 || 23.4 || 22.8 if self.Options.TimerCutterSpawn then timerTwilightCutterSpawn:Start(35) else timerTwilightCutterCD:Start(30) -- (25N Lordaeron 2022/09/20 || 25H Lordaeron 2022/09/21) - Stage 2/30.0 || Stage 2/30.0 end self:Schedule(20, clearKeepTimers, self) elseif msg == "Phase3" and self:GetStage(3, 1) then self:SetStage(3) warnPhase3:Show() warnPhase3:Play("pthree") timerMeteorCD:Start(23.2) --These i'm not sure if they start regardless of drake aggro, or if it varies as well. (25H Lordaeron 2022/10/09 || 25H Lordaeron 2022/10/30) - Stage 3/25.8 || 23.2 timerFieryCombustionCD:Start(17.8) -- REVIEW! source of variance? (25N Lordaeron 2022/10/09 || 25H Lordaeron 2022/10/15 || 25N Lordaeron [2023-06-27]@[19:37:57]) - 18.5 || 19.4 || 17.8 self:Schedule(20, clearKeepTimers, self) elseif msg == "Phase3soon" and not self.vb.warned_preP3 then self.vb.warned_preP3 = true warnPhase3Soon:Show() end end ================================================ FILE: DBM-ChamberOfAspects/Ruby/Saviana.lua ================================================ local mod = DBM:NewMod("Saviana", "DBM-ChamberOfAspects", 2) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(39747) mod:SetEncounterID(891) mod:SetUsedIcons(8, 7, 6, 5, 4) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 74403 74404", "SPELL_AURA_APPLIED 78722 74453", "SPELL_AURA_REMOVED 78722", "UNIT_SPELLCAST_SUCCEEDED boss1" ) local warningWarnBeacon = mod:NewTargetNoFilterAnnounce(74453, 4)--Will change to a target announce if possible. need to do encounter local warningWarnBreath = mod:NewSpellAnnounce(74403, 3) local specWarnBeacon = mod:NewSpecialWarningYou(74453, nil, nil, nil, 1, 2)--Target scanning may not even work since i haven't done encounter yet it's just a guess. local specWarnTranq = mod:NewSpecialWarningDispel(78722, "RemoveEnrage", nil, nil, 1, 2) local timerBeacon = mod:NewBuffActiveTimer(5, 74453, nil, nil, nil, 3) local timerConflag = mod:NewBuffActiveTimer(5, 74456, nil, nil, nil, 3) local timerConflagCD = mod:NewCDTimer(63.8, 74452, nil, nil, nil, 3) -- Using UNIT_SPELLCAST_SUCCEEDED since it only fires once. Variance depends on travel time (25N Lordaeron 2022/09/19 || 25H Lordaeron 2022/09/23) -- 63.8 || 64.3 local timerBreath = mod:NewCDTimer(19.3, 74403, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- REVIEW! ~10s variance [19.3-29.5] Added "Keep" arg (25N Lordaeron 2022/09/19 || 25H Lordaeron 2022/09/23 || 25N Lordaeron [2023-06-27]@[19:12:05]) -- 38.8, 29.5, 34.2 || 38.4, 25.7 || 38.1, 22.1 local timerEnrage = mod:NewBuffActiveTimer(10, 78722, nil, "RemoveEnrage|Tank|Healer", nil, 5, nil, DBM_COMMON_L.ENRAGE_ICON..DBM_COMMON_L.TANK_ICON) local timerFlight = mod:NewNextTimer(50, 34873, nil, nil, nil, 6, 54950) local timerLanding = mod:NewNextTimer(8, 30202, nil, nil, nil, 6, 54950) mod:AddRangeFrameOption(10, 74456) mod:AddSetIconOption("beaconIcon", 74453, true, false, {8, 7, 6, 5, 4}) mod:GroupSpells(74453, 74456, 74452)--Group target debuff ID with regular debuff IDs local beaconTargets = {} mod.vb.beaconIcon = 8 local function warnConflagTargets(self) warningWarnBeacon:Show(table.concat(beaconTargets, "<, >")) table.wipe(beaconTargets) self.vb.beaconIcon = 8 end local function savianaPhaseCatcher(self) self:RegisterShortTermEvents( "UNIT_TARGET boss1" ) end local function savianaAirphase(self) self:SetStage(1.5) timerBreath:Pause() self:UnregisterShortTermEvents() end local function savianaLanding(self) self:SetStage(1) timerFlight:Start() timerBreath:Resume() self:Schedule(49.5, savianaPhaseCatcher, self) self:Schedule(50, savianaAirphase, self) self:UnregisterShortTermEvents() end function mod:OnCombatStart(delay) self:SetStage(1) timerConflagCD:Start(30.1-delay) -- REVIEW! variance? (25N Lordaeron 2022/09/19 || 25H Lordaeron 2022/09/23) -- 30.1 || 30.2 timerBreath:Start(14-delay) -- (25N Lordaeron 2022/09/19 || 25H Lordaeron 2022/09/23 || 25N Lordaeron [2023-06-27]@[19:12:05]) - 14.0 || 14.0 || 14.0 timerFlight:Start(25-delay) table.wipe(beaconTargets) self.vb.beaconIcon = 8 if self.Options.RangeFrame then DBM.RangeCheck:Show(12) end self:Schedule(24.5, savianaPhaseCatcher, self) self:Schedule(25, savianaAirphase, self) -- Lowest 24.96 end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end self:UnregisterShortTermEvents() end function mod:SPELL_CAST_START(args) if args:IsSpellID(74403, 74404) then warningWarnBreath:Show() timerBreath:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 78722 then specWarnTranq:Show(args.destName) specWarnTranq:Play("trannow") timerEnrage:Start() elseif spellId == 74453 then beaconTargets[#beaconTargets + 1] = args.destName timerBeacon:Start() timerConflag:Schedule(5) if args:IsPlayer() then specWarnBeacon:Show() specWarnBeacon:Play("targetyou") end if self.Options.beaconIcon then self:SetIcon(args.destName, self.vb.beaconIcon, 11) end self.vb.beaconIcon = self.vb.beaconIcon - 1 self:Unschedule(warnConflagTargets) self:Schedule(0.3, warnConflagTargets, self) end end function mod:SPELL_AURA_REMOVED(args) if args.spellId == 78722 then timerEnrage:Cancel() end end function mod: UNIT_SPELLCAST_SUCCEEDED(_, spellName) -- UNIT_SPELLCAST_START/CLEU fires and stops right after, and only gets SUCCEEDED one second after, one time only, which is better to optimize some calls if spellName == GetSpellInfo(74454) then -- Conflagration timerConflagCD:Restart() -- This will always be prone to bad timers, since it doesn't account for travel time, which can be different! timerLanding:Start() self:Schedule(7, savianaPhaseCatcher, self) self:Schedule(7.89, savianaLanding, self) -- Lowest 7.88 end end function mod:UNIT_TARGET(uId) local unitTarget = UnitExists(uId.."target") if not unitTarget and self.vb.phase == 1 then self:SendSync("SavianaAired") -- Sync airphase with raid since UNIT_TARGET:boss1 event requires boss to be target/focus, which not all members do elseif unitTarget and self.vb.phase == 1.5 then self:SendSync("SavianaLanded") -- Sync landing with raid since UNIT_TARGET:boss1 event requires boss to be target/focus, which not all members do end end function mod:OnSync(msg) if not self:IsInCombat() then return end if msg == "SavianaAired" and self.vb.phase == 1 then self:Unschedule(savianaAirphase) savianaAirphase(self) elseif msg == "SavianaLanded" and self.vb.phase == 1.5 then self:Unschedule(savianaLanding) savianaLanding(self) end end ================================================ FILE: DBM-ChamberOfAspects/Ruby/Zarithrian.lua ================================================ local mod = DBM:NewMod("Zarithrian", "DBM-ChamberOfAspects", 2) local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(39746) mod:SetEncounterID(893) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 74384", "SPELL_AURA_APPLIED 74367 10278 642", "SPELL_AURA_APPLIED_DOSE 74367", "CHAT_MSG_MONSTER_YELL" ) local warningAdds = mod:NewAnnounce("WarnAdds", 3, 74398) local warnCleaveArmor = mod:NewStackAnnounce(74367, 2, nil, "Tank|Healer") local warnFearSoon = mod:NewSoonAnnounce(74384, 2, nil, nil, nil, nil, nil, 2) local specWarnFear = mod:NewSpecialWarningSpell(74384, nil, nil, nil, 2, 2) local specWarnCleaveArmor = mod:NewSpecialWarningStack(74367, nil, 2, nil, nil, 1, 6)--ability lasts 30 seconds, has a 15 second cd, so tanks should trade at 2 stacks. local timerAddsCD = mod:NewTimer(40, "TimerAdds", 74398, nil, nil, 1, nil, DBM_COMMON_L.DAMAGE_ICON) local timerAddsTravel = mod:NewTimer(10, "AddsArrive") -- Timer to indicate when the summoned adds arive local timerCleaveArmor = mod:NewTargetTimer(30, 74367, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON) local timerFearCD = mod:NewCDTimer(30, 74384, nil, nil, nil, 2) mod:AddBoolOption("CancelBuff") local CleaveArmorTargets = {} function mod:OnCombatStart(delay) timerFearCD:Start(14-delay) warnFearSoon:ScheduleVoice(11, "fearsoon") -- 3 secs prewarning timerAddsCD:Start(18-delay) end function mod:OnCombatEnd() table.wipe(CleaveArmorTargets) end function mod:SPELL_CAST_START(args) if args.spellId == 74384 then specWarnFear:Show() warnFearSoon:ScheduleVoice(27, "fearsoon") -- 3 secs prewarning timerFearCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 74367 then if self.Options.CancelBuff and not tContains(CleaveArmorTargets, args.destName) then CleaveArmorTargets[#CleaveArmorTargets+1] = args.destName end local amount = args.amount or 1 timerCleaveArmor:Start(args.destName) if args:IsPlayer() and amount >= 2 then specWarnCleaveArmor:Show(amount) specWarnCleaveArmor:Play("stackhigh") else warnCleaveArmor:Show(args.destName, amount) end elseif (spellId == 10278 or spellId == 642) and self.Options.CancelBuff and self:IsInCombat() and args:IsPlayer() and #CleaveArmorTargets > 0 then for i = 1, #CleaveArmorTargets do local targetName = CleaveArmorTargets[i] if targetName == DBM:GetMyPlayerInfo() then CancelUnitBuff("player", GetSpellInfo(10278)) -- Hand of Protection CancelUnitBuff("player", GetSpellInfo(642)) -- Divine Shield CleaveArmorTargets[i] = nil end end end end mod.SPELL_AURA_APPLIED_DOSE = mod.SPELL_AURA_APPLIED function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.SummonMinions or msg:match(L.SummonMinions) then warningAdds:Show() timerAddsCD:Start() timerAddsTravel:Start() -- Added timer for travel time on summoned adds end end ================================================ FILE: DBM-ChamberOfAspects/localization.cn.lua ================================================ -- author: callmejames @《凤凰之翼》 一区藏宝海湾 -- commit by: yaroot if GetLocale() ~= "zhCN" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "沙德隆" }) L:SetMiscLocalization({ YellShadronPull = "我无所畏惧!你们根本不值一提!", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "塔尼布隆" }) L:SetMiscLocalization({ YellTenebronPull = "你们没资格来这里!你们的归宿……在死者的国度!", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "维斯匹隆" }) L:SetMiscLocalization({ YellVesperonPull = "你们这些下等生物根本无法对我构成任何威胁!使出全力战斗吧!", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "萨塔里奥" }) L:SetWarningLocalization({ WarningTenebron = "塔尼布隆到来", WarningShadron = "沙德隆到来", WarningVesperon = "维斯匹隆到来", WarningFireWall = "烈焰之啸", WarningWhelpsSoon = "铁粉幼崽很快", WarningPortalSoon = "莎德龙传送门很快", WarningReflectSoon = "维斯匹隆反映很快", WarningVesperonPortal = "维斯匹隆的传送门", WarningTenebronPortal = "塔尼布隆的传送门", WarningShadronPortal = "沙德隆的传送门" }) L:SetTimerLocalization({ TimerTenebron = "塔尼布隆到来", TimerShadron = "沙德隆到来", TimerVesperon = "维斯匹隆到来", TimerTenebronWhelps = "铁粉幼崽", TimerShadronPortal = "沙龙传送门", TimerVesperonPortal = "维斯匹隆传送门", TimerVesperonPortal2 = "维斯匹隆传送门 2" }) L:SetOptionLocalization({ AnnounceFails = "公布踩中暗影裂隙和撞上烈焰之啸的玩家到团队频道 (需要团长或助理权限)", TimerTenebron = "为塔尼布隆到来显示计时条", TimerShadron = "为沙德隆到来显示计时条", TimerVesperon = "为维斯匹隆到来显示计时条", TimerTenebronWhelps = "显示铁粉幼崽的计时器", TimerShadronPortal = "显示沙龙传送门的计时器", TimerVesperonPortal = "显示维斯匹隆传送门的计时器", TimerVesperonPortal2 = "显示维斯匹隆传送门的计时器 2", WarningFireWall = "为烈焰之啸显示特别警报", WarningTenebron = "提示塔尼布隆到来", WarningShadron = "提示沙德隆到来", WarningVesperon = "提示维斯匹隆到来", WarningWhelpsSoon = "很快宣布铁粉幼崽", WarningPortalSoon = "很快宣布沙龙传送门", WarningReflectSoon = "宣布维斯匹隆反映很快", WarningTenebronPortal = "为塔尼布隆的传送门显示特别警报", WarningShadronPortal = "为沙德隆的传送门显示特别警报", WarningVesperonPortal = "为维斯匹隆的传送门显示特别警报" }) L:SetMiscLocalization({ YellSarthPull = "我的职责是保护这些龙卵。在伤害到它们之前,你们就会被我的龙息烧成灰烬!", Wall = "%s周围的岩浆沸腾了起来!", Portal = "%s开始开启暮光传送门!", NameTenebron = "塔尼布隆", NameShadron = "沙德隆", NameVesperon = "维斯匹隆", FireWallOn = "烈焰之啸:%s", VoidZoneOn = "暗影裂隙:%s", VoidZones = "踩中暗影裂隙 (这一次):%s", FireWalls = "撞上烈焰之啸 (这一次):%s" }) ------------------------ -- 红玉圣殿 -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "战争之子巴尔萨鲁斯" }) L:SetWarningLocalization({ WarningSplitSoon = "分裂 即将到来" }) L:SetOptionLocalization({ WarningSplitSoon = "预警:分裂" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "塞维娅娜·怒火" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "萨瑞瑟里安将军" }) L:SetWarningLocalization({ WarnAdds = "新的小怪", warnCleaveArmor = ">%1$s<中了%2$s(%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "新的小怪", AddsArrive = "小怪到来:" }) L:SetOptionLocalization({ WarnAdds = "通报:新的小怪", TimerAdds = "计时条:新的小怪", CancelBuff = "删除 $spell:10278 和 $spell:642 如果用于删除 $spell:74367", AddsArrive = "计时条:小怪到来" }) L:SetMiscLocalization({ SummonMinions = "让他们化为灰烬,仆从们!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "海里昂 暮光摧毁者" }) L:SetWarningLocalization({ TwilightCutterCast = "5秒后 施放暮光撕裂射线" }) L:SetOptionLocalization({ TwilightCutterCast = "警报:$spell:77844开始施放", AnnounceAlternatePhase = "显示另一场地的警报/计时条", SetIconOnConsumption = "标记:$spell:74562或$spell:74792的目标"--So we can use single functions for both versions of spell. }) L:SetMiscLocalization({ Halion = "海里昂", PhysicalRealm = "物质世界", MeteorCast = "天空在燃烧!", Phase2 = "暮光的世界将会让你痛不欲生!够胆量的就进来吧!", Phase3 = "我就是交织的光影!凡人,在死亡之翼的使者面前颤抖吧!", twilightcutter = "阴影在弥漫!", -- "黑暗能量正在这颗旋转的魔球中脉动!", -- Warmane(i服)不能用此台词作为判断条件,因为Warmane(i服)服务器端会在切割前5秒和切割开始时触发此台词两次。 Kill = "享受胜利吧,凡人们,这是你们最后的胜利。回归的主人将烧毁这个世界!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "Shadron" }) L:SetMiscLocalization({ YellShadronPull = "Ich fürchte nichts und niemanden! Am allerwenigsten euch!", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "Tenebron" }) L:SetMiscLocalization({ YellTenebronPull = "Ihr gehört nicht hierher! Euer Platz... ist bei den Gefallenen!", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "Vesperon" }) L:SetMiscLocalization({ YellVesperonPull = "Ihr stellt keine Bedrohung dar, niedere Wesen! Zeigt mir, was in Euch steckt!", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "Sartharion" }) L:SetWarningLocalization({ WarningTenebron = "Tenebron kommt", WarningShadron = "Shadron kommt", WarningVesperon = "Vesperon kommt", WarningFireWall = "Feuerwand", WarningWhelpsSoon = "Tenebron Welpen bald", WarningPortalSoon = "Shadron-Portal in Kürze", WarningReflectSoon = "Vesperon Reflect Bald", WarningVesperonPortal = "Vesperons Portal", WarningTenebronPortal = "Tenebrons Portal", WarningShadronPortal = "Shadrons Portal" }) L:SetTimerLocalization({ TimerTenebron = "Tenebron kommt", TimerShadron = "Shadron kommt", TimerVesperon = "Vesperon kommt", TimerTenebronWhelps = "Tenebron Welpen", TimerShadronPortal = "Shadron-Portal", TimerVesperonPortal = "Vesperon-Portal", TimerVesperonPortal2 = "Vesperon-Portal 2" }) L:SetOptionLocalization({ AnnounceFails = "Verkünde Spieler im SZ-Chat, die bei Feuerwand und Schattenspalt scheitern (benötigt aktivierte Mitteilungen und Leiter-/Assistentenstatus)", TimerTenebron = "Zeige Zeit bis Tenebron in den Kampf eingreift", TimerShadron = "Zeige Zeit bis Shadron in den Kampf eingreift", TimerVesperon = "Zeige Zeit bis Vesperon in den Kampf eingreift", TimerTenebronWhelps = "Timer für Tenebron Welpen anzeigen", TimerShadronPortal = "Timer für Shadron-Portal anzeigen", TimerVesperonPortal = "Timer für Vesperon Portal anzeigen", TimerVesperonPortal2 = "Timer für Vesperon Portal 2 anzeigen", WarningFireWall = "Spezialwarnung für Feuerwand", WarningTenebron = "Verkünde das Eingreifen von Tenebron in den Kampf", WarningShadron = "Verkünde das Eingreifen von Shadron in den Kampf", WarningVesperon = "Verkünde das Eingreifen von Vesperon in den Kampf", WarningWhelpsSoon = "Kündigen Tenebron Whelps bald an", WarningPortalSoon = "Shadron-Portal bald ankündigen", WarningReflectSoon = "Vesperon Reflect bald ankündigen", WarningTenebronPortal = "Spezialwarnung für Tenebrons Portal", WarningShadronPortal = "Spezialwarnung für Shadrons Portal", WarningVesperonPortal = "Spezialwarnung für Vesperons Portal" }) L:SetMiscLocalization({ YellSarthPull = "Meine Aufgabe ist es, über diese Eier zu wachen. Kommt ihnen zu nahe und von euch bleibt nur ein Häuflein Asche.", Wall = "Die Lava um %s brodelt!", Portal = "%s beginnt, ein Portal des Zwielichts zu öffnen!", NameTenebron = "Tenebron", NameShadron = "Shadron", NameVesperon = "Vesperon", FireWallOn = "Feuerwand: %s", VoidZoneOn = "Schattenspalt: %s", VoidZones = "Fehler bei Schattenspalt (dieser Versuch): %s", FireWalls = "Fehler bei Feuerwand (dieser Versuch): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "Baltharus der Kriegsjünger" }) L:SetWarningLocalization({ WarningSplitSoon = "Aufspaltung bald" }) L:SetOptionLocalization({ WarningSplitSoon = "Zeige Vorwarnung für Aufspaltung" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "Saviana Flammenschlund" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "General Zarithrian" }) L:SetWarningLocalization({ WarnAdds = "Neue Adds", warnCleaveArmor = "%s auf >%s< (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "Neue Adds", AddsArrive = "Adds kommen an in" }) L:SetOptionLocalization({ WarnAdds = "Verkünde neue Adds", TimerAdds = "Zeige Zeit bis neue Adds erscheinen", CancelBuff = "Entferne $spell:10278 und $spell:642, wenn verwendet, um $spell:74367 zu entfernen", AddsArrive = "Timer für die Ankunft der Adds anzeigen" }) L:SetMiscLocalization({ SummonMinions = "Äschert sie ein, Lakaien!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "Halion der Zwielichtzerstörer" }) L:SetWarningLocalization({ TwilightCutterCast = "Wirkt Zwielichtschnitter: 5 sec" }) L:SetOptionLocalization({ TwilightCutterCast = "Zeige Warnung, wenn $spell:74769 gewirkt wird", AnnounceAlternatePhase = "Zeige auch Warnungen/Timer für Phasen, in denen du dich nicht befindest", SetIconOnConsumption = "Setze Zeichen auf Ziele von $spell:74562 und $spell:74792" }) L:SetMiscLocalization({ Halion = "Halion", PhysicalRealm = "Körperliches Reich", MeteorCast = "Die Himmel brennen!", Phase2 = "Ihr werdet im Reich des Zwielichts nur Leid finden! Tretet ein, wenn ihr es wagt!", Phase3 = "Ich bin das Licht und die Dunkelheit! Zittert, Sterbliche, vor dem Herold Todesschwinges!", twilightcutter = "Hütet euch vor dem Schatten!", --"Die kreisenden Sphären pulsieren vor dunkler Energie!" -- Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "Genießt euren Sieg, Sterbliche, denn es war euer letzter. Bei der Rückkehr des Meisters wird diese Welt brennen!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.en.lua ================================================ local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "Shadron" }) L:SetMiscLocalization({ YellShadronPull = "I fear nothing! Least of all you!", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "Tenebron" }) L:SetMiscLocalization({ YellTenebronPull = "You have no place here! Your place... is among the departed!", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "Vesperon" }) L:SetMiscLocalization({ YellVesperonPull = "You pose no threat, lesser beings! Give me your worst!", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "Sartharion" }) L:SetWarningLocalization({ WarningTenebron = "Tenebron incoming", WarningShadron = "Shadron incoming", WarningVesperon = "Vesperon incoming", WarningFireWall = "Fire Wall", WarningWhelpsSoon = "Tenebron Whelps Soon", WarningPortalSoon = "Shadron Portal Soon", WarningReflectSoon = "Vesperon Reflect Soon", WarningVesperonPortal = "Vesperon's portal", WarningTenebronPortal = "Tenebron's portal", WarningShadronPortal = "Shadron's portal" }) L:SetTimerLocalization({ TimerTenebron = "Tenebron arrives", TimerShadron = "Shadron arrives", TimerVesperon = "Vesperon arrives", TimerTenebronWhelps = "Tenebron Whelps", TimerShadronPortal = "Shadron Portal", TimerVesperonPortal = "Vesperon Portal", TimerVesperonPortal2 = "Vesperon Portal 2" }) L:SetOptionLocalization({ AnnounceFails = "Post player fails for Fire Wall and Shadow Fissure to raid chat
(requires announce to be enabled and leader/promoted status)", TimerTenebron = "Show timer for Tenebron's arrival", TimerShadron = "Show timer for Shadron's arrival", TimerVesperon = "Show timer for Vesperon's arrival", TimerTenebronWhelps = "Show timer for Tenebron Whelps", TimerShadronPortal = "Show timer for Shadron Portal", TimerVesperonPortal = "Show timer for Vesperon Portal", TimerVesperonPortal2 = "Show timer for Vesperon Portal 2", WarningFireWall = "Show special warning for Fire Wall", WarningTenebron = "Announce Tenebron incoming", WarningShadron = "Announce Shadron incoming", WarningVesperon = "Announce Vesperon incoming", WarningWhelpsSoon = "Announce Tenebron Whelps soon", WarningPortalSoon = "Announce Shadron Portal soon", WarningReflectSoon = "Announce Vesperon Reflect soon", WarningTenebronPortal = "Show special warning for Tenebron's portal", WarningShadronPortal = "Show special warning for Shadron's portal", WarningVesperonPortal = "Show special warning for Vesperon's portal" }) L:SetMiscLocalization({ YellSarthPull = "It is my charge to watch over these eggs. I will see you burn before any harm comes to them!", Wall = "The lava surrounding %s churns!", Portal = "%s begins to open a Twilight Portal!", NameTenebron = "Tenebron", NameShadron = "Shadron", NameVesperon = "Vesperon", FireWallOn = "Fire Wall: %s", VoidZoneOn = "Shadow Fissure: %s", VoidZones = "Shadow Fissure fails (this try): %s", FireWalls = "Fire Wall fails (this try): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "Baltharus the Warborn" }) L:SetWarningLocalization({ WarningSplitSoon = "Split soon" }) L:SetOptionLocalization({ WarningSplitSoon = "Show pre-warning for Split" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "Saviana Ragefire" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "General Zarithrian" }) L:SetWarningLocalization({ WarnAdds = "New adds", warnCleaveArmor = "%s on >%s< (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "New adds", AddsArrive = "Adds arrive in" }) L:SetOptionLocalization({ WarnAdds = "Announce new adds", TimerAdds = "Show timer for new adds", AddsArrive = "Show timer for adds arrival", CancelBuff = "Remove $spell:10278 and $spell:642 if used to remove $spell:74367", warnCleaveArmor = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(74367) }) L:SetMiscLocalization({ SummonMinions = "Turn them to ash, minions!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "Halion the Twilight Destroyer" }) L:SetWarningLocalization({ TwilightCutterCast = "Casting Twilight Cutter: 5 sec" }) L:SetTimerLocalization({ TimerCutterSpawn = "Twilight Cutter beam" }) L:SetOptionLocalization({ TwilightCutterCast = "Show warning when $spell:74769 is being cast", AnnounceAlternatePhase = "Show warnings/timers for phase you aren't in as well", SetIconOnConsumption = "Set icons on $spell:74562 or $spell:74792 targets",--So we can use single functions for both versions of spell. TimerCutterSpawn = "Show timer until next $spell:74769 is beamed (disables Next and Cast timers)" }) L:SetMiscLocalization({ Halion = "Halion", PhysicalRealm = "Physical Realm", MeteorCast = "The heavens burn!", Phase2 = "You will find only suffering within the realm of twilight! Enter if you dare!", Phase3 = "I am the light and the darkness! Cower, mortals, before the herald of Deathwing!", twilightcutter = "Beware the shadow!", --"The orbiting spheres pulse with dark energy!". Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "Relish this victory, mortals, for it will be your last. This world will burn with the master's return!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.es.lua ================================================ if GetLocale() ~= "esES" and GetLocale() ~= "esMX" then return end local L --------------------------- -- El Sagrario Obsidiana -- --------------------------- ------------- -- Shadron -- ------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "Shadron" }) L:SetMiscLocalization({ YellShadronPull = "¡No temo a nada! ¡Y menos a vosotros!", -- esES -- YellShadronPull = "¡A nada le temo! ¡Y menos a ti!", -- esMX }) -------------- -- Tenebron -- -------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "Tenebron" }) L:SetMiscLocalization({ YellTenebronPull = "¡No tenéis cabida aquí! ¡Vuestro lugar está... entre... los fallecidos!", -- esES -- YellTenebronPull = "¡No tienes cabida aquí! ¡Sino entre... los difuntos!", -- esMX }) -------------- -- Vesperon -- -------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "Vesperon" }) L:SetMiscLocalization({ YellVesperonPull = "¡No suponéis una amenaza, seres inferiores! ¡A ver qué valéis!", -- esES -- YellVesperonPull = "¡No representan ninguna amenaza, seres inferiores! ¡Demuestren su poderío!", -- esMX }) ---------------- -- Sartharion -- ---------------- L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "Sartharion" }) L:SetWarningLocalization({ WarningTenebron = "Tenebron se aproxima", WarningShadron = "Shadron se aproxima", WarningVesperon = "Vesperon se aproxima", WarningFireWall = "¡Muro de Fuego!", WarningWhelpsSoon = "Crías de Tenebron pronto", WarningPortalSoon = "Portal de Shadron pronto", WarningReflectSoon = "Vesperon Reflexiona pronto", WarningVesperonPortal = "¡Portal de Vesperon!", WarningTenebronPortal = "¡Portal de Tenebron!", WarningShadronPortal = "¡Portal de Shadron!" }) L:SetTimerLocalization({ TimerTenebron = "Tenebron llega", TimerShadron = "Shadron llega", TimerVesperon = "Vesperon llega", TimerTenebronWhelps = "Crías de Tenebron", TimerShadronPortal = "Portal de Shadron", TimerVesperonPortal = "Portal Vesperon", TimerVesperonPortal2 = "Portal Vesperon 2" }) L:SetOptionLocalization({ AnnounceFails = "Anunciar jugadores que reciban daño de $spell:57491 y $spell:57579 en el chat de banda (requiere líder o ayudante)", TimerTenebron = "Mostrar temporizador para la llegada de Tenebron", TimerShadron = "Mostrar temporizador para la llegada de Shadron", TimerVesperon = "Mostrar temporizador para la llegada de Vesperon", TimerTenebronWhelps = "Mostrar temporizador para crías de Tenebrón", TimerShadronPortal = "Mostrar temporizador para Shadron Portal", TimerVesperonPortal = "Mostrar temporizador para Vesperon Portal", TimerVesperonPortal2 = "Mostrar temporizador para Vesperon Portal 2", WarningFireWall = "Mostrar aviso especial para $spell:57491", WarningTenebron = "Anunciar cuando Tenebron se aproxime", WarningShadron = "Anunciar cuando Shadron se aproxime", WarningVesperon = "Anunciar cuando Vesperon se aproxime", WarningWhelpsSoon = "Anunciar pronto crías de Tenebrón", WarningPortalSoon = "Anunciar Shadron Portal pronto", WarningReflectSoon = "Anunciar Vesperon Reflect pronto", WarningTenebronPortal = "Mostrar aviso especial cuando aparezca el portal de Tenebron", WarningShadronPortal = "Mostrar aviso especial cuando aparezca el portal de Shadron", WarningVesperonPortal = "Mostrar aviso especial cuando aparezca el portal de Vesperon" }) L:SetMiscLocalization({ YellSarthPull = "Mi tarea es cuidar de estos huevos. ¡Arderéis antes de hacerles el más mínimo daño!", -- esES -- YellSarthPull = "Mi tarea es cuidar de estos huevos. ¡Te carbonizaré antes que le causes algún daño!", -- esMX Wall = "¡La lava se arremolina alrededor de %s!", Portal = "%s comienza a abrir un Portal Crepuscular", NameTenebron = "Tenebron", NameShadron = "Shadron", NameVesperon = "Vesperon", FireWallOn = "Tsunami de llamas: %s", VoidZoneOn = "Fisura de las Sombras: %s", VoidZones = "Fallos en Fisura de las Sombras (en este intento): %s", FireWalls = "Fallos en Tsunami de llamas (en este intento): %s" }) ---------------------- -- El Sagrario Rubí -- ---------------------- ----------------------------- -- Baltharus el Batallante -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "Baltharus el Batallante" }) L:SetWarningLocalization({ WarningSplitSoon = "Separación en breve" }) L:SetOptionLocalization({ WarningSplitSoon = "Mostrar aviso previo para la separación de banda" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "Saviana Furia Ardiente" }) ------------------------ -- General Zarithrian -- ------------------------ L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "General Zarithrian" }) L:SetWarningLocalization({ WarnAdds = "Ónices clamallamas", warnCleaveArmor = "%s en >%s< (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "Siguientes Ónices clamallamas", AddsArrive = "Adds llegan en" }) L:SetOptionLocalization({ WarnAdds = "Anunciar cuando aparezcan Ónices clamallamas", TimerAdds = "Mostrar temporizador para los siguientes Ónices clamallamas", CancelBuff = "Eliminar $spell:10278 y $spell:642 si se usa para eliminar $spell:74367", AddsArrive = "Mostrar temporizador para a llegada de adds", --Needs Translating }) L:SetMiscLocalization({ SummonMinions = "¡Reducidlos a cenizas, esbirros!" }) ------------ -- Halion -- ------------ L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "Halion el Destructor Crepuscular" }) L:SetWarningLocalization({ TwilightCutterCast = "Lanzando Corte Crepuscular en 5 s" }) L:SetOptionLocalization({ TwilightCutterCast = "Mostrar aviso cuando se esté lanzando $spell:74769", AnnounceAlternatePhase = "Mostrar avisos y temporizadores que no pertenezcan a tu fase actual", SetIconOnConsumption = "Poner iconos en los objetivos de $spell:74562 y $spell:74792"--So we can use single functions for both versions of spell. }) L:SetMiscLocalization({ Halion = "Halion", PhysicalRealm = "Reino físico", MeteorCast = "¡Los cielos arden!", Phase2 = "En el reino del crepúsculo solo encontraréis sufrimiento. ¡Entrad si os atrevéis!", Phase3 = "¡Yo soy la luz y la oscuridad! ¡Temed, mortales, la llegada de Alamuerte!", twilightcutter = "¡Temed la sombra!", -- ¡Las esferas que orbitan emiten energía oscura!", -- Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "Disfrutad la victoria, mortales, porque será la última. ¡Este mundo arderá cuando vuelva el maestro!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.fr.lua ================================================ if GetLocale() ~= "frFR" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "Obscuron" }) L:SetMiscLocalization({ YellShadronPull = "Je n'ai peur de rien ! Et surtout pas de vous !", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "Ténébron" }) L:SetMiscLocalization({ YellTenebronPull = "Vous n'avez pas votre place ici ! Votre place... est parmi les disparus !", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "Vespéron" }) L:SetMiscLocalization({ YellVesperonPull = "Vous n'êtes pas une menace, êtres inférieurs ! Faites de votre mieux !", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "Sartharion" }) L:SetWarningLocalization({ WarningTenebron = "Ténébron Arrive", WarningShadron = "Obscuron Arrive", WarningVesperon = "Vespéron Arrive", WarningFireWall = "Tsunami de flammes !", WarningWhelpsSoon = "Bientôt des petits de Tenebron", WarningPortalSoon = "Bientôt le portail de Shadron", WarningReflectSoon = "Vesperon Réfléchir bientôt", WarningVesperonPortal = "Portail de Vespéron", WarningTenebronPortal = "Portail de Ténébron", WarningShadronPortal = "Portail d'Obscuron" }) L:SetTimerLocalization({ TimerTenebron = "Ténébron Arrive", TimerShadron = "Obscuron Arrive", TimerVesperon = "Vespéron Arrive", TimerTenebronWhelps = "Dragonnets de Ténébron", TimerShadronPortal = "Portail Shadron", TimerVesperonPortal = "Portail Vesperon", TimerVesperonPortal2 = "Portail Vesperon 2" }) L:SetOptionLocalization({ AnnounceFails = "Affiche les joueurs qui n'ont pas évité les zones de vide / Tsunamis de flammes (Nécessite l'activation des annonces et être promu ou leader)", TimerTenebron = "Montre le timer pour Ténébron", TimerShadron = "Montre le timer pour Obscuron", TimerVesperon = "Montre le timer pour Vespéron", TimerTenebronWhelps = "Montrer la minuterie pour les dragonnets Tenebron", TimerShadronPortal = "Afficher la minuterie pour le portail Shadron", TimerVesperonPortal = "Montrer la minuterie pour Vesperon Portal", TimerVesperonPortal2 = "Montrer la minuterie pour Vesperon Portal 2", WarningFireWall = "Montre une alerte spéciale pour les Tsunamis de flammes", WarningTenebron = "Montre le timer avant que Ténébron arrive", WarningShadron = "Montre le timer avant qu'Obscuron arrive", WarningVesperon = "Montre le timer avant que Vespéron arrive", WarningWhelpsSoon = "Annoncer les dragonnets Tenebron bientôt", WarningPortalSoon = "Annoncer le portail Shadron bientôt", WarningReflectSoon = "Annonce Vesperon Reflect bientôt", WarningTenebronPortal = "Montre une alerte spéciale pour les portails de Ténébron", WarningShadronPortal = "Montre une alerte spéciale pour les portails d'Obscuron", WarningVesperonPortal = "Montre une alerte spéciale pour les portails de Vespéron" }) L:SetMiscLocalization({ YellSarthPull = "Ces œufs sont sous ma responsabilité. Je vous ferai brûler avant de vous laisser y toucher !", Wall = "lave qui entoure", Portal = "commence à incanter un portail", NameTenebron = "Ténébron", NameShadron = "Obscuron", NameVesperon = "Vespéron", FireWallOn = "Tsunamis de flammes: %s", VoidZoneOn = "Zone de vide : %s", VoidZones = "Zones de vide ratées (cet essai): %s", FireWalls = "Tsunamis de flammes ratés (cet essai): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "Baltharus l'Enfant de la guerre" }) L:SetWarningLocalization({ WarningSplitSoon = "Split soon" }) L:SetOptionLocalization({ WarningSplitSoon = "Show pre-warning for Split" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "Saviana Ragefeu" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "Général Zarithrian" }) L:SetWarningLocalization({ WarnAdds = "New adds", warnCleaveArmor = "%s on >%s< (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "New adds", AddsArrive = "Adds arrivent dans" }) L:SetOptionLocalization({ WarnAdds = "Announce new adds", TimerAdds = "Show timer for new adds", CancelBuff = "Supprimer $spell:10278 et $spell:642 s'il est utilisé pour supprimer $spell:74367", AddsArrive = "Show timer for adds arrival", --Needs Translating warnCleaveArmor = DBM_CORE_L.AUTO_ANNOUNCE_OPTIONS.spell:format(74367, GetSpellInfo(74367) or "unknown") }) L:SetMiscLocalization({ SummonMinions = "Serviteurs, réduisez-les en cendres !" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "Halion le destructeur du Crépuscule" }) L:SetWarningLocalization({ TwilightCutterCast = "Casting Twilight Cutter: 5 sec" }) L:SetOptionLocalization({ TwilightCutterCast = "Show warning when $spell:77844 is being cast", AnnounceAlternatePhase = "Show warnings/timers for phase you aren't in as well", SetIconOnConsumption = "Set icons on $spell:74562 or $spell:74792 targets"--So we can use single functions for both versions of spell. }) L:SetMiscLocalization({ Halion = "Halion", PhysicalRealm = "Royaume matériel", MeteorCast = "Les cieux s'embrasent !", Phase2 = "Vous ne trouverez que souffrance au royaume du crépuscule ! Entrez si vous l'osez !", Phase3 = "Je suis la lumière et l'ombre ! Tremblez, mortels, devant le héraut d'Aile-de-mort !", twilightcutter = "Méfiez-vous de l'ombre !", --"Les sphères volantes rayonnent d'énergie noire !", -- Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "Relish this victory, mortals, for it will be your last. This world will burn with the master's return!"--needs translation }) ================================================ FILE: DBM-ChamberOfAspects/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- 샤드론 -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "샤드론" }) L:SetMiscLocalization({ YellShadronPull = "난 두렵지 않다! 특히 너희 같은 것들은!", }) --------------- -- 테네브론 -- --------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "테네브론" }) L:SetMiscLocalization({ YellTenebronPull = "여기에 너희 자리는 없다! 네놈들이 가야 할 곳은... 바로 저승이다!", }) --------------- -- 베스페론 -- --------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "베스페론" }) L:SetMiscLocalization({ YellVesperonPull = "네놈들 따위 겁낼 줄 아느냐... 비천한 것들! 어디 한번 덤벼봐라!", }) --------------- -- 살타리온 -- --------------- L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "살타리온" }) L:SetWarningLocalization({ WarningTenebron = "테네브론 진입", WarningShadron = "샤드론 진입", WarningVesperon = "베스페론 진입", WarningFireWall = "화염의 벽!", WarningWhelpsSoon = "테네브론 새끼용 순", WarningPortalSoon = "곧 샤드론 차원문", WarningReflectSoon = "베스페론 은 곧 반영", WarningVesperonPortal = "베스페론의 차원문 생성!!", WarningTenebronPortal = "테네브론의 차원문 생성!!", WarningShadronPortal = "샤드론의 차원문 생성!!" }) L:SetTimerLocalization({ TimerTenebron = "테네브론 진입", TimerShadron = "샤드론 진입", TimerVesperon = "베스페론 진입", TimerTenebronWhelps = "테네브론 새끼용", TimerShadronPortal = "샤드론 차원문", TimerVesperonPortal = "베스페론 포털", TimerVesperonPortal2 = "베스페론 포털 2" }) L:SetOptionLocalization({ AnnounceFails = "화염의 벽 및 어둠의 균열을 피하지 못한 공대원을 대화창에 알리기(승급 권한 필요)", TimerTenebron = "테네브론 진입 바 보기", TimerShadron = "샤드론 진입 바 보기", TimerVesperon = "베스페론 진입 바 보기", TimerTenebronWhelps = "테네브론 새끼용의 타이머 표시", TimerShadronPortal = "샤드론 차원문의 타이머 표시", TimerVesperonPortal = "베스페론 포털의 타이머 표시", TimerVesperonPortal2 = "베스페론 포털 2의 타이머 표시", WarningFireWall = "화염의 벽 특수 경고 보기", WarningTenebron = "테네브론 진입 알림", WarningShadron = "샤드론 진입 알림", WarningVesperon = "베스페론 진입 알림", WarningWhelpsSoon = "곧 테네브론 새끼용 발표", WarningPortalSoon = "곧 샤드론 차원문 발표", WarningReflectSoon = "곧 베스페론 리플렉트 발표", WarningTenebronPortal = "테네브론의 차원문 특수 경고 보기", WarningShadronPortal = "샤드론의 차원문 특수 경고 보기", WarningVesperonPortal = "베스페론의 차원문 특수 경고 보기" }) L:SetMiscLocalization({ YellSarthPull = "내 임무는 알을 보호하는 것. 알에 손대지 못하게 모두 불태워 주마.", Wall = "둘러싼 용암이 끓어오릅니다!", Portal = "황혼의 차원문을 엽니다!!", NameTenebron = "테네브론", NameShadron = "샤드론", NameVesperon = "베스페론", FireWallOn = "용암 파도 : %s", VoidZoneOn = "어둠의 균열 : %s", VoidZones = "어둠의 균열 실패(현재 시도): %s", FireWalls = "용암 파도 실패(현재 시도): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "전쟁의 아들 발타루스" }) L:SetWarningLocalization({ WarningSplitSoon = "곧 분리" }) L:SetOptionLocalization({ WarningSplitSoon = "분리 이전에 알림 보기" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "사비아나 레이지파이어" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "장군 자리스리안" }) L:SetWarningLocalization({ WarnAdds = "지원 병력", warnCleaveArmor = "%s : >%s< (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "다음 지원 병력" }) L:SetOptionLocalization({ WarnAdds = "지원 병력 알림 보기", TimerAdds = "다음 지원 병력 바 보기", CancelBuff = "$spell:74367 을 제거하는 데 사용되는 경우 $spell:10278 및 $spell:642 를 제거합니다.", AddsArrive = "Show timer for adds arrival", --Needs Translating }) L:SetMiscLocalization({ SummonMinions = "저놈들을 재로 만들어버려라!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "황혼의 파괴자 할리온" }) L:SetWarningLocalization({ TwilightCutterCast = "주문시전 황혼 절단기 : 5 초" }) L:SetOptionLocalization({ TwilightCutterCast = "$spell:74769 시전 알림 보기", AnnounceAlternatePhase = "다른 위상 우두머리 알림/바 보기", SetIconOnConsumption = "$spell:74562 또는 $spell:74792 대상에게 전술 목표 아이콘 설정" }) L:SetMiscLocalization({ Halion = "할리온", PhysicalRealm = "물리 영역", MeteorCast = "하늘이 타오른다!", Phase2 = "황혼 세계에서는 고통만이 있으리라! 자신 있다면 들어와 봐라!", Phase3 = "나는 빛이자 어둠이다! 필멸자들아, 데스윙의 사자 앞에 무릎 꿇어라!", twilightcutter = "어둠을 경계하라!", --"주위를 회전하는 구슬들이 고동치며 어둠의 기운을 내뿜습니다!", -- Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "필멸자들아, 승리를 만끽해라. 그것이 마지막일 테니. 주인님이 돌아오시면 이 세상은 불타버리리라!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.ru.lua ================================================ if GetLocale() ~= "ruRU" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "Шадрон" }) L:SetMiscLocalization({ YellShadronPull = "Я не боюсь ничего! Тем более – вас!", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "Тенеброн" }) L:SetMiscLocalization({ YellTenebronPull = "Вам здесь не место! Ваше место среди усопших!", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "Весперон" }) L:SetMiscLocalization({ YellVesperonPull = "Вы безобидны, ничтожные создания. Покажите, на что вы способны!", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "Сартарион" }) L:SetWarningLocalization({ WarningTenebron = "Прибытие Тенеброна", WarningShadron = "Прибытие Шадрона", WarningVesperon = "Прибытие Весперона", WarningFireWall = "Огненная стена", WarningWhelpsSoon = "Скоро дракончики тенеброна", WarningPortalSoon = "Скоро портал Шадрон", WarningReflectSoon = "Весперон: Скоро отражение", WarningVesperonPortal = "Портал Весперона", WarningTenebronPortal = "Портал Тенеброна", WarningShadronPortal = "Портал Шадрона" }) L:SetTimerLocalization({ TimerTenebron = "Прибытие Тенеброна", TimerShadron = "Прибытие Шадрона", TimerVesperon = "Прибытие Весперона", TimerTenebronWhelps = "Тенебронские дракончики", TimerShadronPortal = "Портал Шадрона", TimerVesperonPortal = "Портал Весперона", TimerVesperonPortal2 = "Портал Весперона 2" }) L:SetOptionLocalization({ AnnounceFails = "Объявлять игроков, потерпевших неудачу в Огненной стене и Расщелине тьмы
(требуются права лидера или помощника)", TimerTenebron = "Отсчет времени до прибытия Тенеброна", TimerShadron = "Отсчет времени до прибытия Шадрона", TimerVesperon = "Отсчет времени до прибытия Весперона", TimerTenebronWhelps = "Показать таймер для тенебронских дракончиков", TimerShadronPortal = "Показать таймер для портала Шадрона", TimerVesperonPortal = "Показать таймер для портала Весперон", TimerVesperonPortal2 = "Показать таймер для портала Весперон 2", WarningFireWall = "Cпец-предупреждение для Огненной стены", WarningTenebron = "Объявлять прибытие Тенеброна", WarningShadron = "Объявлять прибытие Шадрона", WarningVesperon = "Объявлять прибытие Весперона", WarningWhelpsSoon = "Скоро анонсируйте тенебронских дракончиков", WarningPortalSoon = "Анонсируйте портал Шадрон в ближайшее время", WarningReflectSoon = "Анонсировать Весперон, размышлять в ближайшее время", WarningTenebronPortal = "Cпец-предупреждение для порталов Тенеброна", WarningShadronPortal = "Cпец-предупреждение для порталов Шадрона", WarningVesperonPortal = "Cпец-предупреждение для порталов Весперона" }) L:SetMiscLocalization({ YellSarthPull = "Моя обязанность – оберегать эти яйца, и вы сгорите, прежде чем хоть пальцем тронете их!", Wall = "Лава вокруг %s начинает бурлить!", Portal = "%s открывает сумрачный портал!", NameTenebron = "Тенеброн", NameShadron = "Шадрон", NameVesperon = "Весперон", FireWallOn = "Огненная стена: %s", VoidZoneOn = "Расщелина тьмы: %s", VoidZones = "Потерпели неудачу в Расщелине тьмы (за эту попытку): %s", FireWalls = "Потерпели неудачу в Огненной стене (за эту попытку): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "Балтар Рожденный в Битве" }) L:SetWarningLocalization({ WarningSplitSoon = "Скоро разделение" }) L:SetOptionLocalization({ WarningSplitSoon = "Предупреждать заранее о разделении" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "Савиана Огненная Пропасть" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "Генерал Заритриан" }) L:SetWarningLocalization({ WarnAdds = "Новые помощники", warnCleaveArmor = "%s на |3-5(>%s<) (%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "Новые помощники", AddsArrive = "Прибытие помощников" }) L:SetOptionLocalization({ WarnAdds = "Объявлять новых помощников", TimerAdds = "Отсчет времени до новых помощников", CancelBuff = "Удалить $spell:10278 и $spell:642, если используется для удаления $spell:74367", AddsArrive = "Отсчет времени до прибытия помощников" }) L:SetMiscLocalization({ SummonMinions = "Слуги! Обратите их в пепел!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "Халион Сумеречный Разрушитель" }) L:SetWarningLocalization({ TwilightCutterCast = "Применение заклинания Лезвие сумерек: 5 сек" }) L:SetOptionLocalization({ TwilightCutterCast = "Предупреждать о применении заклинания $spell:77844", AnnounceAlternatePhase = "Показывать предупреждения и таймеры для обоих миров", SetIconOnConsumption = "Устанавливать метки на цели заклинаний $spell:74562 или $spell:74792"--So we can use single functions for both versions of spell. }) L:SetMiscLocalization({ Halion = "Халион", PhysicalRealm = "Реальный мир", MeteorCast = "Небеса в огне!", Phase2 = "В мире сумерек вы найдете лишь страдания! Входите, если посмеете!", Phase3 = "Я есть свет и я есть тьма! Трепещите, ничтожные, перед посланником Смертокрыла!", twilightcutter = "Остерегайтесь теней!", --"Во вращающихся сферах пульсирует темная энергия!", Kill = "Это ваша последняя победа. Насладитесь сполна ее вкусом. Ибо когда вернется мой господин, этот мир сгинет в огне!" }) ================================================ FILE: DBM-ChamberOfAspects/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L ---------------------------- -- The Obsidian Sanctum -- ---------------------------- -- Shadron -- --------------- L = DBM:GetModLocalization("Shadron") L:SetGeneralLocalization({ name = "夏德朗" }) L:SetMiscLocalization({ YellShadronPull = "我無所畏懼!你們根本不值一提!", }) ---------------- -- Tenebron -- ---------------- L = DBM:GetModLocalization("Tenebron") L:SetGeneralLocalization({ name = "坦納伯朗" }) L:SetMiscLocalization({ YellTenebronPull = "你們沒資格來這裡!你們的歸宿...在死者的國度!", }) ---------------- -- Vesperon -- ---------------- L = DBM:GetModLocalization("Vesperon") L:SetGeneralLocalization({ name = "維斯佩朗" }) L:SetMiscLocalization({ YellVesperonPull = "你們這些下等生物根本無法對我構成任何威脅!使出全力戰鬥吧!", }) ------------------ -- Sartharion -- ------------------ L = DBM:GetModLocalization("Sartharion") L:SetGeneralLocalization({ name = "『黑曜守護者』撒爾薩里安" }) L:SetWarningLocalization({ WarningTenebron = "坦納伯朗到來", WarningShadron = "夏德朗到來", WarningVesperon = "維斯佩朗到來", WarningFireWall = "火焰障壁", WarningWhelpsSoon = "鐵粉幼崽 很快", WarningPortalSoon = "莎德龍傳送門很快", WarningReflectSoon = "維斯佩朗 反映很快", WarningVesperonPortal = "維斯佩朗的傳送門", WarningTenebronPortal = "坦納伯朗的傳送門", WarningShadronPortal = "夏德朗的傳送門" }) L:SetTimerLocalization({ TimerTenebron = "坦納伯朗到來", TimerShadron = "夏德朗到來", TimerVesperon = "維斯佩朗到來", TimerTenebronWhelps = "鐵粉幼崽", TimerShadronPortal = "沙龍傳送門", TimerVesperonPortal = "維斯佩朗 傳送門", TimerVesperonPortal2 = "維斯佩朗 傳送門 2" }) L:SetOptionLocalization({ AnnounceFails = "公佈踩中暗影裂縫和撞上火焰障壁的玩家到團隊頻道 (需要團隊隊長或助理權限)", TimerTenebron = "為坦納伯朗到來顯示計時器", TimerShadron = "為夏德朗到來顯示計時器", TimerVesperon = "為維斯佩朗到來顯示計時器", TimerTenebronWhelps = "顯示 鐵粉幼崽 的計時器", TimerShadronPortal = "顯示 沙龍傳送門 的計時器", TimerVesperonPortal = "顯示 維斯佩朗 傳送門 的計時器", TimerVesperonPortal2 = "顯示 維斯佩朗 傳送門 2 的計時器", WarningFireWall = "為火焰障壁顯示特別警告", WarningTenebron = "提示坦納伯朗到來", WarningShadron = "提示夏德朗到來", WarningVesperon = "提示維斯佩朗到來", WarningWhelpsSoon = "很快宣布 鐵粉幼崽", WarningPortalSoon = "很快宣布沙龍傳送門", WarningReflectSoon = "宣布 維斯佩朗 反映很快", WarningTenebronPortal = "為坦納伯朗的傳送門顯示特別警告", WarningShadronPortal = "為夏德朗的傳送門顯示特別警告", WarningVesperonPortal = "為維斯佩朗的傳送門顯示特別警告" }) L:SetMiscLocalization({ YellSarthPull = "我的職責就是要看守這些龍蛋。在他們受到任何傷害之前,我將會看著你陷入火焰之中!", Wall = "圍繞著%s的熔岩開始劇烈地翻騰!", Portal = "%s開始開啟暮光傳送門!", NameTenebron = "坦納伯朗", NameShadron = "夏德朗", NameVesperon = "維斯佩朗", FireWallOn = "火焰障壁: %s", VoidZoneOn = "暗影裂縫: %s", VoidZones = "踩中暗影裂縫(這一次): %s", FireWalls = "撞上火焰障壁(這一次): %s" }) ------------------------ -- The Ruby Sanctum -- ------------------------ -- Baltharus the Warborn -- ----------------------------- L = DBM:GetModLocalization("Baltharus") L:SetGeneralLocalization({ name = "『戰爭之子』巴爾薩魯斯" }) L:SetWarningLocalization({ WarningSplitSoon = "分裂即將到來" }) L:SetOptionLocalization({ WarningSplitSoon = "為分裂顯示預先警告" }) ------------------------- -- Saviana Ragefire -- ------------------------- L = DBM:GetModLocalization("Saviana") L:SetGeneralLocalization({ name = "薩薇安娜‧怒焰" }) -------------------------- -- General Zarithrian -- -------------------------- L = DBM:GetModLocalization("Zarithrian") L:SetGeneralLocalization({ name = "扎里斯利安將軍" }) L:SetWarningLocalization({ WarnAdds = "新的小怪", warnCleaveArmor = ">%1$s<中了%2$s(%s)" -- Cleave Armor on >args.destName< (args.amount) }) L:SetTimerLocalization({ TimerAdds = "新的小怪" }) L:SetOptionLocalization({ WarnAdds = "提示新的小怪", TimerAdds = "為新的小怪顯示計時器", CancelBuff = "刪除 $spell:10278 和 $spell:642 如果用於刪除 $spell:74367", AddsArrive = "Show timer for adds arrival" --Needs Translating }) L:SetMiscLocalization({ SummonMinions = "去吧,將他們挫骨揚灰!" }) ------------------------------------- -- Halion the Twilight Destroyer -- ------------------------------------- L = DBM:GetModLocalization("Halion") L:SetGeneralLocalization({ name = "海萊恩" }) L:SetWarningLocalization({ TwilightCutterCast = "施放暮光切割: 5秒後" }) L:SetOptionLocalization({ TwilightCutterCast = "當$spell:77844開始施放時顯示警告", AnnounceAlternatePhase = "不管你進不進下一階段一樣顯示警告/計時器", SetIconOnConsumption = "為$spell:74562或$spell:74792的目標設置標記"--So we can use single functions for both versions of spell. }) L:SetMiscLocalization({ Halion = "物理 海萊恩", PhysicalRealm = "現實之域", MeteorCast = "天堂也將燃燒!", Phase2 = "在暮光的國度只有磨難在等著你!有膽量的話就進去吧!", Phase3 = "我是光明亦是黑暗!凡人,匍匐在死亡之翼的信使面前吧!", twilightcutter = "暗影無所不在!", --"這些環繞的球體散發著黑暗能量!", -- Can't use this since on Warmane it triggers twice, 5s prior and on cutter. Kill = "享受這場勝利吧,凡人們,因為這是你們最後一次的勝利。這世界將會在主人回歸時化為火海!" }) ================================================ FILE: DBM-Coliseum/Anub'arak.lua ================================================ local mod = DBM:NewMod("Anub'arak_Coliseum", "DBM-Coliseum") local L = mod:GetLocalizedStrings() local CancelUnitBuff = CancelUnitBuff local GetSpellInfo = GetSpellInfo mod:SetRevision("20250929220131") mod:SetCreatureID(34564) mod:SetEncounterID(645) mod:SetUsedIcons(1, 2, 3, 4, 5, 8) mod:SetMinSyncRevision(20220909000000) mod:RegisterCombat("combat") mod:RegisterEventsInCombat( "SPELL_CAST_START 66118 67630 68646 68647 66134", "SPELL_CAST_SUCCESS 66012", "SPELL_AURA_APPLIED 67574 66013 67700 68509 68510 66012 10278", "SPELL_AURA_REFRESH 67574 66013 67700 68509 68510 66012", "SPELL_AURA_REMOVED 66013 67700 68509 68510 10278", "CHAT_MSG_MONSTER_YELL", "CHAT_MSG_RAID_BOSS_EMOTE", "UNIT_SPELLCAST_SUCCEEDED boss1" ) -- General local enrageTimer = mod:NewBerserkTimer(570) -- Stage One: Emerge mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(1)..": "..GetSpellInfo(65982)) local warnEmerge = mod:NewAnnounce("WarnEmerge", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", nil, nil, nil, 65982) local warnEmergeSoon = mod:NewAnnounce("WarnEmergeSoon", 1, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", nil, nil, nil, 65982) local warnAdds = mod:NewAnnounce("warnAdds", 3, 45419, nil, nil, nil, 66332) local preWarnShadowStrike = mod:NewSoonAnnounce(66134, 3) local warnShadowStrike = mod:NewSpellAnnounce(66134, 4) local warnFreezingSlash = mod:NewTargetNoFilterAnnounce(66012, 2, nil, "Tank|Healer") local specWarnShadowStrike = mod:NewSpecialWarningSpell(66134, "Tank", nil, 2, 1) --Don't have a good voice for this. Need a "stun mob now" local specWarnPCold = mod:NewSpecialWarningYou(66013, false, nil, nil, 1, 2) local timerEmerge = mod:NewNextTimer(65, 65982, nil, nil, nil, 6, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp", DBM_COMMON_L.IMPORTANT_ICON, nil, 1) -- Time to Emerge, related to Phase 2, but it's here for better Grouping local timerAdds = mod:NewNextTimer(45, 66332, nil, nil, nil, 1, 45419, DBM_COMMON_L.TANK_ICON) -- (25H Lordaeron 2022/09/03) - Stage 1/45.1, Stage 2/24.9, Stage 1/65.0, 10.0/75.0/99.9, 45.0, Stage 3/1.9, 43.1/45.0, 45.0 local timerShadowStrike = mod:NewNextTimer(30, 66134, nil, nil, nil, 3, nil, DBM_COMMON_L.DEADLY_ICON, nil, 3) local timerFreezingSlash = mod:NewNextTimer(20, 66012, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON) -- (25H Lordaeron 2022/09/03) - Stage 1/20.0, 20.0, 20.0, Stage 2/4.9, Stage 1/65.0, 15.1/80.1/85.0, 20.0, 20.1, Stage 3/1.8, 18.2/20.0, 20.0, 20.0, 20.0 local timerPCold = mod:NewBuffActiveTimer(15, 66013, nil, nil, nil, 5, nil, DBM_COMMON_L.HEALER_ICON) mod:AddSetIconOption("SetIconsOnPCold", 66013, true, 7, {1, 2, 3, 4, 5}) mod:AddBoolOption("AnnouncePColdIcons", false, nil, nil, nil, nil, 66013) mod:AddBoolOption("AnnouncePColdIconsRemoved", false, nil, nil, nil, nil, 66013) mod:GroupSpells(66332, 66134) -- Nerubian Burrower, Shadow Strike -- Stage Two: Submerge Anub'Arak mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(2)..": "..GetSpellInfo(65981)) local warnSubmerge = mod:NewAnnounce("WarnSubmerge", 3, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", nil, nil, nil, 65981) local warnSubmergeSoon = mod:NewAnnounce("WarnSubmergeSoon", 2, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", nil, nil, nil, 65981) local warnPursue = mod:NewTargetNoFilterAnnounce(67574, 4) local warnHoP = mod:NewTargetNoFilterAnnounce(10278, 2, nil, false) --Heroic strat revolves around kiting pursue and using Hand of Protection. local specWarnPursue = mod:NewSpecialWarningRun(67574, nil, nil, 2, 4, 2) local timerSubmerge = mod:NewNextTimer(80, 65981, nil, nil, nil, 6, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp", DBM_COMMON_L.IMPORTANT_ICON, nil, 1) -- Time to Submerge, related to Phase 1, but it's here for better Grouping local timerHoP = mod:NewBuffActiveTimer(10, 10278, nil, nil, nil, 5) --So we will track bops to make this easier. mod:AddSetIconOption("PursueIcon", 67574, true, 0, {8}) -- Stage Three: Leeching Swarm mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(3)..": "..GetSpellInfo(66118)) local warnPhase3 = mod:NewPhaseAnnounce(3, nil, 66118) mod:AddBoolOption("RemoveHealthBuffsInP3", false, nil, nil, nil, nil, 66118) mod.vb.Burrowed = false --"<40.90 19:45:27> [UNIT_SPELLCAST_SUCCEEDED] Anub'arak -Nerubian Burrower- [[boss1:Nerubian Burrower::0:]]", -- [1059] --[[disabling adds scheduling since we have proper event for this local function Adds(self) if self:IsInCombat() then if not self.vb.Burrowed then timerAdds:Start() warnAdds:Schedule(45) self:Schedule(45, Adds, self) end end end]] local function ShadowStrike(self) self:Unschedule(ShadowStrike) if self:IsInCombat() then timerShadowStrike:Cancel() timerShadowStrike:Start() preWarnShadowStrike:Cancel() preWarnShadowStrike:Schedule(25.5) self:Schedule(30, ShadowStrike, self) end end -- Warmane workaround, since emerge boss emote is not being fired local function EmergeFix(self) self:SetStage(1) self.vb.Burrowed = false timerEmerge:Cancel() timerAdds:Start(5) -- warnAdds:Schedule(5) -- self:Schedule(5, Adds, self) warnEmerge:Show() warnSubmergeSoon:Schedule(70) timerSubmerge:Start() if self:IsHeroic() then ShadowStrike(self) end end function mod:AnnouncePcoldIcons(uId, icon) if self.Options.AnnouncePColdIcons and DBM:IsInGroup() and DBM:GetRaidRank() > 1 then SendChatMessage(L.PcoldIconSet:format(icon, DBM:GetUnitFullName(uId)), DBM:IsInRaid() and "RAID" or "PARTY") end end function mod:RemoveBuffs() -- Remove HP buffs for p3 CancelUnitBuff("player", (GetSpellInfo(47440))) -- Commanding Shout CancelUnitBuff("player", (GetSpellInfo(48161))) -- Power Word: Fortitude CancelUnitBuff("player", (GetSpellInfo(48162))) -- Prayer of Fortitude CancelUnitBuff("player", (GetSpellInfo(72590))) -- Runescroll of Fortitude end function mod:OnCombatStart(delay) self:SetStage(1) self.vb.Burrowed = false timerAdds:Start(10-delay) -- (25H Lordaeron 2022/09/03) - pull:10.0 -- warnAdds:Schedule(10-delay) -- self:Schedule(10-delay, Adds, self) warnSubmergeSoon:Schedule(70-delay) timerSubmerge:Start(-delay) -- EMOTE 2s earlier than Submerge Anub'arak unit cast. (25H Lordaeron 2022/09/03) - pull:79.9 enrageTimer:Start(-delay) timerFreezingSlash:Start(15-delay) -- (25H Lordaeron 2022/09/03) - pull:15.0 if self:IsHeroic() then timerShadowStrike:Start() preWarnShadowStrike:Schedule(25.5-delay) self:Schedule(30-delay, ShadowStrike, self) end end function mod:SPELL_CAST_START(args) if args:IsSpellID(66118, 67630, 68646, 68647) then -- Swarm (start p3) self:SetStage(3) warnPhase3:Show() warnEmergeSoon:Cancel() warnSubmergeSoon:Cancel() timerEmerge:Stop() timerSubmerge:Stop() if self:IsNormal() then timerAdds:Cancel() -- warnAdds:Cancel() -- self:Unschedule(Adds) end if self.Options.RemoveHealthBuffsInP3 then mod:ScheduleMethod(0.1, "RemoveBuffs") end elseif args.spellId == 66134 and self:IsHeroic() and self:AntiSpam(2, 1) then -- Shadow Strike self:Unschedule(ShadowStrike) ShadowStrike(self) if self.Options.SpecWarn66134spell then specWarnShadowStrike:Show() else warnShadowStrike:Show() end end end function mod:SPELL_CAST_SUCCESS(args) if args.spellId == 66012 then -- Freezing Slash (caught one log where AURA_APPLIED was not present in one of the casts, so start timer on cast success instead) timerFreezingSlash:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if spellId == 67574 then -- Pursue if args:IsPlayer() then specWarnPursue:Show() specWarnPursue:Play("justrun") specWarnPursue:ScheduleVoice(1.5, "keepmove") else warnPursue:Show(args.destName) end if self.Options.PursueIcon then self:SetIcon(args.destName, 8, 15) end elseif args:IsSpellID(66013, 67700, 68509, 68510) then -- Penetrating Cold timerPCold:Show() if args:IsPlayer() then specWarnPCold:Show() specWarnPCold:Play("targetyou") end if self.Options.SetIconsOnPCold then local maxIcon = self:IsDifficulty("normal25", "heroic25") and 5 or 2 self:SetSortedIcon("roster", 1, args.destName, 1, maxIcon, false, "AnnouncePcoldIcons") end elseif spellId == 66012 then -- Freezing Slash warnFreezingSlash:Show(args.destName) elseif spellId == 10278 and self:IsInCombat() then -- Hand of Protection warnHoP:Show(args.destName) timerHoP:Start(args.destName) end end mod.SPELL_AURA_REFRESH = mod.SPELL_AURA_APPLIED function mod:SPELL_AURA_REMOVED(args) if args:IsSpellID(66013, 67700, 68509, 68510) then -- Penetrating Cold if self.Options.SetIconsOnPCold then self:SetIcon(args.destName, 0) if self.Options.AnnouncePColdIconsRemoved and DBM:GetRaidRank() > 1 then SendChatMessage(L.PcoldIconRemoved:format(args.destName), "RAID") end end elseif args.spellId == 10278 and self:IsInCombat() then -- Hand of Protection timerHoP:Cancel(args.destName) end end function mod:CHAT_MSG_MONSTER_YELL(msg) -- Warmane workaround since submerge emote sometimes is not being fired if msg and msg == L.YellBurrow then self:SetStage(2) self.vb.Burrowed = true timerAdds:Cancel() warnAdds:Cancel() warnSubmerge:Show() warnEmergeSoon:Schedule(58.5) timerEmerge:Start() timerFreezingSlash:Stop() if self:IsHeroic() then self:Unschedule(ShadowStrike) timerShadowStrike:Cancel() preWarnShadowStrike:Cancel() end self:Schedule(65, EmergeFix, self) -- Warmane workaround, since emerge boss emote is not being fired end end function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg) -- if msg and msg:find(L.Burrow) then -- self:SetStage(2) -- self.vb.Burrowed = true -- timerAdds:Cancel() -- warnAdds:Cancel() -- warnSubmerge:Show() -- warnEmergeSoon:Schedule(58.5) -- timerEmerge:Start() -- timerFreezingSlash:Stop() -- self:Schedule(65, EmergeFix, self) -- Warmane workaround, since emerge boss emote is not being fired if msg and msg:find(L.Emerge) then self:Unschedule(EmergeFix) -- Warmane workaround: failsafe if script gets fixed eventually self:SetStage(1) self.vb.Burrowed = false timerEmerge:Cancel() timerAdds:Start(5) -- warnAdds:Schedule(5) -- self:Schedule(5, Adds, self) warnEmerge:Show() warnSubmergeSoon:Schedule(70) timerSubmerge:Start() if self:IsHeroic() then ShadowStrike(self) end end end function mod:UNIT_SPELLCAST_SUCCEEDED(_, spellName) if spellName == GetSpellInfo(66332) then -- Nerubian Borrower warnAdds:Show() timerAdds:Start() end end ================================================ FILE: DBM-Coliseum/Champions.lua ================================================ local mod = DBM:NewMod("Champions", "DBM-Coliseum") local L = mod:GetLocalizedStrings() local UnitGUID = UnitGUID mod:SetRevision("20250929220131") mod:SetCreatureID(34458, 34451, 34459, 34448, 34449, 34445, 34456, 34447, 34441, 34454, 34444, 34455, 34450, 34453, 34461, 34460, 34469, 34467, 34468, 34471, 34465, 34466, 34473, 34472, 34470, 34463, 34474, 34475) mod:SetEncounterID(637) mod:SetMinSyncRevision(20220907000000) mod:RegisterCombat("combat") mod:RegisterKill("yell", L.AllianceVictory, L.HordeVictory) mod:RegisterEventsInCombat( "SPELL_CAST_SUCCESS 66017 68753 68754 68755 66020 68758 68757 68756 66115 66009 66008 66613 66007 66011 65793 65790 65816 68145 68146 68147 65820 68141 68139 68140 65947 65932 65931 66063 65983 65980 65544 65543 65545 65542 65860 66086 67974 67975 67976 66178 68759 68760 68761 65960 65961 66207 65880 65869", "SPELL_AURA_APPLIED 66010 65802 65801 65809 65927 65929 66054 65859 65857 65871 65878 65877", "SPELL_DAMAGE 65817 68142 68143 68144", "SPELL_MISSED 65817 68142 68143 68144", "UNIT_DIED" ) if UnitFactionGroup("player") == "Alliance" then --mod:RegisterKill("yell", L.AllianceVictory) mod:SetBossHealthInfo( -- Horde 34458, L.Gorgrim, 34451, L.Birana, 34459, L.Erin, 34448, L.Rujkah, 34449, L.Ginselle, 34445, L.Liandra, 34456, L.Malithas, 34447, L.Caiphus, 34441, L.Vivienne, 34454, L.Mazdinah, 34444, L.Thrakgar, 34455, L.Broln, 34450, L.Harkzog, 34453, L.Narrhok ) else --mod:RegisterKill("yell", L.HordeVictory) mod:SetBossHealthInfo( -- Alliance 34461, L.Tyrius, 34460, L.Kavina, 34469, L.Melador, 34467, L.Alyssia, 34468, L.Noozle, 34471, L.Baelnor, 34465, L.Velanaa, 34466, L.Anthar, 34473, L.Brienna, 34472, L.Irieth, 34470, L.Saamul, 34463, L.Shaabad, 34474, L.Serissa, 34475, L.Shocuul ) end local FACTION_ALLIANCE, FACTION_HORDE = FACTION_ALLIANCE, FACTION_HORDE -- Announce: 1 - target player with CC, 2 - target player no CC, 3 - target self (npc) -- Death Knight local warnChainsofIce = mod:NewTargetNoFilterAnnounce(66020, 2) -- 66020 local warnDeathgrip = mod:NewTargetNoFilterAnnounce(66017, 2) -- Paladin local warnHandofFreedom = mod:NewTargetNoFilterAnnounce(66115, 2) local warnHandofProt = mod:NewTargetNoFilterAnnounce(66009, 3) -- 66009 local warnHoJ = mod:NewTargetNoFilterAnnounce(66613, 1) -- 66613, 66607 local warnRepentance = mod:NewTargetNoFilterAnnounce(66008, 1) -- 66008 local warnDivineShield = mod:NewSpellAnnounce(66010, 3) -- 66010 local warnAvengingWrath = mod:NewSpellAnnounce(66011, 3) -- 66011 -- Mage local warnIceBlock = mod:NewSpellAnnounce(65802, 3) -- 65802 local warnSheep = mod:NewTargetNoFilterAnnounce(65801, 1, nil, false) local warnBlink = mod:NewSpellAnnounce(65793, 3) -- 65793 local warnCounterspell = mod:NewTargetNoFilterAnnounce(65790, 1) -- 65790 -- Warlock local warnHellfire = mod:NewSpellAnnounce(65816, 4) local warnFear = mod:NewTargetNoFilterAnnounce(65809, 1) -- 65809 local warnDeathCoil = mod:NewTargetNoFilterAnnounce(65820, 1) -- 65820 -- Warrior local preWarnBladestorm = mod:NewSoonAnnounce(65947, 3) local warnBladestorm = mod:NewSpellAnnounce(65947, 4) local warnCharge = mod:NewTargetNoFilterAnnounce(65927, 2) -- 65927, 65929 local warnRetaliation = mod:NewSpellAnnounce(65932, 3) -- 65932 local warnIntimidatingShout = mod:NewSpellAnnounce(65931, 1) -- 65931 -- Shaman local warnHeroism = mod:NewSpellAnnounce(65983, 3) local warnBloodlust = mod:NewSpellAnnounce(65980, 3) local warnEarthShield = mod:NewTargetNoFilterAnnounce(66063, 3) -- 66063 local warnHex = mod:NewTargetNoFilterAnnounce(66054, 1) -- 66054 -- Priest local warnDispersion = mod:NewSpellAnnounce(65544, 3) -- 65544 local warnPsychicScream = mod:NewSpellAnnounce(65543, 1) -- 65543 local warnPsychicHorror = mod:NewTargetNoFilterAnnounce(65545, 1) -- 65545 local warnSilence = mod:NewTargetNoFilterAnnounce(65542, 1) -- 65542 -- Druid local warnBarkskin = mod:NewSpellAnnounce(65860, 3) -- 65860 local warnTranquility = mod:NewSpellAnnounce(66086, 4) -- 66086, 67976, 67975, 67974 local warnEntanglingRoots = mod:NewTargetNoFilterAnnounce(65857, 1) -- 65857 local warnCyclone = mod:NewTargetNoFilterAnnounce(65859, 1, nil, false) -- Rogue local warnShadowstep = mod:NewSpellAnnounce(66178, 2) local warnBlind = mod:NewTargetNoFilterAnnounce(65960, 1) -- 65960 local warnCloakOfShadows = mod:NewSpellAnnounce(65961, 3) -- 65961 -- Hunter local warnDeterrence = mod:NewSpellAnnounce(65871, 3) -- 65871 local warnWingClip = mod:NewTargetNoFilterAnnounce(66207, 1) -- 66207 local warnWyvernSting = mod:NewTargetNoFilterAnnounce(65878, 1) -- 65878, 65877 local warnFrostTrap = mod:NewSpellAnnounce(65880, 3) -- 65880 local warnDisengage = mod:NewSpellAnnounce(65869, 3) -- 65869 local specWarnHellfire = mod:NewSpecialWarningGTFO(65816, nil, nil, nil, 1, 8) local specWarnHandofProt = mod:NewSpecialWarningDispel(66009, "ImmunityDispeller", nil, nil, 1, 2) local specWarnDivineShield = mod:NewSpecialWarningDispel(66010, "ImmunityDispeller", nil, nil, 1, 2) local specWarnIceBlock = mod:NewSpecialWarningDispel(65802, "ImmunityDispeller", nil, nil, 1, 2) local specWarnHandofFreedom = mod:NewSpecialWarningDispel(66115, "MagicDispeller", nil, nil, 1, 2) local specWarnTranquility = mod:NewSpecialWarningInterrupt(66086) local specWarnEarthShield = mod:NewSpecialWarningDispel(66063, "MagicDispeller") local specWarnAvengingWrath = mod:NewSpecialWarningDispel(66011, "MagicDispeller") local specWarnBloodlust = mod:NewSpecialWarningDispel(65980, "MagicDispeller", nil, nil, 1, 2) local specWarnHeroism = mod:NewSpecialWarningDispel(65983, "MagicDispeller", nil, nil, 1, 2) -- log timers for this fight are all over the place. I suspect it is due to CC, and thus, only fixes I will do are if debug catches early refreshes. local timerBladestorm = mod:NewBuffActiveTimer(8, 65947, nil, nil, nil, 2) local timerShadowstepCD = mod:NewCDTimer(30, 66178, nil, nil, nil, 3) -- (25H Lordaeron 2022/09/03) - pull:25.7 local timerBlindCD = mod:NewCDTimer(120, 65960) local timerDeathgripCD = mod:NewCDTimer(20.7, 66017, nil, nil, nil, 3) -- REVIEW! High variance (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/10/12) - pull:22.9, 31.5, 45.1, 34.9, 24.2, 21.9, 31.1, 61.4, 43.9, 21.5 || pull:62.4, 20.7, 21.3, 41.0 local timerBladestormCD = mod:NewCDTimer(90.1, 65947, nil, nil, nil, 2) -- (25H Lordaeron 2022/09/03) - pull:49.0, 90.1, 90.1 local timerFrostTrapCD = mod:NewCDTimer(30, 65880) -- REVIEW! ~5s variance? (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/23-npc:34467 || 25N Lordaeron 2022/10/21-npc:34467) - pull:46.2, 31.8 || pull:22.7, 34.4, 31.6 || pull:47.3, 30.0, 31.8 local timerDisengageCD = mod:NewCDTimer(30, 65869) -- REVIEW! variance? (25H Lordaeron 2022/09/03) - pull:32.6, 40.4 local timerPsychicScreamCD = mod:NewCDTimer(30, 65543) -- variance (25H Lordaeron 2022/09/03) - pull:49.1, 30.0, 31.7, 30.1, 33.5, 31.3, 30.6, 44.0, 37.2, 31.0 local timerBlinkCD = mod:NewCDTimer(15.1, 65793) -- REVIEW! High variance! diff script per npc? (25H Lordaeron 2022/09/03-npc:34449 || 25H Lordaeron 2022/09/23-npc:34468) - pull:21.1, 17.6, 135.2, 20.2, 44.0, 34.7, 27.3, 18.1, 20.6, 19.2 || pull:19.3, 15.1, 28.5, 15.1, 19.3, 21.2, 92.1, 19.3 local timerHoJCD = mod:NewCDTimer(40, 66613) -- REVIEW! variance? (25H Lordaeron 2022/09/03) - pull:178.8 local timerRepentanceCD = mod:NewCDTimer(60, 66008) local timerHoPCD = mod:NewCDTimer(300, 66009) -- REVIEW! variance? (25H Lordaeron 2022/09/03) - pull:32.5 local timerSilenceCD = mod:NewCDTimer(45, 65542) local timerHeroismCD = mod:NewCDTimer(300, 65983) local timerBloodlustCD = mod:NewCDTimer(300, 65980) -- REVIEW! variance? (25H Lordaeron 2022/09/03) - pull:26.9 function mod:SPELL_CAST_SUCCESS(args) local spellId = args.spellId -- Death Knight if args:IsSpellID(66017, 68753, 68754, 68755) and args:IsDestTypePlayer() then -- Death Grip warnDeathgrip:Show(args.destName) timerDeathgripCD:Start() elseif spellId == 66020 and args:IsDestTypePlayer() then -- Chains of Ice warnChainsofIce:Show(args.destName) -- Paladin elseif args:IsSpellID(68758, 68757, 68756, 66115) and not args:IsDestTypePlayer() then -- Hand of Freedom warnHandofFreedom:Show(args.destName) specWarnHandofFreedom:Show(args.destName) specWarnHandofFreedom:Play("dispelboss") elseif spellId == 66009 then -- Hand of Protection warnHandofProt:Show(args.destName) specWarnHandofProt:Show(args.destName) specWarnHandofProt:Play("dispelboss") timerHoPCD:Start() elseif spellId == 66008 then -- Repentance warnRepentance:Show(args.destName) timerRepentanceCD:Start() elseif args:IsSpellID(66613, 66007) then -- Hammer of Justice warnHoJ:Show(args.destName) timerHoJCD:Start() elseif spellId == 66011 then -- Avenging Wrath warnAvengingWrath:Show() specWarnAvengingWrath:Show(args.sourceName) -- Mage elseif spellId == 65793 then -- Blink warnBlink:Show() timerBlinkCD:Start() elseif spellId == 65790 then -- Counterspell warnCounterspell:Show(args.destName) -- Warlock elseif args:IsSpellID(65816, 68145, 68146, 68147) then -- Hellfire warnHellfire:Show() elseif args:IsSpellID(65820, 68141, 68139, 68140) then -- Death Coil warnDeathCoil:Show(args.destName) -- Warrior elseif spellId == 65947 then -- Bladestorm warnBladestorm:Show() timerBladestorm:Start() timerBladestormCD:Start() preWarnBladestorm:Schedule(85.1) elseif spellId == 65932 then -- Retaliation warnRetaliation:Show() elseif spellId == 65931 then -- Intimidating Shout warnIntimidatingShout:Show() -- Shaman elseif spellId == 66063 then -- Earth Shield warnEarthShield:Show(args.destName) specWarnEarthShield:Show(args.destName) elseif spellId == 65983 then warnHeroism:Show() specWarnHeroism:Show(FACTION_ALLIANCE) specWarnHeroism:Play("dispelboss") timerHeroismCD:Start() elseif spellId == 65980 then warnBloodlust:Show() specWarnBloodlust:Show(FACTION_HORDE) specWarnBloodlust:Play("dispelboss") timerBloodlustCD:Start() -- Priest elseif spellId == 65544 then -- Dispersion warnDispersion:Show() elseif spellId == 65543 then -- Psychic Scream warnPsychicScream:Show() elseif spellId == 65545 then -- Psychic Horror warnPsychicHorror:Show(args.destName) elseif spellId == 65542 then -- Silence warnSilence:Show(args.destName) timerSilenceCD:Start() -- Druid elseif spellId == 65860 then -- Barkskin warnBarkskin:Show() elseif args:IsSpellID(66086, 67974, 67975, 67976) then -- Tranquility warnTranquility:Show() specWarnTranquility:Show(args.sourceName) -- Rogue elseif args:IsSpellID(66178, 68759, 68760, 68761) then -- Shadowstep warnShadowstep:Show() if self:IsDifficulty("heroic25") then timerShadowstepCD:Start(20) else timerShadowstepCD:Start() end elseif spellId == 65960 then -- Blind warnBlind:Show(args.destName) timerBlindCD:Start() elseif spellId == 65961 then -- Cloak of Shadows warnCloakOfShadows:Show() -- Hunter elseif spellId == 66207 then -- Wing Clip warnWingClip:Show(args.destName) elseif spellId == 65880 then -- Frost Trap warnFrostTrap:Show() timerFrostTrapCD:Start() elseif spellId == 65869 then -- Disengage warnDisengage:Show() timerDisengageCD:Start() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId -- Death Knight -- Paladin if spellId == 66010 then -- Divine Shield warnDivineShield:Show() specWarnDivineShield:Show(args.destName) specWarnDivineShield:Play("dispelboss") -- Mage elseif spellId == 65802 then -- Ice Block warnIceBlock:Show() specWarnIceBlock:Show(args.sourceName) elseif spellId == 65801 and args:IsDestTypePlayer() then -- Polymorph warnSheep:Show(args.destName) -- Warlock elseif spellId == 65809 then -- Fear warnFear:Show(args.destName) -- Warrior elseif args:IsSpellID(65927, 65929) then -- Charge warnCharge:Show(args.destName) -- Shaman elseif spellId == 66054 then -- Hex warnHex:Show(args.destName) -- Priest -- Druid elseif spellId == 65859 and args:IsDestTypePlayer() then -- Cyclone warnCyclone:Show(args.destName) elseif spellId == 65857 then -- Entangling Roots warnEntanglingRoots:Show(args.destName) -- Rogue -- Hunter elseif spellId == 65871 then -- Deterrence warnDeterrence:Show() elseif args:IsSpellID(65878, 65877) then -- Wyvern Sting warnWyvernSting:Show(args.destName) end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, spellId, spellName) if (spellId == 65817 or spellId == 68142 or spellId == 68143 or spellId == 68144) and destGUID == UnitGUID("player") and self:AntiSpam() then specWarnHellfire:Show(spellName) specWarnHellfire:Play("watchfeet") end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 34472 or cid == 34454 then -- Rogue timerShadowstepCD:Cancel() timerBlindCD:Cancel() DBM.BossHealth:RemoveBoss(34472) DBM.BossHealth:RemoveBoss(34454) elseif cid == 34458 or cid == 34461 then -- DK timerDeathgripCD:Cancel() DBM.BossHealth:RemoveBoss(34458) DBM.BossHealth:RemoveBoss(34461) elseif cid == 34475 or cid == 34453 then -- Warrior timerBladestormCD:Cancel() preWarnBladestorm:Cancel() DBM.BossHealth:RemoveBoss(34475) DBM.BossHealth:RemoveBoss(34453) elseif cid == 34460 or cid == 34451 then -- Balance Druid DBM.BossHealth:RemoveBoss(34460) DBM.BossHealth:RemoveBoss(34451) elseif cid == 34469 or cid == 34459 then -- Resto Druid DBM.BossHealth:RemoveBoss(34469) DBM.BossHealth:RemoveBoss(34459) elseif cid == 34467 or cid == 34448 then -- Hunter timerFrostTrapCD:Cancel() timerDisengageCD:Cancel() DBM.BossHealth:RemoveBoss(34467) DBM.BossHealth:RemoveBoss(34448) elseif cid == 34468 or cid == 34449 then -- Mage timerBlinkCD:Cancel() DBM.BossHealth:RemoveBoss(34468) DBM.BossHealth:RemoveBoss(34449) elseif cid == 34465 or cid == 34445 then -- Holy Paladin timerHoJCD:Cancel() timerHoPCD:Cancel() DBM.BossHealth:RemoveBoss(34465) DBM.BossHealth:RemoveBoss(34445) elseif cid == 34471 or cid == 34456 then -- Retri Paladin timerHoJCD:Cancel() timerRepentanceCD:Cancel() timerHoPCD:Cancel() DBM.BossHealth:RemoveBoss(34471) DBM.BossHealth:RemoveBoss(34456) elseif cid == 34466 or cid == 34447 then -- Disco Priest timerPsychicScreamCD:Cancel() DBM.BossHealth:RemoveBoss(34466) DBM.BossHealth:RemoveBoss(34447) elseif cid == 34473 or cid == 34441 then -- Shadow Priest timerPsychicScreamCD:Cancel() timerSilenceCD:Cancel() DBM.BossHealth:RemoveBoss(34473) DBM.BossHealth:RemoveBoss(34441) elseif cid == 34463 or cid == 34455 then -- Enh Shaman if cid == 34463 then timerHeroismCD:Cancel() else timerBloodlustCD:Cancel() end DBM.BossHealth:RemoveBoss(34463) DBM.BossHealth:RemoveBoss(34455) elseif cid == 34470 or cid == 34444 then -- Resto Shaman if cid == 34470 then timerHeroismCD:Cancel() else timerBloodlustCD:Cancel() end DBM.BossHealth:RemoveBoss(34470) DBM.BossHealth:RemoveBoss(34444) elseif cid == 34474 or cid == 34450 then -- Warlock DBM.BossHealth:RemoveBoss(34474) DBM.BossHealth:RemoveBoss(34450) end end ================================================ FILE: DBM-Coliseum/DBM-Coliseum.toc ================================================ ## Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Crusaders' Coliseum|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0십자군의 시험장|r ## Title-deDE:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Kolosseum der Kreuzfahrer|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Колизей Авангарда|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0十字軍試煉|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0十字军的试炼|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Coliseo de los Cruzados|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Coliseo de los Cruzados|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff69ccf0Colisée des Croisés|r ## LoadOnDemand: 1 ## RequiredDeps: DBM-Core ## SavedVariables: DBMColiseum_AllSavedVars ## SavedVariablesPerCharacter: DBMColiseum_SavedStats ## X-DBM-Mod: 1 ## X-DBM-Mod-Category: WOTLK ## X-DBM-StatTypes: normal,normal25,heroic,heroic25 ## X-DBM-Mod-Name: Crusader's Coliseum ## X-DBM-Mod-Name-koKR: 십자군의 시험장 ## X-DBM-Mod-Name-deDE: Kolosseum der Kreuzfahrer ## X-DBM-Mod-Name-frFR: Colisée des Croisés ## X-DBM-Mod-Name-ruRU: Колизей Авангарда ## X-DBM-Mod-Name-zhTW: 十字軍試煉 ## X-DBM-Mod-Name-zhCN: 十字军的试炼 ## X-DBM-Mod-Name-esES: Coliseo de los Cruzados ## X-DBM-Mod-Name-esMX: Coliseo de los Cruzados ## X-DBM-Mod-Sort: 2 ## X-DBM-Mod-MapID: 544 ## X-DBM-Mod-LoadZone: Trial of the Crusader ## X-DBM-Mod-LoadZone-koKR: 십자군의 시험장 ## X-DBM-Mod-LoadZone-deDE: Prüfung des Kreuzfahrers ## X-DBM-Mod-LoadZone-frFR: L'épreuve du croisé ## X-DBM-Mod-LoadZone-ruRU: Испытание крестоносца ## X-DBM-Mod-LoadZone-zhTW: 十字軍試煉 ## X-DBM-Mod-LoadZone-zhCN: 十字军的试炼 ## X-DBM-Mod-LoadZone-esES: Prueba del Cruzado ## X-DBM-Mod-LoadZone-esMX: Prueba del Cruzado localization.en.lua localization.de.lua localization.fr.lua localization.ru.lua localization.tw.lua localization.kr.lua localization.tw.lua localization.es.lua localization.cn.lua localization.mx.lua NorthrendBeasts.lua Jaraxxus.lua Champions.lua Twins.lua Anub'arak.lua ================================================ FILE: DBM-Coliseum/Jaraxxus.lua ================================================ local mod = DBM:NewMod("Jaraxxus", "DBM-Coliseum") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(34780) mod:SetEncounterID(633) --mod:SetMinCombatTime(30) mod:SetUsedIcons(7, 8) mod:SetMinSyncRevision(20220907000000) mod:RegisterCombat("combat") mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 66532 66963 66964 66965", "SPELL_CAST_SUCCESS 66228 67106 67107 67108 67901 67902 67903 66258 66269 67898 67899 67900 66197 68123 68124 68125 67051 67050 67049 66237 66528 67029 67030 67031", "SPELL_AURA_APPLIED 67051 67050 67049 66237 66197 68123 68124 68125 66334 67905 67906 67907 66532 66963 66964 66965", "SPELL_AURA_REMOVED 67051 67050 67049 66237 66197 68123 68124 68125", "SPELL_DAMAGE 66877 67070 67071 67072 66496 68716 68717 68718", "SPELL_MISSED 66877 67070 67071 67072 66496 68716 68717 68718", "SPELL_HEAL", "SPELL_PERIODIC_HEAL" ) --TODO, possibly just use args.amount from combatlog versus debuff scanning for flesh? local warnPortalSoon = mod:NewSoonAnnounce(66269, 3) local warnVolcanoSoon = mod:NewSoonAnnounce(66258, 3) local warnFlame = mod:NewTargetAnnounce(66197, 4) local warnFlesh = mod:NewTargetNoFilterAnnounce(66237, 4, nil, "Healer") local warnFelLightning = mod:NewSpellAnnounce(67031, 3, nil, false) local specWarnFlame = mod:NewSpecialWarningRun(66877, nil, nil, 2, 4, 2) local specWarnGTFO = mod:NewSpecialWarningGTFO(66877, nil, nil, 2, 1, 8) local specWarnFlesh = mod:NewSpecialWarningYou(66237, nil, nil, nil, 1, 2) local specWarnKiss = mod:NewSpecialWarningCast(66334, "SpellCaster", nil, 2, 1, 2) local specWarnNetherPower = mod:NewSpecialWarningDispel(67009, "MagicDispeller", nil, nil, 1, 2) local specWarnFelInferno = mod:NewSpecialWarningMove(66496, nil, nil, nil, 1, 2) local SpecWarnFelFireball = mod:NewSpecialWarningInterrupt(66532, "HasInterrupt", nil, 2, 1, 2) local SpecWarnFelFireballDispel = mod:NewSpecialWarningDispel(66532, "RemoveMagic", nil, 2, 1, 2) local timerCombatStart = mod:NewCombatTimer(76)--roleplay for first pull local timerFlame = mod:NewTargetTimer(8, 66197, nil, nil, nil, 3)--There are 8 debuff Ids. Since we detect first to warn, use an 8sec timer to cover duration of trigger spell and damage debuff. local timerFlameCD = mod:NewNextTimer(30, 66197, nil, nil, nil, 3) -- (25H Lordaeron 2022/09/03) - 30.0, 30.0, 30.1, 30.0, 30.1, 30.0 local timerNetherPowerCD = mod:NewNextTimer(45, 67009, nil, "MagicDispeller", nil, 5, nil, DBM_COMMON_L.MAGIC_ICON) -- (25H Lordaeron 2022/09/03) - 45.1, 45.0, 45.0, 45.0 local timerFlesh = mod:NewTargetTimer(12, 66237, nil, "Healer", 2, 5, nil, DBM_COMMON_L.HEALER_ICON) local timerFleshCD = mod:NewNextTimer(30, 66237, nil, "Healer", 2, 5, nil, DBM_COMMON_L.HEALER_ICON) -- (25H Lordaeron 2022/09/03) - 30.0, 30.0, 30.0, 30.1, 30.0, 30.0 local timerPortalCD = mod:NewCDTimer(120, 66269, nil, nil, nil, 1, nil, nil, true) -- REVIEW! 7s variance? Added "keep" arg (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/24) - 120.0 || 127.0 local timerVolcanoCD = mod:NewCDTimer(120, 66258, nil, nil, nil, 1) -- REVIEW! ~1s variance? (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/24) - 120.0 || 120.8 local timerFelLightning = mod:NewCDTimer(10, 67031, nil, nil, nil, 3, nil, nil, true) -- 7s variance [10-17]. Added "keep" arg (25H Lordaeron 2022/09/24 || 10N Lordaeron 2022/10/02) - 15.0, 12.8, 16.3, 12.1, 17.0, 14.8, 11.4, 11.1, 13.7, 14.0, 12.9, 14.2, 10.1, 10.5, 11.7 || 11.5, 12.4, 14.6, 13.4, 13.1 local enrageTimer = mod:NewBerserkTimer(600) mod:AddSetIconOption("LegionFlameIcon", 66197, true, 0, {7}) mod:AddSetIconOption("IncinerateFleshIcon", 66237, true, 0, {8}) mod:AddInfoFrameOption(66237, true) mod:RemoveOption("HealthFrame") mod:AddBoolOption("IncinerateShieldFrame", false, "misc") mod.vb.fleshCount = 0 local incinerateFleshTargetName function mod:OnCombatStart(delay) if self.Options.IncinerateShieldFrame then DBM.BossHealth:Show(L.name) DBM.BossHealth:AddBoss(34780, L.name) end self.vb.fleshCount = 0 timerPortalCD:Start(22-delay) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/24) - 22.0 || 22.0 warnPortalSoon:Schedule(17-delay) timerVolcanoCD:Start(82-delay) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/24) - 82.0 || 89.0 warnVolcanoSoon:Schedule(77-delay) timerNetherPowerCD:Start(15-delay) -- (25H Lordaeron 2022/09/03) - 15.0 timerFleshCD:Start(13-delay) -- (25H Lordaeron 2022/09/03) - 13.0 timerFlameCD:Start(20-delay) -- (25H Lordaeron 2022/09/03) - 20.0 timerFelLightning:Start(-delay) -- (25H Lordaeron 2022/09/24 || 10N Lordaeron 2022/10/02) - 10.0 || 10.1 enrageTimer:Start(-delay) end function mod:OnCombatEnd() if self.Options.InfoFrame then DBM.InfoFrame:Hide() end DBM.BossHealth:Clear() end local setIncinerateTarget, clearIncinerateTarget, updateInfoFrame local diffMaxAbsorb = {heroic25 = 85000, heroic10 = 40000, normal25 = 60000, normal10 = 30000} do local incinerateTarget local healed = 0 local maxAbsorb = diffMaxAbsorb[DBM:GetCurrentInstanceDifficulty()] or 0 local twipe = table.wipe local lines, sortedLines = {}, {} local function addLine(key, value) -- sort by insertion order lines[key] = value sortedLines[#sortedLines + 1] = key end local function getShieldHP() return math.max(1, math.floor(healed / maxAbsorb * 100)) end function mod:SPELL_HEAL(_, _, _, destGUID, _, _, _, _, _, _, _, absorbed) if destGUID == incinerateTarget then healed = healed + (absorbed or 0) end end mod.SPELL_PERIODIC_HEAL = mod.SPELL_HEAL function setIncinerateTarget(_, target, name) incinerateTarget = target healed = 0 DBM.BossHealth:RemoveBoss(getShieldHP) DBM.BossHealth:AddBoss(getShieldHP, L.IncinerateTarget:format(name)) end function clearIncinerateTarget(self, name) DBM.BossHealth:RemoveBoss(getShieldHP) healed = 0 if self.Options.IncinerateFleshIcon then self:RemoveIcon(name) end end updateInfoFrame = function() twipe(lines) twipe(sortedLines) if incinerateFleshTargetName then addLine(incinerateFleshTargetName, getShieldHP().."%") end return lines, sortedLines end end function mod:SPELL_CAST_START(args) if args:IsSpellID(66532, 66963, 66964, 66965) and self:CheckInterruptFilter(args.sourceGUID, false, true) then -- Fel Fireball (track cast for interupt, only when targeted) SpecWarnFelFireball:Show(args.sourceName) SpecWarnFelFireball:Play("kickcast") end end function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(66228, 67106, 67107, 67108) then -- Nether Power specWarnNetherPower:Show(args.sourceName) specWarnNetherPower:Play("dispelboss") timerNetherPowerCD:Start() elseif args:IsSpellID(67901, 67902, 67903, 66258) then -- Infernal Eruption timerVolcanoCD:Start() warnVolcanoSoon:Schedule(110) elseif args:IsSpellID(66269, 67898, 67899, 67900) then -- Nether Portal timerPortalCD:Start() warnPortalSoon:Schedule(110) elseif args:IsSpellID(66197, 68123, 68124, 68125) then -- Legion Flame timerFlameCD:Start() warnFlame:Show(args.destName) -- I prefer to keep this here, rather than a player elseif on aura applied. Faster and unfiltered. elseif args:IsSpellID(67051, 67050, 67049, 66237) then -- Incinerate Flesh timerFleshCD:Start() elseif args:IsSpellID(66528, 67029, 67030, 67031) then -- Fel Lightning timerFelLightning:Start() warnFelLightning:Show() end end function mod:SPELL_AURA_APPLIED(args) if args:IsSpellID(67051, 67050, 67049, 66237) then -- Incinerate Flesh self.vb.fleshCount = self.vb.fleshCount + 1 timerFlesh:Start(args.destName) if self.Options.IncinerateFleshIcon then self:SetIcon(args.destName, 8, 15) end if args:IsPlayer() then specWarnFlesh:Show() specWarnFlesh:Play("targetyou") else warnFlesh:Show(args.destName) end if self.Options.InfoFrame and not DBM.InfoFrame:IsShown() then incinerateFleshTargetName = args.destName DBM.InfoFrame:SetHeader(args.spellName) DBM.InfoFrame:Show(6, "function", updateInfoFrame, false, true) end setIncinerateTarget(self, args.destGUID, args.destName) elseif args:IsSpellID(66197, 68123, 68124, 68125) then -- Legion Flame ids 66199, 68126, 68127, 68128 (second debuff) do the actual damage. First 2 seconds are trigger debuff only. timerFlame:Start(args.destName) if args:IsPlayer() then specWarnFlame:Show() specWarnFlame:Play("runout") specWarnFlame:ScheduleVoice(1.5, "keepmove") end if self.Options.LegionFlameIcon then self:SetIcon(args.destName, 7) end elseif args:IsSpellID(66334, 67905, 67906, 67907) and args:IsPlayer() then specWarnKiss:Show() specWarnKiss:Play("stopcast") elseif args:IsSpellID(66532, 66963, 66964, 66965) then -- Fel Fireball (announce if tank gets debuff for dispel) SpecWarnFelFireballDispel:Show(args.destName) SpecWarnFelFireballDispel:Play("helpdispel") end end function mod:SPELL_AURA_REMOVED(args) if args:IsSpellID(67051, 67050, 67049, 66237) then -- Incinerate Flesh self.vb.fleshCount = self.vb.fleshCount - 1 if self.Options.InfoFrame and self.vb.fleshCount == 0 then DBM.InfoFrame:Hide() end timerFlesh:Stop(args.destName) if self.Options.IncinerateFleshIcon then self:RemoveIcon(args.destName) end clearIncinerateTarget(self, args.destName) elseif args:IsSpellID(66197, 68123, 68124, 68125) then -- Legion Flame ids 66199, 68126, 68127, 68128 (second debuff) do the actual damage. First 2 seconds are trigger debuff only. timerFlame:Stop(args.destName) if self.Options.LegionFlameIcon then self:RemoveIcon(args.destName) end end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, spellId) if (spellId == 66877 or spellId == 67070 or spellId == 67071 or spellId == 67072) and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then -- Legion Flame specWarnGTFO:Show() specWarnGTFO:Play("watchfeet") elseif (spellId == 66496 or spellId == 68716 or spellId == 68717 or spellId == 68718) and destGUID == UnitGUID("player") and self:AntiSpam(3, 1) then -- Fel Inferno (does not make sense to fire watchfeet for radius AoE) specWarnFelInferno:Show() specWarnFelInferno:Play("runaway") end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.FirstPull or msg:find(L.FirstPull) then timerCombatStart:Start() end end ================================================ FILE: DBM-Coliseum/NorthrendBeasts.lua ================================================ local mod = DBM:NewMod("NorthrendBeasts", "DBM-Coliseum") local L = mod:GetLocalizedStrings() local UnitExists, UnitGUID, UnitName = UnitExists, UnitGUID, UnitName local GetSpellInfo = GetSpellInfo local GetPlayerMapPosition, SetMapToCurrentZone = GetPlayerMapPosition, SetMapToCurrentZone mod:SetRevision("20250929220131") mod:SetCreatureID(34796, 35144, 34799, 34797) mod:SetEncounterID(629) mod:SetUsedIcons(1, 2, 3, 4, 5, 6, 7, 8) mod:SetMinSyncRevision(20220925000000) mod:SetMinCombatTime(30) mod:SetBossHPInfoToHighest() mod:RegisterCombat("combat") mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 66313 66330 67647 67648 67649 66794 67644 67645 67646 66821 66818 66901 67615 67616 67617 66902 67627 67628 67629", "SPELL_CAST_SUCCESS 67641 66883 67642 67643 66824 67612 67613 67614 66879 67624 67625 67626 66689 67650 67651 67652", "SPELL_AURA_APPLIED 67477 66331 67478 67479 67657 66759 67658 67659 66823 67618 67619 67620 66869 66758 66636 68335", "SPELL_AURA_APPLIED_DOSE 67477 66331 67478 67479 66636", "SPELL_AURA_REMOVED 66869 66758", "SPELL_DAMAGE 66320 67472 67473 67475 66317 66881 67638 67639 67640", "SPELL_MISSED 66320 67472 67473 67475 66317 66881 67638 67639 67640", "CHAT_MSG_RAID_BOSS_EMOTE", "UNIT_DIED", "UNIT_SPELLCAST_START boss1", "UNIT_SPELLCAST_SUCCEEDED boss1 boss2" ) local gormok = L.Gormok local dreadscale = L.Dreadscale local acidmaw = L.Acidmaw local icehowl = L.Icehowl -- General local enrageTimer = mod:NewBerserkTimer(223) -- REVIEW! 2022/09/05 log with 233s fight time. Does Icehowl actually gets enraged or just the next massive crash will wipe the raid? local timerCombatStart = mod:NewCombatTimer(23) local timerNextBoss = mod:NewTimer(150, "TimerNextBoss", 2457, nil, nil, 1) -- 2min 30s, as per TC. mod:AddRangeFrameOption("10") -- Stage One: Gormok the Impaler mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(1)..": "..gormok) local warnImpaleOn = mod:NewStackAnnounce(66331, 2, nil, "Tank|Healer") local warnFireBomb = mod:NewSpellAnnounce(66317, 3, nil, false) local WarningSnobold = mod:NewAnnounce("WarningSnobold", 4) local specWarnImpale3 = mod:NewSpecialWarningStack(66331, nil, 3, nil, nil, 1, 6) local specWarnAnger3 = mod:NewSpecialWarningStack(66636, "Tank|Healer", 3, nil, nil, 1, 6) local specWarnGTFO = mod:NewSpecialWarningGTFO(66317, nil, nil, nil, 1, 8) local specWarnSilence = mod:NewSpecialWarningSpell(66330, "SpellCaster") local specWarnStompPreWarn = mod:NewSpecialWarningPreWarn(66330, "SpellCaster", 3, nil, nil, 1, 2) local timerNextStomp = mod:NewNextTimer(20, 66330, nil, nil, nil, 2, nil, DBM_COMMON_L.INTERRUPT_ICON, nil, mod:IsSpellCaster() and 3 or nil, 3) -- (25H Lordaeron 2022/09/03) - 20.0, 20.0, 20.0 local timerImpaleCD = mod:NewCDTimer(8, 66331, nil, "Tank|Healer", nil, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- 2s variance [8.0-9.9]. Added "keep" arg (10H 2021/10/22 || 10N 2021/10/22 || 25H Lordaeron 2022/09/03) - 8.3, 8.6, 9.4, 8.0, 9.6, 9.4, 9.0, 9.1, 8.7, 9.4, 9.9, 8.2, 8.6 || 8.6, 8.1, 9.5, 9.6, 9.8, 8.7, 8.8, 9.6 || 9.2, 9.5, 9.7, 9.3, 9.5, 8.3, 8.5 local timerRisingAnger = mod:NewCDTimer(20.5, 66636, nil, nil, nil, 1, nil, nil, true) -- REVIEW! Normal Dose > 2 is all over the place! Heroic variance? Added "keep" arg (25H Lordaeron 2022/09/03 || 25N Lordaeron 2022/09/23 || 25H Lordaeron 2022/09/24 || 25H Lordaeron 2022/09/28 || 10N Lordaeron 2022/10/02 || 25H Lordaeron [2023-08-23]@[22:38:12]) - 20, 25 || 28.9, 22.6, 2.4, 13.1, 6.8, 7.4, 4.1, 0.6, 1.7, 3.8 || 24.7 || 29.9, 17.5 || 26.8, 12.7, 3.4, 1.1 || pull:24.8, 29.7 local soundAuraMastery = mod:NewSound(66330, "soundConcAuraMastery") -- Stage Two: Acidmaw & Dreadscale mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(2)..": "..dreadscale.." & "..acidmaw) local warnSlimePool = mod:NewSpellAnnounce(66883, 2, nil, "Melee") local warnToxin = mod:NewTargetAnnounce(66823, 3) local warnBile = mod:NewTargetAnnounce(66869, 3) local warnEnrageWorm = mod:NewSpellAnnounce(68335, 3) local specWarnToxin = mod:NewSpecialWarningMoveTo(66823, nil, nil, nil, 1, 2) local specWarnBile = mod:NewSpecialWarningYou(66869, nil, nil, nil, 1, 2) local timerSubmerge = mod:NewCDSourceTimer(45, 66948, nil, nil, nil, 6, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendBurrow.blp") local timerEmerge = mod:NewNextSourceTimer(5, 66947, nil, nil, nil, 6, "Interface\\AddOns\\DBM-Core\\textures\\CryptFiendUnBurrow.blp") local timerSweepCD = mod:NewCDSourceTimer(16.5, 66794, nil, "Melee", nil, 3, nil, nil, true) -- REVIEW! variance? Added "Keep" arg. (25H Lordaeron 2022/10/09) - 16.5 local timerAcidicSpewCD = mod:NewCDTimer(21, 66819, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- Added "Keep" arg local timerMoltenSpewCD = mod:NewCDTimer(16.1, 66820, nil, "Tank", 2, 5, nil, DBM_COMMON_L.TANK_ICON, true) -- REVIEW! variance? Added "Keep" arg (25H Lordaeron 2022/09/28 || ) - 19.1 || 16.1 local timerParalyticSprayCD = mod:NewCDTimer(16.2, 66901, nil, nil, nil, 3, nil, nil, true) -- REVIEW! ~11s variance? Added "Keep" arg (25H Lordaeron 2022/09/28 || 25H Lordaeron 2022/10/09 || 25N Lordaeron 2022/10/21) - 27.8 || 16.2 || 26.1 local timerBurningSprayCD = mod:NewCDTimer(19, 66902, nil, nil, nil, 3, nil, nil, true) -- REVIEW! 5s variance? (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28) - 20.6, 19.0 || 24.7 local timerParalyticBiteCD = mod:NewCDTimer(25, 66824, nil, "Melee", nil, 3, nil, nil, true) -- Added "Keep" arg local timerBurningBiteCD = mod:NewCDTimer(15, 66879, nil, "Melee", nil, 3, nil, nil, true) -- REVIEW! 2s variance? Added "Keep" arg (25H Lordaeron 2022/09/03) - 16.3 local timerSlimePoolCD = mod:NewCDSourceTimer(12, 66883, nil, "Melee", nil, 3) -- REVIEW! 2s variance? (25H Lordaeron 2022/09/03) - Dreadscale: 12.3, 12.0, *, 14.4 ; Acidmaw: 12.6, 12.0 mod:AddSetIconOption("SetIconOnBileTarget", 66869, false, 0, {1, 2, 3, 4, 5, 6, 7, 8}) -- Stage Three: Icehowl mod:AddTimerLine(DBM_CORE_L.SCENARIO_STAGE:format(3)..": "..icehowl) local warnBreath = mod:NewSpellAnnounce(66689, 2) local warnRage = mod:NewSpellAnnounce(66759, 3) local warnCharge = mod:NewTargetNoFilterAnnounce(52311, 4) local specWarnCharge = mod:NewSpecialWarningRun(52311, nil, nil, nil, 4, 2) local specWarnChargeNear = mod:NewSpecialWarningClose(52311, nil, nil, nil, 3, 2) local specWarnFrothingRage = mod:NewSpecialWarningDispel(66759, "RemoveEnrage", nil, nil, 1, 2) local timerBreath = mod:NewCastTimer(5, 66689, nil, nil, nil, 3) -- 5s channel. is it random target or tank? local timerBreathCD = mod:NewCDTimer(20, 66689, nil, nil, nil, 3) local timerStaggeredDaze = mod:NewBuffActiveTimer(15, 66758, nil, nil, nil, 5, nil, DBM_COMMON_L.DAMAGE_ICON) local timerNextCrash = mod:NewCDTimer(63.4, 66683, nil, nil, nil, 2, nil, DBM_COMMON_L.MYTHIC_ICON) -- REVIEW! variance? (25H Lordaeron 2022/09/03) - 63.4, 63.7 mod:AddSetIconOption("SetIconOnChargeTarget", 52311, true, 0, {8}) mod:AddBoolOption("ClearIconsOnIceHowl", true) mod:AddBoolOption("IcehowlArrow") mod:GroupSpells(66902, 66869)--Burning Spray with Burning Bile mod:GroupSpells(66901, 66823)--Paralytic Spray with Toxic Bile mod:GroupSpells(52311, 66758, 66759)--Furious Charge, Staggering Daze, and Frothing Rage local bileName = DBM:GetSpellInfo(66869) local phases = {} local acidmawEngaged = false local acidmawSubmerged = false local dreadscaleEngaged = false mod.vb.burnIcon = 1 mod.vb.DreadscaleMobile = true mod.vb.AcidmawMobile = false mod.vb.DreadscaleDead = false mod.vb.AcidmawDead = false local function updateHealthFrame(phase) if phases[phase] then return end phases[phase] = true mod.vb.phase = phase if phase == 1 then DBM.BossHealth:Clear() DBM.BossHealth:AddBoss(34796, gormok) elseif phase == 2 then DBM.BossHealth:AddBoss(35144, acidmaw) DBM.BossHealth:AddBoss(34799, dreadscale) elseif phase == 3 then DBM.BossHealth:AddBoss(34797, icehowl) end end local function isBuffOwner(uId, spellId) if not uId and not spellId then return end local _, _, _, _, _, _, _, unitCaster = DBM:UnitBuff(uId, spellId) if unitCaster == uId then return true else return false end end function mod:OnCombatStart(delay) table.wipe(phases) acidmawEngaged = false acidmawSubmerged = false dreadscaleEngaged = false self.vb.burnIcon = 8 self.vb.DreadscaleMobile = true self.vb.AcidmawMobile = false self.vb.DreadscaleDead = false self.vb.AcidmawDead = false self:SetStage(1) specWarnStompPreWarn:Schedule(12-delay) -- 3s pre-warn. (10N Lordaeron 2022/10/02) - 14.9 if self.Options.soundConcAuraMastery and isBuffOwner("player", 19746) then -- Concentration Aura Mastery by a Paladin will negate the interrupt effect of Staggering Stomp soundAuraMastery:Schedule(12-delay, "Interface\\AddOns\\DBM-Core\\sounds\\PlayerAbilities\\AuraMastery.ogg") else specWarnStompPreWarn:ScheduleVoice(12-delay, "silencesoon") end if self:IsHeroic() then timerNextBoss:Start(-delay) end timerRisingAnger:Start(18-delay) -- REVIEW! ~10s variance? (25H Lordaeron 2022/09/03 || 25N Lordaeron 2022/09/23 || 25H Lordaeron 2022/09/24 || 25H Lordaeron 2022/09/28 || 10N Lordaeron 2022/10/02) - 18.9 || 26.1 || 29.7 || 21.9 || 18.2 timerNextStomp:Start(15-delay) -- (25H Lordaeron 2022/09/03) - 15.0 timerImpaleCD:Start() -- REVIEW! same 2s variance? (10H 2021/10/22 || 10N 2021/10/22 || 25H Lordaeron 2022/09/03) - 8 || 8 || 9.9 updateHealthFrame(1) end function mod:OnCombatEnd() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end end --These remain methods since they can't reverse schedule each other as local functions --[[ Disabling scheduling methods since worms submerge at different times on Warmane. Also, since Warmane has boss units, we also have access to the proper events ["UNIT_SPELLCAST_SUCCEEDED"] = { "Churning Ground Visual-npc:34799-240 = pull:141.2/Stage 2/58.2, 5.0, 45.1, 5.0, Stage 3/31.2", -- [6] "Churning Ground Visual-npc:35144-247 = pull:144.2/Stage 2/61.2, 5.0, 45.0, 5.0, Stage 3/28.2", -- [7] } function mod:WormsEmerge() timerSubmerge:Start() if not self.vb.AcidmawDead then if self.vb.DreadscaleMobile then timerSweepCD:Start(22) -- Log review: 22-24s (N/H?) timerParalyticSprayCD:Start(18) -- Log review: 18-20s (N/H?) else timerSlimePoolCD:Start(14) timerParalyticBiteCD:Start(5) timerAcidicSpewCD:Start(10) end end if not self.vb.DreadscaleDead then if self.vb.DreadscaleMobile then timerSlimePoolCD:Start(15) timerMoltenSpewCD:Start(26) timerBurningBiteCD:Start(5) else timerSweepCD:Start(16) timerBurningSprayCD:Start(17) end end self:ScheduleMethod(45, "WormsSubmerge") end function mod:WormsSubmerge() timerEmerge:Start() timerSweepCD:Cancel() timerSlimePoolCD:Cancel() timerMoltenSpewCD:Cancel() timerParalyticSprayCD:Cancel() timerBurningBiteCD:Cancel() timerAcidicSpewCD:Cancel() timerBurningSprayCD:Cancel() timerParalyticBiteCD:Cancel() self.vb.DreadscaleMobile = not self.vb.DreadscaleMobile self:ScheduleMethod(5, "WormsEmerge") end]] function mod:SPELL_CAST_START(args) local spellId = args.spellId if spellId == 66313 then -- FireBomb (Impaler) warnFireBomb:Show() elseif args:IsSpellID(66330, 67647, 67648, 67649) then -- Staggering Stomp timerNextStomp:Start() specWarnSilence:Show() specWarnStompPreWarn:Schedule(17) -- prewarn 3 sec before next if self.Options.soundConcAuraMastery and isBuffOwner("player", 19746) then -- Concentration Aura Mastery by a Paladin will negate the interrupt effect of Staggering Stomp soundAuraMastery:Schedule(17, "Interface\\AddOns\\DBM-Core\\sounds\\PlayerAbilities\\AuraMastery.ogg") else specWarnStompPreWarn:ScheduleVoice(17, "silencesoon") end elseif args:IsSpellID(66794, 67644, 67645, 67646) then -- Sweep stationary worm timerSweepCD:Start(args.sourceName) elseif spellId == 66821 then -- Molten spew timerMoltenSpewCD:Start() elseif spellId == 66818 then -- Acidic Spew timerAcidicSpewCD:Start() elseif args:IsSpellID(66901, 67615, 67616, 67617) then -- Paralytic Spray timerParalyticSprayCD:Start() elseif args:IsSpellID(66902, 67627, 67628, 67629) then -- Burning Spray self.vb.burnIcon = 1 timerBurningSprayCD:Start() end end function mod:SPELL_CAST_SUCCESS(args) if args:IsSpellID(67641, 66883, 67642, 67643) then -- Slime Pool Cloud Spawn warnSlimePool:Show() timerSlimePoolCD:Start(args.sourceName) elseif args:IsSpellID(66824, 67612, 67613, 67614) then -- Paralytic Bite timerParalyticBiteCD:Start() elseif args:IsSpellID(66879, 67624, 67625, 67626) then -- Burning Bite timerBurningBiteCD:Start() elseif args:IsSpellID(66689, 67650, 67651, 67652) then -- Arctic Breath timerBreath:Start() timerBreathCD:Start() warnBreath:Show() end end function mod:SPELL_AURA_APPLIED(args) local spellId = args.spellId if args:IsSpellID(67477, 66331, 67478, 67479) then -- Impale timerImpaleCD:Start() warnImpaleOn:Show(args.destName, 1) elseif args:IsSpellID(67657, 66759, 67658, 67659) then -- Frothing Rage timerBreathCD:Start(5.5) -- variance? (Lordaeron 10N [2024-07-04]@[22:52:09]) - 5.5 warnRage:Show() specWarnFrothingRage:Show() specWarnFrothingRage:Play("trannow") elseif args:IsSpellID(66823, 67618, 67619, 67620) then -- Paralytic Toxin warnToxin:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnToxin:Show(bileName) specWarnToxin:Play("targetyou") end elseif spellId == 66869 then -- Burning Bile warnBile:CombinedShow(0.3, args.destName) if args:IsPlayer() then specWarnBile:Show() specWarnBile:Play("targetyou") end if self.Options.SetIconOnBileTarget and self.vb.burnIcon < 9 then self:SetIcon(args.destName, self.vb.burnIcon) self.vb.burnIcon = self.vb.burnIcon + 1 end elseif spellId == 66758 then -- Staggered Daze timerStaggeredDaze:Start() elseif spellId == 66636 then -- Rising Anger WarningSnobold:Show(args.destName) timerRisingAnger:Start() elseif spellId == 68335 then -- Enrage warnEnrageWorm:Show() end end function mod:SPELL_AURA_APPLIED_DOSE(args) if args:IsSpellID(67477, 66331, 67478, 67479) then -- Impale local amount = args.amount or 1 timerImpaleCD:Start() if (amount >= 3) or (amount >= 2 and self:IsHeroic()) then if args:IsPlayer() then specWarnImpale3:Show(amount) specWarnImpale3:Play("stackhigh") else warnImpaleOn:Show(args.destName, amount) end end elseif args.spellId == 66636 then -- Rising Anger local amount = args.amount or 1 WarningSnobold:Show(args.destName) if amount < 3 then -- if self:IsHeroic() then timerRisingAnger:Start(17.5) -- (25H Lordaeron 2022/09/28) - 17.5 -- else -- if amount < 3 then -- timerRisingAnger:Start() -- Variance for normal dose is all over the place... Only first dose is timed since it has "some" level of consistency. (25N Lordaeron 2022/09/23 || 10N Lordaeron 2022/10/02 wipe || 10N Lordaeron 2022/10/02 kill || 25N Lordaeron 2022/10/21) - 26.1, 28.9, 22.6 || 26.8, 12.7 || 20.8, 30.0 || 17.7 -- end -- end elseif amount >= 4 then -- only 4 snobolds timerRisingAnger:Stop() specWarnAnger3:Show(amount) specWarnAnger3:Play("stackhigh") end end end function mod:SPELL_AURA_REMOVED(args) local spellId = args.spellId if spellId == 66869 then if self.Options.SetIconOnBileTarget then self:SetIcon(args.destName, 0) end elseif spellId == 66758 then -- Staggered Daze timerBreathCD:Start(5) -- 3s variance? end end function mod:SPELL_DAMAGE(_, _, _, destGUID, _, _, spellId, spellName) if ((spellId == 66320 or spellId == 67472 or spellId == 67473 or spellId == 67475 or spellId == 66317) or (spellId == 66881 or spellId == 67638 or spellId == 67639 or spellId == 67640)) and destGUID == UnitGUID("player") then -- Fire Bomb (66317 is impact damage, not avoidable but leaving in because it still means earliest possible warning to move. Other 4 are tick damage from standing in it) // Slime Pool specWarnGTFO:Show(spellName) specWarnGTFO:Play("watchfeet") end end mod.SPELL_MISSED = mod.SPELL_DAMAGE function mod:CHAT_MSG_RAID_BOSS_EMOTE(msg, _, _, _, target) if (msg:match(L.Charge) or msg:find(L.Charge)) and target then target = DBM:GetUnitFullName(target) warnCharge:Show(target) if self.Options.ClearIconsOnIceHowl then self:ClearIcons() end if target == UnitName("player") then specWarnCharge:Show() specWarnCharge:Play("justrun") if self.Options.PingCharge then Minimap:PingLocation() end elseif self:CheckNearby(11, target) then specWarnChargeNear:Show(target) specWarnChargeNear:Play("runaway") end if self.Options.IcehowlArrow then local uId = DBM:GetRaidUnitId(target) local x, y = GetPlayerMapPosition(uId) if x == 0 and y == 0 then SetMapToCurrentZone() x, y = GetPlayerMapPosition(uId) end DBM.Arrow:ShowRunAway(x, y, 12, 5) end if self.Options.SetIconOnChargeTarget then self:SetIcon(target, 8, 5) end end end function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.CombatStart or msg:find(L.CombatStart) then timerCombatStart:Start() elseif msg == L.Phase2 or msg:find(L.Phase2) then self:SetStage(1.5) -- self:ScheduleMethod(13.5, "WormsEmerge") timerCombatStart:Start(13.5) timerNextBoss:Cancel() updateHealthFrame(2) if self.Options.RangeFrame then DBM.RangeCheck:Show(10) end self:RegisterShortTermEvents( "INSTANCE_ENCOUNTER_ENGAGE_UNIT" ) elseif msg == L.Phase3 or msg:find(L.Phase3) then updateHealthFrame(3) self:SetStage(2.5) if self:IsHeroic() then enrageTimer:Start() end -- self:UnscheduleMethod("WormsSubmerge") -- self:UnscheduleMethod("WormsEmerge") timerCombatStart:Start(10) timerNextBoss:Cancel() timerSubmerge:Cancel() timerEmerge:Cancel() if self.Options.RangeFrame then DBM.RangeCheck:Hide() end self:RegisterShortTermEvents( "INSTANCE_ENCOUNTER_ENGAGE_UNIT" ) end end function mod:UNIT_DIED(args) local cid = self:GetCIDFromGUID(args.destGUID) if cid == 34796 then specWarnStompPreWarn:Cancel() specWarnStompPreWarn:CancelVoice() soundAuraMastery:Cancel() timerNextStomp:Stop() timerImpaleCD:Stop() timerRisingAnger:Stop() DBM.BossHealth:RemoveBoss(cid) -- remove Gormok from the health frame elseif cid == 35144 then -- Acidmaw dead self.vb.AcidmawDead = true timerParalyticSprayCD:Cancel() timerParalyticBiteCD:Cancel() timerAcidicSpewCD:Cancel() timerSubmerge:Cancel(acidmaw) if self.vb.AcidmawMobile then timerSlimePoolCD:Cancel(args.destName) else timerSweepCD:Cancel(args.destName) end if self.vb.DreadscaleDead then timerNextBoss:Cancel() DBM.BossHealth:RemoveBoss(35144) DBM.BossHealth:RemoveBoss(34799) end elseif cid == 34799 then -- Dreadscale dead self.vb.DreadscaleDead = true timerBurningSprayCD:Cancel() timerBurningBiteCD:Cancel() timerMoltenSpewCD:Cancel() timerSubmerge:Cancel(dreadscale) if self.vb.DreadscaleMobile then timerSlimePoolCD:Cancel(args.destName) else timerSweepCD:Cancel(args.destName) end if self.vb.AcidmawDead then timerNextBoss:Cancel() DBM.BossHealth:RemoveBoss(35144) DBM.BossHealth:RemoveBoss(34799) end elseif cid == 34797 then DBM:EndCombat(self) end end function mod:INSTANCE_ENCOUNTER_ENGAGE_UNIT() for i = 1, 5 do local unitID = "boss"..i if UnitExists(unitID) then local cid = self:GetUnitCreatureId(unitID) local bossName = UnitName(unitID) if cid == 35144 and not acidmawEngaged then -- Acidmaw (stationary on engage) self:SetStage(2) -- IEEU fires in tandem, so phasing only once is fine acidmawEngaged = true if self:IsHeroic() then timerNextBoss:Start() end timerSubmerge:Start(49.3, bossName) -- REVIEW! 2s delay from visual to submerge (25H Lordaeron 2022/09/03) - 50 timerSweepCD:Start(18.6, bossName) -- (2021/10/21 || 25H Lordaeron 2022/09/03 || 10N Lordaeron 2022/10/02 || 25H Lordaeron 2022/10/09) - 22-24s (N/H?) || 24 || 20.0 || 18.6 timerParalyticSprayCD:Start(15.5) -- (2021/10/21 || 25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28 || 10N Lordaeron 2022/10/02 || 25N Lordaeron 2022/10/21) - 18-20s (N/H?) || 22 || 20.2 || 30.3 || 15.5 elseif cid == 34799 and not dreadscaleEngaged then -- Dreadscale (mobile on engage) dreadscaleEngaged = true timerSubmerge:Start(bossName) timerSlimePoolCD:Start(15, bossName) -- (25H Lordaeron 2022/09/03) - 15 timerMoltenSpewCD:Start(19.2) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28 || 25N Lordaeron 2022/10/13) - 24 || 23.2 || 19.2 timerBurningBiteCD:Start(15.4) -- (25H Lordaeron 2022/09/03 || 25N Lordaeron 2022/10/13) - 19 || 15.4 elseif cid == 34797 then -- Icehowl self:SetStage(3) timerBreathCD:Start() timerNextCrash:Start(40.9) -- REVIEW! self:UnregisterShortTermEvents() end if unitID == "boss2" then self:UnregisterShortTermEvents() -- both worms are on boss frames, job finished. end end end end function mod:UNIT_SPELLCAST_START(_, spellName) if spellName == GetSpellInfo(66683) then -- Massive Crash timerBreathCD:Cancel() timerNextCrash:Start() end end function mod:UNIT_SPELLCAST_SUCCEEDED(uId, spellName) if spellName == GetSpellInfo(66948) then -- Submerge local npcId = self:GetUnitCreatureId(uId) local unitName = UnitName(uId) or UNKNOWN DBM:Debug("Submerge casted by " .. unitName.. ": " .. tostring(npcId), 2) if npcId == 35144 then -- Acidmaw acidmawSubmerged = true -- this workaround is necessary since I had one log (25H Lordaeron 2022/09/24) that Emerged fired 1.0s after IEEU, so enforce submerge/emerge conditional logic timerAcidicSpewCD:Stop() timerParalyticBiteCD:Stop() timerParalyticSprayCD:Stop() timerSlimePoolCD:Stop(acidmaw) timerSweepCD:Stop(acidmaw) timerEmerge:Start(7.5, unitName) -- REVIEW! 3s delay from visual to emerge (25H Lordaeron 2022/09/03) - 8, 7 elseif npcId == 34799 then -- Dreadscale timerMoltenSpewCD:Stop() timerBurningBiteCD:Stop() timerBurningSprayCD:Stop() timerSlimePoolCD:Stop(dreadscale) timerSweepCD:Stop(dreadscale) timerEmerge:Start(6.5, unitName) -- (25H Lordaeron 2022/09/03) - 7, 6 end elseif spellName == GetSpellInfo(66947) then -- Emerge local npcId = self:GetUnitCreatureId(uId) local unitName = UnitName(uId) or UNKNOWN DBM:Debug("Emerge casted by " .. unitName.. ": " .. tostring(npcId), 2) if npcId == 35144 and acidmawSubmerged then -- Acidmaw self.vb.AcidmawMobile = not self.vb.AcidmawMobile acidmawSubmerged = false DBM:Debug("Acidmaw PHASE_STATIONARY: " .. tostring(self.vb.AcidmawMobile), 2) timerSubmerge:Start(43, acidmaw) if self.vb.AcidmawMobile then timerSlimePoolCD:Start(acidmaw) -- (25H Lordaeron 2022/09/03) - 12 timerParalyticBiteCD:Start(13) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28 || 25H Lordearon 2022/10/09 || 25N Lordaeron 2022/10/13 || 25N Lordaeron 2022/10/21 || 25N Lordaeron 2022/12/07) - 28 || 26.2 || 22.0 || 20.2 || 16.5 || 13.0 timerAcidicSpewCD:Start(15.9) -- (25H Lordaeron 2022/09/03) - 21 || 15.9 else timerSweepCD:Start(22, acidmaw) -- Log review: 22-24s (N/H?) timerParalyticSprayCD:Start(16.7) -- (old log review (N/H?) || 25H Lordaeron 2022/09/28) - 18-20 || 16.7 end elseif npcId == 34799 then -- Dreadscale self.vb.DreadscaleMobile = not self.vb.DreadscaleMobile DBM:Debug("Dreadscale PHASE_STATIONARY: " .. tostring(self.vb.DreadscaleMobile), 2) timerSubmerge:Start(44, dreadscale) if self.vb.DreadscaleMobile then timerSlimePoolCD:Start(dreadscale) -- (25H Lordaeron 2022/09/03) - 12 timerMoltenSpewCD:Start(21.4) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28 || 25N Lordaeron 2022/10/13) - 24 || 21.8 || 21.4 timerBurningBiteCD:Start(14.2) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28) - 19 || 14.2 else timerSweepCD:Start(14.8, dreadscale) -- (25H Lordaeron 2022/09/03 || 25N Lordaeron 2022/10/21) - 17 || 14.8 timerBurningSprayCD:Start(13.4) -- (25H Lordaeron 2022/09/03 || 25H Lordaeron 2022/09/28) - 20 || 13.5 end end end end ================================================ FILE: DBM-Coliseum/Twins.lua ================================================ local mod = DBM:NewMod("ValkTwins", "DBM-Coliseum") local L = mod:GetLocalizedStrings() mod:SetRevision("20250929220131") mod:SetCreatureID(34497, 34496) mod:SetEncounterID(641) mod:SetMinCombatTime(30) mod:SetUsedIcons(1, 2, 3, 4) mod:RegisterCombat("combat") mod:RegisterEvents( "CHAT_MSG_MONSTER_YELL" ) mod:RegisterEventsInCombat( "SPELL_CAST_START 66046 67206 67207 67208 66058 67182 67183 67184 65875 67303 67304 67305 65876 67306 67307 67308", "SPELL_AURA_APPLIED 65724 67213 67214 67215 65748 67216 67217 67218 65950 67296 67297 67298 66001 67281 67282 67283 67246 65879 65916 67244 67245 67248 67249 67250 65874 67256 67257 67258 65858 67259 67260 67261", "SPELL_AURA_REMOVED 65874 67256 67257 67258 65858 67259 67260 67261", "SPELL_INTERRUPT" ) mod:SetBossHealthInfo( 34497, L.Fjola, 34496, L.Eydis ) local warnSpecial = mod:NewAnnounce("WarnSpecialSpellSoon", 3) local warnTouchDebuff = mod:NewAnnounce("WarningTouchDebuff", 2, 66823) local warnPoweroftheTwins = mod:NewAnnounce("WarningPoweroftheTwins2", 4, 65916, "Healer", nil, nil, 65916) local specWarnSpecial = mod:NewSpecialWarning("SpecWarnSpecial", nil, nil, nil, 1, 14) local specWarnSwitch = mod:NewSpecialWarning("SpecWarnSwitchTarget", nil, nil, nil, 1, 2, nil, nil, 65875) local specWarnKickNow = mod:NewSpecialWarning("SpecWarnKickNow", "HasInterrupt", nil, nil, 1, 2, nil, nil, 65875) local specWarnPoweroftheTwins = mod:NewSpecialWarningDefensive(65916, "Tank", nil, 2, 1, 2) local specWarnEmpoweredDarkness = mod:NewSpecialWarningYou(65724)--No voice ideas for this local specWarnEmpoweredLight = mod:NewSpecialWarningYou(65748)--No voice ideas for this local timerCombatStart = mod:NewCombatTimer(22) local enrageTimer = mod:NewBerserkTimer(360) local timerSpecial = mod:NewTimer(45, "TimerSpecialSpell", "Interface\\Icons\\INV_Enchant_EssenceMagicLarge", nil, nil, 6) local timerHeal = mod:NewCastTimer(15, 65875, nil, nil, nil, 4, nil, DBM_COMMON_L.INTERRUPT_ICON) local timerLightTouch = mod:NewTargetTimer(20, 65950, nil, false, 2, 3) local timerDarkTouch = mod:NewTargetTimer(20, 66001, nil, false, 2, 3) local timerAchieve = mod:NewAchievementTimer(180, 3815) local timerAnubRoleplay = mod:NewTimer(52, "TimerAnubRoleplay", 43827, nil, nil, 6) mod:AddBoolOption("SpecialWarnOnDebuff", false, "announce") --mod:AddBoolOption("SetIconOnDebuffTarget", false) -- only commented since retail groups to only 1 debuff ID, which is not a very good GUI approach. mod:AddSetIconOption("SetIconOnDebuffTarget", 66001, false, 0, {1, 2, 3, 4}) mod:AddInfoFrameOption(67258, true) mod:AddBoolOption("HealthFrame", false) local lightEssence, darkEssence = DBM:GetSpellInfo(65686), DBM:GetSpellInfo(65684) local debuffTargets = {} mod.vb.debuffIcon = 1 function mod:OnCombatStart(delay) timerSpecial:Start(-delay) warnSpecial:Schedule(40-delay) timerAchieve:Start(-delay) if self:IsHeroic() then enrageTimer:Start(360-delay) else enrageTimer:Start(480-delay) end self.vb.debuffIcon = 1 end function mod:OnCombatEnd() if self.Options.InfoFrame then DBM.InfoFrame:Hide() end end do local function SpecialAbility(debuff) if not debuff then specWarnSpecial:Show() specWarnSpecial:Play("changecolor") end timerSpecial:Start() warnSpecial:Schedule(40) end function mod:SPELL_CAST_START(args) if args:IsSpellID(66046, 67206, 67207, 67208) then -- Light Vortex local debuff = DBM:UnitDebuff("player", lightEssence) SpecialAbility(debuff) elseif args:IsSpellID(66058, 67182, 67183, 67184) then -- Dark Vortex local debuff = DBM:UnitDebuff("player", darkEssence) SpecialAbility(debuff) elseif args:IsSpellID(65875, 67303, 67304, 67305) then -- Twin's Pact timerHeal:Start() SpecialAbility(true) if self:GetUnitCreatureId("target") == 34497 then -- if lightbane, then switch to darkbane specWarnSwitch:Show() specWarnSwitch:Play("changetarget") end elseif args:IsSpellID(65876, 67306, 67307, 67308) then -- Light Pact timerHeal:Start() SpecialAbility(true) if self:GetUnitCreatureId("target") == 34496 then -- if darkbane, then switch to lightbane specWarnSwitch:Show() specWarnSwitch:Play("changetarget") end end end end do local function resetDebuff(self) self.vb.debuffIcon = 1 end local function warnDebuff(self) warnTouchDebuff:Show(table.concat(debuffTargets, "<, >")) table.wipe(debuffTargets) self:Unschedule(resetDebuff) self:Schedule(5, resetDebuff, self) end local function showPowerWarning(self, cid) local target = self:GetBossTarget(cid) if not target then return end if target == UnitName("player") then specWarnPoweroftheTwins:Show() else warnPoweroftheTwins:Show(target) end end local shieldValues = { [65874] = 175000, [65858] = 175000, [67257] = 300000, [67260] = 300000, [67256] = 700000, [67259] = 700000, [67261] = 1200000, [67258] = 1200000, } local showShieldHealthBar, hideShieldHealthBar, shieldedBoss, updateInfoFrame local frame = CreateFrame("Frame") -- using a separate frame avoids the overhead of the DBM event handlers which are not meant to be used with frequently occuring events like all damage events... local shieldedMob local absorbRemaining = 0 local maxAbsorb = 0 local twipe = table.wipe local lines, sortedLines = {}, {} local function addLine(key, value) -- sort by insertion order lines[key] = value sortedLines[#sortedLines + 1] = key end local function getShieldHP() return math.max(1, math.floor(absorbRemaining / maxAbsorb * 100)) end frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") frame:SetScript("OnEvent", function(self, _, _, subEvent, _, _, _, destGUID, _, _, ...) if shieldedMob == destGUID then local absorbed if subEvent == "SWING_MISSED" then absorbed = select(2, ... ) elseif subEvent == "RANGE_MISSED" or subEvent == "SPELL_MISSED" or subEvent == "SPELL_PERIODIC_MISSED" then absorbed = select(5, ... ) end if absorbed then absorbRemaining = absorbRemaining - absorbed end end end) function showShieldHealthBar(self, mob, shieldName, absorb) shieldedMob = mob absorbRemaining = absorb maxAbsorb = absorb DBM.BossHealth:RemoveBoss(getShieldHP) DBM.BossHealth:AddBoss(getShieldHP, shieldName) self:Schedule(15, hideShieldHealthBar) end function hideShieldHealthBar() DBM.BossHealth:RemoveBoss(getShieldHP) end function updateInfoFrame() twipe(lines) twipe(sortedLines) if shieldedBoss then addLine(shieldedBoss, getShieldHP().."%") end return lines, sortedLines end function mod:SPELL_AURA_APPLIED(args) if args:IsPlayer() and args:IsSpellID(65724, 67213, 67214, 67215) then -- Empowered Darkness specWarnEmpoweredDarkness:Show() elseif args:IsPlayer() and args:IsSpellID(65748, 67216, 67217, 67218) then -- Empowered Light specWarnEmpoweredLight:Show() elseif args:IsSpellID(65950, 67296, 67297, 67298) then -- Touch of Light if args:IsPlayer() and self.Options.SpecialWarnOnDebuff then specWarnSpecial:Show() specWarnSpecial:Play("changecolor") end timerLightTouch:Start(args.destName) if self.Options.SetIconOnDebuffTarget then self:SetIcon(args.destName, self.vb.debuffIcon, 15) end self.vb.debuffIcon = self.vb.debuffIcon + 1 debuffTargets[#debuffTargets + 1] = args.destName self:Unschedule(warnDebuff) self:Schedule(0.9, warnDebuff, self) elseif args:IsSpellID(66001, 67281, 67282, 67283) then -- Touch of Darkness if args:IsPlayer() and self.Options.SpecialWarnOnDebuff then specWarnSpecial:Show() specWarnSpecial:Play("changecolor") end timerDarkTouch:Start(args.destName) if self.Options.SetIconOnDebuffTarget then self:SetIcon(args.destName, self.vb.debuffIcon) end self.vb.debuffIcon = self.vb.debuffIcon - 1 debuffTargets[#debuffTargets + 1] = args.destName self:Unschedule(warnDebuff) self:Schedule(0.75, warnDebuff, self) elseif args:IsSpellID(67246, 65879, 65916, 67244) or args:IsSpellID(67245, 67248, 67249, 67250) then -- Power of the Twins self:Schedule(0.1, showPowerWarning, self, args:GetDestCreatureID()) elseif args:IsSpellID(65874, 67256, 67257, 67258) or args:IsSpellID(65858, 67259, 67260, 67261) then -- Shield of Darkness/Lights shieldedBoss = args.destName showShieldHealthBar(self, args.destGUID, args.spellName, shieldValues[args.spellId] or 0) DBM.InfoFrame:SetHeader(args.spellName) DBM.InfoFrame:Show(2, "function", updateInfoFrame, false, true) end end function mod:SPELL_AURA_REMOVED(args) if args:IsSpellID(65874, 67256, 67257, 67258) or args:IsSpellID(65858, 67259, 67260, 67261) then -- Shield of Darkness/Lights shieldedBoss = nil specWarnKickNow:Show() specWarnKickNow:Play("kickcast") if self.Options.InfoFrame then DBM.InfoFrame:Hide() end hideShieldHealthBar() elseif args:IsSpellID(65950, 67296, 67297, 67298) then -- Touch of Light timerLightTouch:Stop(args.destName) if self.Options.SetIconOnDebuffTarget then self:SetIcon(args.destName, 0) end elseif args:IsSpellID(66001, 67281, 67282, 67283) then -- Touch of Darkness timerDarkTouch:Stop(args.destName) if self.Options.SetIconOnDebuffTarget then self:SetIcon(args.destName, 0) end end end end function mod:SPELL_INTERRUPT(args) if type(args.extraSpellId) == "number" and (args.extraSpellId == 65875 or args.extraSpellId == 67303 or args.extraSpellId == 67304 or args.extraSpellId == 67305 or args.extraSpellId == 65876 or args.extraSpellId == 67306 or args.extraSpellId == 67307 or args.extraSpellId == 67308) then timerHeal:Cancel() end end function mod:CHAT_MSG_MONSTER_YELL(msg) if msg == L.ValksRP or msg:find(L.ValksRP) then timerCombatStart:Start() elseif msg == L.AnubRP or msg:find(L.AnubRP) then timerAnubRoleplay:Start() end end ================================================ FILE: DBM-Coliseum/localization.cn.lua ================================================ -- author: callmejames @《凤凰之翼》 一区藏宝海湾 -- commit by: yaroot -- modified by: Diablohu < 178.com / ngacn.cc / dreamgen.cn > -- Simplified Chinese by hihihaheho@Warmane-Icecrown if GetLocale() ~= "zhCN" then return end local L ------------------------ -- Northrend Beasts -- ------------------------ L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "诺森德猛兽" }) L:SetWarningLocalization({ WarningSnobold = "狗头人奴隶 出现了" }) L:SetTimerLocalization({ TimerNextBoss = "下一场战斗" -- TimerEmerge = "钻地结束", -- TimerSubmerge = "钻地" }) L:SetOptionLocalization({ soundConcAuraMastery= "播放$spell:31821的声音来否定$spell:66330的效果(只针对$spell:19746的主人|cFFF48CBA圣骑士|r", WarningSnobold = "为狗头人奴隶出现显示警报", PingCharge = "当冰吼即将向你你冲锋时自动点击小地图", ClearIconsOnIceHowl = "冲锋前清除所有标记", TimerNextBoss = "显示下一场战斗倒计时", -- TimerEmerge = "显示钻地计时", -- TimerSubmerge = "显示钻地结束计时", IcehowlArrow = "当冰吼即将向你附近冲锋时显示DBM箭头" }) L:SetMiscLocalization({ Charge = "%%s等着(%S+),发出一阵震耳欲聋的怒吼!", CombatStart = "他来自风暴峭壁最幽深,最黑暗的洞穴,穿刺者戈莫克!准备战斗,英雄们!", Phase2 = "做好准备,英雄们,两头猛兽已经进入了竞技场!它们是酸喉和恐鳞!", Phase3 = "当下一名斗士出场时,空气都会为之冻结!它是冰吼,胜或是死,勇士们!", Gormok = "穿刺者戈莫克", Acidmaw = "酸喉", Dreadscale = "恐鳞", Icehowl = "冰吼" }) --------------------- -- Lord Jaraxxus -- --------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "加拉克苏斯大王" }) L:SetOptionLocalization({ IncinerateShieldFrame = "在首领血量里显示血肉成灰目标的血量" }) L:SetMiscLocalization({ IncinerateTarget = "血肉成灰 -> %s", FirstPull = "高阶术士威尔弗雷德·菲兹班将是你们的下一个对手。等待他的上场吧。" }) ------------------------- -- Faction Champions -- ------------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "阵营冠军" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t 戈瑞姆·影斩", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 比莱纳·雷蹄", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 伊林·雾蹄", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t 鲁姬卡", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t 凋零者吉塞尔", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 莉安德拉·唤日者", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 玛里萨斯·辉刃", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 严肃的凯普斯", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 暗语者维维尼", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t 玛兹迪娜", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 萨卡加尔", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 布罗恩·粗角", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t 德拉克道格", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t 断钢者纳霍克", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t 泰利乌斯·达斯布雷德", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 卡雯娜·林歌", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 麦拉多·深谷游者", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t 阿莱希娅·月行者", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t 努兹尔·啸钉", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 圣光使者巴尔诺", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 维兰纳", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 安塔尔·缮炉者", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 布瑞娜·沉夜", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t 伊锐丝·影踪", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 萨缪尔", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 沙拜德", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t 塞瑞莎·术轮", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t 索库尔", -- 34475 AllianceVictory = "荣耀属于联盟!", HordeVictory = "这只是一个小小的开始。为了部落!", --YellKill = "肤浅且可悲的胜利。今天的内耗让我们又一次被削弱了。这种愚蠢的行为只能让巫妖王受益!伟大的战士们就这样白白牺牲,而真正的威胁却步步逼近。巫妖王正计算着我们的死期。" }) --------------------- -- Val'kyr Twins -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "瓦格里双子" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "特殊技能 即将到来", SpecWarnSpecial = "立刻变换颜色", SpecWarnSwitchTarget = "立刻切换目标攻击双生相协", SpecWarnKickNow = "立刻打断", WarningTouchDebuff = "光明或黑暗之触 -> >%s<", WarningPoweroftheTwins2 = "双生之能 - 加大治疗 -> >%s<" }) L:SetTimerLocalization({ TimerSpecialSpell = "下一次 特殊技能", TimerAnubRoleplay = "坠落" }) L:SetOptionLocalization({ TimerSpecialSpell = "为下一次特殊技能显示计时器", TimerAnubRoleplay = "计时条:地板破裂前的剧情", WarnSpecialSpellSoon = "为下一次特殊技能显示提前警报", SpecWarnSpecial = "当你需要变换颜色时显示特殊警报", SpecWarnSwitchTarget = "当另一个首领施放双子相协时显示特殊警报", SpecWarnKickNow = "当你可以打断时显示特殊警报", SpecialWarnOnDebuff = "当你中了光明或黑暗之触时显示特殊警报(需切换颜色)", SetIconOnDebuffTarget = "为光明或黑暗之触的目标设置标记(英雄模式)", WarningTouchDebuff = "提示光明或黑暗之触的目标", WarningPoweroftheTwins2 = "提示双生之能的目标" }) L:SetMiscLocalization({ -- YellPull = "以黑暗之主的名义。为了巫妖王。你必死无疑。", -- CombatStart = "你们只有团结才能战胜最终的挑战。来自于冰冠冰川的深处,天灾军团最强的战将:巫妖王的双翼使者,恐怖的瓦格里!", Fjola = "光明邪使菲奥拉", Eydis = "黑暗邪使艾蒂丝", ValksRP = "让游戏开始吧!", -- 35709 AnubRP = "这是对巫妖王的一次重创!你的实力绝不亚于银色北伐军的勇士。很快,我们将携手攻入冰冠堡垒,消灭天灾军团的残余!只要心齐,我们必将胜利!" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "阿努巴拉克" }) --L:SetTimerLocalization({ -- TimerEmerge = "钻地结束", -- TimerSubmerge = "钻地", -- timerAdds = "下一次 掘地者出现" --}) L:SetWarningLocalization({ WarnEmerge = "阿努巴拉克钻出地面了", WarnEmergeSoon = "10秒后 钻出地面", WarnSubmerge = "阿努巴拉克钻进地里了", WarnSubmergeSoon = "10秒后 钻进地里", warnAdds = "掘地者 出现了" }) L:SetMiscLocalization({ Emerge = "从地面上升起来了!", Burrow = "钻入了地下!", YellBurrow = "Auum na-l ak-k-k-k, isshhh。起来,奴仆们,吃吧……", PcoldIconSet = "刺骨之寒{rt%d} -> %s", PcoldIconRemoved = "移除标记 -> %s" }) L:SetOptionLocalization({ WarnEmerge = "为钻出地面显示警报", WarnEmergeSoon = "为钻出地面显示提前警报", WarnSubmerge = "为钻进地里显示警报", WarnSubmergeSoon = "为钻进地里显示提前警报", warnAdds = "提示掘地者出现", -- timerAdds = "为下一次掘地者出现显示计时器", -- TimerEmerge = "为首领钻地显示计时器", -- TimerSubmerge = "为下一次钻地显示计时器", AnnouncePColdIcons = "公布$spell:68510目标设置的标记到团队频道 (需要团长或助理权限)", AnnouncePColdIconsRemoved = "当移除$spell:68510的标记时也提示 (需要上述选项)", RemoveHealthBuffsInP3 = "在第 3 阶段开始时移除健康增益" }) ================================================ FILE: DBM-Coliseum/localization.de.lua ================================================ if GetLocale() ~= "deDE" then return end local L ------------------------ -- Northrend Beasts -- ------------------------ L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "Bestien von Nordend" }) L:SetWarningLocalization({ WarningSnobold = "Schneeboldvasall erschienen auf >%s<" }) L:SetTimerLocalization({ TimerNextBoss = "Nächster Boss" -- TimerEmerge = "Auftauchen", -- TimerSubmerge = "Abtauchen" }) L:SetOptionLocalization({ soundConcAuraMastery= "Spielt den Sound von $spell:31821, um die Effekte von $spell:66330 zu negieren (nur für den |cFFF48CBAPaladin|r, der der Besitzer von $spell:19746 ist)", WarningSnobold = "Zeige Warnung, wenn ein Schneeboldvasall erscheint", PingCharge = "Ping die Minimap wenn Eisheuler dich niedertrampeln will", ClearIconsOnIceHowl = "Entferne alle Zeichen vor dem Trampeln", TimerNextBoss = "Zeige Zeit bis zum Erscheinen des nächsten Bosses", -- TimerEmerge = "Zeige Zeit bis Auftauchen", -- TimerSubmerge = "Zeige Zeit bis Abtauchen", IcehowlArrow = "Zeige DBM-Pfeil, wenn Eisheuler jemand in deiner Nähe niedertrampeln will" }) L:SetMiscLocalization({ Charge = "%%s sieht (%S+) zornig an und lässt einen gewaltigen Schrei ertönen!", CombatStart = "Er kommt aus den tiefsten, dunkelsten Höhlen der Sturmgipfel - Gormok der Pfähler! Voran, Helden!", Phase2 = "Stählt Euch, Helden, denn die Zwillingsschrecken Ätzschlund und Schreckensmaul erscheinen in der Arena!", Phase3 = "Mit der Ankündigung unseres nächsten Kämpfers gefriert die Luft selbst: Eisheuler! Tötet oder werdet getötet, Champions!", Gormok = "Gormok der Pfähler", Acidmaw = "Ätzschlund", Dreadscale = "Schreckensmaul", Icehowl = "Eisheuler" }) --------------------- -- Lord Jaraxxus -- --------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Lord Jaraxxus" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Zeige Lebensanzeige mit einem Balken für Fleisch einäschern" }) L:SetMiscLocalization({ IncinerateTarget = "Fleisch einäschern: %s", FirstPull = "Großhexenmeister Wilfred Zischknall wird Eure nächste Herausforderung beschwören. Harrt seiner Ankunft." }) ------------------------- -- Faction Champions -- ------------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "Fraktionschampions" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Gorgrim Schattenspalter", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Birana Sturmhuf", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Erin Nebelhuf", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Ruj'kah", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Ginselle Seuchenwerfer", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Liandra Sonnenrufer", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Malithas Glanzklinge", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Caiphus der Ernste", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Vivienne Schwarzraunen", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Maz'dinah", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Thrakgar", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Broln Starkhorn", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Harkzog", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Narrhok Stahlbrecher", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Tyrius Dämmerklinge", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Kavina Haineslied", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Melador Talwanderer", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Alyssia Mondpirscher", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Noozle Zischelstock", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Baelnor Lichtträger", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Velanaa", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Anthar Schmiedenformer", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Brienna Tiefnacht", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Irieth Schattenschritt", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Saamul", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Shaabad", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Serissa Düsterhauch", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Shocuul", -- 34475 AllianceVictory = "EHRE DER ALLIANZ!", HordeVictory = "Das ist nur ein Vorgeschmack auf die Zukunft. FÜR DIE HORDE!" --YellKill = "Ein tragischer Sieg. Wir wurden schwächer durch die heutigen Verluste. Wer außer dem Lichkönig profitiert von solchen Torheiten? Große Krieger gaben ihr Leben. Und wofür? Die wahre Bedrohung erwartet uns noch - der Lichkönig erwartet uns alle im Tod." }) --------------------- -- Val'kyr Twins -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Zwillingsval'kyr" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Spezialfähigkeit bald", SpecWarnSpecial = "Farbe wechseln", SpecWarnSwitchTarget = "Ziel wechseln", SpecWarnKickNow = "Jetzt unterbrechen", WarningTouchDebuff = "Berührung auf >%s<", WarningPoweroftheTwins2 = "Macht der Zwillinge - Mehr Heilung auf >%s<" }) L:SetTimerLocalization({ TimerSpecialSpell = "Nächste Spezialfähigkeit", TimerAnubRoleplay = "Bodeneinbrüche in" }) L:SetOptionLocalization({ TimerSpecialSpell = "Zeige Zeit bis nächste Spezialfähigkeit", TimerAnubRoleplay = "Rollenspiel-Timer für der Lichkönig anzeigen, der das Parkett bricht", WarnSpecialSpellSoon = "Zeige Vorwarnung für nächste Spezialfähigkeit", SpecWarnSpecial = "Spezialwarnung, wenn du die Farbe wechseln musst", SpecWarnSwitchTarget = "Spezialwarnung, wenn der andere Zwilling zaubert", SpecWarnKickNow = "Spezialwarnung zum Unterbrechen", SpecialWarnOnDebuff = "Spezialwarnung bei Berührung (um Farbe zu wechseln)", SetIconOnDebuffTarget = "Setze Zeichen auf Ziele von Berührung des Lichts/der Nacht (heroisch)", WarningTouchDebuff = "Verkünde Ziele von Berührung des Lichts/der Nacht", WarningPoweroftheTwins2 = "Verkünde Ziele von Macht der Zwillinge" }) L:SetMiscLocalization({ -- YellPull = "Im Namen unseres dunklen Meisters. Für den Lichkönig. Ihr. Werdet. Sterben.", -- CombatStart = "Nur gemeinsam werdet Ihr den letzten Kampf meistern. Aus den Tiefen Eiskrones stammen diese zwei der mächtigsten Kommandanten der Geißel: schreckliche Val'kyr, geflügelte Boten des Lichkönigs!", Fjola = "Fjola Lichtbann", Eydis = "Eydis Nachtbann", ValksRP = "Lasst die Spiele beginnen!", -- 35709 AnubRP = "Dem Lichkönig wurde ein schwerer Schlag versetzt! Ihr habt Euch als würdige Champions erwiesen. Gemeinsam werden wir den Angriff auf die Eiskronenzitadelle durchführen und den Rest der Geißel zerstören! Gemeinsam meistern wir alles!" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "Anub'arak" }) --L:SetTimerLocalization({ -- TimerEmerge = "Auftauchen", -- TimerSubmerge = "Abtauchen", -- timerAdds = "Neue Adds" --}) L:SetWarningLocalization({ WarnEmerge = "Auftauchen", WarnEmergeSoon = "Auftauchen in 10 Sekunden", WarnSubmerge = "Abtauchen", WarnSubmergeSoon = "Abtauchen in 10 Sekunden", warnAdds = "Neue Adds" }) L:SetMiscLocalization({ --YellPull = "Dieser Ort wird Euch als Grab dienen!", Emerge = "entsteigt dem Boden!", Burrow = "gräbt sich in den Boden!", YellBurrow = "Auum na-l ak-k-k-k, isshhh. Erhebt euch, Diener. Verschlingt...", PcoldIconSet = "DKälte-Zeichen {rt%d} auf %s gesetzt", PcoldIconRemoved = "DKälte-Zeichen von %s entfernt" }) L:SetOptionLocalization({ WarnEmerge = "Zeige Warnung für Auftauchen", WarnEmergeSoon = "Zeige Vorwarnung für Auftauchen", WarnSubmerge = "Zeige Warnung für Abtauchen", WarnSubmergeSoon = "Zeige Vorwarnung für Abtauchen", warnAdds = "Verkünde neue Adds", -- timerAdds = "Zeige Zeit bis neue Adds erscheinen", -- TimerEmerge = "Zeige Zeit bis Auftauchen", -- TimerSubmerge = "Zeige Zeit bis Abtauchen", AnnouncePColdIcons = "Verkünde Zeichen für Ziele von $spell:66013 im Schlachtzugchat (nur als Leiter)", AnnouncePColdIconsRemoved = "Verkünde auch das Entfernen von Zeichen für $spell:66013 (benötigt obige Einstellung)", RemoveHealthBuffsInP3 = "Entferne lebenspunktesteigernde Buffs in Phase 3" }) ================================================ FILE: DBM-Coliseum/localization.en.lua ================================================ local L ------------------------ -- Northrend Beasts -- ------------------------ L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "Northrend Beasts" }) L:SetWarningLocalization({ WarningSnobold = "Snobold Vassal spawned on >%s<" }) L:SetTimerLocalization({ TimerNextBoss = "Next boss" -- TimerEmerge = "Emerge", -- TimerSubmerge = "Submerge" }) L:SetOptionLocalization({ soundConcAuraMastery= "Play $spell:31821 sound to negate the effects of $spell:66330 (only for the |cFFF48CBAPaladin|r that is the owner of $spell:19746)", WarningSnobold = "Show warning for Snobold Vassal spawns", PingCharge = "Ping the minimap when Icehowl is about to charge you", ClearIconsOnIceHowl = "Clear all icons before charge", TimerNextBoss = "Show timer for next boss spawn", -- TimerEmerge = "Show timer for emerge", -- TimerSubmerge = "Show timer for submerge", IcehowlArrow = "Show DBM arrow when Icehowl is about to charge near you" }) L:SetMiscLocalization({ Charge = "^%%s glares at (%S+) and lets out", CombatStart = "Hailing from the deepest, darkest caverns of the Storm Peaks, Gormok the Impaler! Battle on, heroes!", Phase2 = "Steel yourselves, heroes, for the twin terrors, Acidmaw and Dreadscale, enter the arena!", Phase3 = "The air itself freezes with the introduction of our next combatant, Icehowl! Kill or be killed, champions!", Gormok = "Gormok the Impaler", Acidmaw = "Acidmaw", Dreadscale = "Dreadscale", Icehowl = "Icehowl" }) --------------------- -- Lord Jaraxxus -- --------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Lord Jaraxxus" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Show boss health with a health bar for Incinerate Flesh" }) L:SetMiscLocalization({ IncinerateTarget = "Incinerate Flesh: %s", FirstPull = "Grand Warlock Wilfred Fizzlebang will summon forth your next challenge. Stand by for his entry." }) ------------------------- -- Faction Champions -- ------------------------- L = DBM:GetModLocalization("Champions") local champions = "Faction Champions" if UnitFactionGroup("player") == "Alliance" then champions = "Horde Champions" elseif UnitFactionGroup("player") == "Horde" then champions = "Alliance Champions" end L:SetGeneralLocalization({ name = champions }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Gorgrim Shadowcleave", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Birana Stormhoof", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Erin Misthoof", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Ruj'kah", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Ginselle Blightslinger", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Liandra Suncaller", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Malithas Brightblade", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Caiphus the Stern", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Vivienne Blackwhisper", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Maz'dinah", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Thrakgar", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Broln Stouthorn", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Harkzog", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Narrhok Steelbreaker", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Tyrius Duskblade", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Kavina Grovesong", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Melador Valestrider", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Alyssia Moonstalker", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Noozle Whizzlestick", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Baelnor Lightbearer", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Velanaa", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Anthar Forgemender", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Brienna Nightfell", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Irieth Shadowstep", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Saamul", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Shaabad", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Serissa Grimdabbler", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Shocuul", -- 34475 AllianceVictory = "GLORY TO THE ALLIANCE!", HordeVictory = "That was just a taste of what the future brings. FOR THE HORDE!" --YellKill = "A shallow and tragic victory. We are weaker as a whole from the losses suffered today. Who but the Lich King could benefit from such foolishness? Great warriors have lost their lives. And for what? The true threat looms ahead - the Lich King awaits us all in death." }) --------------------- -- Val'kyr Twins -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Val'kyr Twins" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Special ability soon", SpecWarnSpecial = "Change color", SpecWarnSwitchTarget = "Switch target", SpecWarnKickNow = "Interrupt now", WarningTouchDebuff = "Debuff on >%s<", WarningPoweroftheTwins2 = "Power of the Twins - More healing on >%s<" }) L:SetTimerLocalization({ TimerSpecialSpell = "Next special ability", TimerAnubRoleplay = "Floor breaks in" }) L:SetOptionLocalization({ TimerSpecialSpell = "Show timer for next special ability", TimerAnubRoleplay = "Show roleplay timer for Lich King breaking the floor", WarnSpecialSpellSoon = "Show pre-warning for next special ability", SpecWarnSpecial = "Show special warning when you have to change color", SpecWarnSwitchTarget = "Show special warning when the other Twin is casting", SpecWarnKickNow = "Show special warning when you have to interrupt", SpecialWarnOnDebuff = "Show change color special warning when touch debuffed (to switch debuff)", SetIconOnDebuffTarget = "Set icons on Touch of Light/Darkness debuff targets (heroic)", WarningTouchDebuff = "Announce Touch of Light/Darkness debuff targets", WarningPoweroftheTwins2 = "Announce Power of the Twins targets" }) L:SetMiscLocalization({ -- YellPull = "In the name of our dark master. For the Lich King. You. Will. Die.", -- CombatStart = "Only by working together will you overcome the final challenge. From the depths of Icecrown come two of the Scourge's most powerful lieutenants: fearsome val'kyr, winged harbingers of the Lich King!", Fjola = "Fjola Lightbane", Eydis = "Eydis Darkbane", ValksRP = "Let the games begin!", -- 35709 AnubRP = "A mighty blow has been dealt to the Lich King! You have proven yourselves as able bodied champions of the Argent Crusade. Together we will strike against Icecrown Citadel and destroy what remains of the Scourge! There is no challenge that we cannot face united!" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "Anub'arak" }) L:SetTimerLocalization({ -- TimerEmerge = "Emerge", -- TimerSubmerge = "Submerge", -- timerAdds = "New adds" }) L:SetWarningLocalization({ WarnEmerge = "Anub'arak emerges", WarnEmergeSoon = "Emerge in 10 seconds", WarnSubmerge = "Anub'arak submerges", WarnSubmergeSoon = "Submerge in 10 seconds", warnAdds = "New adds" }) L:SetMiscLocalization({ -- YellPull = "This place will serve as your tomb!", Emerge = "emerges from the ground!", Burrow = "burrows into the ground!", YellBurrow = "Auum na-l ak-k-k-k, isshhh. Rise, minions. Devour...", PcoldIconSet = "PCold icon {rt%d} set on %s", PcoldIconRemoved = "PCold icon removed from %s" }) L:SetOptionLocalization({ WarnEmerge = "Show warning for emerge", WarnEmergeSoon = "Show pre-warning for emerge", WarnSubmerge = "Show warning for submerge", WarnSubmergeSoon = "Show pre-warning for submerge", warnAdds = "Announce new adds", -- timerAdds = "Show timer for new adds", -- TimerEmerge = "Show timer for emerge", -- TimerSubmerge = "Show timer for submerge", AnnouncePColdIcons = "Announce icons for $spell:66013 targets to raid chat (requires raid leader)", AnnouncePColdIconsRemoved = "Announce when icons are removed for $spell:66013 (requires raid leader)", RemoveHealthBuffsInP3 = "Remove HP buffs at start of Phase 3" }) ================================================ FILE: DBM-Coliseum/localization.es.lua ================================================ if GetLocale() ~= "esES" then return end local L ------------------------------- -- Las bestias de Rasganorte -- ------------------------------- L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "Las bestias de Rasganorte" }) L:SetWarningLocalization({ WarningSnobold = "Vasallo snóbold en >%s<" }) L:SetTimerLocalization({ TimerNextBoss = "Siguiente jefe" -- TimerEmerge = "Emersión", -- TimerSubmerge = "Sumersión" }) L:SetOptionLocalization({ soundConcAuraMastery= "Reproducir el sonido de $spell:31821 para anular los efectos de $spelll:66330 (sólo para el |cFFF48CBAPaladín|r que es el propietario de $spell:19746)", WarningSnobold = "Mostrar aviso cuando aparezca un Vasallo snóbold", PingCharge = "Pulsar en el Minimapa si Aullahielo va a por Ti", ClearIconsOnIceHowl = "Quitar todos los iconos antes de cada carga", TimerNextBoss = "Mostrar temporizador para el siguiente jefe", -- TimerEmerge = "Mostrar temporizador para cuando Fauceácida y Aterraescama regresen a la superficie", -- TimerSubmerge = "Mostrar temporizador para cuando Fauceácida y Aterraescama se sumerjan en la tierra", IcehowlArrow = "Mostrar flecha cuando Aullahielo vaya a cargar hacia ti" }) L:SetMiscLocalization({ Charge = "¡%%s mira a (%S+) y emite un bramido!", CombatStart = "Desde las cavernas más oscuras y profundas de Las Cumbres Tormentosas: ¡Gormok el Empalador! ¡A luchar, héroes!", Phase2 = "Preparaos, héroes, para los temibles gemelos: ¡Fauceácida y Aterraescama! ¡A la arena!", Phase3 = "El propio aire se congela al presentar a nuestro siguiente combatiente: ¡Aullahielo! ¡Matad o morid, campeones!", Gormok = "Gormok el Empalador", Acidmaw = "Fauceácida", Dreadscale = "Aterraescama", Icehowl = "Aullahielo" }) ------------------- -- Lord Jaraxxus -- ------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Lord Jaraxxus" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Mostrar salud del jefe en una barra de vida durante Incinerar carne" }) L:SetMiscLocalization({ IncinerateTarget = "Incinerar carne: %s", FirstPull = "El gran brujo Wilfred Chispobang invocará al siguiente contrincante. Esperad a que aparezca." }) ----------------------------- -- Campeones de la facción -- ----------------------------- L = DBM:GetModLocalization("Champions") local champions = "Campeones de la facción" if UnitFactionGroup("player") == "Alliance" then champions = "Campeones de la Horda" elseif UnitFactionGroup("player") == "Horde" then champions = "Campeones de la Alianza" end L:SetGeneralLocalization({ name = champions }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Gorgrim Rajasombra", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Birana Pezuña Tempestuosa",-- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Erin Pezuña de Niebla", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Ruj'kah", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Ginselle Lanzaañublo", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Liandra Clamasol", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Malithas Hoja Brillante", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Caiphus el Austero", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Vivienne Susurro Oscuro", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Maz'dinah", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Thrakgar", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Broln Cuernorrecio", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Harkzog", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Narrhok Rompeacero", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Tyrius Hoja Umbría", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Kavina Canto Arboleda", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Melador Caminavalles", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Alyssia Acechalunas", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Noozle Varapalo", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Baelnor Portador de la Luz", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Velanaa", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Anthar Ensalmaforja", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Brienna Talanoche", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Irieth Paso Sombrío", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Saamul", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Shaabad", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Serissa Desventura", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Shocuul", -- 34475 AllianceVictory = "¡GLORIA A LA ALIANZA!", --AllianceVictory = "¡GLORIA PARA LA ALIANZA!" -- esMX HordeVictory = "Eso solo ha sido una muestra de lo que depara el futuro. ¡POR LA HORDA!" --HordeVictory = "Eso es sólo una probada de lo que traerá el futuro. ¡POR LA HORDA!" -- esMX --YellKill = "Una victoria trágica y fútil. Hoy somos menos por las pérdidas que hemos sufrido. ¿Quién podría beneficiarse de tal insensatez además del Rey Exánime? Grandes guerreros han perdido la vida. ¿Y para qué? La verdadera amenaza aguarda, el Rey Exánime nos espera a todos en la muerte." --YellKill = "Una victoria trágica y superficial. Nuestra integridad se vio debilitada por las pérdidas que hoy sufrimos. ¿Quién más que el Rey Exánime puede haberse beneficiado de tal insensatez? Grandes guerreros han perdido sus vidas. ¿Y para qué? La verdadera amenaza se entreteje en el futuro: el Rey Exánime nos espera en la muerte." -- esMX }) L:SetOptionLocalization({ PlaySoundOnBladestorm = "Reproducir sonido en Filotormenta" }) --------------------- -- Gemelas Val'kyr -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Gemelas Val'kyr" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Facultad especial en breve", SpecWarnSpecial = "Cambia de color", SpecWarnSwitchTarget = "Cambia de objetivo", SpecWarnKickNow = "Interrumpe ahora", WarningTouchDebuff = "Perjuicio en >%s<", WarningPoweroftheTwins2 = "Poder de las Gemelas - ¡más sanación en >%s%s<" }) L:SetTimerLocalization({ TimerNextBoss = "Prochain boss dans" -- TimerEmerge = "Sort du sol", -- TimerSubmerge = "Rentre dans le sol" }) L:SetOptionLocalization({ soundConcAuraMastery = "Jouer le son $spell:31821 pour annuler les effets de $spell:66330 (seulement pour le |cFFF48CBAPaladin|r qui est le propriétaire de $spell:19746)", WarningSnobold = "Montre une alerte quand les Vassal arrivent", PingCharge = "Ping sur la minimap quand Glace-hurlante va vous charger", ClearIconsOnIceHowl = "Enlève toutes les icônes avant la prochaine charge", -- TimerNextBoss = "Montre le timer pour l'arrivée du prochain boss", -- TimerEmerge = "Montre le timer avant que les vers rentre dans le sol", TimerSubmerge = "Montre le timer avant que les vers sortent du sol" }) L:SetMiscLocalization({ Charge = "fusille (%S+) du regard", CombatStart = "Arrivant tout droit des plus noires et profondes cavernes des pics Foudroyés, Gormok l'Empaleur !", Phase2 = "car voici que les terreurs jumelles", Phase3 = "de notre prochain combattant", Gormok = "Gormok l'Empaleur", Acidmaw = "Gueule-d'acide", Dreadscale = "Ecaille-d'effroi", Icehowl = "Glace-hurlante" }) ------------------- -- Lord Jaraxxus -- ------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Seigneur Jaraxxus" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Montre la vie du Boss avec une barre de vie pour Incinérer la chair" }) L:SetMiscLocalization({ IncinerateTarget = "Incinérer la chair: %s", FirstPull = "Le grand démoniste Wilfred Flopboum va invoquer votre prochain défi. Ne bougez pas, il arrive." }) ----------------------- -- Faction Champions -- ----------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "Champion des Factions" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Gorgrim Fend-les-ombres", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Birana Sabot-Tempête", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Erin Sabot-de-brume", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Ruj'kah", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Ginselle Jettechancre", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Liandra Mande-soleil", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Malithas Brillelame", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Caiphus le Sévère", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Vivienne Murmenoir", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Maz'dinah", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Thrakgar", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Broln Corne-Rude", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Harkzog", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Narrhok Brise-acier", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Tyrius Lamebrune", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Kavina Chantebosquet", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Melador Arpenteval", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Alyssia Traquelune", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Touillert Vizitige", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Baelnor Portelumière", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Velanaa", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Anthar Soigneforge", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Brienna Tombenuit", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Irieth Pas-de-l'ombre", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Saamul", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Shaabad", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Serissa Funèbricole", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Shocuul", -- 34475 AllianceVictory = "GLOIRE À L'ALLIANCE !", HordeVictory = "Et ce n'était qu'un avant-goût de ce que l'avenir vous réserve. POUR LA HORDE !" --YellKill = "Une victoire tragique et dépourvue de sens. La perte subie aujourd'hui nous affaiblira tous, car qui d'autre que le roi-liche pourrait bénéficier d'une telle folie ? De grands guerriers ont perdu la vie. Et pour quoi ? La vraie menace plane à l'horizon : le roi-liche nous attend, tous, dans la mort." }) ------------------ -- Valkyr Twins -- ------------------ L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Soeurs Val'kyr" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Capacité spéciale Bientôt !", SpecWarnSpecial = "Changement de couleur !", SpecWarnSwitchTarget = "Changement de cible !", SpecWarnKickNow = "Casser Maintenant !", WarningTouchDebuff = "Toucher sur >%s<", WarningPoweroftheTwins2 = "Puissance des jumelles - plus de soins sur >%s<" }) L:SetTimerLocalization({ TimerSpecialSpell = "Prochaine Capacité Spéciale", TimerAnubRoleplay = "Pauses de sol en" }) L:SetOptionLocalization({ TimerSpecialSpell = "Montre une alerte spéciale pour la prochaine Capacité spéciale", TimerAnubRoleplay = "Afficher le timer de la durée du roleplay du Le Roi Liche cassant le sol", WarnSpecialSpellSoon = "Montre une Pré-Alerte pour la prochaine Capacité spéciale", SpecWarnSpecial = "Montre une alerte spéciale quand vous devez changer de couleur", SpecWarnSwitchTarget = "Montre une alerte spéciale quand l'autre boss est en train d'incanter", SpecWarnKickNow = "Montre une alerte spéciale quand vous devez interrompre l'incantation", SpecialWarnOnDebuff = "Montre une alerte spéciale quand vous avez un Toucher (pour changer de debuff)", SetIconOnDebuffTarget = "Met des icônes sur les cibles des Toucher (héroique)", WarningTouchDebuff = "Annoncer les cibles des débuff Toucher de Lumière/des Ténèbres", WarningPoweroftheTwins2 = "Annoncer la cible pour Puissance des jumelles" }) L:SetMiscLocalization({ -- YellPull = "Au nom de notre ténébreux maître. Pour le roi-liche. Vous. Allez. Mourir.", -- CombatStart = "Ce n'est qu'en travaillant côte à côte que vous pourrez triompher de l'ultime défi. Venus des profondeurs de la Couronne de glace, voici deux des lieutenants les plus puissants du Fléau : de redoutables val'kyrs, messagères ailées du roi-liche !", Fjola = "Fjola Plaie-lumineuse", Eydis = "Eydis Plaie-sombre", ValksRP = "Que les jeux commencent !", -- 35709 AnubRP = "C'est un rude coup qui vient d'être porté au roi-liche ! Vous avez prouvé que vous êtes aptes à servir comme champions de la Croisade d'argent. Ensemble, nous frapperons la citadelle de la Couronne de glace, et détruirons ce qui reste du Fléau ! Aucun défi ne pourra résister à notre unité !" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "Anub'arak" }) --L:SetTimerLocalization({ -- TimerEmerge = "Sort du sol", -- TimerSubmerge = "Rentre dans le sol", -- timerAdds = "Nouveaux add dans" --}) L:SetWarningLocalization({ WarnEmerge = "Anub'arak Sort du sol", WarnEmergeSoon = "Anub'arak Sort du sol dans 10 sec", WarnSubmerge = "Anub'arak Rentre dans le sol", WarnSubmergeSoon = "Anub'arak Rentre dans le sol dans 10 sec", warnAdds = "Les add arrivent" }) L:SetMiscLocalization({ -- YellPull = "Ce terreau sera votre tombeau !", Emerge = "surgit de la terre", Burrow = "enfonce dans le sol", YellBurrow = "Auum na-l ak-k-k-k, isshhh. Debout, mes serviteurs. Dévorez...", PcoldIconSet = "Pcold Icon {rt%d} set on %s", PcoldIconRemoved = "Pcold Icon removed from %s" }) L:SetOptionLocalization({ WarnEmerge = "Montre une alerte quand le boss sort du sol", WarnEmergeSoon = "Montre une alerte avant que le boss sorte du sol", WarnSubmerge = "Montre une alerte quand le boss rentre dans le sol", WarnSubmergeSoon = "Montre une alerte avant que le boss ne rentre dans le sol", warnAdds = "Montre une alerte pour l'arrivée des add", -- timerAdds = "Montre le timer avant l'arrivée des nouveaux add", -- TimerEmerge = "Montre le timer pour la sortie du boss", -- TimerSubmerge = "Montre le timer pour la rentrée du boss dans la terre", AnnouncePColdIcons = "Marque les icones des cible du Froid pénétrant dans le chatt (Requiert les annonces activer et être le leader ou avoir une promot)", AnnouncePColdIconsRemoved = "Annoncez également lorsque les icônes sont supprimées pour $spell:66013 (nécessite l'option ci-dessus)", RemoveHealthBuffsInP3 = "Enlève les buffs de soins au début de la phase 3" }) ================================================ FILE: DBM-Coliseum/localization.kr.lua ================================================ if GetLocale() ~= "koKR" then return end local L ------------------------ -- Northrend Beasts -- ------------------------ L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "노스렌드의 야수" }) L:SetWarningLocalization({ WarningSnobold = "스노볼트 부하 생성 : >%s<" }) L:SetTimerLocalization({ TimerNextBoss = "곧 다음 우두머리" -- TimerEmerge = "출현", -- TimerSubmerge = "숨기" }) L:SetOptionLocalization({ soundConcAuraMastery = "$spell:31821 사운드를 재생하여 $spell:66330의 효과를 무효화합니다($spell:19746의 소유자인 |cFFF48CBA성기사|r만 해당)", WarningSnobold = "스노볼트 부하 생성 알림 보기", PingCharge = "얼음울음에게 사나운 돌진의 대상이 될 경우 미니맵에 핑 표시하기", ClearIconsOnIceHowl = "사나운 돌진 전에 모든 전술 목표 아이콘 지움", TimerNextBoss = "다음 우두머리 등장 바 보기", -- TimerEmerge = "출현 바 보기", -- TimerSubmerge = "숨기 바 보기", IcehowlArrow = "사나운 돌진 대상이 가까이 있을 경우 DBM 화살표 보기" }) L:SetMiscLocalization({ Charge = "노려보며 큰 소리로 울부짖습니다.", CombatStart = "폭풍우 봉우리의 가장 깊고 어두운 동굴에서 온, 꿰뚫는 자 고르목일세! 영웅들이여, 전투에 임하게!", Phase2 = "마음을 단단히 먹게, 영웅들이여. 두 배의 공포, 산성아귀와 공포비늘이 투기장으로 들어온다네!", Phase3 = "다음은, 소개하는 순간 공기마저 얼어붙게 하는 얼음울음일세! 죽이지 않으면 죽을 걸세, 용사들이여!", Gormok = "꿰뚫는 자 고르목", Acidmaw = "산성아귀", Dreadscale = "공포비늘", Icehowl = "얼음울음" }) ------------------- -- Lord Jaraxxus -- ------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "군주 자락서스" }) L:SetOptionLocalization({ IncinerateShieldFrame = "우두머리 체력 바 사용시 살점 소각 치유량 바 함께 보기" }) L:SetMiscLocalization({ IncinerateTarget = "살점 소각: %s", FirstPull = "대흑마법사 윌프레드 피즐뱅이 다음 상대를 소환할 걸세. 기다리고 있게나." }) ----------------------- -- Faction Champions -- ----------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "진영 대표 용사" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t 고르그림 섀도클리브", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 비라나 스톰후프", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 에린 미스트후프", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t 루즈카", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t 진셀 브라이트슬링어", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 리안드라 선콜러", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 말리타스 브라이트블레이드", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 준엄한 카이푸스", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 비비안 블랙위스퍼", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t 마즈디나", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 스락가르", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 브롤른 스타우트혼", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t 하크조그", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t 나르호크 스틸브레이커", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t 티리우스 더스크블레이드", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 카비나 그로브송", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t 멜라도르 베일스트라이더", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t 알리시아 문스토커", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t 누즐 위즐스틱", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 밸노르 라이트베어러", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t 벨라나", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 안타르 포지멘더", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t 브리에나 나이트펠", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t 이리에스 섀도스텝", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 사아물", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t 샤바드", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t 세리사 그림대블러", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t 쇼쿨", -- 34475 AllianceVictory = "얼라이언스에 영광을!", HordeVictory = "앞으로 일어날 일의 맛보기일 뿐이다. 호드를 위하여!" --YellKill = "상처뿐인 승리로군. 오늘 받은 손해로 우리 전력은 약해졌네. 이런 어리석은 짓으로 리치 왕 말고 또 누가 이득을 보겠나? 위대한 용사들이 목숨을 잃었네. 무엇을 위해서였나? 진짜 위협은 저 앞에 있네. 리치 왕이 우리 모두를 죽음 안에서 기다린다네.", }) ------------------ -- Valkyr Twins -- ------------------ L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "발키르 쌍둥이" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "곧 소용돌이 또는 서약", SpecWarnSpecial = "차원문 클릭하여 반대 속성으로 변경!", SpecWarnSwitchTarget = "대상 전환!", SpecWarnKickNow = "지금 차단!", WarningTouchDebuff = "손길 : >%s<", WarningPoweroftheTwins2 = "쌍둥이의 힘 : %s", }) L:SetTimerLocalization({ TimerSpecialSpell = "다음 소용돌이/서약", TimerAnubRoleplay = "바닥 파손" }) L:SetOptionLocalization({ TimerSpecialSpell = "다음 속성의 소용돌이 또는 쌍둥이의 서약 바 보기", TimerAnubRoleplay = "역할 수행(롤플레이) 지속 시간 타이머 바 보기", WarnSpecialSpellSoon = "속성의 소용돌이 또는 쌍둥이의 서약 이전에 일림 보기", SpecWarnSpecial = "속성(색) 변경을 해야할 때 특수 경고 보기", SpecWarnSwitchTarget = "쌍둥이의 서약 대상 전환 특수 경고 보기", SpecWarnKickNow = "쌍둥이의 서약 차단 특수 경고 보기", SpecialWarnOnDebuff = "빛/어둠의 손길 대상이 된 경우 특수 경고 보기", SetIconOnDebuffTarget = "빛/어둠의 손길 대상에게 전술 목표 아이콘 설정(영웅 난이도)", WarningTouchDebuff = "빛/어둠의 손길 대상 알림 보기", WarningPoweroftheTwins2 = "쌍둥이의 힘 대상 알림 보기", }) L:SetMiscLocalization({ -- YellPull = "어둠의 주인님을 받들어. 리치 왕을 위하여. 너희에게. 죽음을. 안기리라.", -- CombatStart = "함께 힘을 모아야만 마지막 도전을 이겨낼 수 있네. 얼음왕관 심연에서 가장 강력한 스컬지 대리인 둘이 왔네. 무시무시한 발키르, 날개를 단 리치 왕의 전령일세!", Fjola = "피욜라 라이트베인", Eydis = "아이디스 다크베인", ValksRP = "경기를 시작하게!", -- 35709 AnubRP = "리치 왕에게 큰 타격을 주었군! 그대들은 은빛십자군의 강건한 용사임을 입증했네. 우리는 함께 얼음왕관 성채를 공격하고 남은 스컬지를 물리칠 걸세! 힘을 합친 우리가 이겨내지 못할 도전은 없네!" }) ------------------ -- Anub'arak -- ------------------ L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "아눕아락" }) --L:SetTimerLocalization({ -- TimerEmerge = "다음 출현", -- TimerSubmerge = "다음 잠수", -- timerAdds = "다음 네루비안 땅무지" --}) L:SetWarningLocalization({ WarnEmerge = "아눕아락 출현", WarnEmergeSoon = "10초 이내 출현", WarnSubmerge = "아눕아락 잠수", WarnSubmergeSoon = "10초 이내 잠수", warnAdds = "네루비안 땅무지" }) L:SetMiscLocalization({ -- YellPull = "여기가 네 무덤이 되리라!", -- Swarm = "착취의 무리가 너희를 덮치리라!", Emerge = "땅속에서 모습을 드러냅니다!", Burrow = "땅속으로 숨어버립니다!", YellBurrow = "아움 날락크, 쉬. 일어나라, 부하들아. 먹어치워라...", PcoldIconSet = "냉기 관통 아이콘{rt%d} : %s", PcoldIconRemoved = "냉기 관통 아이콘 제거 : %s" }) L:SetOptionLocalization({ WarnEmerge = "출현 알림 보기", WarnEmergeSoon = "출현 이전에 알림 보기", WarnSubmerge = "잠수 알림 보기", WarnSubmergeSoon = "잠수 이전에 알림 보기", warnAdds = "네루비안 땅무지 알림 보기", -- timerAdds = "다음 네루비안 땅무지 바 보기", -- TimerEmerge = "다음 출현 바 보기", -- TimerSubmerge = "다음 잠수 바 보기", AnnouncePColdIcons = "$spell:66013 전술 목표 아이콘 설정시 공격대 대화로 알리기(공격대장 권한 필요)", AnnouncePColdIconsRemoved = "$spell:66013 전술 목표 아이콘 제거시 공격대 대화로 알리기(위 설정 필요)", RemoveHealthBuffsInP3 = "3 페이즈를 시작할 때 HP 버프 지우기" }) ================================================ FILE: DBM-Coliseum/localization.mx.lua ================================================ if GetLocale() ~= "esMX" then return end local L ------------------------------- -- Las bestias de Rasganorte -- ------------------------------- L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "Las bestias de Rasganorte" }) L:SetWarningLocalization({ WarningSnobold = "Vasallo snóbold en >%s<" }) L:SetTimerLocalization({ TimerNextBoss = "Siguiente jefe" -- TimerEmerge = "Emersión", -- TimerSubmerge = "Sumersión" }) L:SetOptionLocalization({ soundConcAuraMastery= "Reproducir el sonido de $spell:31821 para anular los efectos de $spelll:66330 (sólo para el |cFFF48CBAPaladín|r que es el propietario de $spell:19746)", WarningSnobold = "Mostrar aviso cuando aparezca un Vasallo snóbold", PingCharge = "Pulsar en el Minimapa si Aullahielo va a por Ti", ClearIconsOnIceHowl = "Quitar todos los iconos antes de cada carga", TimerNextBoss = "Mostrar temporizador para el siguiente jefe", -- TimerEmerge = "Mostrar temporizador para cuando Fauceácida y Aterraescama regresen a la superficie", -- TimerSubmerge = "Mostrar temporizador para cuando Fauceácida y Aterraescama se sumerjan en la tierra", IcehowlArrow = "Mostrar flecha cuando Aullahielo vaya a cargar hacia ti" }) L:SetMiscLocalization({ Charge = "¡%%s mira a (%S+) y emite un bramido!", CombatStart = "¡De las cavernas más profundas y oscuras de las Cumbres Tormentosas: Gormok el Empalador! ¡Al combate, héroes!", Phase2 = "¡Prepárense, héroes: los gemelos terribles, Fauceácida y Aterraescama, entran a la arena!", Phase3 = "El mismísimo aire se congela al presentar a nuestro próximo combatiente, ¡Aullahielo! ¡Maten o mueran, campeones!", Gormok = "Gormok el Empalador", Acidmaw = "Fauceácida", Dreadscale = "Aterraescama", Icehowl = "Aullahielo" }) ------------------- -- Lord Jaraxxus -- ------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Lord Jaraxxus" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Mostrar salud del jefe en una barra de vida durante Incinerar carne" }) L:SetMiscLocalization({ IncinerateTarget = "Incinerar carne: %s", FirstPull = "El gran brujo Wilfred Chispobang invocará al siguiente contrincante. Esperad a que aparezca." }) ----------------------------- -- Campeones de la facción -- ----------------------------- L = DBM:GetModLocalization("Champions") local champions = "Campeones de la facción" if UnitFactionGroup("player") == "Alliance" then champions = "Campeones de la Horda" elseif UnitFactionGroup("player") == "Horde" then champions = "Campeones de la Alianza" end L:SetGeneralLocalization({ name = champions }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Gorgrim Rajasombra", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Birana Pezuña Tempestuosa",-- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Erin Pezuña de Niebla", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Ruj'kah", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Ginselle Lanzaañublo", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Liandra Clamasol", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Malithas Hoja Brillante", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Caiphus el Austero", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Vivienne Susurro Oscuro", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Maz'dinah", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Thrakgar", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Broln Cuernorrecio", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Harkzog", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Narrhok Rompeacero", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Tyrius Hoja Umbría", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Kavina Canto Arboleda", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Melador Caminavalles", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Alyssia Acechalunas", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Noozle Varapalo", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Baelnor Portador de la Luz", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Velanaa", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Anthar Ensalmaforja", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Brienna Talanoche", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Irieth Paso Sombrío", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Saamul", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Shaabad", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Serissa Desventura", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Shocuul", -- 34475 AllianceVictory = "¡GLORIA A LA ALIANZA!", --AllianceVictory = "¡GLORIA PARA LA ALIANZA!" -- esMX HordeVictory = "Eso solo ha sido una muestra de lo que depara el futuro. ¡POR LA HORDA!" --HordeVictory = "Eso es sólo una probada de lo que traerá el futuro. ¡POR LA HORDA!" -- esMX --YellKill = "Una victoria trágica y fútil. Hoy somos menos por las pérdidas que hemos sufrido. ¿Quién podría beneficiarse de tal insensatez además del Rey Exánime? Grandes guerreros han perdido la vida. ¿Y para qué? La verdadera amenaza aguarda, el Rey Exánime nos espera a todos en la muerte." --YellKill = "Una victoria trágica y superficial. Nuestra integridad se vio debilitada por las pérdidas que hoy sufrimos. ¿Quién más que el Rey Exánime puede haberse beneficiado de tal insensatez? Grandes guerreros han perdido sus vidas. ¿Y para qué? La verdadera amenaza se entreteje en el futuro: el Rey Exánime nos espera en la muerte." -- esMX }) L:SetOptionLocalization({ PlaySoundOnBladestorm = "Reproducir sonido en Filotormenta" }) --------------------- -- Gemelas Val'kyr -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Gemelas Val'kyr" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Facultad especial en breve", SpecWarnSpecial = "Cambia de color", SpecWarnSwitchTarget = "Cambia de objetivo", SpecWarnKickNow = "Interrumpe ahora", WarningTouchDebuff = "Perjuicio en >%s<", WarningPoweroftheTwins2 = "Poder de las Gemelas - ¡más sanación en >%s%s<", }) L:SetTimerLocalization({ TimerNextBoss = "Прибытие следующего босса" -- TimerEmerge = "Появление", -- TimerSubmerge = "Зарывание" }) L:SetOptionLocalization({ soundConcAuraMastery= "Воспроизвести звук $spell:31821, чтобы отменить эффекты $spell:66330 (только для |cFFF48CBAПаладин|r, который является владельцем $spell:19746)", WarningSnobold = "Предупреждение о призыве Снобольда-вассала", PingCharge = "Показать на миникарте место, куда попадает Ледяной Рев, если он избрал вас целью", ClearIconsOnIceHowl = "Снимать все иконки перед Топотом", TimerNextBoss = "Отсчет времени до появления следующего противника", -- TimerEmerge = "Отсчет времени до появления", -- TimerSubmerge = "Отсчет времени до зарывания", IcehowlArrow = "Показывать стрелку, когда Ледяной Рев готовится сделать рывок на цель рядом с вами" }) L:SetMiscLocalization({ Charge = "^%%s глядит на (%S+) и испускает гортанный вой!", CombatStart = "Из самых глубоких и темных пещер Грозовой Гряды был призван Гормок Пронзающий Бивень! В бой, герои!", Phase2 = "Приготовьтесь к схватке с близнецами-чудовищами, Кислотной Утробой и Жуткой Чешуей!", Phase3 = "В воздухе повеяло ледяным дыханием следующего бойца: на арену выходит Ледяной Рев! Сражайтесь или погибните, чемпионы!", Gormok = "Гормок Пронзающий Бивень", Acidmaw = "Кислотная Утроба", Dreadscale = "Жуткая Чешуя", Icehowl = "Ледяной Рев" }) --------------------- -- Lord Jaraxxus -- --------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "Лорд Джараксус" }) L:SetOptionLocalization({ IncinerateShieldFrame = "Показать здоровье босса с индикатором здоровья для Испепеления плоти" }) L:SetMiscLocalization({ IncinerateTarget = "Испепеление плоти: %s", FirstPull = "Сейчас великий чернокнижник Вилфред Непопамс призовет вашего нового противника. Готовьтесь к бою!" }) ------------------------- -- Faction Champions -- ------------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "Чемпионы фракций" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Горгрим Темный Раскол", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Бирана Штормовое Копыто", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Эрин Мглистое Копыто", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Руж'ка", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Гинзелль Отразительница Гнили", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Лиандра Зовущая Солнце", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Малитас Сияющий Клинок", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Каифа Неумолимый", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Вивьен Шепот Тьмы", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Маз'дина", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Тракгар", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Бролн Крепкий Рог", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Харкзог", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Наррок Крушитель Стали", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:64:64:96|t Тирий Клинок Сумерек", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Кавина Песня Рощи", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:0:32|t Меладор Дальний Гонец", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:32:64|t Алисса Лунопард", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:0:32|t Нуззл Чудодей", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Бельнор Светоносный", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:64:96|t Веланаа", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Антар Очистительный Горн", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:32:64|t Бриенна Приход Ночи", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:63.5:95:0:32|t Ириэт Шаг Сквозь Тень", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Саамул", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:32:63.5:32:64|t Шаабад", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:95:126.5:32:64|t Серисса Мрачная Кропильщица", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:24:24:0:0:128:128:0:32:0:32|t Шокул", -- 34475 AllianceVictory = "СЛАВА АЛЬЯНСУ!", HordeVictory = "Это было лишь пробой того, что ждет нас в будущем! ЗА ОРДУ!" --YellKill = "Пустая и горькая победа. После сегодняшних потерь мы стали слабее как целое. Кто еще, кроме Короля-лича, выиграет от подобной глупости? Пали великие воины. И ради чего? Истинная опасность еще впереди – нас ждет битва с Королем-личом." }) --------------------- -- Val'kyr Twins -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "Валь'киры-близнецы" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "Скоро спец-способность", SpecWarnSpecial = "Смена цвета", SpecWarnSwitchTarget = "Смена цели", SpecWarnKickNow = "Прерывание", WarningTouchDebuff = "Отрицательный эффект на |3-5(>%s<)", WarningPoweroftheTwins2 = "Сила близнецов - больше исцеления на |3-3(>%s<)", }) L:SetTimerLocalization({ TimerSpecialSpell = "Следующая спец-способность", TimerAnubRoleplay = "Представление перед падением" }) L:SetOptionLocalization({ TimerSpecialSpell = "Отсчет времени до перезарядки спец-способности", TimerAnubRoleplay = "Таймер представления перед падением (после победы)", WarnSpecialSpellSoon = "Предупреждение о следующуюей спец-способность", SpecWarnSpecial = "Спец-предупреждение для смены цветов", SpecWarnSwitchTarget = "Спец-предупреждение для других, когда босс читает заклинание", SpecWarnKickNow = "Спец-предупреждение, когда вы должы прервать заклинание", SpecialWarnOnDebuff = "Спец-предупреждение, когда отрицательный эффект", SetIconOnDebuffTarget = "Установить метку на получившего отрицательный эффект (героический режим)", WarningTouchDebuff = "Объявлять цели, получившие отрицательный эффект", WarningPoweroftheTwins2 = "Объявлять цель под воздействем Силы близнецов", }) L:SetMiscLocalization({ -- YellPull = "Во имя темного повелителя. Во имя Короля-лича. Вы. Умрете.", -- CombatStart = "Лишь сплотившись, вы сможете пройти последнее испытание. Из глубин Ледяной Короны навстречу вам подымаются две могучие воительницы Плети: жуткие валь'киры, крылатые вестницы Короля-лича!", Fjola = "Фьола Погибель Света", Eydis = "Эйдис Погибель Тьмы", ValksRP = "Пусть состязания начнутся!", -- 35709 AnubRP = "Король-лич понес тяжелую потерю! Вы проявили себя как бесстрашные герои Серебряного Авангарда! Мы вместе нанесем удар по Цитадели Ледяной Короны и разнесем в клочья остатки Плети! Нет такого испытания, которое мы бы не могли пройти сообща!" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "Ануб'арак" }) --L:SetTimerLocalization({ -- TimerEmerge = "Появление через", -- TimerSubmerge = "Зарывание через", -- timerAdds = "Призыв помощников через" --}) L:SetWarningLocalization({ WarnEmerge = "Ануб'арак появляется", WarnEmergeSoon = "Появление через 10 сек", WarnSubmerge = "Ануб'арак зарывается", WarnSubmergeSoon = "Зарывание через 10 сек", warnAdds = "Новые помощники" }) L:SetMiscLocalization({ -- YellPull = "Это место станет вашей могилой!", Emerge = "вылезает на поверхность!", Burrow = "зарывается в землю!", YellBurrow = "Ауум на-л ак-к-к-к, ишшш. Вставайте, слуги мои. Время пожирать...", PcoldIconSet = "Метка холода {rt%d} установлена на: %s", PcoldIconRemoved = "Метка холода снята с: %s" }) L:SetOptionLocalization({ WarnEmerge = "Предупреждение о появлении", WarnEmergeSoon = "Предупреждать заранее о появлении", WarnSubmerge = "Предупреждение о зарывании", WarnSubmergeSoon = "Предупреждать заранее о зарывании", warnAdds = "Предупреждение о призыве помощников", -- timerAdds = "Отсчет времени до призыва помощников", -- TimerEmerge = "Отсчет времени до появления", -- TimerSubmerge = "Отсчет времени до зарывания", AnnouncePColdIcons = "Объявлять метки целей заклинания $spell:68510 в рейд-чат (требуются права лидера или помощника)", AnnouncePColdIconsRemoved = "Объявлять также о снятии меток с целей заклинания $spell:68510 (требуется предыдущая опция)", RemoveHealthBuffsInP3 = "Удалять усиления здоровья в начале фазы 3" }) ================================================ FILE: DBM-Coliseum/localization.tw.lua ================================================ if GetLocale() ~= "zhTW" then return end local L ------------------------ -- Northrend Beasts -- ------------------------ L = DBM:GetModLocalization("NorthrendBeasts") L:SetGeneralLocalization({ name = "北裂境巨獸" }) L:SetWarningLocalization({ WarningSnobold = "極地狗頭人奴僕出現在>%s<" }) L:SetTimerLocalization({ TimerNextBoss = "下一隻王到來" -- TimerEmerge = "持續鑽地", -- TimerSubmerge = "下一次鑽地" }) L:SetOptionLocalization({ soundConcAuraMastery= "播放 $spell:31821 聲音以抵消 $spell:66330 的效果(僅適用於 $spell:19746 的所有者 |cFFF48CBA聖騎士|r)", WarningSnobold = "為極地狗頭人奴僕出現顯示警告", PingCharge = "當冰嚎即將衝鋒你時自動點擊小地圖", ClearIconsOnIceHowl = "衝鋒前消除所有標記", TimerNextBoss = "為下一隻王到來顯示計時器", -- TimerEmerge = "為持續鑽地顯示計時器", -- TimerSubmerge = "為下一次鑽地顯示計時器", IcehowlArrow = "當冰嚎即將衝鋒在你附近時顯示DBM箭頭" }) L:SetMiscLocalization({ Charge = "%%s怒視著(%S+),並發出震耳的咆哮!", CombatStart = "來自風暴群山最深邃,最黑暗的洞穴。歡迎『穿刺者』戈莫克!戰鬥吧,英雄們!", Phase2 = "準備面對酸喉和懼鱗的雙重夢魘吧,英雄們,快就定位!", Phase3 = "下一場參賽者的出場連空氣都會為之凝結:冰嚎!戰個你死我活吧,勇士們!", Gormok = "『穿刺者』戈莫克", Acidmaw = "酸喉", Dreadscale = "懼鱗", Icehowl = "冰嚎" }) --------------------- -- Lord Jaraxxus -- --------------------- L = DBM:GetModLocalization("Jaraxxus") L:SetGeneralLocalization({ name = "賈拉克瑟斯領主" }) L:SetOptionLocalization({ IncinerateShieldFrame = "在首領血量裡顯示焚化血肉的血量" }) L:SetMiscLocalization({ IncinerateTarget = "焚化血肉: %s", FirstPull = "大術士威爾弗雷德·菲斯巴恩將會召喚你們的下一個挑戰者。等待他的登場吧。" }) ------------------------- -- Faction Champions -- ------------------------- L = DBM:GetModLocalization("Champions") L:SetGeneralLocalization({ name = "陣營勇士" }) L:SetMiscLocalization({ --Horde NPCs Gorgrim = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:64:64:96|t 高葛林·影斬", -- 34458 Birana = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:0:32|t 碧菈娜·風暴之蹄", -- 34451 Erin = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:0:32|t 艾琳·霧蹄", -- 34459 Rujkah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:32:64|t 茹卡", -- 34448 Ginselle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:0:32|t 金賽兒·凋擲", -- 34449 Liandra = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:64:96|t 黎安卓·喚日", -- 34445 Malithas = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:64:96|t 瑪力薩·亮刃", -- 34456 Caiphus = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:32:64|t 嚴厲的凱普司", -- 34447 Vivienne = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:32:64|t 薇薇安·黑語", -- 34441 Mazdinah = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:0:32|t 馬茲迪娜", -- 34454 Thrakgar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:32:64|t 瑟瑞克加爾", -- 34444 Broln = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:32:64|t 伯洛連·頑角", -- 34455 Harkzog = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:32:64|t 哈克佐格", -- 34450 Narrhok = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:0:32|t 納霍克·破鋼者", -- 34453 --Alliance NPCs Tyrius = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:64:64:96|t 提瑞斯·暮刃", -- 34461 Kavina = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:0:32|t 卡薇娜·林地之歌", -- 34460 Melador = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:0:32|t 梅拉朵·谷行者", -- 34469 Alyssia = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:32:64|t 愛莉希雅·月巡者", -- 34467 Noozle = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:0:32|t 諾佐·嘯棍", -- 34468 Baelnor = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:64:96|t 貝爾諾·攜光者", -- 34471 Velanaa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:64:96|t 維蘭娜", -- 34465 Anthar = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:32:64|t 安薩·修爐匠", -- 34466 Brienna = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:32:64|t 布芮娜·夜墜", -- 34473 Irieth = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:63.5:95:0:32|t 艾芮絲·影步", -- 34472 Saamul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:32:64|t 薩繆爾", -- 34470 Shaabad = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:32:63.5:32:64|t 夏巴德", -- 34463 Serissa = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:95:126.5:32:64|t 瑟芮莎·厲濺", -- 34474 Shocuul = "|TInterface\\WorldStateFrame\\Icons-Classes.blp:36:36:0:0:128:128:0:32:0:32|t 修庫爾", -- 34475 AllianceVictory = "榮耀歸於聯盟!", HordeVictory = "那只是讓你們知道將來必須面對的命運。為了部落!" --YellKill = "膚淺而悲痛的勝利。今天痛失的生命反而令我們更加的頹弱。除了巫妖王之外,誰還能從中獲利?偉大的戰士失去了寶貴生命。為了什麼?真正的威脅就在前方 - 巫妖王在死亡的領域中等著我們。" }) --------------------- -- Val'kyr Twins -- --------------------- L = DBM:GetModLocalization("ValkTwins") L:SetGeneralLocalization({ name = "華爾琪雙子" }) L:SetWarningLocalization({ WarnSpecialSpellSoon = "特別技能即將到來", SpecWarnSpecial = "快變換顏色", SpecWarnSwitchTarget = "快換目標打雙子契印", SpecWarnKickNow = "現在斷法", WarningTouchDebuff = "光明或黑暗之觸:>%s<", WarningPoweroftheTwins2 = "雙子威能 - 對>%s<加大治療" }) L:SetTimerLocalization({ TimerSpecialSpell = "下一次特別技能", TimerAnubRoleplay = "樓斷裂處" }) L:SetOptionLocalization({ TimerSpecialSpell = "為下一次特別技能顯示計時器", TimerAnubRoleplay = "計時條:劇情持續時間", WarnSpecialSpellSoon = "為下一次特別技能顯示預先警告", SpecWarnSpecial = "當你需要變換顏色時顯示特別警告", SpecWarnSwitchTarget = "當另一個首領施放雙子契印時顯示特別警告", SpecWarnKickNow = "當你可以斷法時顯示特別警告", SpecialWarnOnDebuff = "當你中了光明或黑暗之觸時顯示特別警告 (需切換顏色)", SetIconOnDebuffTarget = "為光明或黑暗之觸的目標設置標記 (英雄模式)", WarningTouchDebuff = "提示光明或黑暗之觸的目標", WarningPoweroftheTwins2 = "提示雙子威能的目標" }) L:SetMiscLocalization({ -- YellPull = "以我們的黑暗君王之名。為了巫妖王。你‧得‧死。", -- CombatStart = "唯有同心協力,你們才能克服最後的難關。來自寒冰皇冠的深處,兩名天譴軍團最強大的副官:令人生畏的華爾琪,披著羽翼的巫妖王先驅。", Fjola = "菲歐拉·光寂", Eydis = "艾狄絲·暗寂", ValksRP = "讓賽事開始吧!", -- 35709 AnubRP = "巫妖王遭受了迎頭痛擊!你們已經證明了你們是銀白十字軍的精銳勇士。我們將聯手攻陷冰冠城塞,並且把天譴軍團消滅殆盡!團結一心,我們將可破除所有難關。" }) ----------------- -- Anub'arak -- ----------------- L = DBM:GetModLocalization("Anub'arak_Coliseum") L:SetGeneralLocalization({ name = "阿努巴拉克" }) --L:SetTimerLocalization({ -- TimerEmerge = "下一次現身", -- TimerSubmerge = "下一次鑽地", -- timerAdds = "下一次中蟲出現" --}) L:SetWarningLocalization({ WarnEmerge = "阿努巴拉克現身了", WarnEmergeSoon = "10秒後現身", WarnSubmerge = "阿努巴拉克鑽進地裡了", WarnSubmergeSoon = "10秒後鑽進地裡", warnAdds = "奈幽掘洞者 出現了" }) L:SetMiscLocalization({ -- YellPull = "這裡將會是你們的墳墓!", Emerge = "從地底鑽出!", Burrow = "鑽進地裡!", YellBurrow = "(蟲族語)靠上來,兄弟們。起來,爪牙們,吞噬...", PcoldIconSet = "透骨之寒{rt%d}於%s", PcoldIconRemoved = "移除標記:%s" }) L:SetOptionLocalization({ WarnEmerge = "為鑽出地面顯示警告", WarnEmergeSoon = "為鑽出地面顯示預先警告", WarnSubmerge = "為鑽進地裡顯示警告", WarnSubmergeSoon = "為鑽進地裡顯示預先警告", warnAdds = "提示奈幽掘洞者出現", -- timerAdds = "為下一次 奈幽掘洞者出現顯示計時器", -- TimerEmerge = "為持續鑽地顯示計時器", -- TimerSubmerge = "為下一次 鑽地顯示計時器", AnnouncePColdIcons = "公佈$spell:68510目標設置的標記到團隊頻道 (需要團隊隊長或助理權限)", AnnouncePColdIconsRemoved = "當移除$spell:68510的標記時也提示 (需要上述選項)", RemoveHealthBuffsInP3 = "當進入第3階段時移除耐力的增益" }) ================================================ FILE: DBM-Core/DBM-Arrow.lua ================================================ -- This file uses models and textures taken from TomTom. The 3D arrow model was created by Guillotine (curse.guillotine@gmail.com) and 2D minimap textures by Cladhaire. local L = DBM_CORE_L --------------- -- Globals -- --------------- DBM.Arrow = {} -------------- -- Locals -- -------------- local arrowFrame = DBM.Arrow local frame, runAwayArrow, targetType, targetPlayer, targetX, targetY, hideTime, hideDistance -------------------------------------------------------- -- Cache frequently used global variables in locals -- -------------------------------------------------------- local pi, pi2 = math.pi, math.pi * 2 local floor, sin, cos, atan2, sqrt, min = math.floor, math.sin, math.cos, math.atan2, math.sqrt, math.min local GetPlayerMapPosition, GetTime = GetPlayerMapPosition, GetTime -------------------- -- Create Frame -- -------------------- frame = CreateFrame("Button", "DBMArrow", UIParent) frame:Hide() frame:SetFrameStrata("HIGH") frame:SetSize(56, 42) frame:SetMovable(true) frame:EnableMouse(false) frame:RegisterForDrag("LeftButton", "RightButton") frame:SetScript("OnDragStart", function(self) self:StartMoving() end) frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() local point, _, _, x, y = self:GetPoint(1) DBM.Options.ArrowPoint = point DBM.Options.ArrowPosX = x DBM.Options.ArrowPosY = y end) local textframe = CreateFrame("Frame", nil, frame) frame.distance = textframe:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") frame.title = textframe:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") frame.title:SetPoint("TOP", frame, "BOTTOM") frame.distance:SetPoint("TOP", frame.title, "BOTTOM") textframe:Hide() local arrow = frame:CreateTexture(nil, "OVERLAY") arrow:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\arrows\\Arrow.blp") arrow:SetAllPoints(frame) --------------------- -- Map Utilities -- --------------------- local SetMapToCurrentZone -- throttled SetMapToCurrentZone function to prevent lag issues with unsupported WorldMap addons do local lastMapUpdate = 0 function SetMapToCurrentZone(...) if GetTime() - lastMapUpdate > 1 then lastMapUpdate = GetTime() return _G.SetMapToCurrentZone(...) end end end local calculateDistance do function calculateDistance(x1, y1, x2, y2) local mapX, mapY = DBM:GetMapSize() local dX = (x1 - x2) * mapX local dY = (y1 - y2) * mapY return sqrt(dX * dX + dY * dY) end end -- GetPlayerFacing seems to return values between -pi and pi instead of 0 - 2pi sometimes since 3.3.3 local GetPlayerFacing = function(...) local result = GetPlayerFacing(...) or 0 if result < 0 then result = result + pi2 end return result end ------------------------ -- Update the arrow -- ------------------------ local updateArrow do local currentCell local formatText = "%dy" function updateArrow(direction, distance) local cell = floor(direction / pi2 * 108 + 0.5) % 108 if cell ~= currentCell then currentCell = cell local column = cell % 9 local row = floor(cell / 9) local xStart = (column * 56) / 512 local yStart = (row * 42) / 512 local xEnd = ((column + 1) * 56) / 512 local yEnd = ((row + 1) * 42) / 512 arrow:SetTexCoord(xStart, xEnd, yStart, yEnd) end if distance then if runAwayArrow then local perc = distance / hideDistance arrow:SetVertexColor(1 - perc, perc, 0) if distance >= hideDistance then frame:Hide() end else local perc = min(distance, 100) / 100 arrow:SetVertexColor(1, 1 - perc, 0) if distance <= hideDistance then frame:Hide() else frame.distance:SetText(formatText:format(distance)) end end else if runAwayArrow then arrow:SetVertexColor(1, 0.3, 0) else arrow:SetVertexColor(1, 1, 0) end end end end ------------------------ -- OnUpdate Handler -- ------------------------ do local rotateState = 0 frame:SetScript("OnUpdate", function(self, elapsed) if hideTime and GetTime() > hideTime then frame:Hide() end arrow:Show() -- the static arrow type is special because it doesn't depend on the player's orientation or position if targetType == "static" then return updateArrow(targetX) -- targetX contains the static angle to show end local x, y = GetPlayerMapPosition("player") if x == 0 and y == 0 then SetMapToCurrentZone() x, y = GetPlayerMapPosition("player") if x == 0 and y == 0 then self:Hide() -- Hide the arrow if you enter a zone without a map return end end if targetType == "player" then targetX, targetY = GetPlayerMapPosition(targetPlayer) if targetX == 0 and targetY == 0 then self:Hide() -- hide the arrow if the target doesn't exist. TODO: just hide the texture and add a timeout end elseif targetType == "rotate" then rotateState = rotateState + elapsed targetX = x + cos(rotateState) targetY = y + sin(rotateState) end if not targetX or not targetY then return end local angle = atan2(x - targetX, targetY - y) if angle <= 0 then -- -pi < angle < pi but we need/want a value between 0 and 2 pi if runAwayArrow then angle = -angle -- 0 < angle < pi else angle = pi - angle -- pi < angle < 2pi end else if runAwayArrow then angle = pi2 - angle -- pi < angle < 2pi else angle = pi - angle -- 0 < angle < pi end end updateArrow(angle - GetPlayerFacing(), calculateDistance(x, y, targetX, targetY)) end) end ---------------------- -- Public Methods -- ---------------------- --/run DBM.Arrow:ShowRunTo(50, 50, 1, nil, true, true, "Waypoint", custom local mapID) local function show(runAway, x, y, distance, time, _, _, title) if DBM:HasMapRestrictions() then return end local player if type(x) == "string" then player, hideDistance, hideTime = x, y, hideDistance end frame:Show() textframe:Show() if title then frame.title:Show() frame.title:SetText(title) else frame.title:Hide() end if runAway then frame.distance:Hide() else frame.distance:Show() end runAwayArrow = runAway hideDistance = distance or runAway and 100 or 3 if time then hideTime = time + GetTime() else hideTime = nil end if player then targetType = "player" targetPlayer = player else targetType = "fixed" targetX, targetY = x, y end end function arrowFrame:ShowRunTo(...) return show(false, ...) end function arrowFrame:ShowRunAway(...) return show(true, ...) end -- shows a static arrow function arrowFrame:ShowStatic(angle, time) --Static arrows do not need restrictions, and are still permitted even in 7.1 runAwayArrow = false hideDistance = 0 targetType = "static" targetX = angle * pi2 / 360 if time then hideTime = time + GetTime() else hideTime = nil end frame:Show() textframe:Hide()--just in case they call static while a non static was already showing end function arrowFrame:IsShown() return frame and frame:IsShown() end function arrowFrame:Hide() textframe:Hide() frame:Hide() end local function endMove() frame:EnableMouse(false) arrowFrame:Hide() end function arrowFrame:Move() targetType = "rotate" runAwayArrow = false hideDistance = 0 frame:EnableMouse(true) frame:Show() DBT:CreateBar(25, L.ARROW_MOVABLE, "Interface\\Icons\\Spell_Holy_BorrowedTime") DBM:Unschedule(endMove) DBM:Schedule(25, endMove) end function arrowFrame:LoadPosition() frame:SetPoint(DBM.Options.ArrowPoint, DBM.Options.ArrowPosX, DBM.Options.ArrowPosY) end do SLASH_DEADLYBOSSMODSDWAY1 = "/dway"--/way not used because DBM would load before TomTom and can't check SlashCmdList["DEADLYBOSSMODSDWAY"] = function(msg) if DBM:HasMapRestrictions() then DBM:AddMsg(L.NO_ARROW) return end msg = msg:sub(1):trim() local x, y = strsplit(" ", msg) -- Try splitting by space local xNum, yNum = tonumber(x or ""), tonumber(y or "") if not xNum or not yNum then x, y = strsplit(",", msg) -- And then by comma xNum, yNum = tonumber(x or ""), tonumber(y or "") end if xNum and yNum then DBM.Arrow:ShowRunTo(xNum, yNum, 1, nil, true) return end if DBM.Arrow:IsShown() then DBM.Arrow:Hide() else DBM:AddMsg(L.ARROW_WAY_USAGE) end end end ================================================ FILE: DBM-Core/DBM-BossBannerToast.lua ================================================ -- ************************************************************************************************************************************************************ -- **** BOSS BANNER ******************************************************************************************************************************************* -- ************************************************************************************************************************************************************ local _, private = ... -------------- -- Locals -- -------------- local strfind, strformat, tostring = strfind, string.format, tostring local next, pairs, tconcat, tinsert, wipe = next, pairs, table.concat, tinsert, table.wipe local max, tonumber = max, tonumber local CreateFrame = CreateFrame local GetCurrentMapAreaID = GetCurrentMapAreaID local GetCurrentMapContinent = GetCurrentMapContinent local GetItemInfo = GetItemInfo local GetLocale = GetLocale local GetLootSlotInfo = GetLootSlotInfo local GetLootSlotLink = GetLootSlotLink local GetNumLootItems = GetNumLootItems local GetRealZoneText = GetRealZoneText local IsDressableItem = IsDressableItem local PlaySoundFile = PlaySoundFile local UnitIsDead = UnitIsDead local UnitIsFriend = UnitIsFriend local UnitGUID = UnitGUID local UnitName = UnitName local ITEM_QUALITY_COLORS = ITEM_QUALITY_COLORS --local ITEM_SET_NAME = ITEM_SET_NAME local L = DBM_CORE_L local BB_EXPAND_TIME = 0.25 -- time to expand per item local BB_EXPAND_HEIGHT = 50 -- pixels to expand per item local BB_MAX_LOOT = 8 -- changed retail value from 7 to 8, since TOC Tribute chest (gob 195665) can drop 8 items local BB_STATE_BANNER_IN = 1 -- banner is animating in local BB_STATE_KILL_HOLD = 2 -- banner is holding with kill info local BB_STATE_SWITCH = 3 -- banner is switching from kill to loot look local BB_STATE_LOOT_EXPAND = 4 -- banner is expanding for loot items local BB_STATE_LOOT_INSERT = 5 -- loot item is being inserted. banner will hold for longer than insertion animation to catch more loot. local BB_STATE_BANNER_OUT = 6 -- banner is animating out local SOUNDKIT = { ["UI_RAID_BOSS_DEFEATED"] = "Interface\\AddOns\\DBM-Core\\sounds\\RetailSupport\\UI_Raid_Boss_Defeated_01.ogg", -- 50111 ["UI_PERSONAL_LOOT_BANNER"] = "Interface\\AddOns\\DBM-Core\\sounds\\RetailSupport\\UI_Raid_Loot_Banner_01.ogg", -- 50893 } --Hard code STANDARD_TEXT_FONT since skinning mods like to taint it (or worse, set it to nil, wtf?) local standardFont local BBfont = nil -- keep Luacheck happy if LOCALE_koKR then standardFont = "Fonts\\2002.TTF" elseif LOCALE_zhCN then standardFont = "Fonts\\ARKai_T.ttf" elseif LOCALE_zhTW then standardFont = "Fonts\\blei00d.TTF" elseif LOCALE_ruRU then standardFont = "Fonts\\FRIZQT___CYR.TTF" else standardFont = "Fonts\\FRIZQT__.TTF" end -- math toolkit local function round(value, dp) return tonumber(strformat("%."..(dp or 14).."f", tostring(value))) end -- Animations local function CreateScaleAnim(group, order, duration, scaleX, scaleY, delay, smoothing, endDelay, originPoint, originOffsetX, originOffsetY) local anim = group:CreateAnimation("Scale") anim:SetOrder(order) anim:SetDuration(duration) anim:SetScale(scaleX, scaleY) -- Multipliers. Example: fromScaleX="5" toScaleX="1" is 1/5 if delay then anim:SetStartDelay(delay) end if endDelay then anim:SetEndDelay(endDelay) end if smoothing then anim:SetSmoothing(smoothing) end if originPoint then anim:SetOrigin(originPoint, originOffsetX or 0, originOffsetY or 0) end end local function CreateAlphaAnim(group, order, duration, change, delay, smoothing, endDelay) local anim = group:CreateAnimation("Alpha") anim:SetOrder(order) anim:SetDuration(duration) anim:SetChange(change) if delay then anim:SetStartDelay(delay) end if endDelay then anim:SetEndDelay(endDelay) end if smoothing then anim:SetSmoothing(smoothing) end -- OnFinished scripts do not work to set alpha since the group resets the alpha of the region back to its original value on the first frame after OnFinished. end local function CreateTranslationAnim(group, order, duration, xOffset, yOffset, delay, smoothing, endDelay) local anim = group:CreateAnimation("Translation") anim:SetOrder(order) anim:SetDuration(duration) anim:SetOffset(xOffset, yOffset) if delay then anim:SetStartDelay(delay) end if endDelay then anim:SetEndDelay(endDelay) end if smoothing then anim:SetSmoothing(smoothing) end end -- Loot Handling local tooltipTextCache local tooltipSwitchCounter = 0 local function GameTooltipCacheName(self) -- Fetch tooltip text from mouseover to also catch gob container name (e.g. Treasure chest). -- Don't keep cache indefinitely. Main use is to preserve the gob container name. tooltipSwitchCounter = tooltipSwitchCounter + 1 if tooltipSwitchCounter > 2 then -- REVIEW! tooltipTextCache = nil end if not self:IsOwned(UIParent) then return end -- Only cache if tooltip refers to UIParent (used by gob tooltips). Discards many false positives like PlayerFrame, Interface Options, ElvUI, etc, that are picked up by below color text. -- Will fail with Interact with Target keybind if mouseover on something else, so attempt to mitigate it by restricting the caching to tooltips with only yellow text on the first line (can't restrict to only 1 line since there is, at least, one chest, on Hodir [gob 194201] - Rare Cache of Winter - which will have more than 1 line with the Quest [13822] "Heroic: Hodir's Sigil") local rt, gt, bt, at = _G["GameTooltipTextLeft1"]:GetTextColor() if round(rt) == 0.99999780301005 and round(gt) == 0.82352757453918 and round(bt) == 0 and round(at) == 0.99999779462814 then -- yellow text from gob tooltipSwitchCounter = 0 tooltipTextCache = _G["GameTooltipTextLeft1"]:GetText() end end GameTooltip:SetScript("OnShow", GameTooltipCacheName) -- Tooltip fetching resulting in unreliable results, where on a split frame it would not update the text (either nil or different than expected), so run it always to catch it as fast as possible. Will fail if mouseover another unit, since TT updates before LOOT_OPENED. local encounterLootCache = {} local locale = GetLocale() local function BossBanner_FetchAndSyncLootItems(self) local numLootItems = GetNumLootItems() local encounterId = self.encounterID local encounterName = self.encounterName or "Unknown encounter" local targetNpcDead = not UnitIsFriend("player", "target") and UnitIsDead("target") local lootSourceTTName = tooltipTextCache -- Not reliable to fetch tooltip text here (see above) local lootSourceMobName = targetNpcDead and UnitName("target") -- targeted loot always refreshes in time local lootSourceName = lootSourceMobName or lootSourceTTName -- Prefer target unit rather than mouseover (chances of this being wrong are lower than the inverse) local lootSourceGUID = targetNpcDead and UnitGUID("target") local lootSourceID = lootSourceGUID or lootSourceName -- build encounter loot cache encounterLootCache[encounterId] = encounterLootCache[encounterId] or {} -- check if looted corpse belongs to the DBM boss mod DBM:Debug("BossBanner for "..encounterId.." ("..encounterName.."), with loot arguments --> lootSourceGUID: "..tostring(lootSourceGUID).. " ; lootSourceName: "..tostring(lootSourceName).. " ; TT name: "..tostring(_G["GameTooltipTextLeft1"]:GetText()), 3) if lootSourceGUID then local lootSourceCID = DBM:GetCIDFromGUID(lootSourceGUID) DBM:Debug("BossBanner: pre-check on CID: "..tostring(lootSourceCID).." and lootSouceName: "..tostring(lootSourceName).." and lootSourceMobName: "..tostring(lootSourceMobName)..". Npcdead is: "..tostring(targetNpcDead), 3) if lootSourceName == lootSourceMobName then local encounterBossMod = DBM:GetModByName(encounterId) if not encounterBossMod then DBM:Debug("BossBanner: no mod found for encounter "..tostring(encounterId)..". Ending fetching and syncing process.") return end if encounterBossMod.combatInfo.killMobs then -- Mod has multiple mobs local found = false for mobId in pairs(encounterBossMod.combatInfo.killMobs) do -- key checking required, as value can be either true or false if mobId == lootSourceCID then found = true break end end if not found then DBM:Debug("BossBanner: LootSourceCID ("..lootSourceCID..") does not belong to DBM mod (multiboss). Ending fetching and syncing process.", 3) return end else if encounterBossMod.creatureId ~= lootSourceCID then DBM:Debug("BossBanner: LootSourceCID ("..lootSourceCID..") does not belong to DBM mod. Ending fetching and syncing process.", 3) return end end end end -- check if lootSourceID exists if not lootSourceID then DBM:Debug("BossBanner: no lootSourceID. Ending fetching and syncing process.", 3) return end -- check if player already opened loot window if encounterLootCache[encounterId][lootSourceID] and encounterLootCache[encounterId][lootSourceID].looted then DBM:Debug("BossBanner: Boss/Container ("..lootSourceID..") already looted. Ending fetching and syncing process.", 3) return end encounterLootCache[encounterId][lootSourceID] = encounterLootCache[encounterId][lootSourceID] or {} encounterLootCache[encounterId][lootSourceID].looted = true local tempLootItemCounter = {} if numLootItems > 0 then for slot = 1, numLootItems do local texture, _, quantity = GetLootSlotInfo(slot) -- texture, itemName, quantity, quality, locked local itemLink = GetLootSlotLink(slot) -- Duplicate loot items cannot be distinguished from each other. Only by lootslot, which will only be preserved during looting while loot window is open. If loot window reopened after item(s) have been looted, it will be repopulated with ascending index. -- Dump: value=GetLootSlotLink(3) -- [1]="|cffa335ee|Hitem:50603:0:0:0:0:0:0:0:80|h[Cryptmaker]|h|r" -- Dump: value=GetLootSlotLink(4) -- [1]="|cffa335ee|Hitem:50603:0:0:0:0:0:0:0:80|h[Cryptmaker]|h|r" if itemLink then local _, _, _, _, itemID --[[_, _, Color, Ltype, Id, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, unique, LinkLvl, Name]] = strfind(itemLink, "|?c?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") local finalItem = tostring(slot == numLootItems) encounterLootCache[encounterId][lootSourceID][itemID] = encounterLootCache[encounterId][lootSourceID][itemID] or {} tempLootItemCounter[itemID] = (tempLootItemCounter[itemID] or 0) + 1 if next(encounterLootCache[encounterId][lootSourceID][itemID]) == nil then tinsert(encounterLootCache[encounterId][lootSourceID][itemID], false) -- insert it this way to account for duplicates. Boolean will be used in the Core sync handler else for key, synced in ipairs(encounterLootCache[encounterId][lootSourceID][itemID]) do if key < tempLootItemCounter[itemID] and not synced then tinsert(encounterLootCache[encounterId][lootSourceID][itemID], false) -- insert it this way to account for duplicates. Boolean will be used in the Core sync handler break end end end if finalItem == "true" then wipe(tempLootItemCounter) end DBM:Debug("BossBanner: Sending sync (v3) with the following args: "..locale..", "..encounterId..", "..encounterName..", "..lootSourceName..", "..tostring(lootSourceGUID)..", "..itemID..", "..itemLink..", "..tostring(quantity)..", "..tostring(slot)..", "..texture..", "..finalItem, 3) private.sendSync("DBMv4-L", ("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s"):format(--[[version:]]"3", locale, encounterId, encounterName, lootSourceName, tostring(lootSourceGUID), itemID, itemLink, tostring(quantity), tostring(slot), texture, finalItem)) -- needs to be less than 255 characters, otherwise it won't be sent end end end end -- https://github.com/Gethe/wow-ui-source/blob/live/Interface/AddOns/Blizzard_FrameXML/TopBannerManager.lua ------------------------------------------------------------------ -- Top Banner Display Manager -- -- Manager for displaying large UI elements at the top of the HUD. -- -- Frames that want to display must have the following functions defined: -- PlayBanner(self, [data, [isExclusiveQueued]]) -- StopBanner(self) -- -- The following functions are optional: -- ResumeBanner(self) -- restart banner animation -- ------------------------------------------------------------------ local TopBannerMgr = {} local TopBannerQueue = {} local function TopBannerManager_Show(frame, data, isExclusiveQueued) local banner = {frame = frame, data = data} if TopBannerMgr.currentBanner then -- queue up this frame to play later if (isExclusiveQueued) then -- check if multiple instances of this frame should be queued for _, queuedBanner in pairs(TopBannerQueue) do if (isExclusiveQueued(banner, queuedBanner)) then return end end end tinsert(TopBannerQueue, banner) else TopBannerMgr.currentBanner = banner frame:PlayBanner(data) end end -- LOADING_SCREEN events not currently supported on 3.3.5a --[[local function TopBannerManager_LoadingScreenEnabled() if TopBannerMgr.currentBanner then TopBannerMgr.currentBanner.frame:StopBanner() end end local function TopBannerManager_LoadingScreenDisabled() local currentBanner = TopBannerMgr.currentBanner if currentBanner and currentBanner.frame.ResumeBanner then currentBanner.frame:ResumeBanner(currentBanner.data) else TopBannerManager_BannerFinished() end end]] local function TopBannerManager_BannerFinished() if #TopBannerQueue > 0 then TopBannerMgr.currentBanner = table.remove(TopBannerQueue, 1) -- TopBannerMgr.currentBanner.frame:PlayBanner(TopBannerMgr.currentBanner.data) -- Needs investigation, crashes the client! DBM:Schedule(0, TopBannerMgr.currentBanner.frame.PlayBanner, TopBannerMgr.currentBanner.frame, TopBannerMgr.currentBanner.data) else if TopBannerMgr.currentBanner and next(TopBannerMgr.currentBanner.frame.pendingLoot) then -- has pending loot, send next. Checking for currentBanner to prevent nil Lua error on right-click TopBannerMgr.currentBanner.data.mode = "LOOT" -- change mode to LOOT, since KILL would show kill banner again DBM:Schedule(0, TopBannerMgr.currentBanner.frame.PlayBanner, TopBannerMgr.currentBanner.frame, TopBannerMgr.currentBanner.data) else TopBannerMgr.currentBanner = nil end end end --[[local function TopBannerManager_IsIdle() return TopBannerMgr.currentBanner == nil end]] ------------------------------------------------------------------ -- https://www.townlong-yak.com/framexml/live/Helix/AtlasInfo.lua local AtlasInfo = { -- ["Interface/LevelUp/BossBanner"]={ ["BossBanner-BottomFillagree"]={66, 28, 0.865234, 0.994141, 0.314453, 0.369141, false, false, "1x"}, ["BossBanner-SkullCircle"]={44, 44, 0.865234, 0.951172, 0.134766, 0.220703, false, false, "1x"}, ["BossBanner-TopFillagree"]={176, 74, 0.244141, 0.587891, 0.576172, 0.720703, false, false, "1x"}, ["BossBanner-RedFlash"]={92, 92, 0.00195312, 0.181641, 0.810547, 0.990234, false, false, "1x"}, ["BossBanner-LeftFillagree"]={72, 40, 0.591797, 0.732422, 0.576172, 0.654297, false, false, "1x"}, ["BossBanner-RightFillagree"]={72, 40, 0.736328, 0.876953, 0.576172, 0.654297, false, false, "1x"}, ["BossBanner-SkullSpikes"]={50, 66, 0.865234, 0.962891, 0.00195312, 0.130859, false, false, "1x"}, ["BossBanner-BgBanner-Bottom"]={440, 112, 0.00195312, 0.861328, 0.00195312, 0.220703, false, false, "1x"}, ["BossBanner-BgBanner-Top"]={440, 112, 0.00195312, 0.861328, 0.224609, 0.443359, false, false, "1x"}, ["LootBanner-IconGlow"]={40, 40, 0.865234, 0.943359, 0.447266, 0.525391, false, false, "1x"}, ["LootBanner-ItemBg"]={269, 41, 0.244141, 0.769531, 0.724609, 0.804688, false, false, "1x"}, ["LootBanner-LootBagCircle"]={44, 44, 0.865234, 0.951172, 0.224609, 0.310547, false, false, "1x"}, ["BossBanner-BgBanner-Mid"]={440, 64, 0.00195312, 0.861328, 0.447266, 0.572266, false, false, "1x"}, ["BossBanner-RedLightning"]={122, 118, 0.00195312, 0.240234, 0.576172, 0.806641, false, false, "1x"}, -- }, -- Interface/LevelUp/BossBanner } local function SetAtlas(textureObject, atlasName, useAtlasSize) local atlas = AtlasInfo[atlasName] if textureObject and atlas then textureObject:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\BossBannerToast\\BossBanner") -- hardcode texture, since there is only one required for this Toast textureObject:SetTexCoord(atlas[3], atlas[4], atlas[5], atlas[6]) if useAtlasSize then textureObject:SetSize(atlas[1], atlas[2]) end return textureObject end end ------------------------------------------------------------------ -- https://github.com/Gethe/wow-ui-source/blob/live/Interface/AddOns/Blizzard_FrameXML/BossBannerToast.xml -- BossBanner frame from XML local BossBanner = CreateFrame("Frame", "BossBanner", UIParent) BossBanner:Hide() BossBanner:SetSize(128, 156) BossBanner:SetPoint("TOP", UIParent, 0, -120) BossBanner:EnableMouse(true) -- required for Mouse scripts BossBanner:SetAlpha(1) BossBanner.LootFrames = {} BossBanner.encounterLootCache = encounterLootCache -- custom, for debugging purposes local bossBannerEffectiveScale = BossBanner:GetEffectiveScale() -- workaround to 3.3.5a bug with UIScale not being accounted for in Translation animations -- BORDER BossBanner.BannerTop = BossBanner:CreateTexture("BannerTop", "BORDER") local BannerTop = BossBanner.BannerTop BannerTop:SetBlendMode("BLEND") BannerTop = SetAtlas(BannerTop, "BossBanner-BgBanner-Top", true) BannerTop:SetPoint("TOP", 0, -44) --BannerTop:SetAlpha(0) BossBanner.BannerTopGlow = BossBanner:CreateTexture("BannerTopGlow", "BORDER") local BannerTopGlow = BossBanner.BannerTopGlow BannerTopGlow:SetBlendMode("ADD") BannerTopGlow = SetAtlas(BannerTopGlow, "BossBanner-BgBanner-Top", true) BannerTopGlow:SetPoint("TOP", 0, -44) BannerTopGlow:SetAlpha(0) BossBanner.BannerBottom = BossBanner:CreateTexture("BannerBottom", "BORDER") local BannerBottom = BossBanner.BannerBottom BannerBottom:SetBlendMode("BLEND") BannerBottom = SetAtlas(BannerBottom, "BossBanner-BgBanner-Bottom", true) BannerBottom:SetPoint("BOTTOM", 0, 0) --BannerBottom:SetAlpha(0) BossBanner.BannerBottomGlow = BossBanner:CreateTexture("BannerBottomGlow", "BORDER") local BannerBottomGlow = BossBanner.BannerBottomGlow BannerBottomGlow:SetBlendMode("ADD") BannerBottomGlow = SetAtlas(BannerBottomGlow, "BossBanner-BgBanner-Bottom", true) BannerBottomGlow:SetPoint("BOTTOM", 0, 0) BannerBottomGlow:SetAlpha(0) -- BACKGROUND BossBanner.BannerMiddle = BossBanner:CreateTexture("BannerMiddle", "BACKGROUND") local BannerMiddle = BossBanner.BannerMiddle BannerMiddle = SetAtlas(BannerMiddle, "BossBanner-BgBanner-Mid", true) BannerMiddle:SetBlendMode("BLEND") BannerMiddle:SetPoint("TOPLEFT", BannerTop, 0, -34) BannerMiddle:SetPoint("BOTTOMRIGHT", BannerBottom, 0, 25) --BannerMiddle:SetAlpha(0) BossBanner.BannerMiddleGlow = BossBanner:CreateTexture("BannerMiddleGlow", "BACKGROUND") local BannerMiddleGlow = BossBanner.BannerMiddleGlow BannerMiddleGlow = SetAtlas(BannerMiddleGlow, "BossBanner-BgBanner-Mid", true) BannerMiddleGlow:SetBlendMode("ADD") BannerMiddleGlow:SetPoint("TOPLEFT", BannerTop, 0, -34) BannerMiddleGlow:SetPoint("BOTTOMRIGHT", BannerBottom, 0, 25) BannerMiddleGlow:SetAlpha(0) -- OVERLAY BossBanner.SkullCircle = BossBanner:CreateTexture("SkullCircle", "OVERLAY") local SkullCircle = BossBanner.SkullCircle SkullCircle:SetBlendMode("BLEND") SkullCircle = SetAtlas(SkullCircle, "BossBanner-SkullCircle", true) SkullCircle:SetPoint("CENTER", BannerTop, 0, 36) --SkullCircle:SetAlpha(0) BossBanner.LootCircle = BossBanner:CreateTexture("LootCircle", "OVERLAY") local LootCircle = BossBanner.LootCircle LootCircle:SetBlendMode("BLEND") LootCircle = SetAtlas(LootCircle, "LootBanner-LootBagCircle", true) LootCircle:SetPoint("CENTER", BannerTop, 0, 36) --LootCircle:SetAlpha(0) -- BossBanner.RedFlash = BossBanner:CreateTexture("RedFlash", "OVERLAY") -- unused, see below on sublevel 4 -- local RedFlash = BossBanner.RedFlash -- RedFlash:SetBlendMode("ADD") -- RedFlash = SetAtlas(RedFlash, "BossBanner-RedFlash", true) -- RedFlash:SetPoint("CENTER", SkullCircle, 0, 3) -- RedFlash:SetAlpha(0) -- ARTWORK BossBanner.BottomFillagree = BossBanner:CreateTexture("BottomFillagree", "ARTWORK") local BottomFillagree = BossBanner.BottomFillagree BottomFillagree:SetBlendMode("BLEND") BottomFillagree = SetAtlas(BottomFillagree, "BossBanner-BottomFillagree", true) BottomFillagree:SetPoint("BOTTOM", 0, 8) --BottomFillagree:SetAlpha(0) BossBanner.SkullSpikes = BossBanner:CreateTexture("SkullSpikes", "ARTWORK") local SkullSpikes = BossBanner.SkullSpikes SkullSpikes:SetBlendMode("BLEND") SkullSpikes = SetAtlas(SkullSpikes, "BossBanner-SkullSpikes", true) SkullSpikes:SetPoint("CENTER", SkullCircle, -1, 6) --SkullSpikes:SetAlpha(0) BossBanner.RightFillagree = BossBanner:CreateTexture("RightFillagree", "ARTWORK") local RightFillagree = BossBanner.RightFillagree RightFillagree:SetBlendMode("BLEND") RightFillagree = SetAtlas(RightFillagree, "BossBanner-RightFillagree", true) RightFillagree:SetPoint("CENTER", SkullCircle, 47, 6) -- edited to final position --RightFillagree:SetAlpha(0) BossBanner.LeftFillagree = BossBanner:CreateTexture("LeftFillagree", "ARTWORK") local LeftFillagree = BossBanner.LeftFillagree LeftFillagree:SetBlendMode("BLEND") LeftFillagree = SetAtlas(LeftFillagree, "BossBanner-LeftFillagree", true) LeftFillagree:SetPoint("CENTER", SkullCircle, -47, 6) -- edited to final position --LeftFillagree:SetAlpha(0) BossBanner.Title = BossBanner:CreateFontString("Title", "ARTWORK", "QuestFont_Large") -- REVIEW for non latin locales. Retail uses QuestFont_Enormous with 30 value height local Title = BossBanner.Title Title:SetHeight(30) -- Doesn't increase text height, only FontString height local titleFont, _, titleFlag = Title:GetFont() Title:SetFont(titleFont, 30, titleFlag) -- Doesn't reach size 30. Client limitation. SetTextHeight would pixelify the font, so keep it tiny Title:SetText(L.BOSS_YOU_DEFEATED) Title:SetPoint("TOP", BannerTop, 0, -47) Title:SetTextColor(1, 0, 0, 0) Title:SetAlpha(1) -- Workaround for alpha animation bug. Keep it below SetTextColor, since it sets alpha to zero BossBanner.SubTitle = BossBanner:CreateFontString("SubTitle", "ARTWORK", "GameFontNormalLarge") local SubTitle = BossBanner.SubTitle SubTitle:SetText(L.BOSS_KILL_SUBTITLE) SubTitle:SetPoint("TOP", BottomFillagree, "BOTTOM", 0, 0) SubTitle:SetTextColor(1, 0, 0, 0) SubTitle:SetAlpha(1) -- Workaround for alpha animation bug. Keep it below SetTextColor, since it sets alpha to zero -- OVERLAY, texture sublevel 2 BossBanner.FlashBurst = BossBanner:CreateTexture("FlashBurst", "OVERLAY", nil, 2) local FlashBurst = BossBanner.FlashBurst FlashBurst:SetBlendMode("ADD") FlashBurst = SetAtlas(FlashBurst, "BossBanner-RedLightning", true) FlashBurst:SetPoint("CENTER", SkullSpikes, 15, -4) FlashBurst:SetAlpha(0.01) BossBanner.FlashBurstLeft = BossBanner:CreateTexture("FlashBurstLeft", "OVERLAY", nil, 2) local FlashBurstLeft = BossBanner.FlashBurstLeft FlashBurstLeft:SetBlendMode("ADD") FlashBurstLeft = SetAtlas(FlashBurstLeft, "BossBanner-RedLightning", true) FlashBurstLeft:SetPoint("CENTER", SkullSpikes, -15, -4) FlashBurstLeft:SetAlpha(0.01) -- OVERLAY, texture sublevel 3 BossBanner.FlashBurstCenter = BossBanner:CreateTexture("FlashBurstCenter", "OVERLAY", nil, 3) local FlashBurstCenter = BossBanner.FlashBurstCenter FlashBurstCenter:SetBlendMode("ADD") FlashBurstCenter = SetAtlas(FlashBurstCenter, "BossBanner-RedLightning", true) FlashBurstCenter:SetPoint("CENTER", SkullSpikes) FlashBurstCenter:SetAlpha(0.01) -- OVERLAY, texture sublevel 4 BossBanner.RedFlash = BossBanner:CreateTexture("RedFlash", "OVERLAY", nil, 4) -- retail writes RedFlash twice, but the animation runs on this texture local RedFlash = BossBanner.RedFlash RedFlash:SetBlendMode("ADD") RedFlash = SetAtlas(RedFlash, "BossBanner-RedFlash", true) RedFlash:SetPoint("CENTER", SkullSpikes, 1, -4) RedFlash:SetAlpha(0.01) -- OnItemEnter/Leave functions, for the loot frame local function BossBanner_OnLootItemEnter(self) -- no tooltip when banner is animating out if BossBanner.animState ~= BB_STATE_BANNER_OUT and not BossBanner.showingTooltip then -- avoid OnEnter spam by checking for tooltip being visible GameTooltip:SetOwner(self, "ANCHOR_LEFT") GameTooltip:SetHyperlink(self:GetParent().itemLink) GameTooltip:Show() BossBanner.showingTooltip = true end end local function BossBanner_OnLootItemLeave() -- self if BossBanner.showingTooltip then GameTooltip:Hide() BossBanner.showingTooltip = false end end -- Loot frame factory, based on BossBannerLootFrameTemplate local function createLootFrame(parent) local frame = CreateFrame("Frame", nil, parent) frame:SetSize(269, 44) local effectiveScale = frame:GetEffectiveScale() -- Background texture frame.Background = frame:CreateTexture(nil, "BACKGROUND") local Background = frame.Background Background:SetBlendMode("BLEND") Background = SetAtlas(Background, "LootBanner-ItemBg", true) Background:SetPoint("CENTER") -- Icon texture frame.Icon = frame:CreateTexture(nil, "BORDER") local Icon = frame.Icon Icon:SetSize(37, 37) Icon:SetPoint("LEFT", --[[124]] 14, 0) -- Workaround for Translation last frame flicker of IconHitBox animations 124 initial point is mimicked in animations. Also prevents the need for OnFinished SetPoint Icon:SetTexture("Interface\\Icons\\inv_misc_bag_felclothbag") -- FontString for Item Count frame.Count = frame:CreateFontString(nil, "ARTWORK", "NumberFontNormal") local Count = frame.Count if BBfont then Count:SetFont(BBfont, 14 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then Count:SetShadowOffset(1, -1) end end Count:SetJustifyH("RIGHT") Count:SetPoint("BOTTOMRIGHT", Icon, -5, 2) Count:Hide() -- FontString for Item Name frame.ItemName = frame:CreateFontString(nil, "ARTWORK", "GameFontNormalMed3") -- Same as retail GameFontNormalMed2 local ItemName = frame.ItemName if BBfont then ItemName:SetFont(BBfont, 14 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then ItemName:SetShadowOffset(1, -1) end end ItemName:SetWordWrap(false) -- try to mimic maxLines = 1 ItemName:SetJustifyH("LEFT") ItemName:SetSize(204, 0) ItemName:SetPoint("TOPLEFT", frame, 56, -7) -- FontString for Set Name (hidden) frame.SetName = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") local SetName = frame.SetName if BBfont then SetName:SetFont(BBfont, 12 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then SetName:SetShadowOffset(1, -1) end end SetName:SetWordWrap(false) -- try to mimic maxLines = 1 SetName:SetJustifyH("LEFT") SetName:SetSize(204, 0) SetName:SetPoint("TOPLEFT", ItemName, "BOTTOMLEFT", 0, 0) SetName:SetTextColor(0, 1.0, 0) SetName:Hide() -- FontString for Player Name (originally), re-used for looted Boss name) frame.PlayerName = frame:CreateFontString(nil, "ARTWORK", "GameFontNormal") local PlayerName = frame.PlayerName if BBfont then PlayerName:SetFont(BBfont, 12 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then PlayerName:SetShadowOffset(1, -1) end end PlayerName:SetWordWrap(false) -- try to mimic maxLines = 1 PlayerName:SetJustifyH("LEFT") PlayerName:SetSize(204, 0) PlayerName:SetPoint("TOPLEFT", ItemName, "BOTTOMLEFT", 0, 0) -- Icon Hitbox Frame frame.IconHitBox = CreateFrame("Frame", nil, frame) local IconHitBox = frame.IconHitBox IconHitBox:SetSize(37, 37) IconHitBox:SetPoint("CENTER", Icon) IconHitBox:EnableMouse(true) -- required for Mouse scripts -- IconBorder (hidden) IconHitBox.IconBorder = IconHitBox:CreateTexture(nil, "BORDER") local IconBorder = IconHitBox.IconBorder IconBorder:SetTexture("Interface\\Common\\WhiteIconFrame") IconBorder:SetSize(37, 37) IconBorder:SetPoint("CENTER") IconBorder:Hide() -- Glow Texture IconHitBox.Glow = IconHitBox:CreateTexture(nil, "ARTWORK") local Glow = IconHitBox.Glow Glow:SetBlendMode("ADD") Glow = SetAtlas(Glow, "LootBanner-IconGlow", true) Glow:SetPoint("CENTER") Glow:SetVertexColor(0.63921568627451, 0.2078431372549, 0.93333333333333) Glow:SetAlpha(0) -- Workaround to SetAlpha bug on OnFinished -- GlowWhite Texture IconHitBox.GlowWhite = IconHitBox:CreateTexture(nil, "ARTWORK") local GlowWhite = IconHitBox.GlowWhite GlowWhite:SetBlendMode("ADD") GlowWhite = SetAtlas(GlowWhite, "LootBanner-IconGlow", true) GlowWhite:SetPoint("CENTER") GlowWhite:SetAlpha(0) -- Workaround to SetAlpha bug on OnFinished -- Icon Overlay IconHitBox.IconOverlay = IconHitBox:CreateTexture(nil, "OVERLAY", nil, 1) local IconOverlay = IconHitBox.IconOverlay IconOverlay:SetSize(37, 37) IconOverlay:SetPoint("CENTER") IconOverlay:Hide() -- Icon Overlay 2 IconHitBox.IconOverlay2 = IconHitBox:CreateTexture(nil, "OVERLAY", nil, 2) local IconOverlay2 = IconHitBox.IconOverlay2 IconOverlay2:SetSize(37, 37) IconOverlay2:SetPoint("CENTER") IconOverlay2:Hide() -- Add the frame to the LootFrames table tinsert(parent.LootFrames, frame) -- Add scripts -- Add OnLoad script manually IconHitBox.UpdateTooltip = function(owner) BossBanner_OnLootItemEnter(owner) end IconHitBox:SetScript("OnEnter", BossBanner_OnLootItemEnter) IconHitBox:SetScript("OnLeave", BossBanner_OnLootItemLeave) -- Animations Background.animForAnim = Background:CreateAnimationGroup() Icon.animForAnim = Icon:CreateAnimationGroup() IconBorder.animForAnim = IconBorder:CreateAnimationGroup() IconOverlay.animForAnim = IconOverlay:CreateAnimationGroup() IconOverlay2.animForAnim = IconOverlay2:CreateAnimationGroup() Glow.animForAnim = Glow:CreateAnimationGroup() IconHitBox.animForAnim = IconHitBox:CreateAnimationGroup() GlowWhite.animForAnim = GlowWhite:CreateAnimationGroup() ItemName.animForAnim = ItemName:CreateAnimationGroup() PlayerName.animForAnim = PlayerName:CreateAnimationGroup() SetName.animForAnim = SetName:CreateAnimationGroup() -- Animation CreateAlphaAnim(Background.animForAnim, 1, 0, -1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(Background.animForAnim, 1, 0.45, 1) CreateAlphaAnim(Icon.animForAnim, 1, 0, -1, 0.1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(Icon.animForAnim, 1, 0.25, 1, 0.1) CreateAlphaAnim(IconBorder.animForAnim, 1, 0, -1, 0.1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(IconBorder.animForAnim, 1, 0.25, 1, 0.1) CreateAlphaAnim(IconOverlay.animForAnim, 1, 0, -1, 0.1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(IconOverlay.animForAnim, 1, 0.25, 1, 0.1) CreateAlphaAnim(IconOverlay2.animForAnim, 1, 0, -1, 0) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(IconOverlay2.animForAnim, 1, 0.25, 1, 0) CreateTranslationAnim(Icon.animForAnim, 1, 0, 110*effectiveScale, 0) CreateTranslationAnim(Icon.animForAnim, 1, 0.4, -110*effectiveScale, 0, 0.25, "OUT") CreateTranslationAnim(IconHitBox.animForAnim, 1, 0, 110*effectiveScale, 0) CreateTranslationAnim(IconHitBox.animForAnim, 1, 0.4, -110*effectiveScale, 0, 0.25, "OUT") -- group, order, duration, xOffset, yOffset, delay, smoothing CreateAlphaAnim(Glow.animForAnim, 1, 0, -1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(Glow.animForAnim, 1, 0.15, 1, nil, "IN") CreateAlphaAnim(Glow.animForAnim, 1, 0.10, 1, 0.15) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="1" toAlpha="0" CreateAlphaAnim(Glow.animForAnim, 1, 1, -1, 0.25) -- REVIEW order of this animation. May change order and delays CreateAlphaAnim(GlowWhite.animForAnim, 1, 0, -1) -- Workaround to SetAlpha bug on OnFinished. fromAlpha="0" toAlpha="1" CreateAlphaAnim(GlowWhite.animForAnim, 1, 0.25, 1, nil, "IN") CreateAlphaAnim(GlowWhite.animForAnim, 1, 0.25, -1, 0.25) -- REVIEW order -- CreateScaleAnim(GlowWhite.animForAnim, 1, 0, 1, 1) CreateScaleAnim(GlowWhite.animForAnim, 1, 0.25, 1.25, 1.25, nil, "IN_OUT") -- group, order, duration, scaleX, scaleY, delay, smoothing) CreateAlphaAnim(ItemName.animForAnim, 1, 0, -1, 0.4) CreateAlphaAnim(ItemName.animForAnim, 1, 0.25, 1, 0.4) CreateAlphaAnim(PlayerName.animForAnim, 1, 0, -1, 0.4) CreateAlphaAnim(PlayerName.animForAnim, 1, 0.25, 1, 0.4) CreateAlphaAnim(SetName.animForAnim, 1, 0, -1, 0.4) CreateAlphaAnim(SetName.animForAnim, 1, 0.25, 1, 0.4) -- AnimationGroup frame.Anim = {} local Anim = frame.Anim Anim.Background = Background.animForAnim Anim.Icon = Icon.animForAnim Anim.IconBorder = IconBorder.animForAnim Anim.IconOverlay = IconOverlay.animForAnim Anim.IconOverlay2 = IconOverlay2.animForAnim Anim.Glow = Glow.animForAnim Anim.IconHitBox = IconHitBox.animForAnim Anim.GlowWhite = GlowWhite.animForAnim Anim.ItemName = ItemName.animForAnim Anim.PlayerName = PlayerName.animForAnim Anim.SetName = SetName.animForAnim Anim.Background.DebugName = "Background" Anim.Icon.DebugName = "Icon" Anim.IconBorder.DebugName = "IconBorder" Anim.IconOverlay.DebugName = "IconOverlay" Anim.IconOverlay2.DebugName = "IconOverlay2" Anim.Glow.DebugName = "Glow" Anim.IconHitBox.DebugName = "IconHitBox" Anim.GlowWhite.DebugName = "GlowWhite" Anim.ItemName.DebugName = "ItemName" Anim.PlayerName.DebugName = "PlayerName" Anim.SetName.DebugName = "SetName" -- local animCounter, animFinishedCounter = 0,0 Anim.Play = function(self) -- Add OnPlay functionality manually -- SetAlpha cannot be set manually with OnPlay/OnFinished scripts, due to 3.3.5a animation system limitation. It will blink for 1 frame since AnimationGroup resets alpha to previous value. -- Icon:SetPoint("LEFT", 124, 0) -- Play the AnimationGroup for _, anim in pairs(self) do if type(anim) == "table" then -- animCounter = animCounter + 1 anim:Stop() anim:Play() --[[ anim:SetScript("OnFinished", function() animFinishedCounter = animFinishedCounter + 1 if animFinishedCounter == animCounter then Anim.OnFinished() end end) ]] end end end --[[ Add OnFinished functionality manually Anim.OnFinished = function() animCounter, animFinishedCounter = 0,0 Icon:SetPoint("LEFT", 14, 0) end]] -- Return the frame return frame end -- Frames local bossBannerLootFrame = createLootFrame(BossBanner) bossBannerLootFrame:Hide() bossBannerLootFrame:SetPoint("TOP", 0, -84) -- Animations -- AnimationGroup: AnimIn SkullCircle.animForAnimIn = SkullCircle:CreateAnimationGroup() BannerTop.animForAnimIn = BannerTop:CreateAnimationGroup() BannerBottom.animForAnimIn = BannerBottom:CreateAnimationGroup() BannerMiddle.animForAnimIn = BannerMiddle:CreateAnimationGroup() BottomFillagree.animForAnimIn = BottomFillagree:CreateAnimationGroup() SkullSpikes.animForAnimIn = SkullSpikes:CreateAnimationGroup() RightFillagree.animForAnimIn = RightFillagree:CreateAnimationGroup() LeftFillagree.animForAnimIn = LeftFillagree:CreateAnimationGroup() BannerTopGlow.animForAnimIn = BannerTopGlow:CreateAnimationGroup() BannerBottomGlow.animForAnimIn = BannerBottomGlow:CreateAnimationGroup() BannerMiddleGlow.animForAnimIn = BannerMiddleGlow:CreateAnimationGroup() RedFlash.animForAnimIn = RedFlash:CreateAnimationGroup() FlashBurst.animForAnimIn = FlashBurst:CreateAnimationGroup() FlashBurstLeft.animForAnimIn = FlashBurstLeft:CreateAnimationGroup() FlashBurstCenter.animForAnimIn = FlashBurstCenter:CreateAnimationGroup() Title.animForAnimIn = Title:CreateAnimationGroup() SubTitle.animForAnimIn = SubTitle:CreateAnimationGroup() -- Order 1 of AnimIn (0.15s duration) CreateScaleAnim(SkullCircle.animForAnimIn, 1, 0, 5, 5) CreateScaleAnim(SkullCircle.animForAnimIn, 1, 0.15, 0.2, 0.2) CreateAlphaAnim(SkullCircle.animForAnimIn, 1, 0, -1) CreateAlphaAnim(SkullCircle.animForAnimIn, 1, 0.1, 1) -- Order 2 of AnimIn (with order 1 set to 0.15s endDelay) CreateAlphaAnim(BannerTop.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerTop.animForAnimIn, 2, 0.25, 1, 0.2) CreateScaleAnim(BannerTop.animForAnimIn, 1, 0, 0.1, 1, 0.15) CreateScaleAnim(BannerTop.animForAnimIn, 2, 0.3, 10, 1, 0.1) CreateAlphaAnim(BannerBottom.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerBottom.animForAnimIn, 2, 0.25, 1, 0.2) CreateScaleAnim(BannerBottom.animForAnimIn, 1, 0, 0.1, 1, 0.15) CreateScaleAnim(BannerBottom.animForAnimIn, 2, 0.3, 10, 1, 0.1) CreateAlphaAnim(BannerMiddle.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerMiddle.animForAnimIn, 2, 0.25, 1, 0.2) CreateScaleAnim(BannerMiddle.animForAnimIn, 1, 0, 0.1, 1, 0.15) CreateScaleAnim(BannerMiddle.animForAnimIn, 2, 0.3, 10, 1, 0.1) CreateAlphaAnim(BottomFillagree.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BottomFillagree.animForAnimIn, 2, 0.15, 1) CreateScaleAnim(SkullSpikes.animForAnimIn, 1, 0, 0.5, 0.5, 0.15) CreateScaleAnim(SkullSpikes.animForAnimIn, 2, 0.1, 2, 2, 0.1) CreateAlphaAnim(SkullSpikes.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(SkullSpikes.animForAnimIn, 2, 0.1, 1) CreateAlphaAnim(RightFillagree.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(RightFillagree.animForAnimIn, 2, 0.1, 1) --CreateTranslationAnim(RightFillagree.animForAnimIn, 1, 0, -37*bossBannerEffectiveScale, 0, 0.15) CreateTranslationAnim(RightFillagree.animForAnimIn, 2, 0.15, 37*bossBannerEffectiveScale, 0, 0.15) CreateScaleAnim(RightFillagree.animForAnimIn, 1, 0, 0.5, 0.5, 0.15, nil, nil, "BOTTOMLEFT") CreateScaleAnim(RightFillagree.animForAnimIn, 2, 0.15, 2, 2, 0.15, nil, nil, "BOTTOMLEFT") RightFillagree.animForAnimIn:SetScript("OnFinished", function() RightFillagree:SetPoint("CENTER", SkullCircle, "CENTER", 47, 6) end) CreateAlphaAnim(LeftFillagree.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(LeftFillagree.animForAnimIn, 2, 0.1, 1) --CreateTranslationAnim(LeftFillagree.animForAnimIn, 1, 0, 37*bossBannerEffectiveScale, 0, 0.15) CreateTranslationAnim(LeftFillagree.animForAnimIn, 2, 0.15, -37*bossBannerEffectiveScale, 0, 0.15) CreateScaleAnim(LeftFillagree.animForAnimIn, 1, 0, 0.5, 0.5, 0.15, nil, nil, "BOTTOMRIGHT") CreateScaleAnim(LeftFillagree.animForAnimIn, 2, 0.15, 2, 2, 0.15, nil, nil, "BOTTOMRIGHT") LeftFillagree.animForAnimIn:SetScript("OnFinished", function() LeftFillagree:SetPoint("CENTER", SkullCircle, "CENTER", -47, 6) end) CreateAlphaAnim(BannerTopGlow.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerTopGlow.animForAnimIn, 2, 0.25, 1, 0.9) CreateScaleAnim(BannerTopGlow.animForAnimIn, 1, 0, 0.5, 1, 0.15) CreateScaleAnim(BannerTopGlow.animForAnimIn, 2, 0.5, 3.2, 1, 0.9) CreateAlphaAnim(BannerTopGlow.animForAnimIn, 2, 0.6, -1, 1.1) CreateAlphaAnim(BannerBottomGlow.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerBottomGlow.animForAnimIn, 2, 0.25, 1, 0.9) CreateScaleAnim(BannerBottomGlow.animForAnimIn, 1, 0, 0.5, 1, 0.15) CreateScaleAnim(BannerBottomGlow.animForAnimIn, 2, 0.5, 3.2, 1, 0.9) CreateAlphaAnim(BannerBottomGlow.animForAnimIn, 2, 0.6, -1, 1.1) CreateAlphaAnim(BannerMiddleGlow.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(BannerMiddleGlow.animForAnimIn, 2, 0.25, 1, 0.9) CreateScaleAnim(BannerMiddleGlow.animForAnimIn, 1, 0, 0.5, 1, 0.15) CreateScaleAnim(BannerMiddleGlow.animForAnimIn, 2, 0.5, 3.2, 1, 0.9) CreateAlphaAnim(BannerMiddleGlow.animForAnimIn, 2, 0.6, -1, 1.1) CreateAlphaAnim(Title.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(Title.animForAnimIn, 2, 0.25, 1, 0.2) CreateAlphaAnim(SubTitle.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(SubTitle.animForAnimIn, 1, 0.25, 1, 0.2) CreateAlphaAnim(RedFlash.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(RedFlash.animForAnimIn, 2, 0.1, 1) CreateScaleAnim(RedFlash.animForAnimIn, 1, 0, 2.5, 2.5, 0.15) CreateScaleAnim(RedFlash.animForAnimIn, 2, 0.25, 0.4, 0.4, nil, "IN") CreateAlphaAnim(RedFlash.animForAnimIn, 2, 0.5, -1, 0.25) CreateAlphaAnim(FlashBurst.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(FlashBurst.animForAnimIn, 2, 0.25, 1, 0.25) CreateScaleAnim(FlashBurst.animForAnimIn, 1, 0, 1, 0.75, 0.15, nil, nil, "LEFT") CreateScaleAnim(FlashBurst.animForAnimIn, 2, 0.4, 1.25, 1, 0.25, nil, nil, "LEFT") --CreateTranslationAnim(FlashBurst.animForAnimIn, 1, 0, 0, 0, nil, nil, 0.15) CreateTranslationAnim(FlashBurst.animForAnimIn, 2, 0.5, 10*bossBannerEffectiveScale, 0, 0.25) CreateAlphaAnim(FlashBurst.animForAnimIn, 2, 0.4, -1, 0.25) CreateAlphaAnim(FlashBurstLeft.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(FlashBurstLeft.animForAnimIn, 2, 0.25, 1, 0.25) CreateScaleAnim(FlashBurstLeft.animForAnimIn, 1, 0, 1, 0.75, 0.15, nil, nil, "RIGHT") CreateScaleAnim(FlashBurstLeft.animForAnimIn, 2, 0.5, 1.25, 1, 0.25, nil, nil, "RIGHT") --CreateTranslationAnim(FlashBurstLeft.animForAnimIn, 1, 0, 0, 0, nil, nil, 0.15) CreateTranslationAnim(FlashBurstLeft.animForAnimIn, 2, 0.5, -10*bossBannerEffectiveScale, 0, 0.25) CreateAlphaAnim(FlashBurstLeft.animForAnimIn, 2, 0.5, -1, 0.25) CreateAlphaAnim(FlashBurstCenter.animForAnimIn, 1, 0, -1, nil, nil, 0.15) CreateAlphaAnim(FlashBurstCenter.animForAnimIn, 2, 0.25, 1, 0.25) CreateScaleAnim(FlashBurstCenter.animForAnimIn, 1, 0, 1, 1, 0.15) CreateScaleAnim(FlashBurstCenter.animForAnimIn, 2, 0.5, 1.25, 1.25, 0.25) CreateAlphaAnim(FlashBurstCenter.animForAnimIn, 2, 0.5, -1, 0.25) BossBanner.AnimIn = {} local AnimIn = BossBanner.AnimIn AnimIn.SkullCircle = SkullCircle.animForAnimIn AnimIn.BannerTop = BannerTop.animForAnimIn AnimIn.BannerBottom = BannerBottom.animForAnimIn AnimIn.BannerMiddle = BannerMiddle.animForAnimIn AnimIn.BottomFillagree = BottomFillagree.animForAnimIn AnimIn.SkullSpikes = SkullSpikes.animForAnimIn AnimIn.RightFillagree = RightFillagree.animForAnimIn AnimIn.LeftFillagree = LeftFillagree.animForAnimIn AnimIn.BannerTopGlow = BannerTopGlow.animForAnimIn AnimIn.BannerBottomGlow = BannerBottomGlow.animForAnimIn AnimIn.BannerMiddleGlow = BannerMiddleGlow.animForAnimIn AnimIn.RedFlash = RedFlash.animForAnimIn AnimIn.FlashBurst = FlashBurst.animForAnimIn AnimIn.FlashBurstLeft = FlashBurstLeft.animForAnimIn AnimIn.FlashBurstCenter = FlashBurstCenter.animForAnimIn AnimIn.Title = Title.animForAnimIn AnimIn.SubTitle = SubTitle.animForAnimIn AnimIn.Play = function(self) if BossBanner.AnimOut:IsPlaying() then BossBanner.AnimOut:Stop() end LeftFillagree:SetPoint("CENTER", SkullCircle, "CENTER", -10, 6) RightFillagree:SetPoint("CENTER", SkullCircle, "CENTER", 10, 6) SkullCircle:SetAlpha(1) LootCircle:SetAlpha(0) for _, anim in pairs(self) do if type(anim) == "table" then -- reject functions anim:Stop() anim:Play() end end end AnimIn.Stop = function(self) for _, anim in pairs(self) do if type(anim) == "table" then anim:Stop() end end end -- AnimationGroup: AnimSwitch SkullCircle.animForAnimSwitch = SkullCircle:CreateAnimationGroup() Title.animForAnimSwitch = Title:CreateAnimationGroup() SubTitle.animForAnimSwitch = SubTitle:CreateAnimationGroup() LootCircle.animForAnimSwitch = LootCircle:CreateAnimationGroup() CreateAlphaAnim(SkullCircle.animForAnimSwitch, 1, 0, 1) CreateAlphaAnim(SkullCircle.animForAnimSwitch, 1, 0.5, -1) CreateAlphaAnim(Title.animForAnimSwitch, 1, 0, 1) CreateAlphaAnim(Title.animForAnimSwitch, 1, 0.25, -1) CreateAlphaAnim(SubTitle.animForAnimSwitch, 1, 0, 1) CreateAlphaAnim(SubTitle.animForAnimSwitch, 1, 0.25, -1) CreateAlphaAnim(LootCircle.animForAnimSwitch, 1, 0, 0) CreateAlphaAnim(LootCircle.animForAnimSwitch, 1, 0.5, 1) BossBanner.AnimSwitch = {} local AnimSwitch = BossBanner.AnimSwitch AnimSwitch.SkullCircle = SkullCircle.animForAnimSwitch AnimSwitch.Title = Title.animForAnimSwitch AnimSwitch.SubTitle = SubTitle.animForAnimSwitch AnimSwitch.LootCircle = LootCircle.animForAnimSwitch AnimSwitch.Play = function(self) -- intended final alpha, and animation will workaround OnFinished alpha bug SkullCircle:SetAlpha(0) Title:SetAlpha(0) SubTitle:SetAlpha(0) LootCircle:SetAlpha(1) for _, anim in pairs(self) do if type(anim) == "table" then anim:Stop() anim:Play() end end end AnimSwitch.Stop = function(self) for _, anim in pairs(self) do if type(anim) == "table" then anim:Stop() end end end local function BossBanner_OnAnimOutFinished(self) -- moved up from retail source code, to avoid globals local banner = self:GetParent() banner.animState = nil banner.lootShown = 0 banner:Hide() banner:SetHeight(banner.baseHeight) -- Disabling all of these SetAlpha due to 3.3.5a animation bug that holds attributes like alpha hostage until AnimationGroup OnFinished ends. -- banner.BannerTop:SetAlpha(0) -- banner.BannerBottom:SetAlpha(0) -- banner.BannerMiddle:SetAlpha(0) -- banner.BottomFillagree:SetAlpha(0) -- banner.SkullSpikes:SetAlpha(0) -- banner.RightFillagree:SetAlpha(0) -- banner.LeftFillagree:SetAlpha(0) -- banner.Title:SetAlpha(0) -- banner.SubTitle:SetAlpha(0) -- banner.FlashBurst:SetAlpha(0) -- banner.FlashBurstLeft:SetAlpha(0) -- banner.FlashBurstCenter:SetAlpha(0) -- banner.RedFlash:SetAlpha(0) for i = 1, #banner.LootFrames do banner.LootFrames[i]:Hide() end banner:SetHeight(banner.baseHeight) TopBannerManager_BannerFinished() end -- AnimationGroup: AnimOut BossBanner.AnimOut = BossBanner:CreateAnimationGroup() CreateAlphaAnim(BossBanner.AnimOut, 1, 0, 1) CreateAlphaAnim(BossBanner.AnimOut, 1, 0.5, -1) BossBanner.AnimOut:SetScript("OnFinished", function(self) BossBanner_OnAnimOutFinished(self) end) ------------------------------------------------------------------ -- https://github.com/Gethe/wow-ui-source/blob/live/Interface/AddOns/Blizzard_FrameXML/BossBannerToast.lua local function BossBanner_AnimBannerIn(self) self.lootShown = 0 -- how many items the UI is displaying self.AnimIn:Play() end local function BossBanner_AnimKillHold() -- self -- nothing here end local function BossBanner_AnimSwitch(self, entry) if next(self.pendingLoot) then -- we have loot self.AnimSwitch:Play() if DBM.Options.PlayBBSound then PlaySoundFile(SOUNDKIT.UI_PERSONAL_LOOT_BANNER) end entry.duration = 0.5 else entry.duration = 0 end end local function BossBanner_AnimLootExpand(self, entry) -- don't need to expand for first item if self.lootShown > 0 and self.lootShown < BB_MAX_LOOT and next(self.pendingLoot) then entry.duration = BB_EXPAND_TIME else entry.duration = 0 end end local function SetItemButtonQuality(button, quality) if button and button.IconBorder then button.IconBorder:SetTexture("Interface\\Addons\\DBM-Core\\textures\\WhiteIconFrame") local color = quality and ITEM_QUALITY_COLORS[quality] button.IconBorder:SetVertexColor(color.r, color.g, color.b) end end local colorRarity = { ["ff9d9d9d"] = 0, -- Poor ["ffffffff"] = 1, -- Common ["ff1eff00"] = 2, -- Uncommon ["ff0070dd"] = 3, -- Rare ["ffa335ee"] = 4, -- Epic ["ffff8000"] = 5, -- Legendary ["ffe6cc80"] = 6, -- Artifact/Heirloom } local function findSetName(text) -- Pattern to match (X/Y) at the end of a string local pattern = "(.+)%s?%((%d+)/(%d+)%)$" local setName, current, total = text:match(pattern) if setName then return setName:trim(), tonumber(current), tonumber(total) end return nil -- Set name not found end local itemScanTooltip local function BossBanner_ConfigureLootFrame(lootFrame, data) -- moved up from retail source code, to avoid globals -- data: { itemID = itemID, quantity = quantity, slot = slot, lootSourceName = lootSourceName, itemLink = itemLink, texture = texture } local _, itemName, itemRarity, itemTexture, colorString, rarityColor, setName itemName, _, itemRarity, _, _, _, _, _, _, itemTexture = GetItemInfo(data.itemLink) if not itemTexture then -- uncached item DBM:Debug("BossBanner caught an uncached item: " .. data.itemLink) -- retrieve itemName and itemRarity from itemLink _, _, colorString, _, _, _, _, _, _, _, _, _, _, itemName = strfind(data.itemLink, "|?c?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") itemRarity = colorRarity[colorString] itemTexture = data.texture end if IsDressableItem(data.itemLink) then -- is gear -- retrieve item set through a hidden tooltip itemScanTooltip = itemScanTooltip or CreateFrame("GameTooltip", "BossBannerItemScanningTooltip", nil, "GameTooltipTemplate") itemScanTooltip:SetOwner(UIParent, "ANCHOR_NONE") itemScanTooltip:SetHyperlink(data.itemLink) for i = 2, itemScanTooltip:NumLines() do local text = _G["BossBannerItemScanningTooltipTextLeft"..i]:GetText() setName = findSetName(text) if setName then break end end end lootFrame.ItemName:SetText(itemName) rarityColor = ITEM_QUALITY_COLORS[itemRarity] lootFrame.ItemName:SetTextColor(rarityColor.r, rarityColor.g, rarityColor.b) lootFrame.Background:SetVertexColor(rarityColor.r, rarityColor.g, rarityColor.b) lootFrame.Icon:SetTexture(itemTexture) SetItemButtonQuality(lootFrame.IconHitBox, itemRarity) if data.quantity > 1 then lootFrame.Count:Show() lootFrame.Count:SetText(data.quantity) else lootFrame.Count:Hide() end if setName then lootFrame.ItemName:ClearAllPoints() lootFrame.ItemName:SetPoint("TOPLEFT", 56, -2) lootFrame.SetName:SetText(("Set: %s"):format(setName)) lootFrame.SetName:Show() lootFrame.PlayerName:ClearAllPoints() lootFrame.PlayerName:SetPoint("TOPLEFT", lootFrame.SetName, "BOTTOMLEFT", 0, 0) else lootFrame.ItemName:ClearAllPoints() lootFrame.ItemName:SetPoint("TOPLEFT", 56, -7) lootFrame.SetName:Hide() lootFrame.PlayerName:ClearAllPoints() lootFrame.PlayerName:SetPoint("TOPLEFT", lootFrame.ItemName, "BOTTOMLEFT", 0, 0) end lootFrame.PlayerName:SetText(data.lootSourceName) -- Will be used for looted Boss/Treasure Chest name, so replaced data.playerName with a custom value -- local classColor = RAID_CLASS_COLORS[data.className] -- lootFrame.PlayerName:SetTextColor(classColor.r, classColor.g, classColor.b) lootFrame.itemLink = data.itemLink end local function BossBanner_AnimLootInsert(self, entry) local key, data = next(self.pendingLoot) if key and self.lootShown < BB_MAX_LOOT then -- we have an item, show it self.pendingLoot[key] = nil self.lootShown = self.lootShown + 1 local lootFrame = self.LootFrames[self.lootShown] if not lootFrame then lootFrame = createLootFrame(self) lootFrame:SetPoint("TOP", self.LootFrames[self.lootShown - 1], "BOTTOM", 0, -6) end BossBanner_ConfigureLootFrame(lootFrame, data) lootFrame:Show() lootFrame.Anim:Play() -- loop back if more items if next(self.pendingLoot) and self.lootShown < BB_MAX_LOOT then BossBanner.SetAnimState(self, BB_STATE_LOOT_EXPAND) return true end end if self.lootShown > 0 then entry.duration = 4 else entry.duration = 0 end end local function BossBanner_AnimBannerOut(self) -- self, entry self.AnimOut:Play() end local BB_ANIMATION_CONTROL = { [BB_STATE_BANNER_IN] = { duration = 1.85, onStartFunc = BossBanner_AnimBannerIn }, [BB_STATE_KILL_HOLD] = { duration = 2, onStartFunc = BossBanner_AnimKillHold }, [BB_STATE_SWITCH] = { duration = nil, onStartFunc = BossBanner_AnimSwitch }, [BB_STATE_LOOT_EXPAND] ={ duration = nil, onStartFunc = BossBanner_AnimLootExpand }, [BB_STATE_LOOT_INSERT] ={ duration = nil, onStartFunc = BossBanner_AnimLootInsert }, -- The duration for BB_STATE_BANNER_OUT only needs to be longer than the animation time of AnimOut, -- which is 0.5 seconds. BossBanner_OnAnimOutFinished will then preempt the state machine and end the animation. [BB_STATE_BANNER_OUT] = { duration = 5, onStartFunc = BossBanner_AnimBannerOut }, } local function BossBanner_BeginAnims(self, animState) BossBanner.SetAnimState(self, animState or BB_STATE_BANNER_IN) end function BossBanner.SetAnimState(self, animState) local entry = BB_ANIMATION_CONTROL[animState] if entry then local redirected = entry.onStartFunc(self, entry) if not redirected then self.animState = animState self.animTimeLeft = entry.duration end else self.animState = nil self.animTimeLeft = nil end end local defaultTranslationOffsetsTable = { ["RightFillagree-From"] = {-37, 0}, ["RightFillagree-To"] = {37, 0}, ["LeftFillagree-From"] = {37, 0}, ["LeftFillagree-To"] = {-37, 0}, -- ["FlashBurst-From"] = {0, 0}, ["FlashBurst-To"] = {10, 0}, -- ["FlashBurstLeft-From"] = {0, 0}, ["FlashBurstLeft-To"] = {-10, 0}, ["LootFrame-Icon-From"] = {110, 0}, ["LootFrame-Icon-To"] = {-110, 0}, } local xOffset, yOffset local function validateOffsets(animation, defaultkey, effectiveScale) xOffset, yOffset = animation:GetOffset() if round(xOffset, 0) ~= round((defaultTranslationOffsetsTable[defaultkey][1]*effectiveScale), 0) then -- due to inconsistent precision with floats, use round for a preventive measure xOffset = defaultTranslationOffsetsTable[defaultkey][1]*effectiveScale end if round(yOffset, 0) ~= round((defaultTranslationOffsetsTable[defaultkey][2]*effectiveScale), 0) then -- due to inconsistent precision with floats, use round for a preventive measure yOffset = defaultTranslationOffsetsTable[defaultkey][2]*effectiveScale end animation:SetOffset(xOffset, yOffset) end local function fixTranslationAnim() local effectiveScale = BossBanner:GetEffectiveScale() -- Lootframes inherit from this too, so keep it as is -- local rightFillagreeTranslationAnimFrom = (select(3, BossBanner.RightFillagree.animForAnimIn:GetAnimations())) -- local rightFillagreeTranslationAnimTo = (select(4, BossBanner.RightFillagree.animForAnimIn:GetAnimations())) local rightFillagreeTranslationAnimTo = (select(3, BossBanner.RightFillagree.animForAnimIn:GetAnimations())) -- local leftFillagreeTranslationAnimFrom = (select(3, BossBanner.LeftFillagree.animForAnimIn:GetAnimations())) -- local leftFillagreeTranslationAnimTo = (select(4, BossBanner.LeftFillagree.animForAnimIn:GetAnimations())) local leftFillagreeTranslationAnimTo = (select(3, BossBanner.LeftFillagree.animForAnimIn:GetAnimations())) -- local flashBurstTranslationAnimTo = (select(6, BossBanner.FlashBurst.animForAnimIn:GetAnimations())) -- local flashBurstLeftTranslationAnimTo = (select(6, BossBanner.FlashBurstLeft.animForAnimIn:GetAnimations())) local flashBurstTranslationAnimTo = (select(5, BossBanner.FlashBurst.animForAnimIn:GetAnimations())) local flashBurstLeftTranslationAnimTo = (select(5, BossBanner.FlashBurstLeft.animForAnimIn:GetAnimations())) local lootFrameIconTranslationAnimFrom, lootFrameIconTranslationAnimTo -- validateOffsets(rightFillagreeTranslationAnimFrom, "RightFillagree-From", effectiveScale) validateOffsets(rightFillagreeTranslationAnimTo, "RightFillagree-To", effectiveScale) -- validateOffsets(leftFillagreeTranslationAnimFrom, "LeftFillagree-From", effectiveScale) validateOffsets(leftFillagreeTranslationAnimTo, "LeftFillagree-To", effectiveScale) validateOffsets(flashBurstTranslationAnimTo, "FlashBurst-To", effectiveScale) validateOffsets(flashBurstLeftTranslationAnimTo, "FlashBurstLeft-To", effectiveScale) for _, lootFrame in ipairs(BossBanner.LootFrames) do lootFrameIconTranslationAnimFrom, lootFrameIconTranslationAnimTo = select(3, lootFrame.Icon.animForAnim:GetAnimations()) validateOffsets(lootFrameIconTranslationAnimFrom, "LootFrame-Icon-From", effectiveScale) validateOffsets(lootFrameIconTranslationAnimTo, "LootFrame-Icon-To", effectiveScale) lootFrameIconTranslationAnimFrom, lootFrameIconTranslationAnimTo = lootFrame.IconHitBox.animForAnim:GetAnimations() validateOffsets(lootFrameIconTranslationAnimFrom, "LootFrame-Icon-From", effectiveScale) validateOffsets(lootFrameIconTranslationAnimTo, "LootFrame-Icon-To", effectiveScale) end end local function BossBanner_Play(self, data) if data then fixTranslationAnim() if data.mode == "KILL" then self.Title:SetAlpha(1) self.SubTitle:SetAlpha(1) self.Title:SetText(data.name) self.SubTitle:Show() self.Title:Show() self:Show() self.encounterID = data.encounterID self.encounterName = data.name BossBanner_BeginAnims(self) if DBM.Options.PlayBBSound then PlaySoundFile(SOUNDKIT.UI_RAID_BOSS_DEFEATED) end elseif data.mode == "LOOT" then self.BannerTop:SetAlpha(1) self.BannerBottom:SetAlpha(1) self.BannerMiddle:SetAlpha(1) self.RightFillagree:SetAlpha(1) self.LeftFillagree:SetAlpha(1) self.BottomFillagree:SetAlpha(1) self.SkullSpikes:SetAlpha(1) self.SkullCircle:SetAlpha(0) self.LootCircle:SetAlpha(1) self.Title:Hide() self.SubTitle:Hide() self:Show() BossBanner_BeginAnims(self, BB_STATE_LOOT_EXPAND) if DBM.Options.PlayBBSound then PlaySoundFile(SOUNDKIT.UI_PERSONAL_LOOT_BANNER) end end end end local function BossBanner_Stop(self) self.AnimIn:Stop() self.AnimSwitch:Stop() self.AnimOut:Stop() self:Hide() end local function BossBanner_IsExclusiveQueued() -- moved up from retail source code, to avoid globals return true end function BossBanner:OnEvent(event, ...) if not DBM.Options.EnableBB then return end DBM:Debug("DBM BossBanner:OnEvent called with the following args--> event: "..event..", vararg: "..tconcat({...}, ", "), 3) if event == "BOSS_KILL" then wipe(self.pendingLoot) local encounterID, name = ... TopBannerManager_Show(self, { encounterID = encounterID, name = name, mode = "KILL" }, BossBanner_IsExclusiveQueued) DBM:Unschedule(BossBanner.ClearEncounterCache) DBM:Schedule(150, BossBanner.ClearEncounterCache, BossBanner) elseif event == "ENCOUNTER_LOOT_RECEIVED" and DBM.Options.PlayBBLoot then -- encounterId, itemID, itemLink, quantity, slot, texture, lootSourceName, lootSourceGUID local encounterID, itemID, itemLink, quantity, slot, texture, lootSourceName = ... -- local _, instanceType = GetInstanceInfo() if encounterID == self.encounterID --[[and (instanceType == "party" or instanceType == "raid")]] then -- add loot to pending list local data = { itemID = itemID, quantity = quantity, slot = slot, lootSourceName = lootSourceName, itemLink = itemLink, texture = texture } -- added texture to circumvent uncached items tinsert(self.pendingLoot, data) -- check state if ( self.animState == BB_STATE_LOOT_INSERT and self.lootShown < BB_MAX_LOOT ) then -- show it now BossBanner.SetAnimState(self, BB_STATE_LOOT_EXPAND) elseif ( not self.animState and self.lootShown == 0 ) then -- banner is not displaying and have not done loot for this encounter yet -- TODO: animate in kill banner TopBannerManager_Show(self, { encounterID = encounterID, name = nil, mode = "LOOT" }, BossBanner_IsExclusiveQueued) end end end end local function BossBanner_OnLoad(self) self.PlayBanner = BossBanner_Play self.StopBanner = BossBanner_Stop self:RegisterEvent("LOOT_OPENED") self.pendingLoot = {} self.baseHeight = self:GetHeight() end local function keyPairsConcat(table, separator) local array = {} for k in pairs(table) do tinsert(array, k) end if not array then return "" end return tconcat(array, separator or ", ") end local function BossBanner_OnEvent(self, event) if event == "LOOT_OPENED" then if self.encounterID then local encounterBossMod = DBM:GetModByName(self.encounterID) -- check if DBM mod exists/is loaded if not encounterBossMod then DBM:Debug("BossBanner: no mod found for encounter "..tostring(self.encounterID)..". Loot fetching denied.", 3) return end -- check if player is in DBM mod mapID/zone local zoneName = GetRealZoneText() local mapID = GetCurrentMapAreaID() > 4 and GetCurrentMapAreaID() or GetCurrentMapContinent() -- workaround to support world bosses mod loading local encounterBossModMapOrZone = encounterBossMod.zones DBM:Debug("BossBanner: Before fetching loot, checking encounter "..tostring(self.encounterID).." zones {"..keyPairsConcat(encounterBossModMapOrZone).."}, for map: "..tostring(mapID).." or zone: "..tostring(zoneName)..". Results are: map-"..tostring(encounterBossModMapOrZone[mapID])..", zone-"..tostring(encounterBossModMapOrZone[zoneName]), 3) if not encounterBossModMapOrZone[mapID] and not encounterBossModMapOrZone[zoneName] then DBM:Debug("BossBanner: Looting outside of zone for encounter "..tostring(self.encounterID)..". Loot fetching denied.", 3) return end DBM:Debug("BossBanner: Loot fetching allowed for encounter "..tostring(self.encounterID), 3) BossBanner_FetchAndSyncLootItems(self) end end end local function BossBanner_OnUpdate(self, elapsed) if not self.animState then return end self.animTimeLeft = self.animTimeLeft - elapsed if self.animState == BB_STATE_LOOT_EXPAND then local newHeight = self.baseHeight + (self.lootShown * BB_EXPAND_HEIGHT) - (max(self.animTimeLeft, 0) / BB_EXPAND_TIME * BB_EXPAND_HEIGHT) self:SetHeight(newHeight) elseif self.animState == BB_STATE_LOOT_INSERT and self.showingTooltip then -- keep it at 2 seconds left self.animTimeLeft = 2 end if ( self.animTimeLeft <= 0 ) then BossBanner.SetAnimState(self, self.animState + 1) if ( not self.animTimeLeft ) then self.animState = nil end end end local function BossBanner_OnMouseDown(...) local frame, button = ... if button == "RightButton" then BossBanner_Stop(frame) wipe(frame.pendingLoot) -- prevent pending loot from refiring BossBanner on my workaround in TopBannerManager_BannerFinished BossBanner_OnAnimOutFinished(frame.AnimOut) -- passing a children frame of BossBanner to reuse code of self:GetParent, without disrupting the retail diff. -- TopBannerManager_BannerFinished(frame) -- disabling this since it does not properly cancel the banner, and will cause previous shown loot to populate lootframes. This is a bug that is present on Retail blizzard code. To work around it, fire BossBanner_OnAnimOutFinished instead. end end BossBanner_OnLoad(BossBanner) -- simulate OnLoad script BossBanner:SetScript("OnEvent", BossBanner_OnEvent) BossBanner:SetScript("OnUpdate", BossBanner_OnUpdate) BossBanner:SetScript("OnMouseDown", BossBanner_OnMouseDown) function BossBanner:ClearEncounterCache() wipe(self.pendingLoot) self.encounterID = nil DBM:Debug("BossBanner:ClearEncounterCache called", 3) end function BossBanner:UpdateStyle() if not DBM.Options.OverrideBBFont then return end BBfont = DBM.Options.BBFont == "standardFont" and standardFont or DBM.Options.BBFont Title:SetFont(BBfont, 30 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) SubTitle:SetFont(BBfont, 16 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then Title:SetShadowOffset(1, -1) SubTitle:SetShadowOffset(1, -1) else Title:SetShadowOffset(0, 0) SubTitle:SetShadowOffset(0, 0) end for _, lootFrame in ipairs(BossBanner.LootFrames) do lootFrame.Count:SetFont(BBfont, 14 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) lootFrame.ItemName:SetFont(BBfont, 14 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) lootFrame.SetName:SetFont(BBfont, 12 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) lootFrame.PlayerName:SetFont(BBfont, 12 + DBM.Options.BBFontSize, DBM.Options.BBFontStyle) if DBM.Options.BBFontShadow then lootFrame.Count:SetShadowOffset(1, -1) lootFrame.ItemName:SetShadowOffset(1, -1) lootFrame.SetName:SetShadowOffset(1, -1) lootFrame.PlayerName:SetShadowOffset(1, -1) else lootFrame.Count:SetShadowOffset(0, 0) lootFrame.ItemName:SetShadowOffset(0, 0) lootFrame.SetName:SetShadowOffset(0, 0) lootFrame.PlayerName:SetShadowOffset(0, 0) end end end function BossBanner:Test(mode) if mode == "KILL" then -- self:OnEvent("BOSS_KILL", "TestMod", "DBM Boss Test") -- goes into queue manager, so not great for testing BossBanner_Play(self, { encounterID = "TestMod", name = "DBM Test Boss", mode = "KILL" }) elseif mode == "LOOT" then self.encounterID = "TestMod" self.encounterName = "DBM Test Boss" self.lootShown = 0 -- how many items the UI is displaying self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 3377, "|cff9d9d9d|Hitem:3377:0:0:0:0:0:0:0:80|h[Canvas Bracers]|h|r", 1, 1, "Interface\\Icons\\INV_Bracer_13","Large Battered Chest", "") -- grey loot (from chest) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 2770, "|cffffffff|Hitem:2770:0:0:0:0:0:0:0:80|h[Copper Ore]|h|r", 4, 2, "Interface\\Icons\\INV_Ore_Copper_01", "Large Battered Chest", "") -- white loot (from chest), with count self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 2977, "|cff1eff00|Hitem:2977:0:0:0:0:0:0:0:80|h[Veteran Armor]|h|r", 1, 3, "Interface\\Icons\\INV_Chest_Chain_09", "Large Battered Chest", "") -- green loot (from chest) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45087, "|cff0070dd|Hitem:45087:0:0:0:0:0:0:0:80|h[Runed Orb]|h|r", 1, 4, "Interface\\Icons\\inv_misc_runedorb_01", "Auriaya", "0xF1300082EB000A6D") -- blue loot (from boss) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45857, "|cffa335ee|Hitem:45857:0:0:0:0:0:0:0:80|h[Archivum Data Disc]|h|r", 1, 5, "Interface\\Icons\\INV_Misc_Platnumdisks", "Runemaster Molgeim", "0xF13000809F00091F") -- purple loot (from boss), quest item self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45466, "|cffa335ee|Hitem:45466:0:0:0:0:0:0:0:80|h[Scale of Fates]|h|r", 1, 6, "Interface\\Icons\\INV_SpiritShard_02", "Cache of Storms", "") -- purple loot (from chest) -- self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45246, "|cffa335ee|Hitem:45246:0:0:0:0:0:0:0:80|h[Golem-Shard Sticker]|h|r", 1, 7, "Interface\\Icons\\INV_Weapon_Shortblade_78", "XT-002 Deconstructor", "0xF15000820D0001AB#") -- purple loot (from boss) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 51172, "|cffa335ee|Hitem:51172:0:0:0:0:0:0:0:80|h[Sanctified Lightsworn Handguards]|h|r", 1, 7, "Interface\\Icons\\inv_gauntlets_85", "Toravon the Ice Watcher", "0xF13000962100000F") -- purple loot (from boss), setitem self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45038, "|cffff8000|Hitem:45038:0:0:0:0:0:0:0:80|h[Fragment of Val'anyr]|h|r", 1, 8, "Interface\\Icons\\INV_Ingot_Titansteel_red", "Cache of Storms", "") -- legendary loot (from chest) else self:OnEvent("BOSS_KILL", "TestMod", "DBM Boss Test") self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 3377, "|cff9d9d9d|Hitem:3377:0:0:0:0:0:0:0:80|h[Canvas Bracers]|h|r", 1, 1, "Interface\\Icons\\INV_Bracer_13","Large Battered Chest", "") -- grey loot (from chest) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 2770, "|cffffffff|Hitem:2770:0:0:0:0:0:0:0:80|h[Copper Ore]|h|r", 4, 2, "Interface\\Icons\\INV_Ore_Copper_01", "Large Battered Chest", "") -- white loot (from chest), with count self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 2977, "|cff1eff00|Hitem:2977:0:0:0:0:0:0:0:80|h[Veteran Armor]|h|r", 1, 3, "Interface\\Icons\\INV_Chest_Chain_09", "Large Battered Chest", "") -- green loot (from chest) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45087, "|cff0070dd|Hitem:45087:0:0:0:0:0:0:0:80|h[Runed Orb]|h|r", 1, 4, "Interface\\Icons\\inv_misc_runedorb_01", "Auriaya", "0xF1300082EB000A6D") -- blue loot (from boss) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45857, "|cffa335ee|Hitem:45857:0:0:0:0:0:0:0:80|h[Archivum Data Disc]|h|r", 1, 5, "Interface\\Icons\\INV_Misc_Platnumdisks", "Runemaster Molgeim", "0xF13000809F00091F") -- purple loot (from boss), quest item self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45466, "|cffa335ee|Hitem:45466:0:0:0:0:0:0:0:80|h[Scale of Fates]|h|r", 1, 6, "Interface\\Icons\\INV_SpiritShard_02", "Cache of Storms", "") -- purple loot (from chest) -- self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45246, "|cffa335ee|Hitem:45246:0:0:0:0:0:0:0:80|h[Golem-Shard Sticker]|h|r", 1, 7, "Interface\\Icons\\INV_Weapon_Shortblade_78", "XT-002 Deconstructor", "0xF15000820D0001AB#") -- purple loot (from boss) self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 51172, "|cffa335ee|Hitem:51172:0:0:0:0:0:0:0:80|h[Sanctified Lightsworn Handguards]|h|r", 1, 7, "Interface\\Icons\\inv_gauntlets_85", "Toravon the Ice Watcher", "0xF13000962100000F") -- purple loot (from boss), setitem self:OnEvent("ENCOUNTER_LOOT_RECEIVED", "TestMod", 45038, "|cffff8000|Hitem:45038:0:0:0:0:0:0:0:80|h[Fragment of Val'anyr]|h|r", 1, 8, "Interface\\Icons\\INV_Ingot_Titansteel_red", "Cache of Storms", "") -- legendary loot (from chest) end end ================================================ FILE: DBM-Core/DBM-BossHealth.lua ================================================ --------------- -- Globals -- --------------- DBM.BossHealth = {} ------------- -- Locals -- ------------- local L = DBM_CORE_L local bossHealth = DBM.BossHealth local bars = {} local barCache = {} local updateFrame local getBarId local updateBar local anchor local header local dropdownFrame local AceTimer = LibStub("AceTimer-3.0") --local sortingEnabled local tremove, tinsert = table.remove, table.insert do local id = 0 function getBarId() id = id + 1 return id end end -- checks if a given value is in an array -- returns true if it finds the value, false otherwise local function checkEntry(t, val) for _, v in ipairs(t) do if v == val then return true end end return false end ------------ -- Menu -- ------------ local menu menu = { { text = L.RANGECHECK_LOCK, checked = false, -- requires DBM.Options which is not available yet func = function() menu[1].checked = not menu[1].checked DBM.Options.HealthFrameLocked = menu[1].checked end }, { text = L.BOSSHEALTH_HIDE_FRAME, notCheckable = true, func = function() bossHealth:Hide() end } } ----------------------- -- Script Handlers -- ----------------------- local function onMouseDown(self, button) if button == "LeftButton" and not DBM.Options.HealthFrameLocked then anchor.moving = true anchor:StartMoving() end end local function onMouseUp(self, button) anchor.moving = nil anchor:StopMovingOrSizing() local point, _, _, x, y = anchor:GetPoint(1) DBM.Options.HPFramePoint = point DBM.Options.HPFrameX = x DBM.Options.HPFrameY = y if button == "RightButton" then EasyMenu(menu, dropdownFrame, "cursor", nil, nil, "MENU") end end local onHide = onMouseUp ----------------- -- Apply Style -- ----------------- local function updateBarStyle(bar, id) bar:ClearAllPoints() if DBM.Options.HealthFrameGrowUp then bar:SetPoint("BOTTOM", bars[id - 1] or anchor, "TOP", 0, 0) else bar:SetPoint("TOP", bars[id - 1] or anchor, "BOTTOM", 0, 0) end local barborder = _G[bar:GetName().."BarBorder"] local barbar = _G[bar:GetName().."Bar"] local width = DBM.Options.HealthFrameWidth if width < 175 then -- these health frames really suck :( barbar:ClearAllPoints() barbar:SetPoint("CENTER", barbar:GetParent(), "CENTER", -6, 0) bar:SetWidth(DBM.Options.HealthFrameWidth) barborder:SetWidth(DBM.Options.HealthFrameWidth * 0.99) barbar:SetWidth(DBM.Options.HealthFrameWidth * 0.95) elseif width >= 225 then barbar:ClearAllPoints() barbar:SetPoint("CENTER", barbar:GetParent(), "CENTER", 5, 0) bar:SetWidth(DBM.Options.HealthFrameWidth) barborder:SetWidth(DBM.Options.HealthFrameWidth * 0.995) barbar:SetWidth(DBM.Options.HealthFrameWidth * 0.965) else bar:SetWidth(DBM.Options.HealthFrameWidth) barborder:SetWidth(DBM.Options.HealthFrameWidth * 0.99) barbar:SetWidth(DBM.Options.HealthFrameWidth * 0.95) end end ----------------------- -- Create the Frame -- ----------------------- local function createFrame(self) anchor = CreateFrame("Frame", nil, UIParent) anchor:SetWidth(60) anchor:SetHeight(10) anchor:SetMovable(1) anchor:EnableMouse(1) anchor:SetPoint(DBM.Options.HPFramePoint, UIParent, DBM.Options.HPFramePoint, DBM.Options.HPFrameX, DBM.Options.HPFrameY) header = anchor:CreateFontString(nil, "ARTWORK", "GameFontNormalSmall") header:SetPoint("BOTTOM", anchor, "BOTTOM") --anchor:SetScript("OnUpdate", updateFrame) anchor:SetScript("OnMouseDown", onMouseDown) anchor:SetScript("OnMouseUp", onMouseUp) anchor:SetScript("OnHide", onHide) dropdownFrame = CreateFrame("Frame", "DBMBossHealthDropdown", anchor, "UIDropDownMenuTemplate") menu[1].checked = DBM.Options.HealthFrameLocked end local function createBar(self, name, ...) -- the vararg will also contain the name, see method AddBoss for details (TODO: this should be handled earlier, seriously...) local bar = tremove(barCache, #barCache) or CreateFrame("Frame", "DBM_BossHealth_Bar_"..getBarId(), anchor, "DBMBossHealthBarTemplate") bar:Show() local bartext = _G[bar:GetName().."BarName"] local barborder = _G[bar:GetName().."BarBorder"] -- local barbar = _G[bar:GetName().."Bar"] barborder:SetScript("OnMouseDown", onMouseDown) barborder:SetScript("OnMouseUp", onMouseUp) barborder:SetScript("OnHide", onHide) if select("#", ...) <= 2 then -- 2 as the name is in the vararg bar.id = ... else bar.id = {...} bar.id[#bar.id] = nil -- we don't want the name in here end bar.hidden = false bar:ClearAllPoints() bartext:SetText(name or "") bar.nameused = name and true or nil if type(bar.id) == "function" then local health, icon = bar.id() updateBar(bar, health, icon, true) else updateBar(bar, 100) end return bar end ------------------ -- Bar Update -- ------------------ function updateBar(bar, percent, icon, dontShowDead, name) if not percent then return end local barName = bar:GetName() local bartimer = _G[barName .. "BarTimer"] local barbar = _G[barName .. "Bar"] local barIcon = _G[barName .. "BarIcon"] local bartext = _G[barName .. "BarName"] if percent >= 1 then bartimer:SetText(math.floor(percent).."%") barbar:SetValue(percent) barbar:SetStatusBarColor((100 - percent) / 100, percent/100, 0) bar.value = percent elseif (bar.value == 0) or (percent >= 0) then if percent == 0 or percent == -1 then bartimer:SetText(dontShowDead and "0%" or DEAD) else bartimer:SetText("0%") end barbar:SetValue(0) barbar:SetStatusBarColor(0, 0, 0) bar.value = 0 else--can't detect health. show unknown if not bar.value or bar.value >= 1 then -- bartimer:SetText(DBM_COMMON_L.UNKNOWN) -- don't update when no target else bartimer:SetText(dontShowDead and "0%" or DEAD) end end if not icon or type(icon) ~= "number" or icon < 1 or icon > 8 then barIcon:Hide() else barIcon:Show() barIcon:SetTexCoord((icon - 1) % 4 / 4, (icon - 1) % 4 / 4 + 0.25, icon < 5 and 0 or 0.25, icon < 5 and 0.25 or 0.5) end if name and not bar.nameused then bartext:SetText(name) end end do function updateFrame(self) -- if #bars > DBM.Options.HPFrameMaxEntries then -- sortingEnabled = true -- end -- if sortingEnabled then -- table.sort(bars, compareBars) -- end for _, v in ipairs(bars) do -- if i > DBM.Options.HPFrameMaxEntries then -- v:Hide() -- else -- v:Show() -- end if type(v.id) == "number" then -- creature ID local health, id, name = DBM:GetBossHP(v.id) if health then updateBar(v, health, GetRaidTargetIndex(id), nil, name) else updateBar(v, -1) end elseif type(v.id) == "string" then -- UnitID or GUID local health, id, name if v.id:match("boss") then health, id, name = DBM:GetBossHPByUnitID(v.id) else health, id, name = DBM:GetBossHPByGUID(v.id) end if health then updateBar(v, health, GetRaidTargetIndex(id), nil, name) else updateBar(v, -1) end elseif type(v.id) == "table" then -- multi boss -- TODO: it would be more efficient to scan all party/raid members for all IDs instead of going over all raid members n times -- this is especially important for the cache for _, id in ipairs(v.id) do local health = DBM:GetBossHP(id) if health then updateBar(v, health) break end end elseif type(v.id) == "function" then -- generic bars local health, icon = v.id() updateBar(v, health, icon, true) end end end end ----------------------- -- General Methods -- ----------------------- function bossHealth:Show(name) if not anchor then createFrame(bossHealth) end header:SetText(name) anchor:Show() bossHealth:Clear() updateFrame(bossHealth) if not bossHealth.ticker then bossHealth.ticker = AceTimer:ScheduleRepeatingTimer(function() updateFrame(bossHealth) end, 0.5) end end function bossHealth:SetHeaderText(name) if not anchor then return end header:SetText(name) end function bossHealth:Clear() if not anchor or not anchor:IsShown() then return end for i = #bars, 1, -1 do local bar = bars[i] bar:Hide() bar:ClearAllPoints() barCache[#barCache + 1] = bar bars[i] = nil end -- sortingEnabled = false end function bossHealth:Hide() if anchor then if bossHealth.ticker then AceTimer:CancelTimer(bossHealth.ticker) bossHealth.ticker = nil end anchor:Hide() end end function bossHealth:IsShown() return anchor and anchor:IsShown() end -- HACK to support the old API cId, name. TODO: change API to name, cId and update _all_ boss mods (or: add new method AddSharedHealthBoss or something but this would also be ugly...) (or: use addBoss({cId1, cId2, ...}, name) for multi-cId bosses but that's just ugly) -- for now: using this ugly code here instead of ugly code in all boss mods that make use of multi-cId health bars -- hack to support shared health bosses local function addBoss(self, name, ...) -- name, cId1, cId2, ..., cIdN, name if not anchor or not anchor:IsShown() then return end tinsert(bars, createBar(self, name, ...)) updateBarStyle(bars[#bars], #bars) end -- the signature of this method is (cId1, cId2, ..., cIdN, name) for compatibility reasons (used to be cId, name) function bossHealth:AddBoss(...) -- copy the name to the front of the arg list -- note: name is now twice in the arg list but we can't really fix that in an efficient way (this is handled in createBar() if select("#", ...) == 1 then return addBoss(self, nil, ...) else return addBoss(self, select(select("#", ...), ...), ...) end end -- just pass any of the creature IDs for shared health bosses -- also accepts the name of the bar for generic bars (i.e. id == function) as you probably don't have access to the specific closure when removing something later function bossHealth:RemoveBoss(cId) if not anchor or not anchor:IsShown() then return end for i = #bars, 1, -1 do local bar = bars[i] if bar.id == cId or type(bar.id) == "table" and checkEntry(bar.id, cId) or type(bar.id) == "function" and (_G[bar:GetName().."BarName"]):GetText() == cId then if bars[i + 1] then local next = bars[i + 1] if DBM.Options.HealthFrameGrowUp then next:SetPoint("BOTTOM", bars[i - 1] or anchor, "TOP", 0, 0) else next:SetPoint("TOP", bars[i - 1] or anchor, "BOTTOM", 0, 0) end end bar:Hide() bar:ClearAllPoints() barCache[#barCache + 1] = bar tremove(bars, i) end end end --workaround for stuff function bossHealth:RemoveLowest() if not anchor or not anchor:IsShown() then return end local lowest = 100 local index for i = #bars, 1, -1 do local bar = bars[i] if bar.value < lowest then lowest = bar.value index = bar.id end end for i = #bars, 1, -1 do local bar = bars[i] if bar.id == index or type(bar.id) == "table" and checkEntry(bar.id, index) or type(bar.id) == "function" and (_G[bar:GetName().."BarName"]):GetText() == index then if bars[i + 1] then local next = bars[i + 1] if DBM.Options.HealthFrameGrowUp then next:SetPoint("BOTTOM", bars[i - 1] or anchor, "TOP", 0, 0) else next:SetPoint("TOP", bars[i - 1] or anchor, "BOTTOM", 0, 0) end end bar:Hide() bar:ClearAllPoints() barCache[#barCache + 1] = bar tremove(bars, i) end end end -- any ID for shared health bosses function bossHealth:HasBoss(id) if not anchor or not anchor:IsShown() then return end for _, bar in ipairs(bars) do if bar.id == id or type(bar.id) == "table" and checkEntry(bar.id, id) then return true end end return false end -- renames an entry in the health frame -- just pass any of the creature IDs for shared health bosses function bossHealth:RenameBoss(cId, newName) if not anchor or not anchor:IsShown() then return end -- TODO: the entries should still be added even if the frame was never created if someone enables the frame mid-combat... for i = #bars, 1, -1 do local bar = bars[i] if bar.id == cId or type(bar.id) == "table" and checkEntry(bar.id, cId) then (_G[bar:GetName().."BarName"]):SetText(newName) end end end function bossHealth:UpdateSettings() if not anchor then createFrame(bossHealth) end anchor:SetPoint(DBM.Options.HPFramePoint, UIParent, DBM.Options.HPFramePoint, DBM.Options.HPFrameX, DBM.Options.HPFrameY) for i, v in ipairs(bars) do updateBarStyle(v, i) end end function bossHealth:Update() if not anchor or not anchor:IsShown() then return end updateFrame(self) end ================================================ FILE: DBM-Core/DBM-BossHealth.xml ================================================ self:SetMinMaxValues(0, 100) ================================================ FILE: DBM-Core/DBM-Core.lua ================================================ -- ********************************************************* -- ** Deadly Boss Mods - Core ** -- ** http://www.deadlybossmods.com ** -- ********************************************************* -- -- This addon is written and copyrighted by: -- * Paul Emmerich (Tandanu @ EU-Aegwynn) (DBM-Core) -- * Martin Verges (Nitram @ EU-Azshara) (DBM-GUI) -- * Adam Williams (Omegal @ US-Whisperwind) (Primary boss mod author & DBM maintainer) -- -- The localizations are written by: -- * enGB/enUS: Omegal Twitter @MysticalOS -- * deDE: Ebmor -- * ruRU: TOM_RUS https://curseforge.com/profiles/TOM_RUS/ -- * zhTW: Whyv ultrashining@gmail.com -- * koKR: Elnarfim --- -- * zhCN: Mini Dragon projecteurs@gmail.com -- -- -- Special thanks to: -- * Arta -- * Tennberg (a lot of fixes in the enGB/enUS localization) -- * nBlueWiz (a lot of previous fixes in the koKR localization as well as boss mod work) Contact: everfinale@gmail.com -- -- -- The code of this addon is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License. (see license.txt) -- All included textures and sounds are copyrighted by their respective owners, license information for these media files can be found in the modules that make use of them. -- -- -- You are free: -- * to Share - to copy, distribute, display, and perform the work -- * to Remix - to make derivative works -- Under the following conditions: -- * Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). (A link to http://www.deadlybossmods.com is sufficient) -- * Noncommercial. You may not use this work for commercial purposes. -- * Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. -- local _, private = ... local wowVersionString, wowBuild, _, wowTOC = GetBuildInfo() local testBuild = false -- no API for 3.3.5a, just assume false since it's a final build for private servers local DBMPrefix = "DBMv4" private.DBMPrefix = DBMPrefix local L = DBM_CORE_L local CL = DBM_COMMON_L ------------------------------- -- Globals/Default Options -- ------------------------------- local function releaseDate(year, month, day, hour, minute, second) hour = hour or 0 minute = minute or 0 second = second or 0 return second + minute * 10^2 + hour * 10^4 + day * 10^6 + month * 10^8 + year * 10^10 end local function parseCurseDate(date) date = tostring(date) if #date == 13 then -- support for broken curse timestamps: leading 0 in hours is missing... date = date:sub(1, 8) .. "0" .. date:sub(9, #date) end local year, month, day, hour, minute, second = tonumber(date:sub(1, 4)), tonumber(date:sub(5, 6)), tonumber(date:sub(7, 8)), tonumber(date:sub(9, 10)), tonumber(date:sub(11, 12)), tonumber(date:sub(13, 14)) if year and month and day and hour and minute and second then return releaseDate(year, month, day, hour, minute, second) end end local function showRealDate(curseDate) curseDate = tostring(curseDate) local year, month, day, hour, minute, second = curseDate:sub(1, 4), curseDate:sub(5, 6), curseDate:sub(7, 8), curseDate:sub(9, 10), curseDate:sub(11, 12), curseDate:sub(13, 14) if year and month and day and hour and minute and second then return year.."/"..month.."/"..day.." "..hour..":"..minute..":"..second end end local function currentFullDate() local datetable = date("*t") return releaseDate(datetable.year, datetable.month, datetable.day, datetable.hour, datetable.min, datetable.sec) end DBM = { Revision = parseCurseDate("20251102143218"), DisplayVersion = "10.1.13 alpha", -- the string that is shown as version ReleaseRevision = releaseDate(2024, 07, 20) -- the date of the latest stable version that is available, optionally pass hours, minutes, and seconds for multiple releases in one day } local fakeBWVersion = 7558 local bwVersionResponseString = "%d" DBM.HighestRelease = DBM.ReleaseRevision --Updated if newer version is detected, used by update nags to reflect critical fixes user is missing on boss pulls -- support for github downloads, which doesn't support curse keyword expansion -- just use the latest release revision if not DBM.Revision then DBM.Revision = DBM.ReleaseRevision end function DBM:ShowRealDate(curseDate) return showRealDate(curseDate) end function DBM:ReleaseDate(year, month, day, hour, minute, second) return releaseDate(year, month, day, hour, minute, second) end function DBM:GetTOC() return wowTOC, wowVersionString, wowBuild end -- dual profile setup local _, playerClass = UnitClass("player") DBM_UseDualProfile = false -- Having this as true requires user to know how mod profiles work and auto-generate new ones for new specs -- if playerClass == "MAGE" or playerClass == "WARLOCK" or playerClass == "ROGUE" or playerClass == "HUNTER" then -- DBM_UseDualProfile = false -- end DBM_CharSavedRevision = 2 --Hard code STANDARD_TEXT_FONT since skinning mods like to taint it (or worse, set it to nil, wtf?) local standardFont if LOCALE_koKR then standardFont = "Fonts\\2002.TTF" elseif LOCALE_zhCN then standardFont = "Fonts\\ARKai_T.ttf" elseif LOCALE_zhTW then standardFont = "Fonts\\blei00d.TTF" elseif LOCALE_ruRU then standardFont = "Fonts\\FRIZQT___CYR.TTF" else standardFont = "Fonts\\FRIZQT__.TTF" end DBM.DefaultOptions = { WarningColors = { {r = 0.41, g = 0.80, b = 0.94}, -- Color 1 - #69CCF0 - Turqoise {r = 0.95, g = 0.95, b = 0.00}, -- Color 2 - #F2F200 - Yellow {r = 1.00, g = 0.50, b = 0.00}, -- Color 3 - #FF8000 - Orange {r = 1.00, g = 0.10, b = 0.10}, -- Color 4 - #FF1A1A - Red }, RaidWarningSound = "Sound\\Doodad\\BellTollNightElf.wav", SpecialWarningSound = "Sound\\Spells\\PVPFlagTaken.wav", SpecialWarningSound2 = "Sound\\Creature\\AlgalonTheObserver\\UR_Algalon_BHole01.wav", SpecialWarningSound3 = "Interface\\AddOns\\DBM-Core\\sounds\\AirHorn.ogg", SpecialWarningSound4 = "Sound\\Creature\\HoodWolf\\HoodWolfTransformPlayer01.wav", SpecialWarningSound5 = "Sound\\Creature\\Loathstare\\Loa_Naxx_Aggro02.wav", ModelSoundValue = "Short", CountdownVoice = "Corsica", CountdownVoice2 = "Kolt", CountdownVoice3 = "Smooth", PullVoice = "Corsica", ChosenVoicePack2 = (GetLocale() == "enUS" or GetLocale() == "enGB") and "VEM" or "None", VPReplacesAnnounce = true, VPReplacesSA1 = true, VPReplacesSA2 = true, VPReplacesSA3 = true, VPReplacesSA4 = true, VPReplacesGTFO = true, VPReplacesCustom = false, AlwaysPlayVoice = false, VPDontMuteSounds = false, EventSoundVictory2 = "None", --"Interface\\AddOns\\DBM-Core\\sounds\\Victory\\SmoothMcGroove_Fanfare.ogg", EventSoundWipe = "None", EventSoundPullTimer = "None", EventSoundEngage2 = "None", EventSoundMusic = "None", EventSoundDungeonBGM = "None", EventSoundMusicCombined = false, EventDungMusicMythicFilter = true, EventMusicMythicFilter = true, Enabled = true, ShowWarningsInChat = true, ShowFakedRaidWarnings = false, ShowSWarningsInChat = true, WarningIconLeft = true, WarningIconRight = true, WarningIconChat = true, WarningAlphabetical = true, WarningShortText = true, StripServerName = true, ShowAllVersions = true, ShowReminders = true, ShowPizzaMessage = true, ShowEngageMessage = true, ShowDefeatMessage = true, ShowGuildMessages = true, ShowGuildMessagesPlus = false, AutoRespond = true, EnableWBSharing = true, WhisperStats = false, DisableStatusWhisper = false, DisableGuildStatus = false, DisableRaidIcons = false, DisableChatBubbles = false, OverrideBossAnnounce = false, OverrideBossTimer = false, OverrideBossIcon = false, OverrideBossSay = false, NoAnnounceOverride = true, NoTimerOverridee = true, ReplaceMyConfigOnOverride = false, HideBossEmoteFrame2 = false, SWarningAlphabetical = true, SWarnNameInNote = true, CustomSounds = 0, SpamBlockRaidWarning = true, SpamBlockBossWhispers = false, FixCLEUOnCombatStart = true, AlwaysShowHealthFrame = false, ShowBigBrotherOnCombatStart = false, FilterTankSpec = true, FilterBTargetFocus = true, FilterBInterruptCooldown = true, FilterBInterruptHealer = false, FilterInterruptNoteName = false, FilterTTargetFocus = true, FilterTInterruptCooldown = true, FilterTInterruptHealer = false, FilterDispel = true, FilterTrashWarnings2 = true, FilterVoidFormSay = true, --FilterSelfHud = true, AutologBosses = false, AdvancedAutologBosses = false, RecordOnlyBosses = false, DoNotLogLFG = true, LogCurrentMythicRaids = true, LogCurrentRaids = true, LogCurrentMPlus = true, LogCurrentMythicZero = false, LogCurrentHeroic = false, LogCurrentNormal = false, LogTrivialRaids = false, LogTWRaids = false, LogTrivialDungeons = false, LogTWDungeons = false, UseSoundChannel = "Master", LFDEnhance = true, WorldBossNearAlert = false, RLReadyCheckSound = true, AFKHealthWarning = false, AutoReplySound = true, HideObjectivesFrame = false, --true, HideGarrisonToasts = true, HideGuildChallengeUpdates = true, HideTooltips = false, DisableSFX = false, EnableModels = true, GUIWidth = 800, GUIHeight = 600, GroupOptionsBySpell = true, GroupOptionsExcludeIcon = false, AutoExpandSpellGroups = false, --ShowSpellDescWhenExpanded = false, RangeFrameFrames = "radar", RangeFrameUpdates = "Fast", RangeFramePoint = "CENTER", RangeFrameX = 50, RangeFrameY = -50, RangeFrameSound1 = "none", RangeFrameSound2 = "none", RangeFrameLocked = false, RangeFrameRadarPoint = "CENTER", RangeFrameRadarX = 100, RangeFrameRadarY = -100, HPFramePoint = "CENTER", HPFrameX = -150, HPFrameY = 300, HPFrameMaxEntries = 5, InfoFramePoint = "CENTER", InfoFrameX = 75, InfoFrameY = -75, InfoFrameShowSelf = false, InfoFrameLines = 0, InfoFrameCols = 0, InfoFrameLocked = false, InfoFrameFont = "standardFont", InfoFrameFontSize = 12, InfoFrameFontStyle = "None", WarningDuration2 = 5, WarningPoint = "CENTER", WarningX = 0, WarningY = 260, WarningFont = "standardFont", WarningFontSize = 20, WarningFontStyle = "None", WarningFontShadow = true, SpecialWarningDuration2 = 1.5, SpecialWarningPoint = "CENTER", SpecialWarningX = 0, SpecialWarningY = 75, SpecialWarningFont = "standardFont", SpecialWarningFontSize2 = 35, SpecialWarningFontStyle = "THICKOUTLINE", SpecialWarningFontShadow = false, SpecialWarningIcon = true, SpecialWarningShortText = true, SpecialWarningFontCol = {1.0, 0.7, 0.0},--Yellow, with a tint of orange SpecialWarningFlashCol1 = {1.0, 1.0, 0.0},--Yellow SpecialWarningFlashCol2 = {1.0, 0.5, 0.0},--Orange SpecialWarningFlashCol3 = {1.0, 0.0, 0.0},--Red SpecialWarningFlashCol4 = {1.0, 0.0, 1.0},--Purple SpecialWarningFlashCol5 = {0.2, 1.0, 1.0},--Tealish SpecialWarningFlashDura1 = 0.3, SpecialWarningFlashDura2 = 0.4, SpecialWarningFlashDura3 = 1, SpecialWarningFlashDura4 = 0.7, SpecialWarningFlashDura5 = 1, SpecialWarningFlashAlph1 = 0.3, SpecialWarningFlashAlph2 = 0.3, SpecialWarningFlashAlph3 = 0.4, SpecialWarningFlashAlph4 = 0.4, SpecialWarningFlashAlph5 = 0.5, SpecialWarningFlash1 = false, SpecialWarningFlash2 = false, SpecialWarningFlash3 = false, SpecialWarningFlash4 = false, SpecialWarningFlash5 = false, SpecialWarningFlashCount1 = 1, SpecialWarningFlashCount2 = 1, SpecialWarningFlashCount3 = 3, SpecialWarningFlashCount4 = 2, SpecialWarningFlashCount5 = 3, -- SpecialWarningVibrate1 = false, -- SpecialWarningVibrate2 = false, -- SpecialWarningVibrate3 = true, -- SpecialWarningVibrate4 = true, -- SpecialWarningVibrate5 = true, SWarnClassColor = true, HealthFrameGrowUp = false, HealthFrameLocked = false, HealthFrameWidth = 200, ArrowPosX = 0, ArrowPosY = -150, ArrowPoint = "TOP", -- global boss mod settings (overrides mod-specific settings for some options) DontShowBossAnnounces = false, DontShowTargetAnnouncements = false, DontShowSpecialWarningText = false, DontShowSpecialWarningFlash = false, -- DontDoSpecialWarningVibrate = false, DontPlaySpecialWarningSound = false, DontPlayTrivialSpecialWarningSound = true, SpamSpecInformationalOnly = false, SpamSpecRoledispel = false, SpamSpecRoleinterrupt = false, SpamSpecRoledefensive = false, SpamSpecRoletaunt = false, SpamSpecRolesoak = false, SpamSpecRolestack = false, SpamSpecRoleswitch = false, SpamSpecRolegtfo = false, DontShowBossTimers = false, DontShowTrashTimers = false, DontShowEventTimers = false, DontShowUserTimers = false, DontShowFarWarnings = true, DontSetIcons = false, DontRestoreIcons = false, DontShowRangeFrame = false, DontRestoreRange = false, DontShowInfoFrame = false, DontShowHudMap2 = false, DontShowNameplateIcons = false, DontSendBossGUIDs = false, DontShowTimersWithNameplates = true, UseNameplateHandoff = true, NPAuraSize = 40, DontPlayCountdowns = false, DontSendYells = false, BlockNoteShare = false, DontShowPT2 = false, DontShowPTCountdownText = false, DontPlayPTCountdown = false, DontShowPTText = false, DontShowPTNoID = false, PTCountThreshold2 = 5, PlayTT = true, PlayTTCountdown = false, PlayTTCountdownFinished = false, EnableBB = true, PlayBBLoot = true, PlayBBSound = false, OverrideBBFont = false, BBFont = "standardFont", BBFontStyle = "OUTLINE", BBFontShadow = true, BBFontSize = 0, LatencyThreshold = 250, BigBrotherAnnounceToRaid = false, SettingsMessageShown = false, NewsMessageShown2 = 1,--Apparently variable without 2 can still exist in some configs (config cleanup of no longer existing variables not working?) AlwaysShowSpeedKillTimer2 = false, ShowRespawn = true, ShowQueuePop = true, HelpMessageVersion = 3, MoviesSeen = {}, MovieFilter2 = "Never", LastRevision = 0, DebugMode = false, DebugLevel = 1, RoleSpecAlert = true, CheckGear = true, WorldBossAlert = false, WorldBuffAlert = false, BadTimerAlert = false, BadIDAlert = false, AutoAcceptFriendInvite = false, AutoAcceptGuildInvite = false, FakeBWVersion = false, AITimer = true, ShortTimerText = true, ChatFrame = "DEFAULT_CHAT_FRAME", CoreSavedRevision = 1, SilentMode = false, ReportRecount = false, ReportSkada = false, PerCharacterSettings = false, } DBM.Mods = {} DBM.ModLists = {} local checkDuplicateObjects = {} ------------------------ -- Global Identifiers -- ------------------------ DBM_DISABLE_ZONE_DETECTION = newproxy(false) DBM_OPTION_SPACER = newproxy(false) -------------- -- Privates -- -------------- private.modSyncSpam = {} private.updateFunctions = {} --Raid Leader Disable variables private.statusGuildDisabled, private.statusWhisperDisabled, private.raidIconsDisabled, private.chatBubblesDisabled = false, false, false, false -------------- -- Locals -- -------------- local bossModPrototype = {} local mainFrame, unitMainFrame = CreateFrame("Frame", "DBMMainFrame"), CreateFrame("Frame", "DBMUnitMainFrame") local playerName = UnitName("player") local playerLevel = UnitLevel("player") local playerRealm = GetRealmName() --local lastCombatStarted = GetTime() local chatPrefix = " " local chatPrefixShort = "<" .. L.DBM .. "> " local usedProfile = "Default" local dbmIsEnabled = true private.dbmIsEnabled = dbmIsEnabled -- Table variables local newerVersionPerson, cSyncSender, iconSetRevision, iconSetPerson, loadcIds, inCombat, oocBWComms, combatInfo, bossIds, raid, autoRespondSpam, queuedBattlefield, bossHealth, bossHealthuIdCache, lastBossEngage, lastBossDefeat = {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} -- False variables local voiceSessionDisabled, targetEventsRegistered, combatInitialized, healthCombatInitialized, watchFrameRestore, bossuIdFound, timerRequestInProgress, encounterInProgress = false, false, false, false, false, false, false, false -- Nil variables local currentModProfileScope, currentModProfileName, currentSpecID, currentSpecName, currentSpecGroup, pformat, loadOptions, checkWipe, checkBossHealth, checkCustomBossHealth, fireEvent, LastInstanceType, breakTimerStart, AddMsg, delayedFunction, handleSync, savedDifficulty, difficultyText, difficultyIndex, encounterDifficulty, encounterDifficultyText, encounterDifficultyIndex, lastGroupLeader -- 0 variables local dbmToc, cSyncReceived, showConstantReminder, updateNotificationDisplayed, LastGroupSize = 0, 0, 0, 0 local LastInstanceMapID = -1 local LastInstanceZoneName = "" local SWFilterDisabled = 12 local iconFolder = "Interface\\AddOns\\DBM-Core\\icon\\" local bannedMods = { -- a list of "banned" (meaning they are replaced by another mod or discontinued). These mods will not be loaded by DBM (and they wont show up in the GUI) "DBM_API", "DBM-Outlands", "DBM-Battlegrounds", --replaced by DBM-PvP "DBM-Profiles" -- replaced by inline module since 7.00 } --[InstanceID]={level,zoneType} --zoneType: 1 = outdoor, 2 = dungeon, 3 = raid local instanceDifficultyBylevel = { --World [27]={60, 1},[35]={60, 1},[44]={60, 1},[122]={60, 1},[182]={60, 1},--Eastern Kingdoms and Kalimdor world bosses. [162]={70, 1},[466]={70, 1},[474]={70, 1},[482]={70, 1},--Outlands World Bosses --Raids [718]={60, 3},[767]={60, 3},[756]={60, 3},[697]={60, 3},[698]={60, 3},--Classic Raids [797]={70, 3},[776]={70, 3},[800]={70, 3},[777]={70, 3},[780]={70, 3},[781]={70, 3},[790]={70, 3},[783]={70, 3},[782]={70, 3},--BC Raids [532]={80, 3},[610]={80, 3},[544]={80, 3},[528]={80, 3},[605]={80, 3},[536]={80, 3},[719]={80, 3},[530]={80, 3},[533]={80, 3},--Wrath Raids --Dungeons [700]={45, 2},[681]={18, 2},[751]={52, 2},[766]={60, 2},[764]={60, 2},[705]={60, 2},[722]={60, 2},[687]={54, 2},[763]={45, 2},[761]={47, 2},[688]={60, 2},[692]={34, 2},[693]={52, 2},[689]={32, 2},[762]={42, 2},[750]={27, 2},[757]={25, 2},[691]={32, 2},[765]={30, 2},--Classic Dungeons [711]={70, 2},[723]={70, 2},[724]={70, 2},[725]={70, 2},[726]={70, 2},[727]={70, 2},[728]={70, 2},[729]={70, 2},[730]={70, 2},[731]={70, 2},[732]={70, 2},[733]={70, 2},[734]={70, 2},[735]={70, 2},[798]={70, 2},[799]={70, 2},--BC Dungeons [523]={80, 2},[534]={80, 2},[522]={80, 2},[535]={80, 2},[531]={80, 2},[526]={80, 2},[527]={80, 2},[521]={80, 2},[529]={80, 2},[524]={80, 2},[525]={80, 2},[537]={80, 2},[603]={80, 2},[602]={80, 2},[604]={80, 2},[543]={80, 2},--Wrath Dungeons } ----------------- -- Libraries -- ----------------- local LibStub = _G["LibStub"] local AceTimer = LibStub("AceTimer-3.0") local LGT = LibStub("LibGroupTalents-1.0", true) -------------------------------------------------------- -- Cache frequently used global variables in locals -- -------------------------------------------------------- local DBM = DBM -- these global functions are accessed all the time by the event handler -- so caching them is worth the effort local ipairs, pairs, next = ipairs, pairs, next local tonumber, tostring = tonumber, tostring local tinsert, tremove, twipe, tsort, tconcat = table.insert, table.remove, table.wipe, table.sort, table.concat local type, select = type, select local GetTime = GetTime local bband = bit.band local mabs, floor, mhuge, mmin, mmax, mrandom = math.abs, math.floor, math.huge, math.min, math.max, math.random local GetNumGroupMembers, GetNumSubgroupMembers, GetNumPartyMembers, GetNumRaidMembers, GetRaidRosterInfo = private.GetNumGroupMembers, private.GetNumSubgroupMembers, GetNumPartyMembers, GetNumRaidMembers, GetRaidRosterInfo -- with compat.lua local UnitName, GetUnitName = UnitName, GetUnitName local IsInRaid, IsInGroup, IsInInstance, IsOutdoors = private.IsInRaid, private.IsInGroup, IsInInstance, IsOutdoors -- with compat.lua local UnitAffectingCombat, InCombatLockdown, IsFalling, UnitPlayerOrPetInRaid, UnitPlayerOrPetInParty = UnitAffectingCombat, InCombatLockdown, IsFalling, UnitPlayerOrPetInRaid, UnitPlayerOrPetInParty local UnitGUID, UnitHealth, UnitHealthMax, UnitBuff, UnitDebuff, UnitAura = UnitGUID, UnitHealth, UnitHealthMax, UnitBuff, UnitDebuff, UnitAura local UnitExists, UnitIsDead, UnitIsFriend, UnitIsUnit = UnitExists, UnitIsDead, UnitIsFriend, UnitIsUnit local GetSpellInfo, GetSpellTexture, GetSpellCooldown = GetSpellInfo, GetSpellTexture, GetSpellCooldown local GetInstanceInfo = GetInstanceInfo local GetActiveTalentGroup = GetActiveTalentGroup local GetMapInfo, GetCurrentMapDungeonLevel, DungeonUsesTerrainMap, GetPlayerMapPosition, SetMapToCurrentZone = GetMapInfo, GetCurrentMapDungeonLevel, DungeonUsesTerrainMap, GetPlayerMapPosition, SetMapToCurrentZone local UnitDetailedThreatSituation = UnitDetailedThreatSituation local UnitIsPartyLeader, UnitIsRaidOfficer = UnitIsPartyLeader, UnitIsRaidOfficer local PlaySoundFile, PlaySound = PlaySoundFile, PlaySound local SendAddonMessage = SendAddonMessage -- for Phanx' Class Colors local RAID_CLASS_COLORS = CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS --------------------------- -- Retail API backport -- --------------------------- -- prevent other addons from messing with the global function from compat.lua function DBM:tIndexOf(tbl, item) return private.tIndexOf(tbl, item) end function DBM:IsInGroup() return private.IsInGroup() end function DBM:IsInRaid() return private.IsInRaid() end function DBM:GetNumSubgroupMembers() return private.GetNumSubgroupMembers() end function DBM:GetNumGroupMembers() return private.GetNumGroupMembers() end --------------------------------- -- General (local) functions -- --------------------------------- -- checks if a given value is in an array -- returns true if it finds the value, false otherwise local function checkEntry(t, val) for _, v in ipairs(t) do if v == val then return true end end return false end -- removes all occurrences of a value in an array -- returns true if at least one occurrence was remove, false otherwise local function removeEntry(t, val) local existed = false for i = #t, 1, -1 do if t[i] == val then tremove(t, i) existed = true end end return existed end local function OrderedTable() local nextkey, firstkey = {}, {} nextkey[nextkey] = firstkey local function onext(self, key) while key ~= nil do key = nextkey[key] local val = self[key] if val ~= nil then return key, val end end end local selfmeta = firstkey selfmeta.__nextkey = nextkey function selfmeta:__newindex(key, val) rawset(self, key, val) if nextkey[key] == nil then nextkey[nextkey[nextkey]] = key nextkey[nextkey] = key end end function selfmeta:__pairs() return onext, self, firstkey end return setmetatable({}, selfmeta) end --Whisper/Whisper Sync filter function local function checkForSafeSender(sender, checkFriends, checkGuild, filterRaid) if checkFriends then --Check if it's a non bnet friend for i = 1, GetNumFriends() do local name = GetFriendInfo(i) if name == sender then return not (filterRaid and DBM:GetRaidUnitId(name)) -- Person is in raid group and filter raid enabled end end end --Check Guildies (not used by whisper syncs, but used by status whispers) if checkGuild then local totalMembers = GetNumGuildMembers() for i = 1, totalMembers do local name = GetGuildRosterInfo(i) if not name then break end if name == sender then return not (filterRaid and DBM:GetRaidUnitId(name)) end end end return false end -- automatically sends an addon message to the appropriate channel (BATTLEGROUND, RAID or PARTY) local function sendSync(prefix, msg) if dbmIsEnabled or prefix == "DBMv4-V" or prefix == "DBMv4-H" then--Only show version checks if force disabled, nothing else msg = msg or "" local zoneType = select(2, IsInInstance()) if zoneType == "pvp" or zoneType == "arena" then SendAddonMessage(prefix, msg, "BATTLEGROUND") elseif GetRealNumRaidMembers() > 0 then SendAddonMessage(prefix, msg, "RAID") elseif GetRealNumPartyMembers() > 0 then SendAddonMessage(prefix, msg, "PARTY") else handleSync("SOLO", playerName, prefix, strsplit("\t", msg)) end DBM:Debug(prefix.." "..tostring(msg):gsub("\t", " "), 3) end end private.sendSync = sendSync local function sendGuildSync(prefix, msg) if IsInGuild() and (dbmIsEnabled or prefix == "DBMv4-V" or prefix == "DBMv4-H") then--Only show version checks if force disabled, nothing else msg = msg or "" SendAddonMessage(prefix, msg, "GUILD")--Even guild syncs send realm so we can keep antispam the same across realid as well. end end private.sendGuildSync = sendGuildSync --Reworked BNet friends to ingame friends since BNet doesn't exist on private servers --Sync Object specifically for out in the world sync messages that have different rules than standard syncs local function SendWorldSync(self, prefix, msg, noBNet) if not dbmIsEnabled then return end--Block all world syncs if force disabled DBM:Debug("SendWorldSync running for "..prefix) if GetNumRaidMembers() > 0 then SendAddonMessage(DBMPrefix .. "-" .. prefix, msg, "RAID") elseif IsInGroup(1) then SendAddonMessage(DBMPrefix .. "-" .. prefix, msg, "PARTY") else--for solo raid handleSync("SOLO", playerName, DBMPrefix .. "-" .. prefix, strsplit("\t", msg)) end if IsInGuild() then SendAddonMessage(DBMPrefix .. "-" .. prefix, msg, "GUILD")--Even guild syncs send realm so we can keep antispam the same across realid as well. end if self.Options.EnableWBSharing and not noBNet then local _, numFriendsOnline = GetNumFriends() for i = 1, numFriendsOnline do local name, _, _, _, isOnline = GetFriendInfo(i) if name and isOnline then SendAddonMessage(DBMPrefix .. "-" .. prefix, msg, "WHISPER", name)--Just send users realm for pull, so we can eliminate connectedServers checks on sync handler end end end end local function strFromTime(time) if type(time) ~= "number" then time = 0 end time = floor(time) if time < 60 then return L.TIMER_FORMAT_SECS:format(time) elseif time % 60 == 0 then return L.TIMER_FORMAT_MINS:format(time/60) else return L.TIMER_FORMAT:format(time/60, time % 60) end end function DBM:strFromTime(time) return strFromTime(time) end do -- fail-safe format, replaces missing arguments with unknown -- note: doesn't handle cases like %%%s correctly at the moment (should become %unknown, but becomes %%s) -- also, the end of the format directive is not detected in all cases, but handles everything that occurs in our boss mods ;) --> not suitable for general-purpose use, just for our warnings and timers (where an argument like a spell-target might be nil due to missing target information from unreliable detection methods) local function replace(cap1) return cap1 == "%" and CL.UNKNOWN end function pformat(fstr, ...) local ok, str = pcall(format, fstr, ...) return ok and str or fstr:gsub("(%%+)([^%%%s%)<]+)", replace):gsub("%%%%", "%%") end end -- sends a whisper to a player by his or her character name or BNet presence id -- returns true if the message was sent, nil otherwise local function sendWhisper(target, msg) if type(target) == "number" then if not BNIsSelf(target) then -- Never send BNet whispers to ourselves BNSendWhisper(target, msg) end elseif type(target) == "string" then SendChatMessage(msg, "WHISPER", nil, target) -- Whispering to ourselves here is okay and somewhat useful for whisper-warnings end end --Another custom server name strip function that first strips out the "><" DBM wraps around playernames local function stripServerName(cap) return DBM:GetShortServerName(cap:sub(2, -2)) end -------------- -- Events -- -------------- do local registeredEvents = {} local registeredSpellIds = {} local unfilteredCLEUEvents = {} local registeredUnitEventIds = {} local argsMT = {__index = {}} local args = setmetatable({}, argsMT) function argsMT.__index:IsSpellID(...) return DBM:tIndexOf({...}, args.spellId) ~= nil end function argsMT.__index:IsPlayer() return bband(args.destFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) ~= 0 and bband(args.destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 end function argsMT.__index:IsPlayerSource() return bband(args.sourceFlags, COMBATLOG_OBJECT_AFFILIATION_MINE) ~= 0 and bband(args.sourceFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 end function argsMT.__index:IsNPC() return bband(args.destFlags, COMBATLOG_OBJECT_TYPE_NPC) ~= 0 end function argsMT.__index:IsPet() return bband(args.destFlags, COMBATLOG_OBJECT_TYPE_PET) ~= 0 end function argsMT.__index:IsPetSource() return bband(args.sourceFlags, COMBATLOG_OBJECT_TYPE_PET) ~= 0 end function argsMT.__index:IsSrcTypePlayer() return bband(args.sourceFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 end function argsMT.__index:IsDestTypePlayer() return bband(args.destFlags, COMBATLOG_OBJECT_TYPE_PLAYER) ~= 0 end function argsMT.__index:IsSrcTypeHostile() return bband(args.sourceFlags, COMBATLOG_OBJECT_REACTION_HOSTILE) ~= 0 end function argsMT.__index:IsDestTypeHostile() return bband(args.destFlags, COMBATLOG_OBJECT_REACTION_HOSTILE) ~= 0 end function argsMT.__index:GetSrcCreatureID() return DBM:GetCIDFromGUID(self.sourceGUID) end function argsMT.__index:GetDestCreatureID() return DBM:GetCIDFromGUID(self.destGUID) end local function handleEvent(self, event, ...) local isUnitEvent = event:sub(0, 5) == "UNIT_" and event ~= "UNIT_DIED" and event ~= "UNIT_DESTROYED" if self == mainFrame and isUnitEvent then -- UNIT_* events that come from mainFrame are _UNFILTERED variants and need their suffix event = event .. "_UNFILTERED" isUnitEvent = false -- not actually a real unit id for this function... end if not registeredEvents[event] or not dbmIsEnabled then return end for _, v in ipairs(registeredEvents[event]) do local zones = v.zones local handler = v[event] local modEvents = v.registeredUnitEvents --if isUnitEvent --[[and v.id == DBM.currentModId]] then -- Me and Kader initially coded a current mod check to save some CPU but noticed it would not work with RegisterEvents (to be listened out of modCombat) since currentModId is being set on StartCombat -- Workaround for retail-like mod:RegisterEvents("UNIT_SPELLCAST_START boss1"). Check if we have valid units registered and filter out everything else. -- v is mod here... so we check registered mods for registered events with registered uIds (v.registeredUnitEvents[event]). -- then we check if we have our unit (args) in the table ... self.registeredUnitEvents[event] = args which is defined below --if modEvents and modEvents[event] and not checkEntry(modEvents[event], ...) then return end --end if not (isUnitEvent and modEvents and modEvents[event] and not checkEntry(modEvents[event], ...)) then if handler and (not zones or zones[LastInstanceMapID] or zones[LastInstanceZoneName]) and not (not v.isTrashModBossFightAllowed and v.isTrashMod and #inCombat > 0) then handler(v, ...) end end end end local registerUnitEvent, unregisterUnitEvent, registerSpellId, unregisterSpellId, registerCLEUEvent, unregisterCLEUEvent do function registerUnitEvent(mod, event, uIds) -- Since RegisterUnitEvent does not exist in WotLK, Unit Events will be registered only once in a dedicated frame, to avoid mainFrame logic in handleEvents. -- mod.RegisteredUnitEvents will also be saved differently, in a table of the Event with each uID in the value pair instead of event..uId strings. -- Register valid units for retail-like mod:RegisterEvents("UNIT_SPELLCAST_START boss1") mod.registeredUnitEvents = mod.registeredUnitEvents or {} if next(uIds) then registeredUnitEventIds[event] = (registeredUnitEventIds[event] or 0) + 1 mod.registeredUnitEvents[event] = uIds end unitMainFrame:RegisterEvent(event) end function unregisterUnitEvent(mod, event, ...) for i = 1, select("#", ...) do local uId = select(i, ...) if not uId then break end local refs = (registeredUnitEventIds[event] or 1) - 1 registeredUnitEventIds[event] = refs if refs <= 0 then registeredUnitEventIds[event] = nil if unitMainFrame then unitMainFrame:UnregisterEvent(event) end end if mod.registeredUnitEvents and mod.registeredUnitEvents[event] then for k, v in ipairs(mod.registeredUnitEvents[event]) do if v == uId then tremove(mod.registeredUnitEvents[event], k) break end end -- Remove empty event uId table if #mod.registeredUnitEvents[event] <= 0 then mod.registeredUnitEvents[event] = nil end -- Remove empty registered unit events table local count = 0 for _ in pairs(mod.registeredUnitEvents) do count = count + 1 end if count <= 0 then mod.registeredUnitEvents = nil end end end for i = #registeredEvents[event], 1, -1 do if registeredEvents[event][i] == mod then tremove(registeredEvents[event], i) end end if #registeredEvents[event] == 0 then registeredEvents[event] = nil end end function registerSpellId(event, spellId) if type(spellId) == "string" then--Something is screwed up, like SPELL_AURA_APPLIED DOSE DBM:Debug("DBM RegisterEvents Warning: "..spellId.." is not a number!") return end if spellId and not DBM:GetSpellInfo(spellId) then DBM:Debug("DBM RegisterEvents Warning: "..spellId.." spell id does not exist!") return end if not registeredSpellIds[event] then registeredSpellIds[event] = {} end registeredSpellIds[event][spellId] = (registeredSpellIds[event][spellId] or 0) + 1 end function unregisterSpellId(event, spellId) if not registeredSpellIds[event] then return end if spellId and not DBM:GetSpellInfo(spellId) then DBM:Debug("DBM unregisterSpellId Warning: "..spellId.." spell id does not exist!") return end local refs = (registeredSpellIds[event][spellId] or 1) - 1 registeredSpellIds[event][spellId] = refs if refs <= 0 then registeredSpellIds[event][spellId] = nil end end --There are 2 tables. unfilteredCLEUEvents and registeredSpellIds table. --unfilteredCLEUEvents saves UNFILTERED cleu event count. this is count table to prevent bad unregister. --registeredSpellIds tables filtered table. this saves event and spell ids. works smiliar with unfilteredCLEUEvents table. function registerCLEUEvent(mod, event) local argTable = {strsplit(" ", event)} -- filtered cleu event. save information in registeredSpellIds table. if #argTable > 1 then event = argTable[1] for i = 2, #argTable do registerSpellId(event, tonumber(argTable[i])) end -- no args. works as unfiltered. save information in unfilteredCLEUEvents table. else unfilteredCLEUEvents[event] = (unfilteredCLEUEvents[event] or 0) + 1 end registeredEvents[event] = registeredEvents[event] or {} tinsert(registeredEvents[event], mod) end function unregisterCLEUEvent(mod, event) local argTable = {strsplit(" ", event)} local eventCleared = false -- filtered cleu event. save information in registeredSpellIds table. if #argTable > 1 then event = argTable[1] for i = 2, #argTable do unregisterSpellId(event, tonumber(argTable[i])) end local remainingSpellIdCount = 0 if registeredSpellIds[event] then for _, _ in pairs(registeredSpellIds[event]) do remainingSpellIdCount = remainingSpellIdCount + 1 end end if remainingSpellIdCount == 0 then registeredSpellIds[event] = nil -- if unfilteredCLEUEvents and registeredSpellIds do not exists, clear registeredEvents. if not unfilteredCLEUEvents[event] then eventCleared = true end end -- no args. works as unfiltered. save information in unfilteredCLEUEvents table. else local refs = (unfilteredCLEUEvents[event] or 1) - 1 unfilteredCLEUEvents[event] = refs if refs <= 0 then unfilteredCLEUEvents[event] = nil -- if unfilteredCLEUEvents and registeredSpellIds do not exists, clear registeredEvents. if not registeredSpellIds[event] then eventCleared = true end end end for i = #registeredEvents[event], 1, -1 do if registeredEvents[event][i] == mod then registeredEvents[event][i] = {} break end end if eventCleared then registeredEvents[event] = nil end end end -- UNIT_* events are special: they can take 'parameters' like this: "UNIT_HEALTH boss1 boss2" which only trigger the event for the given unit ids function DBM:RegisterEvents(...) for _, event in ipairs({...}) do -- spell events with special care. if event:sub(0, 6) == "SPELL_" and event ~= "SPELL_NAME_UPDATE" or event:sub(0, 6) == "RANGE_" or event:sub(0, 6) == "SWING_" or event == "UNIT_DIED" or event == "UNIT_DESTROYED" or event == "PARTY_KILL" then registerCLEUEvent(self, event) else local eventWithArgs = event if event:sub(0, 5) == "UNIT_" then local uIds = {strsplit(" ", event)} event = tremove(uIds, 1) if event:sub(-11) == "_UNFILTERED" then -- we really want *all* unit ids mainFrame:RegisterEvent(event:sub(0, -12)) else registerUnitEvent(self, event, uIds) end -- spell events with filter else -- normal events mainFrame:RegisterEvent(event) end registeredEvents[eventWithArgs] = registeredEvents[eventWithArgs] or {} tinsert(registeredEvents[eventWithArgs], self) if event ~= eventWithArgs then registeredEvents[event] = registeredEvents[event] or {} tinsert(registeredEvents[event], self) end end end end local function unregisterUEvent(mod, event) if event:sub(0, 5) == "UNIT_" and event ~= "UNIT_DIED" and event ~= "UNIT_DESTROYED" then local eventName, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8 = strsplit(" ", event) if eventName:sub(eventName:len() - 10) == "_UNFILTERED" then mainFrame:UnregisterEvent(eventName:sub(0, -12)) else unregisterUnitEvent(mod, eventName, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) end end end local function findRealEvent(t, val) for _, v in ipairs(t) do local event = strsplit(" ", v) if event == val then return v end end end function DBM:UnregisterInCombatEvents(srmOnly, srmIncluded) for event, mods in pairs(registeredEvents) do if srmOnly then local i = 1 while mods[i] do if mods[i] == self and event == "SPELL_AURA_REMOVED" then local findEvent = findRealEvent(self.inCombatOnlyEvents, "SPELL_AURA_REMOVED") if findEvent then unregisterCLEUEvent(self, findEvent) break end end i = i +1 end elseif (event:sub(0, 6) == "SPELL_"and event ~= "SPELL_NAME_UPDATE" or event:sub(0, 6) == "RANGE_") then local i = 1 while mods[i] do if mods[i] == self and (srmIncluded or event ~= "SPELL_AURA_REMOVED") then local findEvent = findRealEvent(self.inCombatOnlyEvents, event) if findEvent then unregisterCLEUEvent(self, findEvent) break end end i = i +1 end else local match = false for i = #mods, 1, -1 do if mods[i] == self and checkEntry(self.inCombatOnlyEvents, event) then tremove(mods, i) match = true end end if #mods == 0 or (match and event:sub(0, 5) == "UNIT_" and event:sub(0, -10) ~= "_UNFILTERED" and event ~= "UNIT_DIED" and event ~= "UNIT_DESTROYED") then -- unit events have their own reference count unregisterUEvent(self, event) end if #mods == 0 then registeredEvents[event] = nil end end end end function DBM:RegisterShortTermEvents(...) DBM:Debug("RegisterShortTermEvents fired", 2) local _shortTermRegisterEvents = {...} for k, v in pairs(_shortTermRegisterEvents) do if v:sub(0, 5) == "UNIT_" and v:sub(v:len() - 10) ~= "_UNFILTERED" and not v:find(" ") and v ~= "UNIT_DIED" and v ~= "UNIT_DESTROYED" then -- legacy event, oh noes _shortTermRegisterEvents[k] = v--[[ .. " boss1 boss2 boss3 boss4 boss5 target focus"]] -- don't preassign units if the event does not state them. LK Ice Spheres scanner requires listening to the entire raid units end end self.shortTermEventsRegistered = 1 self:RegisterEvents(unpack(_shortTermRegisterEvents)) -- Fix so we can register multiple short term events. Use at your own risk, as unsucribing will cause -- all short term events to unregister. if not self.shortTermRegisterEvents then self.shortTermRegisterEvents = {} end for k, v in pairs(_shortTermRegisterEvents) do if #self.shortTermRegisterEvents ~= 0 then if not checkEntry(self.shortTermRegisterEvents, v) then -- check to prevent event duplication tinsert(self.shortTermRegisterEvents, v) -- use tinsert instead to achieve numeric order for checkEntry ipairs to work end else self.shortTermRegisterEvents[k] = v end end -- End fix end function DBM:UnregisterShortTermEvents() DBM:Debug("UnregisterShortTermEvents fired", 2) if self.shortTermRegisterEvents then DBM:Debug("UnregisterShortTermEvents found registered shortTermRegisterEvents", 2) for event, mods in pairs(registeredEvents) do if event:sub(0, 6) == "SPELL_" or event:sub(0, 6) == "RANGE_" then local i = 1 while mods[i] do if mods[i] == self then local findEvent = findRealEvent(self.shortTermRegisterEvents, event) if findEvent then unregisterCLEUEvent(self, findEvent) break end end i = i +1 end else local match = false for i = #mods, 1, -1 do if mods[i] == self then local findEvent = findRealEvent(self.shortTermRegisterEvents, event) if findEvent then tremove(mods, i) match = true end end end if #mods == 0 or (match and event:sub(0, 5) == "UNIT_" and event:sub(0, -10) ~= "_UNFILTERED" and event ~= "UNIT_DIED" and event ~= "UNIT_DESTROYED") then unregisterUEvent(self, event) DBM:Debug("unregisterUEvent for unit event "..event.." unregistered", 3) end if #mods == 0 then registeredEvents[event] = nil DBM:Debug("registeredEvents for event "..event.." nilled", 3) end end end self.shortTermEventsRegistered = nil self.shortTermRegisterEvents = nil end end DBM:RegisterEvents("ADDON_LOADED") function DBM:FilterRaidBossEmote(msg, ...) return handleEvent(nil, "CHAT_MSG_RAID_BOSS_EMOTE_FILTERED", msg:gsub("\124c%x+(.-)\124r", "%1"), ...) end local noArgTableEvents = { SWING_DAMAGE = true, SWING_MISSED = true, RANGE_DAMAGE = true, RANGE_MISSED = true, SPELL_DAMAGE = true, SPELL_BUILDING_DAMAGE = true, SPELL_MISSED = true, SPELL_ABSORBED = true, SPELL_HEAL = true, SPELL_ENERGIZE = true, SPELL_PERIODIC_ENERGIZE = true, SPELL_PERIODIC_MISSED = true, SPELL_PERIODIC_DAMAGE = true, SPELL_PERIODIC_DRAIN = true, SPELL_PERIODIC_LEECH = true, SPELL_DRAIN = true, SPELL_LEECH = true, SPELL_CAST_FAILED = true } function DBM:COMBAT_LOG_EVENT_UNFILTERED(timestamp, event, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, extraArg1, extraArg2, extraArg3, extraArg4, extraArg5, extraArg6, extraArg7, extraArg8, extraArg9, extraArg10, extraArg11, extraArg12) if not registeredEvents[event] then return end local eventSub6 = event:sub(0, 6) if (eventSub6 == "SPELL_" or eventSub6 == "RANGE_") --[[and not unfilteredCLEUEvents[event]--]] and registeredSpellIds[event] then -- why is unfilteredCLEUEvents event count even needed here? Just broke the function altogether if not registeredSpellIds[event][extraArg1] then return end end -- process some high volume events without building the whole table which is somewhat faster -- this prevents work-around with mods that used to have their own event handler to prevent this overhead if noArgTableEvents[event] then return handleEvent(nil, event, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags, extraArg1, extraArg2, extraArg3, extraArg4, extraArg5, extraArg6, extraArg7, extraArg8, extraArg9, extraArg10, extraArg11, extraArg12) else twipe(args) args.timestamp = timestamp args.event = event args.sourceGUID = sourceGUID args.sourceName = sourceName args.sourceFlags = sourceFlags args.destGUID = destGUID args.destName = destName args.destFlags = destFlags -- taken from Blizzard_CombatLog.lua if eventSub6 == "SPELL_" then args.spellId, args.spellName, args.spellSchool = extraArg1, extraArg2, extraArg3 if event == "SPELL_AURA_APPLIED" or event == "SPELL_AURA_REFRESH" or event == "SPELL_AURA_REMOVED" or event == "SPELL_AURA_BROKEN" then args.auraType = extraArg4 if not args.sourceName then args.sourceName = args.destName args.sourceGUID = args.destGUID args.sourceFlags = args.destFlags end elseif event == "SPELL_AURA_APPLIED_DOSE" or event == "SPELL_AURA_REMOVED_DOSE" then args.auraType = extraArg4 args.amount = extraArg5 if not args.sourceName then args.sourceName = args.destName args.sourceGUID = args.destGUID args.sourceFlags = args.destFlags end elseif event == "SPELL_CAST_FAILED" then args.failedType = extraArg4 elseif event == "SPELL_INTERRUPT" or event == "SPELL_DISPEL_FAILED" then args.extraSpellId, args.extraSpellName, args.extraSpellSchool = extraArg4, extraArg5, extraArg6 elseif event == "SPELL_EXTRA_ATTACKS" then args.amount = extraArg4 elseif event == "SPELL_DISPEL" or event == "SPELL_STOLEN" or event == "SPELL_AURA_BROKEN_SPELL" then args.extraSpellId, args.extraSpellName, args.extraSpellSchool, args.auraType = extraArg4, extraArg5, extraArg6, extraArg7 end elseif event == "DAMAGE_SHIELD" or event == "DAMAGE_SPLIT" then args.spellId, args.spellName, args.spellSchool, args.amount, args.overkill, args.school, args.resisted, args.blocked, args.absorbed, args.critical, args.glancing, args.crushing = extraArg1, extraArg2, extraArg3, extraArg4, extraArg5, extraArg6, extraArg7, extraArg8, extraArg9, extraArg10, extraArg11, extraArg12 elseif event == "DAMAGE_SHIELD_MISSED" then args.spellId, args.spellName, args.spellSchool, args.missType = extraArg1, extraArg2, extraArg3, extraArg4 elseif event == "ENCHANT_APPLIED" or event == "ENCHANT_REMOVED" then args.spellName, args.itemId, args.itemName = extraArg1, extraArg2, extraArg3 elseif event == "UNIT_DIED" or event == "UNIT_DESTROYED" then args.sourceName = args.destName args.sourceGUID = args.destGUID args.sourceFlags = args.destFlags elseif event == "ENVIRONMENTAL_DAMAGE" then args.environmentalType, args.amount, args.overkill, args.school, args.resisted, args.blocked, args.absorbed, args.critical, args.glancing, args.crushing = extraArg1, extraArg2, extraArg3, extraArg4, extraArg5, extraArg6, extraArg7, extraArg8, extraArg9, extraArg10 args.spellName = _G["ACTION_"..event.."_"..args.environmentalType] args.spellSchool = args.school end return handleEvent(nil, event, args) end end unitMainFrame:SetScript("OnEvent", handleEvent) mainFrame:SetScript("OnEvent", handleEvent) end -------------- -- OnLoad -- -------------- do local isLoaded = false local onLoadCallbacks, disabledMods = {}, {} local function runDelayedFunctions(self) --Check if voice pack missing local activeVP = self.Options.ChosenVoicePack2 if activeVP ~= "None" then if not self.VoiceVersions[activeVP] or (self.VoiceVersions[activeVP] and self.VoiceVersions[activeVP] == 0) then--A voice pack is selected that does not belong voiceSessionDisabled = true --Since VEM is now bundled, users may elect to disable it by simply disabling the module --let's not nag them, only remind for 3rd party because then we know user installed it themselves if activeVP ~= "VEM" then AddMsg(self, L.VOICE_MISSING) end end end --Check if any of countdown sounds are using missing voice pack local found1, found2, found3, found4 = false, false, false, false for _, count in pairs(DBM:GetCountSounds()) do local voice = count.value if voice == self.Options.CountdownVoice then found1 = true end if voice == self.Options.CountdownVoice2 then found2 = true end if voice == self.Options.CountdownVoice3 then found3 = true end if voice == self.Options.PullVoice then found4 = true end end if not found1 then AddMsg(self, L.VOICE_COUNT_MISSING:format(1, self.DefaultOptions.CountdownVoice)) self.Options.CountdownVoice = self.DefaultOptions.CountdownVoice end if not found2 then AddMsg(self, L.VOICE_COUNT_MISSING:format(2, self.DefaultOptions.CountdownVoice2)) self.Options.CountdownVoice2 = self.DefaultOptions.CountdownVoice2 end if not found3 then AddMsg(self, L.VOICE_COUNT_MISSING:format(3, self.DefaultOptions.CountdownVoice3)) self.Options.CountdownVoice3 = self.DefaultOptions.CountdownVoice3 end if not found4 then AddMsg(self, L.VOICE_COUNT_MISSING:format(4, self.DefaultOptions.PullVoice)) self.Options.PullVoice = self.DefaultOptions.PullVoice end self:BuildVoiceCountdownCache() --Break timer recovery --Try local settings if self.Options.RestoreSettingBreakTimer then local timer, startTime = string.split("/", self.Options.RestoreSettingBreakTimer) local elapsed = time() - tonumber(startTime) local remaining = timer - elapsed if remaining > 0 then breakTimerStart(DBM, remaining, playerName) else--It must have ended while we were offline, kill variable. self.Options.RestoreSettingBreakTimer = nil end end sendGuildSync("DBMv4-GH", "Hi!") if not savedDifficulty or not difficultyText or not difficultyIndex then--prevent error if savedDifficulty or difficultyText is nil savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = self:GetCurrentInstanceDifficulty() end DBM:Debug("Delayed functions finished", 3) end -- register a callback that will be executed once the addon is fully loaded (ADDON_LOADED fired, saved vars are available) function DBM:RegisterOnLoadCallback(cb) if isLoaded then cb() else onLoadCallbacks[#onLoadCallbacks + 1] = cb end end function DBM:ADDON_LOADED(modname) if modname == "DBM-Core" and not isLoaded then dbmToc = tonumber(GetAddOnMetadata("DBM-Core", "X-Min-Interface")) isLoaded = true for _, v in ipairs(onLoadCallbacks) do xpcall(v, geterrorhandler()) end onLoadCallbacks = nil loadOptions(self) DBT:LoadOptions("DBM") self.AddOns = {} private:OnModuleLoad() self.Arrow:LoadPosition() -- LibDBIcon setup if type(DBM_MinimapIcon) ~= "table" then DBM_MinimapIcon = {} end if LibStub("LibDBIcon-1.0", true) then LibStub("LibDBIcon-1.0"):Register("DBM", private.dataBroker, DBM_MinimapIcon) end self.Voices = { {text = "None",value = "None"}, }--Create voice table, with default "None" value self.VoiceVersions = {} for i = 1, GetNumAddOns() do local addonName, _, _, enabled = GetAddOnInfo(i) if GetAddOnMetadata(i, "X-DBM-Mod") then if enabled then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else local minToc = tonumber(GetAddOnMetadata(i, "X-Min-Interface") or 0) tinsert(self.AddOns, { sort = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Sort") or math.huge) or math.huge, type = GetAddOnMetadata(i, "X-DBM-Mod-Type") or "OTHER", category = GetAddOnMetadata(i, "X-DBM-Mod-Category") or "Other", statTypes = GetAddOnMetadata(i, "X-DBM-StatTypes") or "", oldOptions = tonumber(GetAddOnMetadata(i, "X-DBM-OldOptions") or 0) == 1, name = GetAddOnMetadata(i, "X-DBM-Mod-Name") or "", zone = {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-LoadZone") or CL.UNKNOWN)}, mapId = {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-MapID") or "")}, realm = {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-LoadRealm") or "")}, blockRealm = {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-BlockRealm") or "None")}, -- meant to prevent double load by blocking mod if it exists in different expansions subTabs = GetAddOnMetadata(i, "X-DBM-Mod-SubCategoriesID") and {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-SubCategoriesID"))} or GetAddOnMetadata(i, "X-DBM-Mod-SubCategories") and {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-SubCategories"))}, oneFormat = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-Single-Format") or 0) == 1, -- Deprecated hasLFR = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-LFR") or 0) == 1, -- Deprecated hasChallenge = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-Challenge") or 0) == 1, -- Deprecated hasHeroic = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-Heroic-Mode") or 1) == 1, -- Deprecated noHeroic = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-No-Heroic") or 0) == 1, -- Deprecated hasMythic = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-Mythic") or 0) == 1, -- Deprecated hasTimeWalker = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Has-TimeWalker") or 0) == 1, -- Deprecated noStatistics = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-No-Statistics") or 0) == 1, isWorldBoss = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-World-Boss") or 0) == 1, isExpedition = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-Expedition") or 0) == 1, minRevision = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-MinCoreRevision") or 0), minExpansion = tonumber(GetAddOnMetadata(i, "X-DBM-Mod-MinExpansion") or 0), minToc = minToc, modId = addonName, }) for k, _ in ipairs(self.AddOns[#self.AddOns].zone) do self.AddOns[#self.AddOns].zone[k] = (self.AddOns[#self.AddOns].zone[k]):trim() end for j = #self.AddOns[#self.AddOns].mapId, 1, -1 do local id = tonumber(self.AddOns[#self.AddOns].mapId[j]) if id then self.AddOns[#self.AddOns].mapId[j] = id else tremove(self.AddOns[#self.AddOns].mapId, j) end end for k, _ in ipairs(self.AddOns[#self.AddOns].realm) do self.AddOns[#self.AddOns].realm[k] = (self.AddOns[#self.AddOns].realm[k]):trim() end for k, _ in ipairs(self.AddOns[#self.AddOns].blockRealm) do self.AddOns[#self.AddOns].blockRealm[k] = (self.AddOns[#self.AddOns].blockRealm[k]):trim() end if self.AddOns[#self.AddOns].subTabs then local subTabs = self.AddOns[#self.AddOns].subTabs for k, _ in ipairs(subTabs) do self.AddOns[#self.AddOns].subTabs[k] = (subTabs[k]):trim() end end if GetAddOnMetadata(i, "X-DBM-Mod-LoadCID") then local idTable = {strsplit(",", GetAddOnMetadata(i, "X-DBM-Mod-LoadCID"))} for j = 1, #idTable do loadcIds[tonumber(idTable[j]) or ""] = addonName end end end else disabledMods[#disabledMods+1] = addonName end end if GetAddOnMetadata(i, "X-DBM-Voice") and enabled then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else self:Schedule(0.01, function() local voiceValue = GetAddOnMetadata(i, "X-DBM-Voice-ShortName") local voiceVersion = tonumber(GetAddOnMetadata(i, "X-DBM-Voice-Version") or 0) if voiceVersion > 0 then--Do not insert voice version 0 into THIS table. 0 should be used by voice packs that insert only countdown tinsert(self.Voices, { text = GetAddOnMetadata(i, "X-DBM-Voice-Name"), value = voiceValue }) end self.VoiceVersions[voiceValue] = voiceVersion self:Schedule(10, self.CheckVoicePackVersion, self, voiceValue)--Still at 1 since the count sounds won't break any mods or affect filter. V2 if support countsound path if GetAddOnMetadata(i, "X-DBM-Voice-HasCount") then--Supports adding countdown options, insert new countdown into table DBM:AddCountSound(GetAddOnMetadata(i, "X-DBM-Voice-Name"), "VP:"..voiceValue, "Interface\\AddOns\\DBM-VP"..voiceValue.."\\count\\") end end) end end if GetAddOnMetadata(i, "X-DBM-CountPack") and enabled ~= 0 then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else local loaded = LoadAddOn(addonName) self:Schedule(0.01, function() local voiceGlobal = GetAddOnMetadata(i, "X-DBM-CountPack-GlobalName") local insertFunction = _G[voiceGlobal] if loaded and insertFunction then insertFunction() else self:Debug(addonName.." failed to load at time CountPack function "..voiceGlobal.."ran", 2) end end) end end if GetAddOnMetadata(i, "X-DBM-VictoryPack") and enabled then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else local loaded = LoadAddOn(addonName) self:Schedule(0.01, function() local victoryGlobal = GetAddOnMetadata(i, "X-DBM-VictoryPack-GlobalName") local insertFunction = _G[victoryGlobal] if loaded and insertFunction then insertFunction() else self:Debug(addonName.." failed to load at time VictoryPack function "..victoryGlobal.." ran", 2) end end) end end if GetAddOnMetadata(i, "X-DBM-DefeatPack") and enabled then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else local loaded = LoadAddOn(addonName) self:Schedule(0.01, function() local defeatGlobal = GetAddOnMetadata(i, "X-DBM-DefeatPack-GlobalName") local insertFunction = _G[defeatGlobal] if loaded and insertFunction then insertFunction() else self:Debug(addonName.." failed to load at time DefeatPack function "..defeatGlobal.." ran", 2) end end) end end if GetAddOnMetadata(i, "X-DBM-MusicPack") and enabled then if checkEntry(bannedMods, addonName) then AddMsg(self, "The mod " .. addonName .. " is deprecated and will not be available. Please remove the folder " .. addonName .. " from your Interface" .. (IsWindowsClient() and "\\" or "/") .. "AddOns folder to get rid of this message. Check for an updated version of " .. addonName .. " that is compatible with your game version.") else local loaded = LoadAddOn(addonName) self:Schedule(0.01, function() local musicGlobal = GetAddOnMetadata(i, "X-DBM-MusicPack-GlobalName") local insertFunction = _G[musicGlobal] if loaded and insertFunction then insertFunction() else self:Debug(addonName.." failed to load at time MusicPack function "..musicGlobal.." ran", 2) end end) end end end tsort(self.AddOns, function(v1, v2) return v1.sort < v2.sort end) self:RegisterEvents( "COMBAT_LOG_EVENT_UNFILTERED", "ZONE_CHANGED_NEW_AREA", "ZONE_CHANGED_INDOORS", "ZONE_CHANGED", "RAID_ROSTER_UPDATE", "PARTY_MEMBERS_CHANGED", "CHAT_MSG_ADDON", "PLAYER_REGEN_DISABLED", "PLAYER_REGEN_ENABLED", "INSTANCE_ENCOUNTER_ENGAGE_UNIT", "UNIT_DIED", "UNIT_DESTROYED", "UNIT_HEALTH mouseover target focus player", "CHAT_MSG_WHISPER", "CHAT_MSG_BN_WHISPER", "CHAT_MSG_MONSTER_YELL", "CHAT_MSG_MONSTER_EMOTE", "CHAT_MSG_MONSTER_SAY", "CHAT_MSG_RAID_BOSS_EMOTE", "CHAT_MSG_RAID_BOSS_WHISPER", "PLAYER_ENTERING_WORLD", "SPELL_CAST_SUCCESS", "LFG_PROPOSAL_SHOW", "LFG_PROPOSAL_FAILED", "READY_CHECK", "UPDATE_BATTLEFIELD_STATUS", "PLAY_MOVIE", "CINEMATIC_START", "CINEMATIC_STOP", "PARTY_INVITE_REQUEST", "LFG_PROPOSAL_SUCCEEDED", "LFG_UPDATE", "CHARACTER_POINTS_CHANGED", "PLAYER_TALENT_UPDATE" ) self:ZONE_CHANGED_NEW_AREA() self:RAID_ROSTER_UPDATE() self:Schedule(1.5, function() combatInitialized = true end) self:Schedule(20, function() healthCombatInitialized = true end) self:Schedule(10, runDelayedFunctions, self) if DBM and TT then TT:Initialize(true) end end end end ----------------- -- Callbacks -- ----------------- do local callbacks = {} function fireEvent(event, ...) if not callbacks[event] then return end for _, v in ipairs(callbacks[event]) do local ok, err = pcall(v, event, ...) if not ok then DBM:AddMsg(("Error while executing callback %s for event %s: %s"):format(tostring(v), tostring(event), err)) end end end function DBM:FireEvent(event, ...) fireEvent(event, ...) end function DBM:IsCallbackRegistered(event, f) if not event or type(f) ~= "function" then error("Usage: IsCallbackRegistered(event, callbackFunc)", 2) end if not callbacks[event] then return end for i = 1, #callbacks[event] do if callbacks[event][i] == f then return true end end return false end function DBM:RegisterCallback(event, f) if not event or type(f) ~= "function" then error("Usage: DBM:RegisterCallback(event, callbackFunc)", 2) end callbacks[event] = callbacks[event] or {} tinsert(callbacks[event], f) return #callbacks[event] end function DBM:UnregisterCallback(event, f) if not event or not callbacks[event] then return end if f then if type(f) ~= "function" then error("Usage: UnregisterCallback(event, callbackFunc)", 2) end --> checking from the end to start and not stoping after found one result in case of a func being twice registered. for i = #callbacks[event], 1, -1 do if callbacks[event][i] == f then tremove (callbacks[event], i) end end else callbacks[event] = nil end end end -------------------------- -- OnUpdate/Scheduler -- -------------------------- local DBMScheduler = private:GetModule("DBMScheduler") function DBM:Schedule(t, f, ...) return DBMScheduler:Schedule(t, f, nil, ...) end function DBM:Unschedule(f, ...) return DBMScheduler:Unschedule(f, nil, ...) end --------------- -- Profile -- --------------- function DBM:CreateProfile(name) if not name or name == "" or name:find(" ") then self:AddMsg(L.PROFILE_CREATE_ERROR) return end if DBM_AllSavedOptions[name] then self:AddMsg(L.PROFILE_CREATE_ERROR_D:format(name)) return end -- create profile usedProfile = name DBM_UsedProfile = usedProfile DBM_AllSavedOptions[usedProfile] = DBM_AllSavedOptions[usedProfile] or {} self:AddDefaultOptions(DBM_AllSavedOptions[usedProfile], self.DefaultOptions) self.Options = DBM_AllSavedOptions[usedProfile] -- rearrange position DBT:CreateProfile("DBM") self:RepositionFrames() self:AddMsg(L.PROFILE_CREATED:format(name)) end function DBM:ApplyProfile(name) if not name or not DBM_AllSavedOptions[name] then self:AddMsg(L.PROFILE_APPLY_ERROR:format(name or CL.UNKNOWN)) return end usedProfile = name DBM_UsedProfile = usedProfile self:AddDefaultOptions(DBM_AllSavedOptions[usedProfile], self.DefaultOptions) self.Options = DBM_AllSavedOptions[usedProfile] -- rearrange position DBT:ApplyProfile("DBM") self:RepositionFrames() self:AddMsg(L.PROFILE_APPLIED:format(name)) end function DBM:CopyProfile(name) if not name or not DBM_AllSavedOptions[name] then self:AddMsg(L.PROFILE_COPY_ERROR:format(name or CL.UNKNOWN)) return elseif name == usedProfile then self:AddMsg(L.PROFILE_COPY_ERROR_SELF) return end DBM_AllSavedOptions[usedProfile] = DBM_AllSavedOptions[name] self:AddDefaultOptions(DBM_AllSavedOptions[usedProfile], self.DefaultOptions) self.Options = DBM_AllSavedOptions[usedProfile] -- rearrange position DBT:CopyProfile(name, "DBM", true) self:RepositionFrames() self:AddMsg(L.PROFILE_COPIED:format(name)) end function DBM:DeleteProfile(name) if not name or not DBM_AllSavedOptions[name] then self:AddMsg(L.PROFILE_DELETE_ERROR:format(name or CL.UNKNOWN)) return elseif name == "Default" then-- Default profile cannot be deleted. self:AddMsg(L.PROFILE_CANNOT_DELETE) return end --Delete DBM_AllSavedOptions[name] = nil usedProfile = "Default"--Restore to default DBM_UsedProfile = usedProfile self.Options = DBM_AllSavedOptions[usedProfile] if not self.Options then -- the default profile got lost somehow (maybe WoW crashed and the saved variables file got corrupted) self:CreateProfile("Default") end -- rearrange position DBT:DeleteProfile(name, "DBM") self:RepositionFrames() self:AddMsg(L.PROFILE_DELETED:format(name)) end function DBM:RepositionFrames() -- rearrange position self:UpdateWarningOptions() self:UpdateSpecialWarningOptions() self.Arrow:LoadPosition() local rangeCheck = _G["DBMRangeCheck"] if rangeCheck then rangeCheck:ClearAllPoints() rangeCheck:SetPoint(self.Options.RangeFramePoint, UIParent, self.Options.RangeFramePoint, self.Options.RangeFrameX, self.Options.RangeFrameY) end local rangeCheckRadar = _G["DBMRangeCheckRadar"] if rangeCheckRadar then rangeCheckRadar:ClearAllPoints() rangeCheckRadar:SetPoint(self.Options.RangeFrameRadarPoint, UIParent, self.Options.RangeFrameRadarPoint, self.Options.RangeFrameRadarX, self.Options.RangeFrameRadarY) end local infoFrame = _G["DBMInfoFrame"] if infoFrame then infoFrame:ClearAllPoints() infoFrame:SetPoint(self.Options.InfoFramePoint, UIParent, self.Options.InfoFramePoint, self.Options.InfoFrameX, self.Options.InfoFrameY) end end ---------------------- -- Slash Commands -- ---------------------- do local function Sort(v1, v2) if v1.revision and not v2.revision then return true elseif v2.revision and not v1.revision then return false elseif v1.revision and v2.revision then return v1.revision > v2.revision else return (v1.bwversion or 0) > (v2.bwversion or 0) end end function DBM:ShowVersions(notify) local sortMe, outdatedUsers = {}, {} for _, v in pairs(raid) do tinsert(sortMe, v) end tsort(sortMe, Sort) self:AddMsg(L.VERSIONCHECK_HEADER) local nreq = 1 for _, v in ipairs(sortMe) do local name = v.name local playerColor = RAID_CLASS_COLORS[DBM:GetRaidClass(name)] if playerColor then name = ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, name, 0.41 * 255, 0.8 * 255, 0.94 * 255) end if v.displayVersion and not v.bwversion then--DBM, no BigWigs if self.Options.ShowAllVersions then self:AddMsg(L.VERSIONCHECK_ENTRY:format(name, L.DBM.." "..v.displayVersion, showRealDate(v.revision), v.VPVersion or ""), false)--Only display VP version if not running two mods end if notify and v.revision < self.ReleaseRevision then DBM:Schedule(nreq*10, SendChatMessage, chatPrefixShort..L.YOUR_VERSION_OUTDATED, "WHISPER", nil, v.name) nreq = nreq + 1 end elseif self.Options.ShowAllVersions and v.displayVersion and v.bwversion then--DBM & BigWigs self:AddMsg(L.VERSIONCHECK_ENTRY_TWO:format(name, L.DBM.." "..v.displayVersion, showRealDate(v.revision), L.BIG_WIGS, bwVersionResponseString:format(v.bwversion)), false) elseif self.Options.ShowAllVersions and not v.displayVersion and v.bwversion then--BigWigs, No DBM self:AddMsg(L.VERSIONCHECK_ENTRY:format(name, L.BIG_WIGS, bwVersionResponseString:format(v.bwversion), ""), false) else if self.Options.ShowAllVersions then self:AddMsg(L.VERSIONCHECK_ENTRY_NO_DBM:format(name), false) end end end local NoDBM = 0 local NoBigwigs = 0 local OldMod = 0 for i = #sortMe, 1, -1 do if not sortMe[i].revision then NoDBM = NoDBM + 1 end if not (sortMe[i].bwversion) then NoBigwigs = NoBigwigs + 1 end --Table sorting sorts dbm to top, bigwigs underneath. Highest version dbm always at top. so sortMe[1] --This check compares all dbm version to highest RELEASE version in raid. if sortMe[i].revision and (sortMe[i].revision < sortMe[1].version) or sortMe[i].bwversion and (sortMe[i].bwversion < fakeBWVersion) then OldMod = OldMod + 1 local name = sortMe[i].name local playerColor = RAID_CLASS_COLORS[DBM:GetRaidClass(name)] if playerColor then name = ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, name, 0.41 * 255, 0.8 * 255, 0.94 * 255) end tinsert(outdatedUsers, name) end end local TotalUsers = #sortMe self:AddMsg("---", false) self:AddMsg(L.VERSIONCHECK_FOOTER:format(TotalUsers - NoDBM, TotalUsers - NoBigwigs), false) self:AddMsg(L.VERSIONCHECK_OUTDATED:format(OldMod, #outdatedUsers > 0 and tconcat(outdatedUsers, ", ") or NONE), false) end end ------------------- -- Pizza Timer -- ------------------- do local function loopTimer(time, text, broadcast, sender) DBM:CreatePizzaTimer(time, text, broadcast, sender, true) end local ignore = {} --Standard Pizza Timer function DBM:CreatePizzaTimer(time, text, broadcast, sender, loop, terminate) if terminate or time == 0 then self:Unschedule(loopTimer) DBT:CancelBar(text) fireEvent("DBM_TimerStop", "DBMPizzaTimer") return end if sender and ignore[sender] then return end -- text = text:sub(1, 16) -- I don't see any point in limiting text to 16 char string text = text:gsub("%%t", UnitName("target") or "") if time < 3 then self:AddMsg(L.PIZZA_ERROR_USAGE) return end DBT:CreateBar(time, text, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME") fireEvent("DBM_TimerBegin", "DBMPizzaTimer", text, time, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", "pizzatimer", nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, true) fireEvent("DBM_TimerStart", "DBMPizzaTimer", text, time, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", "pizzatimer", nil, 0) if broadcast and self:GetRaidRank() >= 1 then sendSync("DBMv4-Pizza", ("%s\t%s"):format(time, text)) end if sender then self:ShowPizzaInfo(text, sender) end if loop then self:Unschedule(loopTimer)--Only one loop timer supported at once doing this, but much cleaner this way self:Schedule(time, loopTimer, time, text, broadcast, sender) end end function DBM:AddToPizzaIgnore(name) ignore[name] = true end end function DBM:ShowPizzaInfo(id, sender) if self.Options.ShowPizzaMessage then self:AddMsg(L.PIZZA_SYNC_INFO:format(sender, id)) end end ----------------- -- GUI Stuff -- ----------------- do local callOnLoad = {} function DBM:LoadGUI() if not dbmIsEnabled then self:ForceDisableSpam() return end if self.NewerVersion and showConstantReminder >= 1 then AddMsg(self, L.UPDATEREMINDER_HEADER:format(self.NewerVersion, showRealDate(self.HighestRelease))) end local firstLoad = false if not IsAddOnLoaded("DBM-GUI") then local _, _, _, enabled = GetAddOnInfo("DBM-GUI") if not enabled then EnableAddOn("DBM-GUI") end local loaded, reason = LoadAddOn("DBM-GUI") if not loaded then if reason then self:AddMsg(L.LOAD_GUI_ERROR:format(tostring(_G["ADDON_"..reason or ""]))) else self:AddMsg(L.LOAD_GUI_ERROR:format(CL.UNKNOWN)) end return false end if not InCombatLockdown() and not UnitAffectingCombat("player") and not IsFalling() then--We loaded in combat but still need to avoid garbage collect in combat collectgarbage("collect") end firstLoad = true end DBM_GUI:ShowHide() if firstLoad then tsort(callOnLoad, function(v1, v2) return v1[2] < v2[2] end) for _, v in ipairs(callOnLoad) do v[1]() end end end function DBM:RegisterOnGuiLoadCallback(f, sort) tinsert(callOnLoad, {f, sort or mhuge}) end end ------------------------------------------------- -- Raid/Party Handling and Unit ID Utilities -- ------------------------------------------------- do local bwVersionQueryString = "%d"--Only used here local inRaid = false local raidGuids = {} local iconSeter = {} -- save playerinfo into raid table on load. (for solo raid) DBM:RegisterOnLoadCallback(function() AceTimer:ScheduleTimer(function() if not raid[playerName] then raid[playerName] = {} raid[playerName].name = playerName raid[playerName].shortname = playerName raid[playerName].guid = UnitGUID("player") or "" raid[playerName].rank = 0 raid[playerName].class = playerClass raid[playerName].id = "player" raid[playerName].groupId = 0 raid[playerName].revision = DBM.Revision raid[playerName].version = DBM.ReleaseRevision raid[playerName].displayVersion = DBM.DisplayVersion raid[playerName].locale = GetLocale() raid[playerName].enabledIcons = tostring(not DBM.Options.DontSetIcons) raidGuids[UnitGUID("player") or ""] = playerName end end, 6) end) local function updateAllRoster(self) DBM:Debug("Updating roster", 3) if GetNumRaidMembers() >= 1 then if not inRaid then twipe(newerVersionPerson)--Wipe guild syncs on group join so we trigger a new out of date notice on raid join even if one triggered on login inRaid = true sendSync("DBMv4-Ver", "Hi!") if dbmIsEnabled then SendAddonMessage("BWVQ3", bwVersionQueryString:format(0), "RAID") end self:Schedule(2, DBM.RequestTimers, DBM) fireEvent("raidJoin", playerName) -- backwards compatibility fireEvent("DBM_raidJoin", playerName) local bigWigs = _G["BigWigs"] if bigWigs and bigWigs.db.profile.raidicon and not self.Options.DontSetIcons and self:GetRaidRank() > 0 then--Both DBM and bigwigs have raid icon marking turned on. self:AddMsg(L.BIGWIGS_ICON_CONFLICT)--Warn that one of them should be turned off to prevent conflict (which they turn off is obviously up to raid leaders preference, dbm accepts either or turned off to stop this alert) end end for i = 1, GetNumRaidMembers() do local name, rank, subgroup, _, _, className = GetRaidRosterInfo(i) if name and name ~= UNKNOWN then local id = "raid" .. i local shortname = UnitName(id) if (not raid[name]) and inRaid then fireEvent("raidJoin", name) -- backwards compatibility fireEvent("DBM_raidJoin", name) end raid[name] = raid[name] or {} raid[name].name = name raid[name].shortname = shortname raid[name].rank = rank raid[name].subgroup = subgroup raid[name].class = className raid[name].id = id raid[name].groupId = i raid[name].guid = UnitGUID(id) or "" raid[name].updated = true raidGuids[UnitGUID(id) or ""] = name if rank == 2 then lastGroupLeader = name end end end private.enableIcons = false twipe(iconSeter) for i, v in pairs(raid) do if not v.updated then raidGuids[v.guid] = nil raid[i] = nil removeEntry(newerVersionPerson, i) fireEvent("raidLeave", i) -- backwards compatibility fireEvent("DBM_raidLeave", i) else v.updated = nil if v.revision and v.rank > 0 and (v.enabledIcons or "") == "true" then iconSeter[#iconSeter + 1] = v.revision.." "..v.name end end end if #iconSeter > 0 then tsort(iconSeter, function(a, b) return a > b end) local elected = iconSeter[1] if playerName == elected:sub(elected:find(" ") + 1) then--Highest revision in raid, auto allow, period, even if out of date, you're revision in raid that has assist private.enableIcons = true DBM:Debug("You have been elected as primary icon setter for raid for having newest revision in raid that has assist/lead", 2) end --Initiate backups that at least have latest version, in case the main elect doesn't have icons enabled for i = 2, 3 do--Allow top 3 revisions in raid to set icons, instead of just top one local electedBackup = iconSeter[i] if updateNotificationDisplayed == 0 and electedBackup and playerName == electedBackup:sub(elected:find(" ") + 1) then private.enableIcons = true DBM:Debug("You have been elected as one of 2 backup icon setters in raid that have assist/lead", 2) end end end elseif IsInGroup() then if not inRaid then -- joined a new party twipe(newerVersionPerson)--Wipe guild syncs on group join so we trigger a new out of date notice on raid join even if one triggered on login inRaid = true sendSync("DBMv4-Ver", "Hi!") if dbmIsEnabled then SendAddonMessage("BWVQ3", bwVersionQueryString:format(0), "PARTY") end fireEvent("partyJoin", playerName) -- backwards compatibility fireEvent("DBM_partyJoin", playerName) end for i = 0, GetNumPartyMembers() do local id if (i == 0) then id = "player" else id = "party"..i end local name = GetUnitName(id, true) local shortname = UnitName(id) local rank = UnitIsPartyLeader(id) and 2 or 0 local _, className = UnitClass(id) if (not raid[name]) and inRaid then fireEvent("partyJoin", name) -- backwards compatibility fireEvent("DBM_partyJoin", name) end raid[name] = raid[name] or {} raid[name].name = name raid[name].shortname = shortname raid[name].guid = UnitGUID(id) or "" raid[name].rank = rank raid[name].class = className raid[name].id = id raid[name].groupId = i raid[name].updated = true raidGuids[UnitGUID(id) or ""] = name if rank >= 1 then lastGroupLeader = name end end private.enableIcons = false twipe(iconSeter) for k, v in pairs(raid) do if not v.updated then raidGuids[v.guid] = nil raid[k] = nil removeEntry(newerVersionPerson, k) fireEvent("partyLeave", k) -- backwards compatibility fireEvent("DBM_partyLeave", k) else v.updated = nil if v.revision and v.rank > 0 and (v.enabledIcons or "") == "true" then iconSeter[#iconSeter + 1] = v.revision.." "..v.name end end end if #iconSeter > 0 then tsort(iconSeter, function(a, b) return a > b end) local elected = iconSeter[1] if playerName == elected:sub(elected:find(" ") + 1) then private.enableIcons = true end end else -- left the current group/raid inRaid = false private.enableIcons = true fireEvent("raidLeave", playerName) -- backwards compatibility fireEvent("DBM_raidLeave", playerName) twipe(raid) twipe(newerVersionPerson) -- restore playerinfo into raid table on raidleave. (for solo raid) raid[playerName] = {} raid[playerName].name = playerName raid[playerName].shortname = playerName raid[playerName].guid = UnitGUID("player") or "" -- 2023/04/20: On Warmane, UnitGUID("player") can be nil raid[playerName].rank = 0 raid[playerName].class = playerClass raid[playerName].id = "player" raid[playerName].groupId = 0 raid[playerName].revision = DBM.Revision raid[playerName].version = DBM.ReleaseRevision raid[playerName].displayVersion = DBM.DisplayVersion raid[playerName].locale = GetLocale() raidGuids[UnitGUID("player") or ""] = playerName lastGroupLeader = nil end end function DBM:RAID_ROSTER_UPDATE(force) self:Unschedule(updateAllRoster) if force then updateAllRoster(self) else self:Schedule(1.5, updateAllRoster, self) end end function DBM:PARTY_MEMBERS_CHANGED(force) self:Unschedule(updateAllRoster) if force then updateAllRoster(self) else self:Schedule(1.5, updateAllRoster, self) end end function DBM:GetNumGuildPlayersInZone() -- Classic/BCC only if not IsInGroup() then return 1 end local total = 0 local myGuild = GetGuildInfo("player") if IsInRaid() then for i = 1, GetNumGroupMembers() do local unitGuild = GetGuildInfo("raid"..i)--This api only works if unit is nearby, so don't even need to check location if unitGuild and unitGuild == myGuild then total = total + 1 end end else total = 1--add player/self for "party" count for i = 1, GetNumSubgroupMembers() do local unitGuild = GetGuildInfo("party"..i)--This api only works if unit is nearby, so don't even need to check location if unitGuild and unitGuild == myGuild then total = total + 1 end end end return total end function DBM:GetRaidRank(name) name = name or playerName if name == playerName then--If name is player, try to get actual rank. Because raid[name].rank sometimes seems returning 0 even player is promoted. return UnitIsPartyLeader("player") and 2 or UnitIsRaidOfficer("player") and 1 or 0 else return (raid[name] and raid[name].rank) or 0 end end function DBM:GetRaidSubgroup(name) return (raid[name] and raid[name].subgroup) or 0 end function DBM:GetRaidRoster(name) if name then return raid[name] ~= nil end return raid end function DBM:GetRaidClass(name) if raid[name] then return raid[name].class or "UNKNOWN", raid[name].id and GetRaidTargetIndex(raid[name].id) or 0 else return "UNKNOWN", 0 end end function DBM:GetRaidUnitId(name) for i = 1, 5 do local unitId = "boss"..i local bossName = UnitName(unitId) if bossName and bossName == name then return unitId end end return raid[name] and raid[name].id end local fullUids = { "boss1", "boss2", "boss3", "boss4", "boss5", "mouseover", "target", "focus", "focustarget", "targettarget", "mouseovertarget", "party1target", "party2target", "party3target", "party4target", "raid1target", "raid2target", "raid3target", "raid4target", "raid5target", "raid6target", "raid7target", "raid8target", "raid9target", "raid10target", "raid11target", "raid12target", "raid13target", "raid14target", "raid15target", "raid16target", "raid17target", "raid18target", "raid19target", "raid20target", "raid21target", "raid22target", "raid23target", "raid24target", "raid25target", "raid26target", "raid27target", "raid28target", "raid29target", "raid30target", "raid31target", "raid32target", "raid33target", "raid34target", "raid35target", "raid36target", "raid37target", "raid38target", "raid39target", "raid40target" } local bossTargetuIds = { "boss1", "boss2", "boss3", "boss4", "boss5", "focus", "target", "mouseover" } --Not to be confused with GetUnitIdFromCID function DBM:GetUnitIdFromGUID(guid, scanOnlyBoss) local usedTable = scanOnlyBoss and bossTargetuIds or fullUids for _, unitId in ipairs(usedTable) do local guid2 = UnitGUID(unitId) if guid == guid2 then return unitId end end end function DBM:GetPlayerGUIDByName(name) return raid[name] and raid[name].guid end function DBM:GetMyPlayerInfo() return playerName, playerLevel, playerRealm end --Intentionally grabs server name at all times, usually to make sure warning/infoframe target info can name match the combat log in the table function DBM:GetUnitFullName(uId) if not uId then return end return GetUnitName(uId, true) end --Shortens name but custom so we add * to off realmers instead of stripping it entirely like Ambiguate does --Technically GetUnitName without "true" can be used to shorten name to "name (*)" but "name*" is even shorter which is why we do this function DBM:GetShortServerName(name) if not self.Options.StripServerName then return name end--If strip is disabled, just return name local shortName, serverName = string.split("-", name) if serverName and serverName ~= playerRealm then return shortName.."*" else return name end end function DBM:GetFullPlayerNameByGUID(guid) return raidGuids[guid] end function DBM:GetPlayerNameByGUID(guid) return raidGuids[guid] and raidGuids[guid]:gsub("%-.*$", "") end function DBM:GetGroupId(name, higher) local raidMember = raid[name] or raid[GetUnitName(name, true) or ""] return raidMember and raidMember.groupId or UnitInRaid(name) or higher and 99 or 0 end end do -- yes, we still do avoid memory allocations during fights; so we don't use a closure around a counter here -- this seems to be the easiest way to write an iterator that returns the unit id *string* as first argument without a memory allocation local function raidIterator(groupMembers, uId) local a, b = uId:byte(-2, -1) local i = (a >= 0x30 and a <= 0x39 and (a - 0x30) * 10 or 0) + b - 0x30 if i < groupMembers then return "raid" .. i + 1, i + 1 end end local function partyIterator(groupMembers, uId) if not uId then return "player", 0 elseif uId == "player" then if groupMembers > 0 then return "party1", 1 end else local i = uId:byte(-1) - 0x30 if i < groupMembers then return "party" .. i + 1, i + 1 end end end local function soloIterator(_, state) if not state then -- no state == first call return "player", 0 end end -- returns the unit ids of all raid or party members, including the player's own id -- limitations: will break if there are ever raids with more than 99 players or partys with more than 10 function DBM:GetGroupMembers() if IsInRaid() then return raidIterator, GetNumGroupMembers(), "raid0" elseif IsInGroup() then return partyIterator, GetNumSubgroupMembers(), nil else -- solo! return soloIterator, nil, nil end end end function DBM:GetNumGroupMembers() return IsInGroup() and GetNumGroupMembers() or 1 end --For returning the number of players actually in zone with us for status functions --This is very touchy though and will fail if everyone isn't in same SUB zone (ie same room/area) --It should work for pretty much any case but outdoor function DBM:GetNumRealGroupMembers() if not IsInInstance() then--Not accurate outside of instances (such as world bosses) return IsInGroup() and GetNumGroupMembers() or 1--So just return regular group members. end local playerCurrentZone = GetRealZoneText() local realGroupMembers = 0 if GetNumRaidMembers() > 0 then for i = 1, GetNumRaidMembers() do local _, _, _, _, _, _, targetCurrentZone = GetRaidRosterInfo(i) if targetCurrentZone == playerCurrentZone then realGroupMembers = realGroupMembers + 1 end end elseif GetNumPartyMembers() > 0 then local numPartyMembers = GetRealNumPartyMembers() -- this function return is terrible, but I didn't find any workaround to check unit zone, so for now this will do realGroupMembers = numPartyMembers else return 1 end return realGroupMembers end function DBM:GetUnitCreatureId(uId) return self:GetCIDFromGUID(UnitGUID(uId)) end function DBM:GetCIDFromGUID(guid) return guid and tonumber(guid:sub(8, 12), 16) or 0 end function DBM:IsNonPlayableGUID(guid) if not guid or type(guid) ~= "string" then return false end local guidType = tonumber(guid:sub(5,5), 16) return guidType and (guidType == 3 or guidType == 5) -- Creature and NPC. To determine, add pet or not? end function DBM:IsCreatureGUID(guid) if bband(guid:sub(1, 5), 0x00F) == 3 or bband(guid:sub(1, 5), 0x00F) == 5 then return true end return false end function DBM:GetBossUnitId(name, bossOnly)--Deprecated, only old mods use this local returnUnitID for i = 1, 5 do if UnitName("boss" .. i) == name then returnUnitID = "boss"..i end end if not returnUnitID and not bossOnly then for uId in DBM:GetGroupMembers() do if UnitName(uId .. "target") == name and not UnitIsPlayer(uId .. "target") then returnUnitID = uId.."target" end end end return returnUnitID end --Not to be confused with GetUnitIdFromGUID function DBM:GetUnitIdFromCID(creatureID, bossOnly) local returnUnitID for i = 1, 5 do local unitId = "boss"..i local bossGUID = UnitGUID(unitId) local cid = self:GetCIDFromGUID(bossGUID) if cid == creatureID then returnUnitID = unitId end end --Didn't find valid unitID from boss units, scan raid targets if not returnUnitID and not bossOnly then for uId in DBM:GetGroupMembers() do -- Do not use self on this function, because self might be bossModPrototype local unitId = uId .. "target" local bossGUID = UnitGUID(unitId) local cid = self:GetCIDFromGUID(bossGUID) if cid == creatureID then returnUnitID = unitId end end end return returnUnitID end function DBM:CheckNearby(range, targetname) if not targetname and DBM.RangeCheck:GetDistanceAll(range) then return true--No target name means check if anyone is near self, period else local uId = DBM:GetRaidUnitId(targetname) if uId and not UnitIsUnit("player", uId) then local inRange = DBM.RangeCheck:GetDistance(uId) DBM:Debug("CheckNearby fired for targetname: " .. targetname .. " (" .. uId .. ") and range: ".. range .. "yd. Actual distance found: " .. inRange, 3) -- self can be mod too if inRange and inRange < range + 0.5 then return true end end end return false end function DBM:IsTrivial(customLevel) --if timewalking or mythic it's always non trivial content if difficultyIndex == 24 or difficultyIndex == 33 or difficultyIndex == 23 then return false end --if custom level passed, we always hard check that level for trivial vs non trivial if customLevel then--Custom level parameter if playerLevel >= customLevel then return true end else --First, auto bail and return non trivial if it's an instance not in table to prevent nil error if not instanceDifficultyBylevel[LastInstanceMapID] then return false end --Content is trivial if player level is 10 higher than content involved if playerLevel >= (instanceDifficultyBylevel[LastInstanceMapID][1]+15) then return true end end return false end --------------- -- Options -- --------------- function DBM:AddDefaultOptions(t1, t2) for i, v in pairs(t2) do if t1[i] == nil then t1[i] = v elseif type(v) == "table" and type(t1[i]) == "table" then self:AddDefaultOptions(t1[i], v) end end end function DBM:LoadModOptions(modId, inCombat, first, profileName, profileID) local oldSavedVarsName = modId:gsub("-", "").."_SavedVars" local savedVarsName = modId:gsub("-", "").."_AllSavedVars" local savedStatsName = modId:gsub("-", "").."_SavedStats" local fullname = profileName or self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" currentModProfileScope = fullname self:Debug("using profile namespace " .. fullname, 3) if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end local profileNum = profileID or playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 if not _G[savedVarsName] then _G[savedVarsName] = {} end local savedOptions = _G[savedVarsName][fullname] or {} local savedStats = _G[savedStatsName] or {} local existId = {} for _, id in ipairs(self.ModLists[modId]) do existId[id] = true -- init if not savedOptions[id] then savedOptions[id] = {} end local mod = self:GetModByName(id) -- migrate old option if _G[oldSavedVarsName] and _G[oldSavedVarsName][id] then self:Debug("LoadModOptions: Found old options, importing", 2) local oldTable = _G[oldSavedVarsName][id] _G[oldSavedVarsName][id] = nil savedOptions[id][profileNum] = oldTable end if not savedOptions[id][profileNum] and not first then--previous profile not found. load defaults self:Debug("LoadModOptions: No saved options, creating defaults for profile "..profileNum, 2) local defaultOptions = {} for option, optionValue in pairs(mod.DefaultOptions) do if type(optionValue) == "table" then optionValue = optionValue.value elseif type(optionValue) == "string" then optionValue = mod:GetRoleFlagValue(optionValue) end defaultOptions[option] = optionValue end savedOptions[id][profileNum] = defaultOptions else savedOptions[id][profileNum] = savedOptions[id][profileNum] or mod.Options --check new option for option, optionValue in pairs(mod.DefaultOptions) do if savedOptions[id][profileNum][option] == nil then if type(optionValue) == "table" then optionValue = optionValue.value elseif type(optionValue) == "string" then optionValue = mod:GetRoleFlagValue(optionValue) end savedOptions[id][profileNum][option] = optionValue end end --clean unused saved variables (do not work on combat load) if not inCombat then for option, _ in pairs(savedOptions[id][profileNum]) do if mod.DefaultOptions[option] == nil and not (option:find("talent") or option:find("FastestClear") or option:find("CVAR") or option:find("RestoreSetting") or option:find("Permanent")) then -- added Permanent for mod options that I want to keep between sessions e.g. Frame positions savedOptions[id][profileNum][option] = nil elseif mod.DefaultOptions[option] and (type(mod.DefaultOptions[option]) == "table") then--recover broken dropdown option if savedOptions[id][profileNum][option] and (type(savedOptions[id][profileNum][option]) == "boolean") then savedOptions[id][profileNum][option] = mod.DefaultOptions[option].value end --Fix default options for colored bar by type that were set to 0 because no defaults existed at time they were created, but do now. elseif option:find("TColor") then if savedOptions[id][profileNum][option] and savedOptions[id][profileNum][option] == 0 and mod.DefaultOptions[option] and mod.DefaultOptions[option] ~= 0 then savedOptions[id][profileNum][option] = mod.DefaultOptions[option] self:Debug("Migrated "..option.." to option defaults") end --Fix options for custom special warning sounds not in addons folder that are not using soundkit IDs --[[elseif option:find("SWSound") then if savedOptions[id][profileNum][option] and (type(savedOptions[id][profileNum][option]) == "string") and (savedOptions[id][profileNum][option] ~= "") and (savedOptions[id][profileNum][option] ~= "None") then local searchMsg = (savedOptions[id][profileNum][option]):lower() if not searchMsg:find("addons") then savedOptions[id][profileNum][option] = mod.DefaultOptions[option] self:Debug("Migrated "..option.." to option defaults") end end]] end end end end --apply saved option to actual option table mod.Options = savedOptions[id][profileNum] --stats init (only first load) if first then savedStats[id] = savedStats[id] or {} local stats = savedStats[id] stats.normalKills = stats.normalKills or 0 stats.normalPulls = stats.normalPulls or 0 stats.heroicKills = stats.heroicKills or 0 stats.heroicPulls = stats.heroicPulls or 0 stats.mythicKills = stats.mythicKills or 0 stats.mythicPulls = stats.mythicPulls or 0 stats.normal25Kills = stats.normal25Kills or 0 stats.normal25Pulls = stats.normal25Pulls or 0 stats.heroic25Kills = stats.heroic25Kills or 0 stats.heroic25Pulls = stats.heroic25Pulls or 0 stats.timewalkerKills = stats.timewalkerKills or 0 stats.timewalkerPulls = stats.timewalkerPulls or 0 mod.stats = stats --run OnInitialize function if mod.OnInitialize then mod:OnInitialize(mod) end end end --clean unused saved variables (do not work on combat load) --Why are saved options cleaned twice? if not inCombat then for id, _ in pairs(savedOptions) do if not existId[id] and not id:find("talent") then savedOptions[id] = nil end end for id, _ in pairs(savedStats) do if not existId[id] then savedStats[id] = nil end end end _G[savedVarsName][fullname] = savedOptions if profileNum > 0 then _G[savedVarsName][fullname]["talent"..profileNum] = currentSpecName currentModProfileName = ("%s (%s%d-%s)"):format(fullname, L.SPECIALIZATION, profileNum, currentSpecName) -- Example: Global (Specialization1-Holy) self:Debug("LoadModOptions-"..modId..": Finished loading "..(_G[savedVarsName][fullname]["talent"..profileNum] or CL.UNKNOWN)) end _G[savedStatsName] = savedStats local optionsFrame = _G["DBM_GUI_OptionsFrame"] if not first and DBM_GUI and DBM_GUI.currentViewing and optionsFrame:IsShown() then optionsFrame:DisplayFrame(DBM_GUI.currentViewing) end table.wipe(checkDuplicateObjects) end function DBM:SpecChanged(force) if not force and not DBM_UseDualProfile then return end --Load Options again. self:Debug("SpecChanged fired", 2) for modId, _ in pairs(self.ModLists) do self:LoadModOptions(modId) end end function DBM:PLAYER_LEVEL_CHANGED() playerLevel = UnitLevel("player") if playerLevel < 15 and playerLevel > 9 then self:CHARACTER_POINTS_CHANGED() end end function DBM:LoadAllModDefaultOption(modId) -- modId is string like "DBM-Highmaul" if not modId or not self.ModLists[modId] then return end -- prevent error if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end -- variable init local savedVarsName = modId:gsub("-", "").."_AllSavedVars" local fullname = self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" local profileNum = playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 -- prevent nil table error if not _G[savedVarsName] then _G[savedVarsName] = {} end for _, id in ipairs(self.ModLists[modId]) do -- prevent nil table error if not _G[savedVarsName][fullname][id] then _G[savedVarsName][fullname][id] = {} end -- actual do load default option local mod = self:GetModByName(id) local defaultOptions = {} for option, optionValue in pairs(mod.DefaultOptions) do if type(optionValue) == "table" then optionValue = optionValue.value elseif type(optionValue) == "string" then optionValue = mod:GetRoleFlagValue(optionValue) end defaultOptions[option] = optionValue end mod.Options = {} mod.Options = defaultOptions _G[savedVarsName][fullname][id][profileNum] = {} _G[savedVarsName][fullname][id][profileNum] = mod.Options end self:AddMsg(L.ALLMOD_DEFAULT_LOADED) -- update gui if showing local optionsFrame = _G["DBM_GUI_OptionsFrame"] if DBM_GUI and DBM_GUI.currentViewing and optionsFrame:IsShown() then optionsFrame:DisplayFrame(DBM_GUI.currentViewing) end end function DBM:LoadModDefaultOption(mod) -- mod must be table if not mod then return end -- prevent error if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end -- variable init local savedVarsName = (mod.modId):gsub("-", "").."_AllSavedVars" local fullname = self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" local profileNum = playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 -- prevent nil table error if not _G[savedVarsName] then _G[savedVarsName] = {} end if not _G[savedVarsName][fullname] then _G[savedVarsName][fullname] = {} end if not _G[savedVarsName][fullname][mod.id] then _G[savedVarsName][fullname][mod.id] = {} end -- do load default local defaultOptions = {} for option, optionValue in pairs(mod.DefaultOptions) do if type(optionValue) == "table" then optionValue = optionValue.value elseif type(optionValue) == "string" then optionValue = mod:GetRoleFlagValue(optionValue) end defaultOptions[option] = optionValue end mod.Options = {} mod.Options = defaultOptions _G[savedVarsName][fullname][mod.id][profileNum] = {} _G[savedVarsName][fullname][mod.id][profileNum] = mod.Options self:AddMsg(L.MOD_DEFAULT_LOADED) -- update gui if showing local optionsFrame = _G["DBM_GUI_OptionsFrame"] if DBM_GUI and DBM_GUI.currentViewing and optionsFrame:IsShown() then optionsFrame:DisplayFrame(DBM_GUI.currentViewing) end end function DBM:CopyAllModOption(modId, sourceName, sourceProfile) -- modId is string like "DBM-Highmaul" if not modId or not sourceName or not sourceProfile or not DBM.ModLists[modId] then return end -- prevent error if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end -- variable init local savedVarsName = modId:gsub("-", "").."_AllSavedVars" local targetName = self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" local targetProfile = playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 -- do not copy setting itself if targetName == sourceName and targetProfile == sourceProfile then self:AddMsg(L.MPROFILE_COPY_SELF_ERROR) return end -- prevent nil table error if not _G[savedVarsName] then _G[savedVarsName] = {} end -- check source is exist if not _G[savedVarsName][sourceName] then self:AddMsg(L.MPROFILE_COPY_S_ERROR) return end for _, id in ipairs(self.ModLists[modId]) do -- check source is exist if not _G[savedVarsName][sourceName][id] then self:AddMsg(L.MPROFILE_COPY_S_ERROR) return end if not _G[savedVarsName][sourceName][id][sourceProfile] then self:AddMsg(L.MPROFILE_COPY_S_ERROR) return end -- prevent nil table error if not _G[savedVarsName][targetName][id] then _G[savedVarsName][targetName][id] = {} end -- copy table _G[savedVarsName][targetName][id][targetProfile] = {}--clear before copy _G[savedVarsName][targetName][id][targetProfile] = _G[savedVarsName][sourceName][id][sourceProfile] --check new option local mod = self:GetModByName(id) for option, optionValue in pairs(mod.Options) do if _G[savedVarsName][targetName][id][targetProfile][option] == nil then _G[savedVarsName][targetName][id][targetProfile][option] = optionValue end end -- apply to options table mod.Options = {} mod.Options = _G[savedVarsName][targetName][id][targetProfile] end if targetProfile > 0 then _G[savedVarsName][targetName]["talent"..targetProfile] = currentSpecName end self:AddMsg(L.MPROFILE_COPY_SUCCESS:format(sourceName, sourceProfile)) -- update gui if showing local optionsFrame = _G["DBM_GUI_OptionsFrame"] if DBM_GUI and DBM_GUI.currentViewing and optionsFrame:IsShown() then optionsFrame:DisplayFrame(DBM_GUI.currentViewing) end end function DBM:CopyAllModTypeOption(modId, sourceName, sourceProfile, Type) -- modId is string like "DBM-Highmaul" if not modId or not sourceName or not sourceProfile or not self.ModLists[modId] or not Type then return end -- prevent error if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end -- variable init local savedVarsName = modId:gsub("-", "").."_AllSavedVars" local targetName = self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" local targetProfile = playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 -- do not copy setting itself if targetName == sourceName and targetProfile == sourceProfile then self:AddMsg(L.MPROFILE_COPYS_SELF_ERROR) return end -- prevent nil table error if not _G[savedVarsName] then _G[savedVarsName] = {} end -- check source is exist if not _G[savedVarsName][sourceName] then self:AddMsg(L.MPROFILE_COPYS_S_ERROR) return end for _, id in ipairs(self.ModLists[modId]) do -- check source is exist if not _G[savedVarsName][sourceName][id] then self:AddMsg(L.MPROFILE_COPYS_S_ERROR) return end if not _G[savedVarsName][sourceName][id][sourceProfile] then self:AddMsg(L.MPROFILE_COPYS_S_ERROR) return end -- prevent nil table error if not _G[savedVarsName][targetName][id] then _G[savedVarsName][targetName][id] = {} end -- copy table for option, optionValue in pairs(_G[savedVarsName][sourceName][id][sourceProfile]) do if option:find(Type) then _G[savedVarsName][targetName][id][targetProfile][option] = optionValue end end -- apply to options table local mod = self:GetModByName(id) mod.Options = {} mod.Options = _G[savedVarsName][targetName][id][targetProfile] end if targetProfile > 0 then _G[savedVarsName][targetName]["talent"..targetProfile] = currentSpecName end self:AddMsg(L.MPROFILE_COPYS_SUCCESS:format(sourceName, sourceProfile)) -- update gui if showing local optionsFrame = _G["DBM_GUI_OptionsFrame"] if DBM_GUI and DBM_GUI.currentViewing and optionsFrame:IsShown() then optionsFrame:DisplayFrame(DBM_GUI.currentViewing) end end function DBM:DeleteAllModOption(modId, name, profile) -- modId is string like "DBM-Highmaul" if not modId or not name or not profile or not self.ModLists[modId] then return end -- prevent error if not currentSpecID or not currentSpecGroup or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end -- variable init local savedVarsName = modId:gsub("-", "").."_AllSavedVars" local fullname = self.Options.PerCharacterSettings and playerName.."-"..playerRealm or "Global" local profileNum = playerLevel > 9 and DBM_UseDualProfile and currentSpecGroup or 0 -- cannot delete current profile. if fullname == name and profileNum == profile then self:AddMsg(L.MPROFILE_DELETE_SELF_ERROR) return end -- prevent nil table error if not _G[savedVarsName] then _G[savedVarsName] = {} end if not _G[savedVarsName][name] then self:AddMsg(L.MPROFILE_DELETE_S_ERROR) return end for _, id in ipairs(self.ModLists[modId]) do -- prevent nil table error if not _G[savedVarsName][name][id] then self:AddMsg(L.MPROFILE_DELETE_S_ERROR) return end -- delete _G[savedVarsName][name][id][profile] = nil end _G[savedVarsName][name]["talent"..profile] = nil self:AddMsg(L.MPROFILE_DELETE_SUCCESS:format(name, profile)) end function DBM:ClearAllStats(modId) -- modId is string like "DBM-Highmaul" if not modId or not self.ModLists[modId] then return end -- variable init local savedStatsName = modId:gsub("-", "").."_SavedStats" -- prevent nil table error if not _G[savedStatsName] then _G[savedStatsName] = {} end for _, id in ipairs(self.ModLists[modId]) do local mod = self:GetModByName(id) -- prevent nil table error local defaultStats = {} defaultStats.normalKills = 0 defaultStats.normalPulls = 0 defaultStats.heroicKills = 0 defaultStats.heroicPulls = 0 defaultStats.mythicKills = 0 defaultStats.mythicPulls = 0 defaultStats.normal25Kills = 0 defaultStats.normal25Pulls = 0 defaultStats.heroic25Kills = 0 defaultStats.heroic25Pulls = 0 defaultStats.timewalkerKills = 0 defaultStats.timewalkerPulls = 0 mod.stats = {} mod.stats = defaultStats _G[savedStatsName][id] = {} _G[savedStatsName][id] = defaultStats end self:AddMsg(L.ALLMOD_STATS_RESETED) DBM_GUI:UpdateModList() end function DBM:CurrentModProfile() local profile = currentModProfileName or currentModProfileScope .. " (All)" -- Even though this function is not mod specific, the profile name is applied equally to all loaded mods in ModList. self:Debug("Currently loaded mod profile: " .. profile, 3) return profile end do local gsub = string.gsub local function FixElv(optionName) if DBM.Options[optionName]:lower():find("interface\\addons\\elvui\\core\\media\\") then -- Retail ElvUI structure DBM.Options[optionName] = gsub(DBM.Options[optionName], gsub("Interface\\AddOns\\ElvUI\\Core\\Media\\", "(%a)", function(v) return "[" .. v:upper() .. v:lower() .. "]" end), "Interface\\AddOns\\ElvUI\\Media\\") -- 3.3.5a ElvUI structure end end function loadOptions(self) --init if not DBM_AllSavedOptions then DBM_AllSavedOptions = {} end usedProfile = DBM_UsedProfile or usedProfile if not usedProfile or (usedProfile ~= "Default" and not DBM_AllSavedOptions[usedProfile]) then -- DBM.Option is not loaded. so use print function print(L.PROFILE_NOT_FOUND) usedProfile = "Default" end DBM_UsedProfile = usedProfile --migrate old options if DBM_SavedOptions and not DBM_AllSavedOptions[usedProfile] then DBM_AllSavedOptions[usedProfile] = DBM_SavedOptions end self.Options = DBM_AllSavedOptions[usedProfile] or {} self:Enable() self:AddDefaultOptions(self.Options, self.DefaultOptions) DBM_AllSavedOptions[usedProfile] = self.Options -- force enable dual profile (change default) --[[ Custom edit: disabled override, since having this as true requires user to know how mod profiles work and wonder why the mod profile they had previously configured is not "working" if DBM_CharSavedRevision < 12976 then if playerClass ~= "MAGE" and playerClass ~= "WARLOCK" and playerClass ~= "ROGUE" then DBM_UseDualProfile = true end end --]] DBM_CharSavedRevision = self.Revision -- load special warning options self:UpdateWarningOptions() self:UpdateSpecialWarningOptions() if BossBanner then BossBanner:UpdateStyle() end self.Options.CoreSavedRevision = self.Revision --Fix fonts if they are nil if not self.Options.WarningFont then self.Options.WarningFont = "standardFont" end if not self.Options.SpecialWarningFont then self.Options.SpecialWarningFont = "standardFont" end --If users previous voice pack was not set to none, don't force change it to VEM, honor whatever it was set to before if self.Options.ChosenVoicePack and self.Options.ChosenVoicePack ~= "None" then self.Options.ChosenVoicePack2 = self.Options.ChosenVoicePack self.Options.ChosenVoicePack = nil end -- Migrate ElvUI changes for _, setting in ipairs({ -- Sounds "RaidWarningSound", "SpecialWarningSound", "SpecialWarningSound2", "SpecialWarningSound3", "SpecialWarningSound4", "SpecialWarningSound5", "EventSoundVictory2", "EventSoundWipe", "EventSoundEngage2", "EventSoundMusic", "EventSoundDungeonBGM", "RangeFrameSound1", "RangeFrameSound2", -- Fonts "InfoFrameFont", "WarningFont", "SpecialWarningFont" }) do if type(self.Options[setting]) == "string" and self.Options[setting]:lower() ~= "none" then FixElv(setting) end end end end function DBM:LFG_PROPOSAL_SHOW() local timerEnabled = self.Options.ShowQueuePop and not self.Options.DontShowEventTimers if timerEnabled then DBT:CreateBar(40, L.LFG_INVITE, "Interface\\Icons\\Spell_Holy_BorrowedTime") fireEvent("DBM_TimerStart", "DBMLFGTimer", L.LFG_INVITE, 40, "Interface\\Icons\\Spell_Holy_BorrowedTime", "extratimer", nil, 0) end fireEvent("DBM_TimerBegin", "DBMLFGTimer", L.LFG_INVITE, 40, "Interface\\Icons\\Spell_Holy_BorrowedTime", "extratimer", nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, timerEnabled) if self.Options.LFDEnhance then self:FlashClientIcon(true) self:PlaySound(8960, true)--Because regular sound uses SFX channel which is too low of volume most of time end end function DBM:LFG_PROPOSAL_FAILED() DBT:CancelBar(L.LFG_INVITE) fireEvent("DBM_TimerStop", "DBMLFGTimer") end function DBM:LFG_PROPOSAL_SUCCEEDED() DBT:CancelBar(L.LFG_INVITE) fireEvent("DBM_TimerStop", "DBMLFGTimer") end function DBM:LFG_UPDATE() local _, joined = GetLFGInfoServer() if not joined then DBT:CancelBar(L.LFG_INVITE) fireEvent("DBM_TimerStop", "DBMLFGTimer") end end function DBM:READY_CHECK() if self.Options.RLReadyCheckSound then--readycheck sound, if ora3 not installed (bad to have 2 mods do it) self:FlashClientIcon(true) if not BINDING_HEADER_oRA3 then self:PlaySound(8960, true)--Because regular sound uses SFX channel which is too low of volume most of time end end self:TransitionToDungeonBGM(false, true) self:Schedule(4, self.TransitionToDungeonBGM, self) end do local function throttledTalentCheck(self) local lastSpecID = currentSpecID if GetNumTalentTabs() == 0 then self:Debug("No talents detected. Registering PLAYER_ALIVE for talent data") self:RegisterEvents("PLAYER_ALIVE") end self:SetCurrentSpecInfo() -- always delay a bit (previously had it at 0.1s) because Unit API like UnitExists and UnitClass were returning nil on this event. if not InCombatLockdown() then --Refresh entire spec table if not in combat DBMExtraGlobal:rebuildSpecTable() end if currentSpecID ~= lastSpecID then--Don't fire specchanged unless spec actually has changed. self:SpecChanged() end end --Throttle checks on talent point updates so that if multiple CHARACTER_POINTS_CHANGED fire in succession --It doesnt spam DBMs code and cause performance lag function DBM:CHARACTER_POINTS_CHANGED() -- Classic/BCC support self:Unschedule(throttledTalentCheck) self:Schedule(2, throttledTalentCheck, self) end --Throttle this api too. DBM.PLAYER_TALENT_UPDATE = DBM.CHARACTER_POINTS_CHANGED -- Wrath support -- This workaround is likely not needed anymore since talent check is now delayed by two seconds function DBM:PLAYER_ALIVE() self:CHARACTER_POINTS_CHANGED() mainFrame:UnregisterEvent("PLAYER_ALIVE") end end do local function AcceptPartyInvite() AcceptGroup() for i=1, STATICPOPUP_NUMDIALOGS do local whichDialog = _G["StaticPopup"..i].which if whichDialog == "PARTY_INVITE" or whichDialog == "PARTY_INVITE_XREALM" then _G["StaticPopup"..i].inviteAccepted = 1 StaticPopup_Hide(whichDialog) break end end end function DBM:PARTY_INVITE_REQUEST(sender) --First off, if you are in queue for something, lets not allow guildies or friends boot you from it. if IsInInstance() or GetLFGMode() then return end --Checks friends and guildies if self.Options.AutoAcceptFriendInvite then if checkForSafeSender(sender, self.Options.AutoAcceptFriendInvite, self.Options.AutoAcceptGuildInvite) then AcceptPartyInvite() end end end end local function GetBattlefieldFaction(unit) -- workaround to detect faction in Cross-Faction BG if not unit then return UnitFactionGroup("player") end local numScores = GetNumBattlefieldScores() if numScores == 0 then return UnitFactionGroup("player") else local unitName = GetUnitName(unit, true) for i = 1, numScores do local name, _, _, _, _, faction = GetBattlefieldScore(i) if name == unitName then if faction == 0 then return "Horde" else return "Alliance" end end end end end function DBM:UPDATE_BATTLEFIELD_STATUS(queueID) for i = 1, 2 do if GetBattlefieldStatus(i) == "confirm" then local timerEnabled = self.Options.ShowQueuePop and not self.Options.DontShowEventTimers queuedBattlefield[i] = select(2, GetBattlefieldStatus(i)) local expiration = GetBattlefieldPortExpiration(queueID) local timerIcon = GetBattlefieldFaction("player") == "Alliance" and "Interface\\Icons\\INV_BannerPVP_02" or "Interface\\Icons\\INV_BannerPVP_01" if timerEnabled then DBT:CreateBar(expiration or 85, queuedBattlefield[i], timerIcon) self:FlashClientIcon() fireEvent("DBM_TimerStart", "DBMBFSTimer", queuedBattlefield[i], expiration or 85, tostring(timerIcon), "extratimer", nil, 0) end fireEvent("DBM_TimerBegin", "DBMBFSTimer", queuedBattlefield[i], expiration or 85, tostring(timerIcon), "extratimer", nil, 0, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, timerEnabled) if self.Options.LFDEnhance then self:PlaySound(8960, true)--Because regular sound uses SFX channel which is too low of volume most of time end elseif queuedBattlefield[i] then DBT:CancelBar(queuedBattlefield[i]) fireEvent("DBM_TimerStop", "DBMBFSTimer") tremove(queuedBattlefield, i) end end end -------------------------------- -- Load Boss Mods on Demand -- -------------------------------- do local pvpShown = false local classicZones = {[718]=true,[767]=true,[756]=true,[697]=true} local bcZones = {[797]=true,[776]=true,[800]=true,[777]=true,[780]=true,[781]=true,[790]=true,[783]=true,[782]=true} local wrathZones = {[532]=true,[610]=true,[544]=true,[528]=true,[605]=true,[536]=true,[719]=true,[530]=true,[533]=true} local pvpZones = {[402]=true,[444]=true,[462]=true,[483]=true,[513]=true,[541]=true} local oldDungeons = { [689]=true,[705]=true,[700]=true,[681]=true,[691]=true,--Classic [711]=true,[723]=true,[724]=true,[725]=true,[726]=true,[727]=true,[728]=true,[729]=true,[730]=true,[731]=true,[732]=true,[733]=true,[734]=true,[735]=true,[798]=true,[799]=true,--BC [523]=true,[534]=true,[522]=true,[535]=true,[531]=true,[526]=true,[527]=true,[521]=true,[529]=true,[524]=true,[825]=true,[537]=true,[603]=true,[602]=true,[604]=true,[543]=true,--Wrath } --This never wants to spam you to use mods for trivial content you don't need mods for. --It's intended to suggest mods for content that's relevant to your level (TW, leveling up in dungeons, or even older raids you can't just roll over) function DBM:CheckAvailableMods() if _G["BigWigs"] then return end--If they are running two boss mods at once, lets assume they are only using DBM for a specific feature (such as brawlers) and not nag if not self:IsTrivial() then if oldDungeons[LastInstanceMapID] and not GetAddOnInfo("DBM-Party-BC") then AddMsg(self, L.MOD_AVAILABLE:format("DBM Dungeon mods")) elseif (classicZones[LastInstanceMapID] or bcZones[LastInstanceMapID]) and not GetAddOnInfo("DBM-BlackTemple") then AddMsg(self, L.MOD_AVAILABLE:format("DBM BC/Vanilla mods")) elseif wrathZones[LastInstanceMapID] and not GetAddOnInfo("DBM-Ulduar") then AddMsg(self, L.MOD_AVAILABLE:format("DBM Wrath of the Lich King mods")) end end local _, instanceType = GetInstanceInfo() if (pvpZones[LastInstanceMapID] or instanceType == "arena") and not GetAddOnInfo("DBM-PvP") and not pvpShown then AddMsg(self, L.MOD_AVAILABLE:format("DBM-PvP")) pvpShown = true end end function DBM:TransitionToDungeonBGM(force, cleanup) if cleanup then--Runs on zone change/cinematic Start (first load delay) and combat end self:Unschedule(self.TransitionToDungeonBGM) if self.Options.RestoreSettingMusic then SetCVar("Sound_EnableMusic", self.Options.RestoreSettingMusic) self.Options.RestoreSettingMusic = nil self:Debug("Restoring Sound_EnableMusic CVAR") end if self.Options.musicPlaying then--Primarily so DBM doesn't call StopMusic unless DBM is one that started it. We don't want to screw with other addons StopMusic() self.Options.musicPlaying = nil self:Debug("Stopping music") end fireEvent("DBM_MusicStop", "ZoneOrCombatEndTransition") return end if LastInstanceType ~= "raid" and LastInstanceType ~= "party" and not force then return end fireEvent("DBM_MusicStart", "RaidOrDungeon") if self.Options.EventSoundDungeonBGM and self.Options.EventSoundDungeonBGM ~= "None" and self.Options.EventSoundDungeonBGM ~= "" and not (self.Options.EventDungMusicMythicFilter and (savedDifficulty == "mythic" or savedDifficulty == "challenge")) then if not self.Options.RestoreSettingMusic then self.Options.RestoreSettingMusic = tonumber(GetCVar("Sound_EnableMusic")) or 1 if self.Options.RestoreSettingMusic == 0 then SetCVar("Sound_EnableMusic", 1) else self.Options.RestoreSettingMusic = nil--Don't actually need it end end local path = "MISSING" if self.Options.EventSoundDungeonBGM == "Random" then local usedTable = self.Options.EventSoundMusicCombined and DBM:GetMusic() or DBM:GetDungeonMusic() if #usedTable >= 3 then local random = random(3, #usedTable) path = usedTable[random].value end else path = self.Options.EventSoundDungeonBGM end if path ~= "MISSING" then PlayMusic(path) self.Options.musicPlaying = true self:Debug("Starting Dungeon music with file: "..path) end end end local function SecondaryLoadCheck(self) local zoneName = GetRealZoneText() local mapID = GetCurrentMapAreaID() > 4 and GetCurrentMapAreaID() or GetCurrentMapContinent() -- workaround to support world bosses mod loading local _, instanceType, difficulty, _, instanceGroupSize = GetInstanceInfo() local currentDifficulty, currentDifficultyText, currentDifficultyIndex = self:GetCurrentInstanceDifficulty() if currentDifficulty and currentDifficulty ~= savedDifficulty then -- added currentDifficulty nil check to prevent this from overriding savedDifficulty when outside instance savedDifficulty, difficultyText = currentDifficulty, currentDifficultyText end self:Debug("Instance Check fired with mapID "..mapID.." and difficulty "..difficulty, 2) -- Auto Logging for entire zone if record only bosses is off if not self.Options.RecordOnlyBosses then if LastInstanceType == "raid" or LastInstanceType == "party" then self:StartLogging(0) else self:StopLogging() end end if self.Options.FixCLEUOnCombatStart then self:Schedule(0.5, CombatLogClearEntries) self:Debug("Scheduled FixCLEU from SecondaryLoadCheck") end --These can still change even if mapID doesn't difficultyIndex = currentDifficultyIndex or difficulty LastGroupSize = instanceGroupSize if LastInstanceMapID == mapID and LastInstanceZoneName == zoneName then -- ZoneName check for non-patch users self:TransitionToDungeonBGM() self:Debug("No action taken because mapID hasn't changed since last check", 2) return end--ID hasn't changed, don't waste cpu doing anything else (example situation, porting into garrosh stage 4 is a loading screen) LastInstanceZoneName = zoneName LastInstanceMapID = mapID DBMScheduler:UpdateZone()--Also update zone in scheduler fireEvent("DBM_UpdateZone", mapID) if instanceType == "none" then LastInstanceType = "none" if not targetEventsRegistered then self:RegisterShortTermEvents("UPDATE_MOUSEOVER_UNIT", "UNIT_TARGET_UNFILTERED") targetEventsRegistered = true end else LastInstanceType = instanceType if targetEventsRegistered then self:UnregisterShortTermEvents() targetEventsRegistered = false end if savedDifficulty == "worldboss" then for i = #inCombat, 1, -1 do self:EndCombat(inCombat[i], true, nil, "Left zone of world boss") end end end -- LoadMod self:LoadModsOnDemand("zone", zoneName, playerRealm) self:LoadModsOnDemand("mapId", mapID, playerRealm) -- if self.Options.ShowReminders then self:CheckAvailableMods() -- end if self:HasMapRestrictions() then self.Arrow:Hide() -- self.HudMap:Disable() if self.RangeCheck:IsRadarShown() then self.RangeCheck:Hide(true) end end end -- Check so that when viewing the world map, the zone doesn't "yank" to the current one local cachedZoneChangedEvent = "" local function IsWorldMapFrameOpen(event) if IsOutdoors() and WorldMapFrame:IsShown() then -- Prioritize ZONE_CHANGED_NEW_AREA if both events got fired over the course of the world map being open if cachedZoneChangedEvent ~= "ZONE_CHANGED_NEW_AREA" then cachedZoneChangedEvent = event end return true end end -- Hook World Map close event local function WorldMapFrameCloseHook() if cachedZoneChangedEvent == "ZONE_CHANGED_NEW_AREA" then DBM:ZONE_CHANGED_NEW_AREA() elseif cachedZoneChangedEvent == "ZONE_CHANGED_INDOORS" then DBM:ZONE_CHANGED_INDOORS() end cachedZoneChangedEvent = "" end WorldMapFrame:HookScript("OnHide", WorldMapFrameCloseHook) function DBM:ZONE_CHANGED_NEW_AREA() if IsWorldMapFrameOpen("ZONE_CHANGED_NEW_AREA") then return end SetMapToCurrentZone() timerRequestInProgress = false self:Debug("ZONE_CHANGED_NEW_AREA fired on zoneID: " .. GetCurrentMapAreaID()) self:Unschedule(SecondaryLoadCheck) --SecondaryLoadCheck(self) self:Schedule(1, SecondaryLoadCheck, self)--Now delayed by one second to work around an issue on 8.x where spec info isn't available yet on reloadui self:TransitionToDungeonBGM(false, true) self:Schedule(5, SecondaryLoadCheck, self) if self.Options.FixCLEUOnCombatStart then self:Schedule(0.5, CombatLogClearEntries) self:Debug("Scheduled FixCLEU from ZONE_CHANGED_NEW_AREA") end end function DBM:ZONE_CHANGED_INDOORS() if IsWorldMapFrameOpen("ZONE_CHANGED_INDOORS") then return end SetMapToCurrentZone() self:Debug("Indoor/SubZone changed on zoneID: " .. GetCurrentMapAreaID() .. " and subZone: " .. GetSubZoneText()) end DBM.ZONE_CHANGED = DBM.ZONE_CHANGED_INDOORS function DBM:LoadModsOnDemand(checkTable, checkValue, checkRealm) self:Debug("LoadModsOnDemand fired") for _, v in ipairs(self.AddOns) do local modTable = v[checkTable] local modRealm = v.realm local modBlockRealm = v.blockRealm local _, _, _, enabled = GetAddOnInfo(v.modId) --self:Debug(v.modId.." is "..enabled, 2) if not IsAddOnLoaded(v.modId) and modTable and checkEntry(modTable, checkValue) then if not checkEntry(modBlockRealm, checkRealm) and (modRealm[1] == "" or checkEntry(modRealm, checkRealm)) then -- custom realm check (for non-WotLK specific mods, like Vanilla Onyxia). Toc only filled if necessary for conditional mod load based on realm if enabled then self:LoadMod(v) else if self.Options.ShowReminders then self:AddMsg(L.LOAD_MOD_DISABLED:format(v.name)) end end end end end end end function DBM:LoadMod(mod, force) if type(mod) ~= "table" then self:Debug("LoadMod failed because mod table not valid") return false end --Block loading world boss mods by zoneID if mod.isWorldBoss and not IsInInstance() and not force then return end if mod.minRevision > self.Revision then if self:AntiSpam(60, "VER_MISMATCH") then--Throttle message in case person keeps trying to load mod (or it's a world boss player keeps targeting self:AddMsg(L.LOAD_MOD_VER_MISMATCH:format(mod.name)) end return end if mod.minExpansion > GetExpansionLevel() then self:AddMsg(L.LOAD_MOD_EXP_MISMATCH:format(mod.name)) return elseif not testBuild and mod.minToc > wowTOC then self:AddMsg(L.LOAD_MOD_TOC_MISMATCH:format(mod.name, mod.minToc)) return end if not currentSpecID or (currentSpecName or "") == playerClass then self:SetCurrentSpecInfo() end self:Debug("LoadAddOn should have fired for "..mod.name, 2) local loaded, reason = LoadAddOn(mod.modId) if not loaded then if reason then if reason == "DISABLED" then self:AddMsg(L.LOAD_MOD_DISABLED:format(mod.name)) else self:AddMsg(L.LOAD_MOD_ERROR:format(tostring(mod.name), tostring(_G["ADDON_"..reason or ""]))) end else self:Debug("LoadAddOn failed and did not give reason") end return false else self:Debug("LoadAddOn should have succeeded for "..mod.name, 2) self:AddMsg(L.LOAD_MOD_SUCCESS:format(tostring(mod.name))) if self.NewerVersion and showConstantReminder >= 1 then AddMsg(self, L.UPDATEREMINDER_HEADER:format(self.NewerVersion, showRealDate(self.HighestRelease))) end self:LoadModOptions(mod.modId, InCombatLockdown(), true) if DBM_GUI then DBM_GUI:UpdateModList() end if LastInstanceType ~= "pvp" and #inCombat == 0 and IsInGroup() then--do timer recovery only mod load if not timerRequestInProgress then timerRequestInProgress = true -- Request timer to 3 person to prevent failure. self:Unschedule(self.RequestTimers) self:Schedule(7, self.RequestTimers, self, 1) self:Schedule(10, self.RequestTimers, self, 2) self:Schedule(13, self.RequestTimers, self, 3) self:Schedule(15, function() timerRequestInProgress = false end) self:RAID_ROSTER_UPDATE(true) end end if not InCombatLockdown() and not UnitAffectingCombat("player") and not IsFalling() then--We loaded in combat but still need to avoid garbage collect in combat collectgarbage("collect") end return true end end do local function loadModByUnit(uId) if IsInInstance() or not UnitIsFriend("player", uId) and UnitIsDead("player") or UnitIsDead(uId) then return end--If you're in an instance no reason to waste cpu. If THE BOSS dead, no reason to load a mod for it. To prevent rare lua error, needed to filter on player dead. local guid = UnitGUID(uId) if guid and DBM:IsCreatureGUID(guid) then local cId = DBM:GetCIDFromGUID(guid) for bosscId, addon in pairs(loadcIds) do local _, _, _, enabled = GetAddOnInfo(addon) if cId and bosscId and cId == bosscId and not IsAddOnLoaded(addon) and enabled ~= 0 then for _, v in ipairs(DBM.AddOns) do if v.modId == addon then DBM:LoadMod(v, true) break end end end end end end --Loading routines checks for world bosses based on target or mouseover. function DBM:UPDATE_MOUSEOVER_UNIT() loadModByUnit("mouseover") end function DBM:UNIT_TARGET_UNFILTERED(uId) loadModByUnit(uId.."target") end end ----------------------------- -- Handle Incoming Syncs -- ----------------------------- do local function checkForActualPull() if DBM.Options.RecordOnlyBosses and #inCombat == 0 then DBM:StopLogging() end end local syncHandlers, whisperSyncHandlers, guildSyncHandlers = {}, {}, {} -- DBM uses the following prefixes since 4.1 as pre-4.1 sync code is going to be incompatible anways, so this is the perfect opportunity to throw away the old and long names -- M = Mod -- C = Combat start -- GC = Guild Combat Start -- IS = Icon set info -- K = Kill -- H = Hi! -- V = Incoming version information -- U = User Timer -- PT = Pull Timer (for sound effects, the timer itself is still sent as a normal timer) -- RT = Request Timers -- CI = Combat Info -- TR = Timer Recovery -- IR = Instance Info Request -- IRE = Instance Info Requested Ended/Canceled -- II = Instance Info -- WBE = World Boss engage info -- WBD = World Boss defeat info -- WBA = World Buff Activation -- RLO = Raid Leader Override -- NS = Note Share -- L = Boss Loot Info syncHandlers["DBMv4-Mod"] = function(sender, mod, revision, event, ...) mod = DBM:GetModByName(mod or "") if mod and event and revision then revision = tonumber(revision) or 0 mod:ReceiveSync(event, sender, revision, ...) end end syncHandlers["DBMv4-NS"] = function(sender, modid, modvar, text, abilityName) if sender == playerName then return end if DBM.Options.BlockNoteShare or InCombatLockdown() or UnitAffectingCombat("player") or IsFalling() or DBM:GetRaidRank(sender) == 0 then return end local _, zoneType = IsInInstance() if zoneType == "pvp" or zoneType == "arena" then return end local mod = DBM:GetModByName(modid or "") local ability = abilityName or CL.UNKNOWN if mod and modvar and text and text ~= "" then if DBM:AntiSpam(5, modvar) then--Don't allow calling same note more than once per 5 seconds DBM:AddMsg(L.NOTE_SHARE_SUCCESS:format(sender, abilityName)) DBM:ShowNoteEditor(mod, modvar, ability, text, sender) else DBM:Debug(sender.." is attempting to send too many notes so notes are being throttled") end else DBM:AddMsg(L.NOTE_SHARE_FAIL:format(sender, ability)) end end syncHandlers["DBMv4-Pull"] = function(sender, delay, mod, modRevision, startHp, _, modHFRevision, event) -- sender, delay, mod, modRevision, startHp, dbmRevision, modHFRevision, event if not dbmIsEnabled or sender == playerName then return end if LastInstanceType == "pvp" then return end if LastInstanceType == "none" and (not UnitAffectingCombat("player") or #inCombat > 0) then--world boss local senderuId = DBM:GetRaidUnitId(sender) if not senderuId then return end--Should never happen, but just in case. If happens, MANY "C" syncs are sent. losing 1 no big deal. local x, y = GetPlayerMapPosition(senderuId) if x == 0 and y == 0 then return end--not same zone local range = DBM.RangeCheck:GetDistance("player", senderuId)--Same zone, so check range if not range or range > 120 then return end end if not cSyncSender[sender] then cSyncSender[sender] = true cSyncReceived = cSyncReceived + 1 if cSyncReceived > 2 then -- need at least 3 sync to combat start. (for security) local lag = select(3, GetNetStats()) / 1000 delay = tonumber(delay or 0) or 0 mod = DBM:GetModByName(mod or "") modRevision = tonumber(modRevision or 0) or 0 --dbmRevision = tonumber(dbmRevision or 0) or 0 modHFRevision = tonumber(modHFRevision or 0) or 0 startHp = tonumber(startHp or -1) or -1 --if dbmRevision < 10481 then return end if mod and delay and (not mod.zones or mod.zones[LastInstanceMapID] or mod.zones[LastInstanceZoneName]) and (not mod.minSyncRevision or modRevision >= mod.minSyncRevision) and not (#inCombat > 0 and mod.noMultiBoss) then DBM:StartCombat(mod, delay + lag, "SYNC from - "..sender, true, startHp, event) if mod.revision < modHFRevision then--mod.revision because we want to compare to OUR revision not senders --There is a newer RELEASE version of DBM out that has this mods fixes that we do not possess if DBM.HighestRelease >= modHFRevision and DBM.ReleaseRevision < modHFRevision then showConstantReminder = 2 if DBM:AntiSpam(3, "HOTFIX") then AddMsg(DBM, L.UPDATEREMINDER_HOTFIX) end else--This mods fixes are in an alpha version if DBM:AntiSpam(3, "HOTFIX") then AddMsg(DBM, L.UPDATEREMINDER_HOTFIX_ALPHA) end end end end end end end syncHandlers["DBMv4-RLO"] = function(sender, version, statusWhisper, guildStatus, raidIcons, chatBubbles) if (DBM:GetRaidRank(sender) ~= 2 or not IsInGroup()) then return end--If not on group, we're probably sender, don't disable status. IF not leader, someone is trying to spoof this, block that too if not version or version ~= "1" then return end--Ignore old versions DBM:Debug("Raid leader override comm Received") statusWhisper, guildStatus, raidIcons, chatBubbles = tonumber(statusWhisper) or 0, tonumber(guildStatus) or 0, tonumber(raidIcons) or 0, tonumber(chatBubbles) or 0 local activated = false if statusWhisper == 1 then activated = true private.statusWhisperDisabled = true end if guildStatus == 1 then activated = true private.statusGuildDisabled = true end if raidIcons == 1 then activated = true private.raidIconsDisabled = true end if chatBubbles == 1 then activated = true private.chatBubblesDisabled = true end if activated then AddMsg(L.OVERRIDE_ACTIVATED) end end syncHandlers["DBMv4-IS"] = function(_, guid, ver, optionName) DBM:Debug(("DBMv4-IS received %s %s %s"):format(guid, ver, optionName), 3) ver = tonumber(ver) or 0 if ver > (iconSetRevision[optionName] or 0) then--Save first synced version and person, ignore same version. refresh occurs only above version (fastest person) iconSetRevision[optionName] = ver iconSetPerson[optionName] = guid end if iconSetPerson[optionName] == UnitGUID("player") then--Check if that highest version was from ourself private.canSetIcons[optionName] = true else--Not from self, it means someone with a higher version than us probably sent it private.canSetIcons[optionName] = false end local name = DBM:GetFullPlayerNameByGUID(iconSetPerson[optionName]) or CL.UNKNOWN DBM:Debug(name.." was elected icon setter for "..optionName, 2) DBM:AddMsg(name.." was elected icon setter for "..optionName) end syncHandlers["DBMv4-Kill"] = function(_, cId) if select(2, IsInInstance()) == "pvp" or select(2, IsInInstance()) == "none" then return end cId = tonumber(cId or "") if cId then DBM:OnMobKill(cId, true) end end do local lootTableBySender = {} local function lootValidateAndSendEvent(encounterId, lootSourceName, lootSourceGUID, lootSourceID, itemID, itemLink, quantity, slot, texture, _, counter) -- finalItem -- build BossBanner encounter cache if needed BossBanner.encounterLootCache[encounterId] = BossBanner.encounterLootCache[encounterId] or {} BossBanner.encounterLootCache[encounterId][lootSourceID] = BossBanner.encounterLootCache[encounterId][lootSourceID] or {} BossBanner.encounterLootCache[encounterId][lootSourceID][itemID] = BossBanner.encounterLootCache[encounterId][lootSourceID][itemID] or {} if BossBanner.encounterLootCache[encounterId][lootSourceID][itemID][counter] == nil then -- only check for nil. false has different meaning (cached, not synced) tinsert(BossBanner.encounterLootCache[encounterId][lootSourceID][itemID], false) end -- check if BossBanner encounterLootCache already has the looted item if BossBanner.encounterLootCache[encounterId] and BossBanner.encounterLootCache[encounterId][lootSourceID] and BossBanner.encounterLootCache[encounterId][lootSourceID][itemID] then local foundUnsyncedItem = false for lootItemIdx, synced in ipairs(BossBanner.encounterLootCache[encounterId][lootSourceID][itemID]) do if not synced then foundUnsyncedItem = true BossBanner.encounterLootCache[encounterId][lootSourceID][itemID][lootItemIdx] = true break end end if not foundUnsyncedItem then DBM:Debug("BossBanner: item already cached and synced. Ending sync for encounterId: "..encounterId..", lootSourceName: "..lootSourceName..", lootSourceGUID: "..lootSourceGUID..", itemID: "..itemID..", itemLink: "..itemLink..", quantity: "..quantity..", slot: "..slot..", texture: "..texture, 3) return end end -- check if BossBanner.pendingLoot is empty or already has the looted item if next(BossBanner.pendingLoot) == nil then DBM:Debug("Sending BossBanner event, no pendingLoot: ENCOUNTER_LOOT_RECEIVED, with args: "..encounterId..", "..itemID..", "..itemLink..", "..quantity..", "..slot..", "..texture..", "..lootSourceName..", "..lootSourceGUID, 3) BossBanner:OnEvent("ENCOUNTER_LOOT_RECEIVED", encounterId, itemID, itemLink, quantity, slot, texture, lootSourceName, lootSourceGUID) else local sendLootEvent = true for _, lootEntry in ipairs(BossBanner.pendingLoot) do -- indexed table with each pair being a loot entry with { itemID = itemID, quantity = quantity, slot = slot, lootNameToDisplay = lootNameToDisplay, itemLink = itemLink } if lootEntry["itemID"] == itemID and lootEntry["slot"] == slot then -- item already added to pendingLoot, don't add it again sendLootEvent = false end end if sendLootEvent then DBM:Debug("Sending BossBanner event: ENCOUNTER_LOOT_RECEIVED, with args: "..encounterId..", "..itemID..", "..itemLink..", "..quantity..", "..slot..", "..texture..", "..lootSourceName..", "..lootSourceGUID, 3) BossBanner:OnEvent("ENCOUNTER_LOOT_RECEIVED", encounterId, itemID, itemLink, quantity, slot, texture, lootSourceName, lootSourceGUID) end end end local function lootDispatcher(sender, encounterId, lootSourceID, lootSourceName, lootSourceGUID, itemID, itemLink, quantity, slot, texture, finalItem) lootTableBySender[sender] = lootTableBySender[sender] or {} lootTableBySender[sender][encounterId] = lootTableBySender[sender][encounterId] or {} lootTableBySender[sender][encounterId][lootSourceID] = lootTableBySender[sender][encounterId][lootSourceID] or {} lootTableBySender[sender][encounterId][lootSourceID][slot] = { itemID = itemID, itemLink = itemLink, quantity = quantity, slot = slot, texture = texture, finalItem = finalItem } if finalItem then -- add counter of each itemID and max number of duplicates local lootCounter = {} for _, lootSlotTable in pairs(lootTableBySender[sender][encounterId][lootSourceID]) do lootCounter[lootSlotTable.itemID] = (lootCounter[lootSlotTable.itemID] or 0) + 1 DBM:Debug("Dispatching BossBanner loot by sender "..sender..", with args: encounterId: "..encounterId..", lootSourceName: "..lootSourceName..", lootSourceGUID: "..lootSourceGUID..", itemID: "..lootSlotTable.itemID..", itemLink: "..lootSlotTable.itemLink..", quantity: "..lootSlotTable.quantity..", slot: "..lootSlotTable.slot..", texture: "..lootSlotTable.texture..", finalItem: "..tostring(lootSlotTable.finalItem)..", lootCounter: "..lootCounter[lootSlotTable.itemID], 3) lootValidateAndSendEvent(encounterId, lootSourceName, lootSourceGUID, lootSourceID, lootSlotTable.itemID, lootSlotTable.itemLink, lootSlotTable.quantity, lootSlotTable.slot, lootSlotTable.texture, lootSlotTable.finalItem, lootCounter[lootSlotTable.itemID]) end twipe(lootCounter) end end syncHandlers["DBMv4-L"] = function(sender, version, locale, encounterId, _, lootSourceName, lootSourceGUID, itemID, itemLink, quantity, slot, texture, finalItem) -- version, locale, encounterId, encounterName, lootSourceName, lootSourceGUID, itemID, itemLink, tostring(quantity), tostring(slot), texture, finalItem if not BossBanner then return end DBM:Debug("Receiving BossBanner loot sync from "..sender..", with args --> version: "..tostring(version)..", locale: "..tostring(locale)..", encounterId: "..tostring(encounterId)..", lootSourceName: "..tostring(lootSourceName)..", lootSourceGUID: "..tostring(lootSourceGUID)..", itemID: "..tostring(itemID)..", itemLink: "..tostring(itemLink)..", quantity: "..tostring(quantity)..", slot: "..tostring(slot)..", texture: "..tostring(texture)..", finalItem: "..tostring(finalItem), 3) if not version or version ~= "3" then return end -- ignore old versions (previous sync had no version and antispam string changed during development) -- check BossBanner encounterLootCache for the looted item local isNPC = lootSourceGUID ~= "nil" local lootSourceID = isNPC and lootSourceGUID or lootSourceName if locale ~= GetLocale() then -- try to recover lootSourceName with correct locale from NPC if isNPC then local senderUnit = DBM:GetRaidUnitId(sender) if not senderUnit then DBM:Debug("BossBanner: ignored loot from ("..lootSourceID..") with different locale ("..locale..") because sender not found in raid or party.", 3) return end lootSourceName = UnitName(senderUnit.."target") if not lootSourceName or lootSourceName == "" then DBM:Debug("BossBanner: ignored loot from ("..lootSourceID..") with different locale ("..locale..") because sender target has no name.", 3) return end DBM:Debug("BossBanner: recovered lootSourceName ("..lootSourceName..") with different locale ("..locale..").", 3) else DBM:Debug("BossBanner: ignored loot from ("..lootSourceID..") with different locale ("..locale..").", 3) return end end lootDispatcher(sender, encounterId, lootSourceID, lootSourceName, lootSourceGUID, itemID, itemLink, tonumber(quantity), tonumber(slot), texture, (finalItem == "true" and true or false)) end end local dummyMod -- dummy mod for the pull timer syncHandlers["DBMv4-PT"] = function(sender, timer, senderMapID, target) if DBM.Options.DontShowUserTimers then return end local isTank = UnitGroupRolesAssigned(sender) local LFGTankException = IsPartyLFG() and isTank if (DBM:GetRaidRank(sender) == 0 and IsInGroup() and not LFGTankException) or select(2, IsInInstance()) == "pvp" then return end --Abort if mapID filter is enabled and sender actually sent a mapID. if no mapID is sent, it's always passed through (IE BW pull timers) if DBM.Options.DontShowPTNoID and senderMapID and tonumber(senderMapID) ~= LastInstanceMapID then return end timer = tonumber(timer or 0) --We want to permit 0 itself, but block anything negative number or anything between 0 and 3 if (timer > 0 and timer < 3) or timer < 0 then return end if timer == 0 or DBM:AntiSpam(1, "PT"..sender) then--prevent double pull timer from BW and other mods that are sending D4 and D5 at same time if not dummyMod then local threshold = DBM.Options.PTCountThreshold2 threshold = floor(threshold) dummyMod = DBM:NewMod("PullTimerCountdownDummy") DBM:GetModLocalization("PullTimerCountdownDummy"):SetGeneralLocalization{ name = L.MINIMAP_TOOLTIP_HEADER } dummyMod.text = dummyMod:NewAnnounce("%s", 1, "Interface\\Icons\\Ability_Warrior_OffensiveStance") dummyMod.geartext = dummyMod:NewSpecialWarning(" %s ", nil, nil, nil, 3) dummyMod.timer = dummyMod:NewTimer(20, "%s", "Interface\\Icons\\Ability_Warrior_OffensiveStance", nil, nil, 0, nil, nil, DBM.Options.DontPlayPTCountdown and 0 or 4, threshold, nil, nil, nil, nil, nil, nil, "pull") end --Cancel any existing pull timers before creating new ones, we don't want double countdowns or mismatching blizz countdown text (cause you can't call another one if one is in progress) if not DBM.Options.DontShowPT2 then--and DBT:GetBar(L.TIMER_PULL) dummyMod.timer:Stop() end local timerTrackerRunning = false if not DBM.Options.DontShowPTCountdownText and TT then for _, tttimer in pairs(TT.timerList) do if not tttimer.isFree then--Timer event running if tttimer.type == 3 then--Its a pull timer event, this is one we cancel before starting a new pull timer TT:FreeTimerTrackerTimer(tttimer) else--Verify that a TimerTracker event NOT started by DBM isn't running, if it is, prevent executing new TimerTracker events below timerTrackerRunning = true end end end end dummyMod.text:Cancel() if timer == 0 then return end--"/dbm pull 0" will strictly be used to cancel the pull timer (which is why we let above part of code run but not below) DBM:FlashClientIcon() if not DBM.Options.DontShowPT2 then dummyMod.timer:Start(timer, L.TIMER_PULL) sendSync("DBMv4-Pizza", ("%s\t%s\t%s"):format(timer, L.TIMER_PULL, tostring(true))) -- Backwards compatibility so old DBMs can receive pull timers from this DBM end if not DBM.Options.DontShowPTCountdownText and TT then if not timerTrackerRunning then--if a TimerTracker event is running not started by DBM, block creating one of our own (object gets buggy if it has 2+ events running) --Start A TimerTracker timer using the new countdown type 3 type (ie what C_PartyInfo.DoCountdown triggers, but without sending it to entire group) TT:OnEvent("START_TIMER", 3, timer, timer) --Find the timer object DBM just created and hack our own changes into it. for _, tttimer in pairs(TT.timerList) do if tttimer.type == 3 and not tttimer.isFree then --We don't want the PVP bar, we only want timer text if timer > 10 then --b.startNumbers:Play() tttimer.StatusBar:Hide() end break end end end end if not DBM.Options.DontShowPTText then if target then dummyMod.text:Show(L.ANNOUNCE_PULL_TARGET:format(target, timer, sender)) dummyMod.text:Schedule(timer, L.ANNOUNCE_PULL_NOW_TARGET:format(target)) else dummyMod.text:Show(L.ANNOUNCE_PULL:format(timer, sender)) dummyMod.text:Schedule(timer, L.ANNOUNCE_PULL_NOW) end end if DBM.Options.EventSoundPullTimer and DBM.Options.EventSoundPullTimer ~= "" and DBM.Options.EventSoundPullTimer ~= "None" then DBM:PlaySoundFile(DBM.Options.EventSoundPullTimer, nil, true) end if DBM.Options.RecordOnlyBosses then DBM:StartLogging(timer, checkForActualPull)--Start logging here to catch pre pots. end if DBM.Options.CheckGear then local weapon = GetInventoryItemLink("player", 16) local fishingPole = false if weapon then local _, _, _, _, _, _, type = GetItemInfo(weapon) if type and type == L.GEAR_FISHING_POLE then fishingPole = true end end if GetNumRaidMembers() > 0 and (not weapon or fishingPole) then dummyMod.geartext:Show(L.GEAR_WARNING_WEAPON) end end end end do local dummyMod2 -- dummy mod for the break timer function breakTimerStart(self, timer, sender) if not dummyMod2 then local threshold = DBM.Options.PTCountThreshold2 threshold = floor(threshold) dummyMod2 = DBM:NewMod("BreakTimerCountdownDummy") DBM:GetModLocalization("BreakTimerCountdownDummy"):SetGeneralLocalization{ name = L.MINIMAP_TOOLTIP_HEADER } dummyMod2.text = dummyMod2:NewAnnounce("%s", 1, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME") --timer, name, icon, optionDefault, optionName, colorType, inlineIcon, keep, countdown, countdownMax, r, g, b, spellId, requiresCombat, waCustomName, customType dummyMod2.timer = dummyMod2:NewTimer(20, L.TIMER_BREAK, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", nil, nil, 0, nil, nil, DBM.Options.DontPlayPTCountdown and 0 or 1, threshold, nil, nil, nil, nil, nil, nil, "break") end --Cancel any existing break timers before creating new ones, we don't want double countdowns or mismatching blizz countdown text (cause you can't call another one if one is in progress) if not DBM.Options.DontShowPT2 then--and DBT:GetBar(L.TIMER_BREAK) dummyMod2.timer:Stop() end dummyMod2.text:Cancel() DBM.Options.RestoreSettingBreakTimer = nil if timer == 0 then return end--"/dbm break 0" will strictly be used to cancel the break timer (which is why we let above part of code run but not below) self.Options.RestoreSettingBreakTimer = timer.."/"..time() if not self.Options.DontShowPT2 then dummyMod2.timer:Start(timer) sendSync("DBMv4-Pizza", ("%s\t%s\t%s"):format(timer, L.TIMER_BREAK, tostring(true))) -- Backwards compatibility so old DBMs can receive break timers from this DBM end if not self.Options.DontShowPTText then local hour, minute = GetGameTime() minute = minute+(timer/60) if minute >= 60 then hour = hour + 1 minute = minute - 60 end minute = floor(minute) if minute < 10 then minute = tostring(0 .. minute) end dummyMod2.text:Show(L.BREAK_START:format(strFromTime(timer).." ("..hour..":"..minute..")", sender)) if timer/60 > 10 then dummyMod2.text:Schedule(timer - 10*60, L.BREAK_MIN:format(10)) end if timer/60 > 5 then dummyMod2.text:Schedule(timer - 5*60, L.BREAK_MIN:format(5)) end if timer/60 > 2 then dummyMod2.text:Schedule(timer - 2*60, L.BREAK_MIN:format(2)) end if timer/60 > 1 then dummyMod2.text:Schedule(timer - 1*60, L.BREAK_MIN:format(1)) end dummyMod2.text:Schedule(timer, L.ANNOUNCE_BREAK_OVER:format(hour..":"..minute)) end AceTimer:ScheduleTimer(function() self.Options.RestoreSettingBreakTimer = nil end, timer) end end syncHandlers["DBMv4-BT"] = function(sender, timer) if DBM.Options.DontShowUserTimers then return end timer = tonumber(timer or 0) if timer > 3600 then return end if (DBM:GetRaidRank(sender) == 0 and IsInGroup()) or select(2, IsInInstance()) == "pvp" then return end if timer == 0 or DBM:AntiSpam(1, "BT"..sender) then breakTimerStart(DBM, timer, sender) end end whisperSyncHandlers["DBMv4-BTR3"] = function(sender, timer) if DBM.Options.DontShowUserTimers then return end timer = tonumber(timer or 0) if timer > 3600 then return end DBM:Unschedule(DBM.RequestTimers)--IF we got BTR3 sync, then we know immediately RequestTimers was successful, so abort others if #inCombat >= 1 then return end if DBT:GetBar(L.TIMER_BREAK) then return end--Already recovered. Prevent duplicate recovery DBM:Debug("BTR3 calling breakTimerStart from "..sender.." with remaining "..timer, 3) breakTimerStart(DBM, timer, sender) end local function SendVersion(guild) if guild then local message = ("%s\t%s\t%s"):format(tostring(DBM.Revision), tostring(DBM.ReleaseRevision), DBM.DisplayVersion) sendGuildSync("DBMv4-GV", message) return end if DBM.Options.FakeBWVersion and not dbmIsEnabled then SendAddonMessage("BWVR3", bwVersionResponseString:format(fakeBWVersion), GetNumRaidMembers() > 0 and "RAID" or "PARTY") return end --(Note, faker isn't to screw with bigwigs nor is theirs to screw with dbm, but rathor raid leaders who don't let people run WTF they want to run) local VPVersion local VoicePack = DBM.Options.ChosenVoicePack2 if not voiceSessionDisabled and VoicePack ~= "None" and DBM.VoiceVersions[VoicePack] then VPVersion = "/ VP"..VoicePack..": v"..DBM.VoiceVersions[VoicePack] end if VPVersion then sendSync("DBMv4-Ver", ("%s\t%s\t%s\t%s\t%s\t%s"):format(tostring(DBM.Revision), tostring(DBM.ReleaseRevision), DBM.DisplayVersion, GetLocale(), tostring(not DBM.Options.DontSetIcons), VPVersion)) else sendSync("DBMv4-Ver", ("%s\t%s\t%s\t%s\t%s"):format(tostring(DBM.Revision), tostring(DBM.ReleaseRevision), DBM.DisplayVersion, GetLocale(), tostring(not DBM.Options.DontSetIcons))) end end local function HandleVersion(revision, version, displayVersion, sender) if version > DBM.Revision then -- Update reminder if version > currentFullDate() then return end -- ignore versions higher than current date to prevent abuse if #newerVersionPerson < 4 then if not checkEntry(newerVersionPerson, sender) then newerVersionPerson[#newerVersionPerson + 1] = sender DBM:Debug("Newer version detected from "..sender.." : Rev - "..revision..", Ver - "..version..", Rev Diff - "..(revision - DBM.Revision), 3) end if #newerVersionPerson == 2 and updateNotificationDisplayed < 2 then--Only requires 2 for update notification. if DBM.HighestRelease < version then DBM.HighestRelease = version--Increase HighestRelease DBM.NewerVersion = displayVersion--Apply NewerVersion --UGLY hack to get release version number instead of alpha one if DBM.NewerVersion:find("alpha") then local temp1, _ = string.split(" ", DBM.NewerVersion)--Strip down to just version, no alpha if temp1 then local temp3, temp4, temp5 = string.split(".", temp1)--Strip version down to 3 numbers if temp3 and temp4 and temp5 and tonumber(temp5) then temp5 = tonumber(temp5) temp5 = temp5 - 1 temp5 = tostring(temp5) DBM.NewerVersion = temp3.."."..temp4.."."..temp5 end end end end --Find min revision. updateNotificationDisplayed = 2 AddMsg(DBM, L.UPDATEREMINDER_HEADER:match("([^\n]*)")) AddMsg(DBM, L.UPDATEREMINDER_HEADER:match("\n(.*)"):format(displayVersion, showRealDate(version))) showConstantReminder = 1 elseif #newerVersionPerson >= 3 and updateNotificationDisplayed < 3 then--The following code requires at least THREE people to send that higher revision. That should be more than adaquate --Disable if out of date and it's a major patch. if not testBuild and dbmToc < wowTOC then updateNotificationDisplayed = 3 DBM:ForceDisableSpam() DBM:Disable(true) --Disallow out of date to run during beta/ptr what so ever. elseif testBuild then updateNotificationDisplayed = 3 DBM:ForceDisableSpam() DBM:Disable(true) end end end end end -- is there a good reason that version information is broadcasted and not unicasted? syncHandlers["DBMv4-H"] = function() DBM:Unschedule(SendVersion)--Throttle so we don't needlessly send tons of comms during initial raid invites DBM:Schedule(3, SendVersion)--Send version if 3 seconds have past since last "Hi" sync end guildSyncHandlers["DBMv4-GH"] = function() if DBM.ReleaseRevision >= DBM.HighestRelease then--Do not send version to guild if it's not up to date, since this is only used for update notifcation DBM:Unschedule(SendVersion, true) --Throttle so we don't needlessly send tons of comms --For every 50 players online, DBM has an increasingly lower chance of replying to a version check request. This is because only 3 people actually need to reply --50 people or less, 100% chance anyone who saw request will reply --100 people on, only 50% chance DBM users replies to request --150 people on, only 33% chance a DBM user replies to request --1000 people online, only 5% chance a DBM user replies to request local totalMembers = GetNumGuildMembers() local online = 0 for i = 1, totalMembers do local name, _, _, _, _, _, _, _, connected = GetGuildRosterInfo(i) if not name then break end if connected then online = online + 1 end end local chances = (online or 1) / 50 if chances < 1 then chances = 1 end if mrandom(1, chances) == 1 then DBM:Schedule(5, SendVersion, true)--Send version if 5 seconds have past since last "Hi" sync end end end syncHandlers["DBMv4-BV"] = function(sender, version, hash)--Parsed from bigwigs V7+ if version and raid[sender] then raid[sender].bwversion = version raid[sender].bwhash = hash or "" end end syncHandlers["DBMv4-Ver"] = function(sender, revision, version, displayVersion, locale, iconEnabled, VPVersion) if revision == "Hi!" then DBM:Debug(("DBMv4-Ver Hi! %s %s %s %s"):format(DBM.Revision, DBM.ReleaseRevision, DBM.DisplayVersion, GetLocale()), 3) -- Use Retail "H" syncHandler instead handleSync(nil, sender, "DBMv4-H") else DBM:Debug(("DBMv4-Ver received %s %s %s %s from %s"):format(revision, version, displayVersion, locale, sender), 3) -- Use Retail "V" syncHandler instead handleSync(nil, sender, "DBMv4-V", revision, version, displayVersion, locale, iconEnabled, VPVersion) end end syncHandlers["DBMv4-V"] = function(sender, revision, version, displayVersion, locale, iconEnabled, VPVersion) revision, version = tonumber(revision), tonumber(version) if revision and version and displayVersion and raid[sender] then raid[sender].revision = revision raid[sender].version = version raid[sender].displayVersion = displayVersion raid[sender].VPVersion = VPVersion raid[sender].locale = locale raid[sender].enabledIcons = iconEnabled or "false" DBM:Debug("Received version info from "..sender.." : Rev - "..revision..", Ver - "..version..", Rev Diff - "..(revision - DBM.Revision), 3) HandleVersion(revision, version, displayVersion, sender) end DBM:RAID_ROSTER_UPDATE() end guildSyncHandlers["DBMv4-GV"] = function(sender, revision, version, displayVersion) revision, version = tonumber(revision), tonumber(version) if revision and version and displayVersion then DBM:Debug("Received G version info from "..sender.." : Rev - "..revision..", Ver - "..version..", Rev Diff - "..(revision - DBM.Revision)..", Display Version "..displayVersion, 3) HandleVersion(revision, version, displayVersion, sender) end end -- Workaround for mismatched clients locales: L.TIMER_PULL and L.TIMER_BREAK would be different and therefore would not play sounds since the receiver locale would be different than sender locale. local localized_TIMER_PULL = { "开怪倒计时", --CN "Pull in", --DE, EN "Iniciando en", --ES "Pull en", -- ES (old DBM) "Pull dans", --FR "풀링", --KR "풀링 중 입니다",--KR (old DBM) "Атака", --RU "戰鬥準備" --TW } local localized_TIMER_BREAK = { "休息时间!", -- CN "Pause!", -- DE "Pause", -- DE (old DBM) "Break time!", -- EN, FR (old DBM) "Break starting now -- you have %s! (Sent by %s)", -- EN (wrong locale, pre 7.09) "¡Toca descanso!", -- ES "¡Descanso!", -- ES (old DBM) "Pause !", -- FR "쉬는 시간!", -- KR "Перерыв!", -- RU "休息時間!" -- TW } syncHandlers["DBMv4-Pizza"] = function(sender, time, text, new) if select(2, IsInInstance()) == "pvp" then return end if DBM:GetRaidRank(sender) == 0 then return end if sender == UnitName("player") then return end time = tonumber(time or 0) text = tostring(text) if time and text then local pullTimer = tContains(localized_TIMER_PULL, tostring(text)) and L.TIMER_PULL or nil -- Fixes localization of pull bar text local breakTimer = tContains(localized_TIMER_BREAK, tostring(text)) and L.TIMER_BREAK or nil -- Fixes localization of break bar text if pullTimer then if new then return end handleSync(nil, sender, "DBMv4-PT", time, text) elseif breakTimer then if new then return end handleSync(nil, sender, "DBMv4-BT", time, text) else DBM:CreatePizzaTimer(time, text, nil, sender) end end end -- beware, ugly and missplaced code ahead -- todo: move this somewhere else do local accessList = {} local savedSender local inspopup = CreateFrame("Frame", "DBMPopupLockout", UIParent) inspopup:SetBackdrop({bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = true, tileSize = 16, edgeSize = 16, insets = {left = 1, right = 1, top = 1, bottom = 1}} ) inspopup:SetSize(500, 120) inspopup:SetPoint("TOP", UIParent, "TOP", 0, -200) inspopup:SetFrameStrata("DIALOG") local inspopuptext = inspopup:CreateFontString() inspopuptext:SetFontObject(ChatFontNormal) inspopuptext:SetWidth(470) inspopuptext:SetWordWrap(true) inspopuptext:SetPoint("TOP", inspopup, "TOP", 0, -15) local buttonaccept = CreateFrame("Button", nil, inspopup) buttonaccept:SetNormalTexture("Interface\\Buttons\\UI-DialogBox-Button-Up") buttonaccept:SetPushedTexture("Interface\\Buttons\\UI-DialogBox-Button-Down") buttonaccept:SetHighlightTexture("Interface\\Buttons\\UI-DialogBox-Button-Highlight", "ADD") buttonaccept:SetSize(128, 35) buttonaccept:SetPoint("BOTTOM", inspopup, "BOTTOM", -75, 0) local buttonatext = buttonaccept:CreateFontString() buttonatext:SetFontObject(ChatFontNormal) buttonatext:SetPoint("CENTER", buttonaccept, "CENTER", 0, 5) buttonatext:SetText(YES) local buttondecline = CreateFrame("Button", nil, inspopup) buttondecline:SetNormalTexture("Interface\\Buttons\\UI-DialogBox-Button-Up") buttondecline:SetPushedTexture("Interface\\Buttons\\UI-DialogBox-Button-Down") buttondecline:SetHighlightTexture("Interface\\Buttons\\UI-DialogBox-Button-Highlight", "ADD") buttondecline:SetSize(128, 35) buttondecline:SetPoint("BOTTOM", inspopup, "BOTTOM", 75, 0) local buttondtext = buttondecline:CreateFontString() buttondtext:SetFontObject(ChatFontNormal) buttondtext:SetPoint("CENTER", buttondecline, "CENTER", 0, 5) buttondtext:SetText(NO) inspopup:Hide() local function autoDecline(sender, force) inspopup:Hide() savedSender = nil if force then SendAddonMessage("DBMv4-II", "denied", "WHISPER", sender) else SendAddonMessage("DBMv4-II", "timeout", "WHISPER", sender) end end local function showPopupInstanceIdPermission(sender) DBM:Unschedule(autoDecline) DBM:Schedule(59, autoDecline, sender) inspopup:Hide() if savedSender ~= sender then if savedSender then autoDecline(savedSender, 1) -- Do not allow multiple popups, so auto decline to previous sender. end savedSender = sender end inspopuptext:SetText(L.REQ_INSTANCE_ID_PERMISSION:format(sender, sender)) buttonaccept:SetScript("OnClick", function(f) savedSender = nil DBM:Unschedule(autoDecline) accessList[sender] = true syncHandlers["DBMv4-IR"](sender) f:GetParent():Hide() end) buttondecline:SetScript("OnClick", function() autoDecline(sender, 1) end) DBM:PlaySound(850) inspopup:Show() end syncHandlers["DBMv4-IR"] = function(sender) if DBM:GetRaidRank(sender) == 0 or sender == playerName then return end accessList = accessList or {} if not accessList[sender] then -- ask for permission showPopupInstanceIdPermission(sender) return end -- okay, send data local sentData = false for i = 1, GetNumSavedInstances() do local name, id, _, difficulty, locked, extended, _, isRaid, maxPlayers, textDiff, _, progress = GetSavedInstanceInfo(i) if (locked or extended) and isRaid then -- only report locked raid instances SendAddonMessage("DBMv4-II", "Data\t" .. name .. "\t" .. id .. "\t" .. difficulty .. "\t" .. maxPlayers .. "\t" .. (progress or 0) .. "\t" .. textDiff, "WHISPER", sender) sentData = true end end if not sentData then -- send something even if there is nothing to report so the receiver is able to tell you apart from someone who just didn't respond... SendAddonMessage("DBMv4-II", "NoData", "WHISPER", sender) end end syncHandlers["DBMv4-IRE"] = function(sender) local popup = inspopup:IsShown() if popup and savedSender == sender then -- found the popup with the correct data savedSender = nil DBM:Unschedule(autoDecline) inspopup:Hide() end end guildSyncHandlers["DBMv4-GCB"] = function(_, modId, ver, difficulty, name, groupLeader) if not DBM.Options.ShowGuildMessages or not difficulty or DBM:GetRaidRank(groupLeader or "") == 2 then return end if not ver or ver ~= "4" then return end--Ignore old versions if DBM:AntiSpam(10, "GCB") then if IsInInstance() then return end--Simple filter, if you are inside an instance, just filter it, if not in instance, good to go. difficulty = tonumber(difficulty) if not DBM.Options.ShowGuildMessagesPlus then return end modId = tonumber(modId) local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN local difficultyName if difficulty == 4 then difficultyName = RAID_DIFFICULTY4 elseif difficulty == 3 then difficultyName = RAID_DIFFICULTY3 elseif difficulty == 2 then difficultyName = PLAYER_DIFFICULTY2 else difficultyName = PLAYER_DIFFICULTY1 end DBM:AddMsg(L.GUILD_COMBAT_STARTED:format(difficultyName.."-"..bossName, groupLeader))-- "%s has been engaged by %s's guild group" end end guildSyncHandlers["DBMv4-GCE"] = function(_, modId, ver, wipe, time, difficulty, name, groupLeader, wipeHP) if not DBM.Options.ShowGuildMessages or not difficulty or DBM:GetRaidRank(groupLeader or "") == 2 then return end if not ver or ver ~="8" then return end--Ignore old versions if DBM:AntiSpam(10, "GCE") then if IsInInstance() then return end--Simple filter, if you are inside an instance, just filter it, if not in instance, good to go. difficulty = tonumber(difficulty) if not DBM.Options.ShowGuildMessagesPlus then return end modId = tonumber(modId) local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN local difficultyName if difficulty == 4 then difficultyName = RAID_DIFFICULTY4 elseif difficulty == 3 then difficultyName = RAID_DIFFICULTY3 elseif difficulty == 2 then difficultyName = PLAYER_DIFFICULTY2 else difficultyName = PLAYER_DIFFICULTY1 end if wipe == "1" then DBM:AddMsg(L.GUILD_COMBAT_ENDED_AT:format(groupLeader or CL.UNKNOWN, difficultyName.."-"..bossName, wipeHP, time))--"%s's Guild group has wiped on %s (%s) after %s. else DBM:AddMsg(L.GUILD_BOSS_DOWN:format(difficultyName.."-"..bossName, groupLeader or CL.UNKNOWN, time))--"%s has been defeated by %s's guild group after %s!" end end end local lastRequest = 0 local numResponses = 0 local expectedResponses = 0 local allResponded = false local results local updateInstanceInfo, showResults whisperSyncHandlers["DBMv4-II"] = function(sender, result, name, _, diff, maxPlayers, progress, textDiff) -- sender, result, name, id, diff, maxPlayers, progress, textDiff if GetTime() - lastRequest > 62 or not results then return end if not result then return end name = name or CL.UNKNOWN diff = tonumber(diff or 0) or 0 maxPlayers = tonumber(maxPlayers or 0) or 0 progress = tonumber(progress or 0) or 0 textDiff = textDiff or "" -- count responses if not results.responses[sender] then results.responses[sender] = result numResponses = numResponses + 1 end -- get localized difficulty text if textDiff ~= "" then results.difftext[diff] = textDiff end if result == "Data" then -- got data in that response and not just a "no" or "i'm away" local instanceId = name.." "..maxPlayers.." "..diff -- locale-dependant dungeon ID results.data[instanceId] = results.data[instanceId] or { ids = {}, -- array of all ids of all raid members name = name, diff = diff, maxPlayers = maxPlayers, } results.data[instanceId].ids[progress] = results.data[instanceId].ids[progress] or { progress = progress } tinsert(results.data[instanceId].ids[progress], sender) end if numResponses >= expectedResponses then -- unlikely, lol DBM:Unschedule(updateInstanceInfo) DBM:Unschedule(showResults) if not allResponded then --Only display message once in case we get for example 4 syncs the last sender DBM:Schedule(0.99, DBM.AddMsg, DBM, L.INSTANCE_INFO_ALL_RESPONSES) allResponded = true end AceTimer:ScheduleTimer(showResults, 1) --Delay results so we allow time for same sender to send more than 1 lockout, otherwise, if we get expectedResponses before all data is sent from 1 user, we clip some of their data. end end function showResults() if not results then return end local resultCount = 0 -- you could catch some localized instances by observing IDs if there are multiple players with the same instance ID but a different name ;) (not that useful if you are trying to get a fresh instance) DBM:AddMsg(L.INSTANCE_INFO_RESULTS, false) DBM:AddMsg("---", false) for _, v in pairs(results.data) do resultCount = resultCount + 1 DBM:AddMsg(L.INSTANCE_INFO_DETAIL_HEADER:format(v.name, (results.difftext[v.diff] or v.diff)), false) for id, r in pairs(v.ids) do if r.haveid then DBM:AddMsg(L.INSTANCE_INFO_DETAIL_INSTANCE:format(id, r.progress, tconcat(r, ", ")), false) else DBM:AddMsg(L.INSTANCE_INFO_DETAIL_INSTANCE2:format(r.progress, tconcat(r, ", ")), false) end end DBM:AddMsg("---", false) end if resultCount == 0 then DBM:AddMsg(L.INSTANCE_INFO_NOLOCKOUT, false) end local denied = {} local away = {} local noResponse = {} for i = 1, GetNumRaidMembers() do if not UnitIsUnit("raid"..i, "player") then tinsert(noResponse, (GetRaidRosterInfo(i))) end end for i, v in pairs(results.responses) do if v == "Data" or v == "NoData" then elseif v == "timeout" then tinsert(away, i) else -- could be "clicked" or "override", in both cases we don't get the data because the dialog requesting it was dismissed tinsert(denied, i) end removeEntry(noResponse, i) end if #denied > 0 then DBM:AddMsg(L.INSTANCE_INFO_STATS_DENIED:format(tconcat(denied, ", ")), false) end if #away > 0 then DBM:AddMsg(L.INSTANCE_INFO_STATS_AWAY:format(tconcat(away, ", ")), false) end if #noResponse > 0 then DBM:AddMsg(L.INSTANCE_INFO_STATS_NO_RESPONSE:format(tconcat(noResponse, ", ")), false) end results = nil end -- called when the chat link is clicked function DBM:ShowRaidIDRequestResults() if not results then -- check if we are currently querying raid IDs, results will be nil if we don't return end self:Unschedule(updateInstanceInfo) self:Unschedule(showResults) showResults() -- sets results to nil after the results are displayed, ending the current id request; future incoming data will be discarded sendSync("DBMv4-IRE") end local function getResponseStats() if not results then return 0, 0, 0, 0 end local numResponses = 0 local sent = 0 local denied = 0 local away = 0 for _, v in pairs(results.responses) do numResponses = numResponses + 1 if v == "Data" or v == "NoData" then sent = sent + 1 elseif v == "timeout" then away = away + 1 else -- could be "clicked" or "override", in both cases we don't get the data because the dialog requesting it was dismissed denied = denied + 1 end end return numResponses, sent, denied, away end local function getNumDBMUsers() -- without ourselves local r = 0 for _, v in pairs(raid) do if v.revision and v.name ~= playerName and UnitIsConnected(v.id) then r = r + 1 end end return r end function updateInstanceInfo(timeRemaining, dontAddShowResultNowButton) if not results then return end local numResponses, sent, denied = getResponseStats() local dbmUsers = getNumDBMUsers() DBM:AddMsg(L.INSTANCE_INFO_STATUS_UPDATE:format(numResponses, dbmUsers, sent, denied, timeRemaining), false) if not dontAddShowResultNowButton then if dbmUsers - numResponses <= 7 then -- waiting for 7 or less players, show their names and the early result option -- copied from above, todo: implement a smarter way of keeping track of stuff like this local noResponse = {} for i = 1, GetNumRaidMembers() do if not UnitIsUnit("raid"..i, "player") and raid[GetRaidRosterInfo(i)] and raid[GetRaidRosterInfo(i)].revision then -- only show players who actually can respond (== DBM users) tinsert(noResponse, (GetRaidRosterInfo(i))) end end for i, _ in pairs(results.responses) do removeEntry(noResponse, i) end --[[ -- this looked like the easiest way (for some reason?) to create the player string when writing this code -.- local function dup(...) if select("#", ...) == 0 then return else return ..., ..., dup(select(2, ...)) end end DBM:AddMsg(L.INSTANCE_INFO_SHOW_RESULTS:format(("|Hplayer:%s|h[%s]|h| "):rep(#noResponse):format(dup(unpack(noResponse)))), false) ]] -- code that one can actually read for i, v in ipairs(noResponse) do noResponse[i] = ("|Hplayer:%s|h[%s]|h|"):format(v, v) end DBM:AddMsg(L.INSTANCE_INFO_SHOW_RESULTS:format(tconcat(noResponse, ", ")), false) end end end function DBM:RequestInstanceInfo() self:AddMsg(L.INSTANCE_INFO_REQUESTED) lastRequest = GetTime() allResponded = false results = { responses = { -- who responded to our request? }, data = { -- the actual data }, difftext = { } } numResponses = 0 expectedResponses = getNumDBMUsers() sendSync("DBMv4-IR") self:Unschedule(updateInstanceInfo) self:Unschedule(showResults) self:Schedule(17, updateInstanceInfo, 45, true) self:Schedule(32, updateInstanceInfo, 30) self:Schedule(48, updateInstanceInfo, 15) -- AceTimer:ScheduleTimer(showResults,62) end end guildSyncHandlers["DBMv4-WBE"] = function(sender, modId, realm, health, ver, name) if not ver or ver ~="8" then return end--Ignore old versions if lastBossEngage[modId..realm] and (GetTime() - lastBossEngage[modId..realm] < 30) then return end--We recently got a sync about this boss on this realm, so do nothing. lastBossEngage[modId..realm] = GetTime() if realm == playerRealm and DBM.Options.WorldBossAlert and not mod.InCombat then modId = tonumber(modId)--If it fails to convert into number, this makes it nil local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN DBM:AddMsg(L.WORLDBOSS_ENGAGED:format(bossName, floor(health), sender)) end end guildSyncHandlers["DBMv4-WBD"] = function(sender, modId, realm, ver, name) if not ver or ver ~="8" then return end--Ignore old versions if lastBossDefeat[modId..realm] and (GetTime() - lastBossDefeat[modId..realm] < 30) then return end lastBossDefeat[modId..realm] = GetTime() if realm == playerRealm and DBM.Options.WorldBossAlert and not mod.InCombat then modId = tonumber(modId)--If it fails to convert into number, this makes it nil local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN DBM:AddMsg(L.WORLDBOSS_DEFEATED:format(bossName, sender)) end end guildSyncHandlers["DBMv4-WBA"] = function(sender, bossName, faction, spellId, time, ver) DBM:Debug("WBA sync recieved") if not ver or ver ~= "4" then return end--Ignore old versions if lastBossEngage[bossName..faction] and (GetTime() - lastBossEngage[bossName..faction] < 30) then return end--We recently got a sync about this buff on this realm, so do nothing. lastBossEngage[bossName..faction] = GetTime() if DBM.Options.WorldBuffAlert and #inCombat == 0 then DBM:Debug("WBA sync processing") local factionText = faction == "Alliance" and FACTION_ALLIANCE or faction == "Horde" and FACTION_HORDE or CL.BOTH local buffName, _, buffIcon = DBM:GetSpellInfo(tonumber(spellId) or 0) DBM:AddMsg(L.WORLDBUFF_STARTED:format(buffName or CL.UNKNOWN, factionText, sender)) DBM:PlaySound(DBM.Options.RaidWarningSound, true) time = tonumber(time) if time then DBT:CreateBar(time, buffName or CL.UNKNOWN, buffIcon or "Interface\\Icons\\Spell_Holy_BorrowedTime") end end end whisperSyncHandlers["DBMv4-WBE"] = function(sender, modId, realm, health, ver, name) if not ver or ver ~= "8" then return end--Ignore old versions if lastBossEngage[modId..realm] and (GetTime() - lastBossEngage[modId..realm] < 30) then return end lastBossEngage[modId..realm] = GetTime() if realm == playerRealm and DBM.Options.WorldBossAlert and (not DBM:IsEncounterInProgress() or #inCombat == 0) then local toonName = sender or CL.UNKNOWN modId = tonumber(modId)--If it fails to convert into number, this makes it nil local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN DBM:AddMsg(L.WORLDBOSS_ENGAGED:format(bossName, floor(health), toonName)) end end whisperSyncHandlers["DBMv4-WBD"] = function(sender, modId, realm, ver, name) if not ver or ver ~="8" then return end--Ignore old versions if lastBossDefeat[modId..realm] and (GetTime() - lastBossDefeat[modId..realm] < 30) then return end lastBossDefeat[modId..realm] = GetTime() if realm == playerRealm and DBM.Options.WorldBossAlert and not mod.InCombat then local toonName = sender or CL.UNKNOWN modId = tonumber(modId)--If it fails to convert into number, this makes it nil local bossName = modId and DBM:GetModLocalization(modId).general.name or name or CL.UNKNOWN DBM:AddMsg(L.WORLDBOSS_DEFEATED:format(bossName, toonName)) end end whisperSyncHandlers["DBMv4-RequestTimers"] = function(sender) if UnitInBattleground("player") then DBM:SendPVPTimers(sender) else DBM:SendTimers(sender) end end whisperSyncHandlers["DBMv4-CombatInfo"] = function(sender, mod, time) mod = DBM:GetModByName(mod or "") time = tonumber(time or 0) if mod and time then DBM:ReceiveCombatInfo(sender, mod, time) end end whisperSyncHandlers["DBMv4-TimerInfo"] = function(sender, mod, timeLeft, totalTime, id, paused, ...) mod = DBM:GetModByName(mod or "") timeLeft = tonumber(timeLeft or 0) totalTime = tonumber(totalTime or 0) if mod and timeLeft and timeLeft > 0 and totalTime and totalTime > 0 and id then DBM:ReceiveTimerInfo(sender, mod, timeLeft, totalTime, id, paused and paused == "1" and true or false, ...) end end whisperSyncHandlers["DBMv4-VarInfo"] = function(sender, mod, name, value) mod = DBM:GetModByName(mod or "") value = tonumber(value) or value if mod and name and value then DBM:ReceiveVariableInfo(sender, mod, name, value) end end handleSync = function(channel, sender, prefix, ...) if not prefix then return end local handler --Whisper syncs sent from non friends are automatically rejected if not from a friend or someone in your group if channel == "WHISPER" and sender ~= playerName then -- separate between broadcast and unicast, broadcast must not be sent as unicast or vice-versa if (checkForSafeSender(sender, true) or DBM:GetRaidUnitId(sender)) then--Sender passes safety check, or is in group handler = whisperSyncHandlers[prefix] end elseif channel == "GUILD" then handler = guildSyncHandlers[prefix] else handler = syncHandlers[prefix] end if handler then return handler(sender, ...) end end function DBM:CHAT_MSG_ADDON(prefix, msg, channel, sender) if strsub(prefix, 1, 5) == DBMPrefix and msg and (channel == "PARTY" or channel == "RAID" or channel == "BATTLEGROUND" or channel == "WHISPER" or channel == "GUILD") then handleSync(channel, sender, prefix, strsplit("\t", msg)) elseif (prefix == "BigWigs" or strsub(prefix, 1, 2) == "BW") and msg and (channel == "PARTY" or channel == "RAID") then if prefix == "BigWigs" then--Boss Mod Sync for i = 1, #inCombat do local mod = inCombat[i] if mod and mod.OnBWSync then mod:OnBWSync(msg, sender) end end for i = 1, #oocBWComms do local mod = oocBWComms[i] if mod and mod.OnBWSync then mod:OnBWSync(msg, sender) end end else local bwPrefix = strsub(prefix, 3, 5) if bwPrefix then if bwPrefix == "VR3" then local verString = msg local version = tonumber(verString) or 0 if version == 0 then return end--Just a query handleSync(channel, sender, "DBMv4-BV", version)--Prefix changed, so it's not handled by DBMs "V" handler if version > fakeBWVersion then--Newer revision found, upgrade! fakeBWVersion = version end elseif bwPrefix == "VQ3" then--Version request prefix self:Unschedule(SendVersion) self:Schedule(3, SendVersion) end end end elseif prefix == "Transcriptor" and msg then for i = 1, #inCombat do local mod = inCombat[i] if mod and mod.OnTranscriptorSync then mod:OnTranscriptorSync(msg, sender) end end local transcriptor = _G["Transcriptor"] if msg:find("spell:") and (DBM.Options.DebugLevel > 2 or (transcriptor and transcriptor:IsLogging())) then local spellId = string.match(msg, "spell:(%d+)") or CL.UNKNOWN local spellName = string.match(msg, "h%[(.-)%]|h") or CL.UNKNOWN local message = "RAID_BOSS_WHISPER on "..sender.." with spell of "..spellName.." ("..spellId..")" self:Debug(message) end end end end ---------------------- -- Pull Detection -- ---------------------- do local targetList = {} local function buildTargetList() -- target or groupMemberTarget local uId = ((GetNumRaidMembers() == 0) and "party") or "raid" for i = 0, mmax(GetNumRaidMembers(), GetNumPartyMembers()) do local id = (i == 0 and "target") or uId..i.."target" local guid = UnitGUID(id) if guid and DBM:IsCreatureGUID(guid) then local cId = DBM:GetCIDFromGUID(guid) targetList[cId] = id end end -- boss for i = 0, 5 do local id = "boss" .. i local guid = UnitGUID(id) if guid and DBM:IsCreatureGUID(guid) then local cId = DBM:GetCIDFromGUID(guid) targetList[cId] = id end end -- focus (for non IEEU scripts) local guid = UnitGUID("focus") if guid and DBM:IsCreatureGUID(guid) then local cId = DBM:GetCIDFromGUID(guid) targetList[cId] = "focus" end end local function clearTargetList() twipe(targetList) end local function scanForCombat(mod, mob, delay, force) -- custom "force" arg for 3.3.5a PLAYER_REGEN_DISABLED if not checkEntry(inCombat, mob) then buildTargetList() if targetList[mob] then if mod.noFriendlyEngagement and UnitIsFriend("player", targetList[mob]) then return end if (force or delay > 0) and UnitAffectingCombat(targetList[mob]) and not (UnitPlayerOrPetInRaid(targetList[mob]) or UnitPlayerOrPetInParty(targetList[mob])) then DBM:StartCombat(mod, delay, "PLAYER_REGEN_DISABLED") elseif (delay == 0) and not force then DBM:StartCombat(mod, 0, "PLAYER_REGEN_DISABLED_AND_MESSAGE") end end clearTargetList() end end local function checkForPull(mob, combatInfo) healthCombatInitialized = false --This just can't be avoided, trying to save cpu by using C_TimerAfter broke this --This needs the redundancy and ability to pass args. scanForCombat(combatInfo.mod, mob, 0, true) -- Since 3.3.5a does not have ENCOUNTER_START, and IEEU is not implemented everywhere, a scan is fired instantly on PLAYER_REGEN_DISABLED, rather than waiting 0.5s. Uses custom arg to use the scanForCombat UnitAffectingCombat checks DBM:Schedule(0.5, scanForCombat, combatInfo.mod, mob, 0.5) -- DBM:Schedule(1.25, scanForCombat, combatInfo.mod, mob, 1.25) DBM:Schedule(2, scanForCombat, combatInfo.mod, mob, 2) DBM:Schedule(2.1, function() healthCombatInitialized = true end) end -- TODO: fix the duplicate code that was added for quick & dirty support of zone IDs -- detects a boss pull based on combat state, this is required for pre-ICC bosses that do not fire INSTANCE_ENCOUNTER_ENGAGE_UNIT events on engage function DBM:PLAYER_REGEN_DISABLED() -- lastCombatStarted = GetTime() if not combatInitialized then return end local combat = combatInfo[LastInstanceMapID] or combatInfo[LastInstanceZoneName] if dbmIsEnabled and combat then for _, v in ipairs(combat) do if v.type:find("combat") and not v.noRegenDetection and not (#inCombat > 0 and v.noMultiBoss) then if v.multiMobPullDetection then for _, mob in ipairs(v.multiMobPullDetection) do if checkForPull(mob, v) then break end end else checkForPull(v.mob, v) end end end end if self.Options.AFKHealthWarning and not DBM:IsEncounterInProgress() and UnitIsAFK("player") and self:AntiSpam(5, "AFK") then--You are afk and losing health, some griever is trying to kill you while you are afk/tabbed out. self:FlashClientIcon() local voice = DBM.Options.ChosenVoicePack2 local path = 8585--"Sound\\Creature\\CThun\\CThunYouWillDIe.wav" if not voiceSessionDisabled and voice ~= "None" then path = "Interface\\AddOns\\DBM-VP"..voice.."\\checkhp.ogg" end self:PlaySound(path) if UnitHealthMax("player") ~= 0 then local health = UnitHealth("player") / UnitHealthMax("player") * 100 self:AddMsg(L.AFK_WARNING:format(health)) end end end function DBM:PLAYER_REGEN_ENABLED() if delayedFunction then--Will throw error if not a function, purposely not doing and type(delayedFunction) == "function" for now to make sure code works though because it always should be function delayedFunction() delayedFunction = nil end if watchFrameRestore then WatchFrame:Show() watchFrameRestore = false end if self.Options.FixCLEUOnCombatStart then self:Schedule(0.5, CombatLogClearEntries) self:Debug("Scheduled FixCLEU from PLAYER_REGEN_DISABLED") end end local function isBossEngaged(cId) -- note that this is designed to work with any number of bosses, but it might be sufficient to check the first 5 unit ids local i = 1 repeat local bossUnitId = "boss"..i local bossGUID = not UnitIsDead(bossUnitId) and UnitGUID(bossUnitId) -- check for UnitIsVisible maybe? local bossCId = bossGUID and DBM:GetCIDFromGUID(bossGUID) if bossCId and (type(cId) == "number" and cId == bossCId or type(cId) == "table" and checkEntry(cId, bossCId)) then return true end i = i + 1 until not bossGUID end function DBM:INSTANCE_ENCOUNTER_ENGAGE_UNIT() if timerRequestInProgress then return end--do not start ieeu combat if timer request is progressing. (not to break Timer Recovery stuff) local combat = combatInfo[LastInstanceMapID] or combatInfo[LastInstanceZoneName] if dbmIsEnabled and combat then self:Debug("INSTANCE_ENCOUNTER_ENGAGE_UNIT event fired for zoneId"..LastInstanceMapID, 3) for _, v in ipairs(combat) do if not v.noIEEUDetection and not (#inCombat > 0 and v.noMultiBoss) then if v.type:find("combat") and isBossEngaged(v.multiMobPullDetection or v.mob) then self:StartCombat(v.mod, 0, "IEEU") end end end end end local questFrame local questTbl = {} local function IsQuestFlaggedCompleted(questID) -- Load completed quests from the server if not questFrame then questFrame = CreateFrame("Frame") questFrame:RegisterEvent("QUEST_QUERY_COMPLETE") questFrame:SetScript("OnEvent", function() questTbl = GetQuestsCompleted() end) end QueryQuestsCompleted() -- Check if questID is completed from the table if tContains(questTbl, questID) then return true else return false end end local function checkExpressionList(exp, str) for _, v in ipairs(exp) do if str:match(v) then return true end end return false end -- called for all mob chat events local function onMonsterMessage(self, type, msg) -- pull detection local combat = combatInfo[LastInstanceMapID] or combatInfo[LastInstanceZoneName] if dbmIsEnabled and combat then for _, v in ipairs(combat) do if (v.type == type and checkEntry(v.msgs, msg) or v.type == type .. "_regex" and checkExpressionList(v.msgs, msg)) and not (#inCombat > 0 and v.noMultiBoss) then self:StartCombat(v.mod, 0, "MONSTER_MESSAGE") elseif (v.type == "combat_" .. type .. "find" and tContains(v.msgs, msg) or v.type == "combat_" .. type and checkEntry(v.msgs, msg)) and not (#inCombat > 0 and v.noMultiBoss) then if IsInInstance() then--Indoor boss that uses both combat and message for combat, so in other words (such as hodir), don't require "target" of boss for yell like scanForCombat does for World Bosses self:StartCombat(v.mod, 0, "MONSTER_MESSAGE") else--World Boss scanForCombat(v.mod, v.mob, 0) if v.mod.readyCheckQuestId and (self.Options.WorldBossNearAlert or v.mod.Options.ReadyCheck) and not IsQuestFlaggedCompleted(v.mod.readyCheckQuestId) and v.mod.readyCheckMaxLevel >= playerLevel then self:FlashClientIcon() self:PlaySound(8960, true) end end end end end -- kill detection (wipe detection would also be nice to have) -- todo: add sync for i = #inCombat, 1, -1 do local v = inCombat[i] if not v.combatInfo then return end if v.combatInfo.killType == type and v.combatInfo.killMsgs[msg] then self:EndCombat(v, nil, nil, "onMonsterMessage") end end end function DBM:IsEncounterInProgress() return encounterInProgress end function DBM:CHAT_MSG_MONSTER_YELL(msg, npc, _, _, target) if DBM:IsEncounterInProgress() or (IsInInstance() and InCombatLockdown()) then--Too many 5 mans/old raids don't properly return encounterinprogress local targetName = target or "nil" self:Debug("CHAT_MSG_MONSTER_YELL from "..npc.." while looking at "..targetName, 2) end if not IsInInstance() then if msg:find(L.WORLD_BUFFS.hordeOny) then SendWorldSync(self, "WBA", "Onyxia\tHorde\t22888\t15\t4") DBM:Debug("L.WORLD_BUFFS.hordeOny detected") elseif msg:find(L.WORLD_BUFFS.allianceOny) then SendWorldSync(self, "WBA", "Onyxia\tAlliance\t22888\t15\t4") DBM:Debug("L.WORLD_BUFFS.allianceOny detected") elseif msg:find(L.WORLD_BUFFS.hordeNef) then SendWorldSync(self, "WBA", "Nefarian\tHorde\t22888\t16\t4") DBM:Debug("L.WORLD_BUFFS.hordeNef detected") elseif msg:find(L.WORLD_BUFFS.allianceNef) then SendWorldSync(self, "WBA", "Nefarian\tAlliance\t22888\t16\t4") DBM:Debug("L.WORLD_BUFFS.allianceNef detected") elseif msg:find(L.WORLD_BUFFS.rendHead) then SendWorldSync(self, "WBA", "rendBlackhand\tHorde\t16609\t7\t4") DBM:Debug("L.WORLD_BUFFS.rendHead detected") elseif msg:find(L.WORLD_BUFFS.zgHeartYojamba) then -- zg buff transcripts https://gist.github.com/venuatu/18174f0e98759f83b9834574371b8d20 -- 28.58, 28.67, 27.77, 29.39, 28.67, 29.03, 28.12, 28.19, 29.61 SendWorldSync(self, "WBA", "Zandalar\tBoth\t24425\t28\t4") DBM:Debug("L.WORLD_BUFFS.zgHeartYojamba detected") elseif msg:find(L.WORLD_BUFFS.zgHeartBooty) then -- 48.7, 49.76, 50.64, 49.42, 49.8, 50.67, 50.94, 51.06 SendWorldSync(self, "WBA", "Zandalar\tBoth\t24425\t49\t4") DBM:Debug("L.WORLD_BUFFS.zgHeartBooty detected") end end return onMonsterMessage(self, "yell", msg) end function DBM:CHAT_MSG_MONSTER_EMOTE(msg) return onMonsterMessage(self, "emote", msg) end function DBM:CHAT_MSG_RAID_BOSS_EMOTE(msg, ...) onMonsterMessage(self, "emote", msg) return self:FilterRaidBossEmote(msg, ...) end function DBM:CHAT_MSG_RAID_BOSS_WHISPER(msg) --Make it easier for devs to detect whispers they are unable to see --TINTERFACE\\ICONS\\ability_socererking_arcanewrath.blp:20|t You have been branded by |cFFF00000|Hspell:156238|h[Arcane Wrath]|h|r!" if msg and msg ~= "" and IsInGroup() and not _G["BigWigs"] then SendAddonMessage("Transcriptor", msg, IsInRaid() and "RAID" or "PARTY")--Send any emote to transcriptor, even if no spellid end end function DBM:CHAT_MSG_MONSTER_SAY(msg) if not IsInInstance() then if msg:find(L.WORLD_BUFFS.zgHeart) then -- 51.01 51.82 51.85 51.53 SendWorldSync(self, "WBA", "Zandalar\tBoth\t24425\t51\t4") end end return onMonsterMessage(self, "say", msg) end end --------------------------- -- Kill/Wipe Detection -- --------------------------- function checkWipe(self, confirm) if #inCombat > 0 then if not savedDifficulty or not difficultyText or not difficultyIndex then--prevent error if savedDifficulty or difficultyText is nil savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = self:GetCurrentInstanceDifficulty() end -- Apply correction to savedDifficulty for out-of-instance ghost checks if encounterDifficulty and encounterDifficulty ~= savedDifficulty then savedDifficulty = encounterDifficulty end --hack for no iEEU information is provided. if not bossuIdFound then for i = 1, 5 do if UnitExists("boss"..i) then bossuIdFound = true break end end end local wipe -- 0: no wipe, 1: normal wipe, 2: wipe by UnitExists check. -- DBM:IsEncounterInProgress() wouldn't work here since this WotLK workaround sets the boolean variable on StartCombat and EndCombat, and since checkwipe is one of the triggers for EndCombat, it would never properly wipe. -- if DBM:IsEncounterInProgress() then -- Encounter Progress marked, you obviously in combat with boss. So do not Wipe -- wipe = 0 if savedDifficulty == "worldboss" and UnitIsDeadOrGhost("player") then -- On dead or ghost, unit combat status detection would be fail. If you ghost in instance, that means wipe. But in worldboss, ghost means not wipe. So do not wipe. wipe = 0 elseif bossuIdFound and LastInstanceType == "raid" then -- Combat started by IEEU and no boss exist and no EncounterProgress marked, that means wipe wipe = 2 for i = 1, 5 do if UnitExists("boss"..i) then wipe = 0 -- Boss found. No wipe break end end end -- Commenting this else check since there is no EncounterProgress info on WotLK, so whenever IEEU fired and there was no boss frames, it was considering a wipe without running the group unit combat detection -- else -- Unit combat status detection. No combat unit in your party and no EncounterProgress marked, that means wipe if wipe ~= 0 then wipe = wipe or 1 local uId = ((GetNumRaidMembers() == 0) and "party") or "raid" for i = 0, mmax(GetNumRaidMembers(), GetNumPartyMembers()) do local id = (i == 0 and "player") or uId..i if UnitAffectingCombat(id) and not UnitIsDeadOrGhost(id) then wipe = 0 -- Someone still in combat. No wipe break end end end if wipe == 0 then self:Schedule(3, checkWipe, self) elseif confirm then for i = #inCombat, 1, -1 do local mod = inCombat[i] if not mod.noStatistics then self:Debug("You wiped. Reason : " .. (wipe == 1 and "No combat unit found in your party." or "No boss found : "..(wipe or "nil"))) end self:EndCombat(mod, true, nil, "checkWipe") end else local maxDelayTime = (savedDifficulty == "worldboss" and 15) or 5 --wait 10s more on worldboss do actual wipe. for _, v in ipairs(inCombat) do maxDelayTime = v.combatInfo and v.combatInfo.wipeTimer and v.combatInfo.wipeTimer > maxDelayTime and v.combatInfo.wipeTimer or maxDelayTime end self:Schedule(maxDelayTime, checkWipe, self, true) end end end function DBM:FireCustomEvent(event, ...) fireEvent(event, ...) end function checkBossHealth(self, onlyHighest) if #inCombat > 0 then for _, v in ipairs(inCombat) do if not v.multiMobPullDetection or v.mainBoss then self:GetBossHP(v.mainBoss or v.combatInfo.mob or -1, onlyHighest) else for _, mob in ipairs(v.multiMobPullDetection) do self:GetBossHP(mob, onlyHighest) end end end self:Schedule(1, checkBossHealth, self, onlyHighest) end end function checkCustomBossHealth(self, mod) mod:CustomHealthUpdate() self:Schedule(1, checkCustomBossHealth, self, mod) end function DBM:InGuildParty() local guildName = GetGuildInfo("player") local numRaid = GetNumPartyMembers() if guildName and numRaid > 0 then local guldMatch = 0 for i = 1, numRaid do local guild = GetGuildInfo("raid"..i) or "" if guild == guildName then guldMatch = guldMatch + 1 end end if guldMatch >= numRaid * 0.75 then return true end end end do local tooltipsHidden = false --Delayed Guild Combat sync object so we allow time for RL to disable them local function delayedGCSync(modId, difficultyIndex, name, thisTime, wipeHP) if not dbmIsEnabled then return end if not private.statusGuildDisabled and updateNotificationDisplayed == 0 then if thisTime then--Wipe event if wipeHP then sendGuildSync(DBMPrefix.."-GCE", modId.."\t8\t1\t"..thisTime.."\t"..difficultyIndex.."\t"..name.."\t"..lastGroupLeader.."\t"..wipeHP) else sendGuildSync(DBMPrefix.."-GCE", modId.."\t8\t0\t"..thisTime.."\t"..difficultyIndex.."\t"..name.."\t"..lastGroupLeader) end else sendGuildSync(DBMPrefix.."-GCB", modId.."\t3\t"..difficultyIndex.."\t"..name) end end end local statVarTable = { --Current ["event5"] = "normal", ["event20"] = "lfr25", ["event40"] = "lfr25", ["normal5"] = "normal", ["heroic5"] = "heroic", ["normal"] = "normal", ["heroic"] = "heroic", ["mythic"] = "mythic", ["worldboss"] = "normal", ["timewalker"] = "timewalker", --Legacy ["normal10"] = "normal", ["normal20"] = "normal", ["normal25"] = "normal25", ["normal40"] = "normal", ["heroic10"] = "heroic", ["heroic25"] = "heroic25", } function DBM:StartCombat(mod, delay, event, synced, syncedStartHp, syncedEvent) cSyncSender = {} cSyncReceived = 0 if not checkEntry(inCombat, mod) then if not mod.Options.Enabled then return end --HACK: makes sure that we don't detect a false pull if the event fires again when the boss dies... if mod.lastKillTime and GetTime() - mod.lastKillTime < 10 then return end if not mod.combatInfo then return end if mod.combatInfo.noCombatInVehicle and UnitInVehicle("player") then -- HACK return end if self.Options.RecordOnlyBosses then self:StartLogging(0) end savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = self:GetCurrentInstanceDifficulty() encounterDifficulty, encounterDifficultyText, encounterDifficultyIndex = savedDifficulty, difficultyText, difficultyIndex if event then self:Debug("StartCombat called by : "..event.." for mod : "..mod.id.." (revision: "..(mod.revision or 0)..") with difficulty : "..encounterDifficulty..". LastInstanceMapID is "..LastInstanceMapID) else self:Debug("StartCombat called by individual mod or unknown reason for mod : "..mod.id.." (revision: "..(mod.revision or 0)..") with difficulty : "..encounterDifficulty..". LastInstanceMapID is "..LastInstanceMapID) event = "" end self.currentModId = mod.id --check completed. starting combat tinsert(inCombat, mod) if mod.inCombatOnlyEvents and not mod.inCombatOnlyEventsRegistered then mod.inCombatOnlyEventsRegistered = 1 mod:RegisterEvents(unpack(mod.inCombatOnlyEvents)) end --Fix for "attempt to perform arithmetic on field 'stats' (a nil value)" if not mod.stats and not mod.noStatistics then self:AddMsg(L.BAD_LOAD)--Warn user that they should reload ui soon as they leave combat to get their mod to load correctly as soon as possible mod.ignoreBestkill = true--Force this to true so we don't check any more occurances of "stats" elseif event == "TIMER_RECOVERY" then --add a lag time to delay when TIMER_RECOVERY delay = delay + select(3, GetNetStats()) / 1000 else mod.ignoreBestkill = false end -- Moving this up, to be logged with the StartCombat debug -- savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = self:GetCurrentInstanceDifficulty() -- encounterDifficulty, encounterDifficultyText, encounterDifficultyIndex = savedDifficulty, difficultyText, difficultyIndex local name = mod.combatInfo.name local modId = mod.id mod.inCombat = true encounterInProgress = true mod.combatInfo.pull = GetTime() - (delay or 0) bossuIdFound = event == "IEEU" if (self.Options.AlwaysShowHealthFrame or mod.Options.HealthFrame) and mod.Options.Enabled then self.BossHealth:Show(mod.localization.general.name) if mod.bossHealthInfo then for i = 1, #mod.bossHealthInfo, 2 do self.BossHealth:AddBoss(mod.bossHealthInfo[i], mod.bossHealthInfo[i + 1]) end else self.BossHealth:AddBoss(mod.combatInfo.mob, mod.localization.general.name) end end if mod.minCombatTime then self:Schedule(mmax((mod.minCombatTime - delay), 3), checkWipe, self) else self:Schedule(3, checkWipe, self) end --get boss hp at pull if syncedStartHp and syncedStartHp < 1 then syncedStartHp = syncedStartHp * 100 end local startHp = syncedStartHp or mod:GetBossHP(mod.mainBoss or mod.combatInfo.mob or -1) or 100 --check boss engaged first? if (savedDifficulty == "worldboss" and startHp < 98) or (event == "UNIT_HEALTH" and delay > 4) or event == "TIMER_RECOVERY" then--Boss was not full health when engaged, disable combat start timer and kill record mod.ignoreBestkill = true else--Reset ignoreBestkill after wipe mod.ignoreBestkill = false --It was a clean pull, so cancel any RequestTimers which might fire after boss was pulled if boss was pulled right after mod load --Only want timer recovery on in progress bosses, not clean pulls if startHp > 98 and (savedDifficulty == "worldboss" or event == "IEEU") then self:Unschedule(self.RequestTimers) end end if self.Options.HideTooltips then --Better or cleaner way? tooltipsHidden = true GameTooltip.Temphide = function() GameTooltip:Hide() end; GameTooltip:SetScript("OnShow", GameTooltip.Temphide) end if self.Options.DisableSFX and GetCVar("Sound_EnableSFX") == "1" then SetCVar("Sound_EnableSFX", 0) end --boss health info scheduler if mod.CustomHealthUpdate then self:Schedule(1, checkCustomBossHealth, self, mod) else self:Schedule(1, checkBossHealth, self, mod.onlyHighest) end --process global options self:HideBlizzardEvents(1) -- I prefer starting the log at the beginning of the function, to catch the StartCombat debug -- if self.Options.RecordOnlyBosses then -- self:StartLogging(0) -- end if self.Options.HideObjectivesFrame and GetNumTrackedAchievements() == 0 then -- doesn't need InCombatLockdown() check since it's not a protected function if WatchFrame:IsVisible() then WatchFrame:Hide() watchFrameRestore = true end end fireEvent("DBM_Pull", mod, delay, synced, startHp) self:FlashClientIcon() --serperate timer recovery and normal start. if event ~= "TIMER_RECOVERY" then --add pull count if mod.stats and not mod.noStatistics then if not mod.stats[statVarTable[savedDifficulty].."Pulls"] then mod.stats[statVarTable[savedDifficulty].."Pulls"] = 0 end mod.stats[statVarTable[savedDifficulty].."Pulls"] = mod.stats[statVarTable[savedDifficulty].."Pulls"] + 1 end --show speed timer if self.Options.AlwaysShowSpeedKillTimer2 and mod.stats and not mod.ignoreBestkill and not mod.noStatistics then local bestTime = mod.stats[statVarTable[savedDifficulty].."BestTime"] if bestTime and bestTime > 0 then local speedTimer = mod:NewTimer(bestTime, L.SPEED_KILL_TIMER_TEXT, "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME", nil, false) speedTimer:Start() end end --update boss left if mod.numBoss then mod.vb.bossLeft = mod.numBoss end --elect icon person if mod.findFastestComputer and not self.Options.DontSetIcons then if self:GetRaidRank() > 0 then for i = 1, #mod.findFastestComputer do local option = mod.findFastestComputer[i] if mod.Options[option] then DBM:Debug(("DBMv4-IS sending %s %s %s"):format(UnitGUID("player"), tostring(self.Revision), option), 3) sendSync("DBMv4-IS", UnitGUID("player").."\t"..tostring(self.Revision).."\t"..option) end end elseif not IsInGroup() then for i = 1, #mod.findFastestComputer do local option = mod.findFastestComputer[i] if mod.Options[option] then private.canSetIcons[option] = true end end end end --call OnCombatStart if mod.OnCombatStart then local startEvent = syncedEvent or event mod:OnCombatStart(delay or 0, startEvent == "PLAYER_REGEN_DISABLED_AND_MESSAGE" or startEvent == "SPELL_CAST_SUCCESS" or startEvent == "MONSTER_MESSAGE", startEvent == "ENCOUNTER_START") end --send "C" sync event = event or "" if not synced then sendSync("DBMv4-Pull", (delay or 0).."\t"..modId.."\t"..(mod.revision or 0).."\t"..startHp.."\t"..tostring(self.Revision).."\t"..(mod.hotfixNoticeRev or 0).."\t"..event) end if UnitIsPartyLeader("player") then --Global disables require normal, heroic, mythic raid on retail, or 10 man normal, 25 man normal, 40 man normal, 10 man heroic, or 25 man heroic on classic if difficultyIndex == 14 or difficultyIndex == 15 or difficultyIndex == 16 or difficultyIndex == 175 or difficultyIndex == 176 or difficultyIndex == 186 or difficultyIndex == 193 or difficultyIndex == 194 then local statusWhisper, guildStatus, raidIcons, chatBubbles = self.Options.DisableStatusWhisper and 1 or 0, self.Options.DisableGuildStatus and 1 or 0, self.Options.DisableRaidIcons and 1 or 0, self.Options.DisableChatBubbles and 1 or 0 if statusWhisper ~= 0 or guildStatus ~= 0 or raidIcons ~= 0 or chatBubbles ~= 0 then sendSync("DBMv4-RLO", "1\t"..statusWhisper.."\t"..guildStatus.."\t"..raidIcons.."\t"..chatBubbles) end end end --show bigbrother check if self.Options.ShowBigBrotherOnCombatStart and BigBrother and type(BigBrother.ConsumableCheck) == "function" then if self.Options.BigBrotherAnnounceToRaid then BigBrother:ConsumableCheck("RAID") else BigBrother:ConsumableCheck("SELF") end end --show engage message if self.Options.ShowEngageMessage and not mod.noStatistics then if mod.ignoreBestkill and (savedDifficulty == "worldboss") then--Should only be true on in progress field bosses, not in progress raid bosses we did timer recovery on. self:AddMsg(L.COMBAT_STARTED_IN_PROGRESS:format(difficultyText..name)) else self:AddMsg(L.COMBAT_STARTED:format(difficultyText..name)) local check = not private.statusGuildDisabled and self:InGuildParty() and DBM:GetNumGuildPlayersInZone() >= 10 if check and not self.Options.DisableGuildStatus then--Only send relevant content self:Unschedule(delayedGCSync, modId) self:Schedule(1.5, delayedGCSync, modId, difficultyIndex, name) end end end --stop pull count local dummyMod = self:GetModByName("PullTimerCountdownDummy") if dummyMod then--stop pull timer dummyMod.text:Cancel() dummyMod.timer:Stop() if not self.Options.DontShowPTCountdownText then for _, tttimer in pairs(TT.timerList) do if tttimer.type == 3 and not tttimer.isFree then TT:FreeTimerTrackerTimer(tttimer) break end end end DBM:Unschedule(SendChatMessage) -- unschedule chat spam on pull end -- stop combat start timer and debug if refreshed early -- if DBM.Options.BadTimerAlert or DBM.Options.DebugMode and DBM.Options.DebugLevel > 1 then local bar = DBT:GetBar(L.GENERIC_TIMER_COMBAT) if bar then if bar.timer > 0 then -- Catch all early refreshes, since pull timers are generally fixed and can be precise local remaining = ("%.2f"):format(bar.timer) local ttext = bar.id if DBM.Options.BadTimerAlert and bar.timer > 1 then--If greater than 1 seconds off, report this out of debug mode to all users DBM:AddMsg("Timer "..ttext.." refreshed before expired. Remaining time is : "..remaining..". Please report this bug") fireEvent("DBM_Debug", "Timer "..ttext.." refreshed before expired. Remaining time is : "..remaining..". Please report this bug", 2) else DBM:Debug("Timer "..ttext.." refreshed before expired. Remaining time is : "..remaining, 2) end end DBT:CancelBar(L.GENERIC_TIMER_COMBAT) end -- end local bigWigs = _G["BigWigs"] if bigWigs and bigWigs.db.profile.raidicon and not self.Options.DontSetIcons and self:GetRaidRank() > 0 then--Both DBM and bigwigs have raid icon marking turned on. self:AddMsg(L.BIGWIGS_ICON_CONFLICT)--Warn that one of them should be turned off to prevent conflict (which they turn off is obviously up to raid leaders preference, dbm accepts either or turned off to stop this alert) end if self.Options.EventSoundEngage2 and self.Options.EventSoundEngage2 ~= "" and self.Options.EventSoundEngage2 ~= "None" then self:PlaySoundFile(self.Options.EventSoundEngage2, nil, true) end if self.Options.EventSoundMusic and self.Options.EventSoundMusic ~= "None" and self.Options.EventSoundMusic ~= "" and not (self.Options.EventMusicMythicFilter and (savedDifficulty == "mythic" or savedDifficulty == "challenge")) and not mod.noStatistics then fireEvent("DBM_MusicStart", "BossEncounter") if not self.Options.RestoreSettingMusic then self.Options.RestoreSettingMusic = tonumber(GetCVar("Sound_EnableMusic")) or 1 if self.Options.RestoreSettingMusic == 0 then SetCVar("Sound_EnableMusic", 1) else self.Options.RestoreSettingMusic = nil--Don't actually need it end end local path = "MISSING" if self.Options.EventSoundMusic == "Random" then local usedTable = self.Options.EventSoundMusicCombined and self.Music or self.BattleMusic if #usedTable >= 3 then local random = random(3, #usedTable) path = usedTable[random].value end else path = self.Options.EventSoundMusic end if path ~= "MISSING" then PlayMusic(path) self.Options.musicPlaying = true self:Debug("Starting combat music with file: "..path) end end else self:AddMsg(L.COMBAT_STATE_RECOVERED:format(difficultyText..name, strFromTime(delay))) if mod.OnTimerRecovery then mod:OnTimerRecovery() end end if savedDifficulty == "worldboss" and mod.WBEsync then if lastBossEngage[modId..playerRealm] and (GetTime() - lastBossEngage[modId..playerRealm] < 30) then return end--Someone else synced in last 10 seconds so don't send out another sync to avoid needless sync spam. lastBossEngage[modId..playerRealm] = GetTime()--Update last engage time, that way we ignore our own sync SendWorldSync(self, "WBE", modId.."\t"..playerRealm.."\t"..startHp.."\t8\t"..name) end if self.Options.FixCLEUOnCombatStart then self:Schedule(0.5, CombatLogClearEntries) -- schedule prevents client crash with DBM:StartCombat function (tested on Leotheras) self:Debug("Scheduled FixCLEU from CombatStart") end -- Debug loaded mod profile and options self:Debug("Loaded Mod profile: " .. DBM:CurrentModProfile(), 3) for i, v in pairs(mod.Options) do self:Debug(("Mod Option %s returns %s"):format(i, tostring(v)), 3) end end end function DBM:UNIT_HEALTH(uId) local cId = self:GetCIDFromGUID(UnitGUID(uId)) local health if UnitHealthMax(uId) ~= 0 then health = UnitHealth(uId) / UnitHealthMax(uId) * 100 end if not health or health < 2 then return end -- no worthy of combat start if health is below 2% if dbmIsEnabled and InCombatLockdown() then if cId ~= 0 and not bossHealth[cId] and bossIds[cId] and UnitAffectingCombat(uId) and not (UnitPlayerOrPetInRaid(uId) or UnitPlayerOrPetInParty(uId)) and healthCombatInitialized then -- StartCombat by UNIT_HEALTH. local combat = combatInfo[LastInstanceMapID] or combatInfo[LastInstanceZoneName] if combat then for _, v in ipairs(combat) do if v.mod.Options.Enabled and not v.mod.disableHealthCombat and v.type:find("combat") and (v.multiMobPullDetection and checkEntry(v.multiMobPullDetection, cId) or v.mob == cId) and not (#inCombat > 0 and v.noMultiBoss) then if v.mod.noFriendlyEngagement and UnitIsFriend("player", uId) then return end -- No sense in assuming delay based on boss health! Realistically, delay is 0 since it fires as soon as boss drops HP. This ensures a more accurate StartCombat. (Previous logic from retail: Delay set, > 97% = 0.5 (consider as normal pulling), max delay limited to 20s.) self:StartCombat(v.mod, 0--[[health > 97 and 0.5 or mmin(GetTime() - lastCombatStarted, 20)]], "UNIT_HEALTH", nil, health) end end end end if self.Options.AFKHealthWarning and UnitIsUnit(uId, "player") and (health < 85) and not DBM:IsEncounterInProgress() and UnitIsAFK("player") and self:AntiSpam(5, "AFK") then--You are afk and losing health, some griever is trying to kill you while you are afk/tabbed out. self:PlaySound(8585)--So fire an alert sound to save yourself from this person's behavior. self:AddMsg(L.AFK_WARNING:format(health)) end end end function DBM:EndCombat(mod, wipe, srmIncluded, event) if removeEntry(inCombat, mod) then self.currentModId = nil if mod.inCombatOnlyEvents and mod.inCombatOnlyEventsRegistered then if srmIncluded then-- unregister all events including SPELL_AURA_REMOVED events mod:UnregisterInCombatEvents(false, true) else-- unregister all events except for SPELL_AURA_REMOVED events (might still be needed to remove icons etc...) mod:UnregisterInCombatEvents() self:Schedule(2, mod.UnregisterInCombatEvents, mod, true) -- 2 seconds should be enough for all auras to fade end self:Schedule(3, mod.Stop, mod) -- Remove accident started timers. mod.inCombatOnlyEventsRegistered = nil if mod.OnCombatEnd then self:Schedule(3, mod.OnCombatEnd, mod, wipe, true) -- Remove accidentally shown frames end end if mod.updateInterval then mod:UnregisterOnUpdateHandler() end mod:Stop() if event then self:Debug("EndCombat called by : "..event.." for mod: " ..mod.id..". LastInstanceMapID is "..LastInstanceMapID) end if private.enableIcons and not self.Options.DontSetIcons and not self.Options.DontRestoreIcons then -- restore saved previous icon for uId, icon in pairs(mod.iconRestore) do SetRaidTarget(uId, icon) end twipe(mod.iconRestore) end mod.inCombat = false encounterInProgress = false if mod.combatInfo.killMobs then for i, _ in pairs(mod.combatInfo.killMobs) do mod.combatInfo.killMobs[i] = true end end if not savedDifficulty or not difficultyText or not difficultyIndex then--prevent error if savedDifficulty or difficultyText is nil savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = DBM:GetCurrentInstanceDifficulty() end if encounterDifficulty and encounterDifficultyText and encounterDifficultyIndex and (encounterDifficulty ~= savedDifficulty or encounterDifficultyText ~= difficultyText or encounterDifficultyIndex ~= difficultyIndex) then savedDifficulty, difficultyText, difficultyIndex = encounterDifficulty, encounterDifficultyText, encounterDifficultyIndex end local name = mod.combatInfo.name local modId = mod.id if wipe and mod.stats and not mod.noStatistics then mod.lastWipeTime = GetTime() --Fix for "attempt to perform arithmetic on field 'pull' (a nil value)" (which was actually caused by stats being nil, so we never did getTime on pull, fixing one SHOULD fix the other) local thisTime = GetTime() - mod.combatInfo.pull local hp = mod.highesthealth and mod:GetHighestBossHealth() or mod:GetLowestBossHealth() local wipeHP = mod.CustomHealthUpdate and mod:CustomHealthUpdate() or hp and ("%d%%"):format(hp) or CL.UNKNOWN if mod.vb.phase then wipeHP = wipeHP.." ("..L.SCENARIO_STAGE:format(mod.vb.phase)..")" end if mod.numBoss and mod.vb.bossLeft and mod.numBoss > 1 then local bossesKilled = mod.numBoss - mod.vb.bossLeft wipeHP = wipeHP.." ("..BOSSES_KILLED:format(bossesKilled, mod.numBoss)..")" end local totalPulls = mod.stats[statVarTable[savedDifficulty].."Pulls"] local totalKills = mod.stats[statVarTable[savedDifficulty].."Kills"] if thisTime < 30 then -- Normally, one attempt will last at least 30 sec. totalPulls = totalPulls - 1 mod.stats[statVarTable[savedDifficulty].."Pulls"] = totalPulls if self.Options.ShowDefeatMessage then self:AddMsg(L.COMBAT_ENDED_AT:format(difficultyText..name, wipeHP, strFromTime(thisTime))) --No reason to GCE it here, so omited on purpose. end else if self.Options.ShowDefeatMessage then self:AddMsg(L.COMBAT_ENDED_AT_LONG:format(difficultyText..name, wipeHP, strFromTime(thisTime), totalPulls - totalKills)) local check = self:InGuildParty() and DBM:GetNumGuildPlayersInZone() >= 10 if check and not self.Options.DisableGuildStatus then self:Unschedule(delayedGCSync, modId) self:Schedule(1.5, delayedGCSync, modId, difficultyIndex, name, strFromTime(thisTime), wipeHP) end end if self.Options.EventSoundWipe and self.Options.EventSoundWipe ~= "None" and self.Options.EventSoundWipe ~= "" then if self.Options.EventSoundWipe == "Random" then local defeatSounds = DBM:GetDefeatSounds() if #defeatSounds >= 3 then self:PlaySoundFile(defeatSounds[random(3, #defeatSounds)].value) end else self:PlaySoundFile(self.Options.EventSoundWipe, nil, true) end end end if showConstantReminder == 2 and IsInGroup() then showConstantReminder = 1 --Show message any time this is a mod that has a newer hotfix revision and it's a wipe --These people need to know the wipe could very well be their fault. self:AddMsg(L.OUT_OF_DATE_NAG) end local msg for k, _ in pairs(autoRespondSpam) do if self.Options.WhisperStats then msg = msg or chatPrefixShort..L.WHISPER_COMBAT_END_WIPE_STATS_AT:format(playerName, difficultyText..(name or ""), wipeHP, totalPulls - totalKills) else msg = msg or chatPrefixShort..L.WHISPER_COMBAT_END_WIPE_AT:format(playerName, difficultyText..(name or ""), wipeHP) end sendWhisper(k, msg) end fireEvent("wipe", mod) -- Backwards compatibility fireEvent("DBM_Wipe", mod) elseif not wipe and mod.stats and not mod.noStatistics then mod.lastKillTime = GetTime() local thisTime = GetTime() - (mod.combatInfo.pull or 0) local lastTime = mod.stats[statVarTable[savedDifficulty].."LastTime"] local bestTime = mod.stats[statVarTable[savedDifficulty].."BestTime"] if not mod.stats[statVarTable[savedDifficulty].."Kills"] or mod.stats[statVarTable[savedDifficulty].."Kills"] < 0 then mod.stats[statVarTable[savedDifficulty].."Kills"] = 0 end --Fix logical error i've seen where for some reason we have more kills then pulls for boss as seen by - stats for wipe messages. mod.stats[statVarTable[savedDifficulty].."Kills"] = mod.stats[statVarTable[savedDifficulty].."Kills"] + 1 if mod.stats[statVarTable[savedDifficulty].."Kills"] > mod.stats[statVarTable[savedDifficulty].."Pulls"] then mod.stats[statVarTable[savedDifficulty].."Kills"] = mod.stats[statVarTable[savedDifficulty].."Pulls"] end if not mod.ignoreBestkill and mod.combatInfo.pull then mod.stats[statVarTable[savedDifficulty].."LastTime"] = thisTime --Just to prevent pre mature end combat calls from broken mods from saving bad time stats. if bestTime and bestTime > 0 and bestTime < 1.5 then mod.stats[statVarTable[savedDifficulty].."BestTime"] = thisTime else mod.stats[statVarTable[savedDifficulty].."BestTime"] = mmin(bestTime or mhuge, thisTime) end end local totalKills = mod.stats[statVarTable[savedDifficulty].."Kills"] if self.Options.ShowDefeatMessage then local msg local thisTimeString = thisTime and strFromTime(thisTime) if not mod.combatInfo.pull then--was a bad pull so we ignored thisTime, should never happen msg = L.BOSS_DOWN:format(difficultyText..name, CL.UNKNOWN) elseif mod.ignoreBestkill then--Should never happen in a scenario so no need for scenario check. msg = L.BOSS_DOWN_I:format(difficultyText..name, totalKills) elseif not lastTime then msg = L.BOSS_DOWN:format(difficultyText..name, thisTimeString) elseif thisTime < (bestTime or mhuge) then msg = L.BOSS_DOWN_NR:format(difficultyText..name, thisTimeString, strFromTime(bestTime), totalKills) else msg = L.BOSS_DOWN_L:format(difficultyText..name, thisTimeString, strFromTime(lastTime), strFromTime(bestTime), totalKills) end local check = not private.statusGuildDisabled and self:InGuildParty() and DBM:GetNumGuildPlayersInZone() >= 10 if thisTimeString and check and not self.Options.DisableGuildStatus and updateNotificationDisplayed == 0 then self:Unschedule(delayedGCSync, modId) self:Schedule(1.5, delayedGCSync, modId, encounterDifficultyIndex, name, thisTimeString) end self:Schedule(1, self.AddMsg, self, msg) end local msg for k, _ in pairs(autoRespondSpam) do if self.Options.WhisperStats then msg = msg or chatPrefixShort..L.WHISPER_COMBAT_END_KILL_STATS:format(playerName, difficultyText..(name or ""), totalKills) else msg = msg or chatPrefixShort..L.WHISPER_COMBAT_END_KILL:format(playerName, difficultyText..(name or "")) end sendWhisper(k, msg) end if self.Options.ReportRecount and self:GetRaidRank() > 0 and Recount then Recount:ReportData(25,(GetNumRaidMembers() > 0 and "raid") or "party") end if self.Options.ReportSkada and self:GetRaidRank() > 0 and Skada and Skada.revisited then self:Schedule(1, function() -- delayed by one second to prevent CombatLogClearEntries wow crash Skada:Report("RAID", "preset", nil, nil, 25) end) end fireEvent("kill", mod) -- Backwards compatibility fireEvent("DBM_Kill", mod) if BossBanner then local encounterName = mod.localization.general.name or "Unknown" BossBanner:OnEvent("BOSS_KILL", modId, encounterName) -- modId is mocked up as encounterID, encounterName is mocked up via mod translation table end if savedDifficulty == "worldboss" and mod.WBEsync then if lastBossDefeat[modId..playerRealm] and (GetTime() - lastBossDefeat[modId..playerRealm] < 30) then return end--Someone else synced in last 10 seconds so don't send out another sync to avoid needless sync spam. lastBossDefeat[modId..playerRealm] = GetTime()--Update last defeat time before we send it, so we don't handle our own sync SendWorldSync(self, "WBD", modId.."\t"..playerRealm.."\t8\t"..name) end if self.Options.EventSoundVictory2 and self.Options.EventSoundVictory2 ~= "None" and self.Options.EventSoundVictory2 ~= "" then if self.Options.EventSoundVictory2 == "Random" then local victorySounds = DBM:GetVictorySounds() if #victorySounds >= 3 then self:PlaySoundFile(victorySounds[random(3, #victorySounds)].value) end else self:PlaySoundFile(self.Options.EventSoundVictory2, nil, true) end end end if mod.OnCombatEnd then mod:OnCombatEnd(wipe) end if mod.OnLeavingCombat then delayedFunction = mod.OnLeavingCombat end self.BossHealth:Hide() if #inCombat == 0 then--prevent error if you pulled multiple boss. (Earth, Wind and Fire) private.statusGuildDisabled, private.statusWhisperDisabled, private.raidIconsDisabled, private.chatBubblesDisabled = false, false, false, false if self.Options.RecordOnlyBosses then self:Schedule(10, self.StopLogging, self)--small delay to catch kill/died combatlog events end self:HideBlizzardEvents(0) self:Unschedule(checkBossHealth) self:Unschedule(checkCustomBossHealth) self.Arrow:Hide(true) -- doesn't need InCombatLockdown() check since it's not a protected function if watchFrameRestore then WatchFrame:Show() watchFrameRestore = false end if tooltipsHidden then --Better or cleaner way? tooltipsHidden = false GameTooltip:SetScript("OnShow", GameTooltip.Show) end if self.Options.DisableSFX then SetCVar("Sound_EnableSFX", 1) end --cache table twipe(autoRespondSpam) twipe(bossHealth) twipe(bossHealthuIdCache) --sync table twipe(private.canSetIcons) twipe(iconSetRevision) twipe(iconSetPerson) bossuIdFound = false encounterDifficulty, encounterDifficultyText, encounterDifficultyIndex = nil, nil, nil self:CreatePizzaTimer(time, "", nil, nil, nil, true)--Auto Terminate infinite loop timers on combat end self:TransitionToDungeonBGM(false, true) self:Schedule(22, self.TransitionToDungeonBGM, self) --module cleanup private:ClearModuleTasks() end end end end function DBM:OnMobKill(cId, synced) if cId ~= 0 and bossIds[cId] then local combat = combatInfo[LastInstanceMapID] or combatInfo[LastInstanceZoneName] if dbmIsEnabled and combat then for _, v in ipairs(combat) do if v.mod.Options.Enabled and v.type:find("combat") and (v.multiMobPullDetection and checkEntry(v.multiMobPullDetection, cId) or v.mob == cId) and not (#inCombat > 0 and v.noMultiBoss) then local uId = DBM:GetUnitIdFromCID(cId) or "target" if v.mod.noFriendlyEngagement and UnitIsFriend("player", uId) then return end self:StartCombat(v.mod, 0, "UNIT_DIED") -- StartCombat on instant kills, for proper Encounter Start/End detection end end end end for i = #inCombat, 1, -1 do local v = inCombat[i] if not v.combatInfo then return end if v.combatInfo.noBossDeathKill then return end if v.combatInfo.killMobs and v.combatInfo.killMobs[cId] then if not synced then sendSync("DBMv4-Kill", cId) end v.combatInfo.killMobs[cId] = false if v.numBoss then v.vb.bossLeft = (v.vb.bossLeft or v.numBoss) - 1 self:Debug("Boss left - "..v.vb.bossLeft.."/"..v.numBoss, 2) end local allMobsDown = true for _, k in pairs(v.combatInfo.killMobs) do if k then allMobsDown = false break end end if allMobsDown then self:EndCombat(v, nil, nil, "All Mobs Down") end elseif cId == v.combatInfo.mob and not v.combatInfo.killMobs and not v.combatInfo.multiMobPullDetection then if not synced then sendSync("DBMv4-Kill", cId) end self:EndCombat(v, nil, nil, "Main CID Down") end end end do local autoLog = false local autoTLog = false local function isLogableContent(self) --1: Check for any broad global filters like LFG/LFR filter --2: Check for what content specifically selected for logging --3: Boss Only filter is handled somewhere else (where StartLogging is called) if self.Options.DoNotLogLFG and IsPartyLFG() then return false end --First checks are manual index checks versus table because even old content can be scaled up using M+ or TW scaling tech --Current player level Mythic+ if self.Options.LogCurrentMPlus and (difficultyIndex or 0) == 8 then return true end --Timewalking raid if self.Options.LogTWRaids and (difficultyIndex == 24 or difficultyIndex == 33) and (instanceDifficultyBylevel[LastInstanceMapID] and instanceDifficultyBylevel[LastInstanceMapID][2] == 3) then return true end --Timewalking Dungeon if self.Options.LogTWDungeons and (difficultyIndex == 24 or difficultyIndex == 33) and (instanceDifficultyBylevel[LastInstanceMapID] and instanceDifficultyBylevel[LastInstanceMapID][2] == 2) then return true end --Now we do checks relying on pre coded trivial check table --Current level Mythic raid if self.Options.LogCurrentMythicRaids and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] >= playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 3) and difficultyIndex == 16 then return true end --Current player level non Mythic raid if self.Options.LogCurrentRaids and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] >= playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 3) and difficultyIndex ~= 16 or difficultyIndex == 18 -- Custom (Warmane Events) then return true end --Trivial raid (ie one below players level) if self.Options.LogTrivialRaids and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] < playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 3) then return true end --Current level Mythic dungeon if self.Options.LogCurrentMythicZero and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] >= playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 2) and difficultyIndex == 23 then return true end --Current level Heroic dungeon if self.Options.LogCurrentHeroic and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] >= playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 2) and (difficultyIndex == 2 or difficultyIndex == 174) then return true end --Current level Normal dungeon if self.Options.LogCurrentNormal and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] >= playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 2) and (difficultyIndex == 1 or difficultyIndex == 173) then return true end --Trivial dungeon (ie one below players level) if self.Options.LogTrivialDungeons and instanceDifficultyBylevel[LastInstanceMapID] and (instanceDifficultyBylevel[LastInstanceMapID][1] < playerLevel) and (instanceDifficultyBylevel[LastInstanceMapID][2] == 2) then return true end return false end function DBM:StartLogging(timer, checkFunc, force) self:Unschedule(DBM.StopLogging) if not force and not isLogableContent(self) then return end if self.Options.AutologBosses then if not LoggingCombat() then autoLog = true self:AddMsg("|cffffff00"..COMBATLOGENABLED.."|r") LoggingCombat(true) end end local transcriptor = _G["Transcriptor"] if self.Options.AdvancedAutologBosses and transcriptor then if not transcriptor:IsLogging() then autoTLog = true self:AddMsg("|cffffff00"..L.TRANSCRIPTOR_LOG_START.."|r") transcriptor:StartLog(1) end end if checkFunc and (autoLog or autoTLog) then self:Unschedule(checkFunc) self:Schedule(timer+10, checkFunc)--But if pull was canceled and we don't have a boss engaged within 10 seconds of pull timer ending, abort log end end function DBM:StopLogging() if self.Options.AutologBosses and LoggingCombat() and autoLog then autoLog = false self:AddMsg("|cffffff00"..COMBATLOGDISABLED.."|r") LoggingCombat(false) end local transcriptor = _G["Transcriptor"] if self.Options.AdvancedAutologBosses and transcriptor and autoTLog then if transcriptor:IsLogging() then autoTLog = false self:AddMsg("|cffffff00"..L.TRANSCRIPTOR_LOG_END.."|r") transcriptor:StopLog(1) end end end function DBM:AddSpecialEventToTranscriptorLog(name) -- custom implementation, to further improve Transcriptor timer diffs with scheduled functions from DBM local transcriptor = _G["Transcriptor"] if not transcriptor then return end if transcriptor:IsLogging() then -- checking for running log (might be unnecessary, but doesnt hurt) if not transcriptor.InsertSpecialEvent then -- checking for existence of function, to prevent nil from outdated Transcriptor versions DBM:AddMsg("Transcriptor addon is outdated. Download the latest version from the following link: https://github.com/Zidras/Transcriptor-WOTLK") return end if name and type(name) == "string" then self:Debug("Added Special Event to Transcriptor Log: "..name) transcriptor.InsertSpecialEvent(name) else error("DBM:AddEventToTranscriptorLog(name) must receive a string.") end end end end do -- From Kader's Compat lib local LGTRoleTable = {melee = "DAMAGER", caster = "DAMAGER", healer = "HEALER", tank = "TANK"} local roleIconTable = {["DAMAGER"] = CL.DAMAGE_ICON, ["HEALER"] = CL.HEALER_ICON, ["TANK"] = CL.TANK_ICON, ["NONE"] = "|TInterface\\Icons\\INV_Misc_QuestionMark:16:16:0:0:64:64:5:59:5:59|t"} local specsTable = { ["MAGE"] = {62, 63, 64}, ["PRIEST"] = {256, 257, 258}, ["ROGUE"] = {259, 260, 261}, ["WARLOCK"] = {265, 266, 267}, ["WARRIOR"] = {71, 72, 73}, ["PALADIN"] = {65, 66, 70}, ["DEATHKNIGHT"] = {250, 251, 252}, ["DRUID"] = {102, 103, 104, 105}, ["HUNTER"] = {253, 254, 255}, ["SHAMAN"] = {262, 263, 264} } local function GetSpecialization(isInspect, isPet, specGroup) local currentSpecGroup = GetActiveTalentGroup(isInspect, isPet) or (specGroup or 1) local points, specname, specid = 0, nil, nil for i = 1, MAX_TALENT_TABS do local name, _, pointsSpent = GetTalentTabInfo(i, isInspect, isPet, currentSpecGroup) if points <= pointsSpent then points = pointsSpent specname = name specid = i end end return specid, specname, points end local function UnitHasTalent(unit, spell, talentGroup) spell = (type(spell) == "number") and GetSpellInfo(spell) or spell return LGT:UnitHasTalent(unit, spell, talentGroup) end local function GetInspectSpecialization(unit, class) local spec -- start with nil if UnitExists(unit) then class = class or select(2, UnitClass(unit)) if class and specsTable[class] then local talentGroup = LGT:GetActiveTalentGroup(unit) local maxPoints, index = 0, 0 for i = 1, MAX_TALENT_TABS do local _, _, pointsSpent = LGT:GetTalentTabInfo(unit, i, talentGroup) if pointsSpent ~= nil then if maxPoints < pointsSpent then maxPoints = pointsSpent if class == "DRUID" and i >= 2 then if i == 3 then index = 4 elseif i == 2 then local points = UnitHasTalent(unit, 57881) index = (points and points > 0) and 3 or 2 end else index = i end end end end spec = specsTable[class][index] end end return spec end local function GetSpecializationRole(unit, class) unit = unit or "player" -- always fallback to player -- For LFG using "UnitGroupRolesAssigned" is enough. local isTank, isHealer, isDamager = UnitGroupRolesAssigned(unit) if isTank then return "TANK" elseif isHealer then return "HEALER" elseif isDamager then return "DAMAGER" end -- speedup things using classes. class = class or select(2, UnitClass(unit)) if class == "HUNTER" or class == "MAGE" or class == "ROGUE" or class == "WARLOCK" then return "DAMAGER" end return LGTRoleTable[LGT:GetUnitRole(unit)] or "NONE" end local function GetSpecializationInfo(specIndex, isInspect, isPet, specGroup) local name, icon, _, background = GetTalentTabInfo(specIndex, isInspect, isPet, specGroup) local id, role if isInspect and UnitExists("target") then id, role = GetInspectSpecialization("target"), GetSpecializationRole("target") else id, role = GetInspectSpecialization("player"), GetSpecializationRole("player") end return id, name, "NaN", icon, background, role end local function update(_, _, unit) local specID, name = GetInspectSpecialization(unit), UnitName(unit) -- if raid table doesn't findd the player, force an update if not raid[name] then DBM:RAID_ROSTER_UPDATE(true) end -- populate specID if raid[name] then raid[name].specID = specID end end LGT.RegisterCallback(DBM, "LibGroupTalents_Update", update) --In event api fails to pull any data at all, just assign classes to their initial template roles from exiles reach local fallbackClassToRole = { ["MAGE"] = 1449, ["PALADIN"] = 1451, ["WARRIOR"] = 1446, ["DRUID"] = 1447, ["DEATHKNIGHT"] = 1455, ["HUNTER"] = 1448, ["PRIEST"] = 1452, ["ROGUE"] = 1453, ["SHAMAN"] = 1444, ["WARLOCK"] = 1454, } function DBM:SetCurrentSpecInfo() currentSpecGroup = GetSpecialization() or 1 if GetSpecializationInfo(currentSpecGroup) then currentSpecID, currentSpecName = GetSpecializationInfo(currentSpecGroup)--give temp first spec id for non-specialization char. no one should use dbm with no specialization, below level 10, should not need dbm. currentSpecID = tonumber(currentSpecID) else currentSpecID, currentSpecName = fallbackClassToRole[playerClass], playerClass end end function DBM:GetUnitRole(uId, class) return GetSpecializationRole(uId, class) end function DBM:GetUnitRoleIcon(uId, class) local role = GetSpecializationRole(uId, class) return roleIconTable[role] end end -- https://wowpedia.fandom.com/wiki/DifficultyID -- ID Name Type Flavour -- 1 Normal party retail -- 2 Heroic party retail -- 3 10 Player raid retail -- 4 25 Player raid retail -- 5 10 Player (Heroic) raid retail -- 6 25 Player (Heroic) raid retail -- 9 40 Player raid -- 16 Mythic raid -- 18 Event raid retail (custom) -- 23 Mythic party -- 24 Timewalking party -- 33 Timewalking raid -- 148 20 Player raid -- 173 Normal party classic -- 174 Heroic party classic -- 175 10 Player raid classic -- 176 25 Player raid classic -- 186 40 Player raid classic (custom?) -- 193 10 Player (Heroic) raid classic -- 194 25 Player (Heroic) raid classic function DBM:GetCurrentInstanceDifficulty() local instanceName, instanceType, difficulty, difficultyName, maxPlayers, dynamicDifficulty, isDynamicInstance = GetInstanceInfo() if instanceType == "none" then return difficulty == 1 and "worldboss", L.RAID_INFO_WORLD_BOSS.." - ", 0, maxPlayers elseif instanceType == "raid" then if isDynamicInstance then -- Dynamic raids (ICC, RS) if difficulty == 1 then -- 10 players if dynamicDifficulty == 0 then return "normal10", difficultyName.." - ", 175, maxPlayers elseif dynamicDifficulty == 1 then return "heroic10" , difficultyName.." - ", 193, maxPlayers else return "unknown" , difficultyName.." - ", difficulty, maxPlayers end elseif difficulty == 2 then -- 25 players if dynamicDifficulty == 0 then return "normal25", difficultyName.." - ", 176, maxPlayers elseif dynamicDifficulty == 1 then return "heroic25", difficultyName.." - ", 194, maxPlayers else return "unknown", difficultyName.." - ", difficulty, maxPlayers end -- On Warmane, it was confirmed by Midna that difficulty returning only 1 or 2 is their intended behaviour: https://www.warmane.com/bugtracker/report/91065 -- code below (difficulty 3 and 4 in dynamic instances) prevents GetCurrentInstanceDifficulty() from breaking on servers that correctly assign difficulty 1-4 in dynamic instances. elseif difficulty == 3 then -- 10 heroic, dynamic return "heroic10", difficultyName.." - ", 193, maxPlayers elseif difficulty == 4 then -- 25 heroic, dynamic return "heroic25", difficultyName.." - ", 194, maxPlayers end else -- Non-dynamic raids if difficulty == 1 then -- check for Timewalking instance (workaround using GetRaidDifficulty since on Warmane all the usual APIs fail and return "normal" difficulty) local raidDifficulty = GetRaidDifficulty() if raidDifficulty ~= difficulty and (raidDifficulty == 2 or raidDifficulty == 4) then -- extra checks due to lack of tests and no access to a timewalking server return "timewalker", difficultyName.." - ", 33, maxPlayers else if maxPlayers == 40 then return "normal40", difficultyName.." - ", 186, maxPlayers elseif maxPlayers == 25 then return "normal25", difficultyName.." - ", 176, maxPlayers elseif maxPlayers == 20 then -- ZG, AQ20 return "normal20", difficultyName.." - ", 148, maxPlayers elseif maxPlayers == 10 then return "normal10", difficultyName.." - ", 175, maxPlayers elseif maxPlayers == 0 and instanceName == "Azshara Crater" then -- Warmane 2024 Tower Defense, with completely borked API return "event25", "Event - ", 18, 25 elseif maxPlayers then DBM:AddMsg("Instance difficulty not registered. Please report this bug! -> ".. maxPlayers) return maxPlayers and "normal"..maxPlayers, difficultyName.." - ", difficulty, maxPlayers else return "unknown", difficultyName.." - ", difficulty, maxPlayers end end elseif difficulty == 2 then return "normal25", difficultyName.." - ", 176, maxPlayers elseif difficulty == 3 then return "heroic10", difficultyName.." - ", 193, maxPlayers elseif difficulty == 4 then return "heroic25", difficultyName.." - ", 194, maxPlayers end end elseif instanceType == "party" then -- 5 man Dungeons if difficulty == 1 then return "normal5", difficultyName.." - ", 173, maxPlayers elseif difficulty == 2 then -- check for Mythic instance (workaround using GetDungeonDifficulty since on Warmane all the usual APIs fail and return "heroic" difficulty) local dungeonDifficulty = GetDungeonDifficulty() if dungeonDifficulty == 3 then return "mythic", difficultyName.." - ", 23, maxPlayers else return "heroic5", difficultyName.." - ", 174, maxPlayers end end end end function DBM:GetCurrentArea() return LastInstanceMapID end function DBM:GetCurrentAreaName() return LastInstanceZoneName end function DBM:GetCurrentDifficulty() return difficultyIndex end function DBM:GetGroupSize() return LastGroupSize end --Public api for requesting what phase a boss is in, in case they missed the DBM_SetStage callback --ModId would be journal Id or mod string of mod. --If not mod is not provided, it'll simply return stage for first boss in combat table if a boss is engaged function DBM:GetStage(modId) if modId then local mod = self:GetModByName(modId) if mod and mod.inCombat then return mod.vb.phase or 0, mod.vb.stageTotality or 0 end else if #inCombat > 0 then--At least one boss is engaged local mod = inCombat[1]--Get first mod in table if mod then return mod.vb.phase or 0, mod.vb.stageTotality or 0 end end end end function DBM:HasMapRestrictions() local playerX, playerY = GetPlayerMapPosition("player") -- if playerX == 0 or playerY == 0 then -- attempt to fix zone once. Disabled for now to confirm LK 2.5 FPS issues. -- SetMapToCurrentZone() -- DO NOT RUN THIS FUNCTION IN A LOOP! It's a waste of cpu power and will tank FPS due to radar loop scan. -- playerX, playerY = GetPlayerMapPosition("player") -- end local mapName = GetMapInfo() local level = GetCurrentMapDungeonLevel() local usesTerrainMap = DungeonUsesTerrainMap() level = usesTerrainMap and level - 1 or level if (playerX == 0 and playerY == 0) or (self.MapSizes[mapName] and not self.MapSizes[mapName][level]) then return true end return false end do local LSMMediaCacheBuilt, sharedMediaFileCache, validateCache = false, {}, {} local function buildLSMFileCache() local hashtable = LibStub("LibSharedMedia-3.0", true):HashTable("sound") local keytable = {} for k in next, hashtable do tinsert(keytable, k) end for i = 1, #keytable do sharedMediaFileCache[hashtable[keytable[i]]] = true end LSMMediaCacheBuilt = true end function DBM:ValidateSound(path, log, ignoreCustom) -- Ignore built-in sounds if string.find(path:lower(), "^sound[\\/]+") then -- type(path) == "number" removed since it's not supported in WotLK return true end -- Validate LibSharedMedia if not LSMMediaCacheBuilt then buildLSMFileCache() end if not sharedMediaFileCache[path] and not path:find("DBM") then if log then if ignoreCustom then -- This uses debug print because it has potential to cause mid fight spam self:Debug("PlaySoundFile failed do to missing media at " .. path .. ". To fix this, re-add missing sound or change setting using this sound to a different sound.") else AddMsg(self, "PlaySoundFile failed do to missing media at " .. path .. ". To fix this, re-add missing sound or change setting using this sound to a different sound.") end end return false end -- Validate audio packs if not validateCache[path] then local splitTable = {} for split in string.gmatch(path, "[^\\/]+") do -- Matches \ and / as path delimiters (incl. more than one) tinsert(splitTable, split) end if #splitTable >= 3 and splitTable[3]:lower() == "dbm-customsounds" then validateCache[path] = { exists = ignoreCustom or false } elseif #splitTable >= 3 and splitTable[1]:lower() == "interface" and splitTable[2]:lower() == "addons" then -- We're an addon sound validateCache[path] = { exists = IsAddOnLoaded(splitTable[3]), AddOn = splitTable[3] } else validateCache[path] = { exists = true } end end if validateCache[path] and not validateCache[path].exists then if log then -- This uses actual user print because these events only occur at start or end of instance or fight. AddMsg(self, "PlaySoundFile failed due to missing media at " .. path .. ". To fix this, re-add/enable " .. validateCache[path].AddOn .. " or change setting using this sound to a different sound.") end return false end return true end local function playSoundFile(self, path, _, validate) if self.Options.SilentMode or path == "" or path == "None" then return end if validate and not self:ValidateSound(path, true, true) then return end self:Debug("PlaySoundFile playing with media " .. path, 3) PlaySoundFile(path) fireEvent("DBM_PlaySound", path) end local ingameSoundPath = { [850] = "Sound\\Interface\\uEscapeScreenOpen.wav", [856] = "Sound\\Interface\\uChatScrollButton.wav", [8585] = "Sound\\Creature\\CThun\\CThunYouWillDIe.wav", [8960] = "Sound\\Interface\\levelup2.wav" } local function playSound(self, path, ignoreSFX) if self.Options.SilentMode or path == "" or path == "None" then return end local soundSetting = self.Options.UseSoundChannel self:Debug("PlaySound playing with media " .. path, 3) if ignoreSFX or soundSetting == "Master" then if ingameSoundPath[path] then PlaySoundFile(ingameSoundPath[path]) else PlaySound(path) if not GetCVarBool("Sound_EnableSFX") then self:AddMsg("No sound because SFX is disabled and DBM ingameSoundPath table does not have a sound path for " .. path .. ". Report the path (the numbers) to maintainer on Discord or Github.") end end else PlaySound(path) -- Using SFX channel, leave forceNoDuplicates on. end fireEvent("DBM_PlaySound", path) end function DBM:PlaySoundFile(path, ignoreSFX, validate) playSoundFile(self, path, ignoreSFX, validate) end function DBM:PlaySound(path, ignoreSFX) playSound(self, path, ignoreSFX) end end --Handle new spell name requesting with wrapper, to make api changes easier to handle function DBM:GetSpellInfo(spellId) local name, rank, icon, cost, isFunnel, powerType, castingTime, minRange, maxRange = GetSpellInfo(spellId) if not name then--Bad request all together DBM:Debug("|cffff0000Invalid call to GetSpellInfo for spellID: |r"..spellId) return nil else--Good request, return now return name, rank, icon, cost, isFunnel, powerType, castingTime, minRange, maxRange end end function DBM:UnitAura(uId, spellInput, spellInput2, spellInput3, spellInput4) if not uId then return end for i = 1, 60 do local spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitAura(uId, i) if not spellName then return end if spellInput == spellName or spellInput == spellId or spellInput2 == spellName or spellInput2 == spellId or spellInput3 == spellName or spellInput3 == spellId or spellInput4 == spellName or spellInput4 == spellId then return spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId end end end function DBM:UnitDebuff(uId, spellInput, spellInput2, spellInput3, spellInput4) if not uId then return end for i = 1, 60 do local spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitDebuff(uId, i) if not spellName then return end if spellInput == spellName or spellInput == spellId or spellInput2 == spellName or spellInput2 == spellId or spellInput3 == spellName or spellInput3 == spellId or spellInput4 == spellName or spellInput4 == spellId then return spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId end end end function DBM:UnitBuff(uId, spellInput, spellInput2, spellInput3, spellInput4) if not uId then return end for i = 1, 60 do local spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitBuff(uId, i) if not spellName then return end if spellInput == spellName or spellInput == spellId or spellInput2 == spellName or spellInput2 == spellId or spellInput3 == spellName or spellInput3 == spellId or spellInput4 == spellName or spellInput4 == spellId then return spellName, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId end end end --Handle new spell name requesting with wrapper, to make api changes easier to handle function DBM:GetSpellInfoNew(spellId) local name, rank, icon, _, _, _, castingTime, minRange, maxRange = GetSpellInfo(spellId) if not name then--Bad request all together DBM:Debug("|cffff0000Invalid call to GetSpellInfo for spellID: |r"..spellId) return nil else--Good request, return now return name, rank, icon, castingTime, minRange, maxRange, spellId end end function DBM:UnitDebuffNew(uId, spellInput, spellInput2, spellInput3, spellInput4) if not uId then return end for i = 1, 60 do local spellName, _, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitDebuff(uId, i) if not spellName then return end if spellInput == spellName or spellInput == spellId or spellInput2 == spellName or spellInput2 == spellId or spellInput3 == spellName or spellInput3 == spellId or spellInput4 == spellName or spellInput4 == spellId then return spellName, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId end end end function DBM:UnitBuffNew(uId, spellInput, spellInput2, spellInput3, spellInput4) if not uId then return end for i = 1, 60 do local spellName, _, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitBuff(uId, i) if not spellName then return end if spellInput == spellName or spellInput == spellId or spellInput2 == spellName or spellInput2 == spellId or spellInput3 == spellName or spellInput3 == spellId or spellInput4 == spellName or spellInput4 == spellId then return spellName, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId end end end function DBM:UNIT_DIED(args) local GUID = args.destGUID if self:IsCreatureGUID(GUID) then self:OnMobKill(self:GetCIDFromGUID(GUID)) end ----GUIDIsPlayer if self.Options.AFKHealthWarning and GUID == UnitGUID("player") and not DBM:IsEncounterInProgress() and UnitIsAFK("player") and self:AntiSpam(5, "AFK") then--You are afk and losing health, some griever is trying to kill you while you are afk/tabbed out. self:FlashClientIcon() self:PlaySound(8585)--So fire an alert sound to save yourself from this person's behavior. self:AddMsg(L.AFK_WARNING:format(0)) end end DBM.UNIT_DESTROYED = DBM.UNIT_DIED ---------------------- -- Timer recovery -- ---------------------- do local requestedFrom = {} local requestTime = 0 local function sort(v1, v2) if v1.revision and not v2.revision then return true elseif v2.revision and not v1.revision then return false elseif v1.revision and v2.revision then return (tonumber(v1.revision) or 0) > (tonumber(v2.revision) or 0) end end function DBM:RequestTimers(requestNum) if not dbmIsEnabled then return end local sortMe, clientUsed = {}, {} for _, v in pairs(raid) do tinsert(sortMe, v) end tsort(sortMe, sort) self:Debug("RequestTimers Running", 2) local selectedClient local listNum = 0 for _, v in ipairs(sortMe) do -- If selectedClient player's realm is not same with your's, timer recovery by selectedClient not works at all. -- SendAddonMessage target channel is "WHISPER" and target player is other realm, no msg sends at all. At same realm, message sending works fine. (Maybe bliz bug or SendAddonMessage function restriction?) if v.name ~= playerName and UnitIsConnected(v.id) and UnitIsPlayer(v.id) and (not UnitIsGhost(v.id)) and (GetTime() - (clientUsed[v.name] or 0)) > 10 then listNum = listNum + 1 if listNum == requestNum then selectedClient = v clientUsed[v.name] = GetTime() break end end end if not selectedClient then return end self:Debug("Requesting timer recovery to "..selectedClient.name) requestedFrom[selectedClient.name] = true requestTime = GetTime() SendAddonMessage("DBMv4-RequestTimers", "", "WHISPER", selectedClient.name) end function DBM:ReceiveCombatInfo(sender, mod, time) if dbmIsEnabled and requestedFrom[sender] and (GetTime() - requestTime) < 5 and #inCombat == 0 then self:StartCombat(mod, time, "TIMER_RECOVERY") --Recovery successful, someone sent info, abort other recovery requests self:Unschedule(self.RequestTimers) twipe(requestedFrom) end end function DBM:ReceiveTimerInfo(sender, mod, timeLeft, totalTime, id, paused, ...) DBM:Debug(("Receiving Timer Info: %s %s %s %s from %s"):format(mod.id, timeLeft, totalTime, "123", sender), 3) if requestedFrom[sender] and (GetTime() - requestTime) < 5 then local lag = paused and 0 or select(3, GetNetStats()) / 1000 for _, v in ipairs(mod.timers) do if v.id == id then v:Start(totalTime, ...) if paused then v.paused = true end v:Update(totalTime - timeLeft + lag, totalTime, ...) end end end end function DBM:ReceiveVariableInfo(sender, mod, name, value) if requestedFrom[sender] and (GetTime() - requestTime) < 5 then if value == "true" then mod.vb[name] = true elseif value == "false" then mod.vb[name] = false else mod.vb[name] = value if name == "phase" then mod:SetStage(value)--Fire stage callback for 3rd party mods when stage is recovered end end end end end do local spamProtection = {} function DBM:SendTimers(target) if not dbmIsEnabled then return end self:Debug("SendTimers requested by "..target, 2) local spamForTarget = spamProtection[target] or 0 -- just try to clean up the table, that should keep the hash table at max. 4 entries or something :) for k, v in pairs(spamProtection) do if GetTime() - v >= 1 then spamProtection[k] = nil end end if GetTime() - spamForTarget < 1 then -- just to prevent players from flooding this on purpose return end spamProtection[target] = GetTime() if #inCombat < 1 then --Break timer is up, so send that --But only if we are not in combat with a boss local breakBar = DBT:GetBar("%s\t"..L.TIMER_BREAK) or DBT:GetBar(L.TIMER_BREAK) if breakBar then local remaining = breakBar.timer self:Debug("Sending Break timer to "..target, 2) SendAddonMessage("DBMv4-BTR3", remaining, "WHISPER", target) SendAddonMessage("DBMv4-Pizza", ("%s\t%s\t%s"):format(remaining, L.TIMER_BREAK, tostring(true))) -- Backwards compatibility so old DBMs can receive break timers from this DBM end return end local mod for _, v in ipairs(inCombat) do mod = not v.isCustomMod and v end mod = mod or inCombat[1] self:SendCombatInfo(mod, target) self:SendVariableInfo(mod, target) self:SendTimerInfo(mod, target) end function DBM:SendPVPTimers(target) if not dbmIsEnabled then return end self:Debug("SendPVPTimers requested by "..target, 2) local spamForTarget = spamProtection[target] or 0 local time = GetTime() -- just try to clean up the table, that should keep the hash table at max. 4 entries or something :) for k, v in pairs(spamProtection) do if time - v >= 1 then spamProtection[k] = nil end end if time - spamForTarget < 1 then -- just to prevent players from flooding this on purpose return end spamProtection[target] = time local mod = self:GetModByName("PvPGeneral") if mod then self:SendTimerInfo(mod, target) end end end function DBM:SendCombatInfo(mod, target) if not dbmIsEnabled then return end return SendAddonMessage("DBMv4-CombatInfo", ("%s\t%s"):format(mod.id, GetTime() - mod.combatInfo.pull), "WHISPER", target) end function DBM:SendTimerInfo(mod, target) if not dbmIsEnabled then return end for _, v in ipairs(mod.timers) do --Pass on any timer that has no type, or has one that isn't an ai timer if not v.type or v.type and v.type ~= "ai" then for _, uId in ipairs(v.startedTimers) do local elapsed, totalTime, timeLeft if select("#", string.split("\t", uId)) > 1 then elapsed, totalTime = v:GetTime(select(2, string.split("\t", uId))) else elapsed, totalTime = v:GetTime() end timeLeft = totalTime - elapsed if timeLeft > 0 and totalTime > 0 then self:Debug(("Sending Timer Info: %s %s %s %s to %s"):format(mod.id, timeLeft, totalTime, uId, v.paused and "1" or "0", target), 3) SendAddonMessage("DBMv4-TimerInfo", ("%s\t%s\t%s\t%s\t%s"):format(mod.id, timeLeft, totalTime, uId, v.paused and "1" or "0"), "WHISPER", target) end end end end end function DBM:SendVariableInfo(mod, target) if not dbmIsEnabled then return end for vname, v in pairs(mod.vb) do local v2 = tostring(v) if v2 then SendAddonMessage("DBMv4-VarInfo", ("%s\t%s\t%s"):format(mod.id, vname, v2), "WHISPER", target) end end end do function DBM:PLAYER_ENTERING_WORLD() if self.Options.ShowReminders then self:Schedule(25, function() if self.Options.SilentMode then self:AddMsg(L.SILENT_REMINDER) end end) self:Schedule(30, function() if not self.Options.SettingsMessageShown then self.Options.SettingsMessageShown = true self:AddMsg(L.HOW_TO_USE_MOD) end end) -- self:Schedule(35, function() if self.Options.NewsMessageShown2 < 2 then self.Options.NewsMessageShown2 = 2 self:AddMsg(L.NEWS_UPDATE) end end) end --Check if any previous changed cvars were not restored and restore them if self.Options.DisableSFX then SetCVar("Sound_EnableSFX", 1) self:Debug("Restoring Sound_EnableSFX CVAR") end if #inCombat == 0 then DBM:Schedule(0, self.RequestTimers, self, 1) end self:LFG_UPDATE() DBM.BossHealth:Hide() end end ------------------------------------ -- Auto-respond/Status whispers -- ------------------------------------ do local function getNumAlivePlayers() local alive = 0 if IsInRaid() then for i = 1, GetNumGroupMembers() do alive = alive + ((UnitIsDeadOrGhost("raid"..i) and 0) or 1) end else alive = (UnitIsDeadOrGhost("player") and 0) or 1 for i = 1, GetNumSubgroupMembers() do alive = alive + ((UnitIsDeadOrGhost("party"..i) and 0) or 1) end end return alive end local function getNumRealAlivePlayers() local alive = 0 local playerCurrentZone = GetRealZoneText() or CL.UNKNOWN if IsInRaid() then for i = 1, GetNumGroupMembers() do local _, _, _, _, _, _, zone = GetRaidRosterInfo(i) if zone == playerCurrentZone then alive = alive + ((UnitIsDeadOrGhost("raid"..i) and 0) or 1) end end else alive = (UnitIsDeadOrGhost("player") and 0) or 1 for i = 1, GetNumSubgroupMembers() do if UnitInRange("party"..i) then -- this is VERY conservative to check for same zone. Might remove if too many false negatives alive = alive + ((UnitIsDeadOrGhost("party"..i) and 0) or 1) end end end return alive end function DBM:NumRealAlivePlayers() return getNumRealAlivePlayers() end -- sender is a presenceId for real id messages, a character name otherwise local function onWhisper(msg, sender) -- msg, sender, isRealIdMessage if private.statusWhisperDisabled then return end--RL has disabled status whispers for entire raid. if not checkForSafeSender(sender, true, true, true) then return end--Automatically reject all whisper functions from non friends, non guildies, or people in group with us if msg == "status" and #inCombat > 0 and DBM.Options.AutoRespond then if not difficultyText then -- prevent error when timer recovery function worked and etc (StartCombat not called) savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = DBM:GetCurrentInstanceDifficulty() end local mod for _, v in ipairs(inCombat) do mod = not v.isCustomMod and v end mod = mod or inCombat[1] if mod.noStatistics then return end local hp = mod.highesthealth and mod:GetHighestBossHealth() or mod:GetLowestBossHealth() local hpText = mod.CustomHealthUpdate and mod:CustomHealthUpdate() or hp and ("%d%%"):format(hp) or CL.UNKNOWN if mod.vb.phase then hpText = hpText.." ("..L.SCENARIO_STAGE:format(mod.vb.phase)..")" end if mod.numBoss and mod.vb.bossLeft and mod.numBoss > 1 then local bossesKilled = mod.numBoss - mod.vb.bossLeft hpText = hpText.." ("..BOSSES_KILLED:format(bossesKilled, mod.numBoss)..")" end sendWhisper(sender, chatPrefixShort..L.STATUS_WHISPER:format(difficultyText..(mod.combatInfo.name or ""), hpText, getNumAlivePlayers(), mmax(GetNumRaidMembers(), GetNumPartyMembers() + 1))) elseif #inCombat > 0 and DBM.Options.AutoRespond then if not difficultyText then -- prevent error when timer recovery function worked and etc (StartCombat not called) savedDifficulty, difficultyText, difficultyIndex, LastGroupSize = DBM:GetCurrentInstanceDifficulty() end local mod for _, v in ipairs(inCombat) do mod = not v.isCustomMod and v end mod = mod or inCombat[1] if mod.noStatistics then return end local hp = mod.highesthealth and mod:GetHighestBossHealth() or mod:GetLowestBossHealth() local hpText = mod.CustomHealthUpdate and mod:CustomHealthUpdate() or hp and ("%d%%"):format(hp) or CL.UNKNOWN if mod.vb.phase then hpText = hpText.." ("..L.SCENARIO_STAGE:format(mod.vb.phase)..")" end if mod.numBoss and mod.vb.bossLeft and mod.numBoss > 1 then local bossesKilled = mod.numBoss - mod.vb.bossLeft hpText = hpText.." ("..BOSSES_KILLED:format(bossesKilled, mod.numBoss)..")" end if not autoRespondSpam[sender] then sendWhisper(sender, chatPrefixShort..L.AUTO_RESPOND_WHISPER:format(playerName, difficultyText..(mod.combatInfo.name or ""), hpText, getNumAlivePlayers(), mmax(GetNumRaidMembers(), GetNumPartyMembers() + 1))) DBM:AddMsg(L.AUTO_RESPONDED) end autoRespondSpam[sender] = true end end function DBM:CHAT_MSG_WHISPER(msg, name) return onWhisper(msg, name, false) end function DBM:CHAT_MSG_BN_WHISPER(msg, ...) local presenceId = select(12, ...) -- srsly? return onWhisper(msg, presenceId, true) end end --This completely unregisteres or registers distruptive events so they don't obstruct combat --Toggle is for if we are turning off or on. --Custom is for external mods to call function without duplication and allowing pvp mods custom toggle. do local unregisteredEvents = {} local function DisableEvent(frameName, eventName) if frameName:IsEventRegistered(eventName) then frameName:UnregisterEvent(eventName) unregisteredEvents[eventName] = true end end local function EnableEvent(frameName, eventName) if unregisteredEvents[eventName] then frameName:RegisterEvent(eventName) unregisteredEvents[eventName] = nil end end function DBM:HideBlizzardEvents(toggle, custom) if toggle == 1 then if (self.Options.HideBossEmoteFrame2 or custom) then DisableEvent(RaidBossEmoteFrame, "CHAT_MSG_RAID_BOSS_EMOTE") DisableEvent(RaidBossEmoteFrame, "CHAT_MSG_RAID_BOSS_WHISPER") -- SOUNDKIT.UI_RAID_BOSS_WHISPER_WARNING = 999999 --Commented out and not backported since I don't want to touch blizzard function to edit out the PlaySound("RaidBossEmoteWarning"). Since blizzard can still play the sound via RaidBossEmoteFrame_OnEvent (line 137) via encounter scripts in certain cases despite the frame having no registered events end elseif toggle == 0 then if (self.Options.HideBossEmoteFrame2 or custom) then EnableEvent(RaidBossEmoteFrame, "CHAT_MSG_RAID_BOSS_EMOTE") EnableEvent(RaidBossEmoteFrame, "CHAT_MSG_RAID_BOSS_WHISPER") -- SOUNDKIT.UI_RAID_BOSS_WHISPER_WARNING = 37666 --restore it end end end end ------------------- -- Chat Filter -- ------------------- do local function filterOutgoing(self, event, ...) local msg = ... if not msg and self then -- compatibility mode! -- we also check if self exists to prevent a possible freeze if the function is called without arguments at all -- as this would be even worse than the issue with missing whisper messages ;) return filterOutgoing(nil, nil, self, event) end return msg:sub(1, chatPrefix:len()) == chatPrefix or msg:sub(1, chatPrefixShort:len()) == chatPrefixShort, ... end local function filterIncoming(self, event, ...) local msg = ... if not msg and self then -- compatibility mode! return filterIncoming(nil, nil, self, event) end if DBM.Options.SpamBlockBossWhispers then return #inCombat > 0 and (msg == "status" or msg:sub(1, chatPrefix:len()) == chatPrefix or msg:sub(1, chatPrefixShort:len()) == chatPrefixShort), ... else return msg == "status" and #inCombat > 0, ... end end local function filterRaidWarning(self, event, ...) local msg = ... if not msg and self then -- compatibility mode! return filterRaidWarning(nil, nil, self, event) end return DBM.Options.SpamBlockRaidWarning and type(msg) == "string" and (not not msg:match("^%s*%*%*%*")), ... end ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER_INFORM", filterOutgoing) ChatFrame_AddMessageEventFilter("CHAT_MSG_BN_WHISPER_INFORM", filterOutgoing) ChatFrame_AddMessageEventFilter("CHAT_MSG_WHISPER", filterIncoming) ChatFrame_AddMessageEventFilter("CHAT_MSG_BN_WHISPER", filterIncoming) ChatFrame_AddMessageEventFilter("CHAT_MSG_RAID_WARNING", filterRaidWarning) ChatFrame_AddMessageEventFilter("CHAT_MSG_PARTY", filterRaidWarning) ChatFrame_AddMessageEventFilter("CHAT_MSG_PARTY_LEADER", filterRaidWarning) end do local old = RaidWarningFrame:GetScript("OnEvent") RaidWarningFrame:SetScript("OnEvent", function(self, event, msg, ...) if DBM.Options.SpamBlockRaidWarning and msg:find("%*%*%* .* %*%*%*") then return end return old(self, event, msg, ...) end) end -------------------------- -- Enable/Disable DBM -- -------------------------- do local forceDisabled = false function DBM:Disable(forceDisable) DBMScheduler:Unschedule() dbmIsEnabled = false private.dbmIsEnabled = false forceDisabled = forceDisable end function DBM:Enable() if not forceDisabled then dbmIsEnabled = true end end function DBM:IsEnabled() return dbmIsEnabled end function DBM:ForceDisableSpam() if testBuild then DBM:AddMsg(L.UPDATEREMINDER_DISABLETEST) elseif dbmToc < wowTOC then DBM:AddMsg(L.UPDATEREMINDER_MAJORPATCH) else DBM:AddMsg(L.UPDATEREMINDER_DISABLE) end end end ----------------------- -- Misc. Functions -- ----------------------- function DBM:AddMsg(text, prefix) local tag = prefix or (self.localization and self.localization.general.name) or L.DBM local frame = DBM.Options.ChatFrame and _G[tostring(DBM.Options.ChatFrame)] or DEFAULT_CHAT_FRAME if not frame or not frame:IsShown() then frame = DEFAULT_CHAT_FRAME end if prefix ~= false then frame:AddMessage(("|cffff7d0a<|r|cffffd200%s|r|cffff7d0a>|r %s"):format(tostring(tag), tostring(text)), 0.41, 0.8, 0.94) else frame:AddMessage(text, 0.41, 0.8, 0.94) end end AddMsg = DBM.AddMsg do local testMod local testWarning1, testWarning2, testWarning3 local testTimer1, testTimer2, testTimer3, testTimer4, testTimer5, testTimer6, testTimer7, testTimer8 local testSpecialWarning1, testSpecialWarning2, testSpecialWarning3 function DBM:DemoMode() if not testMod then testMod = self:NewMod("TestMod") self:GetModLocalization("TestMod"):SetGeneralLocalization{ name = "Test Mod" } testWarning1 = testMod:NewAnnounce("%s", 1, "Interface\\Icons\\Spell_Nature_WispSplode") testWarning2 = testMod:NewAnnounce("%s", 2, "Interface\\Icons\\Spell_Shadow_Shadesofdarkness") testWarning3 = testMod:NewAnnounce("%s", 3, "Interface\\Icons\\Spell_Fire_SelfDestruct") testTimer1 = testMod:NewTimer(20, "%s", "Interface\\Icons\\Spell_Nature_WispSplode", nil, nil) testTimer2 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\INV_Misc_Head_Orc_01", nil, nil, 1) testTimer3 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Shadow_Shadesofdarkness", nil, nil, 3, CL.MAGIC_ICON, nil, 1, 4)--inlineIcon, keep, countdown, countdownMax testTimer4 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Nature_WispSplode", nil, nil, 4, CL.INTERRUPT_ICON) testTimer5 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Fire_SelfDestruct", nil, nil, 2, CL.HEALER_ICON, nil, 3, 4)--inlineIcon, keep, countdown, countdownMax testTimer6 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Nature_WispSplode", nil, nil, 5, CL.TANK_ICON, nil, 2, 4)--inlineIcon, keep, countdown, countdownMax testTimer7 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Nature_WispSplode", nil, nil, 6) testTimer8 = testMod:NewTimer(20, "%s ", "Interface\\Icons\\Spell_Nature_WispSplode", nil, nil, 7) testSpecialWarning1 = testMod:NewSpecialWarning("%s", nil, nil, nil, 1, 2) testSpecialWarning2 = testMod:NewSpecialWarning(" %s ", nil, nil, nil, 2, 2) testSpecialWarning3 = testMod:NewSpecialWarning(" %s ", nil, nil, nil, 3, 2) -- hack: non auto-generated special warnings need distinct names (we could go ahead and give them proper names with proper localization entries, but this is much easier) end testTimer1:Stop("Test Bar showing 5s Variance") testTimer2:Stop("Adds") testTimer3:Stop("Evil Debuff") testTimer4:Stop("Important Interrupt") testTimer5:Stop("Boom!") testTimer6:Stop("Handle your Role") testTimer7:Stop("Next Stage") testTimer8:Stop("Custom User Bar") testTimer1:Start("v5-10", "Test Bar showing 5s Variance") testTimer2:Start("v25-30", "Adds") testTimer3:Start(43, "Evil Debuff") testTimer4:Start(20, "Important Interrupt") testTimer5:Start(60, "Boom!") testTimer6:Start("v32-35", "Handle your Role") testTimer7:Start(50, "Next Stage") testTimer8:Start(55, "Custom User Bar") testWarning1:Cancel() testWarning2:Cancel() testWarning3:Cancel() testSpecialWarning1:Cancel() testSpecialWarning1:CancelVoice() testSpecialWarning2:Cancel() testSpecialWarning2:CancelVoice() testSpecialWarning3:Cancel() testSpecialWarning3:CancelVoice() testWarning1:Show("Test-mode started...") testWarning1:Schedule(62, "Test-mode finished!") testWarning3:Schedule(50, "Boom in 10 sec!") testWarning3:Schedule(20, "Pew Pew Laser Owl!") testWarning2:Schedule(38, "Evil Spell in 5 sec!") testWarning2:Schedule(43, "Evil Spell!") testWarning1:Schedule(10, "Test Bar expired!") testSpecialWarning1:Schedule(20, "Pew Pew Laser Owl") testSpecialWarning1:ScheduleVoice(20, "runaway") testSpecialWarning2:Schedule(43, "Fear!") testSpecialWarning2:ScheduleVoice(43, "fearsoon") testSpecialWarning3:Schedule(60, "Boom!") testSpecialWarning3:ScheduleVoice(60, "defensive") end end DBT:SetAnnounceHook(function(bar) local prefix if bar.color and bar.color.r == 1 and bar.color.g == 0 and bar.color.b == 0 then prefix = L.HORDE or FACTION_HORDE elseif bar.color and bar.color.r == 0 and bar.color.g == 0 and bar.color.b == 1 then prefix = L.ALLIANCE or FACTION_ALLIANCE end if prefix then return ("%s: %s %d:%02d"):format(prefix, _G[bar.frame:GetName().."BarName"]:GetText(), floor(bar.timer / 60), bar.timer % 60) end end) function DBM:Capitalize(str) local firstByte = str:byte(1, 1) local numBytes = 1 if firstByte >= 0xF0 then -- firstByte & 0b11110000 numBytes = 4 elseif firstByte >= 0xE0 then -- firstByte & 0b11100000 numBytes = 3 elseif firstByte >= 0xC0 then -- firstByte & 0b11000000 numBytes = 2 end return str:sub(1, numBytes):upper()..str:sub(numBytes + 1):lower() end -- An anti spam function to throttle spammy events (e.g. SPELL_AURA_APPLIED on all group members) -- @param time the time to wait between two events (optional, default 2.5 seconds) -- @param id the id to distinguish different events (optional, only necessary if your mod keeps track of two different spam events at the same time) function DBM:AntiSpam(time, id) if GetTime() - (id and (self["lastAntiSpam" .. tostring(id)] or 0) or self.lastAntiSpam or 0) > (time or 2.5) then if id then self["lastAntiSpam" .. tostring(id)] = GetTime() else self.lastAntiSpam = GetTime() end return true end return false end function DBM:InCombat() return #inCombat > 0 end local FlashWindow = FlashWindow function DBM:FlashClientIcon(checkAddon) if not FlashWindow then return end -- Check for FlashClient exe patch -- Check for addon via argument to prevent double API call from both DBM and FlashWindow since it would negate the icon flashing if checkAddon and IsAddOnLoaded("FlashWindow") then return end if self:AntiSpam(5, "FLASH") then FlashWindow() end end do --Search Tags: iconto, toicon, raid icon, diamond, star, triangle local iconStrings = {[1] = RAID_TARGET_1, [2] = RAID_TARGET_2, [3] = RAID_TARGET_3, [4] = RAID_TARGET_4, [5] = RAID_TARGET_5, [6] = RAID_TARGET_6, [7] = RAID_TARGET_7, [8] = RAID_TARGET_8,} function DBM:IconNumToString(number) return iconStrings[number] or number end function DBM:IconNumToTexture(number) return "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_"..number..".blp:12:12|t" or number end end do local DevTools = private:GetModule("DevTools") function DBM:Debug(...) return DevTools:Debug(...) end end ----------------- -- Map Sizes -- ----------------- DBM.MapSizes = {} function DBM:RegisterMapSize(zone, ...) if not DBM.MapSizes[zone] then DBM.MapSizes[zone] = {} end for i = 1, select("#", ...), 3 do local level, width, height = select(i, ...) DBM.MapSizes[zone][level] = {width, height} end end function DBM:GetMapSize() local mapName = GetMapInfo() local level = GetCurrentMapDungeonLevel() local usesTerrainMap = DungeonUsesTerrainMap() level = usesTerrainMap and level - 1 or level local dims = self.MapSizes[mapName] and self.MapSizes[mapName][level] return dims[1], dims[2] end -------------------- -- Movie Filter -- -------------------- do local neverFilter = { } function DBM:PLAY_MOVIE(id) if id and not neverFilter[id] then self:Debug("PLAY_MOVIE fired for ID: "..id, 2) local isInstance = IsInInstance() if not isInstance or self.Options.MovieFilter2 == "Never" or self.Options.MovieFilter2 == "OnlyFight" and not DBM:IsEncounterInProgress() then return end if self.Options.MovieFilter2 == "Block" or (self.Options.MovieFilter2 == "AfterFirst" or self.Options.MovieFilter2 == "OnlyFight") and self.Options.MoviesSeen[id] then MovieFrame:Hide()--can only just hide movie frame safely now, which means can't stop audio anymore :\ GameMovieFinished() self:AddMsg(L.MOVIE_SKIPPED) else self.Options.MoviesSeen[id] = true end end self:TransitionToDungeonBGM(false, true) end function DBM:CINEMATIC_START() self:Debug("CINEMATIC_START fired", 2) -- self.HudMap:SupressCanvas() local isInstance = IsInInstance() if not isInstance or self.Options.MovieFilter2 == "Never" or DBM.Options.MovieFilter2 == "OnlyFight" and not DBM:IsEncounterInProgress() then return end local currentMapID = GetCurrentMapAreaID() local currentSubZone = GetSubZoneText() or "" if not currentMapID then return end--Protection from map failures in zones that have no maps yet if self.Options.MovieFilter2 == "Block" or (self.Options.MovieFilter2 == "AfterFirst" or self.Options.MovieFilter2 == "OnlyFight") and self.Options.MoviesSeen[currentMapID..currentSubZone] then StopCinematic() self:AddMsg(L.MOVIE_SKIPPED) else self.Options.MoviesSeen[currentMapID..currentSubZone] = true end self:TransitionToDungeonBGM(false, true) end function DBM:CINEMATIC_STOP() self:Debug("CINEMATIC_STOP fired", 2) -- self.HudMap:UnSupressCanvas() end end ---------------------------- -- Boss Mod Constructor -- ---------------------------- do local modsById = setmetatable({}, {__mode = "v"}) local mt = {__index = bossModPrototype} function DBM:NewMod(name, modId, modSubTab, instanceId) name = tostring(name) -- the name should never be a number of something as it confuses sync handlers that just receive some string and try to get the mod from it if name == "DBM-ProfilesDummy" then return end if modsById[name] then error("DBM:NewMod(): Mod names are used as IDs and must therefore be unique.", 2) end local obj = setmetatable( { Options = { Enabled = true, }, DefaultOptions = { Enabled = true, }, subTab = modSubTab, optionCategories = { }, categorySort = {"announce", "announceother", "announcepersonal", "announcerole", "specialannounce", "timer", "sound", "yell", "nameplate", "icon", "misc"}, id = name, announces = {}, specwarns = {}, timers = {}, vb = {}, iconRestore = {}, modId = modId, instanceId = instanceId, revision = 0, SyncThreshold = 8, localization = self:GetModLocalization(name), groupSpells = {}, groupOptions = OrderedTable(), }, mt ) for _, v in ipairs(self.AddOns) do if v.modId == modId then obj.addon = v break end end obj.localization.general.name = obj.localization.general.name or name tinsert(self.Mods, obj) if modId then self.ModLists[modId] = self.ModLists[modId] or {} tinsert(self.ModLists[modId], name) end modsById[name] = obj obj:AddBoolOption("HealthFrame", false, "misc") obj:SetZone() return obj end function DBM:GetModByName(name) return modsById[tostring(name)] end end ----------------------- -- General Methods -- ----------------------- bossModPrototype.RegisterEvents = DBM.RegisterEvents bossModPrototype.UnregisterInCombatEvents = DBM.UnregisterInCombatEvents bossModPrototype.AddMsg = DBM.AddMsg bossModPrototype.RegisterShortTermEvents = DBM.RegisterShortTermEvents bossModPrototype.UnregisterShortTermEvents = DBM.UnregisterShortTermEvents function bossModPrototype:SetZone(...) if select("#", ...) == 0 then self.zones = {} if self.addon then if self.addon.mapId then for _, v in ipairs(self.addon.mapId) do self.zones[v] = true end end if self.addon.zone and #self.addon.zone > 0 then for _, v in ipairs(self.addon.zone) do self.zones[v] = true end end end elseif select(1, ...) ~= DBM_DISABLE_ZONE_DETECTION then self.zones = {} for i = 1, select("#", ...) do self.zones[select(i, ...)] = true end else -- disable zone detection self.zones = nil end end function bossModPrototype:Toggle() if self.Options.Enabled then self:DisableMod() else self:EnableMod() end end function bossModPrototype:EnableMod() self.Options.Enabled = true end function bossModPrototype:DisableMod() self:Stop() self.Options.Enabled = false end function bossModPrototype:Stop() for _, v in ipairs(self.timers) do v:Stop() end self:Unschedule() end function bossModPrototype:SetUsedIcons(...) self.usedIcons = {} for i = 1, select("#", ...) do self.usedIcons[select(i, ...)] = true end end function bossModPrototype:RegisterOnUpdateHandler(func, interval) if type(func) ~= "function" then return end DBM:Debug("Registering RegisterOnUpdateHandler") DBMScheduler:StartScheduler() self.elapsed = 0 self.updateInterval = interval or 0 private.updateFunctions[self] = func end function bossModPrototype:UnregisterOnUpdateHandler() self.elapsed = nil self.updateInterval = nil twipe(private.updateFunctions) end function bossModPrototype:SetStage(stage) if stage == 0 then--Increment request instead of hard value if not self.vb.phase then return end--Person DCed mid fight and somehow managed to perfectly time running SetStage with a value of 0 before getting variable recovery self.vb.phase = self.vb.phase + 1 elseif stage == 0.5 then--Half Increment request instead of hard value self.vb.phase = self.vb.phase + 0.5 else self.vb.phase = stage end --Separate variable to use SetStage totality for very niche weak aura practices if not self.vb.stageTotality then self.vb.stageTotality = 0 end self.vb.stageTotality = self.vb.stageTotality + 1 if self.inCombat then--Safety, in event mod manages to run any phase change calls out of combat/during a wipe we'll just safely ignore it fireEvent("DBM_SetStage", self, self.id, self.vb.phase, self.vb.stageTotality)--Mod, modId, Stage (if available), total number of times SetStage has been called since combat start DBM:Debug("DBM_SetStage: " .. self.vb.phase .. "/" .. self.vb.stageTotality) end end --If args are passed, returns true or false --If no args given, just returns current stage and stage total --stage: stage value to checkf or true/false rules --checkType: 0 or nil for just current stage match, 1 for less than check, 2 for greater than check, 3 not equal check --useTotal: uses stage total instead of current function bossModPrototype:GetStage(stage, checkType, useTotal) local currentStage, currentTotal = self.vb.phase or 0, self.vb.stageTotality or 0 if stage then checkType = checkType or 0--Optional pass if just an exact match check if (checkType == 0) and (useTotal and currentTotal or currentStage) == stage then return true elseif (checkType == 1) and (useTotal and currentTotal or currentStage) < stage then return true elseif (checkType == 2) and (useTotal and currentTotal or currentStage) > stage then return true elseif (checkType == 3) and (useTotal and currentTotal or currentStage) ~= stage then return true end return false else return currentStage, currentTotal end end -------------- -- Events -- -------------- function bossModPrototype:RegisterEventsInCombat(...) if self.inCombatOnlyEvents then geterrorhandler()("combat events already set") end self.inCombatOnlyEvents = {...} for k, v in pairs(self.inCombatOnlyEvents) do if v:sub(0, 5) == "UNIT_" and v:sub(v:len() - 10) ~= "_UNFILTERED" and not v:find(" ") and v ~= "UNIT_DIED" and v ~= "UNIT_DESTROYED" then -- legacy event, oh noes self.inCombatOnlyEvents[k] = v--[[ .. " boss1 boss2 boss3 boss4 boss5 target focus"]] -- same as ShortTermEvents - don't preassign units if the event does not state them end end end ----------------------- -- Utility Methods -- ----------------------- function bossModPrototype:IsDifficulty(...) local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() for i = 1, select("#", ...) do if diff == select(i, ...) then return true end end return false end function bossModPrototype:IsLFR() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "lfr" or diff == "lfr25" end --Dungeons: normal, heroic. (Raids excluded) function bossModPrototype:IsEasyDungeon() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "heroic5" or diff == "normal5" end --Dungeons: normal, heroic. Raids: LFR, normal function bossModPrototype:IsEasy() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "normal" or diff == "heroic5" or diff == "normal5" end --Dungeons: mythic, mythic+. Raids: heroic, mythic function bossModPrototype:IsHard() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "mythic" or diff == "heroic" end --Pretty much ANYTHING that has a normal mode function bossModPrototype:IsNormal() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "normal5" or diff == "normal10" or diff == "normal20" or diff == "normal25" or diff == "normal40" end --Pretty much ANYTHING that has a heroic mode function bossModPrototype:IsHeroic() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "heroic5" or diff == "heroic10" or diff == "heroic25" end --Pretty much ANYTHING that has mythic mode function bossModPrototype:IsMythic() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "mythic" end -- Timewalking function bossModPrototype:IsTimewalking() local diff = savedDifficulty or DBM:GetCurrentInstanceDifficulty() return diff == "timewalker" end function bossModPrototype:IsValidWarning(sourceGUID, customunitID, loose, allowFriendly) if loose and InCombatLockdown() and GetNumGroupMembers() < 2 then return true end--In a loose check, this basically just checks if we're in combat, important for solo runs of torghast to not gimp mod too much if customunitID then if UnitExists(customunitID) and UnitGUID(customunitID) == sourceGUID and UnitAffectingCombat(customunitID) and (allowFriendly or not UnitIsFriend("player", customunitID)) then return true end else local unitId = DBM:GetUnitIdFromGUID(sourceGUID) if unitId and UnitExists(unitId) and UnitAffectingCombat(unitId) and (allowFriendly or not UnitIsFriend("player", unitId)) then return true end end return false end function bossModPrototype:IsEquipmentSetAvailable(setName) setName = setName or 'pve' local _, index = GetEquipmentSetInfoByName(setName) if index then DBM:Debug(setName.. " set found.", 2) return true end DBM:Debug(setName.. " set NOT found.", 2) return false end function bossModPrototype:LatencyCheck(custom) return select(3, GetNetStats()) < (custom or DBM.Options.LatencyThreshold) end function bossModPrototype:CheckBigWigs(name) if raid[name] and raid[name].bwversion then return raid[name].bwversion else return false end end bossModPrototype.IconNumToString = DBM.IconNumToString bossModPrototype.IconNumToTexture = DBM.IconNumToTexture bossModPrototype.AntiSpam = DBM.AntiSpam bossModPrototype.HasMapRestrictions = DBM.HasMapRestrictions bossModPrototype.GetUnitCreatureId = DBM.GetUnitCreatureId bossModPrototype.GetCIDFromGUID = DBM.GetCIDFromGUID bossModPrototype.IsCreatureGUID = DBM.IsCreatureGUID bossModPrototype.GetUnitIdFromCID = DBM.GetUnitIdFromCID bossModPrototype.GetUnitIdFromGUID = DBM.GetUnitIdFromGUID bossModPrototype.CheckNearby = DBM.CheckNearby bossModPrototype.IsTrivial = DBM.IsTrivial do local TargetScanning = private:GetModule("TargetScanning") function bossModPrototype:GetBossTarget(...) return TargetScanning:GetBossTarget(self, ...) end function bossModPrototype:GetBossUnitByCreatureId(...) return TargetScanning:GetBossUnitByCreatureId(self, ...) end function bossModPrototype:BossTargetScannerAbort(...) return TargetScanning:BossTargetScannerAbort(self, ...) end function bossModPrototype:BossUnitTargetScannerAbort(...) return TargetScanning:BossUnitTargetScannerAbort(self, ...) end function bossModPrototype:BossUnitTargetScanner(...) return TargetScanning:BossUnitTargetScanner(self, ...) end function bossModPrototype:BossTargetScanner(...) return TargetScanning:BossTargetScanner(self, ...) end function bossModPrototype:StartRepeatedScan(...) return TargetScanning:StartRepeatedScan(self, ...) end function bossModPrototype:StopRepeatedScan(...) return TargetScanning:StopRepeatedScan(...)--self/bossModPrototype missing not a bug, function doesn't need it end end do local bossCache = {} local lastTank function bossModPrototype:GetCurrentTank(cidOrGuid) if lastTank and GetTime() - (bossCache[cidOrGuid] or 0) < 2 then -- return last tank within 2 seconds of call return lastTank else cidOrGuid = cidOrGuid or self.creatureId--GetBossTarget supports GUID or CID and it will automatically return correct values with EITHER ONE local uId local _, fallbackuId, mobuId = self:GetBossTarget(cidOrGuid) if mobuId then--Have a valid mob unit ID --First, use trust threat more than fallbackuId and see what we pull from it first. --This is because for GetCurrentTank we want to know who is tanking it, not who it's targeting. local unitId = (IsInRaid() and "raid") or "party" for i = 0, GetNumGroupMembers() do local id = (i == 0 and "target") or unitId..i local tanking, status = UnitDetailedThreatSituation(id, mobuId)--Tanking may return 0 if npc is temporarily looking at an NPC (IE fracture) but status will still be 3 on true tank if tanking or (status == 3) then uId = id end--Found highest threat target, make them uId if uId then break end end --Did not get anything useful from threat, so use who the boss was looking at, at time of cast (ie fallbackuId) if fallbackuId and not uId then uId = fallbackuId end end if uId then--Now we have a valid uId bossCache[cidOrGuid] = GetTime() lastTank = UnitName(uId) return UnitName(lastTank), uId end return false end end end --Now this function works perfectly. But have some limitation due to DBM.RangeCheck:GetDistance() function. --Unfortunely, DBM.RangeCheck:GetDistance() function cannot reflects altitude difference. This makes range unreliable. --So, we need to cafefully check range in difference altitude (Especially, tower top and bottom) do local rangeCache = {} local rangeUpdated = {} function bossModPrototype:CheckBossDistance(cidOrGuid, onlyBoss, itemId, distance, defaultReturn) if not DBM.Options.DontShowFarWarnings then return true end--Global disable. cidOrGuid = cidOrGuid or self.creatureId local uId if type(cidOrGuid) == "number" then--CID passed uId = DBM:GetUnitIdFromCID(cidOrGuid, onlyBoss) else--GUID uId = DBM:GetUnitIdFromGUID(cidOrGuid, onlyBoss) end if uId then itemId = itemId or 32698 local inRange = IsItemInRange(itemId, uId) if inRange then--IsItemInRange was a success return inRange else--IsItemInRange doesn't work on all bosses/npcs, but tank checks do DBM:Debug("CheckBossDistance failed on IsItemInRange for: "..cidOrGuid, 2) return self:CheckTankDistance(cidOrGuid, distance, onlyBoss, defaultReturn)--Return tank distance check fallback end end DBM:Debug("CheckBossDistance failed on uId for: "..cidOrGuid, 2) return (defaultReturn == nil) or defaultReturn--When we simply can't figure anything out, return true and allow warnings using this filter to fire end function bossModPrototype:CheckTankDistance(cidOrGuid, distance, onlyBoss, defaultReturn) if not DBM.Options.DontShowFarWarnings then return true end--Global disable. distance = distance or 43 if rangeCache[cidOrGuid] and (GetTime() - (rangeUpdated[cidOrGuid] or 0)) < 2 then -- return same range within 2 sec call return rangeCache[cidOrGuid] < distance else cidOrGuid = cidOrGuid or self.creatureId--GetBossTarget supports GUID or CID and it will automatically return correct values with EITHER ONE local uId local _, fallbackuId, mobuId = self:GetBossTarget(cidOrGuid, onlyBoss) if mobuId then--Have a valid mob unit ID --First, use trust threat more than fallbackuId and see what we pull from it first. --This is because for CheckTankDistance we want to know who is tanking it, not who it's targeting. local unitId = (IsInRaid() and "raid") or "party" for i = 0, GetNumGroupMembers() do local id = (i == 0 and "target") or unitId..i local tanking, status = UnitDetailedThreatSituation(id, mobuId)--Tanking may return 0 if npc is temporarily looking at an NPC (IE fracture) but status will still be 3 on true tank if tanking or (status == 3) then uId = id end--Found highest threat target, make them uId if uId then break end end --Did not get anything useful from threat, so use who the boss was looking at, at time of cast (ie fallbackuId) if fallbackuId and not uId then uId = fallbackuId end end if uId then--Now we have a valid uId if UnitIsUnit(uId, "player") then return true end--If "player" is target, avoid doing any complicated stuff if not UnitIsPlayer(uId) then local inRange2, checkedRange = UnitInRange(uId)--43 if checkedRange then--checkedRange only returns true if api worked, so if we get false, true then we are not near npc return inRange2 else--Its probably a totem or just something we can't assess. Fall back to no filtering return true end end local inRange = DBM.RangeCheck:GetDistance("player", uId)--We check how far we are from the tank who has that boss rangeCache[cidOrGuid] = inRange rangeUpdated[cidOrGuid] = GetTime() if inRange and (inRange > distance) then--You are not near the person tanking boss return false end --Tank in range, return true. return true end DBM:Debug("CheckTankDistance failed on uId for: "..cidOrGuid, 2) return (defaultReturn == nil) or defaultReturn--When we simply can't figure anything out, return true and allow warnings using this filter to fire. But some spells will prefer not to fire(i.e : Galakras tower spell), we can define it on this function calling. end end end --------------------- -- Class Methods -- --------------------- do --[[function bossModPrototype:GetRoleFlagValue(flag) if not flag then return false end local flags = {strsplit("|", flag)} for i = 1, #flags do local flagText = flags[i] flagText = flagText:gsub("-", "") if not specFlags[flagText] then print("bad flag found : "..flagText) end end self:GetRoleFlagValue2(flag) end]] --to check flag is correct, remove comment block specFlags table and GetRoleFlagValue function, change this to GetRoleFlagValue2 --disable flag check normally because double flag check comsumes more cpu on mod load. function bossModPrototype:GetRoleFlagValue(flag) if not flag then return false end if not currentSpecID then DBM:SetCurrentSpecInfo() end local flags = {strsplit("|", flag)} for i = 1, #flags do local flagText = flags[i] if flagText:match("^-") then flagText = flagText:gsub("-", "") if not private.specRoleTable[currentSpecID][flagText] then return true end elseif private.specRoleTable[currentSpecID][flagText] then return true end end return false end function bossModPrototype:IsMeleeDps(uId) if uId then--This version includes ONLY melee dps local name = GetUnitName(uId, true) --First we check if we have acccess to specID (ie remote player is using DBM or Bigwigs) if raid[name].specID then--We know their specId local specID = raid[name].specID return private.specRoleTable[specID]["MeleeDps"] else --Role checks are second best thing local isTank, isHealer = UnitGroupRolesAssigned(uId) if (isHealer or isTank) or GetPartyAssignment("MAINTANK", uId, 1) then--Auto filter healer/tank from dps check, can't filter healers in classic return false end --Class checks for things that are a sure thing anyways local _, class = UnitClass(uId) if class == "WARRIOR" or class == "ROGUE" or class == "DEATHKNIGHT" then return true end --Now we do the ugly checks thanks to Inspect throttle if class == "DRUID" or class == "SHAMAN" or class == "PALADIN" then local unitMaxPower = UnitPowerMax(uId) if unitMaxPower < 7500 then return true end end end return false end --Personal check Only if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["MeleeDps"] end function DBM:IsMelee(uId, mechanical)--mechanical arg means the check is asking if boss mechanics consider them melee (even if they aren't, such as holy paladin/mistweaver monks) if uId then--This version includes monk healers as melee and tanks as melee --Class checks performed first due to mechanical check needing to be broader than a specID check local _, class = UnitClass(uId) --In mechanical check, ALL paladins are melee so don't need anything fancy, as for rest of classes here, same deal if class == "WARRIOR" or class == "ROGUE" or class == "DEATHKNIGHT" or (mechanical and class == "PALADIN") then return true end --Now we check if we have acccess to specID (ie remote player is using DBM or Bigwigs) local name = GetUnitName(uId, true) if raid[name].specID then--We know their specId local specID = raid[name].specID return private.specRoleTable[specID]["Melee"] else --Now we do the ugly checks thanks to Inspect throttle if (class == "DRUID" or class == "SHAMAN" or class == "PALADIN") then local unitMaxPower = UnitPowerMax(uId) if unitMaxPower < 7500 then return true end end end return false end --Personal check Only if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["Melee"] end bossModPrototype.IsMelee = DBM.IsMelee function DBM:IsRanged(uId) if uId then local name = GetUnitName(uId, true) if raid[name].specID then--We know their specId local specID = raid[name].specID return private.specRoleTable[specID]["Ranged"] else print("bossModPrototype:IsRanged should not be called on external units if specID is unavailable, report this message") end end --Personal check Only if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["Ranged"] end bossModPrototype.IsRanged = DBM.IsRanged function bossModPrototype:IsSpellCaster(uId) if uId then local name = GetUnitName(uId, true) if raid[name].specID then--We know their specId local specID = raid[name].specID return private.specRoleTable[specID]["SpellCaster"] else print("bossModPrototype:IsSpellCaster should not be called on external units if specID is unavailable, report this message") end end --Personal check Only if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["SpellCaster"] end function bossModPrototype:IsMagicDispeller(uId) if uId then local name = GetUnitName(uId, true) if raid[name].specID then--We know their specId local specID = raid[name].specID return private.specRoleTable[specID]["MagicDispeller"] else print("bossModPrototype:IsMagicDispeller should not be called on external units if specID is unavailable, report this message") end end --Personal check Only if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["MagicDispeller"] end --------------------- -- Sort Methods -- --------------------- function DBM.SortByGroup(v1, v2) return DBM:GetGroupId(DBM:GetUnitFullName(v1), true) < DBM:GetGroupId(DBM:GetUnitFullName(v2), true) end function DBM.SortByTankAlpha(v1, v2) --Tank > Melee > Ranged prio, and if two of any of types, alphabetical names are preferred if DBM:IsTanking(v1) == DBM:IsTanking(v2) then return DBM:GetUnitFullName(v1) < DBM:GetUnitFullName(v2) --if one is tank and one isn't, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsTanking(v1) and not DBM:IsTanking(v2) then return true elseif DBM:IsTanking(v2) and not DBM:IsTanking(v1) then return false elseif DBM:IsMelee(v1) == DBM:IsMelee(v2) then return DBM:GetUnitFullName(v1) < DBM:GetUnitFullName(v2) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsMelee(v1) and not DBM:IsMelee(v2) then return true elseif DBM:IsMelee(v2) and not DBM:IsMelee(v1) then return false end end function DBM.SortByTankRoster(v1, v2) --Tank > Melee > Ranged prio, and if two of any of types, roster index as secondary if DBM:IsTanking(v1) == DBM:IsTanking(v2) then return DBM:GetGroupId(DBM:GetUnitFullName(v1), true) < DBM:GetGroupId(DBM:GetUnitFullName(v2), true) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsTanking(v1) and not DBM:IsTanking(v2) then return true elseif DBM:IsTanking(v2) and not DBM:IsTanking(v1) then return false elseif DBM:IsMelee(v1) == DBM:IsMelee(v2) then return DBM:GetGroupId(DBM:GetUnitFullName(v1), true) < DBM:GetGroupId(DBM:GetUnitFullName(v2), true) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsMelee(v1) and not DBM:IsMelee(v2) then return true elseif DBM:IsMelee(v2) and not DBM:IsMelee(v1) then return false end end function DBM.SortByMeleeAlpha(v1, v2) --if both are melee, the return values are equal and we use alpha sort --if both are ranged, the return values are equal and we use alpha sort if DBM:IsMelee(v1) == DBM:IsMelee(v2) then return DBM:GetUnitFullName(v1) < DBM:GetUnitFullName(v2) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsMelee(v1) and not DBM:IsMelee(v2) then return true elseif DBM:IsMelee(v2) and not DBM:IsMelee(v1) then return false end end function DBM.SortByMeleeRoster(v1, v2) --if both are melee, the return values are equal and we use raid roster index sort --if both are ranged, the return values are equal and we use raid roster index sort if DBM:IsMelee(v1) == DBM:IsMelee(v2) then return DBM:GetGroupId(DBM:GetUnitFullName(v1), true) < DBM:GetGroupId(DBM:GetUnitFullName(v2), true) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsMelee(v1) and not DBM:IsMelee(v2) then return true elseif DBM:IsMelee(v2) and not DBM:IsMelee(v1) then return false end end function DBM.SortByRangedAlpha(v1, v2) --if both are melee, the return values are equal and we use alpha sort --if both are ranged, the return values are equal and we use alpha sort if DBM:IsRanged(v1) == DBM:IsRanged(v2) then return DBM:GetUnitFullName(v1) < DBM:GetUnitFullName(v2) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsRanged(v1) and not DBM:IsRanged(v2) then return true elseif DBM:IsRanged(v2) and not DBM:IsRanged(v1) then return false end end function DBM.SortByRangedRoster(v1, v2) --if both are melee, the return values are equal and we use raid roster index sort --if both are ranged, the return values are equal and we use raid roster index sort if DBM:IsRanged(v1) == DBM:IsRanged(v2) then return DBM:GetGroupId(DBM:GetUnitFullName(v1), true) < DBM:GetGroupId(DBM:GetUnitFullName(v2), true) --if one is melee and one is ranged, they are not equal so it goes to the below elseifs that prio melee elseif DBM:IsRanged(v1) and not DBM:IsRanged(v2) then return true elseif DBM:IsRanged(v2) and not DBM:IsRanged(v1) then return false end end end function bossModPrototype:UnitClass(uId) if uId then--Return unit requested local _, class = UnitClass(uId) return class end return playerClass--else return "player" end function bossModPrototype:IsTank() --IsTanking already handles external calls, no need here. if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["Tank"] end function bossModPrototype:IsDps(uId) if uId then--External unit call. --no SpecID checks because SpecID is only availalbe with DBM/Bigwigs, but both DBM/Bigwigs auto set DAMAGER/HEALER/TANK roles anyways so it'd be redundant if IsPartyLFG() then -- On WotLK, Role API only works on LFG local _, _, isDamager = UnitGroupRolesAssigned(uId) return isDamager -- or not GetPartyAssignment("MAINTANK", uId, 1) -- Using this GetPartyAssignment API here makes no sense, since it being a non MAINTANK could be a healer... else return DBM:GetUnitRole(uId) == "DAMAGER" end end if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["Dps"] end function DBM:IsHealer(uId) if uId then--External unit call. --no SpecID checks because SpecID is only availalbe with DBM/Bigwigs, but both DBM/Bigwigs auto set DAMAGER/HEALER/TANK roles anyways so it'd be redundant if IsPartyLFG() then -- On WotLK, Role API only works on LFG local _, isHealer = UnitGroupRolesAssigned(uId) return isHealer else return DBM:GetUnitRole(uId) == "HEALER" end end if not currentSpecID then DBM:SetCurrentSpecInfo() end return private.specRoleTable[currentSpecID]["Healer"] end bossModPrototype.IsHealer = DBM.IsHealer function DBM:IsTanking(playerUnitID, enemyUnitID, isName, onlyRequested, enemyGUID, includeTarget, onlyS3) --Didn't have playerUnitID so combat log name was passed if isName then playerUnitID = DBM:GetRaidUnitId(playerUnitID) end if not playerUnitID then DBM:Debug("IsTanking passed with invalid unit", 2) return false end --If we don't know enemy unit token, but know it's GUID if not enemyUnitID and enemyGUID then enemyUnitID = DBM:GetUnitIdFromGUID(enemyGUID) end DBM:Debug(("IsTanking run with playerUnitID: %s (%s) and enemyUnitID: %s (%s). DBM arguments - onlyRequested: %s ; enemyGUID: %s ; includeTarget: %s ; onlyS3: %s"):format(playerUnitID or "nil", playerUnitID and UnitName(playerUnitID) or "nil", enemyUnitID or "nil", enemyUnitID and UnitName(enemyUnitID) or "nil", tostring(onlyRequested) or "nil", enemyGUID or "nil", tostring(includeTarget) or "nil", tostring(onlyS3) or "nil"), 3) --Threat/Tanking Checks --We have both units. No need to find unitID if enemyUnitID then --Check threat first local tanking, status, scaledPercent, rawPercent, threatValue = UnitDetailedThreatSituation(playerUnitID, enemyUnitID) DBM:Debug(("Threat API arguments - tanking: %s ; status: %s ; scaledPercent: %s ; rawPercent: %s ; threatValue: %s"):format(tostring(tanking) or "nil", tostring(status) or "nil", tostring(scaledPercent) or "nil", tostring(rawPercent) or "nil", tostring(threatValue) or "nil"), 3) if (not onlyS3 and tanking) or (status == 3) then return true end --Non threat fallback if includeTarget and UnitExists(enemyUnitID.."target") then if UnitIsUnit(playerUnitID, enemyUnitID.."target") then DBM:Debug("IsTanking found tank, using enemyUnitID target", 3) return true end end end --if onlyRequested is false/nil, it means we also accept anyone that's a tank role or tanking any boss unit if not onlyRequested then --Use these as fallback if threat target not found if GetPartyAssignment("MAINTANK", playerUnitID, 1) then DBM:Debug("IsTanking found MAINTANK, using GetPartyAssignment", 3) return true end --no SpecID checks because SpecID is only availalbe with DBM/Bigwigs, but both DBM/Bigwigs auto set DAMAGER/HEALER/TANK roles anyways so it'd be redundant if IsPartyLFG() then -- On WotLK, Role API only works on LFG local isTank = UnitGroupRolesAssigned(playerUnitID) if isTank then DBM:Debug("IsTanking found TANK role, using UnitGroupRolesAssigned", 3) return true end else if DBM:GetUnitRole(playerUnitID) == "TANK" then DBM:Debug("IsTanking found TANK role, using DBM:GetUnitRole", 3) return true end end for i = 1, 5 do local unitID = "boss"..i local guid = UnitGUID(unitID) --No GUID, any unit having threat returns true, GUID, only specific unit matching guid if not enemyGUID or (guid and guid == enemyGUID) then --Check threat first local tanking, status = UnitDetailedThreatSituation(playerUnitID, unitID) if (not onlyS3 and tanking) or (status == 3) then DBM:Debug("IsTanking found TANK, using Threat API on boss units", 3) return true end --Non threat fallback if includeTarget and UnitExists(unitID.."target") then if UnitIsUnit(playerUnitID, unitID.."target") then DBM:Debug("IsTanking found TANK, using bosstarget fallback", 3) return true end end end end end DBM:Debug("IsTanking return false", 3) return false end bossModPrototype.IsTanking = DBM.IsTanking function bossModPrototype:GetNumAliveTanks() if not IsInGroup() then return 1 end--Solo raid, you're the "tank" local count = 0 local uId = (IsInRaid() and "raid") or "party" for i = 1, DBM:GetNumRealGroupMembers() do local isTank = UnitGroupRolesAssigned(uId..i) if (isTank or GetPartyAssignment("MAINTANK", uId..i, 1)) and not UnitIsDeadOrGhost(uId..i) then count = count + 1 end end return count end ----------------------- -- Filter Methods -- ----------------------- do local interruptSpells = { [1766] = true,--Rogue Kick [2139] = true,--Mage Counterspell [6552] = true,--Warrior Pummel [15487] = true,--Priest Silence [19647] = true,--Warlock pet Spell Lock [47528] = true,--Death Knight Mind Freeze [49377] = true,--Druid Feral Charge [57994] = true,--Shaman Wind Shear } --onlyTandF param is used when CheckInterruptFilter is actually being used for a simple target/focus check and nothing more. --checkCooldown should always be passed true except for special rotations like count warnings when you should be alerted it's your turn even if you dropped ball and put it on CD at wrong time --ignoreTandF is passed usually when interrupt is on a main boss or event that is global to entire raid and should always be alerted regardless of targetting. function bossModPrototype:CheckInterruptFilter(sourceGUID, checkOnlyTandF, checkCooldown, ignoreTandF) --Check healer spec filter if self:IsHealer() and (self.isTrashMod and DBM.Options.FilterTInterruptHealer or not self.isTrashMod and DBM.Options.FilterBInterruptHealer) then return false end --Check if cooldown check is required if checkCooldown and (self.isTrashMod and DBM.Options.FilterTInterruptCooldown or not self.isTrashMod and DBM.Options.FilterBInterruptCooldown) then for spellID, _ in pairs(interruptSpells) do --For an inverse check, don't need to check if it's known, if it's on cooldown it's known --This is possible since no class has 2 interrupt spells (well, actual interrupt spells) if (GetSpellCooldown(spellID)) ~= 0 then--Spell is on cooldown return false end end end local unitID = (UnitGUID("target") == sourceGUID) and "target" or (UnitGUID("focus") == sourceGUID) and "focus" --Check if target/focus is required (or if onlyTandF is used, meaning this isn't actually an interrupt API check) if checkOnlyTandF or (self.isTrashMod and DBM.Options.FilterTTargetFocus or not self.isTrashMod and DBM.Options.FilterBTargetFocus) then --Just return false if source isn't our target or focus, no need to do further checks if not ignoreTandF and not unitID then return false end end --Check if it's casting something that's not interruptable at the moment --needed for torghast since many mobs can have interrupt immunity with same spellIds as other mobs that can be interrupted if unitID then if UnitCastingInfo(unitID) then local _, _, _, _, _, _, _, _, notInterruptible = UnitCastingInfo(unitID) if notInterruptible then return false end elseif UnitChannelInfo(unitID) then local _, _, _, _, _, _, _, notInterruptible = UnitChannelInfo(unitID) if notInterruptible then return false end end end return true end end do --lazyCheck mostly for migration, doesn't distinguish dispel types local lazyCheck = { [2782] = true,--Druid: Remove Curse (Curse and Poison) [2893] = true,--Druid: Abolish Poison (Poison) [8946] = true,--Druid: Cure Poison (Poison) [527] = true,--Priest: Dispel Magic (Magic and Disease) [528] = true,--Priest: Cure Disease (Disease) [552] = true,--Priest: Abolish Disease (Disease) [32375] = true,--Priest: Mass Dispel (Magic and Disease) [1022] = true,--Paladin: Hand of Protection (Bleed) [1152] = true,--Paladin: Purify (Poison and Disease) [4987] = true,--Paladin: Cleanse (Magic, Poison and Disease) [526] = true,--Shaman: Cure Toxins (Poison and Disease) [51886] = true,--Shaman: Cleanse Spirit (Curse, Poison and Disease) [475] = true,--Mage: Remove Curse (Curse) } --Obviously only checks spells relevant for the dispel type local typeCheck = { ["magic"] = { [527] = true,--Priest: Dispel Magic (Magic and Disease) [32375] = true,--Priest: Mass Dispel (Magic and Disease) [4987] = true,--Paladin: Cleanse (Magic, Poison and Disease) [77130] = true,--Shaman: Purify Spirit (Magic and Curse) }, ["curse"] = { [2782] = true,--Druid: Remove Curse (Curse and Poison) [51886] = DBM:IsHealer() and true,--Shaman: Cleanse Spirit (Curse, Poison and Disease) [475] = true,--Mage: Remove Curse (Curse) }, ["poison"] = { [2782] = true,--Druid: Remove Corruption (Curse and Poison) [2893] = true,--Druid: Abolish Poison (Poison) [8946] = true,--Druid: Cure Poison (Poison) [1152] = true,--Paladin: Purify (Poison and Disease) [4987] = true,--Paladin: Cleanse (Magic, Poison and Disease) [526] = true,--Shaman: Cure Toxins (Poison and Disease) [51886] = DBM:IsHealer() and true,--Shaman: Cleanse Spirit (Curse, Poison and Disease) }, ["disease"] = { [527] = true,--Priest: Dispel Magic (Magic and Disease) [528] = true,--Priest: Cure Disease (Disease) [552] = true,--Priest: Abolish Disease (Disease) [32375] = true,--Priest: Mass Dispel (Magic and Disease) [1152] = true,--Paladin: Purify (Poison and Disease) [4987] = true,--Paladin: Cleanse (Magic, Poison and Disease) [526] = true,--Shaman: Cure Toxins (Poison and Disease) [51886] = DBM:IsHealer() and true,--Shaman: Cleanse Spirit (Curse, Poison and Disease) }, ["bleed"] = { [1022] = true,--Paladin: Hand of Protection (Bleed) }, } local lastCheck, lastReturn = 0, true function bossModPrototype:CheckDispelFilter(dispelType) if not DBM.Options.FilterDispel then return true end -- WotLK: Druid: Abolish Poison (2893), Cure Poison (8946), Remove Curse (2782); Priest: Dispel Magic (527), Abolish Disease (552), Cure Disease (528), Mass Dispel (32375); Paladin: Cleanse (4987), Purify (1152); Shaman: Cleanse Spirit (51886), Cure Toxins (526); Mage: Remove Curse (475), Warlock (pet Felhunter): Devour Magic (48011) --start, duration, enable = GetSpellCooldown --start & duration == 0 if spell not on cd if UnitIsDeadOrGhost("player") then return false end--if dead, can't dispel if GetTime() - lastCheck < 0.1 then--Recently returned status, return same status to save cpu from aggressive api checks caused by CheckDispelFilter running on multiple raid members getting debuffed at once return lastReturn end if dispelType then --Devour Magic requires checking if Felhunter pet is out (Warlock only) --Only checking 48011 (rank 7) for convenience, since API returns 0 for every other rank below it (possibly an unwanted behaviour with API and pet) if dispelType == "magic" and (GetSpellCooldown(48011)) == 0 and (UnitExists("pet") and self:GetCIDFromGUID(UnitGUID("pet")) == 6) then lastCheck = GetTime() lastReturn = true return true end --We cannot do inverse check here because some classes actually have two dispels for same type (such as evoker) --Therefor, we can't go false if only one of them are on cooldown. We have to go true of any of them aren't on CD instead --As such, we have to check if a spell is known in addition to it not being on cooldown for spellID, _ in pairs(typeCheck[dispelType]) do if typeCheck[dispelType][spellID] and IsSpellKnown(spellID) and (GetSpellCooldown(spellID)) == 0 then--Spell is known and not on cooldown lastCheck = GetTime() lastReturn = true return true end end else--use lazy check until all mods are migrated to define type for spellID, _ in pairs(lazyCheck) do if IsSpellKnown(spellID) and (GetSpellCooldown(spellID)) == 0 then--Spell is known and not on cooldown lastCheck = GetTime() lastReturn = true return true end end end lastCheck = GetTime() lastReturn = false return false end end ------------------------- -- Boss Health Frame -- ------------------------- function bossModPrototype:SetBossHealthInfo(...) self.bossHealthInfo = {...} end ---------------------------- -- Boss Health Function -- ---------------------------- --This accepts both CID and GUID function DBM:GetBossHP(cIdOrGUID, onlyHighest) local uId = bossHealthuIdCache[cIdOrGUID] or "target" local guid = UnitGUID(uId) --Target or Cached (if already called with this cid or GUID before) if (self:GetCIDFromGUID(guid) == cIdOrGUID or guid == cIdOrGUID) and UnitHealthMax(uId) ~= 0 then if bossHealth[cIdOrGUID] and (UnitHealth(uId) == 0 and not UnitIsDead(uId)) then return bossHealth[cIdOrGUID], uId, UnitName(uId) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth(uId) / UnitHealthMax(uId) * 100 if not onlyHighest or onlyHighest and hp > (bossHealth[cIdOrGUID] or 0) then bossHealth[cIdOrGUID] = hp end return hp, uId, UnitName(uId) --Focus elseif (self:GetCIDFromGUID(UnitGUID("focus")) == cIdOrGUID or UnitGUID("focus") == cIdOrGUID) and UnitHealthMax("focus") ~= 0 then if bossHealth[cIdOrGUID] and (UnitHealth("focus") == 0 and not UnitIsDead("focus")) then return bossHealth[cIdOrGUID], "focus", UnitName("focus") end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth("focus") / UnitHealthMax("focus") * 100 if not onlyHighest or onlyHighest and hp > (bossHealth[cIdOrGUID] or 0) then bossHealth[cIdOrGUID] = hp end return hp, "focus", UnitName("focus") else --Boss UnitIds for i = 1, 5 do local unitID = "boss"..i local bossguid = UnitGUID(unitID) if (self:GetCIDFromGUID(bossguid) == cIdOrGUID or bossguid == cIdOrGUID) and UnitHealthMax(unitID) ~= 0 then if bossHealth[cIdOrGUID] and (UnitHealth(unitID) == 0 and not UnitIsDead(unitID)) then return bossHealth[cIdOrGUID], unitID, UnitName(unitID) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth(unitID) / UnitHealthMax(unitID) * 100 if not onlyHighest or onlyHighest and hp > (bossHealth[cIdOrGUID] or 0) then bossHealth[cIdOrGUID] = hp end bossHealthuIdCache[cIdOrGUID] = unitID return hp, unitID, UnitName(unitID) end end --Scan raid/party target frames local idType = (IsInRaid() and "raid") or "party" for i = 0, GetNumGroupMembers() do local unitId = ((i == 0) and "target") or idType..i.."target" local bossguid = UnitGUID(unitId) if (self:GetCIDFromGUID(bossguid) == cIdOrGUID or bossguid == cIdOrGUID) and UnitHealthMax(unitId) ~= 0 then if bossHealth[cIdOrGUID] and (UnitHealth(unitId) == 0 and not UnitIsDead(unitId)) then return bossHealth[cIdOrGUID], unitId, UnitName(unitId) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth(unitId) / UnitHealthMax(unitId) * 100 if not onlyHighest or onlyHighest and hp > (bossHealth[cIdOrGUID] or 0) then bossHealth[cIdOrGUID] = hp end bossHealthuIdCache[cIdOrGUID] = unitId return hp, unitId, UnitName(unitId) end end end end function DBM:GetBossHPByGUID(guid) local uId = bossHealthuIdCache[guid] or "target" if UnitGUID(uId) == guid and UnitHealthMax(uId) ~= 0 then if bossHealth[guid] and (UnitHealth(uId) == 0 and not UnitIsDead(uId)) then return bossHealth[guid], uId, UnitName(uId) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth(uId) / UnitHealthMax(uId) * 100 bossHealth[guid] = hp return hp, uId, UnitName(uId) elseif UnitGUID("focus") == guid and UnitHealthMax("focus") ~= 0 then if bossHealth[guid] and (UnitHealth("focus") == 0 and not UnitIsDead("focus")) then return bossHealth[guid], "focus", UnitName("focus") end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth("focus") / UnitHealthMax("focus") * 100 bossHealth[guid] = hp return hp, "focus", UnitName("focus") else for i = 1, 5 do local guid2 = UnitGUID("boss"..i) if guid == guid2 and UnitHealthMax("boss"..i) ~= 0 then if bossHealth[guid] and (UnitHealth("boss"..i) == 0 and not UnitIsDead("boss"..i)) then return bossHealth[guid], "boss"..i, UnitName("boss"..i) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth("boss"..i) / UnitHealthMax("boss"..i) * 100 bossHealth[guid] = hp bossHealthuIdCache[guid] = "boss"..i return hp, "boss"..i, UnitName("boss"..i) end end local idType = (GetNumRaidMembers() > 0 and "raid") or "party" for i = 0, GetNumGroupMembers() do local unitId = ((i == 0) and "target") or idType..i.."target" local guid2 = UnitGUID(unitId) if guid == guid2 and UnitHealthMax(unitId) ~= 0 then if bossHealth[guid] and (UnitHealth(unitId) == 0 and not UnitIsDead(unitId)) then return bossHealth[guid], unitId, UnitName(unitId) end--Return last non 0 value if value is 0, since it's last valid value we had. local hp = UnitHealth(unitId) / UnitHealthMax(unitId) * 100 bossHealth[guid] = hp bossHealthuIdCache[guid] = unitId return hp, unitId, UnitName(unitId) end end end return nil end function DBM:GetBossHPByUnitID(uId) if UnitHealthMax(uId) ~= 0 then local hp = UnitHealth(uId) / UnitHealthMax(uId) * 100 bossHealth[uId] = hp return hp, uId, UnitName(uId) end end function bossModPrototype:SetMainBossID(cid) self.mainBoss = cid end function bossModPrototype:SetBossHPInfoToHighest(numBoss) if numBoss ~= false then self.numBoss = numBoss or (self.multiMobPullDetection and #self.multiMobPullDetection) end self.highesthealth = true end function bossModPrototype:GetHighestBossHealth() local hp if not self.multiMobPullDetection or self.mainBoss then hp = bossHealth[self.mainBoss or self.combatInfo.mob or -1] if hp and (hp > 100 or hp <= 0) then hp = nil end else for _, mob in ipairs(self.multiMobPullDetection) do if (bossHealth[mob] or 0) > (hp or 0) and (bossHealth[mob] or 0) < 100 then-- ignore full health. hp = bossHealth[mob] end end end return hp end function bossModPrototype:GetLowestBossHealth() local hp if not self.multiMobPullDetection or self.mainBoss then hp = bossHealth[self.mainBoss or self.combatInfo.mob or -1] if hp and (hp > 100 or hp <= 0) then hp = nil end else for _, mob in ipairs(self.multiMobPullDetection) do if (bossHealth[mob] or 100) < (hp or 100) and (bossHealth[mob] or 100) > 0 then-- ignore zero health. hp = bossHealth[mob] end end end return hp end bossModPrototype.GetBossHP = DBM.GetBossHP bossModPrototype.GetBossHPByGUID = DBM.GetBossHPByGUID bossModPrototype.GetBossHPByUnitID = DBM.GetBossHPByUnitID ------------------------- -- Timers Table Util -- ------------------------- function bossModPrototype:GetFromTimersTable(table, difficultyName, phase, spellId, count) local prev = table if difficultyName ~= false then if not difficultyName or not prev[difficultyName] then DBM:Debug("difficultyName is missing from table") return end prev = prev[difficultyName] end if phase ~= false then if not phase or not prev[phase] then DBM:Debug("phase is missing from table") return end prev = prev[phase] end if not prev[spellId] then DBM:Debug("spellId is missing from table") return end prev = prev[spellId] if count then prev = prev[count] end return prev end ----------------------- -- Announce Object -- ----------------------- do local frame = CreateFrame("Frame", "DBMWarning", UIParent) local font1u = CreateFrame("Frame", "DBMWarning1Updater", UIParent) local font2u = CreateFrame("Frame", "DBMWarning2Updater", UIParent) local font3u = CreateFrame("Frame", "DBMWarning3Updater", UIParent) local font1 = frame:CreateFontString("DBMWarning1", "OVERLAY", "GameFontNormal") font1:SetWidth(0) -- Don't hardcode, it WILL cause client crashes if a string with icons and certain fonts reach a certain FontHeight on the OnUpdate grow font1:SetHeight(0) font1:SetPoint("TOP", 0, 0) local font2 = frame:CreateFontString("DBMWarning2", "OVERLAY", "GameFontNormal") font2:SetWidth(0) -- Don't hardcode, it WILL cause client crashes if a string with icons and certain fonts reach a certain FontHeight on the OnUpdate grow font2:SetHeight(0) font2:SetPoint("TOP", font1, "BOTTOM", 0, 0) local font3 = frame:CreateFontString("DBMWarning3", "OVERLAY", "GameFontNormal") font3:SetWidth(0) -- Don't hardcode, it WILL cause client crashes if a string with icons and certain fonts reach a certain FontHeight on the OnUpdate grow font3:SetHeight(0) font3:SetPoint("TOP", font2, "BOTTOM", 0, 0) frame:SetMovable(1) frame:SetWidth(1) frame:SetHeight(1) frame:SetFrameStrata("HIGH") frame:SetClampedToScreen() frame:SetPoint("CENTER", UIParent, "CENTER", 0, 300) font1u:Hide() font2u:Hide() font3u:Hide() local font1elapsed, font2elapsed, font3elapsed local function fontHide1() local duration = DBM.Options.WarningDuration2 if font1elapsed > duration * 1.3 then font1u:Hide() font1:Hide() if frame.font1ticker then AceTimer:CancelTimer(frame.font1ticker) frame.font1ticker = nil end elseif font1elapsed > duration then font1elapsed = font1elapsed + 0.05 local alpha = 1 - (font1elapsed - duration) / (duration * 0.3) font1:SetAlpha(alpha > 0 and alpha or 0) else font1elapsed = font1elapsed + 0.05 font1:SetAlpha(1) end end local function fontHide2() local duration = DBM.Options.WarningDuration2 if font2elapsed > duration * 1.3 then font2u:Hide() font2:Hide() if frame.font2ticker then AceTimer:CancelTimer(frame.font2ticker) frame.font2ticker = nil end elseif font2elapsed > duration then font2elapsed = font2elapsed + 0.05 local alpha = 1 - (font2elapsed - duration) / (duration * 0.3) font2:SetAlpha(alpha > 0 and alpha or 0) else font2elapsed = font2elapsed + 0.05 font2:SetAlpha(1) end end local function fontHide3() local duration = DBM.Options.WarningDuration2 if font3elapsed > duration * 1.3 then font3u:Hide() font3:Hide() if frame.font3ticker then AceTimer:CancelTimer(frame.font3ticker) frame.font3ticker = nil end elseif font3elapsed > duration then font3elapsed = font3elapsed + 0.05 local alpha = 1 - (font3elapsed - duration) / (duration * 0.3) font3:SetAlpha(alpha > 0 and alpha or 0) else font3elapsed = font3elapsed + 0.05 font3:SetAlpha(1) end end font1u:SetScript("OnUpdate", function(self) local diff = GetTime() - font1.lastUpdate local origSize = DBM.Options.WarningFontSize if diff > 0.4 then font1:SetTextHeight(origSize) self:Hide() elseif diff > 0.2 then font1:SetTextHeight(origSize * (1.5 - (diff-0.2) * 2.5)) else font1:SetTextHeight(origSize * (1 + diff * 2.5)) end end) font2u:SetScript("OnUpdate", function(self) local diff = GetTime() - font2.lastUpdate local origSize = DBM.Options.WarningFontSize if diff > 0.4 then font2:SetTextHeight(origSize) self:Hide() elseif diff > 0.2 then font2:SetTextHeight(origSize * (1.5 - (diff-0.2) * 2.5)) else font2:SetTextHeight(origSize * (1 + diff * 2.5)) end end) font3u:SetScript("OnUpdate", function(self) local diff = GetTime() - font3.lastUpdate local origSize = DBM.Options.WarningFontSize if diff > 0.4 then font3:SetTextHeight(origSize) self:Hide() elseif diff > 0.2 then font3:SetTextHeight(origSize * (1.5 - (diff-0.2) * 2.5)) else font3:SetTextHeight(origSize * (1 + diff * 2.5)) end end) function DBM:UpdateWarningOptions() frame:ClearAllPoints() frame:SetPoint(self.Options.WarningPoint, UIParent, self.Options.WarningPoint, self.Options.WarningX, self.Options.WarningY) local font = self.Options.WarningFont == "standardFont" and standardFont or self.Options.WarningFont font1:SetFont(font, self.Options.WarningFontSize, self.Options.WarningFontStyle == "None" and nil or self.Options.WarningFontStyle) font2:SetFont(font, self.Options.WarningFontSize, self.Options.WarningFontStyle == "None" and nil or self.Options.WarningFontStyle) font3:SetFont(font, self.Options.WarningFontSize, self.Options.WarningFontStyle == "None" and nil or self.Options.WarningFontStyle) if self.Options.WarningFontShadow then font1:SetShadowOffset(1, -1) font2:SetShadowOffset(1, -1) font3:SetShadowOffset(1, -1) else font1:SetShadowOffset(0, 0) font2:SetShadowOffset(0, 0) font3:SetShadowOffset(0, 0) end end function DBM:AddWarning(text, force) local added = false if not frame.font1ticker then font1elapsed = 0 font1.lastUpdate = GetTime() font1:SetText(text) font1:Show() font1u:Show() added = true frame.font1ticker = frame.font1ticker or AceTimer:ScheduleRepeatingTimer(fontHide1, 0.05) elseif not frame.font2ticker then font2elapsed = 0 font2.lastUpdate = GetTime() font2:SetText(text) font2:Show() font2u:Show() added = true frame.font2ticker = frame.font2ticker or AceTimer:ScheduleRepeatingTimer(fontHide2, 0.05) elseif not frame.font3ticker or force then font3elapsed = 0 font3.lastUpdate = GetTime() font3:SetText(text) font3:Show() font3u:Show() fontHide3() added = true frame.font3ticker = frame.font3ticker or AceTimer:ScheduleRepeatingTimer(fontHide3, 0.05) end if not added then local prevText1 = font2:GetText() local prevText2 = font3:GetText() font1:SetText(prevText1) font1elapsed = font2elapsed font2:SetText(prevText2) font2elapsed = font3elapsed self:AddWarning(text, true) end end do local anchorFrame local function moveEnd(self) anchorFrame:Hide() if anchorFrame.ticker then AceTimer:CancelTimer(anchorFrame.ticker) anchorFrame.ticker = nil end font1elapsed = self.Options.WarningDuration2 font2elapsed = self.Options.WarningDuration2 font3elapsed = self.Options.WarningDuration2 frame:SetFrameStrata("HIGH") self:Unschedule(moveEnd) DBT:CancelBar(L.MOVE_WARNING_BAR) end function DBM:MoveWarning() if not anchorFrame then anchorFrame = CreateFrame("Frame", nil, frame) anchorFrame:SetWidth(32) anchorFrame:SetHeight(32) anchorFrame:EnableMouse(true) anchorFrame:SetPoint("TOP", frame, "TOP", 0, 32) anchorFrame:RegisterForDrag("LeftButton") anchorFrame:SetClampedToScreen() anchorFrame:Hide() local texture = anchorFrame:CreateTexture() texture:SetTexture("Interface\\Addons\\DBM-Core\\textures\\dot.blp") texture:SetPoint("CENTER", anchorFrame, "CENTER", 0, 0) texture:SetWidth(32) texture:SetHeight(32) anchorFrame:SetScript("OnDragStart", function() frame:StartMoving() self:Unschedule(moveEnd) DBT:CancelBar(L.MOVE_WARNING_BAR) end) anchorFrame:SetScript("OnDragStop", function() frame:StopMovingOrSizing() local point, _, _, xOfs, yOfs = frame:GetPoint(1) self.Options.WarningPoint = point self.Options.WarningX = xOfs self.Options.WarningY = yOfs self:Schedule(15, moveEnd, self) DBT:CreateBar(15, L.MOVE_WARNING_BAR, "Interface\\Icons\\Spell_Holy_BorrowedTime") end) end if anchorFrame:IsShown() then moveEnd(self) else anchorFrame:Show() anchorFrame.ticker = anchorFrame.ticker or AceTimer:ScheduleRepeatingTimer(function() self:AddWarning(L.MOVE_WARNING_MESSAGE) end, 5) self:AddWarning(L.MOVE_WARNING_MESSAGE) self:Schedule(15, moveEnd, self) DBT:CreateBar(15, L.MOVE_WARNING_BAR, "Interface\\Icons\\Spell_Holy_BorrowedTime") frame:Show() frame:SetFrameStrata("TOOLTIP") frame:SetAlpha(1) end end end local textureCode = " |T%s:12:12|t " local textureExp = " |T(%S+......%S+):12:12|t "--Fix texture file including blank not strips(example: Interface\\Icons\\Spell_Frost_Ring of Frost). But this have limitations. Since I'm poor at regular expressions, this is not good fix. Do you have another good regular expression, tandanu? local announcePrototype = {} local mt = {__index = announcePrototype} -- TODO: is there a good reason that this is a weak table? local cachedColorFunctions = setmetatable({}, {__mode = "kv"}) local function setText(announceType, spellId, castTime, preWarnTime, customName, originalSpellID) local spellName if customName then spellName = customName else spellName = (spellId or 0) >= 6 and DBM:GetSpellInfo(spellId) or CL.UNKNOWN end local text if announceType == "cast" then local spellHaste = select(7, DBM:GetSpellInfo(53142)) / 10000 -- 53142 = Dalaran Portal, should have 10000 ms cast time local timer = (select(7, DBM:GetSpellInfo(originalSpellID or spellId)) or 1000) / spellHaste text = L.AUTO_ANNOUNCE_TEXTS[announceType]:format(spellName, castTime or (timer / 1000)) elseif announceType == "prewarn" then if type(preWarnTime) == "string" then text = L.AUTO_ANNOUNCE_TEXTS[announceType]:format(spellName, preWarnTime) else text = L.AUTO_ANNOUNCE_TEXTS[announceType]:format(spellName, L.SEC_FMT:format(tostring(preWarnTime or 5))) end elseif announceType == "stage" or announceType == "prestage" then text = L.AUTO_ANNOUNCE_TEXTS[announceType]:format(tostring(spellId)) elseif announceType == "stagechange" then text = L.AUTO_ANNOUNCE_TEXTS.spell else text = L.AUTO_ANNOUNCE_TEXTS[announceType]:format(spellName) end return text, spellName end function announcePrototype:SetText(customName) local text, spellName = setText(self.announceType, self.spellId, self.castTime, self.preWarnTime, customName) self.text = text self.spellName = spellName end -- TODO: this function is an abomination, it needs to be rewritten. Also: check if these work-arounds are still necessary function announcePrototype:Show(...) -- todo: reduce amount of unneeded strings if not self.option or self.mod.Options[self.option] then if DBM.Options.DontShowBossAnnounces then return end -- don't show the announces if the spam filter option is set if DBM.Options.DontShowTargetAnnouncements and (self.announceType == "target" or self.announceType == "targetdistance" or self.announceType == "targetcount" or self.announceType == "targetcountdistance") and not self.noFilter then return end--don't show announces that are generic target announces local argTable = {...} local colorCode = ("|cff%.2x%.2x%.2x"):format(self.color.r * 255, self.color.g * 255, self.color.b * 255) if #self.combinedtext > 0 then --Throttle spam. if DBM.Options.WarningAlphabetical then tsort(self.combinedtext) end local combinedText = tconcat(self.combinedtext, "<, >") if self.combinedcount == 1 then combinedText = combinedText.." "..L.GENERIC_WARNING_OTHERS elseif self.combinedcount > 1 then combinedText = combinedText.." "..L.GENERIC_WARNING_OTHERS2:format(self.combinedcount) end --Process for i = 1, #argTable do if type(argTable[i]) == "string" then argTable[i] = combinedText end end end local message = pformat(self.text, unpack(argTable)) local text = ("%s%s%s|r%s"):format( (DBM.Options.WarningIconLeft and self.icon and textureCode:format(self.icon)) or "", colorCode, message, (DBM.Options.WarningIconRight and self.icon and textureCode:format(self.icon)) or "" ) self.combinedcount = 0 self.combinedtext = {} if not cachedColorFunctions[self.color] then local color = self.color -- upvalue for the function to colorize names, accessing self in the colorize closure is not safe as the color of the announce object might change (it would also prevent the announce from being garbage-collected but announce objects are never destroyed) cachedColorFunctions[color] = function(cap) cap = cap:sub(2, -2) local noStrip = cap:match("noStrip ") if not noStrip then local name = cap local playerClass, playerIcon = DBM:GetRaidClass(name) if playerClass ~= "UNKNOWN" then cap = DBM:GetShortServerName(cap)--Only run realm strip function if class color was valid (IE it's an actual playername) end local playerColor = RAID_CLASS_COLORS[playerClass] or color if playerColor then if playerIcon > 0 and playerIcon <= 8 then cap = ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t"):format(playerIcon) .. ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, cap, color.r * 255, color.g * 255, color.b * 255) else cap = ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, cap, color.r * 255, color.g * 255, color.b * 255) end end else cap = cap:sub(9) end return cap end end text = text:gsub(">.-<", cachedColorFunctions[self.color]) DBM:AddWarning(text) if DBM.Options.ShowWarningsInChat then if not DBM.Options.WarningIconChat then text = text:gsub(textureExp, "") -- textures @ chat frame can (and will) distort the font if using certain combinations of UI scale, resolution and font size TODO: is this still true as of cataclysm? end if DBM.Options.ShowFakedRaidWarnings then for i = 1, select("#", GetFramesRegisteredForEvent("CHAT_MSG_RAID_WARNING")) do local frame = select(i, GetFramesRegisteredForEvent("CHAT_MSG_RAID_WARNING")) if frame ~= RaidWarningFrame and frame:GetScript("OnEvent") then frame:GetScript("OnEvent")(frame, "CHAT_MSG_RAID_WARNING", text, playerName, GetDefaultLanguage("player"), "", playerName, "", 0, 0, "", 0, 99, "") end end else self.mod:AddMsg(text, nil) end end --Message: Full message text --Icon: Texture path/id for icon --Type: Announce type ----Types: you, target, targetsource, spell, ends, endtarget, fades, adds, count, stack, cast, soon, sooncount, prewarn, bait, stage, stagechange, prestage, moveto ------Personal/Role (Applies to you, or your job): you, stack, bait, moveto, fades ------General Target Messages (informative, doesn't usually apply to you): target, targetsource ------Fight Changes (Stages, adds, boss buff/debuff, etc): stage, stagechange, prestage, adds, ends, endtarget ------General (can really apply to anything): spell, count, soon, sooncount, prewarn --SpellId: Raw spell or encounter journal Id if available. --Mod ID: Encounter ID as string, or a generic string for mods that don't have encounter ID (such as trash, dummy/test mods) --boolean: Whether or not this warning is a special warning (higher priority). fireEvent("DBM_Announce", message, self.icon, self.type, self.spellId, self.mod.id, false) if self.sound > 0 then--0 means muted, 1 means no voice pack support, 2 means voice pack version/support if self.sound > 1 and DBM.Options.ChosenVoicePack2 ~= "None" and DBM.Options.VPReplacesAnnounce and not voiceSessionDisabled and not DBM.Options.VPDontMuteSounds and self.sound <= SWFilterDisabled then return end if not self.option or self.mod.Options[self.option.."SWSound"] ~= "None" then DBM:PlaySoundFile(DBM.Options.RaidWarningSound, nil, true)--Validate true end end else self.combinedcount = 0 self.combinedtext = {} end end function announcePrototype:CombinedShow(delay, ...) if self.option and not self.mod.Options[self.option] then return end if DBM.Options.DontShowBossAnnounces then return end -- don't show the announces if the spam filter option is set if DBM.Options.DontShowTargetAnnouncements and (self.announceType == "target" or self.announceType == "targetdistance" or self.announceType == "targetcount" or self.announceType == "targetcountdistance") and not self.noFilter then return end--don't show announces that are generic target announces local argTable = {...} for i = 1, #argTable do if type(argTable[i]) == "string" then if #self.combinedtext < 8 then--Throttle spam. We may not need more than 9 targets.. if not checkEntry(self.combinedtext, argTable[i]) then self.combinedtext[#self.combinedtext + 1] = argTable[i] end else self.combinedcount = self.combinedcount + 1 end end end DBMScheduler:Unschedule(self.Show, self.mod, self) DBMScheduler:Schedule(delay or 0.5, self.Show, self.mod, self, ...) end function announcePrototype:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Show, self.mod, self, ...) end function announcePrototype:Countdown(time, numAnnounces, ...) DBMScheduler:ScheduleCountdown(time, numAnnounces, self.Show, self.mod, self, ...) end function announcePrototype:Cancel(...) return DBMScheduler:Unschedule(self.Show, self.mod, self, ...) end function announcePrototype:Play(name, customPath) local voice = DBM.Options.ChosenVoicePack2 if voiceSessionDisabled or voice == "None" or not DBM.Options.VPReplacesAnnounce then return end local always = DBM.Options.AlwaysPlayVoice if DBM.Options.DontShowTargetAnnouncements and (self.announceType == "target" or self.announceType == "targetdistance" or self.announceType == "targetcount" or self.announceType == "targetcountdistance") and not self.noFilter and not always then return end--don't show announces that are generic target announces if (not DBM.Options.DontShowBossAnnounces and (not self.option or self.mod.Options[self.option]) or always) and self.sound <= SWFilterDisabled then --Filter tank specific voice alerts for non tanks if tank filter enabled --But still allow AlwaysPlayVoice to play as well. if (name == "changemt" or name == "tauntboss") and DBM.Options.FilterTankSpec and not self.mod:IsTank() and not always then return end local path = customPath or "Interface\\AddOns\\DBM-VP"..voice.."\\"..name..".ogg" DBM:PlaySoundFile(path) end end function announcePrototype:ScheduleVoice(t, ...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not DBM.Options.VPReplacesAnnounce then return end DBMScheduler:Unschedule(self.Play, self.mod, self)--Allow ScheduleVoice to be used in same way as CombinedShow return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end --Object Permits scheduling voice multiple times for same object function announcePrototype:ScheduleVoiceOverLap(t, ...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not DBM.Options.VPReplacesAnnounce then return end return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function announcePrototype:CancelVoice(...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not DBM.Options.VPReplacesAnnounce then return end return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end -- old constructor (no auto-localize) function bossModPrototype:NewAnnounce(text, color, icon, optionDefault, optionName, soundOption, spellID) if not text then error("NewAnnounce: you must provide announce text", 2) return end if type(text) == "number" then DBM:Debug("|cffff0000NewAnnounce: Non auto localized text cannot be numbers, fix this for |r"..text) end if type(optionName) == "number" then DBM:Debug("|cffff0000NewAnnounce: Non auto localized optionNames cannot be numbers, fix this for |r"..text) optionName = nil end if soundOption and type(soundOption) == "boolean" then soundOption = 0--No Sound end local obj = setmetatable( { text = self.localization.warnings[text], combinedtext = {}, combinedcount = 0, color = DBM.Options.WarningColors[color or 1] or DBM.Options.WarningColors[1], sound = soundOption or 1, mod = self, icon = (type(icon) == "number" and ( icon <=8 and (iconFolder .. icon) or select(3, GetSpellInfo(icon)))) or icon or "Interface\\Icons\\Spell_Nature_WispSplode", }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "announce", nil, nil, nil, spellID) elseif optionName ~= false then obj.option = text self:AddBoolOption(obj.option, optionDefault, "announce", nil, nil, nil, spellID) end tinsert(self.announces, obj) return obj end -- new constructor (partially auto-localized warnings and options, yay!) local function newAnnounce(self, announceType, spellId, color, icon, optionDefault, optionName, castTime, preWarnTime, soundOption, noFilter) if not spellId then error("newAnnounce: you must provide spellId", 2) return end local optionVersion, alternateSpellId if type(optionName) == "number" then if optionName > 10 then--Being used as spell name shortening if DBM.Options.WarningShortText then alternateSpellId = optionName end else--Being used as option version optionVersion = optionName end optionName = nil end if soundOption and type(soundOption) == "boolean" then soundOption = 0--No Sound end local text, spellName = setText(announceType, alternateSpellId or spellId, castTime, preWarnTime, nil, spellId) icon = icon or spellId local obj = setmetatable( -- todo: fix duplicate code { text = text, combinedtext = {}, combinedcount = 0, announceType = announceType, color = DBM.Options.WarningColors[color or 1] or DBM.Options.WarningColors[1], mod = self, icon = (type(icon) == "number" and (icon <=8 and (iconFolder .. icon) or select(3, GetSpellInfo(icon)))) or icon or "Interface\\Icons\\Spell_Nature_WispSplode", sound = soundOption or 1, type = announceType, spellId = spellId, spellName = spellName, noFilter = noFilter, castTime = castTime, preWarnTime = preWarnTime, }, mt ) local catType = "announce"--Default to General announce if not self.NoSortAnnounce then--ALL announce objects will be assigned "announce", usually for mods that sort by phase instead --Change if Personal or Other if announceType == "target" or self.announceType == "targetdistance" or announceType == "targetcount" or self.announceType == "targetcountdistance" or announceType == "stack" then catType = "announceother" end end if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, catType, nil, nil, nil, spellId, announceType) elseif optionName ~= false then obj.option = catType..spellId..announceType..(optionVersion or "") self:AddBoolOption(obj.option, optionDefault, catType, nil, nil, nil, spellId, announceType) if noFilter and announceType == "target" then self.localization.options[obj.option] = L.AUTO_ANNOUNCE_OPTIONS["targetNF"]:format(spellId) else self.localization.options[obj.option] = L.AUTO_ANNOUNCE_OPTIONS[announceType]:format(spellId) end end tinsert(self.announces, obj) return obj end function bossModPrototype:NewYouAnnounce(spellId, color, ...) return newAnnounce(self, "you", spellId, color or 1, ...) end function bossModPrototype:NewTargetNoFilterAnnounce(spellId, color, icon, optionDefault, optionName, castTime, preWarnTime, soundOption) -- spellId, color, icon, optionDefault, optionName, castTime, preWarnTime, soundOption, noFilter return newAnnounce(self, "target", spellId, color or 3, icon, optionDefault, optionName, castTime, preWarnTime, soundOption, true) end function bossModPrototype:NewTargetAnnounce(spellId, color, ...) return newAnnounce(self, "target", spellId, color or 3, ...) end function bossModPrototype:NewTargetDistanceAnnounce(spellId, color, ...) return newAnnounce(self, "targetdistance", spellId, color or 3, ...) end function bossModPrototype:NewTargetSourceAnnounce(spellId, color, ...) return newAnnounce(self, "targetsource", spellId, color or 3, ...) end function bossModPrototype:NewTargetCountAnnounce(spellId, color, ...) return newAnnounce(self, "targetcount", spellId, color or 3, ...) end function bossModPrototype:NewTargetCountDistanceAnnounce(spellId, color, ...) return newAnnounce(self, "targetcountdistance", spellId, color or 3, ...) end function bossModPrototype:NewSpellAnnounce(spellId, color, ...) return newAnnounce(self, "spell", spellId, color or 2, ...) end function bossModPrototype:NewIncomingAnnounce(spellId, color, ...) return newAnnounce(self, "incoming", spellId, color or 2, ...) end function bossModPrototype:NewIncomingCountAnnounce(spellId, color, ...) return newAnnounce(self, "incomingcount", spellId, color or 2, ...) end function bossModPrototype:NewEndAnnounce(spellId, color, ...) return newAnnounce(self, "ends", spellId, color or 2, ...) end function bossModPrototype:NewEndTargetAnnounce(spellId, color, ...) return newAnnounce(self, "endtarget", spellId, color or 2, ...) end function bossModPrototype:NewFadesAnnounce(spellId, color, ...) return newAnnounce(self, "fades", spellId, color or 2, ...) end function bossModPrototype:NewAddsLeftAnnounce(spellId, color, ...) return newAnnounce(self, "addsleft", spellId, color or 3, ...) end function bossModPrototype:NewCountAnnounce(spellId, color, ...) return newAnnounce(self, "count", spellId, color or 2, ...) end function bossModPrototype:NewStackAnnounce(spellId, color, ...) return newAnnounce(self, "stack", spellId, color or 2, ...) end function bossModPrototype:NewCastAnnounce(spellId, color, castTime, icon, optionDefault, optionName, _, soundOption) -- spellId, color, castTime, icon, optionDefault, optionName, noArg, soundOption return newAnnounce(self, "cast", spellId, color or 3, icon, optionDefault, optionName, castTime, nil, soundOption) end function bossModPrototype:NewSoonAnnounce(spellId, color, ...) return newAnnounce(self, "soon", spellId, color or 2, ...) end function bossModPrototype:NewSoonCountAnnounce(spellId, color, ...) return newAnnounce(self, "sooncount", spellId, color or 2, ...) end --This object disables sounds, it's almost always used in combation with a countdown timer. Even if not a countdown, its a text only spam not a sound spam function bossModPrototype:NewCountdownAnnounce(spellId, color, icon, optionDefault, optionName, castTime, preWarnTime, _, noFilter) -- spellId, color, icon, optionDefault, optionName, castTime, preWarnTime, soundOption, noFilter return newAnnounce(self, "countdown", spellId, color or 4, icon, optionDefault, optionName, castTime, preWarnTime, 0, noFilter) end function bossModPrototype:NewPreWarnAnnounce(spellId, time, color, icon, optionDefault, optionName, _, soundOption) -- spellId, time, color, icon, optionDefault, optionName, noArg, soundOption return newAnnounce(self, "prewarn", spellId, color or 2, icon, optionDefault, optionName, nil, time, soundOption) end function bossModPrototype:NewBaitAnnounce(spellId, color, ...) return newAnnounce(self, "bait", spellId, color or 3, ...) end function bossModPrototype:NewPhaseAnnounce(stage, color, icon, ...) return newAnnounce(self, "stage", stage, color or 2, icon or "Interface\\Icons\\Spell_Shadow_ShadesOfDarkness", ...) end function bossModPrototype:NewPhaseChangeAnnounce(color, icon, ...) return newAnnounce(self, "stagechange", 0, color or 2, icon or "Interface\\Icons\\Spell_Nature_WispSplode", ...) end function bossModPrototype:NewPrePhaseAnnounce(stage, color, icon, ...) return newAnnounce(self, "prestage", stage, color or 2, icon or "Interface\\Icons\\Spell_Nature_WispSplode", ...) end function bossModPrototype:NewMoveToAnnounce(spellId, color, ...) return newAnnounce(self, "moveto", spellId, color or 3, ...) end end -------------------- -- Sound Object -- -------------------- do local soundPrototype = {} local mt = { __index = soundPrototype } function bossModPrototype:NewSound(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT:format(spellId) end return obj end bossModPrototype.NewRunAwaySound = bossModPrototype.NewSound function soundPrototype:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Sound\\Creature\\HoodWolf\\HoodWolfTransformPlayer01.wav", "Master") end end function soundPrototype:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototype:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end do local soundPrototype5 = {} local mt = { __index = soundPrototype5 } function bossModPrototype:NewSound5(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId.."in5" self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT5:format(spellId) end return obj end function soundPrototype5:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Interface\\AddOns\\DBM-Core\\sounds\\5to1.mp3", "Master") end end function soundPrototype5:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototype5:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end do local soundPrototype3 = {} local mt = { __index = soundPrototype3 } function bossModPrototype:NewSound3(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId.."in3" self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT3:format(spellId) end return obj end function soundPrototype3:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Interface\\AddOns\\DBM-Core\\sounds\\3to1.mp3", "Master") end end function soundPrototype3:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototype3:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end do local soundPrototypeYou = {} local mt = { __index = soundPrototypeYou } function bossModPrototype:NewSoundYou(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId.."you" self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT_YOU:format(spellId) end return obj end function soundPrototypeYou:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Sound\\Creature\\HoodWolf\\HoodWolfTransformPlayer01.wav", "Master") end end function soundPrototypeYou:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototypeYou:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end do local soundPrototypeSoon = {} local mt = { __index = soundPrototypeSoon } function bossModPrototype:NewSoundSoon(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId.."soon" self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT_SOON:format(spellId) end return obj end function soundPrototypeSoon:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Sound\\Creature\\HoodWolf\\HoodWolfTransformPlayer01.wav", "Master") end end function soundPrototypeSoon:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototypeSoon:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end do local soundPrototypeClose = {} local mt = { __index = soundPrototypeClose } function bossModPrototype:NewSoundClose(spellId, optionName, optionDefault) self.numSounds = self.numSounds and self.numSounds + 1 or 1 local obj = setmetatable( { mod = self, }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) elseif optionName ~= false then obj.option = "Sound"..spellId.."close" self:AddBoolOption(obj.option, optionDefault, "sound", nil, nil, nil, spellId) self.localization.options[obj.option] = L.AUTO_SOUND_OPTION_TEXT_CLOSE:format(spellId) end return obj end function soundPrototypeClose:Play(file) if not self.option or self.mod.Options[self.option] then PlaySoundFile(file or "Sound\\Creature\\HoodWolf\\HoodWolfTransformPlayer01.wav", "Master") end end function soundPrototypeClose:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function soundPrototypeClose:Cancel(...) return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end end -------------------- -- Yell Object -- -------------------- do local demonForm = GetSpellInfo(47241) local yellPrototype = {} local mt = { __index = yellPrototype } local function newYell(self, yellType, spellId, yellText, optionDefault, optionName, chatType) if not spellId and not yellText then error("NewYell: you must provide either spellId or yellText", 2) return end local optionVersion if type(optionName) == "number" then optionVersion = optionName optionName = nil end local displayText if not yellText then displayText = L.AUTO_YELL_ANNOUNCE_TEXT[yellType]:format(DBM:GetSpellInfo(spellId) or CL.UNKNOWN) end --Passed spellid as yellText. --Auto localize spelltext using yellText instead if yellText and type(yellText) == "number" then displayText = L.AUTO_YELL_ANNOUNCE_TEXT[yellType]:format(DBM:GetSpellInfo(yellText) or CL.UNKNOWN) end local obj = setmetatable( { spellId = spellId, text = displayText or yellText, mod = self, chatType = chatType, yellType = yellType }, mt ) if optionName then obj.option = optionName self:AddBoolOption(obj.option, optionDefault, "yell", nil, nil, nil, spellId, yellType) elseif optionName ~= false then obj.option = "Yell"..(spellId or yellText)..(yellType ~= "yell" and yellType or "")..(optionVersion or "") self:AddBoolOption(obj.option, optionDefault, "yell", nil, nil, nil, spellId, yellType) self.localization.options[obj.option] = L.AUTO_YELL_OPTION_TEXT[yellType]:format(spellId) end return obj end --Standard "Yell" object that will use SAY/YELL based on what's defined in the object (Defaulting to SAY if nil) --I realize object being :Yell is counter intuitive to default being "SAY" but for many years the default was YELL and it's too many years of mods to change now function yellPrototype:Yell(...) if DBM.Options.DontSendYells or private.chatBubblesDisabled or self.yellType and self.yellType == "position" and DBM:UnitBuff("player", demonForm) and DBM.Options.FilterVoidFormSay then return end if not self.option or self.mod.Options[self.option] then if self.yellType == "combo" then SendChatMessage(pformat(self.text, ...), self.chatType or "YELL") else SendChatMessage(pformat(self.text, ...), self.chatType or "SAY") end end end yellPrototype.Show = yellPrototype.Yell --Force override to use say message, even when object defines "YELL" function yellPrototype:Say(...) if DBM.Options.DontSendYells or private.chatBubblesDisabled or self.yellType and self.yellType == "position" and DBM:UnitBuff("player", demonForm) and DBM.Options.FilterVoidFormSay then return end if not self.option or self.mod.Options[self.option] then SendChatMessage(pformat(self.text, ...), "SAY") end end function yellPrototype:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Yell, self.mod, self, ...) end --Standard schedule object to schedule a say/yell based on what's defined in object function yellPrototype:Countdown(time, numAnnounces, ...) if time > 60 then--It's a spellID not a time local _, _, _, _, _, _, expireTime = DBM:UnitDebuff("player", time) if expireTime then local remaining = expireTime-GetTime() DBMScheduler:ScheduleCountdown(remaining, numAnnounces, self.Yell, self.mod, self, ...) end else DBMScheduler:ScheduleCountdown(time, numAnnounces, self.Yell, self.mod, self, ...) end end --Scheduled Force override to use SAY message, even when object defines "YELL" function yellPrototype:CountdownSay(time, numAnnounces, ...) if time > 60 then--It's a spellID not a time local _, _, _, _, _, _, expireTime = DBM:UnitDebuff("player", time) if expireTime then local remaining = expireTime-GetTime() DBMScheduler:ScheduleCountdown(remaining, numAnnounces, self.Say, self.mod, self, ...) end else DBMScheduler:ScheduleCountdown(time, numAnnounces, self.Say, self.mod, self, ...) end end function yellPrototype:Cancel(...) return DBMScheduler:Unschedule(self.Yell, self.mod, self, ...) end function bossModPrototype:NewYell(...) return newYell(self, "yell", ...) end function bossModPrototype:NewYellMe(...) return newYell(self, "yellme", ...) end function bossModPrototype:NewShortYell(...) return newYell(self, "shortyell", ...) end function bossModPrototype:NewCountYell(...) return newYell(self, "count", ...) end function bossModPrototype:NewFadesYell(...) return newYell(self, "fade", ...) end function bossModPrototype:NewShortFadesYell(...) return newYell(self, "shortfade", ...) end function bossModPrototype:NewIconFadesYell(...) return newYell(self, "iconfade", ...) end function bossModPrototype:NewPosYell(...) return newYell(self, "position", ...) end function bossModPrototype:NewShortPosYell(...) return newYell(self, "shortposition", ...) end function bossModPrototype:NewComboYell(...) return newYell(self, "combo", ...) end function bossModPrototype:NewPlayerRepeatYell(...) return newYell(self, "repeatplayer", ...) end function bossModPrototype:NewIconRepeatYell(...) return newYell(self, "repeaticon", ...) end end ------------------------------ -- Special Warning Object -- ------------------------------ do local frame = CreateFrame("Frame", "DBMSpecialWarning", UIParent) local font1 = frame:CreateFontString("DBMSpecialWarning1", "OVERLAY", "ZoneTextFont") font1:SetWidth(1024) font1:SetHeight(0) font1:SetPoint("TOP", 0, 0) local font2 = frame:CreateFontString("DBMSpecialWarning2", "OVERLAY", "ZoneTextFont") font2:SetWidth(1024) font2:SetHeight(0) font2:SetPoint("TOP", font1, "BOTTOM", 0, 0) frame:SetMovable(1) frame:SetWidth(1) frame:SetHeight(1) frame:SetFrameStrata("HIGH") frame:SetClampedToScreen() frame:SetPoint("CENTER", UIParent, "CENTER", 0, 0) local font1elapsed, font2elapsed, moving local function fontHide1() local duration = DBM.Options.SpecialWarningDuration2 if font1elapsed > duration * 1.3 then font1:Hide() if frame.font1ticker then AceTimer:CancelTimer(frame.font1ticker) frame.font1ticker = nil end elseif font1elapsed > duration then font1elapsed = font1elapsed + 0.05 local alpha = 1 - (font1elapsed - duration) / (duration * 0.3) font1:SetAlpha(alpha > 0 and alpha or 0) else font1elapsed = font1elapsed + 0.05 font1:SetAlpha(1) end end local function fontHide2() local duration = DBM.Options.SpecialWarningDuration2 if font2elapsed > duration * 1.3 then font2:Hide() if frame.font2ticker then AceTimer:CancelTimer(frame.font2ticker) frame.font2ticker = nil end elseif font2elapsed > duration then font2elapsed = font2elapsed + 0.05 local alpha = 1 - (font2elapsed - duration) / (duration * 0.3) font2:SetAlpha(alpha > 0 and alpha or 0) else font2elapsed = font2elapsed + 0.05 font2:SetAlpha(1) end end function DBM:UpdateSpecialWarningOptions() frame:ClearAllPoints() local font = self.Options.SpecialWarningFont == "standardFont" and standardFont or self.Options.SpecialWarningFont frame:SetPoint(self.Options.SpecialWarningPoint, UIParent, self.Options.SpecialWarningPoint, self.Options.SpecialWarningX, self.Options.SpecialWarningY) font1:SetFont(font, self.Options.SpecialWarningFontSize2, self.Options.SpecialWarningFontStyle == "None" and nil or self.Options.SpecialWarningFontStyle) font2:SetFont(font, self.Options.SpecialWarningFontSize2, self.Options.SpecialWarningFontStyle == "None" and nil or self.Options.SpecialWarningFontStyle) font1:SetTextColor(unpack(self.Options.SpecialWarningFontCol)) font2:SetTextColor(unpack(self.Options.SpecialWarningFontCol)) if self.Options.SpecialWarningFontShadow then font1:SetShadowOffset(1, -1) font2:SetShadowOffset(1, -1) else font1:SetShadowOffset(0, 0) font2:SetShadowOffset(0, 0) end end function DBM:AddSpecialWarning(text, force) local added = false if not frame.font1ticker then font1elapsed = 0 font1.lastUpdate = GetTime() font1:SetText(text) font1:Show() added = true frame.font1ticker = frame.font1ticker or AceTimer:ScheduleRepeatingTimer(fontHide1, 0.05) elseif not frame.font2ticker or force then font2elapsed = 0 font2.lastUpdate = GetTime() font2:SetText(text) font2:Show() added = true frame.font2ticker = frame.font2ticker or AceTimer:ScheduleRepeatingTimer(fontHide2, 0.05) end if not added then local prevText1 = font2:GetText() font1:SetText(prevText1) font1elapsed = font2elapsed self:AddSpecialWarning(text, true) end end do local anchorFrame local function moveEnd(self) moving = false anchorFrame:Hide() font1elapsed = self.Options.SpecialWarningDuration2 font2elapsed = self.Options.SpecialWarningDuration2 frame:SetFrameStrata("HIGH") self:Unschedule(moveEnd) DBT:CancelBar(L.MOVE_SPECIAL_WARNING_BAR) end function DBM:MoveSpecialWarning() if not anchorFrame then anchorFrame = CreateFrame("Frame", nil, frame) anchorFrame:SetWidth(32) anchorFrame:SetHeight(32) anchorFrame:EnableMouse(true) anchorFrame:SetPoint("TOP", frame, "TOP", 0, 32) anchorFrame:RegisterForDrag("LeftButton") anchorFrame:SetClampedToScreen() anchorFrame:Hide() local texture = anchorFrame:CreateTexture() texture:SetTexture("Interface\\Addons\\DBM-Core\\textures\\dot.blp") texture:SetPoint("CENTER", anchorFrame, "CENTER", 0, 0) texture:SetWidth(32) texture:SetHeight(32) anchorFrame:SetScript("OnDragStart", function() frame:StartMoving() self:Unschedule(moveEnd) DBT:CancelBar(L.MOVE_SPECIAL_WARNING_BAR) end) anchorFrame:SetScript("OnDragStop", function() frame:StopMovingOrSizing() local point, _, _, xOfs, yOfs = frame:GetPoint(1) self.Options.SpecialWarningPoint = point self.Options.SpecialWarningX = xOfs self.Options.SpecialWarningY = yOfs self:Schedule(15, moveEnd, self) DBT:CreateBar(15, L.MOVE_SPECIAL_WARNING_BAR, "Interface\\Icons\\Spell_Holy_BorrowedTime") end) end if anchorFrame:IsShown() then moveEnd(self) else moving = true anchorFrame:Show() self:AddSpecialWarning(L.MOVE_SPECIAL_WARNING_TEXT) self:AddSpecialWarning(L.MOVE_SPECIAL_WARNING_TEXT) self:Schedule(15, moveEnd, self) DBT:CreateBar(15, L.MOVE_SPECIAL_WARNING_BAR, "Interface\\Icons\\Spell_Holy_BorrowedTime") frame:Show() frame:SetFrameStrata("TOOLTIP") frame:SetAlpha(1) end end end local specialWarningPrototype = {} local mt = {__index = specialWarningPrototype} local function classColoringFunction(cap) cap = cap:sub(2, -2) local noStrip = cap:match("noStrip ") if not noStrip then local name = cap local playerClass, playerIcon = DBM:GetRaidClass(name) if playerClass ~= "UNKNOWN" then cap = DBM:GetShortServerName(cap)--Only run strip code on valid player classes if DBM.Options.SWarnClassColor then local playerColor = RAID_CLASS_COLORS[playerClass] if playerColor then if playerIcon > 0 and playerIcon <= 8 then cap = ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t"):format(playerIcon) .. ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, cap, DBM.Options.SpecialWarningFontCol[1] * 255, DBM.Options.SpecialWarningFontCol[2] * 255, DBM.Options.SpecialWarningFontCol[3] * 255) else cap = ("|r|cff%.2x%.2x%.2x%s|r|cff%.2x%.2x%.2x"):format(playerColor.r * 255, playerColor.g * 255, playerColor.b * 255, cap, DBM.Options.SpecialWarningFontCol[1] * 255, DBM.Options.SpecialWarningFontCol[2] * 255, DBM.Options.SpecialWarningFontCol[3] * 255) end end end end else cap = cap:sub(9) end return cap end local textureCode = " |T%s:12:12|t " local specInstructionalRemapTable = { ["dispel"] = "target", ["interrupt"] = "spell", ["interruptcount"] = "count", ["defensive"] = "spell", ["taunt"] = "target", ["soak"] = "spell", ["soakcount"] = "count", ["soakpos"] = "spell", ["switch"] = "spell", ["switchcount"] = "count", -- ["adds"] = "spell", -- ["addscount"] = "spell", -- ["addscustom"] = "spell", ["targetchange"] = "target", ["gtfo"] = "spell", ["bait"] = "soon", ["youpos"] = "you", ["youposcount"] = "youcount", ["move"] = "spell", ["keepmove"] = "spell", ["stopmove"] = "spell", ["dodge"] = "spell", ["dodgecount"] = "count", ["dodgeloc"] = "spell", ["moveaway"] = "spell", ["moveawaycount"] = "count", ["moveto"] = "spell", ["jump"] = "spell", ["run"] = "spell", ["runcount"] = "spell", ["cast"] = "spell", ["lookaway"] = "spell", ["reflect"] = "target", } local function setText(announceType, spellId, stacks, customName) local text, spellName if customName then spellName = customName else spellName = (spellId or 0) >= 6 and DBM:GetSpellInfo(spellId) or CL.UNKNOWN end if announceType == "prewarn" then if type(stacks) == "string" then text = L.AUTO_SPEC_WARN_TEXTS[announceType]:format(spellName, stacks) else text = L.AUTO_SPEC_WARN_TEXTS[announceType]:format(spellName, L.SEC_FMT:format(tostring(stacks or 5))) end else if DBM.Options.SpamSpecInformationalOnly and specInstructionalRemapTable[announceType] then local newType = specInstructionalRemapTable[announceType] text = L.AUTO_SPEC_WARN_TEXTS[newType]:format(spellName) else text = L.AUTO_SPEC_WARN_TEXTS[announceType]:format(spellName) end end return text, spellName end function specialWarningPrototype:SetText(customName) local text, spellName = setText(self.announceType, self.spellId, self.stacks, customName) self.text = text self.spellName = spellName end local function canVoiceReplace(self, soundId) soundId = soundId or self.option and self.mod.Options[self.option .. "SWSound"] or self.flash local isVoicePackUsed if self.announceType == "gtfo" then isVoicePackUsed = DBM.Options.VPReplacesGTFO elseif type(soundId) == "number" then isVoicePackUsed = DBM.Options["VPReplacesSA"..soundId] else isVoicePackUsed = DBM.Options.VPReplacesCustom end return isVoicePackUsed end local specTypeFilterTable = { ["dispel"] = "dispel", ["interrupt"] = "interrupt", ["interruptcount"] = "interrupt", ["defensive"] = "defensive", ["taunt"] = "taunt", ["soak"] = "soak", ["soakcount"] = "soak", ["soakpos"] = "soak", ["stack"] = "stack", ["switch"] = "switch", ["switchcount"] = "switch", ["adds"] = "switch", ["addscount"] = "switch", ["addscustom"] = "switch", ["targetchange"] = "switch", ["gtfo"] = "gtfo", } function specialWarningPrototype:Show(...) --Check if option for this warning is even enabled if (not self.option or self.mod.Options[self.option]) and not moving and frame then --Now, check if all special warning filters are enabled to save cpu and abort immediately if true. if DBM.Options.DontPlaySpecialWarningSound and DBM.Options.DontShowSpecialWarningFlash and DBM.Options.DontShowSpecialWarningText then return end --Next, we check if trash mod warning and if so check the filter trash warning filter for trivial difficulties if self.mod.isTrashMod and DBM.Options.FilterTrashWarnings2 and (self.mod:IsEasyDungeon() or DBM:IsTrivial()) then return end --We also check if person has the role filter turned on (typical for highest end raiders who don't want as much handholding from DBM) if specTypeFilterTable[self.announceType] then if DBM.Options["SpamSpecRole"..specTypeFilterTable[self.announceType]] then return end end --Lastly, we check if it's a tank warning and filter if not in tank spec. This is done because tank warnings on by default and handled fluidly by spec, not option setting if self.announceType == "taunt" and DBM.Options.FilterTankSpec and not self.mod:IsTank() then return end--Don't tell non tanks to taunt, ever. local argTable = {...} -- add a default parameter for move away warnings if self.announceType == "gtfo" then if DBM:UnitBuff("player", 27827) then return end--Don't tell a priest in spirit of redemption form to GTFO, they can't, and they don't take damage from it anyhow if #argTable == 0 then argTable[1] = L.BAD end end if #self.combinedtext > 0 then --Throttle spam. if DBM.Options.SWarningAlphabetical then tsort(self.combinedtext) end local combinedText = tconcat(self.combinedtext, "<, >") if self.combinedcount == 1 then combinedText = combinedText.." "..L.GENERIC_WARNING_OTHERS elseif self.combinedcount > 1 then combinedText = combinedText.." "..L.GENERIC_WARNING_OTHERS2:format(self.combinedcount) end --Process for i = 1, #argTable do if type(argTable[i]) == "string" then argTable[i] = combinedText end end end local message = pformat(self.text, unpack(argTable)) local text = ("%s%s%s"):format( (DBM.Options.SpecialWarningIcon and self.icon and textureCode:format(self.icon)) or "", message, (DBM.Options.SpecialWarningIcon and self.icon and textureCode:format(self.icon)) or "" ) local noteHasName = false if self.option then local noteText = self.mod.Options[self.option .. "SWNote"] if noteText and type(noteText) == "string" and noteText ~= "" then--Filter false bool and empty strings local count1 = self.announceType == "count" or self.announceType == "switchcount" or self.announceType == "targetcount" local count2 = self.announceType == "interruptcount" if count1 or count2 then--Counts support different note for EACH count local noteCount local notesTable = {string.split("/", noteText)} if count1 then noteCount = argTable[1]--Count should be first arg in table elseif count2 then noteCount = argTable[2]--Count should be second arg in table end if type(noteCount) == "string" then --Probably a hypehnated double count like inferno slice or marked for death local mainCount = string.split("-", noteCount) noteCount = tonumber(mainCount) end noteText = notesTable[noteCount] if noteText and type(noteText) == "string" and noteText ~= "" then--Refilter after string split to make sure a note for this count exists local hasPlayerName = noteText:find(playerName) if DBM.Options.SWarnNameInNote and hasPlayerName then noteHasName = 5 end --Terminate special warning, it's an interrupt count warning without player name and filter enabled if count2 and DBM.Options.FilterInterruptNoteName and not hasPlayerName then return end noteText = " ("..noteText..")" text = text..noteText end else--Non count warnings will have one note, period if DBM.Options.SWarnNameInNote and noteText:find(playerName) then noteHasName = 5 end if self.announceType and not self.announceType:find("switch") then noteText = noteText:gsub(">.-<", classColoringFunction)--Class color note text before combining with warning text. end noteText = " ("..noteText..")" text = text..noteText end end end --Text is disabled, suresss text from screen and chat frame if not DBM.Options.DontShowSpecialWarningText then --No stripping on switch warnings, ever. They will NEVER have player name, but often have adds with "-" in name if self.announceType and not self.announceType:find("switch") then text = text:gsub(">.-<", classColoringFunction) end DBM:AddSpecialWarning(text) if DBM.Options.ShowSWarningsInChat then local colorCode = ("|cff%.2x%.2x%.2x"):format(DBM.Options.SpecialWarningFontCol[1] * 255, DBM.Options.SpecialWarningFontCol[2] * 255, DBM.Options.SpecialWarningFontCol[3] * 255) self.mod:AddMsg(colorCode.."["..L.MOVE_SPECIAL_WARNING_TEXT.."] "..text.."|r", nil) end end self.combinedcount = 0 self.combinedtext = {} if not UnitIsDeadOrGhost("player") then if noteHasName then if not DBM.Options.DontShowSpecialWarningFlash and DBM.Options.SpecialWarningFlash5 then--Not included in above if statement on purpose. we don't want to trigger else rule if noteHasName is true but SpecialWarningFlash5 is false local repeatCount = DBM.Options.SpecialWarningFlashCount5 or 1 DBM.Flash:Show(DBM.Options.SpecialWarningFlashCol5[1],DBM.Options.SpecialWarningFlashCol5[2], DBM.Options.SpecialWarningFlashCol5[3], DBM.Options.SpecialWarningFlashDura5, DBM.Options.SpecialWarningFlashAlph5, repeatCount-1) end else local number = self.flash if not DBM.Options.DontShowSpecialWarningFlash and DBM.Options["SpecialWarningFlash"..number] then local repeatCount = DBM.Options["SpecialWarningFlashCount"..number] or 1 local flashcolor = DBM.Options["SpecialWarningFlashCol"..number] DBM.Flash:Show(flashcolor[1], flashcolor[2], flashcolor[3], DBM.Options["SpecialWarningFlashDura"..number], DBM.Options["SpecialWarningFlashAlph"..number], repeatCount-1) end end end --Text: Full message text --Icon: Texture path/id for icon --Type: Announce type ----Types: spell, ends, fades, soon, bait, dispel, interrupt, interruptcount, you, youcount, youpos, soakpos, target, targetcount, defensive, taunt, close, move, keepmove, stopmove, ----gtfo, dodge, dodgecount, dodgeloc, moveaway, moveawaycount, moveto, soak, jump, run, cast, lookaway, reflect, count, sooncount, stack, switch, switchcount, adds, addscount, addscustom, targetchange, prewarn ------General Target Messages (but since it's a special warning, it applies to you in some way): target, targetcount ------Fight Changes (Stages, adds, boss buff/debuff, etc): adds, addscount, addscustom, targetchange, switch, switchcount, ends ------General (can really apply to anything): spell, count, soon, sooncount, prewarn ------Personal/Role (Applies to you, or your job): Everything Else --SpellId: Raw spell or encounter journal Id if available. --Mod ID: Encounter ID as string, or a generic string for mods that don't have encounter ID (such as trash, dummy/test mods) --boolean: Whether or not this warning is a special warning (higher priority). fireEvent("DBM_Announce", text, self.icon, self.type, self.spellId, self.mod.id, true) if self.sound and not DBM.Options.DontPlaySpecialWarningSound and (not self.option or self.mod.Options[self.option.."SWSound"] ~= "None") then local soundId = self.option and self.mod.Options[self.option .. "SWSound"] or self.flash if noteHasName and type(soundId) == "number" then soundId = noteHasName end--Change number to 5 if it's not a custom sound, else, do nothing with it if self.hasVoice and DBM.Options.ChosenVoicePack2 ~= "None" and not voiceSessionDisabled and not DBM.Options.VPDontMuteSounds and canVoiceReplace(self, soundId) and self.hasVoice <= SWFilterDisabled then return end DBM:PlaySpecialWarningSound(soundId or 1) end else self.combinedcount = 0 self.combinedtext = {} end end function specialWarningPrototype:CombinedShow(delay, ...) --Check if option for this warning is even enabled if self.option and not self.mod.Options[self.option] then return end --Now, check if all special warning filters are enabled to save cpu and abort immediately if true. if DBM.Options.DontPlaySpecialWarningSound and DBM.Options.DontShowSpecialWarningFlash and DBM.Options.DontShowSpecialWarningText then return end --Next, we check if trash mod warning and if so check the filter trash warning filter for trivial difficulties if self.mod:IsEasyDungeon() and self.mod.isTrashMod and DBM.Options.FilterTrashWarnings2 then return end local argTable = {...} for i = 1, #argTable do if type(argTable[i]) == "string" then if #self.combinedtext < 8 then--Throttle spam. We may not need more than 9 targets.. if not checkEntry(self.combinedtext, argTable[i]) then self.combinedtext[#self.combinedtext + 1] = argTable[i] end else self.combinedcount = self.combinedcount + 1 end end end DBMScheduler:Unschedule(self.Show, self.mod, self) DBMScheduler:Schedule(delay or 0.5, self.Show, self.mod, self, ...) end function specialWarningPrototype:DelayedShow(delay, ...) DBMScheduler:Unschedule(self.Show, self.mod, self, ...) DBMScheduler:Schedule(delay or 0.5, self.Show, self.mod, self, ...) end function specialWarningPrototype:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Show, self.mod, self, ...) end function specialWarningPrototype:Countdown(time, numAnnounces, ...) DBMScheduler:ScheduleCountdown(time, numAnnounces, self.Show, self.mod, self, ...) end function specialWarningPrototype:Cancel(_, ...) -- t, ... return DBMScheduler:Unschedule(self.Show, self.mod, self, ...) end --Several voice lines still need generic alternatives that don't feel "instructional" local specInstructionalRemapVoiceTable = { -- ["dispel"] = "target", -- ["interrupt"] = "spell", -- ["interruptcount"] = "count", -- ["defensive"] = "spell", ["taunt"] = "changemt",--Remaps sound to say a swap is happening, rather than telling you to taunt boss -- ["soak"] = "spell", -- ["soakcount"] = "count", -- ["soakpos"] = "spell", -- ["switch"] = "spell", -- ["switchcount"] = "count", ["adds"] = "mobsoon",--Remaps sound to say mobs incoming only, not to kill them or cc them or anything else. ["addscount"] = "mobsoon", ["addscustom"] = "mobsoon",--Remaps sound to say mobs incoming only, not to kill them or cc them or anything else. -- ["targetchange"] = "target", -- ["gtfo"] = "spell", -- ["bait"] = "soon", ["you"] = "targetyou",--Remaps personal alert to just say "target you", without instruction ["youpos"] = "targetyou",--Remaps personal alert to just say "target you", without instruction ["youposcount"] = "targetyou",--Remaps personal alert to just say "target you", without instruction -- ["move"] = "spell", -- ["keepmove"] = "spell", -- ["stopmove"] = "spell", -- ["dodge"] = "spell", -- ["dodgecount"] = "count", -- ["dodgeloc"] = "spell", ["moveaway"] = "targetyou",--Remaps personal alert to just say "target you", without instruction ["moveawaycount"] = "targetyou",--Remaps personal alert to just say "target you", without instruction -- ["moveto"] = "spell", -- ["jump"] = "spell", -- ["run"] = "spell", -- ["runcount"] = "spell", -- ["cast"] = "spell", -- ["lookaway"] = "spell", -- ["reflect"] = "target", } function specialWarningPrototype:Play(name, customPath) local always = DBM.Options.AlwaysPlayVoice local voice = DBM.Options.ChosenVoicePack2 local soundId = self.option and self.mod.Options[self.option .. "SWSound"] or self.flash if voiceSessionDisabled or voice == "None" or not canVoiceReplace(self, soundId) then return end if self.mod:IsEasyDungeon() and self.mod.isTrashMod and DBM.Options.FilterTrashWarnings2 then return end if specTypeFilterTable[self.announceType] then --Filtered warning, filtered voice if DBM.Options["SpamSpecRole"..specTypeFilterTable[self.announceType]] then return end elseif DBM.Options.SpamSpecInformationalOnly and specInstructionalRemapVoiceTable[self.announceType] then --Instructional disabled, remap to a less instructional voice line name = specInstructionalRemapVoiceTable[self.announceType] end if ((not self.option or self.mod.Options[self.option]) or always) and self.hasVoice <= SWFilterDisabled then --Filter tank specific voice alerts for non tanks if tank filter enabled --But still allow AlwaysPlayVoice to play as well. if (name == "changemt" or name == "tauntboss") and DBM.Options.FilterTankSpec and not self.mod:IsTank() and not always then return end --Mute VP if SW sound is set to None in the boss mod. if soundId == "None" then return end local path = customPath or "Interface\\AddOns\\DBM-VP"..voice.."\\"..name..".ogg" DBM:PlaySoundFile(path) end end function specialWarningPrototype:ScheduleVoice(t, ...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not canVoiceReplace(self) then return end DBMScheduler:Unschedule(self.Play, self.mod, self)--Allow ScheduleVoice to be used in same way as CombinedShow return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end --Object Permits scheduling voice multiple times for same object function specialWarningPrototype:ScheduleVoiceOverLap(t, ...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not canVoiceReplace(self) then return end return DBMScheduler:Schedule(t, self.Play, self.mod, self, ...) end function specialWarningPrototype:CancelVoice(...) if voiceSessionDisabled or DBM.Options.ChosenVoicePack2 == "None" or not canVoiceReplace(self) then return end return DBMScheduler:Unschedule(self.Play, self.mod, self, ...) end function bossModPrototype:NewSpecialWarning(text, optionDefault, optionName, optionVersion, runSound, hasVoice, difficulty, texture, spellID) if not text then error("NewSpecialWarning: you must provide special warning text", 2) return end if type(text) == "string" and text:match("OptionVersion") then error("NewSpecialWarning: you must provide remove optionversion hack for "..optionDefault) return end if runSound == true then runSound = 2 elseif not runSound then runSound = 1 end if hasVoice == true then--if not a number, set it to 2, old mods that don't use new numbered system hasVoice = 2 end local seticon if texture then if type(texture) == "string" and texture:match("ej%d+") then self:AddMsg("|cffff0000Invalid call to EJ_GetSectionInfo for texture: |r"..texture..". Please report this bug") end seticon = type(texture) == "number" and GetSpellTexture(texture) or texture end local obj = setmetatable( { text = self.localization.warnings[text], combinedtext = {}, combinedcount = 0, mod = self, sound = runSound>0, flash = runSound,--Set flash color to hard coded runsound (even if user sets custom sounds) hasVoice = hasVoice, difficulty = difficulty, icon = seticon, }, mt ) local optionId = optionName or optionName ~= false and text if optionId then obj.voiceOptionId = hasVoice and "Voice"..optionId or nil obj.option = optionId..(optionVersion or "") self:AddSpecialWarningOption(obj.option, optionDefault, runSound, self.NoSortAnnounce and "specialannounce" or "announce", spellID) end tinsert(self.specwarns, obj) return obj end local function newSpecialWarning(self, announceType, spellId, stacks, optionDefault, optionName, optionVersion, runSound, hasVoice, difficulty) if not spellId then error("newSpecialWarning: you must provide spellId", 2) return end if runSound == true then runSound = 2 elseif not runSound then runSound = 1 end if hasVoice == true then--if not a number, set it to 2, old mods that don't use new numbered system hasVoice = 2 end local alternateSpellId if type(optionName) == "number" then if DBM.Options.SpecialWarningShortText then alternateSpellId = optionName end optionName = nil end local text, spellName = setText(announceType, alternateSpellId or spellId, stacks) local obj = setmetatable( -- todo: fix duplicate code { text = text, combinedtext = {}, combinedcount = 0, announceType = announceType, mod = self, sound = runSound>0, flash = runSound,--Set flash color to hard coded runsound (even if user sets custom sounds) hasVoice = hasVoice, difficulty = difficulty, type = announceType, spellId = spellId, spellName = spellName, stacks = stacks, icon = select(3, GetSpellInfo(spellId)) }, mt ) if optionName then obj.option = optionName elseif optionName ~= false then local difficultyIcon = "" if difficulty then --1 LFR, 2 Normal, 3 Heroic, 4 Mythic --Likely 1 and 2 will never be used, but being prototyped just in case local path = "AddOns\\DBM-Core\\textures" if difficulty == 3 then difficultyIcon = "|TInterface\\" .. path .. "\\UI-EJ-Icons.blp:18:18:0:0:255:66:102:118:7:27|t" elseif difficulty == 4 then difficultyIcon = "|TInterface\\" .. path .. "\\UI-EJ-Icons.blp:18:18:0:0:255:66:133:153:40:58|t" end end obj.option = "SpecWarn"..spellId..announceType..(optionVersion or "") if announceType == "stack" then self.localization.options[obj.option] = difficultyIcon..L.AUTO_SPEC_WARN_OPTIONS[announceType]:format(stacks or 3, spellId) elseif announceType == "prewarn" then self.localization.options[obj.option] = difficultyIcon..L.AUTO_SPEC_WARN_OPTIONS[announceType]:format(tostring(stacks or 5), spellId) else self.localization.options[obj.option] = difficultyIcon..L.AUTO_SPEC_WARN_OPTIONS[announceType]:format(spellId) end end if obj.option then local catType = "announce"--Default to General announce if self.NoSortAnnounce then--ALL special announce objects will be assigned "specialannounce", usually for mods that sort by phase instead catType = "specialannounce" else --Directly affects another target (boss or player) that you need to know about if announceType == "target" or announceType == "targetcount" or announceType == "close" or announceType == "reflect" then catType = "announceother" --Directly affects you elseif announceType == "you" or announceType == "youcount" or announceType == "youpos" or announceType == "move" or announceType == "dodge" or announceType == "dodgecount" or announceType == "moveaway" or announceType == "moveawaycount" or announceType == "keepmove" or announceType == "stopmove" or announceType == "run" or announceType == "runcount" or announceType == "stack" or announceType == "moveto" or announceType == "soak" or announceType == "soakcount" or announceType == "soakpos" then catType = "announcepersonal" --Things you have to do to fulfil your role elseif announceType == "taunt" or announceType == "dispel" or announceType == "interrupt" or announceType == "interruptcount" or announceType == "switch" or announceType == "switchcount" then catType = "announcerole" end end self:AddSpecialWarningOption(obj.option, optionDefault, runSound, catType, spellId, announceType) end obj.voiceOptionId = hasVoice and "Voice"..spellId or nil tinsert(self.specwarns, obj) return obj end function bossModPrototype:NewSpecialWarningSpell(spellId, optionDefault, ...) return newSpecialWarning(self, "spell", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningEnd(spellId, optionDefault, ...) return newSpecialWarning(self, "ends", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningFades(spellId, optionDefault, ...) return newSpecialWarning(self, "fades", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSoon(spellId, optionDefault, ...) return newSpecialWarning(self, "soon", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningBait(spellId, optionDefault, ...) return newSpecialWarning(self, "bait", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningDispel(spellId, optionDefault, ...) return newSpecialWarning(self, "dispel", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningInterrupt(spellId, optionDefault, ...) return newSpecialWarning(self, "interrupt", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningInterruptCount(spellId, optionDefault, ...) return newSpecialWarning(self, "interruptcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningYou(spellId, optionDefault, ...) return newSpecialWarning(self, "you", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningYouCount(spellId, optionDefault, ...) return newSpecialWarning(self, "youcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningYouPos(spellId, optionDefault, ...) return newSpecialWarning(self, "youpos", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningYouPosCount(spellId, optionDefault, ...) return newSpecialWarning(self, "youposcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSoakPos(spellId, optionDefault, ...) return newSpecialWarning(self, "soakpos", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningTarget(spellId, optionDefault, ...) return newSpecialWarning(self, "target", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningTargetCount(spellId, optionDefault, ...) return newSpecialWarning(self, "targetcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningDefensive(spellId, optionDefault, ...) return newSpecialWarning(self, "defensive", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningTaunt(spellId, optionDefault, ...) return newSpecialWarning(self, "taunt", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningClose(spellId, optionDefault, ...) return newSpecialWarning(self, "close", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningMove(spellId, optionDefault, ...) return newSpecialWarning(self, "move", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningKeepMove(spellId, optionDefault, ...) return newSpecialWarning(self, "keepmove", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningStopMove(spellId, optionDefault, ...) return newSpecialWarning(self, "stopmove", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningGTFO(spellId, optionDefault, ...) return newSpecialWarning(self, "gtfo", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningDodge(spellId, optionDefault, ...) return newSpecialWarning(self, "dodge", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningDodgeCount(spellId, optionDefault, ...) return newSpecialWarning(self, "dodgecount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningDodgeLoc(spellId, optionDefault, ...) return newSpecialWarning(self, "dodgeloc", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningMoveAway(spellId, optionDefault, ...) return newSpecialWarning(self, "moveaway", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningMoveAwayCount(spellId, optionDefault, ...) return newSpecialWarning(self, "moveawaycount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningMoveTo(spellId, optionDefault, ...) return newSpecialWarning(self, "moveto", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSoak(spellId, optionDefault, ...) return newSpecialWarning(self, "soak", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSoakCount(spellId, optionDefault, ...) return newSpecialWarning(self, "soakcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningJump(spellId, optionDefault, ...) return newSpecialWarning(self, "jump", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningRun(spellId, optionDefault, optionName, optionVersion, runSound, ...) return newSpecialWarning(self, "run", spellId, nil, optionDefault, optionName, optionVersion, runSound or 4, ...) end function bossModPrototype:NewSpecialWarningRunCount(spellId, optionDefault, optionName, optionVersion, runSound, ...) return newSpecialWarning(self, "runcount", spellId, nil, optionDefault, optionName, optionVersion, runSound or 4, ...) end function bossModPrototype:NewSpecialWarningCast(spellId, optionDefault, ...) return newSpecialWarning(self, "cast", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningLookAway(spellId, optionDefault, ...) return newSpecialWarning(self, "lookaway", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningReflect(spellId, optionDefault, ...) return newSpecialWarning(self, "reflect", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningCount(spellId, optionDefault, ...) return newSpecialWarning(self, "count", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSoonCount(spellId, optionDefault, ...) return newSpecialWarning(self, "sooncount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningStack(spellId, optionDefault, stacks, ...) return newSpecialWarning(self, "stack", spellId, stacks, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSwitch(spellId, optionDefault, ...) return newSpecialWarning(self, "switch", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningSwitchCount(spellId, optionDefault, ...) return newSpecialWarning(self, "switchcount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningAdds(spellId, optionDefault, ...) return newSpecialWarning(self, "adds", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningAddsCount(spellId, optionDefault, ...) return newSpecialWarning(self, "addscount", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningAddsCustom(spellId, optionDefault, ...) return newSpecialWarning(self, "addscustom", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningTargetChange(spellId, optionDefault, ...) return newSpecialWarning(self, "targetchange", spellId, nil, optionDefault, ...) end function bossModPrototype:NewSpecialWarningPreWarn(spellId, optionDefault, time, ...) return newSpecialWarning(self, "prewarn", spellId, time, optionDefault, ...) end function DBM:PlayCountSound(number, forceVoice, forcePath) if number > 10 then return end local voice if forceVoice then--For options example voice = forceVoice else voice = self.Options.CountdownVoice end local path local maxCount = 5 if forcePath then path = forcePath else for _, count in pairs(DBM:GetCountSounds()) do if count.value == voice then path = count.path maxCount = count.max break end end end if not path or (number > maxCount) then return end self:PlaySoundFile(path..number..".ogg") end do local minVoicePackVersion = 14 function DBM:CheckVoicePackVersion(value) local activeVP = self.Options.ChosenVoicePack2 --Check if voice pack out of date if activeVP ~= "None" and activeVP == value then -- User might reselect "missing" entry shown in GUI if previously selected voice pack is uninstalled or disabled if self.VoiceVersions[value] then voiceSessionDisabled = false if self.VoiceVersions[value] < minVoicePackVersion then--Version will be bumped when new voice packs released that contain new voices. if self.Options.ShowReminders then self:AddMsg(L.VOICE_PACK_OUTDATED) end SWFilterDisabled = self.VoiceVersions[value]--Set disable to version on current voice pack else SWFilterDisabled = minVoicePackVersion end else voiceSessionDisabled = true end end end end function DBM:PlaySpecialWarningSound(soundId, force) local sound if not force and self:IsTrivial() and self.Options.DontPlayTrivialSpecialWarningSound then sound = self.Options.RaidWarningSound else sound = type(soundId) == "number" and self.Options["SpecialWarningSound" .. (soundId == 1 and "" or soundId)] or soundId or self.Options.SpecialWarningSound end self:PlaySoundFile(sound, nil, true) end local function testWarningEnd() frame:SetFrameStrata("HIGH") end function DBM:ShowTestSpecialWarning(_, number, noSound, force) -- text, number, noSound, force if moving then return end self:AddSpecialWarning(L.MOVE_SPECIAL_WARNING_TEXT) frame:SetFrameStrata("TOOLTIP") self:Unschedule(testWarningEnd) self:Schedule(self.Options.SpecialWarningDuration2 * 1.3, testWarningEnd) if number and not noSound then self:PlaySpecialWarningSound(number, force) end if number then if self.Options["SpecialWarningFlash"..number] then if not force and self:IsTrivial() and self.Options.DontPlayTrivialSpecialWarningSound then return end--No flash if trivial local flashColor = self.Options["SpecialWarningFlashCol"..number] local repeatCount = self.Options["SpecialWarningFlashCount"..number] or 1 self.Flash:Show(flashColor[1], flashColor[2], flashColor[3], self.Options["SpecialWarningFlashDura"..number], self.Options["SpecialWarningFlashAlph"..number], repeatCount-1) end end end end -------------------- -- Timer Object -- -------------------- do local timerPrototype = {} local mt = {__index = timerPrototype} local countvoice1, countvoice2, countvoice3, countvoice4 local countvoice1max, countvoice2max, countvoice3max, countvoice4max = 5, 5, 5, 5 local countpath1, countpath2, countpath3, countpath4 --Merged countdown object for timers with build-in countdown function DBM:BuildVoiceCountdownCache() countvoice1 = self.Options.CountdownVoice countvoice2 = self.Options.CountdownVoice2 countvoice3 = self.Options.CountdownVoice3 countvoice4 = self.Options.PullVoice for _, count in pairs(DBM:GetCountSounds()) do if count.value == countvoice1 then countpath1 = count.path countvoice1max = count.max end if count.value == countvoice2 then countpath2 = count.path countvoice2max = count.max end if count.value == countvoice3 then countpath3 = count.path countvoice3max = count.max end if count.value == countvoice4 then countpath4 = count.path countvoice4max = count.max end end end local function playCountSound(timerId, path, requiresCombat) DBM:Debug("playCountSound originated from timer: "..(timerId or "nil").." with path: "..(path or "nil"), 3) -- doubling this here to confirm sound provenance on debug logs if requiresCombat and not (InCombatLockdown() or UnitAffectingCombat("player")) then return end DBM:PlaySoundFile(path) end local function playCountdown(timerId, timer, voice, count, requiresCombat) if DBM.Options.DontPlayCountdowns then return end timer = timer or 10 count = count or 4 voice = voice or 1 if timer <= count then count = floor(timer) end if not countpath1 or not countpath2 or not countpath3 then DBM:Debug("Voice cache not built at time of playCountdown. On fly caching.", 3) DBM:BuildVoiceCountdownCache() end local maxCount, path if type(voice) == "string" then maxCount = 5--Safe to assume if it's not one of the built ins, it's likely heroes/OW, which has a max of 5 path = voice elseif voice == 2 then maxCount = countvoice2max or 10 path = countpath2 or "Interface\\AddOns\\DBM-Core\\Sounds\\Kolt\\" elseif voice == 3 then maxCount = countvoice3max or 5 path = countpath3 or "Interface\\AddOns\\DBM-Core\\Sounds\\Smooth\\" elseif voice == 4 then maxCount = countvoice4max or 10 path = countpath4 or "Interface\\AddOns\\DBM-Core\\Sounds\\Corsica\\" else maxCount = countvoice1max or 10 path = countpath1 or "Interface\\AddOns\\DBM-Core\\Sounds\\Corsica\\" end if not path then--Should not happen but apparently it does somehow DBM:Debug("Voice path failed in countdownProtoType:Start.") return end if count == 0 then--If a count of 0 is passed,then it's a "Countout" timer, not "Countdown" for i = 1, timer do if i < maxCount then DBM:Schedule(i, playCountSound, timerId, path..i..".ogg", requiresCombat) end end else for i = count, 1, -1 do if i <= maxCount then DBM:Schedule(timer-i, playCountSound, timerId, path..i..".ogg", requiresCombat) end end end end --"break" and "pull" timers have custom classifications that are straight forward and not in this table local timerTypeSimplification = { --All cooldown times, be they approx cd or next exact, or even AI timers, map to "CD" ["cdcount"] = "cd", ["cdsource"] = "cd", ["cdspecial"] = "cd", ["nextcount"] = "cd", ["nextsource"] = "cd", ["nextspecial"] = "cd", ["var"] = "cd", ["varcount"] = "cd", ["varsource"] = "cd", ["varspecial"] = "cd", ["ai"] = "cd", ["adds"] = "cd", ["addscustom"] = "cd", --All nameplate only timers, be they approx or exact or ai cooldowns, or nameplate only cast timers --CDs all map to cdnp but cast maps to castnp ["cdnp"] = "cdnp", ["cdpnp"] = "cdnp", ["nextnp"] = "cdnp", ["nextpnp"] = "cdnp", ["castpnp"] = "castnp", --RPs all map to "warmup" ["roleplay"] = "warmup", ["combat"] = "warmup", --all stage types will map to "stage" ["achievement"] = "stage", ["stagecount"] = "stage", ["stagecountcycle"] = "stage", ["stagecontext"] = "stage", ["stagecontextcount"] = "stage", ["intermission"] = "stage", ["intermissioncount"] = "stage", --Target Bars such as buff/debuff on another player, on self, or on the boss, RPs all map to "target" ["targetcount"] = "target", ["fades"] = "target",--Fades is usually used as a personal target timer. So like debuff on other player is "debuff (targetname)" but on self it's just "debuff fades" --All cast bar types map to "cast" ["active"] = "cast",--Active bars are usually things like Whirlwind is active on the boss, or a channeled cast is being done. so effectively it's for channeled casts, as upposed to regular casts ["castsource"] = "cast", ["castcount"] = "cast", } --Very similar to above but more specific to key replacement and not type replacement, to match BW behavior for unification of WAs local waKeyOverrides = { ["combat"] = "warmup", ["roleplay"] = "warmup", ["achievement"] = "stages", ["stagecount"] = "stages", ["stagecountcycle"] = "stages", ["stagecontext"] = "stages", ["stagecontextcount"] = "stages", ["intermission"] = "stages", ["intermissioncount"] = "stages", } local function isNegativeZero(x) return x == 0 and 1/x < 0 -- Only true for -0 end -- Parse variance from timer string ("v30.5-40" or "dv30.5-40"), into minimum and maximum timer, and calculated variance duration ---@param timer string ---@return number maxTimer, number minTimer, number varianceDuration local function parseVarianceFromTimer(timer) -- ^(d?v) matches starting character d (optional) or v -- (%d+%.?%d*) matches any number of digits with optional decimal -- %- matches literal character "-" -- (%d+%.?%d*)$ matches any number of digits with optional decimal, at the end of the string local minTimer, maxTimer = timer:match("v(%d+%.?%d*)%-(%d+%.?%d*)") minTimer, maxTimer = tonumber(minTimer), tonumber(maxTimer) if type(minTimer) ~= "number" or type(maxTimer) ~= "number" then DBM:Debug("|cffff0000No timers found in the string passed to parseVarianceFromTimer function: "..timer..". Returning zero.|r") return 0, 0, 0 end local varianceDuration = maxTimer - minTimer return maxTimer, minTimer, varianceDuration -- maximum possible timer from the variance window, minimum..., variance duration end local function correctWithVarianceDuration(numberToCorrect, timerBar) if not numberToCorrect then DBM:Debug("|cffff0000No number passed to correctWithVarianceDuration function.|r") return end if not timerBar then DBM:Debug("|cffff0000No timerBar passed to correctWithVarianceDuration function.|r") return numberToCorrect end return timerBar.hasVariance and (numberToCorrect + timerBar.varianceDuration) or numberToCorrect end function timerPrototype:Start(timer, ...) if not self.mod.isDummyMod then--Don't apply following rulesets to pull timers and such if DBM.Options.DontShowBossTimers and not self.mod.isTrashMod then return end if DBM.Options.DontShowTrashTimers and self.mod.isTrashMod then return end end local isDelayed = type(timer) == "number" and (isNegativeZero(timer) or timer < 0) local hasVariance = type(timer) == "number" and timer > 0 and false or not timer and self.hasVariance -- account for metavariant timers that were fired with a fixed timer start, like timer:Start(10). Does not account for timer:Start(-delay), which is parsed below after variance started timers local timerStringWithVariance, maxTimer, minTimer if type(timer) == "string" and timer:match("^v%d+%.?%d*-%d+%.?%d*$") then -- catch "timer variance" pattern, expressed like v10.5-20.5 hasVariance = true timerStringWithVariance = timer -- cache timer string maxTimer, minTimer = parseVarianceFromTimer(timer) -- use highest possible value as the actual End timer timer = DBT.Options.VarianceEnabled and maxTimer or minTimer end if isDelayed then -- catch metavariant timers with delay, expressed like timer:Start(-delay) if self.hasVariance then hasVariance = self.hasVariance maxTimer, minTimer = parseVarianceFromTimer(self.timerStringWithVariance) -- use highest possible value as the actual End timer timerStringWithVariance = ("v%s-%s"):format(minTimer + timer, maxTimer + timer) -- rebuild timer string with delay applied timer = (DBT.Options.VarianceEnabled and maxTimer or minTimer) + timer end end -- if DBM.Options.DebugMode and self.mod.id ~= "TestMod" then -- self.keep = hasVariance -- keep variance timers for debug purposes -- end if timer and type(timer) ~= "number" then return self:Start(nil, timer, ...) -- first argument is optional! end local isBarEnabled = not self.option or self.mod.Options[self.option] --this segment needs to run regardless of enabled to collect info for callback local isCountTimer = false if self.type and (self.type == "cdcount" or self.type == "nextcount" or self.type == "stagecount" or self.type == "stagecontextcount" or self.type == "stagecountcycle" or self.type == "intermissioncount" or self.type == "varcount") then isCountTimer = true end local guid, timerCount if select("#", ...) > 0 then--If timer has args for i = 1, select("#", ...) do local v = select(i, ...) if DBM:IsNonPlayableGUID(v) then--Then scan them for a mob guid guid = v--If found, guid will be passed in DBM_TimerStart callback end --Not most efficient way to do it, but since it's already being done for guid, it's best not to repeat the work if isCountTimer and type(v) == "number" then timerCount = v end end end timer = timer and ((timer > 0 and timer) or self.timer + timer) or self.timer if isCountTimer and not self.allowdouble then--remove previous timer. for i = #self.startedTimers, 1, -1 do -- if DBM.Options.BadTimerAlert or DBM.Options.DebugMode and DBM.Options.DebugLevel > 1 then local bar = DBT:GetBar(self.startedTimers[i]) if bar then if mabs(bar.timer) > 0.1 then -- Positive and Negative ("keep") timers. Also shortened time window local remaining = ("%.2f"):format(bar.timer) local ttext = _G[bar.frame:GetName() .. "BarName"]:GetText() or "" ttext = ttext .. "(" .. self.id .. "-" .. (timer or 0) .. ")" local deltaFromVarianceMinTimer = ("%.2f"):format(bar.hasVariance and bar.timer - bar.varianceDuration or bar.timer) local phaseText = self.mod.vb.phase and " (" .. L.SCENARIO_STAGE:format(self.mod.vb.phase) .. ")" or "" if bar.hasVariance then if DBM.Options.BadTimerAlert and bar.timer > correctWithVarianceDuration(1, bar) then--If greater than 1 seconds off, report this out of debug mode to all users DBM:AddMsg("Timer "..ttext..phaseText.. " refreshed before expired, outside known variance window. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer.."). Please report this bug") fireEvent("DBM_Debug", "Timer "..ttext..phaseText.. " refreshed before expired, outside known variance window. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer.."). Please report this bug", 2) elseif bar.timer < -0.1 then -- Would be useful to implement a variance detector, and report outside the known variance, however this would need to happen on a timer after it was refreshed. For the moment, only "keep" arg can achieve this. DBM:Debug("Timer "..ttext..phaseText.. " refreshed after zero, outside known variance window. Remaining time is : "..remaining, 2) elseif bar.timer > correctWithVarianceDuration(0.1, bar) then DBM:Debug("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer..")", 2) end else -- duplicated code, should be refactored if DBM.Options.BadTimerAlert and bar.timer > 1 then--If greater than 1 seconds off, report this out of debug mode to all users DBM:AddMsg("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining..". Please report this bug") fireEvent("DBM_Debug", "Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining..". Please report this bug", 2) elseif bar.timer < -5 then -- arbitrary threshold DBM:Debug("Timer "..ttext..phaseText.. " refreshed after zero. Remaining time is : "..remaining, 2) elseif bar.timer > 0.1 then DBM:Debug("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining, 2) end end end end -- end DBT:CancelBar(self.startedTimers[i]) fireEvent("DBM_TimerStop", self.startedTimers[i]) tremove(self.startedTimers, i) end end local id = self.id .. pformat((("\t%s"):rep(select("#", ...))), ...) --AI timer api: --Starting ai timer with (1) indicates it's a first timer after pull --Starting timer with (2) or (3) indicates it's a stage 2 or stage 3 first timer --Starting AI timer with anything above 3 indicarets it's a regular timer and to use shortest time in between two regular casts if self.type == "ai" then--A learning timer if not DBM.Options.AITimer then return end if timer > 5 then--Normal behavior. local newPhase = false for i = 1, 5 do --Check for any phase timers that are strings, if a string it means last cast of this ability was first case of a given stage if self["phase"..i.."CastTimer"] and type(self["phase"..i.."CastTimer"]) == "string" then--This is first cast of spell, we need to generate self.firstPullTimer self["phase"..i.."CastTimer"] = tonumber(self["phase"..i.."CastTimer"]) self["phase"..i.."CastTimer"] = GetTime() - self["phase"..i.."CastTimer"]--We have generated a self.phase1CastTimer! Next pull, DBM should know timer for first cast next pull. FANCY! DBM:Debug("AI timer learned a first timer for current phase of "..self["phase"..i.."CastTimer"], 2) newPhase = true end end if self.lastCast and not newPhase then--We have a GetTime() on last cast and it's not affected by a phase change local timeLastCast = GetTime() - self.lastCast--Get time between current cast and last cast if timeLastCast > 5 then--Prevent infinite loop cpu hang. Plus anything shorter than 5 seconds doesn't need a timer if not self.lowestSeenCast or (self.lowestSeenCast and self.lowestSeenCast > timeLastCast) then--Always use lowest seen cast for a timer self.lowestSeenCast = timeLastCast DBM:Debug("AI timer learned a new lowest timer of "..self.lowestSeenCast, 2) end end end self.lastCast = GetTime() if self.lowestSeenCast then--Always use lowest seen cast for timer timer = self.lowestSeenCast else return--Don't start the bogus timer shoved into timer field in the mod end else--AI timer passed with 4 or less is indicating phase change, with timer as phase number if self["phase" .. timer .. "CastTimer"] and type(self["phase" .. timer .. "CastTimer"]) == "number" then --Check if timer is shorter than previous learned first timer by scanning remaining time on existing bar local bar = DBT:GetBar(id) if bar then local remaining = ("%.1f"):format(bar.timer) if bar.timer > 0.1 then -- Shortened time window self["phase"..timer.."CastTimer"] = self["phase"..timer.."CastTimer"] - remaining DBM:Debug("AI timer learned a lower first timer for current phase of "..self["phase"..timer.."CastTimer"], 2) end end timer = self["phase"..timer.."CastTimer"] else--No first pull timer generated yet, set it to GetTime, as a string self["phase"..timer.."CastTimer"] = tostring(GetTime()) return--Don't start the x second timer end end end --This should only run if bar is actually enabled, else we don't have a previous bar to compare it to anyways if isBarEnabled --[[and DBM.Options.BadTimerAlert or DBM.Options.DebugMode and DBM.Options.DebugLevel > 1]] then if not self.type or (self.type ~= "target" and self.type ~= "active" and self.type ~= "fades" and self.type ~= "ai") and not self.allowdouble then local bar = DBT:GetBar(id) if bar then if mabs(bar.timer) > 0.1 then -- Positive and Negative ("keep") timers. Also shortened time window local remaining = ("%.2f"):format(bar.timer) local deltaFromVarianceMinTimer = ("%.2f"):format(bar.hasVariance and bar.timer - bar.varianceDuration or bar.timer) local ttext = _G[bar.frame:GetName() .. "BarName"]:GetText() or "" ttext = ttext .. "(" .. self.id .. "-" .. (timer or 0) .. ")" local phaseText = self.mod.vb.phase and " (" .. L.SCENARIO_STAGE:format(self.mod.vb.phase) .. ")" or "" if bar.hasVariance then if DBM.Options.BadTimerAlert and bar.timer > correctWithVarianceDuration(1, bar) then--If greater than 1 seconds off, report this out of debug mode to all users DBM:AddMsg("Timer "..ttext..phaseText.. " refreshed before expired, outside known variance window. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer.."). Please report this bug") fireEvent("DBM_Debug", "Timer "..ttext..phaseText.. " refreshed before expired, outside known variance window. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer.."). Please report this bug", 2) elseif bar.timer < -0.1 then -- Would be useful to implement a variance detector, and report outside the known variance, however this would need to happen on a timer after it was refreshed. For the moment, only "keep" arg can achieve this. DBM:Debug("Timer "..ttext..phaseText.. " refreshed after zero, outside known variance window. Remaining time is : "..remaining, 2) elseif bar.timer > correctWithVarianceDuration(0.1, bar) then DBM:Debug("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining.." (until variance minimum timer: "..deltaFromVarianceMinTimer..")", 2) end else -- duplicated code, should be refactored if DBM.Options.BadTimerAlert and bar.timer > 1 then--If greater than 1 seconds off, report this out of debug mode to all users DBM:AddMsg("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining..". Please report this bug") fireEvent("DBM_Debug", "Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining..". Please report this bug", 2) elseif bar.timer < -5 then -- arbitrary threshold DBM:Debug("Timer "..ttext..phaseText.. " refreshed after zero. Remaining time is : "..remaining, 2) elseif bar.timer > 0.1 then DBM:Debug("Timer "..ttext..phaseText.. " refreshed before expired. Remaining time is : "..remaining, 2) end end end end end end local colorId if self.option then colorId = self.mod.Options[self.option .. "TColor"] elseif self.colorType and type(self.colorType) == "string" then--No option for specific timer, but another bool option given that tells us where to look for TColor (for mods such as trio boss for valentines day in events mods) colorId = self.mod.Options[self.colorType .. "TColor"] else--No option, or secondary option, set colorId to hardcoded color type colorId = self.colorType or 0 end local bar --Bar and countdown construction should only actually occur if enabled if isBarEnabled then local countVoice, countVoiceMax = 0, self.countdownMax or 4 if self.option then countVoice = self.mod.Options[self.option .. "CVoice"] if not self.fade and (type(countVoice) == "string" or countVoice > 0) then--Started without faded and has count voice assigned DBM:Unschedule(playCountSound, id) -- Prevents count sound if timer is started again before timer expires -- minTimer checks for the minimum possible timer in the variance timer string sent from Start method, self.minTimer is from newTimer constructor. Else, use timer value playCountdown(id, minTimer or (hasVariance and self.minTimer) or timer, countVoice, countVoiceMax, self.requiresCombat)--timerId, timer, voice, count end end -- timerStringWithVariance checks for timer string sent from Start method, self.timerStringWithVariance is from newTimer constructor. Else, use timer value bar = DBT:CreateBar(timerStringWithVariance or (hasVariance and self.timerStringWithVariance) or timer, id, self.icon, nil, nil, nil, nil, colorId, nil, self.keep, self.fade, countVoice, countVoiceMax, self.simpType == "cd" or self.simpType == "cdnp") if not bar then return false, "error" -- creating the timer failed somehow, maybe hit the hard-coded timer limit of 15 end end local msg if self.type and not self.text then msg = pformat(self.mod:GetLocalizedTimerText(self.type, self.spellId, self.name), ...) else if type(self.text) == "number" then--spellId passed in timer text, it's a timer with short text msg = pformat(self.mod:GetLocalizedTimerText(self.type, self.text, self.name), ...) else msg = pformat(self.text, ...) end end msg = msg:gsub(">.-<", stripServerName) if bar then bar:SetText(msg, self.inlineIcon) end --ID (string) Internal DBM timer ID --msg (string) Timer Text (Do not use msg has an event trigger, it varies language to language or based on user timer options. Use this to DISPLAY only (such as timer replacement UI). use spellId field 99% of time --timer (number) Raw timer value. Will return lowest number in variance timers (like DBM has always done, earliest an ability comes off CD is expected behavior for weak auras) --Icon (string or number): Texture Path for Icon --simpleType (string): Timer type, which is one of only 7 possible types: "cd" for coolodwns, "target" for target bars such as debuff on a player, "stage" for any kind of stage timer (stage ends, next stage, or even just a warmup timer like "fight begins"), and then "cast" timer which is used for both a regular cast and a channeled cast (ie boss is casting frostbolt, or boss is channeling whirlwind). Lastly, break, pull, and berserk timers are "breaK", "pull", and "berserk" respectively --spellId (string or number): Raw spellid if available (most timers will have spellId or EJ ID unless it's a specific timer not tied to ability such as pull or combat start or rez timers. EJ id will be in format ej%d --colorID (number): Type classification (1-Add, 2-Aoe, 3-targeted ability, 4-Interrupt, 5-Role, 6-Stage, 7-User(custom)) --Mod ID (string or number): Encounter ID as string, or a generic string for mods that don't have encounter ID (such as trash, dummy/test mods) --Keep (true or nil), whether or not to keep bar on screen when it expires (if true, timer should be retained until an actual TimerStop occurs or a new TimerStart with same barId happens (in which case you replace bar with new one) --fade (true or nil), whether or not to fade a bar (set alpha to usersetting/2) --spellName (string) Sent so users can use a spell name instead of spellId, if they choose. Mostly to be more classic wow friendly, spellID is still preferred method (even for classic) --MobGUID (string) if it could be parsed out of args --timerCount (number) if current timer is a count timer. Returns number (count value) needed to have weak auras that trigger off a specific timer count without using localized message text --isPriority: If true, this ability has been flagged as extra important. Can be used for weak auras or nameplate addons to add extra emphasis onto specific timer like a glow --fullType (the true type of timer, for those who really want to filter timers by DBM classifications such as "adds" or "interrupt") --hasVariance (true or nil) if timer has variance. --variancePeaktimer (number) if timer has variance, this is the peak timer in the variance window, otherwise nil --isEnabled (true or nil) if timer is enabled --Mods that have specifically flagged that it's safe to assume all timers from that boss mod belong to boss1 --This check is performed secondary to args scan so that no adds guids are overwritten --NOTE: Begin fires regardless of enabled status, and includes additional enabled flag. Start only fires if option is enabled (old behavior) if not guid and self.mod.sendMainBossGUID and not DBM.Options.DontSendBossGUIDs and (self.type == "cd" or self.type == "next" or self.type == "cdcount" or self.type == "nextcount" or self.type == "cdspecial" or self.type == "ai") then--Variance excluded for now while NP timers don't support yet guid = UnitGUID("boss1") end if self.simpType and (self.simpType == "cdnp" or self.simpType == "castnp") then--Only send nampelate callback fireEvent("DBM_NameplateBegin", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, (self.simpType == "cdnp" and DBM.Options.AlwaysKeepNPs) and true or self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer, isBarEnabled) if isBarEnabled then fireEvent("DBM_NameplateStart", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, (self.simpType == "cdnp" and DBM.Options.AlwaysKeepNPs) and true or self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer) end else--Send both callbacks fireEvent("DBM_TimerBegin", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer, isBarEnabled) if isBarEnabled then fireEvent("DBM_TimerStart", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer, isBarEnabled) end if guid then--But nameplate is only sent if actual GUID fireEvent("DBM_NameplateBegin", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer, isBarEnabled) if isBarEnabled then fireEvent("DBM_NameplateStart", id, msg, minTimer or (hasVariance and self.minTimer) or timer, self.icon, self.simpType, self.waSpecialKey or self.spellId, colorId, self.mod.id, self.keep, self.fade, self.name, guid, timerCount, self.isPriority, self.type, hasVariance, hasVariance and timer) end end end local nameplateAborted if isBarEnabled then --Basically tops bar from starting if it's being put on a plater nameplate, to give plater users option to have nameplate CDs without actually using the bars --This filter will only apply to trash mods though, boss timers will always be shown due to need to have them exist for Pause, Resume, Update, and GetTime/GetRemaining methods if guid and DBM.Options.DontShowTimersWithNameplates and Plater and Plater.db.profile.bossmod_support_bars_enabled and self.mod.isTrashMod then DBT:CancelBar(id)--Cancel bar without stop callback nameplateAborted = true end end --We still want to store timer references in started timers even if we didn't actually start them, so they can be tracked and stoped accordingly if not tContains(self.startedTimers, id) then--Make sure timer doesn't exist already before adding it tinsert(self.startedTimers, id) end self.mod:Unschedule(removeEntry, self.startedTimers, id) if not self.keep then--Don't ever remove startedTimers on a schedule, if it's a keep timer self.mod:Schedule(timer, removeEntry, self.startedTimers, id) end if bar and not nameplateAborted then return bar else return false, "disabled" end end timerPrototype.Show = timerPrototype.Start --A way to set the fade to yes or no, overriding hardcoded value in NewTimer object with temporary one --If this method is used, it WILL persist until reload or changing it back function timerPrototype:SetFade(fadeOn, ...) --Done this way so SetFade can be used with :Start without needless performance cost (ie, ApplyStyle won't run unless it needs to) if fadeOn and not self.fade then self.fade = true--set timer object metatable, which will make sure next bar started uses fade --Find and Update an existing bar that's already started local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar and not bar.fade then fireEvent("DBM_TimerFadeUpdate", id, self.spellId, self.mod.id, true, self.name)--Timer ID, spellId, modId, true/nil, spellName (new callback only needed if we update an existing timers fade, self.fade is passed in timer start object for new timers) bar.fade = true--Set bar object metatable, which is copied from timer metatable at bar start only bar:ApplyStyle() DBM:Unschedule(playCountSound, id)--Don't even need to check option, it's faster cpu wise to just unschedule countdown either way end elseif not fadeOn and self.fade then self.fade = nil--set timer object metatable, which will make sure next bar started does NOT use fade --Find and Update an existing bar that's already started local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar and bar.fade then fireEvent("DBM_TimerFadeUpdate", id, self.spellId, self.mod.id, nil, self.name)--Timer ID, spellId, modId, true/nil, spellName (new callback only needed if we update an existing timers fade, self.fade is passed in timer start object for new timers) bar.fade = nil--Set bar object metatable, which is copied from timer metatable at bar start only bar:ApplyStyle() if self.option then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then--Unfading bar, start countdown DBM:Unschedule(playCountSound, id) playCountdown(id, bar.timer, countVoice, bar.countdownMax, bar.requiresCombat)--timerId, timer, voice, count DBM:Debug("Re-enabling a countdown on bar ID: "..id.." after a SetFade disable call") end end end end end --This version does NOT set timer object meta, only started bar meta --Use this if you only want to alter an already STARTED temporarily --As such it also only needs fadeOn. fadeoff isn't needed since this temp alter never affects newly started bars function timerPrototype:SetSTFade(fadeOn, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then if fadeOn and not bar.fade then fireEvent("DBM_TimerFadeUpdate", id, self.spellId, self.mod.id, true, self.name)--Timer ID, spellId, modId, true/nil, spellName (new callback only needed if we update an existing timers fade, self.fade is passed in timer start object for new timers) bar.fade = true--Set bar object metatable, which is copied from timer metatable at bar start only bar:ApplyStyle() DBM:Unschedule(playCountSound, id) elseif not fadeOn and bar.fade then fireEvent("DBM_TimerFadeUpdate", id, self.spellId, self.mod.id, nil, self.name) bar.fade = false bar:ApplyStyle() if self.option then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then--Unfading bar, start countdown DBM:Unschedule(playCountSound, id) playCountdown(id, bar.timer, countVoice, bar.countdownMax)--timerId, timer, voice, count DBM:Debug("Re-enabling a countdown on bar ID: "..id.." after a SetSTFade disable call") end end end end end function timerPrototype:SetSTKeep(keepOn, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then if keepOn and not bar.keep then bar.keep = true--Set bar object metatable, which is copied from timer metatable at bar start only bar:ApplyStyle() elseif not keepOn and bar.keep then fireEvent("DBM_TimerFadeUpdate", id, self.spellId, self.mod.id, nil) bar.keep = false bar:ApplyStyle() end end end function timerPrototype:DelayedStart(delay, ...) DBMScheduler:Unschedule(self.Start, self.mod, self, ...) DBMScheduler:Schedule(delay or 0.5, self.Start, self.mod, self, ...) end timerPrototype.DelayedShow = timerPrototype.DelayedStart function timerPrototype:Schedule(t, ...) return DBMScheduler:Schedule(t, self.Start, self.mod, self, ...) end function timerPrototype:Unschedule(...) return DBMScheduler:Unschedule(self.Start, self.mod, self, ...) end --TODO, figure out why this function doesn't properly stop count timers when calling stop without count on count timers function timerPrototype:Stop(...) if select("#", ...) == 0 then for i = #self.startedTimers, 1, -1 do fireEvent("DBM_TimerStop", self.startedTimers[i]) DBT:CancelBar(self.startedTimers[i]) DBM:Unschedule(playCountSound, self.startedTimers[i])--Unschedule countdown by timerId DBM:Unschedule(removeEntry, self.startedTimers, self.startedTimers[i]) tremove(self.startedTimers, i) end else local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) for i = #self.startedTimers, 1, -1 do if self.startedTimers[i] == id then local guid for j = 1, select("#", ...) do local v = select(j, ...) if DBM:IsNonPlayableGUID(v) then--Then scan them for a mob guid guid = v--If found, guid will be passed in DBM_TimerStart callback end end fireEvent("DBM_TimerStop", id, guid) DBT:CancelBar(id) DBM:Unschedule(playCountSound, id)--Unschedule countdown by timerId DBM:Unschedule(removeEntry, self.startedTimers, self.startedTimers[i]) tremove(self.startedTimers, i) end end end if self.type == "ai" then--A learning timer if not DBM.Options.AITimer then return end self.lastCast = nil for i = 1, 4 do --Check for any phase timers that are strings and never got a chance to become AI timers, then wipe them if self["phase"..i.."CastTimer"] and type(self["phase"..i.."CastTimer"]) == "string" then self["phase"..i.."CastTimer"] = nil DBM:Debug("Wiping incomplete new timer of stage "..i, 2) end end end end --In past boss mods have always had to manually call Stop just to restart a timer, to avoid triggering false debug messages --This function should simplify boss mod creation by allowing you to "Restart" a timer with one call in mod instead of 2 function timerPrototype:Restart(timer, ...) if self.type and (self.type == "cdcount" or self.type == "nextcount") and not self.allowdouble then self:Stop()--Cleanup any count timers left over on a restart else self:Stop(...) end self:Unschedule(...)--Also unschedules not yet started timers that used timer:Schedule() self:Start(timer, ...) end timerPrototype.Reboot = timerPrototype.Restart function timerPrototype:Cancel(...) self:Stop(...) self:Unschedule(...)--Also unschedules not yet started timers that used timer:Schedule() end function timerPrototype:GetTime(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) return bar and (bar.totalTime - bar.timer) or 0, (bar and bar.totalTime) or 0 end function timerPrototype:GetRemaining(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) return bar and bar.timer or 0 end function timerPrototype:Time(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) return bar.totalTime or 0 end function timerPrototype:IsStarted(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) return bar and true end function timerPrototype:SetTimer(timer) self.timer = timer end function timerPrototype:Update(elapsed, totalTime, ...) if DBM.Options.DontShowBossTimers and not self.mod.isTrashMod then return end if DBM.Options.DontShowTrashTimers and self.mod.isTrashMod then return end if self:GetTime(...) == 0 then self:Start(totalTime, ...) end local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) -- parse variance from totalTime if necessary local maxTimer, minTimer, correctedTimer if type(totalTime) == "string" and totalTime:match("^v%d+%.?%d*-%d+%.?%d*$") then -- catch "timer variance" pattern, expressed like v10.5-20.5 maxTimer, minTimer = parseVarianceFromTimer(totalTime) correctedTimer = DBT.Options.VarianceEnabled and maxTimer or minTimer end fireEvent("DBM_TimerUpdate", id, elapsed, (correctedTimer or totalTime)) if bar then local newRemaining = (correctedTimer or totalTime)-elapsed local newMinRemaining = (minTimer or totalTime)-elapsed self.mod:Unschedule(removeEntry, self.startedTimers, id) if not bar.keep and newRemaining > 0 then --Correct table for tracked timer objects for adjusted time, or else timers may get stuck if stop is called on them self.mod:Schedule(newRemaining, removeEntry, self.startedTimers, id) end if self.option then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then DBM:Unschedule(playCountSound, id) if not bar.fade then--Don't start countdown voice if it's faded bar if newMinRemaining > 2 then playCountdown(id, newMinRemaining, countVoice, bar.countdownMax, bar.requiresCombat)--timerId, timer, voice, count DBM:Debug("Updating a countdown after a timer Update call for timer ID:"..id) end end end end end return DBT:UpdateBar(id, elapsed, totalTime) end function timerPrototype:AddTime(extendAmount, ...) if DBM.Options.DontShowBossTimers and not self.mod.isTrashMod then return end if DBM.Options.DontShowTrashTimers and self.mod.isTrashMod then return end if self:GetTime(...) == 0 then return self:Start(extendAmount, ...) else local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then local elapsed, total = (bar.totalTime - bar.timer), bar.totalTime if elapsed and total then local newRemaining = (total + extendAmount) - elapsed self.mod:Unschedule(removeEntry, self.startedTimers, id) if not bar.keep then --Correct table for tracked timer objects for adjusted time, or else timers may get stuck if stop is called on them self.mod:Schedule(newRemaining, removeEntry, self.startedTimers, id) end if self.option then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then DBM:Unschedule(playCountSound, id) if not bar.fade then--Don't start countdown voice if it's faded bar playCountdown(id, newRemaining, countVoice, bar.countdownMax, bar.requiresCombat)--timerId, timer, voice, count DBM:Debug("Updating a countdown after a timer AddTime call for timer ID:"..id) end end end fireEvent("DBM_TimerUpdate", id, elapsed, total+extendAmount) return DBT:UpdateBar(id, elapsed, total+extendAmount) end end end end function timerPrototype:RemoveTime(reduceAmount, ...) if DBM.Options.DontShowBossTimers and not self.mod.isTrashMod then return end if DBM.Options.DontShowTrashTimers and self.mod.isTrashMod then return end if self:GetTime(...) == 0 then return--Do nothing else local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then self.mod:Unschedule(removeEntry, self.startedTimers, id)--Needs to be unscheduled here, or the entry might just get left in table until original expire time, if new expire time is less than 0 DBM:Unschedule(playCountSound, id)--Needs to be unscheduled here,or countdown might not be canceled if removing time made it cease to have a > 0 value local elapsed, total = (bar.totalTime - bar.timer), bar.totalTime if elapsed and total then local newRemaining = (total-reduceAmount) - elapsed if newRemaining > 0 then --Correct table for tracked timer objects for adjusted time, or else timers may get stuck if stop is called on them if not bar.keep then self.mod:Schedule(newRemaining, removeEntry, self.startedTimers, id) end if self.option and newRemaining > 2 then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then if not bar.fade then--Don't start countdown voice if it's faded bar if newRemaining > 2 then playCountdown(id, newRemaining, countVoice, bar.countdownMax, bar.requiresCombat)--timerId, timer, voice, count DBM:Debug("Updating a countdown after a timer RemoveTime call for timer ID:"..id) end end end end fireEvent("DBM_TimerUpdate", id, elapsed, total-reduceAmount) return DBT:UpdateBar(id, elapsed, total-reduceAmount) else--New remaining less than 0 fireEvent("DBM_TimerStop", id) return DBT:CancelBar(id) end end end end end function timerPrototype:Pause(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then DBM:Unschedule(playCountSound, id)--Kill countdown on pause self.mod:Unschedule(removeEntry, self.startedTimers, id)--Prevent removal from startedTimers table while bar is paused fireEvent("DBM_TimerPause", id) return bar:Pause() end end function timerPrototype:Resume(...) local id = self.id .. pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then local elapsed, total = (bar.totalTime - bar.timer), bar.totalTime if elapsed and total then local remaining = total - elapsed if not bar.keep then self.mod:Schedule(remaining, removeEntry, self.startedTimers, id)--Re-schedule the auto remove entry stuff end --Have to check if paused bar had a countdown on resume so we can restore it if self.option and not bar.fade then local countVoice = self.mod.Options[self.option .. "CVoice"] or 0 if (type(countVoice) == "string" or countVoice > 0) then playCountdown(id, remaining, countVoice, bar.countdownMax, bar.requiresCombat)--timerId, timer, voice, count DBM:Debug("Updating a countdown after a timer Resume call for timer ID:"..id) end end end fireEvent("DBM_TimerResume", id) return bar:Resume() end end function timerPrototype:UpdateIcon(icon, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then return bar:SetIcon((type(icon) == "number" and ( icon <=8 and (iconFolder .. icon) or select(3, GetSpellInfo(icon)))) or icon or "Interface\\Icons\\Spell_Nature_WispSplode") end end function timerPrototype:UpdateInline(newInline, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then local ttext = _G[bar.frame:GetName().."BarName"]:GetText() or "" return bar:SetText(ttext, newInline or self.inlineIcon) end end function timerPrototype:UpdateName(name, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then return bar:SetText(name, self.inlineIcon) end end function timerPrototype:SetColor(c, ...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then return bar:SetColor(c) end end function timerPrototype:DisableEnlarge(...) local id = self.id..pformat((("\t%s"):rep(select("#", ...))), ...) local bar = DBT:GetBar(id) if bar then bar.small = true end end function timerPrototype:AddOption(optionDefault, optionName, colorType, countdown, spellId, optionType) if optionName ~= false then self.option = optionName or self.id self.mod:AddBoolOption(self.option, optionDefault, "timer", nil, colorType, countdown, spellId, optionType) end end --If a new countdown default is added to a NewTimer object, change optionName of timer to reset a new default function bossModPrototype:NewTimer(timer, name, texture, optionDefault, optionName, colorType, inlineIcon, keep, countdown, countdownMax, r, g, b, spellId, requiresCombat, waCustomName, customType, isPriority) if r and type(r) == "string" then DBM:Debug("|cffff0000r probably has inline icon in it and needs to be fixed for |r" .. name .. r) r = nil--Fix it for users end if inlineIcon and type(inlineIcon) == "number" then DBM:Debug("|cffff0000spellID texture path or colorType is in inlineIcon field and needs to be fixed for |r" .. name .. inlineIcon) inlineIcon = nil--Fix it for users end local hasVariance, timerStringWithVariance, minTimer, varianceDuration if type(timer) == "string" then if timer:match("^v%d+%.?%d*%-%d+%.?%d*$") then -- parse variance, e.g. "v20.5-25.5" hasVariance = true timerStringWithVariance = timer timer, minTimer, varianceDuration = parseVarianceFromTimer(timer) end end local icon = type(texture) == "number" and ( texture <=8 and (iconFolder .. texture) or select(3, GetSpellInfo(texture))) or texture or "Interface\\Icons\\Spell_Nature_WispSplode" local waSpecialKey, simpType if customType then simpType = timerTypeSimplification[customType] or customType waSpecialKey = waKeyOverrides[customType] end local obj = setmetatable( { objClass = "Timer", text = self.localization.timers[name], type = customType or "cd",--Auto assign simpType = simpType or "cd", waSpecialKey = waSpecialKey, spellId = spellId,--Allows Localized timer text to still have a spellId arg weak auras can latch onto timer = timer, id = name, icon = icon, colorType = colorType or 0, inlineIcon = inlineIcon, keep = keep, countdown = countdown, countdownMax = countdownMax, r = r, g = g, b = b, requiresCombat = requiresCombat, hasVariance = hasVariance, minTimer = minTimer, timerStringWithVariance = timerStringWithVariance, varianceDuration = varianceDuration, startedTimers = {}, mod = self, startLarge = nil, isPriority = isPriority, }, mt ) obj:AddOption(optionDefault, optionName, colorType, countdown, spellId, nil, waCustomName) tinsert(self.timers, obj) return obj end -- new constructor for the new auto-localized timer types -- note that the function might look unclear because it needs to handle different timer types, especially achievement timers need special treatment -- If a new countdown is added to an existing timer that didn't have one before, use optionName (number) to force timer to reset defaults by assigning it a new variable local function newTimer(self, timerType, timer, spellId, timerText, optionDefault, optionName, colorType, texture, inlineIcon, keep, countdown, countdownMax, r, g, b, requiresCombat, isPriority) if type(timer) == "string" and timer:match("OptionVersion") then DBM:Debug("|cffff0000OptionVersion hack depricated, remove it from: |r"..spellId) return end if type(colorType) == "number" and colorType > 7 then DBM:Debug("|cffff0000texture is in the colorType arg for: |r"..spellId) end --Use option optionName for optionVersion as well, no reason to split. --This ensures that remaining arg positions match for auto generated and regular NewTimer local optionVersion if type(optionName) == "number" then optionVersion = optionName optionName = nil end local allowdouble, hasVariance, timerStringWithVariance, minTimer, varianceDuration, timerStringVarianceGUI if type(timer) == "string" then if timer:match("d%d+") then -- parse doubling timers, e.g. "d20" allowdouble = true timer = tonumber(string.sub(timer, 2)) elseif timer:match("^v%d+%.?%d*%-%d+%.?%d*$") then -- parse variance, e.g. "v20.5-25.5" hasVariance = true timerStringWithVariance = timer timer, minTimer, varianceDuration = parseVarianceFromTimer(timer) timerStringVarianceGUI = ("%s-%s"):format(minTimer, timer) elseif timer:match("dv%d+%.?%d*%-%d+%.?%d*$") then -- parse doubling and variance, e.g. "dv20.5-25.5" allowdouble = true hasVariance = true timerStringWithVariance = timer timer, minTimer, varianceDuration = parseVarianceFromTimer(timer) timerStringVarianceGUI = ("%s-%s"):format(minTimer, timer) else error("bad string timer, expected number or string starting with d, v, or dv", 2) end end local spellName, icon local unparsedId = spellId if timerType == "achievement" then spellName = select(2, GetAchievementInfo(spellId)) icon = type(texture) == "number" and select(10, GetAchievementInfo(texture)) or texture or spellId and select(10, GetAchievementInfo(spellId)) elseif timerType == "cdspecial" or timerType == "nextspecial" or timerType == "stage" or timerType == "stagecount" or timerType == "stagecountcycle" or timerType == "stagecontext" or timerType == "stagecontextcount" or timerType == "intermission" or timerType == "intermissioncount" then icon = type(texture) == "number" and select(3, GetSpellInfo(texture)) or texture or (type(spellId) == "number" and select(3, GetSpellInfo(spellId))) or "Interface\\Icons\\Spell_Nature_WispSplode" if timerType == "stage" or timerType == "stagecount" or timerType == "stagecountcycle" or timerType == "stagecontext" or timerType == "stagecontextcount" or timerType == "intermission" or timerType == "intermissioncount" then colorType = 6 end elseif timerType == "roleplay" then icon = type(texture) == "number" and select(3, GetSpellInfo(texture)) or texture or (type(spellId) == "number" and select(3, GetSpellInfo(spellId))) or "Interface\\Icons\\SPELL_HOLY_BORROWEDTIME" colorType = 6 elseif timerType == "adds" or timerType == "addscustom" then icon = type(texture) == "number" and select(3, GetSpellInfo(texture)) or texture or (type(spellId) == "number" and select(3, GetSpellInfo(spellId))) or "Interface\\Icons\\Spell_Nature_WispSplode" colorType = 1 else spellName = DBM:GetSpellInfo(spellId or 0) if spellName then icon = type(texture) == "number" and ( texture <=8 and (iconFolder .. texture) or select(3, GetSpellInfo(texture))) or texture or spellId and select(3, GetSpellInfo(spellId)) else icon = nil end end spellName = spellName or tostring(spellId) local timerTextValue if timerText then --If timertext is a number, accept it as a secondary auto translate spellid if DBM.Options.ShortTimerText and type(timerText) == "number" then timerTextValue = timerText spellName = DBM:GetSpellInfo(timerText or 0)--Override Cached spell Name else timerTextValue = self.localization.timers[timerText] or timerText--Check timers table first, otherwise accept it as literal timer text end end local id = "Timer" .. (spellId or 0) .. timerType .. (optionVersion or "") local simpType = timerTypeSimplification[timerType] or timerType local waSpecialKey = waKeyOverrides[timerType] local obj = setmetatable( { objClass = "Timer", text = timerTextValue, type = timerType, simpType = simpType, waSpecialKey = waSpecialKey,--Not same as simpType, this overrides option key spellId = spellId, name = spellName,--If name gets stored as nil, it'll be corrected later in Timer start, if spell name returns in a later attempt timer = timer, id = id, icon = icon, colorType = colorType, inlineIcon = inlineIcon, keep = keep, countdown = countdown, countdownMax = countdownMax, r = r, g = g, b = b, requiresCombat = requiresCombat, isPriority = isPriority or false, allowdouble = allowdouble, hasVariance = hasVariance, minTimer = minTimer, timerStringWithVariance = timerStringWithVariance, varianceDuration = varianceDuration, startedTimers = {}, mod = self, }, mt ) obj:AddOption(optionDefault, optionName, colorType, countdown, spellId, timerType) tinsert(self.timers, obj) -- todo: move the string creation to the GUI with SetFormattedString... if timerType == "achievement" then self.localization.options[id] = L.AUTO_TIMER_OPTIONS[timerType]:format(GetAchievementLink(spellId):gsub("%[(.+)%]", "%1"), timer) elseif timerType == "cdspecial" or timerType == "cdcombo" or timerType == "nextspecial" or timerType == "nextcombo" or timerType == "stage" or timerType == "stagecount" or timerType == "stagecountcycle" or timerType == "intermission" or timerType == "intermissioncount" or timerType == "adds" or timerType == "addscustom" or timerType == "roleplay" or timerType == "combat" then--Timers without spellid, generic (do not add stagecontext here, it has spellname parsing) self.localization.options[id] = L.AUTO_TIMER_OPTIONS[timerType]:format(timerStringVarianceGUI or timer)--Using more than 1 stage timer or more than 1 special timer will break this, fortunately you should NEVER use more than 1 of either in a mod else self.localization.options[id] = L.AUTO_TIMER_OPTIONS[timerType]:format(unparsedId, timerStringVarianceGUI or timer) end return obj end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewTargetTimer(...) return newTimer(self, "target", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewTargetCountTimer(...) return newTimer(self, "targetcount", ...) end --Buff/Debuff/event on boss function bossModPrototype:NewBuffActiveTimer(...) return newTimer(self, "active", ...) end ----Buff/Debuff on players ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewBuffFadesTimer(...) return newTimer(self, "fades", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCastTimer(timer, ...) if tonumber(timer) and timer > 1000 then -- hehe :) best hack in DBM. This makes the first argument optional, so we can omit it to use the cast time from the spell id ;) local spellId = timer timer = select(7, DBM:GetSpellInfo(spellId)) or 1000 -- GetSpellInfo takes YOUR spell haste into account...WTF? local spellHaste = select(7, DBM:GetSpellInfo(53142)) / 10000 -- 53142 = Dalaran Portal, should have 10000 ms cast time timer = timer / spellHaste -- calculate the real cast time of the spell... return self:NewCastTimer(timer / 1000, spellId, ...) end return newTimer(self, "cast", timer, ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCastCountTimer(timer, ...) if tonumber(timer) and timer > 1000 then -- hehe :) best hack in DBM. This makes the first argument optional, so we can omit it to use the cast time from the spell id ;) local spellId = timer timer = select(7, DBM:GetSpellInfo(spellId)) or 1000 -- GetSpellInfo takes YOUR spell haste into account...WTF? local spellHaste = select(7, DBM:GetSpellInfo(53142)) / 10000 -- 53142 = Dalaran Portal, should have 10000 ms cast time timer = timer / spellHaste -- calculate the real cast time of the spell... return self:NewCastTimer(timer / 1000, spellId, ...) end return newTimer(self, "castcount", timer, ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCastSourceTimer(timer, ...) if tonumber(timer) and timer > 1000 then -- hehe :) best hack in DBM. This makes the first argument optional, so we can omit it to use the cast time from the spell id ;) local spellId = timer timer = select(7, DBM:GetSpellInfo(spellId)) or 1000 -- GetSpellInfo takes YOUR spell haste into account...WTF? local spellHaste = select(7, DBM:GetSpellInfo(53142)) / 10000 -- 53142 = Dalaran Portal, should have 10000 ms cast time timer = timer / spellHaste -- calculate the real cast time of the spell... return self:NewCastSourceTimer(timer / 1000, spellId, ...) end return newTimer(self, "castsource", timer, ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCDTimer(...) return newTimer(self, "cd", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCDCountTimer(...) return newTimer(self, "cdcount", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCDSourceTimer(...) return newTimer(self, "cdsource", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCDSpecialTimer(...) return newTimer(self, "cdspecial", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewNextTimer(...) return newTimer(self, "next", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewNextCountTimer(...) return newTimer(self, "nextcount", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewNextSourceTimer(...) return newTimer(self, "nextsource", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewNextSpecialTimer(...) return newTimer(self, "nextspecial", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewVarTimer(...) return newTimer(self, "var", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewVarCountTimer(...) return newTimer(self, "varcount", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewVarSourceTimer(...) return newTimer(self, "varsource", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewVarSpecialTimer(...) return newTimer(self, "varspecial", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewVarComboTimer(...) return newTimer(self, "varcombo", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewAchievementTimer(...) return newTimer(self, "achievement", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewPhaseTimer(...) return newTimer(self, "stage", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewRPTimer(...) return newTimer(self, "roleplay", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewAddsTimer(...) return newTimer(self, "adds", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewAddsCustomTimer(...) return newTimer(self, "addscustom", ...) end function bossModPrototype:NewNextNPTimer(...) return newTimer(self, "nextnp", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewCDNPTimer(...) return newTimer(self, "cdnp", ...) end function bossModPrototype:NewCDCountNPTimer(...) return newTimer(self, "cdcountnp", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewNextCountNPTimer(...) return newTimer(self, "nextcountnp", ...) end ---@overload fun(self: DBMMod, timer: number|string, spellId: number|string?, timerText: number|string?, optionDefault: SpecFlags|boolean?, optionName: string|number|boolean?, colorType: number?, texture: number|string?, inlineIcon: string?, keep: boolean?, countdown: number?, countdownMax: number?, r: number?, g: number?, b: number?, requiresCombat: boolean?, isPriority: boolean?): Timer function bossModPrototype:NewAITimer(...) return newTimer(self, "ai", ...) end function bossModPrototype:GetLocalizedTimerText(timerType, spellId, Name) local spellName if Name then spellName = Name--Pull from name stored in object elseif spellId then DBM:Debug("|cffff0000GetLocalizedTimerText fallback, this should not happen and is a bug. this fallback should be deleted if this message is never seen after async code is live|r") if timerType == "achievement" then spellName = select(2, GetAchievementInfo(spellId)) else spellName = DBM:GetSpellInfo(spellId) end --Name wasn't provided, but we succeeded in getting a name, generate one into object now for caching purposes --This would really only happen if GetSpellInfo failed to return spell name on first attempt (which now happens in 9.0) if spellName then self.name = spellName end end if L.AUTO_TIMER_TEXTS[timerType.."short"] and DBT.Options.StripCDText then return pformat(L.AUTO_TIMER_TEXTS[timerType.."short"], spellName) else return pformat(L.AUTO_TIMER_TEXTS[timerType], spellName) end end end ------------------------------ -- Berserk/Combat Objects -- ------------------------------ do local enragePrototype = {} local mt = {__index = enragePrototype} function enragePrototype:Start(timer) timer = timer or self.timer or 600 timer = timer <= 0 and self.timer - mabs(timer) or timer self.bar:SetTimer(timer) self.bar:Start() if self.warning1 then if timer > 660 then self.warning1:Schedule(timer - 600, 10, L.MIN) end if timer > 300 then self.warning1:Schedule(timer - 300, 5, L.MIN) end if timer > 180 then self.warning2:Schedule(timer - 180, 3, L.MIN) end end if self.warning2 then if timer > 60 then self.warning2:Schedule(timer - 60, 1, L.MIN) end if timer > 30 then self.warning2:Schedule(timer - 30, 30, L.SEC) end if timer > 10 then self.warning2:Schedule(timer - 10, 10, L.SEC) end end end function enragePrototype:Schedule(t) return self.owner:Schedule(t, self.Start, self) end function enragePrototype:Cancel() self.owner:Unschedule(self.Start, self) if self.warning1 then self.warning1:Cancel() end if self.warning2 then self.warning2:Cancel() end self.bar:Stop() end enragePrototype.Stop = enragePrototype.Cancel function bossModPrototype:NewBerserkTimer(timer, text, barText, barIcon) timer = timer or 600 local warning1 = self:NewAnnounce(text or L.GENERIC_WARNING_BERSERK, 1, nil, "warning_berserk", false) local warning2 = self:NewAnnounce(text or L.GENERIC_WARNING_BERSERK, 4, nil, "warning_berserk", false) --timer, name, icon, optionDefault, optionName, colorType, inlineIcon, keep, countdown, countdownMax, r, g, b, spellId, requiresCombat, waCustomName, customType local bar = self:NewTimer(timer, barText or L.GENERIC_TIMER_BERSERK, barIcon or 28131, nil, "timer_berserk", nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, "berserk") local obj = setmetatable( { warning1 = warning1, warning2 = warning2, bar = bar, timer = timer, owner = self }, mt ) return obj end function bossModPrototype:NewCombatTimer(timer, _, barText, barIcon) -- timer, text, barText, barIcon timer = timer or 10 --NewTimer(timer, name, texture, optionDefault, optionName, colorType, inlineIcon, keep, countdown, countdownMax, r, g, b) local bar = self:NewTimer(timer, barText or L.GENERIC_TIMER_COMBAT, barIcon or "Interface\\Icons\\Ability_Warrior_OffensiveStance", nil, "timer_combat", nil, nil, nil, 1, 5, nil, nil, nil, nil, nil, nil, "combat") local obj = setmetatable( { bar = bar, timer = timer, owner = self }, mt ) return obj end end --------------- -- Options -- --------------- function bossModPrototype:AddBoolOption(name, default, cat, func, extraOption, extraOptionTwo, spellId, optionType) if checkDuplicateObjects[name] and name ~= "timer_berserk" and name ~= "HealthFrame" then DBM:Debug("|cffff0000Option already exists for: |r"..name) else checkDuplicateObjects[name] = true end cat = cat or "misc" self.DefaultOptions[name] = (default == nil) or default if cat == "timer" then self.DefaultOptions[name.."TColor"] = extraOption or 0 self.DefaultOptions[name.."CVoice"] = extraOptionTwo or 0 end if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default if cat == "timer" then self.Options[name.."TColor"] = extraOption or 0 self.Options[name.."CVoice"] = extraOptionTwo or 0 end if spellId then if optionType and optionType == "achievement" then spellId = "at"..spellId--"at" for achievement timer end self:GroupSpells(spellId, name) end self:SetOptionCategory(name, cat, optionType) if func then self.optionFuncs = self.optionFuncs or {} self.optionFuncs[name] = func end end function bossModPrototype:AddSpecialWarningOption(name, default, defaultSound, cat, spellId, optionType) if checkDuplicateObjects[name] then DBM:Debug("|cffff0000Option already exists for: |r"..name) else checkDuplicateObjects[name] = true end cat = cat or "misc" self.DefaultOptions[name] = (default == nil) or default self.DefaultOptions[name.."SWSound"] = defaultSound or 1 self.DefaultOptions[name.."SWNote"] = true if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default self.Options[name.."SWSound"] = defaultSound or 1 self.Options[name.."SWNote"] = true if spellId then self:GroupSpells(spellId, name) end self:SetOptionCategory(name, cat, optionType) end --[[ --auraspellId must match debuff ID so EnablePrivateAuraSound function can call right option key and right debuff ID --groupSpellId is used if a diff option key is used in all other options with spell (will be quite common) function bossModPrototype:AddPrivateAuraSoundOption(auraspellId, default, groupSpellId) self.DefaultOptions["PrivateAuraSound"..auraspellId] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options["PrivateAuraSound"..auraspellId] = (default == nil) or default self.localization.options["PrivateAuraSound"..auraspellId] = L.AUTO_PRIVATEAURA_OPTION_TEXT:format(auraspellId) self:GroupSpells(groupSpellId or auraspellId, "PrivateAuraSound"..auraspellId) self:SetOptionCategory("PrivateAuraSound"..auraspellId, "misc") end --Function to actually register specific media to specific auras --auraspellId: Private aura spellId --voice: voice pack media path --voiceVersion: Required voice pack verion (if not met, falls back to airhorn function bossModPrototype:EnablePrivateAuraSound(auraspellId, voice, voiceVersion) if self.Options["PrivateAuraSound"..auraspellId] then if not self.paSounds then self.paSounds = {} end local mediaPath --Check valid voice pack sound local chosenVoice = DBM.Options.ChosenVoicePack2 if chosenVoice ~= "None" and not voiceSessionDisabled and voiceVersion <= SWFilterDisabled then mediaPath = "Interface\\AddOns\\DBM-VP"..chosenVoice.."\\"..voice..".ogg" else mediaPath = "Interface\\AddOns\\DBM-Core\\sounds\\AirHorn.ogg" end self.paSounds[#self.paSounds + 1] = C_UnitAuras.AddPrivateAuraAppliedSound({ spellID = auraspellId, unitToken = "player", soundFileName = mediaPath, outputChannel = "master", }) end end function bossModPrototype:DisablePrivateAuraSounds() for _, id in next, self.paSounds do C_UnitAuras.RemovePrivateAuraAppliedSound(id) end self.paSounds = nil end --]] --Extended Icon Usage Notes --Any time extended icons is used, option must be OFF by default --Option must be hidden from GUI if extended icoins not enabled --If extended icons are disabled, then on mod load, users option is reset to default (off) to prevent their mod from still executing SetIcon functions (this is because even if it's hidden from GUI, if option was created and enabled, it'd still run) function bossModPrototype:AddSetIconOption(name, spellId, default, iconType, iconsUsed, conflictWarning) self.DefaultOptions[name] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default if spellId and not DBM.Options.GroupOptionsExcludeIcon then self:GroupSpells(spellId, name) end self:SetOptionCategory(name, "icon") --Legacy bool and nil support if type(iconType) ~= "number" then if iconType then--true iconType = 5 else --false/nil iconType = 0 end end if iconType == 1 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_MELEE_A:format(spellId) or self.localization.options[name] elseif iconType == 2 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_MELEE_R:format(spellId) or self.localization.options[name] elseif iconType == 3 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_RANGED_A:format(spellId) or self.localization.options[name] elseif iconType == 4 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_RANGED_R:format(spellId) or self.localization.options[name] elseif iconType == 5 then --NPC/Mob setting uses icon elect feature and needs to establish latency check table if not self.findFastestComputer then self.findFastestComputer = {} end self.findFastestComputer[#self.findFastestComputer + 1] = name self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_NPCS:format(spellId) or self.localization.options[name] elseif iconType == 6 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_ALPHA:format(spellId) or self.localization.options[name] elseif iconType == 7 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_ROSTER:format(spellId) or self.localization.options[name] elseif iconType == 8 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_TANK_A:format(spellId) or self.localization.options[name] elseif iconType == 9 then self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS_TANK_R:format(spellId) or self.localization.options[name] else--Type 0 (Generic for targets) self.localization.options[name] = spellId and L.AUTO_ICONS_OPTION_TARGETS:format(spellId) or self.localization.options[name] end --A table defining used icons by number, insert icon textures to end of option if iconsUsed then self.localization.options[name] = self.localization.options[name].." (" for i=1, #iconsUsed do --Texture ID 137009 if direct calling RaidTargetingIcons stops working one day if iconsUsed[i] == 1 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:0:16:0:16|t" elseif iconsUsed[i] == 2 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:16:32:0:16|t" elseif iconsUsed[i] == 3 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:32:48:0:16|t" elseif iconsUsed[i] == 4 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:48:64:0:16|t" elseif iconsUsed[i] == 5 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:0:16:16:32|t" elseif iconsUsed[i] == 6 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:16:32:16:32|t" elseif iconsUsed[i] == 7 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:32:48:16:32|t" elseif iconsUsed[i] == 8 then self.localization.options[name] = self.localization.options[name].."|TInterface\\TargetingFrame\\UI-RaidTargetingIcons.blp:13:13:0:0:64:64:48:64:16:32|t" end end self.localization.options[name] = self.localization.options[name]..")" if conflictWarning then self.localization.options[name] = self.localization.options[name] .. L.AUTO_ICONS_OPTION_CONFLICT end end end function bossModPrototype:AddArrowOption(name, spellId, default, isRunTo) if isRunTo == true then isRunTo = 2 end--Support legacy self.DefaultOptions[name] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default self:GroupSpells(spellId, name) self:SetOptionCategory(name, "misc") if isRunTo == 2 then self.localization.options[name] = L.AUTO_ARROW_OPTION_TEXT:format(spellId) elseif isRunTo == 3 then self.localization.options[name] = L.AUTO_ARROW_OPTION_TEXT3:format(spellId) else self.localization.options[name] = L.AUTO_ARROW_OPTION_TEXT2:format(spellId) end end function bossModPrototype:AddRangeFrameOption(range, spellId, default) self.DefaultOptions["RangeFrame"] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options["RangeFrame"] = (default == nil) or default if spellId then self:GroupSpells(spellId, "RangeFrame") self.localization.options["RangeFrame"] = L.AUTO_RANGE_OPTION_TEXT:format(range, spellId) else self.localization.options["RangeFrame"] = L.AUTO_RANGE_OPTION_TEXT_SHORT:format(range) end self:SetOptionCategory("RangeFrame", "misc") end function bossModPrototype:AddHudMapOption(name, spellId, default) self.DefaultOptions[name] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default if spellId then self:GroupSpells(spellId, name) self.localization.options[name] = L.AUTO_HUD_OPTION_TEXT:format(spellId) else self.localization.options[name] = L.AUTO_HUD_OPTION_TEXT_MULTI end self:SetOptionCategory(name, "misc") end function bossModPrototype:AddNamePlateOption(name, spellId, default, forceDBM) if not spellId then error("AddNamePlateOption must provide valid spellId", 2) end self.DefaultOptions[name] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options[name] = (default == nil) or default self:GroupSpells(spellId, name) self:SetOptionCategory(name, "nameplate") self.localization.options[name] = forceDBM and L.AUTO_NAMEPLATE_OPTION_TEXT_FORCED:format(spellId) or L.AUTO_NAMEPLATE_OPTION_TEXT:format(spellId) end function bossModPrototype:AddInfoFrameOption(spellId, default, optionVersion, optionalThreshold) local oVersion = "" if optionVersion then oVersion = tostring(optionVersion) end self.DefaultOptions["InfoFrame"..oVersion] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options["InfoFrame"..oVersion] = (default == nil) or default if spellId then self:GroupSpells(spellId, "InfoFrame" .. oVersion) if optionalThreshold then self.localization.options["InfoFrame"..oVersion] = L.AUTO_INFO_FRAME_OPTION_TEXT3:format(spellId, optionalThreshold) else self.localization.options["InfoFrame"..oVersion] = L.AUTO_INFO_FRAME_OPTION_TEXT:format(spellId) end else self.localization.options["InfoFrame"..oVersion] = L.AUTO_INFO_FRAME_OPTION_TEXT2 end self:SetOptionCategory("InfoFrame"..oVersion, "misc") end function bossModPrototype:AddReadyCheckOption(questId, default, maxLevel) self.readyCheckQuestId = questId self.readyCheckMaxLevel = maxLevel or 999 self.DefaultOptions["ReadyCheck"] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options["ReadyCheck"] = (default == nil) or default self.localization.options["ReadyCheck"] = L.AUTO_READY_CHECK_OPTION_TEXT self:SetOptionCategory("ReadyCheck", "misc") end function bossModPrototype:AddSpeedClearOption(name, default) self.DefaultOptions["SpeedClearTimer"] = (default == nil) or default if default and type(default) == "string" then default = self:GetRoleFlagValue(default) end self.Options["SpeedClearTimer"] = (default == nil) or default self:SetOptionCategory("SpeedClearTimer", "timer") self.localization.options["SpeedClearTimer"] = L.AUTO_SPEEDCLEAR_OPTION_TEXT:format(name) end function bossModPrototype:AddSliderOption(name, minValue, maxValue, valueStep, default, cat, func) cat = cat or "misc" self.DefaultOptions[name] = {type = "slider", value = default or 0} self.Options[name] = default or 0 self:SetOptionCategory(name, cat) self.sliders = self.sliders or {} self.sliders[name] = { minValue = minValue, maxValue = maxValue, valueStep = valueStep, } if func then self.optionFuncs = self.optionFuncs or {} self.optionFuncs[name] = func end end function bossModPrototype:AddEditboxOption(name, default, cat, width, height, func) cat = cat or "misc" self.DefaultOptions[name] = {type = "editbox", value = default or ""} self.Options[name] = default or "" self:SetOptionCategory(name, cat) self.editboxes = self.editboxes or {} self.editboxes[name] = { width = width, height = height } if func then self.optionFuncs = self.optionFuncs or {} self.optionFuncs[name] = func end end function bossModPrototype:AddButton(name, onClick, cat, width, height, fontObject) cat = cat or "misc" self:SetOptionCategory(name, cat) self.buttons = self.buttons or {} self.buttons[name] = { onClick = onClick, width = width, height = height, fontObject = fontObject } end -- this function does not reset any settings to default if you remove an option in a later revision and a user has selected this option in an earlier revision were it still was available -- this will be fixed as soon as it is necessary due to removed options ;-) function bossModPrototype:AddDropdownOption(name, options, default, cat, func, spellId) cat = cat or "misc" self.DefaultOptions[name] = {type = "dropdown", value = default} self.Options[name] = default if spellId then self:GroupSpells(spellId, name) end self:SetOptionCategory(name, cat) self.dropdowns = self.dropdowns or {} self.dropdowns[name] = options if func then self.optionFuncs = self.optionFuncs or {} self.optionFuncs[name] = func end end function bossModPrototype:AddOptionSpacer(cat) cat = cat or "misc" if self.optionCategories[cat] then tinsert(self.optionCategories[cat], DBM_OPTION_SPACER) end end do local lineCount = 1 function bossModPrototype:AddOptionLine(text, cat, forceIgnore) if self.addon and not self.addon.oldOptions and DBM.Options.GroupOptionsBySpell and not forceIgnore then self.groupOptions["line" .. lineCount] = text lineCount = lineCount + 1 else cat = cat or "misc" if not self.optionCategories[cat] then self.optionCategories[cat] = {} end if self.optionCategories[cat] then tinsert(self.optionCategories[cat], {line = true, text = text}) end end end end function bossModPrototype:AddAnnounceSpacer() return self:AddOptionSpacer("announce") end function bossModPrototype:AddTimerSpacer() return self:AddOptionSpacer("timer") end function bossModPrototype:AddAnnounceLine(text) return self:AddOptionLine(text, "announce") end function bossModPrototype:AddTimerLine(text) return self:AddOptionLine(text, "timer") end function bossModPrototype:AddNamePlateLine(text) return self:AddOptionLine(text, "nameplate") end function bossModPrototype:AddIconLine(text) return self:AddOptionLine(text, "icon") end function bossModPrototype:AddMiscLine(text) return self:AddOptionLine(text, "misc", true) end function bossModPrototype:RemoveOption(name) self.Options[name] = nil for k, options in pairs(self.optionCategories) do removeEntry(options, name) if #options == 0 then self.optionCategories[k] = nil end end if self.optionFuncs then self.optionFuncs[name] = nil end end function bossModPrototype:GroupSpells(...) local spells = {...} local catSpell = tostring(tremove(spells, 1)) if not self.groupSpells[catSpell] then self.groupSpells[catSpell] = {} end for _, spell in ipairs(spells) do local sSpell = tostring(spell) self.groupSpells[sSpell] = catSpell if sSpell ~= catSpell and self.groupOptions[sSpell] then if not self.groupOptions[catSpell] then self.groupOptions[catSpell] = {} end for _, spell2 in ipairs(self.groupOptions[sSpell]) do tinsert(self.groupOptions[catSpell], spell2) end self.groupOptions[sSpell] = nil end end end function bossModPrototype:SetOptionCategory(name, cat, optionType) optionType = optionType or "" for _, options in pairs(self.optionCategories) do removeEntry(options, name) end if self.addon and not self.addon.oldOptions and DBM.Options.GroupOptionsBySpell and self.groupSpells[name] and not (optionType == "gtfo" or optionType == "adds" or optionType == "addscount" or optionType == "addscustom" or optionType:find("stage") or cat == "icon" and DBM.Options.GroupOptionsExcludeIcon) then local sSpell = self.groupSpells[name] if not self.groupOptions[sSpell] then self.groupOptions[sSpell] = {} end tinsert(self.groupOptions[sSpell], name) else if not self.optionCategories[cat] then self.optionCategories[cat] = {} end tinsert(self.optionCategories[cat], name) tinsert(self.categorySort, cat) end end -------------- -- Combat -- -------------- function bossModPrototype:RegisterCombat(cType, ...) if cType then cType = cType:lower() end local info = { type = cType, mob = self.creatureId, name = self.localization.general.name or self.id, msgs = (cType ~= "combat") and {...}, mod = self } if self.multiMobPullDetection then info.multiMobPullDetection = self.multiMobPullDetection end if self.noIEEUDetection then info.noIEEUDetection = self.noIEEUDetection end if self.noFriendlyEngagement then info.noFriendlyEngagement = self.noFriendlyEngagement end if self.noRegenDetection then info.noRegenDetection = self.noRegenDetection end if self.noMultiBoss then info.noMultiBoss = self.noMultiBoss end if self.WBEsync then info.WBEsync = self.WBEsync end if self.noBossDeathKill then info.noBossDeathKill = self.noBossDeathKill end -- use pull-mobs as kill mobs by default, can be overriden by RegisterKill if self.multiMobPullDetection then for _, v in ipairs(self.multiMobPullDetection) do info.killMobs = info.killMobs or {} info.killMobs[v] = true end end self.combatInfo = info if not self.zones then return end for v in pairs(self.zones) do combatInfo[v] = combatInfo[v] or {} tinsert(combatInfo[v], info) end end -- needs to be called _AFTER_ RegisterCombat function bossModPrototype:RegisterKill(msgType, ...) if not self.combatInfo then error("mod.combatInfo not yet initialized, use mod:RegisterCombat before using this method", 2) end if msgType == "kill" then if select("#", ...) > 0 then -- calling this method with 0 IDs means "use the values from SetCreatureID", this is already done by RegisterCombat as calling RegisterKill should be optional --> mod:RegisterKill("kill") with no IDs is never necessary self.combatInfo.killMobs = {} for i = 1, select("#", ...) do local v = select(i, ...) if type(v) == "number" then self.combatInfo.killMobs[v] = true end end end else self.combatInfo.killType = msgType self.combatInfo.killMsgs = {} for i = 1, select("#", ...) do local v = select(i, ...) self.combatInfo.killMsgs[v] = true end end end function bossModPrototype:SetDetectCombatInVehicle(flag) if not self.combatInfo then error("mod.combatInfo not yet initialized, use mod:RegisterCombat before using this method", 2) end self.combatInfo.noCombatInVehicle = not flag end function bossModPrototype:SetCreatureID(...) self.creatureId = ... if select("#", ...) > 1 then self.multiMobPullDetection = {...} if self.combatInfo then self.combatInfo.multiMobPullDetection = self.multiMobPullDetection self.numBoss = #self.multiMobPullDetection if self.inCombat then --Called mid combat, fix some variables self.vb.bossLeft = self.numBoss end end for i = 1, select("#", ...) do local cId = select(i, ...) bossIds[cId] = true end else local cId = ... bossIds[cId] = true self.numBoss = 1 if self.combatInfo then --Called mid combat, update combatinfo mob for boss health and win detection self.combatInfo.mob = self.creatureId end end end ---Used to set Encounter IDs this mod will pass to ENCOUNTER_START/ENCOUNTER_END/BOSS_KILL function bossModPrototype:SetEncounterID(...) self.encounterId = ... if select("#", ...) > 1 then self.multiEncounterPullDetection = {...} if self.combatInfo then self.combatInfo.multiEncounterPullDetection = self.multiEncounterPullDetection end end end function bossModPrototype:DisableIEEUCombatDetection() self.noIEEUDetection = true if self.combatInfo then self.combatInfo.noIEEUDetection = true end end function bossModPrototype:DisableFriendlyDetection() self.noFriendlyEngagement = true if self.combatInfo then self.combatInfo.noFriendlyEngagement = true end end function bossModPrototype:DisableRegenDetection() self.noRegenDetection = true if self.combatInfo then self.combatInfo.noRegenDetection = true end end function bossModPrototype:DisableMultiBossPulls() self.noMultiBoss = true if self.combatInfo then self.combatInfo.noMultiBoss = true end end function bossModPrototype:EnableWBEngageSync() self.WBEsync = true if self.combatInfo then self.combatInfo.WBEsync = true end end ---Used when a bosses death condition should be ignored (maybe they die repeatedly for example) function bossModPrototype:DisableBossDeathKill() self.noBossDeathKill = true if self.combatInfo then self.combatInfo.noBossDeathKill = true end end ---Used when a boss is scripted in a hacky way that their creature Id changes mid fight, and we want to treat multiple IDs as a single boss function bossModPrototype:SetMultiIDSingleBoss() self.multiIDSingleBoss = true end --used for knowing if a specific mod is engaged function bossModPrototype:IsInCombat() return self.inCombat end --Used for knowing if any person is in any kind of combat period function bossModPrototype:GroupInCombat() local combatFound = false --Any Boss engaged if DBM:IsEncounterInProgress() then combatFound = true end --Self in Combat if InCombatLockdown() or UnitAffectingCombat("player") then combatFound = true end --Any Other group member in combat if not combatFound then for uId in DBM:GetGroupMembers() do if UnitAffectingCombat(uId) and not UnitIsDeadOrGhost(uId) then combatFound = true break end end end return combatFound end function bossModPrototype:IsAlive() return not UnitIsDeadOrGhost("player") end function bossModPrototype:SetMinCombatTime(t) self.minCombatTime = t end -- needs to be called after RegisterCombat function bossModPrototype:SetWipeTime(t) if not self.combatInfo then error("mod.combatInfo not yet initialized, use mod:RegisterCombat before using this method", 2) end self.combatInfo.wipeTimer = t end -- fix for LFR ToES Tsulong combat detection bug after killed. function bossModPrototype:SetReCombatTime(t, t2)--T1, after kill. T2 after wipe self.reCombatTime = t self.reCombatTime2 = t2 end function bossModPrototype:SetOOCBWComms() tinsert(oocBWComms, self) end function bossModPrototype:GetBossHPString(cId) local idType = (GetNumRaidMembers() == 0 and "party") or "raid" for i = 0, mmax(GetNumRaidMembers(), GetNumPartyMembers()) do local unitId = ((i == 0) and "target") or idType..i.."target" local guid = UnitGUID(unitId) if guid and tonumber(guid:sub(8, 12), 16) == cId then return floor(UnitHealth(unitId)/UnitHealthMax(unitId) * 100).."%" end end return CL.UNKNOWN end function bossModPrototype:GetHP() return self:GetBossHPString((self.combatInfo and self.combatInfo.mob) or self.creatureId) end ----------------------- -- Synchronization -- ----------------------- function bossModPrototype:SendSync(event, ...) event = event or "" local arg = select("#", ...) > 0 and strjoin("\t", tostringall(...)) or "" local str = ("%s\t%s\t%s\t%s"):format(self.id, self.revision or 0, event, arg) local spamId = self.id .. event .. arg -- *not* the same as the sync string, as it doesn't use the revision information local time = GetTime() --Mod syncs are more strict and enforce latency threshold always. --Do not put latency check in main sendSync local function (line 313) though as we still want to get version information, etc from these users. if not private.modSyncSpam[spamId] or (time - private.modSyncSpam[spamId]) > 8 then self:ReceiveSync(event, playerName, self.revision or 0, tostringall(...)) sendSync("DBMv4-Mod", str) end end function bossModPrototype:SendBigWigsSync(msg, extra) if not dbmIsEnabled then return end msg = "B^".. msg if extra then msg = msg .."^".. extra end if IsInGroup() then SendAddonMessage("BigWigs", msg, IsInRaid() and "RAID" or "PARTY") end end function bossModPrototype:ReceiveSync(event, sender, revision, ...) local spamId = self.id .. event .. strjoin("\t", ...) local time = GetTime() if (not private.modSyncSpam[spamId] or (time - private.modSyncSpam[spamId]) > self.SyncThreshold) and self.OnSync and (not self.minSyncRevision or revision >= self.minSyncRevision) then private.modSyncSpam[spamId] = time -- we have to use the sender as last argument for compatibility reasons (stupid old API...) -- avoid table allocations for frequently used number of arguments if select("#", ...) <= 1 then -- syncs with no arguments have an empty argument (also for compatibility reasons) self:OnSync(event, ... or "", sender) elseif select("#", ...) == 2 then self:OnSync(event, ..., select(2, ...), sender) else local tmp = { ... } tmp[#tmp + 1] = sender self:OnSync(event, unpack(tmp)) end end end function bossModPrototype:SetRevision(revision) revision = parseCurseDate(revision or "") if not revision or type(revision) == "string" then -- bad revision: either forgot the svn keyword or using github revision = DBM.Revision end self.revision = revision end --Either treat it as a valid number, or a curse string that needs to be made into a valid number function bossModPrototype:SetMinSyncRevision(revision) self.minSyncRevision = (type(revision or "") == "number") and revision or parseCurseDate(revision) end function bossModPrototype:SetHotfixNoticeRev(revision) self.hotfixNoticeRev = (type(revision or "") == "number") and revision or parseCurseDate(revision) end ----------------- -- Scheduler -- ----------------- function bossModPrototype:Schedule(t, f, ...) return DBMScheduler:Schedule(t, f, self, ...) end function bossModPrototype:Unschedule(f, ...) return DBMScheduler:Unschedule(f, self, ...) end function bossModPrototype:ScheduleMethod(t, method, ...) if not self[method] then error(("Method %s does not exist"):format(tostring(method)), 2) end return self:Schedule(t, self[method], self, ...) end bossModPrototype.ScheduleEvent = bossModPrototype.ScheduleMethod function bossModPrototype:UnscheduleMethod(method, ...) if not self[method] then error(("Method %s does not exist"):format(tostring(method)), 2) end return self:Unschedule(self[method], self, ...) end bossModPrototype.UnscheduleEvent = bossModPrototype.UnscheduleMethod ------------- -- Icons -- ------------- do local iconsModule = private:GetModule("Icons") function bossModPrototype:SetIcon(...) return iconsModule:SetIcon(self, ...) end function bossModPrototype:SetIconByTable(...) return iconsModule:SetIconByTable(self, ...) end function bossModPrototype:SetUnsortedIcon(...) return iconsModule:SetUnsortedIcon(self, ...) end --Backwards compat for old mods using this method, which is now merged into SetSortedIcon function bossModPrototype:SetAlphaIcon(delay, target, maxIcon, returnFunc, scanId, ...) return iconsModule:SetSortedIcon(self, "alpha", delay, target, 1, maxIcon, false, returnFunc, scanId, ...) end function bossModPrototype:SetIconBySortedTable(...) return iconsModule:SetIconBySortedTable(self, ...) end function bossModPrototype:SetSortedIcon(...) return iconsModule:SetSortedIcon(self, ...) end function bossModPrototype:ScanForMobs(...) return iconsModule:ScanForMobs(self, ...) end function bossModPrototype:RemoveIcon(...) return iconsModule:RemoveIcon(self, ...) end bossModPrototype.GetIcon = iconsModule.GetIcon bossModPrototype.ClearIcons = iconsModule.ClearIcons bossModPrototype.CanSetIcon = iconsModule.CanSetIcon end ----------------------- -- Model Functions -- ----------------------- function bossModPrototype:SetModelScale(scale) self.modelScale = scale end function bossModPrototype:SetModelOffset(x, y, z) self.modelOffsetX = x self.modelOffsetY = y self.modelOffsetZ = z end function bossModPrototype:SetModelRotation(r) self.modelRotation = r end function bossModPrototype:SetModelMoveSpeed(v) self.modelMoveSpeed = v end function bossModPrototype:SetModelID(id) self.modelId = id end function bossModPrototype:SetModelSound(long, short)--PlaySoundFile prototype for model viewer, long is long sound, short is a short clip, configurable in UI, both sound paths defined in boss mods. self.modelSoundLong = long self.modelSoundShort = short end function bossModPrototype:EnableModel() self.modelEnabled = true end function bossModPrototype:DisableModel() self.modelEnabled = nil end -------------------- -- Localization -- -------------------- function bossModPrototype:GetLocalizedStrings() self.localization.miscStrings.name = self.localization.general.name return self.localization.miscStrings end ================================================ FILE: DBM-Core/DBM-Core.toc ================================================ ## Interface: 30300 ## X-Min-Interface: 30300 ## Title:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF Core|r ## Title-zhCN:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF 核心|r ## Title-ruRU:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF Ядро|r ## Title-zhTW:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF 核心|r ## Title-koKR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF 핵심 모듈|r ## Title-esES:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF Núcleo|r ## Title-esMX:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF Núcleo|r ## Title-frFR:|cffffe00a<|r|cffff7d0aDBM|r|cffffe00a>|r |cff0055FF Noyau|r ## Notes: Deadly Boss Mods ## Dependencies: DBM-StatusBarTimers ## OptionalDeps: LibStub, CallbackHandler-1.0, LibSharedMedia-3.0, LibChatAnims, LibDBIcon-1.0, LibDeflate, LibSerialize, LibGroupTalents-1.0, LibTalentQuery-1.0, ElvUI ## SavedVariables: DBM_AllSavedOptions, DBM_MinimapIcon ## SavedVariablesPerCharacter: DBM_UsedProfile, DBM_UseDualProfile, DBM_CharSavedRevision, DBM_SavedOptions ## LoadOnDemand: 0 ## DefaultState: enabled ## Author: Barsoom, Bunny67, Zidras, DBM-Frostmourne contributors, original DBM team ## Version: 10.1.13_alpha ## X-Website: https://github.com/Zidras/DBM-Warmane/ compat.lua Libs\Ace3\LibStub\LibStub.lua Libs\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua Libs\Ace3\AceAddon-3.0\AceAddon-3.0.lua Libs\Ace3\AceEvent-3.0\AceEvent-3.0.lua Libs\Ace3\AceHook-3.0\AceHook-3.0.lua Libs\Ace3\AceTimer-3.0\AceTimer-3.0.lua Libs\Ace3\AceDB-3.0\AceDB-3.0.lua Libs\Ace3\AceLocale-3.0\AceLocale-3.0.lua Libs\Ace3\AceConsole-3.0\AceConsole-3.0.lua Libs\Ace3\AceGUI-3.0\AceGUI-3.0.xml Libs\Ace3\AceComm-3.0\AceComm-3.0.xml Libs\Ace3\AceSerializer-3.0\AceSerializer-3.0.lua Libs\LibAnim\LibAnim.lua Libs\LibDataBroker-1.1\LibDataBroker-1.1.lua Libs\LibDBIcon-1.0\LibDBIcon-1.0.lua Libs\LibTalentQuery-1.0\LibTalentQuery-1.0.lua Libs\LibGroupTalents-1.0\LibGroupTalents-1.0.lua Libs\LibSharedMedia-3.0\LibSharedMedia-3.0.lua Libs\LibDurability\LibDurability.lua Libs\LibLatency\LibLatency.lua Libs\LibDeflate\LibDeflate.lua Libs\LibSerialize\LibSerialize.lua Libs\LibRangeCheck-2.0\LibRangeCheck-2.0.lua Libs\SpecializedAbsorbs-1.0\SpecializedAbsorbs-1.0.lua localization.en.lua localization.de.lua localization.cn.lua localization.ru.lua localization.fr.lua localization.tw.lua localization.kr.lua localization.es.lua commonlocal.en.lua commonlocal.tw.lua commonlocal.cn.lua commonlocal.de.lua commonlocal.es.lua commonlocal.fr.lua commonlocal.kr.lua commonlocal.ru.lua # Pre-core modules modules\Modules.lua modules\SpecRole.lua modules\Scheduler.lua modules\DevTools.lua modules\Icons.lua modules\TargetScanning.lua # Core DBM-Core.lua DBM-Arrow.lua DBM-Flash.lua DBM-RangeCheck.lua DBM-InfoFrame.lua DBM-BossHealth.lua DBM-BossHealth.xml DBM-TimerTracker.xml DBM-TimerTracker.lua DBM-BossBannerToast.lua # Modules modules\Commands.lua modules\Hyperlinks.lua modules\MinimapButton.lua modules\Notes.lua modules\Sounds.lua modules\UpdateReminder.lua modules\objects\Localization.lua ================================================ FILE: DBM-Core/DBM-Flash.lua ================================================ --------------- -- Globals -- --------------- DBM.Flash = {} -------------- -- Locals -- -------------- local flashFrame = DBM.Flash local frame, duration, elapsed, totalRepeat -------------------- -- Create Frame -- -------------------- frame = CreateFrame("Frame", "DBMFlash", UIParent) frame.backdropInfo = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background" -- 137056 } frame:SetBackdrop(frame.backdropInfo) frame:SetAllPoints(UIParent) frame:SetFrameStrata("BACKGROUND") frame:Hide() ------------------------ -- OnUpdate Handler -- ------------------------ frame:SetScript("OnUpdate", function(self, e) elapsed = elapsed + e if elapsed >= duration then if totalRepeat == 0 then self:Hide() return end elapsed = 0 totalRepeat = totalRepeat - 1 self:SetAlpha(0) return end self:SetAlpha(-(elapsed / (duration / 2) - 1) ^ 2 + 1) end) function flashFrame:Show(red, green, blue, dur, alpha, repeatFlash) duration = dur or 0.4 elapsed = 0 totalRepeat = repeatFlash or 0 frame:SetBackdropColor(red or 1, green or 0, blue or 0, alpha or 0.3) frame:Show() end function flashFrame:IsShown() return frame and frame:IsShown() end function flashFrame:Hide() frame:Hide() end ================================================ FILE: DBM-Core/DBM-InfoFrame.lua ================================================ --------------- -- Globals -- --------------- DBM.InfoFrame = {} ------------------- -- Local Globals -- ------------------- local DBM = DBM local L = DBM_CORE_L local UnitClass, GetTime, GetPartyAssignment, UnitGroupRolesAssigned, GetRaidTargetIndex, UnitExists, UnitName, UnitHealth, UnitPower, UnitPowerMax, UnitIsDeadOrGhost, UnitThreatSituation, UnitIsUnit, UIDropDownMenu_CreateInfo, UIDropDownMenu_AddButton = UnitClass, GetTime, GetPartyAssignment, UnitGroupRolesAssigned, GetRaidTargetIndex, UnitExists, UnitName, UnitHealth, UnitPower, UnitPowerMax, UnitIsDeadOrGhost, UnitThreatSituation, UnitIsUnit, UIDropDownMenu_CreateInfo, UIDropDownMenu_AddButton local error, tostring, type, pairs, ipairs, select, tonumber, tsort, twipe, mfloor, mmax, mmin, mrandom, schar, ssplit = error, tostring, type, pairs, ipairs, select, tonumber, table.sort, table.wipe, math.floor, math.max, math.min, math.random, string.char, string.split local ADDITIONAL_POWER_BAR_INDEX = ADDITIONAL_POWER_BAR_INDEX or 0 local NORMAL_FONT_COLOR, SPELL_FAILED_OUT_OF_RANGE = NORMAL_FONT_COLOR, SPELL_FAILED_OUT_OF_RANGE local RAID_CLASS_COLORS = _G["CUSTOM_CLASS_COLORS"] or RAID_CLASS_COLORS-- for Phanx' Class Colors --Hard code STANDARD_TEXT_FONT since skinning mods like to taint it (or worse, set it to nil, wtf?) local standardFont if LOCALE_koKR then standardFont = "Fonts\\2002.TTF" elseif LOCALE_zhCN then standardFont = "Fonts\\ARKai_T.ttf" elseif LOCALE_zhTW then standardFont = "Fonts\\blei00d.TTF" elseif LOCALE_ruRU then standardFont = "Fonts\\FRIZQT___CYR.TTF" else standardFont = "Fonts\\FRIZQT__.TTF" end -------------- -- Locals -- -------------- local infoFrame = DBM.InfoFrame local frame, initializeDropdown, currentEvent, createFrame local maxLines, modLines, maxCols, modCols, prevLines = 5, 5, 1, 1, 0 local sortMethod = 1--1 Default, 2 SortAsc, 3 GroupId local lines, sortedLines, icons, value = {}, {}, {}, {} local playerName = UnitName("player") local AceTimer = LibStub("AceTimer-3.0") local SpecializedAbsorbs = LibStub("SpecializedAbsorbs-1.0") --------------------- -- Dropdown Menu -- --------------------- do local function toggleLocked() DBM.Options.InfoFrameLocked = not DBM.Options.InfoFrameLocked end local function toggleShowSelf() DBM.Options.InfoFrameShowSelf = not DBM.Options.InfoFrameShowSelf end local function setLines(_, line) prevLines = 0 DBM.Options.InfoFrameLines = line if line ~= 0 then maxLines = line else maxLines = modLines or 5 end end local function setCols(_, col) prevLines = 0 DBM.Options.InfoFrameCols = col if col ~= 0 then maxCols = col else maxCols = modCols or 5 end end function initializeDropdown(_, level, menu) local info if level == 1 then info = UIDropDownMenu_CreateInfo() info.text = L.LOCK_FRAME if DBM.Options.InfoFrameLocked then info.checked = true end info.func = toggleLocked UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.keepShownOnClick = true info.text = L.INFOFRAME_SHOW_SELF if DBM.Options.InfoFrameShowSelf then info.checked = true end info.func = toggleShowSelf UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_SETLINES info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "lines" UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_SETCOLS info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "cols" UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = HIDE info.notCheckable = true info.func = infoFrame.Hide info.arg1 = infoFrame UIDropDownMenu_AddButton(info, 1) elseif level == 2 then if menu == "lines" then info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINESDEFAULT info.func = setLines info.arg1 = 0 info.checked = (DBM.Options.InfoFrameLines == 0) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(3) info.func = setLines info.arg1 = 3 info.checked = (DBM.Options.InfoFrameLines == 3) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(5) info.func = setLines info.arg1 = 5 info.checked = (DBM.Options.InfoFrameLines == 5) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(8) info.func = setLines info.arg1 = 8 info.checked = (DBM.Options.InfoFrameLines == 8) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(10) info.func = setLines info.arg1 = 10 info.checked = (DBM.Options.InfoFrameLines == 10) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(15) info.func = setLines info.arg1 = 15 info.checked = (DBM.Options.InfoFrameLines == 15) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(20) info.func = setLines info.arg1 = 20 info.checked = (DBM.Options.InfoFrameLines == 20) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINES_TO:format(40) info.func = setLines info.arg1 = 40 -- Use 40 in classic for full man raids info.checked = (DBM.Options.InfoFrameLines == 40) UIDropDownMenu_AddButton(info, 2) elseif menu == "cols" then info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_LINESDEFAULT info.func = setCols info.arg1 = 0 info.checked = (DBM.Options.InfoFrameCols == 0) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(1) info.func = setCols info.arg1 = 1 info.checked = (DBM.Options.InfoFrameCols == 1) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(2) info.func = setCols info.arg1 = 2 info.checked = (DBM.Options.InfoFrameCols == 2) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(3) info.func = setCols info.arg1 = 3 info.checked = (DBM.Options.InfoFrameCols == 3) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(4) info.func = setCols info.arg1 = 4 info.checked = (DBM.Options.InfoFrameCols == 4) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(5) info.func = setCols info.arg1 = 5 info.checked = (DBM.Options.InfoFrameCols == 5) UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.INFOFRAME_COLS_TO:format(6) info.func = setCols info.arg1 = 6 info.checked = (DBM.Options.InfoFrameCols == 6) UIDropDownMenu_AddButton(info, 2) end end end end ------------------------ -- Create the frame -- ------------------------ function createFrame() frame = CreateFrame("Frame", "DBMInfoFrame", UIParent) frame:Hide() frame:SetFrameStrata("DIALOG") frame.backdropInfo = { bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", -- 131071 tile = true, tileSize = 16 } frame:SetBackdrop(frame.backdropInfo) frame:SetPoint(DBM.Options.InfoFramePoint, UIParent, DBM.Options.InfoFramePoint, DBM.Options.InfoFrameX, DBM.Options.InfoFrameY) frame:SetSize(10, 10) frame:SetClampedToScreen(true) frame:EnableMouse(true) frame:SetToplevel(true) frame:SetMovable(true) frame:RegisterForDrag("LeftButton") frame:SetScript("OnDragStart", function(self) if not DBM.Options.InfoFrameLocked then self:StartMoving() end end) frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() local point, _, _, x, y = self:GetPoint(1) DBM.Options.InfoFrameX = x DBM.Options.InfoFrameY = y DBM.Options.InfoFramePoint = point end) frame:SetScript("OnEvent", function(self, event, ...) if infoFrame[event] then infoFrame[event](self, ...) end end) frame:SetScript("OnMouseDown", function(_, button) if button == "RightButton" then local dropdownFrame = CreateFrame("Frame", "DBMInfoFrameDropdown", frame, "UIDropDownMenuTemplate") UIDropDownMenu_Initialize(dropdownFrame, initializeDropdown) ToggleDropDownMenu(1, nil, dropdownFrame, "cursor", 5, -10) end end) local header = frame:CreateFontString(nil, "OVERLAY", "GameFontNormal") header:SetTextColor(1, 1, 1) header:SetPoint("BOTTOMLEFT", frame, "TOPLEFT", 2, 2) frame.header = header infoFrame:SetHeader() frame.lines = {} end ------------------------ -- Update functions -- ------------------------ local updateCallbacks = {} local function sortFuncDesc(a, b) return lines[a] > lines[b] end local function sortFuncAsc(a, b) return lines[a] < lines[b] end local function sortGroupId(a, b) return DBM.GetGroupId(DBM, a) < DBM.GetGroupId(DBM, b) end local function updateLines(preSorted) twipe(sortedLines) if preSorted then -- Copy table as code from mod keeps around references this this and the "normal" table is wiped regularly for i, v in ipairs(preSorted) do sortedLines[i] = v end else for i in pairs(lines) do sortedLines[#sortedLines + 1] = i end if sortMethod == 3 then tsort(sortedLines, sortGroupId) elseif sortMethod == 2 then tsort(sortedLines, sortFuncAsc) else tsort(sortedLines, sortFuncDesc) end end for _, v in ipairs(updateCallbacks) do v(sortedLines) end end --[[ local function namesortFuncAsc(a, b) return a < b end local function updateNamesortLines() twipe(sortedLines) for i in pairs(lines) do sortedLines[#sortedLines + 1] = i end tsort(sortedLines, namesortFuncAsc) for _, v in ipairs(updateCallbacks) do v(sortedLines) end end ]]-- local function updateLinesCustomSort(sortFunc) twipe(sortedLines) for i in pairs(lines) do sortedLines[#sortedLines + 1] = i end tsort(sortedLines, sortFunc) for _, v in ipairs(updateCallbacks) do v(sortedLines) end end local function updateIcons() twipe(icons) for uId in DBM:GetGroupMembers() do local icon = GetRaidTargetIndex(uId) local icon2 = GetRaidTargetIndex(uId .. "target") if icon and icon <= 8 then icons[DBM:GetUnitFullName(uId)] = ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t"):format(icon) end if icon2 and icon2 <= 8 then icons[DBM:GetUnitFullName(uId .. "target")] = ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t"):format(icon2) end end for i = 1, 5 do local icon = GetRaidTargetIndex("boss" .. i) if icon then icons[UnitName("boss" .. i)] = ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t"):format(icon) end end end local function updateHealth() twipe(lines) local threshold = value[1] for uId in DBM:GetGroupMembers() do if UnitHealth(uId) < threshold and not UnitIsDeadOrGhost(uId) then lines[DBM:GetUnitFullName(uId)] = UnitHealth(uId) - threshold end end updateLines() updateIcons() end local function updatePlayerPower() twipe(lines) local threshold = value[1] local powerType = value[2] local spellFilter = value[3] -- Value 4 is the noUpdate handler -- Value 5 is sorting method, handled in show handler for uId in DBM:GetGroupMembers() do if not spellFilter or not DBM:UnitDebuff(uId, spellFilter) then local maxPower = UnitPowerMax(uId, powerType) if maxPower ~= 0 and not UnitIsDeadOrGhost(uId) and UnitPower(uId, powerType) / UnitPowerMax(uId, powerType) * 100 >= threshold then lines[DBM:GetUnitFullName(uId)] = UnitPower(uId, powerType) end end end if DBM.Options.InfoFrameShowSelf and not lines[playerName] and UnitPower("player", powerType) > 0 then lines[playerName] = UnitPower("player", powerType) end updateLines() updateIcons() end local function updateEnemyPower() twipe(lines) local threshold = value[1] local powerType = value[2] local specificUnit = value[3] if powerType then -- Only do power type defined if specificUnit then specificUnit = UnitExists(specificUnit) or DBM:GetUnitIdFromGUID(specificUnit)--unitID already passed or GUID we convert into unitID if UnitExists(specificUnit) then local currentPower, maxPower = UnitPower(specificUnit, powerType), UnitPowerMax(specificUnit, powerType) if maxPower and maxPower > 0 then local percent = currentPower / maxPower * 100 if percent >= threshold then lines[UnitName(specificUnit)] = mfloor(percent) .. "%" end end end else for i = 1, 5 do local uId = "boss" .. i local currentPower, maxPower = UnitPower(uId), UnitPowerMax(uId) if maxPower and maxPower > 0 then local percent = currentPower / maxPower * 100 if percent >= threshold then lines[UnitName(uId)] = mfloor(percent) .. "%" end end end end else -- Check primary power type and alternate power types together. This should only be used if BOTH power types exist on same boss if specificUnit then specificUnit = UnitExists(specificUnit) or DBM:GetUnitIdFromGUID(specificUnit)--unitID already passed or GUID we convert into unitID if UnitExists(specificUnit) then -- Primary Power local currentPower, maxPower = UnitPower(specificUnit), UnitPowerMax(specificUnit) if maxPower and maxPower > 0 then local percent = currentPower / maxPower * 100 if percent >= threshold then lines[UnitName(specificUnit)] = mfloor(percent) .. "%" end end -- Alternate Power local currentAltPower, maxAltPower = UnitPower(specificUnit, ADDITIONAL_POWER_BAR_INDEX), UnitPowerMax(specificUnit, ADDITIONAL_POWER_BAR_INDEX) if maxAltPower and maxAltPower > 0 then if currentAltPower / maxAltPower * 100 >= threshold then lines[UnitName(specificUnit)] = L.INFOFRAME_ALT .. currentAltPower end end end else for i = 1, 5 do local uId = "boss" .. i -- Primary Power local currentPower, maxPower = UnitPower(uId), UnitPowerMax(uId) if maxPower and maxPower > 0 then if currentPower / maxPower * 100 >= threshold then lines[UnitName(uId)] = currentPower end end -- Alternate Power local currentAltPower, maxAltPower = UnitPower(uId, ADDITIONAL_POWER_BAR_INDEX), UnitPowerMax(uId, ADDITIONAL_POWER_BAR_INDEX) if maxAltPower and maxAltPower > 0 then if currentAltPower / maxAltPower * 100 >= threshold then lines[UnitName(uId)] = L.INFOFRAME_ALT .. currentAltPower end end end end end updateLines() updateIcons() end -- WotLK does not have absorb API, so absorb numbers will be estimated using SpecializedAbsorbs library local function updateEnemyAbsorb() twipe(lines) local spellInput = value[1] local totalAbsorb = value[2] local specificUnit = value[3] if specificUnit then specificUnit = UnitExists(specificUnit) or DBM:GetUnitIdFromGUID(specificUnit)--unitID already passed or GUID we convert into unitID if UnitExists(specificUnit) then local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(specificUnit), spellInput) else -- Get all of them absorbAmount = SpecializedAbsorbs:UnitTotal(UnitGUID(specificUnit)) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(specificUnit)] = mfloor(absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(specificUnit)] = mfloor(absorbAmount) end end end else--Generic absorbs for bosses. Not to be mistaken for updateMultiEnemyAbsorb, which supports checking multiple units that might or might not be bosses for i = 1, 5 do local uId = "boss" .. i if UnitExists(uId) then local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(uId), spellInput) else -- Get all of them absorbAmount = SpecializedAbsorbs:UnitTotal(UnitGUID(uId)) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end end end updateLines() updateIcons() end --Really hate splitting this off from updateEnemyAbsorb but having them merged was even uglier --Note, this method also less efficient than boss only or single unit absorb tracking. --Don't use this function to be lazy (ie just passing 1 guid instead of finding valid unit at mod level) local function updateMultiEnemyAbsorb() twipe(lines) local spellInput = value[1] local totalAbsorb = value[2] local guidTable = value[3]--Multi target by table local guidTracked = {} for i = 1, 10 do if #guidTable == #guidTracked then--Stop searching, found everything we're looking for. break end local uId = "boss" .. i if UnitExists(uId) then local targetGUID = UnitGUID(uId) if guidTable[targetGUID] and not guidTracked[targetGUID] then guidTracked[targetGUID] = true local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(targetGUID, spellInput) else -- Get all of them absorbAmount = SpecializedAbsorbs:UnitTotal(targetGUID) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end end end for unitId in DBM:GetGroupMembers() do--Do not use self on this function, because self might be bossModPrototype if #guidTable == #guidTracked then--Stop searching, found everything we're looking for. break end local uId = unitId .. "target" local targetGUID = UnitGUID(unitId) if guidTable[targetGUID] and not guidTracked[targetGUID] then guidTracked[targetGUID] = true local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(uId), spellInput) else -- Get all of them absorbAmount = SpecializedAbsorbs:UnitTotal(UnitGUID(uId)) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end end updateLines() updateIcons() end local function updateAllAbsorb() twipe(lines) local spellInput = value[1] local totalAbsorb = value[2] for i = 1, 5 do local uId = "boss" .. i if UnitExists(uId) then local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(uId), spellInput) else -- Get all of them absorbAmount = SpecializedAbsorbs:UnitTotal(UnitGUID(uId)) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end end if spellInput then for uId in DBM:GetGroupMembers() do local absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(uId), spellInput) if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end end updateLines() updateIcons() end local function updatePlayerAbsorb() twipe(lines) local spellInput = value[1] local totalAbsorb = value[2] for uId in DBM:GetGroupMembers() do local absorbAmount if spellInput then -- Get specific spell absorb absorbAmount = SpecializedAbsorbs:UnitEffect(UnitGUID(uId), spellInput) else--Not even spell input given, this is a very generic infoframe absorbAmount = SpecializedAbsorbs:UnitTotal(UnitGUID(uId)) end if absorbAmount and absorbAmount > 0 then if totalAbsorb then lines[UnitName(uId)] = mfloor(totalAbsorb and absorbAmount / totalAbsorb * 100) .. "%" else lines[UnitName(uId)] = mfloor(absorbAmount) end end end updateLines() updateIcons() end -- Buffs that are good to have, therefor bad not to have them. local function updatePlayerBuffs() twipe(lines) local spellName = value[1] local tankIgnored = value[2] for uId in DBM:GetGroupMembers() do if tankIgnored and (UnitGroupRolesAssigned(uId) == "TANK" or GetPartyAssignment("MAINTANK", uId, 1)) then else if not DBM:UnitBuff(uId, spellName) and not UnitIsDeadOrGhost(uId) then lines[DBM:GetUnitFullName(uId)] = "" end end end updateLines() updateIcons() end -- Debuffs that are good to have, therefor it's bad NOT to have them. local function updateGoodPlayerDebuffs() twipe(lines) local spellInput = value[1] local tankIgnored = value[2] for uId in DBM:GetGroupMembers() do if tankIgnored and (UnitGroupRolesAssigned(uId) == "TANK" or GetPartyAssignment("MAINTANK", uId, 1)) then else if not DBM:UnitDebuff(uId, spellInput) and not UnitIsDeadOrGhost(uId) then lines[DBM:GetUnitFullName(uId)] = "" end end end updateLines() updateIcons() end -- Debuffs that are bad to have, therefor it is bad to have them. -- Function will auto handle spellName or spellId via DBMs unit debuff handler and spellInput type local function updateBadPlayerDebuffs() twipe(lines) local spellInput = value[1] local tankIgnored = value[2] for uId in DBM:GetGroupMembers() do if tankIgnored and (UnitGroupRolesAssigned(uId) == "TANK" or GetPartyAssignment("MAINTANK", uId, 1)) then else if DBM:UnitDebuff(uId, spellInput) and not UnitIsDeadOrGhost(uId) then lines[DBM:GetUnitFullName(uId)] = "" end end end updateLines() updateIcons() end --Debuffs with important durations that we track local function updatePlayerDebuffRemaining() twipe(lines) local spellInput = value[1] for uId in DBM:GetGroupMembers() do local expires = select(6, DBM:UnitDebuffNew(uId, spellInput)) if expires then if expires == 0 then lines[DBM:GetUnitFullName(uId)] = 9000--Force sorting the unknowns under the ones we do know. else local debuffTime = expires - GetTime() lines[DBM:GetUnitFullName(uId)] = mfloor(debuffTime) end end end updateLines() updateIcons() end -- Buffs with important durations that we track local function updatePlayerBuffRemaining() twipe(lines) local spellInput = value[1] for uId in DBM:GetGroupMembers() do local expires = select(6, DBM:UnitBuffNew(uId, spellInput)) if expires then if expires == 0 then lines[DBM:GetUnitFullName(uId)] = 9000--Force sorting the unknowns under the ones we do know. else local debuffTime = expires - GetTime() lines[DBM:GetUnitFullName(uId)] = mfloor(debuffTime) end end end updateLines() updateIcons() end -- Debuffs that are bad to have, but we want to show players who do NOT have them -- Function will auto handle spellName or spellId via DBMs unit debuff handler and spellInput type local function updateReverseBadPlayerDebuffs() twipe(lines) local spellInput = value[1] local tankIgnored = value[2] for uId in DBM:GetGroupMembers() do if tankIgnored and (UnitGroupRolesAssigned(uId) == "TANK" or GetPartyAssignment("MAINTANK", uId, 1)) then else if not DBM:UnitDebuff(uId, spellInput) and not UnitIsDeadOrGhost(uId) and not DBM:UnitBuff(uId, 27827) then--27827 Spirit of Redemption. This particular info frame wants to ignore this lines[DBM:GetUnitFullName(uId)] = "" end end end updateLines() updateIcons() end local function updatePlayerBuffStacks() twipe(lines) local spellInput = value[1] for uId in DBM:GetGroupMembers() do local spellName, _, count = DBM:UnitBuffNew(uId, spellInput) if spellName and count then lines[DBM:GetUnitFullName(uId)] = count end end updateIcons() updateLines() end local function updatePlayerDebuffStacks() twipe(lines) local spellInput = value[1] for uId in DBM:GetGroupMembers() do local spellName, _, count = DBM:UnitDebuffNew(uId, spellInput) if spellName and count then lines[DBM:GetUnitFullName(uId)] = count end end updateIcons() updateLines() end local function updatePlayerAggro() twipe(lines) local aggroType = value[1] local tankIgnored = value[2] for uId in DBM:GetGroupMembers() do if tankIgnored and (UnitGroupRolesAssigned(uId) == "TANK" or GetPartyAssignment("MAINTANK", uId, 1)) then else local currentThreat = UnitThreatSituation(uId) or 0 if currentThreat >= aggroType then lines[DBM:GetUnitFullName(uId)] = "" end end end updateLines() updateIcons() end local function updatePlayerTargets() twipe(lines) local cId = value[1] for uId, _ in DBM:GetGroupMembers() do if DBM:GetUnitCreatureId(uId .. "target") ~= cId and (UnitGroupRolesAssigned(uId) == "DAMAGER" or UnitGroupRolesAssigned(uId) == "NONE") then lines[DBM:GetUnitFullName(uId)] = "" end end updateLines() updateIcons() end local function updateByFunction() local func = value[1] local sortFunc = value[2] local useIcon = value[3] local presortedLines lines, presortedLines = func() if sortFunc then if type(sortFunc) == "function" then updateLinesCustomSort(sortFunc) else updateLines() end else updateLines(presortedLines) end if useIcon then updateIcons() end end -- Unsorted table maintained by mod and just sent here. -- Never updated by onupdate method, requires manual updates when mod updates table local function updateByTable(table) twipe(lines) if table then for i, v in pairs(table) do lines[i] = v end end updateLines() updateIcons() end local function updateTest() twipe(lines) lines["Alpha"] = 1 lines["Beta"] = 10 lines["Gamma"] = 25 lines["Delta"] = 50 lines["Epsilon"] = 100 updateLines() end local test2Table local function updateTest2() twipe(lines) if not test2Table then test2Table = {} for _ = 1, 40 do local ident = "" for _ = 1, mrandom(5, 12) do ident = ident .. schar(mrandom(65, 90)) end test2Table[ident] = mrandom(1, 10) * 10 end end for k, v in pairs(test2Table) do lines[k] = v end updateLines() end local test3Counter = 0 local function updateTest3() twipe(lines) if not test2Table then test2Table = {} for _ = 1, 40 do local ident = "" for _ = 1, mrandom(5, 12) do ident = ident .. schar(mrandom(65, 90)) end test2Table[ident] = mrandom(1, 10) * 10 end end if test3Counter < 40 then local count = 0 for k, _ in pairs(test2Table) do if count > 40 - test3Counter then break end count = count + 1 lines[k] = mrandom(1, 10) * 10 end test3Counter = test3Counter + 1 end updateLines() end local events = { ["health"] = updateHealth, ["playerpower"] = updatePlayerPower, ["enemypower"] = updateEnemyPower, ["enemyabsorb"] = updateEnemyAbsorb, ["multienemyabsorb"] = updateMultiEnemyAbsorb, ["allabsorb"] = updateAllAbsorb, ["playerabsorb"] = updatePlayerAbsorb, ["playerbuff"] = updatePlayerBuffs, ["playergooddebuff"] = updateGoodPlayerDebuffs, ["playerbaddebuff"] = updateBadPlayerDebuffs, ["playerdebuffremaining"] = updatePlayerDebuffRemaining, ["playerbuffremaining"] = updatePlayerBuffRemaining, ["reverseplayerbaddebuff"] = updateReverseBadPlayerDebuffs, ["playeraggro"] = updatePlayerAggro, ["playerbuffstacks"] = updatePlayerBuffStacks, ["playerdebuffstacks"] = updatePlayerDebuffStacks, ["playertargets"] = updatePlayerTargets, ["function"] = updateByFunction, ["table"] = updateByTable, ["test"] = updateTest, ["test2"] = updateTest2, ["test3"] = updateTest3 } ---------------- -- OnUpdate -- ---------------- local friendlyEvents = { ["health"] = true, ["playerpower"] = true, ["playerabsorb"] = true, ["playerbuff"] = true, ["playergooddebuff"] = true, ["playerbaddebuff"] = true, ["playerdebuffremaining"] = true, ["playerbuffremaining"] = true, ["reverseplayerbaddebuff"] = true, ["playeraggro"] = true, ["playerbuffstacks"] = true, ["playerdebuffstacks"] = true, ["playertargets"] = true } local function onUpdate(frame, table) if events[currentEvent] then events[currentEvent](table) else if frame then frame:Hide() end end local color = NORMAL_FONT_COLOR infoFrame:ClearLines() local linesShown = 0 for i = 1, #sortedLines do if linesShown >= maxLines * maxCols then break end local leftText = sortedLines[i] if not leftText then error("DBM InfoFrame: leftText cannot be nil, Notify DBM author. Infoframe force shutting down ", 2) frame:Hide() return elseif leftText and type(leftText) ~= "string" then leftText = tostring(leftText) end local rightText = lines[leftText] local extra, extraName = ssplit("*", leftText) -- Find just unit name, if extra info had to be added to make unique local icon = icons[extraName or leftText] and icons[extraName or leftText] .. leftText if friendlyEvents[currentEvent] then local unitId = DBM:GetRaidUnitId(DBM:GetUnitFullName(extraName or leftText)) or "player"--Prevent nil logical error if unitId and UnitExists(unitId) then local _, class = UnitClass(unitId) if class then color = RAID_CLASS_COLORS[class] if DBM.Options.StripServerName then -- StripServerName option is checked here, even though it's checked in GetShortServerName function, because we have to apply custom 3rd column hack reconstruction local shortName = DBM:GetShortServerName(extraName or leftText) if extraName then -- 3 column hack is present, we need to reconstruct leftText with shortened name leftText = extra.."*"..shortName else -- LeftText is name, just replace it with shortname leftText = shortName end end end linesShown = linesShown + 1 if unitId and UnitIsUnit(unitId, "player") then -- It's player. if currentEvent == "health" or currentEvent == "playerpower" or currentEvent == "playerabsorb" or currentEvent == "playerbuff" or currentEvent == "playergooddebuff" or currentEvent == "playerbaddebuff" or currentEvent == "playerdebuffremaining" or currentEvent == "playerdebuffstacks" or currentEvent == "playerbuffremaining" or currentEvent == "playertargets" or currentEvent == "playeraggro" then--Red infoFrame:SetLine(linesShown, icon or leftText, rightText, 255, 0, 0, 255, 255, 255) else -- Green infoFrame:SetLine(linesShown, icon or leftText, rightText, 0, 255, 0, 255, 255, 255) end else -- It's not player, do nothing special with it. Ordinary class colored text. if currentEvent == "playerdebuffremaining" or currentEvent == "playerbuffremaining" then local numberValue = tonumber(rightText) if numberValue < 6 then infoFrame:SetLine(linesShown, icon or leftText, rightText, color.r, color.g, color.b, 255, 0, 0)--Red elseif numberValue < 11 then infoFrame:SetLine(linesShown, icon or leftText, rightText, color.r, color.g, color.b, 255, 127.5, 0)--Orange else if numberValue == 9000 then -- Out of range players infoFrame:SetLine(linesShown, icon or leftText, SPELL_FAILED_OUT_OF_RANGE, color.r, color.g, color.b, 255, 0, 0)--Red else infoFrame:SetLine(linesShown, icon or leftText, rightText, color.r, color.g, color.b, 255, 255, 255)--White end end else infoFrame:SetLine(linesShown, icon or leftText, rightText, color.r, color.g, color.b, 255, 255, 255) end end end else local color2 = NORMAL_FONT_COLOR -- Only custom into frames will have chance of putting player names on right side local unitId = DBM:GetRaidUnitId(DBM:GetUnitFullName(extraName or leftText)) local unitId2 = DBM:GetRaidUnitId(DBM:GetUnitFullName(rightText)) -- Class color names in custom functions too, IF unitID exists if unitId then -- Check left text local _, class = UnitClass(unitId) if class then color = RAID_CLASS_COLORS[class] if DBM.Options.StripServerName then--StripServerName option is checked here, even though it's checked in GetShortServerName function, because we have to apply custom 3rd column hack reconstruction local shortName = DBM:GetShortServerName(extraName or leftText) if extraName then -- 3 column hack is present, we need to reconstruct leftText with shortened name leftText = extra.."*"..shortName else -- LeftText is name, just replace it with shortname leftText = shortName end end end else color = NORMAL_FONT_COLOR leftText = extraName or leftText end if unitId2 then -- Check right text local _, class = UnitClass(unitId2) if class then color2 = RAID_CLASS_COLORS[class] rightText = DBM:GetShortServerName(rightText) end end linesShown = linesShown + 1 infoFrame:SetLine(linesShown, icon or leftText, rightText, color.r, color.g, color.b, color2.r, color2.g, color2.b) end end local maxWidth1, maxWidth2, linesPerRow = {}, {}, 5 if linesShown > 5 then linesPerRow = mmin(maxLines, mfloor(linesShown / maxCols + 0.99)) end local shouldUpdate = prevLines ~= linesShown for i = 1, linesShown do if shouldUpdate then infoFrame:AlignLine(i * 2 - 1, linesPerRow * 2) infoFrame:AlignLine(i * 2, linesPerRow * 2) end local m = mfloor(i / linesPerRow + 0.99) frame.lines[i * 2 - 1]:SetWidth(0) -- Hack here, because the string width doesn't calculate properly. frame.lines[i * 2]:SetWidth(0) maxWidth1[m] = mmax(maxWidth1[m] or 0, frame.lines[i * 2 - 1]:GetStringWidth()) maxWidth2[m] = mmax(maxWidth2[m] or 0, frame.lines[i * 2]:GetStringWidth()) end local size = DBM.Options.InfoFrameFontSize local width = 0 for i, _ in pairs(maxWidth1) do local maxWid, maxWid2 = maxWidth1[i], maxWidth2[i] width = width + maxWid + maxWid2 + size + (size / 2) for ii = 1, linesPerRow do local m = ((i - 1) * linesPerRow * 2) + (ii * 2) if not frame.lines[m] then break end frame.lines[m - 1]:SetSize(maxWid, size) frame.lines[m]:SetSize(maxWid2, size) end end if width == 0 then width = 105 end local height = size if linesShown > linesPerRow then height = height + (linesPerRow * size) else height = height + (mmin(linesShown, maxLines) * size) end frame:SetSize(width, height) frame:Show() prevLines = linesShown end --------------- -- Methods -- --------------- --Arg 1: spellName, health/powervalue, customfunction, table type. Arg 2: TankIgnore, Powertype, SortFunction, totalAbsorb, sortmethod (table/stacks). Arg 3: SpellFilter, UseIcon. Arg 4: disable onUpdate. Arg 5: sortmethod (playerpower) function infoFrame:Show(modMaxLines, event, ...) if DBM.Options.DontShowInfoFrame and not (event or ""):find("test") then return end prevLines = 0 -- local currentMapId = GetCurrentMapAreaID() modLines = modMaxLines if DBM.Options.InfoFrameLines and DBM.Options.InfoFrameLines ~= 0 then maxLines = DBM.Options.InfoFrameLines else maxLines = modMaxLines or 5 end if DBM.Options.InfoFrameCols and DBM.Options.InfoFrameCols ~= 0 then maxCols = DBM.Options.InfoFrameCols else -- TODO, still needs more finite control via gui later on -- I think dynamic options modMaxLines/10 modMaxLines/5 are both valid options, as well as just capping at 2 >= 10 maxCols = modMaxLines and modMaxLines >= 10 and 2 or 1 end twipe(value) for i = 1, select("#", ...) do value[i] = select(i, ...) end if not frame then createFrame() end -- Orders event to use spellID no matter what and not spell name if event:find("byspellid") then event = event:gsub("byspellid", "") -- Strip off the byspellid, it served it's purpose, it simply told infoframe to not convert to spellName if type(value[1]) ~= "number" then error("DBM-InfoFrame: byspellid method must use spellId", 2) return end -- If spellId is given as value one and it's not a byspellid event, convert to spellname -- This also allows spell name to be given by mod, since value 1 verifies it's a number elseif type(value[1]) == "number" and event ~= "health" and event ~= "function" and event ~= "table" and event ~= "playertargets" and event ~= "playeraggro" and event ~= "playerpower" and event ~= "enemypower" and event ~= "test" and event ~= "test2" then -- Outside of "byspellid" functions, typical frames will still use spell NAME matching not spellID. -- This just determines if we convert the spell input to a spell Name, if a spellId was provided for a non byspellid infoframe value[1] = DBM:GetSpellInfo(value[1]) end currentEvent = event if event == "playerbuff" or event == "playerbaddebuff" or event == "playergooddebuff" then sortMethod = 3 -- Sort by group ID elseif (event == "playerdebuffstacks" or event == "table" or event == "playerdebuffremaining") and value[2] and type(value[2]) == "number" then sortMethod = value[2] elseif event == "health" or event == "playerdebuffremaining" then sortMethod = 2 -- Sort lowest first elseif event == "playerpower" and value[5] and type(value[5]) == "number" then sortMethod = value[5] else sortMethod = 1 -- Sort highest first end if events[currentEvent] then events[currentEvent](value[1]) else error("DBM-InfoFrame: Unsupported event", 2) return end if not friendlyEvents[currentEvent] then twipe(icons) end frame:Show() onUpdate(frame, value[1]) if not frame.ticker and not value[4] and event ~= "table" then frame.ticker = AceTimer:ScheduleRepeatingTimer(function() onUpdate(frame) end, 0.5) elseif frame.ticker and value[4] then -- Redundancy, in event calling a non onupdate infoframe show without a hide event to unschedule ticker based infoframe AceTimer:CancelTimer(frame.ticker) frame.ticker = nil end end function infoFrame:RegisterCallback(cb) updateCallbacks[#updateCallbacks + 1] = cb end function infoFrame:Update(time) if not frame then createFrame() end if frame:IsShown() then if time then DBM:Unschedule(onUpdate) DBM:Schedule(time, onUpdate, frame) else onUpdate(frame) end end end function infoFrame:UpdateTable(table, time) if not frame then createFrame() end if frame:IsShown() and table then if time then DBM:Unschedule(onUpdate) DBM:Schedule(time, onUpdate, frame, table) else onUpdate(frame, table) end end end function infoFrame:SetHeader(text) if not frame then createFrame() end frame.header:SetText(text or "DBM Info Frame") end function infoFrame:ClearLines() if not frame then createFrame() end for i = 1, #frame.lines do frame.lines[i]:SetText("") frame.lines[i]:Hide() end end function infoFrame:AlignLine(lineNum, linesPerRow) local size = DBM.Options.InfoFrameFontSize local line = frame.lines[lineNum] line:SetJustifyH(lineNum % 2 == 0 and "RIGHT" or "LEFT") if lineNum == 1 then -- 1st entry left line:SetPoint("TOPLEFT", frame, "TOPLEFT", size / 2, -(size / 2)) elseif lineNum == 2 then -- 1st entry right line:SetPoint("TOPLEFT", frame.lines[1], "TOPRIGHT", size / 2, 0) else if lineNum % linesPerRow == 1 then -- Column 2-x, 1st entry left line:SetPoint("TOPLEFT", frame.lines[lineNum - linesPerRow + 1], "TOPRIGHT", size, 0) elseif lineNum % 2 == 0 then -- Column 2-x, Right entry line:SetPoint("TOPLEFT", frame.lines[lineNum - 1], "TOPRIGHT", size / 2, 0) else -- Column 2-x, Left entry line:SetPoint("TOPLEFT", frame.lines[lineNum - 2], "LEFT", 0, -(size / 2)) end end end function infoFrame:UpdateStyle() if not frame then createFrame() end prevLines = 0 local font = DBM.Options.InfoFrameFont == "standardFont" and standardFont or DBM.Options.InfoFrameFont local size = DBM.Options.InfoFrameFontSize local style = DBM.Options.InfoFrameFontStyle == "none" and nil or DBM.Options.InfoFrameFontStyle for i = 1, #frame.lines do frame.lines[i]:SetFont(font, size, style) end end function infoFrame:SetLine(lineNum, leftText, rightText, colorR, colorG, colorB, color2R, color2G, color2B) if not frame then createFrame() end lineNum = lineNum * 2 - 1 if not frame.lines[lineNum] then local font = DBM.Options.InfoFrameFont == "standardFont" and standardFont or DBM.Options.InfoFrameFont local size = DBM.Options.InfoFrameFontSize local style = DBM.Options.InfoFrameFontStyle == "none" and nil or DBM.Options.InfoFrameFontStyle frame.lines[lineNum] = frame:CreateFontString("Line" .. lineNum, "OVERLAY", "GameFontNormal") frame.lines[lineNum]:SetFont(font, size, style) frame.lines[lineNum + 1] = frame:CreateFontString("Line" .. lineNum + 1, "OVERLAY", "GameFontNormal") frame.lines[lineNum + 1]:SetFont(font, size, style) frame.lines[lineNum + 1]:SetJustifyH("RIGHT") end frame.lines[lineNum]:SetText(leftText) frame.lines[lineNum]:SetTextColor(colorR or 255, colorG or 255, colorB or 255) frame.lines[lineNum]:Show() frame.lines[lineNum + 1]:SetText(rightText) frame.lines[lineNum + 1]:SetTextColor(color2R or 255, color2G or 255, color2B or 255) frame.lines[lineNum + 1]:Show() end function infoFrame:Hide() twipe(lines) twipe(icons) twipe(sortedLines) twipe(updateCallbacks) infoFrame:SetHeader() twipe(value) if frame then if frame.ticker then AceTimer:CancelTimer(frame.ticker) frame.ticker = nil end frame:Hide() end currentEvent = nil sortMethod = 1 end function infoFrame:SetLines(lines) modLines = lines if DBM.Options.InfoFrameLines == 0 then maxLines = lines end end function infoFrame:SetColumns(columns) modCols = columns if DBM.Options.InfoFrameCols == 0 then maxCols = columns end end function infoFrame:IsShown() return frame and frame:IsShown() end function infoFrame:SetSortingAsc() sortMethod = 2 end function infoFrame:SetSortingGroupId() sortMethod = 3 end ================================================ FILE: DBM-Core/DBM-RangeCheck.lua ================================================ -- *************************************************** -- ** DBM Range Check Frame ** -- ** http://www.deadlybossmods.com ** -- *************************************************** -- -- This addon is written and copyrighted by: -- * Paul Emmerich (Tandanu @ EU-Aegwynn) (DBM-Core) -- * Martin Verges (Nitram @ EU-Azshara) (DBM-GUI) -- -- The localizations are written by: -- * enGB/enUS: Tandanu http://www.deadlybossmods.com -- * deDE: Tandanu http://www.deadlybossmods.com -- * zhCN: Diablohu http://wow.gamespot.com.cn -- * ruRU: BootWin bootwin@gmail.com -- * ruRU: Vampik admin@vampik.ru -- * zhTW: Hman herman_c1@hotmail.com -- * zhTW: Azael/kc10577 paul.poon.kw@gmail.com -- * koKR: BlueNyx/nBlueWiz bluenyx@gmail.com / everfinale@gmail.com -- * esES: Snamor/1nn7erpLaY romanscat@hotmail.com -- -- Special thanks to: -- * Arta -- * Omegal @ US-Whisperwind (continuing mod support for 3.2+) -- * Tennberg (a lot of fixes in the enGB/enUS localization) -- -- -- The code of this addon is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License. (see license.txt) -- All included textures and sounds are copyrighted by their respective owners. -- -- -- You are free: -- * to Share ?to copy, distribute, display, and perform the work -- * to Remix ?to make derivative works -- Under the following conditions: -- * Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). -- * Noncommercial. You may not use this work for commercial purposes. -- * Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. -- -- -- This file makes use of the following free (Creative Commons Sampling Plus 1.0) sounds: -- * alarmclockbeeps.ogg by tedthetrumpet (http://www.freesound.org/usersViewSingle.php?id=177) -- * blip_8.ogg by Corsica_S (http://www.freesound.org/usersViewSingle.php?id=7037) -- The full of text of the license can be found in the file "Sounds\Creative Commons Sampling Plus 1.0.txt". ---------------- -- MapSizes -- ---------------- -- Based on the [MPQ Patch] Classic/BC Dungeon Maps for WotLK, by Trimitor DBM:RegisterMapSize("AhnQiraj", -- Ahn'Qiraj 40 (Raid-Classic) 1, 2777.544113162, 1851.6962890599989, 2, 977.55993651999984, 651.70654296999965, 3, 577.5600585899997, 385.04003906999969 ) DBM:RegisterMapSize("Ahnkahet", 1, 972.417968747, 648.27902221699992) -- Ahn'Kahet (Party-WotLK) DBM:RegisterMapSize("Alterac", 0, 2799.9999389679997, 1866.666656494) DBM:RegisterMapSize("AlteracValley", 0, 4237.49987793, 2824.99987793) DBM:RegisterMapSize("Arathi", 0, 3599.999877933, 2399.999923703) DBM:RegisterMapSize("ArathiBasin", 0, 1756.249923703, 1170.83325195) DBM:RegisterMapSize("Ashenvale", 0, 5766.6663818399993, 3843.749877933) DBM:RegisterMapSize("Aszhara", 0, 5070.83276368, 3381.24987793) DBM:RegisterMapSize("AuchenaiCrypts", -- Auchenai Crypts (Party-BC) 1, 742.54043579099994, 495.026992798, 2, 817.540466309, 545.026992798 ) DBM:RegisterMapSize("Azeroth", 0, 40741.1816406, 27149.6875) DBM:RegisterMapSize("AzjolNerub", -- Azjol-Nerub (Party-WotLK) 1, 752.973999023, 501.983001709, -- The Brood Pit 2, 292.97399902300003, 195.31597900399998, -- Hadronox's Lair 3, 367.5, 245 -- The Gilded Gate ) DBM:RegisterMapSize("AzuremystIsle", 0, 4070.8330078, 2714.58300781) DBM:RegisterMapSize("Badlands", 0, 2487.5, 1658.3334961) DBM:RegisterMapSize("Barrens", 0, 10133.33300782, 6756.24987793) DBM:RegisterMapSize("BlackTemple", -- Black Temple (Raid-BC). Has DungeonUsesTerrainMap() 0, 783.333343506, 522.916625977, 1, 1252.2495784784999, 834.833007813, 2, 975, 650, 3, 1005, 670, 4, 440.000976562, 293.333984375, 5, 670, 446.66668701599986, 6, 705, 470, 7, 355, 236.66662597599998 ) DBM:RegisterMapSize("BlackfathomDeeps", -- Blackfathom Deeps (Party-Classic) 1, 884.22000122000009, 589.4799728391, 2, 884.220031738, 589.480010986, 3, 284.22400426826, 189.48266601600005 ) DBM:RegisterMapSize("BlackrockDepths", -- Blackrock Depths (Party-Classic) 1, 1407.060974121, 938.040756224, 2, 1507.060974121, 1004.7074279820001 ) DBM:RegisterMapSize("BlackrockSpire", -- Blackrock Spire (Party-Classic) 1, 886.8390140532, 591.22601318400007, 2, 886.8390140532, 591.22601318400007, 3, 886.8390140532, 591.22601318400007, 4, 886.8390140532, 591.22601318400007, 5, 886.8390140532, 591.22601318400007, 6, 886.8390140532, 591.22601318400007, 7, 886.8390140532, 591.22601318400007 ) DBM:RegisterMapSize("BlackwingLair", -- Blackwing Lair (Raid-Classic) 1, 499.42803955299996, 332.94970702999944, 2, 649.42706299, 432.94970702999944, 3, 649.42706299, 432.94970702999944, 4, 649.42706299, 432.94970702999944 ) DBM:RegisterMapSize("BladesEdgeMountains", 0, 5424.9997558600007, 3616.666381833) DBM:RegisterMapSize("BlastedLands", 0, 3349.99987793, 2233.3339844) DBM:RegisterMapSize("BloodmystIsle", 0, 3262.4990233999997, 2174.9999389619998) DBM:RegisterMapSize("BoreanTundra", 0, 5764.5830078100007, 3843.74987793) DBM:RegisterMapSize("BurningSteppes", 0, 2929.166595456, 1952.0834960900011) DBM:RegisterMapSize("CoTHillsbradFoothills", -- Caverns of Time: Old Hillsbrad Foothils (Party-BC) 0, 2331.2499389679997, 1554.16662597 ) DBM:RegisterMapSize("CoTMountHyjal", 0, 2499.99975586, 1666.6665039) DBM:RegisterMapSize("CoTStratholme", -- The Culling of Stratholme (Party-WotLK) ; API returns levels 1 and 2 - this is corrected with DungeonUsesTerrainMap() 0, 1824.999938962, 1216.6665039099998, -- DUNGEON_FLOOR_COTSTRATHOLME0 = "The Road to Stratholme" 1, 1125.2999877910001, 750.1999511700003-- DUNGEON_FLOOR_COTSTRATHOLME1 = "Stratholme City" ) DBM:RegisterMapSize("CoTTheBlackMorass", -- Caverns of Time: The Black Morass (Party-BC) 0, 1087.5, 725 ) DBM:RegisterMapSize("CoilfangReservoir", -- Coilfang: Serpentshrine Cavern (Raid-BC) 1, 1575.002975463, 1050.00201416 ) DBM:RegisterMapSize("CrystalsongForest", 0, 2722.91662598, 1814.5830078099998) DBM:RegisterMapSize("Dalaran", 1, 830.01501465299987, 553.33984375, 2, 563.223999023, 375.48974609000015 ) DBM:RegisterMapSize("Darkshore", 0, 6549.99975586, 4366.6665039000009) DBM:RegisterMapSize("Darnassis", 0, 1058.3332519500002, 705.72949223999967) DBM:RegisterMapSize("DeadwindPass", 0, 2499.9999389619998, 1666.6669921699995) DBM:RegisterMapSize("DeeprunTram", 1, 312, 208, 2, 309, 208 ) DBM:RegisterMapSize("Desolace", 0, 4495.83300781, 2997.916564938) DBM:RegisterMapSize("DireMaul", -- Dire Maul (Party-Classic) 1, 1275, 850, 2, 525, 350, 3, 487.5, 325, 4, 750, 500, 5, 800.0008010864, 533.33399963400007, 6, 975, 650 ) DBM:RegisterMapSize("Dragonblight", 0, 5608.33312988, 3739.58337402) DBM:RegisterMapSize("DrakTharonKeep", -- Drak'Tharon Keep (Party-WotLK) 1, 619.94100952200006, 413.293991089, -- The Vestibules of Drak'Tharon 2, 619.941009526, 413.293991089 -- Drak'Tharon Overlook ) DBM:RegisterMapSize("DunMorogh", 0, 4924.99975586, 3283.33325196) DBM:RegisterMapSize("Durotar", 0, 5287.4996337899993, 3524.99987793) DBM:RegisterMapSize("Duskwood", 0, 2699.9999389679997, 1799.9999999699994) DBM:RegisterMapSize("Dustwallow", 0, 5250.000061035, 3499.99975586) DBM:RegisterMapSize("EasternPlaguelands", 0, 4031.25, 2687.49987793) DBM:RegisterMapSize("Elwynn", 0, 3470.83325196, 2314.58300779) DBM:RegisterMapSize("EversongWoods" , 0, 4925, 3283.33300779) DBM:RegisterMapSize("Expansion01", 0, 17464.078125, 11642.71875) -- Old client Zangarmarsh BC dungeons. [MPQ Patch] "Classic/BC Dungeon Maps for WotLK" fixes mapInfo DBM:RegisterMapSize("Felwood", 0, 5749.9996337899993, 3833.33325195) DBM:RegisterMapSize("Feralas", 0, 6949.99975586, 4633.33300781) DBM:RegisterMapSize("Ghostlands", 0, 3300.0000000000009, 2199.9995117200006) DBM:RegisterMapSize("Gnomeregan", -- Gnomeregan (Party-Classic) 1, 769.667999268, 513.111999512, 2, 769.6679992678, 513.111999512, 3, 869.667999268, 579.778015137, 4, 869.6697082523001, 579.77999877899992 ) DBM:RegisterMapSize("GrizzlyHills", 0, 5249.99987793, 3499.99987793) DBM:RegisterMapSize("GruulsLair", -- Gruul's Lair (Raid-BC) 1, 525, 350 ) DBM:RegisterMapSize("Gundrak", -- Gundrak (Party-WotLK) 1, 905.033050542, 603.3500976600003 ) DBM:RegisterMapSize("HallsofLightning", -- Halls of Lightning (Party-WotLK) 1, 566.235015869, 377.4899902300001, -- Unyielding Garrison 2, 708.23701477000009, 472.16003417699994 -- Walk of the Makers ) DBM:RegisterMapSize("HallsofReflection", -- Halls of Reflection (Party-WotLK) 1, 879.02001954, 586.0195312399992 ) DBM:RegisterMapSize("Hellfire", 0, 5164.58300781, 3443.74987793) DBM:RegisterMapSize("HellfireRamparts", -- Hellfire Citadel: Ramparts (Party-BC) 1, 694.5600586, 463.04003906 ) DBM:RegisterMapSize("Hilsbrad", 0, 3199.99987793, 2133.33325195) DBM:RegisterMapSize("Hinterlands", 0, 3850, 2566.66662598) DBM:RegisterMapSize("HowlingFjord", 0, 6045.8328857399993, 4031.249816898) DBM:RegisterMapSize("HrothgarsLanding", 0, 3677.083129887, 2452.0839843699996) DBM:RegisterMapSize("IcecrownCitadel", -- Icecrown Citadel (Raid-WotLK) 1, 1355.47009278, 903.647033691, -- The Lower Citadel 2, 1067, 711.3336906438, -- The Rampart of Skulls 3, 195.46997069999998, 130.315002441, -- Deathbringer's Rise 4, 773.71008301000006, 515.81030273000033, -- The Frost Queen's Lair 5, 1148.7399902399998, 765.82006835999982, -- The Upper Reaches 6, 373.7099609400002, 249.1298828099998, -- Royal Quarters 7, 293.2600097699999, 195.50701904200002, -- The Frozen Throne 8, 247.92993164000018, 165.287994385 -- Frostmourne ) DBM:RegisterMapSize("IcecrownGlacier", 0, 6270.833312988, 4181.2500000000009) DBM:RegisterMapSize("Ironforge", 0, 790.625061031, 527.6044921900002) DBM:RegisterMapSize("IsleofConquest", 0, 2650, 1766.6665840118) DBM:RegisterMapSize("Kalimdor", 0, 36799.8105469, 24533.2001953) DBM:RegisterMapSize("Karazhan", -- Karazhan (Raid-BC) 1, 550.04882811999983, 366.69921880000038, 2, 257.85986329, 171.90625, 3, 345.1494140599998, 230.09960940000019, 4, 520.04882811999983, 346.69921880000038, 5, 234.14990233999993, 156.09960940000019, 6, 581.54882811999983, 387.69921880000038, 7, 191.54882811999983, 127.69921880000038, 8, 139.35058593999997, 92.90039059999981, 9, 760.04882811999983, 506.69921880000038, 10, 450.25, 300.16601559999981, 11, 271.05004882999992, 180.69921880000038, 12, 595.04882811999983, 396.69921880000038, 13, 529.04882812, 352.69921880000038, 14, 245.25, 163.5, 15, 211.14990233999993, 140.765625, 16, 101.25, 67.5, 17, 341.24999999999977, 227.5 ) DBM:RegisterMapSize("LakeWintergrasp", 0, 2974.99987793, 1983.3332519599999) DBM:RegisterMapSize("LochModan", 0, 2758.33312988, 1839.5830078099998) DBM:RegisterMapSize("MagistersTerrace", -- Magister's Terrace (Party-BC) 1, 530.334014893, 353.5559692383, 2, 530.334014893, 353.5559921261 ) DBM:RegisterMapSize("MagtheridonsLair", -- Magtheridon's Lair (Raid-BC) 1, 556, 370.666694641 ) DBM:RegisterMapSize("ManaTombs", -- Mana-Tombs (Party-BC) 1, 823.28515625, 548.85681152329994 ) DBM:RegisterMapSize("Maraudon", -- Maraudon (Party-Classic) 1, 975, 650, 2, 1637.5, 1091.666000367 ) DBM:RegisterMapSize("MoltenCore", -- Molten Core (Raid-Classic) 1, 1264.800064083, 843.19906615799994 ) DBM:RegisterMapSize("Moonglade", 0, 2308.33325195, 1539.5830078200006) DBM:RegisterMapSize("Mulgore", 0, 5137.49987793, 3424.9998474159997) DBM:RegisterMapSize("Nagrand", 0, 5524.99999999, 3683.3331680335) DBM:RegisterMapSize("Naxxramas", -- Naxxramas (Raid-WotLK) 1, 1093.83007813, 729.21997070999987, -- The Construct Quarter 2, 1093.83007813, 729.21997070999987, -- The Arachnid Quarter 3, 1200, 800, -- The Military Quarter 4, 1200.33007813, 800.21997070999987, -- The Plague Quarter 5, 2069.80981445, 1379.8798828099998, -- The Lower Necropolis 6, 655.9399414, 437.2900390599998 -- The Upper Necropolis ) DBM:RegisterMapSize("Netherstorm", 0, 5574.9996719334995, 3716.66674805) DBM:RegisterMapSize("NetherstormArena", 0, 2270.8331909219996, 1514.58337402) DBM:RegisterMapSize("Nexus80", -- The Oculus (Party-WotLK) 1, 514.70697021699993, 343.13897705299996, -- Band of Variance 2, 664.70697021699993, 443.13897705299996, -- Band of Acceleration 3, 514.70697021699993, 343.13897705299996, -- Band of Transmutation 4, 294.70098877199996, 196.46398926100017 -- Band of Alignment ) DBM:RegisterMapSize("Northrend", 0, 17751.3984375, 11834.26501465) DBM:RegisterMapSize("Ogrimmar", 0, 1402.6044921899997, 935.41662598000016) DBM:RegisterMapSize("OnyxiasLair", -- Onyxia's Lair (Raid-WotLK) 1, 483.117988587, 322.07878875759997 ) DBM:RegisterMapSize("PitofSaron", 0, 1533.333312988, 1022.916671753) -- Pit of Saron (Party-WotLK) DBM:RegisterMapSize("Ragefire", -- Ragefire Chasm (Party-Classic) 1, 738.864013672, 492.57620239290003 ) DBM:RegisterMapSize("RazorfenDowns", -- Razorfen Downs (Party-Classic) 1, 709.048950199, 472.69995117000008 ) DBM:RegisterMapSize("RazorfenKraul", -- Razorfen Kraul (Party-Classic) 1, 736.44995118, 490.95983886999988 ) DBM:RegisterMapSize("Redridge", 0, 2170.83325196, 1447.9160155999998) DBM:RegisterMapSize("RuinsofAhnQiraj", 0, 2512.499877933, 1675) -- Ahn'Qiraj 20 (Raid-Classic) DBM:RegisterMapSize("ScarletEnclave", 0, 3162.5, 2108.333374023) DBM:RegisterMapSize("ScarletMonastery", -- Scarlet Monastery (Party-Classic) 1, 619.983947751, 413.32275390000018, 2, 320.190994263, 213.4604949947, 3, 612.6966094966, 408.45996094, 4, 703.30004882, 468.86669921500004 ) DBM:RegisterMapSize("Scholomance", -- Scholomance (Party-Classic) 1, 320.0489044188, 213.364997864, 2, 440.04901123, 293.3664054871, 3, 410.0779953, 273.3857994075, 4, 531.04200744700006, 354.0281982418 ) DBM:RegisterMapSize("SearingGorge", 0, 2231.2498474159997, 1487.4995117199996) DBM:RegisterMapSize("SethekkHalls", -- Auchindoun: Sethekk Halls (Party-BC) 1, 703.495483399, 468.996994019, 2, 703.495483399, 468.996994019 ) DBM:RegisterMapSize("ShadowLabyrinth", -- Shadow Labyrinth (Party-BC) 1, 841.522354126, 561.0148887639 ) DBM:RegisterMapSize("ShadowfangKeep", -- Shadowfang Keep (Party-Classic) 1, 352.43005371000004, 234.95339202830002, 2, 212.42675781000025, 141.617996216, 3, 152.42993164000018, 101.6199646001, 4, 152.42993164000018, 101.6246948243, 5, 152.42993164000018, 101.6246948243, 6, 198.42993164000018, 132.2866287233, 7, 272.42993164000018, 181.6199646001 ) DBM:RegisterMapSize("ShadowmoonValley", 0, 5500, 3666.66638183) DBM:RegisterMapSize("ShattrathCity", 0, 1306.25, 870.83337403) DBM:RegisterMapSize("SholazarBasin", 0, 4356.25, 2904.16650391) DBM:RegisterMapSize("Silithus", 0, 3483.333984375, 2322.9160156199996) DBM:RegisterMapSize("SilvermoonCity", 0, 1211.4584960900002, 806.77050783999948) DBM:RegisterMapSize("Silverpine", 0, 4199.99975586, 2799.99987793) DBM:RegisterMapSize("StonetalonMountains", 0, 4883.33312988, 3256.249816898) DBM:RegisterMapSize("Stormwind", 0, 1737.4999589954, 1158.3330078200006) DBM:RegisterMapSize("StrandoftheAncients", 0, 1743.749938965, 1162.499938962) DBM:RegisterMapSize("Stranglethorn", 0, 6381.24975586, 4254.1660156) DBM:RegisterMapSize("Stratholme", -- Stratholme (Party-Classic) 1, 705.7199707, 470.4799804700001, 2, 1005.7204589799999, 670.48022460999982 ) DBM:RegisterMapSize("Sunwell", 0, 3327.0830078200006, 2218.7490233999997) DBM:RegisterMapSize("SunwellPlateau", -- The Sunwell (Raid-BC) 0, 906.25, 604.16662597999994, 1, 465, 310 ) DBM:RegisterMapSize("SwampOfSorrows", 0, 2293.75, 1529.1669921899993) DBM:RegisterMapSize("Tanaris", 0, 6899.999526979, 4600) DBM:RegisterMapSize("Teldrassil", 0, 5091.6665039, 3393.75) DBM:RegisterMapSize("TempestKeep", -- Tempest Keep (Raid-BC) 1, 1575, 1050 ) DBM:RegisterMapSize("TerokkarForest", 0, 5399.99975586, 3600.000061035) DBM:RegisterMapSize("TheArcatraz", -- Tempest Keep: The Arcatraz (Party-BC) 1, 689.68402099600007, 459.78935241700003, 2, 546.048049927, 364.032012939, 3, 636.684005737, 424.45602417 ) DBM:RegisterMapSize("TheArgentColiseum", -- Trial of the Crusader (Raid-WotLK) 1, 369.9861869814, 246.657989502, -- The Argent Coliseum 2, 739.996017456, 493.33001709 -- The Icy Depths ) DBM:RegisterMapSize("TheBloodFurnace", -- Hellfire Citadel: The Blood Furnace (Party-BC) 1, 1003.519012451, 669.012687683 ) DBM:RegisterMapSize("TheBotanica", -- Tempest Keep: The Botanica (Party-BC) 1, 757.40248107899993, 504.934997558 ) DBM:RegisterMapSize("TheDeadmines", -- Deadmines (Party-Classic) 1, 559.2640075679999, 372.8425025944, 2, 499.26300049099996, 332.84230041549995 ) DBM:RegisterMapSize("TheExodar", 0, 1056.7705078, 704.68774414000018) DBM:RegisterMapSize("TheEyeofEternity", -- The Eye of Eternity (Raid-WotLK) 1, 430.07006836000005, 286.713012695 ) DBM:RegisterMapSize("TheForgeofSouls", -- The Forge of Souls (Party-WotLK) 1, 1448.0998535099998, 965.40039062000051 ) DBM:RegisterMapSize("TheMechanar", -- Tempest Keep: The Mechanar (Party-BC) 1, 676.23800659199992, 450.825401306, 2, 676.23800659199992, 450.8253669737 ) DBM:RegisterMapSize("TheNexus", 1, 1101.280975342, 734.1874999997) -- The Nexus (Party-WotLK) DBM:RegisterMapSize("TheObsidianSanctum", 0, 1162.4999179809, 775) -- The Obsidian Sanctum (Raid-WotLK) DBM:RegisterMapSize("TheRubySanctum", 0, 752.083312988, 502.08325195999987) -- The Ruby Sanctum (Raid-WotLK) DBM:RegisterMapSize("TheShatteredHalls", 1, 1063.747467041, 709.1649932866) -- Hellfire Citadel: The Shattered Hall (Party-BC) DBM:RegisterMapSize("TheSlavePens", 1, 890.05812454269994, 593.372070312) -- Coilfang: The Slave Pens (Party-BC) DBM:RegisterMapSize("TheSteamvault", -- Coilfang: The Steamvault (Party-BC) 1, 876.764007569, 584.509414673, 2, 876.764007569, 584.509414673 ) DBM:RegisterMapSize("TheStockade", 1, 378.152999878, 252.10249519299998) -- Stormwind Stockade (Party-Classic) DBM:RegisterMapSize("TheStormPeaks", 0, 7112.4996337899993, 4741.6660156) DBM:RegisterMapSize("TheTempleOfAtalHakkar", -- Sunken Temple (Party-Classic) 1, 695.028991699, 463.35298156799996, 2, 248.1767673494, 166.03546142599998, 3, 556.16923522999991, 370.38801574700005 ) DBM:RegisterMapSize("TheUnderbog", 1, 894.919998169, 596.613357544) -- Coilfang: The Underbog (Party-BC) DBM:RegisterMapSize("ThousandNeedles", 0, 4399.999694822, 2933.33300781) DBM:RegisterMapSize("ThunderBluff", 0, 1043.749938965, 695.833312985) DBM:RegisterMapSize("Tirisfal", 0, 4518.74987793, 3012.4998168949996) DBM:RegisterMapSize("Uldaman", -- Uldaman (Party-Classic) 1, 893.668014527, 595.778991699, 2, 492.57041931180004, 328.3804931642 ) DBM:RegisterMapSize("Ulduar", -- Ulduar (Raid-WotLK). Has DungeonUsesTerrainMap() 0, 3287.49987793, 2191.66662598, -- DUNGEON_FLOOR_ULDUAR0 = "The Grand Approach" 1, 669.45098877000009, 446.30004882999992, -- DUNGEON_FLOOR_ULDUAR1 = "The Antechamber of Ulduar" 2, 1328.4609985349998, 885.63989258000015, -- DUNGEON_FLOOR_ULDUAR2 = "The Inner Sanctum of Ulduar" 3, 910.5, 607, -- DUNGEON_FLOOR_ULDUAR3 = "The Prison of Yogg-Saron" 4, 1569.45996094, 1046.30004883, -- DUNGEON_FLOOR_ULDUAR4 = "The Spark of Imagination" 5, 619.46899414, 412.9799804700001 -- DUNGEON_FLOOR_ULDUAR5 = "The Mind's Eye" ) DBM:RegisterMapSize("Ulduar77", 1, 920.19601440299994, 613.466064453) -- Halls of Stone (Party-WotLK) DBM:RegisterMapSize("Undercity", 0, 959.37503051749991, 640.10412597999994) DBM:RegisterMapSize("UngoroCrater", 0, 33699.999816898, 2466.6665039000009) DBM:RegisterMapSize("UtgardeKeep", -- Utgarde Keep (Party-WotLK) 1, 734.580993652, 489.72150039639996, -- Norndir Preperation 2, 481.081008911, 320.72029304480003, -- Dragonflayer Ascent 3, 736.581008911, 491.05451202409995 -- Tyr's Terrace ) DBM:RegisterMapSize("UtgardePinnacle", -- Utgarde Pinnacle (Party-WotLK) 1, 548.93601989699994, 365.95701599100005, -- Lower Pinnacle 2, 756.17994308428, 504.11900329599996 -- Upper Pinnacle ) DBM:RegisterMapSize("VaultofArchavon", 1, 1398.2550048829999, 932.170013428) -- Vault of Archavon (Raid-WotLK) DBM:RegisterMapSize("VioletHold", 1, 256.229003907, 170.82006836000005) -- The Violet Hold (Raid-WotLK) DBM:RegisterMapSize("WailingCaverns", 1, 936.47500610299994, 624.315994263) -- Wailing Caverns (Party-Classic) DBM:RegisterMapSize("WarsongGulch", 0, 1145.833312992, 764.583312985) DBM:RegisterMapSize("WesternPlaguelands", 0, 4299.999908444, 2866.666534428) DBM:RegisterMapSize("Westfall", 0, 3499.999816898, 2333.3330078) DBM:RegisterMapSize("Wetlands", 0, 4135.416687012, 2756.25) DBM:RegisterMapSize("Winterspring", 0, 7099.999847416, 4733.3332519500009) DBM:RegisterMapSize("Zangarmarsh", 0, 5027.08349609, 3352.08325196) DBM:RegisterMapSize("ZulAman", 0, 1268.749938962, 845.833312988) -- Zul'Aman (Raid-BC) DBM:RegisterMapSize("ZulDrak", 0, 4993.75, 3329.16650391) DBM:RegisterMapSize("ZulFarrak", 0, 1383.3332214359998, 922.91662597) -- Zul'Farrak (Party-Classic) DBM:RegisterMapSize("ZulGurub", 0, 2120.83325195, 1414.5830078) -- Zul'Gurub (Raid-Classic) local _, private = ... --------------- -- Globals -- --------------- DBM.RangeCheck = {} -------------- -- Locals -- -------------- local L = DBM_CORE_L local rangeCheck = DBM.RangeCheck local mainFrame = CreateFrame("Frame") local textFrame, radarFrame, updateIcon, updateRangeFrame, initializeDropdown local RAID_CLASS_COLORS = _G["CUSTOM_CLASS_COLORS"] or RAID_CLASS_COLORS -- For Phanx' Class Colors --------------------------- -- Unit Position/Range -- --------------------------- -- API local GetPlayerMapPosition = GetPlayerMapPosition local UnitInRaid, UnitInParty, UnitIsPlayer = UnitInRaid, UnitInParty, UnitIsPlayer -- Nil variables local rangeX, rangeY -- Lib local LibRangeCheck = LibStub("LibRangeCheck-2.0") local HarmItems = { -- for BossMode, to avoid iterating thru pairs of lib harmRC [5] = { 37727, -- Ruby Acorn }, [8] = { 34368, -- Attuned Crystal Cores 33278, -- Burning Torch }, [10] = { 32321, -- Sparrowhawk Net }, [15] = { 33069, -- Sturdy Rope }, [20] = { 10645, -- Gnomish Death Ray }, [25] = { 24268, -- Netherweave Net 41509, -- Frostweave Net 31463, -- Zezzak's Shard }, [30] = { 835, -- Large Rope Net 7734, -- Six Demon Bag 34191, -- Handful of Snowflakes }, [35] = { 24269, -- Heavy Netherweave Net 18904, -- Zorbin's Ultra-Shrinker }, [40] = { 28767, -- The Decapitator }, [45] = { 32698, -- Wrangling Rope }, [60] = { 32825, -- Soul Cannon 37887, -- Seeds of Nature's Wrath }, [80] = { 35278, -- Reinforced Net }, } local function getUnitRange(unit) local restrictionsActive = DBM:HasMapRestrictions() if not restrictionsActive and (UnitInRaid(unit) or UnitInParty(unit)) and UnitIsPlayer(unit) then local mapX, mapY = DBM:GetMapSize() local playerX, playerY = GetPlayerMapPosition("player") local unitX, unitY = GetPlayerMapPosition(unit) rangeX, rangeY = (unitX - playerX) * mapX, (unitY - playerY) * mapY local range = (rangeX * rangeX + rangeY * rangeY) ^ 0.5 return range else return LibRangeCheck:GetRange(unit) end end --------------------- -- Dropdown Menu -- --------------------- do local sounds = { "none", "Interface\\AddOns\\DBM-Core\\Sounds\\blip_8.ogg", "Interface\\AddOns\\DBM-Core\\Sounds\\alarmclockbeeps.ogg" } local function setSound(self, option, sound) DBM.Options[option] = sound if sound ~= "none" then DBM:PlaySoundFile(sound) end end local function setRange(self, range) rangeCheck:Hide(true) rangeCheck:Show(range, mainFrame.filter, true, mainFrame.redCircleNumPlayers or 1) end local function setThreshold(self, threshold) rangeCheck:Hide(true) rangeCheck:Show(mainFrame.range, mainFrame.filter, true, threshold) end local function setFrames(self, option) DBM.Options.RangeFrameFrames = option rangeCheck:Hide(true) rangeCheck:Show(mainFrame.range, mainFrame.filter, true, mainFrame.redCircleNumPlayers or 1) end -- local function setSpeed(self, option) -- DBM.Options.RangeFrameUpdates = option -- end local function toggleLocked() DBM.Options.RangeFrameLocked = not DBM.Options.RangeFrameLocked end function initializeDropdown(_, level, menu) -- dropdownFrame, level, menu local info if level == 1 then info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SETRANGE info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "range" UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SETTHRESHOLD info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "threshold" UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SOUNDS info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "sounds" UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_OPTION_FRAMES info.notCheckable = true info.hasArrow = true info.keepShownOnClick = true info.menuList = "frames" UIDropDownMenu_AddButton(info, 1) -- info = UIDropDownMenu_CreateInfo() -- info.text = L.RANGECHECK_OPTION_SPEED -- info.notCheckable = true -- info.hasArrow = true -- info.keepShownOnClick = true -- info.menuList = "speed" -- UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_LOCK if DBM.Options.RangeFrameLocked then info.checked = true end info.func = toggleLocked UIDropDownMenu_AddButton(info, 1) info = UIDropDownMenu_CreateInfo() info.text = HIDE info.notCheckable = true info.func = function() rangeCheck:Hide(true) end info.arg1 = rangeCheck UIDropDownMenu_AddButton(info, 1) elseif level == 2 then if menu == "range" then local ranges = {5, 8, 10, 15, 20, 25, 30, 35, 40, 45, 60, 80} for _, r in pairs(ranges) do info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SETRANGE_TO:format(r) info.func = setRange info.arg1 = r info.checked = (mainFrame.range == r) UIDropDownMenu_AddButton(info, 2) end elseif menu == "threshold" then local thresholds = {1, 2, 3, 4, 5, 6, 8} for _, t in pairs(thresholds) do info = UIDropDownMenu_CreateInfo() info.text = t info.func = setThreshold info.arg1 = t info.checked = (mainFrame.redCircleNumPlayers == t) UIDropDownMenu_AddButton(info, 2) end elseif menu == "sounds" then info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SOUND_OPTION_1 info.notCheckable = true info.hasArrow = true info.menuList = "RangeFrameSound1" UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_SOUND_OPTION_2 info.notCheckable = true info.hasArrow = true info.menuList = "RangeFrameSound2" UIDropDownMenu_AddButton(info, 2) elseif menu == "frames" then info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_OPTION_TEXT info.func = setFrames info.arg1 = "text" info.checked = (DBM.Options.RangeFrameFrames == "text") UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_OPTION_RADAR info.func = setFrames info.arg1 = "radar" info.checked = (DBM.Options.RangeFrameFrames == "radar") UIDropDownMenu_AddButton(info, 2) info = UIDropDownMenu_CreateInfo() info.text = L.RANGECHECK_OPTION_BOTH info.func = setFrames info.arg1 = "both" info.checked = (DBM.Options.RangeFrameFrames == "both") UIDropDownMenu_AddButton(info, 2) -- elseif menu == "speed" then -- info = UIDropDownMenu_CreateInfo() -- info.text = L.RANGECHECK_OPTION_SLOW -- info.func = setSpeed -- info.arg1 = "Slow" -- info.checked = (DBM.Options.RangeFrameUpdates == "Slow") -- UIDropDownMenu_AddButton(info, 2) -- info = UIDropDownMenu_CreateInfo() -- info.text = L.RANGECHECK_OPTION_AVERAGE -- info.func = setSpeed -- info.arg1 = "Average" -- info.checked = (DBM.Options.RangeFrameUpdates == "Average") -- UIDropDownMenu_AddButton(info, 2) -- info = UIDropDownMenu_CreateInfo() -- info.text = L.RANGECHECK_OPTION_FAST -- info.func = setSpeed -- info.arg1 = "Fast" -- info.checked = (DBM.Options.RangeFrameUpdates == "Fast") -- UIDropDownMenu_AddButton(info, 2) end elseif level == 3 then local option = menu for k, s in ipairs(sounds) do info = UIDropDownMenu_CreateInfo() info.text = L["RANGECHECK_SOUND_"..tostring(k - 1)] info.func = setSound info.arg1 = option info.arg2 = s info.checked = (DBM.Options[option] == s) UIDropDownMenu_AddButton(info, 3) end end end end ----------------- -- Play Sounds -- ----------------- local updateSound local soundUpdate = 0 do local UnitAffectingCombat = UnitAffectingCombat function updateSound(num) if not UnitAffectingCombat("player") or (GetTime() - soundUpdate) < 5 then return end soundUpdate = GetTime() if num == 1 then if DBM.Options.RangeFrameSound1 ~= "none" then DBM:PlaySoundFile(DBM.Options.RangeFrameSound1) end elseif num > 1 then if DBM.Options.RangeFrameSound2 ~= "none" then DBM:PlaySoundFile(DBM.Options.RangeFrameSound2) end end end end ------------------------ -- Create the frame -- ------------------------ local function createTextFrame() textFrame = CreateFrame("Frame", "DBMRangeCheck", UIParent) textFrame:SetFrameStrata("DIALOG") textFrame.backdropInfo = { bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",--131071 tile = true, tileSize = 16 } textFrame:SetBackdrop(textFrame.backdropInfo) textFrame:SetPoint(DBM.Options.RangeFramePoint, UIParent, DBM.Options.RangeFramePoint, DBM.Options.RangeFrameX, DBM.Options.RangeFrameY) textFrame:SetSize(128, 12) textFrame:SetClampedToScreen(true) textFrame:EnableMouse(true) textFrame:SetToplevel(true) textFrame:SetMovable(true) textFrame:RegisterForDrag("LeftButton") textFrame:SetScript("OnDragStart", function(self) if not DBM.Options.RangeFrameLocked then self:StartMoving() end end) textFrame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() local point, _, _, x, y = self:GetPoint(1) DBM.Options.RangeFrameX = x DBM.Options.RangeFrameY = y DBM.Options.RangeFramePoint = point end) textFrame:SetScript("OnMouseDown", function(_, button) if button == "RightButton" then local dropdownFrame = CreateFrame("Frame", "DBMRangeCheckDropdown", UIParent) UIDropDownMenu_Initialize(dropdownFrame, initializeDropdown) ToggleDropDownMenu(1, nil, dropdownFrame, "cursor", 5, -10) end end) local text = textFrame:CreateFontString(nil, "OVERLAY", "GameTooltipText") text:SetSize(128, 15) text:SetPoint("BOTTOMLEFT", textFrame, "TOPLEFT") text:SetTextColor(1, 1, 1, 1) text:Show() text.OldSetText = text.SetText text.SetText = function(self, text) self:OldSetText(text) self:SetWidth(0) -- Set the text width to 0, so the system can auto-calculate the size end textFrame.text = text local inRangeText = textFrame:CreateFontString(nil, "OVERLAY", "GameTooltipText") inRangeText:SetSize(128, 15) inRangeText:SetPoint("TOPLEFT", textFrame, "BOTTOMLEFT") inRangeText:SetTextColor(1, 1, 1, 1) inRangeText:Hide() textFrame.inRangeText = inRangeText textFrame.lines = {} for i = 1, 5 do local line = textFrame:CreateFontString(nil, "OVERLAY", "GameFontNormal") line:SetSize(128, 12) line:SetJustifyH("LEFT") if i == 1 then line:SetPoint("TOPLEFT", textFrame, "TOPLEFT", 6, -6) else line:SetPoint("TOPLEFT", textFrame.lines[i - 1], "LEFT", 0, -6) end textFrame.lines[i] = line end textFrame:Hide() end local function createRadarFrame() radarFrame = CreateFrame("Frame", "DBMRangeCheckRadar", UIParent) radarFrame:SetFrameStrata("DIALOG") radarFrame:SetPoint(DBM.Options.RangeFrameRadarPoint, UIParent, DBM.Options.RangeFrameRadarPoint, DBM.Options.RangeFrameRadarX, DBM.Options.RangeFrameRadarY) radarFrame:SetSize(128, 128) radarFrame:SetClampedToScreen(true) radarFrame:EnableMouse(true) radarFrame:SetToplevel(true) radarFrame:SetMovable(true) radarFrame:RegisterForDrag("LeftButton") radarFrame:SetScript("OnDragStart", function(self) if not DBM.Options.RangeFrameLocked then self:StartMoving() end end) radarFrame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() local point, _, _, x, y = self:GetPoint(1) DBM.Options.RangeFrameRadarX = x DBM.Options.RangeFrameRadarY = y DBM.Options.RangeFrameRadarPoint = point end) radarFrame:SetScript("OnMouseDown", function(_, button) if button == "RightButton" then local dropdownFrame = CreateFrame("Frame", "DBMRangeCheckDropdown", UIParent--[[, "UIDropDownMenuTemplate"]]) UIDropDownMenu_Initialize(dropdownFrame, initializeDropdown) ToggleDropDownMenu(1, nil, dropdownFrame, "cursor", 5, -10) end end) local bg = radarFrame:CreateTexture(nil, "BACKGROUND") bg:SetAllPoints(radarFrame) bg:SetBlendMode("BLEND") bg:SetTexture(0, 0, 0, 0.3) radarFrame.background = bg local circle = radarFrame:CreateTexture(nil, "ARTWORK") circle:SetSize(85, 85) circle:SetPoint("CENTER") circle:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\radar_circle.blp") circle:SetVertexColor(0, 1, 0) circle:SetBlendMode("ADD") radarFrame.circle = circle local player = radarFrame:CreateTexture(nil, "OVERLAY") player:SetSize(32, 32) player:SetTexture("Interface\\Minimap\\MinimapArrow.blp") player:SetBlendMode("ADD") player:SetPoint("CENTER") local text = radarFrame:CreateFontString(nil, "OVERLAY", "GameTooltipText") text:SetSize(128, 15) text:SetPoint("BOTTOMLEFT", radarFrame, "TOPLEFT") text:SetTextColor(1, 1, 1, 1) text:Show() radarFrame.text = text local inRangeText = radarFrame:CreateFontString(nil, "OVERLAY", "GameTooltipText") inRangeText:SetSize(128, 15) inRangeText:SetPoint("TOPLEFT", radarFrame, "BOTTOMLEFT") inRangeText:SetTextColor(1, 1, 1, 1) inRangeText:Hide() radarFrame.inRangeText = inRangeText radarFrame.dots = {} for i = 1, 40 do local dot = radarFrame:CreateTexture(nil, "OVERLAY") dot:SetSize(24, 24) dot:SetTexture("Interface\\Minimap\\PartyRaidBlips") -- 249183 dot:Hide() radarFrame.dots[i] = dot end radarFrame:Hide() end ---------------- -- OnUpdate -- ---------------- do local UnitExists, UnitIsUnit, UnitIsDeadOrGhost, UnitIsConnected, GetPlayerFacing, UnitClass, IsInRaid, GetNumGroupMembers, GetRaidTargetIndex = UnitExists, UnitIsUnit, UnitIsDeadOrGhost, UnitIsConnected, GetPlayerFacing, UnitClass, private.IsInRaid, private.GetNumGroupMembers, GetRaidTargetIndex local max, min, sin, cos, pi2 = math.max, math.min, math.sin, math.cos, math.pi * 2 local circleColor, rotation, pixelsperyard, activeDots, prevRange, prevThreshold, prevNumClosePlayer, prevclosestRange, prevColor, prevType = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 local bossMode local unitList = {} local BLIP_TEX_COORDS = { ["WARRIOR"] = { 0, 0.125, 0, 0.25 }, ["PALADIN"] = { 0.125, 0.25, 0, 0.25 }, ["HUNTER"] = { 0.25, 0.375, 0, 0.25 }, ["ROGUE"] = { 0.375, 0.5, 0, 0.25 }, ["PRIEST"] = { 0.5, 0.625, 0, 0.25 }, ["DEATHKNIGHT"] = { 0.625, 0.75, 0, 0.25 }, ["SHAMAN"] = { 0.75, 0.875, 0, 0.25 }, ["MAGE"] = { 0.875, 1, 0, 0.25 }, ["WARLOCK"] = { 0, 0.125, 0.25, 0.5 }, ["DRUID"] = { 0.25, 0.375, 0.25, 0.5 }, } local function setDot(id, sinTheta, cosTheta) local dot = radarFrame.dots[id] if dot.range < (mainFrame.range * 1.5) then -- If person is closer than 1.5 * range, show the dot. Else hide it dot:ClearAllPoints() dot:SetPoint("CENTER", radarFrame, "CENTER", ((dot.x * cosTheta) - (-dot.y * sinTheta)) * pixelsperyard, ((dot.x * sinTheta) + (-dot.y * cosTheta)) * pixelsperyard) dot:Show() elseif dot:IsShown() then dot:Hide() end end function updateIcon() local numPlayers = GetNumGroupMembers() activeDots = max(numPlayers, activeDots) for i = 1, activeDots do local dot = radarFrame.dots[i] if i <= numPlayers then unitList[i] = IsInRaid() and "raid" .. i or "party" .. i local _, class = UnitClass(unitList[i]) local icon = GetRaidTargetIndex(unitList[i]) dot.class = class if icon and icon < 9 then dot.icon = icon dot:SetTexture("Interface\\TargetingFrame\\UI-RaidTargetingIcon_" .. icon) -- 13700 .. icon dot:SetTexCoord(0, 1, 0, 1) dot:SetSize(16, 16) dot:SetDrawLayer("OVERLAY", 1) else dot.icon = nil class = class or "PRIEST" dot:SetTexture("Interface\\Minimap\\PartyRaidBlips") -- 249183 dot:SetTexCoord(BLIP_TEX_COORDS[class][1], BLIP_TEX_COORDS[class][2], BLIP_TEX_COORDS[class][3], BLIP_TEX_COORDS[class][4]) dot:SetSize(24, 24) dot:SetDrawLayer("OVERLAY", 0) end elseif dot:IsShown() then dot:Hide() end end end function updateRangeFrame() if mainFrame.hideTime > 0 and GetTime() > mainFrame.hideTime then rangeCheck:Hide() return end local activeRange = mainFrame.range -- local restricted = mainFrame.restrictions -- GetPlayerFacing() was only protected in 7.1.0 local tEnabled = textFrame:IsShown() local rEnabled = radarFrame:IsShown() local reverse = mainFrame.reverse local warnThreshold = mainFrame.redCircleNumPlayers if tEnabled then for i = 1, 5 do textFrame.lines[i]:SetText("") textFrame.lines[i]:Hide() end if mainFrame.bossMode then textFrame.text:SetText(L.RANGERADAR_BOSS_HEADER:format(activeRange)) else if reverse then if warnThreshold > 1 then textFrame.text:SetText(L.RANGECHECK_RHEADERT:format(activeRange, warnThreshold)) else textFrame.text:SetText(L.RANGECHECK_RHEADER:format(activeRange)) end else if warnThreshold > 1 then textFrame.text:SetText(L.RANGECHECK_HEADERT:format(activeRange, warnThreshold)) else textFrame.text:SetText(L.RANGECHECK_HEADER:format(activeRange)) end end end end if rEnabled and (prevRange ~= activeRange or prevThreshold ~= mainFrame.redCircleNumPlayers) then prevRange = activeRange pixelsperyard = min(radarFrame:GetWidth(), radarFrame:GetHeight()) / (activeRange * 3) radarFrame.circle:SetSize(activeRange * pixelsperyard * 2, activeRange * pixelsperyard * 2) if mainFrame.bossMode then if bossMode ~= mainFrame.bossMode then bossMode = mainFrame.bossMode end radarFrame.text:SetText(L.RANGERADAR_BOSS_HEADER:format(activeRange)) else if reverse then radarFrame.text:SetText(L.RANGERADAR_RHEADER:format(activeRange, mainFrame.redCircleNumPlayers)) else radarFrame.text:SetText(L.RANGERADAR_HEADER:format(activeRange, mainFrame.redCircleNumPlayers)) end end end rotation = pi2 - (GetPlayerFacing() or 0) local sinTheta = sin(rotation) local cosTheta = cos(rotation) local closePlayer = 0 local closestRange = nil -- declare as nil to prevent luacheck error local closetName local filter = mainFrame.filter local type = reverse and 2 or filter and 1 or 0 local onlySummary = mainFrame.onlySummary if mainFrame.bossMode then local uId = mainFrame.bossUnit local range = getUnitRange(uId) if uId and range and range <= activeRange and (not filter or filter(uId)) then closePlayer = closePlayer + 1 local color = NORMAL_FONT_COLOR closetName = UnitName(uId) if rEnabled then -- Only used by radar if not closestRange then closestRange = range elseif range < closestRange then closestRange = range end end if tEnabled and not onlySummary and closePlayer < 6 then -- Display up to 5 players in text range frame. textFrame.lines[closePlayer]:SetText(closetName, color.r, color.g, color.b) textFrame.lines[closePlayer]:SetTextColor(color.r, color.g, color.b) textFrame.lines[closePlayer]:Show() textFrame:SetHeight((closePlayer * 12) + 12) end end else for i = 1, GetNumGroupMembers() do local uId = unitList[i] local dot = radarFrame.dots[i] if UnitExists(uId) and not UnitIsUnit(uId, "player") and not UnitIsDeadOrGhost(uId) and UnitIsConnected(uId) and (not filter or filter(uId)) then local range = getUnitRange(uId) local inRange = false if range < activeRange + 0.5 then closePlayer = closePlayer + 1 inRange = true if rEnabled then -- Only used by radar if not closestRange then closestRange = range elseif range < closestRange then closestRange = range end end if not closetName then closetName = DBM:GetUnitFullName(uId) closetName = DBM:GetShortServerName(closetName) end end if tEnabled and inRange and not onlySummary and closePlayer < 6 then -- Display up to 5 players in text range frame. local playerName = DBM:GetUnitFullName(uId) playerName = DBM:GetShortServerName(playerName) local color = RAID_CLASS_COLORS[dot.class] or NORMAL_FONT_COLOR textFrame.lines[closePlayer]:SetText(dot.icon and ("|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_%d:0|t %s"):format(dot.icon, playerName) or playerName) textFrame.lines[closePlayer]:SetTextColor(color.r, color.g, color.b) textFrame.lines[closePlayer]:Show() textFrame:SetHeight((closePlayer * 12) + 12) end if rEnabled then local playerX, playerY = GetPlayerMapPosition("player") if playerX == 0 and playerY == 0 then rangeCheck:Hide(true) return end dot.x = rangeX dot.y = rangeY dot.range = range setDot(i, sinTheta, cosTheta) end elseif rEnabled and dot:IsShown() then dot:Hide() end end end if tEnabled then -- Green Text (Regular range frame and not near too many players, or reverse range frame and we ARE near enough) textFrame.inRangeText:SetText(L.RANGECHECK_IN_RANGE_TEXT:format(closePlayer, activeRange)) textFrame.inRangeText:Show() if (reverse and closePlayer >= warnThreshold) or (not reverse and closePlayer < warnThreshold) then textFrame.inRangeText:SetTextColor(0, 1, 0) -- Red Text (Regular range frame and we are near too many players, or reverse range frame and we aren't near enough) else updateSound(closePlayer) textFrame.inRangeText:SetTextColor(1, 0, 0) end textFrame:Show() end if rEnabled then if prevNumClosePlayer ~= closePlayer or prevclosestRange ~= closestRange or prevType ~= type then if closePlayer >= warnThreshold then -- Only show the text if the circle is red circleColor = reverse and 1 or 2 if closePlayer == 1 then radarFrame.inRangeText:SetText(L.RANGERADAR_IN_RANGE_TEXTONE:format(closetName, closestRange)) else radarFrame.inRangeText:SetText(L.RANGERADAR_IN_RANGE_TEXT:format(closePlayer, closestRange)) end radarFrame.inRangeText:Show() else circleColor = reverse and 2 or 1 radarFrame.inRangeText:Hide() end prevNumClosePlayer = closePlayer prevclosestRange = closestRange prevType = type end if UnitIsDeadOrGhost("player") then circleColor = 3 end if prevColor ~= circleColor then if circleColor == 1 then radarFrame.circle:SetVertexColor(0, 1, 0) elseif circleColor == 2 then radarFrame.circle:SetVertexColor(1, 0, 0) else radarFrame.circle:SetVertexColor(1, 1, 1) end prevColor = circleColor end if circleColor == 2 then -- Red updateSound(closePlayer) end end end end local updater = mainFrame:CreateAnimationGroup() updater:SetLooping("REPEAT") local anim = updater:CreateAnimation() anim:SetDuration(0.05) mainFrame:SetSize(0, 0) mainFrame:SetScript("OnEvent", function(self, event) if event == "PARTY_MEMBERS_CHANGED" or event == "RAID_ROSTER_UPDATE" or event == "RAID_TARGET_UPDATE" then updateIcon() end end) ----------------------- -- Check functions -- ----------------------- local getDistanceBetween, getDistanceBetweenAll do local UnitExists, UnitIsUnit, UnitIsDeadOrGhost, UnitIsConnected = UnitExists, UnitIsUnit, UnitIsDeadOrGhost, UnitIsConnected function getDistanceBetweenAll(checkrange) local range for uId in DBM:GetGroupMembers() do if UnitExists(uId) and not UnitIsUnit(uId, "player") and not UnitIsDeadOrGhost(uId) and UnitIsConnected(uId) then range = getUnitRange(uId) if checkrange < (range + 0.5) then return true end end end return false end function getDistanceBetween(uId, x, y) local restrictionsActive = DBM:HasMapRestrictions() if restrictionsActive then if not x then -- If only one arg then 2nd arg is always assumed to be player return getUnitRange(uId) end if type(x) == "string" and UnitExists(x) then -- arguments: uId, uId2 if UnitIsUnit("player", uId) then return getUnitRange(x) elseif UnitIsUnit("player", x) then return getUnitRange(uId) end end else -- Neither unit is player, no way to avoid GetPlayerMapPosition if not x then -- If only one arg then 2nd arg is always assumed to be player x, y = GetPlayerMapPosition("player") end if type(x) == "string" and UnitExists(x) then -- arguments: uId, uId2 local uId2 = x x, y = GetPlayerMapPosition(uId2) if not x then print("getDistanceBetween failed for: " .. uId .. " (" .. tostring(UnitExists(uId)) .. ") and " .. uId2 .. " (" .. tostring(UnitExists(uId2)) .. ")") return end end end if restrictionsActive then -- Cannot check distance between player and a location (not another unit, again, fail quietly) return 1000 end local mapX, mapY = DBM:GetMapSize() local startX, startY = GetPlayerMapPosition(uId) local dX = (startX - x) * mapX local dY = (startY - y) * mapY return (dX * dX + dY * dY) ^ 0.5 end end --------------- -- Methods -- --------------- local restoreRange, restoreFilter, restoreThreshold, restoreReverse function rangeCheck:Show(range, filter, forceshow, redCircleNumPlayers, reverse, hideTime, onlySummary, bossUnit) DBM:Debug(("Range Frame called. #members: %d ; Options: %s + %s + %s ; forceshow: %s ; MapRestrictions: %s"):format(DBM:GetNumRealGroupMembers(), tostring(DBM.Options.DontShowRangeFrame), tostring(DBM.Options.SpamSpecInformationalOnly), DBM.Options.RangeFrameFrames or "nil", tostring(forceshow) or "nil", tostring(DBM:HasMapRestrictions())), 3) if (DBM:GetNumRealGroupMembers() < 2 or DBM.Options.DontShowRangeFrame or DBM.Options.SpamSpecInformationalOnly) and not forceshow then return end if type(range) == "function" then -- The first argument is optional return self:Show(nil, range) end range = range or 10 redCircleNumPlayers = redCircleNumPlayers or 1 if not textFrame then createTextFrame() end if not radarFrame then createRadarFrame() end mainFrame.previouslyShown = self:IsShown() local restrictionsActive = DBM:HasMapRestrictions() if (DBM.Options.RangeFrameFrames == "text" or DBM.Options.RangeFrameFrames == "both" or restrictionsActive) and not textFrame:IsShown() then DBM:Debug("Range TEXT frame shown", 3) textFrame:Show() end -- TODO, add check for restricted area here so we can prevent radar frame loading. if not restrictionsActive and (DBM.Options.RangeFrameFrames == "radar" or DBM.Options.RangeFrameFrames == "both") and not radarFrame:IsShown() then DBM:Debug("Range RADAR frame shown", 3) radarFrame:Show() end mainFrame.previousRange = mainFrame.range or range mainFrame.range = range mainFrame.filter = filter mainFrame.redCircleNumPlayers = redCircleNumPlayers mainFrame.reverse = reverse mainFrame.hideTime = hideTime and (GetTime() + hideTime) or 0 mainFrame.restrictions = restrictionsActive mainFrame.onlySummary = onlySummary mainFrame.bossUnit = bossUnit mainFrame.bossMode = bossUnit ~= nil if not mainFrame.eventRegistered then mainFrame.eventRegistered = true updateIcon() mainFrame:RegisterEvent("PARTY_MEMBERS_CHANGED") mainFrame:RegisterEvent("RAID_ROSTER_UPDATE") mainFrame:RegisterEvent("RAID_TARGET_UPDATE") end updater:SetScript("OnLoop", updateRangeFrame) updater:Play() if forceshow and not DBM.Options.DontRestoreRange then -- Force means user activated range frame, store user value for restore function restoreRange, restoreFilter, restoreThreshold, restoreReverse = mainFrame.range, mainFrame.filter, mainFrame.redCircleNumPlayers, mainFrame.reverse end end function rangeCheck:SetBossRange(range, bossUnit) if DBM.Options.DontShowRangeFrame then return end if not HarmItems[range] then error(("Boss mode range \"%d yd\" is not supported."):format(range), 2) end self:Show(range, nil, true, nil, nil, nil, nil, bossUnit) end function rangeCheck:DisableBossMode() if mainFrame and mainFrame.bossMode then mainFrame.bossMode = false mainFrame.bossUnit = nil mainFrame.range = mainFrame.previousRange restoreRange = mainFrame.range if not mainFrame.previouslyShown then self:Hide(true) end end end function rangeCheck:Hide(force) if not DBM.Options.DontRestoreRange and restoreRange and not force then -- Restore range frame to way it was when boss mod is done with it rangeCheck:Show(restoreRange, restoreFilter, true, restoreThreshold, restoreReverse) else restoreRange, restoreFilter, restoreThreshold, restoreReverse = nil, nil, nil, nil updater:Stop() if mainFrame.eventRegistered then mainFrame.eventRegistered = nil mainFrame:UnregisterAllEvents() end if textFrame then textFrame:Hide() end if radarFrame then radarFrame:Hide() end end end function rangeCheck:IsShown() return textFrame and textFrame:IsShown() or radarFrame and radarFrame:IsShown() end function rangeCheck:IsRadarShown() return radarFrame and radarFrame:IsShown() end function rangeCheck:UpdateRestrictions(force) mainFrame.restrictions = force or DBM:HasMapRestrictions() end function rangeCheck:SetHideTime(hideTime) mainFrame.hideTime = hideTime and (GetTime() + hideTime) or 0 end -- GetDistance(uId) -- distance between you and the given uId -- GetDistance(uId, x, y) -- distance between uId and the coordinates -- GetDistance(uId, uId2) -- distance between the two uIds function rangeCheck:GetDistance(...) return getDistanceBetween(...) end function rangeCheck:GetDistanceAll(checkrange) return getDistanceBetweenAll(checkrange) end do local function UpdateRangeFrame(r, reverse) if rangeCheck:IsShown() then rangeCheck:Hide(true) else if DBM:HasMapRestrictions() then DBM:AddMsg(L.NO_RANGE) end rangeCheck:Show((r and r < 201) and r or 10, nil, true, nil, reverse) end end SLASH_DBMRANGE1 = "/range" SLASH_DBMRANGE2 = "/distance" SLASH_DBMRRANGE1 = "/rrange" SLASH_DBMRRANGE2 = "/rdistance" SLASH_DBMBOSSRANGE1 = "/bossrange" SlashCmdList["DBMRANGE"] = function(msg) UpdateRangeFrame(tonumber(msg), false) end SlashCmdList["DBMRRANGE"] = function(msg) UpdateRangeFrame(tonumber(msg), true) end SlashCmdList["DBMBOSSRANGE"] = function(msg) local r = tonumber(msg) if not r then DBM.RangeCheck:DisableBossMode() else DBM.RangeCheck:SetBossRange(r, "target") end end end ================================================ FILE: DBM-Core/DBM-TimerTracker.lua ================================================ local CallbackHandler = LibStub("CallbackHandler-1.0") local AddOn = LibStub("AceAddon-3.0"):NewAddon("DBM-TimerTracker", "AceConsole-3.0", "AceEvent-3.0", "AceTimer-3.0", "AceHook-3.0") AddOn.callbacks = AddOn.callbacks or CallbackHandler:New(AddOn) TT = AddOn:NewModule("Enhanced_TimerTracker", "AceHook-3.0", "AceEvent-3.0") AddOn.RegisteredModules = {} AddOn.RegisteredInitialModules = {} local ipairs = ipairs local unpack = unpack local floor, fmod, modf = math.floor, math.fmod, math.modf local LSM = LibStub("LibSharedMedia-3.0") local GetTime = GetTime local GetBattlefieldScore, GetNumBattlefieldScores, GetUnitName, UnitFactionGroup = GetBattlefieldScore, GetNumBattlefieldScores, GetUnitName, UnitFactionGroup local function GetBattlefieldFaction(unit) -- workaround to detect faction in Cross-Faction BG if not unit then return UnitFactionGroup("player") end local numScores = GetNumBattlefieldScores() if numScores == 0 then return UnitFactionGroup("player") else local unitName = GetUnitName(unit, true) for i = 1, numScores do local name, _, _, _, _, faction = GetBattlefieldScore(i) if name == unitName then if faction == 0 then return "Horde" else return "Alliance" end end end end end local media = {} LSM:Register("statusbar", "ElvUI Norm", [[Interface\AddOns\DBM-Core\textures\NormTex2.tga]]) LSM:Register("background", "ElvUI Blank", [[Interface\BUTTONS\WHITE8X8]]) media.blankTex = LSM:Fetch("background", "ElvUI Blank") media.glossTex = LSM:Fetch("statusbar", "ElvUI Norm") local timerTypes = { ["30-120"] = {1, 30, 120}, ["60-120"] = {1, 60, 120}, ["120-120"] = {1, 120, 120}, ["15-60"] = {1, 15, 60}, ["30-60"] = {1, 30, 60}, ["60-60"] = {1, 60, 60}, } local chatMessage = { -- enUS -- WSG ["The battle for Warsong Gulch begins in 30 seconds. Prepare yourselves!"] = timerTypes["30-120"], ["The battle for Warsong Gulch begins in 1 minute."] = timerTypes["60-120"], ["The battle for Warsong Gulch begins in 2 minutes."] = timerTypes["120-120"], -- AB ["The Battle for Arathi Basin begins in 30 seconds. Prepare yourselves!"] = timerTypes["30-120"], ["The Battle for Arathi Basin begins in 1 minute."] = timerTypes["60-120"], ["The battle for Arathi Basin begins in 2 minutes."] = timerTypes["120-120"], -- EotS ["The Battle for Eye of the Storm begins in 30 seconds."] = timerTypes["30-120"], ["The Battle for Eye of the Storm begins in 1 minute."] = timerTypes["60-120"], ["The battle for Eye of the Storm begins in 2 minutes."] = timerTypes["120-120"], -- AV ["The Battle for Alterac Valley begins in 30 seconds. Prepare yourselves!"] = timerTypes["30-120"], ["30 seconds until the battle for Alterac Valley begins."] = timerTypes["30-120"], ["The Battle for Alterac Valley begins in 1 minute."] = timerTypes["60-120"], ["1 minute until the battle for Alterac Valley begins."] = timerTypes["60-120"], ["The Battle for Alterac Valley begins in 2 minutes."] = timerTypes["120-120"], -- SotA ["The battle for Strand of the Ancients begins in 30 seconds. Prepare yourselves!."] = timerTypes["30-120"], ["The battle for Strand of the Ancients begins in 1 minute."] = timerTypes["60-120"], ["The battle for Strand of the Ancients begins in 2 minutes."] = timerTypes["120-120"], -- SotA 2 round ["Round 2 begins in 30 seconds. Prepare yourselves!"] = timerTypes["30-60"], ["Round 2 of the Battle for the Strand of the Ancients begins in 1 minute."] = timerTypes["60-60"], -- Other ["The battle will begin in 30 seconds!"] = timerTypes["30-120"], ["The battle will begin in 1 minute."] = timerTypes["60-120"], ["The battle will begin in two minutes."] = timerTypes["120-120"], ["The battle begins in 30 seconds!"] = timerTypes["30-120"], ["The battle begins in 1 minute!"] = timerTypes["60-120"], ["The battle begins in 2 minutes!"] = timerTypes["120-120"], -- Arena ["Fifteen seconds until the Arena battle begins!"] = timerTypes["15-60"], ["Thirty seconds until the Arena battle begins!"] = timerTypes["30-60"], ["One minute until the Arena battle begins!"] = timerTypes["60-60"], -- deDE -- WSG ["Der Kampf um die Kriegshymnenschlucht beginnt in 30 Sekunden. Haltet Euch bereit!"] = timerTypes["30-120"], ["Der Kampf um die Kriegshymnenschlucht beginnt in 1 Minute."] = timerTypes["60-120"], -- AV ["Der Kampf um das Alteractal beginnt in 30 Sekunden."] = timerTypes["30-120"], ["Der Kampf um das Alteractal beginnt in 1 Minute."] = timerTypes["60-120"], -- SotA 2 round ["Runde 2 beginnt in 30 Sekunden. Macht Euch bereit!"] = timerTypes["30-60"], ["Runde 2 der Schlacht um den Strand der Uralten beginnt in 1 Minute."] = timerTypes["60-60"], -- Other ["Die Schlacht beginnt in 30 Sekunden!"] = timerTypes["30-120"], ["Die Schlacht beginnt in 1 Minute!"] = timerTypes["60-120"], ["Die Schlacht beginnt in 2 Minuten!"] = timerTypes["120-120"], -- Arena ["Noch fünfzehn Sekunden bis der Arenakampf beginnt!"] = timerTypes["15-60"], ["Noch dreißig Sekunden bis der Arenakampf beginnt!"] = timerTypes["30-60"], ["Noch eine Minute bis der Arenakampf beginnt!"] = timerTypes["60-60"], -- esES & esMX -- WSG ["La batalla por la Garganta Grito de Guerra comenzará en 30 segundos. ¡Preparaos!"] = timerTypes["30-120"], ["La batalla por la Garganta Grito de Guerra comenzará en 1 minuto."] = timerTypes["60-120"], -- AV ["30 segundos para que dé comienzo la batalla por el Valle de Alterac."] = timerTypes["30-120"], ["1 minuto para que dé comienzo la batalla por el Valle de Alterac."] = timerTypes["60-120"], -- SotA 2 round ["La ronda 2 comenzará en 30 segundos. ¡Preparaos!"] = timerTypes["30-60"], ["La ronda 2 de la batalla por la Playa de los Ancestros comenzará en 1 minuto."] = timerTypes["60-60"], -- Other ["¡La batalla comienza en treinta segundos!"] = timerTypes["30-120"], ["¡La batalla comienza en un minuto!"] = timerTypes["60-120"], ["¡La batalla comienza en dos minutos!"] = timerTypes["120-120"], -- Arena ["¡Quince segundos para que comience la batalla de arena!"] = timerTypes["15-60"], ["¡Treinta segundos hasta que comience la batalla en arena!"] = timerTypes["30-60"], ["¡Un minuto hasta que dé comienzo la batalla en arena!"] = timerTypes["60-60"], -- frFR -- WSG ["La bataille pour le goulet des Chanteguerres commence dans 30 secondes. Préparez-vous !"] = timerTypes["30-120"], ["La bataille pour le goulet des Chanteguerres commence dans 1 minute."] = timerTypes["60-120"], -- AV ["La bataille pour la vallée d’Alterac commence dans 30 secondes."] = timerTypes["30-120"], ["La bataille pour la vallée d’Alterac commence dans 1 minute."] = timerTypes["60-120"], -- SotA 2 round ["Début de la deuxième manche dans 30 secondes. Préparez-vous !"] = timerTypes["30-60"], ["Deuxième manche de la bataille du rivage des Anciens dans 1 minute."] = timerTypes["60-60"], -- Other ["La bataille commence dans 30 secondes !"] = timerTypes["30-120"], ["La bataille commence dans 1 minute !"] = timerTypes["60-120"], ["La bataille commence dans 2 minutes !"] = timerTypes["120-120"], -- Arena ["Le combat commence dans quinze secondes !"] = timerTypes["15-60"], ["Le combat d’arène commence dans trente secondes !"] = timerTypes["30-60"], ["Le combat d’arène commence dans une minute !"] = timerTypes["60-60"], -- koKR -- WSG ["30초 후 전쟁노래 협곡 전투가 시작됩니다. 준비하십시오!"] = timerTypes["30-120"], ["1분 후 전쟁노래 협곡 전투가 시작됩니다!"] = timerTypes["60-120"], -- AV ["알터랙 계곡 전투 개시 30초 전..."] = timerTypes["30-120"], ["알터랙 계곡 전투 개시 1분 전..."] = timerTypes["60-120"], -- SotA 2 round ["30초 후 두 번째 전투가 시작됩니다. 준비하세요!"] = timerTypes["30-60"], ["1분 후 고대의 해안 두 번째 전투가 시작됩니다."] = timerTypes["60-60"], -- Other ["30초 후 전투가 시작됩니다!"] = timerTypes["30-120"], ["1분 후 전투가 시작됩니다!"] = timerTypes["60-120"], ["2분 후 전투가 시작됩니다!"] = timerTypes["120-120"], -- Arena ["투기장 전투 시작 15초 전입니다!"] = timerTypes["15-60"], ["투기장 전투 시작 30초 전입니다!"] = timerTypes["30-60"], ["투기장 전투 시작 1분 전입니다!"] = timerTypes["60-60"], -- ruRU -- Ущелье Песни Войны ["Битва за Ущелье Песни Войны начнется через 30 секунд. Приготовьтесь!"] = timerTypes["30-120"], ["Битва за Ущелье Песни Войны начнется через 30 секунд. Приготовиться!"] = timerTypes["30-120"], ["Битва за Ущелье Песни Войны начнется через 1 минуту."] = timerTypes["60-120"], ["Сражение в Ущелье Песни Войны начнется через 2 минуты."] = timerTypes["120-120"], -- Низина Арати ["Битва за Низину Арати начнется через 30 секунд. Приготовьтесь!"] = timerTypes["30-120"], ["Битва за Низину Арати начнется через 30 секунд."] = timerTypes["30-120"], ["Битва за Низину Арати начнется через 1 минуту."] = timerTypes["60-120"], ["Битва за Низину Арати начнется через минуту."] = timerTypes["60-120"], ["Сражение в Низине Арати начнется через 2 минуты."] = timerTypes["120-120"], -- Око Бури ["Битва за Око Бури начнется через 30 секунд."] = timerTypes["30-120"], ["Битва за Око Бури начнется через 1 минуту."] = timerTypes["60-120"], ["Сражение в Око Бури начнется через 2 минуты."] = timerTypes["120-120"], -- Альтеракская долина ["Сражение на Альтеракской долине начнется через 30 секунд. Приготовьтесь!"] = timerTypes["30-120"], ["30 секунд до начала битвы в Альтеракской долине."] = timerTypes["30-120"], ["Сражение на Альтеракской долине начнется через 1 минуту."] = timerTypes["60-120"], ["До начала сражения за Альтеракскую долину остается 1 минута."] = timerTypes["60-120"], ["Сражение на Альтеракской долине начнется через 2 минуты."] = timerTypes["120-120"], -- Берег Древних ["Битва за Берег Древних начнется через 30 секунд. Приготовьтесь!"] = timerTypes["30-120"], ["Сражение за Берег Древних начнется через 30 секунд. Готовьтесь!"] = timerTypes["30-120"], ["Битва за Берег Древних начнется через 1 минуту."] = timerTypes["60-120"], ["Сражение за Берег Древних начнется через 1 минуту."] = timerTypes["60-120"], ["Битва за Берег Древних начнется через 2 минуты."] = timerTypes["120-120"], -- Берег древних 2-й раунд ["Второй раунд начнется через 30 секунд. Приготовьтесь!"] = timerTypes["30-60"], ["Второй раунд начинается через 30 секунд. Приготовьтесь!"] = timerTypes["30-60"], ["Второй раунд битвы за Берег Древних начнется через 1 минуту."] = timerTypes["60-60"], ["Второй раунд сражения за Берег Древних начнется через 1 минуту."] = timerTypes["60-60"], -- Другие ["Битва начнется через 30 секунд!"] = timerTypes["30-120"], ["Битва начнется через 30 секунд."] = timerTypes["30-120"], ["Битва начнется через 1 минуту."] = timerTypes["60-120"], ["Битва начнется через минуту!"] = timerTypes["60-120"], ["Битва начнется через 60 секунд."] = timerTypes["60-120"], ["Битва начнется через 2 минуты!"] = timerTypes["120-120"], -- Арена ["15 секунд до начала боя на арене!"] = timerTypes["15-60"], ["Пятнадцать секунд до начала боя на арене!"] = timerTypes["15-60"], ["30 секунд до начала боя на арене!"] = timerTypes["30-60"], ["Тридцать секунд до начала боя на арене !"] = timerTypes["30-60"], ["1 минута до начала боя на арене!"] = timerTypes["60-60"], ["Одна минута до начала боя на арене!"] = timerTypes["60-60"], -- zhCN -- WSG ["战歌峡谷战斗将在30秒钟内开始。做好准备!"] = timerTypes["30-120"], ["战歌峡谷战斗将在1分钟内开始。"] = timerTypes["60-120"], -- AV ["奥特兰克山谷的战斗将在30秒之后开始。"] = timerTypes["30-120"], ["奥特兰克山谷的战斗将在1分钟之后开始。"] = timerTypes["60-120"], -- SotA 2 round ["第2轮比赛将在30秒后开始。备战!"] = timerTypes["30-60"], ["远古海滩的第2轮比赛将在1分钟后开始。"] = timerTypes["60-60"], -- Other ["战斗将在30秒后开始!"] = timerTypes["30-120"], ["战斗将在1分钟后开始!"] = timerTypes["60-120"], ["战斗将在2分钟后开始!"] = timerTypes["120-120"], -- Arena ["竞技场战斗将在十五秒后开始!"] = timerTypes["15-60"], ["竞技场战斗将在三十秒后开始!"] = timerTypes["30-60"], ["竞技场战斗将在一分钟后开始!"] = timerTypes["60-60"], -- zhTW -- WSG ["戰歌峽谷戰鬥將在30秒鐘內開始。做好準備!"] = timerTypes["30-120"], ["戰歌峽谷戰鬥將在1分鐘內開始。"] = timerTypes["60-120"], -- AV ["奧特蘭克山谷30秒後開始戰鬥。"] = timerTypes["30-120"], ["奧特蘭克山谷一分鐘後開始戰鬥。"] = timerTypes["60-120"], -- SotA 2 round ["第2回合將在30秒後開始。做好準備!"] = timerTypes["30-60"], ["遠祖灘頭的第2回合戰鬥將在1分鐘後開始。"] = timerTypes["60-60"], -- Other ["戰鬥在30秒內開始!"] = timerTypes["30-120"], ["戰鬥在1分鐘內開始!"] = timerTypes["60-120"], ["戰鬥在2分鐘內開始!"] = timerTypes["120-120"], -- Arena ["15秒後競技場戰鬥開始!"] = timerTypes["15-60"], ["30秒後競技場戰鬥開始!"] = timerTypes["30-60"], ["1分鐘後競技場戰鬥開始!"] = timerTypes["60-60"] } local TIMER_MINUTES_DISPLAY = "%d:%02d" local TIMER_TYPE_PVP = 1 local TIMER_TYPE_CHALLENGE_MODE = 2 local TIMER_TYPE_PLAYER_COUNTDOWN = 3 -- SOUND KITS local SOUNDKIT = { UI_COUNTDOWN_BAR_STATE_STARTS = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\TempMono.ogg", -- 158958 UI_COUNTDOWN_BAR_STATE_FINISHED = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\TempMono.ogg", -- 158959 UI_COUNTDOWN_MEDIUM_NUMBER_FINISHED = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\TempMono.ogg", -- 158960 UI_COUNTDOWN_TIMER = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\UI_BattlegroundCountdown_Timer.ogg", -- 158565 UI_COUNTDOWN_FINISHED = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\UI_BattlegroundCountdown_End.ogg", -- 158566 UI_BATTLEGROUND_COUNTDOWN_TIMER = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\UI_BattlegroundCountdown_Timer.ogg", -- 25477 UI_BATTLEGROUND_COUNTDOWN_FINISHED = "Interface\\AddOns\\DBM-Core\\sounds\\Timer\\UI_BattlegroundCountdown_End.ogg", -- 25478 } local TIMER_DATA = { [1] = {mediumMarker = 11, largeMarker = 6, updateInterval = 10}, [2] = {mediumMarker = 100, largeMarker = 100, updateInterval = 100}, [3] = {mediumMarker = 31, largeMarker = 11, updateInterval = 10, finishedSoundKitID = SOUNDKIT.UI_COUNTDOWN_FINISHED, bigNumberSoundKitID = SOUNDKIT.UI_COUNTDOWN_TIMER, mediumNumberFinishedSoundKitID = SOUNDKIT.UI_COUNTDOWN_MEDIUM_NUMBER_FINISHED, barShowSoundKitID = SOUNDKIT.UI_COUNTDOWN_BAR_STATE_STARTS, barHideSoundKitID = SOUNDKIT.UI_COUNTDOWN_BAR_STATE_FINISHED} } local TIMER_NUMBERS_SETS = {} TIMER_NUMBERS_SETS["BigGold"] = { texture = "Interface\\AddOns\\DBM-Core\\textures\\Timer\\BigTimerNumbers", w = 256, h = 170, texW = 1024, texH = 512, numberHalfWidths = { 35/128, -- 0 14/128, -- 1 33/128, -- 2 32/128, -- 3 36/128, -- 4 32/128, -- 5 33/128, -- 6 29/128, -- 7 31/128, -- 8 31/128, -- 9 } } local scale = UIParent:GetEffectiveScale() local pixel, ratio = 1, 768 / GetScreenHeight() AddOn.mult = (pixel / scale) - ((pixel - ratio) / scale) function AddOn:Scale(x) local mult = AddOn.mult return mult * floor(x / mult + 0.5) end local function Size(frame, width, height) assert(width) frame:SetSize(AddOn:Scale(width), AddOn:Scale(height or width)) end local function Width(frame, width) assert(width) frame:SetWidth(AddOn:Scale(width)) end local function Height(frame, height) assert(height) frame:SetHeight(AddOn:Scale(height)) end local function Point(obj, arg1, arg2, arg3, arg4, arg5) if arg2 == nil then arg2 = obj:GetParent() end if type(arg2) == "number" then arg2 = AddOn:Scale(arg2) end if type(arg3) == "number" then arg3 = AddOn:Scale(arg3) end if type(arg4) == "number" then arg4 = AddOn:Scale(arg4) end if type(arg5) == "number" then arg5 = AddOn:Scale(arg5) end obj:SetPoint(arg1, arg2, arg3, arg4, arg5) end local function addapi(object) local mt = getmetatable(object).__index if not object.Size then mt.Size = Size end if not object.Point then mt.Point = Point end if not object.Width then mt.Width = Width end if not object.Height then mt.Height = Height end end local function CreateAlphaAnim(group, order, duration, change, delay, smoothing) local anim = group:CreateAnimation("Alpha") anim:SetOrder(order) anim:SetDuration(duration) anim:SetChange(change) if delay then anim:SetStartDelay(delay) end if smoothing then anim:SetSmoothing(smoothing) end end local function CreateScaleAnim(group, order, duration, scale, delay, smoothing) local anim = group:CreateAnimation("Scale") anim:SetOrder(order) anim:SetDuration(duration) anim:SetScale(scale, scale) if delay then anim:SetStartDelay(delay) end if smoothing then anim:SetSmoothing(smoothing) end end local function Timer_OnShow(self) self.time = self.endTime - GetTime() if self.time <= 0 then self:Hide() self.isFree = true elseif self.StartNumbers:IsPlaying() then self.StartNumbers:Stop() self.StartNumbers:Play() self.StartGlowNumbers:Stop() self.StartGlowNumbers:Play() end end local function StartNumbers_OnPlay(self) local timer = self:GetParent():GetParent() TT:SetTexNumbers(timer, timer.Digit1, timer.Digit2) end local function StartNumbers_OnFinished(self) local timer = self:GetParent():GetParent() timer.time = timer.time - 1 if timer.time > 0 then if timer.time < TIMER_DATA[timer.type].largeMarker and not self.anchorCenter then TT:SwitchToLargeDisplay(timer) end timer.StartNumbers:Play() timer.StartGlowNumbers:Play() else if DBM.Options.PlayTTCountdownFinished then if TIMER_DATA[timer.type].finishedSoundKitID then PlaySoundFile(TIMER_DATA[timer.type].finishedSoundKitID) else PlaySoundFile(SOUNDKIT.UI_BATTLEGROUND_COUNTDOWN_FINISHED) end end timer.anchorCenter = false timer.isFree = true timer.GoTextureAnim:Play() timer.GoTextureGlowAnim:Play() end end local function FadeBarIn_OnPlay(self) local timer = self:GetParent():GetParent() timer.StatusBar:Show() end local function FadeBarOut_OnFinished(self) local timer = self:GetParent():GetParent() timer.time = timer.time - 0.9 timer.StatusBar:Hide() timer.StartNumbers:Play() timer.StartGlowNumbers:Play() end function TT:ColorGradient(perc, ...) if perc >= 1 then return select(select("#", ...) - 2, ...) elseif perc <= 0 then return ... end local num = select("#", ...) / 3 local segment, relperc = modf(perc*(num - 1)) local r1, g1, b1, r2, g2, b2 = select((segment*3) + 1, ...) return r1 + (r2 - r1)*relperc, g1 + (g2 - g1)*relperc, b1 + (b2 - b1)*relperc end function TT:CreateTimerBar() local timer = CreateFrame("Frame", "DBM_GoldTimer"..(#self.timerList + 1), UIParent) timer:Size(206, 26) timer.GoFrame = CreateFrame("Frame", "$parentGoFrame", timer) timer.GoFrame:SetFrameLevel(1) timer.GoFrame:SetAlpha(0) timer.GoFrame:SetSize(256, 256) timer.GoFrame:SetPoint("CENTER", UIParent) timer.GoTextureAnim = timer.GoFrame:CreateAnimationGroup() CreateScaleAnim(timer.GoTextureAnim, 1, 0, 0.25) CreateAlphaAnim(timer.GoTextureAnim, 1, 0, 1) CreateScaleAnim(timer.GoTextureAnim, 2, 0.4, 4, nil, "OUT") CreateScaleAnim(timer.GoTextureAnim, 3, 0.2, 1.4, 0.6, "OUT") CreateAlphaAnim(timer.GoTextureAnim, 3, 0.2, -1, 0.6, "OUT") timer.GoTexture = timer.GoFrame:CreateTexture() timer.GoTexture:SetAllPoints() timer.GoGlowFrame = CreateFrame("Frame", "$parentGoGlowFrame", timer) timer.GoGlowFrame:SetFrameLevel(2) timer.GoGlowFrame:SetAlpha(0) timer.GoGlowFrame:SetAllPoints(timer.GoFrame) timer.GoTextureGlowAnim = timer.GoGlowFrame:CreateAnimationGroup() CreateScaleAnim(timer.GoTextureGlowAnim, 1, 0, 0.25) CreateAlphaAnim(timer.GoTextureGlowAnim, 1, 0, 1) CreateScaleAnim(timer.GoTextureGlowAnim, 2, 0.4, 4, nil, "OUT") CreateAlphaAnim(timer.GoTextureGlowAnim, 2, 0.4, -1, nil, "IN") timer.GoTextureGlow = timer.GoGlowFrame:CreateTexture() timer.GoTextureGlow:SetAllPoints() timer.DigitFrame = CreateFrame("Frame", "$parentDigitFrame", timer) timer.DigitFrame:SetFrameLevel(1) timer.DigitFrame:SetAlpha(0) timer.StartNumbers = timer.DigitFrame:CreateAnimationGroup() CreateScaleAnim(timer.StartNumbers, 1, 0, 0.25) CreateAlphaAnim(timer.StartNumbers, 1, 0, -1) CreateAlphaAnim(timer.StartNumbers, 2, 0, 1) CreateScaleAnim(timer.StartNumbers, 3, 0.3, 4, nil, "OUT") CreateScaleAnim(timer.StartNumbers, 4, 0.1, 1.2, 0.6) CreateAlphaAnim(timer.StartNumbers, 4, 0.1, -1, 0.6) timer.StartNumbers:SetScript("OnPlay", StartNumbers_OnPlay) timer.StartNumbers:SetScript("OnFinished", StartNumbers_OnFinished) timer.Digit1 = timer.DigitFrame:CreateTexture() timer.Digit2 = timer.DigitFrame:CreateTexture() timer.DigitGlowFrame = CreateFrame("Frame", "$parentDigitGlowFrame", timer) timer.DigitGlowFrame:SetFrameLevel(2) timer.DigitGlowFrame:SetAlpha(0) timer.StartGlowNumbers = timer.DigitGlowFrame:CreateAnimationGroup() CreateScaleAnim(timer.StartGlowNumbers, 1, 0, 0.25) CreateAlphaAnim(timer.StartGlowNumbers, 1, 0, 1) CreateScaleAnim(timer.StartGlowNumbers, 2, 0.3, 4, nil, "OUT") CreateAlphaAnim(timer.StartGlowNumbers, 2, 0.3, -1, nil, "IN") timer.Digit1.Glow = timer.DigitGlowFrame:CreateTexture() timer.Digit1.Glow:SetAllPoints(timer.Digit1) timer.Digit2.Glow = timer.DigitGlowFrame:CreateTexture() timer.Digit2.Glow:SetAllPoints(timer.Digit2) timer.StatusBar = CreateFrame("StatusBar", "$parentStatusBar", timer) timer.StatusBar:Hide() timer.StatusBar:Size(195, 13) timer.StatusBar:Point("TOP", 0, -2) timer.StatusBar:SetStatusBarTexture(media.glossTex) timer.StatusBar.Background = timer.StatusBar:CreateTexture("$parentBackground", "BORDER") timer.StatusBar.Background:SetAllPoints() timer.StatusBar.Background:SetTexture(media.blankTex) timer.StatusBar.Text = timer.StatusBar:CreateFontString("$parentTimeText", "OVERLAY", "GameFontHighlight") timer.StatusBar.Text:SetPoint("CENTER", 0, 0) timer.FadeBarIn = timer.StatusBar:CreateAnimationGroup() CreateAlphaAnim(timer.FadeBarIn, 1, 0, -1) CreateAlphaAnim(timer.FadeBarIn, 2, 1.9, 1) timer.FadeBarIn:SetScript("OnPlay", FadeBarIn_OnPlay) timer.FadeBarOut = timer.StatusBar:CreateAnimationGroup() CreateAlphaAnim(timer.FadeBarOut, 1, 0.9, -1) timer.FadeBarOut:SetScript("OnFinished", FadeBarOut_OnFinished) timer:SetScript("OnShow", Timer_OnShow) return timer end function TT:CreateTimer(timerType, timeSeconds, totalTime) if not timerType then return end local timer local isTimerRunning = false for _, frame in ipairs(self.timerList) do if frame.type == timerType and not frame.isFree then timer = frame isTimerRunning = true break end end if isTimerRunning and timer.type ~= TIMER_TYPE_PLAYER_COUNTDOWN then if not timer.StartNumbers:IsPlaying() then timer.time = timeSeconds timer.endTime = GetTime() + timeSeconds end else for _, frame in ipairs(self.timerList) do if frame.isFree then timer = frame break end end if timer and timer.type == TIMER_TYPE_PLAYER_COUNTDOWN then self:FreeTimerTrackerTimer(timer) end if not timer then timer = self:CreateTimerBar() self.timerList[#self.timerList + 1] = timer end timer:ClearAllPoints() timer:Point("TOP", 0, -100 - (24 * #self.timerList)) timer.isFree = false timer.type = timerType timer.time = timeSeconds timer.endTime = GetTime() + timeSeconds timer.totalTime = totalTime timer.StatusBar:SetMinMaxValues(0, totalTime) timer.style = TIMER_NUMBERS_SETS["BigGold"] timer.Digit1:Size(timer.style.w / 2, timer.style.h / 2) timer.Digit2:Size(timer.style.w / 2, timer.style.h / 2) timer.Digit1.width = timer.style.w / 2 timer.Digit2.width = timer.style.w / 2 timer.Digit1:SetTexture(timer.style.texture) timer.Digit2:SetTexture(timer.style.texture) timer.Digit1.Glow:SetTexture(timer.style.texture.."Glow") timer.Digit2.Glow:SetTexture(timer.style.texture.."Glow") timer.updateTime = TIMER_DATA[timer.type].updateInterval timer:SetScript("OnUpdate", self.BigNumberOnUpdate) timer:Show() end self:SetGoTexture(timer) end function TT:BigNumberOnUpdate(elapsed) self.time = self.endTime - GetTime() self.updateTime = self.updateTime - elapsed if self.time < TIMER_DATA[self.type].mediumMarker then if (self.time < TIMER_DATA[self.type].largeMarker) and not self.anchorCenter then TT:SwitchToLargeDisplay(self) elseif self.anchorCenter then self.anchorCenter = false end self:SetScript("OnUpdate", nil) if self.barShowing then self.barShowing = false self.FadeBarOut:Play() if TIMER_DATA[self.type].barHideSoundKitID then PlaySoundFile(TIMER_DATA[self.type].barHideSoundKitID) end else self.StartNumbers:Play() self.StartGlowNumbers:Play() end elseif not self.barShowing then self.FadeBarIn:Play() self.barShowing = true if TIMER_DATA[self.type].barShowSoundKitID then PlaySoundFile(TIMER_DATA[self.type].barShowSoundKitID) end elseif self.updateTime <= 0 then self.updateTime = TIMER_DATA[self.type].updateInterval end self.StatusBar:SetValue(self.time) local minutes, seconds = floor(self.time / 60), floor(fmod(self.time, 60)) self.StatusBar.Text:SetFormattedText(TIMER_MINUTES_DISPLAY, minutes, seconds) local r, g, b = TT:ColorGradient((self.time - 10) / self.totalTime, 1,0,0, 1,1,0, 0,1,0) self.StatusBar:SetStatusBarColor(r, g, b) self.StatusBar.Background:SetVertexColor(r * 0.25, g * 0.25, b * 0.25) end function TT:SetTexNumbers(timer, ...) local digits = {...} local timeDigits = floor(timer.time) local style = timer.style local texCoW = style.w / style.texW local texCoH = style.h / style.texH local columns = floor(style.texW / style.w) local digit, l, r, t, b local numberOffset, numShown = 0, 0 local i = 1 while digits[i] do if timeDigits > 0 then digit = fmod(timeDigits, 10) digits[i].hw = style.numberHalfWidths[digit + 1] * digits[i].width numberOffset = numberOffset + digits[i].hw l = fmod(digit, columns) * texCoW r = l + texCoW t = floor(digit / columns) * texCoH b = t + texCoH digits[i]:SetTexCoord(l, r, t, b) digits[i].Glow:SetTexCoord(l, r, t, b) timeDigits = floor(timeDigits / 10) numShown = numShown + 1 else digits[i]:SetTexCoord(0, 0, 0, 0) digits[i].Glow:SetTexCoord(0, 0, 0, 0) end i = i + 1 end if numberOffset > 0 then if DBM.Options.PlayTTCountdown then if TIMER_DATA[timer.type].bigNumberSoundKitID and numShown < TIMER_DATA[timer.type].largeMarker then PlaySoundFile(TIMER_DATA[timer.type].bigNumberSoundKitID) else PlaySoundFile(SOUNDKIT.UI_BATTLEGROUND_COUNTDOWN_TIMER) end end digits[1]:ClearAllPoints() if timer.anchorCenter then digits[1]:Point("CENTER", UIParent, "CENTER", numberOffset - digits[1].hw, 0) else digits[1]:Point("CENTER", timer, "CENTER", numberOffset - digits[1].hw, 0) end for j = 2, numShown do digits[j]:ClearAllPoints() digits[j]:Point("CENTER", digits[j - 1], "CENTER", -(digits[j].hw + digits[j - 1].hw), 0) end end end function TT:SetGoTexture(timer) if timer.type == TIMER_TYPE_PVP then local factionGroup = GetBattlefieldFaction("player") if factionGroup and factionGroup ~= "Neutral" then timer.GoTexture:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\Timer\\"..factionGroup.."-Logo") timer.GoTextureGlow:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\Timer\\"..factionGroup.."Glow-Logo") end elseif timer.type == TIMER_TYPE_CHALLENGE_MODE then timer.GoTexture:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\Timer\\Challenges-Logo") timer.GoTextureGlow:SetTexture("Interface\\AddOns\\DBM-Core\\textures\\Timer\\ChallengesGlow-Logo") elseif timer.type == TIMER_TYPE_PLAYER_COUNTDOWN then timer.GoTexture:SetTexture("") timer.GoTextureGlow:SetTexture("") end end function TT:SwitchToLargeDisplay(timer) timer.Digit1:Size(timer.style.w, timer.style.h) timer.Digit2:Size(timer.style.w, timer.style.h) timer.Digit1.width = timer.style.w timer.Digit2.width = timer.style.w timer.anchorCenter = true if TIMER_DATA[timer.type].mediumNumberFinishedSoundKitID then PlaySoundFile(TIMER_DATA[timer.type].mediumNumberFinishedSoundKitID) end end function TT:ReleaseTimers() for _, timer in ipairs(self.timerList) do timer.barShowing = false timer.isFree = true end end function TT:FreeTimerTrackerTimer(timer) timer.time = nil timer.type = nil timer.isFree = true timer.barShowing = false timer:SetScript("OnUpdate", nil) timer.FadeBarOut:Stop() timer.FadeBarIn:Stop() timer.StartNumbers:Stop() timer.GoTextureAnim:Stop() timer.StatusBar:Hide() end function TT:OnEvent(event, ...) if not DBM.Options.PlayTT then return end if event == "START_TIMER" then local timerType, timeSeconds, totalTime = ... self:CreateTimer(timerType, timeSeconds + 0.1, totalTime + 0.1) elseif event == "CHAT_MSG_BG_SYSTEM_NEUTRAL" then local msg = ... if msg and chatMessage[msg] then self:CreateTimer(unpack(chatMessage[msg])) end elseif event == "PLAYER_ENTERING_WORLD" then for _, timer in pairs(self.timerList) do if timer.type == TIMER_TYPE_PVP then self:FreeTimerTrackerTimer(timer) end end end end function TT:ToggleState(force) if DBM or force then self.timerList = self.timerList or {} --self:RegisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL", "OnEvent") self:RegisterEvent("PLAYER_ENTERING_WORLD", "OnEvent") else --self:UnregisterEvent("CHAT_MSG_BG_SYSTEM_NEUTRAL") self:UnregisterEvent("PLAYER_ENTERING_WORLD") self:ReleaseTimers() end end function TT:Initialize() if not DBM then return end self:ToggleState() end local function InitializeCallback() TT:Initialize() end function AddOn:CallLoadedModule(obj, silent, object, index) local name, func if type(obj) == "table" then name, func = unpack(obj) else name = obj end local module = name and self:GetModule(name, silent) if not module then return end if func and type(func) == "string" then AddOn:RegisterCallback(name, module[func], module) elseif func and type(func) == "function" then AddOn:RegisterCallback(name, func, module) elseif module.Initialize then AddOn:RegisterCallback(name, module.Initialize, module) end AddOn.callbacks:Fire(name) if object and index then object[index] = nil end end function AddOn:RegisterInitialModule(name, func) self.RegisteredInitialModules[#self.RegisteredInitialModules + 1] = (func and {name, func}) or name end function AddOn:RegisterModule(name, func) if self.initialized then AddOn:CallLoadedModule((func and {name, func}) or name) else self.RegisteredModules[#self.RegisteredModules + 1] = (func and {name, func}) or name end end function AddOn:InitializeInitialModules() for index, object in ipairs(AddOn.RegisteredInitialModules) do AddOn:CallLoadedModule(object, true, AddOn.RegisteredInitialModules, index) end end function AddOn:InitializeModules() for index, object in ipairs(AddOn.RegisteredModules) do AddOn:CallLoadedModule(object, true, AddOn.RegisteredModules, index) end end if not ElvUI then local handled = {["Frame"] = true} local object = CreateFrame("Frame") addapi(object) addapi(object:CreateTexture()) addapi(object:CreateFontString()) object = EnumerateFrames() while object do if not handled[object:GetObjectType()] then addapi(object) handled[object:GetObjectType()] = true end object = EnumerateFrames(object) end addapi(GameFontNormal) end AddOn:RegisterModule(TT:GetName(), InitializeCallback) ================================================ FILE: DBM-Core/DBM-TimerTracker.xml ================================================ local frame = self:GetParent():GetParent() TT:SetTexNumbers(frame, frame.digit.digit1, frame.digit.digit2) local frame = self:GetParent():GetParent() TT:NumberAnimOnFinished(frame) TT:OnShow(self) ================================================ FILE: DBM-Core/Libs/Ace3/AceAddon-3.0/AceAddon-3.0.lua ================================================ --- **AceAddon-3.0** provides a template for creating addon objects. -- It'll provide you with a set of callback functions that allow you to simplify the loading -- process of your addon.\\ -- Callbacks provided are:\\ -- * **OnInitialize**, which is called directly after the addon is fully loaded. -- * **OnEnable** which gets called during the PLAYER_LOGIN event, when most of the data provided by the game is already present. -- * **OnDisable**, which is only called when your addon is manually being disabled. -- @usage -- -- A small (but complete) addon, that doesn't do anything, -- -- but shows usage of the callbacks. -- local MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- function MyAddon:OnInitialize() -- -- do init tasks here, like loading the Saved Variables, -- -- or setting up slash commands. -- end -- -- function MyAddon:OnEnable() -- -- Do more initialization here, that really enables the use of your addon. -- -- Register Events, Hook functions, Create Frames, Get information from -- -- the game that wasn't available in OnInitialize -- end -- -- function MyAddon:OnDisable() -- -- Unhook, Unregister Events, Hide frames that you created. -- -- You would probably only use an OnDisable if you want to -- -- build a "standby" mode, or be able to toggle modules on/off. -- end -- @class file -- @name AceAddon-3.0.lua -- @release $Id$ local MAJOR, MINOR = "AceAddon-3.0", 12 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceAddon then return end -- No Upgrade needed. AceAddon.frame = AceAddon.frame or CreateFrame("Frame", "AceAddon30Frame") -- Our very own frame AceAddon.addons = AceAddon.addons or {} -- addons in general AceAddon.statuses = AceAddon.statuses or {} -- statuses of addon. AceAddon.initializequeue = AceAddon.initializequeue or {} -- addons that are new and not initialized AceAddon.enablequeue = AceAddon.enablequeue or {} -- addons that are initialized and waiting to be enabled AceAddon.embeds = AceAddon.embeds or setmetatable({}, {__index = function(tbl, key) tbl[key] = {} return tbl[key] end }) -- contains a list of libraries embedded in an addon -- Lua APIs local tinsert, tconcat, tremove = table.insert, table.concat, table.remove local fmt, tostring = string.format, tostring local select, pairs, next, type, unpack = select, pairs, next, type, unpack local loadstring, assert, error = loadstring, assert, error local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded -- List them here for Mikk's FindGlobals script -- GLOBALS: LibStub, IsLoggedIn, geterrorhandler --[[ xpcall safecall implementation ]] local xpcall = xpcall local function errorhandler(err) return geterrorhandler()(err) end local function CreateDispatcher(argCount) local code = [[ local xpcall, eh = ... local method, ARGS local function call() return method(ARGS) end local function dispatch(func, ...) method = func if not method then return end ARGS = ... return xpcall(call, eh) end return dispatch ]] local ARGS = {} for i = 1, argCount do ARGS[i] = "arg"..i end code = code:gsub("ARGS", tconcat(ARGS, ", ")) return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) end local Dispatchers = setmetatable({}, {__index=function(self, argCount) local dispatcher = CreateDispatcher(argCount) rawset(self, argCount, dispatcher) return dispatcher end}) Dispatchers[0] = function(func) return xpcall(func, errorhandler) end local function safecall(func, ...) -- we check to see if the func is passed is actually a function here and don't error when it isn't -- this safecall is used for optional functions like OnInitialize OnEnable etc. When they are not -- present execution should continue without hinderance if type(func) == "function" then return Dispatchers[select('#', ...)](func, ...) end end -- local functions that will be implemented further down local Enable, Disable, EnableModule, DisableModule, Embed, NewModule, GetModule, GetName, SetDefaultModuleState, SetDefaultModuleLibraries, SetEnabledState, SetDefaultModulePrototype -- used in the addon metatable local function addontostring( self ) return self.name end -- Check if the addon is queued for initialization local function queuedForInitialization(addon) for i = 1, #AceAddon.initializequeue do if AceAddon.initializequeue[i] == addon then return true end end return false end --- Create a new AceAddon-3.0 addon. -- Any libraries you specified will be embeded, and the addon will be scheduled for -- its OnInitialize and OnEnable callbacks. -- The final addon object, with all libraries embeded, will be returned. -- @paramsig [object ,]name[, lib, ...] -- @param object Table to use as a base for the addon (optional) -- @param name Name of the addon object to create -- @param lib List of libraries to embed into the addon -- @usage -- -- Create a simple addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceEvent-3.0") -- -- -- Create a Addon object based on the table of a frame -- local MyFrame = CreateFrame("Frame") -- MyAddon = LibStub("AceAddon-3.0"):NewAddon(MyFrame, "MyAddon", "AceEvent-3.0") function AceAddon:NewAddon(objectorname, ...) local object,name local i=1 if type(objectorname)=="table" then object=objectorname name=... i=2 else name=objectorname end if type(name)~="string" then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end if self.addons[name] then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - Addon '%s' already exists."):format(name), 2) end object = object or {} object.name = name local addonmeta = {} local oldmeta = getmetatable(object) if oldmeta then for k, v in pairs(oldmeta) do addonmeta[k] = v end end addonmeta.__tostring = addontostring setmetatable( object, addonmeta ) self.addons[name] = object object.modules = {} object.orderedModules = {} object.defaultModuleLibraries = {} Embed( object ) -- embed NewModule, GetModule methods self:EmbedLibraries(object, select(i,...)) -- add to queue of addons to be initialized upon ADDON_LOADED tinsert(self.initializequeue, object) return object end --- Get the addon object by its name from the internal AceAddon registry. -- Throws an error if the addon object cannot be found (except if silent is set). -- @param name unique name of the addon object -- @param silent if true, the addon is optional, silently return nil if its not found -- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") function AceAddon:GetAddon(name, silent) if not silent and not self.addons[name] then error(("Usage: GetAddon(name): 'name' - Cannot find an AceAddon '%s'."):format(tostring(name)), 2) end return self.addons[name] end -- - Embed a list of libraries into the specified addon. -- This function will try to embed all of the listed libraries into the addon -- and error if a single one fails. -- -- **Note:** This function is for internal use by :NewAddon/:NewModule -- @paramsig addon, [lib, ...] -- @param addon addon object to embed the libs in -- @param lib List of libraries to embed into the addon function AceAddon:EmbedLibraries(addon, ...) for i=1,select("#", ... ) do local libname = select(i, ...) self:EmbedLibrary(addon, libname, false, 4) end end -- - Embed a library into the addon object. -- This function will check if the specified library is registered with LibStub -- and if it has a :Embed function to call. It'll error if any of those conditions -- fails. -- -- **Note:** This function is for internal use by :EmbedLibraries -- @paramsig addon, libname[, silent[, offset]] -- @param addon addon object to embed the library in -- @param libname name of the library to embed -- @param silent marks an embed to fail silently if the library doesn't exist (optional) -- @param offset will push the error messages back to said offset, defaults to 2 (optional) function AceAddon:EmbedLibrary(addon, libname, silent, offset) local lib = LibStub:GetLibrary(libname, true) if not lib and not silent then error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Cannot find a library instance of %q."):format(tostring(libname)), offset or 2) elseif lib and type(lib.Embed) == "function" then lib:Embed(addon) tinsert(self.embeds[addon], libname) return true elseif lib then error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Library '%s' is not Embed capable"):format(libname), offset or 2) end end --- Return the specified module from an addon object. -- Throws an error if the addon object cannot be found (except if silent is set) -- @name //addon//:GetModule -- @paramsig name[, silent] -- @param name unique name of the module -- @param silent if true, the module is optional, silently return nil if its not found (optional) -- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- -- Get the Module -- MyModule = MyAddon:GetModule("MyModule") function GetModule(self, name, silent) if not self.modules[name] and not silent then error(("Usage: GetModule(name, silent): 'name' - Cannot find module '%s'."):format(tostring(name)), 2) end return self.modules[name] end local function IsModuleTrue(self) return true end --- Create a new module for the addon. -- The new module can have its own embeded libraries and/or use a module prototype to be mixed into the module.\\ -- A module has the same functionality as a real addon, it can have modules of its own, and has the same API as -- an addon object. -- @name //addon//:NewModule -- @paramsig name[, prototype|lib[, lib, ...]] -- @param name unique name of the module -- @param prototype object to derive this module from, methods and values from this table will be mixed into the module (optional) -- @param lib List of libraries to embed into the addon -- @usage -- -- Create a module with some embeded libraries -- MyModule = MyAddon:NewModule("MyModule", "AceEvent-3.0", "AceHook-3.0") -- -- -- Create a module with a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- MyModule = MyAddon:NewModule("MyModule", prototype, "AceEvent-3.0", "AceHook-3.0") function NewModule(self, name, prototype, ...) if type(name) ~= "string" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end if type(prototype) ~= "string" and type(prototype) ~= "table" and type(prototype) ~= "nil" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'prototype' - table (prototype), string (lib) or nil expected got '%s'."):format(type(prototype)), 2) end if self.modules[name] then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - Module '%s' already exists."):format(name), 2) end -- modules are basically addons. We treat them as such. They will be added to the initializequeue properly as well. -- NewModule can only be called after the parent addon is present thus the modules will be initialized after their parent is. local module = AceAddon:NewAddon(fmt("%s_%s", self.name or tostring(self), name)) module.IsModule = IsModuleTrue module:SetEnabledState(self.defaultModuleState) module.moduleName = name if type(prototype) == "string" then AceAddon:EmbedLibraries(module, prototype, ...) else AceAddon:EmbedLibraries(module, ...) end AceAddon:EmbedLibraries(module, unpack(self.defaultModuleLibraries)) if not prototype or type(prototype) == "string" then prototype = self.defaultModulePrototype or nil end if type(prototype) == "table" then local mt = getmetatable(module) mt.__index = prototype setmetatable(module, mt) -- More of a Base class type feel. end safecall(self.OnModuleCreated, self, module) -- Was in Ace2 and I think it could be a cool thing to have handy. self.modules[name] = module tinsert(self.orderedModules, module) return module end --- Returns the real name of the addon or module, without any prefix. -- @name //addon//:GetName -- @paramsig -- @usage -- print(MyAddon:GetName()) -- -- prints "MyAddon" function GetName(self) return self.moduleName or self.name end --- Enables the Addon, if possible, return true or false depending on success. -- This internally calls AceAddon:EnableAddon(), thus dispatching a OnEnable callback -- and enabling all modules of the addon (unless explicitly disabled).\\ -- :Enable() also sets the internal `enableState` variable to true -- @name //addon//:Enable -- @paramsig -- @usage -- -- Enable MyModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") -- MyModule:Enable() function Enable(self) self:SetEnabledState(true) -- nevcairiel 2013-04-27: don't enable an addon/module if its queued for init still -- it'll be enabled after the init process if not queuedForInitialization(self) then return AceAddon:EnableAddon(self) end end --- Disables the Addon, if possible, return true or false depending on success. -- This internally calls AceAddon:DisableAddon(), thus dispatching a OnDisable callback -- and disabling all modules of the addon.\\ -- :Disable() also sets the internal `enableState` variable to false -- @name //addon//:Disable -- @paramsig -- @usage -- -- Disable MyAddon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyAddon:Disable() function Disable(self) self:SetEnabledState(false) return AceAddon:DisableAddon(self) end --- Enables the Module, if possible, return true or false depending on success. -- Short-hand function that retrieves the module via `:GetModule` and calls `:Enable` on the module object. -- @name //addon//:EnableModule -- @paramsig name -- @usage -- -- Enable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") -- MyModule:Enable() -- -- -- Enable MyModule using the short-hand -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyAddon:EnableModule("MyModule") function EnableModule(self, name) local module = self:GetModule( name ) return module:Enable() end --- Disables the Module, if possible, return true or false depending on success. -- Short-hand function that retrieves the module via `:GetModule` and calls `:Disable` on the module object. -- @name //addon//:DisableModule -- @paramsig name -- @usage -- -- Disable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") -- MyModule:Disable() -- -- -- Disable MyModule using the short-hand -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyAddon:DisableModule("MyModule") function DisableModule(self, name) local module = self:GetModule( name ) return module:Disable() end --- Set the default libraries to be mixed into all modules created by this object. -- Note that you can only change the default module libraries before any module is created. -- @name //addon//:SetDefaultModuleLibraries -- @paramsig lib[, lib, ...] -- @param lib List of libraries to embed into the addon -- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Configure default libraries for modules (all modules need AceEvent-3.0) -- MyAddon:SetDefaultModuleLibraries("AceEvent-3.0") -- -- Create a module -- MyModule = MyAddon:NewModule("MyModule") function SetDefaultModuleLibraries(self, ...) if next(self.modules) then error("Usage: SetDefaultModuleLibraries(...): cannot change the module defaults after a module has been registered.", 2) end self.defaultModuleLibraries = {...} end --- Set the default state in which new modules are being created. -- Note that you can only change the default state before any module is created. -- @name //addon//:SetDefaultModuleState -- @paramsig state -- @param state Default state for new modules, true for enabled, false for disabled -- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Set the default state to "disabled" -- MyAddon:SetDefaultModuleState(false) -- -- Create a module and explicilty enable it -- MyModule = MyAddon:NewModule("MyModule") -- MyModule:Enable() function SetDefaultModuleState(self, state) if next(self.modules) then error("Usage: SetDefaultModuleState(state): cannot change the module defaults after a module has been registered.", 2) end self.defaultModuleState = state end --- Set the default prototype to use for new modules on creation. -- Note that you can only change the default prototype before any module is created. -- @name //addon//:SetDefaultModulePrototype -- @paramsig prototype -- @param prototype Default prototype for the new modules (table) -- @usage -- -- Define a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- -- Set the default prototype -- MyAddon:SetDefaultModulePrototype(prototype) -- -- Create a module and explicitly Enable it -- MyModule = MyAddon:NewModule("MyModule") -- MyModule:Enable() -- -- should print "OnEnable called!" now -- @see NewModule function SetDefaultModulePrototype(self, prototype) if next(self.modules) then error("Usage: SetDefaultModulePrototype(prototype): cannot change the module defaults after a module has been registered.", 2) end if type(prototype) ~= "table" then error(("Usage: SetDefaultModulePrototype(prototype): 'prototype' - table expected got '%s'."):format(type(prototype)), 2) end self.defaultModulePrototype = prototype end --- Set the state of an addon or module -- This should only be called before any enabling actually happend, e.g. in/before OnInitialize. -- @name //addon//:SetEnabledState -- @paramsig state -- @param state the state of an addon or module (enabled=true, disabled=false) function SetEnabledState(self, state) self.enabledState = state end --- Return an iterator of all modules associated to the addon. -- @name //addon//:IterateModules -- @paramsig -- @usage -- -- Enable all modules -- for name, module in MyAddon:IterateModules() do -- module:Enable() -- end local function IterateModules(self) return pairs(self.modules) end -- Returns an iterator of all embeds in the addon -- @name //addon//:IterateEmbeds -- @paramsig local function IterateEmbeds(self) return pairs(AceAddon.embeds[self]) end --- Query the enabledState of an addon. -- @name //addon//:IsEnabled -- @paramsig -- @usage -- if MyAddon:IsEnabled() then -- MyAddon:Disable() -- end local function IsEnabled(self) return self.enabledState end local mixins = { NewModule = NewModule, GetModule = GetModule, Enable = Enable, Disable = Disable, EnableModule = EnableModule, DisableModule = DisableModule, IsEnabled = IsEnabled, SetDefaultModuleLibraries = SetDefaultModuleLibraries, SetDefaultModuleState = SetDefaultModuleState, SetDefaultModulePrototype = SetDefaultModulePrototype, SetEnabledState = SetEnabledState, IterateModules = IterateModules, IterateEmbeds = IterateEmbeds, GetName = GetName, } local function IsModule(self) return false end local pmixins = { defaultModuleState = true, enabledState = true, IsModule = IsModule, } -- Embed( target ) -- target (object) - target object to embed aceaddon in -- -- this is a local function specifically since it's meant to be only called internally function Embed(target, skipPMixins) for k, v in pairs(mixins) do target[k] = v end if not skipPMixins then for k, v in pairs(pmixins) do target[k] = target[k] or v end end end -- - Initialize the addon after creation. -- This function is only used internally during the ADDON_LOADED event -- It will call the **OnInitialize** function on the addon object (if present), -- and the **OnEmbedInitialize** function on all embeded libraries. -- -- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- @param addon addon object to intialize function AceAddon:InitializeAddon(addon) safecall(addon.OnInitialize, addon) local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedInitialize, lib, addon) end end -- we don't call InitializeAddon on modules specifically, this is handled -- from the event handler and only done _once_ end -- - Enable the addon after creation. -- Note: This function is only used internally during the PLAYER_LOGIN event, or during ADDON_LOADED, -- if IsLoggedIn() already returns true at that point, e.g. for LoD Addons. -- It will call the **OnEnable** function on the addon object (if present), -- and the **OnEmbedEnable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is disabled. -- -- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- Use :Enable on the addon itself instead. -- @param addon addon object to enable function AceAddon:EnableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if self.statuses[addon.name] or not addon.enabledState then return false end -- set the statuses first, before calling the OnEnable. this allows for Disabling of the addon in OnEnable. self.statuses[addon.name] = true safecall(addon.OnEnable, addon) -- make sure we're still enabled before continueing if self.statuses[addon.name] then local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedEnable, lib, addon) end end -- enable possible modules. local modules = addon.orderedModules for i = 1, #modules do self:EnableAddon(modules[i]) end end return self.statuses[addon.name] -- return true if we're disabled end -- - Disable the addon -- Note: This function is only used internally. -- It will call the **OnDisable** function on the addon object (if present), -- and the **OnEmbedDisable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is still enabled. -- -- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- Use :Disable on the addon itself instead. -- @param addon addon object to enable function AceAddon:DisableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if not self.statuses[addon.name] then return false end -- set statuses first before calling OnDisable, this allows for aborting the disable in OnDisable. self.statuses[addon.name] = false safecall( addon.OnDisable, addon ) -- make sure we're still disabling... if not self.statuses[addon.name] then local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedDisable, lib, addon) end end -- disable possible modules. local modules = addon.orderedModules for i = 1, #modules do self:DisableAddon(modules[i]) end end return not self.statuses[addon.name] -- return true if we're disabled end --- Get an iterator over all registered addons. -- @usage -- -- Print a list of all installed AceAddon's -- for name, addon in AceAddon:IterateAddons() do -- print("Addon: " .. name) -- end function AceAddon:IterateAddons() return pairs(self.addons) end --- Get an iterator over the internal status registry. -- @usage -- -- Print a list of all enabled addons -- for name, status in AceAddon:IterateAddonStatus() do -- if status then -- print("EnabledAddon: " .. name) -- end -- end function AceAddon:IterateAddonStatus() return pairs(self.statuses) end -- Following Iterators are deprecated, and their addon specific versions should be used -- e.g. addon:IterateEmbeds() instead of :IterateEmbedsOnAddon(addon) function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end -- Event Handling local function onEvent(this, event, arg1) -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration while(#AceAddon.initializequeue > 0) do local addon = tremove(AceAddon.initializequeue, 1) -- this might be an issue with recursion - TODO: validate if event == "ADDON_LOADED" then addon.baseName = arg1 end AceAddon:InitializeAddon(addon) tinsert(AceAddon.enablequeue, addon) end if IsLoggedIn() then while(#AceAddon.enablequeue > 0) do local addon = tremove(AceAddon.enablequeue, 1) AceAddon:EnableAddon(addon) end end end end AceAddon.frame:RegisterEvent("ADDON_LOADED") AceAddon.frame:RegisterEvent("PLAYER_LOGIN") AceAddon.frame:SetScript("OnEvent", onEvent) -- upgrade embeded for name, addon in pairs(AceAddon.addons) do Embed(addon, true) end -- 2010-10-27 nevcairiel - add new "orderedModules" table if oldminor and oldminor < 10 then for name, addon in pairs(AceAddon.addons) do addon.orderedModules = {} for module_name, module in pairs(addon.modules) do tinsert(addon.orderedModules, module) end end end ================================================ FILE: DBM-Core/Libs/Ace3/AceComm-3.0/AceComm-3.0.lua ================================================ --- **AceComm-3.0** allows you to send messages of unlimited length over the addon comm channels. -- It'll automatically split the messages into multiple parts and rebuild them on the receiving end.\\ -- **ChatThrottleLib** is of course being used to avoid being disconnected by the server. -- -- **AceComm-3.0** can be embeded into your addon, either explicitly by calling AceComm:Embed(MyAddon) or by -- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object -- and can be accessed directly, without having to explicitly call AceComm itself.\\ -- It is recommended to embed AceComm, otherwise you'll have to specify a custom `self` on all calls you -- make into AceComm. -- @class file -- @name AceComm-3.0 -- @release $Id$ --[[ AceComm-3.0 TODO: Time out old data rotting around from dead senders? Not a HUGE deal since the number of possible sender names is somewhat limited. ]] local CallbackHandler = LibStub("CallbackHandler-1.0") local CTL = assert(ChatThrottleLib, "AceComm-3.0 requires ChatThrottleLib") local MAJOR, MINOR = "AceComm-3.0", 12 local AceComm,oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceComm then return end -- Lua APIs local type, next, pairs, tostring = type, next, pairs, tostring local strsub, strfind = string.sub, string.find local tinsert, tconcat = table.insert, table.concat local error, assert = error, assert -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded -- List them here for Mikk's FindGlobals script -- GLOBALS: LibStub, DEFAULT_CHAT_FRAME, geterrorhandler AceComm.embeds = AceComm.embeds or {} -- for my sanity and yours, let's give the message type bytes some names local MSG_MULTI_FIRST = "\001" local MSG_MULTI_NEXT = "\002" local MSG_MULTI_LAST = "\003" AceComm.multipart_origprefixes = AceComm.multipart_origprefixes or {} -- e.g. "Prefix\001"="Prefix", "Prefix\002"="Prefix" AceComm.multipart_reassemblers = AceComm.multipart_reassemblers or {} -- e.g. "Prefix\001"="OnReceiveMultipartFirst" -- the multipart message spool: indexed by a combination of sender+distribution+ AceComm.multipart_spool = AceComm.multipart_spool or {} --- Register for Addon Traffic on a specified prefix -- @param prefix A printable character (\032-\255) classification of the message (typically AddonName or AddonNameEvent) -- @param method Callback to call on message reception: Function reference, or method name (string) to call on self. Defaults to "OnCommReceived" function AceComm:RegisterComm(prefix, method) if method == nil then method = "OnCommReceived" end return AceComm._RegisterComm(self, prefix, method) -- created by CallbackHandler end local warnedPrefix=false --- Send a message over the Addon Channel -- @param prefix A printable character (\032-\255) classification of the message (typically AddonName or AddonNameEvent) -- @param text Data to send, nils (\000) not allowed. Any length. -- @param distribution Addon channel, e.g. "RAID", "GUILD", etc; see SendAddonMessage API -- @param target Destination for some distributions; see SendAddonMessage API -- @param prio OPTIONAL: ChatThrottleLib priority, "BULK", "NORMAL" or "ALERT". Defaults to "NORMAL". -- @param callbackFn OPTIONAL: callback function to be called as each chunk is sent. receives 3 args: the user supplied arg (see next), the number of bytes sent so far, and the number of bytes total to send. -- @param callbackArg: OPTIONAL: first arg to the callback function. nil will be passed if not specified. function AceComm:SendCommMessage(prefix, text, distribution, target, prio, callbackFn, callbackArg) prio = prio or "NORMAL" -- pasta's reference implementation had different prio for singlepart and multipart, but that's a very bad idea since that can easily lead to out-of-sequence delivery! if not( type(prefix)=="string" and type(text)=="string" and type(distribution)=="string" and (target==nil or type(target)=="string" or type(target)=="number") and (prio=="BULK" or prio=="NORMAL" or prio=="ALERT") ) then error('Usage: SendCommMessage(addon, "prefix", "text", "distribution"[, "target"[, "prio"[, callbackFn, callbackarg]]])', 2) end if strfind(prefix, "[\001-\009]") then if strfind(prefix, "[\001-\003]") then error("SendCommMessage: Characters \\001--\\003 in prefix are reserved for AceComm metadata", 2) elseif not warnedPrefix then -- I have some ideas about future extensions that require more control characters /mikk, 20090808 geterrorhandler()("SendCommMessage: Heads-up developers: Characters \\004--\\009 in prefix are reserved for AceComm future extension") warnedPrefix = true end end local textlen = #text local maxtextlen = 254 - #prefix -- 254 is the max length of prefix + text that can be sent in one message local queueName = prefix..distribution..(target or "") local ctlCallback = nil if callbackFn then ctlCallback = function(sent) return callbackFn(callbackArg, sent, textlen) end end if textlen <= maxtextlen then -- fits all in one message CTL:SendAddonMessage(prio, prefix, text, distribution, target, queueName, ctlCallback, textlen) else maxtextlen = maxtextlen - 1 -- 1 extra byte for part indicator in prefix -- first part local chunk = strsub(text, 1, maxtextlen) CTL:SendAddonMessage(prio, prefix..MSG_MULTI_FIRST, chunk, distribution, target, queueName, ctlCallback, maxtextlen) -- continuation local pos = 1+maxtextlen local prefix2 = prefix..MSG_MULTI_NEXT while pos+maxtextlen <= textlen do chunk = strsub(text, pos, pos+maxtextlen-1) CTL:SendAddonMessage(prio, prefix2, chunk, distribution, target, queueName, ctlCallback, pos+maxtextlen-1) pos = pos + maxtextlen end -- final part chunk = strsub(text, pos) CTL:SendAddonMessage(prio, prefix..MSG_MULTI_LAST, chunk, distribution, target, queueName, ctlCallback, textlen) end end ---------------------------------------- -- Message receiving ---------------------------------------- do local compost = setmetatable({}, {__mode = "k"}) local function new() local t = next(compost) if t then compost[t]=nil for i=#t,3,-1 do -- faster than pairs loop. don't even nil out 1/2 since they'll be overwritten t[i]=nil end return t end return {} end local function lostdatawarning(prefix,sender,where) DEFAULT_CHAT_FRAME:AddMessage(MAJOR..": Warning: lost network data regarding '"..tostring(prefix).."' from '"..tostring(sender).."' (in "..where..")") end function AceComm:OnReceiveMultipartFirst(prefix, message, distribution, sender) local key = prefix.."\t"..distribution.."\t"..sender -- a unique stream is defined by the prefix + distribution + sender local spool = AceComm.multipart_spool --[[ if spool[key] then lostdatawarning(prefix,sender,"First") -- continue and overwrite end --]] spool[key] = message -- plain string for now end function AceComm:OnReceiveMultipartNext(prefix, message, distribution, sender) local key = prefix.."\t"..distribution.."\t"..sender -- a unique stream is defined by the prefix + distribution + sender local spool = AceComm.multipart_spool local olddata = spool[key] if not olddata then --lostdatawarning(prefix,sender,"Next") return end if type(olddata)~="table" then -- ... but what we have is not a table. So make it one. (Pull a composted one if available) local t = new() t[1] = olddata -- add old data as first string t[2] = message -- and new message as second string spool[key] = t -- and put the table in the spool instead of the old string else tinsert(olddata, message) end end function AceComm:OnReceiveMultipartLast(prefix, message, distribution, sender) local key = prefix.."\t"..distribution.."\t"..sender -- a unique stream is defined by the prefix + distribution + sender local spool = AceComm.multipart_spool local olddata = spool[key] if not olddata then --lostdatawarning(prefix,sender,"End") return end spool[key] = nil if type(olddata) == "table" then -- if we've received a "next", the spooled data will be a table for rapid & garbage-free tconcat tinsert(olddata, message) AceComm.callbacks:Fire(prefix, tconcat(olddata, ""), distribution, sender) compost[olddata] = true else -- if we've only received a "first", the spooled data will still only be a string AceComm.callbacks:Fire(prefix, olddata..message, distribution, sender) end end end ---------------------------------------- -- Embed CallbackHandler ---------------------------------------- if not AceComm.callbacks then -- ensure that 'prefix to watch' table is consistent with registered -- callbacks AceComm.__prefixes = {} AceComm.callbacks = CallbackHandler:New(AceComm, "_RegisterComm", "UnregisterComm", "UnregisterAllComm") end function AceComm.callbacks:OnUsed(target, prefix) AceComm.multipart_origprefixes[prefix..MSG_MULTI_FIRST] = prefix AceComm.multipart_reassemblers[prefix..MSG_MULTI_FIRST] = "OnReceiveMultipartFirst" AceComm.multipart_origprefixes[prefix..MSG_MULTI_NEXT] = prefix AceComm.multipart_reassemblers[prefix..MSG_MULTI_NEXT] = "OnReceiveMultipartNext" AceComm.multipart_origprefixes[prefix..MSG_MULTI_LAST] = prefix AceComm.multipart_reassemblers[prefix..MSG_MULTI_LAST] = "OnReceiveMultipartLast" end function AceComm.callbacks:OnUnused(target, prefix) AceComm.multipart_origprefixes[prefix..MSG_MULTI_FIRST] = nil AceComm.multipart_reassemblers[prefix..MSG_MULTI_FIRST] = nil AceComm.multipart_origprefixes[prefix..MSG_MULTI_NEXT] = nil AceComm.multipart_reassemblers[prefix..MSG_MULTI_NEXT] = nil AceComm.multipart_origprefixes[prefix..MSG_MULTI_LAST] = nil AceComm.multipart_reassemblers[prefix..MSG_MULTI_LAST] = nil end local function OnEvent(this, event, ...) if event == "CHAT_MSG_ADDON" then local prefix,message,distribution,sender = ... local reassemblername = AceComm.multipart_reassemblers[prefix] if reassemblername then -- multipart: reassemble local aceCommReassemblerFunc = AceComm[reassemblername] local origprefix = AceComm.multipart_origprefixes[prefix] aceCommReassemblerFunc(AceComm, origprefix, message, distribution, sender) else -- single part: fire it off immediately and let CallbackHandler decide if it's registered or not AceComm.callbacks:Fire(prefix, message, distribution, sender) end else assert(false, "Received "..tostring(event).." event?!") end end AceComm.frame = AceComm.frame or CreateFrame("Frame", "AceComm30Frame") AceComm.frame:SetScript("OnEvent", OnEvent) AceComm.frame:UnregisterAllEvents() AceComm.frame:RegisterEvent("CHAT_MSG_ADDON") ---------------------------------------- -- Base library stuff ---------------------------------------- local mixins = { "RegisterComm", "UnregisterComm", "UnregisterAllComm", "SendCommMessage", } -- Embeds AceComm-3.0 into the target object making the functions from the mixins list available on target:.. -- @param target target object to embed AceComm-3.0 in function AceComm:Embed(target) for k, v in pairs(mixins) do target[v] = self[v] end self.embeds[target] = true return target end function AceComm:OnEmbedDisable(target) target:UnregisterAllComm() end -- Update embeds for target, v in pairs(AceComm.embeds) do AceComm:Embed(target) end ================================================ FILE: DBM-Core/Libs/Ace3/AceComm-3.0/AceComm-3.0.xml ================================================