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
" - if (SP.contraband) slip.loc = null //we are out of blanks for Form #44-D Ordering Illicit Drugs. - + if(!SP.contraband) + if(istype(A, /obj/structure/closet/crate)) + var/obj/structure/closet/crate/CR = A + CR.manifest = slip + CR.update_icon() + if(istype(A, /obj/structure/largecrate)) + var/obj/structure/largecrate/LC = A + LC.manifest = slip + LC.update_icon() + else slip.loc = null //we are out of blanks for Form #44-D Ordering Illicit Drugs. shoppinglist.Cut() return diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index e74d32e907e..30c8906634e 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ