From 316de11b7c4ce47257e794660eacc1211486b172 Mon Sep 17 00:00:00 2001 From: notfood Date: Sat, 6 Aug 2016 20:10:22 -0500 Subject: [PATCH] Release --- About/About.xml | 7 + About/Preview.png | Bin 0 -> 33621 bytes Assemblies/Mending.dll | Bin 0 -> 17408 bytes Defs/JobDefs/mending_Jobs.xml | 10 + Defs/ModHelperDefs/ModHelper.xml | 77 ++++++++ Defs/RecipeDefs/Recipes_Misc.xml | 178 ++++++++++++++++++ Defs/RecipeDefs/Recipes_Production.xml | 52 +++++ Defs/ResearchProjectDefs/ResearchProjects.xml | 15 ++ Defs/ThingDefs/Buildings_Production.xml | 93 +++++++++ .../ThingDefs/Items_Resource_Manufactured.xml | 26 +++ Defs/WorkGiverDefs/mending_WorkGivers.xml | 27 +++ Languages/English/Keyed/mending_Languages.xml | 6 + Source/CompProperties_FilterRoofed.cs | 15 ++ Source/FilterRoofedBuildingComp.cs | 43 +++++ Source/JobDriver_Mend.cs | 161 ++++++++++++++++ Source/Mending.csproj | 55 ++++++ Source/Mending.sln | 17 ++ Source/Properties/AssemblyInfo.cs | 27 +++ Source/Textures.cs | 16 ++ Source/WorkGiver_Mend.cs | 130 +++++++++++++ Textures/Things/Buildings/TableMending.png | Bin 0 -> 17513 bytes Textures/Things/Item/Resource/MendingKit.png | Bin 0 -> 9519 bytes 22 files changed, 955 insertions(+) create mode 100644 About/About.xml create mode 100644 About/Preview.png create mode 100755 Assemblies/Mending.dll create mode 100644 Defs/JobDefs/mending_Jobs.xml create mode 100644 Defs/ModHelperDefs/ModHelper.xml create mode 100644 Defs/RecipeDefs/Recipes_Misc.xml create mode 100644 Defs/RecipeDefs/Recipes_Production.xml create mode 100644 Defs/ResearchProjectDefs/ResearchProjects.xml create mode 100644 Defs/ThingDefs/Buildings_Production.xml create mode 100644 Defs/ThingDefs/Items_Resource_Manufactured.xml create mode 100644 Defs/WorkGiverDefs/mending_WorkGivers.xml create mode 100644 Languages/English/Keyed/mending_Languages.xml create mode 100644 Source/CompProperties_FilterRoofed.cs create mode 100644 Source/FilterRoofedBuildingComp.cs create mode 100644 Source/JobDriver_Mend.cs create mode 100644 Source/Mending.csproj create mode 100644 Source/Mending.sln create mode 100644 Source/Properties/AssemblyInfo.cs create mode 100644 Source/Textures.cs create mode 100644 Source/WorkGiver_Mend.cs create mode 100644 Textures/Things/Buildings/TableMending.png create mode 100644 Textures/Things/Item/Resource/MendingKit.png diff --git a/About/About.xml b/About/About.xml new file mode 100644 index 0000000..42e0f44 --- /dev/null +++ b/About/About.xml @@ -0,0 +1,7 @@ + + Mending + notfood + https://ludeon.com/forums/index.php?topic=22894.0 + 0.14.1220 + Repair the durability of items. + diff --git a/About/Preview.png b/About/Preview.png new file mode 100644 index 0000000000000000000000000000000000000000..52c787f60dc12db7f04df5c7a8eaac906a401ea4 GIT binary patch literal 33621 zcmeEt^-~-{*Dg+QcXxthA-EG<13`kjOK@8jci14o-QC?6x8NFFg1f^K^zwdh-GAWz zdcUrknp3BzyPrPVGu;!Z`c)PKl@t{Q1_nc3PD%|12H~BAP5glLeyf;Ob%ueV#j=r< zRJAcPgMqOQtV-9?AW&|Af-DcvGcx(olqUraG8vFjGBUa16M~po1frPb5fBlizKP?H zN8|=Y<>td7{S3(O8FtNX_yhVh+4f}n$L+18xT3xIPt64q%-_U_fDx}$lz@@a5Pn%M z$@Gj4WQ>LnA7HQ|0#N5);I_@^3nbKg-fYNJU~i{{>26f2-$3hcwjts&J}@xY9x9&5 z0|N}FN4=1Y^i1rAlD|(Nzdr%k-8~{NwknFlX9OQ$f*xWw-;9)>WRc%0lHO*VCu3wl zE95YwoDcriZ*O_<65F(}*d7~tfNMvLH;c|IkaC=floW@#KEB2FPS6Y9Hk`R6Jlw17 zgby_(KOC3w2Xh#BsZ)cWB71Q7&>=5uk4!`aq=O&K5r#R5uU>yf z9GWi&9Lfo>lhVxsxFr(qr;vx=@Jiphs|vf1ob^dU1z33fMs*cT~l{@`MI zR+UvE0z8V8S|a-wN5b?0vCyFlP14Iv9k^FzS~3bEHt43_;Ml*C(SfJmXAE&*V}vJZ z1S#athxKo_+f)v3XOsS3Ke5!*o&iKs+z2pDwH;5A_%KQ&Fss9!o^RY|=MFg=J0_F? zGo^0>vN>?#zP?lb&tjs#WMG*8!Jw}_$4+&l1}KKZZ21tz5vSbN#2$5fz;lSh;fuqg z_nc+X^=-)0!jEn!TK2$c!;%>zX9l1-!Bh62Jp{t!!hWGfmkMCUhQ|%Sqz{~@RIC@r z9J%;bgpe4BstSKB4sQ*|o(u05NIAW^GxdQOK0yR`A`r0_;ZG0J5}eRht!xRN6Vg)v zs}uZr54;zw;}*P6;3j1nEHyU587FD|u;l|~$1iGBso*6M!yRa;GTd)!#KIu%ILy!D zj3Y<_)I__1a8B6daG|*$@Pp~Ln3-XRdr?$TN5v6K5j1m2=Ys@Qu}H<~_z}~4Y^Kq5 z#aXT4&vM~2;j?nl^kLR>k#B=Ur?HTF7@SD-VI{X%h>_@w@%53-wit<#@wNzC;m?CW zTcW85SiSgO2$nr&mk8rQ0+;B*$TwRI+AuXec9%$Uk8^Np( zC#SKprrJeqlcbCz+J!$0f6j%8fJKy~Q6IS0_{yC408F@4q zHCIv<$BkGJE=hbiPpy=^Jfu9Av=q}efHaTs5Pcr5>5EmKt16Ql<#CvIo~ShpX-KuW zR-TD9K54Ln1m5(I!%uEh=^@3rHiw+I`02sfk~hVz$N4kMlK5{jVE8 z-elm-Rg6XmnOtmb1j;WG95mY4 z_8-0?UJ!;K^OK_rBx55Xj+R$_^k9DDKuQHW3<+F$Uc zEC)7Cgp(9LE#a>KIT>DKQN<4Ar8iD%Ul(NsOB>Z zDj*dFsL7NSG=6(zrb{FlMYRZbk!s5oRuyIT*T81MCy0!aX2@6jMp83N2EY+D3(cy}~+tUGL;;B;w-ID3Aw>R4%PDWEi`)Tp%E zIzT4B&YCtIWg=={>Lwp?Cf{067pW@X`xm=h_n9zj^+tvj!m|($X;8lJ4D2Dc8-gHG zR=`(jt6bM<#KZnWT(^(ys0QHkiMAw-;U~!v^I=5Om<_Z}26~1HaE_QTUv2z(C5@*cH!%j1O8D{AM&& zkI|sf@MfP_&(zkzCE7#F1J(oJ!Tp&EPO1kx0)Ztkp+^OqMhCl-e_@@`;m zz+)THRLnVoU#3$zlU|gji@J-k8hbI~WI&8QB81_WygfZ-Jhglfy`mb8%`bHMeR`o; z(RiZYIrs`uj10eK<$;B?v(9P^Wr6cb$JBRmpMHhO?-YUxZDzS|9MCnn`sMV<89sn;0WlG9o+ccjulIu5T+2b2)oCX*oq8RUk?rQXsf3;2*QAfUAfr*NwnFcwBPa zY}_-gBrS)t+tSeDb@UmGTB^+wI{JkmH%i^2tX#vO{NqA$d+f2Yg(_WH08)3HwR;9{E&d znP^#Ssk_e6nVLU>ypr69+?3pf{FoexJem9}xgj}v40DWmjC~Akj9QF$3}MU-c?!Rb zz`2u>Yv-2N*j1WY0-n=0e_5t*CT(VYrfue9CShhwreP-fB=e;CB>7~2rbXsmW>qE; zKeE6u|An*YzW$c}{_|+tVCWXDOPwo<(@YzFTVtzIt9{#A>vL;g8*c08HcaQNt@1tF z{p0QS0iIF!6uYn!hDA_yjlSO62M1g}A--t6c)duy@YTfC?A2hQ0HJuHG@cVh_IyajxZK5`-<(#XMcG&)C;B4z7wv~&5*&6!jQ`l*-*t0$r1emcEe`_cf)pL zt~09>zHDc4u{` zypg`KzuLS4UoBoQp8XLy;51+jVVz;6VSm7K!OFq{0*wRt1Kk28;fmle;C{eC;1&@a z(3H?R@wIUtXlf<^^;$l@xRfANMRqIrXR1;KFrgNt;^1>yiLO0NS@g7-!5?JC8VkhH& z$Kl0pCiK9=#Eu~prS?&M2yqH_>Tt@rjJOo}ThiwkvKZnI&Xr1)@{*>PN|d^ls+7`~ zdX~>G?9ydI1JFMylCcahOi z>qHrNAl7?Ldp&ZdNybmi@9QfX2bOc@b2>`KZ2D{_Kc&vEoywgmJ{r$m4_sHC+nWO| z441g4xP7=TxVpIexRba~473bt444Xu3Ym%gOwRJ##RG{0ijkU;7=lVA)4=!TgGD>+ zdf53Ftm5Ihh9lWSp4;!<0N)V598p<+**BTZU-WV=3Q=+_a>oj~3hfF=3PTE(a+JxH z@%G85zd9L#S}xzOt9JQ*Q+({i4^NCp3`(p{OiIkamt^_MqIevk5v>8%sF{zL_bszh zyD0LLlbkiTp|nAwHd zyIG-Gx>?IZ<38{dZJA&hLm-5_fxJ7jF|#-`ZB10bzm2#}sm-*Fw2ik-w2iavV_S*~ z)t=v2!Jf`u={w3XMPfIbzv64;bNn;kKLf;gxR#)hpz@%) zpn^WXQ07p#(0RsM9FgsHmvNsOBicD3hqNsBnB%{3+&p z<``yC)l9AD+y_OJs)2I)%EH{j67z!HBK+dSd^goHiKCxtv9qPKg|nTrvPGMt#1S!Qp?rGj>{LqAG^lM_35|({0Yc9X9*wD!O=3Dis>8=%B zIaI<}Ra|75w_i+HnOyii_j|R6OqJGI`%2asqwPH6hqWYOr}_@fchNY^;m1a3NMoU$>R>8g0qe+s^Lq{zff!8DMS z9M&IJW|Cr(E>SJfEm1y*pJdO{$+E~&Hu(7|yt=hIy*jPB!lBlo{+wo=Wu13jvAxC3 z%00!M?~cQp+Oo7!8$YYgmiz^3@5_*BoNarc*>Ut)Sug6EJRNPOs)=o_TZ+)^a< zBvB;gr0FE>q+!Ix#DpY&NIi%#NjA7L`JU}te@OA-a>R4Z^0{zab478Dae|~m;j=PV$|2FmL;~eE2=N!pgOEH-xG1phF z_O#@*rnDBFM4jekl!iG=U&|d!m5J};ei=IxzzK`-yYaJ$m+_s6n+ev5)p0<^CQlCE zn|+sEuQ`o*p1FzXUsD`Y=brqf{NC-(!P3FT_lVZcuo6F~Hmf!^J2boaj(o9xt$yJ; zeve{|C^?7SvnsVRq%yHescNlKqH4A>MwdtTPJ6x9+qB94Zk5z=!j9dp%JIya!aB>` zz}moW-A2S-#NvHjQi8D(HYPJFGdwgoG{v}4+*3TdUpb+fA)leeyZPf+GkLR{9=jfy zp3y4*s?VyzYD2SRGnPHkkM32Pv!$~`4_%LDkEgTkQ`FP)Q^C{f73CF3^OH$z^Fd=u z{bF593$#V0QOw-PZqq`{RP4vwAHO-+gPs%W1LLi&Q|!~YW2b?82<^4vo zQ3Y`Y^#y4K;bw(q&1Pk0;GNtZkzvGP$FFis9!%{C%?Viv-Rk-3dFoknz><@%v02Gk z&6)C(+*S-$>QoZl%5zE_%4Nzu$}>tWkz(Nu@8@fJFH|oUU^>v-TL!cb{0_{%A-~GJ z(!YP+k-oycSG%ddUb#rx(md3>SU7W^vzt6g;M<+pSBCz%^0>70qPqNaC3+^ZU#UKd_g{WQd!#n{C_Vqu%G-MHOce!+fN&xTJw z9`K%RURhoVUqxT9UPE6oULmh7&qfda7~+Ud$Rmiv$gRjyh`Wdy$Zm)~5yz2yP($FB z;fvtz;Gu|Nh?a=o5j+rL5JWNcG1g3KIS$bc!tm%qe)Te&HF8yR7L&04JfpUa^NRZ# zXQt|;Dx+$nsyE$~dz71$duD7~D^>foR^3U?$Bm-K7(dD3dr(bL`1>C@8Ey3m!=P0FtQ z^rF1t!KL_3R)%kbb3~R#tV6zxFF-6n@{iYrHA+B1Sb=HuBMTdgQ2FO_)?=CZhSHju zL+cIeB5UyB%Z&VtZ2pv#QA~D}9~Fe6AD51#fNF;nk0gOgooo)zmDQ4F--?aqJM(vu zKc9G+c}1Gpn&~{aJ$OCXF-eB;N{Fo}56DvRJ-Mp|&K1@QT9aDWz3#n^yb8QxAC?~a z9)=zQACRvccUo{$@#t}HarJR&@viZXalP@*={pscl<1kF7>?-$nZlU%8UN6GFl{L4 z%dN@LGDOnbFbFV)GVIZ7G8xFVCpE@3W-BQX%KuUDP{LH4l&}7J{_Ow_SG=(+!78rO~ny8y-ngDlx$7;tp@NCHRSj3c<{Mew} zL-D!5UU+rn@3Z2hvg!KiI_ZwOYP#~eb}LRRbB#@I8iGdc3hl~*bRu*RS_rGJu&?Ng z6%wZ;y`)gT039uzSb=B(VCTzF$ImmRW~DTx1f`4df$@Sg_O$*q6|TklX`N>sTOALb zUL74BO`Ua}mIgzMmr2XXVkGNa73slRD<-aDXhsFfS7`6Ke@eiO_+^ zz}UrjciP)$|AGKD>TkxXTi>v?RQ0FzovOBMdQ*azf`gEGummZ7@@qR??)EAo zmta;?24P*1tBIPsGC!!^=cP+R!p|wZLDn5{1*%=s`P1DTRkit-K7XtFv_kcy*`#Ns zi>14yKT0!2O%klL=`ybfkGpAK*Up$+^vj3GQiy`QPA{MT-kB=YN!6LuSvi|J%R7Uv zw6DP1cXYdSxU%T6UX=2}E~j!&zv}32WdFpf#mvT%Qr-!syWKv_G{`!V`vTn>LfWLt z2U-V8=!*&)3meSycQt?i;Y>FBJUkxrk3v!CyYp#ZozQS{%nzyq{%WVSWBwhlKUXU| zzQathHJJe_m)WW!CjPX~QoWHwcquC5ncA#_$*4)TDecKa$%HA*$uY^IfEOK^j|C|t zDgP3S5|fhLlh!|h)bCp|3-t5W+J#GnOFFB4a(&95%@E6jzUOJy)zB7iJ4q`JS`Xet z-6<#(nHR|yIqn6HMvb12b|hVtixa3MDJ1!7dM)&p7nkRimuPO5M=oqHge`0={9Y(p zFj#1*NGbQUZM99bJGJezMYa99fW9DH_3yi4B|!~O z-cp)Nv$M+1(s8tONVaLVw&XtG&av;BeQx{*LTi(*AFO1^WvD2swy5269$Wlw$_iO1 zT&Uq`Xli!PbuYeCB+FCIpJ@HzuP39YyehuxwwmH0(IM60++hTg0sVLqe^Po%X&7j@ zZD6!|nX=5T5)$&dzgl*r*v0&f*$~qca~cyC!%ERWAvVdGl^|dR{Pdu|(WZV-odxo9 zXh>*M@0u&-s=QIPay_`444o7+$TVOvh%uNkkZqszP?YBLVUS{ogdlLlE=C50u^B^@N?B?%;n!YMI)AqrhAt_#PuOACD!Ra(O}pA3R)W~z@2Zn~2F zs?JyT>|7Ul!124f{6xk>2-~K1YhK1?Q8=s)g01Ros>d2joprua3L>hci!4RZppN;!Tv!1kZ!< zEHclHwa^RHb)MD}Prd_(x%HWjn)5(VBj^$8b78S=*U9JNc(rlv8~Ef6^*y)R5Ci%@ zy!O3hAwOfeQ9THc_&8nnUIvFE3njoMcqeov=p;lZ&?SHqIWG(aeR;S(RKU`KR_y z$xUcaNsW_d9i^vb>VTAhY;Q}i&Zj%G!;n}j$~T|BN2$HYv4mYFO%#e|8+hrS_tAT5Rt5G(mh`QJQ1KX?4 zzlK*Um7Evv$vgdQ80V(Y zo0s1U!;|7&$~j=p@J~0nUt22-`v-Pn00$u^dm~`Y;Gt1YH&L(A=%*f=(Wz0U!ShSh zQ_?+aj+RbMy5YLl-8s)=(}3OBB2G>?68s@(B7i0}CMB>IuqsxRYDQ{~EsQLfRX{3YwfMxG ze5YTxZfFi9Z^9$7DyUGXEW`wTe!gk{ySg6!7b}#5AV%Vk`lxYRb~D$nvMJW!_xH2`Td%)bzG}I8usW&6Ko`{2{1SRUc&Ip?k`Kr-qV)Usnsiq2s5MoSW|Ywt z<8Sa!=7I5P;;&v`%dw;6CSjN4rgT?^Kh~S!HRRwa;iB8`@_G8{?_0sv@G=$D-{W1o@a*u<_W)YLUd+D7-cog2rLM=<^8FS2 zZRE}QHQ~DCb?Pvu#lOzK=xyaq`C0DrTKeO$dBS7OWA8rcER@1a)@Rt3$-BhI z%E`))=rrnF_f+OQ`5g1KYia!j+8r+<`OKA>hS(!O0ds;3Gd~YUO^6ONc=85Ym7isn z@8)j*enJGrNlwQV1_sOIKNoDNSc%O$liXWF+fBp9&E5hA=0nM|i?<>?X2Svy{VJ$6l*PQX@MSszE zFEbP55-%W-06YgOe0az7|5|<~gr&T<4X};k{A9uhfL?#*B8whMGsOL$4w=)4cZTXb z54>ZMVM?11yiop!oBPQ8-{Dl@@&8Md!v5!g&3l=LLHsXa8vyrTf=3+oe~19m-2XDf zF;xFc zaLjGhA?UniQ)t}*(D=|Ym=-Ow6Ly~QpBDX+urNK^buuksyk)<-n+C_&cpJ2_7x< zWkP{wqPNgh5Myy3G1Eq8_rO%`d_Hca`ri#?xy@^3`!^f6)?6hU<=FN&aCp7fv}y6+ z3n5f@&CIzaD_Df`Jtpw`NFwP zmYVL1K`tAz(g|lq5ThKctLM1;t7{qxYB%HQUh%hwM_GUR@t5#Fh4wAlYsOE|I$kU= zY8^D-^-qWHsZHIFQp197ya^Sj)LLl z17k&|Q(9-p%EvzHgj{UZO|7%rEJA#s{IUI{FR-~P_eeUzh38hJMwJOr3<+;8=qfdE zmh#4><0WNKhp=S9w~u3$Dm~4Y3|z%#Xj_*(2)EvR)JOTr*5iJ^(EdOt^T(5yC3Hd+ z>App8%t4e`t>6Fm`EpY6_8&*~`?|%>7Kj+&j#vDxUXyxWMAud3uuy8)iNdoHHzW$o zvcU@m|Le;~Z4vx9jS?91F-6rFL6ykkbROH3XPXzb%%nu#J%?;obFE0C-KFA&hoFAJ zcy{5>zO8^Dk$SMgK_}4(2z6tpcY~;1qGn2?DVn#*%USLs_TzdpYZ^m?mq|vBh(*n} zoTv1qfA-)x_Uf|jrxXDg??j4Ix7^i1Q)F;T$lva~nmYc;ZDw%8DF*NA@0vz?s*~I+ zByg65pf!5JtBEH1L&qQ|A<@q#(dziqmrGQzuO#WFQOizJ7@W`GHW@k^F*-=)Xh1_m z){tZt;TH=F=C*GUTrUHmm2PH!ZTGU|Iv;Gdz$82A{wJ~Wyf0u2XxVTA={Mal4I=yW zi-mtKErM8S>3iH}z4~nAYK{ZS5{~7ck$bEp0%>6G)4NU?@)}Nk%fqt53=ds_V;rrf zo$ZEvWa>;hN;Rgz)3`TMH{!_Q%KLNltr zlnwrZvUY7Uj|#2%Kq?zY45o(nezVS?MYj2j(oI8MX>0yP8$ww}Wsa9(Xo zPZH9j6zqmnYG15XLvx*Lqaj8r(D=~+IB_x^cykaq)}qB?Ri!-fb!2;_JVyF=d6=M= z4}T$6YQ4b1HZtMxvZ&vR;*jxsKbpHWq4RhMt~QiliZjRq6#&O|LpEJQ4soz0d>+v` z(Tzco34!I)Ywv3qmf*kA+|$l47eWR$i?!l+#2Q$57$+nij=f*pjEf zFOBk_2qisR2C3LyjpQl>rn!s}>i@d1% z{I{UNu&>@E)H;Iqy( z(z&Sg6NO$uK8lHN$B!yujc4Pq(tw->zFsxwOi~N>(^K5-s{3Kp8rVRluPrBB5 z`!^m{n9{t|ef`8oT0$NwTZ!jZE zWCm2*x?vTI&Mp@DcLVNCk01*X=9Sk4uc267A6gBw==<-a9#M3qP^^}3tHAKud}Juj=Kg*vyq7Ob=1aoo^ZxM30rMma z-yR=UrPn73E*!gjLgkfWk~R0*KOq@V^y?`5ds3e8h<0^b=3k_kV7K*BK9=hr7E^aF z0O!o**9EqhWBI~7-MP%$&vPIZ=~_Bwgv40LlpD`2I}J}9H`DLdoOdag!mj!sH(eLS zq3UQB?G%N5e~EqZt+|SyG5EeUe{d8o(IloWTlN_-U}g4q+aQRY^5@P0A=qA#+>N%BkKVj1Ef|l^2p1)+w z^=!eN^DeuT0iyb@Xk3Wm%V)*(7)%?W-Go4p6hrW9GYv}c>M?u%Fekm zl$%U}3|FA75|L>?udkXA6cjDrl5}@MA2|W5j$_(BtJ}Y-K_rk;rPxT_Z0jW|IW2N5 z44bkx=VGjDEI!g`G|0f0(N|b*c@q*QC>cFF^zPGYcMCAmYd`AYNs`o-D}wcJmUZQG zB%yy3f8Mt~lBFL;_GWxWSa^DS;xU+#68g;pI&civt&RtR*$l*f$E`ZYs-TU`K@ zH%cmu(#2g&n0)nT;EmCjUuTuhj%{uOIUfId^yi!S7&Y@Ry>6%owl!H@pkNry6TD4@ za{qM3p9f1qQmC4}gbQhsC$gOctuoW4yCCH?2V*bxuWO4F3~I7PpIu>oddn&cg8J>E z6_oq9F%#~*ZfX3wAo~}~XGCYp|596erIs#c#Qq-Cm-eIQ)zr5R7(!QnY-XP_Eb1s3 zjB#5!$^u$c9%23^3{pwz21Dj6%$9D1ChjAX3qhW87%P75t2RdEb=P!&x?|J!`kQVV zWhw6S#>)5@R->lXVE$he)v4YtWwnLQ(*V!ez|lHrYgog0B?E@me8|e8&Kmw~xlD_d7|1$~h_fC|`3x2QUyacF zB-u2GXM{fp0`zzb+p@U3`-SzL+!eD|~Wu;2rzqvD*{_VXfsJw}0saMR=rfo$rVLG0X{fs8dX z1Z3`Dhx5563DRJZQ|Nnk^_5JIvouDocQ(1eAW-1`>WBzvp+2)y9xd(bt82cn68Kky zKX*FDqHsS)CVuhae%7>k$nZVsjEY_4*5Bm%Aj*374O&{AYG7Q~@$M}5xZjkNDr8PA z>->%LD}=paenzJLvD51J_XK!G$hbexOF`a^Ag)bwzaAR0LSg&Ry*_ppyuyE=ok=iD z-$Jz1)m`w!xDbC=xXfQzRL%qJ{4PHNC7gR!N=hvRE@2d?jj%jF<}OW*oh6XczG0S~ z?32*=1`uXPixqQ1j)O|WdUy!|Xl2?Q%z__mKX*AU-(;LIKxr$Qk5~#B)iO8bFTzQA zS87Uh4s(vfXroV4Ex8s1w^mB@tT-#Hvvjlf>F%GiuW?VPpSqta2etZ)RbVs_9@|Xy zNxL|elglJz#F%Vlm;Jm7QZ#sUV)Grt-km?yO?bvU?ydeoMQ%_HQqzb!0N)OmLvi57 z_65~$^yMp{ z12`{ZL0(-acAp@_@pbw+A@#K znVdf?nE(ei%(T4Z3uIt(xmNiEndXGGf(5O{=LYEv{w`dpyPiE;(Gn$|wpA0()-qw( z%>6s(_%wa^X0HXxCi05hVLmy#l?DSsdK;hII%fsiqh^V)uE`;z_F@%Fgk+Vtyx#3W z=2r*&+FWd1#B*QlW|uDX`nLNCwcJ21i24>Y&?Tx>4+1baYxCOx8@QjnIVOP{%|q$Q z%@K^&Azb5^Y0dc)t4^VI@wGG6lA8)&K$FdXFVVeey2zg@bF$89fb(&n zSx2n62nqQM(_T)jUxmkZ^N5pPDl;XUm387DF*2) zkdyt(AC6BLAK z)7E2hi}Z;BR5hmayt>Q;;s0aGbpeH?Bbp1m#6G}SM~i-WE*ccvxX85UgbcL|&C{9C zQq~`~WmN4sm^#d}k%&Xupxd60Dn?VdS^G+NI~2qusl;T8ti85)rvp9Dl*7rbNUg5N zx~3Hu;?sVf-&W?t(Cej-#D~eonftfp*_ox0t7sKtHm zNjX*!RZsd#_hx)Fl)Y(77(R4s!ighx>9@#VyV#~hu5=OE&xQoi6=zuXduVTI&^>JB z8TswY7%g&fFyv;R%1n^kMIyUYP)Y_e1nc?qZUzuJ|uQa4z&drmpb94rG`y%#Cl7?^b>7eF4=>f;8{FBYb;g`-3>7 z)`b<&Y)Wdzhcm2KdGL~5Uw6=HqGX2g#KTow^eiaSHMF;JBrL-x$ob|{x%9A*8bxX4 z=5JFC1$CE#d@28@k^`~#)AWEacxGvd&QlQ(Q+`LrK01lS( znY5A!oJVtO^D5eL;G{enRv>%FyKgbho*B6ovHg9a%+)wm?r>1jYIw@4KullDuV+%f zUn8o0@Pno-FDMg^wE*>_2is?tn=||eP?Y%jZ8?3nI+^Y_pT0o2hR%a!PThTHL06br zr4ynJu~b;J!O5-pi;8!(P%D> zx2iF-04KC}@5WdTa8{HLMH>Cn;%m?Xc9%?=3RV+P5WO3CtA)wbo%#mY*}6Jquya%0 zlJh0nf4g(i!40l68VVZHQIeE(BCz59WpuRv+N)o;j~I~poiqJ!=edL1%t_P6 z#mA0RMyIY`VAc9zrY9S!59dVIJXTes#xmHgQ~-42w+ISv$>VIGiZ+`SpJ-TY{C4VJ z{0i?9d*cjfgEvT8ZC!P(%ui*hd>VdjPo+E-@zWfbr!%E}rA*_lU~106y!EgIV}W9I zkT@v{9)M^sT<6v-1-gk*Dpf8kdHs(q`RqyrfPO>M$UloVK8qD z-H6_P?zr!Pey4_A+@H8^Trj_bJ^Uo-Tx%U+$1Wzsfn=IaTxcDv#1*YoziM4`dRImI zbYfWE7lFxW_l_s!sNcfgTcZ(gj=0g!TgU!D#AA8cZi(S*QfnHy8bC4Y~kAWF`i*B3^pX9Q`jNH z6ioNtT8*uf%YfkAtE(p64w2$)T&}E_*<-Gao#byyJN8cyL4jtiA54;LU5z$2!+=#+ zJr+VhW~60#^`NFMWO8Zqvj+=)^q|)thf|&|{;!o+HP!WxIpy}8&F7}RXfQcYLwjVi z^@l0&V9NB5l?l-4ej3N9Wo5S19ffQ8fu^sh}q4+lbW#+=6re7+c1ma0=?8k4<0BShVH9t zk3GHYj2pfoL$c<#{X2)*z^S52SWrV%WG>TC%OXHUYVrfyXDZo`vF@A(RfksRKMgvE zDP`~5H+Rocd8?z$R?vD37wer(ACd&+zaGFFJ8(sWb7Ii54Iz<(c>XZF9DIVg_OjsS6ewueKq-3H3__7qz~aZ? zt+aIG(+xEhZ0$AWxwx7kTTQV72?-z6Z0tk_iPQkRR63)BJBKN(?jQXR&vJQ(9IB&J z8QULApnXEqg+)o)6!4Hp9#)toyZ67dE(Xi~MmD{m$Jo%G=J!v`OP1n77*2t&El^Wk z>$dKdmS9!qd&Z4^U_r~u8faWF;)woO&C!ZLbvaTUiM<#rgZ6#HbYEn@blFuOaL;#? z6ShC!t~HXo{Q6wiGUr--Pw7~{?3!-toBP2mhg9)kL%lHN+lJg8_gBv>q#H%G#cOE{ImD=?c#P>cP zciC=afcLzHX)o3}yZY@%<%x)c=8_#S9BL{wec6}-jEy~xykmvQynu`lG7aG77%3&E zl8!P7Je4ne+t`Uo7a5L*5Y23Njy%C?S~+gJLp;4>hB{L`WKO@;`CcPC4&QANUqI)h z&k}4nv)t~>8(GzsT%XdRyQ|Z0WLm3X)WrhAQQEzr@!$A!x+l`lqwf-}d%3c53~%C} z292{s*hq(jcM`3JHRl~{rbh9wz%1Pu4TA#Nxpyt>Q3LQSo=jh~?O$1y6I&Xgtp)gC z1N(U0uK_WW3htq$0iIqc0{%a^NwvJ?d2THLdB~erxW_{qc3fxs*Z@FDqQUKHzo}Wr zzs8isp#ys=@&krE0G}5M`}bR1Mld9Yuqk5^2ozA!_4%z>o(6cY@BkBZZ<|f|i*^W% zn|=ed4DJxtG?>k_8Pcl4N|QN;FN5A(0A-)-jg(q4=sG*eDLgk08KRdk4J9T;2xUR? z@7kJoZ`b+>JfbGdXsli!sM}^r>Bj}%sm@3x7qJX1-=yJ!J^2y~XfGo3>U=v|p~%*C zS3wZr63DW zy@7eO+z7R=g{+)eXu@ZZfXp1P*vQ9^n*9YtoXTu}PI{F!Yw#e2q!}Y${$9!y;6Mrm zM_DdXynrO`bDvg)QQs`Sxn(VpvEOftaB5)bj9~#=H5^OOy!Nj<6fIGoiA4d zR;!zO51Ff=5~Y22AM>ZH#_J$*A4=vW>Y8xz>rc+&#PyC>Yi@h^;x0o~ayt|JAl z*k=9AT0iZ7+r`izl>SN|+vNYq^bSScdG`~bEO=HW{Uue*`hclr6DziBhqk>VOQU{=8hInR_q2R)UP-SY)Vlz6|2=AQMAqb3%3c4 z4?tZWQnbGEHB+Bj<^FNXuq*t7)1#u#c)MI1W@$)qGacN@G&=Ad+(Ko_Sj+jgOd!5&Gext#nqPR#fD|F1dlfty-fP~! z2`*pU$74UXxr~jE#@HYJ4mC8C;nIf+)(mp^4&@)FwqUK=`Od%N5q{Uj&(6}skFy3> zq#!Ya3x+cf zk!+h&R3)UV#pmqCOx|2c=YYv6DeC5Lu^JwC-PW3-9XCtb)0ec$fTV0PGaAV0O-(1xVezn~-FV2b~JbW;Vm{Na42Y zeW>aY&6j$mfJeCZXMF&$uK3F;c0d${>tfYs?FSmhr@>U+ImMCx)6{pzQ~kyNzwfm| zD01mmM4@m)h{%W(NhEt`uZR#g<0|8miT>hV0MvDz%%9V})>p58U-mPD&t*B%V0hWoOsDxq&r12w z-+VF9*z?+qb?QoIO!-f`14R<2q~YMOnHko+k38xK2u-S6{pZ!D_VDiNpz{@O+vz|3 z1+SZVbjknaE8dB?5Zb!>9usC%r~b1%sQja^A9h~KTRx)-DiPs6T!{K^g` z&GStR&VU(JV&T@rttEsAkDac_lYhL*;->f}Z#`L6Fk=n*@{^82W%h4AiL=|UM3v*0 zP&IY)BWnfrvm!Frx6C@M?Gj%4+^m?R_=wPF=Es25FsxMz6%qv9_7}z+L|~gbCGgrX zGo^>`?miu2ces*o{_;gAF6!|_wVXZo3aioiPJ0PX{ToQem-IJnX7#R`*b=#|2 z3kD{5j(U92c>9>wx}J#0z2{NqXZT?3`V%{9k7{11@Yh^hlZq2o(W4T)?tDs88*GZz zOo>_lJzC#-kds_;&+C2OYY)PFsmQw)j9mZlBwulRGo_gz2Ja`Q{+v*-naO=Tv5RnM z|6;)MmQ)>d`u9YD3c75+BT`ufeH+r%nV^*ZTuoUD^X)mad+tH3AwaAn?b9Q+RQqQS ze(;(p@&9SO{Vw3tMqV#1>U~3X(1S~7&W*@DF?{VVB|;!k(Da<~yfj+un@bz-`ES3w zJEUv|PfGiFD7f~5Gq~&}J<5NE53)-6$%=Wj9W^tTewO^aVqE5 zQ!$k-eZunc?GC)L3jeo`7|P?S%O^G7xeRVgAR`2-@M>Ck@)H8-`el`{L6t-1Xuf8AGAntLB~=b-qtjGjso`>*T5w$dloV?{?l~F_n5r-j)V2W-kU3|JOaf1|AEparawsCspK~ z!hAzCVtJL_nxsQv_fx`MouTM)PoQirRZ*YpE(8j+#SE^+DhqhWabka19gY#xv#tr{ z)oX^k(Ny-gH#L>_SgH)Td}w0t8A5<=8fI`&N3UC8uTQJ162*}bch63h zLYPNa3;$)AcDBdDAuY`TpxS$ir5n_h9JC-sc6<6x2Q%%~4l_6uUe2r1&bxl=^Ic9j z)b(4aidqM$j{nRM#ua)v2l6N4gswNV%>f2~b2N@hMRY3K)|+0D-WdqQW_t-_FIo)} zoeDd%gNqO=WQC?~!=TKwWKn~5m!9o4EeBw1fVNY76NyuNkRsFIC||KbgSz4YNK~4; z7ZET;;WTFnwTz~QMPEz!$AeEqWcq;!400Sr0%*}-)=)63g2@55Yj43r89|Fn;N$Y6 zRm+lnd#_`*y?t(;dr6XGLRJE%srUAhW@oC{tf$Ntp$h7MEVFM6K|KEW`R#>$h z&Oll;PJmf|gKVtd$8GpP8-B5RnySlPj5JV+zur1%rqVzMPX#0Sl!GiTN%zmVsMLB2 zzZvUX@X?amfG%+mjtLPo03zx$SpjPHOv1H~>4KS#zQ1HBm7i99O9x2v) z%gl_q&Iq!|%SJ5${b&Ysftdlr$xNJ0RS?2B)Y7y?6#dqlzV;uKoft{|S9ymzgsA}d z7FmT;ibc$qCv8jf_idajd9&#(!XE+j((GZQXmYK0AD|St9uP!>M+mnhvZ6(x%!ci2 zh*0l0nRFo#v{@JjR(1`*%3#!^ZvWlw1eCOR82~v@P2EKY_G=b)23i6}q^38>B5BtK zVAOe?kDug&DYlq6h#i?7p5X;Q2ZcDT&OjLS)k4I=A~=GLCvHGm`GaBS(mU+$RNky_ zYH~1G_{;a13uKjSUI*g6ybf$a{tS4+BkBmlO#v|Ju-M(H04gx6ZP$ShbgH)4a; zooka7N=a`m{08>!lScwNCY;C{0fV}?i*ZqPZ=^6!u3SI!#zz%OVM5W_OWpJKL2Y5h zZh&S|;Owh!&GJp0X{5oJvCqER`*1XwS0=9A@-g;8_5Ze5;+uG|3MOGuX_fl|T6lKb zOXL+M{024$h0RLX{d|4g-?uDX>hI`F!oq(a4ORZt-1-|xyzBT5xHJMT1n&aJ3D6SG z(zQ-^fo8g`fBzel2s?KK9a@c3^9apykq!Csk^4t@epcmiFXy~e_YO*t)u1)7R#WUBh$IYvmI|OH zvN1Niys@b%$Cmq~itRit#%yo_@KO^%Sf*&b($H&NSA-B@K2Sb<-Hf&Vn2gaE1k&pj z1co8nMHzs6J(%Po$R|p}btzTLu~_M1(0|`Db+xgBT^u*ciwe24>8O5mqIn(m_Q5fl zXrHGG7H$|^(CQIeC(i=Xm;$4mc_NV2;c~b*IVpOV9YR|)^b-49#DIZJZs2^e{a*B# z0GvE+UJOcR*Ozmmvy+0817n$cbEDvXA5rH zY#>gw+OGn@Ux1WI%*|@Zr8wcBs_I6%(fOy-ej@9vkDdZF;tN=4QB>ZgINbW(Bf{2Z z!F&V)&CE+%ru%4;RW>ZJ{cj*jrH3QS1^^>m15_f%zN^)DM3TIPN)zT)Rf+5<&SVBi z?&p+|&s)-vnaeqBkPdZUxB4B)BLH>CZ`#l6b4};2r zC42?ZN8I|j)jJX#2?OR@86Po4te0Y=Q*6kPb)XTU{qew_BawIe`cX9JW|$Q+o!{PCy|-s%y{ zQry6pEEpr@Xp9B#Y#W&QQ@1SKd^;Xv4)V4l>ne@g({oN88bI<+t8usw>w4Jg>dVkf z%%=}Y9AVq4@3{xwOxs<(4_9hX?)w=cm&rSvDv+(0!X6arUqrUPHKb}o$>DH#j4q8M&>9?*( z(sF@8?EsWocl$KPw|DFTfSGPfp%3QoCUP1=KM}xd{%J85c3F2H=&Ktuk>$^w=d%>v zsCX68ehT&{-)iZS*E%h@RF>1saOQNIx|EKu_M&=LZq!bsLO}k(H3wQMQCwT@&wGk@ zZkoEnPKI5;cI}Kbj`4_;MKGbRqD<->cEV^z6~yZVDXM3)KjZN>bx%T zkNRC3IdClz9_NER?HWu?OL|$ed(q{7ef48F#EX8nT>@gc$e_QUR{0JLQXD1-M{d10 z66J<4frZf>;tNxrpAD2nT>Y@oi+%XbujXTXsqS1WtnT*qfTh9+BFtHg6wyq(*vNT> zvTvlw7My{-B<|D91<`Uq?%p96_N`Q#+=eD6r;dj#8t-uMTECC2{M6-QX606MA^Fgy zfJr&FzP=jBC#$GHu70;|9!4fQ?`qPb*&($MBGt9b_@O;JqPI+23qgft&ZvC1oKv`rRB|8De9OjQAp6eU3oOg}#>$ zRN3|px_D(~U#F}$Yzl7`?i7%2B3S-VmY57-+o1^VBJXPSCnI4FL-%~wBWrA~fqB27 zKTy}SczAho%3dDxTWK#JAk)5o+3QwkUstl>!qTMd4Tf3HO}UrNsS8^#5CZ+n-c@AV z@usahaQ$>ZF#f6OYwO3KbXjFJvR74o7vqBYQ)Ko1L1jm`Hxs?IG~RN-+8BlHE#2)0 z;SrCHIW9(&lXrkB+fPTO`Fki2lK@`4uCi@ezkhpVvEPmGn`dYvLB8rk`LmtKg0^ke z=MvntKK;_yA9?F4Vqg5h34|6~cYkT+PYPBN|MHmvdU`?K!AXQ*kMmclO04vo zzntuP904Yt`}Ht?n7vc&F<~etejVm)IiN7ZN2N$8ym_CwWW4Drj|Okary@0i&I9kq z2*)cU7E+XxSz^9{q_lo?e@qk;sq@E+`5=!;;~{U!9=#za0VCgBNC>_`iD*iFzI8>%&2n2Qey9+CA1+Nc!7n=^M2NS1!A=fr}QOLr=BX~Gc zWR7|72G-R$XTn*#YtFDrh&=3X+I2lk-@wGqt(v64qY;%>Ff-@B_cP_~i+*Yo09*%Y6R1Z={0OA7r~XmQIxC;c&NGB0uZIZbpq;2JU=1)S+n;A6oFiJtO0>3<#1Wk@U?SVYOQ zc9!!--`0n?MWKq$+w$iao_!|0GV^C%he4cQbDR!wiw5hLDi4ZDbST79O}AENATb;l z6e!aG97Q3ZWPtOEEUlA!HBo3mI)?{lq%t=Y_!pMeGylyDlC-7s_Vh!^hAEpx zo`aFmM{O0gJ6?`2_RwT(xgeT4U(b2;JSp0iZrNBFX=VIF(h$Pf zmbEpY5dud0EtY&(4ODDdT<7~~IcMXF`_688Br~4e7ZhgfxKccxr8}dbK_xcPueuti z2ekgl(AG;R|EC2R!66Lxe9=-y_M|K}xH2t2O*90*@`JgLSjLuVy3jQAsmqY(LOao6 z;MURvJX1g;DdV$}lR+X^=bERHmrm27>AB9vQN>u7CjOKA5&uR$QSV!9MaUZ3t9|FI zcxuch6%>{`Xc_RkVZk+vI7?SG7=F#yf%MN?^cyIo?J%??aqf{}^ApPNrv8=+#C%Y3 zPL}*7y*A4NA1>Q>P^qffWqHY8+DNy=>0l&Bko}rDMkn19U*0-Yc7Y^65d8vD$ku>eTj|kHtlT` zN#zb1W`x${$q4~QaiPdcU!Y%ml?T~fP(N)^0Aa{(e@5;fYjT%?VBHyT?JO|qR{hXM{XW@lW zU*d&-wu?nHU3T9+%#?R=v%YbgZBBzNe-rKeBu-Uqq-f_8?n8N_Iw#Mk4_O_4|B$kk z(0O4TMhk46Z-zva(E-g%E1YbW4T77Z(n5@=tC?&K8cOl9qiG0{Qg8q1dzoh<%ByR~ z7NXE5CfXf$DdG#e=1&5|TWD79ib$p24MczR{i%MwVA();na{>$lXWG0UU@lLz08|F z?pD9gB$c7bUp!0D1>?x#1SuaM-MZ#MXwR1JuB1}eXz!cd?+Ei^Dvx)oagbxW%`IZy z@XTCg*xC3FQ&YL_i@GoT*y%hrRhq~boEl<3KDkpk`JlJWa#2|4jDZ|pNW^^fr^M(uOvI`%A8 z<-~!9OB|V0mPH~~-GMj-j;bYUugrd>WFZD@Mv~tRIp*Z$Vdle1>nDh$u}03+`uw)X z)SN19(1%bx>ih)Ls#{QI<$twR%6K@2e<1$7Uv)N#TPgnIp@?DYE`qzbPu|1K4?J8f zJ#$nrbXTnox>mXqL?S3v%n{NOBt$T_xxHGc+(E?;57dS87#v9N4A-jR}lsyWjs2pORit04qaR!2ZGNl199(7UUY z@*=gv+j96Gcm!JG=)4pSGgpcCRILuW7b(}VBL>c{tLaf_8fQBVC*RV}~zDs$6aQxwPwYEjr?EQiBuCNP3)~d)HQ+_Pz1`j*UM$t!b zV8tp&r}iP(7T(o-_|~}U_m~_{1clf)_K4AQ6&yfWum|%xGgd>%h~0t*>tq#fcLT{Z zMFn=n6bl2VZX+s*&pzO0nZ1AbvXD%1S*?r;fjc{|W<@c;aK`6x1OBN|Q`81R_0oKx zlFz3d^n@P7I~Nl57=t9TDO`pUiw!Wf(P8!cy^Y507*zM`100PNX+3{zYw%F)>ESqxt ziDv~-A>xiVYsrO)_mq&xd@N~Btp0970}M)u1-3ev*5F?yQ+}e=s+Ow$mI9mhxS9Tz zY|8}2T6KIszy_$zuRJKa%#cGXL=z~CS$)K)A)S9&1@vS+rkz5ReZgx|Tj8=NALR=6 zlJeZva)%(45nN6KJ+d-?o61L3!ixbl00vcmEdTm&1MR=}gdOx2{TM%f81TMQvl^0^ z3b>ov5jW(O{UEV241jMga6Tc4sXT<$5QQAk*rFG)VBI|cfocuFQAW>-B^q# zP4O_n>}7tB%|#(ss*P^og$~wINVz;3@Nasm>yZ7wwPz7RM!rp!rXir;95A2(Ruyrv ztH0TInS^T+$nWY8k_YT1lJf0|t5v}2)I*H?tT7)PQ$U=v8_E7l^iXA^pPTm-zR|P> z=0zQ!Qe&ZxD%+N%Lm_cpc&XKMvF&#-L&Qk$ZWx-*{=GuW3L$%+Jh8@H{7nMiNIk;Z z$pEWZBfNTzraFJFGwSug;&x)(5TQYb#AEw*==mnBZ9#~s&b#?sDGa*8at!G8OfjO1 zYQ$>#Yg8V+gAcLCL}R8bob-!Fa?i$Al_oG3W%jNK_(wIZ6#_2e-@ph=S)(aWyU!^G z)3P(Ahv-~vKSj+Bw+${|r%jQX3;gVtag%c?Ow5tKKJ*GTq`15K1c(&c^tu?|Pp&zq zJNqc<1mi?!H#_w_WUP=u&ePRS(HBYzl2av0n2=LdsHW;)W9B>&2P55Mc~P;a2W4KK zmweD|pbJyXrn3JB6LS7MZiuK_`t8q!H=5nM`*gdMAb)4I|M_fyXN9}p=L+tuj+veCm4ez)+uX-dG-4v z9}cQ+nkep8gb|XU0G6y1?Rd+&&i?VQ1?bybC3$+;E206a5ftCs@OACmDrAF*fJKo- zVsK%yT(9LM=Xmqo)bIY(7}hUGvxcZe1W3*iKU6N)MEi84o*L z=T7^1Di*qpFE>S$*XO4O>Gu-mmaDD9S8w)rzWp>63_;eV4e`Ni;TzB;{`!+{11!c?b8? zC1L0{k)xCPm1AZr?%;v`VYidwI(6neWzo>3rh}rhr1zaVux(hN#q9j!LgU44TUV%6 z43-j<=}ZM-o;-Rjs<1nfp-j%Ee7Q?Rt~nZfRm_hhopV=Ekipjzk#Tc}gzUDr)(Vf` z-PYesVCu9fN_OB3WT3{{4!C}pln~(Tx)J})CE8h*oqdhTq`3E1fUn>!vdP+TREYHi z7EHnVS%wi%jg2RkFjdprOxZ5g{PcUsTzpgEjP^K1qdfTncc(7J&@j@)v%B2K#>_nX zd%5>kNyUElUqa(SS6}aLWNc>T74q(fg_oNTv`#BV7U{iI0T(2Ia;0q+*sj|_{O}9*^5xSoZ-NMtuCAF%{ zB`j)I-Md%X3_^Q{=yhl9>O^1z6T!#!S`?uI?eZo|$hwM~Qh` zZIy(a8%%tfngk)^^Yy(bT`SHf8ROK+Mr55}1k=a%!&JZaCK??I0Kd3Q#{(Ql2BqLL^u)6>HfAHTS);U8ZD08{1$hxh81@1a1e>V2iUtQx4u0t@s?C+5XH=RqljDqT+MSkS!W=VbG;}$I#bZM{xhDak)`w+#C2i#*3Za>qOQnrE}pB zlx{R&knz(&UESt1G@G$NI{PbKDwTy{pPZ`10t z(aiSOFrmtVr)E}lF1N1)4ipZ?6p{aQ%vUK4)P(8G*gs6_`^ifb(cS-cM7cFRBRbKC zEwh22T_`X}%kkI%PmvVpc8V-gkjA_0`v6iOpqxW_757P3Qr3Ai_A;_5EwpLw-Oon4 z#-yHDdXS8w53=6n!T+V|Kd4yCeZnYsdBJj(5QS#W8JH3?GFOkT_?IyF*KXX>7^|+N zC!Es30(C1LZ~advLTI9<_vGR3(yF63vDT6th1}O@W1Rh3R6jm_E_Tl-n@R$=-1K5r zWX`9Y;JIn^R!$rbf1S5BKRELvivQfg#>+KAu1gnooCkRbX=yxwp8#r2V|=gorypTy zbKAyzeo#4jr@DJ=pggf!*>S?jHz1>6qvGE~Mb7g~kG1N|^$$1u<_hv3Zk2>Fq2Ll!T=E~-j^&L#l0YdP+!ll~9}%+2NMnM_#K5F~&0CTiPYdsejHY5zsd;`= z8~L*v#j)!K?o8E1{4_yqDZcMvFvN6krr7t%(9H7Ak@NhDz_IOc`#1ZhEeiyUSShkm z(cH50>T8oFI#eW+gNa{RJuwr?&yRi_ge;QbF!~K{u>M3nq*fawxhJXf`KHg`56o{L zNyV?cU7|o*k2a1p&Fh|@etx>DLtB!oNw#|wpCvmZzEOMZfJFKruSZxoazQHSd!zY@ z{_FVZzQk2?{qlqe(@k3GOFA#SD7QQBpE#oorF=QQiiFH^^O!#KeogvYPL@2Ij2w7D zNBI>H-D<42`JP`yX zqR9TCQAlj)^z2nvvciO6w#`gPI3J7t5#dG6EH}0T(zFR%a;nT$10-_1ubVbB|>2{+zbyvU{}}iGrf|58 z`6IyAodS$U)}6{N*`OaoM>trACElAH=2c=h^$LYBcE z@c00(I6FW@kHLWpLsAliX5eASLz%bQk4A@E6F>l)>lo%B!*TP7F%H8jNqic`S_3=( zueU^0FMXCk?PDHx*qsOpx$s+dofpu)w8y7=Vvd&Lj+H7KBs`D!Wwz&9P(vz?nxbhJ zrDJje!JHOefKJ+fD&V2Ip<#-(0ReOpy@w2JWaN2_Qrb6z0U zHxMts*e)n1BnJQLb zs7fFjQlDa%)uH~Dx`+TPIdzQ3X;9?3BwBWEKMjF1^c6~Gv+|8pnJ?AN-~iXejX#oS zELNlRZnevIum-Yt9Z_84vC!WjAvYWsrUZ6=cOR-NIqnRlmXkf}Tw>H1?Y(jCL`~oUTH06UWsGjb^ zz<9_^i;i;5P(;6N}R5DOvZx%vED z0~Ja^zij*Yzk_V4z;Rz>a3x$S_hicOX_>Z8`A4S}g=mD&33|kwfaU~^CvAN|aM$er z!iK_;(YC1__Md1BoBn=sSnU|}3pH{+-T7_D?FI@TLJYZ;$+=<>SIJw;X9`vwp2SeP zYvWQ`-Xu>+0%hFbjS=8Y(ywU>$oRNlEIfP_B*G4rMUn(R_pz$$;?r14%snhK-@qi# zD5^kxf=blgZf*C_~FyM$d-o_q_ zNi3t!uu?&*BJdphf=trCJk@%OLZ4ov&UX606ZqrG0C5JQs)G_iGQr1VSI>dt7Npg? z)x!rFU)|=%Mx&U24Fv>|yu|8vQA!z{R7PUA$!c}5jaOYliX@2rQ7dECKX8asjNEL< zbLJfU+2{Ye6I+`y$Ewzw86a(DNQr4=UbxlXCvj1@l&QMyn~AO?FouctTL;=a)l+G* zE-)z0Sr(*E$5Tzqh-5ve_oD~uMfBFL+J0=9SgT#ceuj*#K>TTn4)#Tm$ELZwwU{KH z_g}RqE>E5e+Vf#zl;Za_gQ4o-eeEz{w7$fGv_D(D!Mu~lo(KO)JNcwo6%mQk!;gTZ zj2Hh)Y_kl&_6D~;hwIE;&SsR{OHc;r^PRTRdFKTZYp1P6K0E)%hNjVEqoF^^3m^JI z!k`Sp^QVA+pztFpS$X;mOc(OTw;TW^@Gspfg$#}1RWqgj|3E~GZkM!PMa+Ka3(Pyr z7O2e-j%*nse1=sT=A6|o^8w~8NOgN-q%bx)X#&LmTJXyK6tDomb>|vrlPI6Z8N2_V)PdQz2cC|bRk_k=92g~ zP`5$yP<*B?v{r^n%3o}ypRJm(;bEfblVRMv-u_^h;!wr|L2Ne3x19!B1V9!elbUR^ zy5Ob%fO0rbVJ}}cKb2H{UGems#xq-0QV?NsiIPrwhj2Za^)rea2=>|_gK_ih_DnHz z>!1B2Aj=>EygJcw6=CbhoS<$A4KUx{G?7pKA3XT3bA;c+~ z9rY_WZa!w8^&Cm?%k8c3$C*I2)O~i5^1d~$tJ)yTy$lGUFGp_F8LZ@=}@CZSj ziidgD60z}RX>jJ`p8G3ieJPH1G$uI5DYBt9@_d!?g-+ui^ zKqUU!yqKw8g+6~KW?HZ{6U6N?eBiS3P1eOTJmyM zDUOxpeU@}0Wv{Cj*JqeTvKEfX{7uEk*mdmdqGg3sok5t_b2ROEp)pSfY7wUbYgH0P zppaZl%^MAeE5dqK%sa>Iwk8{SG;{{uE*p9wzX z6wt+fIIG3o6e^LZ6bvm|wJ@fr!CmJ|PeT?D>jJ(8PrdE@&d8+QlM$puI&Fwpe-=8>585#7 z>NSzL*=ywN8bSGJW*KwLzf?~I)GB2B^1!1Qd2LJn2_$|){pQGlEmaoLCUxZFcs7gA zQ6Y-21Yh-g0B=vR$8yZnsF?d(ufEB-H(>AuFa*d#^TM(z88!IVE!0p-zKK^Fty|C2 zdKGq~Ib;T|<6niv(sbefX;FjeFMOkcbfWxhZ?(C2m4JMYrhiw^`Puinhqnwj=)l_& z{~`X{xsfAOVtviO-!J~h5<8E^$;_qrq5;=1E{A}xs}x1mV5sG7%6f%OuRy>Qw09?TaqRwuciZmEzCqHEra&isc?$Vv69;I*1|Z=ll(bj+QMwhVO}X*?m;n zMn+WLK6l~}Wqd)81dFKjMGtFqT+(2WmcuKBF$k?251#9!mx3O|P8*v{@I_$qb|`veA4pe1Oz#%7VVbNOD=W)ROla@F85%E4OCKMY4(0MnK0Hv+HY_<6Bn9wR!p!`uT??eJx|Sa_#^Dz;yA{j*bZ}9kLPM zyW<8_gb_>tpsu)mFCAc!q|v%JCSSG$_N2$$8-Jl!MhI4iS|R+{_N}4D!I!leoNng)^P*CVv{@Uk8G?h+yaH zya#v|A+q=`h3cVvMamIl-BnS+tP2-&t%pa&IymmVBYg~nD-tE>FzCmL@BDIy5lFoP z-?9jF3KtC%NED=1Y)atzoPU?nVs;%3LbD*Eh18(!QyP+T4HG*Q!(XG!)ySjp*}X5y z_)|quESb?We9D69gULg^BBnl8rgx#bFML)3=d@EPtRiPg$6j=s6t_7Lnp0FA>X~NA zDtPn8uysrq!4agR)4>3HVY9tG?trB`O4(C-UO6NE8d|&8QVs^e)qXipAZq z4f?bp*RwP&=H5}RiKGzLtEWRe3V}-}4PH`5{>Y~IoG~->?f{VuWAvNh+Bs|UwpOKv zi<=vrQ6d_n8CDI#vQy8sxKAGmKxjPMCoiMke?6$`CgD{W)Kol>$@r8~jH6ER&v`_k zJ@gP^Nj;7orf^BXMpJn{QRGIA;p_=4eDT&+CGCi%d99p+V*FdvqQh9 z3kpe&V)g98dsi<4*nt%a?C0uCsQo;1%Idc=PtAbXWTSEX2{M$vo=9$>ueC#y&Hbb z7%XVB*jiQpkfSJ$9es{rr64MAFW~FsA;IXp>na!asS?_`RUDRLeWd|VQ)g2MRMj=M z{GE6|VtDf0VLY2+#FnH?Mrf{ZE7PniaAET!MqHz}-LQ0 zUc0MUgY))ocoM}h(RI~ARfQI+y=>_YuIP|N79%llC0i^&IU!k-=|U@ak=vo;PO_C7 zfdsT+TUu5B*gV2D-+*L!f8Gk%&)B2mhT>xxvjjk}a_%ZxZF{4%>!qUpj%Jax1U`hK z*59UMA^l@)k%x)HAhTr)!tfkRDom9PDjob_klA!t*@S=kO*s0~PfZ`AC!+?~w?V~s zEPe;}ZwoT#oU%%MpSuCVkG#he{PS_0xeByNYtTOSH!6hsALPciXP--}wf|G4=tI+| zt4GdIh1SmPV(I3wA;h`RSP)HxULX4ppv6o`6h$^N-FsW~tt>fhzfcKiFS&XOqeEkD z`fFjYvOf9xZ*eNh)vz^?4|ei+zL`66FvJOmtHe#=bfee4ywh)sgb!`pvPgEQhd-An zK_oFAcG{j3IXX0uve-K+X@EujNU?BUk->;%$tPh1xI{|~J zj_popDDyipj>Lc%De1dWFWu2kmJC;nW<2Z|^L(;Y1+Cr3K2@IctJMyKL=}%zF*Ir@ zh|i`V>nO6=3s&KbUL$ycc#hEtpsE67Dwp|qQ0$pD@LqQpkF43bp?N5UqNz3$#YIUyyg9Yl!p-MTz+z05sH&O+HZ=WZK%YX^LM8e5E-Gx z!lO>YJ&B`uj7B_%qB8stp{i(_DQ{E~3~HDC58IenYMnAlw9;H2MF@+^ zJzevxEP_Ex69Xb(cB7QC7p`Jnx;E!)d)t4J-rpEBx=cc6y$Vy}ebnJS{{56jc)k4w ziL>g~>Ks;4JX^BReE!hKzO~kT9-FW$R7Sq>C_oE2MxyDrw)~-0b9dKL*mbE z@1kv6n{N`$*Cw0)6uro}`LZ)<+1SaCoI6yoLH{kg{+{DPc0uu48kBP+3Nf3%5aH9f z*w}~Ny~#b_D(lOfs!|=|)%C0057vS(x7Ung+n9ciR zl+Ji^-ieiUWODXuFtTi`WiLJdjsl0=qw&zRA?Bzgs$HLv+|>>w2bog|6O0EZP>Z(N zr94ZgSVx53C->EyfoYuXDR{dgz58hrZhHSd zozwdyT^I|l)L}$Ua#$-}RyJ7xX3buUt8@#4k9=J{y#5CX)gl4aVitKDr#ng>THc6_ zjcx71DfH|ZMaVjtn5UBs*ULNQeMaYPK5PW!*AFD5_lvCxLWg$olq*z_Gybv{5|e<}VK@tyh*5 z3jiCs{Uw?FywEw^D(&DC=PyAFvCG?ccNW@6e;i2z#l4DGs=lRqMtBjWFSIfjYUZ=?b^VY5D!s`nLPVi9Vlmo{6Ma!7pz0?)Y*@ zc{RwJjvww7?Ts)&^#*_%n@w+}`$#i3zhlHz|{un{5E*7Hp*Bu|R8Mm2lAUOGYK3j-Hf=k5AeGbS1kX}BGghuq_ z6hUNBd}2iB54Cs^en~Almtmukx+pp!)2QR%#P2zU8-C5TBiK5a;X0Xai z0#X0Z<$cn3$#Vtpi+P!=ACcS4k$&ImHRsx7jUj{j$AEHjFNz-;u2DW;|1&ZqKsmeJ z)ZP%i?_XXv5g=2~Mp@mK6uMrxO>CQK^K3|3GE;c;r-mtE^{n`S5|{APj?cKUjuN3{ z=33kR@sm(~?B)26Eebs<3xcVZiV96_3w*O})%V@_#VLM)Q+HnMhad@w-kTnBhT|_@ zuV#e7q1rn@Le=U;ot?b=_8^J!*`Kg$yMVHLI$n)%5735G*=l3rXStD!%XZX#ep`ie>{hJ#x71|S&0SHKd)~$ z!L=!VaNr!k)q=aXl6LW#KPg*8JBdGEX=0lD>ZKPw((Muv^-&P0WIMv0etg8qH>0@G z#GHEOk`Ps-W>tL4dlXd8aUfTbUY~tmc0CzhTW51)`)WY4>&bdD))oUb9bKP{RrFw& z-|Rnfz#U|K9~kcB$0d|xBz8~AU;f@^_tTlmTRkE{Jpn`cQvVqA79vD=; zn#NvomRqrLqyl5V{94&}=^{$}U3mCv@?|K$+uGIV{jX`qTY7)kVFy-|oop5*2b1dA zzHhP7+gt2u)f{RYkMU|n#BuQl`{vpKhyCdeohS2Mxjyoe^12B}CQa$5bO+|1Z)InF zdX0J^VdP7Ia2#EK?8=6P?*X0-hB$Weu3vn4nDBk4R80UbEO;c1r*7|^TDWqF@bMW} z?Z4XK0}C$v&54iSch>&DCJc}O?f9kWhtvi-M~bld^<_!}?YQ#)_dyOMEzilF=YyJ0ENxE=` zb06hJ9v^T1kj)mQ)?(i|LY%GjxJ7ij11qk}+cn~G%TH5DuRKq=+AjqFJ0MkiaR{#J2 literal 0 HcmV?d00001 diff --git a/Assemblies/Mending.dll b/Assemblies/Mending.dll new file mode 100755 index 0000000000000000000000000000000000000000..f162f78ca0a275b307a2ec403c826ac2cbd54fb9 GIT binary patch literal 17408 zcmeHudw3kxk#F_so}PzBW6jt|mY-v6!&t_OWMlAnjj=5GA!1oVvWM#4bi_+A=w0SdE|yXcHxo__`Z-YkDJ{j3*ifivp|wv2Qv9Px~}^W=|p7UdgmRY$8qP+CV_t*Orkro z_{j)88hl~NEgbc5&R4t2bJrKi}zoT%hwu zr%iVf)yenyC6R=(J zVcit@=+PFU(h4F?sQ-DeNF^|HsOc^T5{4TRI*>^;4JSE`gTrWgRV94rJc0!o>t|sm zCl8JU{2iKP+7a}69q*}hFs*5Ji%B2E0Emqmqcv!R%w!J;%3zUZvIA|?_Crz=s(j#xwLpEtA=PbDDI+jsQzQzfi;6`i2CeDYV}0 z^Tb9$QM$>Bn@vxt@fh&&*#OCf5K)Ee<8wf@FW@eg(9l%hM6+9b^d;uQTIxgV?m^QK zbxpe-j5P_U7qaI9_{SRokHDZtIHnTwfb89XbIv%=t_x`^;jV(8%U_h6o-sof_9S0rue$ac@W{I9KVKW zT!p?wGl1?65t&=Siv>h=-<-s|(1++_f0|845Ceu!Y$*{IaRaT`0;U>&!$d3Y{<#yY z`DRS4;ak(5_?s|5d@m#vF9l_i9o$sjMl#GK@^l zV?M!^Yj_Ui^+ttiUk=Tv0E0s-wT6{ieZ{C(>ErF7DtG0qBX@1(`%ZN$uh!WH=VQ0S z7b|&>>V&`~^hAr;Vd4YCyJ0S0d}ad5iodqGa>l{Qc=_(8Lz>@W&;&ezy%1HrlZ}wN zK*rYBm|HLpM-;&b)B~<{y#Pv$^CSr@+_bkt`UDndEIu7F8?N1geu58a9ioUixy$Zk zCL|dH1inqME@~WMW32M42AQs*=4Ws75O>5?7_t5v*v~&h5+VO3+E3jMHwU;p?*`9L zRdEMy;ee}?8xn{Ua#Fla5S^iQAx3X2qZ3`A1)R@S@STiT4`==(aImqCmwp5*GA6oZ z&~rSf2hEAA89&m?%|33bGvr@UUi&0OzXS?{_agqKa-)WBh_AzTz~ zqHFIZUNwB92&N-&R(#Vi!B+Fexei(a7S@#S>ktO?GY*PBVXx_VE+Jp5gb&RtUIUG9 zL99W9>BbcjnZ%X4m1ClQ@tMT6;8}cTjZ#hJSd%cAkbrBt*|lJm9g*xNIA%G9hcR|K zUSZ%UXGe)w>|ZxtaV!|_xw8N!uVEf!K;c=+JSuS=q)f!QZI1J8{CW_^Z(u3{l&O51 zYu^Y;O-xJN#637j$~_Iz!-o|2jACPG6Iiif7WAT4N5~I19(woYzuc-ASDK-=?xfx^lKIeL955)bY%kBr)n6ovRTaX zFq{`FJ#nZtbizzrS4E51Yp|2Mie<72foDu4?is6KGTT^HN-#Bk0HUWYY3G0@VHMuI z=jj^HvnB3!FPS$EjOo+|1mGu;-j6(KjK<4|`b=vMXUmCA+MoT$~9Zho6> z#0*Jewf-d6%H}wdK*+uoz$@bY@}MEl1YFTqDmT{AkaGq52=j5ybO%phuo~xNTZWZB zsno}hfZ;+Eg>8x3&{`gvK=v`r3G91h6_)Fx69^<6W01>88aM4pRt>QQJPuq^ zPNO|lnREF#%W*r8+zxU>;wa#?B3_LzVHtM_w>0lWbN!zYC(@uSA=N=APYIMJSfc22 zISUV&^&4@(dELw1N_2kWF7)lS-y_VT?0eBXaty$JA3%*iiItPzZ@-^O{{^5*Xw_7k zl3*(yM?Y66GVKS1xnfv%y#f1!LT1}1K7{5vWXrP7tZ0?YjYu-&{EADFX6cEa&zi0W z$Js%yf3B@UU{Y z@iXz~pfEgznBenAroxGOJx_K6K#kuG=~_JJ-2^=Bcf;|cXeY10*nnAY+8+ZJL%#kv zQ!fV99KRRMfc*);i~NmILmr0hPXhJF@4HJQd8}!g!R8{SJTo=K)ExW2@?ck&xe|*N z#cxt_aEZ2}tJi;%O8hMbsqf)

D~WIdLBV$N%QOt2S#KZ1`||99-Sp(!93i^40Jl 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 literal 0 HcmV?d00001 diff --git a/Defs/JobDefs/mending_Jobs.xml b/Defs/JobDefs/mending_Jobs.xml new file mode 100644 index 0000000..3ed7ad4 --- /dev/null +++ b/Defs/JobDefs/mending_Jobs.xml @@ -0,0 +1,10 @@ + + + + + Mending + Mending.JobDriver_Mend + Mending TargetB. + + + diff --git a/Defs/ModHelperDefs/ModHelper.xml b/Defs/ModHelperDefs/ModHelper.xml new file mode 100644 index 0000000..69de038 --- /dev/null +++ b/Defs/ModHelperDefs/ModHelper.xml @@ -0,0 +1,77 @@ + + + + + MendingMod + + Mending + + 0.14.0 + + +

  • + + CommunityCoreLibrary.CompPowerLowIdleDraw + 50 + + +
  • TableMending
  • + + + + + +
  • + Caravan_Outlander_BulkGoods + +
  • + MendingKit + + 5 + 25 + +
  • + + +
  • + Caravan_Outlander_CombatSupplier + +
  • + MendingKit + + -5 + 10 + +
  • + + +
  • + Orbital_Misc_BulkGoods + +
  • + MendingKit + + 5 + 25 + +
  • + + +
  • + Orbital_Misc_CombatSupplier + +
  • + MendingKit + + -5 + 15 + +
  • + + + +
    + + + + diff --git a/Defs/RecipeDefs/Recipes_Misc.xml b/Defs/RecipeDefs/Recipes_Misc.xml new file mode 100644 index 0000000..2e77385 --- /dev/null +++ b/Defs/RecipeDefs/Recipes_Misc.xml @@ -0,0 +1,178 @@ + + + + + MendSimpleApparel + + Mend simple apparel. + Mending. + 100 + Crafting + Tailor + Recipe_Tailor + +
  • + + +
  • Apparel
  • + + + 1 + +
    + + +
  • Apparel
  • +
    + +
  • Headgear
  • +
    + +
  • Apparel_VestPlate
  • +
  • Apparel_PowerArmor
  • +
  • Apparel_PersonalShield
  • +
    +
    + +
  • + Crafting + 4 +
  • +
    +
    + + + MendComplexApparel + + Mend armor. + Mending. + 200 + Crafting + Smith + Recipe_Smith + +
  • + + +
  • Headgear
  • + + +
  • Apparel_VestPlate
  • +
  • Apparel_PowerArmor
  • +
  • Apparel_PersonalShield
  • +
    + + 1 + +
    + + +
  • Headgear
  • +
    + +
  • Apparel_VestPlate
  • +
  • Apparel_PowerArmor
  • +
  • Apparel_PersonalShield
  • +
    +
    + +
  • + Crafting + 8 +
  • +
    +
    + + + MendSimpleWeapon + + Repair weapon. + Repairing. + 50 + Crafting + Smith + Recipe_Smith + +
  • + + +
  • WeaponsMelee
  • + + + 1 + +
    + + +
  • WeaponsMelee
  • +
    +
    + +
  • + Crafting + 4 +
  • +
    +
    + + + MendComplexWeapon + + Repair weapon. + Repairing. + 200 + Crafting + Smith + Recipe_Smith + +
  • + + +
  • WeaponsRanged
  • + + + 1 + +
    + + +
  • WeaponsRanged
  • +
    +
    + +
  • + Crafting + 8 +
  • +
    +
    + + + + +
    diff --git a/Defs/RecipeDefs/Recipes_Production.xml b/Defs/RecipeDefs/Recipes_Production.xml new file mode 100644 index 0000000..434a7b5 --- /dev/null +++ b/Defs/RecipeDefs/Recipes_Production.xml @@ -0,0 +1,52 @@ + + + + MakeMendingKit + + Crafts mending kits from materials. Produces enough to re-stock the mending table. + Crafting meding kit. + 500 + SmithingSpeed + Smith + Recipe_Smith + +
  • + + +
  • Steel
  • + + + 45 + +
  • + + +
  • Cloth
  • + + + 30 + +
    + + +
  • Steel
  • +
  • Cloth
  • +
    +
    + + 5 + + +
  • + Crafting + 4 +
  • +
    + Crafting + +
  • ElectricTailoringBench
  • +
    + Mending +
    + +
    diff --git a/Defs/ResearchProjectDefs/ResearchProjects.xml b/Defs/ResearchProjectDefs/ResearchProjects.xml new file mode 100644 index 0000000..0b45b1b --- /dev/null +++ b/Defs/ResearchProjectDefs/ResearchProjects.xml @@ -0,0 +1,15 @@ + + + + + Mending + + Mend and repair damaged items. + 500 + Industrial + +
  • Electricity
  • +
    +
    + +
    diff --git a/Defs/ThingDefs/Buildings_Production.xml b/Defs/ThingDefs/Buildings_Production.xml new file mode 100644 index 0000000..ed94475 --- /dev/null +++ b/Defs/ThingDefs/Buildings_Production.xml @@ -0,0 +1,93 @@ + + + + + TableMending + + Building_WorkTable + A workbench equipped with all the tools required to mend and repair damaged items. Requires power and consumes mending kits. Mending kits can be made in the electric tailoring workbench + + Things/Buildings/TableMending + Graphic_Single + (3,1) + + Damage/Corner + Damage/Corner + Damage/Corner + Damage/Corner + + + + 50 + 3 + + +
  • Metallic
  • +
  • Woody
  • +
    + 75 + Building + 0.5 + True + + 2500 + 180 + 1.0 + -5 + + (3,1) + Production + PassThroughOnly + 70 + True + (0,0,-1) + Item + +
  • MendSimpleApparel
  • +
  • MendComplexApparel
  • +
  • MendSimpleWeapon
  • +
  • MendComplexWeapon
  • + + +
    + +
  • ITab_Bills
  • +
    + + BillsTab + + +
  • + CompPowerTrader + true + 400 +
  • +
  • + 5.0 + 5.0 + + +
  • MendingKit
  • + + + true + +
  • +
  • + +
  • ToolCabinet
  • + + +
  • +
  • + + Misc2 + +
  • PlaceWorker_ShowFacilitiesConnections
  • + + +
  • Mending
  • +
    +
    + +
    diff --git a/Defs/ThingDefs/Items_Resource_Manufactured.xml b/Defs/ThingDefs/Items_Resource_Manufactured.xml new file mode 100644 index 0000000..2da6e71 --- /dev/null +++ b/Defs/ThingDefs/Items_Resource_Manufactured.xml @@ -0,0 +1,26 @@ + + + + + MendingKit + + Miscellaneous cloth, bits and parts. Necessary for repairing weapons and mending apparel. + + Things/Item/Resource/MendingKit + Graphic_Single + + Standard_Drop + Standard_Drop + 25 + + 100 + 10 + 1.0 + + true + +
  • Manufactured
  • +
    +
    + +
    diff --git a/Defs/WorkGiverDefs/mending_WorkGivers.xml b/Defs/WorkGiverDefs/mending_WorkGivers.xml new file mode 100644 index 0000000..a459526 --- /dev/null +++ b/Defs/WorkGiverDefs/mending_WorkGivers.xml @@ -0,0 +1,27 @@ + + + + + DoBillsMending + + Mending.WorkGiver_Mend + Crafting + 95 + +
  • TableMending
  • +
    + mend + mending + +
  • Manipulation
  • +
    + true +
    + +
    + + + + + + diff --git a/Languages/English/Keyed/mending_Languages.xml b/Languages/English/Keyed/mending_Languages.xml new file mode 100644 index 0000000..a26972c --- /dev/null +++ b/Languages/English/Keyed/mending_Languages.xml @@ -0,0 +1,6 @@ + + + Everywhere + Only Roofed + Designate this table to limit its searching area. + diff --git a/Source/CompProperties_FilterRoofed.cs b/Source/CompProperties_FilterRoofed.cs new file mode 100644 index 0000000..0152043 --- /dev/null +++ b/Source/CompProperties_FilterRoofed.cs @@ -0,0 +1,15 @@ +using System; + +using Verse; + +namespace Mending +{ + public class CompProperties_FilterRoofed : CompProperties + { + public CompProperties_FilterRoofed () + { + this.compClass = typeof(FilterRoofedBuildingComp); + } + } +} + diff --git a/Source/FilterRoofedBuildingComp.cs b/Source/FilterRoofedBuildingComp.cs new file mode 100644 index 0000000..3e700f1 --- /dev/null +++ b/Source/FilterRoofedBuildingComp.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Text; + +using UnityEngine; + +using RimWorld; +using Verse; +using Verse.AI; + +namespace Mending +{ + public class FilterRoofedBuildingComp : ThingComp + { + public bool restrictInside; + + public override void PostExposeData () + { + Scribe_Values.LookValue (ref this.restrictInside, "outsideItems", false, true); + } + + public override IEnumerable CompGetGizmosExtra () + { + foreach (var current in base.CompGetGizmosExtra()) + yield return current; + + var command = new Command_Action + { + defaultLabel = restrictInside ? "mending.roofed".Translate() : "mending.everywhere".Translate(), + defaultDesc = "mending.limitation".Translate(), + icon = restrictInside ? Textures.Inside : Textures.Outside, + activateSound = SoundDef.Named( "DesignateMine" ), + hotKey = KeyBindingDefOf.CommandColonistDraft, + action = () => + { + restrictInside = !restrictInside; + } + }; + + yield return command; + } + } +} diff --git a/Source/JobDriver_Mend.cs b/Source/JobDriver_Mend.cs new file mode 100644 index 0000000..6a1760b --- /dev/null +++ b/Source/JobDriver_Mend.cs @@ -0,0 +1,161 @@ +using System; +using System.Collections.Generic; + +using RimWorld; +using Verse; +using Verse.AI; + +namespace Mending +{ + public class JobDriver_Mend : JobDriver + { + public const TargetIndex mendTableTI = TargetIndex.A; + public const TargetIndex mendObjectTI = TargetIndex.B; + public const TargetIndex mendHaulTI = TargetIndex.C; + + private const int fixedHitPointsPerCycle = 5; + + private float workCycle; + private float workCycleProgress; + + protected override IEnumerable MakeNewToils () + { + ToilFailConditions.FailOnDestroyedNullOrForbidden (this, mendTableTI); + ToilFailConditions.FailOnBurningImmobile (this, mendObjectTI); + ToilFailConditions.FailOnDestroyedNullOrForbidden (this, mendObjectTI); + ToilFailConditions.FailOnBurningImmobile (this, mendObjectTI); + ToilFailConditions.FailOn (this, delegate { + Job curJob = CurJob; + IBillGiver billGiver = curJob.GetTarget (mendTableTI).Thing as IBillGiver; + Thing mendObject = curJob.GetTarget(mendObjectTI).Thing; + if (billGiver != null) { + if (curJob.bill.DeletedOrDereferenced) { + return true; + } + if (!billGiver.CurrentlyUsable ()) { + return true; + } + } + return false; + }); + + + yield return Toils_Reserve.Reserve (mendTableTI, 1); + yield return Toils_Reserve.Reserve (mendObjectTI, 1); + yield return Toils_Goto.GotoThing (mendObjectTI, PathEndMode.Touch); + yield return Toils_Haul.StartCarryThing (mendObjectTI); + yield return Toils_Goto.GotoThing (mendTableTI, PathEndMode.InteractionCell); + yield return Toils_Haul.PlaceHauledThingInCell (mendTableTI, null, false); + yield return Mend (); + yield return Store (); + yield return Toils_Reserve.Reserve (mendHaulTI, 1); + yield return Toils_Haul.CarryHauledThingToCell (mendHaulTI); + yield return Toils_Haul.PlaceHauledThingInCell (mendHaulTI, null, false); + yield return Toils_Reserve.Release (mendObjectTI); + yield return Toils_Reserve.Release (mendHaulTI); + yield return Toils_Reserve.Release (mendTableTI); + + yield break; + } + + private Toil Mend () + { + Pawn actor = GetActor(); + Job curJob = actor.jobs.curJob; + Thing mendObject = curJob.GetTarget(mendObjectTI).Thing; + Building_WorkTable mendTable = curJob.GetTarget(mendTableTI).Thing as Building_WorkTable; + + Toil toil = new Toil (); + toil.initAction = delegate { + curJob.bill.Notify_DoBillStarted (); + this.workCycleProgress = this.workCycle = Math.Max(curJob.bill.recipe.workAmount, 10f); + }; + toil.tickAction = delegate { + if (mendObject == null || mendObject.Destroyed) { + actor.jobs.EndCurrentJob (JobCondition.Incompletable); + } + + workCycleProgress -= StatExtension.GetStatValue (actor, StatDefOf.WorkToMake, true); + mendTable.BillTick(); + if (!mendTable.UsableNow) { + actor.jobs.EndCurrentJob (JobCondition.Incompletable); + } + + if (workCycleProgress <= 0) { + int remainingHitPoints = mendObject.MaxHitPoints - mendObject.HitPoints; + if (remainingHitPoints > 0) { + mendObject.HitPoints += (int) Math.Min(remainingHitPoints, fixedHitPointsPerCycle); + } + + SkillRecord skill = actor.skills.GetSkill (SkillDefOf.Crafting); + if (skill != null) { + skill.Learn (skill.LearningFactor); + } + + if (mendObject.HitPoints == mendObject.MaxHitPoints) { + List list = new List (); + list.Add(mendObject); + curJob.bill.Notify_IterationCompleted (actor, list); + + ReadyForNextToil(); + + } else if (mendObject.HitPoints > mendObject.MaxHitPoints) { + Log.Error("Mending :: This should never happen! HitPoints > MaxHitPoints"); + actor.jobs.EndCurrentJob (JobCondition.Incompletable); + } + + workCycleProgress = workCycle; + } + }; + toil.defaultCompleteMode = ToilCompleteMode.Never; + toil.WithEffect (() => curJob.bill.recipe.effectWorking, mendTableTI); + toil.WithSustainer (() => toil.actor.CurJob.bill.recipe.soundWorking); + toil.WithProgressBar(mendTableTI, delegate { + return (float)mendObject.HitPoints / (float)mendObject.MaxHitPoints; + }, false, 0.5f); + toil.FailOn (() => toil.actor.CurJob.bill.suspended); + return toil; + } + + private Toil Store() { + Toil toil = new Toil (); + toil.initAction = delegate { + Pawn actor = toil.actor; + Job curJob = actor.jobs.curJob; + Thing mendObject = curJob.GetTarget(mendObjectTI).Thing; + + if (curJob.bill.GetStoreMode () != BillStoreMode.DropOnFloor) { + IntVec3 vec; + if (StoreUtility.TryFindBestBetterStoreCellFor (mendObject, actor, StoragePriority.Unstored, actor.Faction, out vec, true)) { + actor.carrier.TryStartCarry (mendObject); + curJob.SetTarget(mendHaulTI, vec); + curJob.maxNumToCarry = 99999; + return; + } + } + + actor.carrier.TryStartCarry (mendObject); + actor.carrier.TryDropCarriedThing(actor.Position, ThingPlaceMode.Near, out mendObject); + + actor.jobs.EndCurrentJob (JobCondition.Succeeded); + }; + return toil; + } + + public override string GetReport () + { + if (this.pawn.jobs.curJob.RecipeDef != null) { + return base.ReportStringProcessed (this.pawn.jobs.curJob.RecipeDef.jobString); + } + return base.GetReport (); + } + + private static Toil Finish() { + Toil toil = new Toil (); + toil.initAction = delegate { + toil.actor.jobs.EndCurrentJob (JobCondition.Succeeded); + }; + return toil; + } + } +} diff --git a/Source/Mending.csproj b/Source/Mending.csproj new file mode 100644 index 0000000..ea542d9 --- /dev/null +++ b/Source/Mending.csproj @@ -0,0 +1,55 @@ + + + + Debug + AnyCPU + {447D30B4-F151-4217-8740-92065F404415} + Library + Mending + Mending + v3.5 + False + + + true + full + false + ..\Assemblies\ + DEBUG; + prompt + 4 + false + + + full + true + ..\Assemblies\ + prompt + 4 + false + + + + + ..\..\..\RimWorldLinux_Data\Managed\Assembly-CSharp.dll + False + + + ..\..\Community Core Library\Assemblies\Community Core Library.dll + False + + + ..\..\..\RimWorldLinux_Data\Managed\UnityEngine.dll + False + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Mending.sln b/Source/Mending.sln new file mode 100644 index 0000000..1de4211 --- /dev/null +++ b/Source/Mending.sln @@ -0,0 +1,17 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mending", "Mending.csproj", "{447D30B4-F151-4217-8740-92065F404415}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {447D30B4-F151-4217-8740-92065F404415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {447D30B4-F151-4217-8740-92065F404415}.Debug|Any CPU.Build.0 = Debug|Any CPU + {447D30B4-F151-4217-8740-92065F404415}.Release|Any CPU.ActiveCfg = Release|Any CPU + {447D30B4-F151-4217-8740-92065F404415}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5693ffb --- /dev/null +++ b/Source/Properties/AssemblyInfo.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using System.Runtime.CompilerServices; + +// Information about this assembly is defined by the following attributes. +// Change them to the values specific to your project. + +[assembly: AssemblyTitle ("Mending")] +[assembly: AssemblyDescription ("")] +[assembly: AssemblyConfiguration ("")] +[assembly: AssemblyCompany ("")] +[assembly: AssemblyProduct ("")] +[assembly: AssemblyCopyright ("@2016")] +[assembly: AssemblyTrademark ("")] +[assembly: AssemblyCulture ("")] + +// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". +// The form "{Major}.{Minor}.*" will automatically update the build and revision, +// and "{Major}.{Minor}.{Build}.*" will update just the revision. + +[assembly: AssemblyVersion ("1.0.*")] + +// The following attributes are used to specify the signing key for the assembly, +// if desired. See the Mono documentation for more information about signing. + +//[assembly: AssemblyDelaySign(false)] +//[assembly: AssemblyKeyFile("")] + diff --git a/Source/Textures.cs b/Source/Textures.cs new file mode 100644 index 0000000..a68a330 --- /dev/null +++ b/Source/Textures.cs @@ -0,0 +1,16 @@ +using System; + +using UnityEngine; + +using Verse; + +namespace Mending +{ + [StaticConstructorOnStartup] + internal class Textures + { + public static readonly Texture2D Outside = ContentFinder.Get ("UI/Designators/NoRoofAreaOn", true); + public static readonly Texture2D Inside = ContentFinder.Get ("UI/Designators/HomeAreaOn", true); + } +} + diff --git a/Source/WorkGiver_Mend.cs b/Source/WorkGiver_Mend.cs new file mode 100644 index 0000000..eebf2b4 --- /dev/null +++ b/Source/WorkGiver_Mend.cs @@ -0,0 +1,130 @@ +using RimWorld; +using System; +using Verse; +using Verse.AI; + +namespace Mending +{ + public class WorkGiver_Mend : WorkGiver_DoBill + { + private static readonly IntRange ReCheckFailedBillTicksRange = new IntRange (500, 600); + + private static string MissingSkillTranslated; + private static string MissingMaterialsTranslated; + + [DefOf] + public static class LocalJobDefs { + public static JobDef Mending; + } + + public WorkGiver_Mend() { + if (MissingSkillTranslated == null) { + MissingSkillTranslated = "MissingSkill".Translate (); + } + if (MissingMaterialsTranslated == null) { + MissingMaterialsTranslated = "MissingMaterials".Translate (); + } + } + + public override Job JobOnThing (Pawn pawn, Thing thing) + { + IBillGiver billGiver = thing as IBillGiver; + + if (billGiver == null || !this.ThingIsUsableBillGiver (thing) || !billGiver.CurrentlyUsable () || !billGiver.BillStack.AnyShouldDoNow || !pawn.CanReserve (thing, 1) || thing.IsBurning () || thing.IsForbidden (pawn)) { + return null; + } + if (!pawn.CanReach (thing.InteractionCell, PathEndMode.OnCell, Danger.Some, false, TraverseMode.ByPawn)) { + return null; + } + billGiver.BillStack.RemoveInvalidBills (); + return this.StartOrResumeBillJob (pawn, billGiver); + } + + private bool ThingIsUsableBillGiver(Thing thing) { + if (this.def.fixedBillGiverDefs != null && this.def.fixedBillGiverDefs.Contains (thing.def)) { + return true; + } + return false; + } + + private Job StartOrResumeBillJob (Pawn pawn, IBillGiver giver) { + for (int i = 0; i < giver.BillStack.Count; i++) { + Bill bill = giver.BillStack [i]; + + if (Find.TickManager.TicksGame >= bill.lastIngredientSearchFailTicks + ReCheckFailedBillTicksRange.RandomInRange + || FloatMenuMakerMap.making) { + if (bill.ShouldDoNow ()) { + if (bill.PawnAllowedToStartAnew (pawn)) { + if (!bill.recipe.PawnSatisfiesSkillRequirements (pawn)) { + JobFailReason.Is (MissingSkillTranslated); + } else { + Thing chosen; + if (TryFindBestBillIngredients (bill, pawn, (Thing)giver, out chosen)) { + return TryStartNewDoBillJob (pawn, bill, giver, chosen); + } + } + } + } + } + } + + return null; + } + + private static bool TryFindBestBillIngredients(Bill bill, Pawn pawn, Thing billGiver, out Thing chosen) { + IntVec3 billGiverRootCell = GetBillGiverRootCell (billGiver, pawn); + Region validRegionAt = Find.RegionGrid.GetValidRegionAt (billGiverRootCell); + if (validRegionAt == null) { + chosen = null; + return false; + } + + FilterRoofedBuildingComp menderBuildingComp = billGiver.TryGetComp(); + + Predicate baseValidator = (Thing t) => t.Spawned && !t.IsForbidden (pawn) + && t.HitPoints < t.MaxHitPoints && t.HitPoints > 0 + && (menderBuildingComp == null || !menderBuildingComp.restrictInside || Find.RoofGrid.Roofed (t.Position)) + && bill.recipe.fixedIngredientFilter.Allows (t) && bill.ingredientFilter.Allows (t) + && bill.recipe.ingredients.Any ((IngredientCount ingNeed) => ingNeed.filter.Allows (t)) + && pawn.CanReserve (t, 1) + && (!bill.CheckIngredientsIfSociallyProper || t.IsSociallyProper (pawn)); + + chosen = GenClosest.ClosestThingReachable ( + billGiverRootCell, + ThingRequest.ForGroup (ThingRequestGroup.HaulableEver), + PathEndMode.Touch, + TraverseParms.For (pawn, Danger.Deadly, TraverseMode.ByPawn, false), + bill.ingredientSearchRadius, + new Predicate (baseValidator), + null, -1, false); + + return chosen != null; + } + + private static IntVec3 GetBillGiverRootCell (Thing billGiver, Pawn forPawn) + { + Building building = billGiver as Building; + if (building == null) { + return billGiver.Position; + } + if (building.def.hasInteractionCell) { + return building.InteractionCell; + } + Log.Error ("Mending :: Tried to find bill ingredients for " + billGiver + " which has no interaction cell."); + return forPawn.Position; + } + + private Job TryStartNewDoBillJob(Pawn pawn, Bill bill, IBillGiver giver, Thing chosen) { + Job job = WorkGiverUtility.HaulStuffOffBillGiverJob (pawn, giver, null); + if (job != null) { + return job; + } + + Job job2 = new Job (LocalJobDefs.Mending, (Thing) giver, chosen); + job2.maxNumToCarry = 1; + job2.haulMode = HaulMode.ToCellNonStorage; + job2.bill = bill; + return job2; + } + } +} diff --git a/Textures/Things/Buildings/TableMending.png b/Textures/Things/Buildings/TableMending.png new file mode 100644 index 0000000000000000000000000000000000000000..2762c316e674f42751a94018e390961044dcd225 GIT binary patch literal 17513 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