diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index f039b2c8a98..c7a028ddd1f 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -846,12 +846,14 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/proc/open_close(mob/user)
if(welded)
to_chat(user, "The airlock has been welded shut!")
+ return FALSE
else if(locked)
to_chat(user, "The door bolts are down!")
+ return FALSE
else if(density)
- open()
+ return open()
else
- close()
+ return close()
/obj/machinery/door/airlock/proc/toggle_light(mob/user)
if(wires.is_cut(WIRE_BOLT_LIGHT))
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index a5a9269d63b..cebac878c6b 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -1332,8 +1332,10 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(istype(A))
switch(alert(src, "Do you want to open \the [A] for [target]?", "Doorknob_v2a.exe", "Yes", "No"))
if("Yes")
- A.AIShiftClick()
- to_chat(src, "You open \the [A] for [target].")
+ if(!A.density)
+ to_chat(src, "[A] was already opened.")
+ else if(A.open_close(src))
+ to_chat(src, "You open \the [A] for [target].")
else
to_chat(src, "You deny the request.")
else