diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index c2e928783aa..1981a758eff 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -150,10 +150,14 @@
/obj/machinery/door/window/proc/take_damage(var/damage)
src.health = max(0, src.health - damage)
if (src.health <= 0)
- new /obj/item/weapon/shard(src.loc)
- new /obj/item/weapon/shard(src.loc)
- new /obj/item/stack/rods(src.loc, 2)
- new /obj/item/stack/cable_coil(src.loc, 2)
+ var/debris = list(
+ new /obj/item/weapon/shard(src.loc),
+ new /obj/item/weapon/shard(src.loc),
+ new /obj/item/stack/rods(src.loc, 2),
+ new /obj/item/stack/cable_coil(src.loc, 2)
+ )
+ for(var/obj/fragment in debris)
+ transfer_fingerprints_to(fragment)
src.density = 0
qdel(src)
return
@@ -223,6 +227,8 @@
if (src.operating)
return
+ add_fingerprint(user)
+
//Emags and ninja swords? You may pass.
if (src.density && (istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)))
src.operating = -1
@@ -241,7 +247,7 @@
open()
emagged = 1
return 1
-
+
//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) || istype(I, /obj/item/weapon/melee/arm_blade) )
if(stat & NOPOWER)
@@ -260,8 +266,7 @@
if(I.damtype == BURN || I.damtype == BRUTE)
take_damage(aforce)
return
-
- src.add_fingerprint(user)
+
if (!src.requiresID())
//don't care who they are or what they have, act as if they're NOTHING
user = null
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 68497181eae..905990105ca 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -82,6 +82,7 @@
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "You begin to fasten \the [src] to the floor..."
if (do_after(user, 40))
+ add_fingerprint(user)
user.visible_message( \
"[user] fastens \the [src].", \
"You have fastened \the [src]. Now it can dispense pipes.", \
@@ -94,6 +95,7 @@
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "You begin to unfasten \the [src] from the floor..."
if (do_after(user, 20))
+ add_fingerprint(user)
user.visible_message( \
"[user] unfastens \the [src].", \
"You have unfastened \the [src]. Now it can be pulled somewhere else.", \
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 22081600947..30c0268575f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -43,6 +43,7 @@
/obj/structure/closet/secure_closet/proc/togglelock(mob/user as mob)
if(src.allowed(user))
src.locked = !src.locked
+ add_fingerprint(user)
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << "The locker has been [locked ? null : "un"]locked by [user]."
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 358c961abc2..7ffd57d51d8 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -290,6 +290,7 @@
src.locked = 0
overlays.Cut()
overlays += greenlight
+ add_fingerprint(user)
return
else
user << "[src] is locked."
@@ -303,6 +304,7 @@
src.locked = 1
overlays.Cut()
overlays += redlight
+ add_fingerprint(user)
return
else if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && locked &&!broken)
overlays.Cut()
@@ -313,6 +315,7 @@
src.locked = 0
src.broken = 1
user << "You unlock \the [src]."
+ add_fingerprint(user)
return
return ..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index ff59707bbed..630b37fac3d 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -101,14 +101,14 @@
/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob)
user.changeNext_move(8)
+ add_fingerprint(user)
if(istype(W, /obj/item/weapon/wirecutters))
if(!shock(user, 100))
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
- if(destroyed)
- new /obj/item/stack/rods(loc)
- else
- new /obj/item/stack/rods(loc)
- new /obj/item/stack/rods(loc)
+ var/obj/item/stack/rods/newrods = new(loc)
+ transfer_fingerprints_to(newrods)
+ if(!destroyed)
+ newrods.amount = 2
qdel(src)
else if((istype(W, /obj/item/weapon/screwdriver)) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
@@ -181,15 +181,16 @@
/obj/structure/grille/proc/healthcheck()
if(health <= 0)
+ var/obj/item/stack/rods/newrods = new(loc)
+ transfer_fingerprints_to(newrods)
+
if(!destroyed)
icon_state = "brokengrille"
density = 0
destroyed = 1
- new /obj/item/stack/rods(loc)
else
if(health <= -6)
- new /obj/item/stack/rods(loc)
qdel(src)
return
return
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index a2a5bf5e030..817a9a24e24 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -220,15 +220,19 @@
var/index = null
index = 0
while(index < 2)
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
+ spawnfragments()
index++
else
- new /obj/item/weapon/shard(loc)
- if(reinf) new /obj/item/stack/rods(loc)
+ spawnfragments()
qdel(src)
return
+/obj/structure/window/proc/spawnfragments()
+ var/newshard = new /obj/item/weapon/shard(loc)
+ transfer_fingerprints_to(newshard)
+ if(reinf)
+ var/newrods = new /obj/item/stack/rods(loc)
+ transfer_fingerprints_to(newrods)
/obj/structure/window/verb/rotate()
set name = "Rotate Window Counter-Clockwise"
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 4fd11515506..79ac361062b 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -14,10 +14,11 @@
var/hardness = 40 //lower numbers are harder. Used to determine the probability of a hulk smashing through.
/turf/simulated/wall/proc/dismantle_wall(devastated=0, explode=0)
+ var/newgirder = null
if(istype(src,/turf/simulated/wall/r_wall))
if(!devastated)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
- new /obj/structure/girder/reinforced(src)
+ newgirder = new /obj/structure/girder/reinforced(src)
new /obj/item/stack/sheet/plasteel( src )
else
new /obj/item/stack/sheet/metal( src )
@@ -35,7 +36,7 @@
else
if(!devastated)
playsound(src, 'sound/items/Welder.ogg', 100, 1)
- new /obj/structure/girder(src)
+ newgirder = new /obj/structure/girder(src)
if (mineral == "metal")
new /obj/item/stack/sheet/metal( src )
new /obj/item/stack/sheet/metal( src )
@@ -54,6 +55,9 @@
new M( src )
new /obj/item/stack/sheet/metal( src )
+ if(newgirder)
+ transfer_fingerprints_to(newgirder)
+
for(var/obj/O in src.contents) //Eject contents!
if(istype(O,/obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
@@ -175,6 +179,8 @@
var/turf/T = user.loc //get user's location for delay checks
//DECONSTRUCTION
+ add_fingerprint(user)
+
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )