diff --git a/baystation12.dme b/baystation12.dme index 641bb0b7bdb..8024f3fa119 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1197,6 +1197,7 @@ #include "code\modules\paperwork\folders.dm" #include "code\modules\paperwork\handlabeler.dm" #include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paper_bundle.dm" #include "code\modules\paperwork\paperbin.dm" #include "code\modules\paperwork\pen.dm" #include "code\modules\paperwork\photocopier.dm" diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm new file mode 100644 index 00000000000..baff965cd61 --- /dev/null +++ b/code/modules/paperwork/paper_bundle.dm @@ -0,0 +1,231 @@ +/obj/item/weapon/paper_bundle + name = "paper bundle" + gender = PLURAL + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "paper" + item_state = "paper" + throwforce = 0 + w_class = 1.0 + throw_range = 2 + throw_speed = 1 + layer = 4 + pressure_resistance = 1 + attack_verb = list("bapped") + var/amount = 0 //Amount of items clipped to the paper + var/page = 1 + var/screen = 0 + + +/obj/item/weapon/paper_bundle/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + var/obj/item/weapon/paper/P + if(istype(W, /obj/item/weapon/paper)) + P = W + amount++ + if(screen == 2) + screen = 1 + user << "You add [(P.name == "paper") ? "the paper" : P.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." + user.drop_from_inventory(P) + P.loc = src + if(istype(user,/mob/living/carbon/human)) + user:update_inv_l_hand() + user:update_inv_r_hand() + else if(istype(W, /obj/item/weapon/photo)) + amount++ + if(screen == 2) + screen = 1 + user << "You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." + user.drop_from_inventory(W) + W.loc = src + if(istype(user,/mob/living/carbon/human)) + user:update_inv_l_hand() + user:update_inv_r_hand() + else + if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon)) + usr << browse("", "window=[name]") //Closes the dialog + P = src[page] + P.attackby(W, user) + update_icon() + add_fingerprint(usr) + return + + +/obj/item/weapon/paper_bundle/examine() + set src in oview(1) + + usr << desc + if(in_range(usr, src)) + src.attack_self(usr) + else + usr << "It is too far away." + return + + +/obj/item/weapon/paper_bundle/attack_self(mob/user as mob) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + var/dat + var/obj/item/weapon/W = src[page] + switch(screen) + if(0) + dat+= "
" + dat+= "
Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]
" + dat+= "
Next Page


" + if(1) + dat+= "
Previous Page
" + dat+= "
Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]
" + dat+= "
Next Page


" + if(2) + dat+= "
Previous Page
" + dat+= "
Remove [(istype(W, /obj/item/weapon/paper)) ? "paper" : "photo"]


" + dat+= "
" + if(istype(src[page], /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = W + dat+= "[P.name][P.info][P.stamps]" + human_user << browse(dat, "window=[name]") + P.add_fingerprint(usr) + else if(istype(src[page], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = W + human_user << browse_rsc(P.img, "tmp_photo.png") + human_user << browse(dat + "[P.name]" \ + + "" \ + + "
Written on the back:
[P.scribble]" : ]"\ + + "", "window=[name]") + P.add_fingerprint(usr) + add_fingerprint(usr) + update_icon() + return + + +/obj/item/weapon/paper_bundle/Topic(href, href_list) + ..() + if((src in usr.contents) || (src.loc in usr.contents)) + usr.set_machine(src) + if(href_list["next_page"]) + if(page == amount) + screen = 2 + else if(page == 1) + screen = 1 + else if(page == amount+1) + return + page++ + playsound(src.loc, "pageturn", 50, 1) + if(href_list["prev_page"]) + if(page == 1) + return + else if(page == 2) + screen = 0 + else if(page == amount+1) + screen = 1 + page-- + playsound(src.loc, "pageturn", 50, 1) + if(href_list["remove"]) + var/obj/item/weapon/W = src[page] + W.loc = usr.loc + if(istype(usr,/mob/living/carbon)) + //Place the item in the user's hand if possible + if(!usr.r_hand) + W.loc = usr + usr.r_hand = W + W.layer = 20 + else if(!usr.l_hand) + W.loc = usr + usr.l_hand = W + W.layer = 20 + usr << "You remove the [W.name] from the bundle." + + if(amount == 1) + var/obj/item/weapon/paper/P = src[1] + P.loc = usr.loc + if (usr.r_hand == src) + usr.drop_from_inventory(src) + P.loc = usr + usr.r_hand = P + P.layer = 20 + else if (usr.l_hand == src) + usr.drop_from_inventory(src) + P.loc = usr + usr.l_hand = P + P.layer = 20 + if(istype(usr,/mob/living/carbon/human)) + usr:update_inv_l_hand() + usr:update_inv_r_hand() + del(src) + else if(page == amount) + screen = 2 + else if(page == amount+1) + page-- + + if(istype(usr,/mob/living/carbon/human)) + usr:update_inv_l_hand() + usr:update_inv_r_hand() + amount-- + update_icon() + else + usr << "You need to hold it in hands!" + if (istype(src.loc, /mob) ||istype(src.loc.loc, /mob)) + src.attack_self(src.loc) + updateUsrDialog() + + + +/obj/item/weapon/paper_bundle/verb/rename() + set name = "Rename bundle" + set category = "Object" + set src in usr + + var/n_name = copytext(sanitize(input(usr, "What would you like to label the bundle?", "Bundle Labelling", null) as text), 1, MAX_NAME_LEN) + if((loc == usr && usr.stat == 0)) + name = "[(n_name ? text("[n_name]") : "paper")]" + add_fingerprint(usr) + return + + +/obj/item/weapon/paper_bundle/verb/remove_all() + set name = "Loose bundle" + set category = "Object" + set src in usr + + usr << "You loosen the bundle." + for(var/obj/O in src) + O.loc = usr.loc + usr.drop_from_inventory(src) + if(istype(usr,/mob/living/carbon/human)) + usr:update_inv_l_hand() + usr:update_inv_r_hand() + del(src) + return + + +/obj/item/weapon/paper_bundle/update_icon() + var/obj/item/weapon/paper/P = src[1] + icon_state = P.icon_state + overlays = P.overlays + underlays = 0 + var/i = 0 + var/photo + for(var/obj/O in src) + var/image/img = image('icons/obj/bureaucracy.dmi') + if(istype(O, /obj/item/weapon/paper)) + img.icon_state = O.icon_state + img.pixel_x -= min(1*i, 2) + img.pixel_y -= min(1*i, 2) + pixel_x = min(0.5*i, 1) + pixel_y = min( 1*i, 2) + underlays += img + i++ + else if(istype(O, /obj/item/weapon/photo)) + var/obj/item/weapon/photo/Ph = O +// img.icon_state = "photo" + img = Ph.tiny + photo = 1 + overlays += img + if(i>1) + desc = "[i] papers clipped to each other." + else + desc = "A single sheet of paper." + if(photo) + desc += "\nThere is a photo attached to it." + overlays += image('icons/obj/bureaucracy.dmi', "clip") + return \ No newline at end of file diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index e70a4bad86a..3a956e7ff65 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -26,12 +26,10 @@ icon = 'icons/obj/items.dmi' icon_state = "photo" item_state = "paper" - w_class = 1.0 - var/icon/img //Big photo image - var/scribble //Scribble on the back. - - autoignition_temperature = 530 // Kelvin - + w_class = 2.0 + var/icon/img //Big photo image + var/scribble //Scribble on the back. + var/icon/tiny /obj/item/weapon/photo/attack_self(mob/user as mob) examine() @@ -254,8 +252,11 @@ var/icon/small_img = icon(photoimage) var/icon/tiny_img = icon(photoimage) var/icon/ic = icon('icons/obj/items.dmi',"photo") + var/icon/pc = icon('icons/obj/bureaucracy.dmi', "photo") small_img.Scale(8, 8) + tiny_img.Scale(4, 4) ic.Blend(small_img,ICON_OVERLAY, 10, 13) + pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) P.icon = ic P.tiny = pc P.img = photoimage diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 613a8f08806..36b46a1bbb8 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ