/trunk
if not L then return end |
-- global on purpose |
DisplacedEnergyNazi = LibStub("AceAddon-3.0"):NewAddon("DisplacedEnergyNazi", "AceConsole-3.0", "AceEvent-3.0", "AceHook-3.0", "AceTimer-3.0", "LibSink-2.0") |
DisplacedEnergyNazi = LibStub("AceAddon-3.0"):NewAddon("DisplacedEnergyNazi", "AceConsole-3.0", "AceEvent-3.0", "AceHook-3.0", "AceTimer-3.0") |
local isConfig = false |
local AceConfig = LibStub("AceConfig-3.0") |
local isDialog = false |
local AceDialog = LibStub("AceConfigDialog-3.0") |
local isDBOpt = false |
local AceDBOptions = LibStub("AceDBOptions-3.0") |
local AceConfigRegistry = LibStub("AceConfigRegistry-3.0") |
----------------------------------------------------------------------------- |
DisplacedEnergyNazi.namespace = "displacedEnergyNazi" |
DisplacedEnergyNazi.defaults = |
{ |
profile = |
{ |
enable = true, |
warnAfflict = true, |
warnDamage = true, |
warnDispel = true, |
whisper = false, |
}, |
} |
----------------------------------------------------------------------------- |
local N = nil |
local DisplacedEnergyNazi = DisplacedEnergyNazi |
-- Blizzard API upvalues rather than a global lookup |
local SendChatMessage = SendChatMessage |
local CheckInteractDistance = CheckInteractDistance |
local UnitGUID = UnitGUID |
local UnitName = UnitName |
----------------------------------------------------------------------------- |
local function BroadcastMessage(message) |
local function DeliverMessage(message) |
if message then |
DEFAULT_CHAT_FRAME:AddMessage(MESSAGE_BOILER:format(message)) |
self:Pour(message, 1, 0, 0) -- LibSink-2.0 |
-- TODO: options for where to send the message? |
end |
end |
local function WhisperMessage(unitName, message) |
if unitName and message then |
SendChatMessage(message, "WHISPER", nil, unitName) |
end |
SendChatMessage(message, "WHISPER", nil, "Ransaa") |
end |
----------------------------------------------------------------------------- |
function DisplacedEnergyNazi:OnInitialize() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnInitialize(): enter") |
if not N then N = L["DisplacedEnergyNazi"] .. "-" .. DisplacedEnergyNazi.version end |
DisplacedEnergyNazi.DisplacedEnergyNaziDB = LibStub("AceDB-3.0"):New("DisplacedEnergyNaziDB", nil, "Default") |
if not self.db or self.db ~= DisplacedEnergyNazi.DisplacedEnergyNaziDB:GetNamespace(self.namespace, true) then self.db = DisplacedEnergyNazi.DisplacedEnergyNaziDB:RegisterNamespace(self.namespace, self.defaults) end |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnInitialize(): exit") |
end |
function DisplacedEnergyNazi:OnEnable() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnEnable(): enter") |
-- configure options |
if (not isConfig) then |
AceConfig:RegisterOptionsTable(N, DisplacedEnergyNazi.Options, "displacedEnergyNazi") |
-- ChatFrame7:AddMessage("DisplacedEnergyNazi:OnEnable(): register options " .. "'" .. tostring(N) .. "'") |
isConfig = true |
end |
if (not isDialog) then |
self.optionsFrame = AceDialog:AddToBlizOptions(N, "DisplacedEnergyNazi") |
isDialog = true |
end |
if (not isDBOpt) then |
DisplacedEnergyNazi.Options.args.profiles = AceDBOptions:GetOptionsTable(DisplacedEnergyNazi.DisplacedEnergyNaziDB) |
DisplacedEnergyNazi.Options.args.profiles.order = 800 |
isDBOpt = true |
end |
-- configure LibSink-2.0 options |
self.Options.args.output = self:GetSinkAce3OptionsDataTable() |
self.Options.args.output.disabled = function(i) return not self.db.profile.enable end |
self:SetSinkStorage(self.db.profile) |
-- TODO: add an option to whisper offending players |
PLAYER_GUID = UnitGUID("player") |
self:Connect() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnEnable(): exit") |
end |
function DisplacedEnergyNazi:OnDisable() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnDisable(): enter") |
self:Disconnect() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnDisable(): exit") |
end |
function DisplacedEnergyNazi:Update() |
mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:Update(): enter") |
if self.db.profile.enable then |
self:Connect() |
else |
self:Disconnect() |
end |
mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:Update(): exit") |
end |
function DisplacedEnergyNazi:Connect() |
-- register event |
self:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED", "OnCombatLogEvent") -- combat log event |
self:RegisterEvent("GROUP_ROSTER_UPDATE", "OnGroupRosterUpdate") -- player added/moved/removed from group |
self:RegisterEvent("PLAYER_REGEN_DISABLED", "OnPlayerRegenDisabled") -- combat starts |
self:RegisterEvent("PLAYER_REGEN_ENABLED", "OnPlayerRegenEnabled") -- combat ends |
-- configure initial unit GUID -> unitid map |
self:ScanFullRoster() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnEnable(): exit") |
end |
function DisplacedEnergyNazi:Disconnect() |
function DisplacedEnergyNazi:OnDisable() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnDisable(): enter") |
self:UnregisterAllEvents() |
self:UnregisterAllMessages() |
self:CancelAllTimers() |
-- mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:OnDisable(): exit") |
end |
----------------------------------------------------------------------------- |
message = L["STOP IT"] .. ": " .. originName .. " " .. L["DISPELLED Displaced Energy TOO CLOSE TO OTHERS!!!"] |
mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:SPELL_DISPEL(): " .. MESSAGE_BOILER:format(message)) |
if DisplacedEnergyNazi.db.profile.whisper then |
WhisperMessage(originName, message) |
end |
BroadcastMessage(message) |
DeliverMessage(message) |
end |
end |
local n, r = UnitName(unitid) |
local fn = n .. (r and ("-" .. r)) or "" |
if DisplacedEnergyNazi.db.profile.whisper then |
WhisperMessage(fn, L["GET AWAY"] .. ": " .. fn .. " " .. L["Displaced Energy is DAMAGING OTHERS!!!"]) |
end |
names = (names and (names .. ", " .. fn)) or fn |
end |
end |
local message = L["GET AWAY"] .. ": " .. names .. " " .. L["Displaced Energy is DAMAGING OTHERS!!!"] |
mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:SPELL_AURA_APPLIED(): " .. MESSAGE_BOILER:format(message)) |
BroadcastMessage(message) |
DeliverMessage(message) |
end |
end |
end |
local message = L["GET AWAY"] .. ": " .. targetName .. " " .. L["AFFLICTED with Displaced Energy!!!"] |
mseq = mseq + 1; ChatFrame7:AddMessage(("%08d "):format(mseq) .. "DisplacedEnergyNazi:SPELL_AURA_APPLIED(): " .. MESSAGE_BOILER:format(message)) |
if DisplacedEnergyNazi.db.profile.whisper then |
WhisperMessage(targetName, message) |
end |
BroadcastMessage(message) |
DeliverMessage(message) |
end |
end |
--[[ enUS ]] L["DisplacedEnergyNazi"] = "DisplacedEnergyNazi" |
--[[ enUS ]] L["Enable"] = "Enable" |
--[[ enUS ]] L["Enable DisplacedEnergyNazi"] = "Enable DisplacedEnergyNazi" |
--[[ enUS ]] L["Displaced Energy Affliction"] = "Displaced Energy Affliction" |
--[[ enUS ]] L["Warn about Displaced Energy debuff affliction"] = "Warn about Displaced Energy debuff affliction" |
--[[ enUS ]] L["Displaced Energy Damage"] = "Displaced Energy Damage" |
--[[ enUS ]] L["Warn about Displaced Energy debuff damage"] = "Warn about Displaced Energy debuff damage" |
--[[ enUS ]] L["Displaced Energy Dispels"] = "Displaced Energy Dispels" |
--[[ enUS ]] L["Warn about Displaced Energy debuff dispels too close to the raid"] = "Warn about Displaced Energy debuff dispels too close to the raid" |
--[[ enUS ]] L["Whisper Offending Player"] = "Whisper Offending Player" |
--[[ enUS ]] L["Whisper offending player, in addition to normal output"] = "Whisper offending player, in addition to normal output" |
-- combat log name of the boss |
--[[ enUS ]] L["Malkorok"] = "Malkorok" |
----------------------------------------------------------------------------- |
local MAJOR_VERSION = "0.2.0" |
local MAJOR_VERSION = "0.1.0" |
local MINOR_VERSION = ("$Revision$"):match("%d+") |
local locale = GetLocale() |
## Author: Acapela |
## OptionalDeps: Ace3, LibStub |
## X-Category: Interface Enhancements |
## X-Embeds: Ace3, LibStub, LibSink-2.0 |
## X-Embeds: Ace3, LibStub |
## SavedVariables: DisplacedEnergyNaziDB |
## X-License: LGPL v2.1 or later |
Libs\AceHook-3.0\AceHook-3.0.xml |
Libs\AceTimer-3.0\AceTimer-3.0.xml |
Libs\LibSink-2.0\lib.xml |
##### Core DisplacedEnergyNazi |
DisplacedEnergyNaziLocale.lua |
Version.lua |
DisplacedEnergyNaziOptions.lua |
## |