diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 9bf8bfb5e5a..59edffe4b0d 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -10,6 +10,17 @@
climbable = 1
// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //???
var/rigged = 0
+ var/obj/item/weapon/paper/manifest/manifest
+
+/obj/structure/closet/crate/New()
+ ..()
+ update_icon()
+
+/obj/structure/closet/crate/update_icon()
+ ..()
+ overlays.Cut()
+ if(manifest)
+ overlays += "manifest"
/obj/structure/closet/crate/can_open()
return 1
@@ -183,6 +194,29 @@
else
return
+/obj/structure/closet/crate/attack_hand(mob/user as mob)
+ if(manifest)
+ user << "You tear the manifest off of the crate."
+ playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
+ manifest.loc = loc
+ if(ishuman(user))
+ user.put_in_hands(manifest)
+ manifest = null
+ update_icon()
+ return
+ else
+ if(rigged && locate(/obj/item/device/radio/electropack) in src)
+ if(isliving(user))
+ var/mob/living/L = user
+ if(L.electrocute_act(17, src))
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start()
+ return
+ src.add_fingerprint(user)
+ src.toggle(user)
+ return
+
/obj/structure/closet/crate/secure
desc = "A secure crate."
name = "Secure crate"
@@ -196,13 +230,16 @@
var/broken = 0
var/locked = 1
-/obj/structure/closet/crate/secure/New()
+/obj/structure/closet/crate/secure/update_icon()
..()
+ overlays.Cut()
+ if(manifest)
+ overlays += "manifest"
if(locked)
- overlays.Cut()
overlays += redlight
+ else if(broken)
+ overlays += emag
else
- overlays.Cut()
overlays += greenlight
/obj/structure/closet/crate/secure/can_open()
@@ -220,8 +257,7 @@
for(var/mob/O in viewers(user, 3))
if((O.client && !( O.blinded )))
O << "The crate has been [locked ? null : "un"]locked by [user]."
- overlays.Cut()
- overlays += locked ? redlight : greenlight
+ update_icon()
else
user << "Access Denied"
@@ -240,23 +276,31 @@
usr << "This mob type can't use this verb."
/obj/structure/closet/crate/secure/attack_hand(mob/user as mob)
- src.add_fingerprint(user)
+ if(manifest)
+ user << "You tear the manifest off of the crate."
+ playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
+ manifest.loc = loc
+ if(ishuman(user))
+ user.put_in_hands(manifest)
+ manifest = null
+ update_icon()
+ return
if(locked)
src.togglelock(user)
else
src.toggle(user)
+
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(is_type_in_list(W, list(/obj/item/stack/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters)))
return ..()
if(locked && (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)))
- overlays.Cut()
- overlays += emag
overlays += sparks
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
playsound(src.loc, "sparks", 60, 1)
src.locked = 0
src.broken = 1
+ update_icon()
user << "You unlock \the [src]."
return
if(!opened)
@@ -270,15 +314,12 @@
if(!broken && !opened && prob(50/severity))
if(!locked)
src.locked = 1
- overlays.Cut()
- overlays += redlight
else
- overlays.Cut()
- overlays += emag
overlays += sparks
spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface*
playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1)
src.locked = 0
+ update_icon()
if(!opened && prob(20/severity))
if(!locked)
open()
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 3668a530ed6..3d50826e03a 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -4,13 +4,38 @@
icon = 'icons/obj/storage.dmi'
icon_state = "densecrate"
density = 1
+ var/obj/item/weapon/paper/manifest/manifest
+
+/obj/structure/largecrate/New()
+ ..()
+ update_icon()
+
+/obj/structure/largecrate/update_icon()
+ ..()
+ overlays.Cut()
+ if(manifest)
+ overlays += "manifest"
/obj/structure/largecrate/attack_hand(mob/user as mob)
- user << "You need a crowbar to pry this open!"
- return
+ if(manifest)
+ user << "You tear the manifest off of the crate."
+ playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1)
+ manifest.loc = loc
+ if(ishuman(user))
+ user.put_in_hands(manifest)
+ manifest = null
+ update_icon()
+ return
+ else
+ user << "You need a crowbar to pry this open!"
+ return
/obj/structure/largecrate/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/weapon/crowbar))
+ if(manifest)
+ manifest.loc = loc
+ manifest = null
+ update_icon()
new /obj/item/stack/sheet/wood(src)
var/turf/T = get_turf(src)
for(var/obj/O in contents)
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index e251f9a5777..808d333a3a1 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -290,8 +290,16 @@ var/list/mechtoys = list(
//manifest finalisation
slip.info += "
"
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS