diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm
index c00d181d9f7..146867ffda8 100644
--- a/code/game/machinery/kitchen/gibber.dm
+++ b/code/game/machinery/kitchen/gibber.dm
@@ -181,7 +181,7 @@
allmeat += newmeat
for (var/mob/M in world)
- if (M.client && M.client.holder && (M.client.holder.level != -3))
+ if (M.client && M.client.holder && (M.client.holder.level != -3) && (M.client.holder.level != 0))
M << "\red [user.name]/[user.ckey] has gibbed [src.occupant.name]/[src.occupant.ckey]"
src.occupant.death(1)
src.occupant.ghostize()
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 4b4d39d32b3..d138c6ece49 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -37,11 +37,13 @@
log_ooc("[src.name]/[src.key] : [msg]")
for (var/client/C)
- if (src.client.holder && (!src.client.stealth || C.holder))
+ if (src.client.holder && (!src.client.stealth || ( C.holder && C.holder.level != 0)))
if (src.client.holder.rank == "Admin Observer")
C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: "
else if (src.client.holder.rank == "Retired Admin")
C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: "
+ else if (src.client.holder.rank == "Moderator")
+ C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: "
else if (src.client.holder.level >= 5)
C << "OOC: [src.key][src.client.stealth ? "/([src.client.fakekey])" : ""]: "
else
diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm
index eb45379de53..26ac9307b61 100644
--- a/code/game/verbs/who.dm
+++ b/code/game/verbs/who.dm
@@ -30,7 +30,7 @@
for (var/mob/M in world)
if(M && M.client && M.client.holder)
- if(usr.client.holder)
+ if(usr.client.holder && (usr.client.holder.level != 0))
usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " (as [M.client.fakekey])" : ""]"
else if(!M.client.stealth && (M.client.holder.level != -3))
usr << "\t[pick(nobles)] [M.client] is a [M.client.holder.rank]"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index d0f0b72f56a..f0d7113b7d2 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -6,7 +6,7 @@ var/global/BSACooldown = 0
/proc/message_admins(var/text, var/admin_ref = 0)
var/rendered = "ADMIN LOG: "
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,62 +1350,79 @@ 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"])
- if(src && src.owner)
- if(istype(src.owner,/client))
- var/client/cl = src.owner
- cl.cmd_admin_subtle_message(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["adminplayersubtlemessage"])
+ if(src && src.owner)
+ if(istype(src.owner,/client))
+ var/client/cl = src.owner
cl.cmd_admin_subtle_message(M)
+ else if(ismob(src.owner))
+ var/mob/MO = src.owner
+ if(MO.client)
+ var/client/cl = MO.client
+ cl.cmd_admin_subtle_message(M)
+ else
+ alert("You cannot perform this action. You must be of a higher administrative rank!")
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 +2256,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 +2397,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 << "\redYou have been autobanned by [user.ckey]. This is what we in the biz like to call a \"second warning\"."
+ M << "\redYou have been autobanned by [user.ckey]."
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 +2445,7 @@ var/global/BSACooldown = 0
body += "Mob type = [M.type]
"
+ body += "Warn | "
body += "Kick | "
body += "Ban | "
body += "Jobban "
@@ -2527,10 +2545,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 +2582,10 @@ var/global/BSACooldown = 0
if(!I.timestamp)
I.timestamp = "Pre-4/3/2012"
update_file = 1
- dat += "[I.content] by [I.author] on [I.timestamp] "
+ if(!I.rank)
+ I.rank = "N/A"
+ update_file = 1
+ dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] "
if(I.author == usr.key)
dat += "Remove"
dat += "
"
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index f7eec938d0e..270a9bfe08c 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -107,52 +107,32 @@
if (holder.level >= -1)
verbs += /client/proc/investigate_show
verbs += /client/proc/cmd_admin_say
+ verbs += /client/proc/cmd_mod_say
verbs += /client/proc/cmd_admin_gib_self
verbs += /client/proc/deadmin_self
else if (holder.level == -3) // Retired Admin
verbs += /client/proc/cmd_admin_say
+ verbs += /client/proc/cmd_mod_say
return
else return
//Moderator
if (holder.level >= 0)
- verbs += /obj/admins/proc/announce
- verbs += /obj/admins/proc/startnow
- verbs += /obj/admins/proc/toggleAI //Toggle the AI
- verbs += /obj/admins/proc/toggleenter //Toggle enterting
-// verbs += /obj/admins/proc/toggleguests //Toggle guests entering
- verbs += /obj/admins/proc/toggleooc //toggle ooc
- verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
- verbs += /obj/admins/proc/voteres //toggle votes
- verbs += /obj/admins/proc/vmode
- verbs += /obj/admins/proc/votekill
- verbs += /obj/admins/proc/show_player_panel
- verbs += /client/proc/deadchat //toggles deadchat
- //verbs += /client/proc/cmd_admin_mute --was never used (according to stats trackind) - use show player panel --erro
verbs += /client/proc/cmd_admin_pm_context
verbs += /client/proc/cmd_admin_pm_panel
- verbs += /client/proc/cmd_admin_subtle_message
- //verbs += /client/proc/warn - was never used
- verbs += /client/proc/dsay
verbs += /client/proc/admin_play
verbs += /client/proc/admin_observe
- verbs += /client/proc/game_panel
-// verbs += /client/proc/player_panel
- verbs += /client/proc/player_panel_new
- verbs += /client/proc/unban_panel
- verbs += /client/proc/jobbans
-
- verbs += /client/proc/voting
verbs += /client/proc/hide_verbs
- verbs += /client/proc/general_report
- //verbs += /client/proc/air_report
verbs += /client/proc/deadmin_self
- //verbs += /client/proc/cmd_admin_prison --Merged with player panel
- //verbs += /obj/admins/proc/unprison --Merged with player panel
- verbs += /client/proc/playernotes
verbs += /obj/admins/proc/show_skills
else return
+ if(holder.level == 0) //Moderators don't get asay, only msay
+ verbs -= /client/proc/cmd_admin_say
+ verbs -= /client/proc/investigate_show
+ verbs -= /client/proc/cmd_admin_gib_self
+ verbs += /client/proc/mod_panel
+
//Temporary Admin
if (holder.level >= 1)
verbs += /obj/admins/proc/delay //game start delay
@@ -165,6 +145,35 @@
verbs += /client/proc/deadmin_self
//verbs += /client/proc/cmd_admin_attack_log --Merged with view variables
verbs += /client/proc/cmd_admin_change_custom_event
+ //
+ //MOVED FROM MODERATOR
+ //
+ verbs += /client/proc/cmd_admin_subtle_message
+ verbs += /obj/admins/proc/announce
+ verbs += /obj/admins/proc/startnow
+ verbs += /obj/admins/proc/toggleAI //Toggle the AI
+ verbs += /obj/admins/proc/toggleenter //Toggle enterting
+// verbs += /obj/admins/proc/toggleguests //Toggle guests entering
+ verbs += /obj/admins/proc/toggleooc //toggle ooc
+ verbs += /obj/admins/proc/toggleoocdead //toggle ooc for dead/unc
+ verbs += /obj/admins/proc/voteres //toggle votes
+ verbs += /obj/admins/proc/vmode
+ verbs += /obj/admins/proc/votekill
+ verbs += /client/proc/deadchat //toggles deadchat
+ //verbs += /client/proc/cmd_admin_mute --was never used (according to stats trackind) - use show player panel --erro
+ verbs += /client/proc/dsay
+ verbs += /client/proc/game_panel
+ verbs += /obj/admins/proc/show_player_panel
+// verbs += /client/proc/player_panel
+ verbs += /client/proc/player_panel_new
+ verbs += /client/proc/unban_panel
+ verbs += /client/proc/jobbans
+ verbs += /client/proc/voting
+ verbs += /client/proc/general_report
+ //verbs += /client/proc/air_report
+ //verbs += /client/proc/cmd_admin_prison --Merged with player panel
+ //verbs += /obj/admins/proc/unprison --Merged with player panel
+ verbs += /client/proc/playernotes
else return
//Admin Candidate
@@ -393,8 +402,8 @@
verbs -= /client/proc/cmd_admin_pm_context
verbs -= /client/proc/cmd_admin_pm_panel
verbs -= /client/proc/cmd_admin_say
+ verbs -= /client/proc/cmd_mod_say
verbs -= /client/proc/cmd_admin_subtle_message
- //verbs -= /client/proc/warn
verbs -= /client/proc/dsay
verbs -= /client/proc/admin_play
verbs -= /client/proc/admin_observe
@@ -418,6 +427,7 @@
verbs -= /client/proc/toggle_hear_radio
verbs -= /client/proc/tension_report
verbs -= /client/proc/player_panel_new
+ verbs -= /client/proc/mod_panel
verbs -= /client/proc/toggle_gravity_on
verbs -= /client/proc/toggle_gravity_off
verbs -= /client/proc/toggle_random_events
@@ -428,7 +438,7 @@
verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic //show a cinematic sequence
verbs -= /client/proc/admin_memo
- verbs -= /client/proc/investigate_show
+ verbs -= /client/proc/investigate_show
verbs -= /client/proc/cmd_admin_change_custom_event
verbs -= /client/proc/admin_invis
verbs -= /client/proc/callprocgen
@@ -538,6 +548,14 @@
// feedback_add_details("admin_verb","PPN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
+/client/proc/mod_panel()
+ set name = "Moderator Panel"
+ set category = "Admin"
+ if(holder)
+ holder.mod_panel()
+// feedback_add_details("admin_verb","MP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+ return
+
/client/proc/check_antagonists()
set name = "Check Antagonists"
set category = "Admin"
@@ -836,6 +854,7 @@
verbs += /client/proc/deadchat //toggles deadchat
verbs += /obj/admins/proc/toggleooc //toggle ooc
verbs += /client/proc/cmd_admin_say//asay
+ verbs += /client/proc/cmd_mod_say
verbs += /client/proc/toggleadminhelpsound
// feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -856,6 +875,7 @@
verbs += /client/proc/deadchat //toggles deadchat
verbs += /obj/admins/proc/toggleooc //toggle ooc
verbs += /client/proc/cmd_admin_say//asay
+ verbs += /client/proc/cmd_mod_say//asay
// feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 2c87cf9410a..408815774e9 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -113,6 +113,113 @@
usr << browse(dat, "window=players;size=905x600")
+
+/obj/admins/proc/mod_panel()//The new one
+ if (!usr.client.holder)
+ return
+ var/dat = "
| Name/Real Name | IP/CID | Info | Options | IP: | to this if wanting to add back in IP checkingType | Assigned Job | Traitor? | + //add(IP: [M.lastKnownIP]) | if you want to know their ip to the lists below + var/list/mobs = get_sorted_mobs() + var/i = 1 + + for(var/mob/M in mobs) + if(M.ckey) + var/color = "#e6e6e6" + i++ + if(i%2 == 0) + color = "#f2f2f2" + var/real = (M.real_name == M.original_name ? "[M.name]/[M.real_name]" : "[M.original_name] (as [M.name]/[M.real_name])") + var/turf/T = get_turf(M) + var/client_key = (M.key? M.key : "No key") + dat += "|||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [real] [M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z]) | " // Adds current name
+/* if(isobserver(M))
+ dat += "Ghost | " + else if(isalien(M)) + dat += "Alien | " + else if(islarva(M)) + dat += "Alien larva | " + else if(istajaran(M)) + dat += "Tajaran | " + else if(ishuman(M)) + dat += "[M.job] | " + else if(ismetroid(M)) + dat += "Metroid | " + else if(ismonkey(M)) + dat += "Monkey | " + else if(isAI(M)) + dat += "AI | " + else if(ispAI(M)) + dat += "pAI | " + else if(isrobot(M)) + dat += "Cyborg | " + else if(isanimal(M)) + dat += "Animal | " + else if(iscorgi(M)) + dat += "Corgi | " + else if(istype(M,/mob/new_player)) + dat += "New Player | " + else + dat += "\red ERROR | \black" + + if(M.mind && M.mind.assigned_role && istype(M, /mob/living/carbon/human)) // Adds a column to Player Panel that shows their current job. + var/mob/living/carbon/human/H = M + + if (H.wear_id) + var/obj/item/weapon/card/id/id + + if(istype(H.wear_id, /obj/item/device/pda)) + var/obj/item/device/pda/PDA = H.wear_id + if(!isnull(PDA.id)) // The PDA may contain no ID + id = PDA.id // The ID is contained inside the PDA + + else + id = H.wear_id // The ID was on the ID slot + + if(!id) // Happens when there's no ID in the PDA located on the wear_id slot + dat += "[M.mind.assigned_role] (No ID) | " + + else if(isnull(id.assignment)) // Preventing runtime errors blocking the player panel + if(istype(id, /obj/item/weapon/card/id/syndicate)) + dat += "Antagonist | " + else + usr << "ERROR: Inform the coders that an [id.name] was checked for its assignment variable, and it was null." + dat += "ERROR | " + + else + if(M.mind.assigned_role == id.assignment) // Polymorph + dat += "[M.mind.assigned_role] | " + + else + dat += "[M.mind.assigned_role] ([id.assignment])" + + else + dat += " | [M.mind.assigned_role] (No ID) | " + + else + dat += "No Assigned Role | " +*/ + dat += {"IP: [M.client.address] + CID: [M.client.computer_id] |
+ "}
+
+ dat += {"[player_has_info(M.ckey) ? "Info" : "N/A"] | +PM | + "} + +/* switch(is_special_character(M)) + if(0) + dat += {"Traitor? | "} + if(1) + dat += {"Traitor? | "} + if(2) + dat += {"Traitor? | "} +*/ + dat += "