diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 50e6b04923..0b0ecfb85e 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -55,6 +55,8 @@
var/denied_sound = 'sound/machines/deniedbeep.ogg'
var/bolt_up_sound = 'sound/machines/door/boltsup.ogg'
var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg'
+ var/knock_sound = 'sound/machines/2beeplow.ogg'
+ var/knock_hammer_sound = 'sound/weapons/sonic_jackhammer.ogg'
/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage)
if(stat & (BROKEN|NOPOWER))
@@ -975,6 +977,21 @@ About the new airlock wires panel:
..(user)
return
+/obj/machinery/door/airlock/AltClick(mob/user as mob)
+ if(!Adjacent(user))
+ return
+ else if(user.a_intent == I_HURT)
+ src.visible_message("[user] hammers on \the [src]!", "Someone hammers loudly on \the [src]!")
+ src.add_fingerprint(user)
+ flick("door_deny", src)
+ playsound(src, knock_hammer_sound, 50, 0, 3)
+ else
+ src.visible_message("[user] presses the door bell on \the [src].", "\The [src]'s bell rings.")
+ src.add_fingerprint(user)
+ flick("door_deny", src)
+ playsound(src, knock_sound, 50, 0, 3)
+ return
+
/obj/machinery/door/airlock/tgui_act(action, params)
if(..())
return TRUE
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index e7799fcf8f..4a2888a04b 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -12,6 +12,8 @@
var/isSwitchingStates = 0
var/hardness = 1
var/oreAmount = 7
+ var/knock_sound = 'sound/effects/glassknock.ogg'
+ var/knock_hammer_sound = 'sound/weapons/sonic_jackhammer.ogg'
/obj/structure/simple_door/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
TemperatureAct(exposed_temperature)
@@ -68,6 +70,19 @@
/obj/structure/simple_door/attack_hand(mob/user as mob)
return TryToSwitchState(user)
+/obj/structure/simple_door/AltClick(mob/user as mob)
+ if(!Adjacent(user))
+ return
+ else if(user.a_intent == I_HURT)
+ src.visible_message("[user] hammers on \the [src]!", "Someone hammers loudly on \the [src]!")
+ src.add_fingerprint(user)
+ playsound(src, knock_hammer_sound, 50, 0, 3)
+ else
+ src.visible_message("[user] knocks on \the [src].", "Someone knocks on \the [src].")
+ src.add_fingerprint(user)
+ playsound(src, knock_sound, 50, 0, 3)
+ return
+
/obj/structure/simple_door/CanPass(atom/movable/mover, turf/target)
if(istype(mover, /obj/effect/beam))
return !opacity