From b2e463444e359272d7e7836907674b19587fc91d Mon Sep 17 00:00:00 2001 From: Ahzpy <88119260+Ahzpy@users.noreply.github.com> Date: Sat, 15 Mar 2025 01:57:19 -0700 Subject: [PATCH] Adds contortionist's envirosuit (Plasmaman contortionist's) (#28481) * plasma in the vents (not literally) * oops i pressed a random button while typing Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Ahzpy <88119260+Ahzpy@users.noreply.github.com> * formatting Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Ahzpy <88119260+Ahzpy@users.noreply.github.com> * Update code/modules/clothing/under/jobs/plasmamen/engineering_plasmasuits.dm not sure what this is, code is copied from original contortionist's. might be worth fixing Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: Ahzpy <88119260+Ahzpy@users.noreply.github.com> * false and true 0 to false and 1 to true Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Ahzpy <88119260+Ahzpy@users.noreply.github.com> --------- Signed-off-by: Ahzpy <88119260+Ahzpy@users.noreply.github.com> Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> --- code/datums/uplink_items/uplink_traitor.dm | 9 +++++++ .../jobs/plasmamen/engineering_plasmasuits.dm | 27 +++++++++++++++++++ .../modules/mob/living/carbon/carbon_procs.dm | 8 ++++++ 3 files changed, 44 insertions(+) diff --git a/code/datums/uplink_items/uplink_traitor.dm b/code/datums/uplink_items/uplink_traitor.dm index a0adf04fb12..21ec9e39808 100644 --- a/code/datums/uplink_items/uplink_traitor.dm +++ b/code/datums/uplink_items/uplink_traitor.dm @@ -276,6 +276,15 @@ cost = 30 job = list("Life Support Specialist") +/datum/uplink_item/jobspecific/contortionist_plasmaman + name = "Contortionist's Plasma Envirosuit" + desc = "A highly flexible envirosuit that will help you navigate the ventilation loops of the station internally, specialized for Plasmamen. Comes with pockets and ID slot, but can't be used without stripping off most gear, including backpack, belt, and exosuit. Free hands are also necessary to crawl around inside." + reference = "AIRJP" + item = /obj/item/clothing/under/plasmaman/atmospherics/contortionist + cost = 30 + job = list("Life Support Specialist") + species = list("Plasmaman") + /datum/uplink_item/jobspecific/energizedfireaxe name = "Energized Fire Axe" desc = "A fire axe with a massive energy charge built into it. Upon striking someone while charged it will throw them backwards while stunning them briefly, but will take some time to charge up again. It is also much sharper than a regular axe and can pierce light armor." diff --git a/code/modules/clothing/under/jobs/plasmamen/engineering_plasmasuits.dm b/code/modules/clothing/under/jobs/plasmamen/engineering_plasmasuits.dm index 494fa6be6cc..66f4d2c15a4 100644 --- a/code/modules/clothing/under/jobs/plasmamen/engineering_plasmasuits.dm +++ b/code/modules/clothing/under/jobs/plasmamen/engineering_plasmasuits.dm @@ -20,3 +20,30 @@ item_state = "atmos_envirosuit" item_color = "atmos_envirosuit" +/obj/item/clothing/under/plasmaman/atmospherics/contortionist + name = "atmospherics plasma envirosuit" + desc = "An airtight suit designed to be used by plasmemen for squeezing through narrow vents." + resistance_flags = FIRE_PROOF + +/obj/item/clothing/under/plasmaman/atmospherics/contortionist/equipped(mob/living/carbon/human/user, slot) + . = ..() + if(slot != ITEM_SLOT_JUMPSUIT) + return + if(!user.ventcrawler) + user.ventcrawler = VENTCRAWLER_ALWAYS + +/obj/item/clothing/under/plasmaman/atmospherics/contortionist/dropped(mob/living/carbon/human/user) + . = ..() + if(user.get_item_by_slot(ITEM_SLOT_JUMPSUIT) != src) + return + if(!user.get_int_organ(/obj/item/organ/internal/heart/gland/ventcrawling)) // This is such a snowflaky check + user.ventcrawler = VENTCRAWLER_NONE + +/obj/item/clothing/under/plasmaman/atmospherics/contortionist/proc/check_clothing(mob/user) + //Allowed to wear: glasses, shoes, gloves, pockets, mask, jumpsuit (obviously), and helmet (obviously) + var/list/slot_must_be_empty = list(ITEM_SLOT_BACK, ITEM_SLOT_HANDCUFFED, ITEM_SLOT_LEGCUFFED, ITEM_SLOT_LEFT_HAND, ITEM_SLOT_RIGHT_HAND, ITEM_SLOT_BELT, ITEM_SLOT_OUTER_SUIT) + for(var/slot_id in slot_must_be_empty) + if(user.get_item_by_slot(slot_id)) + to_chat(user,"You can't fit inside while wearing [user.get_item_by_slot(slot_id)].") + return FALSE + return TRUE diff --git a/code/modules/mob/living/carbon/carbon_procs.dm b/code/modules/mob/living/carbon/carbon_procs.dm index 1a07f40d022..a75310785c0 100644 --- a/code/modules/mob/living/carbon/carbon_procs.dm +++ b/code/modules/mob/living/carbon/carbon_procs.dm @@ -474,6 +474,14 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven if(!C.check_clothing(src))//return values confuse me right now return + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/plasmaman/atmospherics/contortionist)) + var/obj/item/clothing/under/plasmaman/atmospherics/contortionist/C = H.w_uniform + if(!C.check_clothing(src)) + return + + var/obj/machinery/atmospherics/unary/vent_found if(clicked_on)