mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-03 22:13:24 +00:00
Tweaked Moderators:
* They have their own channel msay, which all mods and admins can use. * They cannot see or use asay, but they can see and respond to adminhelps and admin PM's. * Their PM's will come up in maroon and show MOD PM. * They have a moderator panel that shows name, ckey, IP and CID. * They can use Set-Play, Set-Observe, Show-Skills, and can read and write Player Info. * They can Deadmin themselves for the round. Other Changes: * Player info now shows the rank of who typed what. * Admins are messages when player info is modified. * Tweaks to prevent moderators using some commands.
This commit is contained in:
@@ -6,7 +6,7 @@ var/global/BSACooldown = 0
|
||||
/proc/message_admins(var/text, var/admin_ref = 0)
|
||||
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
|
||||
for (var/mob/M in world)
|
||||
if (M && M.client && M.client.holder && M.client.holder.level > -3) //Lets not spam our retirees.
|
||||
if (M && M.client && M.client.holder && M.client.holder.level > -3 && M.client.holder.level != 0) //Lets not spam our retirees. Or moderators!
|
||||
if (admin_ref)
|
||||
M << dd_replaceText(rendered, "%admin_ref%", "\ref[M]")
|
||||
else
|
||||
@@ -176,6 +176,7 @@ var/global/BSACooldown = 0
|
||||
|
||||
var/datum/player_info/P = new
|
||||
P.author = usr.key
|
||||
P.rank = usr.client.holder.rank
|
||||
P.content = add
|
||||
var/modifyer = "th"
|
||||
switch(time2text(world.timeofday, "DD"))
|
||||
@@ -196,6 +197,9 @@ var/global/BSACooldown = 0
|
||||
|
||||
info << infos
|
||||
|
||||
message_admins("\blue [key_name_admin(usr)] has edited [key]'s notes.")
|
||||
log_admin("[key_name(usr)] has edited [key]'s notes.")
|
||||
|
||||
del info
|
||||
|
||||
var/savefile/note_list = new("data/player_notes.sav")
|
||||
@@ -221,6 +225,9 @@ var/global/BSACooldown = 0
|
||||
infos.Remove(item)
|
||||
info << infos
|
||||
|
||||
message_admins("\blue [key_name_admin(usr)] deleted one of [key]'s notes.")
|
||||
log_admin("[key_name(usr)] deleted one of [key]'s notes.")
|
||||
|
||||
del info
|
||||
|
||||
show_player_info(key)
|
||||
@@ -612,13 +619,6 @@ var/global/BSACooldown = 0
|
||||
var/datum/job/temp = job_master.GetJob(jobPos)
|
||||
if(!temp) continue
|
||||
joblist += temp.title
|
||||
if("miscdept")
|
||||
joblist += "pAI"
|
||||
for(var/jobPos in nonhuman_positions)
|
||||
if(!jobPos) continue
|
||||
var/datum/job/temp = job_master.GetJob(jobPos)
|
||||
if(!temp) continue
|
||||
joblist += temp.title
|
||||
else
|
||||
joblist += href_list["jobban3"]
|
||||
|
||||
@@ -800,7 +800,7 @@ var/global/BSACooldown = 0
|
||||
usr << browse(dat, "window=jobban2;size=600x250")
|
||||
return
|
||||
if(href_list["newjobban2"])
|
||||
if ((src.rank in list("Moderator", "Administrator", "Badmin", "Tyrant" )))
|
||||
if ((src.rank in list(/*"Moderator", */"Administrator", "Badmin", "Tyrant" )))
|
||||
var/mob/M = locate(href_list["jobban4"])
|
||||
var/job = href_list["newjobban2"]
|
||||
if(!ismob(M)) return
|
||||
@@ -877,7 +877,7 @@ var/global/BSACooldown = 0
|
||||
remove_goon(t)
|
||||
*/
|
||||
if (href_list["mute2"])
|
||||
if ((src.rank in list( "Moderator", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
if ((src.rank in list(/* "Moderator", */"Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/mob/M = locate(href_list["mute2"])
|
||||
if (ismob(M))
|
||||
if ((M.client && M.client.holder && (M.client.holder.level >= src.level)))
|
||||
@@ -891,7 +891,7 @@ var/global/BSACooldown = 0
|
||||
message_admins("\blue [key_name_admin(usr)] has [(M.client.muted ? "muted" : "voiced")] [key_name_admin(M)].", 1)
|
||||
M << "You have been [(M.client.muted ? "muted" : "voiced")]. Please resolve this in adminhelp."
|
||||
if (href_list["mute_complete"])
|
||||
if ((src.rank in list( "Moderator", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
if ((src.rank in list(/* "Moderator", */"Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/mob/M = locate(href_list["mute_complete"])
|
||||
if (ismob(M))
|
||||
if ((M.client && M.client.holder && (M.client.holder.level >= src.level)))
|
||||
@@ -997,7 +997,7 @@ var/global/BSACooldown = 0
|
||||
return
|
||||
|
||||
if (href_list["sendtoprison"])
|
||||
if ((src.rank in list( "Moderator", "Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
if ((src.rank in list(/* "Moderator", */"Admin Candidate", "Temporary Admin", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
|
||||
var/confirm = alert(usr, "Send to admin prison for the round?", "Message", "Yes", "No")
|
||||
if(confirm != "Yes")
|
||||
@@ -1350,24 +1350,30 @@ var/global/BSACooldown = 0
|
||||
// Now isn't that much better? IT IS NOW A PROC, i.e. kinda like a big panel like unstable
|
||||
|
||||
if (href_list["adminplayeropts"])
|
||||
var/mob/M = locate(href_list["adminplayeropts"])
|
||||
show_player_panel(M)
|
||||
if(rank in list("Admin Observer", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master"))
|
||||
var/mob/M = locate(href_list["adminplayeropts"])
|
||||
show_player_panel(M)
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
|
||||
if (href_list["player_info"])
|
||||
var/key = href_list["player_info"]
|
||||
show_player_info(key)
|
||||
|
||||
if (href_list["adminplayervars"])
|
||||
var/mob/M = locate(href_list["adminplayervars"])
|
||||
if(src && src.owner)
|
||||
if(istype(src.owner,/client))
|
||||
var/client/cl = src.owner
|
||||
cl.debug_variables(M)
|
||||
else if(ismob(src.owner))
|
||||
var/mob/MO = src.owner
|
||||
if(MO.client)
|
||||
var/client/cl = MO.client
|
||||
if(rank in list("Admin Observer", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master"))
|
||||
var/mob/M = locate(href_list["adminplayervars"])
|
||||
if(src && src.owner)
|
||||
if(istype(src.owner,/client))
|
||||
var/client/cl = src.owner
|
||||
cl.debug_variables(M)
|
||||
else if(ismob(src.owner))
|
||||
var/mob/MO = src.owner
|
||||
if(MO.client)
|
||||
var/client/cl = MO.client
|
||||
cl.debug_variables(M)
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
|
||||
if (href_list["adminplayersubtlemessage"])
|
||||
var/mob/M = locate(href_list["adminplayersubtlemessage"])
|
||||
@@ -1382,30 +1388,38 @@ var/global/BSACooldown = 0
|
||||
cl.cmd_admin_subtle_message(M)
|
||||
|
||||
if (href_list["adminplayerobservejump"])
|
||||
var/mob/M = locate(href_list["adminplayerobservejump"])
|
||||
if(src && src.owner)
|
||||
if(istype(src.owner,/client))
|
||||
var/client/cl = src.owner
|
||||
cl.admin_observe()
|
||||
sleep(2)
|
||||
cl.jumptomob(M)
|
||||
else if(ismob(src.owner))
|
||||
var/mob/MO = src.owner
|
||||
if(MO.client)
|
||||
var/client/cl = MO.client
|
||||
if(rank in list("Admin Observer", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master"))
|
||||
var/mob/M = locate(href_list["adminplayerobservejump"])
|
||||
if(src && src.owner)
|
||||
if(istype(src.owner,/client))
|
||||
var/client/cl = src.owner
|
||||
cl.admin_observe()
|
||||
sleep(2)
|
||||
cl.jumptomob(M)
|
||||
else if(ismob(src.owner))
|
||||
var/mob/MO = src.owner
|
||||
if(MO.client)
|
||||
var/client/cl = MO.client
|
||||
cl.admin_observe()
|
||||
sleep(2)
|
||||
cl.jumptomob(M)
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
|
||||
if (href_list["traitor_panel_pp"])
|
||||
var/mob/M = locate(href_list["traitor_panel_pp"])
|
||||
if(isnull(M))
|
||||
usr << "Mob doesn't seem to exist."
|
||||
return
|
||||
if(!ismob(M))
|
||||
usr << "This doen't seem to be a mob."
|
||||
return
|
||||
show_traitor_panel(M)
|
||||
if(rank in list("Admin Observer", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master"))
|
||||
var/mob/M = locate(href_list["traitor_panel_pp"])
|
||||
if(isnull(M))
|
||||
usr << "Mob doesn't seem to exist."
|
||||
return
|
||||
if(!ismob(M))
|
||||
usr << "This doen't seem to be a mob."
|
||||
return
|
||||
show_traitor_panel(M)
|
||||
else
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!")
|
||||
|
||||
|
||||
|
||||
if (href_list["BlueSpaceArtillery"])
|
||||
var/mob/M = locate(href_list["BlueSpaceArtillery"])
|
||||
@@ -2239,7 +2253,7 @@ var/global/BSACooldown = 0
|
||||
return
|
||||
|
||||
if (href_list["secretsadmin"])
|
||||
if ((src.rank in list( "Moderator", "Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
if ((src.rank in list(/* "Moderator", */"Temporary Admin", "Admin Candidate", "Trial Admin", "Badmin", "Game Admin", "Game Master" )))
|
||||
var/ok = 0
|
||||
switch(href_list["secretsadmin"])
|
||||
if("clear_bombs")
|
||||
@@ -2380,7 +2394,7 @@ var/global/BSACooldown = 0
|
||||
message_admins("\blue [user.ckey] warned [M.ckey].")
|
||||
else
|
||||
AddBan(M.ckey, M.computer_id, "Autobanning due to previous warn", user.ckey, 1, AUTOBANTIME)
|
||||
M << "\red<BIG><B>You have been autobanned by [user.ckey]. This is what we in the biz like to call a \"second warning\".</B></BIG>"
|
||||
M << "\red<BIG><B>You have been autobanned by [user.ckey].</B></BIG>"
|
||||
M << "\red This is a temporary ban; it will automatically be removed in [AUTOBANTIME] minutes."
|
||||
log_admin("[user.ckey] warned [M.ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
ban_unban_log_save("[user.ckey] warned [M.ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
@@ -2428,6 +2442,7 @@ var/global/BSACooldown = 0
|
||||
|
||||
body += "<b>Mob type</b> = [M.type]<br><br>"
|
||||
|
||||
body += "<A href='?src=\ref[src];warn=\ref[M]'>Warn</A> | "
|
||||
body += "<A href='?src=\ref[src];boot2=\ref[M]'>Kick</A> | "
|
||||
body += "<A href='?src=\ref[src];newban=\ref[M]'>Ban</A> | "
|
||||
body += "<A href='?src=\ref[src];jobban2=\ref[M]'>Jobban</A> "
|
||||
@@ -2527,10 +2542,11 @@ var/global/BSACooldown = 0
|
||||
//feedback_add_details("admin_verb","SPP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
/datum/player_info/var
|
||||
author // admin who authored the information
|
||||
content // text content of the information
|
||||
timestamp // Because this is bloody annoying
|
||||
|
||||
/datum/player_info/var/author // admin who authored the information
|
||||
/datum/player_info/var/rank //rank of admin who made the notes
|
||||
/datum/player_info/var/content // text content of the information
|
||||
/datum/player_info/var/timestamp // Because this is bloody annoying
|
||||
|
||||
/obj/admins/proc/player_has_info(var/key as text)
|
||||
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
|
||||
@@ -2563,7 +2579,10 @@ var/global/BSACooldown = 0
|
||||
if(!I.timestamp)
|
||||
I.timestamp = "Pre-4/3/2012"
|
||||
update_file = 1
|
||||
dat += "<font color=#008800>[I.content]</font> <i>by [I.author]</i> on <i><font color=blue>[I.timestamp]</i></font> "
|
||||
if(!I.rank)
|
||||
I.rank = "N/A"
|
||||
update_file = 1
|
||||
dat += "<font color=#008800>[I.content]</font> <i>by [I.author] ([I.rank])</i> on <i><font color=blue>[I.timestamp]</i></font> "
|
||||
if(I.author == usr.key)
|
||||
dat += "<A href='?src=\ref[src];remove_player_info=[key];remove_index=[i]'>Remove</A>"
|
||||
dat += "<br><br>"
|
||||
|
||||
Reference in New Issue
Block a user