From fd4cd0007c0f4bc7348936982774d8be07c572bc Mon Sep 17 00:00:00 2001 From: jack-fractal Date: Fri, 16 May 2014 19:19:22 -0400 Subject: [PATCH] fixing the player panel to work with spirits and masks Conflicts: code/modules/admin/player_panel.dm code/modules/mob/mob_helpers.dm --- code/__HELPERS/unsorted.dm | 45 ++++++------- code/modules/admin/player_panel.dm | 101 +++++++++++++++-------------- code/modules/mob/mob_helpers.dm | 7 +- 3 files changed, 79 insertions(+), 74 deletions(-) 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 += "" - //add to this if wanting to add back in IP checking - //add 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 += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:(IP: [M.lastKnownIP])
" + //add to this if wanting to add back in IP checking + //add 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 += "" - if(isAI(M)) - dat += "" - else if(isrobot(M)) - dat += "" - else if(ishuman(M)) - dat += "" - else if(istype(M, /mob/living/silicon/pai)) - dat += "" - else if(istype(M, /mob/new_player)) - dat += "" - else if(isobserver(M)) - dat += "" - else if(ismonkey(M)) - dat += "" - else if(isalien(M)) - dat += "" - else - dat += "" + dat += "" + if(isAI(M)) + dat += "" + else if(isrobot(M)) + dat += "" + else if(ishuman(M)) + dat += "" + else if(istype(M, /mob/living/silicon/pai)) + dat += "" + else if(istype(M, /mob/new_player)) + dat += "" + else if(isobserver(M)) + dat += "" + else if(ismonkey(M)) + dat += "" + else if(isalien(M)) + dat += "" + else if(ismask(M)) + dat += "" + else if(isSpirit(M)) + dat += "" + else + dat += "" - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - if(H.mind && H.mind.assigned_role) - dat += "" - else - dat += "" + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if(H.mind && H.mind.assigned_role) + dat += "" + else + dat += "" - dat += {" - - - "} - switch(is_special_character(M)) - if(0) - dat += {""} - if(1) - dat += {""} - if(2) - dat += {""} + dat += {" + + + "} + switch(is_special_character(M)) + if(0) + dat += {""} + if(1) + dat += {""} + if(2) + dat += {""} - dat += "
NameReal NameAssigned JobKeyOptionsPMTraitor?
IP:(IP: [M.lastKnownIP])
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienUnknown
[M.name]AICyborg[M.real_name]pAINew PlayerGhostMonkeyAlienMaskSpiritUnknown[H.mind.assigned_role]NA[H.mind.assigned_role]NA[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?[(M.client ? "[M.client]" : "No client")]XPMTraitor?Traitor?Traitor?
" + 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