diff --git a/code/modules/pool/pool_controller.dm b/code/modules/pool/pool_controller.dm
index 7d8dc4b02c..52be51d1c1 100644
--- a/code/modules/pool/pool_controller.dm
+++ b/code/modules/pool/pool_controller.dm
@@ -109,9 +109,11 @@
to_chat(user, "The interface on [src] is already too damaged to short it again.")
return
-/obj/machinery/pool/controller/AltClick(mob/user)
+/obj/machinery/pool/controller/AltClick(mob/living/user)
. = ..()
- if(!isliving(user) || !user.Adjacent(src) || !user.CanReach(src) || !CHECK_MOBILITY(user, MOBILITY_USE))
+ if(!istype(user))
+ return FALSE
+ if(!user.Adjacent(src) || !user.CanReach(src) || !CHECK_MOBILITY(user, MOBILITY_USE))
return FALSE
visible_message("[user] starts to drain [src]!")
draining = TRUE
diff --git a/code/modules/pool/pool_main.dm b/code/modules/pool/pool_main.dm
index f72c39c956..f557500240 100644
--- a/code/modules/pool/pool_main.dm
+++ b/code/modules/pool/pool_main.dm
@@ -50,9 +50,11 @@
layer = BELOW_MOB_LAYER
// Mousedrop hook to normal turfs to get out of pools.
-/turf/open/MouseDrop_T(atom/from, mob/user)
+/turf/open/MouseDrop_T(atom/from, mob/living/user)
+ if(!istype(user))
+ return ..()
// I could make this /open/floor and not have the !istype but ehh - kev
- if(isliving(from) && HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !CHECK_MOBILITY(user, MOBILITY_USE) && !istype(src, /turf/open/pool))
+ if(HAS_TRAIT(from, TRAIT_SWIMMING) && isliving(user) && ((user == from) || user.CanReach(from)) && !CHECK_MOBILITY(user, MOBILITY_USE) && !istype(src, /turf/open/pool))
var/mob/living/L = from
//The element only exists if you're on water and a living mob, so let's skip those checks.
var/pre_msg