This commit is contained in:
SandPoot
2024-05-23 21:53:15 -03:00
parent 2e5e548369
commit ad0f659226
47 changed files with 164 additions and 231 deletions
+12 -114
View File
@@ -91,7 +91,7 @@
if(foundrecord)
foundrecord.fields["rank"] = assignment
/datum/datacore/proc/get_manifest_tg() //copypasted from tg, renamed to avoid namespace conflicts
/datum/datacore/proc/get_manifest()
var/list/manifest_out = list()
var/list/departments = list(
"Command" = GLOB.command_positions,
@@ -112,12 +112,18 @@
if(rank in jobs)
if(!manifest_out[department])
manifest_out[department] = list()
manifest_out[department] += list(list(
"name" = name,
"rank" = rank
))
// Append to beginning of list if captain or department head
if (rank == "Captain" || (department != "Command" && (rank in GLOB.command_positions)))
manifest_out[department] = list(list(
"name" = name,
"rank" = rank
)) + manifest_out[department]
else
manifest_out[department] += list(list(
"name" = name,
"rank" = rank
))
has_department = TRUE
break
if(!has_department)
if(!manifest_out["Misc"])
manifest_out["Misc"] = list()
@@ -127,114 +133,6 @@
))
return manifest_out
/datum/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/sup = list()
var/list/civ = list()
var/list/bot = list()
var/list/misc = list()
var/dat = {"
<head><style>
.manifest {border-collapse:collapse;}
.manifest td, th {border:1px solid [monochrome?"black":"#DEF; background-color:white; color:black"]; padding:.25em}
.manifest th {height: 2em; [monochrome?"border-top-width: 3px":"background-color: #48C; color:white"]}
.manifest tr.head th { [monochrome?"border-top-width: 1px":"background-color: #488;"] }
.manifest td:first-child {text-align:right}
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
</style></head>
<table class="manifest" width='350px'>
<tr class='head'><th>Name</th><th>Rank</th></tr>
"}
var/even = 0
// sort mobs
for(var/datum/data/record/t in GLOB.data_core.general)
var/name = t.fields["name"]
var/rank = t.fields["rank"]
var/department = 0
if(rank in GLOB.command_positions)
heads[name] = rank
department = 1
if(rank in GLOB.security_positions)
sec[name] = rank
department = 1
if(rank in GLOB.engineering_positions)
eng[name] = rank
department = 1
if(rank in GLOB.medical_positions)
med[name] = rank
department = 1
if(rank in GLOB.science_positions)
sci[name] = rank
department = 1
if(rank in GLOB.supply_positions)
sup[name] = rank
department = 1
if(rank in GLOB.civilian_positions)
civ[name] = rank
department = 1
if(rank in GLOB.nonhuman_positions)
bot[name] = rank
department = 1
if(!department && !(name in heads))
misc[name] = rank
if(heads.len > 0)
dat += "<tr><th colspan=3>Heads</th></tr>"
for(var/name in heads)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td></tr>"
even = !even
if(sec.len > 0)
dat += "<tr><th colspan=3>Security</th></tr>"
for(var/name in sec)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td></tr>"
even = !even
if(eng.len > 0)
dat += "<tr><th colspan=3>Engineering</th></tr>"
for(var/name in eng)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td></tr>"
even = !even
if(med.len > 0)
dat += "<tr><th colspan=3>Medical</th></tr>"
for(var/name in med)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td></tr>"
even = !even
if(sci.len > 0)
dat += "<tr><th colspan=3>Science</th></tr>"
for(var/name in sci)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td></tr>"
even = !even
if(sup.len > 0)
dat += "<tr><th colspan=3>Supply</th></tr>"
for(var/name in sup)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sup[name]]</td></tr>"
even = !even
if(civ.len > 0)
dat += "<tr><th colspan=3>Civilian</th></tr>"
for(var/name in civ)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td></tr>"
even = !even
// in case somebody is insane and added them to the manifest, why not
if(bot.len > 0)
dat += "<tr><th colspan=3>Silicon</th></tr>"
for(var/name in bot)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td></tr>"
even = !even
// misc guys
if(misc.len > 0)
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
for(var/name in misc)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td></tr>"
even = !even
dat += "</table>"
dat = replacetext(dat, "\n", "")
dat = replacetext(dat, "\t", "")
return dat
/datum/datacore/proc/manifest_inject(mob/living/carbon/human/H, client/C, datum/preferences/prefs)
set waitfor = FALSE
var/static/list/show_directions = list(SOUTH, WEST)
+17 -26
View File
@@ -149,7 +149,7 @@
trait_flags = STATION_TRAIT_ABSTRACT
blacklist = list(/datum/station_trait/deathrattle_all)
var/department_head
var/department_to_apply_to
var/department_name = "department"
var/datum/deathrattle_group/deathrattle_group
@@ -157,72 +157,65 @@
. = ..()
deathrattle_group = new("[department_name] group")
blacklist += subtypesof(/datum/station_trait/deathrattle_department) - type //All but ourselves
name = "deathrattled [department_name]"
report_message = "All members of [department_name] have received an implant to notify each other if one of them dies. This should help improve job-safety!"
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
/datum/station_trait/deathrattle_department/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
/datum/station_trait/deathrattle_department/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/living_mob, mob/M, joined_late)
SIGNAL_HANDLER
if(department_head != job.title && !(src.department_head in job.department_head))
if(!(job.departments & department_to_apply_to))
return
var/obj/item/implant/deathrattle/implant_to_give = new()
deathrattle_group.register(implant_to_give)
implant_to_give.implant(spawned, spawned, TRUE, TRUE)
implant_to_give.implant(living_mob, living_mob, TRUE, TRUE)
/datum/station_trait/deathrattle_department/service
name = "Deathrattled Service"
trait_flags = NONE
weight = 1
department_head = "Head of Personnel"
department_to_apply_to = DEPARTMENT_BITFLAG_SERVICE
department_name = "Service"
/datum/station_trait/deathrattle_department/cargo
name = "Deathrattled Cargo"
trait_flags = NONE
weight = 2
department_head = "Quartermaster"
weight = 1
department_to_apply_to = DEPARTMENT_BITFLAG_CARGO
department_name = "Cargo"
/datum/station_trait/deathrattle_department/engineering
name = "Deathrattled Engineering"
trait_flags = NONE
weight = 2
department_head = "Chief Engineer"
weight = 1
department_to_apply_to = DEPARTMENT_BITFLAG_ENGINEERING
department_name = "Engineering"
/datum/station_trait/deathrattle_department/command
name = "Deathrattled Command"
trait_flags = NONE
weight = 1
department_head = "Captain"
department_to_apply_to = DEPARTMENT_BITFLAG_COMMAND
department_name = "Command"
/datum/station_trait/deathrattle_department/science
name = "Deathrattled Science"
trait_flags = NONE
weight = 1
department_head = "Research Director"
department_to_apply_to = DEPARTMENT_BITFLAG_SCIENCE
department_name = "Science"
/datum/station_trait/deathrattle_department/security
name = "Deathrattled Security"
trait_flags = NONE
weight = 1
department_head = "Head of Security"
department_to_apply_to = DEPARTMENT_BITFLAG_SECURITY
department_name = "Security"
/datum/station_trait/deathrattle_department/medical
name = "Deathrattled Medical"
trait_flags = NONE
weight = 1
department_head = "Chief Medical Officer"
department_to_apply_to = DEPARTMENT_BITFLAG_MEDICAL
department_name = "Medical"
/datum/station_trait/deathrattle_all
name = "Deathrattled Station"
name = "deathrattled station"
trait_type = STATION_TRAIT_POSITIVE
show_in_report = TRUE
weight = 1
@@ -236,14 +229,12 @@
blacklist = subtypesof(/datum/station_trait/deathrattle_department)
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, PROC_REF(on_job_after_spawn))
/datum/station_trait/deathrattle_all/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/spawned, client/player_client)
/datum/station_trait/deathrattle_all/proc/on_job_after_spawn(datum/source, datum/job/job, mob/living/living_mob, mob/M, joined_late)
SIGNAL_HANDLER
var/obj/item/implant/deathrattle/implant_to_give = new()
deathrattle_group.register(implant_to_give)
implant_to_give.implant(spawned, spawned, TRUE, TRUE)
implant_to_give.implant(living_mob, living_mob, TRUE, TRUE)
/datum/station_trait/wallets
name = "Wallets!"