From c82b90e24d4263d62706163959d86441046b1237 Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Wed, 30 May 2012 13:24:52 -0700 Subject: [PATCH] Some comments, tweaks, and improvements to detective work, evidence bags, and packages. --- code/WorkInProgress/SkyMarshal/portalathe.dm | 2 +- code/modules/DetectiveWork/detective_work.dm | 27 ++-- code/modules/DetectiveWork/evidence.dm | 49 ++++--- code/modules/recycling/sortingmachinery.dm | 144 ++++++++++++------- icons/obj/storage.dmi | Bin 51760 -> 51667 bytes 5 files changed, 139 insertions(+), 83 deletions(-) diff --git a/code/WorkInProgress/SkyMarshal/portalathe.dm b/code/WorkInProgress/SkyMarshal/portalathe.dm index 083ce09a192..9fdc0e757ef 100644 --- a/code/WorkInProgress/SkyMarshal/portalathe.dm +++ b/code/WorkInProgress/SkyMarshal/portalathe.dm @@ -17,5 +17,5 @@ L.status = 0 L.on = 1 L.update() - user.visible_message("[user] repairs \the [target] on the spot with their [src]!","You repair the lightbulb!") + user.visible_message("[user] repairs \the [target] on the spot with their [src]!","You repair the lightbulb!","You hear a soft whiiir-pop noise over the sound of flexing glass, followed by the soft hum of an activated [target].") return \ No newline at end of file diff --git a/code/modules/DetectiveWork/detective_work.dm b/code/modules/DetectiveWork/detective_work.dm index 55a18aa3e34..9dee00f6014 100644 --- a/code/modules/DetectiveWork/detective_work.dm +++ b/code/modules/DetectiveWork/detective_work.dm @@ -166,7 +166,7 @@ obj/machinery/computer/forensic_scanning I.loc = src else usr << "Invalid Object Rejected." - if("card") + if("card") //Processing a fingerprint card. var/mob/M = usr var/obj/item/I = M.equipped() if(!(I && istype(I,/obj/item/weapon/f_card))) @@ -186,7 +186,7 @@ obj/machinery/computer/forensic_scanning process_card() else usr << "\red Invalid Object Rejected." - if("database") + if("database") //Viewing all records in each database canclear = 1 if(href_list["delete_record"]) delete_dossier(href_list["delete_record"]) @@ -211,7 +211,7 @@ obj/machinery/computer/forensic_scanning for(var/atom in misc) var/list/data_entry = misc[atom] temp += "{[data_entry[3]]}
" - if("record") + if("record") //Viewing a record from the "files" database. canclear = 0 if(files) temp = "Criminal Evidence Database

" @@ -245,7 +245,7 @@ obj/machinery/computer/forensic_scanning else temp = "ERROR. Database not found!
" temp += "
{Return}" - if("databaseprint") + if("databaseprint") //Printing from the "files" database. if(files) var/obj/item/weapon/paper/P = new(loc) P.name = "Database File (Dossier [files.Find(href_list["identifier"])])" @@ -274,12 +274,11 @@ obj/machinery/computer/forensic_scanning var/list/blood = outputs[3] if(blood && blood.len) P.info += " Blood:
" - for(var/j = 1, j <= blood.len, j++) - var/list/templist2 = blood[j] - P.info += "      Type: [templist2[2]], DNA: [templist2[1]]
" + for(var/named in blood) + P.info += "      Type: [blood[named]], DNA: [named]
" else usr << "ERROR. Database not found!
" - if("auxiliary") + if("auxiliary") //Viewing a record from the "misc" database. canclear = 0 if(misc) temp = "Auxiliary Evidence Database

" @@ -301,7 +300,7 @@ obj/machinery/computer/forensic_scanning else temp = "ERROR. Database not found!
" temp += "
{Return}" - if("auxiliaryprint") + if("auxiliaryprint") //Printing from the "misc" database. if(misc) var/obj/item/weapon/paper/P = new(loc) var/list/outputs = misc[href_list["identifier"]] @@ -402,7 +401,7 @@ obj/machinery/computer/forensic_scanning temp = "Scan Failed: No Object" - if("print") + if("print") //Printing scan data if(scan_data) temp = "Scan Data Printed." var/obj/item/weapon/paper/P = new(loc) @@ -415,7 +414,7 @@ obj/machinery/computer/forensic_scanning scan_data = "" if("cancel") scan_process = 0 - if("add") + if("add") //Adding an object (Manually) to the database. if(scanning) add_data(scanning) else @@ -540,7 +539,7 @@ obj/machinery/computer/forensic_scanning if(master) master[1] = stringmerge(master[1],new_print) else - CRASH("Fucking hell. Something went wrong, and it tried to update a null print or something. Tell SkyMarshal") + CRASH("Fucking hell. Something went wrong, and it tried to update a null print or something. Tell SkyMarshal (and give him this call stack)") return proc/process_card() //Same as above, but for fingerprint cards @@ -768,7 +767,7 @@ proc/blood_incompatible(donor,receiver) ..() afterattack(atom/A as obj|turf|area, mob/user as mob) - if(istype(A)) + if(istype(A) && src in user) user.visible_message("[user] starts to wipe down [A] with [src]!") if(do_after(user,30)) user.visible_message("[user] finishes wiping off the [A]!") @@ -776,7 +775,7 @@ proc/blood_incompatible(donor,receiver) return examine() - if (!( usr )) + if (!usr) return usr << "That's \a [src]." usr << desc diff --git a/code/modules/DetectiveWork/evidence.dm b/code/modules/DetectiveWork/evidence.dm index 5ff551d1ada..a35a4982a2d 100644 --- a/code/modules/DetectiveWork/evidence.dm +++ b/code/modules/DetectiveWork/evidence.dm @@ -1,8 +1,6 @@ //CONTAINS: //Evidence bags and stuff /////////// -//Shamelessly ripped from Mini's old code. - /obj/item/weapon/evidencebag name = "evidence bag" desc = "An empty evidence bag." @@ -10,34 +8,43 @@ icon_state = "evidenceobj" w_class = 1 -/* buggy and stuff -/obj/item/weapon/evidencebag/attackby(obj/item/weapon/O, mob/user as mob) - return src.afterattack(O, user) -*/ - /obj/item/weapon/evidencebag/afterattack(obj/item/O, mob/user as mob) + if(!in_range(O,user)) + return + if(istype(O, /obj/item/weapon/storage) && O in user) return ..() + if(!(O && istype(O)) || O.anchored == 1) - user << "You can't put that inside the [src]!" + user << "You can't put that inside \the [src]!" return ..() - if(O in user) + + if(istype(O, /obj/item/weapon/evidencebag)) + user << "You find putting an evidence bag in another evidence bag to be slightly absurd." + return + + if(O in user && (user.l_hand != O && user.r_hand != O)) //If it is in their inventory, but not in their hands, don't grab it off of them. user << "You are wearing that." return - if(src.contents.len > 0) + + if(contents.len) user << "The [src] already has something inside it." return ..() + if(istype(O.loc,/obj/item/weapon/storage)) var/obj/item/weapon/storage/U = O.loc user.client.screen -= O U.contents.Remove(O) + if(istype(O.loc,/obj/item/clothing/suit/storage/)) var/obj/item/clothing/suit/storage/U = O.loc user.client.screen -= O U.contents.Remove(O) - user << "You put the [O] inside the [src]." + + user.visible_message("\The [user] puts \a [O] into \a [src]", "You put \the [O] inside \the [src].",\ + "You hear a rustle as someone puts something into a plastic bag.") icon_state = "evidence" - src.overlays += O + overlays += O desc = "An evidence bag containing \a [O]. [O.desc]" O.loc = src w_class = O.w_class @@ -45,17 +52,19 @@ /obj/item/weapon/evidencebag/attack_self(mob/user as mob) - if (src.contents.len > 0) - var/obj/item/I = src.contents[1] - user << "You take the [I] out of the [src]." - src.overlays -= I - I.loc = get_turf(user.loc) + if (contents.len) + var/obj/item/I = contents[1] + user.visible_message("\The [user] takes \a [I] out of \a [src]", "You take \the [I] out of \the [src].",\ + "You hear someone rustle around in a plastic bag, and remove something.") + overlays -= I + user.put_in_hands(I) w_class = 1 - src.icon_state = "evidenceobj" + icon_state = "evidenceobj" desc = "An empty evidence bag." + else - user << "[src] is empty." - src.icon_state = "evidenceobj" + user << "\The [src] is empty." + icon_state = "evidenceobj" return /obj/item/weapon/storage/box/evidence diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 21b05206db0..91b60d91753 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -19,7 +19,7 @@ proc/unwrap() if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 - wrapped.loc = (get_turf(src.loc)) + wrapped.loc = (get_turf(loc)) if(istype(wrapped, /obj/structure/closet)) var/obj/structure/closet/O = wrapped O.welded = waswelded @@ -47,7 +47,7 @@ if(istype(W, /obj/item/device/destTagger)) var/obj/item/device/destTagger/O = W user << "\blue *TAGGED*" - src.sortTag = O.currTag + sortTag = O.currTag update_icon() else if(istype(W, /obj/item/weapon/pen)) switch(alert("What would you like to alter?",,"Title","Description", "Cancel")) @@ -56,9 +56,10 @@ if(!str || !length(str)) usr << "\red Invalid text." return - for(var/mob/M in viewers()) - M << "\blue [user] labels [src] as [str]." - src.name = "[src.name] ([str])" + user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[examtext]\"",\ + "\blue You title \the [src]: \"[examtext]\"",\ + "You hear someone scribbling a note.") + name = "[name] ([str])" update_icon() if("Description") var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN) @@ -66,8 +67,9 @@ usr << "\red Invalid text." return examtext = str - for(var/mob/M in viewers()) - M << "\blue [user] labels [src] with the note: [examtext]." + user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ + "\blue You label \the [src]: \"[examtext]\"",\ + "You hear someone scribbling a note.") update_icon() return @@ -87,11 +89,29 @@ F.opened = 0 break + ex_act(severity) + switch(severity) + if(1.0) + del(src) + if(2.0) + if(prob(10)) + del(src) + else + wrapped.loc = get_turf(src) + wrapped:welded = waswelded + del(src) + return + if(3.0) + wrapped.loc = get_turf(src) + wrapped:welded = waswelded + del(src) + return + /obj/item/smallDelivery desc = "A small wrapped package." name = "small parcel" icon = 'storage.dmi' - icon_state = "deliverycrateSmall" + icon_state = "deliverycrateSmall1" var/tmp/obj/item/wrapped = null var/sortTag = null flags = FPRINT @@ -99,9 +119,8 @@ attack_self(mob/user) - if (src.wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 - src.wrapped.loc = (get_turf(src.loc)) - + if (wrapped) //sometimes items can disappear. For example, bombs. --rastaf0 + wrapped.loc = (get_turf(loc)) del(src) return @@ -116,7 +135,7 @@ if(istype(W, /obj/item/device/destTagger)) var/obj/item/device/destTagger/O = W user << "\blue *TAGGED*" - src.sortTag = O.currTag + sortTag = O.currTag update_icon() else if(istype(W, /obj/item/weapon/pen)) switch(alert("What would you like to alter?",,"Title","Description", "Cancel")) @@ -125,9 +144,10 @@ if(!str || !length(str)) usr << "\red Invalid text." return - for(var/mob/M in viewers()) - M << "\blue [user] labels [src] as [str]." - src.name = "[src.name] ([str])" + user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[examtext]\"",\ + "\blue You title \the [src]: \"[examtext]\"",\ + "You hear someone scribbling a note.") + name = "[name] ([str])" update_icon() if("Description") var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN) @@ -135,8 +155,9 @@ usr << "\red Invalid text." return examtext = str - for(var/mob/M in viewers()) - M << "\blue [user] labels [src] with the note: [examtext]." + user.visible_message("\The [user] labels \the [src] with \a [W], scribbling down: \"[examtext]\"",\ + "\blue You label \the [src]: \"[examtext]\"",\ + "You hear someone scribbling a note.") update_icon() return @@ -149,6 +170,22 @@ ..() return + ex_act(severity) + switch(severity) + if(1.0) + del(src) + if(2.0) + if(prob(40)) + del(src) + else + wrapped.loc = get_turf(src) + del(src) + return + if(3.0) + wrapped.loc = get_turf(src) + del(src) + return + /obj/item/weapon/packageWrap name = "package wrapper" icon = 'items.dmi' @@ -158,6 +195,8 @@ afterattack(var/obj/target as obj, mob/user as mob) + if(!in_range(target,user)) + return if(!(istype(target, /obj))) //this really shouldn't be necessary (but it is). -Pete return if(istype(target, /obj/structure/table) || istype(target, /obj/structure/rack) || istype(target,/obj/item/smallDelivery)) @@ -167,43 +206,54 @@ if(target in user) return - user.attack_log += text("\[[time_stamp()]\] Has used [src.name] on \ref[target]") + user.attack_log += text("\[[time_stamp()]\] Has used \a [src] on \ref[target]") if (istype(target, /obj/item)) var/obj/item/O = target - if (src.amount > 1) + if (amount > 1) var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! if(!istype(O.loc, /turf)) if(user.client) user.client.screen -= O P.wrapped = O O.loc = P - src.amount -= 1 + amount -= 1 + P.w_class = O.w_class + P.icon_state = "deliverycrateSmall[P.w_class]" + user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\ + "\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\ + "You hear someone taping paper around a small object.") else if (istype(target, /obj/structure/closet/crate)) var/obj/structure/closet/crate/O = target - if (src.amount > 3 && !O.opened) + if (amount > 3 && !O.opened) var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) P.icon_state = "deliverycrate" P.wrapped = O O.loc = P - src.amount -= 3 - else if(src.amount < 3) + amount -= 3 + user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\ + "\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\ + "You hear someone pondering a problem, using a tape measure, and taping paper around a large object.") + else if(amount < 3) user << "\blue You need more paper." else if (istype (target, /obj/structure/closet)) var/obj/structure/closet/O = target - if (src.amount > 3 && !O.opened) + if (amount > 3 && !O.opened) var/obj/structure/bigDelivery/P = new /obj/structure/bigDelivery(get_turf(O.loc)) P.wrapped = O P.waswelded = O.welded O.welded = 1 O.loc = P - src.amount -= 3 - else if(src.amount < 3) + amount -= 3 + user.visible_message("\The [user] wraps \a [target] with \a [src], producing \a [P].",\ + "\blue You wrap \the [target], leaving [amount] units of paper on your [src].",\ + "You hear someone pondering a problem, using a tape measure, and taping paper around a large object.") + else if(amount < 3) user << "\blue You need more paper." else user << "\blue The object you are trying to wrap is unsuitable for the sorting machinery!" - if (src.amount <= 0) - new /obj/item/weapon/c_tube( src.loc ) + if (amount <= 0) + new /obj/item/weapon/c_tube( loc ) del(src) return return @@ -275,15 +325,15 @@ Topic(href, href_list) usr.machine = src - src.add_fingerprint(usr) + add_fingerprint(usr) if(href_list["nextTag"]) var/n = text2num(href_list["nextTag"]) if(n > locationList.len) var/t1 = input("Which tag?","Tag") as null|text if(t1) - src.currTag = t1 + currTag = t1 else - src.currTag = locationList[n] + currTag = locationList[n] if(istype(loc,/mob)) interact(loc) else @@ -291,18 +341,15 @@ return attack(target as obj, mob/user as mob) - if (istype(target, /obj/structure/bigDelivery)) - user << "\blue *TAGGED*" - var/obj/structure/bigDelivery/O = target - O.sortTag = src.currTag - O.update_icon() - else if (istype(target, /obj/item/smallDelivery)) - user << "\blue *TAGGED*" - var/obj/item/smallDelivery/O = target - O.sortTag = src.currTag - O.update_icon() + if (istype(target, /obj/structure/bigDelivery) || istype(target, /obj/item/smallDelivery)) + user.visible_message("\The [user] tags \a [target] with \a [src].", "\blue *TAGGED*",\ + "You hear a short electronic click-shunk, like something being printed on a surface.") + target:sortTag = currTag + target:update_icon() else - user << "\blue You can only tag properly wrapped delivery packages!" + user.visible_message("\The [user] tries to tag \a [target], but their [src] refuses to work on anything but packages.",\ + "\blue Your [src] flashes: \"You can only tag properly wrapped delivery packages!\"",\ + "You hear a short click then a sad synthesized noise.") return /obj/machinery/disposal/deliveryChute @@ -311,6 +358,7 @@ density = 0 icon_state = "intake" var/currentlyFlushing = 0 + var/defaultDestination = "Disposals" interact() return @@ -322,7 +370,7 @@ else if (istype(AM, /mob)) var/mob/M = AM M.loc = src - src.flush() + flush() flush() flushing = 1 @@ -333,13 +381,13 @@ for(var/obj/structure/bigDelivery/O in src) deliveryCheck = 1 if(!O.sortTag) - O.sortTag = "Disposals" + O.sortTag = defaultDestination for(var/obj/item/smallDelivery/O in src) deliveryCheck = 1 if (!O.sortTag) - O.sortTag = "Disposals" + O.sortTag = defaultDestination if(deliveryCheck == 0) - H.destinationTag = "Disposals" + H.destinationTag = defaultDestination H.init(src) // copy the contents of disposer to holder @@ -366,11 +414,11 @@ return CanPass(atom/A, turf/T) - if(istype(A, /mob/living)) // You Shall Not Pass! + if(istype(A, /mob/living)) // You Shall Get Sucked In And Killed! var/mob/living/M = A HasEntered(M) return 0 - if(istype(A, /obj)) // You Shall Not Pass! + if(istype(A, /obj)) // You Shall Get Mailed! var/obj/M = A HasEntered(M) return 1 diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index ce38d4553de72dca8f69edb7fabeae38f87faa36..fb313fc33b50a408f5979645a5bf71a11ec7bb9f 100644 GIT binary patch delta 12358 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 H!1sRu35g|6 delta 12436 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