51 lines
1.5 KiB
Lua
51 lines
1.5 KiB
Lua
local tttGlowingDetective = CreateConVar("ttt_glowing_detective", "1", {FCVAR_SERVER_CAN_EXECUTE, FCVAR_ARCHIVE, FCVAR_NOTIFY}, "Should the detective be seen through walls?"):GetBool();
|
|
|
|
local function GlowingTTT()
|
|
local mates = {}
|
|
local ply = LocalPlayer()
|
|
|
|
if ply.GetTeam then
|
|
for k, v in pairs(player.GetAll()) do
|
|
if v ~= ply and v:IsActive() and ply:IsSpecial() and not v:IsInnocent() and ((v:GetTeam() == ply:GetTeam() and not ply:GetDetective()) or (v:GetRole() == ply:GetRole())) and (not ply.IsShinigami or not ply:IsShinigami()) then
|
|
table.insert(mates, v)
|
|
end
|
|
end
|
|
else
|
|
for k, v in pairs(player.GetAll()) do
|
|
if v:IsActiveTraitor() and v ~= ply then
|
|
table.insert(mates, v)
|
|
elseif tttGlowingDetective and v:IsActiveDetective() and v ~= ply then
|
|
table.insert(mates, v)
|
|
end
|
|
end
|
|
end
|
|
|
|
if #mates == 0 then return end
|
|
|
|
for _, v in pairs(mates) do
|
|
local clr = Color(255, 0, 0)
|
|
if v.GetRoleTable and v:GetRoleTable().DefaultColor then
|
|
clr = v:GetRoleTable().DefaultColor
|
|
elseif v.GetRoleColor and v:GetRoleColor() then
|
|
clr = v:GetRoleColor()
|
|
elseif v:IsTraitor() then
|
|
clr = Color(255, 0, 0)
|
|
elseif v:IsDetective() then
|
|
clr = Color(0, 0, 255)
|
|
end
|
|
|
|
if TTT2 then
|
|
outline.Add(v, clr, OUTLINE_MODE_VISIBLE)
|
|
else
|
|
halo.Add({ v }, clr, 0, 0, 3, true, true)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
local function CheckTTTGlow()
|
|
if gamemode.Get("terrortown") then
|
|
hook.Add("PreDrawHalos", "AddTTTTeamGlow", GlowingTTT)
|
|
end
|
|
end
|
|
hook.Add("PostGamemodeLoaded", "LoadTTTTeamGlow", CheckTTTGlow)
|