242 lines
8.6 KiB
Lua
242 lines
8.6 KiB
Lua
---@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
|