diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index bb43c69b059..f505773b32a 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -21,10 +21,12 @@
/obj/machinery/door/airlock
name = "airlock"
- icon = 'icons/obj/doors/Doorint.dmi'
+ icon = 'icons/obj/doors/doorint.dmi'
icon_state = "door_closed"
- power_channel = ENVIRON
-
+ autoclose = 1
+ explosion_block = 1
+ assemblytype = /obj/structure/door_assembly
+ normalspeed = 1
var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
var/hackProof = 0 // if 1, this door can't be hacked by the AI
var/electrified_until = 0 // World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
@@ -34,7 +36,6 @@
var/main_power_timer = null
var/backup_power_timer = null
var/spawnPowerRestoreRunning = 0
- var/welded = FALSE
var/locked = 0
var/lights = 1 // bolt lights show by default
var/datum/wires/airlock/wires = null
@@ -43,16 +44,11 @@
var/obj/machinery/door/airlock/closeOther = null
var/closeOtherId = null
var/lockdownbyai = 0
- var/assembly_type = /obj/structure/door_assembly
var/mineral = null
var/justzap = 0
var/safe = 1
- normalspeed = 1
var/obj/item/weapon/airlock_electronics/electronics = null
var/hasShocked = 0 //Prevents multiple shocks from happening
- var/frozen = 0 //special condition for airlocks that are frozen shut, this will look weird on not normal airlocks because of a lack of special overlays.
- autoclose = 1
- explosion_block = 1
var/doorOpen = 'sound/machines/airlock_open.ogg'
var/doorClose = 'sound/machines/airlock_close.ogg'
var/doorDeni = 'sound/machines/DeniedBeep.ogg' // i'm thinkin' Deni's
@@ -60,276 +56,8 @@
var/boltDown = 'sound/machines/BoltsDown.ogg'
var/is_special = 0
-/obj/machinery/door/airlock/command
- name = "Airlock"
- icon = 'icons/obj/doors/Doorcom.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_com
-
-/obj/machinery/door/airlock/security
- name = "Airlock"
- icon = 'icons/obj/doors/Doorsec.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_sec
-
-/obj/machinery/door/airlock/engineering
- name = "Airlock"
- icon = 'icons/obj/doors/Dooreng.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_eng
-
-/obj/machinery/door/airlock/medical
- name = "Airlock"
- icon = 'icons/obj/doors/Doormed.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_med
-
-/obj/machinery/door/airlock/maintenance
- name = "Maintenance Access"
- icon = 'icons/obj/doors/Doormaint.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_mai
-
-/obj/machinery/door/airlock/external
- name = "External Airlock"
- icon = 'icons/obj/doors/Doorext.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_ext
- doorOpen = 'sound/machines/airlock_ext_open.ogg'
- doorClose = 'sound/machines/airlock_ext_close.ogg'
-
/obj/machinery/door/airlock/welded
- welded = 1
-
-/obj/machinery/door/airlock/glass
- name = "Glass Airlock"
- icon = 'icons/obj/doors/Doorglass.dmi'
- opacity = 0
- glass = 1
- doorOpen = 'sound/machines/windowdoor.ogg'
- doorClose = 'sound/machines/windowdoor.ogg'
-
-/obj/machinery/door/airlock/centcom
- name = "Airlock"
- icon = 'icons/obj/doors/Doorele.dmi'
- opacity = 0
-
-/obj/machinery/door/airlock/vault
- name = "Vault"
- icon = 'icons/obj/doors/vault.dmi'
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites.
- explosion_block = 2
-
-/obj/machinery/door/airlock/freezer
- name = "Freezer Airlock"
- icon = 'icons/obj/doors/Doorfreezer.dmi'
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_fre
-
-/obj/machinery/door/airlock/hatch
- name = "Airtight Hatch"
- icon = 'icons/obj/doors/Doorhatchele.dmi'
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_hatch
-
-/obj/machinery/door/airlock/hatch/gamma
- name = "Gamma Level Hatch"
- hackProof = 1
- aiControlDisabled = 1
- unacidable = 1
- is_special = 1
-
-/obj/machinery/door/airlock/maintenance_hatch
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorhatchmaint2.dmi'
- opacity = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_mhatch
-
-/obj/machinery/door/airlock/glass_command
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorcomglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_com
- glass = 1
-
-/obj/machinery/door/airlock/glass_engineering
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorengglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_eng
- glass = 1
-
-/obj/machinery/door/airlock/glass_security
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorsecglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_sec
- glass = 1
-
-/obj/machinery/door/airlock/glass_medical
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doormedglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_med
- glass = 1
-
-/obj/machinery/door/airlock/mining
- name = "Mining Airlock"
- icon = 'icons/obj/doors/Doormining.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_min
-
-/obj/machinery/door/airlock/atmos
- name = "Atmospherics Airlock"
- icon = 'icons/obj/doors/Dooratmo.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_atmo
-
-/obj/machinery/door/airlock/research
- name = "Airlock"
- icon = 'icons/obj/doors/Doorresearch.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_research
-
-/obj/machinery/door/airlock/glass_research
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorresearchglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_research
- glass = 1
-
-/obj/machinery/door/airlock/glass_mining
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Doorminingglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_min
- glass = 1
-
-/obj/machinery/door/airlock/glass_atmos
- name = "Maintenance Hatch"
- icon = 'icons/obj/doors/Dooratmoglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_atmo
- glass = 1
-
-/obj/machinery/door/airlock/gold
- name = "Gold Airlock"
- icon = 'icons/obj/doors/Doorgold.dmi'
- mineral = "gold"
-
-/obj/machinery/door/airlock/silver
- name = "Silver Airlock"
- icon = 'icons/obj/doors/Doorsilver.dmi'
- mineral = "silver"
-
-/obj/machinery/door/airlock/diamond
- name = "Diamond Airlock"
- icon = 'icons/obj/doors/Doordiamond.dmi'
- mineral = "diamond"
-
-/obj/machinery/door/airlock/uranium
- name = "Uranium Airlock"
- desc = "And they said I was crazy."
- icon = 'icons/obj/doors/Dooruranium.dmi'
- mineral = "uranium"
- var/event_step = 20
-
-/obj/machinery/door/airlock/uranium/New()
- ..()
- addtimer(src, "radiate", event_step)
-
-/obj/machinery/door/airlock/uranium/proc/radiate()
- if(prob(50))
- for(var/mob/living/L in range (3,src))
- L.apply_effect(15,IRRADIATE,0)
- addtimer(src, "radiate", event_step)
-
-/obj/machinery/door/airlock/plasma
- name = "plasma airlock"
- desc = "No way this can end badly."
- icon = 'icons/obj/doors/Doorplasma.dmi'
- mineral = "plasma"
-
-/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
- if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
-
-/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
- if(exposed_temperature > 300)
- PlasmaBurn(exposed_temperature)
-
-/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
- atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
- new/obj/structure/door_assembly( src.loc )
- qdel(src)
-
-/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
- return 0
-
-/obj/machinery/door/airlock/bananium
- name = "Bananium Airlock"
- icon = 'icons/obj/doors/Doorbananium.dmi'
- mineral = "bananium"
- doorOpen = 'sound/items/bikehorn.ogg'
- doorClose = 'sound/items/bikehorn.ogg'
-
-/obj/machinery/door/airlock/tranquillite
- name = "Tranquillite Airlock"
- icon = 'icons/obj/doors/Doorfreezer.dmi'
- mineral = "tranquillite"
- doorOpen = null // it's silent!
- doorClose = null
- doorDeni = null
- boltUp = null
- boltDown = null
-
-/obj/machinery/door/airlock/sandstone
- name = "Sandstone Airlock"
- icon = 'icons/obj/doors/Doorsand.dmi'
- mineral = "sandstone"
-
-/obj/machinery/door/airlock/science
- name = "Airlock"
- icon = 'icons/obj/doors/Doorsci.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_science
-
-/obj/machinery/door/airlock/glass_science
- name = "Glass Airlocks"
- icon = 'icons/obj/doors/Doorsciglass.dmi'
- opacity = 0
- assembly_type = /obj/structure/door_assembly/door_assembly_science
- glass = 1
-
-/obj/machinery/door/airlock/highsecurity
- name = "High Tech Security Airlock"
- icon = 'icons/obj/doors/hightechsecurity.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity
- explosion_block = 2
-
-/obj/machinery/door/airlock/highsecurity/red
- name = "Secure Armory Airlock"
- hackProof = 1
- aiControlDisabled = 1
-
-/obj/machinery/door/airlock/shuttle
- name = "shuttle airlock"
- icon = 'icons/obj/doors/doorshuttle.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_shuttle
-
-/obj/machinery/door/airlock/alien
- name = "Alien Airlock"
- desc = "A mysterious alien airlock with a complicated opening mechanism."
- hackProof = 1
- icon = 'icons/obj/doors/Doorplasma.dmi'
- is_special = 1
-
-/obj/machinery/door/airlock/alien/bumpopen(mob/living/user as mob)
- if(istype(user,/mob/living/carbon/alien) || isrobot(user) || isAI(user))
- ..(user)
- else
- to_chat(user, "You do not know how to operate this airlock's mechanism.")
- return
-
-/obj/machinery/door/airlock/alien/attackby(C as obj, mob/user as mob, params)
- if(isalien(user) || isrobot(user) || isAI(user))
- ..(C, user)
- else
- to_chat(user, "You do not know how to operate this airlock's mechanism.")
- return
-
-
+ welded = TRUE
/*
About the new airlock wires panel:
* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires.
@@ -345,6 +73,19 @@ About the new airlock wires panel:
*/
// You can find code for the airlock wires in the wire datum folder.
+/obj/machinery/door/airlock/New()
+ ..()
+ wires = new(src)
+
+/obj/machinery/door/airlock/initialize()
+ . = ..()
+ if(closeOtherId != null)
+ for(var/obj/machinery/door/airlock/A in airlocks)
+ if(A.closeOtherId == closeOtherId && A != src)
+ closeOther = A
+ break
+ if(welded)
+ update_icon()
/obj/machinery/door/airlock/Destroy()
QDEL_NULL(electronics)
@@ -360,16 +101,16 @@ About the new airlock wires panel:
electrified_timer = null
return ..()
-/obj/machinery/door/airlock/bumpopen(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite
+/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())
- if(!src.justzap)
- if(src.shock(user, 100))
- src.justzap = 1
+ if(isElectrified())
+ if(!justzap)
+ if(shock(user, 100))
+ justzap = 1
spawn (10)
- src.justzap = 0
+ justzap = 0
return
- else /*if(src.justzap)*/
+ else /*if(justzap)*/
return
else if(user.hallucination > 50 && prob(10) && !operating)
to_chat(user, "You feel a powerful shock course through your body!")
@@ -378,10 +119,9 @@ About the new airlock wires panel:
return
..(user)
-/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user as mob)
+/obj/machinery/door/airlock/bumpopen(mob/living/simple_animal/user)
..(user)
-
/obj/machinery/door/airlock/autoclose()
autoclose_timer = 0
if(!qdeleted(src) && !density && !operating && !locked && !welded && autoclose)
@@ -389,27 +129,27 @@ About the new airlock wires panel:
return
/obj/machinery/door/airlock/proc/isElectrified()
- if(src.electrified_until != 0)
+ if(electrified_until != 0)
return 1
return 0
-/obj/machinery/door/airlock/proc/isWireCut(var/wireIndex)
+/obj/machinery/door/airlock/proc/isWireCut(wireIndex)
// You can find the wires in the datum folder.
return wires.IsIndexCut(wireIndex)
/obj/machinery/door/airlock/proc/canAIControl()
- return ((src.aiControlDisabled!=1) && (!src.isAllPowerLoss()));
+ return ((aiControlDisabled!=1) && (!isAllPowerLoss()));
/obj/machinery/door/airlock/proc/canAIHack()
- return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss()));
+ return ((aiControlDisabled==1) && (!hackProof) && (!isAllPowerLoss()));
/obj/machinery/door/airlock/proc/arePowerSystemsOn()
if(stat & (NOPOWER|BROKEN))
return 0
- return (src.main_power_lost_until==0 || src.backup_power_lost_until==0)
+ return (main_power_lost_until==0 || backup_power_lost_until==0)
/obj/machinery/door/airlock/requiresID()
- return !(src.isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner)
+ return !(isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner)
/obj/machinery/door/airlock/proc/isAllPowerLoss()
if(stat & (NOPOWER|BROKEN))
@@ -419,10 +159,10 @@ About the new airlock wires panel:
return 0
/obj/machinery/door/airlock/proc/mainPowerCablesCut()
- return src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1)
+ return isWireCut(AIRLOCK_WIRE_MAIN_POWER1)
/obj/machinery/door/airlock/proc/backupPowerCablesCut()
- return src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)
+ return isWireCut(AIRLOCK_WIRE_BACKUP_POWER1)
/obj/machinery/door/airlock/proc/loseMainPower()
main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60)
@@ -465,7 +205,7 @@ About the new airlock wires panel:
backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0
update_icon()
-/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0)
+/obj/machinery/door/airlock/proc/electrify(duration, feedback = 0)
if(electrified_timer)
deltimer(electrified_timer)
electrified_timer = null
@@ -511,7 +251,8 @@ About the new airlock wires panel:
return 0
/obj/machinery/door/airlock/update_icon()
- if(overlays) overlays.Cut()
+ if(overlays)
+ overlays.Cut()
overlays = list()
if(emergency && arePowerSystemsOn())
overlays += image('icons/obj/doors/doorint.dmi', "elights")
@@ -520,24 +261,21 @@ About the new airlock wires panel:
icon_state = "door_locked"
else
icon_state = "door_closed"
- if(p_open || welded || frozen)
+ if(p_open || welded)
if(p_open)
overlays += image(icon, "panel_open")
if(welded)
overlays += image(icon, "welded")
- if(frozen)
- overlays += image(icon, "frozen")
-
else
icon_state = "door_open"
return
-
/obj/machinery/door/airlock/do_animate(animation)
switch(animation)
if("opening")
- if(overlays) overlays.Cut()
+ if(overlays)
+ overlays.Cut()
if(p_open)
spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond.
flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking
@@ -546,7 +284,8 @@ About the new airlock wires panel:
flick("door_opening", src)//[stat ? "_stat":]
update_icon()
if("closing")
- if(overlays) overlays.Cut()
+ if(overlays)
+ overlays.Cut()
if(p_open)
spawn(2)
flick("o_door_closing", src)
@@ -558,11 +297,16 @@ About the new airlock wires panel:
if(density)
flick("door_spark", src)
if("deny")
- if(density && src.arePowerSystemsOn())
+ if(density && arePowerSystemsOn())
playsound(src, doorDeni, 50, 0, 3)
flick("door_deny", src)
return
+/obj/machinery/door/airlock/examine(mob/user)
+ ..()
+ if(emagged)
+ to_chat(user, "Its access panel is smoking slightly.")
+
/obj/machinery/door/airlock/attack_ghost(mob/user)
if(p_open)
wires.Interact(user)
@@ -571,7 +315,7 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/attack_ai(mob/user)
ui_interact(user)
-/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+/obj/machinery/door/airlock/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1)
ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
ui = new(user, src, ui_key, "door_control.tmpl", "Door Controls - [src]", 600, 375)
@@ -598,53 +342,53 @@ About the new airlock wires panel:
data["commands"] = commands
return data
-/obj/machinery/door/airlock/proc/hack(mob/user as mob)
- if(src.aiHacking==0)
- src.aiHacking=1
+/obj/machinery/door/airlock/proc/hack(mob/user)
+ if(aiHacking==0)
+ aiHacking=1
spawn(20)
//TODO: Make this take a minute
to_chat(user, "Airlock AI control has been blocked. Beginning fault-detection.")
sleep(50)
- if(src.canAIControl())
+ if(canAIControl())
to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
+ aiHacking=0
return
- else if(!src.canAIHack(user))
+ else if(!canAIHack(user))
to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
+ aiHacking=0
return
to_chat(user, "Fault confirmed: airlock control wire disabled or cut.")
sleep(20)
to_chat(user, "Attempting to hack into airlock. This may take some time.")
sleep(200)
- if(src.canAIControl())
+ if(canAIControl())
to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
+ aiHacking=0
return
- else if(!src.canAIHack(user))
+ else if(!canAIHack(user))
to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
+ aiHacking=0
return
to_chat(user, "Upload access confirmed. Loading control program into airlock software.")
sleep(170)
- if(src.canAIControl())
+ if(canAIControl())
to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.")
- src.aiHacking=0
+ aiHacking=0
return
- else if(!src.canAIHack(user))
+ else if(!canAIHack(user))
to_chat(user, "We've lost our connection! Unable to hack airlock.")
- src.aiHacking=0
+ aiHacking=0
return
to_chat(user, "Transfer complete. Forcing airlock to execute program.")
sleep(50)
//disable blocked control
- src.aiControlDisabled = 2
+ aiControlDisabled = 2
to_chat(user, "Receiving control information from airlock.")
sleep(10)
//bring up airlock dialog
- src.aiHacking = 0
+ aiHacking = 0
if(user)
- src.attack_ai(user)
+ attack_ai(user)
/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0)
if(isElectrified() && density && istype(mover, /obj/item))
@@ -655,16 +399,16 @@ About the new airlock wires panel:
s.start()
return ..()
-/obj/machinery/door/airlock/attack_hand(mob/user as mob)
- if(!istype(user, /mob/living/silicon))
- if(src.isElectrified())
- if(src.shock(user, 100))
+/obj/machinery/door/airlock/attack_hand(mob/user)
+ if(!issilicon(user))
+ if(isElectrified())
+ if(shock(user, 100))
return
- if(ishuman(user) && prob(40) && src.density)
+ if(ishuman(user) && prob(40) && density)
var/mob/living/carbon/human/H = user
if(H.getBrainLoss() >= 60)
- playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
+ playsound(loc, 'sound/effects/bang.ogg', 25, 1)
if(!istype(H.head, /obj/item/clothing/head/helmet))
visible_message("[user] headbutts the airlock.")
var/obj/item/organ/external/affecting = H.get_organ("head")
@@ -676,13 +420,13 @@ About the new airlock wires panel:
visible_message("[user] headbutts the airlock. Good thing they're wearing a helmet.")
return
- if(src.p_open)
+ if(p_open)
wires.Interact(user)
else
..(user)
return
-/obj/machinery/door/airlock/CanUseTopic(var/mob/user)
+/obj/machinery/door/airlock/CanUseTopic(mob/user)
if(!issilicon(user) && !isobserver(user))
return STATUS_CLOSE
@@ -701,14 +445,14 @@ About the new airlock wires panel:
return ..()
-/obj/machinery/door/airlock/Topic(href, href_list, var/nowindow = 0)
+/obj/machinery/door/airlock/Topic(href, href_list, nowindow = 0)
if(..())
return 1
var/activate = text2num(href_list["activate"])
switch(href_list["command"])
if("idscan")
- if(src.isWireCut(AIRLOCK_WIRE_IDSCAN))
+ if(isWireCut(AIRLOCK_WIRE_IDSCAN))
to_chat(usr, "The IdScan wire has been cut - IdScan feature permanently disabled.")
else if(activate && aiDisabledIdScanner)
aiDisabledIdScanner = 0
@@ -798,9 +542,9 @@ About the new airlock wires panel:
update_icon()
return 1
-/obj/machinery/door/airlock/attackby(obj/item/C, mob/user as mob, params)
+/obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params)
// to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user))
- if(!istype(usr, /mob/living/silicon))
+ if(!issilicon(usr))
if(isElectrified())
if(shock(user, 75))
return
@@ -808,11 +552,9 @@ About the new airlock wires panel:
return
add_fingerprint(user)
- if((istype(C, /obj/item/weapon/weldingtool) && !operating && density))
+ if((iswelder(C) && !operating && density))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0,user))
- if(frozen)
- frozen = 0
if(!welded)
welded = 1
else
@@ -821,31 +563,33 @@ About the new airlock wires panel:
return
else
return
- else if(istype(C, /obj/item/weapon/screwdriver))
- p_open = !( p_open )
+ else if(isscrewdriver(C))
+ p_open = !p_open
+ to_chat(user, "You [p_open ? "open":"close"] the maintenance panel of the airlock.")
+ playsound(loc, C.usesound, 50, 1)
update_icon()
- else if(istype(C, /obj/item/weapon/wirecutters))
+ else if(iswirecutter(C))
return attack_hand(user)
- else if(istype(C, /obj/item/device/multitool))
+ else if(ismultitool(C))
return attack_hand(user)
else if(istype(C, /obj/item/device/assembly/signaler))
return attack_hand(user)
else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE
var/obj/item/weapon/pai_cable/cable = C
cable.plugin(src, user)
- else if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe))
+ else if(iscrowbar(C) || istype(C, /obj/item/weapon/twohanded/fireaxe))
var/beingcrowbarred = null
- if(istype(C, /obj/item/weapon/crowbar) )
+ if(iscrowbar(C))
beingcrowbarred = 1 //derp, Agouri
else
beingcrowbarred = 0
- if( beingcrowbarred && p_open && (emagged || (density && welded && (!operating || emagged) && !arePowerSystemsOn() && !locked)) )
+ if(beingcrowbarred && p_open && (emagged || (density && welded && (!operating || emagged) && !arePowerSystemsOn() && !locked)))
playsound(loc, C.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.")
if(do_after(user, 40 * C.toolspeed, target = src))
to_chat(user, "You removed the airlock electronics!")
- var/obj/structure/door_assembly/da = new assembly_type(loc)
+ var/obj/structure/door_assembly/da = new assemblytype(loc)
da.heat_proof_finished = heat_proof //tracks whether there's rglass in
da.anchored = 1
if(mineral)
@@ -859,7 +603,7 @@ About the new airlock wires panel:
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
- ae = new/obj/item/weapon/airlock_electronics( loc )
+ ae = new/obj/item/weapon/airlock_electronics(loc)
if(!req_access)
check_access()
if(req_access.len)
@@ -906,30 +650,34 @@ About the new airlock wires panel:
to_chat(user, "The airlock's motors resist your efforts to force it.")
else if(locked)
to_chat(user, "The airlock's bolts prevent it from being forced.")
- else if( !welded && !operating )
+ else if(!welded && !operating)
if(density)
- if(beingcrowbarred == 0) //being fireaxe'd
+ if(!beingcrowbarred) //being fireaxe'd
var/obj/item/weapon/twohanded/fireaxe/F = C
if(F.wielded)
- spawn(0) open(1)
+ spawn(0)
+ open(1)
else
to_chat(user, "You need to be wielding \the [C] to do that.")
else
- spawn(0) open(1)
+ spawn(0)
+ open(1)
else
- if(beingcrowbarred == 0)
+ if(!beingcrowbarred)
var/obj/item/weapon/twohanded/fireaxe/F = C
if(F.wielded)
- spawn(0) close(1)
+ spawn(0)
+ close(1)
else
to_chat(user, "You need to be wielding \the [C] to do that.")
else
- spawn(0) close(1)
+ spawn(0)
+ close(1)
else
..()
return
-/obj/machinery/door/airlock/plasma/attackby(C as obj, mob/user as mob, params)
+/obj/machinery/door/airlock/plasma/attackby(obj/C, mob/user, params)
if(is_hot(C) > 300)
message_admins("Plasma airlock ignited by [key_name_admin(user)] in ([x],[y],[z] - JMP)")
log_game("Plasma wall ignited by [key_name(user)] in ([x],[y],[z])")
@@ -937,11 +685,63 @@ About the new airlock wires panel:
ignite(is_hot(C))
..()
-/obj/machinery/door/airlock/open(var/forced=0)
+/obj/machinery/door/airlock/hatch/gamma/attackby(obj/C, mob/user, params)
+// to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user))
+ if(!issilicon(user))
+ if(isElectrified())
+ if(shock(user, 75))
+ return
+ if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll))
+ return
+
+ if(istype(C, /obj/item/weapon/grenade/plastic/c4))
+ to_chat(user, "The hatch is coated with a product that prevents the shaped charge from sticking!")
+ return
+
+ if(istype(C, /obj/item/mecha_parts/mecha_equipment/rcd) || istype(C, /obj/item/weapon/rcd))
+ to_chat(user, "The hatch is made of an advanced compound that cannot be deconstructed using an RCD.")
+ return
+
+ add_fingerprint(user)
+ if((iswelder(C) && !operating && density))
+ var/obj/item/weapon/weldingtool/W = C
+ if(W.remove_fuel(0,user))
+ if(!welded)
+ welded = 1
+ else
+ welded = null
+ update_icon()
+ return
+ else
+ return
+
+/obj/machinery/door/airlock/highsecurity/red/attackby(obj/C, mob/user, params)
+// to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user))
+ if(!issilicon(user))
+ if(isElectrified())
+ if(shock(user, 75))
+ return
+ if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll))
+ return
+
+ add_fingerprint(user)
+ if((iswelder(C) && !operating && density))
+ var/obj/item/weapon/weldingtool/W = C
+ if(W.remove_fuel(0,user))
+ if(!welded)
+ welded = 1
+ else
+ welded = null
+ update_icon()
+ return
+ else
+ return
+
+/obj/machinery/door/airlock/open(forced=0)
if(operating || welded || locked || emagged)
return 0
if(!forced)
- if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) )
+ if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR))
return 0
use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people
if(forced)
@@ -952,19 +752,19 @@ About the new airlock wires panel:
closeOther.close()
return ..()
-/obj/machinery/door/airlock/close(var/forced=0, var/override = 0)
+/obj/machinery/door/airlock/close(forced=0, override = 0)
if((operating & !override) || welded || locked || emagged)
return
if(!forced)
//despite the name, this wire is for general door control.
//Bolts are already covered by the check for locked, above
- if( !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR) )
+ if(!arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_OPEN_DOOR))
return
if(safe)
for(var/turf/turf in locs)
if(locate(/mob/living) in turf)
// playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete
- spawn (60)
+ spawn(60)
autoclose()
return
@@ -982,11 +782,13 @@ About the new airlock wires panel:
operating = 1
do_animate("closing")
layer = 3.1
- if(!override) sleep(5)
+ if(!override)
+ sleep(5)
density = 1
if(!safe)
crush()
- if(!override) sleep(5)
+ if(!override)
+ sleep(5)
update_icon()
if(visible && !glass)
set_opacity(1)
@@ -999,107 +801,36 @@ About the new airlock wires panel:
return
-/obj/machinery/door/airlock/proc/lock(var/forced=0)
+/obj/machinery/door/airlock/proc/lock(forced=0)
if(locked)
return 0
- if(operating && !forced) return 0
+ if(operating && !forced)
+ return 0
locked = 1
playsound(src, boltDown, 30, 0, 3)
update_icon()
return 1
-/obj/machinery/door/airlock/proc/unlock(var/forced=0)
+/obj/machinery/door/airlock/proc/unlock(forced=0)
if(!locked)
return
if(!forced)
- if(operating || !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS)) return
+ if(operating || !arePowerSystemsOn() || isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
+ return
locked = 0
playsound(src,boltUp, 30, 0, 3)
update_icon()
return 1
-/obj/machinery/door/airlock/New()
- ..()
- wires = new(src)
-
-/obj/machinery/door/airlock/initialize()
- . = ..()
- if(closeOtherId != null)
- for(var/obj/machinery/door/airlock/A in airlocks)
- if(A.closeOtherId == closeOtherId && A != src)
- closeOther = A
- break
- if(frozen)
- welded = TRUE
- if(welded)
- update_icon()
-
-/obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob, params)
-// to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user))
- if(!istype(usr, /mob/living/silicon))
- if(isElectrified())
- if(shock(user, 75))
- return
- if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll))
- return
-
- if(istype(C, /obj/item/weapon/grenade/plastic/c4))
- to_chat(user, "The hatch is coated with a product that prevents the shaped charge from sticking!")
- return
-
- if(istype(C, /obj/item/mecha_parts/mecha_equipment/rcd) || istype(C, /obj/item/weapon/rcd))
- to_chat(user, "The hatch is made of an advanced compound that cannot be deconstructed using an RCD.")
- return
-
- add_fingerprint(user)
- if((istype(C, /obj/item/weapon/weldingtool) && !operating && density))
- var/obj/item/weapon/weldingtool/W = C
- if(W.remove_fuel(0,user))
- if(frozen)
- frozen = 0
- if(!welded)
- welded = 1
- else
- welded = null
- update_icon()
- return
- else
- return
-
-
-/obj/machinery/door/airlock/highsecurity/red/attackby(C as obj, mob/user as mob, params)
-// to_chat(world, text("airlock attackby src [] obj [] mob []", src, C, user))
- if(!istype(usr, /mob/living/silicon))
- if(isElectrified())
- if(shock(user, 75))
- return
- if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll))
- return
-
- add_fingerprint(user)
- if((istype(C, /obj/item/weapon/weldingtool) && !operating && density))
- var/obj/item/weapon/weldingtool/W = C
- if(W.remove_fuel(0,user))
- if(frozen)
- frozen = 0
- if(!welded)
- welded = 1
- else
- welded = null
- update_icon()
- return
- else
- return
-
-/obj/machinery/door/airlock/CanAStarPass(var/obj/item/weapon/card/id/ID)
+/obj/machinery/door/airlock/CanAStarPass(obj/item/weapon/card/id/ID)
//Airlock is passable if it is open (!density), bot has access, and is not bolted shut)
return !density || (check_access(ID) && !locked && arePowerSystemsOn())
-/obj/machinery/door/airlock/emp_act(var/severity)
+/obj/machinery/door/airlock/emp_act(severity)
if(prob(40/severity))
var/duration = world.time + SecondsToTicks(30 / severity)
if(duration > electrified_until)
@@ -1133,7 +864,6 @@ About the new airlock wires panel:
if(origin)
shockedby += "\[[time_stamp()]\][origin](ckey:[origin.ckey])"
-
/obj/machinery/door/airlock/disable_lockdown()
// Must be powered and have working AI wire.
if(canAIControl(src) && !stat)
@@ -1144,50 +874,6 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/narsie_act()
var/turf/T = get_turf(src)
- if(prob(20))
- new/obj/machinery/door/airlock/cult(T)
- qdel(src)
-
-
-
-//////////////////////////////////
-/*
- Cult Airlocks
-*/
-
-/obj/machinery/door/airlock/cult
- name = "cult airlock"
- icon = 'icons/obj/doors/doorcult.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_cult
- hackProof = 1
- aiControlDisabled = 1
- var/friendly = FALSE
-
-/obj/machinery/door/airlock/cult/New()
- ..()
-
-/obj/machinery/door/airlock/cult/canAIControl(mob/user)
- return (iscultist(user))
-
-/obj/machinery/door/airlock/cult/allowed(mob/M)
- if(!density)
- return 1
- if(friendly || \
- iscultist(M) || \
- istype(M, /mob/living/simple_animal/shade) || \
- istype(M, /mob/living/simple_animal/construct))
- return 1
- else
- var/atom/throwtarget
- throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(M, src)))
- M << pick(sound('sound/hallucinations/turn_around1.ogg',0,1,50), sound('sound/hallucinations/turn_around2.ogg',0,1,50))
- M.Weaken(2)
- spawn(0)
- M.throw_at(throwtarget, 5, 1,src)
- return 0
-
-/obj/machinery/door/airlock/cult/narsie_act()
- return
-
-/obj/machinery/door/airlock/cult/friendly
- friendly = TRUE
+ var/obj/machinery/door/airlock/cult/A = new(T)
+ A.name = name
+ qdel(src)
diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm
index 17ebdf96ce2..cc7da319ddd 100644
--- a/code/game/machinery/doors/airlock_control.dm
+++ b/code/game/machinery/doors/airlock_control.dm
@@ -1,31 +1,34 @@
#define AIRLOCK_CONTROL_RANGE 22
// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access)
-obj/machinery/door/airlock
+/obj/machinery/door/airlock
var/id_tag
var/frequency
var/shockedby = list()
var/datum/radio_frequency/radio_connection
var/cur_command = null //the command the door is currently attempting to complete
-obj/machinery/door/airlock/process()
+/obj/machinery/door/airlock/process()
if(arePowerSystemsOn() && cur_command)
execute_current_command()
else
return PROCESS_KILL
-obj/machinery/door/airlock/receive_signal(datum/signal/signal)
- if(!arePowerSystemsOn()) return //no power
+/obj/machinery/door/airlock/receive_signal(datum/signal/signal)
+ if(!arePowerSystemsOn())
+ return //no power
- if(!signal || signal.encryption) return
+ if(!signal || signal.encryption)
+ return
- if(id_tag != signal.data["tag"] || !signal.data["command"]) return
+ if(id_tag != signal.data["tag"] || !signal.data["command"])
+ return
cur_command = signal.data["command"]
spawn()
execute_current_command()
-obj/machinery/door/airlock/proc/execute_current_command()
+/obj/machinery/door/airlock/proc/execute_current_command()
if(operating || emagged)
return //emagged or busy doing something else
@@ -39,7 +42,7 @@ obj/machinery/door/airlock/proc/execute_current_command()
if(!(src in machine_processing))
machine_processing += src
-obj/machinery/door/airlock/proc/do_command(var/command)
+/obj/machinery/door/airlock/proc/do_command(command)
switch(command)
if("open")
open()
@@ -70,7 +73,7 @@ obj/machinery/door/airlock/proc/do_command(var/command)
send_status()
-obj/machinery/door/airlock/proc/command_completed(var/command)
+/obj/machinery/door/airlock/proc/command_completed(command)
switch(command)
if("open")
return (!density)
@@ -92,7 +95,7 @@ obj/machinery/door/airlock/proc/command_completed(var/command)
return 1 //Unknown command. Just assume it's completed.
-obj/machinery/door/airlock/proc/send_status(var/bumped = 0)
+/obj/machinery/door/airlock/proc/send_status(bumped = 0)
if(radio_connection)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
@@ -107,33 +110,29 @@ obj/machinery/door/airlock/proc/send_status(var/bumped = 0)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
-
-obj/machinery/door/airlock/open(surpress_send)
+/obj/machinery/door/airlock/open(surpress_send)
. = ..()
if(!surpress_send) send_status()
-
-obj/machinery/door/airlock/close(surpress_send)
+/obj/machinery/door/airlock/close(surpress_send)
. = ..()
if(!surpress_send) send_status()
-
-obj/machinery/door/airlock/Bumped(atom/AM)
+/obj/machinery/door/airlock/Bumped(atom/AM)
..(AM)
if(istype(AM, /obj/mecha))
var/obj/mecha/mecha = AM
- if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access)))
+ if(density && radio_connection && mecha.occupant && (allowed(mecha.occupant) || check_access_list(mecha.operation_req_access)))
send_status(1)
return
-obj/machinery/door/airlock/proc/set_frequency(new_frequency)
+/obj/machinery/door/airlock/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
if(new_frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
-
-obj/machinery/door/airlock/initialize()
+/obj/machinery/door/airlock/initialize()
..()
if(frequency)
set_frequency(frequency)
@@ -141,20 +140,16 @@ obj/machinery/door/airlock/initialize()
update_icon()
-obj/machinery/door/airlock/New()
+/obj/machinery/door/airlock/New()
..()
if(radio_controller)
set_frequency(frequency)
-
-
-
-obj/machinery/airlock_sensor
+/obj/machinery/airlock_sensor
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_sensor_off"
name = "airlock sensor"
-
anchored = 1
power_channel = ENVIRON
@@ -169,7 +164,7 @@ obj/machinery/airlock_sensor
var/alert = 0
var/previousPressure
-obj/machinery/airlock_sensor/update_icon()
+/obj/machinery/airlock_sensor/update_icon()
if(on)
if(alert)
icon_state = "airlock_sensor_alert"
@@ -178,7 +173,7 @@ obj/machinery/airlock_sensor/update_icon()
else
icon_state = "airlock_sensor_off"
-obj/machinery/airlock_sensor/attack_hand(mob/user)
+/obj/machinery/airlock_sensor/attack_hand(mob/user)
var/datum/signal/signal = new
signal.transmission_method = 1 //radio signal
signal.data["tag"] = master_tag
@@ -187,7 +182,7 @@ obj/machinery/airlock_sensor/attack_hand(mob/user)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("airlock_sensor_cycle", src)
-obj/machinery/airlock_sensor/process()
+/obj/machinery/airlock_sensor/process()
if(on)
var/datum/gas_mixture/air_sample = return_air()
var/pressure = round(air_sample.return_pressure(),0.1)
@@ -207,32 +202,30 @@ obj/machinery/airlock_sensor/process()
update_icon()
-obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
+/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
-obj/machinery/airlock_sensor/initialize()
+/obj/machinery/airlock_sensor/initialize()
..()
set_frequency(frequency)
-obj/machinery/airlock_sensor/New()
+/obj/machinery/airlock_sensor/New()
..()
if(radio_controller)
set_frequency(frequency)
-
-obj/machinery/airlock_sensor/airlock_interior
+/obj/machinery/airlock_sensor/airlock_interior
command = "cycle_interior"
-obj/machinery/airlock_sensor/airlock_exterior
+/obj/machinery/airlock_sensor/airlock_exterior
command = "cycle_exterior"
-obj/machinery/access_button
+/obj/machinery/access_button
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "access_button_standby"
name = "access button"
-
anchored = 1
power_channel = ENVIRON
@@ -244,21 +237,20 @@ obj/machinery/access_button
var/on = 1
-
-obj/machinery/access_button/update_icon()
+/obj/machinery/access_button/update_icon()
if(on)
icon_state = "access_button_standby"
else
icon_state = "access_button_off"
-obj/machinery/access_button/attackby(obj/item/I as obj, mob/user as mob, params)
+/obj/machinery/access_button/attackby(obj/item/I, mob/user, params)
//Swiping ID on the access button
if(istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda))
attack_hand(user)
return
..()
-obj/machinery/access_button/attack_hand(mob/user)
+/obj/machinery/access_button/attack_hand(mob/user)
add_fingerprint(usr)
if(!allowed(user))
to_chat(user, "Access Denied")
@@ -272,28 +264,25 @@ obj/machinery/access_button/attack_hand(mob/user)
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)
flick("access_button_cycle", src)
-
-obj/machinery/access_button/proc/set_frequency(new_frequency)
+/obj/machinery/access_button/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
frequency = new_frequency
radio_connection = radio_controller.add_object(src, frequency, RADIO_AIRLOCK)
-
-obj/machinery/access_button/initialize()
+/obj/machinery/access_button/initialize()
..()
set_frequency(frequency)
-
-obj/machinery/access_button/New()
+/obj/machinery/access_button/New()
..()
if(radio_controller)
set_frequency(frequency)
-obj/machinery/access_button/airlock_interior
+/obj/machinery/access_button/airlock_interior
frequency = 1379
command = "cycle_interior"
-obj/machinery/access_button/airlock_exterior
+/obj/machinery/access_button/airlock_exterior
frequency = 1379
command = "cycle_exterior"
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 7c9f6d5b299..9881e58beb6 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -6,14 +6,13 @@
materials = list(MAT_METAL=50, MAT_GLASS=50)
origin_tech = "engineering=2;programming=1"
req_access = list(access_engine)
-
+ toolspeed = 1
+ usesound = 'sound/items/Deconstruct.ogg'
var/list/conf_access = null
var/one_access = 0 //if set to 1, door would receive req_one_access instead of req_access
var/last_configurator = null
var/locked = TRUE
var/const/max_brain_damage = 60 // Maximum brain damage a mob can have until it can't use the electronics
- toolspeed = 1
- usesound = 'sound/items/Deconstruct.ogg'
/obj/item/weapon/airlock_electronics/attack_self(mob/user)
if(!ishuman(user) && !isrobot(user))
@@ -89,7 +88,7 @@
attack_self(usr)
-/obj/item/weapon/airlock_electronics/proc/toggle_access(var/access)
+/obj/item/weapon/airlock_electronics/proc/toggle_access(access)
if(access == "all")
conf_access = null
else
diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm
new file mode 100644
index 00000000000..08c16d77654
--- /dev/null
+++ b/code/game/machinery/doors/airlock_types.dm
@@ -0,0 +1,333 @@
+/*
+ Station Airlocks Regular
+*/
+
+/obj/machinery/door/airlock/command
+ icon = 'icons/obj/doors/Doorcom.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_com
+
+/obj/machinery/door/airlock/security
+ icon = 'icons/obj/doors/Doorsec.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_sec
+
+/obj/machinery/door/airlock/engineering
+ icon = 'icons/obj/doors/Dooreng.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_eng
+
+/obj/machinery/door/airlock/medical
+ icon = 'icons/obj/doors/Doormed.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_med
+
+/obj/machinery/door/airlock/maintenance
+ name = "maintenance access"
+ icon = 'icons/obj/doors/Doormaint.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_mai
+
+/obj/machinery/door/airlock/mining
+ name = "mining airlock"
+ icon = 'icons/obj/doors/Doormining.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_min
+
+/obj/machinery/door/airlock/atmos
+ name = "atmospherics airlock"
+ icon = 'icons/obj/doors/Dooratmo.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_atmo
+
+/obj/machinery/door/airlock/research
+ icon = 'icons/obj/doors/Doorresearch.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_research
+
+/obj/machinery/door/airlock/freezer
+ name = "freezer airlock"
+ icon = 'icons/obj/doors/Doorfreezer.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_fre
+
+/obj/machinery/door/airlock/science
+ icon = 'icons/obj/doors/Doorsci.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_science
+
+//////////////////////////////////
+/*
+ Station Airlocks Glass
+*/
+
+/obj/machinery/door/airlock/glass_command
+ icon = 'icons/obj/doors/Doorcomglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_com
+ glass = 1
+
+/obj/machinery/door/airlock/glass_engineering
+ icon = 'icons/obj/doors/Doorengglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_eng
+ glass = 1
+
+/obj/machinery/door/airlock/glass_security
+ icon = 'icons/obj/doors/Doorsecglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_sec
+ glass = 1
+
+/obj/machinery/door/airlock/glass_medical
+ icon = 'icons/obj/doors/Doormedglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_med
+ glass = 1
+
+/obj/machinery/door/airlock/glass_research
+ icon = 'icons/obj/doors/Doorresearchglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_research
+ glass = 1
+
+/obj/machinery/door/airlock/glass_mining
+ icon = 'icons/obj/doors/Doorminingglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_min
+ glass = 1
+
+/obj/machinery/door/airlock/glass_atmos
+ icon = 'icons/obj/doors/Dooratmoglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_atmo
+ glass = 1
+
+/obj/machinery/door/airlock/glass_science
+ icon = 'icons/obj/doors/Doorsciglass.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_science
+ glass = 1
+
+//////////////////////////////////
+/*
+ Station Airlocks Mineral
+*/
+
+/obj/machinery/door/airlock/gold
+ name = "gold airlock"
+ icon = 'icons/obj/doors/Doorgold.dmi'
+ mineral = "gold"
+
+/obj/machinery/door/airlock/silver
+ name = "silver airlock"
+ icon = 'icons/obj/doors/Doorsilver.dmi'
+ mineral = "silver"
+
+/obj/machinery/door/airlock/diamond
+ name = "diamond airlock"
+ icon = 'icons/obj/doors/Doordiamond.dmi'
+ mineral = "diamond"
+
+/obj/machinery/door/airlock/uranium
+ name = "uranium airlock"
+ desc = "And they said I was crazy."
+ icon = 'icons/obj/doors/Dooruranium.dmi'
+ mineral = "uranium"
+ var/event_step = 20
+
+/obj/machinery/door/airlock/uranium/New()
+ ..()
+ addtimer(src, "radiate", event_step)
+
+/obj/machinery/door/airlock/uranium/proc/radiate()
+ if(prob(50))
+ for(var/mob/living/L in range (3,src))
+ L.apply_effect(15,IRRADIATE,0)
+ addtimer(src, "radiate", event_step)
+
+/obj/machinery/door/airlock/plasma
+ name = "plasma airlock"
+ desc = "No way this can end badly."
+ icon = 'icons/obj/doors/Doorplasma.dmi'
+ mineral = "plasma"
+
+/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ if(exposed_temperature > 300)
+ PlasmaBurn(exposed_temperature)
+
+/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
+ if(exposed_temperature > 300)
+ PlasmaBurn(exposed_temperature)
+
+/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
+ atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
+ new/obj/structure/door_assembly(loc)
+ qdel(src)
+
+/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
+ return 0
+
+/obj/machinery/door/airlock/bananium
+ name = "bananium airlock"
+ icon = 'icons/obj/doors/Doorbananium.dmi'
+ mineral = "bananium"
+ doorOpen = 'sound/items/bikehorn.ogg'
+ doorClose = 'sound/items/bikehorn.ogg'
+
+/obj/machinery/door/airlock/tranquillite
+ name = "tranquillite airlock"
+ icon = 'icons/obj/doors/Doorfreezer.dmi'
+ mineral = "tranquillite"
+ doorOpen = null // it's silent!
+ doorClose = null
+ doorDeni = null
+ boltUp = null
+ boltDown = null
+
+/obj/machinery/door/airlock/sandstone
+ name = "sandstone airlock"
+ icon = 'icons/obj/doors/Doorsand.dmi'
+ mineral = "sandstone"
+
+//////////////////////////////////
+/*
+ Station2 Airlocks
+*/
+
+/obj/machinery/door/airlock/glass
+ name = "glass airlock"
+ icon = 'icons/obj/doors/Doorglass.dmi'
+ opacity = 0
+ glass = 1
+ doorOpen = 'sound/machines/windowdoor.ogg'
+ doorClose = 'sound/machines/windowdoor.ogg'
+
+//////////////////////////////////
+/*
+ External Airlocks
+*/
+
+/obj/machinery/door/airlock/external
+ name = "external airlock"
+ icon = 'icons/obj/doors/Doorext.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_ext
+ doorOpen = 'sound/machines/airlock_ext_open.ogg'
+ doorClose = 'sound/machines/airlock_ext_close.ogg'
+
+//////////////////////////////////
+/*
+ CentCom Airlocks
+*/
+
+/obj/machinery/door/airlock/centcom
+ icon = 'icons/obj/doors/Doorele.dmi'
+ opacity = 0
+ assemblytype = /obj/structure/door_assembly/door_assembly_centcom
+
+//////////////////////////////////
+/*
+ Vault Airlocks
+*/
+
+/obj/machinery/door/airlock/vault
+ name = "vault door"
+ icon = 'icons/obj/doors/vault.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_vault
+ explosion_block = 2
+
+//////////////////////////////////
+/*
+ Hatch Airlocks
+*/
+
+/obj/machinery/door/airlock/hatch
+ name = "airtight hatch"
+ icon = 'icons/obj/doors/Doorhatchele.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_hatch
+
+/obj/machinery/door/airlock/hatch/gamma
+ name = "gamma level hatch"
+ hackProof = 1
+ aiControlDisabled = 1
+ unacidable = 1
+ is_special = 1
+
+/obj/machinery/door/airlock/maintenance_hatch
+ name = "maintenance hatch"
+ icon = 'icons/obj/doors/Doorhatchmaint2.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_mhatch
+
+//////////////////////////////////
+/*
+ High Security Airlocks
+*/
+
+/obj/machinery/door/airlock/highsecurity
+ name = "high tech security airlock"
+ icon = 'icons/obj/doors/hightechsecurity.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_highsecurity
+ explosion_block = 2
+
+/obj/machinery/door/airlock/highsecurity/red
+ name = "secure armory airlock"
+ hackProof = 1
+ aiControlDisabled = 1
+
+//////////////////////////////////
+/*
+ Shuttle Airlocks
+*/
+
+/obj/machinery/door/airlock/shuttle
+ name = "shuttle airlock"
+ icon = 'icons/obj/doors/doorshuttle.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_shuttle
+
+//////////////////////////////////
+/*
+ Cult Airlocks
+*/
+
+/obj/machinery/door/airlock/cult
+ name = "cult airlock"
+ icon = 'icons/obj/doors/doorcult.dmi'
+ assemblytype = /obj/structure/door_assembly/door_assembly_cult
+ hackProof = 1
+ aiControlDisabled = 1
+ var/friendly = FALSE
+
+/obj/machinery/door/airlock/cult/New()
+ ..()
+
+/obj/machinery/door/airlock/cult/canAIControl(mob/user)
+ return (iscultist(user))
+
+/obj/machinery/door/airlock/cult/allowed(mob/M)
+ if(!density)
+ return 1
+ if(friendly || \
+ iscultist(M) || \
+ istype(M, /mob/living/simple_animal/shade) || \
+ istype(M, /mob/living/simple_animal/construct))
+ return 1
+ else
+ var/atom/throwtarget
+ throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(M, src)))
+ M << pick(sound('sound/hallucinations/turn_around1.ogg',0,1,50), sound('sound/hallucinations/turn_around2.ogg',0,1,50))
+ M.Weaken(2)
+ spawn(0)
+ M.throw_at(throwtarget, 5, 1,src)
+ return 0
+
+/obj/machinery/door/airlock/cult/narsie_act()
+ return
+
+/obj/machinery/door/airlock/cult/friendly
+ friendly = TRUE
+
+//////////////////////////////////
+/*
+ Misc Airlocks
+*/
+
+//Terribly sorry for the code doubling, but things go derpy otherwise.
+/obj/machinery/door/airlock/multi_tile
+ width = 2
+
+/obj/machinery/door/airlock/multi_tile/glass
+ name = "large glass airlock"
+ icon = 'icons/obj/doors/Door2x1glass.dmi'
+ opacity = 0
+ glass = 1
+ assemblytype = "obj/structure/door_assembly/multi_tile"
diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm
index ba5497cdf60..839fb387ddb 100644
--- a/code/game/machinery/doors/alarmlock.dm
+++ b/code/game/machinery/doors/alarmlock.dm
@@ -1,13 +1,11 @@
/obj/machinery/door/airlock/alarmlock
-
- name = "Glass Alarm Airlock"
+ name = "glass alarm airlock"
icon = 'icons/obj/doors/Doorglass.dmi'
opacity = 0
glass = 1
-
+ autoclose = 0
var/datum/radio_frequency/air_connection
var/air_frequency = 1437
- autoclose = 0
/obj/machinery/door/airlock/alarmlock/New()
..()
@@ -25,7 +23,6 @@
air_connection = radio_controller.add_object(src, air_frequency, RADIO_TO_AIRALARM)
open()
-
/obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal)
..()
if(stat & (NOPOWER|BROKEN))
@@ -43,4 +40,4 @@
close()
if("minor", "clear")
autoclose = 0
- open()
\ No newline at end of file
+ open()
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 39fa5e04037..5914d9b5d87 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -12,12 +12,12 @@
// Programmer: Veryinky
/////////////////////////////////////////////////////////////////////////////////////////////////
/obj/machinery/door_timer
- name = "Door Timer"
+ name = "door timer"
icon = 'icons/obj/status_display.dmi'
icon_state = "frame"
desc = "A remote control for a door."
req_access = list(access_brig)
- anchored = 1.0 // can't pick it up
+ anchored = 1 // can't pick it up
density = 0 // can walk through it.
var/id = null // id of door it controls.
var/releasetime = 0 // when world.timeofday reaches it - release the prisoner
diff --git a/code/game/machinery/doors/checkForMultipleDoors.dm b/code/game/machinery/doors/checkForMultipleDoors.dm
index 9005a7fda49..d1c3c2e2d6b 100644
--- a/code/game/machinery/doors/checkForMultipleDoors.dm
+++ b/code/game/machinery/doors/checkForMultipleDoors.dm
@@ -1,15 +1,15 @@
/obj/machinery/door/proc/checkForMultipleDoors()
- if(!src.loc)
+ if(!loc)
return 0
- for(var/obj/machinery/door/D in src.loc)
+ for(var/obj/machinery/door/D in loc)
if(!istype(D, /obj/machinery/door/window) && D.density)
return 0
return 1
/turf/simulated/wall/proc/checkForMultipleDoors()
- if(!src.loc)
+ if(!loc)
return 0
- for(var/obj/machinery/door/D in locate(src.x,src.y,src.z))
+ for(var/obj/machinery/door/D in locate(x,y,z))
if(!istype(D, /obj/machinery/door/window) && D.density)
return 0
//There are no false wall checks because that would be fucking retarded
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 88b750feeb9..db63d48935f 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -2,7 +2,7 @@
#define DOOR_CLOSED_LAYER 3.1 //Above most items if closed
/obj/machinery/door
- name = "Door"
+ name = "door"
desc = "It opens and closes."
icon = 'icons/obj/doors/Doorint.dmi'
icon_state = "door1"
@@ -10,18 +10,20 @@
opacity = 1
density = 1
layer = DOOR_OPEN_LAYER
+ power_channel = ENVIRON
var/open_layer = DOOR_OPEN_LAYER
var/closed_layer = DOOR_CLOSED_LAYER
-
var/visible = 1
var/p_open = 0
var/operating = 0
var/autoclose = 0
var/autoclose_timer
var/glass = 0
+ var/welded = FALSE
var/normalspeed = 1
var/auto_close_time = 150
var/auto_close_time_dangerous = 5
+ var/assemblytype //the type of door frame to drop during deconstruction
var/heat_proof = 0 // For rglass-windowed airlocks and firedoors
var/emergency = 0
var/air_properties_vary_with_direction = 0
@@ -74,7 +76,8 @@
return
if(isliving(AM))
var/mob/living/M = AM
- if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent shock spam.
+ if(world.time - M.last_bumped <= 10)
+ return //Can bump-open one airlock per second. This is to prevent shock spam.
M.last_bumped = world.time
if(!M.restrained())
if(M.mob_size > MOB_SIZE_SMALL)
@@ -95,6 +98,18 @@
return
return
+/obj/machinery/door/Move(new_loc, new_dir)
+ var/turf/T = loc
+ . = ..()
+ move_update_air(T)
+
+ if(width > 1)
+ if(dir in list(EAST, WEST))
+ bound_width = width * world.icon_size
+ bound_height = world.icon_size
+ else
+ bound_width = world.icon_size
+ bound_height = width * world.icon_size
/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0)
if(istype(mover) && mover.checkpass(PASSGLASS))
@@ -173,29 +188,26 @@
qdel(src)
return
-
/obj/machinery/door/emp_act(severity)
if(prob(20/severity) && (istype(src,/obj/machinery/door/airlock) || istype(src,/obj/machinery/door/window)) )
spawn(0)
open()
..()
-
/obj/machinery/door/ex_act(severity)
switch(severity)
- if(1.0)
+ if(1)
qdel(src)
- if(2.0)
+ if(2)
if(prob(25))
qdel(src)
- if(3.0)
+ if(3)
if(prob(80))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, src)
s.start()
return
-
/obj/machinery/door/update_icon()
if(density)
icon_state = "door1"
@@ -285,7 +297,6 @@
var/turf/location = get_turf(src)
L.add_splatter_floor(location)
-
/obj/machinery/door/proc/requiresID()
return 1
@@ -295,19 +306,6 @@
close()
return
-/obj/machinery/door/Move(new_loc, new_dir)
- var/turf/T = loc
- . = ..()
- move_update_air(T)
-
- if(width > 1)
- if(dir in list(EAST, WEST))
- bound_width = width * world.icon_size
- bound_height = world.icon_size
- else
- bound_width = world.icon_size
- bound_height = width * world.icon_size
-
/obj/machinery/door/proc/update_freelook_sight()
// Glass door glass = 1
// don't check then?
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 0f397a51dbb..ee75775f151 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -16,16 +16,13 @@
density = FALSE
heat_proof = TRUE
glass = TRUE
- power_channel = ENVIRON
closed_layer = 3.11
auto_close_time = 50
-
+ assemblytype = /obj/structure/firelock_frame
var/can_force = TRUE
var/force_open_time = 300
var/can_crush = TRUE
- var/assembly_type = /obj/structure/firelock_frame
var/nextstate = null
- var/welded = FALSE
var/boltslocked = TRUE
var/can_deconstruct = TRUE
var/active_alarm = FALSE
@@ -39,9 +36,9 @@
/obj/machinery/door/firedoor/ex_act(severity)
switch(severity)
- if(1.0)
+ if(1)
qdel(src)
- if(2.0)
+ if(2)
if(prob(50))
qdel(src)
@@ -53,7 +50,7 @@
stat |= NOPOWER
update_icon()
-/obj/machinery/door/firedoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params)
+/obj/machinery/door/firedoor/attackby(obj/item/weapon/C, mob/user, params)
add_fingerprint(user)
if(operating)
@@ -70,7 +67,7 @@
return
if(welded)
- if(istype(C, /obj/item/weapon/wrench))
+ if(iswrench(C))
if(boltslocked)
to_chat(user, "There are screws locking the bolts in place!")
return
@@ -84,7 +81,7 @@
"You undo [src]'s floor bolts.")
deconstruct(TRUE)
return
- else if(istype(C, /obj/item/weapon/screwdriver))
+ else if(isscrewdriver(C))
user.visible_message("[user] [boltslocked ? "unlocks" : "locks"] [src]'s bolts...", \
"You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts...")
playsound(get_turf(src), C.usesound, 50, 1)
@@ -94,7 +91,7 @@
to_chat(user, "\The [src] is welded solid!")
return
- if(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/weapon/twohanded/fireaxe))
+ if(iscrowbar(C) || istype(C, /obj/item/weapon/twohanded/fireaxe))
if(istype(C, /obj/item/weapon/twohanded/fireaxe))
var/obj/item/weapon/twohanded/fireaxe/F = C
if(!F.wielded)
@@ -210,7 +207,7 @@
/obj/machinery/door/firedoor/deconstruct(disassembled = TRUE)
if(can_deconstruct)
- var/obj/structure/firelock_frame/F = new assembly_type(get_turf(src))
+ var/obj/structure/firelock_frame/F = new assemblytype(get_turf(src))
if(disassembled)
F.constructionStep = CONSTRUCTION_PANEL_OPEN
else
@@ -231,7 +228,7 @@
else
return 1
-/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover as mob|obj, turf/target)
+/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
@@ -250,12 +247,12 @@
icon = 'icons/obj/doors/Doorfire.dmi'
glass = FALSE
opacity = 1
- assembly_type = /obj/structure/firelock_frame/heavy
+ assemblytype = /obj/structure/firelock_frame/heavy
can_force = FALSE
/obj/machinery/door/firedoor/heavy/ex_act(severity)
switch(severity)
- if(1.0)
+ if(1)
qdel(src)
/obj/item/weapon/firelock_electronics
@@ -304,7 +301,7 @@
/obj/structure/firelock_frame/attackby(obj/item/weapon/C, mob/user)
switch(constructionStep)
if(CONSTRUCTION_PANEL_OPEN)
- if(istype(C, /obj/item/weapon/crowbar))
+ if(iscrowbar(C))
playsound(get_turf(src), C.usesound, 50, 1)
user.visible_message("[user] starts prying something out from [src]...", \
"You begin prying out the wire cover...")
@@ -318,7 +315,7 @@
constructionStep = CONSTRUCTION_WIRES_EXPOSED
update_icon()
return
- if(istype(C, /obj/item/weapon/wrench))
+ if(iswrench(C))
if(locate(/obj/machinery/door/firedoor) in get_turf(src))
to_chat(user, "There's already a firelock there.")
return
@@ -360,7 +357,7 @@
return
if(CONSTRUCTION_WIRES_EXPOSED)
- if(istype(C, /obj/item/weapon/wirecutters))
+ if(iswirecutter(C))
playsound(get_turf(src), C.usesound, 50, 1)
user.visible_message("[user] starts cutting the wires from [src]...", \
"You begin removing [src]'s wires...")
@@ -375,7 +372,7 @@
constructionStep = CONSTRUCTION_GUTTED
update_icon()
return
- if(istype(C, /obj/item/weapon/weldingtool))
+ if(iswelder(C))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(1, user))
playsound(get_turf(src), C.usesound, 50, 1)
@@ -392,7 +389,7 @@
update_icon()
return
if(CONSTRUCTION_GUTTED)
- if(istype(C, /obj/item/weapon/crowbar))
+ if(iscrowbar(C))
user.visible_message("[user] begins removing the circuit board from [src]...", \
"You begin prying out the circuit board from [src]...")
playsound(get_turf(src), C.usesound, 50, 1)
@@ -407,7 +404,7 @@
constructionStep = CONSTRUCTION_NOCIRCUIT
update_icon()
return
- if(istype(C, /obj/item/stack/cable_coil))
+ if(iscoil(C))
var/obj/item/stack/cable_coil/B = C
if(B.get_amount() < 5)
to_chat(user, "You need more wires to add wiring to [src].")
@@ -426,7 +423,7 @@
update_icon()
return
if(CONSTRUCTION_NOCIRCUIT)
- if(istype(C, /obj/item/weapon/weldingtool))
+ if(iswelder(C))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(1,user))
playsound(get_turf(src), W.usesound, 50, 1)
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
deleted file mode 100644
index aa2b5b479a4..00000000000
--- a/code/game/machinery/doors/multi_tile.dm
+++ /dev/null
@@ -1,11 +0,0 @@
-//Terribly sorry for the code doubling, but things go derpy otherwise.
-/obj/machinery/door/airlock/multi_tile
- width = 2
-
-/obj/machinery/door/airlock/multi_tile/glass
- name = "Glass Airlock"
- icon = 'icons/obj/doors/Door2x1glass.dmi'
- opacity = 0
- glass = 1
- assembly_type = "obj/structure/door_assembly/multi_tile"
-
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index f8ea575dce8..7e483c3bfc5 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -1,5 +1,5 @@
/obj/machinery/door/poddoor
- name = "Podlock"
+ name = "blast door"
desc = "That looks like it doesn't open easily."
icon = 'icons/obj/doors/rapid_pdoor.dmi'
icon_state = "pdoor1"
@@ -22,14 +22,14 @@
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
/obj/machinery/door/poddoor/ex_act(severity, target)
switch(severity)
- if(1.0)
+ if(1)
if(prob(80))
qdel(src)
else
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, src)
s.start()
- if(2.0)
+ if(2)
if(prob(20))
qdel(src)
else
@@ -37,24 +37,24 @@
s.set_up(2, 1, src)
s.start()
- if(3.0)
+ if(3)
if(prob(80))
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(2, 1, src)
s.start()
-/obj/machinery/door/poddoor/attackby(obj/item/weapon/C as obj, mob/user as mob, params)
- src.add_fingerprint(user)
- if(!( istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) ))
+/obj/machinery/door/poddoor/attackby(obj/item/weapon/C, mob/user, params)
+ add_fingerprint(user)
+ if(!(iscrowbar(C) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1)))
return
- if((src.density && (stat & NOPOWER) && !operating))
- spawn( 0 )
+ if((density && (stat & NOPOWER) && !operating))
+ spawn(0)
operating = 1
flick("pdoorc0", src)
- src.icon_state = "pdoor0"
- src.set_opacity(0)
+ icon_state = "pdoor0"
+ set_opacity(0)
sleep(15)
- src.density = 0
+ density = 0
operating = 0
return
return
@@ -67,10 +67,10 @@
if(!operating) //in case of emag
operating = 1
flick("pdoorc0", src)
- src.icon_state = "pdoor0"
- src.set_opacity(0)
+ icon_state = "pdoor0"
+ set_opacity(0)
sleep(5)
- src.density = 0
+ density = 0
sleep(5)
air_update_turf(1)
update_freelook_sight()
@@ -87,20 +87,20 @@
return
operating = 1
flick("pdoorc1", src)
- src.icon_state = "pdoor1"
- src.set_opacity(initial(opacity))
+ icon_state = "pdoor1"
+ set_opacity(initial(opacity))
air_update_turf(1)
update_freelook_sight()
sleep(5)
crush()
- src.density = 1
+ density = 1
sleep(5)
operating = 0
return
/obj/machinery/door/poddoor/multi_tile // Whoever wrote the old code for multi-tile spesspod doors needs to burn in hell.
- name = "Large Pod Door"
+ name = "large pod door"
/obj/machinery/door/poddoor/multi_tile/four_tile_ver/
icon = 'icons/obj/doors/1x4blast_vert.dmi'
diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm
index 08f67863760..059c6268005 100644
--- a/code/game/machinery/doors/shutters.dm
+++ b/code/game/machinery/doors/shutters.dm
@@ -1,8 +1,8 @@
/obj/machinery/door/poddoor/shutters
- name = "Shutters"
+ name = "shutters"
+ desc = "Heavy duty metal shutters that opens mechanically."
icon = 'icons/obj/doors/rapid_pdoor.dmi'
icon_state = "shutter1"
- power_channel = ENVIRON
/obj/machinery/door/poddoor/shutters/New()
..()
@@ -13,9 +13,9 @@
density = 0
opacity = 0
-/obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C as obj, mob/user as mob, params)
+/obj/machinery/door/poddoor/shutters/attackby(obj/item/weapon/C, mob/user, params)
add_fingerprint(user)
- if(!(istype(C, /obj/item/weapon/crowbar) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1) ))
+ if(!(iscrowbar(C) || (istype(C, /obj/item/weapon/twohanded/fireaxe) && C:wielded == 1)))
return
if(density && (stat & NOPOWER) && !operating)
operating = 1
diff --git a/code/game/machinery/doors/spacepod.dm b/code/game/machinery/doors/spacepod.dm
index 021509a13ed..93419b588f6 100644
--- a/code/game/machinery/doors/spacepod.dm
+++ b/code/game/machinery/doors/spacepod.dm
@@ -1,11 +1,11 @@
/obj/structure/spacepoddoor
- name = "Podlock"
+ name = "podlock"
desc = "Why it no open!!!"
icon = 'icons/effects/beam.dmi'
icon_state = "n_beam"
- var/id = 1.0
density = 0
anchored = 1
+ var/id = 1.0
/obj/structure/spacepoddoor/initialize()
..()
diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm
index a8236f0817c..76caba78cc6 100644
--- a/code/game/machinery/doors/unpowered.dm
+++ b/code/game/machinery/doors/unpowered.dm
@@ -1,24 +1,20 @@
/obj/machinery/door/unpowered
autoclose = 0
- var/locked = 0
explosion_block = 1
+ var/locked = 0
/obj/machinery/door/unpowered/Bumped(atom/AM)
if(locked)
return
..()
-
/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/card/emag) || istype(I, /obj/item/weapon/melee/energy/blade))
+ if(istype(I, /obj/item/weapon/card/emag) || istype(I, /obj/item/weapon/melee/energy/blade))
return
- if(locked)
+ if(locked)
return
return ..()
/obj/machinery/door/unpowered/shuttle
icon = 'icons/turf/shuttle.dmi'
- name = "door"
icon_state = "door1"
- opacity = 1
- density = 1
\ No newline at end of file
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 36a1045894d..a45c19aff29 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -3,12 +3,12 @@
desc = "A strong door."
icon = 'icons/obj/doors/windoor.dmi'
icon_state = "left"
- var/base_state = "left"
- var/health = 150.0 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file
visible = 0.0
flags = ON_BORDER
opacity = 0
var/obj/item/weapon/airlock_electronics/electronics = null
+ var/base_state = "left"
+ var/health = 150.0 //If you change this, consider changing ../door/window/brigdoor/ health at the bottom of this .dm file
/obj/machinery/door/window/New()
..()
@@ -28,7 +28,6 @@
QDEL_NULL(electronics)
return ..()
-
/obj/machinery/door/window/proc/open_and_close()
open()
if(check_access(null))
@@ -37,7 +36,7 @@
sleep(20)
close()
-/obj/machinery/door/window/Bumped(atom/movable/AM as mob|obj)
+/obj/machinery/door/window/Bumped(atom/movable/AM)
if(operating || !density)
return
if(!ismob(AM))
@@ -55,8 +54,8 @@
bumpopen(M)
return
-/obj/machinery/door/window/bumpopen(mob/user as mob)
- if( operating || !density )
+/obj/machinery/door/window/bumpopen(mob/user)
+ if(operating || !density)
return
add_fingerprint(user)
if(!requiresID())
@@ -76,17 +75,17 @@
else
return 1
-/obj/machinery/door/window/CanAtmosPass(var/turf/T)
+/obj/machinery/door/window/CanAtmosPass(turf/T)
if(get_dir(loc, T) == dir)
return !density
else
return 1
//used in the AStar algorithm to determinate if the turf the door is on is passable
-/obj/machinery/door/window/CanAStarPass(var/obj/item/weapon/card/id/ID, var/to_dir)
+/obj/machinery/door/window/CanAStarPass(obj/item/weapon/card/id/ID, to_dir)
return !density || (dir != to_dir) || (check_access(ID) && !(stat & NOPOWER))
-/obj/machinery/door/window/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
+/obj/machinery/door/window/CheckExit(atom/movable/mover, turf/target)
if(istype(mover) && mover.checkpass(PASSGLASS))
return 1
if(get_dir(loc, target) == dir)
@@ -94,7 +93,7 @@
else
return 1
-/obj/machinery/door/window/open(var/forced=0)
+/obj/machinery/door/window/open(forced=0)
if(operating) //doors can still open when emag-disabled
return 0
if(!ticker)
@@ -121,7 +120,7 @@
operating = 0
return 1
-/obj/machinery/door/window/close(var/forced=0)
+/obj/machinery/door/window/close(forced=0)
if(operating)
return 0
if(!forced)
@@ -145,7 +144,7 @@
operating = 0
return 1
-/obj/machinery/door/window/proc/take_damage(var/damage)
+/obj/machinery/door/window/proc/take_damage(damage)
health = max(0, health - damage)
if(health <= 0)
var/debris = list(
@@ -160,7 +159,7 @@
qdel(src)
return
-/obj/machinery/door/window/bullet_act(var/obj/item/projectile/Proj)
+/obj/machinery/door/window/bullet_act(obj/item/projectile/Proj)
if(Proj.damage)
if((Proj.damage_type == BRUTE || Proj.damage_type == BURN))
take_damage(round(Proj.damage / 2))
@@ -193,7 +192,7 @@
if(user.can_advanced_admin_interact())
return attack_hand(user)
-/obj/machinery/door/window/proc/attack_generic(mob/user as mob, damage = 0)
+/obj/machinery/door/window/proc/attack_generic(mob/user, damage = 0)
if(operating)
return
user.changeNext_move(CLICK_CD_MELEE)
@@ -203,24 +202,24 @@
"[user] smashes against the [name].")
take_damage(damage)
-/obj/machinery/door/window/attack_alien(mob/living/user as mob)
+/obj/machinery/door/window/attack_alien(mob/living/user)
if(islarva(user))
return
attack_generic(user, 25)
-/obj/machinery/door/window/attack_animal(mob/living/user as mob)
+/obj/machinery/door/window/attack_animal(mob/living/user)
if(!isanimal(user))
return
var/mob/living/simple_animal/M = user
if(M.melee_damage_upper > 0 && (M.melee_damage_type == BRUTE || M.melee_damage_type == BURN))
attack_generic(M, M.melee_damage_upper)
-/obj/machinery/door/window/attack_slime(mob/living/carbon/slime/user as mob)
+/obj/machinery/door/window/attack_slime(mob/living/carbon/slime/user)
if(!user.is_adult)
return
attack_generic(user, 25)
-/obj/machinery/door/window/attack_hand(mob/user as mob)
+/obj/machinery/door/window/attack_hand(mob/user)
return attackby(user, user)
/obj/machinery/door/window/emag_act(mob/user, obj/weapon)
@@ -245,7 +244,7 @@
emagged = 1
return 1
-/obj/machinery/door/window/attackby(obj/item/weapon/I as obj, mob/living/user as mob, params)
+/obj/machinery/door/window/attackby(obj/item/weapon/I, mob/living/user, params)
//If it's in the process of opening/closing, ignore the click
if(operating)
@@ -258,16 +257,16 @@
emag_act(user,I)
return 1
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(isscrewdriver(I))
if(density || operating)
to_chat(user, "You need to open the door to access the maintenance panel.")
return
playsound(loc, I.usesound, 50, 1)
- p_open = !( p_open )
+ p_open = !p_open
to_chat(user, "You [p_open ? "open":"close"] the maintenance panel of the [name].")
return
- if(istype(I, /obj/item/weapon/crowbar))
+ if(iscrowbar(I))
if(p_open && !density && !operating)
playsound(loc, I.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the [name].", \
@@ -302,7 +301,7 @@
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
- ae = new/obj/item/weapon/airlock_electronics( loc )
+ ae = new/obj/item/weapon/airlock_electronics(loc)
if(!req_access)
check_access()
if(req_access.len)
@@ -320,7 +319,7 @@
//If windoor is unpowered, crowbar, fireaxe and armblade can force it.
- if(istype(I, /obj/item/weapon/crowbar) || istype(I, /obj/item/weapon/twohanded/fireaxe))
+ if(iscrowbar(I) || istype(I, /obj/item/weapon/twohanded/fireaxe))
if(stat & NOPOWER)
if(density)
open(2)
@@ -329,10 +328,10 @@
return
//If it's a weapon, smash windoor. Unless it's an id card, agent card, ect.. then ignore it (Cards really shouldnt damage a door anyway)
- if(density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card) )
+ if(density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card))
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
- if( (I.flags&NOBLUDGEON) || !I.force )
+ if((I.flags&NOBLUDGEON) || !I.force)
return
var/aforce = I.force
playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
@@ -356,16 +355,13 @@
return
-
-
/obj/machinery/door/window/brigdoor
name = "secure door"
icon = 'icons/obj/doors/windoor.dmi'
icon_state = "leftsecure"
base_state = "leftsecure"
- var/id = null
health = 300.0 //Stronger doors for prison (regular window door health is 200)
-
+ var/id = null
/obj/machinery/door/window/northleft
dir = NORTH
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 6adc0ef4af6..f6fa4d512c4 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -68,13 +68,13 @@ var/global/list/datum/stack_recipe/metal_recipes = list(
new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1),
+ new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1),
- new /datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("multi-tile airlock assembly", /obj/structure/door_assembly/multi_tile, 4, time = 50, one_per_turf = 1, on_floor = 1),
)),
null,
@@ -126,7 +126,12 @@ var/global/list/datum/stack_recipe/plasteel_recipes = list(
new /datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50),
new /datum/stack_recipe("Surgery Table", /obj/machinery/optable, 5, time = 50, one_per_turf = 1, on_floor = 1),
new /datum/stack_recipe("Metal crate", /obj/structure/closet/crate, 10, time = 50, one_per_turf = 1),
- new /datum/stack_recipe("Mass Driver frame", /obj/machinery/mass_driver_frame, 3, time = 50, one_per_turf = 1)
+ new /datum/stack_recipe("Mass Driver frame", /obj/machinery/mass_driver_frame, 3, time = 50, one_per_turf = 1),
+ null,
+ new /datum/stack_recipe_list("airlock assemblies", list(
+ new /datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 4, time = 50, one_per_turf = 1, on_floor = 1),
+ new /datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 50, one_per_turf = 1, on_floor = 1),
+ ), 4),
)
/obj/item/stack/sheet/plasteel
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index 9142e7bb2ac..b053c48b893 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -43,7 +43,9 @@ RCD
/obj/machinery/door/airlock/glass_security = "Security (Glass)", /obj/machinery/door/airlock/glass_medical = "Medical (Glass)",
/obj/machinery/door/airlock/mining = "Mining", /obj/machinery/door/airlock/atmos = "Atmospherics",
/obj/machinery/door/airlock/research = "Research", /obj/machinery/door/airlock/glass_research = "Research (Glass)",
- /obj/machinery/door/airlock/glass_mining = "Mining (Glass)", /obj/machinery/door/airlock/glass_atmos = "Atmospherics (Glass)")
+ /obj/machinery/door/airlock/glass_mining = "Mining (Glass)", /obj/machinery/door/airlock/glass_atmos = "Atmospherics (Glass)",
+ /obj/machinery/door/airlock/science = "Science", /obj/machinery/door/airlock/glass_science = "Science (Glass)",
+ /obj/machinery/door/airlock/hatch = "Airtight Hatch", /obj/machinery/door/airlock/maintenance_hatch = "Maintenance Hatch")
/obj/item/weapon/rcd/New()
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index b8ab485512a..7292cc0b68c 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -1,19 +1,20 @@
/obj/structure/door_assembly
icon = 'icons/obj/doors/door_assembly.dmi'
-
- name = "Airlock Assembly"
+ name = "airlock assembly"
icon_state = "door_as_0"
anchored = 0
density = 1
var/state = 0
var/base_icon_state = ""
- var/base_name = "Airlock"
+ var/base_name = "airlock"
var/obj/item/weapon/airlock_electronics/electronics = null
var/airlock_type = "" //the type path of the airlock once completed
var/glass_type = "/glass"
var/glass = 0 // 0 = glass can be installed. -1 = glass can't be installed. 1 = glass is already installed. Text = mineral plating is installed instead.
var/created_name = null
var/heat_proof_finished = 0 //whether to heat-proof the finished airlock
+ var/material_type = /obj/item/stack/sheet/metal
+ var/material_amt = 4
/obj/structure/door_assembly/New()
update_state()
@@ -23,92 +24,116 @@
return ..()
/obj/structure/door_assembly/door_assembly_com
+ name = "command airlock assembly"
base_icon_state = "com"
- base_name = "Command Airlock"
+ base_name = "command airlock"
glass_type = "/glass_command"
airlock_type = "/command"
/obj/structure/door_assembly/door_assembly_sec
+ name = "security airlock assembly"
base_icon_state = "sec"
- base_name = "Security Airlock"
+ base_name = "security airlock"
glass_type = "/glass_security"
airlock_type = "/security"
/obj/structure/door_assembly/door_assembly_eng
+ name = "engineering airlock assembly"
base_icon_state = "eng"
- base_name = "Engineering Airlock"
+ base_name = "engineering airlock"
glass_type = "/glass_engineering"
airlock_type = "/engineering"
/obj/structure/door_assembly/door_assembly_min
+ name = "mining airlock assembly"
base_icon_state = "min"
- base_name = "Mining Airlock"
+ base_name = "mining airlock"
glass_type = "/glass_mining"
airlock_type = "/mining"
/obj/structure/door_assembly/door_assembly_atmo
+ name = "atmospherics airlock assembly"
base_icon_state = "atmo"
- base_name = "Atmospherics Airlock"
+ base_name = "atmospherics airlock"
glass_type = "/glass_atmos"
airlock_type = "/atmos"
/obj/structure/door_assembly/door_assembly_research
+ name = "research airlock assembly"
base_icon_state = "res"
- base_name = "Research Airlock"
+ base_name = "research airlock"
glass_type = "/glass_research"
airlock_type = "/research"
/obj/structure/door_assembly/door_assembly_science
+ name = "science airlock assembly"
base_icon_state = "sci"
- base_name = "Science Airlock"
+ base_name = "science airlock"
glass_type = "/glass_science"
airlock_type = "/science"
/obj/structure/door_assembly/door_assembly_med
+ name = "medical airlock assembly"
base_icon_state = "med"
- base_name = "Medical Airlock"
+ base_name = "medical airlock"
glass_type = "/glass_medical"
airlock_type = "/medical"
/obj/structure/door_assembly/door_assembly_mai
+ name = "maintenance airlock assembly"
base_icon_state = "mai"
- base_name = "Maintenance Airlock"
+ base_name = "maintenance airlock"
airlock_type = "/maintenance"
glass = -1
/obj/structure/door_assembly/door_assembly_ext
+ name = "external airlock assembly"
base_icon_state = "ext"
- base_name = "External Airlock"
+ base_name = "external airlock"
airlock_type = "/external"
glass = -1
/obj/structure/door_assembly/door_assembly_fre
+ name = "freezer airlock assembly"
base_icon_state = "fre"
- base_name = "Freezer Airlock"
+ base_name = "freezer airlock"
airlock_type = "/freezer"
glass = -1
/obj/structure/door_assembly/door_assembly_hatch
+ name = "airtight hatch assembly"
base_icon_state = "hatch"
- base_name = "Airtight Hatch"
+ base_name = "airtight hatch"
airlock_type = "/hatch"
glass = -1
/obj/structure/door_assembly/door_assembly_mhatch
+ name = "maintenance hatch assembly"
base_icon_state = "mhatch"
- base_name = "Maintenance Hatch"
+ base_name = "maintenance hatch"
airlock_type = "/maintenance_hatch"
glass = -1
-/obj/structure/door_assembly/door_assembly_highsecurity // Borrowing this until WJohnston makes sprites for the assembly
+/obj/structure/door_assembly/door_assembly_highsecurity
+ name = "high security airlock assembly"
base_icon_state = "highsec"
- base_name = "High Security Airlock"
+ base_name = "high security airlock"
airlock_type = "/highsecurity"
glass = -1
+ material_type = /obj/item/stack/sheet/plasteel
+
+/obj/structure/door_assembly/door_assembly_vault
+ name = "vault door assembly"
+ base_icon_state = "vault"
+ base_name = "vault door"
+ airlock_type = "/vault"
+ glass = -1
+ material_type = /obj/item/stack/sheet/plasteel
/obj/structure/door_assembly/door_assembly_shuttle
+ name = "shuttle airlock assembly"
base_icon_state = "shuttle"
- base_name = "Shuttle Airlock"
+ base_name = "shuttle airlock"
airlock_type = "/shuttle"
glass = -1
@@ -152,31 +177,40 @@
airlock_type = "/cult/runed"
glass = -1
-/obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob, params)
+/obj/structure/door_assembly/door_assembly_centcom
+ base_icon_state = "ele"
+ airlock_type = "/centcom"
+ glass = -1
+
+/obj/structure/door_assembly/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/pen))
- var/t = copytext(stripped_input(user, "Enter the name for the door.", src.name, src.created_name),1,MAX_NAME_LEN)
- if(!t) return
- if(!in_range(src, usr) && src.loc != usr) return
+ var/t = copytext(stripped_input(user, "Enter the name for the door.", name, created_name),1,MAX_NAME_LEN)
+ if(!t)
+ return
+ if(!in_range(src, usr) && loc != usr)
+ return
created_name = t
return
- if(istype(W, /obj/item/weapon/weldingtool) && ( (istext(glass)) || (glass == 1) || (!anchored) ))
+ if(iswelder(W) && ((istext(glass)) || (glass == 1) || !anchored ))
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
- playsound(src.loc, WT.usesound, 50, 1)
+ playsound(loc, WT.usesound, 50, 1)
if(istext(glass))
- user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly.")
+ user.visible_message("[user] welds the [glass] plating off the airlock assembly.", "You start to weld the [glass] plating off the airlock assembly...")
if(do_after(user, 40 * WT.toolspeed, target = src))
- if(!src || !WT.isOn()) return
- to_chat(user, "You welded the [glass] plating off!")
+ if(!src || !WT.isOn())
+ return
+ to_chat(user, "You weld the [glass] plating off.")
var/M = text2path("/obj/item/stack/sheet/mineral/[glass]")
- new M(src.loc, 2)
+ new M(loc, 2)
glass = 0
else if(glass == 1)
- user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly.")
+ user.visible_message("[user] welds the glass panel out of the airlock assembly.", "You start to weld the glass panel out of the airlock assembly...")
if(do_after(user, 40 * WT.toolspeed, target = src))
- if(!src || !WT.isOn()) return
- to_chat(user, "You welded the glass panel out!")
+ if(!src || !WT.isOn())
+ return
+ to_chat(user, "You weld the glass panel out.")
if(heat_proof_finished)
new /obj/item/stack/sheet/rglass(get_turf(src))
heat_proof_finished = 0
@@ -184,87 +218,91 @@
new /obj/item/stack/sheet/glass(get_turf(src))
glass = 0
else if(!anchored)
- user.visible_message("[user] disassembles the airlock assembly.", "You start to disassemble the airlock assembly.")
+ user.visible_message("[user] disassembles the airlock assembly.", "You start to disassemble the airlock assembly...")
if(do_after(user, 40 * WT.toolspeed, target = src))
- if(!src || !WT.isOn()) return
- to_chat(user, "You dissasembled the airlock assembly!")
- new /obj/item/stack/sheet/metal(src.loc, 4)
+ if(!src || !WT.isOn())
+ return
+ to_chat(user, "You disassemble the airlock assembly.")
+ new material_type(loc, material_amt)
qdel(src)
else
to_chat(user, "You need more welding fuel.")
return
- else if(istype(W, /obj/item/weapon/wrench) && state == 0)
- playsound(src.loc, W.usesound, 100, 1)
+ else if(iswrench(W) && state == 0)
+ playsound(loc, W.usesound, 100, 1)
if(anchored)
- user.visible_message("[user] unsecures the airlock assembly from the floor.", "You start to unsecure the airlock assembly from the floor.")
+ user.visible_message("[user] unsecures the airlock assembly from the floor.", "You start to unsecure the airlock assembly from the floor...")
else
- user.visible_message("[user] secures the airlock assembly to the floor.", "You start to secure the airlock assembly to the floor.")
+ user.visible_message("[user] secures the airlock assembly to the floor.", "You start to secure the airlock assembly to the floor...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You [anchored ? "un" : ""]secured the airlock assembly!")
+ if(!src)
+ return
+ to_chat(user, "You [anchored ? "un" : ""]secure the airlock assembly.")
anchored = !anchored
- else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored )
+ else if(iscoil(W) && state == 0 && anchored)
var/obj/item/stack/cable_coil/coil = W
- user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly.")
+ user.visible_message("[user] wires the airlock assembly.", "You start to wire the airlock assembly...")
if(do_after(user, 40 * coil.toolspeed, target = src))
- if(!src) return
+ if(!src)
+ return
coil.use(1)
- src.state = 1
- to_chat(user, "You wire the Airlock!")
+ state = 1
+ to_chat(user, "You wire the airlock assembly.")
- else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 )
- playsound(src.loc, W.usesound, 100, 1)
- user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
+ else if(iswirecutter(W) && state == 1)
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You cut the airlock's wires!")
+ if(!src)
+ return
+ to_chat(user, "You cut the wires from the airlock assembly.")
if(state == 1)
- new/obj/item/stack/cable_coil(src.loc, 1)
- src.state = 0
+ new/obj/item/stack/cable_coil(loc, 1)
+ state = 0
- else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 && W:icon_state != "door_electronics_smoked")
- playsound(src.loc, W.usesound, 100, 1)
- user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
- user.drop_item()
- W.loc = src
+ else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 && W.icon_state != "door_electronics_smoked")
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You installed the airlock electronics!")
- src.state = 2
- src.name = "Near finished Airlock Assembly"
- src.electronics = W
- else
- W.loc = src.loc
+ if(!src)
+ return
+ user.drop_item()
+ W.loc = src
+ to_chat(user, "You install the airlock electronics.")
+ state = 2
+ name = "near finished airlock assembly"
+ electronics = W
- else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
- playsound(src.loc, W.usesound, 100, 1)
- user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to install electronics into the airlock assembly.")
+ else if(iscrowbar(W) && state == 2 )
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You removed the airlock electronics!")
- src.state = 1
- src.name = "Wired Airlock Assembly"
+ if(!src)
+ return
+ to_chat(user, "You remove the airlock electronics.")
+ state = 1
+ name = "wired airlock assembly"
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
- ae = new/obj/item/weapon/airlock_electronics( src.loc )
+ ae = new/obj/item/weapon/airlock_electronics(loc)
else
ae = electronics
electronics = null
- ae.loc = src.loc
+ ae.loc = loc
else if(istype(W, /obj/item/stack/sheet) && !glass)
var/obj/item/stack/sheet/S = W
if(S)
if(S.amount>=1)
if(istype(S, /obj/item/stack/sheet/rglass) || istype(S, /obj/item/stack/sheet/glass))
- playsound(src.loc, S.usesound, 100, 1)
- user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
+ playsound(loc, S.usesound, 100, 1)
+ user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly...")
if(do_after(user, 40 * S.toolspeed, target = src))
if(S.type == /obj/item/stack/sheet/rglass)
to_chat(user, "You install reinforced glass windows into the airlock assembly.")
@@ -276,20 +314,22 @@
else if(istype(S, /obj/item/stack/sheet/mineral) && S.sheettype)
var/M = S.sheettype
if(S.amount>=2)
- playsound(src.loc, S.usesound, 100, 1)
- user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly.")
+ playsound(loc, S.usesound, 100, 1)
+ user.visible_message("[user] adds [S.name] to the airlock assembly.", "You start to install [S.name] into the airlock assembly...")
if(do_after(user, 40 * S.toolspeed, target = src))
- to_chat(user, "You installed [M] plating into the airlock assembly!")
+ to_chat(user, "You install [M] plating into the airlock assembly.")
S.use(2)
glass = "[M]"
- else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
- playsound(src.loc, W.usesound, 100, 1)
- to_chat(user, "Now finishing the airlock.")
+ else if(isscrewdriver(W) && state == 2 )
+ playsound(loc, W.usesound, 100, 1)
+ user.visible_message("[user] finishes the airlock.", \
+ "You start finishing the airlock...")
if(do_after(user, 40 * W.toolspeed, target = src))
- if(!src) return
- to_chat(user, "You finish the airlock!")
+ if(!src)
+ return
+ to_chat(user, "You finish the airlock.")
var/path
if(istext(glass))
path = text2path("/obj/machinery/door/airlock/[glass]")
@@ -297,21 +337,21 @@
path = text2path("/obj/machinery/door/airlock[glass_type]")
else
path = text2path("/obj/machinery/door/airlock[airlock_type]")
- var/obj/machinery/door/airlock/door = new path(src.loc)
+ var/obj/machinery/door/airlock/door = new path(loc)
door.setDir(dir)
- door.assembly_type = type
- door.electronics = src.electronics
+ door.assemblytype = type
+ door.electronics = electronics
door.heat_proof = heat_proof_finished
- if(src.electronics.one_access)
+ if(electronics.one_access)
door.req_access = null
- door.req_one_access = src.electronics.conf_access
+ door.req_one_access = electronics.conf_access
else
- door.req_access = src.electronics.conf_access
+ door.req_access = electronics.conf_access
if(created_name)
door.name = created_name
else
door.name = "[istext(glass) ? "[glass] airlock" : base_name]"
- src.electronics.loc = door
+ electronics.loc = door
qdel(src)
else
..()
@@ -323,9 +363,9 @@
switch(state)
if(0)
if(anchored)
- name = "Secured "
+ name = "secured "
if(1)
- name = "Wired "
+ name = "wired "
if(2)
- name = "Near Finished "
- name += "[heat_proof_finished ? "Heat-Proofed " : ""][glass == 1 ? "Window " : ""][istext(glass) ? "[glass] Airlock" : base_name] Assembly"
+ name = "near finished "
+ name += "[heat_proof_finished ? "heat-proofed " : ""][glass == 1 ? "window " : ""][istext(glass) ? "[glass] airlock" : base_name] assembly"
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index e86be187329..bac0df5b7f4 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -373,9 +373,8 @@
//Door
/obj/machinery/door/airlock/survival_pod
- name = "Airlock"
icon = 'icons/obj/doors/survival.dmi'
- assembly_type = /obj/structure/door_assembly/door_assembly_pod
+ assemblytype = /obj/structure/door_assembly/door_assembly_pod
opacity = 0
glass = 1
diff --git a/icons/obj/doors/Door1.dmi b/icons/obj/doors/Door1.dmi
index d61529cc5f5..1a49846714d 100644
Binary files a/icons/obj/doors/Door1.dmi and b/icons/obj/doors/Door1.dmi differ
diff --git a/icons/obj/doors/Dooratmo.dmi b/icons/obj/doors/Dooratmo.dmi
index 3a715a64654..6f71a8668f5 100644
Binary files a/icons/obj/doors/Dooratmo.dmi and b/icons/obj/doors/Dooratmo.dmi differ
diff --git a/icons/obj/doors/Dooratmoglass.dmi b/icons/obj/doors/Dooratmoglass.dmi
index 6309298843b..9ed2b784780 100644
Binary files a/icons/obj/doors/Dooratmoglass.dmi and b/icons/obj/doors/Dooratmoglass.dmi differ
diff --git a/icons/obj/doors/Doorbananium.dmi b/icons/obj/doors/Doorbananium.dmi
index b8c0d9cd829..eb43e19972f 100644
Binary files a/icons/obj/doors/Doorbananium.dmi and b/icons/obj/doors/Doorbananium.dmi differ
diff --git a/icons/obj/doors/Doorcom.dmi b/icons/obj/doors/Doorcom.dmi
index 7f32b092666..fd0ce7e4488 100644
Binary files a/icons/obj/doors/Doorcom.dmi and b/icons/obj/doors/Doorcom.dmi differ
diff --git a/icons/obj/doors/Doorcomglass.dmi b/icons/obj/doors/Doorcomglass.dmi
index fb48dd5a4a8..f2a1f7dcda7 100644
Binary files a/icons/obj/doors/Doorcomglass.dmi and b/icons/obj/doors/Doorcomglass.dmi differ
diff --git a/icons/obj/doors/Doorcult.dmi b/icons/obj/doors/Doorcult.dmi
index f9f4aa92466..80f635bbef2 100644
Binary files a/icons/obj/doors/Doorcult.dmi and b/icons/obj/doors/Doorcult.dmi differ
diff --git a/icons/obj/doors/Doorcultruned.dmi b/icons/obj/doors/Doorcultruned.dmi
index f9f4aa92466..80f635bbef2 100644
Binary files a/icons/obj/doors/Doorcultruned.dmi and b/icons/obj/doors/Doorcultruned.dmi differ
diff --git a/icons/obj/doors/Doordiamond.dmi b/icons/obj/doors/Doordiamond.dmi
index 943e527a594..19afed88dfc 100644
Binary files a/icons/obj/doors/Doordiamond.dmi and b/icons/obj/doors/Doordiamond.dmi differ
diff --git a/icons/obj/doors/Doorele.dmi b/icons/obj/doors/Doorele.dmi
index efe31ae8740..de136c425a6 100644
Binary files a/icons/obj/doors/Doorele.dmi and b/icons/obj/doors/Doorele.dmi differ
diff --git a/icons/obj/doors/Dooreng.dmi b/icons/obj/doors/Dooreng.dmi
index 9602eb48ffa..be6f0f4c7a0 100644
Binary files a/icons/obj/doors/Dooreng.dmi and b/icons/obj/doors/Dooreng.dmi differ
diff --git a/icons/obj/doors/Doorengglass.dmi b/icons/obj/doors/Doorengglass.dmi
index 04668c155fe..89ebbefba1b 100644
Binary files a/icons/obj/doors/Doorengglass.dmi and b/icons/obj/doors/Doorengglass.dmi differ
diff --git a/icons/obj/doors/Doorfreezer.dmi b/icons/obj/doors/Doorfreezer.dmi
index 12be27d602f..b3ba56d1710 100644
Binary files a/icons/obj/doors/Doorfreezer.dmi and b/icons/obj/doors/Doorfreezer.dmi differ
diff --git a/icons/obj/doors/Doorglass.dmi b/icons/obj/doors/Doorglass.dmi
index 1292b24b04f..5ef6d128d2d 100644
Binary files a/icons/obj/doors/Doorglass.dmi and b/icons/obj/doors/Doorglass.dmi differ
diff --git a/icons/obj/doors/Doorgold.dmi b/icons/obj/doors/Doorgold.dmi
index f9d6bd4841f..a346e3dd46c 100644
Binary files a/icons/obj/doors/Doorgold.dmi and b/icons/obj/doors/Doorgold.dmi differ
diff --git a/icons/obj/doors/Doormaint.dmi b/icons/obj/doors/Doormaint.dmi
index f8b21251e8b..c117b7db3ef 100644
Binary files a/icons/obj/doors/Doormaint.dmi and b/icons/obj/doors/Doormaint.dmi differ
diff --git a/icons/obj/doors/Doormining.dmi b/icons/obj/doors/Doormining.dmi
index 63a33d391f2..cf531676bff 100644
Binary files a/icons/obj/doors/Doormining.dmi and b/icons/obj/doors/Doormining.dmi differ
diff --git a/icons/obj/doors/Doorminingglass.dmi b/icons/obj/doors/Doorminingglass.dmi
index 935d3d64d9f..ebdc59abcd1 100644
Binary files a/icons/obj/doors/Doorminingglass.dmi and b/icons/obj/doors/Doorminingglass.dmi differ
diff --git a/icons/obj/doors/Doorplasma.dmi b/icons/obj/doors/Doorplasma.dmi
index ea426a59c43..8469bbad64e 100644
Binary files a/icons/obj/doors/Doorplasma.dmi and b/icons/obj/doors/Doorplasma.dmi differ
diff --git a/icons/obj/doors/Doorsand.dmi b/icons/obj/doors/Doorsand.dmi
index 9c905d25442..6e94cd3b5b8 100644
Binary files a/icons/obj/doors/Doorsand.dmi and b/icons/obj/doors/Doorsand.dmi differ
diff --git a/icons/obj/doors/Doorsec.dmi b/icons/obj/doors/Doorsec.dmi
index b89c9a6f529..e9cf6c3ad15 100644
Binary files a/icons/obj/doors/Doorsec.dmi and b/icons/obj/doors/Doorsec.dmi differ
diff --git a/icons/obj/doors/Doorsecglass.dmi b/icons/obj/doors/Doorsecglass.dmi
index 1d6572b2835..14b6ac9f9c0 100644
Binary files a/icons/obj/doors/Doorsecglass.dmi and b/icons/obj/doors/Doorsecglass.dmi differ
diff --git a/icons/obj/doors/Doorsilver.dmi b/icons/obj/doors/Doorsilver.dmi
index fdae9d2ba06..56f9fb67210 100644
Binary files a/icons/obj/doors/Doorsilver.dmi and b/icons/obj/doors/Doorsilver.dmi differ
diff --git a/icons/obj/doors/Dooruranium.dmi b/icons/obj/doors/Dooruranium.dmi
index ca519e225b7..fecdb1bd075 100644
Binary files a/icons/obj/doors/Dooruranium.dmi and b/icons/obj/doors/Dooruranium.dmi differ
diff --git a/icons/obj/doors/door_assembly.dmi b/icons/obj/doors/door_assembly.dmi
index 232a54da317..f8c1e979ff9 100644
Binary files a/icons/obj/doors/door_assembly.dmi and b/icons/obj/doors/door_assembly.dmi differ
diff --git a/icons/obj/doors/doorint.dmi b/icons/obj/doors/doorint.dmi
index 873a872bec2..7f07816ab9f 100644
Binary files a/icons/obj/doors/doorint.dmi and b/icons/obj/doors/doorint.dmi differ
diff --git a/icons/obj/doors/doormed.dmi b/icons/obj/doors/doormed.dmi
index 077c85937ea..a228ff0bcd9 100644
Binary files a/icons/obj/doors/doormed.dmi and b/icons/obj/doors/doormed.dmi differ
diff --git a/icons/obj/doors/doormedglass.dmi b/icons/obj/doors/doormedglass.dmi
index 16f8b93f31e..9d1ae0bcde5 100644
Binary files a/icons/obj/doors/doormedglass.dmi and b/icons/obj/doors/doormedglass.dmi differ
diff --git a/icons/obj/doors/doorresearch.dmi b/icons/obj/doors/doorresearch.dmi
index b0cd9a73f00..03d92b477cb 100644
Binary files a/icons/obj/doors/doorresearch.dmi and b/icons/obj/doors/doorresearch.dmi differ
diff --git a/icons/obj/doors/doorresearchglass.dmi b/icons/obj/doors/doorresearchglass.dmi
index f1ed3b2d25f..e882ba49fc8 100644
Binary files a/icons/obj/doors/doorresearchglass.dmi and b/icons/obj/doors/doorresearchglass.dmi differ
diff --git a/icons/obj/doors/doorsci.dmi b/icons/obj/doors/doorsci.dmi
index 1c4483bbff3..e7f660398bc 100644
Binary files a/icons/obj/doors/doorsci.dmi and b/icons/obj/doors/doorsci.dmi differ
diff --git a/icons/obj/doors/doorsciglass.dmi b/icons/obj/doors/doorsciglass.dmi
index fb038af5ed5..2752994fc67 100644
Binary files a/icons/obj/doors/doorsciglass.dmi and b/icons/obj/doors/doorsciglass.dmi differ
diff --git a/icons/obj/doors/hightechsecurity.dmi b/icons/obj/doors/hightechsecurity.dmi
index 22c4de5c8ea..4cbdc4391e1 100644
Binary files a/icons/obj/doors/hightechsecurity.dmi and b/icons/obj/doors/hightechsecurity.dmi differ
diff --git a/icons/obj/doors/mineral_doors.dmi b/icons/obj/doors/mineral_doors.dmi
index f0c0ea592e6..56d5a32bc59 100644
Binary files a/icons/obj/doors/mineral_doors.dmi and b/icons/obj/doors/mineral_doors.dmi differ
diff --git a/icons/obj/doors/survival.dmi b/icons/obj/doors/survival.dmi
index fcc10adaa17..81265f049f5 100644
Binary files a/icons/obj/doors/survival.dmi and b/icons/obj/doors/survival.dmi differ
diff --git a/icons/obj/doors/vault.dmi b/icons/obj/doors/vault.dmi
index 957e4c1d661..8e6e9cb134a 100644
Binary files a/icons/obj/doors/vault.dmi and b/icons/obj/doors/vault.dmi differ
diff --git a/paradise.dme b/paradise.dme
index 99bfb2cab03..334e5326f2d 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -627,12 +627,12 @@
#include "code\game\machinery\doors\airlock.dm"
#include "code\game\machinery\doors\airlock_control.dm"
#include "code\game\machinery\doors\airlock_electronics.dm"
+#include "code\game\machinery\doors\airlock_types.dm"
#include "code\game\machinery\doors\alarmlock.dm"
#include "code\game\machinery\doors\brigdoors.dm"
#include "code\game\machinery\doors\checkForMultipleDoors.dm"
#include "code\game\machinery\doors\door.dm"
#include "code\game\machinery\doors\firedoor.dm"
-#include "code\game\machinery\doors\multi_tile.dm"
#include "code\game\machinery\doors\poddoor.dm"
#include "code\game\machinery\doors\shutters.dm"
#include "code\game\machinery\doors\spacepod.dm"