diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 6d04a0f9c71..7392c98ec88 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -298,7 +298,15 @@ var/datum/subsystem/shuttle/SSshuttle slip.info += "
" slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS
" // And now this is actually meaningful. slip.loc = Crate - + if(istype(Crate, /obj/structure/closet/crate)) + var/obj/structure/closet/crate/CR = Crate + CR.manifest = slip + CR.update_icon() + if(istype(Crate, /obj/structure/largecrate)) + var/obj/structure/largecrate/LC = Crate + LC.manifest = slip + LC.update_icon() + return Crate /datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index f3b11af3cbf..040ce4dcf7e 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -10,16 +10,21 @@ var/rigged = 0 var/sound_effect_open = 'sound/machines/click.ogg' var/sound_effect_close = 'sound/machines/click.ogg' - + var/obj/item/weapon/paper/manifest/manifest + /obj/structure/closet/crate/New() ..() update_icon() + /obj/structure/closet/crate/update_icon() + overlays.Cut() if(opened) icon_state = "[icon_crate]open" else icon_state = icon_crate + if(manifest) + overlays += "manifest" /obj/structure/closet/crate/internals desc = "A internals crate." @@ -143,12 +148,13 @@ name = "secure hydroponics crate" icon_crate = "hydrosecurecrate" icon_state = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/New() + +/obj/structure/closet/crate/secure/update_icon() ..() - overlays.Cut() if(locked) overlays += redlight + else if(broken) + overlays += emag else overlays += greenlight @@ -188,7 +194,19 @@ AM.loc = src return 1 +/obj/structure/closet/crate/proc/tear_manifest(mob/user as mob) + 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 + overlays-="manifest" + /obj/structure/closet/crate/attack_hand(mob/user as mob) + if(manifest) + tear_manifest(user) + return if(opened) close() else @@ -204,12 +222,14 @@ return /obj/structure/closet/crate/secure/attack_hand(mob/user as mob) + if(manifest) + tear_manifest(user) + return if(locked && !broken) if (allowed(user)) user << "You unlock [src]." src.locked = 0 - overlays.Cut() - overlays += greenlight + update_icon() add_fingerprint(user) return else @@ -222,8 +242,7 @@ if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) user << "You lock \the [src]." src.locked = 1 - overlays.Cut() - overlays += redlight + update_icon() add_fingerprint(user) return @@ -231,13 +250,12 @@ /obj/structure/closet/crate/secure/emag_act(mob/user as mob) if(locked && !broken) - overlays.Cut() - overlays += emag + src.locked = 0 + src.broken = 1 + update_icon() 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 user << "You unlock \the [src]." add_fingerprint(user) @@ -287,15 +305,14 @@ if(!broken && !opened && prob(50/severity)) if(!locked) src.locked = 1 - overlays.Cut() - overlays += redlight + update_icon() else - overlays.Cut() - overlays += emag + src.locked = 0 + src.broken = 1 + update_icon() 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 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 54a1fe847c3..8e13052eaec 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/crates.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/mineral/wood(src) var/turf/T = get_turf(src) for(var/obj/O in contents) @@ -18,6 +43,7 @@ user.visible_message("[user] pries \the [src] open.", \ "You pry open \the [src].", \ "You hear splitting wood.") + playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) qdel(src) else return attack_hand(user) diff --git a/html/changelogs/Paprka-crades.yml.txt b/html/changelogs/Paprka-crades.yml.txt new file mode 100644 index 00000000000..f8cbd38a87c --- /dev/null +++ b/html/changelogs/Paprka-crades.yml.txt @@ -0,0 +1,6 @@ +author: Paprka + +delete-after: True + +changes: + - tweak: "Cargo packages are now delivered with their manifests taped to the outside. Click on them with an open hand to remove them." \ No newline at end of file diff --git a/icons/obj/crates.dmi b/icons/obj/crates.dmi index 7a1714234b0..40b9e739d62 100644 Binary files a/icons/obj/crates.dmi and b/icons/obj/crates.dmi differ