Merge pull request #1545 from Citadel-Station-13/upstream-merge-28188
[MIRROR] Adds the ability to attach papers and photos to airlocks
This commit is contained in:
@@ -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, "<span class='warning'>The maintenance panel seems haphazardly fastened.</span>")
|
||||
if(charge && panel_open)
|
||||
to_chat(user, "<span class='warning'>Something is wired up to the airlock's electronics!</span>")
|
||||
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, "<span class='notice'>You [panel_open ? "open":"close"] the maintenance panel of the airlock.</span>")
|
||||
playsound(src.loc, C.usesound, 50, 1)
|
||||
src.update_icon()
|
||||
else if(istype(C, /obj/item/weapon/wirecutters) && note)
|
||||
user.visible_message("<span class='notice'>[user] cuts down [note] from [src].</span>", "<span class='notice'>You remove [note] from [src].</span>")
|
||||
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, "<span class='warning'>There's already something pinned to this airlock! Use wirecutters to remove it.<spa>")
|
||||
return
|
||||
if(!user.transferItemToLoc(C, src))
|
||||
to_chat(user, "<span class='warning'>For some reason, you can't attach [C]!</span>")
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] pins [C] to [src].</span>", "<span class='notice'>You pin [C] to [src].</span>")
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user