diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 24076937260..9ec64ff61c5 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -284,23 +284,23 @@
name = "Secure Armory Airlock"
hackProof = 1
aiControlDisabled = 1
-
+
/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'
-
-/obj/machinery/door/airlock/alien/bumpopen(mob/living/user as mob)
+
+/obj/machinery/door/airlock/alien/bumpopen(mob/living/user as mob)
if(istype(user,/mob/living/carbon/alien) || isrobot(user) || isAI(user))
..(user)
else
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)
if(isalien(user) || isrobot(user) || isAI(user))
- ..(C, user)
+ ..(C, user)
else
user << "You do not know how to operate this airlock's mechanism."
return
@@ -512,8 +512,8 @@ About the new airlock wires panel:
if(src.emergency)
t1 += text("Emergency Access Override is enabled. Disable?
\n", src)
else
- t1 += text("Emergency Access Override is disabled. Enable?
\n", src)
-
+ t1 += text("Emergency Access Override is disabled. Enable?
\n", src)
+
if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1))
t1 += text("Main Power Input wire is cut.
\n")
if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))
@@ -1094,28 +1094,9 @@ About the new airlock wires panel:
if(locate(/mob/living) in turf)
// playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) //THE BUZZING IT NEVER STOPS -Pete
spawn (60)
- close()
+ autoclose()
return
- for(var/turf/turf in locs)
- for(var/mob/living/M in turf)
- if(isrobot(M))
- M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- else
- M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
- M.SetStunned(5)
- M.SetWeakened(5)
- var/obj/effect/stop/S
- S = new /obj/effect/stop
- S.victim = M
- S.loc = M.loc
- spawn(20)
- del(S)
- M.emote("scream")
- var/turf/location = src.loc
- if(istype(location, /turf/simulated))
- location.add_blood(M)
-
use_power(50)
if(forced)
playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1)
@@ -1131,7 +1112,28 @@ About the new airlock wires panel:
if (W)
W.destroy()
- ..()
+ if(density)
+ return 1
+ operating = 1
+ door_animate("closing")
+ src.layer = 3.1
+ sleep(5)
+ src.density = 1
+ if(!safe)
+ crush()
+ sleep(5)
+ update_icon()
+ if(visible && !glass)
+ SetOpacity(1)
+ operating = 0
+ update_nearby_tiles()
+ if(locate(/mob/living) in get_turf(src))
+ open()
+
+ //I shall not add a check every x ticks if a door has closed over some fire.
+ var/obj/fire/fire = locate() in loc
+ if(fire)
+ del fire
return
/obj/machinery/door/airlock/proc/lock(var/forced=0)
@@ -1230,7 +1232,7 @@ About the new airlock wires panel:
return
else
return
-
+
/obj/machinery/door/airlock/CanAStarPass(var/obj/item/weapon/card/id/ID)
//Airlock is passable if it is open (!density), bot has access, and is not bolted shut)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 2aefc60be27..88d72fbf8b9 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -227,24 +227,27 @@
/obj/machinery/door/proc/open()
- if(!density) return 1
- if(operating > 0) return
- if(!ticker) return 0
+ if(!density)
+ return 1
+ if(operating > 0)
+ return
+ if(!ticker)
+ return 0
if(!operating) operating = 1
door_animate("opening")
icon_state = "door0"
src.SetOpacity(0)
- sleep(10)
- src.layer = 2.7
+ sleep(5)
src.density = 0
+ sleep(5)
+ src.layer = 2.7
explosion_resistance = 0
update_icon()
SetOpacity(0)
+ operating = 0
update_nearby_tiles()
- if(operating) operating = 0
-
if(autoclose && normalspeed)
spawn(150)
autoclose()
@@ -256,15 +259,18 @@
/obj/machinery/door/proc/close()
- if(density) return 1
- if(operating > 0) return
+ if(density)
+ return 1
+ if(operating > 0)
+ return
operating = 1
door_animate("closing")
- src.density = 1
explosion_resistance = initial(explosion_resistance)
- src.layer = 3.0
- sleep(10)
+ src.layer = 3.1
+ sleep(5)
+ src.density = 1
+ sleep(5)
update_icon()
if(visible && !glass)
SetOpacity(1) //caaaaarn!
@@ -277,6 +283,24 @@
del fire
return
+/obj/machinery/door/proc/crush()
+ for(var/mob/living/L in get_turf(src))
+ if(isalien(L)) //For xenos
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans.
+ L.emote("roar")
+ else if(ishuman(L)) //For humans
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ L.emote("scream")
+ L.Weaken(5)
+ else if(ismonkey(L)) //For monkeys
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ L.Weaken(5)
+ else //for simple_animals & borgs
+ L.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
+ var/turf/location = src.loc
+ if(istype(location, /turf/simulated)) //add_blood doesn't work for borgs/xenos, but add_blood_floor does.
+ location.add_blood(L)
+
/obj/machinery/door/proc/requiresID()
return 1
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index bad76ca8ef0..eeceaf2de18 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -14,7 +14,7 @@
/obj/machinery/door/poddoor/four_tile_ver/
name = "Large Pod Door"
icon = 'icons/obj/doors/1x4blast_vert.dmi'
-
+
/obj/machinery/door/poddoor/three_tile_ver/
name = "Large Pod Door"
icon = 'icons/obj/doors/1x3blast_vert.dmi'
@@ -51,8 +51,9 @@
flick("pdoorc0", src)
src.icon_state = "pdoor0"
src.SetOpacity(0)
- sleep(10)
+ sleep(5)
src.density = 0
+ sleep(5)
update_nearby_tiles()
if(operating == 1) //emag again
@@ -68,11 +69,13 @@
src.operating = 1
flick("pdoorc1", src)
src.icon_state = "pdoor1"
- src.density = 1
src.SetOpacity(initial(opacity))
update_nearby_tiles()
+ sleep(5)
+ crush()
+ src.density = 1
+ sleep(5)
- sleep(10)
src.operating = 0
return
@@ -153,7 +156,7 @@
spawn(150)
autoclose()
return 1
-
+
/obj/machinery/door/poddoor/three_tile_hor/close()
if (src.operating)
return
@@ -332,7 +335,7 @@
sleep(10)
src.operating = 0
- return
+ return
/obj/machinery/door/poddoor/four_tile_ver/open()
if (src.operating == 1) //doors can still open when emag-disabled
@@ -364,7 +367,7 @@
spawn(150)
autoclose()
return 1
-
+
/obj/machinery/door/poddoor/four_tile_ver/close()
if (src.operating)
return
@@ -454,7 +457,7 @@
del f2
del f3
..()
-
+
/obj/machinery/door/poddoor/three_tile_ver
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2
@@ -477,8 +480,8 @@
del f1
del f2
del f3
- ..()
-
+ ..()
+
/obj/machinery/door/poddoor/four_tile_hor
var/obj/machinery/door/poddoor/filler_object/f1
var/obj/machinery/door/poddoor/filler_object/f2