138 lines
4.9 KiB
Lua
138 lines
4.9 KiB
Lua
-- TurtleWoW decided to change and add QoL features to their
|
|
-- default client, which they consider to be wanted by everyone.
|
|
-- This modules lets you disable the target-healthpoints again.
|
|
--
|
|
-- Depending on the amount of changes in future, this might move
|
|
-- from "Unit Frames" to a more general "Revert TWoW Changes" module.
|
|
|
|
-- Skip module initialization on every other client than TurtleWoW.
|
|
if not TargetHPText or not TargetHPPercText then return end
|
|
|
|
local T = ShaguTweaks.T
|
|
local L = ShaguTweaks.L
|
|
|
|
local module = ShaguTweaks:register({
|
|
title = T["Turtle WoW Compatibility"],
|
|
description = T["Adds compatibility to Turtle WoW's custom changes."],
|
|
expansions = { ["vanilla"] = true },
|
|
enabled = true,
|
|
})
|
|
|
|
module.enable = function(self)
|
|
-- hide turtle-wow's target status texts
|
|
if ShaguTweaks_config[T["Real Health Numbers"]] == 1 then
|
|
TargetHPText:Hide()
|
|
TargetHPText.Show = function() return end
|
|
|
|
TargetHPPercText:Hide()
|
|
TargetHPPercText.Show = function() return end
|
|
end
|
|
|
|
if ShaguTweaks_config[T["MiniMap Clock"]] == 1 then
|
|
MinimapClock:SetScript("OnEnter", function()
|
|
-- read game time
|
|
local zh, zm = GetGameTime()
|
|
local sh, sm = zh, zm
|
|
|
|
-- convert custom zonetime to servertime
|
|
SetMapToCurrentZone()
|
|
if GetCurrentMapContinent() == 1 then
|
|
sh = sh + 12
|
|
sh = sh >= 24 and sh - 24 or sh
|
|
end
|
|
|
|
-- format time to strings
|
|
local zonetime = string.format("%.2d:%.2d", zh, zm)
|
|
local servertime = string.format("%.2d:%.2d", sh, sm)
|
|
local time = date("%H:%M")
|
|
|
|
-- create the tooltip
|
|
GameTooltip:ClearLines()
|
|
GameTooltip:SetOwner(this, ANCHOR_BOTTOMLEFT)
|
|
|
|
GameTooltip:AddLine(T["Clock"])
|
|
GameTooltip:AddDoubleLine(T["Localtime"], time, 1,1,1,1,1,1)
|
|
GameTooltip:AddDoubleLine(T["Servertime"], servertime, 1,1,1,1,1,1)
|
|
GameTooltip:AddDoubleLine(T["Zonetime"], zonetime, 1,1,1,1,1,1)
|
|
GameTooltip:Show()
|
|
end)
|
|
end
|
|
|
|
-- compatibility for turtle-wow's worldmap window
|
|
local HookWorldMapFrame_Maximize = WorldMapFrame_Maximize
|
|
WorldMapFrame_Maximize = function()
|
|
-- run original function
|
|
HookWorldMapFrame_Maximize()
|
|
|
|
-- re-apply worldmap window
|
|
if ShaguTweaks_config[T["WorldMap Window"]] == 1 then
|
|
WorldMapFrame:SetMovable(true)
|
|
WorldMapFrame:EnableMouse(true)
|
|
|
|
WorldMapFrame:SetScale(.85)
|
|
WorldMapFrame:ClearAllPoints()
|
|
WorldMapFrame:SetPoint("CENTER", UIParent, "CENTER", 0, 30)
|
|
WorldMapFrame:SetWidth(WorldMapButton:GetWidth() + 15)
|
|
WorldMapFrame:SetHeight(WorldMapButton:GetHeight() + 55)
|
|
|
|
-- overwrite wrong title position set by turtlewow
|
|
WorldMapFrameTitle:SetPoint("TOP", WorldMapFrame, 0, 17)
|
|
|
|
BlackoutWorld:Hide()
|
|
end
|
|
end
|
|
|
|
-- trigger once to avoid graphical glitches
|
|
WorldMapFrame_Maximize()
|
|
|
|
-- Vendor Values already owns the fallback sell-price database in this fork.
|
|
-- ClassicAPI is queried first there, so keep a single static database instead
|
|
-- of allocating a second Turtle-specific copy during addon load.
|
|
|
|
-- add druids tree of life and fast travel form to autoshift
|
|
if ShaguTweaks.dismount then
|
|
table.insert(ShaguTweaks.dismount.shapeshifts, "ability_druid_treeoflife")
|
|
table.insert(ShaguTweaks.dismount.shapeshifts, "ability_druid_stagform")
|
|
end
|
|
|
|
-- update debuff durations
|
|
L["debuffs"]["Hand of Reckoning"] = {[0]=3.0}
|
|
L["debuffs"]['Insect Swarm'] = {[0]=18.0}
|
|
L["debuffs"]['Moonfire'] = {[1]=9.0,[2]=18.0,[3]=18.0,[4]=18.0,[5]=18.0,[6]=18.0,[7]=18.0,[8]=18.0,[9]=18.0,[10]=18.0,[0]=18.0}
|
|
end
|
|
|
|
-- Turtle WoW specific libdebuff patches
|
|
local libdebuff = ShaguTweaks.libdebuff
|
|
local libdebuff_twow = CreateFrame("Frame")
|
|
libdebuff_twow:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE")
|
|
libdebuff_twow:SetScript("OnEvent", function()
|
|
-- Break early on invalid data
|
|
if not arg1 or not arg2 then return end
|
|
|
|
-- Holy Strike is a spell, but can refresh paladin judgements
|
|
-- Credits to @geojak
|
|
if string.find(arg1, "Holy Strike") then
|
|
for seal in ShaguTweaks.L["judgements"] do
|
|
local name = UnitName("target")
|
|
local level = UnitLevel("target")
|
|
if name and libdebuff.objects[name] then
|
|
if level and libdebuff.objects[name][level] and libdebuff.objects[name][level][seal] then
|
|
libdebuff:AddEffect(name, level, seal)
|
|
elseif libdebuff.objects[name][0] and libdebuff.objects[name][0][seal] then
|
|
libdebuff:AddEffect(name, 0, seal)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- refresh Immolate duration after cast Conflagrate
|
|
if string.find(arg1, "Conflagrate") then
|
|
local name = UnitName("target")
|
|
local level = UnitLevel("target")
|
|
if libdebuff.objects[name] and libdebuff.objects[name][level] and libdebuff.objects[name][level]["Immolate"] then
|
|
local duration = libdebuff.objects[name][level]["Immolate"].duration
|
|
libdebuff:UpdateDuration(name, level, "Immolate", duration - 3)
|
|
end
|
|
end
|
|
end)
|