diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 3347eec056b..32f759539c3 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -463,36 +463,29 @@ Turf and target are seperate in case you want to teleport some distance from a t
return creatures
+var/list/sortMobsOrder = list( "/mob/living/silicon/ai",
+ "/mob/living/silicon/pai",
+ "/mob/living/silicon/robot",
+ "/mob/living/carbon/human",
+ "/mob/spirit/mask",
+ "/mob/living/carbon/brain",
+ "/mob/living/carbon/alien",
+ "/mob/dead/observer",
+ "/mob/new_player",
+ "/mob/living/carbon/monkey",
+ "/mob/living/carbon/slime",
+ "/mob/living/simple_animal",
+ "/mob/living/silicon/hivebot",
+ "/mob/living/silicon/hive_mainframe" )
+
//Orders mobs by type then by name
/proc/sortmobs()
var/list/moblist = list()
var/list/sortmob = sortAtom(mob_list)
- for(var/mob/living/silicon/ai/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/silicon/pai/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/silicon/robot/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/human/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/brain/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/alien/M in sortmob)
- moblist.Add(M)
- for(var/mob/dead/observer/M in sortmob)
- moblist.Add(M)
- for(var/mob/new_player/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/monkey/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/carbon/slime/M in sortmob)
- moblist.Add(M)
- for(var/mob/living/simple_animal/M in sortmob)
- moblist.Add(M)
-// for(var/mob/living/silicon/hivebot/M in world)
-// mob_list.Add(M)
-// for(var/mob/living/silicon/hive_mainframe/M in world)
-// mob_list.Add(M)
+ for (var/path in sortMobsOrder)
+ for (var/mob/sorting in sortmob)
+ if (istype(sorting,text2path(path)))
+ moblist.Add(sorting)
return moblist
//E = MC^2
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index cb3c8784c84..58b0125dba4 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -266,6 +266,9 @@
else if(isobserver(M))
M_job = "Ghost"
+ else if(isSpirit(M))
+ M_job = (ismask(M)) ? "Mask" : "Spirit"
+
M_job = replacetext(M_job, "'", "")
M_job = replacetext(M_job, "\"", "")
M_job = replacetext(M_job, "\\", "")
@@ -320,61 +323,65 @@
//The old one
/datum/admins/proc/player_panel_old()
- if (!usr.client.holder)
- return
- var/dat = "
Player Menu"
- dat += "| Name | Real Name | Assigned Job | Key | Options | PM | Traitor? |
"
- //add IP: | to this if wanting to add back in IP checking
- //add (IP: [M.lastKnownIP]) | if you want to know their ip to the lists below
- var/list/mobs = sortmobs()
+ if (!usr.client.holder)
+ return
+ var/dat = "Player Menu"
+ dat += "| Name | Real Name | Assigned Job | Key | Options | PM | Traitor? |
"
+ //add IP: | to this if wanting to add back in IP checking
+ //add (IP: [M.lastKnownIP]) | if you want to know their ip to the lists below
+ var/list/mobs = sortmobs()
- for(var/mob/M in mobs)
- if(!M.ckey) continue
+ for(var/mob/M in mobs)
+ if(!M.ckey) continue
- dat += "| [M.name] | "
- if(isAI(M))
- dat += "AI | "
- else if(isrobot(M))
- dat += "Cyborg | "
- else if(ishuman(M))
- dat += "[M.real_name] | "
- else if(istype(M, /mob/living/silicon/pai))
- dat += "pAI | "
- else if(istype(M, /mob/new_player))
- dat += "New Player | "
- else if(isobserver(M))
- dat += "Ghost | "
- else if(ismonkey(M))
- dat += "Monkey | "
- else if(isalien(M))
- dat += "Alien | "
- else
- dat += "Unknown | "
+ dat += "
| [M.name] | "
+ if(isAI(M))
+ dat += "AI | "
+ else if(isrobot(M))
+ dat += "Cyborg | "
+ else if(ishuman(M))
+ dat += "[M.real_name] | "
+ else if(istype(M, /mob/living/silicon/pai))
+ dat += "pAI | "
+ else if(istype(M, /mob/new_player))
+ dat += "New Player | "
+ else if(isobserver(M))
+ dat += "Ghost | "
+ else if(ismonkey(M))
+ dat += "Monkey | "
+ else if(isalien(M))
+ dat += "Alien | "
+ else if(ismask(M))
+ dat += "Mask | "
+ else if(isSpirit(M))
+ dat += "Spirit | "
+ else
+ dat += "Unknown | "
- if(istype(M,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = M
- if(H.mind && H.mind.assigned_role)
- dat += "[H.mind.assigned_role] | "
- else
- dat += "NA | "
+ if(istype(M,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = M
+ if(H.mind && H.mind.assigned_role)
+ dat += "[H.mind.assigned_role] | "
+ else
+ dat += "NA | "
- dat += {"[(M.client ? "[M.client]" : "No client")] |
- X |
- PM |
- "}
- switch(is_special_character(M))
- if(0)
- dat += {"Traitor? | "}
- if(1)
- dat += {"Traitor? | "}
- if(2)
- dat += {"Traitor? | "}
+ dat += {"[(M.client ? "[M.client]" : "No client")] |
+ X |
+ PM |
+ "}
+ switch(is_special_character(M))
+ if(0)
+ dat += {"Traitor? | "}
+ if(1)
+ dat += {"Traitor? | "}
+ if(2)
+ dat += {"Traitor? | "}
- dat += "
"
+ dat += "
"
- usr << browse(dat, "window=players;size=640x480")
+ usr << browse(dat, "window=players;size=640x480")
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 79c58a20745..e1555898945 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -129,7 +129,7 @@ proc/isobserver(A)
if(istype(A, /mob/dead/observer))
return 1
return 0
-
+
/proc/isSpirit(A)
if(istype(A, /mob/spirit))
return 1
@@ -140,6 +140,11 @@ proc/isovermind(A)
return 1
return 0
+/proc/ismask(A)
+ if(istype(A, /mob/spirit/mask))
+ return 1
+ return 0
+
proc/isorgan(A)
if(istype(A, /datum/organ/external))
return 1