From ed791a086caf5c0c8df62b9a510917e5a8000d67 Mon Sep 17 00:00:00 2001 From: Joshua Date: Sun, 12 Dec 2021 01:40:09 -0800 Subject: [PATCH] Outposts: Move some stuff to Utils --- 1.3/Assemblies/Outposts.dll | Bin 59904 -> 59904 bytes Source/Outposts/Outpost.cs | 31 +++++----------------------- Source/Outposts/OutpostExtension.cs | 3 ++- Source/Outposts/Utils.cs | 26 ++++++++++++++++++++++- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/1.3/Assemblies/Outposts.dll b/1.3/Assemblies/Outposts.dll index b73950641c01d5106648c9de81f7f5def3f1bd59..260a1b0efcb7465b595c6e9a8d4804dcc1baa66d 100644 GIT binary patch delta 24890 zcmbV!2Yggj7WaAY&AjO~$xM19WipeHN(oX0#V9JhC`uP2WgtNWhsh*@fC3^sP_a^M zD4+cRe4ETo-|H+QfrYCY0JUmpNsG-lbKA{ z5e>hCNYeWKtD81hzDg?7w#g%OPt*ScRTxA2eSnwK2&qKuFn|NW^SY~hgj9dM}@gjJMM8=Wofkb zpywi~M*GTBj&_!}TgDY_Dr1DoJ*=`{s9d2%y@g4mK@N_N^Fs~=!Htd99`Rn6xDo^) z{D>ZaywQ9M&HQVw`DZ^JPYd8D^fvQb)%)1?J7_nJgO=#_RcN%T8<}wsjKXH-_@&%F z=X)shE+|fGsmbDsB(*aidJps+xBIGP71=h$sWt$*9Y&AW@ygT;nGZPLh7sl8%uKeT%}1qmoVz|Ib#v+)6_{0 z){iO@+2gac5oyz<+1lUJYKkU zr*u?%OsmXH+974+N`0>B$a(ynLFNd9O;bC{Y&j=0RU4l%Mr{H^Es*J__;UL^I^ zDzXa3W>nbdRhcN2$k+HBWbCROZ-gqTp)&NdslKC`ZEU797=_Ku;S!6WR-R{aImjUx ziiFYt;&Zf$?CkE9AUf2>Dm>!Xvxc7aIcP?!K@@XN4)M&3)&O@li7Khk7H5aOEEVel zYEw1Kchz=hXD9x~zPK*c81t=7-5}sMhq~htXqA$zK5MDlsxw2iASRhfiSnFGvPGu& zY|&h9+R114nRTh48k-ACg=MKlDmwE5JLmz$!X!tW89qm{-`SdSIo1iEQ@bk1<2?`D zhVLYr75Wm!LY3NroT6e8jT+-#`lV10SfTFE5`GNtu1Hs(3v0suoUA_^IGvL}k`0{I zuVwwng-u;RjP~SiczmAHprVKT2eF`R(9!Sq{v&E*FKuRSk;=rz-rC){RelVPkCYB+ z{V2Cnq7PiyNfwE6MWz^OLLDf6Ggbw^r8T9DD8pw7hWbL3Gp+j6QkxPC_2cNwKC|L8 zh0aHt%;wox=%j|n&6uL5=pVBMkrw8YEgC@j%CwIhHmy0Ypf;VWa1T0e$0VJHkVy{p zhjerRKoeHl_S5VM9;OSxC~Uq?`!FvpaUt3cjNjjxp%)0-FzW>(ivlT2^UG?C$$}b4 z4h@7BIunrsqCYOw1hYluI8{sNBJe|X0P*=CyD>ogjIKoBXGhi&8R)b0)Czo3}FRS5Bl z&=<%-JQYnj+DAKGFg!6524kZD3ZtU|X!e zgwmBvMNgw+(Li3W!XtV$K$l`UiX~eu&C#FHaUhoZbtE>P#U=po06Vn(g|2=RfhA#0 zk4|DiuVD-LWJ8SC{v4kXqR;8G!s`_9qSpW*SS?u8t29$|KZ?$(a;thV9*tAM4iz9v z_6Vur-XzP>-k^uNYt2Qei7YPey}<35Q=xju#&1Ms)EL9$R>fhdeIDJ1fS`n~gM=E3 zfmv7<5DU}G>|`3qg|0Z$ZJ|Oq6EoHssj%wxXTmJhEkvWpe&ckOSE8i}JjrK@-2!50 z1|wE|_PzR%!&+*wMpM9`qq?dRoyih%%m+7$DCJlbl;|ubwJSDfYG?nWDhF>OzAO=2G;lB^hKIfMm9jbRZmHBIkmWjkA$1D(QV z=7fsT?@$OJz5u8mrq9}{zQS^I+4c_kgPdgYnMz$e@$70KdIR(2 z=m>2{NlpS&#@F}{^wh2@@g_utEjz(I!pg>Is0I3sHvtr4QFx70vJgmo5mOqTQ?YA} zhrJL6$R5905P#`NT+GC#Ua%Ekf@Ua;{GBzJ`^FzE)>=AR)I8ywgl?j52NRA6S;D<@ zS{re~R14+!QgFkRRH4vV3_va?Q=b^dD1<~2{*Qra8;n~JoH0tl=&e9_WMG?=-uieX zN0%{G5fd`0!b1OsqdYjuTrpFue{yI!1U421<=9rFBf0`uFcjCm3Fq4IgsqK*XV02C9|8ftyaIalanlIg<{Zg8)4u$K+yR?k5{Dg2BA)7No*6?b*V^Pi; z*41Gwwhqc6Eb)=#KLYw)jWpg5H2Q!rj&ZUR zs)Ddj`Wo>eOPr+_!4RhDLVm;;M%S~-1~#)105cRH!ba*-G(9;PV@#Bs91JvW0ykVF z=ja<~_+mYn#%35cJZ8(G2U+NBw=lFS#yF|ML|ixp+I^ivBE1F?2TbuJ$8r%#6ILDl zK(!2wR`o;f-$O81*vuUMa2%0i2*}j5vZLfjEcvjIWKO7p^HC|pGa1L`uj7r6NH%n| z8hH3A?b7n>L`occ76#-|Xp0~@SPTb&>}xy@!@R29&N4A9@PI{tYK$q-4>0&wjFw}V zi3pshmk;^-7e})h_ChuAGkTi-2?F652axbkSyaBPghpbWRFgwkCDri#4ZBd_Oa!)k zI+g=nOsoOR2Llg12BRpG(BtQVHPaOc7A1zYD!K*q=vIKBSmf<$X&N=W2CGVR8>pNY zd*~hjbYE_;*l1Qli9P{Na&qWNJV;ie+wqJ(#nMX>+a#=by1WPADi3=7hSzSExHcGp2*7Aql-}{2SQK zm>8xeriE(3MN+aTnIka1%Onb!Ma5?18ZB*eT z96K+>B3Pttuguf05-PRBl{pnCQPk#g8}K2qT?7pyfVO=)&8rJ)_g2|2;sxS>4;N0M`#Jynf$}H6 zNYh$a5O)H4@;>L}{R7;>X6A&>)SgnB}V! zE3|&qDM6H&Nfz>=r$)0%n^E0q2=q-2T^yY5f5LThFUBXF!+SISz&X4R;~$*E`!b&4 zJgeVNJ6>Jjx(;0lK{SHOo1yt@N^$J(QSSeCUb^ z8AnST0L*kfCKYBif1nt^;^OoI2QwKtcY2XSxByXO5W&L0+UIt&MCff!{satzeyA~I z`$H-&P9uiKI}kf}tkI9^IFoz_!#I`8Rh(W#pZlb&~G>qV0@RHPU z616E zoX-&uBj zqh{{bO}aqq)h!KhRJT4>HiVmqe%k%r>QWeKcm+8K@K|C{u|Zs*{n{-vff#*_lEg_j z#UF+klKu!D)U*ju)U@ubm7V=dIAadFD?_XC1Sk!MM0Qy_`T=nLfCW@9P8`w&3zMHW ze}&aPVX=#ev^%@|0$BNdjV2L;5`Pp{WQduy7rF;B9&ZccF*I6LJL~R;ox#^)?C{tBK*RWpSRhg^6Zn8J`+| z;I(5s+nxYmd}^$Abs&mGwy7U0@u$YZVEiOM8h*h=eLLN+K-9C4YGmP~CY;1M+mU)B zDh~ci4hPFw`}M!!|053FS6Z8|B=)66dRFS=E0SI6G)5~0ouhEJ9OF?6r#F6$SZ_>1 zg<$a~oEf-6z{zQ?PL*R^KBADS9dbaJm+cWtpm7;u#-be?41S#J1MQ*Q=E_lFJ+vAU zVQc3`jDy-dQajPJF!2pM;fg9e5_=9-Yg0oM$;Hc<9I-%QmHaOR2r~q0wc0!e65*lk z?qNc3##bCTCYcEOREc2mY3E7^M&IIb`xg48{T00JxvXC>^c^rcHWpmIT$1HPtBM1R z+W0-_h4wfz)DYs02>H-ykW;U0HNgW1$qNHICVu|xq(=wRk5Fy8S~$W6a}^q`>IQZ- zmt8e8Cp45awYN9H%y5$u`w5)b8Gtgcf&2_4m3;@p_F%Z7?R+~P3V%H0c5cM-sy3rc z#TtTK*uxhZW`2R0=&u0bDn-9Q6bP?$5+#p9e=0a_(cd6~bE{R2whc?R5^Xi~e#bLL zGK^fT#4JFRm=&;5V$#*dYBdAy+ZHPAWbd?#qaet!nSfY2pXUCbT{_hmGsTI&)pV|N zf>;VpyAyna9Gj(G-X}AmpYLaP~PjV~e&{Mk0mnD*2LePbK44#-=7qT!Rs#!#aDl-$#9@GV)85>s< zj76io)XTAEb|_|JtNJ?UlS@Z?d0-*oEvJj&_?s2+uWQM0BVNj zeKU6Hfb_0*>wtVqH}qSM-K^~xaCw3i#jd;*4PL%feQUaHpkBVF83EZvoIf9N(neE1`Th)XP({2IFwcu zTWN=VY)QwhQ@@4X-;t>Ar+uI=_ESB))VA>cE+M=Wfkme4-V%i}qF{H}q&m2>xjSsZ zy1V`ziMqR<9o?n1xf_1Y-56g3q~hvaTIlrnYK%NbPtkiiq++#y5MqCJun5Lf7Y$l&o77wO_)aRi~^jBpf> zW*kGr4p_=Fl&{%M;_3=M@U8=8YHC^mAdY@4+Nyrc{dx#_DQsqrxc^hc2hFD2I!Ycp zC&?TkDenKoRpjj;MRD-pNIt>C-Mk7EAfEzh*0fJ9DoCs4)#?l2y#3q(wzyqUV|QqI zb?J#O!4QYgKQBrbiW?X?#yWBA)@=7HwtFYH`C!7kTMwAmLoY1D&AX)EyjvnAO?N@8 z-QC1D?1}FV3!9lEZV($2;%45sjW4t0bIKxC=%v#aIUy?Dy{2XYLeNx#r& z_hI8c=Ib9e9$*!|ofSi!j%S$|Y8Js+Lyq8IAdKp{k0xRj3-BrQe%3ix8|R%>&})ND zo~sSvOVq}9BCm36J@|13qBhQeie&xD$=aaZd2!jehrw!WU^4qK6OI%5&88fC1gxe9 z0or}${T-5xeoTtOX6EpVjY!i&9c73=6iyTQd`RnbNtXoH6JMihe0JOnVLA3FAhsTC zksS^}%rp)`e2_hR$P@HGoP#%G-|TpYE08OpV~KNRB;$mK@sw7@Ein z3l4a|0TXyIGZx^*1XJG*Y39bavPdw_9)djVB4*uFJC!lQ32!pGNp{(e-6}gQJr?}_ z`|tlFhQF|AA|@W918we^qPtJ+=w8$u$Hl9KEKc}Xu(7*xY&cLgt=Kie{;FIGN!t0qat@og!do0rLd? zaMD)=D%~q!v!L`$zB*N{9yD&3dN@Uf%?HFlz^E{PY zQ>LdB?~iO89 zDPL!^Zc7q(;iC~L0hFmxuYxXbTee^bfSbUT#oNZ*=dh(JP&=f)4zkFlOhvG&@nqDu0)dUGzli` z)E7yE5Hew>`Cc~kH#fs&2q>LC@?4Le&31Q5%BF7ByWqGfjU|tRVyDAJ42KH$Hv~E8 z4B@ObgY%J>#i8Wpu(g5;&eK;IRy&qb@K$KKDduPTkWNf_HjlMVh!FoNIvjE* znDK3{r!=1)@YZ7>rWA0D%@s^vUBC+2Lg6-{Ft(8C?sSI9`CXEVs791qOBPdBiJW0v zU?D2x8}hrO{Z2Jg7I+wbAqL`Qv~gVay_m?zrX$6>9NDza%_)5{pIweFV{;dU7`~Iq zYN<8c{z+7Ckx2F6Jf<9};#7~|Qlbm;7$&(Go^dn0Dv7zT)iBHw*6#GMR*KO53NYcu z^r-L$s5V&O2+$xvObiPPT`2ldF5r1d9K>WX5FfiZ#49lzNPZgAd(|-Ie!-n4N^h5N z;}LL_fU88U^bpp*7P+bBGEY!vF*q1`1y-PPUn75+k~zkdgHwEuU6% zZ$^k548|B^Z75;Nkb{-cw8(t;q|7E!6J;2A?0!}Ub&r8R14u*%E z#lA0Q%!2Qdw@6-!79I?*B`5x| z@-Xtbmg?x{cD##eso=edL)O{^4Wec3m?LQo4q;yUF^9-3jix)>@y5_Pp_q-Hti_e^ zz3q5c(F1~a4L0|+G@drK<4vH41g}-_X3$dtQ`tQwqVyMm;tMW7XVEhP8-&B)TJ(08 zz;LAptdX7**cluU*P`z)3hYk7n@4*Dwo&x=M%pW|JwkE;?GxC4EUXu&R|Qrr^qLa% z4}q4Mnb|`B6xeRTTu285HX0{|wMgOH?fSHgJ`lWO(Wl$#cst%II?)c(=s!a8b0K*L zebJ70CnZj{W8Ooj1ooqFcprV&PILqP(oXVWloOBdRMFo@$t198qQ9F-mCjYdV`LS) zlfvc}atQ1$k>6)1DIpDM9^)uc^5}HQrAc{I*J%{s_UbF~ifL?VJ)k9f7AQwk7)COg z`(4Ex&};JM0lrfh2P}3jP8!+V+wq(k8*O zEKSFJ&tWpy;wJznmN54<_h{5k zjhEZAi=PGk{nS-BkbM@~jrI$|LPHvJm*g<~cQ(WILh{XWZZ8+@{8ZRU&oN#_)Cs`Z3- zC70tQTuSs`1XSV~1*0y<&!8MK^@r}V2#vdHDm5+zxsCjccOuTlZDBnqi6 zP%3Obz%vP3t1y(29Kavz}YiiQxhPn@!w)$ina|x*l+zInj*A!=`0`uUXc@T%d|a zC|*)*)=lGk_b56f9|NRPxw;WDQt=$LKg`*Rc4ed|hUPZ=Q)o}FT6~snN#~$--L1;s z(0(Dz^)x8;)w6Wi;q!mF`UXgoa#^9p^8VR2yZLisb@vkeN96=wV%78aF*-0?`ULP- z3&UG%42PQk3v1jN&YYAIpgL)p$d-!sdy*q1!AVX@QR!(E8VlutvE5t*=$0!0|86S+ zw8yJ`&a3ovjA zsNDjgXE8$OOuve@UPLbkxFmN2O0-|hl)ZowZ4EO0Q9yh{NM-p^R!%Gr)8JgJO0+n& zrQkM%=*?$rpY`>WHMkn6(J`7HcH&LK(oP9xw$R_J)}<)4rHCjk#hIy99f=LjsZ&t~>AbE(0+rRZU&pKjL`tw+DOQRMT92z#=6zLJ63C$8 zxFck}NAoTAOd5de8=_UTub@1TMVWmVYoWyFX?1}-`n4~kdYKeaqMweP4qfgjqPq<2 zRg8UzUhgk>(i-F`L_Zi{R8&Wigej^(l|jUB9GyqI*O zrv#>_yITi`-RQ93tx8=|ut4fY7Yt#&Mb`4lw*%d1sKEAFc~*2w&{7>0)1n*w*TA?E zy3y>R!l869bO?$qIwsb#Zgj7}+T1@Ruon7QIu6Na4eV)r5vw~{hq09w`riC$pgVbS zRgIw#Ijp5bS_ib#S?rrYE!7BYA3f#zA<%<*j$lQ7j`XC_2KJIm3ihN~0=t8PCEg(B z*+`bWgRZFx1^ZE{fjtrK5$sP_8Q3#57X}AVeZoK=sJT+UfEF0o)|#Ik18Jp!Mf~nS z9c?>{jSgNy2Mw&RcYN?t`rg1QGa7<}X~ZaY&prGmFpL@mwwFHidGT4YMPT~CjKH9Y z{ZCKE2wEYS3voMoQ;?Z$W+ZfIt-(8~EDesNrwr^B%$QO1k9I~!bHf?E6t-|2rapxzH#)Y1 z(XrG=@D|b>+X2T|8fRds=B>f2I!Ink6AfOy^|ip&lxSyjTnEW4D(nv%DuP4+N*sL4)@rJr}%& zjvCla=D!E0wn--FNhn@RpBv0~E&GG@9U{Gsel>VKOiP2;QSw!sr-k&8`gU+y2g&I) z)ZnGsUJFd`z?(r)gV)`DI5^`hFVRvU(M(!yFuSU+1!kUQGA~LG8oYt($H6GQYG4mo z9}do<(yR4gHrf9ZoZUgMk{ck?~WS~)XL0~=&8Lunm zVUN49gW`=8HFzIk-v5!e)ZlFwdM^k}pXoQ!QGw|bJw}-m2tQ(?Cn!dPCNrwf^cd9( zOrPno4m156k7s&}=ID|V&-55QV_-bfWAviH^w|W-c1u}|UK6~96qCLVCSr8ZK*yR- z2N#@Ws@AWA@w1p_`#RXv!AydBOyRH>Qo2b=P0&RG(;YT_K7pst4G9;}@!sQ0yE|I<@?TZfdcq_IL&-wjt%qMltG zw~g<7Me529DLu#Il&++ux}~nBRE=x{zfs&xx zD;dE7mK0nJu+X0=S7*qe?-DM9!Zbq}S1_zq3A%|^!j44k>0jcrzDaP+2KTc9*4mbG zE|i4cr%8xNqG}PN-fn?u3D*e>^|0E*_sh@Gb@_>cqGwLm)uBn)(H#%>v6kK*Allm! zh(#78MI>3GJBpd2JJW;fDbmYOruFE7MD5#om0qt*7UWN&_U)GgEWf|p>s4@D(iW~P zx}?zjbf$b)f$_)Kh*)kGk@86MMGV75f})SyWZ?jR`~v!Fk?J`PZtJ~2DcU;JDgQSp zi5k+aK_&qc-wI{jaVL>*U0J8=?e=QyUZ&}3=iKY&bof_cVNfb_+gs4PbiEj8eQ0*0 z+OYri6a{rQBBqZ3J@zm?2hY!?x1xiH-2Bn?|$lyS4O=->x~yly+P{@nvM8?;sZ2O znrP<%+VOSomI5!;3fND;Isu0WI7Yw;0@f4GKPmiH2MY5AY!Pr3U^-s6u!B5_;TQqy z0dwgVsSF49RpOxTq`LANw0q+yzDlaY5|m7%3NEB|(kLuB8-$ikVGEf;vOsW4MZ1PZ zB_MhPZkEvo;cNrlm%R$@DGr7s-K+3=ij@ZlI0(wy@hOH~Zl||P_Rs`rrF$QZQSQln zllDkezW1qK8Rq?nW-DtV|EBp$py*5dL3vBTkFXPW{s^t>{J&F+5-&ANd!*4>3A?mk zO2)O)Dy2CkAgxmlWu!?1gy?YM-E4z$d1*k}tc=bKN!yi%ssYj&np!#tu%UD?U}f4M zX)6VAQre~Ltegay+p1W8O%=;K(cYz`rbnUGQZP3G_?FGFz z=wp;IxU!$Gm@D6f&0*;uf?fvtE@iIc6WD3ZKPmO3yEDF%#?mhpHT0I!Kj~*F(IVef zD#^Q)d6iaqzM|FmJxfYDUmkdis}|q|4vUSduWGmn^FszXOsz2 zvhS#}!Ssat-^ylFOQPVk^10laDx3DusJu+mcGJfwx--hqNSH?_#e zvT9BDinI?gnW_hwhM3CBW|;Pyp3huh+AiG@E>ZSi$eK-WnV!p81d6qEg=w?I_r;q< zaBmrqFK>>U-bj1EbQ~0{f1l%V!1TFvY2G1|B>xky$&O1~(~p`?fqnu)_o96U?USZ6 zCSE7bNayGMWU`rC3VsLoWR}$|$(#vE-s$k7ZTIBkYxC#fr9+xD9bYBPgJc(Tn)zT& zPjLAL`9Y(4K1?5+fat^=FCCHQ$K21{D>a4sncvO+(wrv3nj@xVo%yfTKbwy$ z8EManNp4c>C(9>FEuf>R_^1v39wt{P3joo_>}U2Yma)1`R5|DWnX zVgI10k1=wg{{!`CLiA(4a&5(TDv$T?>L)_z6H&b#y_BVsuz z3Uie?)!WA+YQplX&^@Dck4!*JGQUUJV1A{j(PEMkyvChT zq_XEMPK+_nX;bxJbF$IiQ~I_gQ?v`Di;MECrC8N3q#9vVGWGZOvi6iVWngiYcws5Q z5fNE2?+Q+~mdJc1T_W?qt&``J+-%)$9#OJd9w00X5*F&DK8fmkt?T5e`3uc^@IMJ{ zg3x{VZy)B+HR%f8n- zM@+v{%5x=?Y{Ny+V~uWn9b97L8MN892Kkd{oqSE%4%;nedro4PZJj*7XphaO-WS+s zt2JjtN|ai2|Frkf{yP1XZL)4cU6Zp-NmI5viz!WI6YSn%&r`oCf6tt!-kEzI+P{?# zx0k5byRWwIky8B2?Gxnm;??#!!a}8bY0g%At!mA9%D!KEEB_UHKlN|fZzSyf%vX4i z*z45R>|tGjB79JAFo(kemWYkA4ECNc$WzLei1 z^{JL9P1;?s(b1v~sd&V(O1&w4khDr&nLb$h+`Khy3+RX4J3;^2Ge}C4_Ll5&tW&2& z21$t_@*!_A4UvEJzUbJXK8^Nf)t$Q6Q765D%2=n4j~sC9m*=}MV$urNA;$tErPk`7 z9oyC1%!{2H%;wNg=ORI$BhtIUywiWJa}O@?Tb%vOHTg@OYslkW?cAgCur3#pduSKl zAgoCk=9X6MbKWc3YiM8kF=w6BKmSW8yqt2taZ0(cZm3M7=hvzw5X<2s7xo+6%9?kE;tZ@v_^L=f2c6hY~NR zJgV$hZSEPaI_zCHxJqPx(J)3?le5ybQ{o+c3k=Pbwn)6MZ;^PX=NZ4r^}OIdkILWe z;>o$s)gmvf+@^5*J#5Q7n_d^NCm_!SQ8&tcX-@Y+K|iBn{V#T(Qsd4lcbc@r*V`>w zCTDC@co+YYwnJfnyF})@@S{TE69G>Gu6Dj9%zZB?vz2=yd)y^xOLRoOwD47To`pj{ zA~(a@5t+B25=$cZPxle|lKJ`&pvt z@6&NOFnQ`M_c4@PZK@K!srA`iW?h=!Zk1Hher8> z$RM>qa7zUoVoFqP_RO~2;VL(cv0RU_oNsv}?SQ97a3zz!Dq`Wx{p2YT7JBM*bps|a z>I3kU`L5DY-aOM=S%>5VA2-H(ON7f77@F>_RqiUC>m4A}1_?M^z*{WAl83yKX;;l* zZ;Pze6jPmWP^aw2*GX z-w-*~lklxmFTg~t!}--Nt&>fDOj=o=)4!&z!fM}Au*i3d`FP=K-*(GlXBC`9;S8_! zU906imb*&t_wBcQo%)DxgE=ue@VxI=;#rU;4RozU4Vx<&{tX3k#In`%t?#(yH{V6B z3DUldUwxHI4W{KTc~eoQf3gVrbIX4-d-_|XVP0N>R#xy@@*qykPJHy9imxNr&~(7= z)Z(|&QCbanjP3;dgzg3WEI}LaI7tuVZwX4I#{nw=@g7%Njb1H-XlJ~RV3(-k?)0yh zHqpK`Mg9_Q`pfqKz9h3tMbQ8|3D{r2Ndhhu@Ff9H2&kBZq=5YeoFw2v0XGTwl7J@! zRLnx2VZz^EAd>`KDBvamUlQu3$aJOd@U6H<9w2uim-p9_G1w1Ao`I(X{U|#{p z>+N)=j~8&afX4)+3?VOIUjfHwj}k_+8SWPFn1GZcLPn=y>ai`-tWC; zpUvm-CHsne%YAqGUhy6D{mb{I@3c?x+x!9lrT$_5(b~rgvJw?2|L*v*Xm5N)l;}Xp zG~77oaAxK#w4ZRy0emr)+ha=R1OByq5nx59rGPJFar<50ZGgklR|7VrF=b>bQ);~2 z{zuUrfXC7{0R9?y81Oas7Qjm?pGw6CTrG>$J_|hq_?P0{fYp`%I7|7h>`k<5JHHFq zzWq$uk+bwz*++U?dnMk|YdBu1%lN`+Ip9>>TgbShtOi_#KZ}*=J-lR=@fFfqz|)xF zGW~?V*pbOC^#Sy1H#e0bB@asx+?qU!@4r@HdoBmuCRGAHDOCeLC3OMZiI>pb=`%=n zr!OGcolZ)<0KbN0cls|RyVJL@+MT|KWN-YJmJz^oxePE7Eg)THL5UJG!W_s1Vi(6ILi4V_ycEOfMby*8vdsibQ)OLXMa`TuB> zXtK7VdD;XARpHyt)#Soj@5aEn@#n`$7`h~+GYNy2g1^8^!SLbhdHC%mF0caB2T%U_ zjwXpXexMqBhlJ<{I)EEwq8|?R5X}L0SgKdJm(RPn?gKdO#&{iTpVjm$rV&5Q_ zIX1~# z;av;kZzw0chv+l!8_GA{x8%>fCzK(|m&)U&VbTy~2=v~PtNj`10H;HH@}@d1vhWHm zWwBT4s@=cvyg==^ab2p$RZ!0XQ>NF?ozl>IA`>*<;$-c!g_&Alu}7<2RAs8H8CRjL zUy_FZIvlK&E>>1qW8OMZL987tPex+=s zE?PQp$HPlMkh;Km)gPQQq4%V5;|A0>&YC`9e*ftc8XI*n_Jy2OaZZx){8KV^oVc}z zq?Ir4q|}V7W~m%J|0KmEHq{j}Pu!fLJ-U33=Ujl3MOM>S%*d-5*X7T;U8(1#6Q)h+ z4Y6)Jwyju|>>OS{X^Vj=W>}Gp~BQ{_W#r z&tI!A{M*eRUiM+>j#stGuZ+yMr1+aROa2Oe?!wcmb{u`>Nvqn!;`KM* zyJOvf^CjuQ9Y^1KTFQS^Zj;4xoeWX&3+imi-_ph3yhYpj&L`4NZQa3Pip!#C-yYm0 zJ+EzfcfR!Mj-vPaNYYX5nnSlrpJ}HK4KFxp#|cpQ%*LNnO4;~xUOAhxC2mWq1*U&> zYZDLO=``ocPOH^yL2TKkuce=AG09e0M#am5zgx|fptxNi2b~r< z#aAy`1rVfT+HFU=s{b`vpryTdWSA^TJN)>sB5GPLwW}%qmOAc`m77NYOezS@HhhJ@ zWeihxGT5ut9nDi;=jH)z*3oq7u(s@IuJnnv<>-ad_u6+yH|%)&!xAZMA=!;kW&EFi zqPH;UZz-|j*F%ciAi;8)Rr~m(tF%i$j`_^F1Sxwirw3!z{E+tQ$1@$K5cw<202rcv z#{!a;I9`BB`rz^N%JCNtX_sF=XI8XvPGjd0bLyuzM$Q!sF9+1zZiBd6`|5axw0wu{ YUn`^??oWPJ2Yggj)<3Vzo5{4yOp=-OM#{@fLMkQnCWxT)CMY1Fg2+IEAP&hS1}Oq6JV8-b zKtN#yR*bl!t_ybT1*M1zmQ~iWV#gA`|G94hiMt>C=Dd6Qx#ymH-+lMZq~WmAa9Fux zxguS+cg@NSsbbB}aqg4nh=vjVWlMCUvL+|N$dM*XU5!R5nvzHobLe7xWU|n6Gl|mI z6G_J2kGmMdDn3^I0Fuaf#VJ8g}MJrg8*s8$PS z7R*ZZ1yiXZ>YKQj)4k>9`^pOoFZUp(pW zg5tClt5#Pip^bU{JXjCZ`%}5@&j@YR}(c zEKMvl%9EBAO$I}&sa9yNH!i|RB*fr1=<3@6TB$+fRFbXE$C>v19d zKM>U-vyB@9>!sO-GkLUhy)iX;uAhx1xV*071g}dNb$XqVpz(R~GzaU46^ZP1VPj0n zY-z6XOiES3G*Cru%#Q5jj+g_&96gaJq($Z#>8Z)mJfl-;3Dl;gM$)FYSNrP)wdu`g zQ+3JsFg32TY4V{9ycw+~>#uIFzw3g`)y9Y7O62Rt8=3ZvRZ2Y z0m*#1ZXr8W>K5@ut-}mcgOpYlM=!}lDeU5T;Xf=(tE%Pb$uK|*y`OC>g;u4 z;TfEj@!tj(WaW-!1LyU-vwmn`eHDn|p4^RiZ+vk;F+={7SU`@^(eJkYLt1Sw+MK-V zG%mzf&~G~ygC;~wvOWO9;fnz3anER5jep}&8VE*y!%X9foRsJwv>h0}SD9hf2ivfi z^&yM;C`s|jT7=1h>QB@!h8Fq~lKi4OE|dhbMd3I#t3DWf{StsW+)`9G#)q%r+Y$Hq zfwhJPd96Lny0T#@XNkxWNO*1GAy6f^#oaa|w*ShAQJ&i&kJT`K?B1^rgU1$ zbJIt$pij{+g$NIW-D@w-K*wKe-|_4(6e9gH2)RTr;%XBhV44i9?tuK~`^{MI*M}LO z=jKVn4QGezOZ!2Jf|tvRs*i%Qs>nK)4NZqeD2NIuvrsZtjdU&}Ss!EU=rBMUYkb|I zOd4Qh=JgGjw-SVSx&CkDpbo2oDu??T3-U%s$H8D^JV1VU0-zkug5~ky%h4vUExQ=o z1brfqgg9?p_5D0|ytar?n#5G}G<*db$m^B3geL=ZDwM;;uu`05Uc*yBEcTg5WGahY z1;7LBFb3zl`c4CufO|)HItzMYwt&xwiSa!q%Nq;P>-5^-^=k0K*8m_`l}nij%g zB)|50mRG{XQC!KZMpl5R&tb%7&b^mDbl8fmwr~;{bi!0s!eN$>BVM>sL?uV&f)bv` zoky4o9;O>U!3u8v#!m22CJX(Sc!z}AqUbF~S zC$;{%_Ez??l^dXw-@qKb5dGG5fVyQs%`m;T77be_t#%>Xz7e1RrNex^2$DQcP*cTL zIZ)>Vu{G${00lf}Vb~CKR774B$*5YolbcXA}bcVb>S?4ivX>oz@D$YF!4aPlsMrtF- z3945ucIgYi(EMTCyxHqm<1IZan$3lTEuPpAU^rDxuDg|cgoTY!{buObHUZ>gO?a16 zvII!oEljC-Qo}uK3he1q0qT|t;&1JV%a~Y?`qj6`jAZquKemiRo7DB0J73Y_z1^!T_J`TkE5@&%= zX-VpYr86#M*YALI?HT}w--&I)TC{8}GFk>&lS`~M78}hCX>xc7lufhxonQs$$oez{ zS>h5K4_Pk*k{GfGc?=OUsS#E>>R|K?B}?m!v7v0hg`v!h^-wpH7M{RHe}*Q?iph~8 zqpUc05_iGX^=VkC=>+#N=KrgMk&BFn5wWe;0>aXN37cf$ASHM=93)tsxg*kp6N$*Y%Kd%bb0I61lzJPLMJVo~B@OAF@8Np%4(!ke&C7l3k|x%VswEq3n` z?8o%KK-<)W{}Jr}KK73VE5tk3Q0*q5;myJa#=%a5kV)JLytT(6Y}e#y-R&@n9sF&4 zi7*UrVV(Qg&Q<`-)%V#j&(+k#L{uqJVq(BwyA6b3ft+RDNQ0M{!PGWDIOZ`^*0;0J z`QA+g4;7J6rV4o!o7ZYoha})>cPAt{6pm;d zB0{pgwO_&>Kh)gIA`#3jK!l3)FeQv^*e@S1M<9!Mc|LiOqpvuKzp~@1C_Imk4H@P_ zY{-Hm

shRaSJa^+dfIFnC|hey%r@wrVyezbPeV{Ho!=^@m^-C86(%#fo4pggPOt z{8*X7yFm}{0SJgC-L6H8Q>f+@m{r1m16j;R9iiKi5V^)0$Bc);NKDlC;zF_#egxNW zGYexi2-P7YYVcP%!dIpKFMwiTHlop@{fB$Xx6b?q=7jg5iRzoe+MlIS^ti`3JKfxriJcb%N8dJ-XqS$uW>o>JJzfU;- zj^+OWMt%cx^e%9vcLiv`oKtHO(7D>D!EV45Q0tk-c@Eh%?2B|Klu10X)m#L@fc{TN z)*S$#;MxnqCFVnGx;{7=YTkgc`i@3rd0y`}@;s|^?MFKFfc)k@raaTM8axZOab7b9XzN4h zXXQB;^W=Zii-Rj2xv}eqfa=}Q+4{}U76WGH?0e4H%i!iWFh}psIYR)gtAlY_MP4aK zShEQp5Jf|8KR+dgNM6i=)ExRRa;dSUA}N3=smelLbTHN|H(smgFal20nobVR^6PNj z0DEf9)C+h|#y4HSdolk01-v)oY0mTdeT=@9d9Lfx6&JxH!lsQM8V0hs*rLF}JVq{TQDl84 z2$BBKlOwEs;Z76P-{#~`#W0vVmzXTPsdZw@5z}}FVi)!<=5`z#4@?{0cs#@*%|aMR zj)vs3lbS)ufexo3;zeL6bAr7Tb14yFv`9f?UzH~+?gi#v6=S06$Y@9opU(_Bgi{)= z_Fay20C;Un05o$MbkOg}2G%KW?Qf9A9ir|*7{hA#0AC^uBS;oG{0fHvA$DQRCwft zv)#?-2qF&k`rpp58lw~D(8WCcPkqiOHVepSfvg|p6d<#)maNnvM<|f;G~60KK*z8a zdPzLCVB=Q5yEW=vXtZcn3I2}3M1I3=V@BsLc;fs^=M=!dckXRtLpW^cZ?tqCoWw}Y zi^zeWw@?^V+!h8Hle(lwL!5L64DlhuUWg&-kKjV}djLgEo6c

|^1KIq0sFDW8B+ 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 diff --git a/Source/Outposts/Outpost.cs b/Source/Outposts/Outpost.cs index c8e2e5da..7abbbe12 100644 --- a/Source/Outposts/Outpost.cs +++ b/Source/Outposts/Outpost.cs @@ -190,26 +190,6 @@ public override bool ShouldRemoveMapNow(out bool alsoRemoveWorldObject) return false; } - public static string CheckSkill(IEnumerable pawns, SkillDef skill, int minLevel) - { - return pawns.Sum(p => p.skills.GetSkill(skill).Level) < minLevel ? "Outposts.NotSkilledEnough".Translate(skill.skillLabel, minLevel) : null; - } - - public static IEnumerable MakeThings(ThingDef thingDef, int count, ThingDef stuff = null) - { - while (count > thingDef.stackLimit) - { - var temp = ThingMaker.MakeThing(thingDef, stuff); - temp.stackCount = thingDef.stackLimit; - yield return temp; - count -= thingDef.stackLimit; - } - - var temp2 = ThingMaker.MakeThing(thingDef, stuff); - temp2.stackCount = count; - yield return temp2; - } - public void Deliver(IEnumerable items) { var map = Find.Maps.Where(m => m.IsPlayerHome).OrderByDescending(m => Find.WorldGrid.ApproxDistanceInTiles(m.Parent.Tile, Tile)).First(); @@ -526,12 +506,11 @@ public Pawn RemovePawn(Pawn p) public override string GetInspectString() => base.GetInspectString() + - Line(def.LabelCap) + - Line("Outposts.Contains".Translate(occupants.Count)) + - Line(Packing ? "Outposts.Packing".Translate(ticksTillPacked.ToStringTicksToPeriodVerbose().Colorize(ColoredText.DateTimeColor)).RawText : ProductionString()) + - Line(Ext?.RelevantSkills?.Count > 0 ? RelevantSkillDisplay() : ""); - - public static string Line(string input) => input.NullOrEmpty() ? "" : "\n" + input; + def.LabelCap.Line() + + "Outposts.Contains".Translate(occupants.Count).Line() + + "Outposts.Packing".Translate(ticksTillPacked.ToStringTicksToPeriodVerbose().Colorize(ColoredText.DateTimeColor)).Line(Packing) + + ProductionString().Line(!Packing) + + RelevantSkillDisplay().Line(Ext?.RelevantSkills?.Count > 0); public virtual string ProductionString() { diff --git a/Source/Outposts/OutpostExtension.cs b/Source/Outposts/OutpostExtension.cs index 4265b759..3174eab4 100644 --- a/Source/Outposts/OutpostExtension.cs +++ b/Source/Outposts/OutpostExtension.cs @@ -21,6 +21,7 @@ public class OutpostExtension : DefModExtension public List ResultOptions; public int TicksPerProduction = 15 * 60000; public int TicksToPack = 7 * 60000; + public int TicksToSetUp = -1; public List RelevantSkills => new HashSet(RequiredSkills.SelectOrEmpty(rq => rq.Skill) @@ -40,7 +41,7 @@ public class ResultOption public int Amount(List pawns) => Mathf.RoundToInt((BaseAmount + AmountPerPawn * pawns.Count + (AmountsPerSkills?.Sum(x => x.Amount(pawns)) ?? 0)) * OutpostsMod.Settings.ProductionMultiplier); - public IEnumerable Make(List pawns) => Outpost.MakeThings(Thing, Amount(pawns)); + public IEnumerable Make(List pawns) => Thing.Make(Amount(pawns)); public string Explain(List pawns) => $"{Amount(pawns)}x {Thing.LabelCap}"; } diff --git a/Source/Outposts/Utils.cs b/Source/Outposts/Utils.cs index 8fb02d2d..67533504 100644 --- a/Source/Outposts/Utils.cs +++ b/Source/Outposts/Utils.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; using System.Linq; +using RimWorld; using RimWorld.Planet; +using UnityEngine; using Verse; namespace Outposts @@ -20,7 +22,29 @@ public static IEnumerable SelectOrEmpty(this IEnumera public static IEnumerable SelectManyOrEmpty(this IEnumerable source, Func> selector) => source is null ? Enumerable.Empty() : source.SelectMany(selector); - public static string Line(this string input) => input.NullOrEmpty() ? "" : "\n" + input; + public static string Line(this string input, bool show = true) => !show || input.NullOrEmpty() ? "" : "\n" + input; + public static string Line(this TaggedString input, bool show = true) => !show || input.NullOrEmpty() ? "" : "\n" + input.RawText; + + public static IEnumerable Make(this ThingDef thingDef, int count, ThingDef stuff = null) + { + count = Mathf.RoundToInt(count * OutpostsMod.Settings.ProductionMultiplier); + while (count > thingDef.stackLimit) + { + var temp = ThingMaker.MakeThing(thingDef, stuff); + temp.stackCount = thingDef.stackLimit; + yield return temp; + count -= thingDef.stackLimit; + } + + var temp2 = ThingMaker.MakeThing(thingDef, stuff); + temp2.stackCount = count; + yield return temp2; + } + + public static string CheckSkill(this IEnumerable pawns, SkillDef skill, int minLevel) + { + return pawns.Sum(p => p.skills.GetSkill(skill).Level) < minLevel ? "Outposts.NotSkilledEnough".Translate(skill.skillLabel, minLevel) : null; + } } public class Dialog_RenameOutpost : Dialog_Rename