diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index c3c718966d..1e9c5729e3 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -72,6 +72,7 @@
var/hasShocked = 0 //Prevents multiple shocks from happening
autoclose = 1
var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door
+ var/obj/item/weapon/note //Any papers pinned to the airlock
var/detonated = 0
var/doorOpen = 'sound/machines/airlock.ogg'
var/doorClose = 'sound/machines/AirlockClose.ogg'
@@ -82,6 +83,7 @@
var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass"
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
+ var/note_overlay_file = 'icons/obj/doors/airlocks/station/overlays.dmi' //Used for papers and photos pinned to the airlock
var/cyclelinkeddir = 0
var/obj/machinery/door/airlock/cyclelinkedairlock
@@ -213,8 +215,14 @@
if(id_tag)
for(var/obj/machinery/doorButtons/D in GLOB.machines)
D.removeMe(src)
+ qdel(note)
return ..()
+/obj/machinery/door/airlock/handle_atom_del(atom/A)
+ if(A == note)
+ note = null
+ update_icon()
+
/obj/machinery/door/airlock/bumpopen(mob/living/user) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite
if(!issilicon(usr))
if(src.isElectrified())
@@ -369,6 +377,8 @@
var/mutable_appearance/weld_overlay
var/mutable_appearance/damag_overlay
var/mutable_appearance/sparks_overlay
+ var/mutable_appearance/note_overlay
+ var/notetype = note_type()
switch(state)
if(AIRLOCK_CLOSED)
@@ -393,6 +403,8 @@
lights_overlay = get_airlock_overlay("lights_bolts", overlays_file)
else if(emergency)
lights_overlay = get_airlock_overlay("lights_emergency", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay(notetype, note_overlay_file)
if(AIRLOCK_DENY)
if(!hasPower())
@@ -414,6 +426,8 @@
if(welded)
weld_overlay = get_airlock_overlay("welded", overlays_file)
lights_overlay = get_airlock_overlay("lights_denied", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay(notetype, note_overlay_file)
if(AIRLOCK_EMAG)
frame_overlay = get_airlock_overlay("closed", icon)
@@ -433,6 +447,8 @@
damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file)
if(welded)
weld_overlay = get_airlock_overlay("welded", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay(notetype, note_overlay_file)
if(AIRLOCK_CLOSING)
frame_overlay = get_airlock_overlay("closing", icon)
@@ -447,6 +463,8 @@
panel_overlay = get_airlock_overlay("panel_closing_protected", overlays_file)
else
panel_overlay = get_airlock_overlay("panel_closing", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay("[notetype]_closing", note_overlay_file)
if(AIRLOCK_OPEN)
frame_overlay = get_airlock_overlay("open", icon)
@@ -461,6 +479,8 @@
panel_overlay = get_airlock_overlay("panel_open", overlays_file)
if(obj_integrity < (0.75 * max_integrity))
damag_overlay = get_airlock_overlay("sparks_open", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay("[notetype]_open", note_overlay_file)
if(AIRLOCK_OPENING)
frame_overlay = get_airlock_overlay("opening", icon)
@@ -475,6 +495,8 @@
panel_overlay = get_airlock_overlay("panel_opening_protected", overlays_file)
else
panel_overlay = get_airlock_overlay("panel_opening", overlays_file)
+ if(note)
+ note_overlay = get_airlock_overlay("[notetype]_opening", note_overlay_file)
cut_overlays()
add_overlay(frame_overlay)
@@ -484,6 +506,7 @@
add_overlay(weld_overlay)
add_overlay(sparks_overlay)
add_overlay(damag_overlay)
+ add_overlay(note_overlay)
/proc/get_airlock_overlay(icon_state, icon_file)
var/obj/machinery/door/airlock/A
@@ -512,6 +535,12 @@
to_chat(user, "The maintenance panel seems haphazardly fastened.")
if(charge && panel_open)
to_chat(user, "Something is wired up to the airlock's electronics!")
+ if(note)
+ if(!in_range(user, src))
+ to_chat(user, "There's a [note.name] pinned to the front. You can't read it from here.")
+ else
+ to_chat(user, "There's a [note.name] pinned to the front...")
+ note.examine(user)
if(panel_open)
switch(security_level)
@@ -1094,6 +1123,12 @@
to_chat(user, "You [panel_open ? "open":"close"] the maintenance panel of the airlock.")
playsound(src.loc, C.usesound, 50, 1)
src.update_icon()
+ else if(istype(C, /obj/item/weapon/wirecutters) && note)
+ user.visible_message("[user] cuts down [note] from [src].", "You remove [note] from [src].")
+ playsound(src, 'sound/items/Wirecutter.ogg', 50, 1)
+ note.forceMove(get_turf(user))
+ note = null
+ update_icon()
else if(is_wire_tool(C))
return attack_hand(user)
else if(istype(C, /obj/item/weapon/pai_cable))
@@ -1119,6 +1154,16 @@
update_icon()
C.forceMove(src)
charge = C
+ else if(istype(C, /obj/item/weapon/paper) || istype(C, /obj/item/weapon/photo))
+ if(note)
+ to_chat(user, "There's already something pinned to this airlock! Use wirecutters to remove it.")
+ return
+ if(!user.transferItemToLoc(C, src))
+ to_chat(user, "For some reason, you can't attach [C]!")
+ return
+ user.visible_message("[user] pins [C] to [src].", "You pin [C] to [src].")
+ note = C
+ update_icon()
else
return ..()
@@ -1550,6 +1595,14 @@
return TRUE
return FALSE
+/obj/machinery/door/airlock/proc/note_type() //Returns a string representing the type of note pinned to this airlock
+ if(!note)
+ return
+ else if(istype(note, /obj/item/weapon/paper))
+ return "note"
+ else if(istype(note, /obj/item/weapon/photo))
+ return "photo"
+
#undef AIRLOCK_CLOSED
#undef AIRLOCK_CLOSING
#undef AIRLOCK_OPEN
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
index 7f914971b2..4d8861c45b 100644
--- a/code/game/machinery/doors/airlock_types.dm
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -252,6 +252,7 @@
name = "external airlock"
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_ext
explosion_block = 1
@@ -271,6 +272,7 @@
/obj/machinery/door/airlock/centcom
icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_centcom
normal_integrity = 1000
@@ -286,6 +288,7 @@
name = "vault door"
icon = 'icons/obj/doors/airlocks/vault/vault.dmi'
overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/vault/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2
@@ -301,6 +304,7 @@
name = "airtight hatch"
icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_hatch
@@ -308,6 +312,7 @@
name = "maintenance hatch"
icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi'
overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_mhatch
@@ -342,6 +347,7 @@
desc = "With humanity's current technological level, it could take years to hack this advanced airlock... or maybe we should give a screwdriver a try?"
icon = 'icons/obj/doors/airlocks/abductor/abductor_airlock.dmi'
overlays_file = 'icons/obj/doors/airlocks/abductor/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/abductor/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_abductor
damage_deflection = 30
opacity = 1
@@ -549,6 +555,7 @@
name = "large glass airlock"
icon = 'icons/obj/doors/airlocks/glass_large/glass_large.dmi'
overlays_file = 'icons/obj/doors/airlocks/glass_large/overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/glass_large/overlays.dmi'
opacity = 0
assemblytype = null
glass = 1
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index e28b0c51ab..7ccea4078e 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -93,6 +93,7 @@
name = "airlock"
icon = 'icons/obj/doors/airlocks/survival/survival.dmi'
overlays_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi'
+ note_overlay_file = 'icons/obj/doors/airlocks/survival/survival_overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_pod
opacity = FALSE
glass = TRUE
diff --git a/icons/obj/doors/airlocks/external/overlays.dmi b/icons/obj/doors/airlocks/external/overlays.dmi
index 1e155b0c33..5bfa24a6be 100644
Binary files a/icons/obj/doors/airlocks/external/overlays.dmi and b/icons/obj/doors/airlocks/external/overlays.dmi differ
diff --git a/icons/obj/doors/airlocks/hatch/overlays.dmi b/icons/obj/doors/airlocks/hatch/overlays.dmi
index cbed19b1ab..45f18136da 100644
Binary files a/icons/obj/doors/airlocks/hatch/overlays.dmi and b/icons/obj/doors/airlocks/hatch/overlays.dmi differ
diff --git a/icons/obj/doors/airlocks/station/overlays.dmi b/icons/obj/doors/airlocks/station/overlays.dmi
index 3db448e715..a489f40be9 100644
Binary files a/icons/obj/doors/airlocks/station/overlays.dmi and b/icons/obj/doors/airlocks/station/overlays.dmi differ