From 7221ca3a53196a4a382e28feeefc22ac9548ae62 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Sun, 27 Oct 2013 22:57:51 -0400 Subject: [PATCH] Allowing people to photocopy their bums --- .../mob/living/carbon/human/inventory.dm | 25 +++++ code/modules/paperwork/photocopier.dm | 98 +++++++++++++++++- icons/ass/assalien.png | Bin 0 -> 2846 bytes icons/ass/assfemale.png | Bin 0 -> 1884 bytes icons/ass/assmale.png | Bin 0 -> 1966 bytes 5 files changed, 120 insertions(+), 3 deletions(-) create mode 100644 icons/ass/assalien.png create mode 100644 icons/ass/assfemale.png create mode 100644 icons/ass/assmale.png diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 77cd52317da..7ff6e907406 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -733,3 +733,28 @@ It can still be worn/put on as normal. if(source.machine == target) target.show_inv(source) del(src) + + +/mob/proc/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_l_hand) + return l_hand + if(slot_r_hand) + return r_hand + return null + +/mob/living/carbon/human/get_item_by_slot(slot_id) + switch(slot_id) + if(slot_back) + return back + if(slot_wear_mask) + return wear_mask + if(slot_handcuffed) + return handcuffed + if(slot_legcuffed) + return legcuffed + if(slot_l_hand) + return l_hand + if(slot_r_hand) + return r_hand + return null \ No newline at end of file diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 9b0a931a838..cca92018d87 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -13,6 +13,8 @@ var/copies = 1 //how many copies to print! var/toner = 30 //how much toner is left! woooooo~ var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! + var/mob/living/ass = null + attack_ai(mob/user as mob) return attack_hand(user) @@ -24,7 +26,7 @@ user.set_machine(src) var/dat = "Photocopier

" - if(copy || photocopy) + if(copy || photocopy || (ass && (ass.loc == src.loc))) dat += "Remove Paper
" if(toner) dat += "Copy
" @@ -85,6 +87,36 @@ else break updateUsrDialog() + else if(ass) //ASS COPY. By Miauw + for(var/i = 0, i < copies, i++) + var/icon/temp_img + if(ishuman(ass) && (ass.get_item_by_slot(slot_w_uniform) || ass.get_item_by_slot(slot_wear_suit))) + usr << "You feel kind of silly copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on." + else if(toner >= 5 && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. + if(isalien(ass) || istype(ass,/mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. + temp_img = icon("icons/ass/assalien.png") + else if(ishuman(ass)) //Suit checks are in check_ass + if(ass.gender == MALE) + temp_img = icon("icons/ass/assmale.png") + else if(ass.gender == FEMALE) + temp_img = icon("icons/ass/assfemale.png") + else //In case anyone ever makes the generic ass. For now I'll be using male asses. + temp_img = icon("icons/ass/assmale.png") + else + break + var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc) + p.desc = "You see [ass]'s ass on the photo." + p.pixel_x = rand(-10, 10) + p.pixel_y = rand(-10, 10) + p.img = temp_img + var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.> + var/icon/ic = icon('icons/obj/items.dmi',"photo") + small_img.Scale(8, 8) + ic.Blend(small_img,ICON_OVERLAY, 10, 13) + p.icon = ic + toner -= 5 + sleep(15) + updateUsrDialog() else if(href_list["remove"]) if(copy) copy.loc = usr.loc @@ -98,6 +130,8 @@ usr << "You take the photo out of \the [src]." photocopy = null updateUsrDialog() + else if(check_ass()) + ass << "You feel a slight pressure on your ass." else if(href_list["min"]) if(copies > 1) copies-- @@ -119,7 +153,7 @@ else user << "There is already something in \the [src]." else if(istype(O, /obj/item/weapon/photo)) - if(!copy && !photocopy) + if(copier_empty()) user.drop_item() photocopy = O O.loc = src @@ -129,7 +163,7 @@ else user << "There is already something in \the [src]." else if(istype(O, /obj/item/device/toner)) - if(toner == 0) + if(toner <= 0) user.drop_item() del(O) toner = 30 @@ -141,6 +175,20 @@ playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) anchored = !anchored user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + else if(istype(O, /obj/item/weapon/grab)) //For ass-copying. + var/obj/item/weapon/grab/G = O + if(ismob(G.affecting) && G.affecting != ass) + var/mob/GM = G.affecting + visible_message("[usr] drags [GM.name] onto the photocopier!") + GM.loc = get_turf(src) + ass = GM + if(photocopy) + photocopy.loc = src.loc + photocopy = null + else if(copy) + copy.loc = src.loc + copy = null + updateUsrDialog() return ex_act(severity) @@ -170,6 +218,50 @@ toner = 0 return +/obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) + check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. + if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai) || target == ass) + return + src.add_fingerprint(user) + if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + visible_message("[usr] jumps onto the photocopier!") + else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) + if(target.anchored) return + if(!ishuman(user) && !ismonkey(user)) return + visible_message("[usr] drags [target.name] onto the photocopier!") + target.loc = get_turf(src) + ass = target + if(photocopy) + photocopy.loc = src.loc + visible_message("[photocopy] is shoved out of the way by [ass]!") + photocopy = null + else if(copy) + copy.loc = src.loc + visible_message("[copy] is shoved out of the way by [ass]!") + copy = null + updateUsrDialog() + +/obj/machinery/photocopier/proc/check_ass() //I'm not sure wether I made this proc because it's good form or because of the name. + if(!ass) + return 0 + if(ass.loc != src.loc) + ass = null + updateUsrDialog() + return 0 + else if(istype(ass,/mob/living/carbon/human)) + if(!ass.get_item_by_slot(slot_w_uniform) && !ass.get_item_by_slot(slot_wear_suit)) + return 1 + else + return 0 + else + return 1 + +/obj/machinery/photocopier/proc/copier_empty() + if(copy || photocopy || check_ass()) + return 0 + else + return 1 + /obj/item/device/toner name = "toner cartridge" icon_state = "tonercartridge" diff --git a/icons/ass/assalien.png b/icons/ass/assalien.png new file mode 100644 index 0000000000000000000000000000000000000000..d7586f3b5ffd7cc0e16546df86e0ccbac9f1a0c6 GIT binary patch literal 2846 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 literal 0 HcmV?d00001 diff --git a/icons/ass/assmale.png b/icons/ass/assmale.png new file mode 100644 index 0000000000000000000000000000000000000000..c6091cf19154d816f7bd6da55b59b5dcc98eb84c GIT binary patch literal 1966 zcmV;f2T}NmP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qRNAp5A000LaNkl@rqPd~lZU-x&;z`OpKGiUZ%&-1J`YtNo2 zXU?1@OO|ZZsL{A_Cz>LppB0oKSmQq=oT+tyf}UO^s!^d5`p0D+qa+M_P@A&`SRt} zt5-K~-rTTZ!?0n)8aHlSwrtq~1qwvPiWO_ttl5MK6OJE0PARzO&!0myK_dwqMvFIY z+?X(Yy51C8Lvj~@yZWGTj+ zIdkNy_)(iSZRomu`7)(&rOCi4Isz#(lJT*lM~{viInpCO$`a(WpFe*hK&EK+=KA&P z>(;FsGGs{Y+O;D;J9qBXIYg-g4VOO~8Hdp4;nm<-IpsR<6;IAnlBqF1k8<)GX$U_cQB4wTFy5Ibta zv`@5W&mLi7LRZ*2!GVKG1x?s|CL!7IkpUoZ2tpo&+XJzo3_=bZIH3NKw!M4zZrEPW zg4rn07F82Ls8ZMl`(d3A5tv{FSw<@%X`b8;A3i*O{P;*q`QrglVO;qIz09HjauiCU zp{dl$I-^OsahPyM%#8s|OiU!*iy3*p1W+0>Kp@6n@tDlRhSSc?$O5#d;gOM9BwR7V zQD(HYbLY;DY#LEA-~>*X;82{vVdAe65hcuv8n#4c44+3v?}~#+^Ej!9cIqHlym)cs zjPxfQI|9Hl6QF^{96e|RB3XFvBqYR~h05q0=uS+cxt%+AZsp3Ak-qjvJY4}7s9+X2 zOoDvcz3_Cw0&SGKN8vA1dKt(Afyspn7rY8F0<>}jgdlJb7;;aF4Cp=>yLRmg8AHd) zOad7nTAj5<9FQGCk>kaZfWRRS6W&RQ`)efP{Q2_^-9?KQnX3k96H3Dzde{IdI#JYT z-@bj$?T9EIWP%RG0SBFYqtcPDH{`4BoRK~zf@y>pPasiExG{?ix_#wLO{`6Q+Xf66(7btb=biK=Bv9Q5576d3y;!QUWy_X@3m5W_HgDc+ zi4)LJ97eJcG~tdy?<6;0y*hR36fa&}Z;)kCASR%o)tPYha6;_fy<3Bh9z8mC*x6`) z_CzTVgo4;c@({TJ zHfx}M2VCsQ$lCSlPC8r z?9-=@j&df8)w@n*dqey3<;#78`}XbIph1K3<;zDsdh~E3TD^L;loe4~Fi{jrX?@V3 zLEtiF%7h?fU`&@TUFp)Lp=d;)zVbMzS+#1FVh$ZTw0-;bt`jyaa)IgJzyH*!Q~Al4 zaFvBFhPN+p-MV%2<;#~VS1ueWQltn31q&8*U2|!0p;B(!?pn2C#R>(tx4nAxa+i>_ zOIJjQFQ+eqlh20RJ^ib`E@*bCX3d(g2(bYa+tX3d&K#l(pdQMPE&f(qyrDpUZ3AY`Cc_^Ma0uF8~Ft5&T_ zl`5@Ux8{$`x{y41@?_1LHMVW8kL1`5c@W~l0al@h0kRbq-B}*2$#?V>Xv}vDp!ToFcjz+&WfY-88T#$WwK<+VgxeCoH=vg@XVH&Fs_vHq)$ literal 0 HcmV?d00001