---@type Message[] aura_env.messageQueue = {} aura_env.separator = "ž" aura_env.addonprefix = "STINKY_DETECTOR" RegisterAddonMessagePrefix(aura_env.addonprefix) ---@type string[] local toNotify = { "Succpotato", "Extazyk", "Smokefire", "Smokemantra", "Хихихантер", "Муркот", "Растафаркрай" } local toNotify = { "Deathleta" } ---@class Message ---@field message string ---@field to string ---@field channel string ---@field addon boolean Message = { message = "", to = "", channel = "", addon = false, ---@param message string ---@param to string ---@param channel string ---@param addon? boolean ---@return Message new = function(message, to, channel, addon) local self = setmetatable({}, { __index = Message }) self.message = message self.to = to self.channel = channel self.addon = addon or false return self end, ---@param stinky Stinky QueueNotifyGuild = function(stinky) if not aura_env.config.stinkyNotifyGuild then return end if aura_env.config.debug then print("Queueing notify guild:") end local message = Message.new(stinky:FormMessage(), nil, "GUILD") if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end, ---@param stinky Stinky QueueNotifyWhisper = function(stinky) if not aura_env.config.stinkyNotifyWhisper then return end if aura_env.config.debug then print("Queueing notify whisper:") end local text = stinky:FormMessage() for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER") if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end end, ---@param stinky Stinky QueueNotifyAddonGuild = function(stinky) if not aura_env.config.stinkyNotifyAddonGuild then return end if aura_env.config.debug then print("Queueing notify addon guild:") end local message = Message.new(stinky:FormAddonMessage(), nil, "GUILD", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end, ---@param stinky Stinky QueueNotifyAddonWhisper = function(stinky) if not aura_env.config.stinkyNotifyAddonWhisper then return end if aura_env.config.debug then print("Queueing notify addon whisper:") end local text = stinky:FormAddonMessage() for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end end, ---@param faction string ---@param source string ---@param destination string ---@param spellName string QueueNotifyKilledAddonGuild = function(faction, source, destination, spellName) if not aura_env.config.killNotifyAddonGuild then return end if aura_env.config.debug then print("Queueing notify addon guild:") end local text = table.concat({ faction, source, spellName }, aura_env.separator) local message = Message.new(text, nil, "GUILD", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end, ---@param faction string ---@param source string ---@param destination string ---@param spellName string QueueNotifyKilledAddonWhisper = function(faction, source, destination, spellName) if not aura_env.config.killNotifyAddonWhisper then return end if aura_env.config.debug then print("Queueing notify addon whisper:") end local text = table.concat({ faction, source, destination, spellName }, aura_env.separator) for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end end, ---@param faction string ---@param source string ---@param destination string ---@param spellName string QueueNotifyKilledGuild = function(faction, source, destination, spellName) if not aura_env.config.killNotifyGuild then return end if aura_env.config.debug then print("Queueing notify guild:") end local text = string.format("%s %s убил %s с помощью %s", faction, source, destination, spellName) local message = Message.new(text, nil, "GUILD", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end, ---@param faction string ---@param source string ---@param destination string ---@param spellName string QueueNotifyKilledWhisper = function(faction, source, destination, spellName) if not aura_env.config.killNotifyWhisper then return end if aura_env.config.debug then print("Queueing notify whisper:") end local text = string.format("%s %s убил %s с помощью %s", faction, source, destination, spellName) for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER", true) if aura_env.config.debug then DevTools_Dump(message) end table.insert(aura_env.messageQueue, message) end end } ---@class Stinky ---@field name string ---@field threat number 1-10 10 being maxima threat ---@field note string|nil Stinky = { name = "", threat = 0, note = "", ---@param name string ---@param threat number ---@param note string|nil ---@return Stinky new = function(name, threat, note) local self = setmetatable({}, { __index = Stinky }) self.name = name self.threat = threat self.note = note return self end, ---@param self Stinky ---@return string FormMessage = function(self) return string.format("%s в Оргриммаре!", self.name) end, ---@param self Stinky ---@return string FormAddonMessage = function(self) return table.concat({ self.name, self.threat, self.note }, aura_env.separator) end, } if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.PlayerFactionCache then WeakAurasSaved.Cyka.PlayerFactionCache = {} end WeakAurasSaved.Cyka.Stinkies = { ["Totleta"] = nil, ["Deathleta"] = Stinky.new("Deathleta", 1), ["Redbulka"] = Stinky.new("Redbulka", 5), ["Курлык"] = Stinky.new("Курлык", 5), ["Riener"] = Stinky.new("Riener", 5), ["Unwashed"] = Stinky.new("Unwashed", 5), ["Ловилуну"] = Stinky.new("Ловилуну", 5), ["Фоська"] = Stinky.new("Фоська", 5, "if she comes here to orgrimmar. then she will be with 1 or 2 friends. they can be killed. but it may be difficult"), ["Korovadura"] = Stinky.new("Korovadura", 5), ["Pizdosorkam"] = Stinky.new("Pizdosorkam", 3, "Horde"), ["Неонанируй"] = Stinky.new("Неонанируй", 5), ["Bunkkeer"] = Stinky.new("Bunkkeer", 5), ["Dewdew"] = Stinky.new("Dewdew", 4), ["Психопаточка"] = Stinky.new("Психопаточка", 5), ["Empanao"] = Stinky.new("Empanao", 3, "Horde"), ["Стелсон"] = Stinky.new("Стелсон", 1, "Apyr"), ["Trafik"] = Stinky.new("Trafik", 1, "Has agreed to behave, is french (also horde)"), ["Aye"] = Stinky.new("Aye", 8, "Actually a pretty good player, sadly... Part of DNF, says murkot"), ["Paskoo"] = Stinky.new("Paskoo", 2, "Really stinky but he's horde..."), ["Армагид"] = Stinky.new("Армагид", 3), ["Паладийпал"] = Stinky.new("Паладийпал", 5, "Possibly related to Oakskin"), ["Hmor"] = Stinky.new("Hmor", 4, "Horde"), ["Oakskin"] = Stinky.new("Oakskin", 5), ["Шпек"] = Stinky.new("Шпек", 5), ["Yunami"] = Stinky.new("Yunami", 5, "He is a loser but he's also horde... So I can't kill him even if I wanted to"), ["Joule"] = Stinky.new("Joule", 5), ["Rattenfenger"] = Stinky.new("Rattenfenger", 8, "Possibly related to DNF, he is a sign of trouble"), ["Blessly"] = Stinky.new("Blessly", 8, "Possibly related to DNF, he is a sign of trouble"), ["Ramáladni"] = Stinky.new("Ramáladni", 7, "Does not cause trouble and the guy is a behemoth... It is a lot of effort to remove him"), ["Асталабиста"] = Stinky.new("Асталабиста", 5), ["Srakonyh"] = Stinky.new("Srakonyh", 5, "Agreed to leave him alone until he kills someone again"), ["Залупотряс"] = Stinky.new("Залупотряс", 2, "Муркот: I understand if one of them killed the newbies. then you did everything right. they seem friendly but I also warned them not to hit the newbies"), ["Чмодвенк"] = Stinky.new("Чмодвенк", 5, "Муркот: I understand if one of them killed the newbies. then you did everything right. they seem friendly but I also warned them not to hit the newbies"), } aura_env.raceFactions = { ["Orc"] = "Horde", ["Undead"] = "Horde", ["Tauren"] = "Horde", ["Troll"] = "Horde", ["BloodElf"] = "Horde", ["Goblin"] = "Horde", ["Human"] = "Alliance", ["Dwarf"] = "Alliance", ["NightElf"] = "Alliance", ["Gnome"] = "Alliance", ["Draenei"] = "Alliance", ["Worgen"] = "Alliance", } local killSpamTime = 30 local recentlyKilled = {} aura_env.RegisterKill = function(source, destination, spellName, overkill) if recentlyKilled[source] and recentlyKilled[source] > GetTime() - killSpamTime then print("Death already reported") end if overkill <= 0 then return end local faction = "Неизвестная фракция" if WeakAurasSaved.Cyka.PlayerFactionCache[source] then faction = WeakAurasSaved.Cyka.PlayerFactionCache[source] end Message.QueueNotifyKilledGuild(faction, source, destination, spellName) Message.QueueNotifyKilledWhisper(faction, source, destination, spellName) Message.QueueNotifyKilledAddonGuild(faction, source, destination, spellName) Message.QueueNotifyKilledAddonWhisper(faction, source, destination, spellName) recentlyKilled[source] = GetTime() end aura_env.stinkies = WeakAurasSaved.Cyka.Stinkies aura_env.localStinkies = {} ---@param name string aura_env.StinkyDetected = function(name) if not aura_env.localStinkies[name] or aura_env.localStinkies[name] < GetTime() - aura_env.config.messageThrottle then local stinky = aura_env.stinkies[name] Message.QueueNotifyGuild(stinky) Message.QueueNotifyWhisper(stinky) Message.QueueNotifyAddonGuild(stinky) Message.QueueNotifyAddonWhisper(stinky) end aura_env.localStinkies[name] = GetTime() end if aura_env.config.addFriends and not aura_env.config.addFriends2 then local friends = {} local numfriends = GetNumFriends() for i = 1, numfriends do local name = GetFriendInfo(i) friends[name] = true end for k, v in pairs(WeakAurasSaved.Cyka.Stinkies) do if not friends[k] then AddFriend(k) end end C_Timer.After(1, function() local numfriends = GetNumFriends() for i = 1, numfriends do local name = GetFriendInfo(i) if WeakAurasSaved.Cyka.Stinkies[name] then C_Timer.After(1, function() -- print(name .. " " .. i .. " Stinky!") SetFriendNotes(i, "STINKY") end) else C_Timer.After(1, function() -- print(name .. " " .. i .. " Not stinky") SetFriendNotes(i, "Not stinky?") end) end end end) end --/run WeakAurasSaved.Cyka.Stinkies["Totleta"] = true -- /dump WeakAurasSaved.Cyka.Stinkies