[MIRROR] Adds new station traits that gives departments / everyone death rattle implants (#3683)

* Adds new station traits that gives departments / everyone death rattle implants

* Update jobs.dm

Co-authored-by: Qustinnus <Floydje123@hotmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
This commit is contained in:
SkyratBot
2021-02-28 20:40:35 +01:00
committed by GitHub
parent 6fac8f066e
commit b7da8c2269
40 changed files with 149 additions and 1 deletions
+10
View File
@@ -48,3 +48,13 @@
#define JOB_DISPLAY_ORDER_SECURITY_MEDIC 36 //SKYRAT EDIT ADDITON - SEC_HAUL
#define JOB_DISPLAY_ORDER_PRISONER 37
#define JOB_DISPLAY_ORDER_BLUESHIELD 38 //SKYRAT EDIT ADDITON - BLUESHIELD
#define DEPARTMENT_SECURITY (1<<0)
#define DEPARTMENT_COMMAND (1<<1)
#define DEPARTMENT_SERVICE (1<<2)
#define DEPARTMENT_CARGO (1<<3)
#define DEPARTMENT_ENGINEERING (1<<4)
#define DEPARTMENT_SCIENCE (1<<5)
#define DEPARTMENT_MEDICAL (1<<6)
#define DEPARTMENT_SILICON (1<<7)
+3
View File
@@ -1,3 +1,6 @@
#define STATION_TRAIT_POSITIVE 1
#define STATION_TRAIT_NEUTRAL 2
#define STATION_TRAIT_NEGATIVE 3
#define STATION_TRAIT_ABSTRACT (1<<0)
@@ -27,6 +27,8 @@ PROCESSING_SUBSYSTEM_DEF(station)
/datum/controller/subsystem/processing/station/proc/SetupTraits()
for(var/i in subtypesof(/datum/station_trait))
var/datum/station_trait/trait_typepath = i
if(initial(trait_typepath.trait_flags) & STATION_TRAIT_ABSTRACT)
continue //Dont add abstract ones to it
selectable_traits_by_types[initial(trait_typepath.trait_type)][trait_typepath] = initial(trait_typepath.weight)
var/positive_trait_count = pick(12;0, 5;1, 1;2)
@@ -16,6 +16,8 @@
var/trait_to_give
///What traits are incompatible with this one?
var/blacklist
///Extra flags for station traits such as it being abstract
var/trait_flags
/datum/station_trait/New()
+95 -1
View File
@@ -114,7 +114,7 @@
/datum/station_trait/quick_shuttle
name = "Quick Shuttle"
trait_type = STATION_TRAIT_NEUTRAL
trait_type = STATION_TRAIT_POSITIVE
weight = 5
show_in_report = TRUE
report_message = "Due to proximity to our supply station, the cargo shuttle will have a quicker flight time to your cargo department/"
@@ -123,3 +123,97 @@
/datum/station_trait/quick_shuttle/on_round_start()
. = ..()
SSshuttle.supply.callTime *= 0.5
/datum/station_trait/deathrattle_department
name = "deathrattled department"
trait_type = STATION_TRAIT_POSITIVE
show_in_report = TRUE
trait_flags = STATION_TRAIT_ABSTRACT
blacklist = list(/datum/station_trait/deathrattle_all)
var/department_to_apply_to
var/department_name = "department"
var/datum/deathrattle_group/deathrattle_group
/datum/station_trait/deathrattle_department/New()
. = ..()
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/on_job_after_spawn)
/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(!(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(living_mob, living_mob, TRUE, TRUE)
/datum/station_trait/deathrattle_department/service
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_SERVICE
department_name = "Service"
/datum/station_trait/deathrattle_department/cargo
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_CARGO
department_name = "Cargo"
/datum/station_trait/deathrattle_department/engineering
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_ENGINEERING
department_name = "Engineering"
/datum/station_trait/deathrattle_department/command
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_COMMAND
department_name = "Command"
/datum/station_trait/deathrattle_department/science
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_SCIENCE
department_name = "Science"
/datum/station_trait/deathrattle_department/security
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_SECURITY
department_name = "Security"
/datum/station_trait/deathrattle_department/medical
trait_flags = NONE
weight = 1
department_to_apply_to = DEPARTMENT_MEDICAL
department_name = "Medical"
/datum/station_trait/deathrattle_all
name = "deathrattled station"
trait_type = STATION_TRAIT_POSITIVE
show_in_report = TRUE
weight = 1
report_message = "All members of the station have received an implant to notify each other if one of them dies. This should help improve job-safety!"
var/datum/deathrattle_group/deathrattle_group
/datum/station_trait/deathrattle_all/New()
. = ..()
deathrattle_group = new("station group")
blacklist = subtypesof(/datum/station_trait/deathrattle_department)
RegisterSignal(SSdcs, COMSIG_GLOB_JOB_AFTER_SPAWN, .proc/on_job_after_spawn)
/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(living_mob, living_mob, TRUE, TRUE)
+3
View File
@@ -68,6 +68,9 @@
var/bounty_types = CIV_JOB_BASIC
///Bitfield of departments this job belongs wit
var/departments = NONE
/// Should this job be allowed to be picked for the bureaucratic error event?
var/allow_bureaucratic_error = TRUE
+1
View File
@@ -13,6 +13,7 @@
exp_type_department = EXP_TYPE_SILICON
display_order = JOB_DISPLAY_ORDER_AI
allow_bureaucratic_error = FALSE
departments = DEPARTMENT_SILICON
var/do_special_check = TRUE
/datum/job/ai/equip(mob/living/carbon/human/H, visualsOnly, announce, latejoin, datum/outfit/outfit_override, client/preference_source = null)
+1
View File
@@ -13,6 +13,7 @@ Assistant
outfit = /datum/outfit/job/assistant
antag_rep = 7
paycheck = PAYCHECK_ASSISTANT // Get a job. Job reassignment changes your paycheck now. Get over it.
departments = DEPARTMENT_SERVICE
liver_traits = list(TRAIT_GREYTIDE_METABOLISM)
@@ -24,6 +24,7 @@
display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN
bounty_types = CIV_JOB_ENG
departments = DEPARTMENT_ENGINEERING
/datum/outfit/job/atmos
name = "Atmospheric Technician"
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_BARTENDER
bounty_types = CIV_JOB_DRINK
departments = DEPARTMENT_SERVICE
/datum/outfit/job/bartender
name = "Bartender"
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_BOTANIST
bounty_types = CIV_JOB_GROW
departments = DEPARTMENT_SERVICE
/datum/outfit/job/botanist
name = "Botanist"
+1
View File
@@ -23,6 +23,7 @@
liver_traits = list(TRAIT_ROYAL_METABOLISM)
display_order = JOB_DISPLAY_ORDER_CAPTAIN
departments = DEPARTMENT_COMMAND
/datum/job/captain/get_access()
return get_all_accesses()
@@ -17,6 +17,7 @@
paycheck_department = ACCOUNT_CAR
display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN
bounty_types = CIV_JOB_RANDOM
departments = DEPARTMENT_CARGO
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_CHAPLAIN
departments = DEPARTMENT_SERVICE
/datum/job/chaplain/after_spawn(mob/living/H, mob/M)
+1
View File
@@ -20,6 +20,7 @@
display_order = JOB_DISPLAY_ORDER_CHEMIST
bounty_types = CIV_JOB_CHEM
departments = DEPARTMENT_MEDICAL
/datum/outfit/job/chemist
name = "Chemist"
@@ -15,6 +15,7 @@
exp_type_department = EXP_TYPE_ENGINEERING
outfit = /datum/outfit/job/ce
departments = DEPARTMENT_ENGINEERING | DEPARTMENT_COMMAND
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_ATMOSPHERICS, ACCESS_EVA, ACCESS_AUX_BASE,
@@ -15,6 +15,7 @@
exp_type_department = EXP_TYPE_MEDICAL
outfit = /datum/outfit/job/cmo
departments = DEPARTMENT_MEDICAL | DEPARTMENT_COMMAND
access = list(ACCESS_MEDICAL, ACCESS_PSYCHOLOGY, ACCESS_MORGUE, ACCESS_PHARMACY, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL,
+1
View File
@@ -17,6 +17,7 @@
liver_traits = list(TRAIT_COMEDY_METABOLISM)
display_order = JOB_DISPLAY_ORDER_CLOWN
departments = DEPARTMENT_SERVICE
/datum/job/clown/after_spawn(mob/living/carbon/human/H, mob/M)
+1
View File
@@ -19,6 +19,7 @@
display_order = JOB_DISPLAY_ORDER_COOK
bounty_types = CIV_JOB_CHEF
departments = DEPARTMENT_SERVICE
/datum/outfit/job/cook
name = "Cook"
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_CURATOR
departments = DEPARTMENT_SERVICE
/datum/outfit/job/curator
name = "Curator"
+1
View File
@@ -11,6 +11,7 @@
exp_type = EXP_TYPE_CREW
display_order = JOB_DISPLAY_ORDER_CYBORG
departments = DEPARTMENT_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)
+1
View File
@@ -12,6 +12,7 @@
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/detective
departments = DEPARTMENT_SECURITY
access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
minimal_access = list(ACCESS_SEC_DOORS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM)
@@ -10,6 +10,7 @@
exp_requirements = 60
outfit = /datum/outfit/job/geneticist
departments = DEPARTMENT_MEDICAL
access = list(ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_ROBOTICS, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_RND)
minimal_access = list(ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_MECH_SCIENCE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_RND)
@@ -16,6 +16,7 @@
exp_type_department = EXP_TYPE_SERVICE
outfit = /datum/outfit/job/hop
departments = DEPARTMENT_COMMAND | DEPARTMENT_SERVICE
//SKYRAT EDIT CHANGE BEGIN
/*
@@ -15,6 +15,7 @@
exp_type_department = EXP_TYPE_SECURITY
outfit = /datum/outfit/job/hos
departments = DEPARTMENT_SECURITY | DEPARTMENT_COMMAND
mind_traits = list(TRAIT_DONUT_LOVER)
liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM, TRAIT_ROYAL_METABOLISM)
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_JANITOR
departments = DEPARTMENT_SERVICE
/datum/outfit/job/janitor
name = "Janitor"
+1
View File
@@ -19,6 +19,7 @@
liver_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
display_order = JOB_DISPLAY_ORDER_LAWYER
departments = DEPARTMENT_SERVICE
/datum/outfit/job/lawyer
name = "Lawyer"
@@ -18,6 +18,7 @@
display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR
bounty_types = CIV_JOB_MED
departments = DEPARTMENT_MEDICAL
/datum/outfit/job/doctor
name = "Medical Doctor"
+1
View File
@@ -15,6 +15,7 @@
paycheck_department = ACCOUNT_SRV
display_order = JOB_DISPLAY_ORDER_MIME
departments = DEPARTMENT_SERVICE
/datum/job/mime/after_spawn(mob/living/carbon/human/H, mob/M)
H.apply_pref_name("mime", M.client)
+1
View File
@@ -20,6 +20,7 @@
display_order = JOB_DISPLAY_ORDER_PARAMEDIC
bounty_types = CIV_JOB_MED
departments = DEPARTMENT_MEDICAL
/datum/outfit/job/paramedic
name = "Paramedic"
@@ -17,6 +17,7 @@
liver_traits = list(TRAIT_MEDICAL_METABOLISM)
display_order = JOB_DISPLAY_ORDER_PSYCHOLOGIST
departments = DEPARTMENT_SERVICE
/datum/outfit/job/psychologist
name = "Psychologist"
@@ -28,6 +28,7 @@
display_order = JOB_DISPLAY_ORDER_QUARTERMASTER
bounty_types = CIV_JOB_RANDOM
departments = DEPARTMENT_CARGO
/datum/outfit/job/quartermaster
name = "Quartermaster"
@@ -15,6 +15,7 @@
exp_type = EXP_TYPE_CREW
outfit = /datum/outfit/job/rd
departments = DEPARTMENT_SCIENCE | DEPARTMENT_COMMAND
access = list(ACCESS_RD, ACCESS_HEADS, ACCESS_RND, ACCESS_GENETICS, ACCESS_MORGUE,
ACCESS_TOXINS, ACCESS_TELEPORTER, ACCESS_SEC_DOORS, ACCESS_MECH_SCIENCE,
@@ -11,6 +11,7 @@
bounty_types = CIV_JOB_ROBO
outfit = /datum/outfit/job/roboticist
departments = DEPARTMENT_SCIENCE
access = list(ACCESS_ROBOTICS, ACCESS_RND, ACCESS_TOXINS, ACCESS_TOXINS_STORAGE, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_MECH_SCIENCE,
ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM, ACCESS_XENOBIOLOGY, ACCESS_GENETICS, ACCESS_AUX_BASE)
+1
View File
@@ -21,6 +21,7 @@
display_order = JOB_DISPLAY_ORDER_SCIENTIST
bounty_types = CIV_JOB_SCI
departments = DEPARTMENT_SCIENCE
/datum/outfit/job/scientist
name = "Scientist"
@@ -23,6 +23,7 @@
display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER
bounty_types = CIV_JOB_SEC
departments = DEPARTMENT_SECURITY
/datum/job/officer/get_access()
var/list/L = list()
@@ -16,6 +16,7 @@
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
bounty_types = CIV_JOB_MINE
departments = DEPARTMENT_CARGO
/datum/outfit/job/miner
name = "Shaft Miner"
@@ -22,6 +22,7 @@
display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER
bounty_types = CIV_JOB_ENG
departments = DEPARTMENT_ENGINEERING
/datum/outfit/job/engineer
name = "Station Engineer"
@@ -20,6 +20,7 @@
display_order = JOB_DISPLAY_ORDER_VIROLOGIST
bounty_types = CIV_JOB_VIRO
departments = DEPARTMENT_MEDICAL
/datum/outfit/job/virologist
name = "Virologist"
+1
View File
@@ -23,6 +23,7 @@
display_order = JOB_DISPLAY_ORDER_WARDEN
bounty_types = CIV_JOB_SEC
departments = DEPARTMENT_SECURITY
/datum/job/warden/get_access()
var/list/L = list()