From fb7d76cbe95cd98f7b212810a0e2cceeb6ee5a1c Mon Sep 17 00:00:00 2001 From: Hazzer Date: Thu, 22 Jul 2021 14:36:23 +0200 Subject: [PATCH] Fix for pens --- 1.3/Assemblies/Locks.dll | Bin 39424 -> 40960 bytes About/About.xml | 2 +- Languages/English/Keyed/Keys.xml | 4 ++++ README.md | 2 +- Source/ITab_Lock.cs | 15 ++++++++++----- Source/LockData.cs | 4 ++-- Source/LockGizmo.cs | 23 +++++++++++++++++++++++ Source/LockState.cs | 10 +++++++++- Source/LockUtility.cs | 11 +++++++++++ changelog.txt | 2 ++ 10 files changed, 63 insertions(+), 10 deletions(-) diff --git a/1.3/Assemblies/Locks.dll b/1.3/Assemblies/Locks.dll index 6acc4efa8f975e9392054d182526b2a410efb4f7..6b702e3fb0a9a7f351fe3665801d1091e934f9a7 100644 GIT binary patch delta 18804 zcmbV!33!y{wg36nSu>NFNoFPs$s`aMk_ja2i|nAX$-XHFh=71FGJ%SQVG^JyTMPZ% zS5Ry(wbUvuMXeW=+Kbi-Rqs<=5U#a~dbL)xP&NL4=X{e@+uP?K$@$*1pZC1yUA}iF zHaw~}99DPTSboQX^9v~ZbBfAi9;JrpHV{mk`12=r|9qxz_7g;tm~fcrYHfE}$SPCj zyMJ{nC^7urW^Gfdlsl})m2S#C)=8zjUoIpzA|KdVMErq&`Bqz}l=2%^AaS#JvKiTCeD(MYRyAsE%~qfH3tY za|u{=qlnxU4YdbdhF=M?A$Jv-mGE3tV^S}}sx*iBt{D-e_#6n9gFfouwdV7RCl4l4 z4=Qv`e3&)Hd4Y`^s^B}C@r;eX>g?NBjr(D|Uew+ZGSHAO;7cR|?$l>Ysep%gR{(W= zE?bXi)|bw*GEo_$v1L~A2mAwHK^){vO#?ACPqPNNE>?1_MpyBKK-C4oKzs#kgo31U zxD?0@x+M7cT#)N#0R)0^WXl9gXe>5-_UuqDLHBC#tDidQ4+g9=u2_C35K63~_$pB2 zNdOAysf<@nm8r+3d6=Zj8Jx7`CBacM94?9qkb*zIR%+%YE57*`g@)OaljwGWF zg6=p92LIv)cQ6u+#QTDnC<-`IpF=CZqDl#e!hvui-qu^IbU!xH$5K2+VN#Gfl^)Z^ zHfcyWQK&|xUt6`FaAqGcwLTzmPKQR5;&CL>Z7r(xIpC%{wRFYqRlN^{YAu2&(#0Kl zaH6M6I#PN3(xolbWC2l*>2)T&Y8=MQ_)zONo=Apcp-PT$0f)*zYMXS{b0BFBsU4L= zNNC|IC6eaA+VMD$G>6oV%7LUgB=|B&SBNkx0+iF%SIoM^JEoLJu|5W%C+m@-u2qrt zGLLxgEcoN7x-H-}=xlIkX;U3a#;j1&1Fa=F<(U`M_>JJAC*epqT(=eNy50~-b5(St zu{+E)&Oij6M^^(FB9WBhh+|~46Ov^TEiy7N5@>Q8JS0MDma+&Iwd7jRkRO@Kp&E^z zg(7mr#)A+@BJ?V^na33{a4&dNw*wkjQG}fy3Z%4)_ZY7^@xee+9-XdnCU>F<5o?KW zW+>7^F`Io`ulQzM$xBF^=Cu2wE5tyRsQeOml`SzP)5gjGVBf6C+XZ&s69n~M>bT0=fK$|ePY zxy{6=wvpJ?CF9p7KB0c6Z!s9T${s+Nuw&owPmS69P>qMKR=FtgukNSFCfDEhB(2(; z+Sxo(RqoV7)*Zo`F>NI6J;mO7FfdruX47{qaqbe{)az|5ePiW@dXH-HXxp*3EZD(n z^?i0qUWtlp$6?UX{K_giDg*H^WZy7Jv;{LhQrKU~6 zAYU15yF>f(ys~^Qd^pIz~0DB`P$U%)L`5rtR5!rl7QFczcEGTNQ>|>k3C&g9~! z7gqJXhu1gmvzpzq4SOH+_R`|D(+T7Il=3JWq?J@?&~*6O)i_Fmm)%B#}W zY>KSR7&4VY*gLT-@{qA-O*h%27C_i*rbOv&X)Z^)?X95n2Mo@qxJFlF1r0EHX@lt9>Xas@=NIlHT0!+FkV z3S%=U!d8;uy@axT6KhUbbK2HiwwHjb#hN?d7HcICX|d*PvBt(Co+@%wl7gJ5)JQcC zlbpR&`UBN8+3hyj!@1{s(--*{=>xAheVid4zn1KQ_b;*sZinn;{+;wi{%QLDKe7j7 zZL*i~2ivDF{C}s9k3U!|nvX~^^j}Us;U+bE%F$^P7YYBU>$x~nJ+VY-@hTKRILs&P zDlqs+nMuuQ;Y7l5ht1)Xrfz6qKqbrInoK?MJ&YJL&a^NJ;!aqKyVzW%?6chw3zp9S zZRiY99JjE?1}Sw}#6j0Y;wKPT12b&4odf$Y$ck7-q1dIZqOJD^>oMKtw(6O5UbQxs zT&doqS|60ucDn%UhHPpfy$WYtLHX1a!ix$c&998ZORH4BYOO4dXWqm7PW421g*%II zVyXxSbXgyEUSyq8o{}BkukK0n?{|hYs z2>@oGus=mRuSpAe0-j8wic%}!UTwqU6R6p2HD2AKj#n{>EitA|REYr{q1-^Otz{r&Y~xsgxO_Ca5YIv>AH3S?YVva!fexxKut6wwC@wRJ zwc1Tgh(qQJafg1ILdsI4xCS*-zO?=n>t4d8!!LBE8}GOCpjQ8P){PHj`Z=q#tT&mGoKhQ!v9f|8Y-1TYRV{j?;;hzlDBmNH7!q3pG|0+Vr-L05DnFRr0UVQ*Dmtu@tpHq{VF z6li*!^BmRUc&~Lw^7D+ip(xhg^0EvM)W7c}&s!CW4}ywqu+D@z>2bLlcW@M_F5bij zpfjc1nbf_AxXuZd8*lV3Jd0Ey2NYR?<6diW=Wb(jSlmoiJ2A&o zwSaLSD0O}S4>?kUK}qHUL3^IaBv~c^ikb}CbX&$c+_@-& zGE%RXQkGf(D$dhAf@Zvsn+`<7u7ZxHFh|hAS=Irhiy&Qn6lWB(DU8(e83h@5tI7uh zceZv1_UznXf?yqY53){lc_hI(P>pf-a~9&oKoVuT^g0o?pVAx67um)` z8~O5pkyXexYz+r1%!q&4rNWY^Y?EXL;C_H-z@@gx zT%G`U36BpE0jx|WEkN;L>q7B7gnotNC5V?VA~3ZR<0$nqh*D8rr&(VLUdrP_LB!C? zt1D}P$8Zu*u`Nu8KxYWVS-|Ee%hBvgl|R6Qyx9(Cp&ia5e(34N9F@Jx_CYZ68r*R^ zEVI7tmgnmXOR{0B+T{9tt1KSN%z?!Q+!*MU+qC+w;3uN?Gc^NYMB?2*O2z@OmQ^m# z-UQ*4-VG{hygL|aZ0+n{rV% zk>{tZ-}Ti@?!ijobWc16U@3x9y^!jelI#JI`knx?0A-pKuXEs02z^&-eGN<10?5rv z>-~nkrOy72*?+1~AA{!&$ddi?$H{LpQDJ7CqZiCqG<5w*WqzhZkR7b0;n%?I?wV!?>2q=Evb2ShVmqT*?jg@DCQot3w(RP zaLVL7H|1kzC(R=%j8~QyW}ZFGD@)XRj<2$?t{>c8Z`WpjWEIqGX_Pkg z#yN{iM~bMo2V*2P<*o{a>n=k!`0fN{qNf>{uo=Gs)XE-psCToWhV5rA#hVp89OFGm zuJz*mfkJ`L3=knW;8&Ag>}LR2_Qr1G1A({hJND%vzx0G^biy%?Ycx=|oFn1Om)tVGGZr_iB zjq}P-7_(W)VXe)1SR%u9!`a&i2APq7I1#hSj;D~0oz6P4k2J93abS(YYpe?gnC#hP zx!M|>%Kg)u_w%+hzaRI`p7{~%oO&fbTj5J+#F?G?{j5(D12Q64w-nt;4`P*i8zKNb z&EtV#;kHe0GOuc%CpChNKRycmOQUeO)Y)F7Qq7l!8i~e7w=km}n5F)3JTnGtNcoX< z+eASJDG8|VBDTVVYX>6Z+#J&~j_GGeR{CN{wGoJ<$1O%S-=BdE(+vh%> z0$9#41-LWz6yOxLP60`pOo6N6o2P)}i-Amm6sVX2Yw>8nON3roXRsuHqS1*`8N*V)f#djoWszt5=SzdXr?9E!dew zi?Hx#JI0w^sn&DPTT{#C@n((Hg^#tI+KWKp!>x`spKa6JXG!x$PIH^xZX6idbWT7M z>Ev@`XE?PtyK$DkCaT8VT$r@@!hPr@?^lyW?;u-YXhEyJ0z58$#Uk-KnwX2i}hloo=NKZX?%4a zN6+}mcLAvz#>0JH-2}k&c$SEW#fbau-E1@KK;1AA0>`i`^GO5;kz~t3q*XJT)jWA= zvl_?5Zf(m2Hh+Nol5#lcZZZijUXq z4hNw{Je$T_O0RrLuRVWwJX!}?G~HE>a2+4+c#tpQ&?W+)J(=5_T^Z!<9R_(O7}-Id zjbL^}#d>T_CB z&xb_&3@E7=oq~=!;}qQcWrtNH3foJ_9AQT59KoK5Il?j7+2fA3W=~?3?Cs2E4`r&S z=KvskeELmeXSTCvarQ>FnIqVon$tHQO{9t;vD4J4$H)jiQA^2&o2Nd8UZeL-yaR}7YoC}%CcX2Vwbmffz(+KyB z)6hfga04hlo%@>CWTL#yx*0%XdAJM3I#)%<`eP*R)$U$YLSB3p*vZ*e-~LrYx?l?vj8> zQ#=fN34BiAj|Bcq;Nv2*(mfJ(`U}h#`f>M>95=mPvcfd!L+2^KNw>M#*Lh`0#&A<% z{tBFO-^*Et&%l<4hLxH$NnHZES;`8~!EmW) z{TH}5(9>aFvXAAm53o|svy#~sS0am`dh~Wc>(MMw(EIP)|l)I$I&Rp*C zdy>F&(pMcJy6Gu&z)k1O!jPM~=dsJnjTL$cm6Y{2Ou9R8%3nfb1Ki%6_n>al_5M_m zNkbi}B7An##m9`_g_$(WRT3zqFGC#A{Cqb0_cD(CY|bfvIsMr&8xH0LA1pMfJA!c2 z%>^vuP#Ky|hBYpR_v#GipqFmCvxMPlNQUW7$(i9}O3y-uk7q>fPA^A&RQhpO-mMsd zF0Nxv#2Dl>{sakh(}!V}879u|6B7es9NbsPikto{f%cO@TvzyDAueJOijUGVd{;>j zy&|{5!vBhwC-c_1%4wdO;X)fPkvO}`WcRs zgm=b}nepoJpB7?`@#IzF%CiRitC{bp= zBtkjT*Da`3H?5Mo9U~?VORfA?>iO{i7vQr(e@rCrEn~_=2g7oiS*|jkx{nr}^53bh z!y;-o&t=y=iQZ zjzL?YM%>hVWNweHMBBh`F1_a49=)41atapoZ;$Q;=7J>ATe&Q$kw^KD}Uoa0mtfWkkKNy11+k)GpXTXY)0y7&N+oJ_a0re&q+&}5s9_@q=BYR6Qo6A_S zj0TFC4`8%bsh|Q5ow-m$l*5(3Qfgfc8r2MN0)6f^My(K7_Bw zK(9%7{U~#F8^yu2Mwl-Pb0n=7?0*FtN1NMVGij$_hsEeTx|uejHNT8qEXQs$v*DK| z`?LW4*!LhVvQvRilv-Nh{Y074(6?xqI;G*sAj9&aVHrF=FJxqtF!BVZa+osDH%wKi z$=Hia`_U%DA^8mZ2;7t`_vhLJ<&6T)@gIlzE@-2f6Gor4E<}-Nv5?IzA3zUgibz6+8^|Q$g)u3_8~iOW@XqLwnc} z!xB8%#%N>ooMF(7S>C6C$1zB=t3{H2jn8gO%EL7>(O;Ca_$bY!fr4$Ja>vt<93@y| zh902j+zy&+GcjsUyPfnW!Cs(FrN48#s83He(?~C%hi)jD13oCbFN-}@`nuao zzsX|z!1K|cve*t_xpX#*ymrJ%kuozuAMD(2J zT`?-B%{E47^;}?iLv6`^Ifb6iG$D&U;myQ=ZnjaHklPj5ju9eCc}5RU1)a=dGrfI1 zUFok`>{q#iJ>BT0k+!7YInooSicyT&#a2m!1$%*F{;{4)nx4gekuw7yfxni;9?F@Y z@${hD(X42fUM*c9*e$fR=xr>&yRz74!4;lby5>TbyoL4`UF+#hQQR>xwm5H#r$3z% zY&VtU-Rc=c=d!#F!3Xhm{_w>tX?qw-F~N3YZRqRC3~k38MnkhqHZ!apZv@R~qd1}+ zZzL@co*ni``h6D5&3nc(l0I(63cGs7w9~sNLy55*+iuz(eBED<0(@l=xNu9PB*#7 zQ)e4fp27#No?miZ*6(**ic7CV3mG@*m&D-${HP4u+Nk{=3Y_jdvrmoU%n??iHDG4Ag~nl?#z zu8TW;>Y3QCgUrMF4@DREa3amMMU`LYe*w{Zvl#bqBK=G-yN46og*K563U3oVqCMws z#a;t;Nek~wV3S&~V*NSyWX9P4CVYMVIro$nW*6l-_f&dDjM_b%)~<)s>8)&N+{5Yg z;AFcK&Q9l)>Fs*h%Hs}Br$=o`JjAgR!XV4A8wEH`wU4Lg1 zUtV*d?0zO~!i_Bt8atfX&S5K$9nPd3wxl?mNpEH`?(R%_SFnuja3&!~I#{h-=K|{?4KY1hd`GYUjR{$L?p*uWU(iKZ`uGZ4c~z7Uc=HJ0o+O+wL_UH*3JvXhF3|@pSxK1mrjg- zbN{%PDqU5Yo2#|ycYDeMPL??rW(RjhxZNF46N*m1m)vxu^YOJ+YiNMmb}qj$QGe~( zOlqb~LX5WQ_PuG8en+JrcK<$sq(WbbuHCkW>0d*U^x>Gy%2{ZI#%D5oat#o#;X;hqO&4nELh}sHgX-Ux*+Ddi)9e_W|-9d+hdsLn0-%rQY`GuJSAU)+g2xLj&AyH_c z6Y7tOj?ig!Nzv({aBy&4VzYF=Is&*O+Of!;0Y1nx{!<^*vt zP&%-i20Obb0~NC{p*&1;0{xW{${&h`NqaQf=xT=Mio%st8~uTDHQHO16Y8hVA1ia| zKO6@D4~3sl)=2-RD9*@>%6gGsPsfa)GDX=}@TRg^D4T_%XpQ)i(;7+jLJ7j9-GX;v zmv%h1gIwC|oE@}Kxi{yWvP{_%8>VKKDbDg?>U9tusRp$BV&l-R_e}?!Su|ZO(0)=f z8_+14udY^(1Q)3R<@$nUYIm)F;VSin`cla{wGp~EsD4-|yjEbQ^$8O3<&u)@1eT5p#67VIpAr0-|h_E zGHoxQLMJ5EJF<{#;xqM3Fs&UD?ryrm+^VhCa=n&zm$*DC^rOmSvAx<+M~zu zxBjfQKkpVjp#44XZvCiMRd%0#T$_$e99J#@oT9BWhiE6Xt8;&$A6Nbsdt5)Qy%Bp# zKckH;d{%!=hTy#RN5^YuA2W)z(^_Lm47=ytk~j6!N&@r#xN;!4pU!JdWvBH5?SsO< z=+`M@kX=Pzpijua&GBFiLR*aexT{-I^s(Mu&A|msclBq19iS{OMUOF4Ki6IQ+T8O9 zVqwmH+N~`w)r{M!r-AyC zqH1G={$*|-z%?agX53sFR^0nV|vj)-TWAf(p*5U^MG=DC}|$oyXLMjPoT#QW*Mqs zD=2$&Ei<4@ExW@!tsllWLdz5bHx0+tOjX$fQ0Ce`1BFM-&-Bf%r_A%Z5jkQi#xFuI zngJu=`=hxG$^5Ii5Ky7jfVtG&_$H<~R;%0mF2{B1U5@>9RG*VS$gDLc`Fc2b$oe|A zisT661!t}d;t&V7M>`tTU5;^%6ZE$X#( zSs`v$tIDo*Ofg>d-{ZJahGvTLRY5}8P0yK!9Sed+M))@8?<7aJfUyG!r6sWs$6FT%Vt4_*MK}ZD>lNtf_JN`vQ^H#vR3X@hUn*%{R-c) zouOIAHs><+5`DaLt5KS}%Q;1>^$p2rtChup`<=H#dB1b7v83ox=R)mx$#0zdjYZzy zIS(06=DhBF)>v3{8frs)A368SO0Zw~DEC{mmpgRVabr*6ILC1#po~LeUk%4Vx!2E> zcR<;%F7@{UWrm9>%RxCSv;Tx)V3uW07?%HSH6eXEVSEz0&~?Ii$h^#T#`vZGDwh+7 zv1?skY|-lhqtpmkOj`hBv>mVu?E;KTJ3%+2T|;+3>ngez@M_xU!k;tKe!yn|d*G&g zA7F^C@b;i0T+;T);HxFufK=i8kv(wdeGlMZfum?2+T(>jjUGe$GNCULxPo2=rH=j% zSWkM+aJ<+|&3PW*Vc6%oUtu?zswwZ{k48PpCH~IR?u_<4|0rpXLVKluk%~)@cYTY1 zZ1C?r4k7{3Qo%BWeNMo!q-MGp)XgqJcYK%4)nfICxn(v$c zFmoNN9F2~f9FIHRb-0{4&SlOYIMYs-%je2>6}sZCYS#d3)6CwPV+93xjk?cO4w%SK z07i^jz{ec@06z~50{q6s?Lj%i0iW_-2zW;^OP(&C02nBq+|qu%Xl6@$Qt{mXqpgx^ z^_|r{(;t7LrsAlMFMskaKj3`I2V981UQ#KEW4(&wc@ba+f5*Uo;Z_QGBM$m1ZNuzS zX%{}=QRyf6U`M6f@jX(N?xZSc{~GiNJqdb*o&h~VhlTzezJC@WTo41kkiok`5xoJ? zBK%!mH^7tBAMg}Ji|BtKT10z0L$s8-K(v&) zLbR0PFdCx-BxBSAk}>K9$r$y4WQ_VjGDZU+8KXhgL$f<)URGaMZ_{4J(dQlQJ?#sv zul|z$r17FL&YbI5?D)b_=B#uMaZYv)b?FWKQq}fnJKk>fHiT8Kk$8_|DUA-7ym-IO z!d38heiq}UQ+{IECqLFV6Wh=xTC3-Tx^EUQs?eK-I+Zcn-u)NWfjPrQZBir3CT%Od zt{qTz83&Y`jfa%iwTG2W>R|O(jL#^by~nvzJ?}iA&cqudT`+Xu{Q0%L z=hxO)%H{dGG`d{c&q`g|)zU5xDZQ2wX%ie_nAfUA$)g zg^O1$T0HXL8}rvYj4ReIyZTCN>eBgIDtXPp152l==E!97>ctDKre!5&D!Fjw;?%*s zP9D%se@aq%07GJNe+=Xcz@$~HTP8YS5F@~-+BCvo-=!2 zdE7twkQ>= zRaFBus%pKtbu^C2!G`?+8|N`th%W&7e4UDQy!HF^7zNi_rQ3RDmU&`ouwi$w;ZU%# z0w1^sHm*e56;q|vSYgH#1$?%!+Hhz-pK9QHVm_bg(1J5mRW#N@!%1pjjxVrrE!c|B zhht@6;}3&t^T??N*TQIE<4zEq&fvz~s#A1>jeT7)>*Z~Z$V#U}4K@x8HV(mz4Q{+y zd~Uqi`s=nX%H3A}_Fcmd_-xvNyqFQ(cp%s~C%Ez9mVbsrRf99k8bwh`h$DT>nICLS zE5VJ2pr+zsy|;awveK&AF?-=rcT7WUM}rMp?dXpOHooja(80z7fsMy=NDnr=9@uz7 zLiG@m!x+Mc4BAd0Ik}34Z{Ltj$Dtl{xNSVHn}Ln*S!Z?(OnjyU5OJNx<0cfRe; z#MZ-V>jUcTTgoqb=dUX$`*V`Y;~u4sXeS7!O?>R&jvp-aU44*fHWLmLU9IgX3t45# za`%%vK#Ajbr?pK64VP){Xl3oXH$V!Ygo&^`c%{I0PbLPMjT@@q+q?0MjsM0u(wgn^mx<2nLW84_FW{?xkvr;adJn{=PgE=8nxXiu zU%HBB${CiNc6K34uos+vsPNzO7jTzjl#jdgn>sW z5{x89f>=`+a5UX&`8=^qULda~(bspcfVL46+&SQru>ZG3FZ}t1Xa6-!6iYF2&=hxsuc=eLCHe19rMdWO`H40yBE8 z7ELOVbm6%?i0SEKOYz1s4bsnKUU#lk+fkZ*B321*CP&FXVD@-uVUKC{-H*z?YP3jF ziKaP%e!ODVVBccbAYGvlVOnsnd+nB3k9nt-@<_Cl0O+X}bbMek+FzzT=Z@Iplbbh# z*Q&G0@ugkOSD`bNYI?Nw+nn;uV`^dx=bh9@G}62k&E}!tr@1`NA+fV+9)>77i7p`^ zsUlShB7uU)PDYlg>5-A5lOR*uV7?}#_EI#f#aE;RtZ(~D24LLv^ms^=4)DIT49iDi z9FV4aQIXEnt!Sz(0qa%Y!qCAUirH<-n(SY2o-8Xp8A*KyD&$D?r@{u@oI_0AVT(3c zulkEj5ooYJ^B0ZbBs4wGQv&6Ri6VhFz1Bmh9!RQ|W`*iYwd?W_bB#~qFz4h}EDwXM zHr>oij!apePwBh3A5HJDgmVzay#(D`6Ca7Iz5@9s&Ws#`$>)h!| z!YT-i%&@24E~zd3aVfz_mtq&c&6IkszKXP7HG6VsiGRxCdi@_*#gysg@yLIBYrtMN9ay3N7# zx2y+)b<;3sdWOd~Wp6q#<#qm3Q@kD^$|HSDowlk&!{g`J>Dj1qTs0%fZ1PxpL&J-E zgrs(Pfi^>WKo^Om6$uY@m?0xc0mJ$*Jge8FJw=PywNq{3@=KzVd7aDiPAEmQ4O(+| zWq#8FJbTOd?#fuxbw=l+=p-eB6+%zF%w^ru)9g~bNj>6ClCyeopCt5psxGY4Xd|iz zG4tBeKlJW0#$yHDHk)7JVD1ILKG+-BmwH@S z2V*5xM`1`AXgyju#XY{4F{^+XBdujc?)r_qkZ{qc*-gqw^SG-%JZ)WZut& z$MI+_426d(W8Qbc%RrN(OkrnnhxBAcP`6J)h8;)1NFm2=ECV4kVAkjn&xx->L=HSJ zdEQ89@fl$VsIdwUqsNWx(= zxUiaj)5Cy9mchQ7H0$%y=wLZ#Rlx@ql>lul1IIoC2B~SNNo%5sV{q2Wba1Un@mL*> z*yqZ;$}&u+jSRcH&t3dbv9`r8Q@^2De~u3wgw@5AH5xUYqsmq(2c8hlnau0H!^|j4 zsxHO4t}Kyx9l@crM}k{3F`&zIsTr-M-h|JZA@(!%79-_0((*QtjircVWUiJv0Ynwp zg-cc>CwN<9Qr3(@_n`BdFBvYF-n`CPh)}Z9zs5d#-UMXw5ev+Y1kKjlG_4^B-B*h~_8o}jK4FBsR&gGjB@Mv?_hOCe(;sT{Dk4YGJgpRv#En z8e&a4)7KTv*#grxHf*3NBgM(%wpwy!6Ksf9wh%JvJILBGm0mOsW zuLc$7uC*g)H_%KutiKL=tcJU&8Z-BECletcHD$W=sU~7SC05Ot`JKea*6WEIYz0Rj z`SO5~Rme7M4F@aSR5d{HT0f{7>us=tPCcG}@Av%`UFy;4tK%2C<({SgSpz6GDN8I)Or zl3`x~EaBD@#KCS(OW0~m#xv-d*@`;TtGD4G1%6Gw{cK7)dGjg(DOC!9nOJ>Q_F|56 zA#RG;apGX42ig8*{$QIU%=m!X!UAry^z*?^ybOyDR+C;j;ZXS%lX*PJ(@ox{SZ^l_ zGAxR0LC_H$tS22w@0fY0`H1_qBY3EJ;tc62V{h1Mb-d1K;b*FxDX^uhrJsw`m=&y{ zZeUuXg1Ol0MV_CslD7?2EZKpj16ZU?4$v;^AM} z#TTT8?VN=rquC7CKxpjkVA}(WvlJ)3D-VlRVZ?pHsU{X%$7>TZ!dYH~dG@iox-*4x@9Q1>EZ0!Y~e?07zi7Nvkq5FMlE^fG4Jllv zlD3K1IZ_f(^LVzxqh|*q1KAzZl^oN3NJn}Cr1}U%(-WD{hhn=Z=yh=^hZ*6r=J@U7 z9hWoK9;}GWw99!ETD|2geUoy&3ck6VC0`7roY#Pga&E?>wch&4(1Oeau(FHqBs5XS zQpiu>iRA#USO5#Xz4Yoy{;ws%d1MB!p6B7&dlIvk#HpZRc1^=0c?CvF@D@hTSq?LD z)*H@t&XMU|ebN)zT2vg$2#RM|WqV%Li6w_yHg4O=E;%`_+D(!}wqWOQGCGFUD%-Kr zjI0UV^WG$~d0hLjCh+N%lgP(cIm4n21A3bKED6nULi_Ax(^=Qv%No%{I{7GA0jC4S zDf4A3^wz~f zZ<>s4_3rd+rbW_oL`Q9zg{PeM(m3PFX2#a+mmF#f)8zb@o`)84C>C49MhlbF4Rdh# z(-RmCeq*V9npy2ZNyqw2;f5O^sU6#K>YR0L-qJ$g0s zvzjLscdPNhvs>G8%;t}ApBURK5SCE0p@%S=#*X@ecZnMjA#WwzC3}Ntx84|$kmT9Y zHQuaN5L(1@iQ~6RTqUlAAw7d)&n6zT-a?Rmxs#4ab6d6$&gW2P0-z8s;5KJl3Smok zAtcxrPBj>>?n+pICcN@Hgx~a3!hEZ9xOy}re}gbC3!OQLvhQ;@7Y!PLI#6{-Agsnva@B*)>N953%v z;Yeg!G-KVG*y?-jPe(v%3rDma)vnl+N#qN<<#8|Um7mc&+#*%jE%ho-x$dZWUC2(% zjEEI=i#^asESkOyemOTQ@wAtQ%hBQ)#<@tY0*eXux^M+rSQl6a^FNLzQ{>)e_aM~> zxA;7*$1L;DvwL5h4dBG+ZtFZlSs?2ogxOJhyUMSUW%9CLd-7V=s`@G!Mq898uSC@| zdAW<-lNSpX4Yh|KRJ#_rYI$57&Y?tHk*#I!J*XYl~wRUTHoB)x=P);GYOkdClGCc|W zYU`=7gUTKO21PGKK^fULv5t9ab7+L}Y?yDmq zIvZhbz5D)LlUyE#f0XtO(w-)8xxj0MUg`ceEd0sE@OhzZbvNg@DPB@xnsm2wi{GR< z;_IN2$QW)~AFjZW_ST#_mr1V%+e=KsRSon;QFz(K0UeI9+Vjd5zni`pV9EO&OgS9B zI^U!_91KfEYfP}tbu$GKw3{x?Wy!nI4U@hvx)(?5TyB~T88;mO%($u3%R(J0n?9je zm_B+`-Qsl9H3-N@55>5>)2wp^>HP2(r;nBk%-5Oj57+AW{Ke0()4@h>3UDu5qxa{! zX(ifj8Vg;Mz6bXada;CiQR z<^Bf?O#0Y-u%Lu8&*dL}9*{qi&Oa z{5>=qLvY-=#c9%y1DwX0NT8c0Mp)((aW+%3vI=Q5>DF8h#V>)rFJt^j?ERRVM!7hP zs2gPQhZ4k=$ZS}+SG>f~y>iM^GhArjkVvnTs8@v8*((B*@H5hJ}KDZzfFA`>!C@1ma!j! zGB2T;d>-`2k=;xQ-DsYL@|{tRZjbc!ahWz1C>&INKAS$PauBB_te*xrjd@xCgbp$8{Ir6#|)}&~wi7A@eJNhIgOKG;h%NYYST^MLS%8@eat(b}(ei*w|px zBxmdZmZPM1yqXzGV}cL40`#nRpff->c#pV7(M#IXU|&GLf`jk7_QS!>Vs`d*V?UH1 ziT)bxsmgBw?^aI&zNY>Wuv`n_W%?p*zs45+1Pc-R5RM;-b^+G36DEMqcuO^RRXsQ{IS570egev46y};z8AOx>*jX^J`&A` z%p8Tonx`_iyE8>uj|yc@`O6U3aX^JGj0{A(5m2Gg$`HWC>PW!1M7d6@M|-8l%KvES zf3owhB^?>pd2p!$_IICDri1bol`G&cDm#wB@f?&K(dPUryvtVTM#0*g{@5(=?-A^2 z3gj*TmMCM%r)fgTVqkLw+wGj@S`O^?EVj_K+MQA8_k!-o9~n8Ws`Qp%whNVXoW9u1 zZoLDak3S?>H}B_yb?d!sV{}?)D?hDZy>7`jY|MFcc%2(I2MEu3Kws}xGc-WZC+P!S zfs2|dX139-cm=Q0alxLZH*rW)X#^i-!TWjXMwpp`_c}zjdz}^w_9Xp2db3-ns|9=4=b>#vr|6WAt}?aA4Bj zTIT(i@({u{=_$cB)2rs4kbF_FHiUY&+d*&JJPg{MZYN!aD;Q^VMag|`7ah(B+D4b~ zXE_wY?V5Y|NXd`!$=Bd4_Fp9ry1mqx#a;x@N0()>VCkLiTzW2xeO_{>J3#LWwwdnD zf7BhMcX8-vhYR&z0$VrI#%}Y!;?ARkBYFRU!)A(Ow*FF>Z8Q?a6`{*U**rJ4hzL1x zR%gkvSfnC!PZoPhuqk-a$UFtb8lfiz<8&X#)P2Lo=sy2D?gAQ7&yu^H3*#TS3+bY< zcyYq$r9g{m-8g1$b{=%avEl5pF?vYP1?FvF-frjn-m~sFP03;@?-#%}*ciR*H$1?` zizNM4&+(Mg3t7zP4SOo+WEMLwx4<)iZk)j1RH5DU3rCr!lD+`iT~LE4Zz5w)(=UAq z&mgMFVoP#HcoOuZEVe9XJU+vAO=3yAyarQPu-)`r!EtpkeI<*n49@fnrWt%ag1>hQ z7JBOF&x~b&J{h{)GlG7~w-?$$>Co3aqv<8VcGLTTZJv61UohLnIQldz`IFMHXIwvC z14X9xT50IV8&9=a9_x+I@-nv32{cBScH9%_o-CFM-Q}4;PiC?CF~f6SKciDfpJqG! zd*A`jlzzNvG{NS{$};U7-uc4Yl)=vap)rlF6_kT9XgX~d?39v+b$tdsm&MkX#DV>8 z20Lt{fhfHh^r2vjp%rk?gXR*wm^QM3~ zTTpv3nb9xO8MH)rn^1(mfMVaFXry&n-fqmFM!G+XU5**kc#hcM^r?1CQb1h5Nfw^*@I= zC!f1Chc;bccj^41PczD#etqg?a-ZhVc3V_=E_}i>hkl>MxKDHFv|zSFoEC`t-!mM?*7iFv|zUT`Tg9_r%X4K-Or~jwy3zDPp7jOyPr?*3TBrO zURz?1c-12?h8Ju&cyW8T!O(91Ak6JTT)q^X`xsW1cDL26?hp8@%00+A?QXS-0+uQ8 z5$-l;qikX%UWzF=*E0PfxYTg2#oH*HYneVb&hWU-+;R!1Z~NgsK|CGIu;>6$u;C9& znDRpxD_`N{w%r?sD*dn|H&^S^%l?$5kXLbvWUUVXRmuQrLeZ%~GI0()1JP6dUN!kR zAe*iSO*Yh*+n3@%h_-1vPbxhv4kn|=DlL(2*p%->QlU<KX zfpo+Ui9#zKQ;!xrNvG6~f>-Dnx+rpjX3<;4q|Bn#eqFf;CW3&Ec;fhW$w8bJX3@Zs zVsQ7w479le_0oYI^r2&bQm-_|YLtWYPVQ)Bk`gGKAnhq=Lo$PJ(zC*4v@ZHJ(w^s-mDJQ?hbxKt=B&F ze-o4!j62b;!S}Q#Y32TV)E$udkvd7sF*^ZAl|HI&myYeqNY8djypyy<>2Zj@Wt@b$ zRQSIjTJC=jlqX#$(cWG1vFg(J-Y`_#6Fd$RUqlPFm^Lz81~@T1NIOFpIR|TvT5U-O z93ORz(6*D$TL>uG(jN3TXe+gLeUdg;``p{04b?K2huQQuOV8IPX`2DpD_50r?_UKR zs{PJ6M_Y~97i;?f6*?xV-kybA6CbFHf*Z6$!regy<`!+O_Dj!B?M`v|jL@G^PL}S~ zo>98+Mq!dN+53IS9Q7Q~)@u!!$fH`Dwk-C9b`OkhRemHj{D5R-JG~rKXuH(GQ89E> z;YvQL%r&;tf70u*_p~QP>y)xEK+0V0YF~qP29lb-UYq9g>pQfaMxOqhgu72;`wHeu z11Ox2DmCEC+@>GVoZ(%1KwB8TLw`nF7~iWO)iTJ$QDr^gT&>P*(2i+c{vYT^mE!mV z`YFwbAJWfg+haf1UzQ;_t8H`q8tt7%p>|4pvN(=S>wCq=^i#?kxTZrZ*gr?k9w8*l(AQQDIEj79p8vfai?wC^&G(+T4}?G1rz z^#kUc#v(Pxc+Xg`-x2=MSgY*HJ!@>$rr*unrR-? zU+~X14k+qsNUe( zZ64E?M80R9(u+d(njh$gat@fQk(Fo7m4FJZRk8l(lFLZMPnc`fVg5JF_3A~A4!qs{ zN%$QzW_*(4b8zzW99yA~OI5~3XRZuKv4h(K9Bt|hN44V^eFuZmrk-aGLHmy;DQ)V@ z(P55{WZnEo=K5z+)St;z--B>3cGMd!8UIGdWs>B%%6Kf3JLm>;ucOhZirnW|tNteE z$Bskl{+zwqA@v2Tit?>*08s}W?SWbhsR{11%ld}!FTb)~t zj)Gmzm0GyuF6R!T(0iYApRqdUL1%|?Pr(sry_xf@vxBE}hB}mV?(0Cx9d9@f8K+~_ zjzh+KRE@+|MaXr?nC@rFx0Gr}hw8^4n;tT9Tudnk1E;jLrFi(AfDfegTxS-tq07`JQa zI>0)*0cw{~2JkC%qf5nG)vbUJ0uILO=^Ftjz78cD7F3y zX;+}#;GZn*$!O2=uafpEw3qt#s+(v{&R+Fd=suy|0(e@Wrg6JM;ADZTv<#Cr39?_{ z69P{PJS|YuMNQ{`ChG6d{+ty8TLtbFcv#>`fh!D_Zxy&#;9-F$1(M0!y$%oHNeAxA zKgv1jc$N|8CVDrg)rH>s;_gj&^B?yxeWJj<0uKv3DUiI(jSHNZ!|fFUTLtbFcv#>` zf#ef;8~VjEU0x4J21WpvVSKwiRCk0YKWCTtWxI*Awfrka26i7jl z6gZLL0M`mZ4huXfkU}CPa3VwNgGG54D4IiCpopUn#$D;?_`yB$wB&N$w4G&&bLmpacl-*^7i`8TK2mE+2{<}V(e z3B^9eWoNNV@erGU-eO2F3&S#m&867ZtJAwBK< z!jV1gorUB6O!08^M?Ds8}@ z3aI$Yxl+KJa7oA88_gjb?#3wE{pOL&p!DvqMO)}M!hN`BC7ggxp zLNnrw_IH24N-v!-rd^FH?b=p)Sv#QIY8+5@8b489)($G|YL$AsW3>7b)#G=8+ODov zH#%F?W6nF&QMe{rb<4w6&9ZW9-LjA}%$m8Z+SC2PK~biT57fzmm= z`Ej+=`L$L@=ic;6_5ZcLu69n{RHIryzv)x!%;ssG%{Moy7>u93bhKphX=~EGKP)|Q z>BJ@TI-lE$onx#6e?)ytMd!!2e5iOL4l^&jXtBaJa28w_WK8JN&`6 zT2)m8b=Hq=n_}hOJ|wfq6IX++JA$o;f^C)fq&CpL6m3^rl~!A&8CMkWbu-w$(r{=# zpK9RiMLwVD(1Ht8RWvS#hLhC5B442Wa5S-3ndz?RShmM>l8)7)I`J`&b(k-S_!rvfSQVjb#%u}WvNxP^OBX1y5kyR zd^Fg))$YYpf%YRV1RrcW5NLlYhxB0UD}nasC1ejFNsOTzkU`rCBqvwVN-)E1y5UBm zUV+=Tqq-SrKW4qMv%cm{C7AH%D!P&vY=09`1shdWhampvAX>2fOt8^c9B6+JXKEnU zSgTOQ|K#IhYpr7X;<^&3>3nflk#5!v9zJx$Nb7@dUm2oZ2W27&_%XNRJIW&J-h)>A Yp09WMzVkOtJv_8C@ZCQtJL(+&4XJhg`v3p{ diff --git a/About/About.xml b/About/About.xml index dba82a1..b07752c 100644 --- a/About/About.xml +++ b/About/About.xml @@ -20,5 +20,5 @@ https://github.com/pardeike/HarmonyRimWorld/releases/latest - Version 2.6.0\nThis addon adds Lock command on every door.\n - Left-click to lock toggle.\n - Right click for more options\n - Alternatively you can use "Lock" inspector tab\n\nNote: Door lock must be flicked by colonist. + Version 2.6.1\nThis addon adds Lock command on every door.\n - Left-click to lock toggle.\n - Right click for more options\n - Alternatively you can use "Lock" inspector tab\n\nNote: Door lock must be flicked by colonist. diff --git a/Languages/English/Keyed/Keys.xml b/Languages/English/Keyed/Keys.xml index 83db01e..fe1b655 100644 --- a/Languages/English/Keyed/Keys.xml +++ b/Languages/English/Keyed/Keys.xml @@ -14,6 +14,8 @@ When disabled, allies and traders will not be allowed to pass through this door. This setting do not apply when owners are set. Pet door When enabled small animals, like dogs can pass through door. This setting is not required for doors without owners. + Pens door + When enabled door will work as pens door. This setting is not required for doors without owners. Owners Change lock in order to apply settings! @@ -23,6 +25,8 @@ Forbid visitors from using Add pet door Remove pet door + Set as pens door + Remove pens door Set owners Clear owners diff --git a/README.md b/README.md index 6f5d07c..84e4866 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@

- v2.6.0 + v2.6.1

diff --git a/Source/ITab_Lock.cs b/Source/ITab_Lock.cs index adfa0ce..0c194c2 100644 --- a/Source/ITab_Lock.cs +++ b/Source/ITab_Lock.cs @@ -17,7 +17,7 @@ public class ITab_Lock : ITab private static readonly Vector2 WinSize = new Vector2(310f + WindowGap, ButtonsHeight + OwnersWindowHeight + OwnersTitleHeight + MainSettingsHeight + WindowGap + 2 * Spacing + WarningHeight); private const float ButtonsHeight = 25f; private const float WindowGap = 15f; - private const float MainSettingsHeight = 3 * 32f; + private const float MainSettingsHeight = 4 * 32f; private const float OwnersTitleHeight = 24f; private const float OwnersWindowHeight = 200f; private const float WarningHeight = 24f; @@ -27,6 +27,7 @@ public class ITab_Lock : ITab private bool locked; private bool vistitorsAllowed; private bool petDoor; + private bool pensDoor; private Thing lastSelectedThing; @@ -56,12 +57,12 @@ public LockData Data protected override void FillTab() { Rect mainRect = new Rect(0f, 0f, ITab_Lock.WinSize.x, ITab_Lock.WinSize.y).ContractedBy(WindowGap); - Rect upperSettingsRect = new Rect(0f, 0f, mainRect.width, MainSettingsHeight); - Rect ownersTitleRect = new Rect(0f, mainRect.height - OwnersWindowHeight - OwnersTitleHeight - WarningHeight - 2* Spacing - ButtonsHeight, mainRect.width, OwnersTitleHeight); - Rect ownersListRect = new Rect(0f, mainRect.height - OwnersWindowHeight - WarningHeight - 2*Spacing- ButtonsHeight, mainRect.width, OwnersWindowHeight); + Rect upperSettingsRect = new Rect(0f, 0f + WindowGap, mainRect.width, MainSettingsHeight); + Rect ownersTitleRect = new Rect(0f, mainRect.height - OwnersWindowHeight - OwnersTitleHeight - WarningHeight - 2 * Spacing - ButtonsHeight, mainRect.width, OwnersTitleHeight); + Rect ownersListRect = new Rect(0f, mainRect.height - OwnersWindowHeight - WarningHeight - 2 * Spacing - ButtonsHeight, mainRect.width, OwnersWindowHeight); Rect warningRect = new Rect(0f, mainRect.height - WarningHeight - Spacing - ButtonsHeight, mainRect.width, WarningHeight); Rect cancelButtonRect = new Rect(mainRect.width - ButtonWidth, mainRect.height - WarningHeight, ButtonWidth, WarningHeight); - Rect copyButtonsRect = new Rect(mainRect.width/2 - Spacing - ButtonWidth, mainRect.height - ButtonsHeight, ButtonWidth, ButtonsHeight); + Rect copyButtonsRect = new Rect(mainRect.width / 2 - Spacing - ButtonWidth, mainRect.height - ButtonsHeight, ButtonWidth, ButtonsHeight); Rect pasteButtonsRect = new Rect(mainRect.width / 2 + Spacing, mainRect.height - ButtonsHeight, ButtonWidth, ButtonsHeight); Text.Font = GameFont.Small; float viewRectCalcHeight = (Text.LineHeight + Spacing) * SelDoor.Map.mapPawns.FreeColonists.Count(); @@ -78,6 +79,8 @@ protected override void FillTab() listing.CheckboxLabeled("Locks_ITabVisitorsAllowed".Translate(), ref vistitorsAllowed, "Locks_ITabVisitorsAllowedDesc".Translate()); if (Data.WantedState.IsVisible(nameof(LockState.petDoor))) listing.CheckboxLabeled("Locks_ITabPetDoor".Translate(), ref petDoor, "Locks_ITabPetDoorDesc".Translate()); + if (Data.WantedState.IsVisible(nameof(LockState.pensDoor))) + listing.CheckboxLabeled("Locks_ITabPensDoor".Translate(), ref pensDoor, "Locks_ITabPensDoorDesc".Translate()); listing.End(); if (Data.WantedState.IsVisible(nameof(LockState.owners))) @@ -141,6 +144,7 @@ private void UpdateSettings() Data.WantedState.locked = locked; Data.WantedState.mode = vistitorsAllowed ? LockMode.Allies : LockMode.Colony; Data.WantedState.petDoor = petDoor; + Data.WantedState.pensDoor = pensDoor; if (Data.NeedChange) LockUtility.UpdateLockDesignation(SelDoor); } @@ -156,6 +160,7 @@ public override void OnOpen() locked = Data.WantedState.locked; vistitorsAllowed = Data.WantedState.mode == LockMode.Allies ? true : false; petDoor = Data.WantedState.petDoor; + pensDoor = Data.WantedState.pensDoor; } private void OwnerCheckbox(Rect rect, Pawn pawn) diff --git a/Source/LockData.cs b/Source/LockData.cs index a6dda6e..a39e138 100644 --- a/Source/LockData.cs +++ b/Source/LockData.cs @@ -17,8 +17,8 @@ public class LockData : IExposable public LockData() { - CurrentState = new LockState(LockMode.Allies, true, false, new List()); - WantedState = new LockState(LockMode.Allies, true, false, new List()); + CurrentState = new LockState(LockMode.Allies, true, false, false, new List()); + WantedState = new LockState(LockMode.Allies, true, false, false, new List()); } // Utilities diff --git a/Source/LockGizmo.cs b/Source/LockGizmo.cs index 538ae99..3459325 100644 --- a/Source/LockGizmo.cs +++ b/Source/LockGizmo.cs @@ -72,6 +72,12 @@ private void InvertPetDoorFloatMenu(Building_Door door, bool value) LockUtility.UpdateLockDesignation(door); } + [SyncMethod] + private void InvertPensDoorFloatMenu(Building_Door door, bool value) + { + LockUtility.GetData(door).WantedState.pensDoor = value; + LockUtility.UpdateLockDesignation(door); + } [SyncMethod] private void SetOwnersFloatMenu(Building_Door door) { @@ -142,6 +148,23 @@ public List GetMenuOptions() }) )); } + + if (LockUtility.GetData(parent).WantedState.IsVisible(nameof(LockState.pensDoor))) + { + list.Add(new FloatMenuOption( + LockUtility.GetData(parent).WantedState.pensDoor ? + "Locks_RemovePensDoor".Translate() : + "Locks_AddPensDoor".Translate(), + new Action(() => + { + bool value = !LockUtility.GetData(parent).WantedState.pensDoor; + foreach (Building_Door door in Find.Selector.SelectedObjects.Where(o => o is Building_Door)) + { + InvertPensDoorFloatMenu(door, value); + } + }) + )); + } if (LockUtility.GetData(parent).WantedState.IsVisible(nameof(LockState.owners))) { list.Add(new FloatMenuOption( diff --git a/Source/LockState.cs b/Source/LockState.cs index 1e5bb8a..baaee2c 100644 --- a/Source/LockState.cs +++ b/Source/LockState.cs @@ -17,13 +17,15 @@ public struct LockState public LockMode mode; public bool locked; public bool petDoor; + public bool pensDoor; public List owners; - public LockState(LockMode mode, bool locked, bool petDoor, List owners) + public LockState(LockMode mode, bool locked, bool petDoor, bool pensDoor, List owners) { this.mode = mode; this.locked = locked; this.petDoor = petDoor; + this.pensDoor = pensDoor; this.owners = owners; } @@ -32,6 +34,7 @@ public void CopyFrom(LockState copy) mode = copy.mode; locked = copy.locked; petDoor = copy.petDoor; + pensDoor = copy.pensDoor; owners.Clear(); owners.AddRange(copy.owners); } @@ -44,6 +47,8 @@ public void CopyFrom(LockState copy) return false; if (a.petDoor != b.petDoor) return false; + if (a.pensDoor != b.pensDoor) + return false; foreach (var p in a.owners) if (!b.owners.Contains(p)) return false; @@ -61,6 +66,8 @@ public void CopyFrom(LockState copy) return true; if (a.petDoor != b.petDoor) return true; + if (a.pensDoor != b.pensDoor) + return true; foreach (var p in a.owners) if (!b.owners.Contains(p)) return true; @@ -83,6 +90,7 @@ public void ExposeData(String postfix) Scribe_Values.Look(ref mode, $"Locks_LockData_Mode_{postfix}", LockMode.Allies, false); Scribe_Values.Look(ref locked, $"Locks_LockData_Locked_{postfix}", true, false); Scribe_Values.Look(ref petDoor, $"Locks_LockData_PetDoor_{postfix}", false, false); + Scribe_Values.Look(ref pensDoor, $"Locks_LockData_PensDoor_{postfix}", false, false); Scribe_Collections.Look(ref owners, $"Locks_LockData_Owners_{postfix}", LookMode.Reference); } } diff --git a/Source/LockUtility.cs b/Source/LockUtility.cs index dabb95d..670ab57 100644 --- a/Source/LockUtility.cs +++ b/Source/LockUtility.cs @@ -65,6 +65,15 @@ public static bool PawnCanOpen(Building_Door door, Pawn p) if (p.Faction == null || p.Faction.HostileTo(door.Faction)) return false; + Log.Message($"State check: {respectedState.pensDoor}, { p.RaceProps.FenceBlocked} {!door.def.building.roamerCanOpen} {!p.roping.IsRopedByPawn}"); + if( p.roping.RopedByPawn != null) + { + Log.Message($"{!PawnCanOpen(door, p.roping.RopedByPawn)}"); + } + if (respectedState.pensDoor && p.RaceProps.FenceBlocked && !door.def.building.roamerCanOpen && (!p.roping.IsRopedByPawn || !PawnCanOpen(door, p.roping.RopedByPawn))) + { + return false; + } if (respectedState.Private && respectedState.petDoor && p.RaceProps != null && p.RaceProps.Animal && p.RaceProps.baseBodySize <= MaxPetSize && p.Faction == door.Faction) return true; @@ -125,6 +134,8 @@ public static bool IsVisible(this LockState state, string propertyName) return state.locked && !state.Private; case nameof(LockState.petDoor): return state.locked; + case nameof(LockState.pensDoor): + return state.locked; case nameof(LockState.owners): return state.locked; default: diff --git a/changelog.txt b/changelog.txt index bfc6b56..c52d54a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,6 @@ Changelog: +2.6.1 +- Add option to set door as pens door. Animals should not leave pens now. 2.6.0 - update to Rimworld 1.3 2.5.1