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) )