diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 8e2b81390c2..c37d2ecc2f3 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -226,17 +226,21 @@ What a mess.*/
screen = 1
//RECORD FUNCTIONS
if("Search Records")
- var/t1 = input("Search String: (Partial Name or ID or Fingerprints)", "Secure. records", null, null) as text
+ var/t1 = input("Search String: (Partial Name or ID or Fingerprints or Rank)", "Secure. records", null, null) as text
if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || !in_range(src, usr)))
return
Perp = new/list()
t1 = lowertext(t1)
+ var/list/components = dd_text2list(t1, " ")
+ if(components.len > 5)
+ return //Lets not let them search too greedily.
for(var/datum/data/record/R in data_core.general)
- var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"]
- if(findtext(temptext,t1))
- var/prelist = new/list(2)
- prelist[1] = R
- Perp += prelist
+ var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + " " + R.fields["rank"]
+ for(var/i = 1, i<=components.len, i++)
+ if(findtext(temptext,components[i]))
+ var/prelist = new/list(2)
+ prelist[1] = R
+ Perp += prelist
for(var/i = 1, i<=Perp.len, i+=2)
for(var/datum/data/record/E in data_core.security)
var/datum/data/record/R = Perp[i]
diff --git a/code/game/objects/items/weapons/papers_bins.dm b/code/game/objects/items/weapons/papers_bins.dm
index 9b0ff45816d..ada3c194183 100644
--- a/code/game/objects/items/weapons/papers_bins.dm
+++ b/code/game/objects/items/weapons/papers_bins.dm
@@ -122,7 +122,8 @@ CLIPBOARDS
if(istype(P, /obj/item/weapon/stamp))
if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
return
- src.infoold = src.info
+ if(!src.infoold)
+ src.infoold = src.info
src.info += text("
This paper has been stamped with the [].
", P.name)
switch(P.type)
if(/obj/item/weapon/stamp/captain)
@@ -153,6 +154,7 @@ CLIPBOARDS
if ((!in_range(src, usr) && src.loc != user && !( istype(src.loc, /obj/item/weapon/clipboard) ) && src.loc.loc != user && user.equipped() != P))
return
src.info = src.infoold
+ src.infoold = null
for(var/i, i <= stamped.len, i++)
switch(stamped[i])
if(/obj/item/weapon/stamp/captain)
diff --git a/code/game/objects/storage/coat.dm b/code/game/objects/storage/coat.dm
index 0034dbed9d0..208e62d0047 100644
--- a/code/game/objects/storage/coat.dm
+++ b/code/game/objects/storage/coat.dm
@@ -61,6 +61,8 @@
/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(W.w_class > 2 || src.loc == W )
return
+ if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
+ return
if(src.contents.len >= 2)
user << "You have nowhere to place that"
return
diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm
index 6ff6344e955..452d03da455 100644
--- a/code/game/objects/storage/storage.dm
+++ b/code/game/objects/storage/storage.dm
@@ -102,6 +102,9 @@
user << "\blue You're a robot. No."
return //Robots can't interact with storage items.
+ if(istype(W,/obj/item/weapon/evidencebag) && src.loc != user)
+ return
+
if(src.loc == W)
return //Means the item is already in the storage item