diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 53c3cf3d8e7..2d87ce3d248 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -468,12 +468,12 @@ SUBSYSTEM_DEF(job) to_chat(M, "You are the [rank].") var/list/packed_items //SKYRAT CHANGE ADDITION - CUSTOMIZATION if(job) + var/new_mob = job.equip(living_mob, null, null, joined_late , null, M.client)//silicons override this proc to return a mob //SKYRAT CHANGE ADDITION BEGIN - CUSTOMIZATION if(job.no_dresscode) - if(M.client) + if(M.client && isliving(new_mob)) packed_items = M.client.prefs.equip_preference_loadout(M, FALSE, job) //SKYRAT CHANGE ADDITION END - var/new_mob = job.equip(living_mob, null, null, joined_late , null, M.client)//silicons override this proc to return a mob if(ismob(new_mob)) living_mob = new_mob if(!joined_late) @@ -508,7 +508,8 @@ SUBSYSTEM_DEF(job) if(!job.no_dresscode) if(M.client) packed_items = M.client.prefs.equip_preference_loadout(M, FALSE, job) - M.client.prefs.add_packed_items(M, packed_items) + if(packed_items) + M.client.prefs.add_packed_items(M, packed_items) //SKYRAT CHANGE ADDITION END return living_mob diff --git a/modular_skyrat/modules/cryosleep/code/ai.dm b/modular_skyrat/modules/cryosleep/code/ai.dm new file mode 100644 index 00000000000..3f4bef3e367 --- /dev/null +++ b/modular_skyrat/modules/cryosleep/code/ai.dm @@ -0,0 +1,24 @@ +/mob/living/silicon/ai/verb/ai_cryo() + set name = "AI Cryogenic Stasis" + set desc = "Puts the current AI personality into cryogenic stasis, freeing the space for another." + set category = "AI Commands" + + if(incapacitated()) + return + switch(alert("Would you like to enter cryo? This will ghost you. Remember to AHELP before cryoing out of important roles, even with no admins online.",,"Yes.","No.")) + if("Yes.") + src.ghostize(FALSE) + var/announce_rank = "Artificial Intelligence," + if(GLOB.announcement_systems.len) + // Sends an announcement the AI has cryoed. + var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) + announcer.announce("CRYOSTORAGE", src.real_name, announce_rank, list()) + new /obj/structure/ai_core/latejoin_inactive(loc) + if(src.mind) + //Handle job slot/tater cleanup. + if(src.mind.assigned_role == "AI") + SSjob.FreeRole("AI") + src.mind.special_role = null + qdel(src) + else + return diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm index 66fcca8946b..5554add799a 100644 --- a/modular_skyrat/modules/cryosleep/code/cryopod.dm +++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm @@ -374,9 +374,7 @@ if(mob_occupant.mind) //Handle job slot/tater cleanup. if(mob_occupant.mind.assigned_role) - var/datum/job/JOB = SSjob.GetJob(mob_occupant.mind.assigned_role) - if(JOB) - JOB.current_positions = max(0, JOB.current_positions - 1) + SSjob.FreeRole(mob_occupant.mind.assigned_role) mob_occupant.mind.special_role = null // Delete them from datacore. diff --git a/modular_skyrat/modules/cryosleep/code/job.dm b/modular_skyrat/modules/cryosleep/code/job.dm new file mode 100644 index 00000000000..920c811a6e4 --- /dev/null +++ b/modular_skyrat/modules/cryosleep/code/job.dm @@ -0,0 +1,7 @@ +/datum/controller/subsystem/job/proc/FreeRole(rank) + if(!rank) + return + var/datum/job/job = GetJob(rank) + if(!job) + return FALSE + job.current_positions = max(0, job.current_positions - 1) diff --git a/tgstation.dme b/tgstation.dme index 4c381ed7148..8e77046a336 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3296,7 +3296,9 @@ #include "modular_skyrat\modules\blueshield\code\modules\clothing\under\jobs\Plasmaman\security.dm" #include "modular_skyrat\modules\blueshield\code\modules\jobs\job_types\blueshield.dm" #include "modular_skyrat\modules\blueshield\code\modules\projectiles\guns\energy\special.dm" +#include "modular_skyrat\modules\cryosleep\code\ai.dm" #include "modular_skyrat\modules\cryosleep\code\cryopod.dm" +#include "modular_skyrat\modules\cryosleep\code\job.dm" #include "modular_skyrat\modules\customization\__DEFINES\augment.dm" #include "modular_skyrat\modules\customization\__DEFINES\inventory.dm" #include "modular_skyrat\modules\customization\__DEFINES\lists.dm"