Files
wow-weakauras/FreshShit/StinkyDetector/init.lua

242 lines
8.6 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@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
---@return nil
QueueNotifyAddonGuild = function(stinky)
if not stinkyNotifyAddonGuild then return end
local message = Message.new(stinky:FormAddonMessage(), stinky.name, "GUILD", true)
table.insert(aura_env.messageQueue, message)
end,
---@param stinky Stinky
---@return nil
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 stinky Stinky
---@return nil
QueueNotifyGuild = function(stinky)
if not stinkyNotifyGuild then return end
local message = Message.new(stinky:FormMessage(), stinky.name, "GUILD")
table.insert(aura_env.messageQueue, message)
end,
---@param stinky Stinky
---@return nil
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,
}
---@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
local msg = string.format("%s %s убил %s с помощью %s с переполнением %d",
faction, source, destination, spellName, overkill)
if killNotifyWhisper then
for k, v in pairs(toNotify) do
table.insert(aura_env.messageQueue, Message.new(msg, v, "WHISPER"))
end
end
table.insert(aura_env.messageQueue, Message.new(msg, source, "GUILD"))
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