├── .github
├── FUNDING.yml
└── workflows
│ ├── lint.yml
│ └── problem_matchers
│ └── luacheck.json
├── .gitignore
├── .gitmodules
├── .luacheckrc
├── Fonts
├── ARIALN.ttf
├── FRIZQT__.ttf
├── MORPHEUS.ttf
└── SKURRI.ttf
├── Interface
├── AddOns
│ ├── !Beautycase
│ │ ├── !Beautycase.toc
│ │ ├── core.lua
│ │ └── media
│ │ │ ├── textureNormal.tga
│ │ │ ├── textureNormalGloss.tga
│ │ │ ├── textureNormalWhite.tga
│ │ │ └── textureShadow.tga
│ ├── !Colorz
│ │ ├── !Colorz.lua
│ │ └── !Colorz.toc
│ ├── evl_RaidStatus
│ │ ├── README.textile
│ │ ├── evl_RaidStatus.lua
│ │ ├── evl_RaidStatus.toc
│ │ └── watches.lua
│ ├── nBuff
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── media
│ │ │ ├── fontAtari.ttf
│ │ │ ├── textureDebuff.tga
│ │ │ ├── textureOverlay.tga
│ │ │ └── textureShadow.tga
│ │ └── nBuff.toc
│ ├── nChat
│ │ ├── config.lua
│ │ ├── copy.lua
│ │ ├── core.lua
│ │ ├── hyperlink.lua
│ │ ├── invite.lua
│ │ ├── media
│ │ │ ├── textureCopyHighlight.tga
│ │ │ └── textureCopyNormal.tga
│ │ ├── nChat.toc
│ │ ├── urlcopy.lua
│ │ └── whisper.lua
│ ├── nCore
│ │ ├── core.lua
│ │ ├── functions.lua
│ │ ├── localization.lua
│ │ ├── media
│ │ │ ├── textureHighlight.blp
│ │ │ ├── textureNormal.blp
│ │ │ └── texturePushed.blp
│ │ ├── modules
│ │ │ ├── altbuy.lua
│ │ │ ├── archaeology.lua
│ │ │ ├── autogreed.lua
│ │ │ ├── autoquest.lua
│ │ │ ├── coords.lua
│ │ │ ├── coords.xml
│ │ │ ├── dressroom.lua
│ │ │ ├── durability.lua
│ │ │ ├── errors.lua
│ │ │ ├── fonts.lua
│ │ │ ├── library.lua
│ │ │ ├── movetalkinghead.lua
│ │ │ ├── objectivetracker.lua
│ │ │ ├── orderhall.lua
│ │ │ ├── orderhall.xml
│ │ │ ├── questtracker.lua
│ │ │ ├── skins.lua
│ │ │ ├── spellid.lua
│ │ │ ├── vignette.lua
│ │ │ └── warning.lua
│ │ ├── nCore.toc
│ │ ├── nCore.xml
│ │ └── options.lua
│ ├── nMainbar
│ │ ├── Bindings.xml
│ │ ├── Libs
│ │ │ ├── CallbackHandler-1.0
│ │ │ │ ├── CallbackHandler-1.0.lua
│ │ │ │ └── CallbackHandler-1.0.xml
│ │ │ ├── LibActionButton-1.0-ElvUI
│ │ │ │ ├── LibActionButton-1.0.lua
│ │ │ │ ├── LibActionButton-1.0.xml
│ │ │ │ └── LibButtonGlow-1.0
│ │ │ │ │ └── LibButtonGlow-1.0.lua
│ │ │ └── LibStub
│ │ │ │ └── LibStub.lua
│ │ ├── config.lua
│ │ ├── media
│ │ │ ├── UI-ActionButton-Glow.blp
│ │ │ ├── font.ttf
│ │ │ ├── picomenu
│ │ │ │ ├── picomenuAchievement.blp
│ │ │ │ ├── picomenuHighlight.tga
│ │ │ │ ├── picomenuNormal.tga
│ │ │ │ └── picomenuTalents.blp
│ │ │ ├── textureBackground.tga
│ │ │ ├── textureChecked.tga
│ │ │ ├── textureHighlight.tga
│ │ │ ├── textureNormal.tga
│ │ │ ├── texturePushed.tga
│ │ │ └── textureShadow.tga
│ │ ├── modules
│ │ │ ├── ActionButtonSkin.lua
│ │ │ ├── Bags.lua
│ │ │ ├── FakeBottomRightBar.lua
│ │ │ ├── MoveableExtraBars.lua
│ │ │ ├── WatchBarCode.lua
│ │ │ ├── core.lua
│ │ │ ├── mouseover.lua
│ │ │ ├── picomenu.lua
│ │ │ └── slash.lua
│ │ ├── nMainbar.toc
│ │ └── nMainbar.xml
│ ├── nMinimap
│ │ ├── calendar.lua
│ │ ├── capture.lua
│ │ ├── clock.lua
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── difficulty.lua
│ │ ├── difficulty.xml
│ │ ├── media
│ │ │ └── texturePerformance.tga
│ │ ├── nMinimap.toc
│ │ ├── tab.lua
│ │ └── tab.xml
│ ├── nPower
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── media
│ │ │ ├── statusbarTexture.tga
│ │ │ ├── textureArrowAbove.tga
│ │ │ ├── textureArrowBelow.tga
│ │ │ └── textureGlow.tga
│ │ ├── nPower.toc
│ │ ├── nPower.xml
│ │ └── utils.lua
│ ├── nTooltip
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── health.lua
│ │ ├── media
│ │ │ ├── UI-PVP-Alliance.blp
│ │ │ ├── UI-PVP-FFA.blp
│ │ │ └── UI-PVP-Horde.blp
│ │ └── nTooltip.toc
│ ├── oUF_Neav
│ │ ├── arena.lua
│ │ ├── boss.lua
│ │ ├── castbar.lua
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── func
│ │ │ ├── aura.lua
│ │ │ ├── castbar.lua
│ │ │ ├── func.lua
│ │ │ └── tags.lua
│ │ ├── kill.lua
│ │ ├── media
│ │ │ ├── AdditionalPowerTexture.blp
│ │ │ ├── arenaFrameTexture.blp
│ │ │ ├── borderBackground.tga
│ │ │ ├── borderIcon.tga
│ │ │ ├── borderIndicator.tga
│ │ │ ├── borderTarget.tga
│ │ │ ├── borderTexture.tga
│ │ │ ├── customFrameTexture.blp
│ │ │ ├── customTargetTargetTexture.blp
│ │ │ ├── customTargetTargetTexture_2.blp
│ │ │ ├── customTargetTargetTexture_2_bak.blp
│ │ │ ├── fontNumber.ttf
│ │ │ ├── fontSmall.ttf
│ │ │ ├── fontThick.ttf
│ │ │ ├── fontVisitor.ttf
│ │ │ ├── nameBackground.tga
│ │ │ ├── portraitBackground.tga
│ │ │ ├── statusbarTexture.tga
│ │ │ └── textureGlow.tga
│ │ ├── modules
│ │ │ ├── oUF_ArenaElements
│ │ │ │ ├── CCIcon.lua
│ │ │ │ ├── PVPSpecIcon.lua
│ │ │ │ └── Trinkets.lua
│ │ │ ├── oUF_LootSpecIndicator
│ │ │ │ └── lootspecindicator.lua
│ │ │ ├── oUF_Smooth
│ │ │ │ └── oUF_Smooth.lua
│ │ │ ├── offline.lua
│ │ │ ├── petBattleIcon.lua
│ │ │ ├── portraittimers.lua
│ │ │ └── smartthreat.lua
│ │ ├── oUF_Neav.toc
│ │ └── oUF_Neav.xml
│ └── oUF_NeavRaid
│ │ ├── config.lua
│ │ ├── core.lua
│ │ ├── functions.lua
│ │ ├── localization.lua
│ │ ├── media
│ │ ├── borderIcon.tga
│ │ ├── borderIndicator.tga
│ │ ├── borderTarget.tga
│ │ ├── fontSmall.ttf
│ │ ├── fontThick.ttf
│ │ ├── fontVisitor.ttf
│ │ ├── statusbarTexture.tga
│ │ └── textureGlow.tga
│ │ ├── modules
│ │ ├── CallbackHandler-1.0
│ │ │ └── CallbackHandler-1.0.lua
│ │ ├── LibSharedMedia-3.0
│ │ │ ├── CHANGES.txt
│ │ │ ├── LibSharedMedia-3.0.lua
│ │ │ └── LibSharedMedia-3.0.toc
│ │ ├── LibStub
│ │ │ └── LibStub.lua
│ │ ├── oUF_AuraWatch
│ │ │ └── oUF_AuraWatch.lua
│ │ └── oUF_Freebgrid
│ │ │ ├── oUF_Freebgrid_Auras.lua
│ │ │ ├── oUF_Freebgrid_AurasList.lua
│ │ │ └── oUF_Freebgrid_AurasPriority.lua
│ │ ├── oUF_NeavRaid.toc
│ │ ├── oUF_NeavRaid.xml
│ │ ├── raidmanager.lua
│ │ └── tags.lua
├── DialogFrame
│ ├── UI-DialogBox-Border-White.tga
│ ├── UI-DialogBox-Border.blp
│ ├── UI-DialogBox-Border_OLD.blp
│ ├── UI-DialogBox-Corner.blp
│ ├── UI-DialogBox-Gold-Border.blp
│ ├── UI-DialogBox-Gold-Corner.blp
│ ├── UI-DialogBox-Gold-Header.blp
│ └── UI-DialogBox-Header.blp
├── PaperDollInfoFrame
│ └── UI-Character-Skills-Bar.blp
├── TargetingFrame
│ ├── UI-RaidTargetingIcons.blp
│ ├── UI-StatusBar.blp
│ ├── UI-TargetingFrame-BarFill.blp
│ └── UI-TargetingFrame-LevelBackground.blp
└── Tooltips
│ ├── Nameplate-Border.blp
│ ├── Nameplate-Glow.blp
│ └── UI-Tooltip-Border.blp
├── LICENSE
├── Makefile
└── README.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: lithammer
2 |
--------------------------------------------------------------------------------
/.github/workflows/lint.yml:
--------------------------------------------------------------------------------
1 | name: Lint
2 |
3 | on:
4 | pull_request:
5 | branches: [master]
6 |
7 | jobs:
8 | luacheck:
9 | runs-on: ubuntu-latest
10 |
11 | steps:
12 | - uses: actions/checkout@v2
13 | with:
14 | fetch-depth: 0
15 |
16 | - name: install luarocks
17 | run: sudo apt install --no-install-recommends luarocks
18 |
19 | - name: install luacheck
20 | run: sudo luarocks install luacheck
21 |
22 | - name: register problem matcher
23 | run: echo "::add-matcher::.github/workflows/problem_matchers/luacheck.json"
24 |
25 | - name: run luacheck
26 | run: luacheck --formatter=plain Interface/AddOns
27 |
--------------------------------------------------------------------------------
/.github/workflows/problem_matchers/luacheck.json:
--------------------------------------------------------------------------------
1 | {
2 | "problemMatcher": [
3 | {
4 | "owner": "luacheck",
5 | "pattern": [
6 | {
7 | "regexp": "^(.*):(\\d+):(\\d+): (.*)$",
8 | "file": 1,
9 | "line": 2,
10 | "column": 3,
11 | "message": 4
12 | }
13 | ]
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /Cache
2 | /Data
3 | /Errors
4 | /Interface/AddOns/Blizzard_*
5 | /Logs
6 | /Screenshots
7 | /Utils
8 | /WTF
9 |
10 | /.build.info
11 | /.flavor.info
12 | /.patch.result
13 |
14 | *.app
15 | *.exe
16 | *.db
17 | *.dll
18 | *.mfil
19 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "Interface/AddOns/oUF"]
2 | path = Interface/AddOns/oUF
3 | url = git@github.com:oUF-wow/oUF.git
4 | [submodule "Interface/AddOns/nPlates"]
5 | path = Interface/AddOns/nPlates
6 | url = git@github.com:Grimsbain/nPlates.git
7 | [submodule "Interface/AddOns/oUF_Neav/modules/oUF_MovableFrames"]
8 | path = Interface/AddOns/oUF_Neav/modules/oUF_MovableFrames
9 | url = git@github.com:oUF-wow/oUF_MovableFrames.git
10 |
--------------------------------------------------------------------------------
/Fonts/ARIALN.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Fonts/ARIALN.ttf
--------------------------------------------------------------------------------
/Fonts/FRIZQT__.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Fonts/FRIZQT__.ttf
--------------------------------------------------------------------------------
/Fonts/MORPHEUS.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Fonts/MORPHEUS.ttf
--------------------------------------------------------------------------------
/Fonts/SKURRI.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Fonts/SKURRI.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/!Beautycase/!Beautycase.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: !Beautycase
3 |
4 | core.lua
5 |
--------------------------------------------------------------------------------
/Interface/AddOns/!Beautycase/media/textureNormal.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/!Beautycase/media/textureNormal.tga
--------------------------------------------------------------------------------
/Interface/AddOns/!Beautycase/media/textureNormalGloss.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/!Beautycase/media/textureNormalGloss.tga
--------------------------------------------------------------------------------
/Interface/AddOns/!Beautycase/media/textureNormalWhite.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/!Beautycase/media/textureNormalWhite.tga
--------------------------------------------------------------------------------
/Interface/AddOns/!Beautycase/media/textureShadow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/!Beautycase/media/textureShadow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/!Colorz/!Colorz.lua:
--------------------------------------------------------------------------------
1 |
2 | -- Sets manabar color for default unit frames.
3 |
4 | local function CustomManaColor(manaBar)
5 | local powerType = UnitPowerType(manaBar.unit)
6 |
7 | if powerType == 0 then
8 | manaBar:SetStatusBarColor(0.0, 0.55, 1.0)
9 | end
10 | end
11 | hooksecurefunc("UnitFrameManaBar_UpdateType", CustomManaColor)
12 |
13 | -- Set faction colors for Repuation Frame and tracking bar.
14 |
15 | local TOOLTIP_FACTION_COLORS = {
16 | [1] = {r = 1, g = 0, b = 0},
17 | [2] = {r = 1, g = 0, b = 0},
18 | [3] = {r = 1, g = 1, b = 0},
19 | [4] = {r = 1, g = 1, b = 0},
20 | [5] = {r = 0, g = 1, b = 0},
21 | [6] = {r = 0, g = 1, b = 0},
22 | [7] = {r = 0, g = 1, b = 0},
23 | [8] = {r = 0, g = 1, b = 0},
24 | }
25 |
26 | local CUSTOM_FACTION_BAR_COLORS = {
27 | [1] = {r = 0.63, g = 0, b = 0},
28 | [2] = {r = 0.63, g = 0, b = 0},
29 | [3] = {r = 0.63, g = 0, b = 0},
30 | [4] = {r = 0.82, g = 0.67, b = 0},
31 | [5] = {r = 0.32, g = 0.67, b = 0},
32 | [6] = {r = 0.32, g = 0.67, b = 0},
33 | [7] = {r = 0.32, g = 0.67, b = 0},
34 | [8] = {r = 0, g = 0.75, b = 0.44},
35 | }
36 |
37 | hooksecurefunc("ReputationFrame_Update", function(showLFGPulse)
38 | local numFactions = GetNumFactions()
39 | local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame)
40 |
41 | for i=1, NUM_FACTIONS_DISPLAYED, 1 do
42 | local factionIndex = factionOffset + i
43 | local factionBar = _G["ReputationBar"..i.."ReputationBar"]
44 |
45 | if factionIndex <= numFactions then
46 | local _, _, standingID, _, _, _, _, _, _, _, _, _, _, factionID = GetFactionInfo(factionIndex)
47 |
48 | local colorIndex = standingID
49 |
50 | local friendID = GetFriendshipReputation(factionID)
51 |
52 | if friendID ~= nil then
53 | colorIndex = 5 -- always color friendships green
54 | end
55 |
56 | local color = CUSTOM_FACTION_BAR_COLORS[colorIndex]
57 | factionBar:SetStatusBarColor(color.r, color.g, color.b)
58 | end
59 | end
60 | end)
61 |
62 | hooksecurefunc(ReputationBarMixin, "Update", function(self)
63 | local _, reaction, _, _, _, factionID = GetWatchedFactionInfo()
64 | local colorIndex = reaction
65 | local friendshipID = GetFriendshipReputation(factionID)
66 |
67 | if friendshipID then
68 | colorIndex = 5 -- always color friendships green
69 | end
70 |
71 | local color = CUSTOM_FACTION_BAR_COLORS[colorIndex]
72 | self:SetBarColor(color.r, color.g, color.b, 1)
73 | end)
74 |
75 | -- Override the default GameTooltip_UnitColor function.
76 |
77 | function GameTooltip_UnitColor(unit) -- luacheck: ignore
78 | local r, g, b
79 |
80 | if UnitIsDead(unit) or UnitIsGhost(unit) or UnitIsTapDenied(unit) then
81 | r = 0.5
82 | g = 0.5
83 | b = 0.5
84 | elseif UnitIsPlayer(unit) then
85 | local _, class = UnitClass(unit)
86 | if class then
87 | r = RAID_CLASS_COLORS[class].r
88 | g = RAID_CLASS_COLORS[class].g
89 | b = RAID_CLASS_COLORS[class].b
90 | else
91 | if UnitIsFriend(unit, "player") then
92 | r = 0.60
93 | g = 0.60
94 | b = 0.60
95 | else
96 | r = 1
97 | g = 0
98 | b = 0
99 | end
100 | end
101 | elseif UnitPlayerControlled(unit) then
102 | if UnitCanAttack(unit, "player") then
103 | if not UnitCanAttack("player", unit) then
104 | r = 157/255
105 | g = 197/255
106 | b = 255/255
107 | else
108 | r = 1
109 | g = 0
110 | b = 0
111 | end
112 | elseif UnitCanAttack("player", unit) then
113 | r = 1
114 | g = 1
115 | b = 0
116 | elseif UnitIsPVP(unit) then
117 | r = 0
118 | g = 1
119 | b = 0
120 | else
121 | r = 157/255
122 | g = 197/255
123 | b = 255/255
124 | end
125 | else
126 | local reaction = UnitReaction(unit, "player")
127 |
128 | if reaction then
129 | r = TOOLTIP_FACTION_COLORS[reaction].r
130 | g = TOOLTIP_FACTION_COLORS[reaction].g
131 | b = TOOLTIP_FACTION_COLORS[reaction].b
132 | else
133 | r = 157/255
134 | g = 197/255
135 | b = 255/255
136 | end
137 | end
138 |
139 | return r, g, b
140 | end
141 |
142 | -- Override the name background on default unit frames.
143 |
144 | hooksecurefunc("TargetFrame_CheckFaction", function(self)
145 | if UnitPlayerControlled(self.unit) then
146 | self.nameBackground:SetVertexColor(GameTooltip_UnitColor(self.unit))
147 | end
148 | end)
149 |
--------------------------------------------------------------------------------
/Interface/AddOns/!Colorz/!Colorz.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: !Colorz
3 | ## Notes: Custom colors
4 |
5 | !Colorz.lua
6 |
--------------------------------------------------------------------------------
/Interface/AddOns/evl_RaidStatus/README.textile:
--------------------------------------------------------------------------------
1 | Modular text-based raid status monitor.
2 |
3 | !http://i10.tinypic.com/6fajod2.jpg!
4 |
5 | h2. Customization
6 |
7 | AddWatch accepts a name and a callback parameter which is fed with the unit id of a raider, a simple watch can be added as follows:
8 |
9 |
addon:AddWatch("Dead", function(unit) return UnitIsDeadOrGhost(unit) end)
10 |
11 | You can add much more complex callbacks:
12 |
13 | local healerClasses = {"PRIEST", "SHAMAN", "DRUID", "PALADIN"}
14 | local lowManaThreshold = 0.2
15 |
16 | addon:AddWatch("Low Healer Mana", function(unit)
17 | local class, classId = UnitClass(unit)
18 |
19 | -- We only want to include healer classes
20 | if healerClasses[classId] and UnitPowerType(unit) == 0 then
21 | return (UnitMana(unit) / UnitMaxMana(unit) <= lowManaThreshold)
22 | end
23 | end)
24 |
25 |
--------------------------------------------------------------------------------
/Interface/AddOns/evl_RaidStatus/evl_RaidStatus.lua:
--------------------------------------------------------------------------------
1 | local _, addon = ...
2 | local frame = CreateFrame("Button", nil, UIParent)
3 | local watches = {}
4 |
5 | local text = frame:CreateFontString(nil, "ARTWORK")
6 | text:SetFontObject(GameFontHighlightSmall)
7 | text:SetPoint("TOPLEFT", frame)
8 |
9 | local memberSortCompare = function(a, b)
10 | return ((a.color.r + a.color.g + a.color.b) .. a.name) < ((b.color.r + b.color.g + b.color.b) .. b.name)
11 | end
12 |
13 | local lastUpdate = 0
14 | local result = nil
15 | local onUpdate = function(self, elapsed)
16 | lastUpdate = lastUpdate + elapsed
17 |
18 | if lastUpdate > 1 then
19 | lastUpdate = 0
20 | result = nil
21 |
22 | if GetNumGroupMembers() > 0 then
23 | for name, callback in pairs(watches) do
24 | local count = 0
25 |
26 | for i = 1, GetNumGroupMembers() do
27 | local unit = "raid" .. i
28 |
29 | if UnitExists(unit) and callback(unit) then
30 | count = count + 1
31 | end
32 | end
33 |
34 | if count > 0 then
35 | result = (result and result .. ", " or "") .. name .. ": " .. count
36 | end
37 | end
38 | end
39 |
40 | if result then
41 | text:SetText(result)
42 | text:Show()
43 |
44 | frame:SetWidth(text:GetWidth())
45 | else
46 | text:Hide()
47 | end
48 | end
49 | end
50 |
51 | local matches, classId
52 | local onEnter = function()
53 | GameTooltip:SetOwner(frame, "ANCHOR_BOTTOMLEFT")
54 |
55 | for name, callback in pairs(watches) do
56 | matches = {}
57 |
58 | for i = 1, GetNumGroupMembers() do
59 | local unit = "raid" .. i
60 |
61 | if UnitExists(unit) and callback(unit) then
62 | _, classId = UnitClass(unit)
63 |
64 | -- TODO: Make sure classId is available at this time
65 | table.insert(matches, {name = UnitName(unit), color = RAID_CLASS_COLORS[classId]})
66 | end
67 | end
68 |
69 | if next(matches) then
70 | if GameTooltip:NumLines() > 0 then
71 | GameTooltip:AddLine(" ")
72 | end
73 |
74 | GameTooltip:AddLine(name .. ":", 1, 1, 1)
75 |
76 | table.sort(matches, memberSortCompare)
77 |
78 | for _, match in pairs(matches) do
79 | GameTooltip:AddLine(match.name, match.color.r, match.color.g, match.color.b)
80 | end
81 | end
82 | end
83 |
84 | GameTooltip:Show()
85 | end
86 |
87 | function addon:AddWatch(name, callback)
88 | watches[name] = callback
89 | end
90 |
91 | frame:SetPoint("TOPLEFT", UIParent, "TOPLEFT", 3, -3)
92 | frame:SetHeight(16)
93 |
94 | frame:SetScript("OnUpdate", onUpdate)
95 | frame:SetScript("OnEnter", onEnter)
96 | frame:SetScript("OnLeave", function() GameTooltip:Hide() end)
97 |
--------------------------------------------------------------------------------
/Interface/AddOns/evl_RaidStatus/evl_RaidStatus.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: Evl's Raid Status
3 | ## Author: Evl
4 |
5 | evl_RaidStatus.lua
6 |
7 | watches.lua
8 |
--------------------------------------------------------------------------------
/Interface/AddOns/evl_RaidStatus/watches.lua:
--------------------------------------------------------------------------------
1 | local _, addon = ...
2 |
3 | addon:AddWatch("Members", function(unit) return not IsInInstance() and UnitIsConnected(unit) end)
4 | addon:AddWatch("Dead", function(unit) return UnitIsDeadOrGhost(unit) end)
5 | addon:AddWatch("Offline", function(unit) return not UnitIsConnected(unit) end)
6 | addon:AddWatch("AFK", function(unit) return UnitIsAFK(unit) end)
7 |
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/config.lua:
--------------------------------------------------------------------------------
1 | local _, nBuff = ...
2 |
3 | nBuff.Config = {
4 | buffSize = 36,
5 | buffScale = 1,
6 | buffBorderColor = {1, 1, 1},
7 |
8 | buffFontSize = 14,
9 | buffCountSize = 16,
10 |
11 | borderBuff = "Interface\\AddOns\\nBuff\\media\\textureOverlay",
12 | borderDebuff = "Interface\\AddOns\\nBuff\\media\\textureDebuff",
13 |
14 | debuffSize = 36,
15 | debuffScale = 1,
16 |
17 | debuffFontSize = 14,
18 | debuffCountSize = 16,
19 |
20 | paddingX = 7,
21 | paddingY = 7,
22 | buffPerRow = 8,
23 |
24 | durationFont = STANDARD_TEXT_FONT,
25 | countFont = STANDARD_TEXT_FONT,
26 | }
27 |
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/media/fontAtari.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nBuff/media/fontAtari.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/media/textureDebuff.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nBuff/media/textureDebuff.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/media/textureOverlay.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nBuff/media/textureOverlay.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/media/textureShadow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nBuff/media/textureShadow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nBuff/nBuff.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rBuff
3 |
4 | config.lua
5 | core.lua
6 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/config.lua:
--------------------------------------------------------------------------------
1 | local _, nChat = ...
2 |
3 | nChat.Config = {
4 | alwaysAlertOnWhisper = true,
5 |
6 | disableFade = false,
7 | chatOutline = false,
8 |
9 | enableChatWindowBorder = false,
10 |
11 | enableVoiceChatButtons = false,
12 | enableQuickJoinButton = true,
13 | enableHyperlinkTooltip = false,
14 | enableBorderColoring = true,
15 |
16 | showInputBoxAbove = true, -- Show the chat input box above the chat window
17 | ignoreArrows = false, -- Ignore the arrow keys when typing in the input box unless alt is pressed
18 |
19 | tab = {
20 | fontSize = 15,
21 | fontOutline = true,
22 | normalColor = {1, 1, 1},
23 | specialColor = {1, 0, 1},
24 | selectedColor = {0, 0.75, 1},
25 | },
26 | }
27 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/copy.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nChat = ...
3 | local cfg = nChat.Config
4 |
5 | local concat = table.concat
6 |
7 | local chatWidth, chatHeight = ChatFrame1:GetSize()
8 | local container = CreateFrame("Frame", nil, UIParent, "BackdropTemplate")
9 | container:SetSize(chatWidth, chatHeight)
10 | container:SetFrameStrata("DIALOG")
11 | container:CreateBeautyBorder(12)
12 | container:SetBackdrop({
13 | bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background",
14 | edgeSize = 16,
15 | tile = true, tileSize = 16,
16 | insets = { left = 3, right = 3, top = 3, bottom = 3 }
17 | })
18 | container:SetBackdropColor(0, 0, 0)
19 | container:Hide()
20 |
21 | local title = container:CreateFontString(nil, "OVERLAY")
22 | title:SetPoint("TOPLEFT", 8, -8)
23 | title:SetFont(STANDARD_TEXT_FONT, 18)
24 | title:SetTextColor(1, 1, 0)
25 | title:SetShadowOffset(1, -1)
26 | title:SetJustifyH("LEFT")
27 |
28 | local closeButton = CreateFrame("Button", nil, container, "UIPanelCloseButton")
29 | closeButton:SetPoint("TOPRIGHT", 0, -1)
30 |
31 | local copyBox = CreateFrame("EditBox", nil, container)
32 | copyBox:SetSize(chatWidth - 38, chatHeight - 38) -- a ScrollFrame's child needs to have its size set explicitly
33 | copyBox:SetMultiLine(true)
34 | copyBox:SetAutoFocus(false)
35 | copyBox:SetScript("OnEscapePressed", function()
36 | container:Hide()
37 | end)
38 |
39 | local scroll = CreateFrame("ScrollFrame", nil, container, "UIPanelScrollFrameTemplate")
40 | scroll:SetPoint("TOPLEFT", 8, -30)
41 | scroll:SetPoint("BOTTOMRIGHT", -30, 8)
42 | scroll:SetScrollChild(copyBox)
43 |
44 | scroll.ScrollBar:SetScript("OnMinMaxChanged", function(self, _, max)
45 | -- need to use a timer here, because the values take time to update
46 | C_Timer.After(2, function() self:SetValue(max) end)
47 | end)
48 |
49 | local function GetChatLines(chat)
50 | local lines = {}
51 | for message = 1, chat:GetNumMessages() do
52 | lines[message] = chat:GetMessageInfo(message)
53 | end
54 |
55 | return lines
56 | end
57 |
58 | local function CopyChat(chat)
59 | ToggleFrame(container)
60 |
61 | if container:IsShown() then
62 | if cfg.showInputBoxAbove then
63 | local editBox = _G[chat:GetName().."EditBox"]
64 | container:SetPoint("BOTTOMLEFT", editBox, "TOPLEFT", 3, 10)
65 | container:SetPoint("BOTTOMRIGHT", editBox, "TOPRIGHT", -3, 10)
66 | else
67 | local tabHeight = _G[chat:GetName().."Tab"]:GetHeight()
68 | container:SetPoint("BOTTOMLEFT", chat, "TOPLEFT", 0, tabHeight + 10)
69 | container:SetPoint("BOTTOMRIGHT", chat, "TOPRIGHT", 0, tabHeight + 10)
70 | end
71 |
72 | local width, height = container:GetSize()
73 | copyBox:SetSize(width - 38, height - 38)
74 | scroll:UpdateScrollChildRect()
75 |
76 | title:SetText(chat.name)
77 |
78 | local f1, f2, f3 = chat:GetFont()
79 | copyBox:SetFont(f1, f2, f3)
80 |
81 | local lines = GetChatLines(chat)
82 | local text = concat(lines, "\n")
83 | copyBox:SetMaxLetters(#lines * 255 + #lines)
84 | copyBox:SetText(text)
85 | end
86 | end
87 |
88 | local function CreateCopyButton(self)
89 | self.Copy = CreateFrame("Button", nil, self)
90 | self.Copy:SetSize(20, 20)
91 | self.Copy:SetPoint("TOPRIGHT", self, -5, -5)
92 |
93 | self.Copy:SetNormalTexture("Interface\\AddOns\\nChat\\media\\textureCopyNormal")
94 | self.Copy:GetNormalTexture():SetSize(20, 20)
95 |
96 | self.Copy:SetHighlightTexture("Interface\\AddOns\\nChat\\media\\textureCopyHighlight")
97 | self.Copy:GetHighlightTexture():SetAllPoints(self.Copy:GetNormalTexture())
98 |
99 | local tab = _G[self:GetName().."Tab"]
100 | hooksecurefunc(tab, "SetAlpha", function()
101 | self.Copy:SetAlpha(tab:GetAlpha()*0.55)
102 | end)
103 |
104 | self.Copy:SetScript("OnMouseDown", function(self)
105 | self:GetNormalTexture():ClearAllPoints()
106 | self:GetNormalTexture():SetPoint("CENTER", 1, -1)
107 | end)
108 |
109 | self.Copy:SetScript("OnMouseUp", function()
110 | self.Copy:GetNormalTexture():ClearAllPoints()
111 | self.Copy:GetNormalTexture():SetPoint("CENTER")
112 |
113 | if self.Copy:IsMouseOver() then
114 | CopyChat(self)
115 | end
116 | end)
117 | end
118 |
119 | local function EnableCopyButton()
120 | for _, v in pairs(CHAT_FRAMES) do
121 | local chat = _G[v]
122 | if chat and not chat.Copy then
123 | CreateCopyButton(chat)
124 | end
125 | end
126 | end
127 | hooksecurefunc("FCF_OpenTemporaryWindow", EnableCopyButton)
128 | EnableCopyButton()
129 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/hyperlink.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nChat = ...
3 | local cfg = nChat.Config
4 |
5 | -- Mouseover Itemlinks in the chat
6 | -- Code provided by the Tukui crew (Tukui.org)
7 |
8 | if not cfg.enableHyperlinkTooltip then
9 | return
10 | end
11 |
12 | local orig1, orig2 = {}, {}
13 | local GameTooltip = GameTooltip
14 |
15 | local linktypes = {
16 | item = true,
17 | enchant = true,
18 | spell = true,
19 | quest = true,
20 | unit = true,
21 | talent = true,
22 | achievement = true,
23 | glyph = true
24 | }
25 |
26 | local function OnHyperlinkEnter(frame, link, ...)
27 | local linktype = link:match("^([^:]+)")
28 | if linktype and linktypes[linktype] then
29 | GameTooltip:SetOwner(ChatFrame1, "ANCHOR_CURSOR", 0, 20)
30 | GameTooltip:SetHyperlink(link)
31 | GameTooltip:Show()
32 | else
33 | GameTooltip:Hide()
34 | end
35 |
36 | if orig1[frame] then
37 | return orig1[frame](frame, link, ...)
38 | end
39 | end
40 |
41 | local function OnHyperlinkLeave(frame, ...)
42 | GameTooltip:Hide()
43 |
44 | if orig2[frame] then
45 | return orig2[frame](frame, ...)
46 | end
47 | end
48 |
49 | local function EnableItemLinkTooltip()
50 | for _, v in pairs(CHAT_FRAMES) do
51 | local chat = _G[v]
52 | if chat and not chat.URLCopy then
53 | orig1[chat] = chat:GetScript("OnHyperlinkEnter")
54 | chat:SetScript("OnHyperlinkEnter", OnHyperlinkEnter)
55 |
56 | orig2[chat] = chat:GetScript("OnHyperlinkLeave")
57 | chat:SetScript("OnHyperlinkLeave", OnHyperlinkLeave)
58 | chat.URLCopy = true
59 | end
60 | end
61 | end
62 | hooksecurefunc("FCF_OpenTemporaryWindow", EnableItemLinkTooltip)
63 | EnableItemLinkTooltip()
64 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/invite.lua:
--------------------------------------------------------------------------------
1 | local sub = string.sub
2 | local match = string.match
3 |
4 | StaticPopupDialogs["NCHAT_ALTCLICK"] = {
5 | text = ERR_INVITE_PLAYER_S,
6 | button1 = INVITE,
7 | button2 = CANCEL,
8 | OnAccept = function(self)
9 | C_PartyInfo.InviteUnit(self.data)
10 | end,
11 | timeout = 0,
12 | whileDead = true,
13 | hideOnEscape = true,
14 | enterClicksFirstButton = true,
15 | preferredIndex = 3,
16 | }
17 |
18 | hooksecurefunc("SetItemRef", function(link, text, button, chatFrame)
19 | local linkType = sub(link, 1, 6)
20 | if IsAltKeyDown() and linkType == "player" then
21 | for i = 1, NUM_CHAT_WINDOWS do
22 | local editBox = _G['ChatFrame'..i..'EditBox']
23 | editBox:Hide()
24 | end
25 | local name = match(link, "player:([^:]+)")
26 | StaticPopup_Show("NCHAT_ALTCLICK", name, nil, name)
27 | end
28 | end)
29 |
30 | local eventWatcher = CreateFrame("Frame")
31 | eventWatcher:RegisterEvent("ADDON_LOADED")
32 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/media/textureCopyHighlight.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nChat/media/textureCopyHighlight.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/media/textureCopyNormal.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nChat/media/textureCopyNormal.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/nChat.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rChat
3 | ## RequiredDeps: !Beautycase
4 |
5 | config.lua
6 | core.lua
7 | copy.lua
8 | hyperlink.lua
9 | urlcopy.lua
10 | whisper.lua
11 | invite.lua
12 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/urlcopy.lua:
--------------------------------------------------------------------------------
1 | local find = string.find
2 | local gsub = string.gsub
3 |
4 | local found = false
5 |
6 | local function ColorURL(text, url)
7 | found = true
8 | return " |H".."url"..":"..tostring(url).."|h".."|cff0099FF["..tostring(url).."]|h|r "
9 | end
10 |
11 | local function ScanURL(frame, text, ...)
12 | found = false
13 |
14 | if find(text:upper(), "%pTINTERFACE%p+") then
15 | found = true
16 | end
17 |
18 | -- 192.168.2.1:1234
19 | if not found then
20 | text = gsub(text, "(%s?)(%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?:%d%d?%d?%d?%d?)(%s?)", ColorURL)
21 | end
22 | -- 192.168.2.1
23 | if not found then
24 | text = gsub(text, "(%s?)(%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?)(%s?)", ColorURL)
25 | end
26 | -- www.url.com:3333
27 | if not found then
28 | text = gsub(text, "(%s?)([%w_-]+%.?[%w_-]+%.[%w_-]+:%d%d%d?%d?%d?)(%s?)", ColorURL)
29 | end
30 | -- http://www.google.com
31 | if not found then
32 | text = gsub(text, "(%s?)(%a+://[%w_/%.%?%%=~&-\"%-]+)(%s?)", ColorURL)
33 | end
34 | -- www.google.com
35 | if not found then
36 | text = gsub(text, "(%s?)(www%.[%w_/%.%?%%=~&-\"%-]+)(%s?)", ColorURL)
37 | end
38 | -- url@domain.com
39 | if not found then
40 | text = gsub(text, "(%s?)([_%w-%.~-]+@[_%w-]+%.[_%w-%.]+)(%s?)", ColorURL)
41 | end
42 |
43 | frame.add(frame, text,...)
44 | end
45 |
46 | local function EnableURLCopy()
47 | for _, v in pairs(CHAT_FRAMES) do
48 | local chat = _G[v]
49 | if chat and not chat.hasURLCopy and chat ~= "ChatFrame2" then
50 | chat.add = chat.AddMessage
51 | chat.AddMessage = ScanURL
52 | chat.hasURLCopy = true
53 | end
54 | end
55 | end
56 | hooksecurefunc("FCF_OpenTemporaryWindow", EnableURLCopy)
57 |
58 | local _ChatFrame_OnHyperlinkShow = ChatFrame_OnHyperlinkShow
59 | function ChatFrame_OnHyperlinkShow(self, link, text, button) -- luacheck: ignore
60 | local type, value = link:match("(%a+):(.+)")
61 | if type == "url" then
62 | local editBox = _G[self:GetName().."EditBox"]
63 | if editBox then
64 | editBox:Show()
65 | editBox:SetText(value)
66 | editBox:SetFocus()
67 | editBox:HighlightText()
68 | end
69 | else
70 | _ChatFrame_OnHyperlinkShow(self, link, text, button)
71 | end
72 | end
73 |
74 | EnableURLCopy()
75 |
--------------------------------------------------------------------------------
/Interface/AddOns/nChat/whisper.lua:
--------------------------------------------------------------------------------
1 | local gsub = string.gsub
2 |
3 | for i = 1, NUM_CHAT_WINDOWS do
4 | local editBox = _G["ChatFrame"..i.."EditBox"]
5 |
6 | editBox:HookScript("OnTextChanged", function(self)
7 | local text = self:GetText()
8 | if UnitExists("target") and UnitIsPlayer("target") and UnitIsFriend("player", "target") then
9 | if text:len() < 5 then
10 | if text:sub(1, 4) == "/tt " then
11 | local unitname, realm = UnitName("target")
12 |
13 | if unitname then
14 | unitname = gsub(unitname, " ", "")
15 | end
16 |
17 | if unitname and not UnitIsSameServer("player", "target") then
18 | unitname = unitname.."-"..gsub(realm, " ", "")
19 | end
20 |
21 | ChatFrame_SendTell((unitname or SPELL_FAILED_BAD_TARGETS), ChatFrame1)
22 | end
23 | end
24 | end
25 | end)
26 | end
27 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/core.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore_OnLoad(self)
4 | self:RegisterEvent("PLAYER_LOGIN")
5 | self:RegisterEvent("ADDON_LOADED")
6 |
7 | if AddonList then
8 | _G["ADDON_DEMAND_LOADED"] = "On Demand"
9 | end
10 |
11 | if MerchantFrame then
12 | _G["MerchantRepairText"]:SetText("")
13 | end
14 | end
15 |
16 | function nCore_OnEvent(self, event, ...)
17 | if event == "PLAYER_LOGIN" then
18 | SetCVar("ScreenshotQuality", 10)
19 | elseif event == "ADDON_LOADED" then
20 | local name = ...
21 | if name == "nCore" then
22 | nCore:SetDefaultOptions()
23 | nCore:AltBuy()
24 | nCore:ArchaeologyHelper()
25 | nCore:AutoGreed()
26 | nCore:AutoQuest()
27 | nCore:Dressroom()
28 | nCore:Durability()
29 | nCore:ErrorFilter()
30 | nCore:Fonts()
31 | nCore:MapCoords()
32 | nCore:MoveTalkingHeads()
33 | nCore:QuestTracker()
34 | nCore:ObjectiveTracker()
35 | nCore:Skins()
36 | nCore:SpellID()
37 | nCore:VignetteAlert()
38 | end
39 | end
40 | end
41 |
42 | SlashCmdList["RELOADUI"] = function()
43 | ReloadUI()
44 | end
45 | SLASH_RELOADUI1 = "/rl"
46 |
47 | SlashCmdList["ACTIONCAM"] = function(msg)
48 | if msg == "basic" or msg == "full" or msg == "off" then
49 | ConsoleExec("actioncam "..msg)
50 | else
51 | print("ActionCam Options: basic, full, off")
52 | end
53 | end
54 | SLASH_ACTIONCAM1 = "/actioncam"
55 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/functions.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:RegisterDefaultSetting(key, value)
4 | if nCoreDB == nil then
5 | nCoreDB = {}
6 | end
7 | if nCoreDB[key] == nil then
8 | nCoreDB[key] = value
9 | end
10 | end
11 |
12 | function nCore:SetDefaultOptions()
13 | nCore:RegisterDefaultSetting("AltBuy", true)
14 | nCore:RegisterDefaultSetting("ArchaeologyHelper", true)
15 | nCore:RegisterDefaultSetting("AutoGreed", true)
16 | nCore:RegisterDefaultSetting("AutoQuest", true)
17 | nCore:RegisterDefaultSetting("Dressroom", true)
18 | nCore:RegisterDefaultSetting("Durability", true)
19 | nCore:RegisterDefaultSetting("ErrorFilter", true)
20 | nCore:RegisterDefaultSetting("Fonts", true)
21 | nCore:RegisterDefaultSetting("ObjectiveTracker", true)
22 | nCore:RegisterDefaultSetting("MapCoords", true)
23 | nCore:RegisterDefaultSetting("MoveTalkingHeads", true)
24 | nCore:RegisterDefaultSetting("QuestTracker", true)
25 | nCore:RegisterDefaultSetting("Skins", true)
26 | nCore:RegisterDefaultSetting("SpellID", true)
27 | nCore:RegisterDefaultSetting("VignetteAlert", true)
28 | end
29 |
30 | function nCore:LockInCombat(frame)
31 | frame:SetScript("OnUpdate", function(self)
32 | if not InCombatLockdown() then
33 | self:Enable()
34 | else
35 | self:Disable()
36 | end
37 | end)
38 | end
39 |
40 | function nCore:RegisterControl(control, parentFrame)
41 | if ( ( not parentFrame ) or ( not control ) ) then
42 | return;
43 | end
44 |
45 | parentFrame.controls = parentFrame.controls or {};
46 |
47 | tinsert(parentFrame.controls, control);
48 | end
49 |
50 | local prevControl
51 |
52 | function nCore:CreateLabel(cfg)
53 | --[[
54 | {
55 | type = "Label",
56 | name = "LabelName",
57 | parent = Options,
58 | label = L.LabelText,
59 | fontObject = "GameFontNormalLarge",
60 | relativeTo = LeftSide,
61 | relativePoint = "TOPLEFT",
62 | offsetX = 16,
63 | offsetY = -16,
64 | },
65 | --]]
66 | cfg.initialPoint = cfg.initialPoint or "TOPLEFT"
67 | cfg.relativePoint = cfg.relativePoint or "BOTTOMLEFT"
68 | cfg.offsetX = cfg.offsetX or 0
69 | cfg.offsetY = cfg.offsetY or -16
70 | cfg.relativeTo = cfg.relativeTo or prevControl
71 | cfg.fontObject = cfg.fontObject or "GameFontNormalLarge"
72 |
73 | local label = cfg.parent:CreateFontString(cfg.name, "ARTWORK", cfg.fontObject)
74 | label:SetPoint(cfg.initialPoint, cfg.relativeTo, cfg.relativePoint, cfg.offsetX, cfg.offsetY)
75 | label:SetText(cfg.label)
76 |
77 | prevControl = label
78 | return label
79 | end
80 |
81 | function nCore:CreateCheckBox(cfg)
82 | --[[
83 | {
84 | type = "CheckBox",
85 | name = "Test",
86 | parent = parent,
87 | label = L.TestLabel,
88 | tooltip = L.TestTooltip,
89 | isCvar = nil or True,
90 | var = "TestVar",
91 | needsRestart = nil or True,
92 | disableInCombat = nil or True,
93 | func = function(self)
94 | -- Do stuff here.
95 | end,
96 | initialPoint = "TOPLEFT",
97 | relativeTo = frame,
98 | relativePoint, "BOTTOMLEFT",
99 | offsetX = 0,
100 | offsetY = -6,
101 | },
102 | --]]
103 | cfg.initialPoint = cfg.initialPoint or "TOPLEFT"
104 | cfg.relativePoint = cfg.relativePoint or "BOTTOMLEFT"
105 | cfg.offsetX = cfg.offsetX or 0
106 | cfg.offsetY = cfg.offsetY or -6
107 | cfg.relativeTo = cfg.relativeTo or prevControl
108 |
109 | local checkBox = CreateFrame("CheckButton", cfg.name, cfg.parent, "InterfaceOptionsCheckButtonTemplate")
110 | checkBox:SetPoint(cfg.initialPoint, cfg.relativeTo, cfg.relativePoint, cfg.offsetX, cfg.offsetY)
111 | checkBox.Text:SetText(cfg.label)
112 | checkBox.GetValue = function(self) return checkBox:GetChecked() end
113 | checkBox.SetValue = function(self) checkBox:SetChecked(nCoreDB[cfg.var]) end
114 | checkBox.var = cfg.var
115 | checkBox.isCvar = cfg.isCvar
116 |
117 | if cfg.needsRestart then
118 | checkBox.restart = false
119 | end
120 |
121 | if cfg.tooltip then
122 | if cfg.needsRestart then
123 | cfg.tooltip = cfg.tooltip.." "..RED_FONT_COLOR:WrapTextInColorCode(REQUIRES_RELOAD)
124 | end
125 | checkBox.tooltipText = cfg.tooltip
126 | end
127 |
128 | if cfg.disableInCombat then
129 | nCore:LockInCombat(checkBox)
130 | end
131 |
132 | checkBox:SetScript("OnClick", function(self)
133 | local checked = self:GetChecked()
134 | PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
135 | checkBox.value = checked
136 | if cfg.needsRestart then
137 | checkBox.restart = not checkBox.restart
138 | end
139 | if cfg.func then
140 | cfg.func(self)
141 | end
142 | end)
143 |
144 | nCore:RegisterControl(checkBox, cfg.parent)
145 | prevControl = checkBox
146 | return checkBox
147 | end
148 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/localization.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | local L = {}
4 | nCore.L = L
5 |
6 | setmetatable(L, { __index = function(t, k)
7 | local v = tostring(k)
8 | t[k] = v
9 | return v
10 | end })
11 |
12 | ------------------------------------------------------------------------
13 | -- English
14 | ------------------------------------------------------------------------
15 |
16 | L.OptionsLabel = "Options"
17 | L.AltBuy = "Alt Buy"
18 | L.AltBuyTooltip = "Hold the alt key to buy a stack of an item."
19 | L.AltBuyVendorToolip = ""
20 | L.ArchaeologyHelper = "Archaeology Helper"
21 | L.ArchaeologyHelperTooltip = "Double right click to survey at digsites."
22 | L.AutoGreed = "Auto Greed"
23 | L.AutoGreedTooltip = "Automaticly role greed on green items at max level."
24 | L.AutoQuest = "Auto Quest"
25 | L.AutoQuestTooltip = "Hold shift to automaticly accept and turnin quests."
26 | L.CombatWarning = "nCore: This is not possible in combat!"
27 | L.Dressroom = "Dressroom Tweaks"
28 | L.DressroomTooltip = "Adds clothed and naked buttons to the dressroom frame."
29 | L.Durability = DURABILITY
30 | L.DurabilityTooltip = "Adds durability information to the character frame."
31 | L.ErrorFilter = "Error Filter"
32 | L.ErrorFilterTooltip = "Filter common error spam."
33 | L.Fonts = "Font Fix"
34 | L.FontsTooltip = "Modifies some default font objects."
35 | L.ObjectiveTracker = "Moveable Objective Tracker"
36 | L.ObjectiveTrackerTooltip = "Makes the objective tracker movable."
37 | L.ObjectiveTrackerButtonTooltip = "Shift + left-click to Drag"
38 | L.MapCoords = "Map Coords"
39 | L.MapCoordsTooltip = "Adds player and cursor location to the world map."
40 | L.MoveTalkingHeads = "Moveable Talking Heads"
41 | L.MoveTalkingHeadsTooltip = "Makes the talking heads frame movable. /alertframemover to unlock the frame."
42 | L.QuestTracker = "Quest Tracker"
43 | L.QuestTrackerTooltip = "Add current number of quests to the worldmap title text."
44 | L.Skins = "Skin Addons"
45 | L.SkinsTooltip = "Skin Omen, DBM, TinyDPS, Recount, Skada, and Numeration to closer match the Neav UI look."
46 | L.SpellID = "Spell IDs"
47 | L.SpellIDTooltip = "Add spell ids to the tooltip."
48 | L.VignetteAlert = "Vignette Alerts"
49 | L.VignetteAlertTooltip = "Alerts you when you detect a rare or chest."
50 |
51 | local CURRENT_LOCALE = GetLocale()
52 | if CURRENT_LOCALE == "enUS" then return end
53 |
54 | ------------------------------------------------------------------------
55 | -- German
56 | ------------------------------------------------------------------------
57 |
58 | if CURRENT_LOCALE == "deDE" then
59 |
60 | L.OptionsLabel = "Einstellungen"
61 | L.AltBuy = "Alt-Kaufen"
62 | L.AltBuyTooltip = "Die Alt-Taste gedrückt halten um einen Stapel von einem Gegenstand zu kaufen."
63 | L.AltBuyVendorToolip = ""
64 | L.ArchaeologyHelper = "Archäologie-Gehilfe"
65 | L.ArchaeologyHelperTooltip = "Doppelt rechtsklicken um Grabungsstätten zu untersuchen."
66 | L.AutoGreed = "Autom. Gier"
67 | L.AutoGreedTooltip = "Automatisch Gier bei grünen Gegenständen würfeln, wenn auf Höchststufe."
68 | L.AutoQuest = "Autom. Quests"
69 | L.AutoQuestTooltip = "Die Umschalttaste gedrückt halten um Quests automatisch anzunehmen und abzuschliessen."
70 | L.CombatWarning = "nCore: Das ist im Kampf nicht möglich!"
71 | L.Dressroom = "Anpassungen für die Anprobe"
72 | L.DressroomTooltip = "Fügt dem Anprobefester Buttons zum An- und Ausziehen hinzu."
73 | L.Durability = DURABILITY
74 | L.DurabilityTooltip = "Zeigt Haltbarkeitinformationen im Charakterfenster an."
75 | L.ErrorFilter = "Fehlerfilter"
76 | L.ErrorFilterTooltip = "Filtert oft vorkommende Fehlermeldungen aus."
77 | L.Fonts = "Schriftenreparatur"
78 | L.FontsTooltip = "Modifiziert manche der Standardschriften."
79 | L.ObjectiveTracker = "Verstellbares Fortschrittsfenster"
80 | L.ObjectiveTrackerTooltip = "Macht das Fortschrittsfenster verstellbar."
81 | L.ObjectiveTrackerButtonTooltip = "Umschalttaste + Linksklick zum Ziehen"
82 | L.MapCoords = "Kartenkoordinaten"
83 | L.MapCoordsTooltip = "Zeigt die Player- und die Kursorposition auf der Weltkarte an."
84 | L.MoveTalkingHeads = "Verstellbarer Talking Heads"
85 | L.MoveTalkingHeadsTooltip = "Macht das talking heads Fenster verstellbar. /alertframemover um das Fenster freizuschalten."
86 | L.QuestTracker = "Quest Tracker"
87 | L.QuestTrackerTooltip = "Zeigt die Anzahl angenommener Quests in der Titelleiste der Weltkarte an."
88 | L.Skins = "Addonsdarstellung"
89 | L.SkinsTooltip = "Das Aussehen von Omen, DBM, TinyDPS, Recount, Skada und Numeration anpassen, damit sie dem Aussehen von Neav UI ähneln."
90 | L.SpellID = "Zauber IDs"
91 | L.SpellIDTooltip = "Zauber IDs in Tooltips anzeigen."
92 | L.VignetteAlert = "Alarmierungen für Vignetten"
93 | L.VignetteAlertTooltip = "Löst ein Alarm aus, wenn seltene Kreaturen oder Truhen in der Nähe sind."
94 |
95 | return end
96 |
97 | ------------------------------------------------------------------------
98 | -- Spanish
99 | ------------------------------------------------------------------------
100 |
101 | if CURRENT_LOCALE == "esES" then
102 |
103 | L.AltBuyVendorToolip = ""
104 |
105 | return end
106 |
107 | ------------------------------------------------------------------------
108 | -- Latin American Spanish
109 | ------------------------------------------------------------------------
110 |
111 | if CURRENT_LOCALE == "esMX" then
112 |
113 | return end
114 |
115 | ------------------------------------------------------------------------
116 | -- French
117 | ------------------------------------------------------------------------
118 |
119 | if CURRENT_LOCALE == "frFR" then
120 |
121 | L.AltBuyVendorToolip = ""
122 |
123 | return end
124 |
125 | ------------------------------------------------------------------------
126 | -- Italian
127 | ------------------------------------------------------------------------
128 |
129 | if CURRENT_LOCALE == "itIT" then
130 |
131 | return end
132 |
133 | ------------------------------------------------------------------------
134 | -- Brazilian Portuguese
135 | ------------------------------------------------------------------------
136 |
137 | if CURRENT_LOCALE == "ptBR" then
138 |
139 | return end
140 |
141 | ------------------------------------------------------------------------
142 | -- Russian
143 | ------------------------------------------------------------------------
144 |
145 | if CURRENT_LOCALE == "ruRU" then
146 |
147 | return end
148 |
149 | ------------------------------------------------------------------------
150 | -- Korean
151 | ------------------------------------------------------------------------
152 |
153 | if CURRENT_LOCALE == "koKR" then
154 |
155 | return end
156 |
157 | ------------------------------------------------------------------------
158 | -- Simplified Chinese
159 | ------------------------------------------------------------------------
160 |
161 | if CURRENT_LOCALE == "zhCN" then
162 |
163 | return end
164 |
165 | ------------------------------------------------------------------------
166 | -- Traditional Chinese
167 | ------------------------------------------------------------------------
168 |
169 | if CURRENT_LOCALE == "zhTW" then
170 |
171 | return end
172 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/media/textureHighlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nCore/media/textureHighlight.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/media/textureNormal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nCore/media/textureNormal.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/media/texturePushed.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nCore/media/texturePushed.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/altbuy.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:AltBuy()
4 | local L = nCore.L
5 | local select = select
6 |
7 | local NEW_ITEM_VENDOR_STACK_BUY = ITEM_VENDOR_STACK_BUY
8 | ITEM_VENDOR_STACK_BUY = "|cffa9ff00"..NEW_ITEM_VENDOR_STACK_BUY.."|r" -- luacheck: ignore
9 |
10 | -- Alt-click to buy a stack.
11 |
12 | hooksecurefunc("MerchantItemButton_OnModifiedClick", function(self, ...)
13 | if not nCoreDB.AltBuy then return end
14 | if IsAltKeyDown() then
15 | local numAvailable = select(5, GetMerchantItemInfo(self:GetID()))
16 |
17 | -- -1 means an item has unlimited supply.
18 | if numAvailable ~= -1 then
19 | BuyMerchantItem(self:GetID(), numAvailable)
20 | else
21 | BuyMerchantItem(self:GetID(), GetMerchantItemMaxStack(self:GetID()))
22 | end
23 | end
24 | end)
25 |
26 | -- Add a hint to the tooltip.
27 |
28 | local function IsMerchantButtonOver()
29 | return GetMouseFocus():GetName() and GetMouseFocus():GetName():find("MerchantItem%d")
30 | end
31 |
32 | GameTooltip:HookScript("OnTooltipSetItem", function(self)
33 | if not nCoreDB.AltBuy then return end
34 | if MerchantFrame:IsShown() and IsMerchantButtonOver() then
35 | for i = 2, GameTooltip:NumLines() do
36 | local line = _G["GameTooltipTextLeft"..i]:GetText() or ""
37 | if line:find("<[sS]hift") then
38 | GameTooltip:AddLine("|cff00ffcc"..L.AltBuyVendorToolip.."|r")
39 | end
40 | end
41 | end
42 | end)
43 | end
44 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/archaeology.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:ArchaeologyHelper()
4 | local SURVEY_SPELL_ID = 80451
5 | local FISHING_POLE = GetItemSubClassInfo(2, 20)
6 |
7 | local override_binding_on = nil
8 | local previousClickTime = nil
9 | local regen_clear_override = nil
10 |
11 |
12 | local surveyButtonName = "nArch_EasySurveyButton"
13 | local surveyButton = CreateFrame("Button", surveyButtonName, UIParent, "SecureActionButtonTemplate")
14 | surveyButton:SetPoint("LEFT", UIParent, "RIGHT", 10000, 0)
15 | surveyButton:Hide()
16 | surveyButton:SetFrameStrata("LOW")
17 | surveyButton:EnableMouse(true)
18 | surveyButton:RegisterForClicks("RightButtonDown")
19 | surveyButton:SetAttribute("type", "spell")
20 | surveyButton:SetAttribute("spell", SURVEY_SPELL_ID)
21 | surveyButton:SetAttribute("action", nil)
22 |
23 | surveyButton:SetScript("PostClick", function(self, button, down)
24 | if override_binding_on and not nCore:IsTaintable() then
25 | ClearOverrideBindings(self)
26 | override_binding_on = nil
27 | else
28 | regen_clear_override = true
29 | end
30 | end)
31 |
32 | local watcher = CreateFrame("Frame", nil)
33 | watcher:RegisterEvent("PLAYER_REGEN_ENABLED")
34 |
35 | watcher:SetScript("OnEvent", function(self, event, ...)
36 | if event == "PLAYER_REGEN_ENABLED" then
37 | if regen_clear_override then
38 | ClearOverrideBindings(surveyButtonName)
39 | override_binding_on = nil
40 | regen_clear_override = nil
41 | end
42 | end
43 | end)
44 |
45 | WorldFrame:HookScript("OnMouseDown", function(frame, button, down)
46 | if button ~= "RightButton" or nCore:IsTaintable() or not nCoreDB.ArchaeologyHelper then return end
47 |
48 | local mapID = C_Map.GetBestMapForUnit("player")
49 |
50 | if not mapID then return end
51 |
52 | if ArchaeologyMapUpdateAll(mapID) > 0 and CanScanResearchSite() and GetSpellCooldown(SURVEY_SPELL_ID) == 0 and not IsEquippedItemType(FISHING_POLE) then
53 | if GetNumLootItems() == 0 and previousClickTime then
54 | local doubleClickTime = GetTime() - previousClickTime
55 |
56 | if doubleClickTime < 0.2 and doubleClickTime > 0.04 then
57 | previousClickTime = nil
58 |
59 | SetOverrideBindingClick(surveyButton, true, "BUTTON2", surveyButtonName)
60 | override_binding_on = true
61 | end
62 | end
63 |
64 | previousClickTime = GetTime()
65 | end
66 | end)
67 | end
68 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/autogreed.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:AutoGreed()
4 | -- Option to only auto-greed at max level.
5 | local maxLevelOnly = true
6 |
7 | -- Disenchant items when able.
8 | local disenchantItems = false
9 |
10 | -- A skip list for green stuff you might not wanna auto-greed on
11 | local skipList = {
12 | --["Stone Scarab"] = true,
13 | --["Silver Scarab"] = true,
14 | }
15 |
16 | local f = CreateFrame("Frame")
17 | f:RegisterEvent("START_LOOT_ROLL")
18 |
19 | f:SetScript("OnEvent", function(_, _, rollID)
20 | if not nCoreDB.AutoGreed then return end
21 | if maxLevelOnly and IsPlayerAtEffectiveMaxLevel() then
22 | local _, name, _, quality, BoP, _, _, canDisenchant = GetLootRollItemInfo(rollID)
23 | if quality == 2 and not BoP and not skipList[name] then
24 | RollOnLoot(rollID, (disenchantItems and canDisenchant and 3) or 2)
25 | end
26 | end
27 | end)
28 | end
29 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/coords.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:MapCoords()
4 | local unpack = unpack
5 |
6 | local cfg = {
7 | location = {"BOTTOMLEFT", WorldMapFrame, "BOTTOMLEFT", 10, 0},
8 | }
9 |
10 | local mapRects = {}
11 | local tempVec2D = CreateVector2D(0, 0)
12 | local function GetPlayerMapPos(mapID)
13 | tempVec2D.x, tempVec2D.y = UnitPosition("player")
14 | if not tempVec2D.x then return end
15 |
16 | local mapRect = mapRects[mapID]
17 | if not mapRect then
18 | local pos1 = select(2, C_Map.GetWorldPosFromMapPos(mapID, CreateVector2D(0, 0)))
19 | local pos2 = select(2, C_Map.GetWorldPosFromMapPos(mapID, CreateVector2D(1, 1)))
20 | if not pos1 or not pos2 then return end
21 | mapRect = {pos1, pos2}
22 | mapRect[2]:Subtract(mapRect[1])
23 |
24 | mapRects[mapID] = mapRect
25 | end
26 | tempVec2D:Subtract(mapRect[1])
27 |
28 | return tempVec2D.y/mapRect[2].y, tempVec2D.x/mapRect[2].x
29 | end
30 |
31 | local nCore_CoordsFrame = CreateFrame("Frame", "nCore_Coords", WorldMapFrame, "nCore_Coords")
32 |
33 | nCore_CoordsFrame:SetScript("OnLoad", function(self)
34 | self:RegisterEvent("PLAYER_ENTERING_WORLD")
35 | self:SetPoint(unpack(cfg.location))
36 | end)
37 |
38 | nCore_CoordsFrame:SetScript("OnUpdate", function(self, elapsed)
39 | if IsInInstance() or not nCoreDB.MapCoords then
40 | self.Mouse.Text:SetText("")
41 | self.Player.Text:SetText("")
42 | return
43 | end
44 |
45 | local mapID = C_Map.GetBestMapForUnit("player")
46 | local px, py = GetPlayerMapPos(mapID)
47 |
48 | if px then
49 | if px ~= 0 and py ~= 0 then
50 | self.Player.Text:SetFormattedText("%s: %.1f x %.1f", PLAYER, px * 100, py * 100)
51 | else
52 | self.Player.Text:SetText("")
53 | end
54 | end
55 |
56 | if WorldMapFrame.ScrollContainer:IsMouseOver() then
57 | local cx, cy = WorldMapFrame.ScrollContainer:GetNormalizedCursorPosition()
58 |
59 | if cx then
60 | if cx >= 0 and cy >= 0 and cx <= 1 and cy <= 1 then
61 | self.Mouse.Text:SetFormattedText("%s: %.1f x %.1f", MOUSE_LABEL, cx * 100, cy * 100)
62 | else
63 | self.Mouse.Text:SetText("")
64 | end
65 | end
66 | else
67 | self.Mouse.Text:SetText("")
68 | end
69 | end)
70 | end
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/coords.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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/dressroom.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:Dressroom()
4 | if not nCoreDB.Dressroom then return end
5 |
6 | DressUpFrameCancelButton:SetText("Undress")
7 | DressUpFrameCancelButton:SetScript("OnClick", function()
8 | DressUpFrame.ModelScene:GetPlayerActor():Undress()
9 | end)
10 | DressUpFrameResetButton:SetText("Dress")
11 | end
12 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/durability.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:Durability()
4 | if not nCoreDB.Durability then return end
5 |
6 | local select = select
7 | local unpack = unpack
8 | local modf = math.modf
9 | local format = string.format
10 |
11 | local gradientColor = {
12 | 1, 0, 0,
13 | 1, 1, 0,
14 | 0, 1, 0
15 | }
16 |
17 | local slotInfo = {
18 | [1] = {1, "Head"},
19 | [2] = {3, "Shoulder"},
20 | [3] = {5, "Chest"},
21 | [4] = {6, "Waist"},
22 | [5] = {9, "Wrist"},
23 | [6] = {10, "Hands"},
24 | [7] = {7, "Legs"},
25 | [8] = {8, "Feet"},
26 | [9] = {16, "MainHand"},
27 | [10] = {17, "SecondaryHand"},
28 | }
29 |
30 | local charString = CharacterLevelText
31 | charString:SetFont(STANDARD_TEXT_FONT, 14)
32 |
33 | local tab = CreateFrame("Button", "PaperDollFrameDurabilityTab", PaperDollSidebarTab1, "CharacterFrameTabButtonTemplate")
34 | tab:SetPoint("TOP", PaperDollFrame, "BOTTOM", 170, 2)
35 | tab:Disable()
36 | tab:EnableMouse(false)
37 | tab:SetFrameStrata("BACKGROUND")
38 |
39 | tab:RegisterEvent("PLAYER_ENTERING_WORLD")
40 | tab:RegisterEvent("UPDATE_INVENTORY_DURABILITY")
41 | tab:RegisterEvent("MERCHANT_SHOW")
42 |
43 | _G[tab:GetName().."LeftDisabled"]:SetTexture(nil)
44 | _G[tab:GetName().."RightDisabled"]:SetTexture(nil)
45 | _G[tab:GetName().."MiddleDisabled"]:SetTexture(nil)
46 |
47 | local function ColorGradient(perc, ...)
48 | if perc >= 1 then
49 | local r, g, b = select(select("#", ...) - 2, ...)
50 | return r, g, b
51 | elseif perc < 0 then
52 | local r, g, b = ... return r, g, b
53 | end
54 |
55 | local num = select("#", ...) / 3
56 |
57 | local segment, relperc = modf(perc*(num-1))
58 | local r1, g1, b1, r2, g2, b2 = select((segment*3)+1, ...)
59 |
60 | return r1 + (r2-r1)*relperc, g1 + (g2-g1)*relperc, b1 + (b2-b1)*relperc
61 | end
62 |
63 | tab:SetScript("OnEvent", function(event)
64 | local total = 1
65 | local overAll = 1
66 |
67 | for i = 1, #slotInfo do
68 | local curr, max = GetInventoryItemDurability(slotInfo[i][1])
69 | local itemSlot = _G["Character"..slotInfo[i][2].."Slot"]
70 |
71 | if curr and max and max ~= 0 then
72 | if not itemSlot.Text then
73 | itemSlot.Text = itemSlot:CreateFontString(nil, "OVERLAY")
74 | itemSlot.Text:SetFont(NumberFontNormal:GetFont(), 15, "OUTLINE")
75 | itemSlot.Text:SetPoint("BOTTOM", itemSlot, 0, 1)
76 | end
77 |
78 | if itemSlot.Text then
79 | local avg = curr/max
80 | local r, g, b = ColorGradient(avg, unpack(gradientColor))
81 |
82 | itemSlot.Text:SetTextColor(r, g, b)
83 | itemSlot.Text:SetText(format("%d%%", avg * 100))
84 |
85 | overAll = overAll + avg
86 | total = total + 1
87 | end
88 | else
89 | if itemSlot.Text then
90 | itemSlot.Text:SetText("")
91 | end
92 | end
93 |
94 | local r, g, b
95 | if overAll/total and overAll/total < 1 then
96 | r, g, b = ColorGradient(overAll/total, unpack(gradientColor))
97 | elseif overAll/total <= 0 then
98 | r, g, b = 1, 0, 0
99 | else
100 | r, g, b = 0, 1, 0
101 | end
102 |
103 | tab:SetText(format("|cff%02x%02x%02x%d%%|r", r*255, g*255, b*255, (overAll/total)*100).." "..DURABILITY)
104 | end
105 | end)
106 |
107 | tab:SetScript("OnShow", function(self)
108 | PanelTemplates_TabResize(self, 0)
109 | end)
110 | end
111 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/errors.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:ErrorFilter()
4 | UIErrorsFrame:UnregisterEvent("UI_ERROR_MESSAGE")
5 | UIErrorsFrame:SetTimeVisible(1)
6 | UIErrorsFrame:SetFadeDuration(0.75)
7 |
8 | local ignoreList = {
9 | [LE_GAME_ERR_ABILITY_COOLDOWN] = true,
10 | [LE_GAME_ERR_SPELL_COOLDOWN] = true,
11 | [LE_GAME_ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS] = true,
12 |
13 | [LE_GAME_ERR_OUT_OF_HOLY_POWER] = true,
14 | [LE_GAME_ERR_OUT_OF_POWER_DISPLAY] = true,
15 | [LE_GAME_ERR_OUT_OF_SOUL_SHARDS] = true,
16 | [LE_GAME_ERR_OUT_OF_FOCUS] = true,
17 | [LE_GAME_ERR_OUT_OF_COMBO_POINTS] = true,
18 | [LE_GAME_ERR_OUT_OF_CHI] = true,
19 | [LE_GAME_ERR_OUT_OF_PAIN] = true,
20 | [LE_GAME_ERR_OUT_OF_HEALTH] = true,
21 | [LE_GAME_ERR_OUT_OF_RAGE] = true,
22 | [LE_GAME_ERR_OUT_OF_ARCANE_CHARGES] = true,
23 | [LE_GAME_ERR_OUT_OF_RANGE] = true,
24 | [LE_GAME_ERR_OUT_OF_ENERGY] = true,
25 | [LE_GAME_ERR_OUT_OF_LUNAR_POWER] = true,
26 | [LE_GAME_ERR_OUT_OF_RUNIC_POWER] = true,
27 | [LE_GAME_ERR_OUT_OF_INSANITY] = true,
28 | [LE_GAME_ERR_OUT_OF_RUNES] = true,
29 | [LE_GAME_ERR_OUT_OF_FURY] = true,
30 | [LE_GAME_ERR_OUT_OF_MAELSTROM] = true,
31 |
32 | [LE_GAME_ERR_SPELL_FAILED_TOTEMS] = true,
33 | [LE_GAME_ERR_SPELL_FAILED_EQUIPPED_ITEM] = true,
34 | [LE_GAME_ERR_SPELL_ALREADY_KNOWN_S] = true,
35 | [LE_GAME_ERR_SPELL_FAILED_SHAPESHIFT_FORM_S] = true,
36 | [LE_GAME_ERR_SPELL_FAILED_ALREADY_AT_FULL_MANA] = true,
37 | [LE_GAME_ERR_OUT_OF_MANA] = true,
38 | [LE_GAME_ERR_SPELL_OUT_OF_RANGE] = true,
39 | [LE_GAME_ERR_SPELL_FAILED_S] = true,
40 | [LE_GAME_ERR_SPELL_FAILED_REAGENTS] = true,
41 | [LE_GAME_ERR_SPELL_FAILED_REAGENTS_GENERIC] = true,
42 | [LE_GAME_ERR_SPELL_FAILED_NOTUNSHEATHED] = true,
43 | [LE_GAME_ERR_SPELL_UNLEARNED_S] = true,
44 | [LE_GAME_ERR_SPELL_FAILED_EQUIPPED_SPECIFIC_ITEM] = true,
45 | [LE_GAME_ERR_SPELL_FAILED_ALREADY_AT_FULL_POWER_S] = true,
46 | [LE_GAME_ERR_SPELL_FAILED_EQUIPPED_ITEM_CLASS_S] = true,
47 | [LE_GAME_ERR_SPELL_FAILED_ALREADY_AT_FULL_HEALTH] = true,
48 | [LE_GAME_ERR_GENERIC_NO_VALID_TARGETS] = true,
49 | [LE_GAME_ERR_BADATTACKFACING] = true,
50 | [LE_GAME_ERR_BADATTACKPOS] = true,
51 |
52 | [LE_GAME_ERR_ITEM_COOLDOWN] = true,
53 | [LE_GAME_ERR_CANT_USE_ITEM] = true,
54 | [LE_GAME_ERR_SPELL_FAILED_ANOTHER_IN_PROGRESS] = true,
55 |
56 | [193] = true, -- aka LE_GAME_ERR_NO_ATTACK_TARGET, variable version doesn"t work.
57 | }
58 |
59 | local f = CreateFrame("Frame")
60 | f:RegisterEvent("UI_ERROR_MESSAGE")
61 |
62 | f:SetScript("OnEvent", function(self, event, messageType, message)
63 | if nCoreDB.ErrorFilter and not ignoreList[messageType] then
64 | UIErrorsFrame:AddMessage(message, 1, .1, .1)
65 | elseif not nCoreDB.ErrorFilter then
66 | UIErrorsFrame:AddMessage(message, 1, .1, .1)
67 | end
68 | end)
69 | end
70 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/fonts.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:Fonts()
4 | if not nCoreDB.Fonts then return end
5 |
6 | --[[
7 | -- A list of all fonts
8 |
9 | "GameFontNormal",
10 | "GameFontHighlight",
11 | "GameFontDisable",
12 | "GameFontNormalSmall",
13 | "GameFontHighlightExtraSmall",
14 | "GameFontHighlightMedium",
15 | "GameFontNormalLarge",
16 | "GameFontNormalHuge",
17 |
18 | "BossEmoteNormalHuge",
19 |
20 | "NumberFontNormal",
21 | "NumberFontNormalSmall",
22 | "NumberFontNormalLarge",
23 | "NumberFontNormalHuge",
24 | "NumberFontNormalSmallGray,
25 |
26 | "ChatFontNormal",
27 | "ChatFontSmall",
28 |
29 | "QuestTitleFont",
30 | "QuestFont",
31 | "QuestFontNormalSmall",
32 | "QuestFontHighlight",
33 |
34 | "ItemTextFontNormal",
35 | "MailTextFontNormal",
36 | "SubSpellFont",
37 | "DialogButtonNormalText",
38 | "ZoneTextFont",
39 | "SubZoneTextFont",
40 | "PVPInfoTextFont",
41 | "ErrorFont",
42 | "TextStatusBarText",
43 | "CombatLogFont",
44 |
45 | "GameTooltipText",
46 | "GameTooltipTextSmall",
47 | "GameTooltipHeaderText",
48 |
49 | "WorldMapTextFont",
50 |
51 | "InvoiceTextFontNormal",
52 | "InvoiceTextFontSmall",
53 | "CombatTextFont",
54 | "MovieSubtitleFont",
55 |
56 | "AchievementPointsFont",
57 | "AchievementPointsFontSmall",
58 | "AchievementDescriptionFont",
59 | "AchievementCriteriaFont",
60 | "AchievementDateFont",
61 | "ReputationDetailFont",
62 | --]]
63 |
64 | for _, font in pairs({
65 | GameFontDisable,
66 | GameFontDisableSmall,
67 |
68 | GameFontHighlight,
69 | GameFontHighlightMedium,
70 | GameFontHighlightSmall,
71 | GameFontHighlightExtraSmall,
72 |
73 | GameFontNormal,
74 | GameFontNormalSmall,
75 |
76 | TextStatusBarText,
77 | }) do
78 | font:SetFont(STANDARD_TEXT_FONT, 13)
79 | font:SetShadowOffset(1, -1)
80 | end
81 |
82 | for _, font in pairs({
83 | AchievementPointsFont,
84 | AchievementPointsFontSmall,
85 | AchievementDescriptionFont,
86 | AchievementCriteriaFont,
87 | AchievementDateFont,
88 | }) do
89 | font:SetFont(STANDARD_TEXT_FONT, 12)
90 | end
91 |
92 | GameFontNormalHuge:SetFont(STANDARD_TEXT_FONT, 20, "OUTLINE")
93 | GameFontNormalHuge:SetShadowOffset(0, 0)
94 | end
95 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/library.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | local unpack = unpack
4 |
5 | function nCore:CreateAnchor(name, width, height, location)
6 | local anchorFrame = CreateFrame("Frame", name.."_Anchor", UIParent, "BackdropTemplate")
7 | anchorFrame:SetSize(width, height)
8 | anchorFrame:SetScale(1)
9 | anchorFrame:SetPoint(unpack(location))
10 | anchorFrame:SetFrameStrata("HIGH")
11 | anchorFrame:SetMovable(true)
12 | anchorFrame:SetClampedToScreen(true)
13 | anchorFrame:SetUserPlaced(true)
14 | anchorFrame:SetBackdrop({bgFile="Interface\\MINIMAP\\TooltipBackdrop-Background",})
15 | anchorFrame:EnableMouse(true)
16 | anchorFrame:RegisterForDrag("LeftButton")
17 | anchorFrame:Hide()
18 |
19 | anchorFrame.text = anchorFrame:CreateFontString(nil, "OVERLAY")
20 | anchorFrame.text:SetAllPoints(anchorFrame)
21 | anchorFrame.text:SetFont(STANDARD_TEXT_FONT, 13)
22 | anchorFrame.text:SetText(name)
23 |
24 | anchorFrame:SetScript("OnDragStart", function(self)
25 | self:StartMoving()
26 | end)
27 |
28 | anchorFrame:SetScript("OnDragStop", function(self)
29 | self:StopMovingOrSizing()
30 | end)
31 |
32 | return anchorFrame
33 | end
34 |
35 | function nCore:IsTaintable()
36 | return (InCombatLockdown() or (UnitAffectingCombat("player") or UnitAffectingCombat("pet")))
37 | end
38 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/movetalkinghead.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:MoveTalkingHeads()
4 | if not nCoreDB.MoveTalkingHeads then return end
5 |
6 | local L = nCore.L
7 |
8 | local location = {"LEFT", UIParent, "LEFT", 0, 0}
9 | local AlertFrameAnchor = nCore:CreateAnchor("AlertFrame", 570, 155, location)
10 |
11 | local f = CreateFrame("Frame")
12 | f:RegisterEvent("PLAYER_LOGIN")
13 | f:SetScript("OnEvent", function(self, event, arg1)
14 | if event == "PLAYER_LOGIN" then
15 | AlertFrame:ClearAllPoints()
16 | AlertFrame:SetParent(AlertFrameAnchor)
17 | AlertFrame:SetPoint("BOTTOM", AlertFrameAnchor)
18 | end
19 | end)
20 |
21 | local function MoveTalkingHeads()
22 | hooksecurefunc(TalkingHeadFrame, "Show", function(self)
23 | self:SetMovable(true)
24 | self:SetUserPlaced(true)
25 | self:ClearAllPoints()
26 | self:SetPoint("BOTTOMLEFT", AlertFrameAnchor)
27 | end)
28 | end
29 |
30 | if IsAddOnLoaded("Blizzard_TalkingHeadUI") then
31 | MoveTalkingHeads()
32 | else
33 | local waitFrame = CreateFrame("FRAME")
34 | waitFrame:RegisterEvent("ADDON_LOADED")
35 | waitFrame:SetScript("OnEvent", function(self, event, ...)
36 | local name = ...
37 | if name == "Blizzard_TalkingHeadUI" then
38 | MoveTalkingHeads()
39 | end
40 | end)
41 | end
42 |
43 | SlashCmdList["AlertFrameAnchor_AnchorToggle"] = function()
44 | if InCombatLockdown() then
45 | print(L.CombatWarning)
46 | return
47 | end
48 | if not AlertFrameAnchor:IsShown() then
49 | AlertFrameAnchor:Show()
50 | else
51 | AlertFrameAnchor:Hide()
52 | end
53 | end
54 | SLASH_AlertFrameAnchor_AnchorToggle1 = "/alertframemover"
55 | end
56 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/objectivetracker.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 | local L = nCore.L
3 |
4 | function nCore:ObjectiveTracker()
5 | if ( not nCoreDB.ObjectiveTracker ) then return end
6 |
7 | local objectiveTrackerFrame = _G["ObjectiveTrackerFrame"]
8 | objectiveTrackerFrame:SetHeight(600)
9 | objectiveTrackerFrame:SetClampedToScreen(true)
10 | objectiveTrackerFrame:SetMovable(true)
11 | objectiveTrackerFrame:SetUserPlaced(true)
12 |
13 | local minimizeButton = objectiveTrackerFrame.HeaderMenu.MinimizeButton
14 | minimizeButton:EnableMouse(true)
15 | minimizeButton:RegisterForDrag("LeftButton")
16 | minimizeButton:SetHitRectInsets(-15, 0, -5, -5)
17 | minimizeButton:SetScript("OnDragStart", function(self)
18 | if ( IsShiftKeyDown() ) then
19 | objectiveTrackerFrame:StartMoving()
20 | end
21 | end)
22 |
23 | minimizeButton:SetScript("OnDragStop", function(self)
24 | objectiveTrackerFrame:StopMovingOrSizing()
25 | end)
26 |
27 | minimizeButton:SetScript("OnEnter", function()
28 | if ( not InCombatLockdown() ) then
29 | GameTooltip:SetOwner(minimizeButton, "ANCHOR_TOPLEFT", 0, 10)
30 | GameTooltip:ClearLines()
31 | GameTooltip:AddLine(L.ObjectiveTrackerButtonTooltip)
32 | GameTooltip:Show()
33 | end
34 | end)
35 |
36 | minimizeButton:SetScript("OnLeave", function()
37 | GameTooltip:Hide()
38 | end)
39 | end
40 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/orderhall.lua:
--------------------------------------------------------------------------------
1 | -- nOrderHall: Hides default Blizzard order hall ui bar and replaces it with a custom version.
2 |
3 | -- Toggle Display Bar
4 |
5 | local function ToggleBar(self)
6 | if C_Garrison.IsPlayerInGarrison(Enum.GarrisonType.Type_7_0) and not self:IsVisible() then
7 | self:Show()
8 | else
9 | if self:IsVisible() then
10 | self:Hide()
11 | end
12 | end
13 | end
14 |
15 | -- Change Order Resources Text
16 |
17 | local function SetCurrency()
18 | local currencyInfo = C_CurrencyInfo.GetCurrencyInfo(1220)
19 | nOrderHall_Resources:SetText(currencyInfo.name..": |cffFFFFFF"..currencyInfo.quantity)
20 | end
21 |
22 | -- Count and display number of troops.
23 |
24 | local function SetTroops()
25 | local followerInfo = C_Garrison.GetFollowers() or {}
26 |
27 | local followerTotal = 0
28 |
29 | for _, follower in ipairs(followerInfo) do
30 | if follower.isCollected then
31 | if follower.isTroop then
32 | followerTotal = followerTotal + 1
33 | end
34 | end
35 | end
36 |
37 | nOrderHall_Troops:SetText(FOLLOWERLIST_LABEL_TROOPS..": |cffFFFFFF"..followerTotal)
38 | end
39 |
40 | function nOrderHall_OnLoad(self)
41 | self:RegisterEvent("PLAYER_ENTERING_WORLD")
42 | self:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
43 | self:RegisterEvent("GARRISON_UPDATE")
44 | self:RegisterEvent("GARRISON_FOLLOWER_ADDED")
45 | self:RegisterEvent("GARRISON_FOLLOWER_REMOVED")
46 | end
47 |
48 | function nOrderHall_OnEvent(self, event, ...)
49 | if event == "PLAYER_ENTERING_WORLD" then
50 | if OrderHallCommandBar then
51 | OrderHallCommandBar:Hide()
52 | OrderHallCommandBar:UnregisterAllEvents()
53 | OrderHallCommandBar.Show = function() end -- luacheck: ignore
54 | end
55 | OrderHall_CheckCommandBar = function () end -- luacheck: ignore
56 |
57 | ToggleBar(self)
58 | elseif event == "GARRISON_UPDATE" then
59 | ToggleBar(self)
60 |
61 | if self:IsVisible() then
62 | SetCurrency()
63 | SetTroops()
64 | end
65 | elseif event == "CURRENCY_DISPLAY_UPDATE" then
66 | if self:IsVisible() then
67 | SetCurrency()
68 | end
69 | elseif event == "GARRISON_FOLLOWER_ADDED" or event == "GARRISON_FOLLOWER_REMOVED" then
70 | if self:IsVisible() then
71 | SetTroops()
72 | end
73 | end
74 | end
75 |
76 | -- Gets follower info and outputs it in tooltip.
77 |
78 | function nOrderHall_OnEnter(self)
79 | local followerInfo = C_Garrison.GetFollowers() or {}
80 |
81 | GameTooltip:SetOwner(self, "ANCHOR_BOTTOM")
82 | GameTooltip:ClearLines()
83 | GameTooltip:AddDoubleLine(FOLLOWERLIST_LABEL_TROOPS, DURABILITY)
84 |
85 | local sort_func = function( a,b ) return a.name < b.name end
86 | table.sort( followerInfo, sort_func )
87 |
88 | for _, follower in ipairs(followerInfo) do
89 | if follower.isCollected then
90 | if follower.isTroop then
91 | GameTooltip:AddDoubleLine(follower.name, follower.durability .. "/" .. follower.maxDurability, 1,1,1, 1,1,1)
92 | end
93 | end
94 | end
95 |
96 | GameTooltip:Show()
97 | end
98 |
99 | -- Hides Tooltip
100 |
101 | function nOrderHall_OnLeave(self)
102 | GameTooltip:Hide()
103 | end
104 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/orderhall.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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | GarrisonLandingPage_Toggle()
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/questtracker.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:QuestTracker()
4 | local function UpdateQuestText()
5 | local _, numQuests = C_QuestLog.GetNumQuestLogEntries()
6 | WorldMapFrameTitleText:SetFormattedText("%s - %d/%s", MAP_AND_QUEST_LOG, numQuests, MAX_QUESTS)
7 | WorldMapFrameTitleText:Show()
8 | end
9 |
10 | UpdateQuestText()
11 |
12 | local watcher = CreateFrame("Frame")
13 | watcher:RegisterEvent("PLAYER_ENTERING_WORLD")
14 | watcher:RegisterEvent("QUEST_ACCEPT_CONFIRM")
15 | watcher:RegisterEvent("QUEST_ACCEPTED")
16 | watcher:RegisterEvent("QUEST_AUTOCOMPLETE")
17 | watcher:RegisterEvent("QUEST_LOG_UPDATE")
18 | watcher:RegisterEvent("QUEST_REMOVED")
19 |
20 | watcher:SetScript("OnEvent", function(self, event, ...)
21 | if nCoreDB.QuestTracker then
22 | UpdateQuestText()
23 | else
24 | WorldMapFrameTitleText:SetText(MAP_AND_QUEST_LOG)
25 | WorldMapFrameTitleText:Show()
26 | end
27 | end)
28 | end
29 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/skins.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:Skins()
4 | if not nCoreDB.Skins then return end
5 |
6 | local f = CreateFrame("Frame")
7 | f:RegisterEvent("VARIABLES_LOADED")
8 | f:RegisterEvent("ADDON_LOADED")
9 | f:RegisterEvent("PLAYER_ENTERING_WORLD")
10 |
11 | f:SetScript("OnEvent", function(self)
12 | if IsAddOnLoaded("Omen") then
13 | if not OmenBarList.beautyBorder then
14 | OmenBarList:CreateBeautyBorder(11)
15 | OmenBarList:SetBeautyBorderPadding(1)
16 | end
17 | end
18 |
19 | if IsAddOnLoaded("DBM-Core") then
20 | hooksecurefunc(DBT, "CreateBar", function(self)
21 | for bar in self:GetBarIterator() do
22 | local frame = bar.frame
23 | local tbar = _G[frame:GetName().."Bar"]
24 | local spark = _G[frame:GetName().."BarSpark"]
25 | -- local texture = _G[frame:GetName().."BarTexture"]
26 | local icon1 = _G[frame:GetName().."BarIcon1"]
27 | local icon2 = _G[frame:GetName().."BarIcon2"]
28 | local name = _G[frame:GetName().."BarName"]
29 | local timer = _G[frame:GetName().."BarTimer"]
30 |
31 | spark:SetTexture(nil)
32 |
33 | Mixin(tbar, BackdropTemplateMixin)
34 | timer:ClearAllPoints()
35 | timer:SetPoint("RIGHT", tbar, "RIGHT", -4, 0)
36 | timer:SetFont(STANDARD_TEXT_FONT, 22)
37 | timer:SetJustifyH("RIGHT")
38 |
39 | name:ClearAllPoints()
40 | name:SetPoint("LEFT", tbar, 4, 0)
41 | name:SetPoint("RIGHT", timer, "LEFT", -4, 0)
42 | name:SetFont(STANDARD_TEXT_FONT, 15)
43 |
44 | tbar:CreateBeautyBorder(10)
45 | tbar:SetBeautyBorderPadding(tbar:GetHeight() + 3, 2, 2, 2, tbar:GetHeight() + 3, 2, 2, 2)
46 | tbar:SetBackdrop({bgFile = "Interface\\Buttons\\WHITE8x8"})
47 | tbar:SetBackdropColor(0, 0, 0, 0.5)
48 |
49 | icon1:SetTexCoord(0.07, 0.93, 0.07, 0.93)
50 | icon1:SetSize(tbar:GetHeight(), tbar:GetHeight() - 1)
51 |
52 | icon2:SetTexCoord(0.07, 0.93, 0.07, 0.93)
53 | icon2:SetSize(tbar:GetHeight(), tbar:GetHeight() - 1)
54 | end
55 | end)
56 | end
57 |
58 | if IsAddOnLoaded("TinyDPS") then
59 | if not tdpsFrame.beautyBorder then
60 | tdpsFrame:CreateBeautyBorder(11)
61 | tdpsFrame:SetBeautyBorderPadding(2)
62 | tdpsFrame:SetBackdrop({
63 | bgFile = "Interface\\Buttons\\WHITE8x8",
64 | insets = { left = 0, right = 0, top = 0, bottom = 0 },
65 | })
66 | tdpsFrame:SetBackdropColor(0, 0, 0, 0.5)
67 | end
68 | end
69 |
70 | if IsAddOnLoaded("Recount") then
71 | if not Recount.MainWindow.beautyBorder then
72 | Recount.MainWindow:CreateBeautyBorder(12)
73 | Recount.MainWindow:SetBeautyBorderPadding(2, -10, 2, -10, 2, 2, 2, 2)
74 | Recount.MainWindow:SetBackdrop({
75 | bgFile = "Interface\\Buttons\\WHITE8x8",
76 | insets = { left = 0, right = 0, top = 10, bottom = 0 },
77 | })
78 | Recount.MainWindow:SetBackdropColor(0, 0, 0, 0.5)
79 | end
80 | end
81 |
82 | if IsAddOnLoaded("Skada") then
83 | local OriginalSkadaFunc = Skada.PLAYER_ENTERING_WORLD
84 | function Skada:PLAYER_ENTERING_WORLD()
85 | OriginalSkadaFunc(self)
86 |
87 | if SkadaBarWindowSkada and not SkadaBarWindowSkada.beautyBorder then
88 | SkadaBarWindowSkada:CreateBeautyBorder(11)
89 | SkadaBarWindowSkada:SetBeautyBorderPadding(3)
90 | SkadaBarWindowSkada:SetBackdrop({
91 | bgFile = "Interface\\Buttons\\WHITE8x8",
92 | insets = { left = 0, right = 0, top = 10, bottom = 0 },
93 | })
94 | SkadaBarWindowSkada:SetBackdropColor(0, 0, 0, 0.50)
95 | SkadaBarWindowSkada.button:CreateBeautyBorder(11)
96 | SkadaBarWindowSkada.button:SetBeautyBorderPadding(2)
97 | end
98 | end
99 | end
100 |
101 | if IsAddOnLoaded("Numeration") then
102 | if not NumerationFrame.beautyBorder then
103 | NumerationFrame:CreateBeautyBorder(11)
104 | NumerationFrame:SetBeautyBorderPadding(3)
105 | end
106 | end
107 | end)
108 | end
109 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/spellid.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | function nCore:SpellID()
4 | local select = select
5 | local find = string.find
6 | local sub = string.sub
7 |
8 | hooksecurefunc(GameTooltip, "SetUnitBuff", function(self,...)
9 | if not nCoreDB.SpellID then return end
10 | local id = select(10, UnitBuff(...))
11 | if id then
12 | self:AddLine("SpellID: "..id, 1, 1, 1)
13 | self:Show()
14 | end
15 | end)
16 |
17 | hooksecurefunc(GameTooltip, "SetUnitDebuff", function(self,...)
18 | if not nCoreDB.SpellID then return end
19 | local id = select(10, UnitDebuff(...))
20 | if id then
21 | self:AddLine("SpellID: "..id, 1, 1, 1)
22 | self:Show()
23 | end
24 | end)
25 |
26 | hooksecurefunc(GameTooltip, "SetUnitAura", function(self,...)
27 | if not nCoreDB.SpellID then return end
28 | local id = select(10, UnitAura(...))
29 | if id then
30 | self:AddLine("SpellID: "..id, 1, 1, 1)
31 | self:Show()
32 | end
33 | end)
34 |
35 | hooksecurefunc("SetItemRef", function(link, text, button, chatFrame)
36 | if not nCoreDB.SpellID then return end
37 | if find(link,"^spell:") then
38 | local id = sub(link, 7)
39 | ItemRefTooltip:AddLine("SpellID: "..id, 1, 1, 1)
40 | ItemRefTooltip:Show()
41 | end
42 | end)
43 |
44 | GameTooltip:HookScript("OnTooltipSetSpell", function(self)
45 | if not nCoreDB.SpellID then return end
46 | local id = select(2, self:GetSpell())
47 | if id then
48 | -- Workaround for weird issue when this gets triggered twice on the Talents frame
49 | -- https://github.com/renstrom/NeavUI/issues/76
50 | for i = 1, self:NumLines() do
51 | if _G["GameTooltipTextLeft"..i]:GetText() == "SpellID: "..id then
52 | return
53 | end
54 | end
55 |
56 | self:AddLine("SpellID: "..id, 1, 1, 1)
57 | self:Show()
58 | end
59 | end)
60 | end
61 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/vignette.lua:
--------------------------------------------------------------------------------
1 | local _, nCore = ...
2 |
3 | -- Forked from rVignette by zork - 2014
4 |
5 | function nCore:VignetteAlert()
6 |
7 | local addon = CreateFrame("Frame")
8 |
9 | local function OnEvent(self, event, id)
10 | if not nCoreDB.VignetteAlert then return end
11 |
12 | if event == "VIGNETTE_MINIMAP_UPDATED" then
13 | if not id then return end
14 |
15 | self.vignettes = self.vignettes or {}
16 | if self.vignettes[id] then return end
17 |
18 | local vignetteInfo = C_VignetteInfo.GetVignetteInfo(id)
19 | if not vignetteInfo then return end
20 |
21 | local atlasInfo = C_Texture.GetAtlasInfo(vignetteInfo.atlasName)
22 | local left = atlasInfo.leftTexCoord * 256
23 | local right = atlasInfo.rightTexCoord * 256
24 | local top = atlasInfo.topTexCoord * 256
25 | local bottom = atlasInfo.bottomTexCoord * 256
26 |
27 | local str = "|TInterface\\MINIMAP\\ObjectIconsAtlas:0:0:0:0:256:256:"..(left)..":"..(right)..":"..(top)..":"..(bottom).."|t"
28 |
29 | if vignetteInfo.name ~= "Garrison Cache" and vignetteInfo.name ~= "Full Garrison Cache" and vignetteInfo.name ~= nil then
30 | RaidNotice_AddMessage(RaidWarningFrame, str.." "..vignetteInfo.name.." spotted!", ChatTypeInfo["RAID_WARNING"])
31 | print(str.." "..vignetteInfo.name,"spotted!")
32 | self.vignettes[id] = true
33 | end
34 | end
35 | end
36 |
37 | -- Listen for vignette event.
38 | addon:RegisterEvent("VIGNETTE_MINIMAP_UPDATED")
39 | addon:SetScript("OnEvent", OnEvent)
40 | end
41 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/modules/warning.lua:
--------------------------------------------------------------------------------
1 | RaidWarningFrame:ClearAllPoints()
2 | RaidWarningFrame:SetPoint("CENTER", UIParent, "CENTER", 0, 260)
3 | RaidWarningFrame:SetScale(1.1)
4 |
5 | RaidWarningFrameSlot2:ClearAllPoints()
6 | RaidWarningFrameSlot2:SetPoint("TOP", RaidWarningFrameSlot1, "BOTTOM", 0, -3)
7 |
8 | RaidBossEmoteFrameSlot2:ClearAllPoints()
9 | RaidBossEmoteFrameSlot2:SetPoint("TOP", RaidBossEmoteFrameSlot1, "BOTTOM", 0, -3)
10 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/nCore.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rCore
3 | ## OptionalDeps: !Beautycase, Recount, Omen, DBM, PitBull4, Skada, TinyDPS
4 | ## SavedVariables: nCoreDB
5 |
6 | nCore.xml
7 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/nCore.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 |
--------------------------------------------------------------------------------
/Interface/AddOns/nCore/options.lua:
--------------------------------------------------------------------------------
1 | local addon, nCore = ...
2 | local L = nCore.L
3 |
4 | local pairs = pairs
5 |
6 | local Options = CreateFrame("Frame", "nCoreOptions", InterfaceOptionsFramePanelContainer)
7 | Options.controlTable = {}
8 | Options.name = GetAddOnMetadata(addon, "Title")
9 | Options.okay = function(self)
10 | for _, control in pairs(self.controls) do
11 | nCoreDB[control.var] = control:GetValue()
12 | end
13 |
14 | for _, control in pairs(self.controls) do
15 | if control.restart then
16 | ReloadUI()
17 | end
18 | end
19 | end
20 | Options.cancel = function(self)
21 | for _, control in pairs(self.controls) do
22 | if control.oldValue and control.oldValue ~= control:GetValue() then
23 | control:SetValue()
24 | end
25 | end
26 | end
27 | Options.default = function(self)
28 | for _, control in pairs(self.controls) do
29 | nCoreDB[control.var] = true
30 | end
31 | ReloadUI()
32 | end
33 | Options.refresh = function(self)
34 | for _, control in pairs(self.controls) do
35 | control:SetValue()
36 | control.oldValue = control:GetValue()
37 | end
38 | end
39 | InterfaceOptions_AddCategory(Options)
40 |
41 | Options:Hide()
42 | Options:SetScript("OnShow", function()
43 | local panelWidth = Options:GetWidth()/2
44 |
45 | local LeftSide = CreateFrame("Frame", "LeftSide", Options)
46 | LeftSide:SetHeight(Options:GetHeight())
47 | LeftSide:SetWidth(panelWidth)
48 | LeftSide:SetPoint("TOPLEFT", Options)
49 |
50 | local RightSide = CreateFrame("Frame", "RightSide", Options)
51 | RightSide:SetHeight(Options:GetHeight())
52 | RightSide:SetWidth(panelWidth)
53 | RightSide:SetPoint("TOPRIGHT", Options)
54 |
55 | local UIControls = {
56 | {
57 | type = "Label",
58 | name = "OptionsLabel",
59 | parent = Options,
60 | label = L.OptionsLabel,
61 | relativeTo = LeftSide,
62 | relativePoint = "TOPLEFT",
63 | offsetX = 16,
64 | offsetY = -16,
65 | },
66 | {
67 | type = "CheckBox",
68 | name = "AltBuy",
69 | parent = Options,
70 | label = L.AltBuy,
71 | tooltip = L.AltBuyTooltip,
72 | var = "AltBuy",
73 | relativeTo = OptionsLabel,
74 | offsetY = -12,
75 | },
76 | {
77 | type = "CheckBox",
78 | name = "ArchaeologyHelper",
79 | parent = Options,
80 | label = L.ArchaeologyHelper,
81 | tooltip = L.ArchaeologyHelperTooltip,
82 | var = "ArchaeologyHelper",
83 | },
84 | {
85 | type = "CheckBox",
86 | name = "AutoGreed",
87 | parent = Options,
88 | label = L.AutoGreed,
89 | tooltip = L.AutoGreedTooltip,
90 | var = "AutoGreed",
91 | },
92 | {
93 | type = "CheckBox",
94 | name = "AutoQuest",
95 | parent = Options,
96 | label = L.AutoQuest,
97 | tooltip = L.AutoQuestTooltip,
98 | var = "AutoQuest",
99 | },
100 | {
101 | type = "CheckBox",
102 | name = "Dressroom",
103 | parent = Options,
104 | label = L.Dressroom,
105 | tooltip = L.DressroomTooltip,
106 | var = "Dressroom",
107 | needsRestart = true,
108 | },
109 | {
110 | type = "CheckBox",
111 | name = "Durability",
112 | parent = Options,
113 | label = L.Durability,
114 | tooltip = L.DurabilityTooltip,
115 | var = "Durability",
116 | needsRestart = true,
117 | },
118 | {
119 | type = "CheckBox",
120 | name = "ErrorFilter",
121 | parent = Options,
122 | label = L.ErrorFilter,
123 | tooltip = L.ErrorFilterTooltip,
124 | var = "ErrorFilter",
125 | },
126 | {
127 | type = "CheckBox",
128 | name = "Fonts",
129 | parent = Options,
130 | label = L.Fonts,
131 | tooltip = L.FontsTooltip,
132 | var = "Fonts",
133 | needsRestart = true,
134 | },
135 | {
136 | type = "CheckBox",
137 | name = "MapCoords",
138 | parent = Options,
139 | label = L.MapCoords,
140 | tooltip = L.MapCoordsTooltip,
141 | var = "MapCoords",
142 | },
143 | {
144 | type = "CheckBox",
145 | name = "ObjectiveTracker",
146 | parent = Options,
147 | label = L.ObjectiveTracker,
148 | tooltip = L.ObjectiveTrackerTooltip,
149 | var = "ObjectiveTracker",
150 | needsRestart = true,
151 | },
152 | {
153 | type = "CheckBox",
154 | name = "MoveTalkingHeads",
155 | parent = Options,
156 | label = L.MoveTalkingHeads,
157 | tooltip = L.MoveTalkingHeadsTooltip,
158 | var = "MoveTalkingHeads",
159 | needsRestart = true,
160 | },
161 | {
162 | type = "CheckBox",
163 | name = "QuestTracker",
164 | parent = Options,
165 | label = L.QuestTracker,
166 | tooltip = L.QuestTrackerTooltip,
167 | var = "QuestTracker",
168 | },
169 | {
170 | type = "CheckBox",
171 | name = "Skins",
172 | parent = Options,
173 | label = L.Skins,
174 | tooltip = L.SkinsTooltip,
175 | var = "Skins",
176 | needsRestart = true,
177 | },
178 | {
179 | type = "CheckBox",
180 | name = "SpellID",
181 | parent = Options,
182 | label = L.SpellID,
183 | tooltip = L.SpellIDTooltip,
184 | var = "SpellID",
185 | },
186 | {
187 | type = "CheckBox",
188 | name = "VignetteAlert",
189 | parent = Options,
190 | label = L.VignetteAlert,
191 | tooltip = L.VignetteAlertTooltip,
192 | var = "VignetteAlert",
193 | }
194 | }
195 |
196 | for _, control in pairs(UIControls) do
197 | if control.type == "Label" then
198 | nCore:CreateLabel(control)
199 | elseif control.type == "CheckBox" then
200 | nCore:CreateCheckBox(control)
201 | end
202 | end
203 |
204 | function Options:Refresh()
205 | for _, control in pairs(self.controls) do
206 | control:SetValue(control)
207 | control.oldValue = control:GetValue()
208 | end
209 | end
210 |
211 | Options:Refresh()
212 | Options:SetScript("OnShow", nil)
213 | end)
214 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/Bindings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | ToggleBags()
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/Libs/LibActionButton-1.0-ElvUI/LibActionButton-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/Libs/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
2 | -- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
3 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
4 | local LibStub = _G[LIBSTUB_MAJOR]
5 |
6 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
7 | LibStub = LibStub or {libs = {}, minors = {} }
8 | _G[LIBSTUB_MAJOR] = LibStub
9 | LibStub.minor = LIBSTUB_MINOR
10 |
11 | function LibStub:NewLibrary(major, minor)
12 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
13 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
14 |
15 | local oldminor = self.minors[major]
16 | if oldminor and oldminor >= minor then return nil end
17 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
18 | return self.libs[major], oldminor
19 | end
20 |
21 | function LibStub:GetLibrary(major, silent)
22 | if not self.libs[major] and not silent then
23 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
24 | end
25 | return self.libs[major], self.minors[major]
26 | end
27 |
28 | function LibStub:IterateLibraries() return pairs(self.libs) end
29 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
30 | end
31 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/config.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 |
3 | nMainbar.Config = {
4 | showPicomenu = true,
5 | useFakeBottomRightBar = true,
6 |
7 | button = {
8 | showVehicleKeybinds = true,
9 | showKeybinds = false,
10 | showMacroNames = false,
11 | buttonOutOfRange = false,
12 |
13 | watchbarFontsize = 12,
14 | watchbarFont = STANDARD_TEXT_FONT,
15 |
16 | countFontsize = 19,
17 | countFont = "Interface\\AddOns\\nMainbar\\Media\\font.ttf",
18 |
19 | macronameFontsize = 15,
20 | macronameFont = "Interface\\AddOns\\nMainbar\\Media\\font.ttf",
21 |
22 | hotkeyFontsize = 18,
23 | hotkeyFont = "Interface\\AddOns\\nMainbar\\Media\\font.ttf",
24 |
25 | petHotKeyFontsize = 15,
26 | },
27 |
28 | color = { -- Red, Green, Blue, Alpha
29 | Normal = CreateColor(1.0, 1.0, 1.0, 1.0),
30 | IsEquipped = CreateColor(0.0, 1.0, 0.0, 1.0),
31 | OutOfRange = CreateColor(0.8, 0.1, 0.1, 1.0),
32 | OutOfMana = CreateColor(0.3, 0.3, 1.0, 1.0),
33 | NotUsable = CreateColor(0.35, 0.35, 0.35, 1.0),
34 |
35 | HotKeyText = CreateColor(0.6, 0.6, 0.6, 1.0),
36 | MacroText = CreateColor(1.0, 1.0, 1.0, 1.0),
37 | CountText = CreateColor(1.0, 1.0, 1.0, 1.0),
38 | },
39 |
40 | MainMenuBar = {
41 | moveableExtraBars = true,
42 | hideGryphons = false,
43 | },
44 |
45 | vehicleBar = {
46 | scale = 0.80,
47 | },
48 |
49 | petBar = {
50 | mouseover = false,
51 | scale = 1,
52 | hiddenAlpha = 0,
53 | alpha = 1,
54 | vertical = false,
55 | },
56 |
57 | stanceBar = {
58 | hide = false,
59 | scale = 1,
60 | alpha = 1,
61 | },
62 |
63 | possessBar = {
64 | scale = 1,
65 | alpha = 1,
66 | },
67 |
68 | multiBarRight = {
69 | mouseover = false,
70 | scale = 1,
71 | hiddenAlpha = 0,
72 | alpha = 1,
73 | },
74 |
75 | multiBarBottomLeft = {
76 | mouseover = false,
77 | hiddenAlpha = 0,
78 | alpha = 1,
79 | },
80 |
81 | -- Only works with "useFakeBottomRightBar" option.
82 | multiBarBottomRight = {
83 | mouseover = false,
84 | hiddenAlpha = 0,
85 | alpha = 1,
86 | },
87 | }
88 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/UI-ActionButton-Glow.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/UI-ActionButton-Glow.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/font.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/picomenu/picomenuAchievement.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/picomenu/picomenuAchievement.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/picomenu/picomenuHighlight.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/picomenu/picomenuHighlight.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/picomenu/picomenuNormal.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/picomenu/picomenuNormal.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/picomenu/picomenuTalents.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/picomenu/picomenuTalents.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/textureBackground.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/textureBackground.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/textureChecked.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/textureChecked.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/textureHighlight.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/textureHighlight.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/textureNormal.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/textureNormal.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/texturePushed.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/texturePushed.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/media/textureShadow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMainbar/media/textureShadow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/Bags.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 | local cfg = nMainbar.Config
3 |
4 | if not cfg.showPicomenu then
5 | return
6 | end
7 |
8 | -- Saved Variable Setup
9 |
10 | if BagsShown == nil then
11 | BagsShown = false
12 | end
13 |
14 | -- Clear frame position.
15 |
16 | MainMenuBarBackpackButton:ClearAllPoints()
17 | CharacterBag0Slot:ClearAllPoints()
18 | CharacterBag1Slot:ClearAllPoints()
19 | CharacterBag2Slot:ClearAllPoints()
20 | CharacterBag3Slot:ClearAllPoints()
21 |
22 | -- Set new frame position.
23 |
24 | MainMenuBarBackpackButton:SetPoint("BOTTOMRIGHT", WorldFrame, "BOTTOMRIGHT", 0, 0)
25 | CharacterBag0Slot:SetPoint("BOTTOMRIGHT", MainMenuBarBackpackButton, "BOTTOMLEFT", 0, 0)
26 | CharacterBag1Slot:SetPoint("RIGHT", CharacterBag0Slot, "LEFT", 0, 0)
27 | CharacterBag2Slot:SetPoint("RIGHT", CharacterBag1Slot, "LEFT", 0, 0)
28 | CharacterBag3Slot:SetPoint("RIGHT", CharacterBag2Slot, "LEFT", 0, 0)
29 |
30 | MicroButtonAndBagsBar.MicroBagBar:ClearAllPoints()
31 | MicroButtonAndBagsBar.MicroBagBar:Hide()
32 |
33 | CharacterMicroButton:ClearAllPoints()
34 | CharacterMicroButton:SetPoint("BOTTOMLEFT", UIParent, 9000, 9000)
35 |
36 | hooksecurefunc("MoveMicroButtons", function(anchor, achorTo, relAnchor, x, y, isStacked)
37 | if not isStacked then
38 | CharacterMicroButton:ClearAllPoints()
39 | CharacterMicroButton:SetPoint("BOTTOMLEFT", UIParent, 9000, 9000)
40 | end
41 | end)
42 |
43 | -- Show Bags
44 |
45 | local function BagShow()
46 | MainMenuBarBackpackButton:Show()
47 | CharacterBag0Slot:Show()
48 | CharacterBag1Slot:Show()
49 | CharacterBag2Slot:Show()
50 | CharacterBag3Slot:Show()
51 | end
52 |
53 | -- Hide Bags
54 |
55 | local function BagHide()
56 | MainMenuBarBackpackButton:Hide()
57 | CharacterBag0Slot:Hide()
58 | CharacterBag1Slot:Hide()
59 | CharacterBag2Slot:Hide()
60 | CharacterBag3Slot:Hide()
61 | end
62 |
63 | -- Used to toggle bag with keybind or slash command /neavbag.
64 |
65 | local function ToggleBags()
66 | if not BagsShown then
67 | BagShow()
68 | BagsShown = true
69 | else
70 | BagHide()
71 | BagsShown = false
72 | end
73 | end
74 |
75 | -- Hides or shows bags on start up depending on saved variable.
76 |
77 | local function onEvent(self, event, ...)
78 | local name = ...
79 | if name == "nMainbar" then
80 | if BagsShown then
81 | BagShow()
82 | else
83 | BagHide()
84 | end
85 | end
86 | end
87 |
88 | local addon = CreateFrame("Frame")
89 | addon:SetScript("OnEvent", onEvent)
90 | addon:RegisterEvent("ADDON_LOADED")
91 |
92 | -- Slash Command
93 |
94 | SlashCmdList["nBag_Toggle"] = function()
95 | ToggleBags()
96 | end
97 | SLASH_nBag_Toggle1 = "/neavbag"
98 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/MoveableExtraBars.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 | local cfg = nMainbar.Config
3 |
4 | if not cfg.MainMenuBar.moveableExtraBars then
5 | return
6 | end
7 |
8 | -- Moveable Bars
9 |
10 | for _, frame in pairs({
11 | _G["PetActionBarFrame"],
12 | _G["StanceBarFrame"],
13 | _G["PossessBarFrame"],
14 | }) do
15 | frame:EnableMouse(false)
16 | end
17 |
18 | -- Shift + alt-key and left mouse to move.
19 |
20 | for _, button in pairs({
21 | _G["PossessButton1"],
22 | _G["PetActionButton1"],
23 | _G["StanceButton1"],
24 | }) do
25 | button:ClearAllPoints()
26 | button:SetPoint("CENTER", UIParent, -100)
27 |
28 | button:SetMovable(true)
29 | button:SetUserPlaced(true)
30 |
31 | button:RegisterForDrag("LeftButton")
32 | button:HookScript("OnDragStart", function(self)
33 | if IsShiftKeyDown() and IsAltKeyDown() then
34 | self:StartMoving()
35 | end
36 | end)
37 |
38 | button:HookScript("OnDragStop", function(self)
39 | self:StopMovingOrSizing()
40 | end)
41 | end
42 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/WatchBarCode.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 | local cfg = nMainbar.Config
3 |
4 | -- Experience Bar
5 |
6 | hooksecurefunc(ExpBarMixin, "OnLoad", function(self)
7 | self.OverlayFrame.Text:SetFont(cfg.button.watchbarFont, cfg.button.watchbarFontsize, "OUTLINE")
8 | self.OverlayFrame.Text:SetShadowOffset(0, 0)
9 | end)
10 |
11 | -- Azerite Bar
12 |
13 | hooksecurefunc(AzeriteBarMixin, "OnLoad", function(self)
14 | self.OverlayFrame.Text:SetFont(cfg.button.watchbarFont, cfg.button.watchbarFontsize, "OUTLINE")
15 | self.OverlayFrame.Text:SetShadowOffset(0, 0)
16 | end)
17 |
18 | -- Reputation Bar
19 |
20 | hooksecurefunc(ReputationBarMixin, "OnLoad", function(self)
21 | self.OverlayFrame.Text:SetFont(cfg.button.watchbarFont, cfg.button.watchbarFontsize, "OUTLINE")
22 | self.OverlayFrame.Text:SetShadowOffset(0, 0)
23 |
24 | self:SetScript("OnMouseDown", function(self, button)
25 | if not nMainbar:IsTaintable() and IsAltKeyDown() then
26 | ToggleCharacter("ReputationFrame")
27 | end
28 | end)
29 | end)
30 |
31 | -- Honor Bar
32 |
33 | hooksecurefunc(HonorBarMixin, "OnLoad", function(self)
34 | self.OverlayFrame.Text:SetFont(cfg.button.watchbarFont, cfg.button.watchbarFontsize, "OUTLINE")
35 | self.OverlayFrame.Text:SetShadowOffset(0, 0)
36 |
37 | self:SetScript("OnMouseDown", function(self, button)
38 | if not nMainbar:IsTaintable() and IsAltKeyDown() then
39 | ToggleTalentFrame(PVP_TALENTS_TAB)
40 | end
41 | end)
42 | end)
43 |
44 | -- Legion Artifact Bar
45 |
46 | hooksecurefunc(ArtifactBarMixin, "OnLoad", function(self)
47 | self.OverlayFrame.Text:SetFont(cfg.button.watchbarFont, cfg.button.watchbarFontsize, "OUTLINE")
48 | self.OverlayFrame.Text:SetShadowOffset(0, 0)
49 |
50 | self:SetScript("OnMouseDown", function(self, button)
51 | if not nMainbar:IsTaintable() and IsAltKeyDown() then
52 | if not ArtifactFrame or not ArtifactFrame:IsShown() then
53 | ShowUIPanel(SocketInventoryItem(16))
54 | elseif ArtifactFrame and ArtifactFrame:IsShown() then
55 | HideUIPanel(ArtifactFrame)
56 | end
57 | end
58 | end)
59 | end)
60 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/core.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 | local cfg = nMainbar.Config
3 |
4 | -- Functions
5 |
6 | function nMainbar:IsTaintable()
7 | return (InCombatLockdown() or (UnitAffectingCombat("player") or UnitAffectingCombat("pet")))
8 | end
9 |
10 | function nMainbar:CreateAnchor(name, width, height, location)
11 | local anchorFrame = CreateFrame("Frame", name.."_Anchor", UIParent, "BackdropTemplate")
12 | anchorFrame:SetSize(width, height)
13 | anchorFrame:SetScale(1)
14 | anchorFrame:SetPoint(unpack(location))
15 | anchorFrame:SetFrameStrata("HIGH")
16 | anchorFrame:SetMovable(true)
17 | anchorFrame:SetClampedToScreen(true)
18 | anchorFrame:SetUserPlaced(true)
19 | anchorFrame:SetBackdrop({bgFile="Interface\\MINIMAP\\TooltipBackdrop-Background",})
20 | anchorFrame:EnableMouse(true)
21 | anchorFrame:RegisterForDrag("LeftButton")
22 | anchorFrame:Hide()
23 |
24 | anchorFrame.text = anchorFrame:CreateFontString(nil, "OVERLAY")
25 | anchorFrame.text:SetAllPoints(anchorFrame)
26 | anchorFrame.text:SetFont(STANDARD_TEXT_FONT, 13)
27 | anchorFrame.text:SetText(name)
28 |
29 | anchorFrame:SetScript("OnDragStart", function(self)
30 | self:StartMoving()
31 | end)
32 |
33 | anchorFrame:SetScript("OnDragStop", function(self)
34 | self:StopMovingOrSizing()
35 | end)
36 |
37 | return anchorFrame
38 | end
39 |
40 | -- End Caps
41 |
42 | if cfg.MainMenuBar.hideGryphons then
43 | MainMenuBarArtFrame.LeftEndCap:SetTexCoord(0, 0, 0, 0)
44 | MainMenuBarArtFrame.RightEndCap:SetTexCoord(0, 0, 0, 0)
45 | end
46 |
47 | -- Fill Status Bar Gap
48 |
49 | local MainMenuBarArtFrame_BottomArt = nil
50 | if not MainMenuBarArtFrame_BottomArt then
51 | MainMenuBarArtFrame_BottomArt = MainMenuBarArtFrame:CreateTexture("MainMenuBarBottomArt", "OVERLAY")
52 | MainMenuBarArtFrame_BottomArt:SetPoint("LEFT", MainMenuBarArtFrame.LeftEndCap, "RIGHT", -30, 0)
53 | MainMenuBarArtFrame_BottomArt:SetPoint("RIGHT", MainMenuBarArtFrame.RightEndCap, "LEFT", 30, 0)
54 | MainMenuBarArtFrame_BottomArt:SetPoint("BOTTOM", UIParent)
55 | MainMenuBarArtFrame_BottomArt:SetColorTexture(0.40 ,0.40 ,0.40, 1.0)
56 | MainMenuBarArtFrame_BottomArt:SetHeight(1)
57 | end
58 |
59 | -- Update Action Bars
60 |
61 | OverrideActionBar:SetScale(cfg.vehicleBar.scale)
62 |
63 | hooksecurefunc("MultiActionBar_Update", function(self)
64 | if nMainbar:IsTaintable() then
65 | return
66 | end
67 |
68 | -- Right Bars Scale & Alpha
69 |
70 | MultiBarLeft:SetAlpha(cfg.multiBarRight.alpha)
71 | MultiBarLeft:SetScale(cfg.multiBarRight.scale)
72 | MultiBarRight:SetAlpha(cfg.multiBarRight.alpha)
73 | MultiBarRight:SetScale(cfg.multiBarRight.scale)
74 |
75 | -- Move Right Bars (Checks if player is using stacking right bar option.)
76 |
77 | if GetCVar("multiBarRightVerticalLayout") == "0" then
78 | VerticalMultiBarsContainer:ClearAllPoints()
79 | VerticalMultiBarsContainer:SetPoint("TOPRIGHT", UIParent, "RIGHT", -2, (VerticalMultiBarsContainer:GetHeight() / 2))
80 | end
81 | end)
82 |
83 | -- Extra Action Button
84 |
85 | local ExtraActionBarFrameLocation = {"CENTER", UIParent, "CENTER", -300, -150}
86 | local ExtraActionBarFrameAnchor = nMainbar:CreateAnchor("EAB", ExtraActionButton1:GetWidth(), ExtraActionButton1:GetHeight(), ExtraActionBarFrameLocation)
87 |
88 | SlashCmdList["nMainbar_MoveExtraActionBar"] = function()
89 | if InCombatLockdown() then
90 | print("|cffCC3333n|rMainbar: "..ERR_NOT_IN_COMBAT)
91 | return
92 | end
93 | if not ExtraActionBarFrameAnchor:IsShown() then
94 | ExtraActionBarFrameAnchor:Show()
95 | else
96 | ExtraActionBarFrameAnchor:Hide()
97 | end
98 | end
99 | SLASH_nMainbar_MoveExtraActionBar1 = "/moveextraactionbar"
100 |
101 | ExtraActionButton1:ClearAllPoints()
102 | ExtraActionButton1:SetPoint("CENTER", ExtraActionBarFrameAnchor)
103 |
104 | -- Possess Bar
105 |
106 | PossessBarFrame:SetScale(cfg.possessBar.scale)
107 | PossessBarFrame:SetAlpha(cfg.possessBar.alpha)
108 |
109 | -- Stance Bar
110 |
111 | StanceBarLeft:SetTexture(nil)
112 | StanceBarMiddle:SetTexture(nil)
113 | StanceBarRight:SetTexture(nil)
114 |
115 | StanceBarFrame:SetFrameStrata("MEDIUM")
116 |
117 | StanceBarFrame:SetScale(cfg.stanceBar.scale)
118 | StanceBarFrame:SetAlpha(cfg.stanceBar.alpha)
119 |
120 | if cfg.stanceBar.hide then
121 | hooksecurefunc("StanceBar_Update", function()
122 | if StanceBarFrame:IsShown() and not nMainbar:IsTaintable() then
123 | RegisterStateDriver(StanceBarFrame, "visibility", "hide")
124 | end
125 | end)
126 | end
127 |
128 | -- Pet Bar
129 |
130 | SlidingActionBarTexture0:SetTexture(nil)
131 | SlidingActionBarTexture1:SetTexture(nil)
132 | PetActionBarFrame:SetFrameStrata("MEDIUM")
133 | PetActionBarFrame:SetScale(cfg.petBar.scale)
134 | PetActionBarFrame:SetAlpha(cfg.petBar.alpha)
135 |
136 | if cfg.petBar.vertical then
137 | for i = 2, 10 do
138 | local button = _G["PetActionButton"..i]
139 | button:ClearAllPoints()
140 | button:SetPoint("TOP", _G["PetActionButton"..(i - 1)], "BOTTOM", 0, -8)
141 | end
142 | end
143 |
144 | hooksecurefunc("PetActionButton_SetHotkeys", function(self)
145 | local hotkey = _G[self:GetName().."HotKey"]
146 | if not cfg.button.showKeybinds then
147 | hotkey:Hide()
148 | end
149 | end)
150 |
151 | if not cfg.button.showKeybinds then
152 | for i = 1, NUM_PET_ACTION_SLOTS, 1 do
153 | local buttonName = _G["PetActionButton"..i]
154 | PetActionButton_SetHotkeys(buttonName)
155 | end
156 | end
157 |
158 | -- Move exit vehicle button.
159 |
160 | hooksecurefunc("MainMenuBarVehicleLeaveButton_Update", function()
161 | MainMenuBarVehicleLeaveButton:ClearAllPoints()
162 | MainMenuBarVehicleLeaveButton:SetPoint("CENTER", MainMenuBarArtFrame.RightEndCap, "TOP", 0, 15)
163 | end)
164 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/mouseover.lua:
--------------------------------------------------------------------------------
1 | local _, nMainbar = ...
2 | local cfg = nMainbar.Config
3 |
4 | -- Mouseover Function
5 |
6 | local function EnableMouseOver(self, bar, min, max, alpha, hiddenAlpha)
7 | local minAlpha = hiddenAlpha or 0
8 |
9 | for i = min, max do
10 | local button = _G[self..i]
11 |
12 | local mouseOverFrame = CreateFrame("Frame", bar, bar)
13 | mouseOverFrame:SetFrameStrata("LOW")
14 | mouseOverFrame:SetFrameLevel(1)
15 | mouseOverFrame:EnableMouse()
16 | mouseOverFrame:SetPoint("TOPLEFT", self..min, -5, 5)
17 | mouseOverFrame:SetPoint("BOTTOMRIGHT", self..max, 5, 5)
18 |
19 | hooksecurefunc(bar, "SetAlpha", function(self, alpha)
20 | if button.cooldown then
21 | button.cooldown:SetSwipeColor(0, 0, 0, alpha)
22 | button.cooldown:SetDrawSwipe(alpha > 0)
23 | button.cooldown:SetDrawEdge(alpha > 0)
24 | button.cooldown:SetDrawBling(alpha > 0)
25 | end
26 | end)
27 |
28 | hooksecurefunc("ValidateActionBarTransition", function(self)
29 | if bar:IsShown() then
30 | if not MouseIsOver(mouseOverFrame) then
31 | bar:SetAlpha(minAlpha)
32 | end
33 | end
34 | end)
35 |
36 | mouseOverFrame:SetScript("OnShow", function()
37 | if not MouseIsOver(button) then
38 | bar:SetAlpha(minAlpha)
39 | end
40 | end)
41 |
42 | mouseOverFrame:SetScript("OnEnter", function()
43 | bar:SetAlpha(alpha)
44 | end)
45 |
46 | mouseOverFrame:SetScript("OnLeave", function()
47 | if not MouseIsOver(button) then
48 | bar:SetAlpha(minAlpha)
49 | end
50 | end)
51 |
52 | button:HookScript("OnEnter", function()
53 | bar:SetAlpha(alpha)
54 | end)
55 |
56 | button:HookScript("OnLeave", function()
57 | if not MouseIsOver(mouseOverFrame) then
58 | bar:SetAlpha(minAlpha)
59 | end
60 | end)
61 |
62 | bar:SetAlpha(minAlpha)
63 | end
64 | end
65 |
66 | -- Set Mouseovers
67 |
68 | C_Timer.After(0.001, function()
69 | if cfg.multiBarRight.mouseover then
70 | if MultiBarLeft then
71 | EnableMouseOver("MultiBarLeftButton", MultiBarLeft, 1, 12, cfg.multiBarRight.alpha, cfg.multiBarRight.hiddenAlpha)
72 | end
73 | if MultiBarRight then
74 | EnableMouseOver("MultiBarRightButton", MultiBarRight, 1, 12, cfg.multiBarRight.alpha, cfg.multiBarRight.hiddenAlpha)
75 | end
76 | end
77 |
78 | if cfg.multiBarBottomLeft.mouseover then
79 | EnableMouseOver("MultiBarBottomLeftButton", MultiBarBottomLeft, 1, 12, cfg.multiBarBottomLeft.alpha, cfg.multiBarBottomLeft.hiddenAlpha)
80 | end
81 |
82 | if cfg.multiBarBottomRight.mouseover then
83 | EnableMouseOver("FakeMultiBarBottomRight1Button", FakeMultiBarBottomRight1, 1, 12, cfg.multiBarBottomRight.alpha, cfg.multiBarBottomRight.hiddenAlpha)
84 | end
85 |
86 | if cfg.petBar.mouseover then
87 | EnableMouseOver("PetActionButton", PetActionBarFrame, 1, 10, cfg.petBar.alpha, cfg.petBar.hiddenAlpha)
88 | end
89 |
90 | if cfg.stanceBar.mouseover then
91 | EnableMouseOver("StanceButton", StanceBarFrame, 1, NUM_STANCE_SLOTS, cfg.stanceBar.alpha, cfg.stanceBar.hiddenAlpha)
92 | end
93 | end)
94 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/modules/slash.lua:
--------------------------------------------------------------------------------
1 | SlashCmdList["GM"] = function()
2 | ToggleHelpFrame()
3 | end
4 |
5 | SLASH_GM1 = "/gm"
6 | SLASH_GM2 = "/ticket"
7 | SLASH_GM3 = "/gamemaster"
8 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/nMainbar.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rMainbar
3 | ## Notes: nMainBar
4 | ## SavedVariables: BagsShown
5 |
6 | nMainbar.xml
7 | bindings.xml
8 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMainbar/nMainbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/calendar.lua:
--------------------------------------------------------------------------------
1 | local select = select
2 |
3 | if not IsAddOnLoaded("Blizzard_TimeManager") then
4 | LoadAddOn("Blizzard_TimeManager")
5 | end
6 |
7 | for i = 1, select("#", GameTimeFrame:GetRegions()) do
8 | local texture = select(i, GameTimeFrame:GetRegions())
9 | if texture and texture:GetObjectType() == "Texture" then
10 | texture:SetTexture(nil)
11 | end
12 | end
13 |
14 | GameTimeFrame:SetSize(14, 14)
15 | GameTimeFrame:SetHitRectInsets(0, 0, 0, 0)
16 | GameTimeFrame:ClearAllPoints()
17 | GameTimeFrame:SetPoint("TOPRIGHT", Minimap, -3.5, -3.5)
18 |
19 | GameTimeFrame:GetFontString():SetFont(STANDARD_TEXT_FONT, 15, "OUTLINE")
20 | GameTimeFrame:GetFontString():SetShadowOffset(0, 0)
21 | GameTimeFrame:GetFontString():SetPoint("TOPRIGHT", GameTimeFrame)
22 |
23 | for _, texture in pairs({
24 | GameTimeCalendarEventAlarmTexture,
25 | GameTimeCalendarInvitesTexture,
26 | GameTimeCalendarInvitesGlow,
27 | TimeManagerAlarmFiredTexture,
28 | }) do
29 | texture:SetTexture(nil)
30 |
31 | local classColor = RAID_CLASS_COLORS[select(2, UnitClass("player"))]
32 |
33 | if texture:IsShown() then
34 | GameTimeFrame:GetFontString():SetTextColor(1, 0, 1)
35 | else
36 | GameTimeFrame:GetFontString():SetTextColor(classColor.r, classColor.g, classColor.b)
37 | end
38 |
39 | hooksecurefunc(texture, "Show", function()
40 | GameTimeFrame:GetFontString():SetTextColor(1, 0, 1)
41 | end)
42 |
43 | hooksecurefunc(texture, "Hide", function()
44 | GameTimeFrame:GetFontString():SetTextColor(classColor.r, classColor.g, classColor.b)
45 | end)
46 | end
47 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/capture.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nMinimap = ...
3 | local cfg = nMinimap.Config
4 |
5 | hooksecurefunc("UIParent_ManageFramePositions", function()
6 | if NUM_EXTENDED_UI_FRAMES then
7 | for i = 1, NUM_EXTENDED_UI_FRAMES do
8 | local bar = _G["WorldStateCaptureBar"..i]
9 |
10 | if bar and bar:IsVisible() then
11 | bar:ClearAllPoints()
12 | bar:SetScale(0.9333334)
13 |
14 | if i == 1 then
15 | bar:SetPoint("TOP", Minimap, "BOTTOM", 0, cfg.tab.showBelowMinimap and -30 or -10)
16 | else
17 | bar:SetPoint("TOP", _G["WorldStateCaptureBar"..(i-1)], "BOTTOM", 0, -15)
18 | end
19 | end
20 | end
21 | end
22 | end)
23 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/clock.lua:
--------------------------------------------------------------------------------
1 | local unpack = unpack
2 | local sort = table.sort
3 | local sort_func = function( a,b ) return a.name < b.name end
4 |
5 | local classColor = RAID_CLASS_COLORS[select(2, UnitClass("player"))]
6 |
7 | TimeManagerClockTicker:SetFont(STANDARD_TEXT_FONT, 15, "OUTLINE")
8 | TimeManagerClockTicker:SetShadowOffset(0, 0)
9 | TimeManagerClockTicker:SetTextColor(classColor.r, classColor.g, classColor.b)
10 | TimeManagerClockTicker:SetPoint("TOPRIGHT", TimeManagerClockButton, 0, 0)
11 |
12 | TimeManagerClockButton:GetRegions():Hide()
13 | TimeManagerClockButton:ClearAllPoints()
14 | TimeManagerClockButton:SetWidth(40)
15 | TimeManagerClockButton:SetHeight(18)
16 | TimeManagerClockButton:SetPoint("BOTTOM", Minimap, 0, 2)
17 |
18 | TimeManagerAlarmFiredTexture:SetTexture(nil)
19 |
20 | hooksecurefunc(TimeManagerAlarmFiredTexture, "Show", function()
21 | TimeManagerClockTicker:SetTextColor(1, 0, 1)
22 | end)
23 |
24 | hooksecurefunc(TimeManagerAlarmFiredTexture, "Hide", function()
25 | TimeManagerClockTicker:SetTextColor(classColor.r, classColor.g, classColor.b)
26 | end)
27 |
28 | -- Add lockouts to time tooltip.
29 |
30 | local instanceLockouts = {}
31 | local worldbossLockouts = {}
32 |
33 | TimeManagerClockButton:SetScript("OnEnter" ,function(self)
34 | GameTooltip:SetOwner(self, "ANCHOR_LEFT")
35 |
36 | -- Add default time info.
37 | GameTime_UpdateTooltip()
38 | GameTooltip:AddLine(" ")
39 | GameTooltip:AddLine(GAMETIME_TOOLTIP_TOGGLE_CLOCK)
40 |
41 | -- Raid Lockout Info
42 | local savedInstances = GetNumSavedInstances()
43 | if savedInstances > 0 then
44 | for index=1, savedInstances do
45 | local instanceName, _, _, _, locked, _, _, _, _, difficultyName, maxBosses, defeatedBosses = GetSavedInstanceInfo(index)
46 |
47 | if locked then
48 | instanceLockouts[index] = { name = instanceName, difficulty = difficultyName, defeated = defeatedBosses, total = maxBosses }
49 | end
50 | end
51 |
52 | if next(instanceLockouts) ~= nil then
53 | sort(instanceLockouts, sort_func)
54 |
55 | GameTooltip:AddLine(" ")
56 | GameTooltip:AddLine(CALENDAR_FILTER_RAID_LOCKOUTS)
57 |
58 | for _, saved in ipairs(instanceLockouts) do
59 | local bossColor = saved.defeated == saved.total and { 0.0, 1.0, 0.0 } or { 1.0, 0.0, 0.0 }
60 | GameTooltip:AddDoubleLine(saved.name .. " |cffffffff" .. saved.difficulty .. "|r", saved.defeated .. "/" .. saved.total, 1.0, 0.82, 0.0, unpack(bossColor))
61 | end
62 | end
63 |
64 | end
65 |
66 | -- World Boss Lockout Info
67 | local savedWorldBosses = GetNumSavedWorldBosses()
68 | if savedWorldBosses > 0 then
69 | for index=1, savedWorldBosses do
70 | local instanceName, _, _ = GetSavedWorldBossInfo(index)
71 | worldbossLockouts[index] = { name = instanceName }
72 | end
73 |
74 | if next(worldbossLockouts) ~= nil then
75 | sort(worldbossLockouts, sort_func)
76 |
77 | GameTooltip:AddLine(" ")
78 | GameTooltip:AddLine(RAID_INFO_WORLD_BOSS)
79 |
80 | for _, boss in ipairs(worldbossLockouts) do
81 | GameTooltip:AddLine(boss.name, 1.0, 1.0, 1.0)
82 | end
83 | end
84 | end
85 |
86 | GameTooltip:Show()
87 | end)
88 |
89 | TimeManagerClockButton:SetScript("OnLeave", function(self)
90 | wipe(instanceLockouts)
91 | wipe(worldbossLockouts)
92 | GameTooltip:Hide()
93 | end)
94 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/config.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nMinimap = ...
3 |
4 | nMinimap.Config = {
5 | scale = 1.1, -- Default: 1.1
6 | location = {"TOPRIGHT", UIParent, "TOPRIGHT", -26, -26}, -- Default: {"TOPRIGHT", UIParent, "TOPRIGHT", -26, -26}
7 |
8 | tab = {
9 | show = true,
10 | showAlways = true,
11 |
12 | showBelowMinimap = false,
13 |
14 | -- Number of addons shown in the memory section of the info tooltip. Set to "nil" to show all.
15 | numberOfAddons = nil,
16 | },
17 |
18 | mouseover = {
19 | zoneText = true,
20 | instanceDifficulty = false,
21 | },
22 | }
23 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/difficulty.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nMinimap = ...
3 | local cfg = nMinimap.Config
4 |
5 | local isGuildGroup = nil
6 |
7 | local function HideDifficultyFrame()
8 | GuildInstanceDifficulty:EnableMouse(false)
9 | GuildInstanceDifficulty:SetAlpha(0)
10 |
11 | MiniMapInstanceDifficulty:EnableMouse(false)
12 | MiniMapInstanceDifficulty:SetAlpha(0)
13 |
14 | MiniMapChallengeMode:EnableMouse(false)
15 | MiniMapChallengeMode:SetAlpha(0)
16 | end
17 |
18 | local function GetDifficultyText()
19 | local inInstance = IsInInstance()
20 | local _, _, difficultyIndex, _, _, _, _, _, instanceGroupSize = GetInstanceInfo()
21 | local _, _, isHeroic, _, displayHeroic, displayMythic, _, isLFR = GetDifficultyInfo(difficultyIndex)
22 |
23 | local instanceText = ""
24 | local guildStyle
25 | local mythicStyle = "|cffff0000M|r"
26 | local heroStyle = "|cffff00ffH|r"
27 | local lookingForRaidStyle = "|cffffffffLFR|r"
28 | local timewalkerStyle = "|cffffffffTW|r"
29 |
30 | if isGuildGroup or GuildInstanceDifficulty:IsShown() then
31 | guildStyle = "|cffffff00G|r"
32 | else
33 | guildStyle = ""
34 | end
35 |
36 | if inInstance then
37 | instanceText = instanceGroupSize..guildStyle
38 |
39 | if displayMythic then
40 | instanceText = instanceText..mythicStyle
41 | elseif displayHeroic or isHeroic then
42 | instanceText = instanceText..heroStyle
43 | elseif isLFR then
44 | instanceText = lookingForRaidStyle
45 | end
46 |
47 | if difficultyIndex == 24 then
48 | instanceText = timewalkerStyle
49 | elseif difficultyIndex == 12 or difficultyIndex == 147 then
50 | instanceText = ""
51 | end
52 | end
53 |
54 | return instanceText
55 | end
56 |
57 | function nMinimapDifficulty_OnLoad(self)
58 | if cfg.mouseover.instanceDifficulty then
59 | self.Text:SetAlpha(0)
60 |
61 | Minimap:HookScript("OnEnter", function(self)
62 | securecall("UIFrameFadeIn", nMinimapDifficulty.Overlay.Text, 0.15, 0, 1)
63 | end)
64 |
65 | Minimap:HookScript("OnLeave", function(self)
66 | securecall("UIFrameFadeOut", nMinimapDifficulty.Overlay.Text, 0.15, 1, 0)
67 | end)
68 | end
69 | end
70 |
71 | hooksecurefunc("MiniMapInstanceDifficulty_Update", function(self, event, ...)
72 | if event == "GUILD_PARTY_STATE_UPDATED" then
73 | local isGuild = ...
74 | if isGuild ~= isGuildGroup then
75 | isGuildGroup = isGuild
76 | end
77 | end
78 | HideDifficultyFrame()
79 | nMinimapDifficulty.Overlay.Text:SetText(GetDifficultyText())
80 | end)
81 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/difficulty.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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/media/texturePerformance.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nMinimap/media/texturePerformance.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nMinimap/nMinimap.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rMinimap
3 | ## RequiredDeps: !Beautycase
4 |
5 | config.lua
6 | core.lua
7 | capture.lua
8 | calendar.lua
9 | clock.lua
10 | difficulty.xml
11 | tab.xml
12 |
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/config.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nPower = ...
3 |
4 | nPower.Config = {
5 | position = {"CENTER", UIParent, 0, -100},
6 | sizeWidth = 200,
7 | scale = 1.0,
8 |
9 | activeAlpha = 1,
10 | inactiveAlpha = 0.3,
11 | emptyAlpha = 0,
12 |
13 | valueAbbrev = true,
14 |
15 | valueFont = "Fonts\\ARIALN.ttf",
16 | valueFontSize = 20,
17 | valueFontOutline = true,
18 | valueFontAdjustmentX = 0,
19 |
20 | hp = {
21 | show = false,
22 | hpFont = "Fonts\\ARIALN.ttf",
23 | hpFontOutline = true,
24 | hpFontSize = 25,
25 | hpFontColor = {0.0, 1.0, 0.0},
26 | hpFontHeightAdjustment = 10,
27 | },
28 |
29 | -- Resource text shown above the bar.
30 | showSoulshards = true,
31 | showHolypower = true,
32 | showComboPoints = true,
33 | showChi = true,
34 | showRunes = true,
35 | showArcaneCharges = true,
36 |
37 | extraFont = "Fonts\\ARIALN.ttf",
38 | extraFontSize = 16,
39 | extraFontOutline = true,
40 |
41 | -- Power Bar
42 | showPowerType = {
43 | ["MANA"] = true,
44 | ["ENERGY"] = true,
45 | ["RAGE"] = true,
46 | ["FOCUS"] = true,
47 | ["RUNIC_POWER"] = true,
48 | ["FURY"] = true,
49 | ["PAIN"] = true,
50 | ["LUNAR_POWER"] = true,
51 | ["INSANITY"] = true,
52 | ["MAELSTROM"] = true,
53 | },
54 |
55 | holyPower = {
56 | -- Displays holy power as a rune (#) instead of a number.
57 | showRunes = false,
58 |
59 | holyFont = "Fonts\\ARIALN.ttf",
60 | holyFontSize = 15,
61 | holyFontOutline = true,
62 | },
63 |
64 | rune = {
65 | show = true,
66 |
67 | runeFont = "Fonts\\ARIALN.ttf",
68 | runeFontSize = 15,
69 | runeFontOutline = true,
70 | },
71 | }
72 |
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/media/statusbarTexture.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nPower/media/statusbarTexture.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/media/textureArrowAbove.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nPower/media/textureArrowAbove.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/media/textureArrowBelow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nPower/media/textureArrowBelow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/media/textureGlow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nPower/media/textureGlow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/nPower.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rPower
3 |
4 | nPower.xml
5 |
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/nPower.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Interface/AddOns/nPower/utils.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nPower = ...
3 | local config = nPower.Config
4 |
5 | local floor = math.floor
6 |
7 | function nPower:FormatValue(v)
8 | if (v >= 10000) then
9 | return ("%.1fk"):format(v / 1e3)
10 | else
11 | return v
12 | end
13 | end
14 |
15 | function nPower:Round(num, idp)
16 | local mult = 10^(idp or 0)
17 | return floor(num * mult + 0.5) / mult
18 | end
19 |
20 | function nPower:Fade(frame, timeToFade, startAlpha, endAlpha)
21 | if (self:Round(frame:GetAlpha(), 1) ~= endAlpha) then
22 | local mode = startAlpha > endAlpha and "In" or "Out"
23 | securecall("UIFrameFade"..mode, frame, timeToFade, startAlpha, endAlpha)
24 | end
25 | end
26 |
27 | function nPower:HasExtraPoints(class)
28 | if (
29 | class == "WARLOCK" and config.showSoulshards
30 | or class == "PALADIN" and config.showHolypower and not config.holyPower.showRunes
31 | or class == "ROGUE" and config.showComboPoints
32 | or class == "DRUID" and config.showComboPoints
33 | or class == "MONK" and config.showChi
34 | or class == "MAGE" and config.showArcaneCharges
35 | ) then
36 | return true
37 | else
38 | return false
39 | end
40 | end
41 |
42 | function nPower.UpdateHealthTextLocation(self, nump)
43 | if not self.HPText then
44 | return
45 | end
46 |
47 | if (self.extraPoints) then
48 | self.HPText:ClearAllPoints()
49 | if (nump == 0) then
50 | self.HPText:SetPoint("CENTER", 0, 0)
51 | else
52 | self.HPText:SetPoint("CENTER", 0, config.extraFontSize + config.hp.hpFontHeightAdjustment)
53 | end
54 | elseif (self.Rune) then
55 | local offset
56 | if (self.class == "PALADIN" and self.spec ~= SPEC_PALADIN_RETRIBUTION) then
57 | offset = config.hp.hpFontHeightAdjustment
58 | else
59 | offset = self.Rune[1]:GetWidth() + config.hp.hpFontHeightAdjustment
60 | end
61 | self.HPText:ClearAllPoints()
62 | self.HPText:SetPoint("CENTER", 0, offset)
63 | else
64 | self.HPText:ClearAllPoints()
65 | self.HPText:SetPoint("CENTER", 0, 0)
66 | end
67 | end
68 |
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/config.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nTooltip = ...
3 |
4 | nTooltip.Config = {
5 | fontSize = 15,
6 | fontOutline = false,
7 |
8 | position = {
9 | "BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", -39, 82
10 | },
11 |
12 | showOnMouseover = false,
13 | hideInCombat = false, -- Hide unit frame tooltips during combat
14 |
15 | reactionBorderColor = false,
16 | itemqualityBorderColor = true,
17 |
18 | abbrevRealmNames = false,
19 | showPlayerTitles = true,
20 | showUnitRole = true,
21 | showPVPIcons = true, -- Show pvp icons instead of just a prefix
22 | showMouseoverTarget = true,
23 | showSpecializationIcon = true,
24 |
25 | healthbar = {
26 | showHealthValue = true,
27 |
28 | healthFormat = "$cur / $max", -- Possible: $cur, $max, $deficit, $perc, $smartperc, $smartcolorperc, $colorperc
29 | healthFullFormat = "$cur", -- if the tooltip unit has 100% hp
30 |
31 | fontSize = 13,
32 | font = STANDARD_TEXT_FONT,
33 | showOutline = true,
34 | textPos = "CENTER", -- Possible "TOP" "BOTTOM" "CENTER"
35 |
36 | reactionColoring = false, -- Overrides customColor
37 | customColor = {
38 | apply = false,
39 | r = 0,
40 | g = 1,
41 | b = 1
42 | }
43 | },
44 | }
45 |
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/health.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, nTooltip = ...
3 | local cfg = nTooltip.Config
4 |
5 | if not cfg.healthbar.showHealthValue then
6 | return
7 | end
8 |
9 | local select = select
10 | local tonumber = tonumber
11 |
12 | local modf = math.modf
13 | local gsub = string.gsub
14 | local format = string.format
15 |
16 | local bar = GameTooltipStatusBar
17 | bar.Text = bar:CreateFontString(nil, "OVERLAY")
18 | bar.Text:SetPoint("CENTER", bar, cfg.healthbar.textPos, 0, 1)
19 |
20 | if cfg.healthbar.showOutline then
21 | bar.Text:SetFont(cfg.healthbar.font, cfg.healthbar.fontSize, "THINOUTLINE")
22 | bar.Text:SetShadowOffset(0, 0)
23 | else
24 | bar.Text:SetFont(cfg.healthbar.font, cfg.healthbar.fontSize)
25 | bar.Text:SetShadowOffset(1, -1)
26 | end
27 |
28 | local function ColorGradient(perc, ...)
29 | if perc >= 1 then
30 | local r, g, b = select(select("#", ...) - 2, ...)
31 | return r, g, b
32 | elseif perc <= 0 then
33 | local r, g, b = ...
34 | return r, g, b
35 | end
36 |
37 | local num = select("#", ...) / 3
38 |
39 | local segment, relperc = modf(perc*(num-1))
40 | local r1, g1, b1, r2, g2, b2 = select((segment*3)+1, ...)
41 |
42 | return r1 + (r2-r1)*relperc, g1 + (g2-g1)*relperc, b1 + (b2-b1)*relperc
43 | end
44 |
45 | local function FormatValue(value)
46 | if value >= 1e6 then
47 | return tonumber(format("%.1f", value/1e6)).."m"
48 | elseif value >= 1e3 then
49 | return tonumber(format("%.1f", value/1e3)).."k"
50 | else
51 | return value
52 | end
53 | end
54 |
55 | local function DeficitValue(value)
56 | if value == 0 then
57 | return ""
58 | else
59 | return "-"..FormatValue(value)
60 | end
61 | end
62 |
63 | local function GetHealthTag(text, cur, max)
64 | local perc = format("%d", (cur/max)*100)
65 |
66 | if max == 1 then
67 | return perc
68 | end
69 |
70 | local r, g, b = ColorGradient(cur/max, 1, 0, 0, 1, 1, 0, 0, 1, 0)
71 | text = gsub(text, "$cur", format("%s", FormatValue(cur)))
72 | text = gsub(text, "$max", format("%s", FormatValue(max)))
73 | text = gsub(text, "$deficit", format("%s", DeficitValue(max-cur)))
74 | text = gsub(text, "$perc", format("%d", perc).."%%")
75 | text = gsub(text, "$smartperc", format("%d", perc))
76 | text = gsub(text, "$smartcolorperc", format("|cff%02x%02x%02x%d|r", r*255, g*255, b*255, perc))
77 | text = gsub(text, "$colorperc", format("|cff%02x%02x%02x%d", r*255, g*255, b*255, perc).."%%|r")
78 |
79 | return text
80 | end
81 |
82 | GameTooltipStatusBar:HookScript("OnValueChanged", function(self, value)
83 | if self.Text then
84 | self.Text:SetText("")
85 | end
86 |
87 | if not value then
88 | return
89 | end
90 |
91 | local min, max = self:GetMinMaxValues()
92 |
93 | if (value < min) or (value > max) or (value == 0) or (value == 1) then
94 | return
95 | end
96 |
97 | if not self.Text then
98 | CreateHealthString(self)
99 | end
100 |
101 | local fullString = GetHealthTag(cfg.healthbar.healthFullFormat, value, max)
102 | local normalString = GetHealthTag(cfg.healthbar.healthFormat, value, max)
103 |
104 | local perc = (value/max)*100
105 | if perc >= 100 and value ~= 1 then
106 | self.Text:SetText(fullString)
107 | elseif perc < 100 and value ~= 1 then
108 | self.Text:SetText(normalString)
109 | else
110 | self.Text:SetText("")
111 | end
112 | end)
113 |
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/media/UI-PVP-Alliance.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nTooltip/media/UI-PVP-Alliance.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/media/UI-PVP-FFA.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nTooltip/media/UI-PVP-FFA.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/media/UI-PVP-Horde.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/nTooltip/media/UI-PVP-Horde.blp
--------------------------------------------------------------------------------
/Interface/AddOns/nTooltip/nTooltip.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Title: |cffCC3333 n|rTooltip
3 | ## OptionalDeps: !Beautycase
4 |
5 | config.lua
6 | core.lua
7 | health.lua
8 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/func/aura.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, ns = ...
3 | local config = ns.Config
4 |
5 | local GetTime = GetTime
6 | local floor = floor
7 |
8 | local function ExactTime(time)
9 | return format("%.1f", time), (time * 100 - floor(time * 100))/100
10 | end
11 |
12 | local function IsMine(unit)
13 | if unit == "player" or unit == "vehicle" or unit == "pet" then
14 | return true
15 | else
16 | return false
17 | end
18 | end
19 |
20 | ns.UpdateAuraTimer = function(self, elapsed)
21 | self.elapsed = (self.elapsed or 0) + elapsed
22 | if self.elapsed < 0.1 then
23 | return
24 | end
25 |
26 | self.elapsed = 0
27 |
28 | local timeLeft = self.expires - GetTime()
29 | if timeLeft <= 0 then
30 | self.remaining:SetText(nil)
31 | else
32 | if timeLeft <= 5 and IsMine(self.caster) then
33 | self.remaining:SetText("|cffff0000"..ExactTime(timeLeft).."|r")
34 | if not self.ignoreSize then
35 | self.remaining:SetFont(config.font.normal, 12, "OUTLINE")
36 | end
37 | else
38 | self.remaining:SetText(ns.FormatTime(timeLeft))
39 | if not self.ignoreSize then
40 | self.remaining:SetFont(config.font.normal, 8, "OUTLINE")
41 | end
42 | end
43 | end
44 | end
45 |
46 | ns.PostUpdateIcon = function(self, unit, button, index, position)
47 | button:SetAlpha(1)
48 |
49 | if button.isStealable then
50 | if button.Shadow then
51 | button.Shadow:SetVertexColor(1, 1, 0, 1)
52 | end
53 | else
54 | if button.Shadow then
55 | button.Shadow:SetVertexColor(0, 0, 0, 1)
56 | end
57 | end
58 |
59 | if config.units.target.colorPlayerDebuffsOnly then
60 | if unit == "target" then
61 | if button.isDebuff then
62 | if not IsMine(button.caster) then
63 | button.overlay:SetVertexColor(0.45, 0.45, 0.45)
64 | button.icon:SetDesaturated(true)
65 | else
66 | button.icon:SetDesaturated(false)
67 | end
68 | end
69 | end
70 | end
71 |
72 | if button.remaining then
73 | if unit == "target"
74 | and button.isDebuff
75 | and not IsMine(button.caster)
76 | and (not UnitIsFriend("player", unit) and UnitCanAttack(unit, "player") and not UnitPlayerControlled(unit))
77 | and not config.units.target.showAllTimers
78 | then
79 |
80 | if button.remaining:IsShown() then
81 | button.remaining:Hide()
82 | end
83 |
84 | button:SetScript("OnUpdate", nil)
85 | else
86 | local _, _, _, _, duration, expirationTime = UnitAura(unit, index, button.filter)
87 | if duration and duration > 0 then
88 | if not button.remaining:IsShown() then
89 | button.remaining:Show()
90 | end
91 | else
92 | if button.remaining:IsShown() then
93 | button.remaining:Hide()
94 | end
95 | end
96 |
97 | button.duration = duration
98 | button.expires = expirationTime
99 | button:SetScript("OnUpdate", ns.UpdateAuraTimer)
100 | end
101 | end
102 | end
103 |
104 | ns.UpdateAuraIcons = function(auras, button)
105 | if not button.Shadow then
106 | button:SetFrameLevel(1)
107 |
108 | button.overlay:SetTexture(config.media.border)
109 | button.overlay:SetTexCoord(0, 1, 0, 1)
110 | button.overlay:ClearAllPoints()
111 | button.overlay:SetPoint("TOPRIGHT", button.icon, 1.35, 1.35)
112 | button.overlay:SetPoint("BOTTOMLEFT", button.icon, -1.35, -1.35)
113 |
114 | button.count:SetFont(config.font.normal, 11, "OUTLINE")
115 | button.count:SetDrawLayer("OVERLAY",7)
116 | button.count:SetShadowOffset(0, 0)
117 | button.count:ClearAllPoints()
118 | button.count:SetPoint("BOTTOMRIGHT", button.icon, 2, 0)
119 |
120 | if config.show.disableCooldown then
121 | button.cd:SetReverse(false)
122 | button.cd:SetDrawEdge(true)
123 | button.cd:ClearAllPoints()
124 | button.cd:SetHideCountdownNumbers(true)
125 | button.cd:SetPoint("TOPRIGHT", button.icon, "TOPRIGHT", -1, -1)
126 | button.cd:SetPoint("BOTTOMLEFT", button.icon, "BOTTOMLEFT", 1, 1)
127 | else
128 | auras.disableCooldown = true
129 |
130 | button.remaining = button:CreateFontString(nil, "OVERLAY")
131 | button.remaining:SetFont(config.font.normal, 8, "OUTLINE")
132 | button.remaining:SetShadowOffset(0, 0)
133 | button.remaining:SetPoint("TOP", button.icon, 0, 2)
134 | end
135 |
136 | button.Shadow = button:CreateTexture(nil, "BACKGROUND")
137 | button.Shadow:SetPoint("TOPLEFT", button.icon, "TOPLEFT", -4, 4)
138 | button.Shadow:SetPoint("BOTTOMRIGHT", button.icon, "BOTTOMRIGHT", 4, -4)
139 | button.Shadow:SetTexture("Interface\\AddOns\\oUF_Neav\\media\\borderBackground")
140 | button.Shadow:SetVertexColor(0, 0, 0, 1)
141 |
142 | if button.stealable then
143 | local stealable = button:CreateTexture(nil, "OVERLAY")
144 | stealable:SetPoint("TOPLEFT", -4, 4)
145 | stealable:SetPoint("BOTTOMRIGHT", 4, -4)
146 | end
147 |
148 | button.overlay.Hide = function(self)
149 | self:SetVertexColor(0.5, 0.5, 0.5, 1)
150 | end
151 | end
152 | end
153 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/func/castbar.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, ns = ...
3 | local config = ns.Config
4 |
5 | function ns.ColorBorder(self, ...)
6 | local texture, r, g, b = ...
7 | self:SetBeautyBorderTexture(texture)
8 | self:SetBeautyBorderColor(r, g, b)
9 | end
10 |
11 | function ns.UpdateCastbarColor(self)
12 | local startColor = self.channeling and self.channeledColor or self.castColor or {1.0, 0.7, 0.0}
13 | local nonInterruptibleColor = self.nonInterruptibleColor or {0.7, 0.0, 0.0}
14 |
15 | self:SetStatusBarColor(unpack(startColor))
16 | self.Background:SetVertexColor(startColor[1]*0.3, startColor[2]*0.3, startColor[3]*0.3)
17 |
18 | if self.unit ~= "player" then
19 | if self.notInterruptible then
20 | ns.ColorBorder(self, "white", unpack(nonInterruptibleColor))
21 |
22 | if self.IconOverlay then
23 | ns.ColorBorder(self.IconOverlay, "white", unpack(nonInterruptibleColor))
24 | end
25 | else
26 | ns.ColorBorder(self, "default", 1.0, 1.0, 1.0)
27 |
28 | if self.IconOverlay then
29 | ns.ColorBorder(self.IconOverlay, "default", 1.0, 1.0, 1.0)
30 | end
31 | end
32 | else
33 | ns.ColorBorder(self, "default", 1.0, 1.0, 1.0)
34 |
35 | if self.IconOverlay then
36 | ns.ColorBorder(self.IconOverlay, "default", 1.0, 1.0, 1.0)
37 | end
38 | end
39 | end
40 |
41 | function ns.CustomTimeText(self, duration)
42 | if self.max > 86400 then
43 | self.Time:SetFormattedText("%.1f/%.1f", floor(duration/86400 + 0.5), floor(self.max/86400 + 0.5))
44 | else
45 | self.Time:SetFormattedText("%.1f/%.1f", duration, self.max)
46 | end
47 | end
48 |
49 | function ns.CustomDelayText(self, duration)
50 | self.Time:SetFormattedText("[|cffff0000-%.1f|r] %.1f/%.1f", self.delay, duration, self.max)
51 | end
52 |
53 | function ns.CreateCastbarStrings(self, size)
54 | self.Castbar.Time = self.Castbar:CreateFontString(nil, "OVERLAY")
55 |
56 | if size then
57 | self.Castbar.Time:SetFont(config.font.normal, 21)
58 | self.Castbar.Time:SetPoint("RIGHT", self.Castbar, -2, 0)
59 | else
60 | self.Castbar.Time:SetFont(config.font.normal, config.font.normalSize)
61 | self.Castbar.Time:SetPoint("RIGHT", self.Castbar, -5, 0)
62 | end
63 |
64 | self.Castbar.Time:SetShadowOffset(1, -1)
65 | self.Castbar.Time:SetHeight(10)
66 | self.Castbar.Time:SetJustifyH("RIGHT")
67 | self.Castbar.Time:SetParent(self.Castbar)
68 |
69 | self.Castbar.Text = self.Castbar:CreateFontString(nil, "OVERLAY")
70 | self.Castbar.Text:SetFont(config.font.normal, config.font.normalSize)
71 | self.Castbar.Text:SetPoint("LEFT", self.Castbar, 4, 0)
72 |
73 | if size then
74 | self.Castbar.Text:SetPoint("RIGHT", self.Castbar.Time, "LEFT", -7, 0)
75 | else
76 | self.Castbar.Text:SetPoint("RIGHT", self.Castbar.Time, "LEFT", -4, 0)
77 | end
78 |
79 | self.Castbar.Text:SetShadowOffset(1, -1)
80 | self.Castbar.Text:SetHeight(10)
81 | self.Castbar.Text:SetJustifyH("LEFT")
82 | self.Castbar.Text:SetParent(self.Castbar)
83 | end
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/func/func.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, ns = ...
3 | local config = ns.Config
4 |
5 | local select = select
6 |
7 | local fmod = math.fmod
8 | local floor = math.floor
9 | local gsub = string.gsub
10 | local format = string.format
11 |
12 | local day, hour, minute = 86400, 3600, 60
13 |
14 | local function FormatValue(value)
15 | if value < 1e3 then
16 | return floor(value)
17 | elseif value >= 1e12 then
18 | return string.format("%.3ft", value/1e12)
19 | elseif value >= 1e9 then
20 | return string.format("%.3fb", value/1e9)
21 | elseif value >= 1e6 then
22 | return string.format("%.2fm", value/1e6)
23 | elseif value >= 1e3 then
24 | return string.format("%.1fk", value/1e3)
25 | end
26 | end
27 |
28 | local function DeficitValue(value)
29 | if value == 0 then
30 | return ""
31 | else
32 | return "-"..FormatValue(value)
33 | end
34 | end
35 |
36 | ns.cUnit = function(unit)
37 | if unit:match("vehicle") then
38 | return "player"
39 | elseif unit:match("party%d") then
40 | return "party"
41 | elseif unit:match("arena%d") then
42 | return "arena"
43 | elseif unit:match("boss%d") then
44 | return "boss"
45 | elseif unit:match("partypet%d") then
46 | return "pet"
47 | else
48 | return unit
49 | end
50 | end
51 |
52 | ns.FormatTime = function(time)
53 | if time >= day then
54 | return format("%dd", floor(time/day + 0.5))
55 | elseif time>= hour then
56 | return format("%dh", floor(time/hour + 0.5))
57 | elseif time >= minute then
58 | return format("%dm", floor(time/minute + 0.5))
59 | end
60 |
61 | return format("%d", fmod(time, minute))
62 | end
63 |
64 | local function GetUnitStatus(unit)
65 | if UnitIsDead(unit) then
66 | return DEAD
67 | elseif UnitIsGhost(unit) then
68 | return "Ghost"
69 | elseif not UnitIsConnected(unit) then
70 | return PLAYER_OFFLINE
71 | else
72 | return ""
73 | end
74 | end
75 |
76 | local function GetFormattedText(text, cur, max, alt)
77 | local perc = (cur/max)*100
78 |
79 | if alt then
80 | text = gsub(text, "$alt", ((alt > 0) and format("%s", FormatValue(alt)) or ""))
81 | end
82 |
83 | local r, g, b = oUF.ColorGradient(cur, max, unpack(oUF.smoothGradient or oUF.colors.smooth))
84 | text = gsub(text, "$cur", format("%s", (cur > 0 and FormatValue(cur)) or ""))
85 | text = gsub(text, "$max", format("%s", FormatValue(max)))
86 | text = gsub(text, "$deficit", format("%s", DeficitValue(max-cur)))
87 | text = gsub(text, "$perc", format("%d", perc).."%%")
88 | text = gsub(text, "$smartperc", format("%d", perc))
89 | text = gsub(text, "$smartcolorperc", format("|cff%02x%02x%02x%d|r", r*255, g*255, b*255, perc))
90 | text = gsub(text, "$colorperc", format("|cff%02x%02x%02x%d", r*255, g*255, b*255, perc).."%%|r")
91 |
92 | return text
93 | end
94 |
95 | ns.GetHealthText = function(unit, cur, max)
96 | local uconf = config.units[ns.cUnit(unit)]
97 |
98 | if not cur then
99 | cur = UnitHealth(unit)
100 | max = UnitHealthMax(unit)
101 | end
102 |
103 | local healthString
104 | if UnitIsDeadOrGhost(unit) or not UnitIsConnected(unit) then
105 | healthString = GetUnitStatus(unit)
106 | elseif cur == max and uconf and uconf.healthTagFull then
107 | healthString = GetFormattedText(uconf.healthTagFull, cur, max)
108 | elseif uconf and uconf.healthTag then
109 | healthString = GetFormattedText(uconf.healthTag, cur, max)
110 | else
111 | if cur == max then
112 | healthString = FormatValue(cur)
113 | else
114 | healthString = FormatValue(cur).."/"..FormatValue(max)
115 | end
116 | end
117 |
118 | return healthString
119 | end
120 |
121 | ns.GetPowerText = function(unit, cur, max)
122 | local uconf = config.units[ns.cUnit(unit)]
123 |
124 | if not cur then
125 | max = UnitPower(unit)
126 | cur = UnitPowerMax(unit)
127 | end
128 |
129 | local alt = UnitPower(unit, ALTERNATE_POWER_INDEX)
130 | local powerType = UnitPowerType(unit)
131 |
132 | local powerString
133 | if UnitIsDeadOrGhost(unit) or not UnitIsConnected(unit) then
134 | powerString = ""
135 | elseif max == 0 then
136 | powerString = ""
137 | elseif not UnitHasMana(unit) or powerType ~= 0 or UnitHasVehicleUI(unit) and uconf and uconf.powerTagNoMana then
138 | powerString = GetFormattedText(uconf.powerTagNoMana, cur, max, alt)
139 | elseif (cur == max) and uconf and uconf.powerTagFull then
140 | powerString = GetFormattedText(uconf.powerTagFull, cur, max, alt)
141 | elseif uconf and uconf.powerTag then
142 | powerString = GetFormattedText(uconf.powerTag, cur, max, alt)
143 |
144 | else
145 | if cur == max then
146 | powerString = FormatValue(cur)
147 | else
148 | powerString = FormatValue(cur).."/"..FormatValue(max)
149 | end
150 | end
151 |
152 | return powerString
153 | end
154 |
155 | ns.MultiCheck = function(what, ...)
156 | for i = 1, select("#", ...) do
157 | if what == select(i, ...) then
158 | return true
159 | end
160 | end
161 |
162 | return false
163 | end
164 |
165 | ns.utf8sub = function(string, index)
166 | local bytes = string:len()
167 | if bytes <= index then
168 | return string
169 | else
170 | local length, currentIndex = 0, 1
171 |
172 | while currentIndex <= bytes do
173 | length = length + 1
174 | local char = string:byte(currentIndex)
175 |
176 | if char > 240 then
177 | currentIndex = currentIndex + 4
178 | elseif char > 225 then
179 | currentIndex = currentIndex + 3
180 | elseif char > 192 then
181 | currentIndex = currentIndex + 2
182 | else
183 | currentIndex = currentIndex + 1
184 | end
185 |
186 | if length == index then
187 | break
188 | end
189 | end
190 |
191 | if length == index and currentIndex <= bytes then
192 | return string:sub(1, currentIndex - 1)
193 | else
194 | return string
195 | end
196 | end
197 | end
198 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/func/tags.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, ns = ...
3 |
4 | local len = string.len
5 | local gsub = string.gsub
6 | local format = string.format
7 | local floor = math.floor
8 |
9 | local tags = oUF.Tags.Methods
10 | local events = oUF.Tags.Events
11 |
12 | local function FormatValue(value)
13 | if value >= 1e6 then
14 | return tonumber(format("%.1f", value/1e6)).."m"
15 | elseif value >= 1e3 then
16 | return tonumber(format("%.1f", value/1e3)).."k"
17 | else
18 | return value
19 | end
20 | end
21 |
22 | tags["neav:AdditionalPower"] = function(unit)
23 | local min, max = UnitPower(unit, Enum.PowerType.Mana), UnitPowerMax(unit, Enum.PowerType.Mana)
24 | if min == max then
25 | return FormatValue(min)
26 | else
27 | return FormatValue(min).."/"..FormatValue(max)
28 | end
29 | end
30 | events["neav:AdditionalPower"] = "UNIT_POWER_UPDATE UNIT_DISPLAYPOWER UNIT_MAXPOWER"
31 |
32 | tags["neav:pvptimer"] = function(unit)
33 | if not IsPVPTimerRunning() or GetPVPTimer() == 301000 or GetPVPTimer() == 999 then
34 | return ""
35 | end
36 |
37 | return ns.FormatTime(floor(GetPVPTimer()/1000))
38 | end
39 | events["neav:pvptimer"] = "PLAYER_ENTERING_WORLD PLAYER_FLAGS_CHANGED"
40 |
41 | tags["neav:level"] = function(unit)
42 | local r, g, b
43 | local targetEffectiveLevel = UnitEffectiveLevel(unit)
44 |
45 | if UnitIsWildBattlePet(unit) or UnitIsBattlePetCompanion(unit) then
46 | targetEffectiveLevel = UnitBattlePetLevel(unit)
47 | r, g, b = 1.0, 0.82, 0.0
48 | elseif targetEffectiveLevel > 0 then
49 | if UnitCanAttack("player", unit) then
50 | local color = GetCreatureDifficultyColor(targetEffectiveLevel)
51 | r, g, b = color.r, color.g, color.b
52 | else
53 | r, g, b = 1.0, 0.82, 0.0
54 | end
55 | else
56 | r, g, b = 1, 0, 0
57 | targetEffectiveLevel = "??"
58 | end
59 |
60 | return format("|cff%02x%02x%02x%s|r", r*255, g*255, b*255, targetEffectiveLevel)
61 | end
62 | events["neav:level"] = "UNIT_LEVEL PLAYER_LEVEL_UP UNIT_CLASSIFICATION_CHANGED"
63 |
64 | tags["neav:name"] = function(unit)
65 | local r, g, b
66 | local name, _ = UnitName(unit) or UNKNOWN
67 | local _, class = UnitClass(unit)
68 |
69 | if unit == "player" or unit:match("party") then
70 | if class then
71 | local color = oUF.colors.class[class]
72 | r, g, b = color[1], color[2], color[3]
73 | else
74 | r, g, b = 0, 1, 0
75 | end
76 | elseif unit == "targettarget" or unit == "focustarget" or unit:match("arena(%d)target") then
77 | r, g, b = GameTooltip_UnitColor(unit)
78 | else
79 | r, g, b = 1, 1, 1
80 | end
81 |
82 | name = (len(name) > 15) and gsub(name, "%s?(.[\128-\191]*)%S+%s", "%1. ") or name
83 |
84 | return format("|cff%02x%02x%02x%s|r", r*255, g*255, b*255, name)
85 | end
86 | events["neav:name"] = "UNIT_NAME_UPDATE"
87 |
88 | local timer = {}
89 |
90 |
91 | tags["neav:afk"] = function(unit)
92 | local name, _ = UnitName(unit) or UNKNOWN
93 |
94 | if UnitIsAFK(unit) then
95 | if not timer[name] then
96 | timer[name] = GetTime()
97 | end
98 |
99 | local time = (GetTime() - timer[name])
100 |
101 | return ns.FormatTime(time)
102 | elseif timer[name] then
103 | timer[name] = nil
104 | end
105 | end
106 | events["neav:afk"] = "PLAYER_FLAGS_CHANGED"
107 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/kill.lua:
--------------------------------------------------------------------------------
1 | -- Kill Unused Options
2 |
3 | for _, button in pairs({
4 | "CombatPanelTargetOfTarget", -- Target of Target
5 | "DisplayPanelDisplayDropDown", -- Unit Frame Status Text
6 | }) do
7 | _G["InterfaceOptions"..button]:SetAlpha(0)
8 | _G["InterfaceOptions"..button]:SetScale(0.00001)
9 | _G["InterfaceOptions"..button]:EnableMouse(false)
10 | end
11 |
12 | function PetFrame_Update() end -- luacheck: ignore
13 |
14 | function PlayerFrame_AnimateOut() end -- luacheck: ignore
15 | function PlayerFrame_AnimFinished() end -- luacheck: ignore
16 | function PlayerFrame_ToPlayerArt() end -- luacheck: ignore
17 | function PlayerFrame_ToVehicleArt() end -- luacheck: ignore
18 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/AdditionalPowerTexture.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/AdditionalPowerTexture.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/arenaFrameTexture.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/arenaFrameTexture.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/borderBackground.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/borderBackground.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/borderIcon.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/borderIcon.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/borderIndicator.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/borderIndicator.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/borderTarget.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/borderTarget.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/borderTexture.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/borderTexture.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/customFrameTexture.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/customFrameTexture.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture_2.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture_2.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture_2_bak.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/customTargetTargetTexture_2_bak.blp
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/fontNumber.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/fontNumber.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/fontSmall.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/fontSmall.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/fontThick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/fontThick.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/fontVisitor.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/fontVisitor.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/nameBackground.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/nameBackground.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/portraitBackground.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/portraitBackground.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/statusbarTexture.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/statusbarTexture.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/media/textureGlow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_Neav/media/textureGlow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/oUF_ArenaElements/CCIcon.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or oUF
3 | assert(oUF, "oUF not loaded")
4 |
5 | local ccList = {
6 |
7 | -- Immunitys
8 |
9 | [45438] = true, -- Ice Block
10 | [33786] = true, -- Cyclone (PvP Talent)
11 | [642] = true, -- Divine Shield
12 | [1022] = true, -- Hand of Protection
13 | [204018] = true, -- Blessing of Spellwarding (Talented verion of Blessing of Protection)
14 | [46924] = true, -- Bladestorm
15 | [104773] = true, -- Unending Resolve
16 | [18499] = true, -- Berserker Rage
17 | [47585] = true, -- Dispersion
18 | [196555] = true, -- Netherwalk (Talent)
19 |
20 | -- Stuns
21 |
22 | [408] = true, -- Kidney Shot
23 | [1833] = true, -- Cheap Shot
24 | [46968] = true, -- Shockwave
25 | [853] = true, -- Hammer of Justice
26 | [5211] = true, -- Mighty Bash
27 | [30283] = true, -- Shadowfury
28 | [89766] = true, -- Axe Toss
29 | [22570] = true, -- Maim
30 | [47481] = true, -- Gnaw
31 | [1776] = true, -- Gouge
32 | [6770] = true, -- Sap
33 | [88625] = true, -- Holy Word: Chastise
34 | [91797] = true, -- Monstrous Blow (Gnaw with DT)
35 | [179057] = true, -- Chaos Nova
36 | [221562] = true, -- Asphyxiate
37 | [199804] = true, -- Between the Eyes
38 | [207165] = true, -- Abomination[s Might
39 | [211794] = true, -- Winter is Coming
40 | [211881] = true, -- Fel Eruption
41 |
42 | -- CC
43 |
44 | [605] = true, -- Mind Control
45 | [205364] = true, -- Dominant Mind (Talented verion of Mind Control)
46 | [2094] = true, -- Blind
47 | [118] = true, -- Polymorph
48 | [51514] = true, -- Hex
49 | [6789] = true, -- Death Coil
50 | [5246] = true, -- Intimidating Shout
51 | [8122] = true, -- Psychic Scream
52 | [5484] = true, -- Howl of Terror
53 | [5782] = true, -- Fear
54 | [6358] = true, -- Seduction
55 | [187650] = true, -- Freezing Trap
56 | [20066] = true, -- Repentance
57 | [339] = true, -- Entangling Roots
58 | [31661] = true, -- Dragon[s Breath
59 | [217832] = true, -- Imprison
60 | [9484] = true, -- Shackle Undead
61 | [115078] = true, -- Paralysis
62 |
63 | -- Silences
64 |
65 | [47476] = true, -- Strangulate
66 | [1330] = true, -- Garrote - Silence
67 | [15487] = true, -- Silence (priest)
68 | [19647] = true, -- Spell Lock
69 | [183752] = true, -- Consume Magic
70 | [202137] = true, -- Sigil of Silence
71 | }
72 |
73 | local Update = function(self, event, unit)
74 | if not unit or unit ~= self.unit then return end
75 |
76 | local element = self.CCIcon
77 |
78 | for i = 1, 40 do
79 | local name, icon, _, _, duration, expirationTime, _, _, _, spellId = UnitDebuff(unit, i)
80 |
81 | if name then
82 | local results = ccList[spellId] -- ccFilter(spellId)
83 |
84 | if results then
85 | CooldownFrame_Set(element.cooldownFrame, expirationTime - duration, duration, duration > 0)
86 | element.Icon:SetTexture(icon)
87 | element:Show()
88 | return
89 | end
90 | end
91 | end
92 | element:Hide()
93 |
94 | if event == "PLAYER_ENTERING_WORLD" then
95 | CooldownFrame_Set(element.cooldownFrame, 1, 1, 1)
96 | end
97 | end
98 |
99 | local Enable = function(self)
100 | local element = self.CCIcon
101 | if element then
102 | self:RegisterEvent("UNIT_AURA", Update)
103 | self:RegisterEvent("PLAYER_ENTERING_WORLD", Update, true)
104 |
105 | if not element.cooldownFrame then
106 | element.cooldownFrame = CreateFrame("Cooldown", nil, element, "CooldownFrameTemplate")
107 | element.cooldownFrame:SetAllPoints(element)
108 | element.cooldownFrame:SetHideCountdownNumbers(false)
109 | end
110 |
111 | if not element.Icon then
112 | element.Icon = element:CreateTexture(nil, "BORDER")
113 | element.Icon:SetAllPoints(element)
114 | element.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
115 | element.Icon:SetTexture([[INTERFACE\ICONS\INV_MISC_QUESTIONMARK]])
116 | end
117 | element:Hide()
118 | return true
119 | end
120 | end
121 |
122 | local Disable = function(self)
123 | local element = self.CCIcon
124 | if element then
125 | self:UnregisterEvent("UNIT_AURA", Update)
126 | self:UnregisterEvent("PLAYER_ENTERING_WORLD", Update)
127 | element:Hide()
128 | end
129 | end
130 |
131 | oUF:AddElement("CCIcon", Update, Enable, Disable)
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/oUF_ArenaElements/PVPSpecIcon.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or oUF
3 | assert(oUF, "oUF not loaded")
4 |
5 | local Update = function(self, event, unit)
6 | if event == "ARENA_OPPONENT_UPDATE" and unit ~= self.unit then return end
7 | local specIcon = self.PVPSpecIcon
8 |
9 | local _, instanceType = IsInInstance()
10 | specIcon.instanceType = instanceType
11 |
12 | if specIcon.PreUpdate then specIcon:PreUpdate(event) end
13 |
14 | if instanceType == "arena" then
15 | local ID = self.unit:match("arena(%d)") or self:GetID() or 0
16 | local specID = GetArenaOpponentSpec(tonumber(ID))
17 | if specID and specID > 0 then
18 | local _, _, _, icon = GetSpecializationInfoByID(specID)
19 | specIcon.Icon:SetTexture(icon)
20 | else
21 | local _, unitClass, _ = UnitClass(self.unit)
22 | if unitClass and CLASS_ICON_TCOORDS[unitClass] then
23 | specIcon.Icon:SetTexture([[INTERFACE\TARGETINGFRAME\UI-Classes-Circles]])
24 | specIcon.Icon:SetTexCoord(unpack(CLASS_ICON_TCOORDS[unitClass]))
25 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
26 | else
27 | specIcon.Icon:SetTexture([[INTERFACE\ICONS\INV_MISC_QUESTIONMARK]])
28 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
29 | end
30 | end
31 | else
32 | local unitFactionGroup = UnitFactionGroup(self.unit)
33 | if unitFactionGroup == "Horde" then
34 | specIcon.Icon:SetTexture([[Interface\Icons\INV_BannerPVP_01]])
35 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
36 | elseif unitFactionGroup == "Alliance" then
37 | specIcon.Icon:SetTexture([[Interface\Icons\INV_BannerPVP_02]])
38 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
39 | else
40 | local _, unitClass, _ = UnitClass(self.unit)
41 | if unitClass and CLASS_ICON_TCOORDS[unitClass] then
42 | specIcon.Icon:SetTexture([[INTERFACE\TARGETINGFRAME\UI-Classes-Circles]])
43 | specIcon.Icon:SetTexCoord(unpack(CLASS_ICON_TCOORDS[unitClass]))
44 | else
45 | specIcon.Icon:SetTexture([[INTERFACE\ICONS\INV_MISC_QUESTIONMARK]])
46 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
47 | end
48 | end
49 | end
50 |
51 | if specIcon.PostUpdate then specIcon:PostUpdate(event) end
52 | end
53 |
54 | local Enable = function(self)
55 | local specIcon = self.PVPSpecIcon
56 | if specIcon then
57 | self:RegisterEvent("ARENA_PREP_OPPONENT_SPECIALIZATIONS", Update, true)
58 | self:RegisterEvent("ARENA_OPPONENT_UPDATE", Update)
59 | self:RegisterEvent("PLAYER_ENTERING_WORLD", Update, true)
60 |
61 | if not specIcon.Icon then
62 | specIcon.Icon = specIcon:CreateTexture(nil, "OVERLAY")
63 | specIcon.Icon:SetAllPoints(specIcon)
64 | specIcon.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
65 | if specIcon.UseCircle then
66 | local mask = specIcon:CreateMaskTexture()
67 | mask:SetTexture("Interface\\CHARACTERFRAME\\TempPortraitAlphaMask", "CLAMPTOBLACKADDITIVE", "CLAMPTOBLACKADDITIVE")
68 | mask:SetAllPoints(specIcon)
69 | specIcon.Icon:AddMaskTexture(mask)
70 | end
71 | end
72 | specIcon:Show()
73 | return true
74 | end
75 | end
76 |
77 | local Disable = function(self)
78 | local specIcon = self.PVPSpecIcon
79 | if specIcon then
80 | self:UnregisterEvent("ARENA_PREP_OPPONENT_SPECIALIZATIONS", Update)
81 | self:UnregisterEvent("ARENA_OPPONENT_UPDATE", Update)
82 | self:UnregisterEvent("PLAYER_ENTERING_WORLD", Update)
83 | specIcon:Hide()
84 | end
85 | end
86 |
87 | oUF:AddElement("PVPSpecIcon", Update, Enable, Disable)
88 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/oUF_ArenaElements/Trinkets.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or oUF
3 | assert(oUF, "oUF not loaded")
4 |
5 | local trinketSpells = {
6 | [214027] = 60, -- Adaptation
7 | [208683] = 120, -- Gladiator's Medallion
8 | [195710] = 180, -- Honorable Medallion
9 | [59752] = 90, -- Every Man for Himself
10 | [7744] = 30, -- Will of the Forsaken
11 | }
12 |
13 | local GetTrinketIcon = function(unit)
14 | local faction, _ = UnitFactionGroup(unit)
15 | if faction == "Horde" then
16 | return "Interface\\Icons\\INV_Jewelry_TrinketPVP_02"
17 | else
18 | return "Interface\\Icons\\INV_Jewelry_TrinketPVP_01"
19 | end
20 | end
21 |
22 | local Update = function(self, event, ...)
23 | self.Trinket:Show()
24 |
25 | if self.Trinket.PreUpdate then self.Trinket:PreUpdate(event) end
26 |
27 | if event == "COMBAT_LOG_EVENT_UNFILTERED" then
28 | local _, eventType, _, sourceGUID, _, _, _, _, _, _, _, spellID = CombatLogGetCurrentEventInfo()
29 | if eventType == "SPELL_CAST_SUCCESS" and sourceGUID == UnitGUID(self.unit) and trinketSpells[spellID] then
30 | CooldownFrame_Set(self.Trinket.cooldownFrame, GetTime(), trinketSpells[spellID], 1)
31 | end
32 | elseif event == "ARENA_OPPONENT_UPDATE" then
33 | local unit, updateReason = ...
34 | if updateReason == "seen" then
35 | if UnitExists(unit) and UnitIsPlayer(unit) then
36 | self.Trinket.Icon:SetTexture(GetTrinketIcon(unit))
37 | end
38 | end
39 | elseif event == "PLAYER_ENTERING_WORLD" then
40 | CooldownFrame_Set(self.Trinket.cooldownFrame, 1, 1, 1)
41 | end
42 |
43 | if self.Trinket.PostUpdate then self.Trinket:PostUpdate(event) end
44 | end
45 |
46 | local Enable = function(self)
47 | if self.Trinket then
48 | self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", Update, true)
49 | self:RegisterEvent("ARENA_OPPONENT_UPDATE", Update)
50 | self:RegisterEvent("PLAYER_ENTERING_WORLD", Update, true)
51 |
52 | if not self.Trinket.cooldownFrame then
53 | self.Trinket.cooldownFrame = CreateFrame("Cooldown", nil, self.Trinket, "CooldownFrameTemplate")
54 | self.Trinket.cooldownFrame:SetAllPoints(self.Trinket)
55 | self.Trinket.cooldownFrame:SetHideCountdownNumbers(false)
56 | end
57 |
58 | if not self.Trinket.Icon then
59 | self.Trinket.Icon = self.Trinket:CreateTexture(nil, "BORDER")
60 | self.Trinket.Icon:SetAllPoints(self.Trinket)
61 | self.Trinket.Icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
62 | self.Trinket.Icon:SetTexture(GetTrinketIcon("player"))
63 | end
64 |
65 | return true
66 | end
67 | end
68 |
69 | local Disable = function(self)
70 | if self.Trinket then
71 | self:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED", Update)
72 | self:UnregisterEvent("ARENA_OPPONENT_UPDATE", Update)
73 | self:UnregisterEvent("PLAYER_ENTERING_WORLD", Update)
74 | self.Trinket:Hide()
75 | end
76 | end
77 |
78 | oUF:AddElement("Trinket", Update, Enable, Disable)
79 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/oUF_LootSpecIndicator/lootspecindicator.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | # Element: Loot Specialization Indicator
3 |
4 | Toggles the visibility of an indicator based on the player"s current loot specialization.
5 |
6 | ## Widget
7 |
8 | LootSpecIndicator - A `Texture` used to display the loot specialization icon.
9 |
10 | ## Options
11 |
12 | .border = A "Texture` used to make a border for the icon.
13 | .alwaysShow = Forces the current specialization to be displayed even if the loot specialization matches the current specialization.
14 |
15 | ## Examples
16 |
17 | -- Position and size
18 | local LootLootSpecIndicator = self:CreateTexture(nil, "OVERLAY", nil, 2)
19 | LootLootSpecIndicator:SetSize(16, 16)
20 | LootLootSpecIndicator:SetPoint("LEFT", self)
21 |
22 | LootSpecIndicator.Border = self:CreateTexture(nil, "OVERLAY", nil, 3)
23 | LootSpecIndicator.Border:SetSize(42,42)
24 | LootSpecIndicator.Border:SetTexture("Interface/Minimap/MiniMap-TrackingBorder")
25 | LootSpecIndicator.Border:SetPoint("TOPLEFT", LootSpecIndicator, -5, 5)
26 |
27 | -- Register it with oUF
28 | self.LootLootSpecIndicator = LootSpecIndicator
29 | --]]
30 |
31 | local _, ns = ...
32 | local oUF = ns.oUF or oUF
33 |
34 | local function Update(self, event)
35 | local element = self.LootSpecIndicator
36 |
37 | --[[ Callback: LootSpecIndicator:PreUpdate()
38 | Called before the element has been updated.
39 |
40 | * self - the LootSpecIndicator element
41 | --]]
42 | if element.PreUpdate then
43 | element:PreUpdate()
44 | end
45 |
46 | local NO_SPEC_FILTER = 0
47 | local specID = GetLootSpecialization()
48 |
49 | if specID and specID > NO_SPEC_FILTER then
50 | local _, _, _, texture, _, _ = GetSpecializationInfoByID(specID)
51 | element:SetTexture(texture)
52 | element:Show()
53 | if element.Border then element.Border:Show() end
54 | elseif specID and specID == NO_SPEC_FILTER and element.alwaysShow then
55 | local id, _, _, texture, _, _, _ = GetSpecializationInfo(GetSpecialization())
56 | specID = id
57 | element:SetTexture(texture)
58 | element:Show()
59 | else
60 | element:Hide()
61 | if element.Border then element.Border:Hide() end
62 | end
63 |
64 | --[[ Callback: LootSpecIndicator:PostUpdate(spec)
65 | Called after the element has been updated.
66 |
67 | * self - the LootSpecIndicator element
68 | * specID - the spec as returned by [GetLootSpecialization](http://wowprogramming.com/docs/api/GetLootSpecialization)
69 | --]]
70 | if element.PostUpdate then
71 | return element:PostUpdate(specID)
72 | end
73 | end
74 |
75 | local function Path(self, ...)
76 | --[[ Override: LootSpecIndicator.Override(self, event, ...)
77 | Used to completely override the internal update function.
78 |
79 | * self - the parent object
80 | * event - the event triggering the update (string)
81 | * ... - the arguments accompanying the event
82 | --]]
83 | return (self.LootSpecIndicator.Override or Update) (self, ...)
84 | end
85 |
86 | local function ForceUpdate(element)
87 | return Path(element.__owner, "ForceUpdate")
88 | end
89 |
90 | local function Enable(self)
91 | local element = self.LootSpecIndicator
92 | if element then
93 | element.__owner = self
94 | element.ForceUpdate = ForceUpdate
95 |
96 | if self.unit == "player" then
97 | self:RegisterEvent("PLAYER_LOGIN", Path, true)
98 | self:RegisterEvent("PLAYER_LOOT_SPEC_UPDATED", Path, true)
99 | self:RegisterEvent("ACTIVE_TALENT_GROUP_CHANGED", Path, true)
100 | end
101 |
102 | return true
103 | end
104 | end
105 |
106 | local function Disable(self)
107 | local element = self.LootSpecIndicator
108 | if element then
109 | element:Hide()
110 |
111 | self:UnregisterEvent("PLAYER_LOGIN", Path)
112 | self:UnregisterEvent("PLAYER_LOOT_SPEC_UPDATED", Path)
113 | self:UnregisterEvent("ACTIVE_TALENT_GROUP_CHANGED", Path)
114 | end
115 | end
116 |
117 | oUF:AddElement("LootSpecIndicator", Path, Enable, Disable)
118 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/oUF_Smooth/oUF_Smooth.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or oUF
3 | assert(oUF, " was unable to locate oUF install.")
4 |
5 | local smoothing = {}
6 | local function Smooth(self, value)
7 | if value ~= self:GetValue() or value == 0 then
8 | smoothing[self] = value
9 | else
10 | smoothing[self] = nil
11 | end
12 | end
13 |
14 | local function SmoothBar(bar)
15 | if not bar.SetValue_ then
16 | bar.SetValue_ = bar.SetValue
17 | bar.SetValue = Smooth
18 | end
19 | end
20 |
21 | local function hook(frame)
22 | if frame.Health then
23 | SmoothBar(frame.Health)
24 | end
25 | if frame.Power then
26 | SmoothBar(frame.Power)
27 | end
28 | if frame.AlternativePower then
29 | SmoothBar(frame.AlternativePower)
30 | end
31 | end
32 |
33 | for _, frame in ipairs(oUF.objects) do
34 | hook(frame)
35 | end
36 | oUF:RegisterInitCallback(hook)
37 |
38 | local f = CreateFrame("Frame")
39 | f:SetScript("OnUpdate", function()
40 | for bar, value in pairs(smoothing) do
41 | local cur = bar:GetValue()
42 | local new = cur + ((value-cur) / 3)
43 | if new ~= new then
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)
56 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/offline.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or _G.oUF
3 |
4 | local Update = function(self, event, unit)
5 | if unit ~= self.unit then
6 | return
7 | end
8 |
9 | unit = unit or self.unit
10 |
11 | if UnitIsConnected(unit) then
12 | self.OfflineIcon:Hide()
13 | else
14 | self.OfflineIcon:Show()
15 | end
16 | end
17 |
18 | local Path = function(self, ...)
19 | return (self.OfflineIcon.Override or Update)(self, ...)
20 | end
21 |
22 | local ForceUpdate = function(element)
23 | return Path(element.__owner, "ForceUpdate")
24 | end
25 |
26 | local Enable = function(self)
27 | local officon = self.OfflineIcon
28 |
29 | if officon then
30 | officon.__owner = self
31 | officon.ForceUpdate = ForceUpdate
32 |
33 | self:RegisterEvent("PARTY_MEMBER_DISABLE", Path)
34 | self:RegisterEvent("PARTY_MEMBER_ENABLE", Path)
35 | self:RegisterEvent("PLAYER_TARGET_CHANGED", Path, true)
36 |
37 | if officon:IsObjectType("Texture") and not officon:GetTexture() then
38 | officon:SetTexture("Interface\\CharacterFrame\\Disconnect-Icon")
39 | end
40 |
41 | return true
42 | end
43 | end
44 |
45 | local Disable = function(self)
46 | local officon = self.OfflineIcon
47 |
48 | if officon then
49 | self:UnregisterEvent("PARTY_MEMBER_DISABLE", Path)
50 | self:UnregisterEvent("PARTY_MEMBER_ENABLE", Path)
51 | self:UnregisterEvent("PLAYER_TARGET_CHANGED", Path)
52 | end
53 | end
54 |
55 | oUF:AddElement("OfflineIcon", Path, Enable, Disable)
56 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/petBattleIcon.lua:
--------------------------------------------------------------------------------
1 | --[[
2 | # Element: Battle Pet Indicator
3 |
4 | Shows battle pet type icon.
5 |
6 | ## Widget
7 |
8 | petBattleIcon - A `Texture` used to display the loot specialization icon.
9 |
10 | self.petBattleIcon = self:CreateTexture("$parentPetBattleIcon", "ARTWORK")
11 | self.petBattleIcon:SetSize(32, 32)
12 | self.petBattleIcon:SetPoint("CENTER", self.Portrait, "RIGHT")
13 |
14 | --]]
15 |
16 | local _, ns = ...
17 | local oUF = ns.oUF or oUF
18 |
19 | local function Update(self, event)
20 | if UnitIsWildBattlePet(self.unit) or UnitIsBattlePetCompanion(self.unit) then
21 | local petType = UnitBattlePetType(self.unit)
22 | self.petBattleIcon:SetTexture("Interface\\TargetingFrame\\PetBadge-"..PET_TYPE_SUFFIX[petType])
23 | self.petBattleIcon:Show()
24 | else
25 | self.petBattleIcon:Hide()
26 | end
27 | end
28 |
29 | local function Path(self, ...)
30 | --[[ Override: petBattleIcon.Override(self, event, ...)
31 | Used to completely override the internal update function.
32 |
33 | * self - the parent object
34 | * event - the event triggering the update (string)
35 | * ... - the arguments accompanying the event
36 | --]]
37 | return (self.petBattleIcon.Override or Update) (self, ...)
38 | end
39 |
40 | local function Enable(self)
41 | local element = self.petBattleIcon
42 | if element then
43 | element.__owner = self
44 | element.ForceUpdate = ForceUpdate
45 |
46 | if self.unit == "player" then
47 | self:RegisterEvent("PLAYER_ENTERING_WORLD", Path, true)
48 | self:RegisterEvent("PLAYER_TARGET_CHANGED", Path, true)
49 | end
50 |
51 | return true
52 | end
53 | end
54 |
55 | local function Disable(self)
56 | local element = self.petBattleIcon
57 | if element then
58 | element:Hide()
59 |
60 | self:UnregisterEvent("PLAYER_ENTERING_WORLD", Path)
61 | self:UnregisterEvent("PLAYER_TARGET_CHANGED", Path)
62 | end
63 | end
64 |
65 | oUF:AddElement("petBattleIcon", Path, Enable, Disable)
66 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/modules/smartthreat.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 | local oUF = ns.oUF or oUF
3 |
4 | local Update = function(self, event, unit)
5 | if unit ~= self.unit then
6 | return
7 | end
8 |
9 | local threat = self.ThreatGlow
10 | unit = unit or self.unit
11 |
12 | local status
13 |
14 | if self.feedbackUnit and self.feedbackUnit ~= unit then
15 | status = UnitThreatSituation(self.feedbackUnit, unit)
16 | else
17 | status = UnitThreatSituation(unit)
18 | end
19 |
20 | if status and status > 0 then
21 | local r, g, b = GetThreatStatusColor(status)
22 |
23 | if threat:IsObjectType("Texture") then
24 | threat:SetVertexColor(r, g, b, 1)
25 | elseif threat:IsObjectType("FontString") then
26 | threat:SetTextColor(r, g, b, 1)
27 | elseif threat:IsObjectType("Frame") and threat:GetBackdropBorderColor() then
28 | threat:SetBackdropBorderColor(r, g, b, 1)
29 | else
30 | return
31 | end
32 | else
33 | if threat:IsObjectType("Frame") and threat:GetBackdropBorderColor() then
34 | threat:SetBackdropBorderColor(0, 0, 0, 0)
35 | else
36 | threat:SetAlpha(0)
37 | end
38 | end
39 | end
40 |
41 | local Path = function(self, ...)
42 | return (self.ThreatGlow.Override or Update)(self, ...)
43 | end
44 |
45 | local ForceUpdate = function(element)
46 | return Path(element.__owner, "ForceUpdate", element.__owner.unit)
47 | end
48 |
49 | local Enable = function(self)
50 | local threat = self.ThreatGlow
51 |
52 | if threat and not self.ThreatGlow.ignore then
53 | threat.__owner = self
54 | threat.ForceUpdate = ForceUpdate
55 |
56 | self:RegisterEvent("UNIT_THREAT_SITUATION_UPDATE", Path)
57 | self:RegisterEvent("UNIT_THREAT_LIST_UPDATE", Path)
58 | self:RegisterEvent("UNIT_TARGET", Path)
59 |
60 | return true
61 | end
62 | end
63 |
64 | local Disable = function(self)
65 | local threat = self.ThreatGlow
66 |
67 | if threat and not self.ThreatGlow.ignore then
68 | self:UnregisterEvent("UNIT_THREAT_SITUATION_UPDATE", Path)
69 | self:UnregisterEvent("UNIT_THREAT_LIST_UPDATE", Path)
70 | self:UnregisterEvent("UNIT_TARGET", Path)
71 | end
72 | end
73 |
74 | oUF:AddElement("SmartThreatGlow", Path, Enable, Disable)
75 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/oUF_Neav.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Author: Neav
3 | ## Title: oUF_|cffCC3333N|r|cffE53300e|r|cffFF4D00a|r|cffFF6633v|r
4 | ## RequiredDeps: oUF, !Beautycase
5 | ## OptionalDeps: oUF_AuraWatch
6 | ## SavedVariables: oUF_NeavDB
7 | ## X-SavedVariables: oUF_NeavDB
8 | ## X-SlashCmdList: /neav
9 | ## X-oUF: oUF_Neav
10 |
11 | oUF_Neav.xml
12 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_Neav/oUF_Neav.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 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
65 |
66 |
67 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
83 |
84 |
85 |
86 |
87 |
88 |
91 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/localization.lua:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/localization.lua
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/borderIcon.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/borderIcon.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/borderIndicator.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/borderIndicator.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/borderTarget.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/borderTarget.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/fontSmall.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/fontSmall.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/fontThick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/fontThick.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/fontVisitor.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/fontVisitor.ttf
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/statusbarTexture.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/statusbarTexture.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/media/textureGlow.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/AddOns/oUF_NeavRaid/media/textureGlow.tga
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/modules/LibSharedMedia-3.0/CHANGES.txt:
--------------------------------------------------------------------------------
1 | ------------------------------------------------------------------------
2 | r104 | funkydude | 2018-07-21 16:34:03 +0000 (Sat, 21 Jul 2018) | 1 line
3 | Changed paths:
4 | M /trunk/CallbackHandler-1.0/CallbackHandler-1.0.lua
5 |
6 | Update CallbackHandler embed.
7 | ------------------------------------------------------------------------
8 |
9 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/modules/LibSharedMedia-3.0/LibSharedMedia-3.0.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## LoadOnDemand: 1
3 |
4 | ## Title: Lib: SharedMedia-3.0
5 | ## Notes: Shared handling of media data (fonts, sounds, textures, ...) between addons.
6 | ## Author: Elkano
7 | ## Version: 3.0-104
8 | ## X-Website: http://www.wowace.com/projects/libsharedmedia-3-0/
9 | ## X-Category: Library
10 |
11 | ## X-Revision: 104
12 | ## X-Date: 2018-07-21T16:34:03Z
13 |
14 | LibStub\LibStub.lua
15 | CallbackHandler-1.0\CallbackHandler-1.0.lua
16 |
17 | LibSharedMedia-3.0\lib.xml
18 |
19 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/modules/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- $Id: LibStub.lua 76 2007-09-03 01:50:17Z mikk $
2 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/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 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/modules/oUF_Freebgrid/oUF_Freebgrid_AurasPriority.lua:
--------------------------------------------------------------------------------
1 |
2 | local _, ns = ...
3 |
4 | ns.dispelPriority = {
5 | Magic = 5,
6 | Curse = 4,
7 | Poison = 3,
8 | Disease = 2,
9 | }
10 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/oUF_NeavRaid.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 90002
2 | ## Author: Neav
3 | ## Title: oUF_|cffCC3333N|r|cffE53300e|r|cffFF4D00a|r|cffFF6633v|rRaid
4 | ## RequiredDeps: oUF, !Beautycase
5 | ## SavedVariablesPerCharacter: nRaidDB
6 |
7 | oUF_NeavRaid.xml
8 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/oUF_NeavRaid.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
36 |
55 |
56 |
--------------------------------------------------------------------------------
/Interface/AddOns/oUF_NeavRaid/tags.lua:
--------------------------------------------------------------------------------
1 | local _, ns = ...
2 |
3 | local tags = oUF.Tags.Methods
4 | local events = oUF.Tags.Events
5 | local timer = {}
6 |
7 | tags["status:raid"] = function(unit)
8 | local name = UnitName(unit) or UNKNOWN
9 |
10 | if UnitIsAFK(unit) or not UnitIsConnected(unit) then
11 | if not timer[name] then
12 | timer[name] = GetTime()
13 | end
14 |
15 | local time = GetTime() - timer[name]
16 |
17 | return ns.FormatTime(time)
18 | elseif timer[name] then
19 | timer[name] = nil
20 | end
21 | end
22 | events["status:raid"] = "PLAYER_FLAGS_CHANGED UNIT_CONNECTION"
23 |
24 |
25 | tags["name:raid"] = function(unit)
26 | local name = UnitName(unit) or UNKNOWN
27 |
28 | return ns.utf8sub(name)
29 | end
30 | events["name:raid"] = "UNIT_NAME_UPDATE"
31 |
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Border-White.tga:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Border-White.tga
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Border.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Border_OLD.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Border_OLD.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Corner.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Corner.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Gold-Border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Gold-Border.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Gold-Corner.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Gold-Corner.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Gold-Header.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Gold-Header.blp
--------------------------------------------------------------------------------
/Interface/DialogFrame/UI-DialogBox-Header.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/DialogFrame/UI-DialogBox-Header.blp
--------------------------------------------------------------------------------
/Interface/PaperDollInfoFrame/UI-Character-Skills-Bar.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/PaperDollInfoFrame/UI-Character-Skills-Bar.blp
--------------------------------------------------------------------------------
/Interface/TargetingFrame/UI-RaidTargetingIcons.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/TargetingFrame/UI-RaidTargetingIcons.blp
--------------------------------------------------------------------------------
/Interface/TargetingFrame/UI-StatusBar.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/TargetingFrame/UI-StatusBar.blp
--------------------------------------------------------------------------------
/Interface/TargetingFrame/UI-TargetingFrame-BarFill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/TargetingFrame/UI-TargetingFrame-BarFill.blp
--------------------------------------------------------------------------------
/Interface/TargetingFrame/UI-TargetingFrame-LevelBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/TargetingFrame/UI-TargetingFrame-LevelBackground.blp
--------------------------------------------------------------------------------
/Interface/Tooltips/Nameplate-Border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/Tooltips/Nameplate-Border.blp
--------------------------------------------------------------------------------
/Interface/Tooltips/Nameplate-Glow.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/Tooltips/Nameplate-Glow.blp
--------------------------------------------------------------------------------
/Interface/Tooltips/UI-Tooltip-Border.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lithammer/NeavUI/bc6b61557ee7d0ffeadf0e8c75bc623f4cc6f91f/Interface/Tooltips/UI-Tooltip-Border.blp
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2018 Peter Lithammer and "Neav"
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | VERSION ?= $(shell git tag --list --contains HEAD)
2 |
3 | ifeq ($(strip $(VERSION)),)
4 | VERSION := $(shell git rev-parse --short HEAD)
5 | endif
6 |
7 | NEAVUI_ZIP = NeavUI_v$(VERSION).zip
8 | NMAINBAR_ZIP = nMainbar_v$(VERSION).zip
9 | OUF_NEAV_ZIP = oUF_Neav_v$(VERSION).zip
10 |
11 | PROJECTS = $(NEAVUI_ZIP) $(NMAINBAR_ZIP) $(OUF_NEAV_ZIP)
12 |
13 | all: build
14 |
15 | build: $(PROJECTS)
16 |
17 | clean:
18 | $(RM) *.zip
19 |
20 | $(NMAINBAR_ZIP):
21 | cd Interface/AddOns; zip -r "$(CURDIR)/$@" !Beautycase nMainbar -x '.*' '*/.*'
22 | zip $@ LICENSE
23 |
24 | $(NEAVUI_ZIP):
25 | zip -r $@ Fonts Interface LICENSE -x '.*' '*/.*'
26 |
27 | $(OUF_NEAV_ZIP):
28 | cd Interface/AddOns; zip -r "$(CURDIR)/$@" !Beautycase oUF oUF_Neav oUF_NeavRaid -x '.*' '*/.*'
29 | zip $@ LICENSE
30 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Neav UI
2 |
3 | This is the development repository for Neav UI on WoWInterface.
4 |
5 | ## Addons included
6 |
7 | - !Beautycase
8 | - !Colorz
9 | - [evl\_RaidStatus](http://www.wowinterface.com/downloads/info15178-RaidStatus.html)
10 | - nBuff
11 | - nChat
12 | - nCore
13 | - nMainbar
14 | - nMinimap
15 | - nPower
16 | - [nPlates](http://www.wowinterface.com/downloads/info24129-nPlates2.0.html)
17 | - nTooltip
18 | - [oUF](http://www.wowinterface.com/downloads/info9994-oUF.html)
19 | - oUF\_Neav
20 | - oUF\_NeavRaid
21 |
22 | ## Credits
23 |
24 | - [Neav](https://github.com/Neav) for creating Neav UI.
25 | - [Grimsbain](https://github.com/Grimsbain) for being a co-maintainer.
26 |
27 | ## License
28 |
29 | MIT
30 |
--------------------------------------------------------------------------------