- Fix 10year old typo in Tablet-2.0 Lib causing a memory leak (90% of Ace2 addons affected).
- Fix some other quirks with making the tablets closeable with ESC. - Fix some loading order issues with version handshake when doing a reload or /camp. - Initial implementation of an EPGP pooling system where Alts can earn and use the EP and GP of the main. - Add support for showing EPGP info on AtlasLoot and pfQuest tooltips. - Add better support for EnhTooltip from Auctioneer suite. - Filter out insignificant (lower than .1 PR) loses due to decay.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
--[[
|
--[[
|
||||||
Name: Tablet-2.0
|
Name: Tablet-2.0
|
||||||
Revision: $Rev: 17873 $
|
Revision: $Rev: 17999 $
|
||||||
Author(s): ckknight (ckknight@gmail.com)
|
Author(s): ckknight (ckknight@gmail.com)
|
||||||
Website: http://ckknight.wowinterface.com/
|
Website: http://ckknight.wowinterface.com/
|
||||||
Documentation: http://wiki.wowace.com/index.php/Tablet-2.0
|
Documentation: http://wiki.wowace.com/index.php/Tablet-2.0
|
||||||
@@ -10,7 +10,7 @@ Dependencies: AceLibrary, (optional) Dewdrop-2.0
|
|||||||
]]
|
]]
|
||||||
|
|
||||||
local MAJOR_VERSION = "Tablet-2.0"
|
local MAJOR_VERSION = "Tablet-2.0"
|
||||||
local MINOR_VERSION = "$Revision: 17873 $"
|
local MINOR_VERSION = "$Revision: 17999 $"
|
||||||
|
|
||||||
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end
|
if not AceLibrary then error(MAJOR_VERSION .. " requires AceLibrary") end
|
||||||
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
|
if not AceLibrary:IsNewVersion(MAJOR_VERSION, MINOR_VERSION) then return end
|
||||||
@@ -2205,7 +2205,7 @@ function AcquireDetachedFrame(self, registration, data, detachedData)
|
|||||||
detached.menu = nil
|
detached.menu = nil
|
||||||
detached.detachedData.detached = nil
|
detached.detachedData.detached = nil
|
||||||
detached:SetOwner(nil)
|
detached:SetOwner(nil)
|
||||||
detached.notInUse = TRUE
|
detached.notInUse = true
|
||||||
end
|
end
|
||||||
|
|
||||||
return AcquireDetachedFrame(self, registration, data, detachedData)
|
return AcquireDetachedFrame(self, registration, data, detachedData)
|
||||||
|
|||||||
@@ -0,0 +1,118 @@
|
|||||||
|
local T = AceLibrary("Tablet-2.0")
|
||||||
|
local D = AceLibrary("Dewdrop-2.0")
|
||||||
|
local C = AceLibrary("Crayon-2.0")
|
||||||
|
|
||||||
|
local BC = AceLibrary("Babble-Class-2.2")
|
||||||
|
local L = AceLibrary("AceLocale-2.2"):new("shootyepgp")
|
||||||
|
|
||||||
|
sepgp_alts = sepgp:NewModule("sepgp_alts", "AceDB-2.0")
|
||||||
|
|
||||||
|
function sepgp_alts:OnEnable()
|
||||||
|
if not T:IsRegistered("sepgp_alts") then
|
||||||
|
T:Register("sepgp_alts",
|
||||||
|
"children", function()
|
||||||
|
T:SetTitle(L["shootyepgp alts"])
|
||||||
|
self:OnTooltipUpdate()
|
||||||
|
end,
|
||||||
|
"showTitleWhenDetached", true,
|
||||||
|
"showHintWhenDetached", true,
|
||||||
|
"cantAttach", true,
|
||||||
|
"menu", function()
|
||||||
|
D:AddLine(
|
||||||
|
"text", L["Refresh"],
|
||||||
|
"tooltipText", L["Refresh window"],
|
||||||
|
"func", function() sepgp_alts:Refresh() end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
if not T:IsAttached("sepgp_alts") then
|
||||||
|
T:Open("sepgp_alts")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:OnDisable()
|
||||||
|
T:Close("sepgp_alts")
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:Refresh()
|
||||||
|
T:Refresh("sepgp_alts")
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:setHideScript()
|
||||||
|
local i = 1
|
||||||
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
while (tablet) and i<100 do
|
||||||
|
if tablet.owner ~= nil and tablet.owner == "sepgp_alts" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
|
if not (tablet:GetScript("OnHide")) then
|
||||||
|
tablet:SetScript("OnHide",function()
|
||||||
|
if not T:IsAttached("sepgp_alts") then
|
||||||
|
T:Attach("sepgp_alts")
|
||||||
|
this:SetScript("OnHide",nil)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
break
|
||||||
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:Top()
|
||||||
|
if T:IsRegistered("sepgp_alts") and (T.registry.sepgp_alts.tooltip) then
|
||||||
|
T.registry.sepgp_alts.tooltip.scroll=0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:Toggle(forceShow)
|
||||||
|
self:Top()
|
||||||
|
if T:IsAttached("sepgp_alts") then
|
||||||
|
T:Detach("sepgp_alts") -- show
|
||||||
|
if (T:IsLocked("sepgp_alts")) then
|
||||||
|
T:ToggleLocked("sepgp_alts")
|
||||||
|
end
|
||||||
|
self:setHideScript()
|
||||||
|
elseif (forceShow) then
|
||||||
|
sepgp_alts:Refresh()
|
||||||
|
else
|
||||||
|
T:Attach("sepgp_alts") -- hide
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:OnClickItem(name)
|
||||||
|
--ChatFrame_SendTell(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:BuildAltsTable()
|
||||||
|
return sepgp.alts
|
||||||
|
end
|
||||||
|
|
||||||
|
function sepgp_alts:OnTooltipUpdate()
|
||||||
|
local cat = T:AddCategory(
|
||||||
|
"columns", 2,
|
||||||
|
"text", C:Orange(L["Main"]), "child_textR", 1, "child_textG", 1, "child_textB", 1, "child_justify", "LEFT",
|
||||||
|
"text2", C:Orange(L["Alts"]), "child_text2R", 0, "child_text2G", 1, "child_text2B", 0, "child_justify2", "RIGHT"
|
||||||
|
)
|
||||||
|
local t = self:BuildAltsTable()
|
||||||
|
for main, alts in pairs(t) do
|
||||||
|
local altstring = ""
|
||||||
|
for alt,class in pairs(alts) do
|
||||||
|
local coloredalt = C:Colorize(BC:GetHexColor(class), alt)
|
||||||
|
if altstring == "" then
|
||||||
|
altstring = coloredalt
|
||||||
|
else
|
||||||
|
altstring = string.format("%s, %s",altstring,coloredalt)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
cat:AddLine(
|
||||||
|
"text", main,
|
||||||
|
"text2", altstring--,
|
||||||
|
--"func", "OnClickItem", "arg1", self, "arg2", main
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
@@ -1,3 +1,9 @@
|
|||||||
|
--[[
|
||||||
|
TODO: Bids need to be Main/Alt aware too
|
||||||
|
- Bids tablet needs to show Main's points
|
||||||
|
- Bids tablet needs to mark the Alts.
|
||||||
|
]]
|
||||||
|
|
||||||
local T = AceLibrary("Tablet-2.0")
|
local T = AceLibrary("Tablet-2.0")
|
||||||
local D = AceLibrary("Dewdrop-2.0")
|
local D = AceLibrary("Dewdrop-2.0")
|
||||||
local C = AceLibrary("Crayon-2.0")
|
local C = AceLibrary("Crayon-2.0")
|
||||||
@@ -40,10 +46,11 @@ function sepgp_bids:Refresh()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_bids:setHideScript()
|
function sepgp_bids:setHideScript()
|
||||||
local detachedFrame, tablet
|
local i = 1
|
||||||
for i=1,5 do
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
while (tablet) and i<100 do
|
||||||
if tablet and tablet.owner ~= nil and tablet.owner == "sepgp_bids" then
|
if tablet.owner ~= nil and tablet.owner == "sepgp_bids" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
if not (tablet:GetScript("OnHide")) then
|
if not (tablet:GetScript("OnHide")) then
|
||||||
tablet:SetScript("OnHide",function()
|
tablet:SetScript("OnHide",function()
|
||||||
if not T:IsAttached("sepgp_bids") then
|
if not T:IsAttached("sepgp_bids") then
|
||||||
@@ -52,8 +59,11 @@ function sepgp_bids:setHideScript()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
break
|
||||||
end
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_bids:Top()
|
function sepgp_bids:Top()
|
||||||
@@ -65,7 +75,7 @@ end
|
|||||||
function sepgp_bids:Toggle(forceShow)
|
function sepgp_bids:Toggle(forceShow)
|
||||||
self:Top()
|
self:Top()
|
||||||
if T:IsAttached("sepgp_bids") then
|
if T:IsAttached("sepgp_bids") then
|
||||||
T:Detach("sepgp_bids")
|
T:Detach("sepgp_bids") -- show
|
||||||
if (T:IsLocked("sepgp_bids")) then
|
if (T:IsLocked("sepgp_bids")) then
|
||||||
T:ToggleLocked("sepgp_bids")
|
T:ToggleLocked("sepgp_bids")
|
||||||
end
|
end
|
||||||
@@ -73,8 +83,8 @@ function sepgp_bids:Toggle(forceShow)
|
|||||||
elseif (forceShow) then
|
elseif (forceShow) then
|
||||||
sepgp_bids:Refresh()
|
sepgp_bids:Refresh()
|
||||||
else
|
else
|
||||||
T:Attach("sepgp_bids")
|
T:Attach("sepgp_bids") -- hide
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_bids:announceWinnerMS(name, pr)
|
function sepgp_bids:announceWinnerMS(name, pr)
|
||||||
@@ -115,7 +125,7 @@ function sepgp_bids:bidCountdown()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_bids:BuildBidsTable()
|
function sepgp_bids:BuildBidsTable()
|
||||||
-- {name,class,ep,gp,ep/gp}
|
-- {name,class,ep,gp,ep/gp[,main]}
|
||||||
table.sort(sepgp.bids_main, function(a,b)
|
table.sort(sepgp.bids_main, function(a,b)
|
||||||
return a[5] > b[5]
|
return a[5] > b[5]
|
||||||
end)
|
end)
|
||||||
@@ -165,21 +175,23 @@ function sepgp_bids:OnTooltipUpdate()
|
|||||||
"text", C:Gold("MainSpec Bids")
|
"text", C:Gold("MainSpec Bids")
|
||||||
):AddLine("text","")
|
):AddLine("text","")
|
||||||
local maincat = T:AddCategory(
|
local maincat = T:AddCategory(
|
||||||
"columns", 4,
|
"columns", 5,
|
||||||
"text", C:Orange("Name"), "child_textR", 1, "child_textG", 1, "child_textB", 1, "child_justify", "LEFT",
|
"text", C:Orange("Name"), "child_textR", 1, "child_textG", 1, "child_textB", 1, "child_justify", "LEFT",
|
||||||
"text2", C:Orange("ep"), "child_text2R", 1, "child_text2G", 1, "child_text2B", 1, "child_justify2", "RIGHT",
|
"text2", C:Orange("ep"), "child_text2R", 1, "child_text2G", 1, "child_text2B", 1, "child_justify2", "RIGHT",
|
||||||
"text3", C:Orange("gp"), "child_text3R", 1, "child_text3G", 1, "child_text3B", 1, "child_justify3", "RIGHT",
|
"text3", C:Orange("gp"), "child_text3R", 1, "child_text3G", 1, "child_text3B", 1, "child_justify3", "RIGHT",
|
||||||
"text4", C:Orange("pr"), "child_text4R", 1, "child_text4G", 1, "child_text4B", 0, "child_justify4", "RIGHT",
|
"text4", C:Orange("pr"), "child_text4R", 1, "child_text4G", 1, "child_text4B", 0, "child_justify4", "RIGHT",
|
||||||
|
"text5", C:Orange("Main"), "child_text5R", 1, "child_text5G", 1, "child_text5B", 0, "child_justify5", "RIGHT",
|
||||||
"hideBlankLine", true
|
"hideBlankLine", true
|
||||||
)
|
)
|
||||||
local tm = self:BuildBidsTable()
|
local tm = self:BuildBidsTable()
|
||||||
for i = 1, table.getn(tm) do
|
for i = 1, table.getn(tm) do
|
||||||
local name, class, ep, gp, pr = unpack(tm[i])
|
local name, class, ep, gp, pr, main = unpack(tm[i])
|
||||||
maincat:AddLine(
|
maincat:AddLine(
|
||||||
"text", C:Colorize(BC:GetHexColor(class), name),
|
"text", C:Colorize(BC:GetHexColor(class), name),
|
||||||
"text2", string.format("%.4g", ep),
|
"text2", string.format("%.4g", ep),
|
||||||
"text3", string.format("%.4g", gp),
|
"text3", string.format("%.4g", gp),
|
||||||
"text4", string.format("%.4g", pr),
|
"text4", string.format("%.4g", pr),
|
||||||
|
"text5", (main or ""),
|
||||||
"func", "announceWinnerMS", "arg1", self, "arg2", name, "arg3", pr
|
"func", "announceWinnerMS", "arg1", self, "arg2", name, "arg3", pr
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
@@ -188,25 +200,27 @@ function sepgp_bids:OnTooltipUpdate()
|
|||||||
"text", C:Silver("OffSpec Bids")
|
"text", C:Silver("OffSpec Bids")
|
||||||
):AddLine("text","")
|
):AddLine("text","")
|
||||||
local offcat = T:AddCategory(
|
local offcat = T:AddCategory(
|
||||||
"columns", 4,
|
"columns", 5,
|
||||||
"text", C:Orange("Name"), "child_textR", 1, "child_textG", 1, "child_textB", 1, "child_justify", "LEFT",
|
"text", C:Orange("Name"), "child_textR", 1, "child_textG", 1, "child_textB", 1, "child_justify", "LEFT",
|
||||||
"text2", C:Orange("ep"), "child_text2R", 1, "child_text2G", 1, "child_text2B", 1, "child_justify2", "RIGHT",
|
"text2", C:Orange("ep"), "child_text2R", 1, "child_text2G", 1, "child_text2B", 1, "child_justify2", "RIGHT",
|
||||||
"text3", C:Orange("gp"), "child_text3R", 1, "child_text3G", 1, "child_text3B", 1, "child_justify3", "RIGHT",
|
"text3", C:Orange("gp"), "child_text3R", 1, "child_text3G", 1, "child_text3B", 1, "child_justify3", "RIGHT",
|
||||||
"text4", C:Orange("pr"), "child_text4R", 1, "child_text4G", 1, "child_text4B", 0, "child_justify4", "RIGHT",
|
"text4", C:Orange("pr"), "child_text4R", 1, "child_text4G", 1, "child_text4B", 0, "child_justify4", "RIGHT",
|
||||||
|
"text5", C:Orange("Main"), "child_text5R", 1, "child_text5G", 1, "child_text5B", 0, "child_justify5", "RIGHT",
|
||||||
"hideBlankLine", true
|
"hideBlankLine", true
|
||||||
)
|
)
|
||||||
local _,to = self:BuildBidsTable()
|
local _,to = self:BuildBidsTable()
|
||||||
for i = 1, table.getn(to) do
|
for i = 1, table.getn(to) do
|
||||||
local name, class, ep, gp, pr = unpack(to[i])
|
local name, class, ep, gp, pr, main = unpack(to[i])
|
||||||
offcat:AddLine(
|
offcat:AddLine(
|
||||||
"text", C:Colorize(BC:GetHexColor(class), name),
|
"text", C:Colorize(BC:GetHexColor(class), name),
|
||||||
"text2", string.format("%.4g", ep),
|
"text2", string.format("%.4g", ep),
|
||||||
"text3", string.format("%.4g", gp),
|
"text3", string.format("%.4g", gp),
|
||||||
"text4", string.format("%.4g", pr),
|
"text4", string.format("%.4g", pr),
|
||||||
|
"text5", (main or ""),
|
||||||
"func", "announceWinnerOS", "arg1", self, "arg2", name, "arg3", pr
|
"func", "announceWinnerOS", "arg1", self, "arg2", name, "arg3", pr
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
+40
-10
@@ -102,10 +102,10 @@ Results will print here when done.]],
|
|||||||
["Giving %d ep to all raidmembers"] = true,
|
["Giving %d ep to all raidmembers"] = true,
|
||||||
["You aren't in a raid dummy"] = true,
|
["You aren't in a raid dummy"] = true,
|
||||||
["Giving %d ep to active reserves"] = true,
|
["Giving %d ep to active reserves"] = true,
|
||||||
["Giving %d ep to %s"] = true,
|
["Giving %d ep to %s%s."] = true,
|
||||||
["%s EP Penalty to %s."] = true,
|
["%s EP Penalty to %s%s."] = true,
|
||||||
["Giving %d gp to %s"] = true,
|
["Giving %d gp to %s%s."] = true,
|
||||||
["Awarding %d GP to %s. (Previous: %d, New: %d)"] = true,
|
["Awarding %d GP to %s%s. (Previous: %d, New: %d)"] = true,
|
||||||
["%s\'s officernote is broken:%q"] = true,
|
["%s\'s officernote is broken:%q"] = true,
|
||||||
["All EP and GP decayed by %d%%"] = true,
|
["All EP and GP decayed by %d%%"] = true,
|
||||||
["All EP and GP decayed by %s%%"] = true,
|
["All EP and GP decayed by %s%%"] = true,
|
||||||
@@ -114,7 +114,7 @@ Results will print here when done.]],
|
|||||||
["You now have: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r."] = true,
|
["You now have: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r."] = true,
|
||||||
["Close to EPGP Cap. Next Decay will change your |cffff7f00PR|r by |cffff0000%.4g|r."] = true,
|
["Close to EPGP Cap. Next Decay will change your |cffff7f00PR|r by |cffff0000%.4g|r."] = true,
|
||||||
["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."] = true,
|
["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."] = true,
|
||||||
[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."] = true,
|
[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Alt+Click|r to toggle Alts. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."] = true,
|
||||||
["Account EPs to %s."] = true,
|
["Account EPs to %s."] = true,
|
||||||
["Account GPs to %s."] = true,
|
["Account GPs to %s."] = true,
|
||||||
["shootyepgp options"] = true,
|
["shootyepgp options"] = true,
|
||||||
@@ -173,6 +173,21 @@ Results will print here when done.]],
|
|||||||
["GP Actions"] = true,
|
["GP Actions"] = true,
|
||||||
["Remind me Later"] = true,
|
["Remind me Later"] = true,
|
||||||
["Need MasterLooter to perform Bid Calls!"] = true,
|
["Need MasterLooter to perform Bid Calls!"] = true,
|
||||||
|
["shootyepgp alts"] = true,
|
||||||
|
["Enable Alts"] = true,
|
||||||
|
["Main"] = true,
|
||||||
|
["Allow Alts to use Main\'s EPGP."] = true,
|
||||||
|
["Alts EP %"] = true,
|
||||||
|
["Set the % EP Alts can earn."] = true,
|
||||||
|
[", alts"] = true,
|
||||||
|
["New Alts"] = true,
|
||||||
|
[", alts ep %"] = true,
|
||||||
|
["New Alts EP %"] = true,
|
||||||
|
["Manually modified %s\'s note. Previous main was %s"] = true,
|
||||||
|
["|cffff0000Manually modified %s\'s note. Previous main was %s|r"] = true,
|
||||||
|
[", %s\'s Main."] = true,
|
||||||
|
["Your main has been set to %s"] = true,
|
||||||
|
["Alts"] = true,
|
||||||
} end)
|
} end)
|
||||||
|
|
||||||
L:RegisterTranslations("zhCN", function() return {
|
L:RegisterTranslations("zhCN", function() return {
|
||||||
@@ -277,10 +292,10 @@ L:RegisterTranslations("zhCN", function() return {
|
|||||||
["Giving %d ep to all raidmembers"] = "给予 %d ep 到所有团员",
|
["Giving %d ep to all raidmembers"] = "给予 %d ep 到所有团员",
|
||||||
["You aren't in a raid dummy"] = "你不在一个团队",
|
["You aren't in a raid dummy"] = "你不在一个团队",
|
||||||
["Giving %d ep to active reserves"] = "给予 %d ep 在线的替补队员",
|
["Giving %d ep to active reserves"] = "给予 %d ep 在线的替补队员",
|
||||||
["Giving %d ep to %s"] = "给予 %d ep 给 %s",
|
["Giving %d ep to %s%s."] = "给予 %d ep 给 %s",
|
||||||
["%s EP Penalty to %s."] = "%s EP 惩罚 %s.",
|
["%s EP Penalty to %s%s."] = "%s EP 惩罚 %s.",
|
||||||
["Giving %d gp to %s"] = "给予 %d gp 给 %s",
|
["Giving %d gp to %s%s."] = "给予 %d gp 给 %s",
|
||||||
["Awarding %d GP to %s. (Previous: %d, New: %d)"] = "奖励 %d GP 给 %s. (以前: %d, 新: %d)",
|
["Awarding %d GP to %s%s. (Previous: %d, New: %d)"] = "奖励 %d GP 给 %s. (以前: %d, 新: %d)",
|
||||||
["%s\'s officernote is broken:%q"] = "%s\'s 官员备注无法执行:%q",
|
["%s\'s officernote is broken:%q"] = "%s\'s 官员备注无法执行:%q",
|
||||||
["All EP and GP decayed by %d%%"] = "所有EP和GP递减 %d%%",
|
["All EP and GP decayed by %d%%"] = "所有EP和GP递减 %d%%",
|
||||||
["All EP and GP decayed by %s%%"] = "所有EP和GP递减 %s%%",
|
["All EP and GP decayed by %s%%"] = "所有EP和GP递减 %s%%",
|
||||||
@@ -289,7 +304,7 @@ L:RegisterTranslations("zhCN", function() return {
|
|||||||
["You now have: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r."] = "你现在有: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r.",
|
["You now have: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r."] = "你现在有: %d EP %d GP |cffffff00%.03f|r|cffff7f00PR|r.",
|
||||||
["Close to EPGP Cap. Next Decay will change your |cffff7f00PR|r by |cffff0000%.4g|r."] = "下次递减会改变你的 |cffff7f00PR|r 从 |cffff0000%.4g|r.",
|
["Close to EPGP Cap. Next Decay will change your |cffff7f00PR|r by |cffff0000%.4g|r."] = "下次递减会改变你的 |cffff7f00PR|r 从 |cffff0000%.4g|r.",
|
||||||
["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."] = "|cffffff00点击|r 切换名单.%s \n|cffffff00右键|r 设置.",
|
["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."] = "|cffffff00点击|r 切换名单.%s \n|cffffff00右键|r 设置.",
|
||||||
[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."] = " \n|cffffff00Ctrl+点击|r 切换到替补队员. \n|cffffff00Alt+点击|r 切换到竞拍. \n|cffffff00Shift+点击|r 切换到拾取. \n|cffffff00Ctrl+Shift+点击|r 切换到日志.",
|
[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Alt+Click|r to toggle Alts. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."] = " \n|cffffff00Ctrl+点击|r 切换到替补队员. \n|cffffff00Alt+点击|r 切换到竞拍. \n|cffffff00Shift+点击|r 切换到拾取. \n|cffffff00Ctrl+Shift+点击|r 切换到日志.", -- needs update
|
||||||
["Account EPs to %s."] = "记账 EP 到 %s.",
|
["Account EPs to %s."] = "记账 EP 到 %s.",
|
||||||
["Account GPs to %s."] = "记账 GP 到 %s.",
|
["Account GPs to %s."] = "记账 GP 到 %s.",
|
||||||
["shootyepgp options"] = "shootyepgp 设置",
|
["shootyepgp options"] = "shootyepgp 设置",
|
||||||
@@ -348,4 +363,19 @@ L:RegisterTranslations("zhCN", function() return {
|
|||||||
["GP Actions"] = "GP 操作",
|
["GP Actions"] = "GP 操作",
|
||||||
["Remind me Later"] = "以后提醒我",
|
["Remind me Later"] = "以后提醒我",
|
||||||
["Need MasterLooter to perform Bid Calls!"] = "Need MasterLooter to perform Bid Calls!",
|
["Need MasterLooter to perform Bid Calls!"] = "Need MasterLooter to perform Bid Calls!",
|
||||||
|
["shootyepgp alts"] = "shootyepgp alts",
|
||||||
|
["Enable Alts"] = "Enable Alts",
|
||||||
|
["Main"] = "Main",
|
||||||
|
["Allow Alts to use Main\'s EPGP."] = "Allow Alts to use Main\'s EPGP.",
|
||||||
|
["Alts EP %"] = "Alts EP %",
|
||||||
|
["Set the % EP Alts can earn."] = "Set the % EP Alts can earn.",
|
||||||
|
[", alts"] = ", alts",
|
||||||
|
["New Alts"] = "New Alts",
|
||||||
|
[", alts ep %"] = ", alts ep %",
|
||||||
|
["New Alts EP %"] = "New Alts EP %",
|
||||||
|
["Manually modified %s\'s note. Previous main was %s"] = "Manually modified %s\'s note. Previous main was %s",
|
||||||
|
["|cffff0000Manually modified %s\'s note. Previous main was %s|r"] = "|cffff0000Manually modified %s\'s note. Previous main was %s|r",
|
||||||
|
[", %s\'s Main."] = ", %s\'s Main.",
|
||||||
|
["Your main has been set to %s"] = "Your main has been set to %s",
|
||||||
|
["Alts"] = "Alts",
|
||||||
} end)
|
} end)
|
||||||
@@ -45,10 +45,11 @@ function sepgp_logs:Refresh()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_logs:setHideScript()
|
function sepgp_logs:setHideScript()
|
||||||
local detachedFrame, tablet
|
local i = 1
|
||||||
for i=1,5 do
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
while (tablet) and i<100 do
|
||||||
if tablet and tablet.owner ~= nil and tablet.owner == "sepgp_logs" then
|
if tablet.owner ~= nil and tablet.owner == "sepgp_logs" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
if not (tablet:GetScript("OnHide")) then
|
if not (tablet:GetScript("OnHide")) then
|
||||||
tablet:SetScript("OnHide",function()
|
tablet:SetScript("OnHide",function()
|
||||||
if not T:IsAttached("sepgp_logs") then
|
if not T:IsAttached("sepgp_logs") then
|
||||||
@@ -57,8 +58,11 @@ function sepgp_logs:setHideScript()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
break
|
||||||
end
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_logs:Top()
|
function sepgp_logs:Top()
|
||||||
@@ -70,7 +74,7 @@ end
|
|||||||
function sepgp_logs:Toggle(forceShow)
|
function sepgp_logs:Toggle(forceShow)
|
||||||
self:Top()
|
self:Top()
|
||||||
if T:IsAttached("sepgp_logs") then
|
if T:IsAttached("sepgp_logs") then
|
||||||
T:Detach("sepgp_logs")
|
T:Detach("sepgp_logs") -- show
|
||||||
if (T:IsLocked("sepgp_logs")) then
|
if (T:IsLocked("sepgp_logs")) then
|
||||||
T:ToggleLocked("sepgp_logs")
|
T:ToggleLocked("sepgp_logs")
|
||||||
end
|
end
|
||||||
@@ -78,8 +82,8 @@ function sepgp_logs:Toggle(forceShow)
|
|||||||
elseif (forceShow) then
|
elseif (forceShow) then
|
||||||
sepgp_logs:Refresh()
|
sepgp_logs:Refresh()
|
||||||
else
|
else
|
||||||
T:Attach("sepgp_logs")
|
T:Attach("sepgp_logs") -- hide
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_logs:reverse(arr)
|
function sepgp_logs:reverse(arr)
|
||||||
@@ -118,4 +122,4 @@ function sepgp_logs:OnTooltipUpdate()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
@@ -45,10 +45,11 @@ function sepgp_loot:Refresh()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_loot:setHideScript()
|
function sepgp_loot:setHideScript()
|
||||||
local detachedFrame, tablet
|
local i = 1
|
||||||
for i=1,5 do
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
while (tablet) and i<100 do
|
||||||
if tablet and tablet.owner ~= nil and tablet.owner == "sepgp_loot" then
|
if tablet.owner ~= nil and tablet.owner == "sepgp_loot" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
if not (tablet:GetScript("OnHide")) then
|
if not (tablet:GetScript("OnHide")) then
|
||||||
tablet:SetScript("OnHide",function()
|
tablet:SetScript("OnHide",function()
|
||||||
if not T:IsAttached("sepgp_loot") then
|
if not T:IsAttached("sepgp_loot") then
|
||||||
@@ -57,8 +58,11 @@ function sepgp_loot:setHideScript()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
break
|
||||||
end
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_loot:Top()
|
function sepgp_loot:Top()
|
||||||
@@ -70,7 +74,7 @@ end
|
|||||||
function sepgp_loot:Toggle(forceShow)
|
function sepgp_loot:Toggle(forceShow)
|
||||||
self:Top()
|
self:Top()
|
||||||
if T:IsAttached("sepgp_loot") then
|
if T:IsAttached("sepgp_loot") then
|
||||||
T:Detach("sepgp_loot")
|
T:Detach("sepgp_loot") -- show
|
||||||
if (T:IsLocked("sepgp_loot")) then
|
if (T:IsLocked("sepgp_loot")) then
|
||||||
T:ToggleLocked("sepgp_loot")
|
T:ToggleLocked("sepgp_loot")
|
||||||
end
|
end
|
||||||
@@ -78,8 +82,8 @@ function sepgp_loot:Toggle(forceShow)
|
|||||||
elseif (forceShow) then
|
elseif (forceShow) then
|
||||||
sepgp_loot:Refresh()
|
sepgp_loot:Refresh()
|
||||||
else
|
else
|
||||||
T:Attach("sepgp_loot")
|
T:Attach("sepgp_loot") -- hide
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_loot:BuildLootTable()
|
function sepgp_loot:BuildLootTable()
|
||||||
@@ -91,7 +95,7 @@ function sepgp_loot:BuildLootTable()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_loot:OnClickItem(data)
|
function sepgp_loot:OnClickItem(data)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_loot:OnTooltipUpdate()
|
function sepgp_loot:OnTooltipUpdate()
|
||||||
@@ -118,4 +122,4 @@ function sepgp_loot:OnTooltipUpdate()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
+1
-1
@@ -20,4 +20,4 @@ function sepgp:v2tov3()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
+1
-1
@@ -813,4 +813,4 @@ function sepgp_prices:GetPrice(item,progress)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
+14
-10
@@ -40,10 +40,11 @@ function sepgp_reserves:Refresh()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_reserves:setHideScript()
|
function sepgp_reserves:setHideScript()
|
||||||
local detachedFrame, tablet
|
local i = 1
|
||||||
for i=1,5 do
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
while (tablet) and i<100 do
|
||||||
if tablet and tablet.owner ~= nil and tablet.owner == "sepgp_reserves" then
|
if tablet.owner ~= nil and tablet.owner == "sepgp_reserves" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
if not (tablet:GetScript("OnHide")) then
|
if not (tablet:GetScript("OnHide")) then
|
||||||
tablet:SetScript("OnHide",function()
|
tablet:SetScript("OnHide",function()
|
||||||
if not T:IsAttached("sepgp_reserves") then
|
if not T:IsAttached("sepgp_reserves") then
|
||||||
@@ -52,8 +53,11 @@ function sepgp_reserves:setHideScript()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
break
|
||||||
end
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_reserves:Top()
|
function sepgp_reserves:Top()
|
||||||
@@ -65,7 +69,7 @@ end
|
|||||||
function sepgp_reserves:Toggle(forceShow)
|
function sepgp_reserves:Toggle(forceShow)
|
||||||
self:Top()
|
self:Top()
|
||||||
if T:IsAttached("sepgp_reserves") then
|
if T:IsAttached("sepgp_reserves") then
|
||||||
T:Detach("sepgp_reserves")
|
T:Detach("sepgp_reserves") -- show
|
||||||
if (T:IsLocked("sepgp_reserves")) then
|
if (T:IsLocked("sepgp_reserves")) then
|
||||||
T:ToggleLocked("sepgp_reserves")
|
T:ToggleLocked("sepgp_reserves")
|
||||||
end
|
end
|
||||||
@@ -73,8 +77,8 @@ function sepgp_reserves:Toggle(forceShow)
|
|||||||
elseif (forceShow) then
|
elseif (forceShow) then
|
||||||
sepgp_reserves:Refresh()
|
sepgp_reserves:Refresh()
|
||||||
else
|
else
|
||||||
T:Attach("sepgp_reserves")
|
T:Attach("sepgp_reserves") -- hide
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_reserves:OnClickItem(name)
|
function sepgp_reserves:OnClickItem(name)
|
||||||
@@ -117,4 +121,4 @@ function sepgp_reserves:OnTooltipUpdate()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
+226
-46
@@ -1,12 +1,3 @@
|
|||||||
--[[
|
|
||||||
TODO
|
|
||||||
1. Add EP / GP Menu to raid unit context menu and loot info window.
|
|
||||||
2. Figure out a way to pool EPGP for multiple characters.
|
|
||||||
High risk of abuse though ..
|
|
||||||
One approach is have officer notes on alts contain the main name,
|
|
||||||
that at least limits the risk to officers exploiting.
|
|
||||||
Both EP and GP should transfer to main points, no earning without spending.
|
|
||||||
]]
|
|
||||||
sepgp = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceHook-2.1", "AceDB-2.0", "AceDebug-2.0", "AceEvent-2.0", "AceModuleCore-2.0", "FuBarPlugin-2.0")
|
sepgp = AceLibrary("AceAddon-2.0"):new("AceConsole-2.0", "AceHook-2.1", "AceDB-2.0", "AceDebug-2.0", "AceEvent-2.0", "AceModuleCore-2.0", "FuBarPlugin-2.0")
|
||||||
sepgp:SetModuleMixins("AceDebug-2.0")
|
sepgp:SetModuleMixins("AceDebug-2.0")
|
||||||
local D = AceLibrary("Dewdrop-2.0")
|
local D = AceLibrary("Dewdrop-2.0")
|
||||||
@@ -136,12 +127,15 @@ sepgp.timer:Hide()
|
|||||||
sepgp.timer:SetScript("OnUpdate",function() sepgp.OnUpdate(this,arg1) end)
|
sepgp.timer:SetScript("OnUpdate",function() sepgp.OnUpdate(this,arg1) end)
|
||||||
sepgp.timer:SetScript("OnEvent",function()
|
sepgp.timer:SetScript("OnEvent",function()
|
||||||
end)
|
end)
|
||||||
|
sepgp.alts = {}
|
||||||
|
|
||||||
function sepgp:OnInitialize() -- ADDON_LOADED (1) unless LoD
|
function sepgp:OnInitialize() -- ADDON_LOADED (1) unless LoD
|
||||||
if sepgp_saychannel == nil then sepgp_saychannel = "GUILD" end
|
if sepgp_saychannel == nil then sepgp_saychannel = "GUILD" end
|
||||||
if sepgp_decay == nil then sepgp_decay = sepgp.VARS.decay end
|
if sepgp_decay == nil then sepgp_decay = sepgp.VARS.decay end
|
||||||
if sepgp_progress == nil then sepgp_progress = "T1" end
|
if sepgp_progress == nil then sepgp_progress = "T1" end
|
||||||
if sepgp_discount == nil then sepgp_discount = 0.25 end
|
if sepgp_discount == nil then sepgp_discount = 0.25 end
|
||||||
|
if sepgp_altspool == nil then sepgp_altspool = false end
|
||||||
|
if sepgp_altpercent == nil then sepgp_altpercent = 1.0 end
|
||||||
if sepgp_log == nil then sepgp_log = {} end
|
if sepgp_log == nil then sepgp_log = {} end
|
||||||
if sepgp_looted == nil then sepgp_looted = {} end
|
if sepgp_looted == nil then sepgp_looted = {} end
|
||||||
if sepgp_debug == nil then sepgp_debug = {} end
|
if sepgp_debug == nil then sepgp_debug = {} end
|
||||||
@@ -151,6 +145,15 @@ end
|
|||||||
function sepgp:OnEnable() -- PLAYER_LOGIN (2)
|
function sepgp:OnEnable() -- PLAYER_LOGIN (2)
|
||||||
--table.insert(sepgp_debug,{[date("%b/%d %H:%M:%S")]="OnEnable"})
|
--table.insert(sepgp_debug,{[date("%b/%d %H:%M:%S")]="OnEnable"})
|
||||||
sepgp.extratip = (sepgp.extratip) or CreateFrame("GameTooltip","shootyepgp_tooltip",UIParent,"GameTooltipTemplate")
|
sepgp.extratip = (sepgp.extratip) or CreateFrame("GameTooltip","shootyepgp_tooltip",UIParent,"GameTooltipTemplate")
|
||||||
|
sepgp._versionString = GetAddOnMetadata("shootyepgp","Version")
|
||||||
|
sepgp._websiteString = GetAddOnMetadata("shootyepgp","X-Website")
|
||||||
|
|
||||||
|
if (IsInGuild()) then
|
||||||
|
if (GetNumGuildMembers()==0) then
|
||||||
|
GuildRoster()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
self:RegisterEvent("GUILD_ROSTER_UPDATE",function()
|
self:RegisterEvent("GUILD_ROSTER_UPDATE",function()
|
||||||
if (arg1) then -- member join /leave
|
if (arg1) then -- member join /leave
|
||||||
sepgp:SetRefresh(true)
|
sepgp:SetRefresh(true)
|
||||||
@@ -177,12 +180,6 @@ function sepgp:OnEnable() -- PLAYER_LOGIN (2)
|
|||||||
self:RegisterEvent("TRADE_PLAYER_ITEM_CHANGED","tradeLoot")
|
self:RegisterEvent("TRADE_PLAYER_ITEM_CHANGED","tradeLoot")
|
||||||
self:RegisterEvent("TRADE_ACCEPT_UPDATE","tradeLoot")
|
self:RegisterEvent("TRADE_ACCEPT_UPDATE","tradeLoot")
|
||||||
|
|
||||||
if (IsInGuild()) then
|
|
||||||
if (GetNumGuildMembers()==0) then
|
|
||||||
GuildRoster()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if AceLibrary("AceEvent-2.0"):IsFullyInitialized() then
|
if AceLibrary("AceEvent-2.0"):IsFullyInitialized() then
|
||||||
self:AceEvent_FullyInitialized()
|
self:AceEvent_FullyInitialized()
|
||||||
else
|
else
|
||||||
@@ -242,8 +239,8 @@ function sepgp:AceEvent_FullyInitialized() -- SYNTHETIC EVENT, later than PLAYER
|
|||||||
self:SecureHook(pfUI.loot, "UpdateLootFrame", "pfUI_UpdateLootFrame")
|
self:SecureHook(pfUI.loot, "UpdateLootFrame", "pfUI_UpdateLootFrame")
|
||||||
end
|
end
|
||||||
-- make tablets closable with ESC
|
-- make tablets closable with ESC
|
||||||
for i=1,5 do
|
for i=1,6 do
|
||||||
table.insert(UISpecialFrames,string.format("Tablet20DetachedFrame%d",i))
|
self:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
end
|
end
|
||||||
self:RegisterChatCommand({"/shooty","/sepgp","/shootyepgp"},self.cmdtable())
|
self:RegisterChatCommand({"/shooty","/sepgp","/shootyepgp"},self.cmdtable())
|
||||||
self._hasInitFull = true
|
self._hasInitFull = true
|
||||||
@@ -254,12 +251,16 @@ function sepgp:OnMenuRequest()
|
|||||||
local now = GetTime()
|
local now = GetTime()
|
||||||
if not self._lastRosterRequest or (now - self._lastRosterRequest > 2) then
|
if not self._lastRosterRequest or (now - self._lastRosterRequest > 2) then
|
||||||
self._lastRosterRequest = now
|
self._lastRosterRequest = now
|
||||||
|
self:SetRefresh(true)
|
||||||
GuildRoster()
|
GuildRoster()
|
||||||
end
|
end
|
||||||
D:FeedAceOptionsTable(self:buildMenu())
|
D:FeedAceOptionsTable(self:buildMenu())
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp:TipHook()
|
function sepgp:TipHook()
|
||||||
|
self:SecureHook(GameTooltip, "SetHyperlink", function(this, itemstring)
|
||||||
|
sepgp:AddDataToTooltip(GameTooltip, nil, itemstring)
|
||||||
|
end)
|
||||||
self:SecureHook(GameTooltip, "SetBagItem", function(this, bag, slot)
|
self:SecureHook(GameTooltip, "SetBagItem", function(this, bag, slot)
|
||||||
local itemLink = GetContainerItemLink(bag, slot)
|
local itemLink = GetContainerItemLink(bag, slot)
|
||||||
local ml_tip
|
local ml_tip
|
||||||
@@ -311,6 +312,15 @@ function sepgp:TipHook()
|
|||||||
self.hooks[ItemRefTooltip]["OnHide"]()
|
self.hooks[ItemRefTooltip]["OnHide"]()
|
||||||
end
|
end
|
||||||
)
|
)
|
||||||
|
if (AtlasLootTooltip) then
|
||||||
|
self:SecureHook(AtlasLootTooltip, "SetHyperlink", function(this, itemstring)
|
||||||
|
sepgp:AddDataToTooltip(AtlasLootTooltip,nil,itemstring)
|
||||||
|
end)
|
||||||
|
self:HookScript(AtlasLootTooltip, "OnHide", function()
|
||||||
|
if sepgp.extratip:IsVisible() then sepgp.extratip:Hide() end
|
||||||
|
self.hooks[AtlasLootTooltip]["OnHide"]()
|
||||||
|
end)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp:delayedInit()
|
function sepgp:delayedInit()
|
||||||
@@ -327,8 +337,6 @@ function sepgp:delayedInit()
|
|||||||
self:reservesToggle(true)
|
self:reservesToggle(true)
|
||||||
end
|
end
|
||||||
-- migrate EPGP storage if needed
|
-- migrate EPGP storage if needed
|
||||||
sepgp._versionString = GetAddOnMetadata("shootyepgp","Version")
|
|
||||||
sepgp._websiteString = GetAddOnMetadata("shootyepgp","X-Website")
|
|
||||||
self:parseVersion(sepgp._versionString)
|
self:parseVersion(sepgp._versionString)
|
||||||
local major_ver = self._version.major
|
local major_ver = self._version.major
|
||||||
if IsGuildLeader() and ( (sepgp_dbver == nil) or (major_ver > sepgp_dbver) ) then
|
if IsGuildLeader() and ( (sepgp_dbver == nil) or (major_ver > sepgp_dbver) ) then
|
||||||
@@ -383,8 +391,13 @@ function sepgp:AddDataToTooltip(tooltip,itemlink,itemstring,is_master)
|
|||||||
sepgp.extratip:ClearLines()
|
sepgp.extratip:ClearLines()
|
||||||
sepgp.extratip:SetOwner(tooltip,"ANCHOR_NONE")
|
sepgp.extratip:SetOwner(tooltip,"ANCHOR_NONE")
|
||||||
sepgp.extratip:ClearAllPoints()
|
sepgp.extratip:ClearAllPoints()
|
||||||
sepgp.extratip:SetPoint("TOPLEFT", tooltip, "BOTTOMLEFT", 0, -5)
|
if (EnhTooltip) and EnhancedTooltip:IsVisible() then
|
||||||
--sepgp.extratip:SetPoint("TOPRIGHT", tooltip, "BOTTOMRIGHT", 0, -5)
|
sepgp.extratip:SetPoint("BOTTOMLEFT", tooltip, "TOPLEFT", 0, 5)
|
||||||
|
sepgp.extratip:SetPoint("BOTTOMRIGHT", tooltip, "TOPRIGHT", 0, 5)
|
||||||
|
else
|
||||||
|
sepgp.extratip:SetPoint("TOPLEFT", tooltip, "BOTTOMLEFT", 0, -5)
|
||||||
|
sepgp.extratip:SetPoint("TOPRIGHT", tooltip, "BOTTOMRIGHT", 0, -5)
|
||||||
|
end
|
||||||
sepgp.extratip:SetText("|cff9664c8shootyepgp|r")
|
sepgp.extratip:SetText("|cff9664c8shootyepgp|r")
|
||||||
sepgp.extratip:AddDoubleLine(" ",textRight)
|
sepgp.extratip:AddDoubleLine(" ",textRight)
|
||||||
sepgp.extratip:AddDoubleLine(" ",textRight2)
|
sepgp.extratip:AddDoubleLine(" ",textRight2)
|
||||||
@@ -419,6 +432,16 @@ function sepgp:GuildRosterSetOfficerNote(index,note,fromAddon)
|
|||||||
local name, _, _, _, _, _, _, prevnote, _, _ = GetGuildRosterInfo(index)
|
local name, _, _, _, _, _, _, prevnote, _, _ = GetGuildRosterInfo(index)
|
||||||
local _,_,_,oldepgp,_ = string.find(prevnote or "","(.*)({%d+:%d+})(.*)")
|
local _,_,_,oldepgp,_ = string.find(prevnote or "","(.*)({%d+:%d+})(.*)")
|
||||||
local _,_,_,epgp,_ = string.find(note or "","(.*)({%d+:%d+})(.*)")
|
local _,_,_,epgp,_ = string.find(note or "","(.*)({%d+:%d+})(.*)")
|
||||||
|
if (sepgp_altspool) then
|
||||||
|
local oldmain = self:parseAlt(name,prevnote)
|
||||||
|
local main = self:parseAlt(name,note)
|
||||||
|
if oldmain ~= nil then
|
||||||
|
if main == nil or main ~= oldmain then
|
||||||
|
self:adminSay(string.format(L["Manually modified %s\'s note. Previous main was %s"],name,oldmain))
|
||||||
|
self:defaultPrint(string.format(L["|cffff0000Manually modified %s\'s note. Previous main was %s|r"],name,oldmain))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
if oldepgp ~= nil then
|
if oldepgp ~= nil then
|
||||||
if epgp == nil or epgp ~= oldepgp then
|
if epgp == nil or epgp ~= oldepgp then
|
||||||
self:adminSay(string.format(L["Manually modified %s\'s note. EPGP was %s"],name,oldepgp))
|
self:adminSay(string.format(L["Manually modified %s\'s note. EPGP was %s"],name,oldepgp))
|
||||||
@@ -426,7 +449,7 @@ function sepgp:GuildRosterSetOfficerNote(index,note,fromAddon)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
local safenote = string.gsub(note,"(.*)({%d+:%d+})(.*)",sanitizeNote)
|
local safenote = string.gsub(note,"(.*)({%d+:%d+})(.*)",sanitizeNote)
|
||||||
self.hooks["GuildRosterSetOfficerNote"](index,safenote)
|
return self.hooks["GuildRosterSetOfficerNote"](index,safenote)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -650,7 +673,7 @@ function sepgp:addonComms(prefix,message,channel,sender)
|
|||||||
end
|
end
|
||||||
if (who) and (what) and (amount) then
|
if (who) and (what) and (amount) then
|
||||||
local msg
|
local msg
|
||||||
if who == self._playerName then
|
if (who == self._playerName) or (sepgp_main and (who == sepgp_main)) then
|
||||||
if what == "EP" then
|
if what == "EP" then
|
||||||
if amount < 0 then
|
if amount < 0 then
|
||||||
msg = string.format(L["You have received a %d EP penalty."],amount)
|
msg = string.format(L["You have received a %d EP penalty."],amount)
|
||||||
@@ -677,9 +700,11 @@ function sepgp:addonComms(prefix,message,channel,sender)
|
|||||||
self:shareSettings()
|
self:shareSettings()
|
||||||
end
|
end
|
||||||
elseif who == "SETTINGS" then
|
elseif who == "SETTINGS" then
|
||||||
for progress,discount,decay in string.gfind(what,"([^:]+):([^:]+):([^:]+)") do
|
for progress,discount,decay,alts,altspct in string.gfind(what,"([^:]+):([^:]+):([^:]+):([^:]+):([^:]+)") do
|
||||||
discount = tonumber(discount)
|
discount = tonumber(discount)
|
||||||
decay = tonumber(decay)
|
decay = tonumber(decay)
|
||||||
|
altspct = tonumber(altspct)
|
||||||
|
alts = (alts == "true") and true or false
|
||||||
local settings_notice
|
local settings_notice
|
||||||
if progress and progress ~= sepgp_progress then
|
if progress and progress ~= sepgp_progress then
|
||||||
sepgp_progress = progress
|
sepgp_progress = progress
|
||||||
@@ -703,6 +728,26 @@ function sepgp:addonComms(prefix,message,channel,sender)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
if alts and alts ~= sepgp_altspool then
|
||||||
|
sepgp_altspool = alts
|
||||||
|
if (admin()) then
|
||||||
|
if (settings_notice) then
|
||||||
|
settings_notice = settings_notice..L[", alts"]
|
||||||
|
else
|
||||||
|
settings_notice = L["New Alts"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if altspct and altspct ~= sepgp_altpercent then
|
||||||
|
sepgp_altpercent = altspct
|
||||||
|
if (admin()) then
|
||||||
|
if (settings_notice) then
|
||||||
|
settings_notice = settings_notice..L[", alts ep %"]
|
||||||
|
else
|
||||||
|
settings_notice = L["New Alts EP %"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
if (settings_notice) and settings_notice ~= "" then
|
if (settings_notice) and settings_notice ~= "" then
|
||||||
local sender_rank = string.format("%s(%s)",C:Colorize(BC:GetHexColor(class),sender),rank)
|
local sender_rank = string.format("%s(%s)",C:Colorize(BC:GetHexColor(class),sender),rank)
|
||||||
settings_notice = settings_notice..string.format(L[" settings accepted from %s"],sender_rank)
|
settings_notice = settings_notice..string.format(L[" settings accepted from %s"],sender_rank)
|
||||||
@@ -721,7 +766,7 @@ function sepgp:shareSettings(force)
|
|||||||
local now = GetTime()
|
local now = GetTime()
|
||||||
if self._lastSettingsShare == nil or (now - self._lastSettingsShare > 30) or (force) then
|
if self._lastSettingsShare == nil or (now - self._lastSettingsShare > 30) or (force) then
|
||||||
self._lastSettingsShare = now
|
self._lastSettingsShare = now
|
||||||
local addonMsg = string.format("SETTINGS;%s:%s:%s;1",sepgp_progress,sepgp_discount,sepgp_decay)
|
local addonMsg = string.format("SETTINGS;%s:%s:%s:%s:%s;1",sepgp_progress,sepgp_discount,sepgp_decay,tostring(sepgp_altspool),sepgp_altpercent)
|
||||||
self:addonMessage(addonMsg,"GUILD")
|
self:addonMessage(addonMsg,"GUILD")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -897,11 +942,21 @@ end
|
|||||||
|
|
||||||
function sepgp:givename_ep(getname,ep) -- awards ep to a single character
|
function sepgp:givename_ep(getname,ep) -- awards ep to a single character
|
||||||
if not (admin()) then return end
|
if not (admin()) then return end
|
||||||
local newep = ep + (self:get_ep_v3(getname) or 0) --DONE: update v3
|
local postfix, alt = ""
|
||||||
self:update_ep_v3(getname,newep) --DONE: update v3
|
if (sepgp_altspool) then -- TODO: Main/Alt notification
|
||||||
self:debugPrint(string.format(L["Giving %d ep to %s"],ep,getname))
|
local main = self:parseAlt(getname)
|
||||||
|
if (main) then
|
||||||
|
alt = getname
|
||||||
|
getname = main
|
||||||
|
ep = self:num_round(sepgp_altpercent*ep)
|
||||||
|
postfix = string.format(L[", %s\'s Main."],alt)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local newep = ep + (self:get_ep_v3(getname) or 0)
|
||||||
|
self:update_ep_v3(getname,newep)
|
||||||
|
self:debugPrint(string.format(L["Giving %d ep to %s%s."],ep,getname,postfix))
|
||||||
if ep < 0 then -- inform admins and victim of penalties
|
if ep < 0 then -- inform admins and victim of penalties
|
||||||
local msg = string.format(L["%s EP Penalty to %s."],ep,getname)
|
local msg = string.format(L["%s EP Penalty to %s%s."],ep,getname,postfix)
|
||||||
self:adminSay(msg)
|
self:adminSay(msg)
|
||||||
self:addToLog(msg)
|
self:addToLog(msg)
|
||||||
local addonMsg = string.format("%s;%s;%s",getname,"EP",ep)
|
local addonMsg = string.format("%s;%s;%s",getname,"EP",ep)
|
||||||
@@ -911,11 +966,20 @@ end
|
|||||||
|
|
||||||
function sepgp:givename_gp(getname,gp) -- assigns gp to a single character
|
function sepgp:givename_gp(getname,gp) -- assigns gp to a single character
|
||||||
if not (admin()) then return end
|
if not (admin()) then return end
|
||||||
local oldgp = (self:get_gp_v3(getname) or sepgp.VARS.basegp) --DONE: update v3
|
local postfix, alt = ""
|
||||||
|
if (sepgp_altspool) then -- TODO: Main/Alt notification
|
||||||
|
local main = self:parseAlt(getname)
|
||||||
|
if (main) then
|
||||||
|
alt = getname
|
||||||
|
getname = main
|
||||||
|
postfix = string.format(L[", %s\'s Main."],alt)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local oldgp = (self:get_gp_v3(getname) or sepgp.VARS.basegp)
|
||||||
local newgp = gp + oldgp
|
local newgp = gp + oldgp
|
||||||
self:update_gp_v3(getname,newgp) --DONE: update v3
|
self:update_gp_v3(getname,newgp)
|
||||||
self:debugPrint(string.format(L["Giving %d gp to %s"],gp,getname))
|
self:debugPrint(string.format(L["Giving %d gp to %s%s."],gp,getname,postfix))
|
||||||
local msg = string.format(L["Awarding %d GP to %s. (Previous: %d, New: %d)"],gp,getname,oldgp,math.max(sepgp.VARS.basegp,newgp))
|
local msg = string.format(L["Awarding %d GP to %s%s. (Previous: %d, New: %d)"],gp,getname,postfix,oldgp,math.max(sepgp.VARS.basegp,newgp))
|
||||||
self:adminSay(msg)
|
self:adminSay(msg)
|
||||||
self:addToLog(msg)
|
self:addToLog(msg)
|
||||||
local addonMsg = string.format("%s;%s;%s",getname,"GP",gp)
|
local addonMsg = string.format("%s;%s;%s",getname,"GP",gp)
|
||||||
@@ -1039,12 +1103,12 @@ local T = AceLibrary("Tablet-2.0")
|
|||||||
sepgp.defaultMinimapPosition = 180
|
sepgp.defaultMinimapPosition = 180
|
||||||
sepgp.cannotDetachTooltip = true
|
sepgp.cannotDetachTooltip = true
|
||||||
sepgp.tooltipHiddenWhenEmpty = false
|
sepgp.tooltipHiddenWhenEmpty = false
|
||||||
sepgp.hasIcon = "Interface\\Icons\\INV_Misc_Orb_04"
|
sepgp.hasIcon = "Interface\\PetitionFrame\\GuildCharter-Icon"
|
||||||
|
|
||||||
function sepgp:OnTooltipUpdate()
|
function sepgp:OnTooltipUpdate()
|
||||||
local hint = L["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."]
|
local hint = L["|cffffff00Click|r to toggle Standings.%s \n|cffffff00Right-Click|r for Options."]
|
||||||
if (admin()) then
|
if (admin()) then
|
||||||
hint = string.format(hint,L[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."])
|
hint = string.format(hint,L[" \n|cffffff00Ctrl+Click|r to toggle Reserves. \n|cffffff00Alt+Click|r to toggle Bids. \n|cffffff00Shift+Click|r to toggle Loot. \n|cffffff00Ctrl+Alt+Click|r to toggle Alts. \n|cffffff00Ctrl+Shift+Click|r to toggle Logs."])
|
||||||
else
|
else
|
||||||
hint = string.format(hint,"")
|
hint = string.format(hint,"")
|
||||||
end
|
end
|
||||||
@@ -1055,6 +1119,8 @@ function sepgp:OnClick()
|
|||||||
local is_admin = admin()
|
local is_admin = admin()
|
||||||
if (IsControlKeyDown() and IsShiftKeyDown() and is_admin) then
|
if (IsControlKeyDown() and IsShiftKeyDown() and is_admin) then
|
||||||
sepgp_logs:Toggle()
|
sepgp_logs:Toggle()
|
||||||
|
elseif (IsControlKeyDown() and IsAltKeyDown() and is_admin) then
|
||||||
|
sepgp_alts:Toggle()
|
||||||
elseif (IsControlKeyDown() and is_admin) then
|
elseif (IsControlKeyDown() and is_admin) then
|
||||||
sepgp_reserves:Toggle()
|
sepgp_reserves:Toggle()
|
||||||
elseif (IsShiftKeyDown() and is_admin) then
|
elseif (IsShiftKeyDown() and is_admin) then
|
||||||
@@ -1082,8 +1148,21 @@ function sepgp:buildRosterTable()
|
|||||||
r[name] = true
|
r[name] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
sepgp.alts = {}
|
||||||
for i = 1, numGuildMembers do
|
for i = 1, numGuildMembers do
|
||||||
local member_name,_,_,_,class,_,ep,gp,_,_ = GetGuildRosterInfo(i)
|
local member_name,_,_,_,class,_,note,officernote,_,_ = GetGuildRosterInfo(i)
|
||||||
|
local main, main_class, main_rank = self:parseAlt(member_name,officernote)
|
||||||
|
if (main) then
|
||||||
|
if ((self._playerName) and (name == self._playerName)) then
|
||||||
|
if (not sepgp_main) or (sepgp_main and sepgp_main ~= main) then
|
||||||
|
sepgp_main = main
|
||||||
|
self:defaultPrint(L["Your main has been set to %s"],sepgp_main)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
main = C:Colorize(BC:GetHexColor(main_class), main)
|
||||||
|
sepgp.alts[main] = sepgp.alts[main] or {}
|
||||||
|
sepgp.alts[main][member_name] = class
|
||||||
|
end
|
||||||
if (sepgp_raidonly) and next(r) then
|
if (sepgp_raidonly) and next(r) then
|
||||||
if r[member_name] then
|
if r[member_name] then
|
||||||
table.insert(g,{["name"]=member_name,["class"]=class})
|
table.insert(g,{["name"]=member_name,["class"]=class})
|
||||||
@@ -1202,6 +1281,40 @@ function sepgp:buildMenu()
|
|||||||
hidden = function() return not (admin()) end,
|
hidden = function() return not (admin()) end,
|
||||||
func = function() sepgp:afkcheck_reserves() end
|
func = function() sepgp:afkcheck_reserves() end
|
||||||
}
|
}
|
||||||
|
options.args["alts"] = {
|
||||||
|
type = "toggle",
|
||||||
|
name = L["Enable Alts"],
|
||||||
|
desc = L["Allow Alts to use Main\'s EPGP."],
|
||||||
|
order = 63,
|
||||||
|
hidden = function() return not (admin()) end,
|
||||||
|
disabled = function() return not (IsGuildLeader()) end,
|
||||||
|
get = function() return not not sepgp_altspool end,
|
||||||
|
set = function(v)
|
||||||
|
sepgp_altspool = not sepgp_altspool
|
||||||
|
if (IsGuildLeader()) then
|
||||||
|
sepgp:shareSettings(true)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
options.args["alts_percent"] = {
|
||||||
|
type = "range",
|
||||||
|
name = L["Alts EP %"],
|
||||||
|
desc = L["Set the % EP Alts can earn."],
|
||||||
|
order = 66,
|
||||||
|
hidden = function() return not (admin()) end,
|
||||||
|
disabled = function() return not sepgp_altspool end,
|
||||||
|
get = function() return sepgp_altpercent end,
|
||||||
|
set = function(v)
|
||||||
|
sepgp_altpercent = v
|
||||||
|
if (IsGuildLeader()) then
|
||||||
|
sepgp:shareSettings(true)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
min = 0.5,
|
||||||
|
max = 1,
|
||||||
|
step = 0.05,
|
||||||
|
isPercent = true
|
||||||
|
}
|
||||||
options.args["set_main"] = {
|
options.args["set_main"] = {
|
||||||
type = "text",
|
type = "text",
|
||||||
name = L["Set Main"],
|
name = L["Set Main"],
|
||||||
@@ -1253,7 +1366,7 @@ function sepgp:buildMenu()
|
|||||||
desc = string.format(L["Decays all EPGP by %s%%"],(1-(sepgp_decay or sepgp.VARS.decay))*100),
|
desc = string.format(L["Decays all EPGP by %s%%"],(1-(sepgp_decay or sepgp.VARS.decay))*100),
|
||||||
order = 100,
|
order = 100,
|
||||||
hidden = function() return not (admin()) end,
|
hidden = function() return not (admin()) end,
|
||||||
func = function() sepgp:decay_epgp_v3() end --DONE: update v3
|
func = function() sepgp:decay_epgp_v3() end
|
||||||
}
|
}
|
||||||
options.args["set_decay"] = {
|
options.args["set_decay"] = {
|
||||||
type = "range",
|
type = "range",
|
||||||
@@ -1313,6 +1426,35 @@ function sepgp:buildMenu()
|
|||||||
return options
|
return options
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---------------
|
||||||
|
-- Alts
|
||||||
|
---------------
|
||||||
|
function sepgp:parseAlt(name,officernote)
|
||||||
|
if (officernote) then
|
||||||
|
local _,_,_,main,_ = string.find(officernote or "","(.*){([%a][%a]%a*)}(.*)")
|
||||||
|
if type(main)=="string" and (string.len(main) < 13) then
|
||||||
|
main = self:camelCase(main)
|
||||||
|
local g_name, g_class, g_rank, g_officernote = self:verifyGuildMember(main)
|
||||||
|
if (g_name) then
|
||||||
|
return g_name, g_class, g_rank, g_officernote
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for i=1,GetNumGuildMembers(1) do
|
||||||
|
local g_name, _, _, _, g_class, _, g_note, g_officernote, _, _ = GetGuildRosterInfo(i)
|
||||||
|
if (name == g_name) then
|
||||||
|
return self:parseAlt(g_name, g_officernote)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
---------------
|
---------------
|
||||||
-- Reserves
|
-- Reserves
|
||||||
---------------
|
---------------
|
||||||
@@ -1426,7 +1568,7 @@ function sepgp:captureReserveChatter(text, sender, _, _, _, _, _, _, channel)
|
|||||||
end
|
end
|
||||||
local q = string.find(text,L["^{shootyepgp}Type"])
|
local q = string.find(text,L["^{shootyepgp}Type"])
|
||||||
if (q) and not (running_check) then
|
if (q) and not (running_check) then
|
||||||
if (not UnitInRaid("player")) or (not self:inRaid(sender)) then
|
if --[[(not UnitInRaid("player")) or]] (not self:inRaid(sender)) then
|
||||||
StaticPopup_Show("SHOOTY_EPGP_RESERVE_AFKCHECK_RESPONCE")
|
StaticPopup_Show("SHOOTY_EPGP_RESERVE_AFKCHECK_RESPONCE")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -1524,14 +1666,31 @@ function sepgp:captureBid(text, sender)
|
|||||||
for i = 1, GetNumGuildMembers(1) do
|
for i = 1, GetNumGuildMembers(1) do
|
||||||
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
||||||
if name == sender then
|
if name == sender then
|
||||||
local ep = (self:get_ep_v3(name,officernote) or 0) --DONE: update v3
|
local ep = (self:get_ep_v3(name,officernote) or 0)
|
||||||
local gp = (self:get_gp_v3(name,officernote) or sepgp.VARS.basegp) --DONE: update v3
|
local gp = (self:get_gp_v3(name,officernote) or sepgp.VARS.basegp)
|
||||||
|
local main_name
|
||||||
|
if (sepgp_altspool) then
|
||||||
|
local main, main_class, main_rank, main_offnote = self:parseAlt(name,officernote)
|
||||||
|
if (main) then
|
||||||
|
ep = (self:get_ep_v3(main,main_offnote) or 0)
|
||||||
|
gp = (self:get_gp_v3(main,main_offnote) or sepgp.VARS.basegp)
|
||||||
|
main_name = main
|
||||||
|
end
|
||||||
|
end
|
||||||
if (mskw_found) then
|
if (mskw_found) then
|
||||||
bids_blacklist[sender] = true
|
bids_blacklist[sender] = true
|
||||||
table.insert(sepgp.bids_main,{name,class,ep,gp,ep/gp})
|
if (sepgp_altspool) and (main_name) then
|
||||||
|
table.insert(sepgp.bids_main,{name,class,ep,gp,ep/gp,main_name})
|
||||||
|
else
|
||||||
|
table.insert(sepgp.bids_main,{name,class,ep,gp,ep/gp})
|
||||||
|
end
|
||||||
elseif (oskw_found) then
|
elseif (oskw_found) then
|
||||||
bids_blacklist[sender] = true
|
bids_blacklist[sender] = true
|
||||||
table.insert(sepgp.bids_off,{name,class,ep,gp,ep/gp})
|
if (sepgp_altspool) and (main_name) then
|
||||||
|
table.insert(sepgp.bids_off,{name,class,ep,gp,ep/gp,main_name})
|
||||||
|
else
|
||||||
|
table.insert(sepgp.bids_off,{name,class,ep,gp,ep/gp})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
sepgp_bids:Toggle(true)
|
sepgp_bids:Toggle(true)
|
||||||
return
|
return
|
||||||
@@ -1753,7 +1912,7 @@ function sepgp:verifyGuildMember(name,silent)
|
|||||||
for i=1,GetNumGuildMembers(1) do
|
for i=1,GetNumGuildMembers(1) do
|
||||||
local g_name, g_rank, g_rankIndex, g_level, g_class, g_zone, g_note, g_officernote, g_online = GetGuildRosterInfo(i)
|
local g_name, g_rank, g_rankIndex, g_level, g_class, g_zone, g_note, g_officernote, g_online = GetGuildRosterInfo(i)
|
||||||
if (string.lower(name) == string.lower(g_name)) and (tonumber(g_level) == MAX_PLAYER_LEVEL) then
|
if (string.lower(name) == string.lower(g_name)) and (tonumber(g_level) == MAX_PLAYER_LEVEL) then
|
||||||
return g_name, g_class, g_rank
|
return g_name, g_class, g_rank, g_officernote
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if (name) and name ~= "" and not (silent) then
|
if (name) and name ~= "" and not (silent) then
|
||||||
@@ -1780,6 +1939,20 @@ function sepgp:lootMaster()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function sepgp:make_escable(framename,operation)
|
||||||
|
local found
|
||||||
|
for i in UISpecialFrames do
|
||||||
|
if UISpecialFrames[i]==framename then
|
||||||
|
found = i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not found and operation=="add" then
|
||||||
|
table.insert(UISpecialFrames,framename)
|
||||||
|
elseif found and operation=="remove" then
|
||||||
|
table.remove(UISpecialFrames,found)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local raidZones = {[L["Molten Core"]]="T1",[L["Onyxia\'s Lair"]]="T1.5",[L["Blackwing Lair"]]="T2",[L["Ahn\'Qiraj"]]="T2.5",[L["Naxxramas"]]="T3"}
|
local raidZones = {[L["Molten Core"]]="T1",[L["Onyxia\'s Lair"]]="T1.5",[L["Blackwing Lair"]]="T2",[L["Ahn\'Qiraj"]]="T2.5",[L["Naxxramas"]]="T3"}
|
||||||
local zone_multipliers = {
|
local zone_multipliers = {
|
||||||
["T3"] = {["T3"]=1,["T2.5"]=0.75,["T2"]=0.5,["T1.5"]=0.25,["T1"]=0.25},
|
["T3"] = {["T3"]=1,["T2.5"]=0.75,["T2"]=0.5,["T1.5"]=0.25,["T1"]=0.25},
|
||||||
@@ -1859,6 +2032,12 @@ function sepgp:parseVersion(version,otherVersion)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function sepgp:camelCase(word)
|
||||||
|
return string.gsub(word,"(%a)([%w_']*)",function(head,tail)
|
||||||
|
return string.format("%s%s",string.upper(head),string.lower(tail))
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
admin = function()
|
admin = function()
|
||||||
return (CanEditOfficerNote() --[[and CanEditPublicNote()]])
|
return (CanEditOfficerNote() --[[and CanEditPublicNote()]])
|
||||||
end
|
end
|
||||||
@@ -1901,7 +2080,8 @@ StaticPopupDialogs["SHOOTY_EPGP_SET_MAIN"] = {
|
|||||||
maxLetters = 12,
|
maxLetters = 12,
|
||||||
OnAccept = function()
|
OnAccept = function()
|
||||||
local editBox = getglobal(this:GetParent():GetName().."EditBox")
|
local editBox = getglobal(this:GetParent():GetName().."EditBox")
|
||||||
sepgp_main = sepgp:verifyGuildMember(editBox:GetText())
|
local name = sepgp:camelCase(editBox:GetText())
|
||||||
|
sepgp_main = sepgp:verifyGuildMember(name)
|
||||||
end,
|
end,
|
||||||
OnShow = function()
|
OnShow = function()
|
||||||
getglobal(this:GetName().."EditBox"):SetText(sepgp_main or "")
|
getglobal(this:GetName().."EditBox"):SetText(sepgp_main or "")
|
||||||
@@ -2053,5 +2233,5 @@ function sepgp:EasyMenu_Initialize(level, menuList)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_altspool,sepgp_altpercent,sepgp_log,sepgp_dbver,sepgp_looted,sepgp_debug
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs,sepgp_debug
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
+3
-2
@@ -8,10 +8,10 @@
|
|||||||
## X-Category: Guild
|
## X-Category: Guild
|
||||||
## X-Credits: shooty,Qcat(zhCN)
|
## X-Credits: shooty,Qcat(zhCN)
|
||||||
## Version: 3.31.1
|
## Version: 3.31.1
|
||||||
## X-Alpha: 3.31.2
|
## X-Alpha: 3.4
|
||||||
## OptionalDeps: Ace2
|
## OptionalDeps: Ace2
|
||||||
## SavedVariables: sepgp_saychannel, sepgp_groupbyclass, sepgp_raidonly, sepgp_dbver, sepgp_debug
|
## SavedVariables: sepgp_saychannel, sepgp_groupbyclass, sepgp_raidonly, sepgp_dbver, sepgp_debug
|
||||||
## SavedVariablesPerCharacter: sepgp_main, sepgp_log, sepgp_looted, sepgp_decay, sepgp_reservechannel, sepgp_progress, sepgp_discount
|
## SavedVariablesPerCharacter: sepgp_main, sepgp_log, sepgp_looted, sepgp_decay, sepgp_reservechannel, sepgp_progress, sepgp_discount, sepgp_altspool, sepgp_altpercent
|
||||||
|
|
||||||
Libs\AceLibrary\AceLibrary.lua
|
Libs\AceLibrary\AceLibrary.lua
|
||||||
Libs\AceOO-2.0\AceOO-2.0.lua
|
Libs\AceOO-2.0\AceOO-2.0.lua
|
||||||
@@ -42,4 +42,5 @@ standings.lua
|
|||||||
bids.lua
|
bids.lua
|
||||||
loot.lua
|
loot.lua
|
||||||
reserves.lua
|
reserves.lua
|
||||||
|
alts.lua
|
||||||
logs.lua
|
logs.lua
|
||||||
|
|||||||
+36
-16
@@ -71,8 +71,8 @@ function sepgp_standings:Export()
|
|||||||
local t = {}
|
local t = {}
|
||||||
for i = 1, GetNumGuildMembers(1) do
|
for i = 1, GetNumGuildMembers(1) do
|
||||||
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
||||||
local ep = (sepgp:get_ep_v3(name,officernote) or 0) --DONE: update v3
|
local ep = (sepgp:get_ep_v3(name,officernote) or 0)
|
||||||
local gp = (sepgp:get_gp_v3(name,officernote) or sepgp.VARS.basegp) --DONE: update v3
|
local gp = (sepgp:get_gp_v3(name,officernote) or sepgp.VARS.basegp)
|
||||||
if ep > 0 then
|
if ep > 0 then
|
||||||
table.insert(t,{name,ep,gp,ep/gp})
|
table.insert(t,{name,ep,gp,ep/gp})
|
||||||
end
|
end
|
||||||
@@ -189,10 +189,11 @@ function sepgp_standings:Refresh()
|
|||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_standings:setHideScript()
|
function sepgp_standings:setHideScript()
|
||||||
local detachedFrame, tablet
|
local i = 1
|
||||||
for i=1,5 do
|
local tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
while (tablet) and i<100 do
|
||||||
if tablet and tablet.owner ~= nil and tablet.owner == "sepgp_standings" then
|
if tablet.owner ~= nil and tablet.owner == "sepgp_standings" then
|
||||||
|
sepgp:make_escable(string.format("Tablet20DetachedFrame%d",i),"add")
|
||||||
if not (tablet:GetScript("OnHide")) then
|
if not (tablet:GetScript("OnHide")) then
|
||||||
tablet:SetScript("OnHide",function()
|
tablet:SetScript("OnHide",function()
|
||||||
if not T:IsAttached("sepgp_standings") then
|
if not T:IsAttached("sepgp_standings") then
|
||||||
@@ -201,8 +202,11 @@ function sepgp_standings:setHideScript()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
end
|
break
|
||||||
end
|
end
|
||||||
|
i = i+1
|
||||||
|
tablet = getglobal(string.format("Tablet20DetachedFrame%d",i))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_standings:Top()
|
function sepgp_standings:Top()
|
||||||
@@ -211,17 +215,20 @@ function sepgp_standings:Top()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_standings:Toggle()
|
function sepgp_standings:Toggle(forceShow)
|
||||||
self:Top()
|
self:Top()
|
||||||
if T:IsAttached("sepgp_standings") then
|
if T:IsAttached("sepgp_standings") then
|
||||||
T:Detach("sepgp_standings")
|
T:Detach("sepgp_standings") -- show
|
||||||
if (T:IsLocked("sepgp_standings")) then
|
if (T:IsLocked("sepgp_standings")) then
|
||||||
T:ToggleLocked("sepgp_standings")
|
T:ToggleLocked("sepgp_standings")
|
||||||
end
|
end
|
||||||
self:setHideScript()
|
self:setHideScript()
|
||||||
|
elseif (forceShow) then
|
||||||
|
sepgp_standings:Refresh()
|
||||||
|
|
||||||
else
|
else
|
||||||
T:Attach("sepgp_standings")
|
T:Attach("sepgp_standings") -- hide
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function sepgp_standings:ToggleGroupByClass()
|
function sepgp_standings:ToggleGroupByClass()
|
||||||
@@ -247,10 +254,23 @@ function sepgp_standings:BuildStandingsTable()
|
|||||||
r[name] = true
|
r[name] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
sepgp.alts = {}
|
||||||
for i = 1, GetNumGuildMembers(1) do
|
for i = 1, GetNumGuildMembers(1) do
|
||||||
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
local name, _, _, _, class, _, note, officernote, _, _ = GetGuildRosterInfo(i)
|
||||||
local ep = (sepgp:get_ep_v3(name,officernote) or 0) --DONE: update v3
|
local ep = (sepgp:get_ep_v3(name,officernote) or 0)
|
||||||
local gp = (sepgp:get_gp_v3(name,officernote) or sepgp.VARS.basegp) --DONE: update v3
|
local gp = (sepgp:get_gp_v3(name,officernote) or sepgp.VARS.basegp)
|
||||||
|
local main, main_class, main_rank = sepgp:parseAlt(name,officernote)
|
||||||
|
if (main) then
|
||||||
|
if ((self._playerName) and (name == self._playerName)) then
|
||||||
|
if (not sepgp_main) or (sepgp_main and sepgp_main ~= main) then
|
||||||
|
sepgp_main = main
|
||||||
|
self:defaultPrint(L["Your main has been set to %s"],sepgp_main)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
main = C:Colorize(BC:GetHexColor(main_class), main)
|
||||||
|
sepgp.alts[main] = sepgp.alts[main] or {}
|
||||||
|
sepgp.alts[main][name] = class
|
||||||
|
end
|
||||||
if ep > 0 then
|
if ep > 0 then
|
||||||
if (sepgp_raidonly) and next(r) then
|
if (sepgp_raidonly) and next(r) then
|
||||||
if r[name] then
|
if r[name] then
|
||||||
@@ -289,7 +309,7 @@ function sepgp_standings:OnTooltipUpdate()
|
|||||||
local text2 = string.format("%.4g", ep)
|
local text2 = string.format("%.4g", ep)
|
||||||
local text3 = string.format("%.4g", gp)
|
local text3 = string.format("%.4g", gp)
|
||||||
local text4 = string.format("%.4g", pr)
|
local text4 = string.format("%.4g", pr)
|
||||||
if (sepgp._playerName) and sepgp._playerName == name then
|
if ((sepgp._playerName) and sepgp._playerName == name) or ((sepgp_main) and sepgp_main == name) then
|
||||||
text = string.format("(*)%s",text)
|
text = string.format("(*)%s",text)
|
||||||
local pr_decay = sepgp:capcalc(ep,gp)
|
local pr_decay = sepgp:capcalc(ep,gp)
|
||||||
if pr_decay < 0 then
|
if pr_decay < 0 then
|
||||||
@@ -306,4 +326,4 @@ function sepgp_standings:OnTooltipUpdate()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
-- GLOBALS: sepgp_saychannel,sepgp_groupbyclass,sepgp_raidonly,sepgp_decay,sepgp_reservechannel,sepgp_main,sepgp_progress,sepgp_discount,sepgp_log,sepgp_dbver,sepgp_looted
|
||||||
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_logs
|
-- GLOBALS: sepgp,sepgp_prices,sepgp_standings,sepgp_bids,sepgp_loot,sepgp_reserves,sepgp_alts,sepgp_logs
|
||||||
|
|||||||
Reference in New Issue
Block a user