vanilla-wow-addons – Rev 1
?pathlinks?
local parser = ParserLib:GetInstance("1.1")
local dewdrop = DewdropLib:GetInstance("1.0")
local version = "0.4.7"
SimpleCombatLog = {}
local self = SimpleCombatLog
-- Unnamed frame for events.
if not self.frame then
self.frame = CreateFrame("Frame");
self.frame:RegisterEvent("PLAYER_ENTERING_WORLD");
self.frame:SetScript("OnEvent", function() self:OnEvent() end );
end
-- Event handler for ParserLib.
local function OnCombatEvent(event, info)
self:OnCombatEvent(event, info)
end
-- Search for the event in eventList.
local function SearchList(list, text)
for i in list do
for j in list[i] do
if list[i][j] == text then return true end
end
end
end
self.eventTypes = {
"selfhit",
"otherhit",
"selfspell",
"otherspell",
"selfdot",
"otherdot",
"death",
"aura",
"enchant",
"trade",
"experience",
"honor",
"reputation",
"fail",
}
self.eventList = {
otherhit = {
"CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_HITS",
"CHAT_MSG_COMBAT_CREATURE_VS_CREATURE_MISSES",
"CHAT_MSG_COMBAT_CREATURE_VS_PARTY_HITS",
"CHAT_MSG_COMBAT_CREATURE_VS_PARTY_MISSES",
"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS",
"CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES",
"CHAT_MSG_COMBAT_FRIENDLYPLAYER_HITS",
"CHAT_MSG_COMBAT_FRIENDLYPLAYER_MISSES",
"CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS",
"CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES",
"CHAT_MSG_COMBAT_PARTY_HITS",
"CHAT_MSG_COMBAT_PARTY_MISSES",
},
reputation = {
"CHAT_MSG_COMBAT_FACTION_CHANGE",
},
death = {
"CHAT_MSG_COMBAT_FRIENDLY_DEATH",
"CHAT_MSG_COMBAT_HOSTILE_DEATH",
},
honor = {
"CHAT_MSG_COMBAT_HONOR_GAIN",
},
selfhit = {
"CHAT_MSG_COMBAT_PET_HITS",
"CHAT_MSG_COMBAT_PET_MISSES",
"CHAT_MSG_COMBAT_SELF_HITS",
"CHAT_MSG_COMBAT_SELF_MISSES",
},
experience = {
"CHAT_MSG_COMBAT_XP_GAIN",
},
aura = {
"CHAT_MSG_SPELL_AURA_GONE_OTHER",
"CHAT_MSG_SPELL_AURA_GONE_SELF",
"CHAT_MSG_SPELL_AURA_GONE_PARTY",
"CHAT_MSG_SPELL_BREAK_AURA",
},
otherspell = {
"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_BUFF",
"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE",
"CHAT_MSG_SPELL_CREATURE_VS_PARTY_BUFF",
"CHAT_MSG_SPELL_CREATURE_VS_PARTY_DAMAGE",
"CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF",
"CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE",
"CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF",
"CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE",
"CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF",
"CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE",
"CHAT_MSG_SPELL_PARTY_BUFF",
"CHAT_MSG_SPELL_PARTY_DAMAGE",
},
fail = {
"CHAT_MSG_SPELL_FAILED_LOCALPLAYER",
},
enchant = {
"CHAT_MSG_SPELL_ITEM_ENCHANTMENTS",
},
otherdot = {
"CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS",
"CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE",
"CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS",
"CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE",
"CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS",
"CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE",
"CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS",
"CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE",
"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS",
},
selfdot = {
"CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS",
"CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE",
"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF",
},
selfspell = {
"CHAT_MSG_SPELL_PET_BUFF",
"CHAT_MSG_SPELL_PET_DAMAGE",
"CHAT_MSG_SPELL_SELF_BUFF",
"CHAT_MSG_SPELL_SELF_DAMAGE",
},
trade = {
"CHAT_MSG_SPELL_TRADESKILLS",
}
}
function SimpleCombatLog:Colorize(value, valueType)
local c = self:GetColor(valueType)
if not c then return value end
if not c.b or not c.g or not c.r then
self:Print("Invalid color field for value " .. valueType, 1, true, 1, 0, 0)
end
return string.format("|cff%02x%02x%02x%s|r", (c.r*255), (c.g*255), (c.b*255), value)
end
function SimpleCombatLog:GetColor(valueType)
if not self.savedVars.colors or not self.savedVars.colors[valueType] then
return self.defaultColors[valueType]
else
return self.savedVars.colors[valueType]
end
end
function SimpleCombatLog:OnEvent()
if event == "PLAYER_ENTERING_WORLD" then
self:Initialize()
end
end
function SimpleCombatLog:Initialize()
if self.initialized then return end
-- Checking saved variables.
if not SCL_Config then self:LoadDefaultSettings() else self.savedVars = SCL_Config end
-- Check for old version saved variables.
if self.savedVars and not self.savedVars.events then self:LoadDefaultSettings() end
if not self.savedVars.minimapButton then self.savedVars.minimapButton = {} end
-- Slash commands.
SLASH_SCL1 = "/scl";
SlashCmdList["SCL"] = function (msg) self:SlashCommand(msg) end
MyMinimapButton:Create("SimpleCombatLog", self.savedVars.minimapButton)
MyMinimapButton:SetIcon("SimpleCombatLog","Interface\\Icons\\INV_Misc_Food_66")
MyMinimapButton:SetTooltip("SimpleCombatLog", self.loc.buttonTooltip)
dewdrop:Register(SimpleCombatLogMinimapButton, 'children', function(level, value) self:OptionOpen(level, value) end )
self.needRefreshChatEvent = true
self:RefreshSettings()
self.frame:UnregisterEvent("PLAYER_ENTERING_WORLD")
self.initialized = true
end
function SimpleCombatLog:SlashCommand(msg)
if msg == "suppress" then
self.savedVars.nosuppress = not self.savedVars.nosuppress
self.needRefreshChatEvent = true
self:RefreshSettings()
self:PrintHelp()
elseif msg == "optionbutton" then
self.savedVars.nooptionbutton = not self.savedVars.nooptionbutton
self:RefreshSettings()
elseif msg == "defaults" then
self:Print(self.loc.loaddefault, 1, true)
self:LoadDefaultSettings()
elseif msg == "option" then
dewdrop:Open(SimpleCombatLogMinimapButton)
self:PrintHelp()
else
self:PrintHelp()
end
end
function SimpleCombatLog:PrintHelp()
local on
if self.savedVars.nooptionbutton then on = "Off" else on = "On" end
self:Print(string.format( "optionbutton (|cff3333ff%s|r) : %s", on, self.loc.help.optionbutton), 1)
if self.savedVars.nosuppress then on = "Off" else on = "On" end
self:Print(string.format( "suppress (|cff3333ff%s|r) : %s", on, self.loc.help.suppress), 1 )
self:Print(string.format( "defaults : %s", self.loc.help.defaults), 1)
self:Print(string.format( "option : %s", self.loc.help.option), 1)
end
function SimpleCombatLog:RefreshSettings()
if self.savedVars.nooptionbutton then
-- MyMinimapButton:Disable("SimpleCombatLog")
else
-- MyMinimapButton:Enable("SimpleCombatLog")
end
if self.needRefreshChatEvent then
if self.savedVars.nosuppress then
self:RefreshChatFrameEvents(true)
else
self:RefreshChatFrameEvents(false)
end
self.needRefreshChatEvent = nil
end
for i, v in self.eventTypes do
if self.savedVars.events[v] and not parser:IsEventRegistered("SimpleCombatLog", self.eventList[v][1]) then
for j in self.eventList[v] do
parser:RegisterEvent("SimpleCombatLog", self.eventList[v][j], OnCombatEvent)
end
elseif not self.savedVars.events[v] and parser:IsEventRegistered("SimpleCombatLog", self.eventList[v][1]) then
for j in self.eventList[v] do
parser:UnregisterEvent("SimpleCombatLog", self.eventList[v][j], OnCombatEvent)
end
end
end
end
function SimpleCombatLog:OnCombatEvent(event, info)
if not self:FilterCheck(info) then return end
if info.source == ParserLib_SELF then info.source = self.loc.you end
if info.victim == ParserLib_SELF then info.victim = self.loc.you end
if info.sourceGained == ParserLib_SELF then info.sourceGained = self.loc.you end
info.source = self:ColorizeName(info.source)
info.victim = self:ColorizeName(info.victim)
info.sourceGained = self:ColorizeName(info.sourceGained)
local extra, trailer
if info.skill == ParserLib_MELEE then info.skill = "melee" end
if info.skill == ParserLib_DAMAGESHIELD then info.skill = "damage shield" end
if info.isCrit then info.amount = string.format("*%s*", info.amount) end
if info.isDOT then info.amount = string.format("~%s~", info.amount) end
if info.skill then
info.skill = self:Colorize(info.skill, "skill")
end
if info.type == "hit" then
if info.element then
info.amount = self:Colorize(info.amount, self:GetElementType(info.element))
else
info.amount = self:Colorize(info.amount, "physical")
end
if info.isCrit then
extra = "crit"
elseif info.isDOT then
extra = "dot"
else
extra = "hit"
end
trailer = self:GetTrailerString(info)
self:Print(string.format(self.patterns.hit, info.source, info.skill, extra, info.victim, info.amount) .. trailer)
elseif info.type == "heal" then
info.amount = self:Colorize(info.amount, "heal")
self:Print(string.format(self.patterns.heal, info.source, info.skill, info.victim, info.amount))
elseif info.type == "debuff" then
extra = self:Colorize("++", "debuff")
if info.amountRank then
info.skill = string.format("%s(%s)", info.skill, info.amountRank)
end
self:Print(string.format(self.patterns.debuff, info.victim, extra, info.skill))
elseif info.type == "buff" then
extra = self:Colorize("++", "buff")
if info.amountRank then
info.skill = string.format("%s(%s)", info.skill, info.amountRank)
end
self:Print(string.format(self.patterns.buff, info.victim, extra, info.skill))
elseif info.type == "fade" then
self:Print(string.format(self.patterns.fade, info.victim, info.skill))
elseif info.type == "dispel" then
if not info.isFailed then
self:Print(string.format(self.patterns.fade, info.victim, info.skill)) -- Use the same pattern
else
self:Print(string.format(self.patterns.failDispel, info.source, info.victim, info.skill))
end
elseif info.type == "gain" then
self:Print(string.format(self.patterns.gain, info.source, info.skill, info.victim, info.amount, info.attribute))
elseif info.type == "extraattack" then
self:Print(string.format(self.patterns.extraattack, info.victim, info.amount, info.skill))
elseif info.type == "honor" then
if info.isDishonor then
self:Print(string.format(self.patterns.dishonor, info.source))
else
if info.source then
trailer = string.format(" (%s %s)", info.sourceRank, info.source)
else
trailer = ""
end
self:Print(string.format(self.patterns.honor, info.amount)..trailer)
end
elseif info.type == "experience" then
trailer = ""
if info.source then trailer = string.format("%s(%s)", trailer, info.source) end
if info.bonusAmount then trailer = string.format("%s(%s%s)", trailer, info.bonusType, info.bonusAmount) end
if info.penaltyAmount then trailer = string.format("%s(%s%s)", trailer, info.penaltyType, info.penaltyAmount) end
if info.amountGroupBonus then trailer = string.format("%s(G+%s)", trailer, info.amountGroupBonus) end
if info.amountRaidPenalty then trailer = string.format("%s(R-%s)", trailer, info.amountRaidPenalty) end
self:Print(string.format(self.patterns.experience, info.amount).. trailer)
elseif info.type == "reputation" then
if not info.amount then
trailer = info.rank
else
if info.isNegative then
trailer = string.format("-%s", info.amount)
else
trailer = string.format("+%s", info.amount)
end
end
self:Print(string.format(self.patterns.reputation, info.faction, trailer))
elseif info.type == "feedpet" then
self:Print(string.format(self.patterns.feedpet, info.victim, info.item))
elseif info.type == "enchant" then
self:Print(string.format(self.patterns.enchant, info.source, info.skill, info.victim, info.item))
elseif info.type == "miss" then
self:Print(string.format(self.patterns.miss, info.source, info.skill, self:Colorize(info.missType, "miss"), info.victim))
elseif info.type == "cast" then
if info.isBegin then
self:Print(string.format(self.patterns.beginCast, info.source, info.skill))
else
if info.victim then
self:Print(string.format(self.patterns.castTargetted, info.source, info.skill, info.victim))
else
self:Print(string.format(self.patterns.cast, info.source, info.skill))
end
end
elseif info.type == "interrupt" then
self:Print(string.format(self.patterns.interrupt, info.source, info.victim, info.skill))
elseif info.type == "death" then
if info.source then trailer = string.format("(%s)", info.source) else trailer = "" end
self:Print(string.format(self.patterns.death, info.victim)..trailer)
elseif info.type == "environment" then
trailer = self:GetTrailerString(info)
self:Print(string.format(self.patterns.environment, info.victim, info.damageType, info.amount)..trailer)
elseif info.type == "create" then
self:Print(string.format(self.patterns.create, info.source, info.item))
elseif info.type == "fail" and self.savedVars.showfailure then
self:Print(string.format(self.patterns.fail, info.skill, info.reason))
elseif info.type == "drain" then
self:Print(string.format(self.patterns.drain, info.source, info.skill, info.victim, info.amount, info.attribute))
elseif info.type == "leech" then
self:Print(string.format(self.patterns.leech, info.source, info.skill, info.victim, info.amount, info.attribute, info.sourceGained, info.amountGained, info.attributeGained))
end
end
function SimpleCombatLog:GetElementType(element)
if element == SPELL_SCHOOL0_CAP then return 'physical'
elseif element == SPELL_SCHOOL1_CAP then return 'holy'
elseif element == SPELL_SCHOOL2_CAP then return 'fire'
elseif element == SPELL_SCHOOL3_CAP then return 'nature'
elseif element == SPELL_SCHOOL4_CAP then return 'frost'
elseif element == SPELL_SCHOOL5_CAP then return 'shadow'
elseif element == SPELL_SCHOOL6_CAP then return 'arcane'
else return element end
end
function SimpleCombatLog:GetTrailerString(info)
local trailer = ""
if info.isCrushing then trailer = trailer .. self.patterns.crushing end
if info.isGlancing then trailer = trailer .. self.patterns.glancing end
if info.amountAbsorb then trailer = trailer .. format(self.patterns.absorb, info.amountAbsorb) end
if info.amountResist then trailer = trailer .. format(self.patterns.resist, info.amountResist) end
if info.amountBlock then trailer = trailer .. format(self.patterns.block, info.amountBlock) end
if info.amountVulnerable then trailer = trailer .. format(self.patterns.vulnerable, info.amountVulnerable) end
return trailer
end
function SimpleCombatLog:FilterCheck(info)
local f = self.savedVars.filters
if info.type == "hit" then
if f.hit then return false end
elseif info.type == "heal" then
if f.heal then return false end
elseif info.type == "miss" then
if f.miss then return false end
elseif info.type == "gain" then
if f.gain then return false end
elseif info.type == "drain" or info.type == "leech" then
if f.drain then return false end
elseif info.type == "cast" then
if f.cast then return false end
end
if not ( info.source or info.victim ) then return true end
if info.source and not f[self:SearchName(info.source)] then return true end
if info.victim and not f[self:SearchName(info.victim)] then return true end
return false
end
function SimpleCombatLog:RefreshChatFrameEvents(enable)
for index, value in ChatFrame2.messageTypeList do
for eventIndex, eventValue in ChatTypeGroup[value] do
if SearchList(self.eventList, eventValue) then
if enable then
ChatFrame2:RegisterEvent(eventValue);
else
ChatFrame2:UnregisterEvent(eventValue);
end
end
end
end
end
function SimpleCombatLog:SearchName(name)
if name == ParserLib_SELF then return "player" end
if name == UnitName("player") then return "player" end
if name == UnitName("pet") then return "pet" end
for i=1, GetNumPartyMembers() do
if name == UnitName("party"..i) then return "party" end
end
for i=1, GetNumRaidMembers() do
if name == UnitName("raid"..i) then return "raid" end
end
if name == UnitName("target") then return "target" end
return 'other'
end
function SimpleCombatLog:ColorizeName(name)
if not name then return end
if name == self.loc.you then return self:Colorize(name, "player") end
return self:Colorize(name, self:SearchName(name) )
end
function SimpleCombatLog:Print(msg, id, title, r,g,b)
if not id then id = self.savedVars.outputframe end
if title then
msg = "SimpleCombatLog " .. version .. " : " .. msg
end
getglobal("ChatFrame"..id):AddMessage(msg,r,g,b)
end
function SimpleCombatLog:OptionOpen(level, value)
if level == 1 then
dewdrop:AddLine(
'text', self.loc.title .. version,
'isTitle', true
)
dewdrop:AddLine()
dewdrop:AddLine(
'text', self.loc.color,
'hasArrow', true,
'value', "color"
)
dewdrop:AddLine(
'text', self.loc.filter,
'hasArrow', true,
'value', "filter"
)
dewdrop:AddLine(
'text', self.loc.event,
'hasArrow', true,
'value', "event"
)
dewdrop:AddLine()
dewdrop:AddLine(
'text', self.loc.suppress,
'func',
function()
self.savedVars.nosuppress = not self.savedVars.nosuppress
self.needRefreshChatEvent = true
self:RefreshSettings()
end,
'checked', not self.savedVars.nosuppress
)
dewdrop:AddLine()
dewdrop:AddLine(
'text', self.loc.default,
'notCheckable', true,
'func', function() self:LoadDefaultSettings() end
)
elseif level == 2 then
if value == "color" then
local c
c = self:GetColor('player')
dewdrop:AddLine(
'text', self.loc.player,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('player',r,g,b) end
)
c = self:GetColor('pet')
dewdrop:AddLine(
'text', self.loc.pet,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('pet',r,g,b) end
)
c = self:GetColor('party')
dewdrop:AddLine(
'text', self.loc.party,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('party',r,g,b) end
)
c = self:GetColor('raid')
dewdrop:AddLine(
'text', self.loc.raid,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('raid',r,g,b) end
)
c = self:GetColor('target')
dewdrop:AddLine(
'text', self.loc.target,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('target',r,g,b) end
)
c = self:GetColor('other')
dewdrop:AddLine(
'text', self.loc.other,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('other',r,g,b) end
)
dewdrop:AddLine()
c = self:GetColor('skill')
dewdrop:AddLine(
'text', self.loc.skill,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('skill',r,g,b) end
)
c = self:GetColor('buff')
dewdrop:AddLine(
'text', self.loc.buff,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('buff',r,g,b) end
)
c = self:GetColor('debuff')
dewdrop:AddLine(
'text', self.loc.debuff,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('debuff',r,g,b) end
)
c = self:GetColor('heal')
dewdrop:AddLine(
'text', self.loc.heal,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('heal',r,g,b) end
)
c = self:GetColor('miss')
dewdrop:AddLine(
'text', self.loc.miss,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('miss',r,g,b) end
)
c = self:GetColor('physical')
dewdrop:AddLine(
'text', self.loc.physical,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('physical',r,g,b) end
)
c = self:GetColor('holy')
dewdrop:AddLine(
'text', self.loc.holy,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('holy',r,g,b) end
)
c = self:GetColor('fire')
dewdrop:AddLine(
'text', self.loc.fire,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('fire',r,g,b) end
)
c = self:GetColor('nature')
dewdrop:AddLine(
'text', self.loc.nature,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('nature',r,g,b) end
)
c = self:GetColor('frost')
dewdrop:AddLine(
'text', self.loc.frost,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('frost',r,g,b) end
)
c = self:GetColor('shadow')
dewdrop:AddLine(
'text', self.loc.shadow,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('shadow',r,g,b) end
)
c = self:GetColor('arcane')
dewdrop:AddLine(
'text', self.loc.arcane,
'hasColorSwatch', true,
'r', c.r,
'g', c.g,
'b', c.b,
'swatchFunc', function(r,g,b) self:OptionColorChange('arcane',r,g,b) end
)
elseif value == 'filter' then
dewdrop:AddLine(
'text', self.loc.player,
'func', function() self.savedVars.filters.player = not self.savedVars.filters.player end,
'checked', not self.savedVars.filters.player
)
dewdrop:AddLine(
'text', self.loc.pet,
'func', function() self.savedVars.filters.pet = not self.savedVars.filters.pet end,
'checked', not self.savedVars.filters.pet
)
dewdrop:AddLine(
'text', self.loc.party,
'func', function() self.savedVars.filters.party = not self.savedVars.filters.party end,
'checked', not self.savedVars.filters.party
)
dewdrop:AddLine(
'text', self.loc.raid,
'func', function() self.savedVars.filters.raid = not self.savedVars.filters.raid end,
'checked', not self.savedVars.filters.raid
)
dewdrop:AddLine(
'text', self.loc.target,
'func', function() self.savedVars.filters.target = not self.savedVars.filters.target end,
'checked', not self.savedVars.filters.target
)
dewdrop:AddLine(
'text', self.loc.other,
'func', function() self.savedVars.filters.other = not self.savedVars.filters.other end,
'checked', not self.savedVars.filters.other
)
dewdrop:AddLine()
dewdrop:AddLine(
'text', self.loc.hit,
'func', function() self.savedVars.filters.hit = not self.savedVars.filters.hit end,
'checked', not self.savedVars.filters.hit
)
dewdrop:AddLine(
'text', self.loc.heal,
'func', function() self.savedVars.filters.heal = not self.savedVars.filters.heal end,
'checked', not self.savedVars.filters.heal
)
dewdrop:AddLine(
'text', self.loc.miss,
'func', function() self.savedVars.filters.miss = not self.savedVars.filters.miss end,
'checked', not self.savedVars.filters.miss
)
dewdrop:AddLine(
'text', self.loc.cast,
'func', function() self.savedVars.filters.cast = not self.savedVars.filters.cast end,
'checked', not self.savedVars.filters.cast
)
dewdrop:AddLine(
'text', self.loc.gain,
'func', function() self.savedVars.filters.gain = not self.savedVars.filters.gain end,
'checked', not self.savedVars.filters.gain
)
dewdrop:AddLine(
'text', self.loc.drain,
'func', function() self.savedVars.filters.drain = not self.savedVars.filters.drain end,
'checked', not self.savedVars.filters.drain
)
elseif value == 'event' then
dewdrop:AddLine(
'text', self.loc.selfhit,
'func', function() self.savedVars.events.selfhit = not self.savedVars.events.selfhit; self:RefreshSettings() end,
'checked', self.savedVars.events.selfhit
)
dewdrop:AddLine(
'text', self.loc.otherhit,
'func', function() self.savedVars.events.otherhit = not self.savedVars.events.otherhit; self:RefreshSettings() end,
'checked', self.savedVars.events.otherhit
)
dewdrop:AddLine(
'text', self.loc.selfspell,
'func', function() self.savedVars.events.selfspell = not self.savedVars.events.selfspell; self:RefreshSettings() end,
'checked', self.savedVars.events.selfspell
)
dewdrop:AddLine(
'text', self.loc.otherspell,
'func', function() self.savedVars.events.otherspell = not self.savedVars.events.otherspell; self:RefreshSettings() end,
'checked', self.savedVars.events.otherspell
)
dewdrop:AddLine(
'text', self.loc.selfdot,
'func', function() self.savedVars.events.selfdot = not self.savedVars.events.selfdot; self:RefreshSettings() end,
'checked', self.savedVars.events.selfdot
)
dewdrop:AddLine(
'text', self.loc.otherdot,
'func', function() self.savedVars.events.otherdot = not self.savedVars.events.otherdot; self:RefreshSettings() end,
'checked', self.savedVars.events.otherdot
)
dewdrop:AddLine(
'text', self.loc.death,
'func', function() self.savedVars.events.death = not self.savedVars.events.death; self:RefreshSettings() end,
'checked', self.savedVars.events.death
)
dewdrop:AddLine(
'text', self.loc.aura,
'func', function() self.savedVars.events.aura = not self.savedVars.events.aura; self:RefreshSettings() end,
'checked', self.savedVars.events.aura
)
dewdrop:AddLine(
'text', self.loc.enchant,
'func', function() self.savedVars.events.enchant = not self.savedVars.events.enchant; self:RefreshSettings() end,
'checked', self.savedVars.events.enchant
)
dewdrop:AddLine(
'text', self.loc.trade,
'func', function() self.savedVars.events.trade = not self.savedVars.events.trade; self:RefreshSettings() end,
'checked', self.savedVars.events.trade
)
dewdrop:AddLine(
'text', self.loc.experience,
'func', function() self.savedVars.events.experience = not self.savedVars.events.experience; self:RefreshSettings() end,
'checked', self.savedVars.events.experience
)
dewdrop:AddLine(
'text', self.loc.honor,
'func', function() self.savedVars.events.honor = not self.savedVars.events.honor; self:RefreshSettings() end,
'checked', self.savedVars.events.honor
)
dewdrop:AddLine(
'text', self.loc.reputation,
'func', function() self.savedVars.events.reputation = not self.savedVars.events.reputation; self:RefreshSettings() end,
'checked', self.savedVars.events.reputation
)
dewdrop:AddLine(
'text', self.loc.fail,
'func', function() self.savedVars.events.fail = not self.savedVars.events.fail; self:RefreshSettings() end,
'checked', self.savedVars.events.fail
)
end
end
end
function SimpleCombatLog:OptionColorChange(item, r,g,b)
if not self.savedVars.colors[item] then self.savedVars.colors[item] = {} end
self.savedVars.colors[item].r = r
self.savedVars.colors[item].g = g
self.savedVars.colors[item].b = b
end
function SimpleCombatLog:LoadDefaultSettings()
SCL_Config = {}
self.savedVars = SCL_Config
self.savedVars.colors = {}
self.savedVars.filters = {}
self.savedVars.minimapButton = {}
self.savedVars.events = {}
for i, v in self.eventTypes do
if v ~= 'fail' then
self.savedVars.events[v] = true
end
end
self.savedVars.outputframe = 2
self.savedVars.nosuppress = nil
self.savedVars.nooptionbutton = nil
self:RefreshSettings()
end
if not GetParser then function GetParser() return parser end end