diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index c3742ec69b6..f2ba1899005 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -131,6 +131,7 @@ #define PASSMOB 16 #define LETPASSTHROW 32 #define PASSFENCE 64 +#define PASSDOOR 128 //turf-only flags #define NOJAUNT 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index dd0485f03db..c808e1d8fc9 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -739,6 +739,8 @@ GLOBAL_LIST_EMPTY(airlock_emissive_underlays) attack_ai(user) /obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0) + if(istype(mover) && mover.checkpass(PASSDOOR) && !locked) // We really dont want mice/drones to get shocked on a door they're passing through + return TRUE if(isElectrified() && density && isitem(mover)) var/obj/item/I = mover if(I.flags & CONDUCT) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 3455b8db834..574eb11000e 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -144,8 +144,11 @@ bound_height = width * world.icon_size /obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return !opacity + if(istype(mover)) + if(mover.checkpass(PASSDOOR) && !locked) + return TRUE + if(mover.checkpass(PASSGLASS)) + return !opacity return !density /obj/machinery/door/CanAtmosPass() diff --git a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm index 6884db20aed..8be7cd050d0 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_abilities.dm @@ -29,9 +29,11 @@ if(layer != TURF_LAYER+0.2) layer = TURF_LAYER+0.2 to_chat(src, text("You are now hiding.")) + pass_flags |= PASSDOOR else layer = MOB_LAYER to_chat(src, text("You have stopped hiding.")) + pass_flags &= ~PASSDOOR /mob/living/silicon/robot/drone/verb/light() set name = "Light On/Off" diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 1dc9c6e1bf0..ef2a8e08d63 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -32,6 +32,7 @@ maxbodytemp = 323 //Above 50 Degrees Celcius universal_speak = FALSE can_hide = TRUE + pass_door_while_hidden = TRUE holder_type = /obj/item/holder/mouse can_collar = TRUE gold_core_spawnable = FRIENDLY_SPAWN diff --git a/code/modules/mob/living/simple_animal/powers.dm b/code/modules/mob/living/simple_animal/powers.dm index d85557f350d..0bede11148a 100644 --- a/code/modules/mob/living/simple_animal/powers.dm +++ b/code/modules/mob/living/simple_animal/powers.dm @@ -9,6 +9,10 @@ if(layer != TURF_LAYER+0.2) layer = TURF_LAYER+0.2 visible_message("[src] scurries to the ground!", "You are now hiding.") + if(pass_door_while_hidden) + pass_flags |= PASSDOOR else layer = MOB_LAYER visible_message("[src] slowly peeks up from the ground...", "You have stopped hiding.") + if(pass_door_while_hidden) + pass_flags &= ~PASSDOOR diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index a9a6db8742e..c07fb48bd7b 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -69,6 +69,8 @@ var/speed = 1 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster var/can_hide = FALSE + /// Allows a mob to pass unbolted doors while hidden + var/pass_door_while_hidden = FALSE var/obj/item/clothing/accessory/petcollar/pcollar = null var/collar_type //if the mob has collar sprites, define them.