mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 07:48:55 +00:00
Merge pull request #16092 from SandPoot/update_manifest
Crew manifest TGUI
This commit is contained in:
@@ -91,3 +91,22 @@
|
||||
#define JOB_DISPLAY_ORDER_DETECTIVE 32
|
||||
#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 33
|
||||
#define JOB_DISPLAY_ORDER_PRISONER 34
|
||||
|
||||
#define DEPARTMENT_UNASSIGNED "No department assigned"
|
||||
|
||||
#define DEPARTMENT_BITFLAG_SECURITY (1<<0)
|
||||
#define DEPARTMENT_SECURITY "Security"
|
||||
#define DEPARTMENT_BITFLAG_COMMAND (1<<1)
|
||||
#define DEPARTMENT_COMMAND "Command"
|
||||
#define DEPARTMENT_BITFLAG_SERVICE (1<<2)
|
||||
#define DEPARTMENT_SERVICE "Service"
|
||||
#define DEPARTMENT_BITFLAG_CARGO (1<<3)
|
||||
#define DEPARTMENT_CARGO "Cargo"
|
||||
#define DEPARTMENT_BITFLAG_ENGINEERING (1<<4)
|
||||
#define DEPARTMENT_ENGINEERING "Engineering"
|
||||
#define DEPARTMENT_BITFLAG_SCIENCE (1<<5)
|
||||
#define DEPARTMENT_SCIENCE "Science"
|
||||
#define DEPARTMENT_BITFLAG_MEDICAL (1<<6)
|
||||
#define DEPARTMENT_MEDICAL "Medical"
|
||||
#define DEPARTMENT_BITFLAG_SILICON (1<<7)
|
||||
#define DEPARTMENT_SILICON "Silicon"
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
GLOBAL_DATUM(crew_manifest_tgui, /datum/crew_manifest)
|
||||
GLOBAL_DATUM(changelog_tgui, /datum/changelog)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -76,6 +76,9 @@
|
||||
|
||||
var/bounty_types = CIV_JOB_BASIC
|
||||
|
||||
///Bitfield of departments this job belongs wit
|
||||
var/departments = NONE
|
||||
|
||||
/// Goodies that can be received via the mail system.
|
||||
// this is a weighted list.
|
||||
/// Keep the _job definition for this empty and use /obj/item/mail to define general gifts.
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
exp_type_department = EXP_TYPE_SILICON
|
||||
display_order = JOB_DISPLAY_ORDER_AI
|
||||
allow_bureaucratic_error = FALSE
|
||||
departments = DEPARTMENT_BITFLAG_SILICON
|
||||
random_spawns_possible = FALSE
|
||||
var/do_special_check = TRUE
|
||||
threat = 5
|
||||
|
||||
@@ -16,6 +16,7 @@ Assistant
|
||||
antag_rep = 7
|
||||
paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it.
|
||||
paycheck_department = ACCOUNT_CIV
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
display_order = JOB_DISPLAY_ORDER_ASSISTANT
|
||||
dresscodecompliant = FALSE
|
||||
always_can_respawn_as = TRUE
|
||||
|
||||
@@ -21,12 +21,13 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
departments = DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN
|
||||
threat = 0.5
|
||||
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/lighter,
|
||||
/obj/item/lighter/greyscale,
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_DRINK
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
display_order = JOB_DISPLAY_ORDER_BARTENDER
|
||||
threat = 0.5
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_GROW
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
display_order = JOB_DISPLAY_ORDER_BOTANIST
|
||||
threat = 1.5 // lol powergame
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
mind_traits = list(TRAIT_CAPTAIN_METABOLISM, TRAIT_DISK_VERIFIER)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CAPTAIN
|
||||
departments = DEPARTMENT_BITFLAG_COMMAND
|
||||
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
threat = 5
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN
|
||||
bounty_types = CIV_JOB_RANDOM
|
||||
departments = DEPARTMENT_BITFLAG_CARGO
|
||||
threat = 0.2
|
||||
|
||||
family_heirlooms = list(
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
paycheck_department = ACCOUNT_CIV
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CHAPLAIN
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
threat = 0.5
|
||||
|
||||
family_heirlooms = list(
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_CHEM
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CHEMIST
|
||||
threat = 1.5
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
considered_combat_role = TRUE
|
||||
|
||||
outfit = /datum/outfit/job/ce
|
||||
departments = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_COMMAND
|
||||
plasma_outfit = /datum/outfit/plasmaman/ce
|
||||
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
considered_combat_role = TRUE
|
||||
|
||||
outfit = /datum/outfit/job/cmo
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_COMMAND
|
||||
plasma_outfit = /datum/outfit/plasmaman/cmo
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
selection_color = "#dddddd"
|
||||
|
||||
outfit = /datum/outfit/job/clown
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
plasma_outfit = /datum/outfit/plasmaman/clown
|
||||
|
||||
access = list(ACCESS_THEATRE)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_CHEF
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_COOK
|
||||
threat = 0.2
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
paycheck_department = ACCOUNT_CIV
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CURATOR
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
threat = 0.3
|
||||
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/pen/fountain,
|
||||
/obj/item/storage/dice
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CYBORG
|
||||
departments = DEPARTMENT_BITFLAG_SILICON
|
||||
|
||||
/datum/job/cyborg/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE, datum/outfit/outfit_override = null, client/preference_source = null)
|
||||
if(visualsOnly)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
outfit = /datum/outfit/job/detective
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY
|
||||
plasma_outfit = /datum/outfit/plasmaman/detective
|
||||
considered_combat_role = TRUE
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
exp_requirements = 60
|
||||
|
||||
outfit = /datum/outfit/job/geneticist
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
plasma_outfit = /datum/outfit/plasmaman/genetics
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
exp_type_department = EXP_TYPE_SERVICE
|
||||
considered_combat_role = TRUE
|
||||
outfit = /datum/outfit/job/hop
|
||||
departments = DEPARTMENT_BITFLAG_COMMAND | DEPARTMENT_BITFLAG_SERVICE
|
||||
plasma_outfit = /datum/outfit/plasmaman/hop
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
exp_type_department = EXP_TYPE_SECURITY
|
||||
|
||||
outfit = /datum/outfit/job/hos
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY | DEPARTMENT_BITFLAG_COMMAND
|
||||
plasma_outfit = /datum/outfit/plasmaman/hos
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_JANITOR
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
threat = 0.2
|
||||
|
||||
family_heirlooms = list(
|
||||
|
||||
@@ -21,8 +21,9 @@
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_LAWYER
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
threat = 0.3
|
||||
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/gavelhammer,
|
||||
/obj/item/book/manual/wiki/security_space_law
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
selection_color = "#74b5e0"
|
||||
|
||||
outfit = /datum/outfit/job/doctor
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
plasma_outfit = /datum/outfit/plasmaman/medical
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_MIME
|
||||
departments = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
threat = 0
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_MED
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_PARAMEDIC
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
plasma_outfit = /datum/outfit/plasmaman/prisoner
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_PRISONER
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/pen/blue
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
paycheck = PAYCHECK_HARD //They can already buy stuff using cargo budget, don't give em a command-level paycheck. //alright i'll agree to that -qweq
|
||||
paycheck_department = ACCOUNT_CAR
|
||||
bounty_types = CIV_JOB_RANDOM
|
||||
departments = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_COMMAND
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_QUARTERMASTER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
considered_combat_role = TRUE
|
||||
|
||||
outfit = /datum/outfit/job/rd
|
||||
departments = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_COMMAND
|
||||
plasma_outfit = /datum/outfit/plasmaman/rd
|
||||
|
||||
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_TOX, ACCESS_GENETICS, ACCESS_MORGUE,
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
outfit = /datum/outfit/job/roboticist
|
||||
departments = DEPARTMENT_BITFLAG_SCIENCE
|
||||
plasma_outfit = /datum/outfit/plasmaman/robotics
|
||||
|
||||
access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS)
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_SCI
|
||||
bounty_types = CIV_JOB_SCI
|
||||
departments = DEPARTMENT_BITFLAG_SCIENCE
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
|
||||
display_order = JOB_DISPLAY_ORDER_SCIENTIST
|
||||
threat = 1.2
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
paycheck = PAYCHECK_HARD
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
|
||||
@@ -20,11 +20,12 @@
|
||||
paycheck = PAYCHECK_EASY ///Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
|
||||
paycheck_department = ACCOUNT_CAR
|
||||
bounty_types = CIV_JOB_MINE
|
||||
departments = DEPARTMENT_BITFLAG_CARGO
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
|
||||
|
||||
threat = 1.5
|
||||
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/pickaxe/mini,
|
||||
/obj/item/shovel
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
departments = DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_VIRO
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_VIROLOGIST
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
paycheck = PAYCHECK_HARD
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
|
||||
52
code/modules/mob/dead/crew_manifest.dm
Normal file
52
code/modules/mob/dead/crew_manifest.dm
Normal file
@@ -0,0 +1,52 @@
|
||||
/datum/crew_manifest
|
||||
|
||||
/datum/crew_manifest/ui_state(mob/user)
|
||||
return GLOB.always_state
|
||||
|
||||
/datum/crew_manifest/ui_status(mob/user, datum/ui_state/state)
|
||||
return (isnewplayer(user) || isobserver(user) || isAI(user) || ispAI(user)) ? UI_INTERACTIVE : UI_CLOSE
|
||||
|
||||
/datum/crew_manifest/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if (!ui)
|
||||
ui = new(user, src, "CrewManifest")
|
||||
ui.open()
|
||||
|
||||
/datum/crew_manifest/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||
if (..())
|
||||
return
|
||||
|
||||
/datum/crew_manifest/ui_data(mob/user)
|
||||
var/list/positions = list(
|
||||
DEPARTMENT_COMMAND = 0,
|
||||
DEPARTMENT_SECURITY = 0,
|
||||
DEPARTMENT_ENGINEERING = 0,
|
||||
DEPARTMENT_MEDICAL = 0,
|
||||
DEPARTMENT_SCIENCE = 0,
|
||||
DEPARTMENT_CARGO = 0,
|
||||
DEPARTMENT_SERVICE = 0,
|
||||
DEPARTMENT_SILICON = 0
|
||||
)
|
||||
var/list/departments = list(
|
||||
list("flag" = DEPARTMENT_BITFLAG_COMMAND, "name" = DEPARTMENT_COMMAND),
|
||||
list("flag" = DEPARTMENT_BITFLAG_SECURITY, "name" = DEPARTMENT_SECURITY),
|
||||
list("flag" = DEPARTMENT_BITFLAG_ENGINEERING, "name" = DEPARTMENT_ENGINEERING),
|
||||
list("flag" = DEPARTMENT_BITFLAG_MEDICAL, "name" = DEPARTMENT_MEDICAL),
|
||||
list("flag" = DEPARTMENT_BITFLAG_SCIENCE, "name" = DEPARTMENT_SCIENCE),
|
||||
list("flag" = DEPARTMENT_BITFLAG_CARGO, "name" = DEPARTMENT_CARGO),
|
||||
list("flag" = DEPARTMENT_BITFLAG_SERVICE, "name" = DEPARTMENT_SERVICE),
|
||||
list("flag" = DEPARTMENT_BITFLAG_SILICON, "name" = DEPARTMENT_SILICON)
|
||||
)
|
||||
|
||||
for(var/datum/job/job in SSjob.occupations)
|
||||
for(var/department in departments)
|
||||
// Check if the job is part of a department using its flag
|
||||
// Will return true for Research Director if the department is Science or Command, for example
|
||||
if(job.departments & department["flag"])
|
||||
// Add open positions to current department
|
||||
positions[department["name"]] += (job.total_positions - job.current_positions)
|
||||
|
||||
return list(
|
||||
"manifest" = GLOB.data_core.get_manifest(),
|
||||
"positions" = positions
|
||||
)
|
||||
@@ -720,11 +720,10 @@
|
||||
return
|
||||
client.crew_manifest_delay = world.time + (1 SECONDS)
|
||||
|
||||
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'></head><body>"
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
dat += GLOB.data_core.get_manifest(OOC = 1)
|
||||
if(!GLOB.crew_manifest_tgui)
|
||||
GLOB.crew_manifest_tgui = new /datum/crew_manifest(src)
|
||||
|
||||
src << browse(dat, "window=manifest;size=387x420;can_close=1")
|
||||
GLOB.crew_manifest_tgui.ui_interact(src)
|
||||
|
||||
/mob/dead/new_player/Move()
|
||||
return FALSE
|
||||
|
||||
@@ -730,11 +730,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
return
|
||||
client.crew_manifest_delay = world.time + (1 SECONDS)
|
||||
|
||||
var/dat
|
||||
dat += "<h4>Crew Manifest</h4>"
|
||||
dat += GLOB.data_core.get_manifest()
|
||||
if(!GLOB.crew_manifest_tgui)
|
||||
GLOB.crew_manifest_tgui = new /datum/crew_manifest(src)
|
||||
|
||||
src << browse(dat, "window=manifest;size=387x420;can_close=1")
|
||||
GLOB.crew_manifest_tgui.ui_interact(src)
|
||||
|
||||
//this is called when a ghost is drag clicked to something.
|
||||
/mob/dead/observer/MouseDrop(atom/over)
|
||||
|
||||
@@ -373,13 +373,10 @@
|
||||
return
|
||||
client.crew_manifest_delay = world.time + (1 SECONDS)
|
||||
|
||||
var/dat = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Crew Roster</title></head><body><b>Crew Roster:</b><br><br>"
|
||||
if(!GLOB.crew_manifest_tgui)
|
||||
GLOB.crew_manifest_tgui = new /datum/crew_manifest(src)
|
||||
|
||||
dat += GLOB.data_core.get_manifest()
|
||||
dat += "</body></html>"
|
||||
|
||||
src << browse(dat, "window=airoster")
|
||||
onclose(src, "airoster")
|
||||
GLOB.crew_manifest_tgui.ui_interact(src)
|
||||
|
||||
/mob/living/silicon/update_transform(do_animate)
|
||||
var/matrix/ntransform = matrix(transform) //aka transform.Copy()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["manifest"] = GLOB.data_core.get_manifest_tg()
|
||||
data["manifest"] = GLOB.data_core.get_manifest()
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_data(mob/user)
|
||||
|
||||
@@ -2640,6 +2640,7 @@
|
||||
#include "code\modules\mob\transform_procs.dm"
|
||||
#include "code\modules\mob\typing_indicator.dm"
|
||||
#include "code\modules\mob\camera\camera.dm"
|
||||
#include "code\modules\mob\dead\crew_manifest.dm"
|
||||
#include "code\modules\mob\dead\dead.dm"
|
||||
#include "code\modules\mob\dead\new_player\login.dm"
|
||||
#include "code\modules\mob\dead\new_player\logout.dm"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { classes } from 'common/react';
|
||||
import { useBackend } from "../backend";
|
||||
import { Icon, Section, Table, Tooltip } from "../components";
|
||||
import { Icon, Section, Table } from "../components";
|
||||
import { Window } from "../layouts";
|
||||
|
||||
const commandJobs = [
|
||||
"Captain",
|
||||
"Head of Personnel",
|
||||
"Head of Security",
|
||||
"Chief Engineer",
|
||||
@@ -17,13 +17,12 @@ export const CrewManifest = (props, context) => {
|
||||
return (
|
||||
<Window title="Crew Manifest" width={350} height={500}>
|
||||
<Window.Content scrollable>
|
||||
{Object.entries(manifest).map(([dept, crew]) => (
|
||||
{Object.entries(manifest).map(([department, crew]) => (
|
||||
<Section
|
||||
className={"CrewManifest--" + dept}
|
||||
key={dept}
|
||||
className={"CrewManifest--" + department}
|
||||
key={department}
|
||||
title={
|
||||
dept + (dept !== "Misc"
|
||||
? ` (${positions[dept].open} positions open)` : "")
|
||||
`${department} (${positions[department]} positions open)`
|
||||
}
|
||||
>
|
||||
<Table>
|
||||
@@ -33,57 +32,24 @@ export const CrewManifest = (props, context) => {
|
||||
{crewMember.name}
|
||||
</Table.Cell>
|
||||
<Table.Cell
|
||||
className={classes([
|
||||
"CrewManifest__Cell",
|
||||
"CrewManifest__Icons",
|
||||
])}
|
||||
className={
|
||||
"CrewManifest__Cell CrewManifest__Cell--"
|
||||
+ (crewMember.rank === "Captain" ? "Captain" : "Command")
|
||||
}
|
||||
collapsing
|
||||
>
|
||||
{positions[dept].exceptions.includes(crewMember.rank) && (
|
||||
|
||||
<Tooltip
|
||||
content="No position limit"
|
||||
position="bottom"
|
||||
>
|
||||
<Icon className="CrewManifest__Icon" name="infinity" />
|
||||
</Tooltip>
|
||||
)}
|
||||
{crewMember.rank === "Captain" && (
|
||||
<Tooltip
|
||||
content="Captain"
|
||||
position="bottom"
|
||||
>
|
||||
<Icon
|
||||
className={classes([
|
||||
"CrewManifest__Icon",
|
||||
"CrewManifest__Icon--Command",
|
||||
])}
|
||||
name="star"
|
||||
/>
|
||||
</Tooltip>
|
||||
)}
|
||||
{commandJobs.includes(crewMember.rank) && (
|
||||
<Tooltip
|
||||
content="Member of command"
|
||||
position="bottom"
|
||||
>
|
||||
<Icon
|
||||
className={classes([
|
||||
"CrewManifest__Icon",
|
||||
"CrewManifest__Icon--Command",
|
||||
"CrewManifest__Icon--Chevron",
|
||||
])}
|
||||
name="chevron-up"
|
||||
/>
|
||||
</Tooltip>
|
||||
<Icon
|
||||
name={
|
||||
crewMember.rank === "Captain" ? "star" : "chevron-up"
|
||||
}
|
||||
/>
|
||||
)}
|
||||
</Table.Cell>
|
||||
<Table.Cell
|
||||
className={classes([
|
||||
"CrewManifest__Cell",
|
||||
"CrewManifest__Cell--Rank",
|
||||
])}
|
||||
className={"CrewManifest__Cell"}
|
||||
collapsing
|
||||
color="label"
|
||||
>
|
||||
{crewMember.rank}
|
||||
</Table.Cell>
|
||||
|
||||
@@ -5,7 +5,6 @@ $department_map: (
|
||||
'Security': colors.$red,
|
||||
'Engineering': colors.$orange,
|
||||
'Medical': colors.$teal,
|
||||
'Misc': colors.$white,
|
||||
'Science': colors.$purple,
|
||||
'Supply': colors.$brown,
|
||||
'Service': colors.$green,
|
||||
@@ -29,30 +28,14 @@ $department_map: (
|
||||
&__Cell {
|
||||
padding: 3px 0;
|
||||
|
||||
&--Rank {
|
||||
color: colors.$label;
|
||||
}
|
||||
}
|
||||
|
||||
&__Icons {
|
||||
padding: 3px 9px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
&__Icon {
|
||||
color: colors.$label;
|
||||
position: relative;
|
||||
|
||||
&:not(:last-child) {
|
||||
margin-right: 7px;
|
||||
}
|
||||
|
||||
&--Chevron {
|
||||
padding-right: 2px;
|
||||
&--Captain {
|
||||
color: colors.$yellow;
|
||||
padding: 3px 8px;
|
||||
}
|
||||
|
||||
&--Command {
|
||||
color: colors.$yellow;
|
||||
padding: 3px 9px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user