From 0f74b0f3bb87234d8d7ba04cf0ae88f8a18c20f1 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Tue, 6 May 2014 20:26:53 +0200 Subject: [PATCH 1/7] Ability to spawn a paper bundle by hitting paper with paper --- code/modules/paperwork/paper.dm | 20 ++++++++++++++++++++ code/modules/paperwork/paper_bundle.dm | 12 ++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 code/modules/paperwork/paper_bundle.dm diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 992cbd22d6..96e8a2cf2d 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -315,6 +315,26 @@ if(user.mind && (user.mind.assigned_role == "Clown")) clown = 1 + if(istype(P, /obj/item/weapon/paper)) + var/obj/item/weapon/paper_bundle/B = new(usr.loc) + B.icon_state = icon_state + if (name != "paper") + B.name = name + usr.drop_item() + B.loc = usr + if (usr.hand) + usr.l_hand = B + B.layer = 20 + else + usr.r_hand = B + B.layer = 20 + if(istype(usr,/mob/living/carbon/human)) + usr:update_inv_l_hand() + usr:update_inv_r_hand() + del(P) + del(src) + + if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) P:RenamePaper(user,src) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm new file mode 100644 index 0000000000..70a98ee52c --- /dev/null +++ b/code/modules/paperwork/paper_bundle.dm @@ -0,0 +1,12 @@ +/obj/item/weapon/paper_bundle + name = "paper bundle" + gender = PLURAL + icon = 'icons/obj/bureaucracy.dmi' + icon_state = "paper" + throwforce = 0 + w_class = 1.0 + throw_range = 2 + throw_speed = 1 + layer = 4 + pressure_resistance = 1 + attack_verb = list("slaps") \ No newline at end of file From e620d41f41cac5e047bc9e3707854c0c653b61d1 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Wed, 7 May 2014 03:54:05 +0200 Subject: [PATCH 2/7] Adds basic functionality to paperbundles --- code/modules/paperwork/paper.dm | 33 ++++++++------ code/modules/paperwork/paper_bundle.dm | 59 +++++++++++++++++++++++++- 2 files changed, 78 insertions(+), 14 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 96e8a2cf2d..1f3f73bc41 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -316,24 +316,31 @@ clown = 1 if(istype(P, /obj/item/weapon/paper)) - var/obj/item/weapon/paper_bundle/B = new(usr.loc) + var/obj/item/weapon/paper_bundle/B = new(src.loc) B.icon_state = icon_state + B.overlays = overlays + B:add_item(icon_state) if (name != "paper") B.name = name - usr.drop_item() - B.loc = usr - if (usr.hand) - usr.l_hand = B + else if (P.name != "paper") + B.name = P.name + user.drop_from_inventory(P) + if (user.r_hand == src) + user.drop_from_inventory(src) + B.loc = user + user.r_hand = B B.layer = 20 - else - usr.r_hand = B + else if (user.l_hand == src) + user.drop_from_inventory(src) + B.loc = user + user.l_hand = B B.layer = 20 - if(istype(usr,/mob/living/carbon/human)) - usr:update_inv_l_hand() - usr:update_inv_r_hand() - del(P) - del(src) - + if(istype(user,/mob/living/carbon/human)) + user:update_inv_l_hand() + user:update_inv_r_hand() + user << "You clip the papers together to create a bundle." + P.loc = B + src.loc = B if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 70a98ee52c..e330b3b355 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -3,10 +3,67 @@ 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("slaps") \ No newline at end of file + attack_verb = list("bapped") + var/amount = 0 //Amount of items clipped to the paper + var/page = 0 + + +/obj/item/weapon/paper_bundle/attackby(obj/item/weapon/W as obj, mob/user as mob) + ..() + if(istype(W, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = W + src.add_item(P.icon_state) + 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() + add_fingerprint(usr) + return + + +/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/proc/add_item(state) + amount++ + var/image/img = image('icons/obj/bureaucracy.dmi', state) + img.pixel_x -= min(1*amount, 2) + img.pixel_y -= min(1*amount, 2) + pixel_x = min(0.5*amount, 1) + pixel_y = min( 1*amount, 2) + underlays += img + return \ No newline at end of file From 8e08231c3a60104f6119fd53b502939645f768e1 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Wed, 7 May 2014 22:50:15 +0200 Subject: [PATCH 3/7] Adds functionalities for viewing, writing, stamping and adding photos --- code/modules/paperwork/paper.dm | 15 ++-- code/modules/paperwork/paper_bundle.dm | 114 ++++++++++++++++++++++--- icons/obj/bureaucracy.dmi | Bin 10474 -> 10604 bytes 3 files changed, 110 insertions(+), 19 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 1f3f73bc41..4fec2ee842 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -315,14 +315,11 @@ if(user.mind && (user.mind.assigned_role == "Clown")) clown = 1 - if(istype(P, /obj/item/weapon/paper)) + if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) var/obj/item/weapon/paper_bundle/B = new(src.loc) - B.icon_state = icon_state - B.overlays = overlays - B:add_item(icon_state) if (name != "paper") B.name = name - else if (P.name != "paper") + else if (P.name != "paper" && P.name != "photo") B.name = P.name user.drop_from_inventory(P) if (user.r_hand == src) @@ -338,11 +335,13 @@ if(istype(user,/mob/living/carbon/human)) user:update_inv_l_hand() user:update_inv_r_hand() - user << "You clip the papers together to create a bundle." - P.loc = B + user << "You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name]." src.loc = B + P.loc = B + B.amount++ + B.update_icon() - if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) + else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) P:RenamePaper(user,src) else diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index e330b3b355..a017a78348 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -12,24 +12,105 @@ pressure_resistance = 1 attack_verb = list("bapped") var/amount = 0 //Amount of items clipped to the paper - var/page = 0 + 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)) - var/obj/item/weapon/paper/P = W - src.add_item(P.icon_state) + 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++ + 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) || istype(W, /obj/item/weapon/stamp)) + P = src[page] + P.attackby(W, user) + update_icon() add_fingerprint(usr) return +/obj/item/weapon/paper_bundle/examine() + set src in oview(1) + + ..() + 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 + switch(screen) + if(0) + dat+= "
Next Page


" + if(1) + dat+= "
Previous Page
" + dat+= "
Next Page


" + if(2) + dat+= "
Previous Page


" + if(istype(src[page], /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = src[page] + 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 = src[page] + 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) + return + + +/obj/item/weapon/paper_bundle/Topic(href, href_list) + ..() + if(src in usr.contents) + usr.set_machine(src) + if(href_list["next_page"]) + if(page == amount) + screen = 2 + else if(page == 1) + screen = 1 + page++ + playsound(src.loc, "pageturn", 50, 1) + if(href_list["prev_page"]) + if(page == 2) + screen = 0 + else if(page == amount+1) + screen = 1 + page-- + playsound(src.loc, "pageturn", 50, 1) + else + usr << "You need to hold it in hands." + if (istype(src.loc, /mob)) + src.attack_self(src.loc) + + + /obj/item/weapon/paper_bundle/verb/rename() set name = "Rename bundle" set category = "Object" @@ -58,12 +139,23 @@ return -/obj/item/weapon/paper_bundle/proc/add_item(state) - amount++ - var/image/img = image('icons/obj/bureaucracy.dmi', state) - img.pixel_x -= min(1*amount, 2) - img.pixel_y -= min(1*amount, 2) - pixel_x = min(0.5*amount, 1) - pixel_y = min( 1*amount, 2) - underlays += img +/obj/item/weapon/paper_bundle/update_icon() + var/obj/item/weapon/paper/P = src[1] + icon_state = P.icon_state + overlays = P.overlays + var/i = 0 + 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)) + img.icon_state = "photo" + overlays += img + overlays += image('icons/obj/bureaucracy.dmi', "clip") return \ No newline at end of file diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 2a0feb027a2e2a205c243971df4b73909dfb6f87..a1d379cad9a7346cd8c12d82b061942069031810 100644 GIT binary patch literal 10604 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 literal 10474 zcmb_?byQT*+wK`+2uVRY1qr3Q2T(vHEkNl8X;6A#=#=hmP^7yV5Rp#lMoL@ZDrB|>}}d;kClm7hO*1ppB65dz>s!9vfu z!~*;y*z=9f$7kj)rq0%mAFUni0l+;YF%fCs#YYf4vj6&-qXkC24KJD18c?Cx6sD42 zsGMZ>vGs;Xp;9gF@7C0dZ2kG0HLjlB+kMCTE$g}Mj-hk!#zK>eKk2KzFO(Bn^U&4C z+&zieOitmbvihFqrs!maS*oDVNuOu+y{P<3mStqbcWl^OpxjNa=;HYo zuq`p|Hva6N&c*ThEHgibaW~U;5u4-G&#V63T>RFk>)fVpOaA3%W$rK@JLMa!cMd-{ zu~TMKtWc%VRk+E&BQB7M$JO7ikh$@x9-T#ozd+;R3l9~wzdxy;?t;uF5X*kIh_HJ& zLNRB5!HE3TSr}l)lOp+zl}kHJt5Fl%0ySsll{9HR5QOSqMGM4^ITc9p;6y27r^WQ# z7*)N$PaRNy6`(*%e`ACgOezlDM{{7BG!y)u9~LVX^5&{jn><%YhZ4l zJs3E@Utbb4e>pCfR=um-^ychy#ocz{Ot!0uo7CiTmLk_L9@;1@0AK=?pUJ&(&)CoO z@_uce*6aHcnM6U;Ulz2)F^W5$^a@Jy4C9sG%VJ!DgDy=S`UJVAZ(#s>90QhV2n*mt4CO-jO`JNaENnm)B$_^P5 zuCLko!6E_Ly(jzujqfjZOeS2vy`{GF*=qBM{mWoNS}JihSylK443a>g5$X2#w=&R~ z#I3vc!OVAjD-)7&xxtH#$GShu@|C50wpk_vq;ZRqG@|e_2lFr0s;alk&%%MmKa>rzA`vWeV%t)E@HP^#W%0A(*P`F z{DUW2RwA}DMqV-k;tyEjUqb*|5nEYT1A2-gJJXqT*tXXso{rAaZFHIA5yD;=`Aqj=6OYSl(mUMQ4YFZojg4 zrozNiTmO(0**H2E&WdCl6COIHz`_ZcWr)tWnBXz@59l7%bMO;kg@W%%e?d+*v?3!3 zYNdV7j&t?|zp8WmG=X32ozuwx~%47Z`nlZYyRqFbB3#MdX zkX2GwIcD{}L_J=V=5q?asbaD~zT#*9F{?m>iV(2k`tn3!B01vVm1XaWOK-+ouVar* z9Dh|=dw8?}LYy==>pInnAdGzCec;K&mwq3gLYsN)dlVdBc^}vk&eKz#5SyYm3qu(N zu>nmKoPTPgg$K5OOlZ}pb69hgr-7A5MjFoLQa9r;kj@;dT*85V&wrDxPS}IYpy@$P zm+Q|zl1`2X4X%vlJ`LZ&M2PO+1xE~{MVs%birhdESEXCF=V>iC7#ye8a5<=^SKHI) zPGe1%PxJGxUijXYYF9j5bBl1?5XE^gR#8^Apr z^%GMq$Cl1&n6*3Q*tSpcFgA=GB;g6I7A~fEum3I%R|xlZFcdG_(Q*TCQPe~RUGCX zh2s37%ZnDh$z{#66KyT6Jm*WIoa$Gu`$a`;lfQl)^UTMKd0$kr2@5Ae5OSD)MWuI+ z@1y2@+@@1|wMR&+PB}p!VW5-o*1`M;Q|&FYo^{Sr$1*vkBh@vGf#_M;ZRl(5?E(NU z%{(Pq0_c>u9ignMzywx4?kztsF~k9YV)e{5{j<|)!^7BV$PuAcl_l_^up-wSi6`GS z$^pogQ2oC!jT!vf2T!50B#(m$5KM0fsQ-h8)Ba32Q@hf0Teiov!3<3tSaK+G_X=Ec znlEIiAD=eZ&V!^7i#Ur;v}W49JtjkG!mX-~y;1aLo`K6NZZ;UhnUa)B(F}Fit?M?< zPCMg;JiU4O`LStf{f+NOJ|AW5?b$X!rM%8;``XU(RZ$UGr7h!2$f`> zCcWC&m?&W)+C1mkDi`+Zni^`(08MK+=aD34XlSVB-n}A}fk&5wTlc3Qf#09?{j00W zeF^0C9*uO#1J~o9H270h`BGKud$s!qoC;g@MBr7&E#UYwsy^*%0kVZX{`8V=FN*Rf zb~0p=R19r@0@oR}wL)@rL+x<%Gc}FGsbt#tKCDc2%K;1?!}iFM5)R-jc!f6xa=~wV z)YIGB!maz}&Ez^N5kctO>*X6n(5a!UqGEdg{(U1Mn%ps~PQLOdYk7GOE6oc>x5ySu zcAqGys}m_MyAT687uOyI1qDp(>^MM7T-?Jiu6E{+1ULL}GTL4Le8(fey+@Xz9}Br) zwmqtPqpjV-WmBco$^E3L9o*G%k5p{;4VA_xCSp@lIh)(#90Q~t3RDm9e<>;ZX0{2t z6?@EmHoqPe6v84cO;2{8Oxn{>0DuM1UN2(HI7(hn2m2|qs87tlJIa>$gugYC-7B3b zyq>`Mde7fb6<%mOe`^bq)y$T$vbV0HkH@edIus*F&B}@rF4eA4WOB!iBj}8Fd~i(> zaiaFR3Ar`Q6}T-qb^W?X6$#n^bVNx$QCypBqcO@AAq8f#Iw?QQMAj$6$n?_y+avAw zTsk$L!mfJ@oIkO^3CFTTI#lV99GIDeo6Z^P>k~%wti2`ne*d0^jFEATk8yK-21mcb3M?Y^-efS&`46D>%4>KK2#f zYHFW3kcc>iuGuY+Mc;N+ZpdTQE7YxE8FX2|(tc z#K8cDq?QTy|JzoVN^O@(acZ@6=+8>sx;XV`8X!uTg&!aCM&CR-RM1C{uy05%*-LIB}2M=r$PMR5{ym4P2TM{)(WR;0(W=x zu_x#ecz$2G|1tJc9f!1oV{vyo00-r{d5gmkGlZ3aeHUZgO)ltXj?wJPKmNP9F zK?oh{BV%VO#;dHf(0uz6QjYht%=eorL!GN=9B@Ef4AacGV_QML#yte7wb!;)g^NB6Lq`*eYk3mX{z4Y1zUM z@%g*|S)Mit!)!2IrrMsQ%QS3Ss>!mS++`DbPGSANxXr}&>{rRvPlLYdF1vh3=KeJK z$pxL12+*5mIJ|=M?F;x1$t@=%Rh!AW%iu4;3y4jni;a(X0Ar;OXx^~=a9O{iLr-x< z=fvy&H6mFJc=W-?o_6`&5bsvBTv%Fm#C>5HCHRiVdFon^E+E4O-&q8^^~>eEYga>{ z98b(kog~ofdJ53tIKu04xn2Tr{g3FHDgIOZ|Bnxf|J87{p|-ey&-qXRY5vxgyXJAr zRK;l@fZM^UQ(-ADDKSd<*Fg;jV2Lm0tFh3)%o&_=tVj99BKxd>rZjqRQe z>N>O)>J&%Moi+(Mxw6E0=}G|ZG6!b|vM=_OnUmU$FdggZ8y9o~L7#&Y=?DT}RAnos z1@BSvd=DjM$$3UnqQ6WX5JG@lVSf62`JU7qRUqL-Ji9so%=9{oRn@Fi(7cUiro5U@ z1ES1ZgV5`ioSdA2$I=K+}_3L9mRz>9=u#)Mv z6pPC6OlwzC0}h5eouM5pwmHO2ql|C!|Fod+Li<27rJy;85ur?zjlAJ_^kO|>x7Vq^ z@}>pjdGE-0g&_=(&6a@!z!UBAguM*Uy!PcNj7nkHG*-bMEFmfanl^)xO1aLdKxgb+ z-klocUB`%Y$T+3pn_BVFxw)?iAEU?4ci9j%sO752lN*Sn7o@?(W58yvg+cx7Ib; z2UXIPPYo*}jse*>d71R__m#+EST5dqKf?X>RU5y)`?>7=O4=w-twQF-I-CUZu+(%0bp8%R^a>e=XU3eq`N!EHpCW32^ zm8lRlOH=XnE53(^NBEAVc_HxA?e%+!n}ly%*pqk;$7s-JaYz1F@gE0A$GZx0c=BrA zfBV=6K?c#n&4M!F0>iB%Cn9|Qc?@n)Db=Yxlcppc&0beOCYse?cVm_YN@vv zq5%WM-12huBXm4SGouAvHV5qum#a)e<^{@`!1#=josA6&XzJ?PxV7fzW7^r-8MKLl zf!YPc+}zxC#9^^HC?|($-gzZU9t`AUh;&b2Qf_?yb)o>k=)0{yG_sZm@%BM+U;-|i z!*9(L7z$5!|9+zv%AH7f2YtfK?8nK$(Mj*NkQ;i7IzRESp%h3kAXP-2xA<^s@^iu9IV;}7`k8ZsV``SfX$FC*=PE{w3c1CRM{ z;)pmbMGmElMx3>S$DOIXii)4l%~8*1+85d353e7?7@tGqPT~_~9w_f@Z_8?Gk{GzJ zV$WA05Wvf&c^gclbGFy`g{P&oXwD*iO4YnkcND4qUQYETK9cg1h>YH1V}!wbxJiF=`_Nteca%dY+h-ba3sjdb9FMxFm^9J&J%dLM4vqATJQ`|PA z=T6Mxmd1hi-qEo_NG8tF-vQqFs4!t-#2J(omr)VKPFwWSgC!JXR8`jh2(us!NA|xw zxeNy+CQ4sDfPdR%{bJ7(z>@nJQgaGeDKPnKLS*=f!QFZp>&yWB+YVwfEewDh$@oc6 zv>`wbTy;q-{yJtjvbs<5&sw_%9fB3G)LYo<&R@Z?ddw$xA?00fzc0jp^=eTKtghIer_%VAYo*TX3zG16}Rj^ekF}( z0A<>^{T=A*v^T?V@gtHNWZTfkPoA{28tCdqq@~ehNO@E%{W%v}pg~NcF@X}y7F z!uG7M%VevGkmpS>@m0pX#g=4`?c9(ID1#BBcQTLuAEztn2mdUe{tP^FSnh#7+0aOfpg`Cid+ymo0_J2L^r;EN}O_|*yA4?+n#UW^$!Rj zy?@_-q^8DPJQ?g&N})>f!`coCUrAR2nAbM*vt=sg87wS9%okO#CfG|IouA)(dYE~5 zqO?6~W+NLL#cUTEV`p1EYNq8%YGnrIGrdTOXoQ}BYd~4UE&WDbZ5DK_UT$Su7W88z zach_=D)g>Q^Ip>cF_&^|JV^;mY!WnZsYdyj2FOD5r+W?^HzMVR9YnINyRnyXnVI|b zQ>JL}04<&fJ0m_4I$B#>GZK;HF*xwOisE>1@#0Uk3Yr^AK%{hpV5TCc@rS_CIaQce z`;B3`^rB;PbHSra4SYxC=`+=TxAJy*b+dk`sy*-Of1rT@ob4?I;E}~0uLKb1H5Wl~ z?$Uyi4ZI;WXd7&ENGpMC|4m;|rN!wVp56mjX9nM!T|DvI(UiZIl?L{LSKVw+{y^+?54|REen#SFN zCa>&}q*OH21b~jKCl|&Q&idj~F)8(Tqt3<7nNjBj`q_KTZV@%QqtzSMgGV!~DQPi* zJDh@}3uAtR!~#yIf8L`0EYbp_V@pwS)ha1s)(c#UJjD-7Hu3-_pg9nxT6n6yrrOxzedRfR@< zRya$Bf&oxFoRr+#>(NS`jaI&!EQ0$YU$P^8dqzjYiI8zTc@m&rOr{o1C{@l(Ek@n~_!)s{vO+L};Q$L8CuHoT4ZOJ}Wqz{C> zb&BQzeZYnCIz&hE@~h1U5;}4$J74Z#V#cVHZL4R2A*+Y8y#NqhcuO!=RfXFq*(svO zNIsgbO|dc#%y5S_M$(CoA6!xzdNXeagvt3>=CEVV#38b=0N4I~z3n>=DZhW(hyQxM0 zr<5C4W84_ti{TAJVFY6<=CtQyCyK_mO?i4uI0*Y*RfwkIU7;ZhBBx-IHc~}ZRxX#+ z7k$71jw2`g7T`%tk{9(PkhwY3Fcx?x3D++3riqr88nB}nwS%sd3Ia_#AZ3bD!{7t~ zR}4&SCYw6v*2+ZawH?`VSD-Fnz{2G^apM~UzghI6)ZF&;K5(Hvj12n*aSNqS`2yMUmD(1`GF96w{>*A?7oTAWc z6=J@{cuiGFk!1Zz=amfofXD-rqa47S^qlknkKVtv=>BBAaDHL0y@kTv~KAv2@KqLL#nGBUD&`gFTcT;iwCzVm&1e<`Hy z1E<-F=ukRbY6J6A{5<@SHcX7srK#XUHMZIYx0SA-d+vLyP43KamJ@W@FuVUT4Ys2w zrl$H#{VlI#4N$Ma^yQ@P1tqgS`^(;e9eB z8b_HUg>N_Z~gA{?z@5*GP3>3iyPRgNSVaQa$1(OY8KB=yb#(H8(v_g4F8w#~~An&Z%+N!MYd z_@`COJI)&V{!rdL@nj&eZPjRsxuC+A2#$v4S5@K7-D=g?99rQ3dM&Pm+U0MIMmzmN z!^6883s}iB!~^aq*kWw=?owyswYGIX|=h=i^i5?>_s>v-k-3NVVS_Nb0p%3=PiDOOlZC6Vxzf zgf(A5-@Jc324lqnA;YR=Hn{!fX{-P<@(bQa8^GHF=oiK@LY7wKt^LyWE7g9<|FOib zF&aMDmW-d@PLk@Hm>_Sr<8Dc2XxeZ?fQ(%YjGOeDZ3Pjt#Dzwv6n+jd7bvC53&)KY*kI6q z4-iA2Hi#KI;c?r+z^MVrbrFqdlc~M2?@V5l8rzcjy=+>$eo6Ft zb5Oo>5z;t26~5XXvW}z{)YM)^NVlBll$4NsiRSLq_@T>Ant5}j`)pYd!}Ji17Z(>d z>U0vqbGQQ{YmoG*r*wQ;TKJD2KX~#X;7|214vAppW!`rVMDb8mcsPEag~elO{G8g` zje#k)sg1yMzN0x|CM%}D2P5BW<5e7wyA;SDwTAF}jO192egN(``^2UGp_I%V+S0<` zhh}p)GvcgXgq)n_c;wnQuell8?4`JVi)LG|>AnjPT;5#YQ0u7ciKtn@d8R`wyR$0$ z<>d!*M36&GK8OZ27DM;-vlVu1z?m6A{}DQRFs);X=%$r8G~AUEp}EjXTd_=ym7pX{ zdi=(q^hb;D71$XS)vj7|ZnjQ>j)hBXF%5@M*{81FV2DWG%dk`g3g>91d>w<%!#aHjk>IcN# zzm9|)C_+Fo!^#-zShzes?!URY$qvyg>WykbREs~W66_!Wj&CA)>+Edli+!v6M zq~G@iFA}D3_9_P4g0xB#xwaFg4*MF100L-$A{gw!GeQ1pljX5V4XrewI~`ME{B)Ud zU~p~;r*PHEdQza?lsI+x1#FM&zumNui^2nQwsil8&isF*9U^lE{OFC(zYr7D9wg1o z&3%}U$bzeVYukap%x1c#UxI3a;dG@RR42d=6jNNyYu|H&lhg~yDk?$&qr2OiNGdR> zZWok+c_u&*;x1cpeI#-5U{vf{zrHtH)6+qhV!qlHWIr&N4P(T^!;@c{azHiFf#e=< zXPTIxd*$YQ$ux=Ea4BC+Hk>gVw)2EAd!*yjZ><8$VnO+KoQgEyV5Y;jBagEYq(h&} zSQ?tWxo=D)KwSp==Hgn-(0b~d!T#SmP*Qn#W72Fy<~WaMC6Z2EGi&R@cyPM4hc8YM zfen5R%4hy!S;dL60ss!#zqVljHs2 zamSQ)O68Gbu_%xdlVT+ZX_%0Ob%&Vksjp1_lPAh#nK&`vWFbGu%^^ zA9r3=%&iQgAe|Y$!xk7#N>Qd)EH!&~Ja-u!R|lX-#|P~GAP=mgfHGOD+2YsR19>*% zNOD_w&8>EK=N+`b9TyjtBid^vKn0V7i_45oa<);dJbKFtYvI#hDP-bpT^zoUkPy@P z&;3NF!ON{@({8KHb6I{sfhzNb2Bu)xjyX@0s;(gS5+@Zoj?0Vd8i^)+8bNIG|vuuSW z#rfzd6&*izx@{c{&};Xme);kxus0;fGd@0!B`kinPiFauv5LeN=;`Uv|DfHQmTX5u z2lLTOP!|&^w8YF(yR1ljV{{a1tluAAHe$XtoJjyICO-5jVXq0%>2Pq2TO=^H`LeLyLG-Aq^EJ&(d>EWO6Vun@2~erx;9ObxIlqwO#%nf28f2t29_W-%|!_kF{=RYHiEv%L(6Dn!G}w`oMSev4l6;@ zB-0I@Q4lf0TlobQnh9dGe@nqGmmbrHKzq90X~2wxbH5Z8@?l;) z7NIarDli^=PXDLlryOT79y3%88W4;oi|-idV-Wsz%>`;{zdOx`vVU^E!7WBs{Qgn2 zh(v#o?ai@}L^tkyHXY^FZ=Q608P%Y}MWO0zmc)I}=(M;(H@d>a6r6gl+cIA!sD4K{ zi}|CxUG(D*_&!RiNVa*k58(8sTwGj~gYwu^*#B1GTvz~L!~=*zj;Q~1vYl^~IKUf5 z&B_2;#ZF67s@&W?Z**+#zIAwq{_r@lJ^Z(}zi)uA-TaGhH4WKc6D1`j{Rj*R$p;th z)6lYqeH7C0^=p<7N7~_1zlTckjt*K5F)9s=Ern<@p^c^MCM&NxYStalG0Z8c@uq@U zoix|4Ra6ulpe59W>@ys>BSfcFYQz6cg5x#wCpOeOxYwzcNncUL%gI@#Z$A(h8|z2P zqBxUPQ`b;T`P;pe5#9d;K#Z%UZ~HTKna)gR6N9cB8XetGcL^8X-x>$$2$k60$@lNi z{yA~EowV<*cT06tg_pnRRZzOf>2^Jgnb(%Ly@mlETy^*5QsoGN=}i@*4a?jeE9YFbBig~DiN|9VGCMH1wS$I@upr}lu>>l zrasa7HY#R;?VK5{_rAq--{eOWeT06CEB_)r3$6^V2v9#Yz4LK&=i_r_IUQkErN<;QC z`Vxr$Q}@g9G>^!Zm>P+h9&MZ%?2*RC>PPiqH*A{Qz(GY06ifrD+$V85_i-9u8Sr>9 z0!C_}K3B1TEH01{-QN+7-xtmPn=|}x2S~ZY5tS5i VD9L$y1Kwc-loiyUmCGCX{|}|&{y+c# From 435240ce2eeef6865459367993beda906201b3c1 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Thu, 8 May 2014 00:56:32 +0200 Subject: [PATCH 4/7] Added ability to put paper bundles into folders and cabinets --- code/modules/paperwork/filingcabinet.dm | 4 ++-- code/modules/paperwork/folders.dm | 9 ++++++++- code/modules/paperwork/paper_bundle.dm | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index 38b42a86b9..aeb6851145 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -29,12 +29,12 @@ /obj/structure/filingcabinet/initialize() for(var/obj/item/I in loc) - if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo)) + if(istype(I, /obj/item/weapon/paper) || istype(I, /obj/item/weapon/folder) || istype(I, /obj/item/weapon/photo) || istype(I, /obj/item/weapon/paper_bundle)) I.loc = src /obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob) - if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo)) + if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle)) user << "You put [P] in [src]." user.drop_item() P.loc = src diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 1c491c126d..0f1b612e93 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -29,7 +29,7 @@ return /obj/item/weapon/folder/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo)) + if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo) || istype(W, /obj/item/weapon/paper_bundle)) user.drop_item() W.loc = src user << "You put the [W] into \the [src]." @@ -47,6 +47,8 @@ dat += "Remove - [P.name]
" for(var/obj/item/weapon/photo/Ph in src) dat += "Remove - [Ph.name]
" + for(var/obj/item/weapon/paper_bundle/Pb in src) + dat += "Remove - [Pb.name]
" user << browse(dat, "window=folder") onclose(user, "folder") add_fingerprint(usr) @@ -78,6 +80,11 @@ var/obj/item/weapon/photo/P = locate(href_list["look"]) if(P) P.show(usr) + if(href_list["browse"]) + var/obj/item/weapon/paper_bundle/P = locate(href_list["browse"]) + if(P) + P.attack_self(usr) + onclose(usr, "[P.name]") //Update everything attack_self(usr) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index a017a78348..c6a6c25e31 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -105,7 +105,7 @@ page-- playsound(src.loc, "pageturn", 50, 1) else - usr << "You need to hold it in hands." + usr << "You need to hold it in hands!" if (istype(src.loc, /mob)) src.attack_self(src.loc) From 488f645f0784f52ea923b9ec556e504c3eef94ab Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Thu, 8 May 2014 06:47:05 +0200 Subject: [PATCH 5/7] Adds the ability to remove the item viewed --- code/modules/paperwork/paper_bundle.dm | 59 +++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index c6a6c25e31..5664344bf3 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -60,21 +60,27 @@ 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+= "
" + dat+= "" + dat+= "

" if(1) - dat+= "" - dat+= "

" + dat+= "" + dat+= "" + dat+= "

" if(2) - dat+= "

" + dat+= "" + dat+= "

" + dat+= "
" if(istype(src[page], /obj/item/weapon/paper)) - var/obj/item/weapon/paper/P = src[page] + 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 = src[page] + var/obj/item/weapon/photo/P = W human_user << browse_rsc(P.img, "tmp_photo.png") human_user << browse(dat + "[P.name]" \ + "" \ @@ -104,6 +110,47 @@ 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-- else usr << "You need to hold it in hands!" if (istype(src.loc, /mob)) From 317ed1bef75d24a883f981d2378807e05ff35b33 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Thu, 8 May 2014 15:34:23 +0200 Subject: [PATCH 6/7] Added baystation12.dme with ticked paper_bundle.dm. Derp --- baystation12.dme | 1 + 1 file changed, 1 insertion(+) diff --git a/baystation12.dme b/baystation12.dme index 53a88423eb..7be8481944 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1059,6 +1059,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" From e277349e0ec662f7900423a41fbdca1e990a992b Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Thu, 8 May 2014 20:15:25 +0200 Subject: [PATCH 7/7] dynamic description and fixes --- code/modules/paperwork/paper_bundle.dm | 30 +++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index 5664344bf3..d6c0058ff8 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -32,12 +32,17 @@ 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) || istype(W, /obj/item/weapon/stamp)) + 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() @@ -48,7 +53,7 @@ /obj/item/weapon/paper_bundle/examine() set src in oview(1) - ..() + usr << desc if(in_range(usr, src)) src.attack_self(usr) else @@ -94,17 +99,21 @@ /obj/item/weapon/paper_bundle/Topic(href, href_list) ..() - if(src in usr.contents) + 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 == 2) + if(page == 1) + return + else if(page == 2) screen = 0 else if(page == amount+1) screen = 1 @@ -151,10 +160,12 @@ 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)) + if (istype(src.loc, /mob) ||istype(src.loc.loc, /mob)) src.attack_self(src.loc) + updateUsrDialog() @@ -190,7 +201,9 @@ 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)) @@ -203,6 +216,13 @@ i++ else if(istype(O, /obj/item/weapon/photo)) img.icon_state = "photo" + 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