From 77636ce6965643b8e8be2058e3416e4811ff95f8 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Tue, 27 Mar 2012 05:57:51 +0100 Subject: [PATCH] TG: Fixed issue 287 , 290, 291 -Cutting/restoring cameras now leaves a print -building certain overly-abused griff items leaves prints -grenade launcher no longer shoots your face if you try to backpack it Chameleon projector movement speed is now based on temperature Added add_hiddenprint(mob) proc it's like add_fingerprint but only adds to fingerprintshidden isn't that neat? r2898 --- code/game/atom_procs.dm | 24 +++++++++++++++++++ code/game/machinery/camera.dm | 2 ++ code/game/objects/devices/chameleonproj.dm | 12 +++++++++- .../objects/items/weapons/table_rack_parts.dm | 6 +++-- code/game/objects/stacks/metal.dm | 3 ++- code/game/objects/stacks/stack.dm | 8 ++++++- 6 files changed, 50 insertions(+), 5 deletions(-) diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index c1f08944ae9..aaa17ab2c3f 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -75,6 +75,30 @@ O << text("\red [] has been hit by [] with []", src, user, W) return +/atom/proc/add_hiddenprint(mob/living/M as mob) + if(isnull(M)) return + if(isnull(M.key)) return + if (!( src.flags ) & 256) + return + if (ishuman(M)) + var/mob/living/carbon/human/H = M + if (!istype(H.dna, /datum/dna)) + return 0 + if (H.gloves) + if(src.fingerprintslast != H.key) + src.fingerprintshidden += text("\[[time_stamp()]\] (Wearing gloves). Real name: [], Key: []",H.real_name, H.key) + src.fingerprintslast = H.key + return 0 + if (!( src.fingerprints )) + if(src.fingerprintslast != H.key) + src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",H.real_name, H.key) + src.fingerprintslast = H.key + return 1 + else + if(src.fingerprintslast != M.key) + src.fingerprintshidden += text("\[[time_stamp()]\] Real name: [], Key: []",M.real_name, M.key) + src.fingerprintslast = M.key + return /atom/proc/add_fingerprint(mob/living/M as mob) if(isnull(M)) return diff --git a/code/game/machinery/camera.dm b/code/game/machinery/camera.dm index 26d6d4e72d2..ae061bb9a1b 100644 --- a/code/game/machinery/camera.dm +++ b/code/game/machinery/camera.dm @@ -359,11 +359,13 @@ O.show_message(text("\red [] has deactivated []!", user, src), 1) playsound(src.loc, 'Wirecutter.ogg', 100, 1) icon_state = "camera1" + add_hiddenprint(user) else for(var/mob/O in viewers(user, null)) O.show_message(text("\red [] has reactivated []!", user, src), 1) playsound(src.loc, 'Wirecutter.ogg', 100, 1) icon_state = "camera" + add_hiddenprint(user) // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. //I guess that doesn't matter since they can't use it anyway? diff --git a/code/game/objects/devices/chameleonproj.dm b/code/game/objects/devices/chameleonproj.dm index c08ffa32e74..0526ec5ff29 100644 --- a/code/game/objects/devices/chameleonproj.dm +++ b/code/game/objects/devices/chameleonproj.dm @@ -25,7 +25,17 @@ relaymove(var/mob/user, direction) if(can_move) can_move = 0 - spawn(10) can_move = 1 + switch(usr.bodytemperature) + if(300 to INFINITY) + spawn(10) can_move = 1 + if(295 to 300) + spawn(13) can_move = 1 + if(280 to 295) + spawn(16) can_move = 1 + if(260 to 280) + spawn(20) can_move = 1 + else + spawn(25) can_move = 1 step(src,direction) return diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 4dc1e13076c..5856e06b043 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -18,17 +18,19 @@ RACK PARTS del(src) /obj/item/weapon/table_parts/attack_self(mob/user as mob) - new /obj/structure/table( user.loc ) + var/obj/structure/table/T = new /obj/structure/table( user.loc ) + T.add_fingerprint(usr) del(src) return // WOODEN TABLE PARTS /obj/item/weapon/table_parts/wood/attackby(obj/item/weapon/W as obj, mob/user as mob) - ..() if (istype(W, /obj/item/weapon/wrench)) new /obj/item/stack/sheet/wood( src.loc ) //SN src = null del(src) + else + ..() /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) new /obj/structure/table/woodentable( user.loc ) diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm index 8cdac52daa7..a893fc96c89 100644 --- a/code/game/objects/stacks/metal.dm +++ b/code/game/objects/stacks/metal.dm @@ -50,8 +50,9 @@ FLOOR TILES usr << "\blue Assembling grille..." if (!do_after(usr, 10)) return - new /obj/structure/grille( usr.loc ) + var/obj/structure/grille/F = new /obj/structure/grille/ ( usr.loc ) usr << "\blue You assemble a grille" + F.add_fingerprint(usr) use(2) return diff --git a/code/game/objects/stacks/stack.dm b/code/game/objects/stacks/stack.dm index 4f44c828fa0..a1570492e45 100644 --- a/code/game/objects/stacks/stack.dm +++ b/code/game/objects/stacks/stack.dm @@ -20,7 +20,7 @@ /obj/item/stack/examine() set src in view(1) ..() - usr << text("There are [] []\s left on the stack.", src.amount, src.singular_name) + usr << "There are [src.amount] [src.singular_name]\s in the stack." return /obj/item/stack/proc/use(var/amount) @@ -204,6 +204,12 @@ del(oldsrc) if (istype(O,/obj/item)) usr.put_in_hand(O) + O.add_fingerprint(usr) + //BubbleWrap - so newly formed boxes are empty + if ( istype(O, /obj/item/weapon/storage) ) + for (var/obj/item/I in O) + del(I) + //BubbleWrap END if (src && usr.machine==src) //do not reopen closed window spawn( 0 ) src.interact(usr)