diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 430bfd56049..6fabb41cd6b 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -103,6 +103,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
var/obj/item/weapon/airlock_electronics/electronics = null
var/hasShocked = 0 //Prevents multiple shocks from happening
var/secured_wires = 0 //for mapping use
+ var/security_bolts = 0 //if 1, door bolts when broken
var/list/airlockIndexToFlag
var/list/airlockWireColorToFlag
var/list/airlockIndexToWireColor
@@ -141,6 +142,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
/obj/machinery/door/airlock/glass
name = "Glass Airlock"
icon = 'icons/obj/doors/Doorglass.dmi'
+ maxhealth = 300
opacity = 0
glass = 1
@@ -153,6 +155,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
name = "Vault"
icon = 'icons/obj/doors/vault.dmi'
opacity = 1
+ security_bolts = 1
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites.
/obj/machinery/door/airlock/freezer
@@ -321,6 +324,7 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
/obj/machinery/door/airlock/highsecurity
name = "High Tech Security Airlock"
icon = 'icons/obj/doors/hightechsecurity.dmi'
+ security_bolts = 1
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity
/*
@@ -546,7 +550,7 @@ About the new airlock wires panel:
return !(src.isWireCut(AIRLOCK_WIRE_IDSCAN) || aiDisabledIdScanner)
/obj/machinery/door/airlock/proc/isAllPowerLoss()
- if(stat & NOPOWER)
+ if(stat & (NOPOWER|BROKEN))
return 1
if(src.isWireCut(AIRLOCK_WIRE_MAIN_POWER1) || src.isWireCut(AIRLOCK_WIRE_MAIN_POWER2))
if(src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER1) || src.isWireCut(AIRLOCK_WIRE_BACKUP_POWER2))
@@ -619,10 +623,19 @@ About the new airlock wires panel:
overlays = list()
if(p_open)
overlays += image(icon, "panel_open")
+ if (!(stat & NOPOWER))
+ if(stat & BROKEN)
+ overlays += image(icon, "sparks_broken")
+ else if (health < maxhealth * 3/4)
+ overlays += image(icon, "sparks_damaged")
if(welded)
overlays += image(icon, "welded")
+ else if (health < maxhealth * 3/4 && !(stat & NOPOWER))
+ overlays += image(icon, "sparks_damaged")
else
icon_state = "door_open"
+ if((stat & BROKEN) && !(stat & NOPOWER))
+ overlays += image(icon, "sparks_open")
return
@@ -633,19 +646,24 @@ About the new airlock wires panel:
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
+ update_icon()
else
- flick("door_opening", src)
+ flick("door_opening", src)//[stat ? "_stat":]
+ update_icon()
if("closing")
if(overlays) overlays.Cut()
if(p_open)
- flick("o_door_closing", src)
+ spawn(2)
+ flick("o_door_closing", src)
+ update_icon()
else
flick("door_closing", src)
+ update_icon()
if("spark")
if(density)
flick("door_spark", src)
if("deny")
- if(density)
+ if(density && !(stat & (BROKEN|NOPOWER)))
flick("door_deny", src)
return
@@ -841,6 +859,7 @@ About the new airlock wires panel:
**/
if(src.p_open)
+
user.set_machine(src)
var/t1 = text("Access Panel
\n")
@@ -1162,7 +1181,13 @@ About the new airlock wires panel:
else
return
else if(istype(C, /obj/item/weapon/screwdriver))
- src.p_open = !( src.p_open )
+ if (src.p_open)
+ if (stat & BROKEN)
+ usr << "The airlock control panel is too damaged to be closed!"
+ else
+ src.p_open = 0
+ else
+ src.p_open = 1
src.update_icon()
else if(istype(C, /obj/item/weapon/wirecutters))
return src.attack_hand(user)
@@ -1173,7 +1198,7 @@ About the new airlock wires panel:
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(istype(C, /obj/item/weapon/crowbar) || istype(C, /obj/item/stack/rods))
var/beingcrowbarred = null
if(istype(C, /obj/item/weapon/crowbar) )
beingcrowbarred = 1 //derp, Agouri
@@ -1219,29 +1244,32 @@ About the new airlock wires panel:
del(src)
return
- else if(arePowerSystemsOn())
+ else if(arePowerSystemsOn() && !(stat & BROKEN))
user << "\blue The airlock's motors resist your efforts to force it."
else if(locked)
user << "\blue The airlock's bolts prevent it from being forced."
else if( !welded && !operating )
if(density)
- if(beingcrowbarred == 0) //being fireaxe'd
- var/obj/item/weapon/twohanded/fireaxe/F = C
- if(F:wielded)
- spawn(0) open(1)
- else
- user << "\red You need to be wielding the Fire axe to do that."
- else
- spawn(0) open(1)
+ spawn(0) open(1)
else
- if(beingcrowbarred == 0)
- var/obj/item/weapon/twohanded/fireaxe/F = C
- if(F:wielded)
- spawn(0) close(1)
- else
- user << "\red You need to be wielding the Fire axe to do that."
+ spawn(0) close(1)
+
+ else if(istype(C, /obj/item/weapon/twohanded/fireaxe) && (!arePowerSystemsOn() || (stat & BROKEN)))
+ if(locked)
+ user << "\blue The airlock's bolts prevent it from being forced."
+ else if( !welded && !operating )
+ if(density)
+ var/obj/item/weapon/twohanded/fireaxe/F = C
+ if(F:wielded)
+ spawn(0) open(1)
else
+ user << "\red You need to be wielding the Fire axe to do that."
+ else
+ var/obj/item/weapon/twohanded/fireaxe/F = C
+ if(F:wielded)
spawn(0) close(1)
+ else
+ user << "\red You need to be wielding the Fire axe to do that."
else
..()
@@ -1252,6 +1280,22 @@ About the new airlock wires panel:
ignite(is_hot(C))
..()
+/obj/machinery/door/airlock/set_broken()
+ src.p_open = 1
+ stat |= BROKEN
+ if (src.security_bolts)
+ lock()
+ for (var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message("[src.name]'s control panel bursts open, sparks spewing out!")
+
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+
+ update_icon()
+ return
+
/obj/machinery/door/airlock/open(var/forced=0)
if( operating || welded || locked )
return 0
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index ceb04ad56b2..831190fde9c 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -23,6 +23,9 @@
var/normalspeed = 1
var/heat_proof = 0 // For glass airlocks/opacity firedoors
var/air_properties_vary_with_direction = 0
+ var/maxhealth = 500
+ var/health
+ var/hitsound = 'sound/weapons/Genhit.ogg' //sound door makes when hit with a weapon
//Multi-tile doors
dir = EAST
@@ -47,6 +50,8 @@
bound_width = world.icon_size
bound_height = width * world.icon_size
+ health = maxhealth
+
update_nearby_tiles(need_rebuild=1)
return
@@ -120,6 +125,24 @@
src.open()
return
+/obj/machinery/door/bullet_act(var/obj/item/projectile/Proj)
+ if(Proj.damage)
+ take_damage(round(Proj.damage * 4))
+ ..()
+
+/obj/machinery/door/hitby(AM as mob|obj)
+
+ ..()
+ visible_message("\red [src.name] was hit by [AM].", 1)
+ var/tforce = 0
+ if(ismob(AM))
+ tforce = 40
+ else
+ tforce = AM:throwforce
+ playsound(src.loc, hitsound, 100, 1)
+ take_damage(tforce)
+ //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak
+ return
/obj/machinery/door/attack_ai(mob/user as mob)
return src.attack_hand(user)
@@ -146,22 +169,69 @@
user = null
if(!src.requiresID())
user = null
+ if(istype(I, /obj/item/stack/sheet/metal))
+ if(stat & BROKEN)
+ user << "\blue [src.name] is damaged beyond repair and must be reconstructed!"
+ return
+ if(health >= maxhealth)
+ user << "\blue Nothing to fix!"
+ return
+ var/obj/item/stack/sheet/metal/metalstack = I
+ var/health_per_sheet = 50
+ var/initialhealth = health
+ src.health = min(maxhealth, health + 100, health + (metalstack.amount * health_per_sheet))
+ user.visible_message("\The [user] patches some dents on \the [src] with \the [metalstack].")
+ metalstack.use(round((health - initialhealth)/health_per_sheet))
+ return
+
if(src.density && ((operable() && istype(I, /obj/item/weapon/card/emag)) || istype(I, /obj/item/weapon/melee/energy/blade)))
flick("door_spark", src)
sleep(6)
open()
operating = -1
return 1
- if(src.allowed(user))
+ if(src.density && istype(I, /obj/item/weapon) && !istype(I, /obj/item/weapon/card))
+ var/obj/item/weapon/W = I
+ if(W.damtype == BRUTE || W.damtype == BURN)
+ if(W.force <4)
+ user.visible_message("\red \The [user] hits \the [src] with \the [W] with no visible effect." )
+ else
+ user.visible_message("\red \The [user] forcefully slams \the [src] with \the [W]!" )
+ playsound(src.loc, hitsound, 100, 1)
+ take_damage(W.force)
+ return
+ if(src.allowed(user) && operable())
if(src.density)
open()
else
close()
return
- if(src.density)
+ if(src.density && !(stat & (NOPOWER|BROKEN)))
flick("door_deny", src)
return
+/obj/machinery/door/proc/take_damage(var/damage)
+ var/initialhealth = src.health
+ src.health = max(0, src.health - damage)
+ if(src.health <= 0 && initialhealth > 0)
+ src.set_broken()
+ else if(src.health < src.maxhealth / 4 && initialhealth >= src.maxhealth / 4)
+ visible_message("\The [src] looks like it's about to break!" )
+ else if(src.health < src.maxhealth / 2 && initialhealth >= src.maxhealth / 2)
+ visible_message("\The [src] looks seriously damaged!" )
+ else if(src.health < src.maxhealth * 3/4 && initialhealth >= src.maxhealth * 3/4)
+ visible_message("\The [src] shows signs of damage!" )
+ update_icon()
+ return
+
+/obj/machinery/door/proc/set_broken()
+ stat |= BROKEN
+ for (var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message("[src.name] breaks!" )
+ update_icon()
+ return
+
/obj/machinery/door/blob_act()
if(prob(40))
@@ -187,11 +257,15 @@
if(2.0)
if(prob(25))
del(src)
+ else
+ take_damage(300)
if(3.0)
if(prob(80))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
+ else
+ take_damage(150)
return
@@ -293,7 +367,7 @@
/obj/machinery/door/proc/autoclose()
var/obj/machinery/door/airlock/A = src
- if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose)
+ if(!A.density && !A.operating && !A.locked && !A.welded && !(A.stat & (BROKEN|NOPOWER)) && A.autoclose)
close()
return
@@ -310,5 +384,9 @@
update_nearby_tiles()
+/obj/machinery/door/power_change()
+ ..()
+ update_icon()
+
/obj/machinery/door/morgue
icon = 'icons/obj/doors/doormorgue.dmi'
\ No newline at end of file
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 89c76372fe7..f185d9175a5 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -203,7 +203,7 @@
user << "\The [src] is welded solid!"
return
- if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/melee/energy/blade) || istype(C,/obj/item/weapon/twohanded/fireaxe))
+ if(istype(C, /obj/item/weapon/crowbar) || istype(C,/obj/item/weapon/melee/energy/blade) || istype(C,/obj/item/weapon/twohanded/fireaxe) || istype(C, /obj/item/stack/rods))
if(operating)
return
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 89a36e8dc03..78f8b03665a 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -4,7 +4,9 @@
icon = 'icons/obj/doors/windoor.dmi'
icon_state = "left"
var/base_state = "left"
- var/health = 150.0 //If you change this, consiter changing ../door/window/brigdoor/ health at the bottom of this .dm file
+ hitsound = 'sound/effects/Glasshit.ogg'
+ maxhealth = 150 //If you change this, consiter changing ../door/window/brigdoor/ health at the bottom of this .dm file
+ health
visible = 0.0
use_power = 0
flags = ON_BORDER
@@ -122,7 +124,7 @@
src.operating = 0
return 1
-/obj/machinery/door/window/proc/take_damage(var/damage)
+/obj/machinery/door/window/take_damage(var/damage)
src.health = max(0, src.health - damage)
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
@@ -149,27 +151,6 @@
del(src)
return
-/obj/machinery/door/window/bullet_act(var/obj/item/projectile/Proj)
- if(Proj.damage)
- take_damage(round(Proj.damage / 2))
- ..()
-
-//When an object is thrown at the window
-/obj/machinery/door/window/hitby(AM as mob|obj)
-
- ..()
- visible_message("\red The glass door was hit by [AM].", 1)
- var/tforce = 0
- if(ismob(AM))
- tforce = 40
- else
- tforce = AM:throwforce
- playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1)
- take_damage(tforce)
- //..() //Does this really need to be here twice? The parent proc doesn't even do anything yet. - Nodrak
- return
-
-
/obj/machinery/door/window/attack_ai(mob/user as mob)
return src.attack_hand(user)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 4fb2c56d77e..1279ac52612 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -7,7 +7,8 @@
pressure_resistance = 4*ONE_ATMOSPHERE
anchored = 1.0
flags = ON_BORDER
- var/health = 14.0
+ var/maxhealth = 14.0
+ var/health
var/ini_dir = null
var/state = 2
var/reinf = 0
@@ -17,18 +18,48 @@
// var/icon/silicateIcon = null // the silicated icon
+/obj/structure/window/proc/take_damage(var/damage = 0, var/sound_effect = 1)
+ var/initialhealth = src.health
+ src.health = max(0, src.health - damage)
+ if(src.health <= 0)
+ src.shatter()
+ else
+ if(sound_effect)
+ playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
+ if(src.health < src.maxhealth / 4 && initialhealth >= src.maxhealth / 4)
+ visible_message("[src] looks like it's about to shatter!" )
+ else if(src.health < src.maxhealth / 2 && initialhealth >= src.maxhealth / 2)
+ visible_message("[src] looks seriously damaged!" )
+ else if(src.health < src.maxhealth * 3/4 && initialhealth >= src.maxhealth * 3/4)
+ visible_message("Cracks begin to appear in [src]!" )
+ return
+
+/obj/structure/window/proc/shatter(var/display_message = 1)
+ playsound(src, "shatter", 70, 1)
+ if(display_message)
+ visible_message("[src] shatters!")
+ if(dir == SOUTHWEST)
+ var/index = null
+ index = 0
+ while(index < 2)
+ new shardtype(loc)
+ if(reinf) new /obj/item/stack/rods(loc)
+ index++
+ else
+ new shardtype(loc)
+ if(reinf) new /obj/item/stack/rods(loc)
+ del(src)
+ return
+
+
/obj/structure/window/bullet_act(var/obj/item/projectile/Proj)
//Tasers and the like should not damage windows.
if(Proj.damage_type == HALLOSS)
return
- health -= Proj.damage
..()
- if(health <= 0)
- new /obj/item/weapon/shard(loc)
- new /obj/item/stack/rods(loc)
- del(src)
+ take_damage(Proj.damage * 4)
return
@@ -38,29 +69,20 @@
del(src)
return
if(2.0)
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
+ shatter(0)
return
if(3.0)
if(prob(50))
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
+ shatter(0)
return
/obj/structure/window/blob_act()
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
+ shatter()
/obj/structure/window/meteorhit()
- //world << "glass at [x],[y],[z] Mhit"
- new /obj/item/weapon/shard( loc )
- if(reinf) new /obj/item/stack/rods( loc)
- del(src)
+ shatter()
/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
@@ -92,16 +114,11 @@
var/obj/item/I = AM
tforce = I.throwforce
if(reinf) tforce *= 0.25
- playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
- health = max(0, health - tforce)
- if(health <= 7 && !reinf)
+ if(health - tforce <= 7 && !reinf)
anchored = 0
update_nearby_icons()
step(src, get_dir(AM, src))
- if(health <= 0)
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
+ take_damage(tforce)
/obj/structure/window/attack_tk(mob/user as mob)
user.visible_message("Something knocks on [src].")
@@ -111,9 +128,7 @@
if(HULK in user.mutations)
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
user.visible_message("[user] smashes through [src]!")
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
+ shatter()
else if (usr.a_intent == "hurt")
@@ -140,15 +155,8 @@
/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime
- health -= damage
- if(health <= 0)
- user.visible_message("[user] smashes through [src]!")
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
- else //for nicer text~
- user.visible_message("[user] smashes into [src]!")
- playsound(loc, 'sound/effects/Glasshit.ogg', 100, 1)
+ user.visible_message("[user] smashes into [src]!")
+ take_damage(damage)
/obj/structure/window/attack_animal(mob/user as mob)
if(!isanimal(user)) return
@@ -224,22 +232,8 @@
/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1)
if(reinf) damage *= 0.5
- health = max(0, health - damage)
- if(sound_effect)
- playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1)
- if(health <= 0)
- if(dir == SOUTHWEST)
- var/index = null
- index = 0
- while(index < 2)
- new shardtype(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- index++
- else
- new shardtype(loc)
- if(reinf) new /obj/item/stack/rods(loc)
- del(src)
- return
+ take_damage(damage)
+ return
/obj/structure/window/verb/rotate()
@@ -297,6 +291,8 @@
// if(re) reinf = re
+ health = maxhealth
+
ini_dir = dir
update_nearby_tiles(need_rebuild=1)
@@ -308,7 +304,6 @@
/obj/structure/window/Del()
density = 0
update_nearby_tiles()
- playsound(src, "shatter", 70, 1)
update_nearby_icons()
..()
@@ -385,7 +380,7 @@
basestate = "phoronwindow"
icon_state = "phoronwindow"
shardtype = /obj/item/weapon/shard/phoron
- health = 120
+ maxhealth = 120
/obj/structure/window/phoronbasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > T0C + 32000)
@@ -399,7 +394,7 @@
icon_state = "phoronrwindow"
shardtype = /obj/item/weapon/shard/phoron
reinf = 1
- health = 160
+ maxhealth = 160
/obj/structure/window/phoronreinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
@@ -409,7 +404,7 @@
desc = "It looks rather strong. Might take a few good hits to shatter it."
icon_state = "rwindow"
basestate = "rwindow"
- health = 40
+ maxhealth = 40
reinf = 1
/obj/structure/window/reinforced/tinted
@@ -424,7 +419,7 @@
desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window."
icon_state = "fwindow"
basestate = "fwindow"
- health = 30
+ maxhealth = 30
/obj/structure/window/shuttle
name = "shuttle window"
@@ -432,7 +427,7 @@
icon = 'icons/obj/podwindows.dmi'
icon_state = "window"
basestate = "window"
- health = 40
+ maxhealth = 40
reinf = 1
dir = 5
diff --git a/icons/obj/doors/Dooratmo.dmi b/icons/obj/doors/Dooratmo.dmi
index 70837f3e501..a9cc31f9d73 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 bdf034e3a94..37928a80c53 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 890a47149af..e50a4773c30 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 c87f89b968d..315f6441887 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 f622f327681..fa9599b8c3d 100644
Binary files a/icons/obj/doors/Doorcomglass.dmi and b/icons/obj/doors/Doorcomglass.dmi differ
diff --git a/icons/obj/doors/Doordiamond.dmi b/icons/obj/doors/Doordiamond.dmi
index 29a5632ad93..6504d463b9d 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 984ad3d0f1b..1e5b97d712d 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 f598326b0a7..07cb0dd9a89 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 ac1ca2fe2b8..191c0f46cee 100644
Binary files a/icons/obj/doors/Doorengglass.dmi and b/icons/obj/doors/Doorengglass.dmi differ
diff --git a/icons/obj/doors/Doorext.dmi b/icons/obj/doors/Doorext.dmi
index 55d438f0fdf..2660865175b 100644
Binary files a/icons/obj/doors/Doorext.dmi and b/icons/obj/doors/Doorext.dmi differ
diff --git a/icons/obj/doors/Doorfreezer.dmi b/icons/obj/doors/Doorfreezer.dmi
index 7add7894a09..f201659bb06 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 21437fc2553..9eb7098c62e 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 0060e4d9a7e..30e44c7610c 100644
Binary files a/icons/obj/doors/Doorgold.dmi and b/icons/obj/doors/Doorgold.dmi differ
diff --git a/icons/obj/doors/Doorhatchele.dmi b/icons/obj/doors/Doorhatchele.dmi
index 65a6feac3da..5b619964dbb 100644
Binary files a/icons/obj/doors/Doorhatchele.dmi and b/icons/obj/doors/Doorhatchele.dmi differ
diff --git a/icons/obj/doors/Doorhatchmaint2.dmi b/icons/obj/doors/Doorhatchmaint2.dmi
index ae80c7eaad5..8107f8416e5 100644
Binary files a/icons/obj/doors/Doorhatchmaint2.dmi and b/icons/obj/doors/Doorhatchmaint2.dmi differ
diff --git a/icons/obj/doors/Doormaint.dmi b/icons/obj/doors/Doormaint.dmi
index b958ad167c8..5e71c4da761 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 f08a4000d1f..08f5e9799af 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 c6ec22a142a..5894f9b8259 100644
Binary files a/icons/obj/doors/Doorminingglass.dmi and b/icons/obj/doors/Doorminingglass.dmi differ
diff --git a/icons/obj/doors/Doorphoron.dmi b/icons/obj/doors/Doorphoron.dmi
index 1c2b35f1f7b..cfc8e3cd618 100644
Binary files a/icons/obj/doors/Doorphoron.dmi and b/icons/obj/doors/Doorphoron.dmi differ
diff --git a/icons/obj/doors/Doorsand.dmi b/icons/obj/doors/Doorsand.dmi
index 5cd8c2fc346..22977d5c27b 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 b9add352ac1..e5d5ef10d43 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 03171865755..95240586409 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 c8407240f3c..13f8797e105 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 c7ff2e13c69..96944cbd004 100644
Binary files a/icons/obj/doors/Dooruranium.dmi and b/icons/obj/doors/Dooruranium.dmi differ
diff --git a/icons/obj/doors/doorint.dmi b/icons/obj/doors/doorint.dmi
index 48ad907541a..ea93570e4b7 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 e16dad099e6..06f142ef71f 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 250a82be855..fcca7729516 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 24771c4114c..a95e7b066fa 100644
Binary files a/icons/obj/doors/doorresearch.dmi and b/icons/obj/doors/doorresearch.dmi differ
diff --git a/icons/obj/doors/doorsci.dmi b/icons/obj/doors/doorsci.dmi
index 679ee78566e..88292a3df26 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 faac0c19943..f08906d7a49 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 d0e27509e12..4fb27f85064 100644
Binary files a/icons/obj/doors/hightechsecurity.dmi and b/icons/obj/doors/hightechsecurity.dmi differ
diff --git a/icons/obj/doors/vault.dmi b/icons/obj/doors/vault.dmi
index a2494ef00b2..589383b1a8d 100644
Binary files a/icons/obj/doors/vault.dmi and b/icons/obj/doors/vault.dmi differ