diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e98fec043ed..368a3e69c93 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -79,6 +79,105 @@ if(foundrecord) foundrecord.fields["rank"] = assignment +/obj/effect/datacore/proc/get_manifest(monochrome, OOC) + var/list/heads = list() + var/list/sec = list() + var/list/eng = list() + var/list/med = list() + var/list/sci = list() + var/list/civ = list() + var/list/bot = list() + var/list/misc = list() + var/dat = {" + + + + "} + var/even = 0 + // sort mobs + for(var/datum/data/record/t in data_core.general) + var/name = t.fields["name"] + var/rank = t.fields["rank"] + var/department = 0 + if(rank in command_positions) + heads[name] = rank + department = 1 + if(rank in security_positions) + sec[name] = rank + department = 1 + if(rank in engineering_positions) + eng[name] = rank + department = 1 + if(rank in medical_positions) + med[name] = rank + department = 1 + if(rank in science_positions) + sci[name] = rank + department = 1 + if(rank in civilian_positions) + civ[name] = rank + department = 1 + if(rank in nonhuman_positions) + bot[name] = rank + department = 1 + if(!department && !(name in heads)) + misc[name] = rank + if(heads.len > 0) + dat += "" + for(name in heads) + dat += "" + even = !even + if(sec.len > 0) + dat += "" + for(name in sec) + dat += "" + even = !even + if(eng.len > 0) + dat += "" + for(name in eng) + dat += "" + even = !even + if(med.len > 0) + dat += "" + for(name in med) + dat += "" + even = !even + if(sci.len > 0) + dat += "" + for(name in sci) + dat += "" + even = !even + if(civ.len > 0) + dat += "" + for(name in civ) + dat += "" + even = !even + // in case somebody is insane and added them to the manifest, why not + if(bot.len > 0) + dat += "" + for(name in bot) + dat += "" + even = !even + // misc guys + if(misc.len > 0) + dat += "" + for(name in misc) + dat += "" + even = !even + + dat += "
NameRank
Heads
[name][heads[name]]
Security
[name][sec[name]]
Engineering
[name][eng[name]]
Medical
[name][med[name]]
Science
[name][sci[name]]
Civilian
[name][civ[name]]
Silicon
[name][bot[name]]
Miscellaneous
[name][misc[name]]
" + dat = replacetext(dat, "\n", "") + dat = replacetext(dat, "\t", "") + return dat + + var/record_id_num = 1001 /obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.assigned_role != "MODE")) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f7da665c052..703d4b577e0 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -301,3 +301,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return 0 usr.visible_message("[src] points to [A]") return 1 + +/mob/dead/observer/verb/view_manfiest() + set name = "View Crew Manifest" + set category = "Ghost" + + var/dat + dat += "

Crew Manifest

" + dat += data_core.get_manifest() + + src << browse(dat, "window=manifest;size=370x420;can_close=1") \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index fd087516a33..72c56c7f554 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -25,10 +25,13 @@ var/output = "

Setup Character

" if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) - if(!ready) output += "

Declare Ready

" - else output += "

You are ready Cancel

" + if(ready) + output += "

\[ Ready | Not Ready \]

" + else + output += "

\[ Ready | Not Ready \]

" else + output += "View the Crew Manifest

" output += "

Join Game!

" output += "

Observe

" @@ -98,7 +101,10 @@ return 1 if(href_list["ready"]) - ready = text2num(href_list["ready"]) + if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) // Make sure we don't ready up after the round has started + ready = !ready + else + ready = 0 if(href_list["refresh"]) src << browse(null, "window=playersetup") //closes the player setup window @@ -136,6 +142,9 @@ return LateChoices() + if(href_list["manifest"]) + ViewManifest() + if(href_list["SelectedJob"]) if(!enter_allowed) @@ -364,6 +373,12 @@ return new_character +/mob/new_player/proc/ViewManifest() + var/dat = "" + dat += "

Crew Manifest

" + dat += data_core.get_manifest(OOC = 1) + + src << browse(dat, "window=manifest;size=370x420;can_close=1") /mob/new_player/Move() return 0