diff --git a/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm b/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm index 3278ee98bfd..0318373fcd9 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/internal_computer/internal_computer.dm @@ -9,7 +9,7 @@ max_idle_programs = 3 - max_capacity = 64 + max_capacity = parent_type::max_capacity * 2 /obj/item/modular_computer/pda/synth/Initialize(mapload) . = ..() @@ -18,6 +18,22 @@ if(!istype(loc, /obj/item/organ/brain/synth)) return INITIALIZE_HINT_QDEL + //this code has to be called at a delay because the required data (synth owner's job) is null when initialized + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/modular_computer/pda/synth, post_initialize)), 1 DECISECONDS) + +/obj/item/modular_computer/pda/synth/proc/post_initialize() + var/obj/item/organ/brain/synth/brain_loc = loc + var/mob/living/carbon/owner = brain_loc?.bodypart_owner?.owner + if(istype(owner)) + var/obj/item/modular_computer/pda/job_pda = SSjob.get_pda_type_by_job(owner.job) + if(istype(job_pda)) + starting_programs += job_pda.starting_programs + var/obj/item/modular_computer/pda/heads/head_pda = job_pda + if(istype(head_pda)) + starting_programs += head_pda.head_programs + install_default_programs() + QDEL_NULL(job_pda) + /* Action for opening the synthbrain computer */ /datum/action/item_action/synth/open_internal_computer name = "Open persocom emulation" diff --git a/modular_zubbers/code/controllers/subsystem/job.dm b/modular_zubbers/code/controllers/subsystem/job.dm index 46524fc1250..45d4346b466 100644 --- a/modular_zubbers/code/controllers/subsystem/job.dm +++ b/modular_zubbers/code/controllers/subsystem/job.dm @@ -10,3 +10,91 @@ JOB_HEAD_OF_SECURITY = 8, JOB_BLUESHIELD = 9 ) + +/datum/controller/subsystem/job/proc/get_pda_type_by_job(job_name) + switch(job_name) + if(JOB_ASSISTANT) + return new /obj/item/modular_computer/pda + if(JOB_PRISONER) + return null + if(JOB_CAPTAIN) // HEADS + return new /obj/item/modular_computer/pda/heads/captain + if(JOB_CHIEF_ENGINEER) + return new /obj/item/modular_computer/pda/heads/ce + if(JOB_CHIEF_MEDICAL_OFFICER) + return new /obj/item/modular_computer/pda/heads/cmo + if(JOB_HEAD_OF_PERSONNEL) + return new /obj/item/modular_computer/pda/heads/hop + if(JOB_HEAD_OF_SECURITY) + return new /obj/item/modular_computer/pda/heads/hos + if(JOB_QUARTERMASTER) + return new /obj/item/modular_computer/pda/heads/quartermaster + if(JOB_RESEARCH_DIRECTOR) + return new /obj/item/modular_computer/pda/heads/rd + if(JOB_BLUESHIELD) + return new /obj/item/modular_computer/pda/blueshield + if(JOB_NT_REP) + return new /obj/item/modular_computer/pda/nanotrasen_consultant + if(JOB_WARDEN) // SEC + return new /obj/item/modular_computer/pda/warden + if(JOB_DETECTIVE) + return new /obj/item/modular_computer/pda/detective + if(JOB_SECURITY_OFFICER) + return new /obj/item/modular_computer/pda/security + if(JOB_SECURITY_OFFICER_MEDICAL) + return new /obj/item/modular_computer/pda/security + if(JOB_CORRECTIONS_OFFICER) + return new /obj/item/modular_computer/pda/security + if(JOB_STATION_ENGINEER) //ENGI + return new /obj/item/modular_computer/pda/engineering + if(JOB_ATMOSPHERIC_TECHNICIAN) + return new /obj/item/modular_computer/pda/atmos + if(JOB_ENGINEERING_GUARD) + return new /obj/item/modular_computer/pda/engineering + if(JOB_TELECOMMS_SPECIALIST) + return new /obj/item/modular_computer/pda/telecomms + if(JOB_SCIENTIST) // SCI + return new /obj/item/modular_computer/pda/science + if(JOB_ROBOTICIST) + return new /obj/item/modular_computer/pda/roboticist + if(JOB_GENETICIST) + return new /obj/item/modular_computer/pda/geneticist + if(JOB_SCIENCE_GUARD) + return new /obj/item/modular_computer/pda/science + if(JOB_CARGO_TECHNICIAN) // CARGO + return new /obj/item/modular_computer/pda/cargo + if(JOB_SHAFT_MINER) + return new /obj/item/modular_computer/pda/shaftminer + if(JOB_BITRUNNER) + return new /obj/item/modular_computer/pda/bitrunner + if(JOB_CUSTOMS_AGENT) + return new /obj/item/modular_computer/pda/cargo + if(JOB_BARTENDER) // SERVICE + return new /obj/item/modular_computer/pda/bar + if(JOB_BOTANIST) + return new /obj/item/modular_computer/pda/botanist + if(JOB_COOK) + return new /obj/item/modular_computer/pda/cook + if(JOB_CHEF) + return new /obj/item/modular_computer/pda/cook + if(JOB_JANITOR) + return new /obj/item/modular_computer/pda/janitor + if(JOB_CLOWN) + return new /obj/item/modular_computer/pda/clown + if(JOB_MIME) + return new /obj/item/modular_computer/pda/mime + if(JOB_CURATOR) + return new /obj/item/modular_computer/pda/curator + if(JOB_LAWYER) + return new /obj/item/modular_computer/pda/lawyer + if(JOB_CHAPLAIN) + return new /obj/item/modular_computer/pda/chaplain + if(JOB_PSYCHOLOGIST) + return new /obj/item/modular_computer/pda/psychologist + if(JOB_BARBER) + return new /obj/item/modular_computer/pda + if(JOB_BOUNCER) + return new /obj/item/modular_computer/pda/bar + else + return null +