---@type Message[] aura_env.messageQueue = {} ---@type number local threatNotifyLevel = aura_env.config.threatNotifyLevel or 5 local stinkyNotifyGuild = aura_env.config.stinkyNotifyGuild or true local stinkyNotifyWhisper = aura_env.config.stinkyNotifyWhisper or true local stinkyNotifyAddonGuild = aura_env.config.stinkyNotifyAddonGuild or true local stinkyNotifyAddonWhisper = aura_env.config.stinkyNotifyAddonWhisper or true local killNotifyGuild = aura_env.config.killNotifyGuild or true local killNotifyWhisper = aura_env.config.killNotifyWhisper or true local killNotifyAddonGuild = aura_env.config.killNotifyAddonGuild or true local killNotifyAddonWhisper = aura_env.config.killNotifyAddonWhisper or true ---@type string[] local toNotify = { "Succpotato", "Extazyk", "Smokefire", "Smokemantra", "Хихихантер", "Муркот", "Растафаркрай" } local toNotify = { "Succpotato" } ---@class Message ---@field message string ---@field to string ---@field channel string ---@field addon boolean Message = { ---@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 stinkyNotifyGuild then return end local message = Message.new(stinky:FormMessage(), nil, "GUILD") table.insert(aura_env.messageQueue, message) end, ---@param stinky Stinky QueueNotifyWhisper = function(stinky) if not stinkyNotifyWhisper then return end local text = stinky:FormMessage() for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER") table.insert(aura_env.messageQueue, message) end end, ---@param stinky Stinky QueueNotifyAddonGuild = function(stinky) if not stinkyNotifyAddonGuild then return end local message = Message.new(stinky:FormAddonMessage(), nil, "GUILD", true) table.insert(aura_env.messageQueue, message) end, ---@param stinky Stinky QueueNotifyAddonWhisper = function(stinky) if not stinkyNotifyAddonWhisper then return end local text = stinky:FormMessage() for _, to in ipairs(toNotify) do local message = Message.new(text, to, "WHISPER", true) 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 killNotifyAddonGuild then return end local text = string.format("%s|%s|%s|%s", faction, source, destination, spellName) local message = Message.new(text, nil, "GUILD", true) 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 killNotifyAddonWhisper then return 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) 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 killNotifyGuild then return end local text = string.format("%s %s убил %s с помощью %s", faction, source, destination, spellName) local message = Message.new(text, nil, "GUILD", true) 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 killNotifyWhisper then return 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) 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 string.format("%s|%s|%s", self.name, self.threat, self.note) end, } if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end if not WeakAurasSaved.Cyka.PlayerFactionCache then WeakAurasSaved.Cyka.PlayerFactionCache = {} end WeakAurasSaved.Cyka.Stinkies = { ["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() - 60 then PlaySoundFile("Interface\\Sounds\\Domination.ogg", "Master") local msg = string.format("%s в Оргриммаре!", name) for k, v in pairs(toNotify) do -- SendChatMessage(msg, "WHISPER", nil, v) table.insert(aura_env.messageQueue, { to = v, msg = msg, channel = "WHISPER" }) end table.insert(aura_env.messageQueue, { to = name, msg = msg, channel = "GUILD" }) end aura_env.localStinkies[name] = GetTime() end 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) --/run WeakAurasSaved.Cyka.Stinkies["Totleta"] = true -- /dump WeakAurasSaved.Cyka.Stinkies