├── ElvUI
├── Libraries
│ ├── oUF
│ │ ├── init.lua
│ │ ├── finalize.lua
│ │ ├── units.lua
│ │ ├── private.lua
│ │ ├── LICENSE
│ │ ├── blizzard.lua
│ │ ├── factory.lua
│ │ ├── elements
│ │ │ ├── restingindicator.lua
│ │ │ └── combatindicator.lua
│ │ └── oUF.xml
│ ├── oUF_Plugins
│ │ ├── oUF_ResComm
│ │ │ └── oUF_ResComm.xml
│ │ ├── oUF_DruidMana
│ │ │ └── oUF_DruidMana.xml
│ │ ├── oUF_HealComm3
│ │ │ └── oUF_HealComm3.xml
│ │ ├── oUF_Plugins.xml
│ │ └── oUF_Smooth
│ │ │ └── oUF_Smooth.lua
│ ├── AceDB-3.0
│ │ └── AceDB-3.0.xml
│ ├── AceAddon-3.0
│ │ └── AceAddon-3.0.xml
│ ├── AceEvent-3.0
│ │ └── AceEvent-3.0.xml
│ ├── AceHook-3.0
│ │ └── AceHook-3.0.xml
│ ├── AceTimer-3.0
│ │ └── AceTimer-3.0.xml
│ ├── AceLocale-3.0
│ │ └── AceLocale-3.0.xml
│ ├── AceConsole-3.0
│ │ └── AceConsole-3.0.xml
│ ├── AceSerializer-3.0
│ │ └── AceSerializer-3.0.xml
│ ├── UTF8
│ │ └── UTF8.xml
│ ├── AceComm-3.0
│ │ └── AceComm-3.0.xml
│ ├── LibItemSearch-1.2
│ │ └── LibItemSearch-1.2.xml
│ ├── Load_Libraries.xml
│ └── LibStub
│ │ └── LibStub.lua
├── media
│ ├── textures
│ │ ├── dps.tga
│ │ ├── arrow.tga
│ │ ├── close.tga
│ │ ├── combat.tga
│ │ ├── copy.tga
│ │ ├── cross.tga
│ │ ├── healer.tga
│ │ ├── logo.tga
│ │ ├── mail.tga
│ │ ├── melli.tga
│ │ ├── pause.blp
│ │ ├── play.blp
│ │ ├── reset.blp
│ │ ├── spark.tga
│ │ ├── tank.tga
│ │ ├── glowTex.tga
│ │ ├── normTex.tga
│ │ ├── normTex2.tga
│ │ ├── resting.tga
│ │ ├── resting1.blp
│ │ ├── Horde-Logo.blp
│ │ ├── LevelUpTex.blp
│ │ ├── Minimalist.tga
│ │ ├── PVP-Icons.blp
│ │ ├── UI-GoldIcon.blp
│ │ ├── bagJunkIcon.blp
│ │ ├── hello_kitty.tga
│ │ ├── nameplates.BLP
│ │ ├── raidicons.blp
│ │ ├── Alliance-Logo.blp
│ │ ├── INV_Pet_Broom.blp
│ │ ├── Raid-Icon-Rez.blp
│ │ ├── UI-CopperIcon.blp
│ │ ├── UI-SilverIcon.blp
│ │ ├── bagQuestIcon.tga
│ │ ├── Indicator-Green.blp
│ │ ├── PlusMinusButton.blp
│ │ ├── UI-LFR-PORTRAIT.blp
│ │ ├── chatEmojis
│ │ │ ├── angry.tga
│ │ │ ├── blush.tga
│ │ │ ├── cry.tga
│ │ │ ├── grin.tga
│ │ │ ├── heart.tga
│ │ │ ├── joy.tga
│ │ │ ├── kappa.tga
│ │ │ ├── poop.tga
│ │ │ ├── rage.tga
│ │ │ ├── smile.tga
│ │ │ ├── smirk.tga
│ │ │ ├── sob.tga
│ │ │ ├── wink.tga
│ │ │ ├── zzz.tga
│ │ │ ├── call_me.tga
│ │ │ ├── murloc.tga
│ │ │ ├── ok_hand.tga
│ │ │ ├── scream.tga
│ │ │ ├── facepalm.tga
│ │ │ ├── heart_eyes.tga
│ │ │ ├── open_mouth.tga
│ │ │ ├── sadkitty.tga
│ │ │ ├── scream_cat.tga
│ │ │ ├── semi_colon.tga
│ │ │ ├── sunglasses.tga
│ │ │ ├── thinking.tga
│ │ │ ├── thumbs_up.tga
│ │ │ ├── broken_heart.tga
│ │ │ ├── slight_frown.tga
│ │ │ ├── middle_finger.tga
│ │ │ ├── stuck_out_tongue.tga
│ │ │ └── stuck_out_tongue_closed_eyes.tga
│ │ ├── helloKittyChat.tga
│ │ ├── UI-Searchbox-Icon.blp
│ │ ├── chatLogos
│ │ │ ├── bathrobe.tga
│ │ │ ├── elvui_blue.tga
│ │ │ ├── elvui_green.tga
│ │ │ ├── elvui_pink.tga
│ │ │ ├── elvui_red.tga
│ │ │ ├── helloKitty.tga
│ │ │ ├── illuminati.tga
│ │ │ ├── mr_hankey.tga
│ │ │ ├── elvui_orange.tga
│ │ │ ├── elvui_purple.tga
│ │ │ ├── elvui_rainbow.tga
│ │ │ └── tyroneBiggums.tga
│ │ ├── SquareButtonTextures.blp
│ │ ├── UI-GroupLoot-Pass-Up.blp
│ │ ├── PVPCurrency-Honor-Horde.blp
│ │ ├── UI-Dialog-Icon-AlertNew.blp
│ │ ├── UI-GroupLoot-Pass-Down.blp
│ │ ├── PVPCurrency-Honor-Alliance.blp
│ │ ├── nameplateTargetIndicator.tga
│ │ ├── UI-GroupLoot-Pass-Highlight.blp
│ │ ├── nameplateTargetIndicatorLeft.tga
│ │ ├── UI-OptionsFrame-NewFeatureIcon.blp
│ │ └── nameplateTargetIndicatorRight.tga
│ ├── fonts
│ │ ├── DieDieDie.ttf
│ │ ├── Homespun.ttf
│ │ ├── Invisible.ttf
│ │ ├── Action_Man.ttf
│ │ ├── Expressway.ttf
│ │ ├── PT_Sans_Narrow.ttf
│ │ └── Continuum_Medium.ttf
│ ├── sounds
│ │ ├── awwcrap.ogg
│ │ ├── bbqass.ogg
│ │ ├── dumbshit.ogg
│ │ ├── runfast.ogg
│ │ ├── warning.ogg
│ │ ├── whisper.ogg
│ │ ├── helloKitty.ogg
│ │ ├── sndIncMsg.ogg
│ │ ├── harlemshake.ogg
│ │ ├── mamaweekends.ogg
│ │ ├── yankiebangbang.ogg
│ │ └── stoprunningslimball.ogg
│ ├── load_media.xml
│ └── sharedmedia.lua
├── layout
│ └── load_layout.xml
├── modules
│ ├── chat
│ │ └── load_chat.xml
│ ├── auras
│ │ └── load_auras.xml
│ ├── skins
│ │ ├── addons
│ │ │ └── load_addons.xml
│ │ ├── load_skins.xml
│ │ └── blizzard
│ │ │ ├── taxi.lua
│ │ │ ├── tutorial.lua
│ │ │ ├── arena.lua
│ │ │ ├── battlefield.lua
│ │ │ ├── gmchat.lua
│ │ │ ├── worldmap.lua
│ │ │ ├── petition.lua
│ │ │ ├── greeting.lua
│ │ │ ├── binding.lua
│ │ │ ├── tooltip.lua
│ │ │ ├── load_blizzard.xml
│ │ │ ├── guildregistrar.lua
│ │ │ ├── dressingroom.lua
│ │ │ ├── mirrortimers.lua
│ │ │ ├── stable.lua
│ │ │ ├── socket.lua
│ │ │ ├── tabard.lua
│ │ │ ├── talent.lua
│ │ │ ├── arenaregistrar.lua
│ │ │ ├── bgmap.lua
│ │ │ └── bgscore.lua
│ ├── blizzard
│ │ ├── kill.lua
│ │ ├── gm.lua
│ │ ├── load_blizzard.xml
│ │ ├── durability.lua
│ │ ├── watchframe.lua
│ │ ├── questTimers.lua
│ │ ├── capturebar.lua
│ │ └── alertframe.lua
│ ├── maps
│ │ └── load_maps.xml
│ ├── tooltip
│ │ └── load_tooltip.xml
│ ├── bags
│ │ └── load_bags.xml
│ ├── DataBars
│ │ ├── Load_DataBars.xml
│ │ └── DataBars.lua
│ ├── actionbars
│ │ └── load_actionbars.xml
│ ├── unitframes
│ │ ├── groups
│ │ │ └── load_groups.xml
│ │ ├── units
│ │ │ └── load_units.xml
│ │ ├── elements
│ │ │ ├── pvpindicator.lua
│ │ │ ├── raidicon.lua
│ │ │ ├── readycheckicon.lua
│ │ │ ├── load_elements.xml
│ │ │ ├── gps.lua
│ │ │ ├── resurrectionicon.lua
│ │ │ ├── name.lua
│ │ │ ├── restingindicator.lua
│ │ │ ├── customtext.lua
│ │ │ ├── combatindicator.lua
│ │ │ ├── debuffhighlight.lua
│ │ │ ├── PvPIcon.lua
│ │ │ ├── infopanel.lua
│ │ │ └── raiddebuffs.lua
│ │ └── load_unitframes.xml
│ ├── nameplates
│ │ ├── elements
│ │ │ ├── raidIcon.lua
│ │ │ ├── healerIcon.lua
│ │ │ ├── level.lua
│ │ │ ├── elite.lua
│ │ │ ├── highlight.lua
│ │ │ └── cutawayHealth.lua
│ │ └── load_nameplates.xml
│ ├── misc
│ │ └── load_misc.xml
│ ├── load_modules.xml
│ └── datatexts
│ │ ├── honorablekills.lua
│ │ ├── load_datatexts.xml
│ │ ├── coordinates.lua
│ │ ├── regen.lua
│ │ ├── hit.lua
│ │ ├── resilience.lua
│ │ ├── spellpower.lua
│ │ ├── combattime.lua
│ │ ├── armor.lua
│ │ ├── elvuiconfig.lua
│ │ ├── durability.lua
│ │ ├── hps.lua
│ │ ├── dps.lua
│ │ ├── bags.lua
│ │ ├── haste.lua
│ │ ├── crit.lua
│ │ ├── battleground.lua
│ │ ├── attackpower.lua
│ │ └── time.lua
├── developer
│ ├── test.lua
│ ├── reloadui.lua
│ ├── load_developer.xml
│ └── table.lua
├── Settings
│ ├── Filters
│ │ ├── Load_Filters.xml
│ │ └── Nameplate.lua
│ └── Load_Config.xml
├── locales
│ └── load_locales.xml
├── Bindings.xml
├── ElvUI.toc
└── core
│ ├── load_core.xml
│ └── dropdown.lua
├── !DebugTools
├── media
│ ├── UI-GearManager-Border.blp
│ └── UI-GearManager-Title-Background.blp
└── !DebugTools.toc
├── !Compatibility
├── !Compatibility.toc
├── api
│ ├── api.xml
│ ├── widgetAPI.lua
│ └── luaAPI.lua
├── libs
│ ├── libs.xml
│ └── LibStub.lua
├── errorHandler.lua
└── slashCommands.lua
└── ElvUI_Config
├── Libraries
├── AceDBOptions-3.0
│ └── AceDBOptions-3.0.xml
├── AceConfig-3.0
│ ├── AceConfigCmd-3.0
│ │ └── AceConfigCmd-3.0.xml
│ ├── AceConfigDialog-3.0
│ │ └── AceConfigDialog-3.0.xml
│ ├── AceConfigRegistry-3.0
│ │ └── AceConfigRegistry-3.0.xml
│ ├── AceConfig-3.0.xml
│ └── AceConfig-3.0.lua
├── Load_Libraries.xml
├── AceGUI-3.0-SharedMediaWidgets
│ └── widget.xml
└── AceGUI-3.0
│ ├── AceGUI-3.0.xml
│ └── widgets
│ ├── AceGUIContainer-SimpleGroup.lua
│ └── AceGUIWidget-Heading.lua
├── locales
└── load_locales.xml
└── ElvUI_Config.toc
/ElvUI/Libraries/oUF/init.lua:
--------------------------------------------------------------------------------
1 | oUF = {}
2 |
3 | local ns = oUF
4 | ns.oUF = {}
5 | ns.oUF.Private = {}
--------------------------------------------------------------------------------
/ElvUI/media/textures/dps.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/dps.tga
--------------------------------------------------------------------------------
/ElvUI/media/fonts/DieDieDie.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/DieDieDie.ttf
--------------------------------------------------------------------------------
/ElvUI/media/fonts/Homespun.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/Homespun.ttf
--------------------------------------------------------------------------------
/ElvUI/media/fonts/Invisible.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/Invisible.ttf
--------------------------------------------------------------------------------
/ElvUI/media/sounds/awwcrap.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/awwcrap.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/bbqass.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/bbqass.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/dumbshit.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/dumbshit.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/runfast.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/runfast.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/warning.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/warning.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/whisper.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/whisper.ogg
--------------------------------------------------------------------------------
/ElvUI/media/textures/arrow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/arrow.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/close.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/close.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/combat.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/combat.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/copy.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/copy.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/cross.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/cross.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/healer.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/healer.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/logo.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/logo.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/mail.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/mail.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/melli.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/melli.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/pause.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/pause.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/play.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/play.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/reset.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/reset.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/spark.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/spark.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/tank.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/tank.tga
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/finalize.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 |
3 | -- It's named Private for a reason!
4 | ns.oUF.Private = nil
--------------------------------------------------------------------------------
/ElvUI/layout/load_layout.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/ElvUI/media/fonts/Action_Man.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/Action_Man.ttf
--------------------------------------------------------------------------------
/ElvUI/media/fonts/Expressway.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/Expressway.ttf
--------------------------------------------------------------------------------
/ElvUI/media/load_media.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/ElvUI/media/sounds/helloKitty.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/helloKitty.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/sndIncMsg.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/sndIncMsg.ogg
--------------------------------------------------------------------------------
/ElvUI/media/textures/glowTex.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/glowTex.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/normTex.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/normTex.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/normTex2.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/normTex2.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/resting.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/resting.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/resting1.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/resting1.blp
--------------------------------------------------------------------------------
/ElvUI/modules/chat/load_chat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/ElvUI/developer/test.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | Going to leave this as my bullshit lua file.
3 |
4 | So I can test stuff.
5 | ]]
6 |
--------------------------------------------------------------------------------
/ElvUI/media/fonts/PT_Sans_Narrow.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/PT_Sans_Narrow.ttf
--------------------------------------------------------------------------------
/ElvUI/media/sounds/harlemshake.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/harlemshake.ogg
--------------------------------------------------------------------------------
/ElvUI/media/sounds/mamaweekends.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/mamaweekends.ogg
--------------------------------------------------------------------------------
/ElvUI/media/textures/Horde-Logo.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/Horde-Logo.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/LevelUpTex.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/LevelUpTex.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/Minimalist.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/Minimalist.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/PVP-Icons.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/PVP-Icons.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-GoldIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-GoldIcon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/bagJunkIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/bagJunkIcon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/hello_kitty.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/hello_kitty.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/nameplates.BLP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/nameplates.BLP
--------------------------------------------------------------------------------
/ElvUI/media/textures/raidicons.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/raidicons.blp
--------------------------------------------------------------------------------
/ElvUI/modules/auras/load_auras.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/ElvUI/media/fonts/Continuum_Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/fonts/Continuum_Medium.ttf
--------------------------------------------------------------------------------
/ElvUI/media/sounds/yankiebangbang.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/yankiebangbang.ogg
--------------------------------------------------------------------------------
/ElvUI/media/textures/Alliance-Logo.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/Alliance-Logo.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/INV_Pet_Broom.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/INV_Pet_Broom.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/Raid-Icon-Rez.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/Raid-Icon-Rez.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-CopperIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-CopperIcon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-SilverIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-SilverIcon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/bagQuestIcon.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/bagQuestIcon.tga
--------------------------------------------------------------------------------
/ElvUI/modules/skins/addons/load_addons.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/ElvUI/media/textures/Indicator-Green.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/Indicator-Green.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/PlusMinusButton.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/PlusMinusButton.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-LFR-PORTRAIT.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-LFR-PORTRAIT.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/angry.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/angry.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/blush.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/blush.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/cry.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/cry.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/grin.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/grin.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/heart.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/heart.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/joy.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/joy.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/kappa.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/kappa.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/poop.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/poop.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/rage.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/rage.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/smile.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/smile.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/smirk.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/smirk.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/sob.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/sob.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/wink.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/wink.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/zzz.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/zzz.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/helloKittyChat.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/helloKittyChat.tga
--------------------------------------------------------------------------------
/!DebugTools/media/UI-GearManager-Border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/!DebugTools/media/UI-GearManager-Border.blp
--------------------------------------------------------------------------------
/ElvUI/media/sounds/stoprunningslimball.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/sounds/stoprunningslimball.ogg
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-Searchbox-Icon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-Searchbox-Icon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/call_me.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/call_me.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/murloc.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/murloc.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/ok_hand.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/ok_hand.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/scream.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/scream.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/bathrobe.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/bathrobe.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/SquareButtonTextures.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/SquareButtonTextures.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-GroupLoot-Pass-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-GroupLoot-Pass-Up.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/facepalm.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/facepalm.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/heart_eyes.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/heart_eyes.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/open_mouth.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/open_mouth.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/sadkitty.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/sadkitty.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/scream_cat.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/scream_cat.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/semi_colon.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/semi_colon.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/sunglasses.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/sunglasses.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/thinking.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/thinking.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/thumbs_up.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/thumbs_up.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_blue.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_blue.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_green.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_green.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_pink.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_pink.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_red.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_red.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/helloKitty.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/helloKitty.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/illuminati.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/illuminati.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/mr_hankey.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/mr_hankey.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/PVPCurrency-Honor-Horde.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/PVPCurrency-Honor-Horde.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-Dialog-Icon-AlertNew.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-Dialog-Icon-AlertNew.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-GroupLoot-Pass-Down.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-GroupLoot-Pass-Down.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/broken_heart.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/broken_heart.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/slight_frown.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/slight_frown.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_orange.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_orange.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_purple.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_purple.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/elvui_rainbow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/elvui_rainbow.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatLogos/tyroneBiggums.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatLogos/tyroneBiggums.tga
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/kill.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | function B:KillBlizzard()
5 |
6 | end
--------------------------------------------------------------------------------
/ElvUI/media/textures/PVPCurrency-Honor-Alliance.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/PVPCurrency-Honor-Alliance.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/middle_finger.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/middle_finger.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/nameplateTargetIndicator.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/nameplateTargetIndicator.tga
--------------------------------------------------------------------------------
/!DebugTools/media/UI-GearManager-Title-Background.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/!DebugTools/media/UI-GearManager-Title-Background.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-GroupLoot-Pass-Highlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-GroupLoot-Pass-Highlight.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/stuck_out_tongue.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/stuck_out_tongue.tga
--------------------------------------------------------------------------------
/ElvUI/media/textures/nameplateTargetIndicatorLeft.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/nameplateTargetIndicatorLeft.tga
--------------------------------------------------------------------------------
/ElvUI/modules/maps/load_maps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/media/textures/UI-OptionsFrame-NewFeatureIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/UI-OptionsFrame-NewFeatureIcon.blp
--------------------------------------------------------------------------------
/ElvUI/media/textures/nameplateTargetIndicatorRight.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/nameplateTargetIndicatorRight.tga
--------------------------------------------------------------------------------
/ElvUI/modules/tooltip/load_tooltip.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Settings/Filters/Load_Filters.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/media/textures/chatEmojis/stuck_out_tongue_closed_eyes.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ElvUI-TBC/ElvUI/HEAD/ElvUI/media/textures/chatEmojis/stuck_out_tongue_closed_eyes.tga
--------------------------------------------------------------------------------
/ElvUI/modules/bags/load_bags.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF_Plugins/oUF_ResComm/oUF_ResComm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/developer/reloadui.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | Shortcut to ReloadUI
3 | ]]
4 |
5 | SLASH_RELOADUI1 = "/rl"
6 | SLASH_RELOADUI2 = "/reloadui"
7 | SLASH_RELOADUI3 = "/reload"
8 | SlashCmdList.RELOADUI = ReloadUI
--------------------------------------------------------------------------------
/ElvUI/modules/DataBars/Load_DataBars.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/!Compatibility/!Compatibility.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 20400
2 | ## Title: !Compatibility
3 | ## Notes: Compatibility functions for TBC
4 | ## Version: 1.0
5 |
6 | errorHandler.lua
7 | api\api.xml
8 | slashCommands.lua
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF_Plugins/oUF_DruidMana/oUF_DruidMana.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/developer/load_developer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/load_skins.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/!Compatibility/api/api.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ElvUI/Settings/Load_Config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceDB-3.0/AceDB-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceAddon-3.0/AceAddon-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceEvent-3.0/AceEvent-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceHook-3.0/AceHook-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceTimer-3.0/AceTimer-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceLocale-3.0/AceLocale-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceConsole-3.0/AceConsole-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/modules/actionbars/load_actionbars.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceSerializer-3.0/AceSerializer-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/UTF8/UTF8.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceDBOptions-3.0/AceDBOptions-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/!Compatibility/libs/libs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/groups/load_groups.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/AceComm-3.0/AceComm-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/Load_Libraries.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF_Plugins/oUF_HealComm3/oUF_HealComm3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/gm.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | function B:PositionGMFrames()
5 | TicketStatusFrame:ClearAllPoints()
6 | TicketStatusFrame:SetPoint("TOPLEFT", E.UIParent, "TOPLEFT", 250, -5)
7 |
8 | E:CreateMover(TicketStatusFrame, "GMMover", L["GM Ticket Frame"])
9 | end
--------------------------------------------------------------------------------
/ElvUI/Libraries/LibItemSearch-1.2/LibItemSearch-1.2.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/units/load_units.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/!DebugTools/!DebugTools.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 20400
2 | ## Title: !DebugTools
3 | ## Notes: Tools for developing addons (Blizzard UI Debug Tools)
4 | ## Author: Blizzard Entertainment
5 | ## Special Thanks: Iriel, Kirov, Esamynn
6 | ## Version: 1.0
7 | ## Dependencies: !Compatibility
8 | ## LoadOnDemand: 1
9 |
10 | Compatibility.lua
11 | Dump.lua
12 | Blizzard_DebugTools.lua
13 | Blizzard_DebugTools.xml
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/load_blizzard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ElvUI/locales/load_locales.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/raidIcon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 |
4 | function mod:UpdateElement_RaidIcon(frame)
5 | local icon = frame.RaidIcon
6 | icon:ClearAllPoints()
7 | if frame.HealthBar:IsShown() then
8 | icon:SetPoint("RIGHT", frame.HealthBar, "LEFT", -6, 0)
9 | else
10 | icon:SetPoint("BOTTOM", frame.Name, "TOP", 0, 3)
11 | end
12 | end
--------------------------------------------------------------------------------
/ElvUI/modules/misc/load_misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ElvUI_Config/locales/load_locales.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceGUI-3.0-SharedMediaWidgets/widget.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ElvUI/Bindings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | RaidMark_HotkeyPressed(keystate);
4 |
5 |
6 | FarmMode();
7 |
8 |
9 | HideLeftChat();
10 |
11 |
12 | HideRightChat();
13 |
14 |
15 | HideBothChat();
16 |
17 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceConfig-3.0/AceConfig-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/durability.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | local _G = _G
5 |
6 | function B:PositionDurabilityFrame()
7 | DurabilityFrame:SetFrameStrata("HIGH")
8 |
9 | local function SetPosition(self, _, parent)
10 | if (parent == "MinimapCluster") or (parent == _G["MinimapCluster"]) then
11 | self:ClearAllPoints()
12 | self:Point("RIGHT", Minimap, "RIGHT", -10, 0)
13 | self:SetScale(0.7)
14 | end
15 | end
16 | hooksecurefunc(DurabilityFrame, "SetPoint", SetPosition)
17 | end
--------------------------------------------------------------------------------
/ElvUI/developer/table.lua:
--------------------------------------------------------------------------------
1 | local setmetatable, getmetatable = setmetatable, getmetatable
2 | local pairs, type = pairs, type
3 | local table = table
4 |
5 | function table.copy(t, deep, seen)
6 | seen = seen or {}
7 | if t == nil then return nil end
8 | if seen[t] then return seen[t] end
9 |
10 | local nt = {}
11 | for k, v in pairs(t) do
12 | if deep and type(v) == "table" then
13 | nt[k] = table.copy(v, deep, seen)
14 | else
15 | nt[k] = v
16 | end
17 | end
18 | setmetatable(nt, table.copy(getmetatable(t), deep, seen))
19 | seen[t] = nt
20 | return nt
21 | end
--------------------------------------------------------------------------------
/ElvUI_Config/ElvUI_Config.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 20400
2 | ## Author: Elv, Bunny
3 | ## Version: 1.01
4 | ## Title: |cff00b30bE|r|cffC4C4C4lvUI|r |cff00b30bC|r|cffC4C4C4onfig|r
5 | ## Notes: Options for ElvUI.
6 | ## RequiredDeps: ElvUI
7 | ## LoadOnDemand: true
8 |
9 | Libraries\Load_Libraries.xml
10 | locales\load_locales.xml
11 | core.lua
12 | General.lua
13 | actionbars.lua
14 | auras.lua
15 | bags.lua
16 | chat.lua
17 | cooldown.lua
18 | datatexts.lua
19 | filters.lua
20 | nameplates.lua
21 | skins.lua
22 | tooltip.lua
23 | unitframes.lua
24 | DataBars.lua
25 | maps.lua
26 | modulecontrol.lua
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF_Plugins/oUF_Plugins.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/pvpindicator.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_PvPIndicator(frame)
5 | local pvp = frame.RaisedElementParent:CreateFontString(nil, "OVERLAY")
6 | UF:Configure_FontString(pvp)
7 |
8 | return pvp
9 | end
10 |
11 | function UF:Configure_PVPIndicator(frame)
12 | local pvp = frame.PvPText
13 | local x, y = self:GetPositionOffset(frame.db.pvp.position)
14 | pvp:ClearAllPoints()
15 | pvp:Point(frame.db.pvp.position, frame.Health, frame.db.pvp.position, x, y)
16 |
17 | frame:Tag(pvp, frame.db.pvp.text_format)
18 | end
--------------------------------------------------------------------------------
/ElvUI/ElvUI.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 20400
2 | ## Author: Elv, Bunny
3 | ## Version: 1.49
4 | ## Title: |cff00b30bE|r|cffC4C4C4lvUI|r
5 | ## Notes: User Interface replacement AddOn for World of Warcraft.
6 | ## SavedVariables: ElvDB, ElvPrivateDB, GAME_LOCALE
7 | ## SavedVariablesPerCharacter: ElvCharacterDB
8 | ## Dependencies: !Compatibility
9 | ## OptionalDeps: !DebugTools, SharedMedia, Tukui, ButtonFacade
10 | ## X-oUF: ElvUF
11 |
12 | developer\load_developer.xml
13 | Libraries\Load_Libraries.xml
14 | locales\load_locales.xml
15 | media\load_media.xml
16 | init.lua
17 | Settings\Load_Config.xml
18 | core\load_core.xml
19 | layout\load_layout.xml
20 | modules\load_modules.xml
21 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/taxi.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.taxi ~= true then return end
8 |
9 | local TaxiFrame = _G["TaxiFrame"]
10 | TaxiFrame:CreateBackdrop("Transparent")
11 | TaxiFrame.backdrop:Point("TOPLEFT", 11, -12)
12 | TaxiFrame.backdrop:Point("BOTTOMRIGHT", -34, 75)
13 |
14 | TaxiFrame:StripTextures()
15 |
16 | TaxiPortrait:Kill()
17 |
18 | S:HandleCloseButton(TaxiCloseButton)
19 |
20 | TaxiRouteMap:CreateBackdrop("Default")
21 | end
22 |
23 | S:AddCallback("Taxi", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/load_nameplates.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/ElvUI/modules/load_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/units.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 | local oUF = ns.oUF
3 | local Private = oUF.Private
4 |
5 | local enableTargetUpdate = Private.enableTargetUpdate
6 |
7 | -- Handles unit specific actions.
8 | function oUF:HandleUnit(object, unit)
9 | local unit = object.unit or unit
10 |
11 | if(unit == 'target') then
12 | object:RegisterEvent('PLAYER_TARGET_CHANGED', object.UpdateAllElements)
13 | elseif(unit == 'mouseover') then
14 | object:RegisterEvent('UPDATE_MOUSEOVER_UNIT', object.UpdateAllElements)
15 | elseif(unit == 'focus') then
16 | object:RegisterEvent('PLAYER_FOCUS_CHANGED', object.UpdateAllElements)
17 | elseif(unit:match('%w+target')) then
18 | enableTargetUpdate(object)
19 | end
20 | end
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/private.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 | local Private = ns.oUF.Private
3 |
4 | function Private.argcheck(value, num, ...)
5 | assert(type(num) == 'number', "Bad argument #2 to 'argcheck' (number expected, got " .. type(num) .. ')')
6 |
7 | for i = 1, select('#', ...) do
8 | if(type(value) == select(i, ...)) then return end
9 | end
10 |
11 | local types = strjoin(', ', ...)
12 | local name = debugstack(2,2,0):match(": in function [`<](.-)['>]")
13 | error(string.format("Bad argument #%d to '%s' (%s expected, got %s)", num, name, types, type(value)), 3)
14 | end
15 |
16 | function Private.print(...)
17 | print('|cff33ff99oUF:|r', ...)
18 | end
19 |
20 | function Private.error(...)
21 | Private.print('|cffff0000Error:|r ' .. string.format(...))
22 | end
--------------------------------------------------------------------------------
/ElvUI/core/load_core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/tutorial.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local MAX_TUTORIAL_ALERTS = MAX_TUTORIAL_ALERTS
7 |
8 | local function LoadSkin()
9 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.tutorial ~= true then return end
10 |
11 | for i = 1, MAX_TUTORIAL_ALERTS do
12 | local button = _G["TutorialFrameAlertButton"..i]
13 | local icon = button:GetNormalTexture()
14 |
15 | button:Size(35, 45)
16 | button:SetTemplate("Default", true)
17 | button:StyleButton(nil, true)
18 |
19 | icon:SetInside()
20 | icon:SetTexCoord(0.09, 0.40, 0.11, 0.56)
21 | end
22 |
23 | TutorialFrame:SetTemplate("Transparent")
24 |
25 | S:HandleCheckBox(TutorialFrameCheckButton)
26 |
27 | S:HandleButton(TutorialFrameOkayButton)
28 | end
29 |
30 | S:AddCallback("Tutorial", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/healerIcon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 |
4 | function mod:UpdateElement_HealerIcon(frame)
5 | local icon = frame.HealerIcon
6 | icon:ClearAllPoints()
7 | if frame.HealthBar:IsShown() then
8 | icon:SetPoint("RIGHT", frame.HealthBar, "LEFT", -6, 0)
9 | else
10 | icon:SetPoint("BOTTOM", frame.Name, "TOP", 0, 3)
11 | end
12 | if self.Healers[frame.UnitName] and frame.UnitType == "ENEMY_PLAYER" then
13 | icon:Show()
14 | else
15 | icon:Hide()
16 | end
17 | end
18 |
19 | function mod:ConstructElement_HealerIcon(frame)
20 | local texture = frame:CreateTexture(nil, "OVERLAY")
21 | texture:SetPoint("RIGHT", frame.HealthBar, "LEFT", -6, 0)
22 | texture:SetSize(40, 40)
23 | texture:SetTexture([[Interface\AddOns\ElvUI\media\textures\healer]])
24 | texture:Hide()
25 |
26 | return texture
27 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/honorablekills.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 |
6 | local GetPVPLifetimeStats = GetPVPLifetimeStats
7 | local KILLS = KILLS
8 | local HONORABLE_KILLS = HONORABLE_KILLS
9 |
10 | local lastPanel
11 | local displayNumberString = ""
12 |
13 | local function OnEvent(self)
14 | local hk = GetPVPLifetimeStats()
15 |
16 | self.text:SetFormattedText(displayNumberString, KILLS, hk)
17 |
18 | lastPanel = self
19 | end
20 |
21 | local function ValueColorUpdate(hex)
22 | displayNumberString = join("", "%s: ", hex, "%d|r")
23 |
24 | if lastPanel ~= nil then
25 | OnEvent(lastPanel)
26 | end
27 | end
28 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
29 |
30 | DT:RegisterDatatext("Honorable Kills", {"PLAYER_PVP_KILLS_CHANGED", "PLAYER_PVP_RANK_CHANGED"}, OnEvent, nil, nil, nil, nil, HONORABLE_KILLS)
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/watchframe.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | local hooksecurefunc = hooksecurefunc
5 |
6 | local WatchFrameHolder = CreateFrame("Frame", "WatchFrameHolder", E.UIParent)
7 | WatchFrameHolder:Size(150, 22)
8 | WatchFrameHolder:Point("TOPRIGHT", E.UIParent, "TOPRIGHT", -135, -300)
9 |
10 | function B:MoveWatchFrame()
11 | E:CreateMover(WatchFrameHolder, "WatchFrameMover", L["Watch Frame"])
12 | WatchFrameHolder:SetAllPoints(WatchFrameMover)
13 |
14 | QuestWatchFrame:ClearAllPoints()
15 | QuestWatchFrame:SetPoint("TOP", WatchFrameHolder, "TOP")
16 | QuestWatchFrame:SetClampedToScreen(false)
17 |
18 | hooksecurefunc(QuestWatchFrame, "SetPoint", function(_, _, parent)
19 | if parent ~= WatchFrameHolder then
20 | QuestWatchFrame:ClearAllPoints()
21 | QuestWatchFrame:SetPoint("TOP", WatchFrameHolder, "TOP")
22 | end
23 | end)
24 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/load_datatexts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/arena.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.arena ~= true then return end
8 |
9 | ArenaFrame:CreateBackdrop("Transparent")
10 | ArenaFrame.backdrop:Point("TOPLEFT", 11, -12)
11 | ArenaFrame.backdrop:Point("BOTTOMRIGHT", -34, 74)
12 |
13 | ArenaFrame:StripTextures(true)
14 |
15 | ArenaFrameZoneDescription:SetTextColor(1, 1, 1)
16 |
17 | S:HandleButton(ArenaFrameCancelButton)
18 | S:HandleButton(ArenaFrameJoinButton)
19 |
20 | S:HandleButton(ArenaFrameGroupJoinButton)
21 | ArenaFrameGroupJoinButton:Point("RIGHT", ArenaFrameJoinButton, "LEFT", -2, 0)
22 |
23 | for i = 1, 6 do
24 | local button = _G["ArenaZone"..i]
25 |
26 | S:HandleButtonHighlight(button)
27 | end
28 |
29 | S:HandleCloseButton(ArenaFrameCloseButton)
30 | end
31 |
32 | S:AddCallback("Arena", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/questTimers.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | local hooksecurefunc = hooksecurefunc
5 | local QUEST_TIMERS = QUEST_TIMERS
6 |
7 | local QuestTimerFrameHolder = CreateFrame("Frame", "QuestTimerFrameHolder", E.UIParent)
8 | QuestTimerFrameHolder:Size(150, 22)
9 | QuestTimerFrameHolder:Point("TOPRIGHT", E.UIParent, "TOPRIGHT", -135, -250)
10 |
11 | function B:MoveQuestTimerFrame()
12 | E:CreateMover(QuestTimerFrameHolder, "QuestTimerFrameMover", QUEST_TIMERS)
13 | QuestTimerFrameHolder:SetAllPoints(QuestTimerFrameMover)
14 |
15 | QuestTimerFrame:ClearAllPoints()
16 | QuestTimerFrame:SetPoint("TOP", QuestTimerFrameHolder, "TOP")
17 | QuestTimerFrame:SetClampedToScreen(false)
18 |
19 | hooksecurefunc(QuestTimerFrame, "SetPoint", function(_, _, parent)
20 | if parent ~= QuestTimerFrameHolder then
21 | QuestTimerFrame:ClearAllPoints()
22 | QuestTimerFrame:SetPoint("TOP", QuestTimerFrameHolder, "TOP")
23 | end
24 | end)
25 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/raidicon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_RaidIcon(frame)
5 | local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
6 | tex:SetTexture([[Interface\AddOns\ElvUI\media\textures\raidicons]])
7 | tex:Size(18)
8 | tex:Point("CENTER", frame.Health, "TOP", 0, 2)
9 | tex.SetTexture = E.noop
10 |
11 | return tex
12 | end
13 |
14 | function UF:Configure_RaidIcon(frame)
15 | local RI = frame.RaidTargetIndicator
16 | local db = frame.db
17 |
18 | if db.raidicon.enable then
19 | frame:EnableElement("RaidTargetIndicator")
20 | RI:Show()
21 | RI:Size(db.raidicon.size)
22 |
23 | local attachPoint = self:GetObjectAnchorPoint(frame, db.raidicon.attachToObject)
24 | RI:ClearAllPoints()
25 | RI:Point(db.raidicon.attachTo, attachPoint, db.raidicon.attachTo, db.raidicon.xOffset, db.raidicon.yOffset)
26 | else
27 | frame:DisableElement("RaidTargetIndicator")
28 | RI:Hide()
29 | end
30 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/coordinates.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 |
6 | local GetPlayerMapPosition = GetPlayerMapPosition
7 | local ToggleFrame = ToggleFrame
8 |
9 | local displayString = ""
10 | local x, y = 0, 0
11 |
12 | local function OnUpdate(self, elapsed)
13 | self.timeSinceUpdate = (self.timeSinceUpdate or 0) + elapsed
14 |
15 | if self.timeSinceUpdate > 0.1 then
16 | x, y = GetPlayerMapPosition("player")
17 | x = x and E:Round(100 * x, 1) or 0
18 | y = y and E:Round(100 * y, 1) or 0
19 |
20 | self.text:SetFormattedText(displayString, x, y)
21 | self.timeSinceUpdate = 0
22 | end
23 | end
24 |
25 | local function OnClick()
26 | ToggleFrame(WorldMapFrame)
27 | end
28 |
29 | local function ValueColorUpdate(hex)
30 | displayString = join("", hex, "%.1f|r", " , ", hex, "%.1f|r")
31 | end
32 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
33 |
34 | DT:RegisterDatatext("Coords", nil, nil, OnUpdate, OnClick, nil, nil, L["Coords"])
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/regen.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 |
6 | local InCombatLockdown = InCombatLockdown
7 | local GetManaRegen = GetManaRegen
8 | local MANA_REGEN = MANA_REGEN
9 |
10 | local lastPanel
11 | local displayNumberString = ""
12 |
13 | local function OnEvent(self)
14 | local baseMR, castingMR = GetManaRegen()
15 | if InCombatLockdown() then
16 | self.text:SetFormattedText(displayNumberString, MANA_REGEN, castingMR * 5)
17 | else
18 | self.text:SetFormattedText(displayNumberString, MANA_REGEN, baseMR * 5)
19 | end
20 |
21 | lastPanel = self
22 | end
23 |
24 | local function ValueColorUpdate(hex)
25 | displayNumberString = join("", "%s: ", hex, "%d|r")
26 |
27 | if lastPanel ~= nil then
28 | OnEvent(lastPanel)
29 | end
30 | end
31 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
32 |
33 | DT:RegisterDatatext("Mana Regen", {"PLAYER_DAMAGE_DONE_MODS", "PLAYER_REGEN_DISABLED", "PLAYER_REGEN_ENABLED"}, OnEvent, nil, nil, nil, nil, MANA_REGEN)
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/readycheckicon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_ReadyCheckIcon(frame)
5 | local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
6 | tex:Size(12)
7 | tex:Point("BOTTOM", frame.Health, "BOTTOM", 0, 2)
8 |
9 | return tex
10 | end
11 |
12 | function UF:Configure_ReadyCheckIcon(frame)
13 | local ReadyCheckIndicator = frame.ReadyCheckIndicator
14 | local db = frame.db
15 |
16 | if db.readycheckIcon.enable then
17 | if not frame:IsElementEnabled("ReadyCheckIndicator") then
18 | frame:EnableElement("ReadyCheckIndicator")
19 | end
20 |
21 | local attachPoint = self:GetObjectAnchorPoint(frame, db.readycheckIcon.attachTo)
22 | ReadyCheckIndicator:ClearAllPoints()
23 | ReadyCheckIndicator:Point(db.readycheckIcon.position, attachPoint, db.readycheckIcon.position, db.readycheckIcon.xOffset, db.readycheckIcon.yOffset)
24 | ReadyCheckIndicator:Size(db.readycheckIcon.size)
25 | else
26 | frame:DisableElement("ReadyCheckIndicator")
27 | end
28 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/load_elements.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/hit.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 |
6 | local GetCombatRatingBonus = GetCombatRatingBonus
7 | local CR_HIT_MELEE = CR_HIT_MELEE
8 | local CR_HIT_RANGED = CR_HIT_RANGED
9 | local CR_HIT_SPELL = CR_HIT_SPELL
10 |
11 | local hitRatingBonus
12 | local displayString = ""
13 | local lastPanel
14 |
15 | local function OnEvent(self)
16 | if E.Role == "Caster" then
17 | hitRatingBonus = GetCombatRatingBonus(CR_HIT_SPELL)
18 | else
19 | if E.myclass == "HUNTER" then
20 | hitRatingBonus = GetCombatRatingBonus(CR_HIT_RANGED)
21 | else
22 | hitRatingBonus = GetCombatRatingBonus(CR_HIT_MELEE)
23 | end
24 | end
25 |
26 | self.text:SetFormattedText(displayString, L["Hit"], hitRatingBonus)
27 |
28 | lastPanel = self
29 | end
30 |
31 | local function ValueColorUpdate(hex)
32 | displayString = join("", "%s: ", hex, "%.2f%%|r")
33 |
34 | if lastPanel ~= nil then
35 | OnEvent(lastPanel)
36 | end
37 | end
38 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
39 |
40 | DT:RegisterDatatext("Hit", {"COMBAT_RATING_UPDATE"}, OnEvent, nil, nil, nil, nil, L["Hit"])
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/level.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 | local LSM = E.LSM
4 |
5 | function mod:UpdateElement_Level(frame)
6 | if not self.db.units[frame.UnitType].showLevel then return end
7 |
8 | local level, r, g, b = self:UnitLevel(frame)
9 |
10 | if self.db.units[frame.UnitType].healthbar.enable or frame.isTarget then
11 | frame.Level:SetText(level)
12 | else
13 | frame.Level:SetFormattedText(" [%s]", level)
14 | end
15 | frame.Level:SetTextColor(r, g, b)
16 | end
17 |
18 | function mod:ConfigureElement_Level(frame)
19 | local level = frame.Level
20 |
21 | level:ClearAllPoints()
22 |
23 | if self.db.units[frame.UnitType].healthbar.enable or frame.isTarget then
24 | level:SetJustifyH("RIGHT")
25 | level:SetPoint("BOTTOMRIGHT", frame.HealthBar, "TOPRIGHT", 0, E.Border*2)
26 | else
27 | level:SetPoint("LEFT", frame.Name, "RIGHT")
28 | level:SetJustifyH("LEFT")
29 | end
30 | level:SetFont(LSM:Fetch("font", self.db.font), self.db.fontSize, self.db.fontOutline)
31 | end
32 |
33 | function mod:ConstructElement_Level(frame)
34 | return frame:CreateFontString(nil, "OVERLAY")
35 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/gps.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local CreateFrame = CreateFrame
5 |
6 | function UF:Construct_GPS(frame)
7 | local gps = CreateFrame("Frame", nil, frame)
8 | gps:SetFrameLevel(frame:GetFrameLevel() + 50)
9 | gps:Hide()
10 |
11 | gps.Texture = gps:CreateTexture("OVERLAY")
12 | gps.Texture:SetTexture([[Interface\AddOns\ElvUI\media\textures\arrow]])
13 | gps.Texture:SetBlendMode("BLEND")
14 | gps.Texture:SetVertexColor(214/255, 41/255, 41/255)
15 | gps.Texture:SetAllPoints()
16 |
17 | return gps
18 | end
19 |
20 | function UF:Configure_GPS(frame)
21 | local GPS = frame.GPS
22 | if frame.db.GPSArrow.enable then
23 | if not frame:IsElementEnabled("GPS") then
24 | frame:EnableElement("GPS")
25 | end
26 |
27 | GPS:Size(frame.db.GPSArrow.size)
28 | GPS.onMouseOver = frame.db.GPSArrow.onMouseOver
29 | GPS.outOfRange = frame.db.GPSArrow.outOfRange
30 |
31 | GPS:Point("CENTER", frame, "CENTER", frame.db.GPSArrow.xOffset, frame.db.GPSArrow.yOffset)
32 | else
33 | if frame:IsElementEnabled("GPS") then
34 | frame:DisableElement("GPS")
35 | end
36 | end
37 | end
--------------------------------------------------------------------------------
/!Compatibility/errorHandler.lua:
--------------------------------------------------------------------------------
1 | --Cache global variables
2 | local strmatch = strmatch
3 | --WoW API
4 | local GetCVar = GetCVar
5 | local IsAddOnLoaded = IsAddOnLoaded
6 | local LoadAddOn = LoadAddOn
7 |
8 | local _ERROR_COUNT = 0
9 | local _ERROR_LIMIT = 1000
10 |
11 | function _ERRORMESSAGE_NEW(message)
12 | debuginfo()
13 |
14 | LoadAddOn("!DebugTools")
15 | local loaded = IsAddOnLoaded("!DebugTools")
16 |
17 | if (GetCVar("scriptErrors") == "1") then
18 | if (not loaded or DEBUG_DEBUGTOOLS) then
19 | ScriptErrors_Message:SetText(message)
20 | ScriptErrors:Show()
21 | if (DEBUG_DEBUGTOOLS) then
22 | ScriptErrorsFrame_OnError(message)
23 | end
24 | else
25 | ScriptErrorsFrame_OnError(message)
26 | end
27 | elseif (loaded) then
28 | ScriptErrorsFrame_OnError(message, true)
29 | end
30 |
31 | _ERROR_COUNT = _ERROR_COUNT + 1
32 | if (_ERROR_COUNT == _ERROR_LIMIT) then
33 | StaticPopup_Show("TOO_MANY_LUA_ERRORS")
34 | end
35 |
36 | return message
37 | end
38 |
39 | seterrorhandler(_ERRORMESSAGE_NEW)
40 |
41 | function message(text)
42 | if (not ScriptErrors:IsShown()) then
43 | ScriptErrors_Message:SetText(text)
44 | ScriptErrors:Show()
45 | end
46 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/battlefield.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.battlefield ~= true then return end
8 |
9 | BattlefieldFrame:StripTextures(true)
10 | BattlefieldFrame:CreateBackdrop("Transparent")
11 | BattlefieldFrame.backdrop:Point("TOPLEFT", 10, -12)
12 | BattlefieldFrame.backdrop:Point("BOTTOMRIGHT", -32, 73)
13 |
14 | BattlefieldListScrollFrame:StripTextures()
15 |
16 | S:HandleScrollBar(BattlefieldListScrollFrameScrollBar)
17 |
18 | for i = 1, BATTLEFIELD_ZONES_DISPLAYED do
19 | local button = _G["BattlefieldZone"..i]
20 |
21 | S:HandleButtonHighlight(button)
22 | end
23 |
24 | S:HandleButton(BattlefieldFrameCancelButton)
25 | S:HandleButton(BattlefieldFrameJoinButton)
26 |
27 | BattlefieldFrameGroupJoinButton:Point("RIGHT", BattlefieldFrameJoinButton, "LEFT", -2, 0)
28 | S:HandleButton(BattlefieldFrameGroupJoinButton)
29 |
30 | S:HandleCloseButton(BattlefieldFrameCloseButton)
31 |
32 | BattlefieldFrameZoneDescription:SetTextColor(1, 1, 1)
33 | end
34 |
35 | S:AddCallback("Battlefield", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/resurrectionicon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_ResurrectionIcon(frame)
5 | local tex = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
6 | tex:SetTexture([[Interface\AddOns\ElvUI\media\textures\Raid-Icon-Rez]])
7 | tex:Point("CENTER", frame.Health, "CENTER")
8 | tex:Size(30)
9 | tex:SetDrawLayer("OVERLAY", 7)
10 | tex:Hide()
11 |
12 | return tex
13 | end
14 |
15 | function UF:Configure_ResurrectionIcon(frame)
16 | local RI = frame.ResurrectIndicator
17 | local db = frame.db
18 |
19 | if db.resurrectIcon.enable then
20 | if not frame:IsElementEnabled("ResurrectIndicator") then
21 | frame:EnableElement("ResurrectIndicator")
22 | end
23 | RI:Size(db.resurrectIcon.size)
24 |
25 | local attachPoint = self:GetObjectAnchorPoint(frame, db.resurrectIcon.attachToObject)
26 | RI:ClearAllPoints()
27 | RI:Point(db.resurrectIcon.attachTo, attachPoint, db.resurrectIcon.attachTo, db.resurrectIcon.xOffset, db.resurrectIcon.yOffset)
28 | else
29 | if frame:IsElementEnabled("ResurrectIndicator") then
30 | frame:DisableElement("ResurrectIndicator")
31 | end
32 | end
33 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/gmchat.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.gmchat then return end
8 |
9 | GMSurveyFrame:StripTextures()
10 | GMSurveyFrame:CreateBackdrop("Transparent")
11 | GMSurveyFrame.backdrop:Point("TOPLEFT", 4, 4)
12 | GMSurveyFrame.backdrop:Point("BOTTOMRIGHT", -44, 10)
13 |
14 | GMSurveyHeader:StripTextures()
15 | S:HandleCloseButton(GMSurveyCloseButton, GMSurveyFrame.backdrop)
16 |
17 | GMSurveyScrollFrame:StripTextures()
18 | S:HandleScrollBar(GMSurveyCommentScrollFrameScrollBar)
19 |
20 | GMSurveyCancelButton:Point("BOTTOMLEFT", 19, 18)
21 | S:HandleButton(GMSurveyCancelButton)
22 |
23 | GMSurveySubmitButton:Point("BOTTOMRIGHT", -57, 18)
24 | S:HandleButton(GMSurveySubmitButton)
25 |
26 | for i = 1, 7 do
27 | local frame = _G["GMSurveyQuestion"..i ]
28 | frame:StripTextures()
29 | frame:SetTemplate("Transparent")
30 | end
31 |
32 | GMSurveyCommentFrame:StripTextures()
33 | GMSurveyCommentFrame:SetTemplate("Transparent")
34 | end
35 |
36 | S:AddCallbackForAddon("Blizzard_GMSurveyUI", "GMSurveyFrame", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/resilience.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 | local min = math.min
6 |
7 | local GetCombatRating = GetCombatRating
8 | local CR_CRIT_TAKEN_MELEE = CR_CRIT_TAKEN_MELEE
9 | local CR_CRIT_TAKEN_RANGED = CR_CRIT_TAKEN_RANGED
10 | local CR_CRIT_TAKEN_SPELL = CR_CRIT_TAKEN_SPELL
11 | local STAT_RESILIENCE = STAT_RESILIENCE
12 |
13 | local displayNumberString = ""
14 | local lastPanel
15 |
16 | local function OnEvent(self)
17 | local melee = GetCombatRating(CR_CRIT_TAKEN_MELEE)
18 | local ranged = GetCombatRating(CR_CRIT_TAKEN_RANGED)
19 | local spell = GetCombatRating(CR_CRIT_TAKEN_SPELL)
20 |
21 | local minResilience = min(melee, ranged)
22 | minResilience = min(minResilience, spell)
23 |
24 | self.text:SetFormattedText(displayNumberString, STAT_RESILIENCE, minResilience)
25 | lastPanel = self
26 | end
27 |
28 | local function ValueColorUpdate(hex)
29 | displayNumberString = join("", "%s: ", hex, "%d|r")
30 |
31 | if lastPanel ~= nil then
32 | OnEvent(lastPanel)
33 | end
34 | end
35 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
36 |
37 | DT:RegisterDatatext("Resilience", {"COMBAT_RATING_UPDATE"}, OnEvent, nil, nil, nil, nil, STAT_RESILIENCE)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/worldmap.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.worldmap ~= true then return end
8 |
9 | local WorldMapFrame = _G["WorldMapFrame"]
10 | WorldMapFrame:StripTextures()
11 | WorldMapPositioningGuide:CreateBackdrop("Transparent")
12 |
13 | S:HandleDropDownBox(WorldMapZoneMinimapDropDown, 190)
14 | S:HandleDropDownBox(WorldMapContinentDropDown, 170)
15 | S:HandleDropDownBox(WorldMapZoneDropDown, 170)
16 |
17 | WorldMapZoneDropDown:Point("LEFT", WorldMapContinentDropDown, "RIGHT", -24, 0)
18 | WorldMapZoomOutButton:Point("LEFT", WorldMapZoneDropDown, "RIGHT", -4, 3)
19 |
20 | S:HandleButton(WorldMapZoomOutButton)
21 |
22 | S:HandleCloseButton(WorldMapFrameCloseButton)
23 |
24 | WorldMapDetailFrame:CreateBackdrop("Default")
25 |
26 | WorldMapFrameAreaLabel:FontTemplate(nil, 50, "OUTLINE")
27 | WorldMapFrameAreaLabel:SetShadowOffset(2, -2)
28 | WorldMapFrameAreaLabel:SetTextColor(0.9, 0.8, 0.6)
29 |
30 | WorldMapFrameAreaDescription:FontTemplate(nil, 40, "OUTLINE")
31 | WorldMapFrameAreaDescription:SetShadowOffset(2, -2)
32 | end
33 |
34 | S:AddCallback("SkinWorldMap", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/spellpower.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local join = string.join
5 |
6 | local GetSpellBonusDamage = GetSpellBonusDamage
7 | local GetSpellBonusHealing = GetSpellBonusHealing
8 |
9 | local displayNumberString = ""
10 | local lastPanel
11 |
12 | local function OnEvent(self)
13 | local holySchool = 2
14 | local minModifier = GetSpellBonusDamage(holySchool)
15 | local bonusHealing = GetSpellBonusHealing()
16 | local bonusDamage
17 |
18 | for i = (holySchool + 1), MAX_SPELL_SCHOOLS do
19 | bonusDamage = GetSpellBonusDamage(i)
20 | minModifier = max(minModifier, bonusDamage)
21 | end
22 |
23 | if E:GetPlayerRole() == "HEALER" then
24 | self.text:SetFormattedText(displayNumberString, L["HP"], bonusHealing)
25 | else
26 | self.text:SetFormattedText(displayNumberString, L["SP"], minModifier)
27 | end
28 |
29 | lastPanel = self
30 | end
31 |
32 | local function ValueColorUpdate(hex)
33 | displayNumberString = join("", "%s: ", hex, "%d|r")
34 |
35 | if lastPanel ~= nil then
36 | OnEvent(lastPanel)
37 | end
38 | end
39 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
40 |
41 | DT:RegisterDatatext("Spell/Heal Power", {"PLAYER_DAMAGE_DONE_MODS"}, OnEvent, nil, nil, nil, nil, L["Spell/Heal Power"])
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/combattime.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local floor = math.floor
5 | local format, join = string.format, string.join
6 |
7 | local GetTime = GetTime
8 | local COMBAT = COMBAT
9 |
10 | local timer = 0
11 | local startTime = 0
12 | local displayNumberString = ""
13 | local lastPanel
14 |
15 | local function OnUpdate(self)
16 | timer = GetTime() - startTime
17 | self.text:SetFormattedText(displayNumberString, COMBAT, format("%02d:%02d:%02d", floor(timer / 60), timer % 60, (timer - floor(timer)) * 100))
18 | end
19 |
20 | local function OnEvent(self, event)
21 | if event == "PLAYER_REGEN_DISABLED" then
22 | timer = 0
23 | startTime = GetTime()
24 | self:SetScript("OnUpdate", OnUpdate)
25 | elseif event == "PLAYER_REGEN_ENABLED" then
26 | self:SetScript("OnUpdate", nil)
27 | else
28 | self.text:SetFormattedText(displayNumberString, COMBAT, "00:00:00")
29 | end
30 |
31 | lastPanel = self
32 | end
33 |
34 | local function ValueColorUpdate(hex)
35 | displayNumberString = join("", "%s: ", hex, "%s|r")
36 |
37 | if lastPanel ~= nil then
38 | OnEvent(lastPanel)
39 | end
40 | end
41 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
42 |
43 | DT:RegisterDatatext("Combat Time", {"PLAYER_REGEN_ENABLED", "PLAYER_REGEN_DISABLED"}, OnEvent, nil, nil, nil, nil, L["Combat Time"])
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2006-2017 Trond A Ekseth
2 | Copyright (c) 2016-2017 Val Voronov
3 | Copyright (c) 2016-2017 Adrian L Lange
4 | Copyright (c) 2016-2017 Rainrider
5 |
6 | Permission is hereby granted, free of charge, to any person
7 | obtaining a copy of this software and associated documentation
8 | files (the "Software"), to deal in the Software without
9 | restriction, including without limitation the rights to use,
10 | copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the
12 | Software is furnished to do so, subject to the following
13 | conditions:
14 |
15 | The above copyright notice and this permission notice shall be
16 | included in all copies or substantial portions of the Software.
17 |
18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
20 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
22 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
23 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 | OTHER DEALINGS IN THE SOFTWARE.
26 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/petition.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.petition ~= true then return end
8 |
9 | local PetitionFrame = _G["PetitionFrame"]
10 | PetitionFrame:StripTextures(true)
11 | PetitionFrame:CreateBackdrop("Transparent")
12 | PetitionFrame.backdrop:Point("TOPLEFT", 12, -17)
13 | PetitionFrame.backdrop:Point("BOTTOMRIGHT", -28, 65)
14 |
15 | S:HandleButton(PetitionFrameSignButton)
16 | S:HandleButton(PetitionFrameRequestButton)
17 | S:HandleButton(PetitionFrameRenameButton)
18 | S:HandleButton(PetitionFrameCancelButton)
19 | S:HandleCloseButton(PetitionFrameCloseButton)
20 |
21 | PetitionFrameCharterTitle:SetTextColor(1, 0.80, 0.10)
22 | PetitionFrameCharterName:SetTextColor(1, 1, 1)
23 | PetitionFrameMasterTitle:SetTextColor(1, 0.80, 0.10)
24 | PetitionFrameMasterName:SetTextColor(1, 1, 1)
25 | PetitionFrameMemberTitle:SetTextColor(1, 0.80, 0.10)
26 |
27 | for i = 1, 9 do
28 | _G["PetitionFrameMemberName"..i]:SetTextColor(1, 1, 1)
29 | end
30 |
31 | PetitionFrameInstructions:SetTextColor(1, 1, 1)
32 |
33 | PetitionFrameRenameButton:Point("LEFT", PetitionFrameRequestButton, "RIGHT", 3, 0)
34 | PetitionFrameRenameButton:Point("RIGHT", PetitionFrameCancelButton, "LEFT", -3, 0)
35 | end
36 |
37 | S:AddCallback("Petition", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/greeting.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local find, gsub = string.find, string.gsub
6 |
7 | local function LoadSkin()
8 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.greeting ~= true then return end
9 |
10 | QuestFrameGreetingPanel:HookScript("OnShow", function()
11 | QuestFrameGreetingPanel:StripTextures()
12 |
13 | S:HandleButton(QuestFrameGreetingGoodbyeButton, true)
14 | QuestFrameGreetingGoodbyeButton:Point("BOTTOMRIGHT", -37, 4)
15 |
16 | GreetingText:SetTextColor(1, 1, 1)
17 | CurrentQuestsText:SetTextColor(1, 0.80, 0.10)
18 | AvailableQuestsText:SetTextColor(1, 0.80, 0.10)
19 |
20 | QuestGreetingFrameHorizontalBreak:Kill()
21 |
22 | QuestGreetingScrollFrame:Height(402)
23 |
24 | S:HandleScrollBar(QuestGreetingScrollFrameScrollBar)
25 |
26 | for i = 1, MAX_NUM_QUESTS do
27 | local button = _G["QuestTitleButton"..i]
28 |
29 | if not button.isSkinned then
30 | S:HandleButtonHighlight(button)
31 |
32 | button.isSkinned = true
33 | end
34 |
35 | if button:GetFontString() then
36 | if button:GetFontString():GetText() and button:GetFontString():GetText():find("|cff000000") then
37 | button:GetFontString():SetText(gsub(button:GetFontString():GetText(), "|cff000000", "|cffFFFF00"))
38 | end
39 | end
40 | end
41 | end)
42 | end
43 |
44 | S:AddCallback("Greeting", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/binding.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.binding ~= true then return end
8 |
9 | local KeyBindingFrame = _G["KeyBindingFrame"]
10 | KeyBindingFrame:StripTextures()
11 | KeyBindingFrame:CreateBackdrop("Transparent")
12 | KeyBindingFrame.backdrop:Point("TOPLEFT", 2, 0)
13 | KeyBindingFrame.backdrop:Point("BOTTOMRIGHT", -42, 12)
14 |
15 | local bindingKey1, bindingKey2
16 | for i = 1, KEY_BINDINGS_DISPLAYED do
17 | bindingKey1 = _G["KeyBindingFrameBinding"..i.."Key1Button"]
18 | bindingKey2 = _G["KeyBindingFrameBinding"..i.."Key2Button"]
19 |
20 | S:HandleButton(bindingKey1)
21 | S:HandleButton(bindingKey2)
22 | bindingKey2:Point("LEFT", bindingKey1, "RIGHT", 1, 0)
23 | end
24 |
25 | S:HandleScrollBar(KeyBindingFrameScrollFrameScrollBar)
26 |
27 | S:HandleCheckBox(KeyBindingFrameCharacterButton)
28 |
29 | S:HandleButton(KeyBindingFrameDefaultButton)
30 | S:HandleButton(KeyBindingFrameCancelButton)
31 |
32 | S:HandleButton(KeyBindingFrameOkayButton)
33 | KeyBindingFrameOkayButton:Point("RIGHT", KeyBindingFrameCancelButton, "LEFT", -3, 0)
34 |
35 | S:HandleButton(KeyBindingFrameUnbindButton)
36 | KeyBindingFrameUnbindButton:Point("RIGHT", KeyBindingFrameOkayButton, "LEFT", -3, 0)
37 | end
38 |
39 | S:AddCallbackForAddon("Blizzard_BindingUI", "Binding", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/capturebar.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | local _G = _G
5 |
6 | local pvpHolder = CreateFrame("Frame", "PvPHolder", E.UIParent)
7 |
8 | function B:WorldStateAlwaysUpFrame_Update()
9 | local captureBar
10 | for i = 1, NUM_EXTENDED_UI_FRAMES do
11 | captureBar = _G["WorldStateCaptureBar"..i]
12 |
13 | if captureBar and captureBar:IsShown() then
14 | captureBar:ClearAllPoints()
15 | captureBar:Point("TOP", pvpHolder, "BOTTOM", 0, -75)
16 | end
17 | end
18 |
19 | for i = 1, NUM_ALWAYS_UP_UI_FRAMES do
20 | local frame = _G["AlwaysUpFrame"..i]
21 | local text = _G["AlwaysUpFrame"..i.."Text"]
22 | local icon = _G["AlwaysUpFrame"..i.."Icon"]
23 | local dynamic = _G["AlwaysUpFrame"..i.."DynamicIconButton"]
24 |
25 | if frame then
26 | if i == 1 then
27 | frame:ClearAllPoints()
28 | frame:Point("CENTER", pvpHolder, "CENTER", 0, 5)
29 | end
30 |
31 | text:ClearAllPoints()
32 | text:Point("CENTER", frame, "CENTER", 0, 0)
33 |
34 | icon:ClearAllPoints()
35 | icon:Point("CENTER", text, "LEFT", -10, -9)
36 |
37 | dynamic:ClearAllPoints()
38 | dynamic:Point("LEFT", text, "RIGHT", 5, 0)
39 | end
40 | end
41 | end
42 |
43 | function B:PositionCaptureBar()
44 | self:SecureHook("WorldStateAlwaysUpFrame_Update")
45 |
46 | pvpHolder:Size(30, 70)
47 | pvpHolder:Point("TOP", E.UIParent, "TOP", 0, -4)
48 |
49 | E:CreateMover(pvpHolder, "PvPMover", L["PvP"], nil, nil, nil, "ALL")
50 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/tooltip.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 | local TT = E:GetModule("Tooltip")
4 |
5 | local _G = _G
6 | local pairs = pairs
7 |
8 | local hooksecurefunc = hooksecurefunc
9 |
10 | local function LoadSkin()
11 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.tooltip ~= true then return end
12 |
13 | S:HandleCloseButton(ItemRefCloseButton)
14 |
15 | local GameTooltip = _G["GameTooltip"]
16 | local GameTooltipStatusBar = _G["GameTooltipStatusBar"]
17 | local tooltips = {
18 | GameTooltip,
19 | ItemRefTooltip,
20 | ShoppingTooltip1,
21 | ShoppingTooltip2,
22 | WorldMapTooltip
23 | }
24 |
25 | for _, tt in pairs(tooltips) do
26 | TT:SecureHookScript(tt, "OnShow", "SetStyle")
27 |
28 | tt:SetClampedToScreen(true)
29 | end
30 |
31 | GameTooltipStatusBar:SetStatusBarTexture(E.media.normTex)
32 | E:RegisterStatusBar(GameTooltipStatusBar)
33 | GameTooltipStatusBar:CreateBackdrop("Transparent")
34 | GameTooltipStatusBar:ClearAllPoints()
35 | GameTooltipStatusBar:Point("TOPLEFT", GameTooltip, "BOTTOMLEFT", E.Border, -(E.Spacing * 3))
36 | GameTooltipStatusBar:Point("TOPRIGHT", GameTooltip, "BOTTOMRIGHT", -E.Border, -(E.Spacing * 3))
37 |
38 | TT:SecureHookScript(GameTooltip, "OnSizeChanged", "CheckBackdropColor")
39 | TT:SecureHookScript(GameTooltip, "OnUpdate", "CheckBackdropColor")
40 | TT:RegisterEvent("CURSOR_UPDATE", "CheckBackdropColor")
41 | end
42 |
43 | S:AddCallback("SkinTooltip", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/elite.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 |
4 | function mod:UpdateElement_Elite(frame)
5 | if not self.db.units[frame.UnitType].eliteIcon then return end
6 |
7 | local icon = frame.Elite
8 | if self.db.units[frame.UnitType].eliteIcon.enable then
9 | local boss = frame.BossIcon:IsShown()
10 | if boss then
11 | icon:SetTexCoord(0, 0.15, 0.35, 0.63)
12 | icon:Show()
13 | else
14 | icon:Hide()
15 | end
16 | else
17 | icon:Hide()
18 | end
19 | end
20 |
21 | function mod:ConfigureElement_Elite(frame)
22 | if not self.db.units[frame.UnitType].eliteIcon then return end
23 |
24 | local icon = frame.Elite
25 | local position = self.db.units[frame.UnitType].eliteIcon.position
26 |
27 | icon:Size(self.db.units[frame.UnitType].eliteIcon.size)
28 | icon:ClearAllPoints()
29 |
30 | if frame.HealthBar:IsShown() then
31 | icon:SetParent(frame.HealthBar)
32 | icon:Point(position, frame.HealthBar, position, self.db.units[frame.UnitType].eliteIcon.xOffset, self.db.units[frame.UnitType].eliteIcon.yOffset)
33 | else
34 | icon:SetParent(frame)
35 | icon:Point(position, frame, position, self.db.units[frame.UnitType].eliteIcon.xOffset, self.db.units[frame.UnitType].eliteIcon.yOffset)
36 | end
37 | end
38 |
39 | function mod:ConstructElement_Elite(frame)
40 | local icon = frame.HealthBar:CreateTexture(nil, "OVERLAY")
41 | icon:SetTexture("Interface\\AddOns\\ElvUI\\media\\textures\\nameplates")
42 | icon:Hide()
43 |
44 | return icon
45 | end
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 | local oUF = ns.oUF
3 | assert(oUF, " was unable to locate oUF install.")
4 |
5 | local smoothing = {}
6 | local function Smooth(self, value)
7 | local _, max = self:GetMinMaxValues()
8 | if value == self:GetValue() or (self._max and self._max ~= max) then
9 | smoothing[self] = nil
10 | self:SetValue_(value)
11 | else
12 | smoothing[self] = value
13 | end
14 | self._max = max
15 | end
16 |
17 | local function SmoothBar(bar)
18 | if not bar.SetValue_ then
19 | bar.SetValue_ = bar.SetValue;
20 | bar.SetValue = Smooth;
21 | end
22 | end
23 |
24 | local function hook(frame)
25 | if frame.Health then
26 | SmoothBar(frame.Health)
27 | end
28 | if frame.Power then
29 | SmoothBar(frame.Power)
30 | end
31 | end
32 |
33 | for i, frame in ipairs(oUF.objects) do hook(frame) end
34 | oUF:RegisterInitCallback(hook)
35 |
36 | local f, min, max = CreateFrame("Frame"), math.min, math.max
37 | f:SetScript("OnUpdate", function()
38 | local limit = 30/GetFramerate()
39 | for bar, value in pairs(smoothing) do
40 | local cur = bar:GetValue()
41 | local new = cur + min((value-cur)/(bar.SmoothSpeed or 3), max(value-cur, limit))
42 | if new ~= new then
43 | -- Mad hax to prevent QNAN.
44 | new = value
45 | end
46 | bar:SetValue_(new)
47 | if (cur == value or abs(new - value) < 2) and bar.Smooth then
48 | bar:SetValue_(value)
49 | smoothing[bar] = nil
50 | elseif not bar.Smooth then
51 | bar:SetValue_(value)
52 | smoothing[bar] = nil
53 | end
54 | end
55 | end)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/load_blizzard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/Load_Libraries.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceGUI-3.0/AceGUI-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/!Compatibility/slashCommands.lua:
--------------------------------------------------------------------------------
1 | --Cache global variables
2 | local strmatch = strmatch
3 | --WoW API
4 | local IsAddOnLoaded = IsAddOnLoaded
5 |
6 | local checked
7 | local function LoadDebugTools()
8 | if checked then return end
9 |
10 | local _, _, _, loadable, _, reason = GetAddOnInfo("!DebugTools")
11 | checked = true
12 |
13 | if reason == "MISSING" then return end
14 |
15 | if loadable then
16 | LoadAddOn("!DebugTools")
17 | else
18 | EnableAddOn("!DebugTools")
19 | LoadAddOn("!DebugTools")
20 | DisableAddOn("!DebugTools")
21 | end
22 | end
23 |
24 | SLASH_FRAMESTACK1 = "/framestack"
25 | SLASH_FRAMESTACK2 = "/fstack"
26 | SlashCmdList["FRAMESTACK"] = function(msg)
27 | LoadDebugTools()
28 |
29 | if IsAddOnLoaded("!DebugTools") then
30 | local showHiddenArg, showRegionsArg = strmatch(msg, "^%s*(%S+)%s+(%S+)%s*$")
31 | if (not showHiddenArg or not showRegionsArg) then
32 | showHiddenArg = strmatch(msg, "^%s*(%S+)%s*$")
33 | showRegionsArg = "1"
34 | end
35 | local showHidden = showHiddenArg == "true" or showHiddenArg == "1"
36 | local showRegions = showRegions == "true" or showRegionsArg == "1"
37 |
38 | FrameStackTooltip_Toggle(showHidden, showRegions)
39 | end
40 | end
41 |
42 | SLASH_EVENTTRACE1 = "/eventtrace"
43 | SLASH_EVENTTRACE2 = "/etrace"
44 | SlashCmdList["EVENTTRACE"] = function(msg)
45 | LoadDebugTools()
46 |
47 | if IsAddOnLoaded("!DebugTools") then
48 | EventTraceFrame_HandleSlashCmd(msg)
49 | end
50 | end
51 |
52 | SLASH_DUMP1 = "/dump"
53 | SlashCmdList["DUMP"] = function(msg)
54 | LoadDebugTools()
55 |
56 | if IsAddOnLoaded("!DebugTools") then
57 | DevTools_DumpCommand(msg)
58 | end
59 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/name.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local UnitIsPlayer = UnitIsPlayer
5 |
6 | function UF:Construct_NameText(frame)
7 | local name = frame.RaisedElementParent:CreateFontString(nil, "OVERLAY")
8 | UF:Configure_FontString(name)
9 | name:Point("CENTER", frame.Health)
10 |
11 | return name
12 | end
13 |
14 | function UF:UpdateNameSettings(frame, childType)
15 | local db = frame.db
16 | if childType == "pet" then
17 | db = frame.db.petsGroup
18 | elseif childType == "target" then
19 | db = frame.db.targetsGroup
20 | end
21 |
22 | local name = frame.Name
23 | if not db.power or not db.power.enable or not db.power.hideonnpc then
24 | local attachPoint = self:GetObjectAnchorPoint(frame, db.name.attachTextTo)
25 | name:ClearAllPoints()
26 | name:Point(db.name.position, attachPoint, db.name.position, db.name.xOffset, db.name.yOffset)
27 | end
28 |
29 | frame:Tag(name, db.name.text_format)
30 | end
31 |
32 | function UF:PostNamePosition(frame, unit)
33 | if not frame.Power.value:IsShown() then return end
34 | local db = frame.db
35 | if UnitIsPlayer(unit) or (db.power and not db.power.enable) then
36 | local position = db.name.position
37 | local attachPoint = self:GetObjectAnchorPoint(frame, db.name.attachTextTo)
38 | frame.Power.value:SetAlpha(1)
39 |
40 | frame.Name:ClearAllPoints()
41 | frame.Name:Point(position, attachPoint, position, db.name.xOffset, db.name.yOffset)
42 | else
43 | frame.Power.value:SetAlpha(db.power.hideonnpc and 0 or 1)
44 |
45 | frame.Name:ClearAllPoints()
46 | frame.Name:Point(frame.Power.value:GetPoint())
47 | end
48 | end
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/highlight.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 | local LSM = E.LSM
4 |
5 | function mod:UpdateElement_Highlight(frame)
6 | if frame:IsShown() and frame.isMouseover and (frame.NameOnlyChanged or (not self.db.units[frame.UnitType].healthbar.enable and self.db.units[frame.UnitType].showName)) and not frame.isTarget then
7 | frame.Name.NameOnlyGlow:Show()
8 | frame.Highlight:Show()
9 | elseif frame:IsShown() and frame.isMouseover and (not frame.NameOnlyChanged or self.db.units[frame.UnitType].healthbar.enable) and not frame.isTarget then
10 | frame.Highlight.texture:ClearAllPoints()
11 | frame.Highlight.texture:SetPoint("TOPLEFT", frame.HealthBar, "TOPLEFT")
12 | frame.Highlight.texture:SetPoint("BOTTOMRIGHT", frame.HealthBar:GetStatusBarTexture(), "BOTTOMRIGHT")
13 | frame.Highlight.texture:Show()
14 | frame.Highlight:Show()
15 | else
16 | frame.Name.NameOnlyGlow:Hide()
17 | frame.Highlight.texture:Hide()
18 | frame.Highlight:Hide()
19 | end
20 | end
21 |
22 | function mod:ConfigureElement_Highlight(frame)
23 | if not self.db.units[frame.UnitType].healthbar.enable then return end
24 | frame.Highlight.texture:SetTexture(LSM:Fetch("statusbar", self.db.statusbar))
25 | end
26 |
27 | function mod:ConstructElement_Highlight(frame)
28 | local f = CreateFrame("Frame", nil, frame)
29 | f.texture = frame.HealthBar:CreateTexture("$parentHighlight", "ARTWORK")
30 | f.texture:SetVertexColor(1, 1, 1, 0.3)
31 | f.texture:Hide()
32 |
33 | f:HookScript2("OnHide", function()
34 | frame.Name.NameOnlyGlow:Hide()
35 | frame.Highlight.texture:Hide()
36 | end)
37 |
38 | return f
39 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/guildregistrar.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local select = select
6 |
7 | local function LoadSkin()
8 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.guildregistrar ~= true then return end
9 |
10 | GuildRegistrarGreetingFrame:StripTextures()
11 |
12 | GuildRegistrarFrame:StripTextures(true)
13 | GuildRegistrarFrame:CreateBackdrop("Transparent")
14 | GuildRegistrarFrame.backdrop:Point("TOPLEFT", 12, -17)
15 | GuildRegistrarFrame.backdrop:Point("BOTTOMRIGHT", -28, 65)
16 |
17 | S:HandleButton(GuildRegistrarFrameGoodbyeButton)
18 | S:HandleButton(GuildRegistrarFrameCancelButton)
19 | S:HandleButton(GuildRegistrarFramePurchaseButton)
20 |
21 | S:HandleCloseButton(GuildRegistrarFrameCloseButton)
22 |
23 | S:HandleEditBox(GuildRegistrarFrameEditBox)
24 |
25 | for i = 1, GuildRegistrarFrameEditBox:GetNumRegions() do
26 | local region = select(i, GuildRegistrarFrameEditBox:GetRegions())
27 | if region and region:IsObjectType("Texture") then
28 | if region:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Left" or region:GetTexture() == "Interface\\ChatFrame\\UI-ChatInputBorder-Right" then
29 | region:Kill()
30 | end
31 | end
32 | end
33 |
34 | GuildRegistrarFrameEditBox:Height(20)
35 |
36 | for i = 1, 2 do
37 | _G["GuildRegistrarButton"..i]:GetFontString():SetTextColor(1, 1, 1)
38 | S:HandleButtonHighlight(_G["GuildRegistrarButton"..i])
39 | end
40 |
41 | GuildRegistrarPurchaseText:SetTextColor(1, 1, 1)
42 | AvailableServicesText:SetTextColor(1, 1, 0)
43 | end
44 |
45 | S:AddCallback("GuildRegistrar", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/dressingroom.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local SetDressUpBackground = SetDressUpBackground
5 |
6 | local function LoadSkin()
7 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.dressingroom ~= true then return end
8 |
9 | local DressUpFrame = _G["DressUpFrame"]
10 | DressUpFrame:StripTextures()
11 | DressUpFrame:CreateBackdrop("Transparent")
12 | DressUpFrame.backdrop:Point("TOPLEFT", 10, -12)
13 | DressUpFrame.backdrop:Point("BOTTOMRIGHT", -33, 73)
14 |
15 | DressUpFramePortrait:Kill()
16 |
17 | SetDressUpBackground()
18 | DressUpBackgroundTopLeft:SetDesaturated(true)
19 | DressUpBackgroundTopRight:SetDesaturated(true)
20 | DressUpBackgroundBotLeft:SetDesaturated(true)
21 | DressUpBackgroundBotRight:SetDesaturated(true)
22 |
23 | DressUpFrameDescriptionText:Point("CENTER", DressUpFrameTitleText, "BOTTOM", -5, -22)
24 |
25 | S:HandleCloseButton(DressUpFrameCloseButton)
26 |
27 | S:HandleRotateButton(DressUpModelRotateLeftButton)
28 | DressUpModelRotateLeftButton:Point("TOPLEFT", DressUpFrame, 25, -79)
29 |
30 | S:HandleRotateButton(DressUpModelRotateRightButton)
31 | DressUpModelRotateRightButton:Point("TOPLEFT", DressUpModelRotateLeftButton, "TOPRIGHT", 3, 0)
32 |
33 | S:HandleButton(DressUpFrameCancelButton)
34 | DressUpFrameCancelButton:Point("CENTER", DressUpFrame, "TOPLEFT", 306, -423)
35 |
36 | S:HandleButton(DressUpFrameResetButton)
37 | DressUpFrameResetButton:Point("RIGHT", DressUpFrameCancelButton, "LEFT", -3, 0)
38 |
39 | DressUpModel:CreateBackdrop("Default")
40 | DressUpModel.backdrop:SetOutside(DressUpBackgroundTopLeft, nil, nil, DressUpModel)
41 | end
42 |
43 | S:AddCallback("DressingRoom", LoadSkin)
--------------------------------------------------------------------------------
/!Compatibility/api/widgetAPI.lua:
--------------------------------------------------------------------------------
1 | --Cache global variables
2 | local assert = assert
3 | local format = string.format
4 | local tonumber = tonumber
5 | local type = type
6 |
7 | local function GetSize(frame)
8 | return frame:GetWidth(), frame:GetHeight()
9 | end
10 |
11 | local function SetSize(frame, width, height)
12 | width, height = tonumber(width), tonumber(height)
13 |
14 | assert(type(width) == "number" or type(width) == "string", format("Usage: %s:SetSize(width, height)", frame.GetName and frame:GetName() or tostring(frame)))
15 |
16 | frame:SetWidth(width)
17 | frame:SetHeight(type(height) == "number" and height or width)
18 | end
19 |
20 | local function HookScript2(frame, scriptType, handler)
21 | assert((type(scriptType) == "string" or type(scriptType) == "number") and type(handler) == "function", format("Usage: %s:HookScript2(\"type\", function)", frame.GetName and frame:GetName() or tostring(frame)))
22 |
23 | if frame:GetScript(scriptType) then
24 | frame:HookScript(scriptType, handler)
25 | else
26 | frame:SetScript(scriptType, handler)
27 | end
28 | end
29 |
30 | local function addapi(object)
31 | local mt = getmetatable(object).__index
32 | if not object.GetSize then mt.GetSize = GetSize end
33 | if not object.SetSize then mt.SetSize = SetSize end
34 | if not object.HookScript2 then mt.HookScript2 = HookScript2 end
35 | end
36 |
37 | local handled = {["Frame"] = true}
38 | local object = CreateFrame("Frame")
39 | addapi(object)
40 | addapi(object:CreateTexture())
41 | addapi(object:CreateFontString())
42 |
43 | object = EnumerateFrames()
44 | while object do
45 | if not handled[object:GetObjectType()] then
46 | addapi(object)
47 | handled[object:GetObjectType()] = true
48 | end
49 |
50 | object = EnumerateFrames(object)
51 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/armor.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local format = string.format
5 | local join = string.join
6 |
7 | local UnitArmor = UnitArmor
8 | local UnitLevel = UnitLevel
9 | local PaperDollFrame_GetArmorReduction = PaperDollFrame_GetArmorReduction
10 | local ARMOR = ARMOR
11 |
12 | local lastPanel
13 | local chanceString = "%.2f%%"
14 | local displayString = ""
15 | local _, effectiveArmor
16 |
17 | local function OnEvent(self)
18 | _, effectiveArmor = UnitArmor("player")
19 |
20 | self.text:SetFormattedText(displayString, ARMOR, effectiveArmor)
21 | lastPanel = self
22 | end
23 |
24 | local function OnEnter(self)
25 | DT:SetupTooltip(self)
26 |
27 | DT.tooltip:AddLine(L["Mitigation By Level: "])
28 | DT.tooltip:AddLine(" ")
29 |
30 | local playerLevel = UnitLevel("player") + 3
31 | for i = 1, 4 do
32 | local armorReduction = PaperDollFrame_GetArmorReduction(effectiveArmor, playerLevel)
33 | DT.tooltip:AddDoubleLine(playerLevel, format(chanceString, armorReduction), 1, 1, 1)
34 | playerLevel = playerLevel - 1
35 | end
36 |
37 | local targetLevel = UnitLevel("target")
38 | if targetLevel and targetLevel > 0 and (targetLevel > playerLevel + 3 or targetLevel < playerLevel) then
39 | local armorReduction = PaperDollFrame_GetArmorReduction(effectiveArmor, targetLevel)
40 | DT.tooltip:AddDoubleLine(targetLevel, format(chanceString, armorReduction), 1, 1, 1)
41 | end
42 |
43 | DT.tooltip:Show()
44 | end
45 |
46 | local function ValueColorUpdate(hex)
47 | displayString = join("", "%s: ", hex, "%d|r")
48 |
49 | if lastPanel ~= nil then
50 | OnEvent(lastPanel)
51 | end
52 | end
53 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
54 |
55 | DT:RegisterDatatext("Armor", {"UNIT_RESISTANCES"}, OnEvent, nil, nil, OnEnter, nil, ARMOR)
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/load_unitframes.xml:
--------------------------------------------------------------------------------
1 |
2 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/blizzard.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 | local oUF = ns.oUF
3 |
4 | local hiddenParent = CreateFrame("Frame")
5 |
6 | -- sourced from FrameXML/PartyMemberFrame.lua
7 | local MAX_PARTY_MEMBERS = MAX_PARTY_MEMBERS or 4
8 |
9 | local hiddenParent = CreateFrame('Frame', nil, UIParent)
10 | hiddenParent:SetAllPoints()
11 | hiddenParent:Hide()
12 |
13 | local function handleFrame(baseName)
14 | local frame
15 | if(type(baseName) == 'string') then
16 | frame = _G[baseName]
17 | else
18 | frame = baseName
19 | end
20 |
21 | if(frame) then
22 | frame:UnregisterAllEvents()
23 | frame:Hide()
24 |
25 | -- Keep frame hidden without causing taint
26 | frame:SetParent(hiddenParent)
27 |
28 | local health = frame.healthBar or frame.healthbar
29 | if(health) then
30 | health:UnregisterAllEvents()
31 | end
32 |
33 | local power = frame.manabar
34 | if(power) then
35 | power:UnregisterAllEvents()
36 | end
37 |
38 | local spell = frame.castBar or frame.spellbar
39 | if(spell) then
40 | spell:UnregisterAllEvents()
41 | end
42 |
43 | local buffFrame = frame.BuffFrame
44 | if(buffFrame) then
45 | buffFrame:UnregisterAllEvents()
46 | end
47 | end
48 | end
49 |
50 | function oUF:DisableBlizzard(unit)
51 | if(not unit) then return end
52 |
53 | if(unit == 'player') then
54 | handleFrame(PlayerFrame)
55 | elseif(unit == 'pet') then
56 | handleFrame(PetFrame)
57 | elseif(unit == 'target') then
58 | handleFrame(TargetFrame)
59 | handleFrame(ComboFrame)
60 | elseif(unit == 'targettarget') then
61 | handleFrame(TargetofTargetFrame)
62 | elseif(unit:match('party%d?$')) then
63 | local id = unit:match('party(%d)')
64 | if(id) then
65 | handleFrame('PartyMemberFrame' .. id)
66 | else
67 | for i = 1, MAX_PARTY_MEMBERS do
68 | handleFrame(string.format('PartyMemberFrame%d', i))
69 | end
70 | end
71 | end
72 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/mirrortimers.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local format = format
6 |
7 | local function LoadSkin()
8 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.mirrorTimers ~= true then return end
9 |
10 | local function MirrorTimer_OnUpdate(frame, elapsed)
11 | if frame.paused then return end
12 |
13 | if frame.timeSinceUpdate >= 0.3 then
14 | local minutes = frame.value / 60
15 | local seconds = frame.value % 60
16 | local text = frame.label:GetText()
17 |
18 | if frame.value > 0 then
19 | frame.TimerText:SetText(format("%s (%d:%02d)", text, minutes, seconds))
20 | else
21 | frame.TimerText:SetText(format("%s (0:00)", text))
22 | end
23 | frame.timeSinceUpdate = 0
24 | else
25 | frame.timeSinceUpdate = frame.timeSinceUpdate + elapsed
26 | end
27 | end
28 |
29 | for i = 1, MIRRORTIMER_NUMTIMERS do
30 | local mirrorTimer = _G["MirrorTimer"..i]
31 | local statusBar = _G["MirrorTimer"..i.."StatusBar"]
32 | local text = _G["MirrorTimer"..i.."Text"]
33 |
34 | mirrorTimer:StripTextures()
35 | mirrorTimer:Size(222, 18)
36 | mirrorTimer.label = text
37 |
38 | statusBar:CreateBackdrop()
39 | statusBar:Size(222, 18)
40 | statusBar:SetStatusBarTexture(E.media.normTex)
41 | E:RegisterStatusBar(statusBar)
42 |
43 | text:Hide()
44 |
45 | local TimerText = mirrorTimer:CreateFontString(nil, "OVERLAY")
46 | TimerText:FontTemplate()
47 | TimerText:Point("CENTER", statusBar, "CENTER", 0, 0)
48 | mirrorTimer.TimerText = TimerText
49 |
50 | mirrorTimer.timeSinceUpdate = 0.3
51 | mirrorTimer:HookScript("OnUpdate", MirrorTimer_OnUpdate)
52 |
53 | E:CreateMover(mirrorTimer, "MirrorTimer"..i.."Mover", L["MirrorTimer"]..i, nil, nil, nil, "ALL,SOLO")
54 | end
55 | end
56 |
57 | S:AddCallback("MirrorTimers", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/factory.lua:
--------------------------------------------------------------------------------
1 | local ns = oUF
2 | local oUF = ns.oUF
3 | local Private = oUF.Private
4 |
5 | local argcheck = Private.argcheck
6 |
7 | local queue = {}
8 | local factory = CreateFrame('Frame')
9 | factory:SetScript('OnEvent', function(self, event, ...)
10 | return self[event](self, event, ...)
11 | end)
12 |
13 | factory:RegisterEvent('PLAYER_LOGIN')
14 | factory.active = true
15 |
16 | function factory:PLAYER_LOGIN()
17 | if(not self.active) then return end
18 |
19 | for _, func in next, queue do
20 | func(oUF)
21 | end
22 |
23 | -- Avoid creating dupes.
24 | wipe(queue)
25 | end
26 |
27 | --[[ Factory: oUF:Factory(func)
28 | Used to call a function directly if the current character is logged in and the factory is active. Else the function is
29 | queued up to be executed at a later time (upon PLAYER_LOGIN by default).
30 |
31 | * self - the global oUF object
32 | * func - function to be executed or delayed (function)
33 | --]]
34 | function oUF:Factory(func)
35 | argcheck(func, 2, 'function')
36 |
37 | -- Call the function directly if we're active and logged in.
38 | if(IsLoggedIn() and factory.active) then
39 | return func(self)
40 | else
41 | table.insert(queue, func)
42 | end
43 | end
44 |
45 | --[[ Factory: oUF:EnableFactory()
46 | Used to enable the factory.
47 |
48 | * self - the global oUF object
49 | --]]
50 | function oUF:EnableFactory()
51 | factory.active = true
52 | end
53 |
54 | --[[ Factory: oUF:DisableFactory()
55 | Used to disable the factory.
56 |
57 | * self - the global oUF object
58 | --]]
59 | function oUF:DisableFactory()
60 | factory.active = nil
61 | end
62 |
63 | --[[ Factory: oUF:RunFactoryQueue()
64 | Used to try to execute queued up functions. The current player must be logged in and the factory must be active for
65 | this to succeed.
66 |
67 | * self - the global oUF object
68 | --]]
69 | function oUF:RunFactoryQueue()
70 | factory:PLAYER_LOGIN()
71 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/restingindicator.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local RestingTextures = {
5 | ["DEFAULT"] = [[Interface\CharacterFrame\UI-StateIcon]],
6 | ["RESTING"] = [[Interface\AddOns\ElvUI\media\textures\resting]],
7 | ["RESTING1"] = [[Interface\AddOns\ElvUI\media\textures\resting1]]
8 | }
9 |
10 | function UF:Construct_RestingIndicator(frame)
11 | return frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
12 | end
13 |
14 | function UF:Configure_RestingIndicator(frame)
15 | if not frame.VARIABLES_SET then return end
16 |
17 | local Icon = frame.RestingIndicator
18 | local db = frame.db.RestIcon
19 |
20 | if db.enable then
21 | if not frame:IsElementEnabled("RestingIndicator") then
22 | frame:EnableElement("RestingIndicator")
23 | end
24 |
25 | if db.defaultColor then
26 | Icon:SetVertexColor(1, 1, 1, 1)
27 | Icon:SetDesaturated(false)
28 | else
29 | Icon:SetVertexColor(db.color.r, db.color.g, db.color.b, db.color.a)
30 | Icon:SetDesaturated(true)
31 | end
32 |
33 | if db.texture == "CUSTOM" and db.customTexture then
34 | Icon:SetTexture(db.customTexture)
35 | Icon:SetTexCoord(0, 1, 0, 1)
36 | elseif db.texture ~= "DEFAULT" and RestingTextures[db.texture] then
37 | Icon:SetTexture(RestingTextures[db.texture])
38 | Icon:SetTexCoord(0, 1, 0, 1)
39 | else
40 | Icon:SetTexture(RestingTextures.DEFAULT)
41 | Icon:SetTexCoord(0, .5, 0, .421875)
42 | end
43 |
44 | Icon:Size(db.size)
45 | Icon:ClearAllPoints()
46 | if frame.ORIENTATION ~= "RIGHT" and (frame.USE_PORTRAIT and not frame.USE_PORTRAIT_OVERLAY) then
47 | Icon:Point("CENTER", frame.Portrait, db.anchorPoint, db.xOffset, db.yOffset)
48 | else
49 | Icon:Point("CENTER", frame.Health, db.anchorPoint, db.xOffset, db.yOffset)
50 | end
51 | elseif frame:IsElementEnabled("RestingIndicator") then
52 | frame:DisableElement("RestingIndicator")
53 | end
54 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/customtext.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local pairs = pairs
5 |
6 | function UF:Configure_CustomTexts(frame)
7 | local db = frame.db
8 |
9 | --Make sure CustomTexts are hidden if they don't exist in current profile
10 | for objectName, object in pairs(frame.customTexts) do
11 | if (not db.customTexts) or (db.customTexts and not db.customTexts[objectName]) then
12 | object:Hide()
13 | frame.customTexts[objectName] = nil
14 | end
15 | end
16 |
17 | if db.customTexts then
18 | local customFont = UF.LSM:Fetch("font", UF.db.font)
19 | for objectName in pairs(db.customTexts) do
20 | if not frame.customTexts[objectName] then
21 | frame.customTexts[objectName] = frame.RaisedElementParent:CreateFontString(nil, "OVERLAY")
22 | end
23 |
24 | local objectDB = db.customTexts[objectName]
25 |
26 | if objectDB.font then
27 | customFont = UF.LSM:Fetch("font", objectDB.font)
28 | end
29 |
30 | local attachPoint = self:GetObjectAnchorPoint(frame, objectDB.attachTextTo)
31 | frame.customTexts[objectName]:FontTemplate(customFont, objectDB.size or UF.db.fontSize, objectDB.fontOutline or UF.db.fontOutline)
32 | frame.customTexts[objectName]:SetJustifyH(objectDB.justifyH or "CENTER")
33 | frame.customTexts[objectName]:ClearAllPoints()
34 | frame.customTexts[objectName]:Point(objectDB.justifyH or "CENTER", attachPoint, objectDB.justifyH or "CENTER", objectDB.xOffset, objectDB.yOffset)
35 |
36 | --This takes care of custom texts that were added before the enable option was added.
37 | if objectDB.enable == nil then
38 | objectDB.enable = true
39 | end
40 |
41 | if objectDB.enable then
42 | frame:Tag(frame.customTexts[objectName], objectDB.text_format or "")
43 | frame.customTexts[objectName]:Show()
44 | else
45 | frame:Untag(frame.customTexts[objectName])
46 | frame.customTexts[objectName]:Hide()
47 | end
48 | end
49 | end
50 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/combatindicator.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local CombatTextures = {
5 | ["DEFAULT"] = [[Interface\CharacterFrame\UI-StateIcon]],
6 | ["COMBAT"] = [[Interface\AddOns\ElvUI\media\textures\combat]],
7 | ["ATTACK"] = [[Interface\CURSOR\Attack]],
8 | ["ALERT"] = [[Interface\AddOns\ElvUI\media\textures\UI-Dialog-Icon-AlertNew]],
9 | ["ALERT2"] = [[Interface\AddOns\ElvUI\media\textures\UI-OptionsFrame-NewFeatureIcon]],
10 | ["ARTHAS"] = [[Interface\AddOns\ElvUI\media\textures\UI-LFR-PORTRAIT]],
11 | ["SKULL"] = [[Interface\LootFrame\LootPanel-Icon]]
12 | }
13 |
14 | function UF:Construct_CombatIndicator(frame)
15 | return frame.RaisedElementParent.TextureParent:CreateTexture(nil, "OVERLAY")
16 | end
17 |
18 | function UF:Configure_CombatIndicator(frame)
19 | if not frame.VARIABLES_SET then return end
20 |
21 | local Icon = frame.CombatIndicator
22 | local db = frame.db.CombatIcon
23 |
24 | Icon:ClearAllPoints()
25 | Icon:Point("CENTER", frame.Health, db.anchorPoint, db.xOffset, db.yOffset)
26 | Icon:Size(db.size)
27 |
28 | if db.defaultColor then
29 | Icon:SetVertexColor(1, 1, 1, 1)
30 | Icon:SetDesaturated(false)
31 | else
32 | Icon:SetVertexColor(db.color.r, db.color.g, db.color.b, db.color.a)
33 | Icon:SetDesaturated(true)
34 | end
35 |
36 | if db.texture == "CUSTOM" and db.customTexture then
37 | Icon:SetTexture(db.customTexture)
38 | Icon:SetTexCoord(0, 1, 0, 1)
39 | elseif db.texture ~= "DEFAULT" and CombatTextures[db.texture] then
40 | Icon:SetTexture(CombatTextures[db.texture])
41 | Icon:SetTexCoord(0, 1, 0, 1)
42 | else
43 | Icon:SetTexture(CombatTextures.DEFAULT)
44 | Icon:SetTexCoord(.5, 1, 0, .49)
45 | end
46 |
47 | if db.enable and not frame:IsElementEnabled("CombatIndicator") then
48 | frame:EnableElement("CombatIndicator")
49 | elseif not db.enable and frame:IsElementEnabled("CombatIndicator") then
50 | frame:DisableElement("CombatIndicator")
51 | end
52 | end
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/debuffhighlight.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_DebuffHighlight(frame)
5 | local dbh = frame:CreateTexture(nil, "OVERLAY")
6 | dbh:SetInside(frame.Health.backdrop)
7 | dbh:SetTexture(E.media.blankTex)
8 | dbh:SetVertexColor(0, 0, 0, 0)
9 | dbh:SetBlendMode("ADD")
10 | frame.DebuffHighlightFilter = true
11 | frame.DebuffHighlightAlpha = 0.45
12 | frame.DebuffHighlightFilterTable = E.global.unitframe.DebuffHighlightColors
13 |
14 | frame:CreateShadow("Default")
15 | local x = frame.shadow
16 | frame.shadow = nil
17 | x:Hide()
18 |
19 | frame.DBHGlow = x
20 |
21 | if frame.Health then
22 | dbh:SetParent(frame.Health)
23 | frame.DBHGlow:SetParent(frame.Health)
24 | end
25 |
26 | dbh.PostUpdate = UF.PostUpdate_DebuffHighlight
27 |
28 | return dbh
29 | end
30 |
31 | function UF:Configure_DebuffHighlight(frame)
32 | if E.db.unitframe.debuffHighlighting ~= "NONE" then
33 | frame:EnableElement("DebuffHighlight")
34 | frame.DebuffHighlightFilterTable = E.global.unitframe.DebuffHighlightColors
35 | if E.db.unitframe.debuffHighlighting == "GLOW" then
36 | frame.DebuffHighlightBackdrop = true
37 | if frame.ThreatIndicator then
38 | frame.DBHGlow:SetAllPoints(frame.ThreatIndicator.glow)
39 | elseif frame.TargetGlow then
40 | frame.DBHGlow:SetAllPoints(frame.TargetGlow)
41 | end
42 | else
43 | frame.DebuffHighlightBackdrop = false
44 | end
45 | else
46 | frame:DisableElement("DebuffHighlight")
47 | end
48 | end
49 |
50 | function UF:PostUpdate_DebuffHighlight(object, debuffType, texture, wasFiltered, style, color)
51 | if debuffType and not wasFiltered then
52 | color = UF.db.colors.debuffHighlight[debuffType]
53 | if object.DebuffHighlightBackdrop and object.DBHGlow then
54 | object.DBHGlow:SetBackdropBorderColor(color.r, color.g, color.b, color.a)
55 | else
56 | object.DebuffHighlight:SetVertexColor(color.r, color.g, color.b, color.a)
57 | end
58 | end
59 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/stable.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local GetPetHappiness = GetPetHappiness
7 | local HasPetUI = HasPetUI
8 | local UnitExists = UnitExists
9 |
10 | local function LoadSkin()
11 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.stable ~= true then return end
12 |
13 | local PetStableFrame = _G["PetStableFrame"]
14 | PetStableFrame:StripTextures()
15 | PetStableFrame:CreateBackdrop("Transparent")
16 | PetStableFrame.backdrop:Point("TOPLEFT", 10, -11)
17 | PetStableFrame.backdrop:Point("BOTTOMRIGHT", -32, 71)
18 |
19 | PetStableFramePortrait:Kill()
20 |
21 | S:HandleButton(PetStablePurchaseButton)
22 |
23 | S:HandleCloseButton(PetStableFrameCloseButton)
24 |
25 | S:HandleRotateButton(PetStableModelRotateRightButton)
26 | S:HandleRotateButton(PetStableModelRotateLeftButton)
27 |
28 | S:HandleItemButton(_G["PetStableCurrentPet"], true)
29 | _G["PetStableCurrentPetIconTexture"]:SetDrawLayer("OVERLAY")
30 |
31 | for i = 1, NUM_PET_STABLE_SLOTS do
32 | S:HandleItemButton(_G["PetStableStabledPet"..i], true)
33 | _G["PetStableStabledPet"..i.."IconTexture"]:SetDrawLayer("OVERLAY")
34 | end
35 |
36 | PetStablePetInfo:GetRegions():SetTexCoord(0.04, 0.15, 0.06, 0.30)
37 | PetStablePetInfo:SetFrameLevel(PetModelFrame:GetFrameLevel() + 2)
38 | PetStablePetInfo:CreateBackdrop("Default")
39 | PetStablePetInfo:Size(24, 24)
40 |
41 | hooksecurefunc("PetStable_Update", function()
42 | local happiness = GetPetHappiness()
43 | local hasPetUI, isHunterPet = HasPetUI()
44 | if UnitExists("pet") and hasPetUI and not isHunterPet then return end
45 |
46 | local texture = PetStablePetInfo:GetRegions()
47 | if happiness == 1 then
48 | texture:SetTexCoord(0.41, 0.53, 0.06, 0.30)
49 | elseif happiness == 2 then
50 | texture:SetTexCoord(0.22, 0.345, 0.06, 0.30)
51 | elseif happiness == 3 then
52 | texture:SetTexCoord(0.04, 0.15, 0.06, 0.30)
53 | end
54 | end)
55 | end
56 |
57 | S:AddCallback("Stable", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/DataBars/DataBars.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:NewModule("DataBars", "AceEvent-3.0")
3 | E.DataBars = mod
4 |
5 | local _G = _G
6 |
7 | local CreateFrame = CreateFrame
8 | local GetAccountExpansionLevel = GetAccountExpansionLevel
9 | local MAX_PLAYER_LEVEL_TABLE = MAX_PLAYER_LEVEL_TABLE
10 |
11 | function mod:OnLeave()
12 | if (self == ElvUI_ExperienceBar and mod.db.experience.mouseover) or (self == ElvUI_ReputationBar and mod.db.reputation.mouseover) then
13 | E:UIFrameFadeOut(self, 1, self:GetAlpha(), 0)
14 | end
15 | GameTooltip:Hide()
16 | end
17 |
18 | function mod:CreateBar(name, onEnter, onClick, ...)
19 | local bar = CreateFrame("Button", name, E.UIParent)
20 | bar:Point(...)
21 | bar:SetScript("OnEnter", onEnter)
22 | bar:SetScript("OnLeave", mod.OnLeave)
23 | bar:SetScript("OnMouseDown", onClick)
24 | bar:SetFrameStrata("LOW")
25 | bar:SetTemplate("Transparent")
26 | bar:Hide()
27 |
28 | bar.statusBar = CreateFrame("StatusBar", nil, bar)
29 | bar.statusBar:SetInside()
30 | bar.statusBar:SetStatusBarTexture(E.media.normTex)
31 | E:RegisterStatusBar(bar.statusBar)
32 | bar.text = bar.statusBar:CreateFontString(nil, "OVERLAY")
33 | bar.text:FontTemplate()
34 | bar.text:Point("CENTER")
35 |
36 | return bar
37 | end
38 |
39 | function mod:UpdateDataBarDimensions()
40 | self:UpdateExperienceDimensions()
41 | self:UpdateReputationDimensions()
42 | end
43 |
44 | function mod:PLAYER_LEVEL_UP(level)
45 | local maxLevel = MAX_PLAYER_LEVEL_TABLE[GetAccountExpansionLevel()]
46 | if (level ~= maxLevel or not self.db.experience.hideAtMaxLevel) and self.db.experience.enable then
47 | self:UpdateExperience("PLAYER_LEVEL_UP", level)
48 | else
49 | self.expBar:Hide()
50 | end
51 | end
52 |
53 | function mod:Initialize()
54 | self.db = E.db.databars
55 |
56 | self:LoadExperienceBar()
57 | self:LoadReputationBar()
58 | self:RegisterEvent("PLAYER_LEVEL_UP")
59 | end
60 |
61 | local function InitializeCallback()
62 | mod:Initialize()
63 | end
64 |
65 | E:RegisterModule(mod:GetName(), InitializeCallback)
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/PvPIcon.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_PvPIcon(frame)
5 | local PvPIndicator = frame.RaisedElementParent.TextureParent:CreateTexture(nil, "ARTWORK")
6 | PvPIndicator:SetSize(30, 30)
7 | PvPIndicator:SetPoint("CENTER", frame, "CENTER")
8 |
9 | PvPIndicator.Override = UF.UpdateOverridePvP
10 |
11 | return PvPIndicator
12 | end
13 |
14 | function UF:Configure_PVPIcon(frame)
15 | local PvPIndicator = frame.PvPIndicator
16 | PvPIndicator:ClearAllPoints()
17 | PvPIndicator:Point(frame.db.pvpIcon.anchorPoint, frame.Health, frame.db.pvpIcon.anchorPoint, frame.db.pvpIcon.xOffset, frame.db.pvpIcon.yOffset)
18 |
19 | local scale = frame.db.pvpIcon.scale or 1
20 | PvPIndicator:Size(30 * scale)
21 |
22 | if frame.db.pvpIcon.enable and not frame:IsElementEnabled("PvPIndicator") then
23 | frame:EnableElement("PvPIndicator")
24 | elseif not frame.db.pvpIcon.enable and frame:IsElementEnabled("PvPIndicator") then
25 | frame:DisableElement("PvPIndicator")
26 | end
27 | end
28 |
29 | function UF:UpdateOverridePvP(event, unit)
30 | if not unit or self.unit ~= unit then return end
31 |
32 | local element = self.PvPIndicator
33 |
34 | if element.PreUpdate then
35 | element:PreUpdate()
36 | end
37 |
38 | local status
39 | local factionGroup = UnitFactionGroup(unit)
40 |
41 | if UnitIsPVPFreeForAll(unit) then
42 | element:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA")
43 | element:SetTexCoord(0, 0.65625, 0, 0.65625)
44 |
45 | status = "ffa"
46 | elseif factionGroup and UnitIsPVP(unit) then
47 | element:SetTexture("Interface\\AddOns\\ElvUI\\media\\textures\\PVP-Icons")
48 |
49 | if factionGroup == "Alliance" then
50 | element:SetTexCoord(0.545, 0.935, 0.070, 0.940)
51 | else
52 | element:SetTexCoord(0.100, 0.475, 0.070, 0.940)
53 | end
54 |
55 | status = factionGroup
56 | end
57 |
58 | if status then
59 | element:Show()
60 | else
61 | element:Hide()
62 | end
63 |
64 | if element.PostUpdate then
65 | return element:PostUpdate(unit, status)
66 | end
67 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/socket.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local unpack = unpack
6 | local format = string.format
7 |
8 | local GetNumSockets = GetNumSockets
9 | local GetSocketTypes = GetSocketTypes
10 | local hooksecurefunc = hooksecurefunc
11 |
12 | local function LoadSkin()
13 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.socket ~= true then return end
14 |
15 | local ItemSocketingFrame = _G["ItemSocketingFrame"]
16 | ItemSocketingFrame:StripTextures()
17 | ItemSocketingFrame:CreateBackdrop("Transparent")
18 | ItemSocketingFrame.backdrop:Point("TOPLEFT", 11, -12)
19 | ItemSocketingFrame.backdrop:Point("BOTTOMRIGHT", -4, 27)
20 |
21 | ItemSocketingFramePortrait:Kill()
22 |
23 | S:HandleCloseButton(ItemSocketingCloseButton)
24 |
25 | ItemSocketingScrollFrame:StripTextures()
26 | ItemSocketingScrollFrame:CreateBackdrop("Transparent")
27 |
28 | S:HandleScrollBar(ItemSocketingScrollFrameScrollBar, 2)
29 |
30 | for i = 1, MAX_NUM_SOCKETS do
31 | local button = _G[format("ItemSocketingSocket%d", i)]
32 | local icon = _G[format("ItemSocketingSocket%dIconTexture", i)]
33 | local bracket = _G[format("ItemSocketingSocket%dBracketFrame", i)]
34 | local bg = _G[format("ItemSocketingSocket%dBackground", i)]
35 |
36 | button:StripTextures()
37 | button:SetTemplate("Default", true)
38 | button:StyleButton(false)
39 |
40 | icon:SetTexCoord(unpack(E.TexCoords))
41 | icon:SetInside()
42 |
43 | bracket:Kill()
44 | bg:Kill()
45 | end
46 |
47 | hooksecurefunc("ItemSocketingFrame_Update", function()
48 | local numSockets = GetNumSockets()
49 | for i = 1, numSockets do
50 | local button = _G[format("ItemSocketingSocket%d", i)]
51 | local gemColor = GetSocketTypes(i)
52 | local color = GEM_TYPE_INFO[gemColor]
53 |
54 | button:SetBackdropColor(color.r, color.g, color.b, 0.15)
55 | button:SetBackdropBorderColor(color.r, color.g, color.b)
56 | end
57 | end)
58 |
59 | S:HandleButton(ItemSocketingSocketButton)
60 | end
61 |
62 | S:AddCallbackForAddon("Blizzard_ItemSocketingUI", "ItemSocket", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/elvuiconfig.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local pairs = pairs
5 | local find, join = string.find, string.join
6 |
7 | local GetNumAddOns = GetNumAddOns
8 | local GetAddOnInfo = GetAddOnInfo
9 | local GetAddOnMetadata = GetAddOnMetadata
10 | local IsShiftKeyDown = IsShiftKeyDown
11 | local ReloadUI = ReloadUI
12 |
13 | local displayString = ""
14 | local configText = "ElvUI"
15 | local reloadText = RELOADUI
16 | local plugins
17 | local lastPanel
18 |
19 | local function OnEvent(self, event)
20 | lastPanel = self
21 |
22 | if event == "PLAYER_LOGIN" then
23 | for i = 1, GetNumAddOns() do
24 | local name, _, _, enabled = GetAddOnInfo(i)
25 | if enabled and find(name, "ElvUI") and not (name == "ElvUI") then
26 | plugins = plugins or {}
27 | local version = GetAddOnMetadata(i, "version")
28 | plugins[name] = version
29 | end
30 | end
31 | end
32 |
33 | self.text:SetFormattedText(displayString, configText)
34 | end
35 |
36 | local function OnEnter(self)
37 | DT:SetupTooltip(self)
38 |
39 | DT.tooltip:AddDoubleLine(L["Left Click:"], L["Toggle Configuration"], 1, 1, 1)
40 | DT.tooltip:AddDoubleLine(L["Hold Shift + Right Click:"], reloadText, 1, 1, 1)
41 | if plugins then
42 | DT.tooltip:AddLine(" ")
43 | DT.tooltip:AddDoubleLine("Plugins:", "Version:")
44 | for plugin, version in pairs(plugins) do
45 | DT.tooltip:AddDoubleLine(plugin, version, 1, 1, 1, 1, 1, 1)
46 | end
47 | end
48 |
49 | DT.tooltip:Show()
50 | end
51 |
52 | local function OnClick(_, button)
53 | if button == "LeftButton" or (button == "RightButton" and not IsShiftKeyDown()) then
54 | E:ToggleConfig()
55 | elseif button == "RightButton" and IsShiftKeyDown() then
56 | ReloadUI()
57 | end
58 | end
59 |
60 | local function ValueColorUpdate(hex)
61 | displayString = join("", hex, "%s|r")
62 |
63 | if lastPanel ~= nil then
64 | OnEvent(lastPanel, "ELVUI_COLOR_UPDATE")
65 | end
66 | end
67 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
68 |
69 | DT:RegisterDatatext("ElvUI Config", {"PLAYER_LOGIN"}, OnEvent, nil, OnClick, OnEnter, nil, L["ElvUI Config"])
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/durability.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local _G = _G
5 | local pairs = pairs
6 | local format, join, upper = string.format, string.join, string.upper
7 |
8 | local GetInventoryItemDurability = GetInventoryItemDurability
9 | local GetInventorySlotInfo = GetInventorySlotInfo
10 | local ToggleCharacter = ToggleCharacter
11 |
12 | local displayString = ""
13 | local tooltipString = "%d%%"
14 | local totalDurability = 0
15 | local current, max, lastPanel
16 | local invDurability = {}
17 | local slots = {
18 | "RangedSlot",
19 | "SecondaryHandSlot",
20 | "MainHandSlot",
21 | "FeetSlot",
22 | "LegsSlot",
23 | "HandsSlot",
24 | "WristSlot",
25 | "WaistSlot",
26 | "ChestSlot",
27 | "ShoulderSlot",
28 | "HeadSlot"
29 | }
30 |
31 | local function OnEvent(self)
32 | lastPanel = self
33 | totalDurability = 100
34 |
35 | for _, value in pairs(slots) do
36 | local slot = GetInventorySlotInfo(value)
37 | current, max = GetInventoryItemDurability(slot)
38 |
39 | if current then
40 | invDurability[value] = (current / max) * 100
41 |
42 | if ((current / max) * 100) < totalDurability then
43 | totalDurability = (current / max) * 100
44 | end
45 | end
46 | end
47 |
48 | self.text:SetFormattedText(displayString, totalDurability)
49 | end
50 |
51 | local function OnClick()
52 | ToggleCharacter("PaperDollFrame")
53 | end
54 |
55 | local function OnEnter(self)
56 | DT:SetupTooltip(self)
57 |
58 | for slot, durability in pairs(invDurability) do
59 | DT.tooltip:AddDoubleLine(_G[upper(slot)], format(tooltipString, durability), 1, 1, 1, E:ColorGradient(durability * 0.01, 1, 0, 0, 1, 1, 0, 0, 1, 0))
60 | end
61 |
62 | DT.tooltip:Show()
63 | end
64 |
65 | local function ValueColorUpdate(hex)
66 | displayString = join("", L["Durability"], ": ", hex, "%d%%|r")
67 |
68 | if lastPanel ~= nil then
69 | OnEvent(lastPanel, "ELVUI_COLOR_UPDATE")
70 | end
71 | end
72 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
73 |
74 | DT:RegisterDatatext("Durability", {"PLAYER_LOGIN", "UPDATE_INVENTORY_DURABILITY", "MERCHANT_SHOW"}, OnEvent, nil, OnClick, OnEnter, nil, L["Durability"])
--------------------------------------------------------------------------------
/!Compatibility/api/luaAPI.lua:
--------------------------------------------------------------------------------
1 | --Cache global variables
2 | local error = error
3 | local geterrorhandler = geterrorhandler
4 | local pairs = pairs
5 | local pcall = pcall
6 | local securecall = securecall
7 | local select = select
8 | local tostring = tostring
9 | local type = type
10 | local unpack = unpack
11 |
12 | function table.wipe(t)
13 | assert(type(t) == "table", format("bad argument #1 to 'wipe' (table expected, got %s)", t and type(t) or "no value"))
14 |
15 | for k in pairs(t) do
16 | t[k] = nil
17 | end
18 |
19 | return t
20 | end
21 | wipe = table.wipe
22 |
23 | local LOCAL_ToStringAllTemp = {}
24 | function tostringall(...)
25 | local n = select('#', ...)
26 | -- Simple versions for common argument counts
27 | if (n == 1) then
28 | return tostring(...)
29 | elseif (n == 2) then
30 | local a, b = ...
31 | return tostring(a), tostring(b)
32 | elseif (n == 3) then
33 | local a, b, c = ...
34 | return tostring(a), tostring(b), tostring(c)
35 | elseif (n == 0) then
36 | return
37 | end
38 |
39 | local needfix
40 | for i = 1, n do
41 | local v = select(i, ...)
42 | if (type(v) ~= "string") then
43 | needfix = i
44 | break
45 | end
46 | end
47 | if (not needfix) then return ... end
48 |
49 | wipe(LOCAL_ToStringAllTemp)
50 | for i = 1, needfix - 1 do
51 | LOCAL_ToStringAllTemp[i] = select(i, ...)
52 | end
53 | for i = needfix, n do
54 | LOCAL_ToStringAllTemp[i] = tostring(select(i, ...))
55 | end
56 | return unpack(LOCAL_ToStringAllTemp)
57 | end
58 |
59 | local LOCAL_PrintHandler = function(...)
60 | DEFAULT_CHAT_FRAME:AddMessage(strjoin(" ", tostringall(...)))
61 | end
62 |
63 | function setprinthandler(func)
64 | if (type(func) ~= "function") then
65 | error("Invalid print handler")
66 | else
67 | LOCAL_PrintHandler = func
68 | end
69 | end
70 |
71 | function getprinthandler() return LOCAL_PrintHandler end
72 |
73 | local function print_inner(...)
74 | local ok, err = pcall(LOCAL_PrintHandler, ...)
75 | if (not ok) then
76 | local func = geterrorhandler()
77 | func(err)
78 | end
79 | end
80 |
81 | function print(...)
82 | securecall(pcall, print_inner, ...)
83 | end
84 |
85 | SLASH_PRINT1 = "/print"
86 | SlashCmdList["PRINT"] = print
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/hps.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local time = time
5 | local select = select
6 | local join = string.join
7 |
8 | local UnitGUID = UnitGUID
9 |
10 | local events = {SPELL_HEAL = true, SPELL_PERIODIC_HEAL = true}
11 | local playerID, petID
12 | local healTotal, lastHealAmount = 0, 0
13 | local combatTime = 0
14 | local timeStamp = 0
15 | local lastSegment = 0
16 | local lastPanel
17 | local displayString = ""
18 |
19 | local function Reset()
20 | timeStamp = 0
21 | combatTime = 0
22 | healTotal = 0
23 | lastHealAmount = 0
24 | end
25 |
26 | local function GetHPS(self)
27 | local hps
28 | if healTotal == 0 or combatTime == 0 then
29 | hps = 0
30 | else
31 | hps = healTotal / combatTime
32 | end
33 | self.text:SetFormattedText(displayString, L["HPS"], hps)
34 | end
35 |
36 | local function OnEvent(self, event, ...)
37 | lastPanel = self
38 |
39 | if event == "PLAYER_LOGIN" then
40 | playerID = E.myguid
41 | elseif event == "PLAYER_REGEN_DISABLED" or event == "PLAYER_LEAVE_COMBAT" then
42 | local now = time()
43 | if now - lastSegment > 20 then
44 | Reset()
45 | end
46 | lastSegment = now
47 | elseif event == "COMBAT_LOG_EVENT_UNFILTERED" then
48 | if not events[select(2, ...)] then return end
49 |
50 | local id = select(3, ...)
51 | if id == playerID or id == petID then
52 | if timeStamp == 0 then timeStamp = select(1, ...) end
53 | lastSegment = timeStamp
54 | combatTime = select(1, ...) - timeStamp
55 | lastHealAmount = select(12, ...)
56 | healTotal = healTotal + lastHealAmount
57 | end
58 | elseif event == "UNIT_PET" then
59 | petID = UnitGUID("pet")
60 | end
61 |
62 | GetHPS(self)
63 | end
64 |
65 | local function OnClick(self)
66 | Reset()
67 | GetHPS(self)
68 | end
69 |
70 | local function ValueColorUpdate(hex)
71 | displayString = join("", "%s: ", hex, "%.1f|r")
72 |
73 | if lastPanel ~= nil then
74 | OnEvent(lastPanel)
75 | end
76 | end
77 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
78 |
79 | DT:RegisterDatatext("HPS", {"PLAYER_LOGIN", "COMBAT_LOG_EVENT_UNFILTERED", "PLAYER_LEAVE_COMBAT", "PLAYER_REGEN_DISABLED", "UNIT_PET"}, OnEvent, nil, OnClick, nil, nil, L["HPS"])
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/infopanel.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | function UF:Construct_InfoPanel(frame)
5 | local infoPanel = CreateFrame("Frame", nil, frame)
6 |
7 | infoPanel:SetFrameLevel(7) --Health is 10 and filled power is 5 by default
8 | local thinBorders = self.thinBorders
9 | infoPanel:CreateBackdrop("Default", true, nil, thinBorders, true)
10 |
11 | return infoPanel
12 | end
13 |
14 | function UF:Configure_InfoPanel(frame, noTemplateChange)
15 | if not frame.VARIABLES_SET then return end
16 | local db = frame.db
17 |
18 | if frame.USE_INFO_PANEL then
19 | frame.InfoPanel:Show()
20 | frame.InfoPanel:ClearAllPoints()
21 |
22 | if frame.ORIENTATION == "RIGHT" then
23 | frame.InfoPanel:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -frame.BORDER - frame.SPACING, frame.BORDER + frame.SPACING)
24 | if frame.USE_POWERBAR and not frame.USE_INSET_POWERBAR and not frame.POWERBAR_DETACHED then
25 | frame.InfoPanel:SetPoint("TOPLEFT", frame.Power.backdrop, "BOTTOMLEFT", frame.BORDER - (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
26 | else
27 | frame.InfoPanel:SetPoint("TOPLEFT", frame.Health.backdrop, "BOTTOMLEFT", frame.BORDER - (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
28 | end
29 | else
30 | frame.InfoPanel:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", frame.BORDER + frame.SPACING, frame.BORDER + frame.SPACING)
31 | if frame.USE_POWERBAR and not frame.USE_INSET_POWERBAR and not frame.POWERBAR_DETACHED then
32 | frame.InfoPanel:SetPoint("TOPRIGHT", frame.Power.backdrop, "BOTTOMRIGHT", -frame.BORDER + (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
33 | else
34 | frame.InfoPanel:SetPoint("TOPRIGHT", frame.Health.backdrop, "BOTTOMRIGHT", -frame.BORDER + (frame.HAPPINESS_WIDTH or 0), -(frame.SPACING*3))
35 | end
36 | end
37 |
38 | if not noTemplateChange then
39 | local thinBorders = self.thinBorders
40 | if db.infoPanel.transparent then
41 | frame.InfoPanel.backdrop:SetTemplate("Transparent", nil, nil, thinBorders, true)
42 | else
43 | frame.InfoPanel.backdrop:SetTemplate("Default", true, nil, thinBorders, true)
44 | end
45 | end
46 | else
47 | frame.InfoPanel:Hide()
48 | end
49 | end
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua:
--------------------------------------------------------------------------------
1 | --[[-----------------------------------------------------------------------------
2 | SimpleGroup Container
3 | Simple container widget that just groups widgets.
4 | -------------------------------------------------------------------------------]]
5 | local Type, Version = "SimpleGroup", 20
6 | local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
7 | if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
8 |
9 | -- Lua APIs
10 | local pairs = pairs
11 |
12 | -- WoW APIs
13 | local CreateFrame, UIParent = CreateFrame, UIParent
14 |
15 |
16 | --[[-----------------------------------------------------------------------------
17 | Methods
18 | -------------------------------------------------------------------------------]]
19 | local methods = {
20 | ["OnAcquire"] = function(self)
21 | self:SetWidth(300)
22 | self:SetHeight(100)
23 | end,
24 |
25 | -- ["OnRelease"] = nil,
26 |
27 | ["LayoutFinished"] = function(self, width, height)
28 | if self.noAutoHeight then return end
29 | self:SetHeight(height or 0)
30 | end,
31 |
32 | ["OnWidthSet"] = function(self, width)
33 | local content = self.content
34 | content:SetWidth(width)
35 | content.width = width
36 | end,
37 |
38 | ["OnHeightSet"] = function(self, height)
39 | local content = self.content
40 | content:SetHeight(height)
41 | content.height = height
42 | end
43 | }
44 |
45 | --[[-----------------------------------------------------------------------------
46 | Constructor
47 | -------------------------------------------------------------------------------]]
48 | local function Constructor()
49 | local frame = CreateFrame("Frame", nil, UIParent)
50 | frame:SetFrameStrata("FULLSCREEN_DIALOG")
51 |
52 | --Container Support
53 | local content = CreateFrame("Frame", nil, frame)
54 | content:SetPoint("TOPLEFT")
55 | content:SetPoint("BOTTOMRIGHT")
56 |
57 | local widget = {
58 | frame = frame,
59 | content = content,
60 | type = Type
61 | }
62 | for method, func in pairs(methods) do
63 | widget[method] = func
64 | end
65 |
66 | return AceGUI:RegisterAsContainer(widget)
67 | end
68 |
69 | AceGUI:RegisterWidgetType(Type, Constructor, Version)
70 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/tabard.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 |
6 | local hooksecurefunc = hooksecurefunc
7 |
8 | local function LoadSkin()
9 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.tabard ~= true then return end
10 |
11 | TabardFramePortrait:Kill()
12 |
13 | local TabardFrame = _G["TabardFrame"]
14 | TabardFrame:StripTextures()
15 | TabardFrame:CreateBackdrop("Transparent")
16 | TabardFrame.backdrop:Point("TOPLEFT", 10, -12)
17 | TabardFrame.backdrop:Point("BOTTOMRIGHT", -32, 74)
18 |
19 | TabardModel:CreateBackdrop("Default")
20 |
21 | S:HandleButton(TabardFrameCancelButton)
22 | S:HandleButton(TabardFrameAcceptButton)
23 |
24 | S:HandleCloseButton(TabardFrameCloseButton)
25 |
26 | S:HandleRotateButton(TabardCharacterModelRotateLeftButton)
27 | S:HandleRotateButton(TabardCharacterModelRotateRightButton)
28 |
29 | TabardFrameCostFrame:StripTextures()
30 | TabardFrameCustomizationFrame:StripTextures()
31 |
32 | for i = 1, 5 do
33 | local custom = "TabardFrameCustomization"..i
34 |
35 | _G[custom]:StripTextures()
36 | S:HandleNextPrevButton(_G[custom.."LeftButton"])
37 | S:HandleNextPrevButton(_G[custom.."RightButton"])
38 |
39 | if i > 1 then
40 | _G[custom]:ClearAllPoints()
41 | _G[custom]:Point("TOP", _G["TabardFrameCustomization"..i - 1], "BOTTOM", 0, -6)
42 | else
43 | local point, anchor, point2, x, y = _G[custom]:GetPoint()
44 | _G[custom]:Point(point, anchor, point2, x, y + 4)
45 | end
46 | end
47 |
48 | TabardCharacterModelRotateLeftButton:Point("BOTTOMLEFT", 4, 4)
49 | TabardCharacterModelRotateRightButton:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
50 | hooksecurefunc(TabardCharacterModelRotateLeftButton, "SetPoint", function(self, point, _, _, xOffset, yOffset)
51 | if point ~= "BOTTOMLEFT" or xOffset ~= 4 or yOffset ~= 4 then
52 | self:Point("BOTTOMLEFT", 4, 4)
53 | end
54 | end)
55 |
56 | hooksecurefunc(TabardCharacterModelRotateRightButton, "SetPoint", function(self, point, _, _, xOffset, yOffset)
57 | if point ~= "TOPLEFT" or xOffset ~= 4 or yOffset ~= 0 then
58 | self:Point("TOPLEFT", TabardCharacterModelRotateLeftButton, "TOPRIGHT", 4, 0)
59 | end
60 | end)
61 | end
62 |
63 | S:AddCallback("Tabard", LoadSkin)
--------------------------------------------------------------------------------
/!Compatibility/libs/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- $Id: LibStub.lua 103 2014-10-16 03:02:50Z mikk $
2 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/addons/libstub/ for more info
3 | -- LibStub is hereby placed in the Public Domain
4 | -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
5 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
6 | local LibStub = _G[LIBSTUB_MAJOR]
7 |
8 | -- Check to see is this version of the stub is obsolete
9 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
10 | LibStub = LibStub or {libs = {}, minors = {} }
11 | _G[LIBSTUB_MAJOR] = LibStub
12 | LibStub.minor = LIBSTUB_MINOR
13 |
14 | -- LibStub:NewLibrary(major, minor)
15 | -- major (string) - the major version of the library
16 | -- minor (string or number ) - the minor version of the library
17 | --
18 | -- returns nil if a newer or same version of the lib is already present
19 | -- returns empty library object or old library object if upgrade is needed
20 | function LibStub:NewLibrary(major, minor)
21 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
22 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
23 |
24 | local oldminor = self.minors[major]
25 | if oldminor and oldminor >= minor then return nil end
26 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
27 | return self.libs[major], oldminor
28 | end
29 |
30 | -- LibStub:GetLibrary(major, [silent])
31 | -- major (string) - the major version of the library
32 | -- silent (boolean) - if true, library is optional, silently return nil if its not found
33 | --
34 | -- throws an error if the library can not be found (except silent is set)
35 | -- returns the library object if found
36 | function LibStub:GetLibrary(major, silent)
37 | if not self.libs[major] and not silent then
38 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
39 | end
40 | return self.libs[major], self.minors[major]
41 | end
42 |
43 | -- LibStub:IterateLibraries()
44 | --
45 | -- Returns an iterator for the currently registered libraries
46 | function LibStub:IterateLibraries()
47 | return pairs(self.libs)
48 | end
49 |
50 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
51 | end
--------------------------------------------------------------------------------
/ElvUI/media/sharedmedia.lua:
--------------------------------------------------------------------------------
1 | local LSM = LibStub("LibSharedMedia-3.0")
2 |
3 | if LSM == nil then return end
4 |
5 | LSM:Register("statusbar", "ElvUI Gloss", [[Interface\AddOns\ElvUI\media\textures\normTex]])
6 | LSM:Register("statusbar", "ElvUI Norm", [[Interface\AddOns\ElvUI\media\textures\normTex2]])
7 | LSM:Register("statusbar", "Minimalist", [[Interface\AddOns\ElvUI\media\textures\Minimalist]])
8 | LSM:Register("statusbar", "ElvUI Blank", [[Interface\BUTTONS\WHITE8X8]])
9 | LSM:Register("statusbar", "Melli", [[Interface\AddOns\ElvUI\media\textures\melli]])
10 |
11 | LSM:Register("background", "ElvUI Blank", [[Interface\BUTTONS\WHITE8X8]])
12 |
13 | LSM:Register("border", "ElvUI GlowBorder", [[Interface\AddOns\ElvUI\media\textures\glowTex]])
14 |
15 | LSM:Register("font", "Continuum Medium", [[Interface\AddOns\ElvUI\media\fonts\Continuum_Medium.ttf]])
16 | LSM:Register("font", "Die Die Die!", [[Interface\AddOns\ElvUI\media\fonts\DieDieDie.ttf]])
17 | LSM:Register("font", "Action Man", [[Interface\AddOns\ElvUI\media\fonts\Action_Man.ttf]])
18 | LSM:Register("font", "Expressway", [[Interface\AddOns\ElvUI\media\fonts\Expressway.ttf]], LSM.LOCALE_BIT_ruRU + LSM.LOCALE_BIT_western)
19 | LSM:Register("font", "PT Sans Narrow", [[Interface\AddOns\ElvUI\media\fonts\PT_Sans_Narrow.ttf]], LSM.LOCALE_BIT_ruRU + LSM.LOCALE_BIT_western)
20 | LSM:Register("font", "Homespun", [[Interface\AddOns\ElvUI\media\fonts\Homespun.ttf]], LSM.LOCALE_BIT_ruRU + LSM.LOCALE_BIT_western)
21 |
22 | LSM:Register("sound", "ElvUI Aska", [[Interface\AddOns\ElvUI\media\sounds\sndIncMsg.ogg]])
23 | LSM:Register("sound", "Awww Crap", [[Interface\AddOns\ElvUI\media\sounds\awwcrap.ogg]])
24 | LSM:Register("sound", "BBQ Ass", [[Interface\AddOns\ElvUI\media\sounds\bbqass.ogg]])
25 | LSM:Register("sound", "Big Yankie Devil", [[Interface\AddOns\ElvUI\media\sounds\yankiebangbang.ogg]])
26 | LSM:Register("sound", "Dumb Shit", [[Interface\AddOns\ElvUI\media\sounds\dumbshit.ogg]])
27 | LSM:Register("sound", "Mama Weekends", [[Interface\AddOns\ElvUI\media\sounds\mamaweekends.ogg]])
28 | LSM:Register("sound", "Runaway Fast", [[Interface\AddOns\ElvUI\media\sounds\runfast.ogg]])
29 | LSM:Register("sound", "Stop Running", [[Interface\AddOns\ElvUI\media\sounds\stoprunningslimball.ogg]])
30 | LSM:Register("sound", "Warning", [[Interface\AddOns\ElvUI\media\sounds\warning.ogg]])
31 | LSM:Register("sound", "Whisper Alert", [[Interface\AddOns\ElvUI\media\sounds\whisper.ogg]])
--------------------------------------------------------------------------------
/ElvUI/Libraries/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- $Id: LibStub.lua 103 2014-10-16 03:02:50Z mikk $
2 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/addons/libstub/ for more info
3 | -- LibStub is hereby placed in the Public Domain
4 | -- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
5 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
6 | local LibStub = _G[LIBSTUB_MAJOR]
7 |
8 | -- Check to see is this version of the stub is obsolete
9 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
10 | LibStub = LibStub or {libs = {}, minors = {} }
11 | _G[LIBSTUB_MAJOR] = LibStub
12 | LibStub.minor = LIBSTUB_MINOR
13 |
14 | -- LibStub:NewLibrary(major, minor)
15 | -- major (string) - the major version of the library
16 | -- minor (string or number ) - the minor version of the library
17 | --
18 | -- returns nil if a newer or same version of the lib is already present
19 | -- returns empty library object or old library object if upgrade is needed
20 | function LibStub:NewLibrary(major, minor)
21 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
22 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
23 |
24 | local oldminor = self.minors[major]
25 | if oldminor and oldminor >= minor then return nil end
26 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
27 | return self.libs[major], oldminor
28 | end
29 |
30 | -- LibStub:GetLibrary(major, [silent])
31 | -- major (string) - the major version of the library
32 | -- silent (boolean) - if true, library is optional, silently return nil if its not found
33 | --
34 | -- throws an error if the library can not be found (except silent is set)
35 | -- returns the library object if found
36 | function LibStub:GetLibrary(major, silent)
37 | if not self.libs[major] and not silent then
38 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
39 | end
40 | return self.libs[major], self.minors[major]
41 | end
42 |
43 | -- LibStub:IterateLibraries()
44 | --
45 | -- Returns an iterator for the currently registered libraries
46 | function LibStub:IterateLibraries()
47 | return pairs(self.libs)
48 | end
49 |
50 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
51 | end
52 |
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceConfig-3.0/AceConfig-3.0.lua:
--------------------------------------------------------------------------------
1 | --- AceConfig-3.0 wrapper library.
2 | -- Provides an API to register an options table with the config registry,
3 | -- as well as associate it with a slash command.
4 | -- @class file
5 | -- @name AceConfig-3.0
6 | -- @release $Id: AceConfig-3.0.lua 969 2010-10-07 02:11:48Z shefki $
7 |
8 | --[[
9 | AceConfig-3.0
10 |
11 | Very light wrapper library that combines all the AceConfig subcomponents into one more easily used whole.
12 |
13 | ]]
14 |
15 | local cfgreg = LibStub("AceConfigRegistry-3.0-ElvUI")
16 | local cfgcmd = LibStub("AceConfigCmd-3.0-ElvUI")
17 |
18 | local MAJOR, MINOR = "AceConfig-3.0-ElvUI", 3
19 | local AceConfig = LibStub:NewLibrary(MAJOR, MINOR)
20 |
21 | if not AceConfig then return end
22 |
23 | --TODO: local cfgdlg = LibStub("AceConfigDialog-3.0", true)
24 | --TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0", true)
25 |
26 | -- Lua APIs
27 | local pcall, error, type, pairs = pcall, error, type, pairs
28 |
29 | -- -------------------------------------------------------------------
30 | -- :RegisterOptionsTable(appName, options, slashcmd, persist)
31 | --
32 | -- - appName - (string) application name
33 | -- - options - table or function ref, see AceConfigRegistry
34 | -- - slashcmd - slash command (string) or table with commands, or nil to NOT create a slash command
35 |
36 | --- Register a option table with the AceConfig registry.
37 | -- You can supply a slash command (or a table of slash commands) to register with AceConfigCmd directly.
38 | -- @paramsig appName, options [, slashcmd]
39 | -- @param appName The application name for the config table.
40 | -- @param options The option table (or a function to generate one on demand). http://www.wowace.com/addons/ace3/pages/ace-config-3-0-options-tables/
41 | -- @param slashcmd A slash command to register for the option table, or a table of slash commands.
42 | -- @usage
43 | -- local AceConfig = LibStub("AceConfig-3.0")
44 | -- AceConfig:RegisterOptionsTable("MyAddon", myOptions, {"/myslash", "/my"})
45 | function AceConfig:RegisterOptionsTable(appName, options, slashcmd)
46 | local ok,msg = pcall(cfgreg.RegisterOptionsTable, self, appName, options)
47 | if not ok then error(msg, 2) end
48 |
49 | if slashcmd then
50 | if type(slashcmd) == "table" then
51 | for _,cmd in pairs(slashcmd) do
52 | cfgcmd:CreateChatCommand(cmd, appName)
53 | end
54 | else
55 | cfgcmd:CreateChatCommand(slashcmd, appName)
56 | end
57 | end
58 | end
59 |
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/dps.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local time = time
5 | local select = select
6 | local join = string.join
7 |
8 | local UnitGUID = UnitGUID
9 | local STAT_DPS_SHORT = STAT_DPS_SHORT
10 |
11 | local events = {SWING_DAMAGE = true, RANGE_DAMAGE = true, SPELL_DAMAGE = true, SPELL_PERIODIC_DAMAGE = true, DAMAGE_SHIELD = true, DAMAGE_SPLIT = true, SPELL_EXTRA_ATTACKS = true}
12 | local playerID, petID
13 | local DMGTotal, lastDMGAmount = 0, 0
14 | local combatTime = 0
15 | local timeStamp = 0
16 | local lastSegment = 0
17 | local lastPanel
18 | local displayString = ""
19 |
20 | local function Reset()
21 | timeStamp = 0
22 | combatTime = 0
23 | DMGTotal = 0
24 | lastDMGAmount = 0
25 | end
26 |
27 | local function GetDPS(self)
28 | local DPS
29 | if DMGTotal == 0 or combatTime == 0 then
30 | DPS = 0
31 | else
32 | DPS = DMGTotal / combatTime
33 | end
34 | self.text:SetFormattedText(displayString, L["DPS"], DPS)
35 | end
36 |
37 | local function OnEvent(self, event, ...)
38 | lastPanel = self
39 |
40 | if event == "PLAYER_LOGIN" then
41 | playerID = E.myguid
42 | elseif event == "PLAYER_REGEN_DISABLED" or event == "PLAYER_LEAVE_COMBAT" then
43 | local now = time()
44 | if now - lastSegment > 20 then
45 | Reset()
46 | end
47 | lastSegment = now
48 | elseif event == "COMBAT_LOG_EVENT_UNFILTERED" then
49 | if not events[select(2, ...)] then return end
50 |
51 | local id = select(3, ...)
52 | if id == playerID or id == petID then
53 | if timeStamp == 0 then timeStamp = select(1, ...) end
54 | lastSegment = timeStamp
55 | combatTime = select(1, ...) - timeStamp
56 | if select(2, ...) == "SWING_DAMAGE" then
57 | lastDMGAmount = select(9, ...)
58 | else
59 | lastDMGAmount = select(12, ...)
60 | end
61 |
62 | DMGTotal = DMGTotal + lastDMGAmount
63 | end
64 | elseif event == "UNIT_PET" then
65 | petID = UnitGUID("pet")
66 | end
67 |
68 | GetDPS(self)
69 | end
70 |
71 | local function OnClick(self)
72 | Reset()
73 | GetDPS(self)
74 | end
75 |
76 | local function ValueColorUpdate(hex)
77 | displayString = join("", "%s: ", hex, "%.1f|r")
78 |
79 | if lastPanel ~= nil then
80 | OnEvent(lastPanel)
81 | end
82 | end
83 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
84 |
85 | DT:RegisterDatatext("DPS", {"PLAYER_LOGIN", "COMBAT_LOG_EVENT_UNFILTERED", "PLAYER_LEAVE_COMBAT", "PLAYER_REGEN_DISABLED", "UNIT_PET"}, OnEvent, nil, OnClick, nil, nil, STAT_DPS_SHORT)
--------------------------------------------------------------------------------
/ElvUI/modules/blizzard/alertframe.lua:
--------------------------------------------------------------------------------
1 | local E, L, DF = unpack(ElvUI)
2 | local B = E:GetModule("Blizzard")
3 |
4 | local _G = _G
5 | local pairs = pairs
6 |
7 | local NUM_GROUP_LOOT_FRAMES = NUM_GROUP_LOOT_FRAMES
8 |
9 | local AlertFrameHolder = CreateFrame("Frame", "AlertFrameHolder", E.UIParent)
10 | AlertFrameHolder:SetWidth(250)
11 | AlertFrameHolder:SetHeight(20)
12 | AlertFrameHolder:SetPoint("TOP", E.UIParent, "TOP", 0, -18)
13 |
14 | function E:PostAlertMove()
15 | local position = "TOP"
16 | local _, y = AlertFrameMover:GetCenter()
17 | local screenHeight = E.UIParent:GetTop()
18 | if y > (screenHeight / 2) then
19 | position = "TOP"
20 | AlertFrameMover:SetText(AlertFrameMover.textString.." [Grow Down]")
21 | else
22 | position = "BOTTOM"
23 | AlertFrameMover:SetText(AlertFrameMover.textString.." [Grow Up]")
24 | end
25 |
26 | local rollBars = E:GetModule("Misc").RollBars
27 | if E.private.general.lootRoll then
28 | local lastframe, lastShownFrame
29 | for i, frame in pairs(rollBars) do
30 | frame:ClearAllPoints()
31 | if i ~= 1 then
32 | if position == "TOP" then
33 | frame:Point("TOP", lastframe, "BOTTOM", 0, -4)
34 | else
35 | frame:Point("BOTTOM", lastframe, "TOP", 0, 4)
36 | end
37 | else
38 | if position == "TOP" then
39 | frame:Point("TOP", AlertFrameHolder, "BOTTOM", 0, -4)
40 | else
41 | frame:Point("BOTTOM", AlertFrameHolder, "TOP", 0, 4)
42 | end
43 | end
44 | lastframe = frame
45 |
46 | if frame:IsShown() then
47 | lastShownFrame = frame
48 | end
49 | end
50 | elseif E.private.skins.blizzard.enable and E.private.skins.blizzard.lootRoll then
51 | local lastframe, lastShownFrame
52 | for i = 1, NUM_GROUP_LOOT_FRAMES do
53 | local frame = _G["GroupLootFrame"..i]
54 | if frame then
55 | frame:ClearAllPoints()
56 | if i ~= 1 then
57 | if position == "TOP" then
58 | frame:Point("TOP", lastframe, "BOTTOM", 0, -4)
59 | else
60 | frame:Point("BOTTOM", lastframe, "TOP", 0, 4)
61 | end
62 | else
63 | if position == "TOP" then
64 | frame:Point("TOP", AlertFrameHolder, "BOTTOM", 0, -4)
65 | else
66 | frame:Point("BOTTOM", AlertFrameHolder, "TOP", 0, 4)
67 | end
68 | end
69 | lastframe = frame
70 |
71 | if frame:IsShown() then
72 | lastShownFrame = frame
73 | end
74 | end
75 | end
76 | end
77 | end
78 |
79 | function B:AlertMovers()
80 | E:CreateMover(AlertFrameHolder, "AlertFrameMover", L["Loot / Alert Frames"], nil, nil, E.PostAlertMove, nil, nil, "general,general")
81 | end
--------------------------------------------------------------------------------
/ElvUI_Config/Libraries/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua:
--------------------------------------------------------------------------------
1 | --[[-----------------------------------------------------------------------------
2 | Heading Widget
3 | -------------------------------------------------------------------------------]]
4 | local Type, Version = "Heading", 20
5 | local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
6 | if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
7 |
8 | -- Lua APIs
9 | local pairs = pairs
10 |
11 | -- WoW APIs
12 | local CreateFrame, UIParent = CreateFrame, UIParent
13 |
14 | --[[-----------------------------------------------------------------------------
15 | Methods
16 | -------------------------------------------------------------------------------]]
17 | local methods = {
18 | ["OnAcquire"] = function(self)
19 | self:SetText()
20 | self:SetFullWidth()
21 | self:SetHeight(18)
22 | end,
23 |
24 | -- ["OnRelease"] = nil,
25 |
26 | ["SetText"] = function(self, text)
27 | self.label:SetText(text or "")
28 | if text and text ~= "" then
29 | self.left:SetPoint("RIGHT", self.label, "LEFT", -5, 0)
30 | self.right:Show()
31 | else
32 | self.left:SetPoint("RIGHT", -3, 0)
33 | self.right:Hide()
34 | end
35 | end
36 | }
37 |
38 | --[[-----------------------------------------------------------------------------
39 | Constructor
40 | -------------------------------------------------------------------------------]]
41 | local function Constructor()
42 | local frame = CreateFrame("Frame", nil, UIParent)
43 | frame:Hide()
44 |
45 | local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontNormal")
46 | label:SetPoint("TOP")
47 | label:SetPoint("BOTTOM")
48 | label:SetJustifyH("CENTER")
49 |
50 | local left = frame:CreateTexture(nil, "BACKGROUND")
51 | left:SetHeight(8)
52 | left:SetPoint("LEFT", 3, 0)
53 | left:SetPoint("RIGHT", label, "LEFT", -5, 0)
54 | left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
55 | left:SetTexCoord(0.81, 0.94, 0.5, 1)
56 |
57 | local right = frame:CreateTexture(nil, "BACKGROUND")
58 | right:SetHeight(8)
59 | right:SetPoint("RIGHT", -3, 0)
60 | right:SetPoint("LEFT", label, "RIGHT", 5, 0)
61 | right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border")
62 | right:SetTexCoord(0.81, 0.94, 0.5, 1)
63 |
64 | local widget = {
65 | label = label,
66 | left = left,
67 | right = right,
68 | frame = frame,
69 | type = Type
70 | }
71 | for method, func in pairs(methods) do
72 | widget[method] = func
73 | end
74 |
75 | return AceGUI:RegisterAsWidget(widget)
76 | end
77 |
78 | AceGUI:RegisterWidgetType(Type, Constructor, Version)
79 |
--------------------------------------------------------------------------------
/ElvUI/core/dropdown.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 |
3 | local tinsert = tinsert
4 |
5 | local CreateFrame = CreateFrame
6 | local ToggleFrame = ToggleFrame
7 | local GetCursorPosition = GetCursorPosition
8 |
9 | local PADDING = 10
10 | local BUTTON_HEIGHT = 16
11 | local BUTTON_WIDTH = 135
12 |
13 | local function OnClick(btn)
14 | btn.func()
15 |
16 | btn:GetParent():Hide()
17 | end
18 |
19 | local function OnEnter(btn)
20 | btn.hoverTex:Show()
21 | end
22 |
23 | local function OnLeave(btn)
24 | btn.hoverTex:Hide()
25 | end
26 |
27 | function E:DropDown(list, frame, xOffset, yOffset)
28 | if not frame.buttons then
29 | frame.buttons = {}
30 | frame:SetFrameStrata("DIALOG")
31 | frame:SetClampedToScreen(true)
32 | tinsert(UISpecialFrames, frame:GetName())
33 | frame:Hide()
34 | end
35 |
36 | xOffset = xOffset or 0
37 | yOffset = yOffset or 0
38 |
39 | for i = 1, #frame.buttons do
40 | frame.buttons[i]:Hide()
41 | end
42 |
43 | for i = 1, #list do
44 | if not frame.buttons[i] then
45 | frame.buttons[i] = CreateFrame("Button", nil, frame)
46 |
47 | frame.buttons[i].hoverTex = frame.buttons[i]:CreateTexture(nil, "OVERLAY")
48 | frame.buttons[i].hoverTex:SetAllPoints()
49 | frame.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]])
50 | frame.buttons[i].hoverTex:SetBlendMode("ADD")
51 | frame.buttons[i].hoverTex:Hide()
52 |
53 | frame.buttons[i].text = frame.buttons[i]:CreateFontString(nil, "BORDER")
54 | frame.buttons[i].text:SetAllPoints()
55 | frame.buttons[i].text:FontTemplate()
56 | frame.buttons[i].text:SetJustifyH("LEFT")
57 |
58 | frame.buttons[i]:SetScript("OnEnter", OnEnter)
59 | frame.buttons[i]:SetScript("OnLeave", OnLeave)
60 | end
61 |
62 | frame.buttons[i]:Show()
63 | frame.buttons[i]:SetHeight(BUTTON_HEIGHT)
64 | frame.buttons[i]:SetWidth(BUTTON_WIDTH)
65 | frame.buttons[i].text:SetText(list[i].text)
66 | frame.buttons[i].func = list[i].func
67 | frame.buttons[i]:SetScript("OnClick", OnClick)
68 |
69 | if i == 1 then
70 | frame.buttons[i]:SetPoint("TOPLEFT", frame, "TOPLEFT", PADDING, -PADDING)
71 | else
72 | frame.buttons[i]:SetPoint("TOPLEFT", frame.buttons[i - 1], "BOTTOMLEFT")
73 | end
74 | end
75 |
76 | frame:SetHeight((#list * BUTTON_HEIGHT) + PADDING * 2)
77 | frame:SetWidth(BUTTON_WIDTH + PADDING * 2)
78 |
79 | local UIScale = UIParent:GetScale()
80 | local x, y = GetCursorPosition()
81 | x = x/UIScale
82 | y = y/UIScale
83 | frame:ClearAllPoints()
84 | frame:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", x + xOffset, y + yOffset)
85 |
86 | ToggleFrame(frame)
87 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/bags.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local select = select
5 | local format, join = string.format, string.join
6 |
7 | local GetItemInfo = GetItemInfo
8 | local GetInventoryItemLink = GetInventoryItemLink
9 | local ContainerIDToInventoryID = ContainerIDToInventoryID
10 | local GetContainerNumSlots = GetContainerNumSlots
11 | local GetContainerNumFreeSlots = GetContainerNumFreeSlots
12 | local GetItemQualityColor = GetItemQualityColor
13 | local NUM_BAG_SLOTS = NUM_BAG_SLOTS
14 | local BACKPACK_TOOLTIP = BACKPACK_TOOLTIP
15 |
16 | local displayString = ""
17 |
18 | local lastPanel
19 |
20 | local function OnEvent(self)
21 | local bagFree, bagType
22 | local free, total, used = 0, 0, 0
23 | for i = 0, NUM_BAG_SLOTS do
24 | bagFree, bagType = GetContainerNumFreeSlots(i)
25 | if bagType == 0 then -- Skips "special" non-generic bags such as quivers, mining bags, etc.
26 | free, total = free + bagFree, total + GetContainerNumSlots(i)
27 | end
28 | end
29 | used = total - free
30 |
31 | self.text:SetFormattedText(displayString, L["Bags"], used, total)
32 |
33 | lastPanel = self
34 | end
35 |
36 | local function OnEnter(self)
37 | DT:SetupTooltip(self)
38 |
39 | local r, g, b
40 | local _, name, quality, link
41 | local free, total, used
42 |
43 | for i = 0, NUM_BAG_SLOTS do
44 | if i ~= 0 then
45 | link = GetInventoryItemLink("player", ContainerIDToInventoryID(i))
46 | if link then
47 | name, _, quality = GetItemInfo(link)
48 | r, g, b = GetItemQualityColor(quality)
49 | end
50 | end
51 |
52 | free, total, used = 0, 0, 0
53 | free, total = GetContainerNumFreeSlots(i), GetContainerNumSlots(i)
54 | used = total - free
55 |
56 | if i == 0 then
57 | DT.tooltip:AddDoubleLine(join("", BACKPACK_TOOLTIP), format("%d / %d", used, total), 1, 1, 1)
58 | else
59 | if link then
60 | DT.tooltip:AddDoubleLine(join("", name), format("%d / %d", used, total), r, g, b)
61 | end
62 | end
63 | end
64 |
65 | DT.tooltip:Show()
66 | end
67 |
68 | local function OnClick(_, btn)
69 | if not E.bags then
70 | if btn == "LeftButton" then
71 | OpenAllBags()
72 | elseif btn == "RightButton" then
73 | ToggleKeyRing()
74 | end
75 | else
76 | OpenAllBags()
77 | end
78 | end
79 |
80 | local function ValueColorUpdate(hex)
81 | displayString = join("", "%s: ", hex, "%d/%d|r")
82 |
83 | if lastPanel ~= nil then
84 | OnEvent(lastPanel)
85 | end
86 | end
87 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
88 |
89 | DT:RegisterDatatext("Bags", {"PLAYER_LOGIN", "BAG_UPDATE"}, OnEvent, nil, OnClick, OnEnter, nil, L["Bags"])
--------------------------------------------------------------------------------
/ElvUI/modules/nameplates/elements/cutawayHealth.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local mod = E:GetModule("NamePlates")
3 | local LSM = E.LSM
4 |
5 | function mod:UpdateElement_CutawayHealthFadeOut(frame)
6 | local cutawayHealth = frame.CutawayHealth
7 | cutawayHealth.fading = true
8 | E:UIFrameFadeOut(cutawayHealth, self.db.cutawayHealthFadeOutTime, cutawayHealth:GetAlpha(), 0)
9 | cutawayHealth.isPlaying = nil
10 | end
11 |
12 | local function CutawayHealthClosure(frame)
13 | return function() mod:UpdateElement_CutawayHealthFadeOut(frame) end
14 | end
15 |
16 | function mod:CutawayHealthValueChangeCallback(frame, health)
17 | if self.db.cutawayHealth then
18 | local oldValue = frame.HealthBar:GetValue()
19 | local change = oldValue - health
20 | if change > 0 and not frame.CutawayHealth.isPlaying then
21 | local cutawayHealth = frame.CutawayHealth
22 | if cutawayHealth.fading then
23 | E:UIFrameFadeRemoveFrame(cutawayHealth)
24 | end
25 | cutawayHealth.fading = false
26 | cutawayHealth:SetValue(oldValue)
27 | cutawayHealth:SetAlpha(1)
28 | if not cutawayHealth.closure then
29 | cutawayHealth.closure = CutawayHealthClosure(frame)
30 | end
31 | E:Delay(self.db.cutawayHealthLength, cutawayHealth.closure)
32 | cutawayHealth.isPlaying = true
33 | cutawayHealth:Show()
34 | end
35 | else
36 | if frame.CutawayHealth.isPlaying then
37 | frame.CutawayHealth.isPlaying = nil
38 | frame.CutawayHealth:SetScript("OnUpdate", nil)
39 | end
40 | frame.CutawayHealth:Hide()
41 | end
42 | end
43 |
44 | function mod:CutawayHealthColorChangeCallback(frame, r, g, b)
45 | frame.CutawayHealth:SetStatusBarColor(r * 1.5, g * 1.5, b * 1.5, 1)
46 | end
47 |
48 | function mod:CutawayHealthMaxHealthChangeCallback(frame, maxHealth)
49 | frame.CutawayHealth:SetMinMaxValues(0, maxHealth)
50 | end
51 |
52 | function mod:ConfigureElement_CutawayHealth(frame)
53 | local cutawayHealth = frame.CutawayHealth
54 | local healthBar = frame.HealthBar
55 |
56 | cutawayHealth:SetAllPoints(healthBar)
57 | cutawayHealth:SetStatusBarTexture(LSM:Fetch("statusbar", self.db.statusbar))
58 | end
59 |
60 | function mod:ConstructElement_CutawayHealth(parent)
61 | local healthBar = parent.HealthBar
62 |
63 | local cutawayHealth = CreateFrame("StatusBar", "$parentCutawayHealth", healthBar)
64 | cutawayHealth:SetStatusBarTexture(LSM:Fetch("background", "ElvUI Blank"))
65 | cutawayHealth:SetFrameLevel(healthBar:GetFrameLevel() - 1)
66 |
67 | mod:RegisterHealthBarCallbacks(parent, mod.CutawayHealthValueChangeCallback, mod.CutawayHealthColorChangeCallback, mod.CutawayHealthMaxHealthChangeCallback)
68 |
69 | return cutawayHealth
70 | end
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/talent.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local unpack = unpack
6 |
7 | local function LoadSkin()
8 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.talent ~= true then return end
9 |
10 | local PlayerTalentFrame = _G["PlayerTalentFrame"]
11 | PlayerTalentFrame:StripTextures()
12 | PlayerTalentFrame:CreateBackdrop("Transparent")
13 | PlayerTalentFrame.backdrop:Point("TOPLEFT", 13, -12)
14 | PlayerTalentFrame.backdrop:Point("BOTTOMRIGHT", -31, 76)
15 |
16 | PlayerTalentFramePortrait:Hide()
17 |
18 | S:HandleCloseButton(PlayerTalentFrameCloseButton)
19 |
20 | PlayerTalentFrameCancelButton:Kill()
21 |
22 | for i = 1, 5 do
23 | S:HandleTab(_G["PlayerTalentFrameTab"..i])
24 | end
25 |
26 | PlayerTalentFrameScrollFrame:StripTextures()
27 | PlayerTalentFrameScrollFrame:SetHitRectInsets(0, 0, 1, 1)
28 |
29 | PlayerTalentFrame.bg = CreateFrame("Frame", nil, PlayerTalentFrame)
30 | PlayerTalentFrame.bg:SetTemplate("Default")
31 | PlayerTalentFrame.bg:Point("TOPLEFT", PlayerTalentFrameBackgroundTopLeft, "TOPLEFT", -1, 1)
32 | PlayerTalentFrame.bg:Point("BOTTOMRIGHT", PlayerTalentFrameBackgroundBottomRight, "BOTTOMRIGHT", -19, 51)
33 |
34 | PlayerTalentFrameBackgroundTopLeft:SetParent(PlayerTalentFrame.bg)
35 | PlayerTalentFrameBackgroundTopRight:SetParent(PlayerTalentFrame.bg)
36 | PlayerTalentFrameBackgroundBottomLeft:SetParent(PlayerTalentFrame.bg)
37 | PlayerTalentFrameBackgroundBottomRight:SetParent(PlayerTalentFrame.bg)
38 |
39 | S:HandleScrollBar(PlayerTalentFrameScrollFrameScrollBar)
40 | PlayerTalentFrameScrollFrameScrollBar:Point("TOPLEFT", PlayerTalentFrameScrollFrame, "TOPRIGHT", 10, -16)
41 |
42 | PlayerTalentFrameScrollButtonOverlay:Hide()
43 |
44 | PlayerTalentFrameSpentPoints:Point("TOP", 0, -42)
45 | PlayerTalentFrameTalentPointsText:Point("BOTTOMRIGHT", PlayerTalentFrame, "BOTTOMLEFT", 220, 84)
46 |
47 | for i = 1, MAX_NUM_TALENTS do
48 | local talent = _G["PlayerTalentFrameTalent"..i]
49 | local icon = _G["PlayerTalentFrameTalent"..i.."IconTexture"]
50 | local border = _G["PlayerTalentFrameTalent"..i.."RankBorder"]
51 | local rank = _G["PlayerTalentFrameTalent"..i.."Rank"]
52 |
53 | if talent then
54 | talent:StripTextures()
55 | talent:SetTemplate("Default")
56 | talent:StyleButton()
57 |
58 | icon:SetInside()
59 | icon:SetTexCoord(unpack(E.TexCoords))
60 | icon:SetDrawLayer("ARTWORK")
61 |
62 | border:Point("CENTER", talent, "BOTTOMRIGHT", 3, -5)
63 |
64 | rank:SetFont(E.LSM:Fetch("font", E.db.general.font), 12, "OUTLINE")
65 | end
66 | end
67 | end
68 |
69 | S:AddCallbackForAddon("Blizzard_TalentUI", "Talent", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/haste.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local format, join = string.format, string.join
5 |
6 | local GetCombatRating = GetCombatRating
7 | local GetCombatRatingBonus = GetCombatRatingBonus
8 | local UnitAttackSpeed = UnitAttackSpeed
9 | local UnitRangedDamage = UnitRangedDamage
10 | local ATTACK_SPEED = ATTACK_SPEED
11 | local CR_HASTE_MELEE = CR_HASTE_MELEE
12 | local CR_HASTE_RANGED = CR_HASTE_RANGED
13 | local CR_HASTE_RATING_TOOLTIP = CR_HASTE_RATING_TOOLTIP
14 | local CR_HASTE_SPELL = CR_HASTE_SPELL
15 | local SPELL_HASTE = SPELL_HASTE
16 | local SPELL_HASTE_TOOLTIP = SPELL_HASTE_TOOLTIP
17 |
18 | local PAPERDOLLFRAME_TOOLTIP_FORMAT = "%s"
19 | local displayNumberString = ""
20 |
21 | local lastPanel
22 |
23 | local function OnEvent(self)
24 | local hasteRating
25 | if E.Role == "Caster" then
26 | hasteRating = GetCombatRating(CR_HASTE_SPELL)
27 | elseif E.myclass == "HUNTER" then
28 | hasteRating = GetCombatRating(CR_HASTE_RANGED)
29 | else
30 | hasteRating = GetCombatRating(CR_HASTE_MELEE)
31 | end
32 | self.text:SetFormattedText(displayNumberString, L["Haste"], hasteRating)
33 |
34 | lastPanel = self
35 | end
36 |
37 | local function OnEnter(self)
38 | DT:SetupTooltip(self)
39 |
40 | local text, tooltip
41 | if E.Role == "Caster" then
42 | text = SPELL_HASTE
43 | tooltip = format(SPELL_HASTE_TOOLTIP, GetCombatRatingBonus(CR_HASTE_SPELL))
44 | elseif E.myclass == "HUNTER" then
45 | text = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, ATTACK_SPEED).." "..format("%.2f", UnitRangedDamage("player"))
46 | tooltip = format(CR_HASTE_RATING_TOOLTIP, GetCombatRating(CR_HASTE_RANGED), GetCombatRatingBonus(CR_HASTE_RANGED))
47 | else
48 | local speed, offhandSpeed = UnitAttackSpeed("player")
49 | speed = format("%.2f", speed)
50 | if offhandSpeed then
51 | offhandSpeed = format("%.2f", offhandSpeed)
52 | end
53 | local string
54 | if offhandSpeed then
55 | string = speed.." / "..offhandSpeed
56 | else
57 | string = speed
58 | end
59 | text = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, ATTACK_SPEED).." "..string
60 | tooltip = format(CR_HASTE_RATING_TOOLTIP, GetCombatRating(CR_HASTE_MELEE), GetCombatRatingBonus(CR_HASTE_MELEE))
61 | end
62 |
63 | DT.tooltip:AddLine(text, 1, 1, 1)
64 | DT.tooltip:AddLine(tooltip, nil, nil, nil, true)
65 | DT.tooltip:Show()
66 | end
67 |
68 | local function ValueColorUpdate(hex)
69 | displayNumberString = join("", "%s: ", hex, "%d|r")
70 |
71 | if lastPanel ~= nil then
72 | OnEvent(lastPanel)
73 | end
74 | end
75 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
76 |
77 | DT:RegisterDatatext("Haste", {"UNIT_ATTACK_SPEED"}, OnEvent, nil, nil, OnEnter, nil, L["Haste"])
--------------------------------------------------------------------------------
/ElvUI/modules/unitframes/elements/raiddebuffs.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local UF = E:GetModule("UnitFrames")
3 |
4 | local unpack = unpack
5 |
6 | local CreateFrame = CreateFrame
7 |
8 | function UF:Construct_RaidDebuffs(frame)
9 | local rdebuff = CreateFrame("Frame", nil, frame.RaisedElementParent)
10 | rdebuff:SetTemplate("Default", nil, nil, UF.thinBorders, true)
11 | rdebuff:SetFrameLevel(frame.RaisedElementParent:GetFrameLevel() + 20) --Make them appear above regular buffs or debuffs
12 |
13 | local offset = UF.thinBorders and E.mult or E.Border
14 | rdebuff.icon = rdebuff:CreateTexture(nil, "OVERLAY")
15 | rdebuff.icon:SetTexCoord(unpack(E.TexCoords))
16 | rdebuff.icon:SetInside(rdebuff, offset, offset)
17 |
18 | rdebuff.count = rdebuff:CreateFontString(nil, "OVERLAY")
19 | rdebuff.count:FontTemplate(nil, 10, "OUTLINE")
20 | rdebuff.count:Point("BOTTOMRIGHT", 0, 2)
21 | rdebuff.count:SetTextColor(1, .9, 0)
22 |
23 | rdebuff.time = rdebuff:CreateFontString(nil, "OVERLAY")
24 | rdebuff.time:FontTemplate(nil, 10, "OUTLINE")
25 | rdebuff.time:Point("CENTER")
26 | rdebuff.time:SetTextColor(1, .9, 0)
27 |
28 | return rdebuff
29 | end
30 |
31 | function UF:Configure_RaidDebuffs(frame)
32 | if not frame.VARIABLES_SET then return end
33 | local db = frame.db
34 | local rdebuffs = frame.RaidDebuffs
35 |
36 | if db.rdebuffs.enable then
37 | local stackColor = db.rdebuffs.stack.color
38 | local durationColor = db.rdebuffs.duration.color
39 | local rdebuffsFont = UF.LSM:Fetch("font", db.rdebuffs.font)
40 | if not frame:IsElementEnabled("RaidDebuffs") then
41 | frame:EnableElement("RaidDebuffs")
42 | end
43 |
44 | rdebuffs.showDispellableDebuff = db.rdebuffs.showDispellableDebuff
45 | rdebuffs.forceShow = frame.forceShowAuras
46 | rdebuffs:Size(db.rdebuffs.size)
47 | rdebuffs:Point("BOTTOM", frame, "BOTTOM", db.rdebuffs.xOffset, db.rdebuffs.yOffset + frame.SPACING)
48 |
49 | rdebuffs.count:FontTemplate(rdebuffsFont, db.rdebuffs.fontSize, db.rdebuffs.fontOutline)
50 | rdebuffs.count:ClearAllPoints()
51 | rdebuffs.count:Point(db.rdebuffs.stack.position, db.rdebuffs.stack.xOffset, db.rdebuffs.stack.yOffset)
52 | rdebuffs.count:SetTextColor(stackColor.r, stackColor.g, stackColor.b, stackColor.a)
53 |
54 | rdebuffs.time:FontTemplate(rdebuffsFont, db.rdebuffs.fontSize, db.rdebuffs.fontOutline)
55 | rdebuffs.time:ClearAllPoints()
56 | rdebuffs.time:Point(db.rdebuffs.duration.position, db.rdebuffs.duration.xOffset, db.rdebuffs.duration.yOffset)
57 | rdebuffs.time:SetTextColor(durationColor.r, durationColor.g, durationColor.b, durationColor.a)
58 | elseif frame:IsElementEnabled("RaidDebuffs") then
59 | frame:DisableElement("RaidDebuffs")
60 | rdebuffs:Hide()
61 | end
62 | end
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/crit.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local format, join = string.format, string.join
5 |
6 | local GetCombatRating = GetCombatRating
7 | local GetCombatRatingBonus = GetCombatRatingBonus
8 | local GetCritChance = GetCritChance
9 | local GetRangedCritChance = GetRangedCritChance
10 | local GetSpellCritChance = GetSpellCritChance
11 | local COMBAT_RATING_NAME11 = COMBAT_RATING_NAME11
12 | local CRIT_ABBR = L["Crit"]
13 | local CR_CRIT_MELEE = CR_CRIT_MELEE
14 | local CR_CRIT_MELEE_TOOLTIP = CR_CRIT_MELEE_TOOLTIP
15 | local CR_CRIT_RANGED = CR_CRIT_RANGED
16 | local CR_CRIT_RANGED_TOOLTIP = CR_CRIT_RANGED_TOOLTIP
17 | local MELEE_CRIT_CHANCE = MELEE_CRIT_CHANCE
18 | local PAPERDOLLFRAME_TOOLTIP_FORMAT = "%s"
19 | local RANGED_CRIT_CHANCE = RANGED_CRIT_CHANCE
20 | local SPELL_CRIT_CHANCE = SPELL_CRIT_CHANCE
21 |
22 | local critRating
23 | local displayModifierString = ""
24 | local lastPanel
25 |
26 | local function OnEvent(self)
27 | if E.Role == "Caster" then
28 | critRating = GetSpellCritChance(2)
29 | else
30 | if E.myclass == "HUNTER" then
31 | critRating = GetRangedCritChance()
32 | else
33 | critRating = GetCritChance()
34 | end
35 | end
36 | self.text:SetFormattedText(displayModifierString, CRIT_ABBR, critRating)
37 |
38 | lastPanel = self
39 | end
40 |
41 | local function OnEnter(self)
42 | DT:SetupTooltip(self)
43 |
44 | local text, tooltip
45 | if E.Role == "Caster" then
46 | text = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, SPELL_CRIT_CHANCE).." "..format("%.2f%%", GetSpellCritChance(2))
47 | tooltip = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, COMBAT_RATING_NAME11).." "..GetCombatRating(11)
48 | else
49 | if E.myclass == "HUNTER" then
50 | text = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, RANGED_CRIT_CHANCE).." "..format("%.2f%%", GetRangedCritChance())
51 | tooltip = format(CR_CRIT_RANGED_TOOLTIP, GetCombatRating(CR_CRIT_RANGED), GetCombatRatingBonus(CR_CRIT_RANGED))
52 | else
53 | text = format(PAPERDOLLFRAME_TOOLTIP_FORMAT, MELEE_CRIT_CHANCE).." "..format("%.2f%%", GetCritChance())
54 | tooltip = format(CR_CRIT_MELEE_TOOLTIP, GetCombatRating(CR_CRIT_MELEE), GetCombatRatingBonus(CR_CRIT_MELEE))
55 | end
56 | end
57 |
58 | DT.tooltip:AddLine(text, 1, 1, 1)
59 | DT.tooltip:AddLine(tooltip, nil, nil, nil, true)
60 | DT.tooltip:Show()
61 | end
62 |
63 | local function ValueColorUpdate(hex)
64 | displayModifierString = join("", "%s: ", hex, "%.2f%%|r")
65 |
66 | if lastPanel ~= nil then
67 | OnEvent(lastPanel)
68 | end
69 | end
70 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
71 |
72 | DT:RegisterDatatext("Crit Chance", {"UNIT_STATS", "UNIT_AURA", "PLAYER_TALENT_UPDATE", "PLAYER_DAMAGE_DONE_MODS"}, OnEvent, nil, nil, OnEnter, nil, MELEE_CRIT_CHANCE)
--------------------------------------------------------------------------------
/ElvUI/Settings/Filters/Nameplate.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 |
3 | G["nameplates"]["filters"] = {
4 | ["Boss"] = {
5 | ["triggers"] = {
6 | ["level"] = true,
7 | ["curlevel"] = -1,
8 | ["nameplateType"] = {
9 | ["enable"] = true,
10 | ["enemyNPC"] = true,
11 | }
12 | },
13 | ["actions"] = {
14 | ["scale"] = 1.15,
15 | }
16 | }
17 | }
18 |
19 | E["StyleFilterDefaults"] = {
20 | ["triggers"] = {
21 | ["priority"] = 1,
22 | ["isTarget"] = false,
23 | ["notTarget"] = false,
24 | ["level"] = false,
25 | ["casting"] = {
26 | ["spells"] = {}
27 | },
28 | ["role"] = {
29 | ["tank"] = false,
30 | ["healer"] = false,
31 | ["damager"] = false
32 | },
33 | ["curlevel"] = 0,
34 | ["maxlevel"] = 0,
35 | ["minlevel"] = 0,
36 | ["healthThreshold"] = false,
37 | ["healthUsePlayer"] = false,
38 | ["underHealthThreshold"] = 0,
39 | ["overHealthThreshold"] = 0,
40 | ["powerThreshold"] = false,
41 | ["underPowerThreshold"] = 0,
42 | ["overPowerThreshold"] = 0,
43 | ["names"] = {},
44 | ["nameplateType"] = {
45 | ["enable"] = false,
46 | ["friendlyPlayer"] = false,
47 | ["friendlyNPC"] = false,
48 | ["enemyPlayer"] = false,
49 | ["enemyNPC"] = false
50 | },
51 | ["reactionType"] = {
52 | ["enabled"] = false,
53 | ["hostile"] = false,
54 | ["neutral"] = false,
55 | ["friendly"] = false
56 | },
57 | ["cooldowns"] = {
58 | ["names"] = {},
59 | ["mustHaveAll"] = false,
60 | },
61 | ["buffs"] = {
62 | ["mustHaveAll"] = false,
63 | ["missing"] = false,
64 | ["names"] = {},
65 | ["minTimeLeft"] = 0,
66 | ["maxTimeLeft"] = 0,
67 | },
68 | ["debuffs"] = {
69 | ["mustHaveAll"] = false,
70 | ["missing"] = false,
71 | ["names"] = {},
72 | ["minTimeLeft"] = 0,
73 | ["maxTimeLeft"] = 0,
74 | },
75 | ["inCombat"] = false,
76 | ["outOfCombat"] = false
77 | },
78 | ["actions"] = {
79 | ["color"] = {
80 | ["health"] = false,
81 | ["border"] = false,
82 | ["name"] = false,
83 | ["healthColor"] = {r = 1, g = 1, b = 1, a = 1},
84 | ["borderColor"] = {r = 1, g = 1, b = 1, a = 1},
85 | ["nameColor"] = {r = 1, g = 1, b = 1, a = 1}
86 | },
87 | ["texture"] = {
88 | ["enable"] = false,
89 | ["texture"] = "ElvUI Norm",
90 | },
91 | ["flash"] = {
92 | ["enable"] = false,
93 | ["color"] = {r = 1, g = 1, b = 1, a = 1},
94 | ["speed"] = 4,
95 | },
96 | ["hide"] = false,
97 | ["nameOnly"] = false,
98 | ["scale"] = 1.0,
99 | ["alpha"] = -1,
100 | },
101 | }
102 |
103 | G.nameplates.specialFilters = {
104 | ["Personal"] = true,
105 | ["nonPersonal"] = true,
106 | ["blockNonPersonal"] = true,
107 | ["blockNoDuration"] = true,
108 | }
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/battleground.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local select = select
5 | local join = string.join
6 |
7 | local GetBattlefieldScore = GetBattlefieldScore
8 | local GetCurrentMapAreaID = GetCurrentMapAreaID
9 | local GetNumBattlefieldStats = GetNumBattlefieldStats
10 | local GetNumBattlefieldScores = GetNumBattlefieldScores
11 | local GetBattlefieldStatInfo = GetBattlefieldStatInfo
12 | local GetBattlefieldStatData = GetBattlefieldStatData
13 | local RAID_CLASS_COLORS = RAID_CLASS_COLORS
14 |
15 | local name
16 | local lastPanel
17 | local displayString = ""
18 |
19 | local dataLayout = {
20 | ["LeftChatDataPanel"] = {
21 | ["left"] = 11,
22 | ["middle"] = 5,
23 | ["right"] = 2
24 | },
25 | ["RightChatDataPanel"] = {
26 | ["left"] = 4,
27 | ["middle"] = 3,
28 | ["right"] = 12
29 | }
30 | }
31 |
32 | local dataStrings = {
33 | [11] = DAMAGE,
34 | [5] = HONOR,
35 | [2] = KILLING_BLOWS,
36 | [4] = DEATHS,
37 | [3] = HONORABLE_KILLS,
38 | [12] = SHOW_COMBAT_HEALING
39 | }
40 |
41 | function DT:UPDATE_BATTLEFIELD_SCORE()
42 | lastPanel = self
43 | local pointIndex = dataLayout[self:GetParent():GetName()][self.pointIndex]
44 | for i = 1, GetNumBattlefieldScores() do
45 | name = GetBattlefieldScore(i)
46 | if name == E.myname then
47 | self.text:SetFormattedText(displayString, dataStrings[pointIndex], select(pointIndex, GetBattlefieldScore(i)))
48 | break
49 | end
50 | end
51 | end
52 |
53 | function DT:BattlegroundStats()
54 | DT:SetupTooltip(self)
55 | local CurrentMapID = GetCurrentMapAreaID()
56 | local classColor = (CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[E.myclass]) or RAID_CLASS_COLORS[E.myclass]
57 | local numStatInfo = GetNumBattlefieldStats()
58 | if numStatInfo then
59 | for index = 1, GetNumBattlefieldScores() do
60 | name = GetBattlefieldScore(index)
61 | if name and name == E.myname then
62 | DT.tooltip:AddDoubleLine(L["Stats For:"], name, 1, 1, 1, classColor.r, classColor.g, classColor.b)
63 | DT.tooltip:AddLine(" ")
64 |
65 | -- Add extra statistics to watch based on what BG you are in.
66 | for x = 1, numStatInfo do
67 | DT.tooltip:AddDoubleLine(GetBattlefieldStatInfo(x), GetBattlefieldStatData(index, x), 1, 1, 1)
68 | end
69 | break
70 | end
71 | end
72 | end
73 |
74 | DT.tooltip:Show()
75 | end
76 |
77 | function DT:HideBattlegroundTexts()
78 | DT.ForceHideBGStats = true
79 | DT:LoadDataTexts()
80 | E:Print(L["Battleground datatexts temporarily hidden, to show type /bgstats or right click the 'C' icon near the minimap."])
81 | end
82 |
83 | local function ValueColorUpdate(hex)
84 | displayString = join("", "%s: ", hex, "%s|r")
85 |
86 | if lastPanel ~= nil then
87 | DT.UPDATE_BATTLEFIELD_SCORE(lastPanel)
88 | end
89 | end
90 | E["valueColorUpdateFuncs"][ValueColorUpdate] = true
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/elements/restingindicator.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | # Element: Resting Indicator
3 |
4 | Toggles the visibility of an indicator based on the player's resting status.
5 |
6 | ## Widget
7 |
8 | RestingIndicator - Any UI widget.
9 |
10 | ## Notes
11 |
12 | A default texture will be applied if the widget is a Texture and doesn't have a texture or a color set.
13 |
14 | ## Examples
15 |
16 | -- Position and size
17 | local RestingIndicator = self:CreateTexture(nil, 'OVERLAY')
18 | RestingIndicator:SetSize(16, 16)
19 | RestingIndicator:SetPoint('TOPLEFT', self)
20 |
21 | -- Register it with oUF
22 | self.RestingIndicator = RestingIndicator
23 | --]]
24 |
25 | local ns = oUF
26 | local oUF = ns.oUF
27 |
28 | local IsResting = IsResting
29 |
30 | local function Update(self, event)
31 | local element = self.RestingIndicator
32 |
33 | --[[ Callback: RestingIndicator:PreUpdate()
34 | Called before the element has been updated.
35 |
36 | * self - the RestingIndicator element
37 | --]]
38 | if(element.PreUpdate) then
39 | element:PreUpdate()
40 | end
41 |
42 | local isResting = IsResting()
43 | if(isResting) then
44 | element:Show()
45 | else
46 | element:Hide()
47 | end
48 |
49 | --[[ Callback: RestingIndicator:PostUpdate(isResting)
50 | Called after the element has been updated.
51 |
52 | * self - the RestingIndicator element
53 | * isResting - indicates if the player is resting (boolean)
54 | --]]
55 | if(element.PostUpdate) then
56 | return element:PostUpdate(isResting)
57 | end
58 | end
59 |
60 | local function Path(self, ...)
61 | --[[ Override: RestingIndicator.Override(self, event)
62 | Used to completely override the internal update function.
63 |
64 | * self - the parent object
65 | * event - the event triggering the update (string)
66 | --]]
67 | return (self.RestingIndicator.Override or Update) (self, ...)
68 | end
69 |
70 | local function ForceUpdate(element)
71 | return Path(element.__owner, 'ForceUpdate')
72 | end
73 |
74 | local function Enable(self, unit)
75 | local element = self.RestingIndicator
76 | if(element and unit == 'player') then
77 | element.__owner = self
78 | element.ForceUpdate = ForceUpdate
79 |
80 | self:RegisterEvent('PLAYER_UPDATE_RESTING', Path, true)
81 |
82 | if(element:IsObjectType('Texture') and not element:GetTexture()) then
83 | element:SetTexture([[Interface\CharacterFrame\UI-StateIcon]])
84 | element:SetTexCoord(0, 0.5, 0, 0.421875)
85 | end
86 |
87 | return true
88 | end
89 | end
90 |
91 | local function Disable(self)
92 | local element = self.RestingIndicator
93 | if(element) then
94 | element:Hide()
95 |
96 | self:UnregisterEvent('PLAYER_UPDATE_RESTING', Path)
97 | end
98 | end
99 |
100 | oUF:AddElement('RestingIndicator', Path, Enable, Disable)
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/oUF.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
75 |
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/arenaregistrar.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local select = select
6 |
7 | local function LoadSkin()
8 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.arenaregistrar ~= true then return end
9 |
10 | ArenaRegistrarFrame:CreateBackdrop("Transparent")
11 | ArenaRegistrarFrame.backdrop:Point("TOPLEFT", 14, -18)
12 | ArenaRegistrarFrame.backdrop:Point("BOTTOMRIGHT", -30, 67)
13 |
14 | ArenaRegistrarFrame:StripTextures(true)
15 |
16 | S:HandleCloseButton(ArenaRegistrarFrameCloseButton)
17 |
18 | ArenaRegistrarGreetingFrame:StripTextures()
19 |
20 | select(1, ArenaRegistrarGreetingFrame:GetRegions()):SetTextColor(1, 0.80, 0.10)
21 | RegistrationText:SetTextColor(1, 0.80, 0.10)
22 |
23 | S:HandleButton(ArenaRegistrarFrameGoodbyeButton)
24 |
25 | for i = 1, MAX_TEAM_BORDERS do
26 | local button = _G["ArenaRegistrarButton"..i]
27 | local obj = select(3, button:GetRegions())
28 |
29 | S:HandleButtonHighlight(button)
30 |
31 | obj:SetTextColor(1, 1, 1)
32 | end
33 |
34 | ArenaRegistrarPurchaseText:SetTextColor(1, 1, 1)
35 |
36 | S:HandleButton(ArenaRegistrarFrameCancelButton)
37 | S:HandleButton(ArenaRegistrarFramePurchaseButton)
38 |
39 | select(6, ArenaRegistrarFrameEditBox:GetRegions()):Kill()
40 | select(7, ArenaRegistrarFrameEditBox:GetRegions()):Kill()
41 | S:HandleEditBox(ArenaRegistrarFrameEditBox)
42 | ArenaRegistrarFrameEditBox:Height(18)
43 |
44 | PVPBannerFrame:CreateBackdrop("Transparent")
45 | PVPBannerFrame.backdrop:Point("TOPLEFT", 10, -12)
46 | PVPBannerFrame.backdrop:Point("BOTTOMRIGHT", -33, 73)
47 |
48 | PVPBannerFrame:StripTextures()
49 |
50 | PVPBannerFramePortrait:Kill()
51 |
52 | PVPBannerFrameCustomizationFrame:StripTextures()
53 |
54 | local customization, customizationLeft, customizationRight
55 | for i = 1, 2 do
56 | customization = _G["PVPBannerFrameCustomization"..i]
57 | customizationLeft = _G["PVPBannerFrameCustomization"..i.."LeftButton"]
58 | customizationRight = _G["PVPBannerFrameCustomization"..i.."RightButton"]
59 |
60 | customization:StripTextures()
61 | S:HandleNextPrevButton(customizationLeft)
62 | S:HandleNextPrevButton(customizationRight)
63 | end
64 |
65 | local pickerButton
66 | for i = 1, 3 do
67 | pickerButton = _G["PVPColorPickerButton"..i]
68 | S:HandleButton(pickerButton)
69 | if i == 2 then
70 | pickerButton:Point("TOP", PVPBannerFrameCustomization2, "BOTTOM", 0, -33)
71 | elseif i == 3 then
72 | pickerButton:Point("TOP", PVPBannerFrameCustomization2, "BOTTOM", 0, -59)
73 | end
74 | end
75 |
76 | S:HandleButton(PVPBannerFrameAcceptButton)
77 | S:HandleButton(PVPBannerFrameCancelButton)
78 | S:HandleButton(select(4, PVPBannerFrame:GetChildren())) -- PVPBannerFrameCancelButton duplicated
79 |
80 | S:HandleCloseButton(PVPBannerFrameCloseButton)
81 | end
82 |
83 | S:AddCallback("ArenaRegistrar", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/attackpower.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local max = math.max
5 | local format, join = string.format, string.join
6 |
7 | local ComputePetBonus = ComputePetBonus
8 | local UnitAttackPower = UnitAttackPower
9 | local UnitRangedAttackPower = UnitRangedAttackPower
10 | local ATTACK_POWER_COLON = ATTACK_POWER_COLON
11 | local ATTACK_POWER_MAGIC_NUMBER = ATTACK_POWER_MAGIC_NUMBER
12 | local MELEE_ATTACK_POWER = MELEE_ATTACK_POWER
13 | local MELEE_ATTACK_POWER_TOOLTIP = MELEE_ATTACK_POWER_TOOLTIP
14 | local PET_BONUS_TOOLTIP_RANGED_ATTACK_POWER = PET_BONUS_TOOLTIP_RANGED_ATTACK_POWER
15 | local PET_BONUS_TOOLTIP_SPELLDAMAGE = PET_BONUS_TOOLTIP_SPELLDAMAGE
16 | local RANGED_ATTACK_POWER = RANGED_ATTACK_POWER
17 | local RANGED_ATTACK_POWER_TOOLTIP = RANGED_ATTACK_POWER_TOOLTIP
18 | local ATTACK_POWER_TOOLTIP = ATTACK_POWER_TOOLTIP
19 |
20 | local ATTACK_POWER = ATTACK_POWER_COLON:sub(1, -2)
21 |
22 | local base, posBuff, negBuff, effective, Rbase, RposBuff, RnegBuff, Reffective, pwr
23 | local displayNumberString = ""
24 | local lastPanel
25 |
26 | local function OnEvent(self)
27 | if E.myclass == "HUNTER" then
28 | Rbase, RposBuff, RnegBuff = UnitRangedAttackPower("player")
29 | Reffective = Rbase + RposBuff + RnegBuff
30 | pwr = Reffective
31 | else
32 | base, posBuff, negBuff = UnitAttackPower("player")
33 | effective = base + posBuff + negBuff
34 | pwr = effective
35 | end
36 |
37 | self.text:SetFormattedText(displayNumberString, ATTACK_POWER, pwr)
38 | lastPanel = self
39 | end
40 |
41 | local function OnEnter(self)
42 | DT:SetupTooltip(self)
43 |
44 | if E.myclass == "HUNTER" then
45 | DT.tooltip:AddDoubleLine(RANGED_ATTACK_POWER, pwr, 1, 1, 1)
46 |
47 | local line = format(RANGED_ATTACK_POWER_TOOLTIP, max((pwr), 0) / ATTACK_POWER_MAGIC_NUMBER)
48 | local petAPBonus = ComputePetBonus("PET_BONUS_RAP_TO_AP", pwr)
49 | local petSpellDmgBonus = ComputePetBonus("PET_BONUS_RAP_TO_SPELLDMG", pwr)
50 |
51 | if petAPBonus > 0 then
52 | line = line.."\n"..format(PET_BONUS_TOOLTIP_RANGED_ATTACK_POWER, petAPBonus)
53 | end
54 |
55 | if petSpellDmgBonus > 0 then
56 | line = line.."\n"..format(PET_BONUS_TOOLTIP_SPELLDAMAGE, petSpellDmgBonus)
57 | end
58 |
59 | DT.tooltip:AddLine(line, nil, nil, nil, true)
60 | else
61 | DT.tooltip:AddDoubleLine(MELEE_ATTACK_POWER, pwr, 1, 1, 1)
62 | DT.tooltip:AddLine(format(MELEE_ATTACK_POWER_TOOLTIP, max((base + posBuff + negBuff), 0) / ATTACK_POWER_MAGIC_NUMBER), nil, nil, nil, true)
63 | end
64 |
65 | DT.tooltip:Show()
66 | end
67 |
68 | local function ValueColorUpdate(hex)
69 | displayNumberString = join("", "%s: ", hex, "%d|r")
70 |
71 | if lastPanel ~= nil then
72 | OnEvent(lastPanel)
73 | end
74 | end
75 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
76 |
77 | DT:RegisterDatatext("Attack Power", {"UNIT_ATTACK_POWER", "UNIT_RANGED_ATTACK_POWER"}, OnEvent, nil, nil, OnEnter, nil, ATTACK_POWER_TOOLTIP)
--------------------------------------------------------------------------------
/ElvUI/modules/datatexts/time.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local DT = E:GetModule("DataTexts")
3 |
4 | local unpack = unpack
5 | local format, join = string.format, string.join
6 | local time = time
7 |
8 | local GetGameTime = GetGameTime
9 | local GetNumSavedInstances = GetNumSavedInstances
10 | local GetSavedInstanceInfo = GetSavedInstanceInfo
11 | local SecondsToTime = SecondsToTime
12 | local TIMEMANAGER_TOOLTIP_REALMTIME = TIMEMANAGER_TOOLTIP_REALMTIME
13 |
14 | local europeDisplayFormat = join("", "%02d", ":|r%02d")
15 | local instanceFormat = "%s |cffaaaaaa(%s)"
16 | local timeDisplayFormat = ""
17 | local dateDisplayFormat = ""
18 | local enteredFrame = false
19 |
20 | local lastPanel
21 |
22 | local function OnClick(_, btn)
23 | if btn == "RightButton" then
24 | if not IsAddOnLoaded("Blizzard_TimeManager") then LoadAddOn("Blizzard_TimeManager") end
25 |
26 | TimeManagerClockButton_OnClick(TimeManagerClockButton)
27 | else
28 | GameTimeFrame:Click()
29 | end
30 | end
31 |
32 | local function OnLeave()
33 | DT.tooltip:Hide()
34 |
35 | enteredFrame = false
36 | end
37 |
38 | local function OnEnter(self)
39 | DT:SetupTooltip(self)
40 |
41 | if not enteredFrame then
42 | RequestRaidInfo()
43 |
44 | enteredFrame = true
45 | end
46 |
47 | local oneraid
48 | local name, id, reset
49 | for i = 1, GetNumSavedInstances() do
50 | name, id, reset = GetSavedInstanceInfo(i)
51 | if name then
52 | if not oneraid then
53 | DT.tooltip:AddLine(L["Saved Instance(s)"])
54 |
55 | oneraid = true
56 | end
57 |
58 | DT.tooltip:AddDoubleLine(format(instanceFormat, name, id), SecondsToTime(reset, true), 1, 1, 1, 0.8, 0.8, 0.8)
59 | end
60 |
61 | if DT.tooltip:NumLines() > 0 then
62 | DT.tooltip:AddLine(" ")
63 | end
64 | end
65 |
66 | DT.tooltip:AddDoubleLine(TIMEMANAGER_TOOLTIP_REALMTIME, format(europeDisplayFormat, GetGameTime()), 1, 1, 1, 0.8, 0.8, 0.8)
67 |
68 | DT.tooltip:Show()
69 | end
70 |
71 | local function OnEvent(self, event)
72 | if event == "UPDATE_INSTANCE_INFO" and enteredFrame then
73 | OnEnter(self)
74 | end
75 | end
76 |
77 | local int = 5
78 | local function OnUpdate(self, t)
79 | int = int - t
80 |
81 | if int > 0 then return end
82 |
83 | if enteredFrame then
84 | OnEnter(self)
85 | end
86 |
87 | self.text:SetText(BetterDate(E.db.datatexts.timeFormat.." "..E.db.datatexts.dateFormat, time()):gsub(":", timeDisplayFormat):gsub("%s", dateDisplayFormat))
88 |
89 | lastPanel = self
90 | int = 1
91 | end
92 |
93 | local function ValueColorUpdate(hex)
94 | timeDisplayFormat = join("", hex, ":|r")
95 | dateDisplayFormat = join("", hex, " ")
96 |
97 | if lastPanel ~= nil then
98 | OnUpdate(lastPanel, 20000)
99 | end
100 | end
101 | E.valueColorUpdateFuncs[ValueColorUpdate] = true
102 |
103 | DT:RegisterDatatext("Time", {"UPDATE_INSTANCE_INFO"}, OnEvent, OnUpdate, OnClick, OnEnter, OnLeave)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/bgmap.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local function LoadSkin()
5 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.bgmap ~= true then return end
6 |
7 | local BattlefieldMinimap = _G["BattlefieldMinimap"]
8 | BattlefieldMinimap:SetClampedToScreen(true)
9 | BattlefieldMinimapCorner:Kill()
10 | BattlefieldMinimapBackground:Kill()
11 | BattlefieldMinimapTab:Kill()
12 | BattlefieldMinimapTabLeft:Kill()
13 | BattlefieldMinimapTabMiddle:Kill()
14 | BattlefieldMinimapTabRight:Kill()
15 |
16 | BattlefieldMinimap:CreateBackdrop("Default")
17 | BattlefieldMinimap.backdrop:Point("BOTTOMRIGHT", -4, 2)
18 | BattlefieldMinimap:SetFrameStrata("LOW")
19 |
20 | BattlefieldMinimapCloseButton:ClearAllPoints()
21 | BattlefieldMinimapCloseButton:Point("TOPRIGHT", -4, 0)
22 | S:HandleCloseButton(BattlefieldMinimapCloseButton)
23 | BattlefieldMinimapCloseButton:SetFrameStrata("MEDIUM")
24 |
25 | BattlefieldMinimap:EnableMouse(true)
26 | BattlefieldMinimap:SetMovable(true)
27 |
28 | BattlefieldMinimap:SetScript("OnMouseUp", function(self, btn)
29 | if btn == "LeftButton" then
30 | BattlefieldMinimapTab:StopMovingOrSizing()
31 | BattlefieldMinimapTab:SetUserPlaced(true)
32 | if OpacityFrame:IsShown() then OpacityFrame:Hide() end -- seem to be a bug with default ui in 4.0, we hide it on next click
33 | elseif btn == "RightButton" then
34 | ToggleDropDownMenu(1, nil, BattlefieldMinimapTabDropDown, self:GetName(), 0, -4)
35 | if OpacityFrame:IsShown() then OpacityFrame:Hide() end -- seem to be a bug with default ui in 4.0, we hide it on next click
36 | end
37 | end)
38 |
39 | BattlefieldMinimap:SetScript("OnMouseDown", function(_, btn)
40 | if btn == "LeftButton" then
41 | if BattlefieldMinimapOptions and BattlefieldMinimapOptions.locked then
42 | return
43 | else
44 | BattlefieldMinimapTab:StartMoving()
45 | end
46 | end
47 | end)
48 |
49 | hooksecurefunc("BattlefieldMinimap_SetOpacity", function()
50 | local alpha = 1.0 - BattlefieldMinimapOptions.opacity or 0
51 | BattlefieldMinimap.backdrop:SetAlpha(alpha)
52 | end)
53 |
54 | local oldAlpha
55 | BattlefieldMinimap:HookScript2("OnEnter", function()
56 | oldAlpha = BattlefieldMinimapOptions.opacity or 0
57 | BattlefieldMinimap_SetOpacity(0)
58 | end)
59 |
60 | BattlefieldMinimap:HookScript2("OnLeave", function()
61 | if oldAlpha then
62 | BattlefieldMinimap_SetOpacity(oldAlpha)
63 | oldAlpha = nil
64 | end
65 | end)
66 |
67 | BattlefieldMinimapCloseButton:HookScript2("OnEnter", function()
68 | oldAlpha = BattlefieldMinimapOptions.opacity or 0
69 | BattlefieldMinimap_SetOpacity(0)
70 | end)
71 |
72 | BattlefieldMinimapCloseButton:HookScript2("OnLeave", function()
73 | if oldAlpha then
74 | BattlefieldMinimap_SetOpacity(oldAlpha)
75 | oldAlpha = nil
76 | end
77 | end)
78 | end
79 |
80 | S:AddCallbackForAddon("Blizzard_BattlefieldMinimap", "BattlefieldMinimap", LoadSkin)
--------------------------------------------------------------------------------
/ElvUI/Libraries/oUF/elements/combatindicator.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | # Element: Combat Indicator
3 |
4 | Toggles the visibility of an indicator based on the player's combat status.
5 |
6 | ## Widget
7 |
8 | CombatIndicator - Any UI widget.
9 |
10 | ## Notes
11 |
12 | A default texture will be applied if the widget is a Texture and doesn't have a texture or a color set.
13 |
14 | ## Examples
15 |
16 | -- Position and size
17 | local CombatIndicator = self:CreateTexture(nil, 'OVERLAY')
18 | CombatIndicator:SetSize(16, 16)
19 | CombatIndicator:SetPoint('TOP', self)
20 |
21 | -- Register it with oUF
22 | self.CombatIndicator = CombatIndicator
23 | --]]
24 |
25 | local ns = oUF
26 | local oUF = ns.oUF
27 |
28 | local UnitAffectingCombat = UnitAffectingCombat
29 |
30 | local function Update(self, event)
31 | local element = self.CombatIndicator
32 |
33 | --[[ Callback: CombatIndicator:PreUpdate()
34 | Called before the element has been updated.
35 |
36 | * self - the CombatIndicator element
37 | --]]
38 | if(element.PreUpdate) then
39 | element:PreUpdate()
40 | end
41 |
42 | local inCombat = UnitAffectingCombat('player')
43 | if(inCombat) then
44 | element:Show()
45 | else
46 | element:Hide()
47 | end
48 |
49 | --[[ Callback: CombatIndicator:PostUpdate(inCombat)
50 | Called after the element has been updated.
51 |
52 | * self - the CombatIndicator element
53 | * inCombat - indicates if the player is affecting combat (boolean)
54 | --]]
55 | if(element.PostUpdate) then
56 | return element:PostUpdate(inCombat)
57 | end
58 | end
59 |
60 | local function Path(self, ...)
61 | --[[ Override: CombatIndicator.Override(self, event)
62 | Used to completely override the internal update function.
63 |
64 | * self - the parent object
65 | * event - the event triggering the update (string)
66 | --]]
67 | return (self.CombatIndicator.Override or Update) (self, ...)
68 | end
69 |
70 | local function ForceUpdate(element)
71 | return Path(element.__owner, 'ForceUpdate')
72 | end
73 |
74 | local function Enable(self, unit)
75 | local element = self.CombatIndicator
76 | if(element and unit == 'player') then
77 | element.__owner = self
78 | element.ForceUpdate = ForceUpdate
79 |
80 | self:RegisterEvent('PLAYER_REGEN_DISABLED', Path)
81 | self:RegisterEvent('PLAYER_REGEN_ENABLED', Path)
82 |
83 | if(element:IsObjectType('Texture') and not element:GetTexture()) then
84 | element:SetTexture([[Interface\CharacterFrame\UI-StateIcon]])
85 | element:SetTexCoord(.5, 1, 0, .49)
86 | end
87 |
88 | return true
89 | end
90 | end
91 |
92 | local function Disable(self)
93 | local element = self.CombatIndicator
94 | if(element) then
95 | element:Hide()
96 |
97 | self:UnregisterEvent('PLAYER_REGEN_DISABLED', Path)
98 | self:UnregisterEvent('PLAYER_REGEN_ENABLED', Path)
99 | end
100 | end
101 |
102 | oUF:AddElement('CombatIndicator', Path, Enable, Disable)
--------------------------------------------------------------------------------
/ElvUI/modules/skins/blizzard/bgscore.lua:
--------------------------------------------------------------------------------
1 | local E, L, V, P, G = unpack(ElvUI)
2 | local S = E:GetModule("Skins")
3 |
4 | local _G = _G
5 | local split = string.split
6 |
7 | local RAID_CLASS_COLORS = RAID_CLASS_COLORS
8 |
9 | local function LoadSkin()
10 | if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.bgscore ~= true then return end
11 |
12 | WorldStateScoreFrame:StripTextures()
13 | WorldStateScoreFrame:CreateBackdrop("Transparent")
14 | WorldStateScoreFrame.backdrop:Point("TOPLEFT", 10, -15)
15 | WorldStateScoreFrame.backdrop:Point("BOTTOMRIGHT", -113, 67)
16 |
17 | WorldStateScoreScrollFrame:StripTextures()
18 |
19 | S:HandleScrollBar(WorldStateScoreScrollFrameScrollBar)
20 |
21 | local tab
22 | for i = 1, 3 do
23 | tab = _G["WorldStateScoreFrameTab"..i]
24 |
25 | S:HandleTab(tab)
26 |
27 | _G["WorldStateScoreFrameTab"..i.."Text"]:Point("CENTER", 0, 2)
28 | end
29 |
30 | S:HandleButton(WorldStateScoreFrameLeaveButton)
31 | S:HandleCloseButton(WorldStateScoreFrameCloseButton)
32 |
33 | WorldStateScoreFrameKB:StyleButton()
34 | WorldStateScoreFrameDeaths:StyleButton()
35 | WorldStateScoreFrameHK:StyleButton()
36 | WorldStateScoreFrameDamageDone:StyleButton()
37 | WorldStateScoreFrameHealingDone:StyleButton()
38 | WorldStateScoreFrameHonorGained:StyleButton()
39 | WorldStateScoreFrameName:StyleButton()
40 | WorldStateScoreFrameClass:StyleButton()
41 | WorldStateScoreFrameTeam:StyleButton()
42 |
43 | for i = 1, 5 do
44 | _G["WorldStateScoreColumn"..i]:StyleButton()
45 | end
46 |
47 | hooksecurefunc("WorldStateScoreFrame_Update", function()
48 | local inArena = IsActiveBattlefieldArena()
49 | local offset = FauxScrollFrame_GetOffset(WorldStateScoreScrollFrame)
50 | local _, index, name, faction, classToken, classTextColor
51 | local nameText, realmText, color
52 |
53 | for i = 1, MAX_WORLDSTATE_SCORE_BUTTONS do
54 | index = offset + i
55 | name, _, _, _, _, faction, _, _, _, classToken = GetBattlefieldScore(index)
56 |
57 | if name then
58 | nameText, realmText = split("-", name, 2)
59 |
60 | if name == E.myname then
61 | nameText = "> "..nameText.." <"
62 | end
63 |
64 | if realmText then
65 | if inArena then
66 | if faction == 1 then
67 | color = "|cffffd100"
68 | else
69 | color = "|cff19ff19"
70 | end
71 | else
72 | if faction == 1 then
73 | color = "|cff00adf0"
74 | else
75 | color = "|cffff1919"
76 | end
77 | end
78 |
79 | realmText = color..realmText.."|r"
80 | nameText = nameText.."|cffffffff - |r"..realmText
81 | end
82 |
83 | classTextColor = CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS[classToken] or RAID_CLASS_COLORS[classToken]
84 |
85 | _G["WorldStateScoreButton"..i.."NameText"]:SetText(nameText)
86 | _G["WorldStateScoreButton"..i.."NameText"]:SetTextColor(classTextColor.r, classTextColor.g, classTextColor.b)
87 | end
88 | end
89 | end)
90 | end
91 |
92 | S:AddCallback("WorldStateScore", LoadSkin)
--------------------------------------------------------------------------------