diff --git a/code/defines/obj.dm b/code/defines/obj.dm index c574a8285ed..b8658dadf68 100644 --- a/code/defines/obj.dm +++ b/code/defines/obj.dm @@ -107,6 +107,110 @@ //This list tracks characters spawned in the world and cannot be modified in-game. Currently referenced by respawn_character(). var/locked[] = list() + proc/get_manifest(monochrome) + var/list/heads = new() + var/list/sec = new() + var/list/eng = new() + var/list/med = new() + var/list/sci = new() + var/list/civ = new() + var/list/bot = new() + var/list/misc = new() + + 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"] + + //world << "[name]: [rank]" + + if(rank in command_positions) + heads[name] = rank + if(rank in security_positions) + sec[name] = rank + continue + if(rank in engineering_positions) + eng[name] = rank + continue + if(rank in medical_positions) + med[name] = rank + continue + if(rank in science_positions) + sci[name] = rank + continue + if(rank in civilian_positions) + civ[name] = rank + continue + if(rank in nonhuman_positions) + bot[name] = rank + continue + + if(!(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 = dd_replacetext(dat, "\n", "") // so it can be placed on paper correctly + dat = dd_replacetext(dat, "\t", "") + return dat + /obj/effect/equip_e name = "equip e" var/mob/source = null diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/id.dm index 05cc6749c91..6583bc5f416 100644 --- a/code/game/machinery/computer/id.dm +++ b/code/game/machinery/computer/id.dm @@ -52,9 +52,7 @@ if (!( ticker )) return if (mode) // accessing crew manifest - var/crew = "" - for(var/datum/data/record/t in data_core.general) - crew += "[t.fields["name"]] - [t.fields["rank"]]
" + var/crew = data_core.get_manifest() dat = "Crew Manifest:
Please use the security record computer to modify entries.
[crew]Print

Access ID modification console.
" else var/header = "
Identification Card Modifier
" @@ -245,10 +243,7 @@ printing = 1 sleep(50) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) - var/t1 = "Crew Manifest:
" - for(var/datum/data/record/t in data_core.general) - t1 += "[t.fields["name"]] - [t.fields["rank"]]
" - P.info = t1 + P.info = "Crew Manifest:
" + data_core.get_manifest() P.name = "paper - 'Crew Manifest'" printing = null if (modify) diff --git a/code/game/objects/devices/PDA/cart.dm b/code/game/objects/devices/PDA/cart.dm index b3e9698f6de..488db44b814 100644 --- a/code/game/objects/devices/PDA/cart.dm +++ b/code/game/objects/devices/PDA/cart.dm @@ -235,8 +235,7 @@ Code: menu = "

Crew Manifest

" menu += "Entries cannot be modified from this terminal.

" - for (var/datum/data/record/t in data_core.general) - menu += "[t.fields["name"]] - [t.fields["rank"]]
" + menu += data_core.get_manifest(1) menu += "
" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 81e8d63dad0..0fc8d0c57e9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -228,11 +228,8 @@ return /obj/effect/manifest/proc/manifest() - var/dat = "Crew Manifest:
" - for(var/mob/living/carbon/human/M in world) - dat += text(" [] - []
", M.name, M.get_assignment()) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) - P.info = dat + P.info = "Crew Manifest:
" + data_core.get_manifest() P.name = "paper - 'Crew Manifest'" //SN src = null del(src)