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