diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2c19a5a9df..fc9f6f6519 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -660,6 +660,26 @@ default behaviour is: resting = !resting src << "\blue You are now [resting ? "resting" : "getting up"]" +/mob/living/proc/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(istype(carried_item, /obj/item/weapon/implant)) + return 1 + if(istype(carried_item, /obj/item/clothing/mask/facehugger)) + return 1 + return 0 + +/mob/living/carbon/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(carried_item in internal_organs) + return 1 + return ..() + +/mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item) + if(carried_item in organs) + return 1 + return ..() + +/mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item) + return carried_item != held_item + /mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null, var/ignore_items = 0) // -- TLE -- Merged by Carn if(stat) src << "You must be conscious to do this!" @@ -722,9 +742,10 @@ default behaviour is: if(!ignore_items) for(var/obj/item/carried_item in contents)//If the monkey got on objects. - if( !istype(carried_item, /obj/item/weapon/implant) && !istype(carried_item, /obj/item/clothing/mask/facehugger) )//If it's not an implant or a facehugger - src << "\red You can't be carrying items or have items equipped when vent crawling!" - return + if(is_allowed_vent_crawl_item(carried_item)) + continue + src << "You can't be carrying items or have items equipped when vent crawling!" + return if(isslime(src)) var/mob/living/carbon/slime/S = src