Merge pull request #4315 from Citadel-Station-13/upstream-merge-33152

[MIRROR] Airlock Construction Update
This commit is contained in:
deathride58
2017-12-10 23:49:51 +00:00
committed by GitHub
62 changed files with 822 additions and 965 deletions
+32 -22
View File
@@ -64,7 +64,7 @@
var/obj/machinery/door/airlock/closeOther = null
var/closeOtherId = null
var/lockdownbyai = FALSE
assemblytype = /obj/structure/door_assembly/door_assembly_0
assemblytype = /obj/structure/door_assembly
var/justzap = FALSE
normalspeed = 1
var/obj/item/electronics/airlock/electronics = null
@@ -80,7 +80,7 @@
var/boltUp = 'sound/machines/boltsup.ogg'
var/boltDown = 'sound/machines/boltsdown.ogg'
var/noPower = 'sound/machines/doorclick.ogg'
var/previous_airlock //what airlock assembly mineral plating was applied to
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
@@ -1026,14 +1026,6 @@
if(density && !open(2))
to_chat(user, "<span class='warning'>Despite your attempts, [src] refuses to open.</span>")
/obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params)
if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]")
log_game("Plasma wall ignited by [key_name(user)] in [COORD(src)]")
ignite(C.is_hot())
else
return ..()
/obj/machinery/door/airlock/open(forced=0)
if( operating || welded || locked )
return FALSE
@@ -1154,22 +1146,22 @@
var/list/optionlist
if(airlock_material == "glass")
optionlist = list("Public", "Public2", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance")
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
else
optionlist = list("Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Freezer", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
var/paintjob = input(user, "Please select a paintjob for this airlock.") in optionlist
if((!in_range(src, usr) && src.loc != usr) || !W.use(user))
return
switch(paintjob)
if("Public")
if("Standard")
icon = 'icons/obj/doors/airlocks/station/public.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_0
if("Public2")
assemblytype = /obj/structure/door_assembly
if("Public")
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_glass
assemblytype = /obj/structure/door_assembly/door_assembly_public
if("Engineering")
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
@@ -1194,6 +1186,18 @@
icon = 'icons/obj/doors/airlocks/station/research.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_research
if("Freezer")
icon = 'icons/obj/doors/airlocks/station/freezer.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_fre
if("Science")
icon = 'icons/obj/doors/airlocks/station/science.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_science
if("Virology")
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_viro
if("Mining")
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
@@ -1206,10 +1210,10 @@
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_ext
if("High Security")
icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi'
overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_highsecurity
if("External Maintenance")
icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_extmai
update_icon()
/obj/machinery/door/airlock/CanAStarPass(obj/item/card/id/ID)
@@ -1302,11 +1306,17 @@
var/obj/structure/door_assembly/A
if(assemblytype)
A = new assemblytype(src.loc)
A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in
else
A = new /obj/structure/door_assembly/door_assembly_0(src.loc)
A = new /obj/structure/door_assembly(loc)
//If you come across a null assemblytype, it will produce the default assembly instead of disintegrating.
A.heat_proof_finished = src.heat_proof //tracks whether there's rglass in
A.anchored = TRUE
A.glass = src.glass
A.state = AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS
A.created_name = name
A.previous_assembly = previous_airlock
A.update_name()
A.update_icon()
if(!disassembled)
if(A)
+84 -50
View File
@@ -1,6 +1,7 @@
/*
Station Airlocks Regular
*/
/obj/machinery/door/airlock/abandoned
abandoned = TRUE
@@ -17,7 +18,7 @@
/obj/machinery/door/airlock/engineering
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_eng
/obj/machinery/door/airlock/engineering/abandoned
abandoned = TRUE
@@ -37,8 +38,7 @@
/obj/machinery/door/airlock/maintenance/external
name = "external airlock access"
icon = 'icons/obj/doors/airlocks/station/maintenanceexternal.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_mai
normal_integrity = 250
assemblytype = /obj/structure/door_assembly/door_assembly_extmai
/obj/machinery/door/airlock/mining
name = "mining airlock"
@@ -75,23 +75,27 @@
Station Airlocks Glass
*/
/obj/machinery/door/airlock/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/glass_command
icon = 'icons/obj/doors/airlocks/station/command.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_com/glass
assemblytype = /obj/structure/door_assembly/door_assembly_com
glass = TRUE
normal_integrity = 400
/obj/machinery/door/airlock/glass_engineering
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_eng/glass
assemblytype = /obj/structure/door_assembly/door_assembly_eng
glass = TRUE
/obj/machinery/door/airlock/glass_security
icon = 'icons/obj/doors/airlocks/station/security.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_sec/glass
assemblytype = /obj/structure/door_assembly/door_assembly_sec
glass = TRUE
normal_integrity = 400
@@ -101,45 +105,50 @@
/obj/machinery/door/airlock/glass_medical
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_med/glass
assemblytype = /obj/structure/door_assembly/door_assembly_med
glass = TRUE
/obj/machinery/door/airlock/glass_research
icon = 'icons/obj/doors/airlocks/station/research.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_research/glass
assemblytype = /obj/structure/door_assembly/door_assembly_research
glass = TRUE
/obj/machinery/door/airlock/glass_mining
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_min/glass
assemblytype = /obj/structure/door_assembly/door_assembly_min
glass = TRUE
/obj/machinery/door/airlock/glass_atmos
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_atmo/glass
assemblytype = /obj/structure/door_assembly/door_assembly_atmo
glass = TRUE
/obj/machinery/door/airlock/glass_science
icon = 'icons/obj/doors/airlocks/station/science.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_science/glass
assemblytype = /obj/structure/door_assembly/door_assembly_science
glass = TRUE
/obj/machinery/door/airlock/glass_virology
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_viro/glass
assemblytype = /obj/structure/door_assembly/door_assembly_viro
glass = TRUE
/obj/machinery/door/airlock/glass_maintenance
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_mai/glass
assemblytype = /obj/structure/door_assembly/door_assembly_mai
glass = TRUE
/obj/machinery/door/airlock/maintenance/external/glass
opacity = 0
glass = TRUE
normal_integrity = 200
//////////////////////////////////
/*
Station Airlocks Mineral
@@ -148,27 +157,36 @@
/obj/machinery/door/airlock/gold
name = "gold airlock"
icon = 'icons/obj/doors/airlocks/station/gold.dmi'
var/mineral = "gold"
assemblytype = /obj/structure/door_assembly/door_assembly_gold
/obj/machinery/door/airlock/gold/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/silver
name = "silver airlock"
icon = 'icons/obj/doors/airlocks/station/silver.dmi'
var/mineral = "silver"
assemblytype = /obj/structure/door_assembly/door_assembly_silver
/obj/machinery/door/airlock/silver/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/diamond
name = "diamond airlock"
icon = 'icons/obj/doors/airlocks/station/diamond.dmi'
var/mineral = "diamond"
assemblytype = /obj/structure/door_assembly/door_assembly_diamond
normal_integrity = 1000
explosion_block = 2
/obj/machinery/door/airlock/diamond/glass
normal_integrity = 950
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/uranium
name = "uranium airlock"
icon = 'icons/obj/doors/airlocks/station/uranium.dmi'
var/mineral = "uranium"
assemblytype = /obj/structure/door_assembly/door_assembly_uranium
var/last_event = 0
@@ -183,11 +201,14 @@
radiation_pulse(get_turf(src), 150)
return
/obj/machinery/door/airlock/uranium/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/plasma
name = "plasma airlock"
desc = "No way this can end badly."
icon = 'icons/obj/doors/airlocks/station/plasma.dmi'
var/mineral = "plasma"
assemblytype = /obj/structure/door_assembly/door_assembly_plasma
/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -200,62 +221,84 @@
/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
atmos_spawn_air("plasma=500;TEMP=1000")
new/obj/structure/door_assembly/door_assembly_0( src.loc )
var/obj/structure/door_assembly/DA
DA = new /obj/structure/door_assembly(loc)
if(glass)
DA.glass = TRUE
if(heat_proof)
DA.heat_proof_finished = TRUE
DA.update_icon()
DA.update_name()
qdel(src)
/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
return 0
/obj/machinery/door/airlock/plasma/attackby(obj/item/C, mob/user, params)
if(C.is_hot() > 300)//If the temperature of the object is over 300, then ignite
message_admins("Plasma airlock ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_COORDJMP(src)]")
log_game("Plasma airlock ignited by [key_name(user)] in [COORD(src)]")
ignite(C.is_hot())
else
return ..()
/obj/machinery/door/airlock/plasma/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/clown
name = "bananium airlock"
desc = "Honkhonkhonk"
icon = 'icons/obj/doors/airlocks/station/bananium.dmi'
var/mineral = "bananium"
assemblytype = /obj/structure/door_assembly/door_assembly_bananium
doorOpen = 'sound/items/bikehorn.ogg'
assemblytype = /obj/structure/door_assembly/door_assembly_clown
/obj/machinery/door/airlock/clown/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/sandstone
name = "sandstone airlock"
icon = 'icons/obj/doors/airlocks/station/sandstone.dmi'
var/mineral = "sandstone"
assemblytype = /obj/structure/door_assembly/door_assembly_sandstone
/obj/machinery/door/airlock/sandstone/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/wood
name = "wooden airlock"
icon = 'icons/obj/doors/airlocks/station/wood.dmi'
var/mineral = "wood"
assemblytype = /obj/structure/door_assembly/door_assembly_wood
/obj/machinery/door/airlock/wood/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/titanium
name = "shuttle airlock"
var/mineral = "titanium"
assemblytype = /obj/structure/door_assembly/door_assembly_titanium
icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_titanium
normal_integrity = 400
/obj/machinery/door/airlock/glass_titanium
name = "shuttle airlock"
var/mineral = "titanium"
icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_titanium/glass
glass = TRUE
/obj/machinery/door/airlock/titanium/glass
normal_integrity = 350
opacity = 0
glass = TRUE
//////////////////////////////////
/*
Station2 Airlocks
*/
/obj/machinery/door/airlock/glass
name = "glass airlock"
/obj/machinery/door/airlock/public
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_public
/obj/machinery/door/airlock/public/glass
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_glass
glass = TRUE
//////////////////////////////////
@@ -269,13 +312,8 @@
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
/obj/machinery/door/airlock/glass_external
name = "external airlock"
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_ext/glass
/obj/machinery/door/airlock/external/glass
opacity = 0
glass = TRUE
@@ -287,7 +325,6 @@
/obj/machinery/door/airlock/centcom
icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_centcom
normal_integrity = 1000
security_level = 6
@@ -305,7 +342,6 @@
name = "vault door"
icon = 'icons/obj/doors/airlocks/vault/vault.dmi'
overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi'
opacity = 1
assemblytype = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2
normal_integrity = 400 // reverse engieneerd: 400 * 1.5 (sec lvl 6) = 600 = original
@@ -321,7 +357,6 @@
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
/obj/machinery/door/airlock/maintenance_hatch
@@ -329,7 +364,6 @@
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
/obj/machinery/door/airlock/maintenance_hatch/abandoned
@@ -361,6 +395,10 @@
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
assemblytype = /obj/structure/door_assembly/door_assembly_shuttle
/obj/machinery/door/airlock/shuttle/glass
opacity = 0
glass = TRUE
/obj/machinery/door/airlock/abductor
name = "alien airlock"
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?"
@@ -369,7 +407,6 @@
assemblytype = /obj/structure/door_assembly/door_assembly_abductor
note_overlay_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
damage_deflection = 30
opacity = 1
explosion_block = 3
hackProof = TRUE
aiControlDisabled = 1
@@ -422,7 +459,6 @@
friendly = TRUE
/obj/machinery/door/airlock/cult/glass
assemblytype = /obj/structure/door_assembly/door_assembly_cult/glass
glass = TRUE
opacity = 0
@@ -439,7 +475,6 @@
friendly = TRUE
/obj/machinery/door/airlock/cult/unruned/glass
assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned/glass
glass = TRUE
opacity = 0
@@ -452,7 +487,6 @@
desc = "A massive cogwheel set into two heavy slabs of brass."
icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi'
overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi'
opacity = 1
hackProof = TRUE
aiControlDisabled = TRUE
req_access = list(ACCESS_CLOCKCULT)
+38 -39
View File
@@ -1,45 +1,44 @@
/obj/machinery/door/airlock/alarmlock
name = "glass alarm airlock"
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_glass
/obj/machinery/door/airlock/alarmlock
name = "glass alarm airlock"
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
opacity = 0
assemblytype = /obj/structure/door_assembly/door_assembly_public
glass = TRUE
var/datum/radio_frequency/air_connection
var/air_frequency = 1437
var/datum/radio_frequency/air_connection
var/air_frequency = 1437
autoclose = FALSE
/obj/machinery/door/airlock/alarmlock/New()
..()
air_connection = new
/obj/machinery/door/airlock/alarmlock/Destroy()
/obj/machinery/door/airlock/alarmlock/New()
..()
air_connection = new
/obj/machinery/door/airlock/alarmlock/Destroy()
SSradio.remove_object(src,air_frequency)
air_connection = null
return ..()
/obj/machinery/door/airlock/alarmlock/Initialize()
air_connection = null
return ..()
/obj/machinery/door/airlock/alarmlock/Initialize()
. = ..()
SSradio.remove_object(src, air_frequency)
air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM)
open()
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
..()
if(stat & (NOPOWER|BROKEN))
return
var/alarm_area = signal.data["zone"]
var/alert = signal.data["alert"]
var/area/our_area = get_area(src)
if(alarm_area == our_area.name)
switch(alert)
if("severe")
SSradio.remove_object(src, air_frequency)
air_connection = SSradio.add_object(src, air_frequency, GLOB.RADIO_TO_AIRALARM)
open()
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
..()
if(stat & (NOPOWER|BROKEN))
return
var/alarm_area = signal.data["zone"]
var/alert = signal.data["alert"]
var/area/our_area = get_area(src)
if(alarm_area == our_area.name)
switch(alert)
if("severe")
autoclose = TRUE
close()
if("minor", "clear")
close()
if("minor", "clear")
autoclose = FALSE
open()
open()