From f54cafad83d0638ecb8bb1e4f33230ae9c86eb49 Mon Sep 17 00:00:00 2001 From: paprka Date: Fri, 17 Oct 2014 09:15:54 -0700 Subject: [PATCH] converted most gun crafting to its own module --- code/game/machinery/autolathe.dm | 2 - .../projectiles/guns/projectile/crafting.dm | 83 ++++++++++++++++++ .../projectiles/guns/projectile/shotgun.dm | 82 ----------------- .../research/designs/weapon_designs.dm | 9 ++ icons/obj/gun.dmi | Bin 49498 -> 49558 bytes icons/obj/improvised.dmi | Bin 482 -> 523 bytes tgstation.dme | 1 + 7 files changed, 93 insertions(+), 84 deletions(-) create mode 100644 code/modules/projectiles/guns/projectile/crafting.dm diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 8dac27915c4..401410e2040 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -63,8 +63,6 @@ var/global/list/autolathe_recipes_hidden = list( \ new /obj/item/ammo_casing/shotgun/buckshot(), \ new /obj/item/ammo_casing/shotgun/dart(), \ new /obj/item/ammo_casing/shotgun/incendiary(), \ - new /obj/item/ishotgunreciever(), \ - new /obj/item/ishotgunbarrel(), \ /* new /obj/item/weapon/shield/riot(), */ \ ) diff --git a/code/modules/projectiles/guns/projectile/crafting.dm b/code/modules/projectiles/guns/projectile/crafting.dm new file mode 100644 index 00000000000..06985516e03 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/crafting.dm @@ -0,0 +1,83 @@ +// This file is for projectile weapon crafting. All parts and construction paths will be contained here. +// The weapons themselves are children of other weapons and should be contained in their respective files. + +// PARTS // + +/obj/item/weaponcrafting/reciever + name = "modular reciever" + desc = "A prototype modular reciever and trigger assembly for a firearm." + icon = 'icons/obj/improvised.dmi' + icon_state = "reciever" + +/obj/item/weaponcrafting/stock + name = "rifle stock" + desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood." + icon = 'icons/obj/improvised.dmi' + icon_state = "riflestock" + + +// CRAFTING // + +/obj/item/weaponcrafting/reciever/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/machinery/atmospherics/pipe/simple)) + user << "You attach the shotgun barrel to the reciever. The pins seem loose." + var/obj/item/weaponcrafting/ishotgunconstruction/I = new /obj/item/weaponcrafting/ishotgunconstruction + user.unEquip(src) + user.put_in_hands(I) + del(W) + del(src) + return + +// SHOTGUN // + +/obj/item/weaponcrafting/ishotgunconstruction + name = "slightly conspicuous metal construction" + desc = "A long pipe attached to a firearm reciever. The pins seem loose." + icon = 'icons/obj/improvised.dmi' + icon_state = "ishotgunstep1" + +/obj/item/weaponcrafting/ishotgunconstruction/attackby(var/obj/item/I, mob/user as mob) + ..() + if(istype(I, /obj/item/weapon/screwdriver)) + var/obj/item/weaponcrafting/ishotgunconstruction2/C = new /obj/item/weaponcrafting/ishotgunconstruction2 + user.unEquip(src) + user.put_in_hands(C) + user << "You screw the pins into place, securing the pipe to the reciever." + qdel(src) + +/obj/item/weaponcrafting/ishotgunconstruction2 + name = "very conspicuous metal construction" + desc = "A long pipe attached to a trigger assembly." + icon = 'icons/obj/improvised.dmi' + icon_state = "ishotgunstep1" + +/obj/item/weaponcrafting/ishotgunconstruction2/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W,/obj/item/weaponcrafting/stock)) + user << "You attach the stock to the reciever-barrel assembly." + var/obj/item/weaponcrafting/ishotgunconstruction3/I = new /obj/item/weaponcrafting/ishotgunconstruction3 + user.unEquip(src) + user.put_in_hands(I) + del(W) + del(src) + return + +/obj/item/weaponcrafting/ishotgunconstruction3 + name = "extremely conspicuous metal construction" + desc = "A reciever-barrel shotgun assembly with a loose wooden stock. There's no way you can fire it without the stock coming loose." + icon = 'icons/obj/improvised.dmi' + icon_state = "ishotgunstep2" + +/obj/item/weaponcrafting/ishotgunconstruction3/attackby(var/obj/item/I, mob/user as mob) + ..() + if(istype(I, /obj/item/stack/packageWrap)) + var/obj/item/stack/packageWrap/C = I + if (C.use(5)) + var/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/W = new /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised + user.unEquip(src) + user.put_in_hands(W) + user << "You tie the wrapping paper around the stock and the barrel to secure it." + qdel(src) + else + user << "You need at least five feet of wrapping paper to secure the stock." + return + diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index af3dced735a..60b5aa7394e 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -140,85 +140,3 @@ else user << "You need at least ten lengths of cable if you want to make a sling." return - -/obj/item/ishotgunreciever - name = "firearm reciever" - desc = "An improvised trigger assembly for a firearm." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunreciever" - m_amt = 200000 //You need to upgrade the autolathe to make either of these - -/obj/item/ishotgunbarrel - name = "shotgun barrel" - desc = "A long metal slug barrel, with threading and pin holes that are only compatible with specific weapon recievers." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunbarrel" - m_amt = 200000 - -/obj/item/ishotgunstock - name = "rifle stock" - desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstock" - -/obj/item/ishotgunreciever/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/ishotgunbarrel)) - user << "You attach the shotgun barrel to the reciever. The pins seem loose." - var/obj/item/ishotgunconstruction/I = new /obj/item/ishotgunconstruction - user.unEquip(src) - user.put_in_hands(I) - del(W) - del(src) - return - -/obj/item/ishotgunconstruction - name = "slightly conspicuous metal construction" - desc = "A long shotgun barrel attached to a trigger assembly." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep1" - -/obj/item/ishotgunconstruction/attackby(var/obj/item/I, mob/user as mob) - ..() - if(istype(I, /obj/item/weapon/screwdriver)) - var/obj/item/ishotgunconstruction2/C = new /obj/item/ishotgunconstruction2 - user.unEquip(src) - user.put_in_hands(C) - user << "You screw the pins into place, attaching the ." - qdel(src) - -/obj/item/ishotgunconstruction2 - name = "very conspicuous metal construction" - desc = "A long shotgun barrel attached to a trigger assembly." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep1" - -/obj/item/ishotgunconstruction2/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W,/obj/item/ishotgunstock)) - user << "You attach the stock to the reciever-barrel assembly." - var/obj/item/ishotgunconstruction3/I = new /obj/item/ishotgunconstruction3 - user.unEquip(src) - user.put_in_hands(I) - del(W) - del(src) - return - -/obj/item/ishotgunconstruction3 - name = "extremely conspicuous metal construction" - desc = "A reicever-barrel shotgun assembly with a loose wooden stock. There's no way you can fire it without the stock coming loose." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep2" - -/obj/item/ishotgunconstruction3/attackby(var/obj/item/I, mob/user as mob) - ..() - if(istype(I, /obj/item/stack/packageWrap)) - var/obj/item/stack/packageWrap/C = I - if (C.use(5)) - var/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/W = new /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised - user.unEquip(src) - user.put_in_hands(W) - user << "You tie the wrapping paper around the stock and the barrel to secure it." - qdel(src) - else - user << "You need at least five feet of wrapping paper to secure the grip." - return - diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index a1a4d361ccb..c585150a334 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -141,6 +141,15 @@ datum/design/ionrifle build_path = /obj/item/weapon/gun/energy/ionrifle locked = 1 +datum/design/reciever + name = "Modular Reciever" + desc = "A prototype modular reciever and trigger assembly for a variety of firearms." + id = "reciever" + req_tech = list("combat" = 5, "materials" = 4) + build_type = PROTOLATHE + materials = list("$metal" = 6500, "$silver" = 500) + build_path = /obj/item/weaponcrafting/reciever + datum/design/ammo_9mm name = "Ammunition Box (9mm)" desc = "A box of prototype 9mm ammunition." diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index b825f455d83fca6c9ba64661740250dfa5e67f09..5569606930c537393db15d5b3d3bd9d54c11b995 100644 GIT binary patch delta 10071 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 delta 10027 zcmb`tcTf~<@Gd$_Mu{RIB3T4Q$&v(?93&%xg0N(ej6{Lm0TclN5k-RJBqBM9WCR4s zIZ0T_%aX$ayQDLI=hpAuy8oT3L)Fy2wanYo@6$cqPj_#^E8;()#AV^1!6OX+w;(hq zK%$|c#LY!cEa<36Iuye?IUbnmn=sm{9I+c=q^+7Ql*BjN-*>)N_^{=je$WJZ`{ognw{i=8d2uI2pB~Se z$8MKkyXVm7o9H>aM1N~RaE;ai=_dc}+qbfyRuVvgMK&gzohM6Weg8GO)~^f5RFQwN z{~}A5YWz~Iw*51$;tV#Bv|_PzP?kKBFUX-2F`ozbaS|MjoWJpzBJSE%kHt1G@OTyN zCxm8!vwM1aeohEcN6E;@49?BbgtuiC;$c8y4=Hd>#F_-qtC;}D^vr_;(&m0VWe(=5 zbKLEy!S)IU9S;wjmLNUL%^&JbxbaJ@MUAblEDq;s`4=?Yup8vVT3$UvBVF4NTQVHp zjpOv0t@o)88yYg#tDBf|>IH!x5|{uqh5n$R@Y6#n-oR_p3>9}PJ-%NiH>i6Rr%|%3 zFm95rCS&Ye~V?0yOiev_i<0?3YXV#l<@KyQUrF z!s+;V4~E=CJS?ED1?4l@11A4D#l(5s&_=AkUYt9?DY?pz7n?cAAbl2_yU!VhX&Fid z%cQ+l%A&z&D(wt;whZJUi+$hcyt}Z!@dGMM6Xt$tXxQpN#sI*{!=sGfcoR)kRrQ_h zo{D>&*>{)SKd7k+JD87{sOV|;RZVFXo}L$j>zPgLL1ySPVsmCd%D^zxorY~sl>F1D zPcWUY8fQ%l&Zvcjg@$ao6baW4dwY9N#C2%ZbMfFjgge$JASI)>SG(bbmYye5>BM0` zgj-Oc7(AV8b+9-1_3(Cbibg%xYNI(=9NrKm!I6z4|ArS1ZL$tt=}m6CrJEY@`q)2} z|F)u?UEYK!-RXW-TR1TwGd;~C7$j9!qm#j&;N}omZ#_(uTp6P9=n(@Ao6M3QTTnAO z8gwSmHjAYQzv*qb`uU8F8Rn}jBF+}lS*TcSeer%AuuciI3+87K<>Bl5m4oc^GZTR}%hr+Ynm%aPI@^J9u4Os38-+lh){VX<-U zWTC#Kw658#etezCWvU`f)sTkgXK8Z)xOO?iIa~5h{l3*G+TG3$W2Kml|ol zQ4od)tegRIE9%a2?}qwl)#LF7&QYRpQ|>=O5#t<~l{N~3g|vd#O0QKxL4gJ9SFrjd zyZ`5!i+iVJIE`u^J;qtO>73xaES4j#7RT8m$_hsX4SMNB#BPsxnwgpz7#f1Z>-Xu4 z(afzP@Ru)NQtd1OsyVFMRd~wPAtqat1}MD#zwv$r;f-p!iHU|B!Ou^?yuqKIfls%c zD`UwjGoSU<#phUi9?RD+UVo(P<>8rENoW<}Y+O4C^XLnAJky}GMOAh1uXOtTsNbgZ z6NTr(pWsweXom=|et|*P6q_er247)dFfcQ_Tt6#V5T4dk(OV@fuXdX}_RRrV>{}I{ zd{v}wa~Fw|X|NM>SA|Z{xY+$oQ=nlRHks? zJpAMs(xjm?Wc1P|XM~h+3>bl?k?}-=|b$NFm~-=}i)Vk&&@m24~pQjj)v- z{lcA^$}Ioq?j*%mjop|g5@oit$XnUCK;>Ng+Qx>cQETNKPa^;wTW=-2ci`_3?RA); zy19z+VL+lXI9nDj=0L~c%MpVQ8(n!-SySPV7QoVHV5By*O)aL5lHyT|-Vv40Ucqxg zT9}IZjNS3w!%griMC0j-OYO@()AC>h$oQX(s&02%cuODib3ILXDrG>!&imF^MTHGX zDY3riI+CB0SItPdyKBH2!d%icmo#>I{O8tNZlFGr{=y_!jGOip@iC zfpQ>6E#|Ff?Xxdkcvx_yLrAv67v(~}@Q+QNxJOKawtB!5d8<&meJ;a`ET6~e9CJ0y z)`YoBvwh*u#?RWod+%|-wd&S62DIFPX)bt&V{`Ti<=+5c4QpR6W8uVXMAE>zY^AuB{N$41I@9DM%JylhQcZ=@6 zaa;6!WDw`JOkZ%Zg)Pjzkh$c!*Xm;wgY=LUh+4Cf=>n+r ziBz4*KEkdjs;QBQh2rVKzIQ>%k-~5iMY;ebvItHi?a$(o$y29vB#KF-S&y&`uZJM- zrz5eV`3=xRH<4J${Lez$Iav2eagS=^PpX}DmzDL+XHE>FMMm)@2Er$J1`_(uidMly z_e=PSj1N_voLVjoQpHpl^zXh|Sg6s1_PO&5qRc=6>X+fYOQHiA#@CU*YDYWVEZ*k^ z+H4dGD8WYqyNgPyuKL{gihZF;*DD* zis0*T$gP(yGH;Rb^8`xwylYkxQ49*$RB}FWNIG!EC?{tyd=pZ9lbCRLOWwV6oL1I??u-&4P15mq|0xmg4+ujuGdv-1t)q4yyk zofdmkbsWZCg0Ic`@#G^{e-nM4!m|GQx|IUar^t0@Ha6_$X+7Hc#a6?xCt6(Z1$0fm z_eHBso^_GlnBG)a7;pWW5ShY;^BlVsoWfbc;d-Tp>ET3BLudhRY(>lYOktT4%qn*9*1sPN@u?AR<9Ls9cMAludkJkHetSb(ie#ut83Y+k@{Zz#aVUFJ!C^AldT1=3X zZHg&lS_xkaoKd)?Ab?yoWPJc4kJN4(kvv@AH*sEnzTs=>3IMDvnktG$=dB?r8ISTa zPaciM(2*|SnpuPm&umD7ID|&$`l%!bK7SEY)Jql(TyO)^uM~1p( zj`)~82wO1_UpC2~@%KStk!CaLP>=u$1$9 zc!D^NfTf71Kmx~`O_WN#w1CmX_`+DN7tBB1Wo}%{G?Xc|xwCuR;-yLwp7Qa2K${@6%-{Vv^+2+dVl7IaZ^dEu$pMF1TF0{>9_QyyDvG{e1e+U1uU@?> z+)__(?04ZP$9?Ap5@+a+ET%7}_3s_P*9FKPZ#R$6p61?t_S+)u0rTU>kD+Kz1Y}aB z&-BjiiRFO5@PS1e8YA+lZGNr2dSwKJbF|?_gf(QHqQb(2PoNbk&ldK+J0 z`abY#J#ld0`=5fx%5k4qMVed#x!>%+AU!&9B(D1}JVS(NF>2I^={I^|EJ_M@VZE*>z-s~?(i=O=eukM4>)DF>jXCQ~ zNPEa~+=Ly-whxX5gZ9Z;lCO?wX#9w24j@S|CcK(G^%%Y7h^`HzGslnC%}x^k9ULW!Aky4zm)l??D6Px3ZFxzRLFqVV4 z_I^*{I(svCrQ>`=!{{PM`tM#c8eFZuNI1%9txy$GM*|>rRSF`Fn1PyMnEC9d8|pyC z9RIbg-)VGTPc`t)oA|KH$?nTJ4m>JQX6rhoDk8xDynb}y82S4IZo1-d-fQN$q0M&Z z&K;%enH?A3)W`c;Lb{$OrSDuR(Mo^wNJpJmu*PKI@DKbw4C_ZTsL+7VVF_6)#1CmV z|9H}cA9@9b7~&`Srg@>_R*LAix~)Cp1{=eY86GnW#5FyEm=SU5dF(AUF?hfnaez-? zf#yq2YVtZnr|w+vraG&zjj2-$FK{>Tz~F|Q#akN(to~7=(Am2QA!70O?kM^d^kBCb7N#u z`Z{j4zqA-gN_hKfmMq+>#8s-F&D&b(M#H%4tPdcmcb(zj2U0@8z8SBXaficaS(&gh z%(ri|ML_rB^u+sUx6c)^}+Sqe`X$3RHBPjOqMoN!Th@hx&0T5E7FIAgMU5}=PT!?KCQy~6k zB411sep`TJn7Q9Ab>ptv*eIGmc$<*0yS3J4fs1~k7FG}>^Sz;dl=bqkyoVeb8)Bi-26V}!$ z-n*4z|Cj=h7%1u#3+Y_CU~9KR^C4Ky%!SkbqGr%md$O1Vl@+S0rS!6P{JeoztCOANRp!eAzCm_y8aOlBjCl49rsk7?l64XR)X#eM7`|NZZGxlS>_=cW-io=2*Yyh z9)X&gk>U_*vuD~Tel0>vr|76NAS9%hr#uVMdJO3pd?k#E&Wgf+nCmep3w=WkebX*% zZuz=4>uoqEg@OK=jc#iI(=~|hE7G-FhEmb}xBBv`u7$#yuEO#s5oBgz``&9V)8G5N z=g(48Z`fTcXBo)gjF{shR-t(aI zrK!gym^I9O1Sz>GTA8s#JQ1+|jj771Cge%(d|SB9P`2t_E-u(~jeFt`%HiuL*7dKw zfe{!!zLUzezoxtoFLAiMz2}`VIGFY)%$=6Q_}r~=nW;45pQZ{>9YZEQa|*QV%(v0A zvPNxA*JuGAfn%HgCaAMtbvvhMcZhN#AnAH}I=TCkz=`JeT;J5DutZhQxkZt-@W<2ZtW^An&lk`$|H>cS9-~WP3nE6HctD zsR_{SRksaAW3l^4`Phb;Pj}C^(K+(SR61nnHEk7_;Pj`y2$g2`bDJLByzKdtZ*U%D zDCPlFTLZy|hraC{ho=vOYJ?IY)7mfdlm8Wgmrf%R0ZYh{KC1$szw~w#J*_MQ;T}Er zN;B*IfvVVZ672a~@D^k$-|6Dxl@xavFgCWzs2rChbtSm-25BHQ@R1MkPZgJul^X6l zJd*HjV*i2_SsFxOV+nyoWK!QrJEiZ7k#1O680QjjC%sc~$!jY2o^bN|zG&1)xm zJO*d6E5SVusEf2jtI56dM^Ce6NWF~e@9($Y+}xaO4D@Th4#(>xbL9n6 zG`uAc0&d87Q%oR0IU0_0#*U1Wt2)Kz{Oarv%+aAUxR8sQXh2db%R?q*7r&YT1AH4+ zk)U7{$H6GqgE@hCrA9%46AKaEIP64zY@62o)m=M+)W(j8@Yxt2MJ4@Z|LYfcG525P zVm@ELex;~Y9unbPxBm+SD}(2x|HHOIrmPsbubk}ycj^&QgC-33ko|H;Gi~w&OpXOB z1$uLd2$n{e_T=`_*F;W%q*qC)z?>I9g8LUD;LzHmkS&t zf=}~$kC(#L5y<%2v}@t9dc;tdRpWeGUK}Q6jwS+-67Y(3|_0?%bp$61#mBYEQD<6ndE@wV{d_V&1klEX8#`(=LH z?9IFY6)RKzUFJDZ=*pEV!Y-4-RBSR=ySln8x6*A&5Y38T@AL)kIx!J?N zR_ZD~R&sugS>{ux)sA#1pl8CeeTelt$Yhh_nkZXPw?{bg}cuDpvU2G8d_SHe*_(ZpYmbAh3Ip#m2<2cFW#haNml;A(-vNv zv@4snzZ&=KMstp1_4cmHD%=-UyLt2P zEBNN601GxYR}JkOw~fHgz%a!LhIUK71iuT9(B)z&@BGXno`xOv&tBijxoRjxW9%#NpoR&gq*QFP}}TR04WdtYemniBz{As2K0 zbdry40pNN)AG^~*8W@aun2B|ismQ-)@0L$8XTId&UzcWR_#rMmoxM!kJT1|4=dU85 zpMYQlH>;OsJUcg!Pxl9QN-t!3-0@>32mxtnZXEGjy4RZeQ2X(+t( zYU=P`){3gCVb)APBK^;o?^)dXJDFTpmLp_8K^|O{@G$oTlx-^bQtxVxuuU8RcP58{bn1Xqao|31E0Y9xpS;pY?H)fyy{j;YsP`?dvhTYtaSg}w%Lb*E z_2mnhq|SENgN2uhZQ-;gw;pb6Y^Xq~3Bu#>6rH#6EnX^b+W8NI`yu|v&*)XiyRvjJX$EKSTkBw`7_}^avh#C%VzM=_Io`j` zz5Gep!CbOM95vLHdXoaY`(;g8&j}$Q3r&;2gkI5+V5h`<&u57|Vsjb^2?^YSf;4$~ zc_`|qsD$1X)8Gda(`WMJ!926uoxU}s$uvf>6w~-Mz6|J{wOG*gr-A^M|uw*wnDtjv#)(U_*tft*ZudGpM3;_ z*nokr;xv*<4gz=d5r|kQSHD!X1o($!eY|a#-*!HE^eD$#_PlBzd0WVjcd_}R#**8Lglr7|V6_)a3ZAzEH?`*r7s zi?j-w3)JH~g|S%{?v+zXGNmg=)tj)(R=#KYDp$Cq4ACDwx}PGJrZObkbKzwN#O2n% zE=kz_rjttRhx$U!@0tkwtSQ&Rx1B!guVPxN_-~B(jWX!DxnZ`Nz7>H*uV>v7k0S)p zapuy}(o}acj7(PXppl>F%Ic~BI)va=jdyg~OBZ1U=KdVNsXA6qev9k& zZA$0^nzwaKmM_Mug~s+{`)seN!s+_@Xo{K-30soy23ehh6Ptj~DQrI+*e961&flI_ z*Y)JoPK7++JUnGYg46?O0m{0vGJV5=aAJkER?4yCeH`}LbyS1KB^%$frfj!o&Ao}q z?pKL++#{S#|4z&*6FMeL`~ufpQKPdKjl8l)jEKb?i8~b=wZ0*5s@vW@Dl<&zk z;Eer0o))ZjQQFEAWwG1$_x04_ob$%;&XfN>p_otM_W@KKBK*82ElOEg$0M9!r@K9n zMJNVM{d{82g%Sb|&{KC-PHUUaL}r&oUf5nqufq(1FXNN;R|)k!)gzHO*8?Q_D529D zs(%L}@jERwPkxA35G9$TnSCUq>rV1&kbvG|00|H(-imeAL?;ol=$@mXxxWcE!pe$I zHarS!n-89z6_cpX%7TS_p~tuiW^S_jYE0EeJsn$dvRyrl-osL}Ki*9<;hXe@V2x&5 zZ+thvH=4+jpt??;4dKZBlRop`WrCn*g&7=>ss>v`FrJ(V5KPsBgLoLROBUx-r^z*U zw#RP$l;rv$^iR1tiX%JpXC_PcC=fKETBE&jrf`t3pL0K`%0#@rF*x19yMWJS)S4#m z^fc(Z<(%xsTqXJXL@BNRsYmp0?CE`%?)cjlLy3+tU#=9FcC5LmImN6VQ_nI8VIxh! zw_8~DGv^WM(St!rqlsdCZ6ldLLQFmI_)HBVQpNB1h`+7KxxMQcW-RMbdXKKQTbK@`RLOmK*G?3?I& zTxHUV9V&c0=K%gLHZoydbd6 z+=M)6pW0)W+p^rhR4ic0L0emfsW&CRfe#v8sc>@l!?-Czg=Mgsv|Z3(i=ILhlJIZ9 zMbixfq5nYIctbVW|8FtKFZ}a&#oaoJ|2_5MCsO%W4ZmLdR{;LsTY&#xi4kvMrqxc2 zQ5~MyVVFG#^?xdHi=$|j`yhJw03C3>Ag42PUWskX3~v^M|0&@3LqFWE8O89A5$o!z z>FC5%3_u|{uZf8hVmc7p5$L3@+9;L<{=TRs7^OpX`uD<$D@X4*Xq!eKWpF~`L5efV zYp^=^W%nVEEE-6><*J#U05#lwqZZHd?>9Ps&zM)r=@7;^gv*(Ke zr33w+IEXJ?hAxALQPET&tHj+*d;aXF=~iuT<|%@EIak^5oz-mIlRDWHd{&3EXt>A6 zPoPhe`mY0Fpja`zY31JQWi~pC0CqMrBXovQ6}_UctI(E2A;UAXm7;cf07MF_4xt_0xfuR4BPg@T47>Dey|j62> z{4i}X0QfEh@pas!-F^GrgW-LG_)Sy0@myKmdUF}>p1TGK$zs|JS0hoqsh_%iaqoIQ zKcj_A70TI~Gmz8bZ&P{$(_Np-C$W);{Vb@SZ%fp@ST)U?KP$-V%bMl54&u-Ee@8E6 zLb!n>ijGPd)cR#{x_T~?Lat|E;in_!RJUgybq3pmQc>*c%8m>PE+@>nC(6`%(%MpB=IE!Uq8$~=5q zC5tT)b_;FYWZ$3FD+agWomLYT#Zt`TRQje}`;WCi|N4ex3_DZ$t>W9Mz|PC#M)ugxW6u#|y6iciZj- YjQ!xP^6!~c4*>epRMk}}QL+sEUuFxy-2eap diff --git a/icons/obj/improvised.dmi b/icons/obj/improvised.dmi index a48efdf24474ebc558ff9a92bfe4a446cab6ae9b..33e2c39ad759a8bcc33be1a1eff284ca02bf0f7e 100644 GIT binary patch delta 422 zcmV;X0a^ay1B(QZ7=H)@0002e>ViA~002=?OjJd{z`#yUPG&y~Xg~`d9v&1F6nsn# zQ85USSr8^BCcwbJiHV7ZhK7TKgN%%ffPjFwxVXByy1cx+y}iAzuCBMYx4F5wUS3{V zSy@z6RAORc(RGJU00001bW%=J06^y0W&i*Hk$O~EbVOxyW07ZCe~MC*GgE;^6IPg+ zmXlgslAlc2%*^79{F3z2yyBA70z;Bi8{tx|tl;YB0uBZMJ=jju19&As0002XNklYO3=m_YjxlE`fRN=Hci_@% delta 373 zcmV-*0gC>M1mXjb7)JyH0000N8gD%S001FSOjJd{z`#yUP97c}6ciLKEiEP{CT2ei zXg~{mObt;n2$5M3snW+d00001bW%=J06^y0W&i*HmXVKQe=>_R@=MZ7^NLcFGgE<9 z5Un98v8X6DhiK)+CHcw3yQa7#wZM=h)ke5fD=WDAxqt%@0NdbVD%bcqi~s-t%}GQ- zR7iF6XV9)_Z(v&k98^GBr5TK-FfJ-&Av5~S7Le@wL0*rBLU@%oS4l+j44+J6t zcwGcif-1u3e}Gp5&{zWU7y!3>N5Lo<1*2eC0Jd@xHDq*@0|5a=$TiH&4j@=nfK>^s zIzg=+W=`+u=z?iLRRXO}l#MKajzE~nIRl{qt^}+BT%7=`q#$FUnadG&aF$oVG$529 zq(LGT9UVv-7-r5y^#FP$#0>K3at3?=wGsllZ+dw