From 6b326160ac74bbeeb5d9965f9537b1fab7e76c01 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 4 Mar 2024 20:19:40 +0000 Subject: [PATCH] Pillows for the pillow throne Added pillows, which can be placed my clicking themselves or combined with identical pillows to build a pillow pile. Pillow piles are in two parts, a front and back, which can be disassembled by clicking on each with an empty hand. You can buckle to either part of the pillow pile. The sprites were ported from skyrat, with some additional colours added. Currently only the square pillows and large piles are being used. There isn't currently a way to acquire these normally, only admin spawn at the moment, but I intend to add one soon. --- code/game/objects/structures/pillows.dm | 185 ++++++++++++++++++++++++ icons/obj/pillows.dmi | Bin 0 -> 5881 bytes 2 files changed, 185 insertions(+) create mode 100644 code/game/objects/structures/pillows.dm create mode 100644 icons/obj/pillows.dmi diff --git a/code/game/objects/structures/pillows.dm b/code/game/objects/structures/pillows.dm new file mode 100644 index 00000000000..835ddb68523 --- /dev/null +++ b/code/game/objects/structures/pillows.dm @@ -0,0 +1,185 @@ +//Pillows with sprites ported from skyrat + +/obj/item/weapon/bedsheet/pillow + name = "pillow" + desc = "A surprisingly soft stuffed pillow." + icon = 'icons/obj/pillows.dmi' + icon_state = "pillow_pink_square" + slot_flags = 0 + var/pile_type = "/obj/structure/bed/pillowpile" + throw_range = 7 + +/obj/item/weapon/bedsheet/pillow/attack_self(mob/user as mob) + user.drop_item() + if(icon_state == initial(icon_state)) + icon_state = "[icon_state]_placed" + add_fingerprint(user) + +/obj/item/weapon/bedsheet/pillow/pickup(mob/user) + ..() + icon_state = initial(icon_state) + +/obj/item/weapon/bedsheet/pillow/attackby(var/obj/item/component, mob/user as mob) + if (istype(component,src)) + to_chat(user, "You assemble a pillow pile!") + user.drop_item() + qdel(component) + var/turf/T = get_turf(src) + new pile_type(T) + user.drop_from_inventory(src) + qdel(src) + else + to_chat(user, "You can't assemble a pillow pile out of mismatched stuff, it'd look hideous!") + +//Pillow Piles, they're piles of pillows! layer = BELOW_MOB_LAYER + +/obj/structure/bed/pillowpile + name = "pillow pile" + desc = "A massive pile of pillows!" + icon = 'icons/obj/pillows.dmi' + icon_state = "pillowpile_large_pink" + var/pillowpilefront = "/obj/structure/bed/pillowpilefront" + var/sourcepillow = "/obj/item/weapon/bedsheet/pillow" + +/obj/structure/bed/pillowpilefront + name = "pillow pile" + desc = "A massive pile of pillows!" + icon = 'icons/obj/pillows.dmi' + icon_state = "pillowpile_large_pink_overlay" + layer = ABOVE_MOB_LAYER + plane = MOB_PLANE + var/sourcepillow = "/obj/item/weapon/bedsheet/pillow" + +/obj/structure/bed/pillowpile/New() + ..() + var/turf/T = get_turf(src) + new pillowpilefront(T) + +/obj/structure/bed/pillowpilefront/update_icon() + return + +/obj/structure/bed/pillowpile/update_icon() + return + +/obj/structure/bed/pillowpile/attack_hand(mob/user) + to_chat(user, "Now disassembling the large pillow pile...") + if(do_after(user, 30)) + if(!src) return + to_chat(user, "You dissasembled the large pillow pile!") + new sourcepillow(src.loc) + qdel(src) + +/obj/structure/bed/pillowpilefront/attack_hand(mob/user) + to_chat(user, "Now disassembling the front of the pillow pile...") + if(do_after(user, 30)) + if(!src) return + to_chat(user, "You dissasembled the the front of the pillow pile!") + new sourcepillow(src.loc) + qdel(src) + +//Colours + +//teal + +/obj/item/weapon/bedsheet/pillow/teal + icon_state = "pillow_teal_square" + pile_type = "/obj/structure/bed/pillowpile/teal" + +/obj/structure/bed/pillowpile/teal + icon_state = "pillowpile_large_teal" + pillowpilefront = "/obj/structure/bed/pillowpilefront/teal" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal" + +/obj/structure/bed/pillowpilefront/teal + icon_state = "pillowpile_large_teal_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/teal" + +//yellow + +/obj/item/weapon/bedsheet/pillow/yellow + icon_state = "pillow_yellow_square" + pile_type = "/obj/structure/bed/pillowpile/yellow" + +/obj/structure/bed/pillowpile/yellow + icon_state = "pillowpile_large_yellow" + pillowpilefront = "/obj/structure/bed/pillowpilefront/yellow" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow" + +/obj/structure/bed/pillowpilefront/yellow + icon_state = "pillowpile_large_yellow_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/yellow" + +//white + +/obj/item/weapon/bedsheet/pillow/white + icon_state = "pillow_white_square" + pile_type = "/obj/structure/bed/pillowpile/white" + +/obj/structure/bed/pillowpile/white + icon_state = "pillowpile_large_white" + pillowpilefront = "/obj/structure/bed/pillowpilefront/white" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/white" + +/obj/structure/bed/pillowpilefront/white + icon_state = "pillowpile_large_white_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/white" + +//black + +/obj/item/weapon/bedsheet/pillow/black + icon_state = "pillow_black_square" + pile_type = "/obj/structure/bed/pillowpile/black" + +/obj/structure/bed/pillowpile/black + icon_state = "pillowpile_large_black" + pillowpilefront = "/obj/structure/bed/pillowpilefront/black" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/black" + +/obj/structure/bed/pillowpilefront/black + icon_state = "pillowpile_large_black_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/black" + +//green + +/obj/item/weapon/bedsheet/pillow/green + icon_state = "pillow_green_square" + pile_type = "/obj/structure/bed/pillowpile/green" + +/obj/structure/bed/pillowpile/green + icon_state = "pillowpile_large_green" + pillowpilefront = "/obj/structure/bed/pillowpilefront/green" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/green" + +/obj/structure/bed/pillowpilefront/green + icon_state = "pillowpile_large_green_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/green" + +//red + +/obj/item/weapon/bedsheet/pillow/red + icon_state = "pillow_red_square" + pile_type = "/obj/structure/bed/pillowpile/red" + +/obj/structure/bed/pillowpile/red + icon_state = "pillowpile_large_red" + pillowpilefront = "/obj/structure/bed/pillowpilefront/red" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/red" + +/obj/structure/bed/pillowpilefront/red + icon_state = "pillowpile_large_red_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/red" + +//orange + +/obj/item/weapon/bedsheet/pillow/orange + icon_state = "pillow_orange_square" + pile_type = "/obj/structure/bed/pillowpile/orange" + +/obj/structure/bed/pillowpile/orange + icon_state = "pillowpile_large_orange" + pillowpilefront = "/obj/structure/bed/pillowpilefront/orange" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange" + +/obj/structure/bed/pillowpilefront/orange + icon_state = "pillowpile_large_orange_overlay" + sourcepillow = "/obj/item/weapon/bedsheet/pillow/orange" diff --git a/icons/obj/pillows.dmi b/icons/obj/pillows.dmi new file mode 100644 index 0000000000000000000000000000000000000000..276e8cb3c5fb34c00f13d27024a0d4146f3fc1e7 GIT binary patch literal 5881 zcmYkAcRX8t`^OV8sy0JMwSHj;}fIZOW!_;@KpL+_U%G4V9|$ ze%RKnp>Uh$fLc>3*o#v^IW_K4WH4`-j~u8R)cE4S#}@S~ar%qSH!ZI&&qbyf z2Gxq74NvC?)MCW$4ho%QCNN#jo3jqj%SNn{7W{KNbyP!iuMl{P61`gnw4Nixt=|mw#?YeV^Ioq_H!ZC@-|} zz8Xq~qiigpj|z9opRPdeUDir&M;sW6og4O^mHUSa_5vGZN{q$>7d1lUNr(Ozbt=r8 zo9u1-C`8VBpo6LBxZ6dgzz;F~rG*}de5;NFia#K^gFL>+6B^M^Kk&d7Rm%O2aI?xl;2w($6-nPs?R5G~YkAr;CLh3LM{Vbc< z=m-$mAWRutf#M@rYQ;A zO9MFj;LB6m?Fjj+-V&hl;bRs;5dJB9BR=hLI?xo)jea8|cXAtMKipw%#bm1;XPy{E zx<;`9)7-SRRM4z?oUKx@84bTZWY9YXv~PXFBp7vHQUrId4{c@qcmz^5{}$lSbq*5- zZ(YBO-}kpU2P*r&dn=Q5-R7UJz)BUbaPn)H)mgo#Pr1_<`FvjTKKxqx_u}z1kjTFI zpo6SFR`vqZqRq-StdWM&Qj7{S*~QiA1UMLgbULrJvNURE`gVcSV;(!UJcYRl>i@f3 zK&W20>ZN-7rXIpacVE&BuR7m3p5E-}VB&iUL!WP-9|et2FZ24NSEiHaCfjpYdC|YF zZnY#pL&-WosHQ~Y=jFv=W+Ml9g2ugtl{3r=hTXz-IISP5bTqR*?}qp(FvOFrLI|sJ zZ;c&FfwWgBDeeE9(vv*68*AGTC(Bb5{)Za)aTRR2OrNK>Zj#UbWicVGeg`;|RbEJ} zN_0@>fBM0$7wuCMy?RZXt~0_#=*15y^JdQ>dcw*hyw>rcgZOAUGUL5%dEA5AjO#_4 zr*f$|bG?F3+md-bjuO>UT&kwv1M!3+ZhjPQ?kB;PQ>y%nz+j5b1+0mc$@82{6K)=Ay?@aa~KzRrt%|pW%>4 zC4$;~B66?Lp-9gNKU4Y1h3)AWn64C08Stwcqm?(L-uL_X0hA`tyJWTBrAh~9j!DsB zo>Y;o#@oW|Be}GgIuzvn=9GRmo?V*TN-1pTnuO229iiJiHPD;eBbE_(?lWBZUb{6R ziem?*bD_S_SRU`Z%Z5uaHVxpu&I8!Yx+`vBfKBx2jR(4+NmdNACcIE!A(3|V0JB1z6LxMJ>S*h z?^n2~a#pV|0#>>Ls`JAZc($@lO;wojE7wx*^=v)wAR%x+r>`_nUe|h+$v#(j%&vvqENzk7mo9zh`HH zbcUsOl^%x1stE;}W06hr=|{ks8r+hsOdh?V72@nG^K31f;mlrel9Or|Z6!IV`xz%={l%=eHw>2h?U;5p{)G*%c#Te3MJD$y~ay7%7m|89lE4aUK>&_v4Q> zJ8r$-)!pQw0kU~fT2RFbNd1h%W^B25e7>(f1UIUrjU4mtblT$^p&_5beYhwQi^31Q z2f{eN-_hk`ipTvtPu)&)>B%bSSnr_o16#*Wr}v^wz_Ek{hVq3WK5}Y8FC`#sjQr2- zO7;lKF{<@L-qGaQMtFIY8wm4NC~`6d!9h&B99u;fXSndfkbo1=Yuuqw^6|v9wqy75UeBSs{^gZXB4cIf3(!S)=2f1uvxfr{oQxu;CX77%#~Gnd#@fV9 zuv_qHl~GK$D_VO|0@J^3t54}yu@ByXDg$ZNQnQTw5jAXhzD)Bg3=&{7gUYYAdX2=< zFOA&!?SWgz9=k=xqOtgO4 zZChqrS-mtKaQ>#><;SL06mo~wczo5_m-BjfHAu7Nqixn2U>teQuREJQ9>X zd(Xswt3O5~eZ|?~h0B>G(0}N0qcKXBJOlHp8Qu;H)YI40oy@NT+5fl(V(P1H&_0Ws zQJPt_anuxcyNc?#6a4A5FwL>6bGvjI{Oq&AMH??$bf{LT^(YsC!7`QDg!7@HAx>3y zLy%Uf{pd7Mg9D>DonD^QbehH(2p2q#`Nh ztPt3NC{ScG5mZE4jbFSB(x*GE;wcPa(j36<=&nKV%HV|h8C-Kk&)#3JHO*;gjbsoj zWuD?{5dtxPV#0x&tEJ=`EdZTpLa5x|;pe^q99w*=;|H}k<$_ib_3uZv=^r!vpz{Tp)d)-N+|DV$s z>Wa~g3ktvy?1duyhs0(f68fGq+z9A$hDeZ6`{{m4@9HbWpOX%5cNWCAo*+OSsqer-nNU-II^x2J_%u?J5E+SP2#FaYIZ6KltRqJG?PXsCiy)qhiS#zuXbL++N?aN39=iI_`gk(3QK*i@h+ zRRsCg2hqIZ$1XpSW3aEkoJM;9222iAM*Rf&xA*Oy=n+b$b%UhG~olMnDr(z zsc~*OG>A1bRTR>Tz&buR%%HgRbMquB))R4j41<-SzDCCldZu|dmFGxf{-toXy|lVI zy8jLS3^w?xqt9wIvkYAL6f*9z{o~-PKy^ss;NBHT^CKg_9bV&%fk}{-J!IUc9L(I7D_FBS{XiT2>FK9( zj~|-|cfr(M%E2tCIFw{iMZ_ZTa6j(^#%K`??|6S}Vi&GRHMcpjuxaW}vacydbri-t zM}8CkbIkd{pe%?M$QTnUu+&uicEfsMPm_f?hr%6zZn-++MNqW%dGD)#HzzU#SI9C( zhhCZ>mKdB6&y`LT_^f~B*}zr7*jsCH1!L>!4hUhT6ZM;VIKJ9H%Fdy7{|UaL1H|;K zD#FF2z{SX&te$A2sr(D&j}~NFC5XhfrE-9~SR>2AL0{KXr3*}ZtkEOckO^zz)_Ah} z>xm&xlA+?ET#J+qr>sr*&jDKga%x!|8TIf)I;nN47`Bl1M^ykeMaxzhc8qD3&2992 z3fFPgpTV#_z$XfY`E)Y?#Rq;2f?^lmDu_2{+nq=-NI*kH@?SP|d!iM^vEUG2_zRAl zb$V90(%b5s)u0=yJWje5)^9@h>7tESoRUAI;Xj5)-xyx|ui+oHD=_}02kCze54xcT zviKO`zlczd+e@#UItp8bcK=00&gE#3MnNA7KE~_s_58TW z>C`FGdo<7&^wzYxJ}E%R$mlA&S>%%*%6xiN#4ixw@RYn8fZqOF1-wgf@w z{7=`JAM)DPN9j&x*%UrOu?+c4v{j!1tE&aa$3JXPUVWOnx>}Mxf{Iar>R5+9-zY2dByyD=-~Caz(tvh%SW5}B6*+J&F`f2J%t}f@X~&VOCAUaMIhJrZ)SiV z3mAL-^5hyGb_QVjcLu;$>AbiC+yQn+X+Uq+NoS$iX!JHvAwORGNx)Q&5{kKuSya3#`K}u z9Jn~ve-e)&mFOaqgx_RGAis!v3dF+8_7(F5b*s!$%yluo=u+TJ%>S93ks_*%h?~Nq z(PheB-|+kxr{F7>3v=vRaSrYh@+Ii~RBygEDYlkkuYcyr29&g$k^5A8PJamO!2%>^ z2n&!WSb%I?r+*pC*CrNcXI1cy7)O<5RM@Z|Vfef@nE{3bkKc^#2NlM`B~S+KG4{4M zL}FUIW3V6Oh=4ziH|U75CquB0We+oCjxEL;7&$tUx}4=A^syCl<}nwZBtx^bP6UD5 zD(Ce{YPkLD*D95VYF)h8p@9Oru{}eS$zOYyRf{NIaiRLwzyGnn-b;1f|Kd8?0&v>< zo~*>!z3e0dc`LBjHOr`UJWJE%AZ7REf^*Ne|YNg zPwztR&BN#S`2I$m6io(}!4<@*H{qY{_k)-eoFNXnJiny$;Bd?-fGoJ%k8fnphh|az zC$0P?h{)50CxCi0OUk{O1XrILhD{+EjEzRI##a50zj_VW@f|)*Q?AcY>4YaH zXUWXVz|T6d8eMlfrNFbVq?~JB#cEU*tI^BMJ+W^S-ofn8(98fO>zxPYEJcPNgAgH~k)dTIPoi9qU1FB}9MY3@BeoE;&xt z7`rpzdbWg^kb;=sSkVe=#VNbdTC<|5>j1aW9pEl()mh^>SjfeSZ@u^}?oz@{507Ab z*mvMS^q$gsMY4nDdJ!Ij*t3D_Fl^7xfiQo*Pmp_z1o7L{z^&8RA^aRk6(3Ef4#RtX{nMDzy)OqRnmk#V;(Z6E8>8~(K3W{Z2gcbt9a+onUlU~>Seey$ Td^f_rr3I)dX(^T|Siku{naNK# literal 0 HcmV?d00001