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