From 46bfdfaa0b858717cbe98d1e2547571a70987dac Mon Sep 17 00:00:00 2001 From: vetal l Date: Fri, 12 Jan 2024 19:23:53 +0300 Subject: [PATCH 1/3] Ultica-ISO style guide beginning --- doc/style/Ultica-ISO/general.md | 21 +++++++++++++++++++++ doc/style/Ultica-ISO/images/rhombuses.png | Bin 0 -> 24015 bytes doc/style/Ultica-ISO/images/tilesize.png | Bin 0 -> 8553 bytes 3 files changed, 21 insertions(+) create mode 100644 doc/style/Ultica-ISO/general.md create mode 100644 doc/style/Ultica-ISO/images/rhombuses.png create mode 100644 doc/style/Ultica-ISO/images/tilesize.png diff --git a/doc/style/Ultica-ISO/general.md b/doc/style/Ultica-ISO/general.md new file mode 100644 index 0000000000..1d02141dbd --- /dev/null +++ b/doc/style/Ultica-ISO/general.md @@ -0,0 +1,21 @@ +# Ultica-ISO general style guide + +## Necessary Digression + +An isometric projection is a representation of three-dimensional objects on a plane, where the angles between the axes are equal and make up 120 degrees. In pixel art, such an image will not look very beautiful, as straight lines will feel broken. Therefore, a pseudo-isometric projection is used, where only two angles between the axes are equal to each other. However, in the future, it will be called isometric. You can read more details [here](https://en.wikipedia.org/wiki/Isometric_video_game_graphics). + +## Ultimate Cataclysm inheritor + +Ultica-ISO is an isometric tileset that has its roots in the standard Ultimate Cataclysm [(Ultica)](../UltimateCataclysm/summary.md) tileset and borrows a large number of resources from there. Primarily, the character and accompanying sprites, items, weapons, monsters and so on. + +As a result of this approach, Ultica-ISO shares the main style guides with Ultica and also attempts to tie all objects in the game to real sizes. From the game documentation, we know not only the dimensions of one tile (1 meter by 1 meter), but also the approximate height of the z-level (3-4 meters). These features influenced the choice of the base sprite size. + +Experiments at the very beginning of the tileset creation showed that it would be optimal to increase the legacy sprites from Ultica by two times, and then, assuming the character's height is approximately 1.75-1.8 meters, get the dimensions of the rhombus to be 48 by 24 pixels. + +The height of the Z-level is composed of the space above the base plane (3 meters), and the thickness of the base (thickness of the soil, roof, floor – 0.37 meters) and amounts to (96 + 12) 108 pixels. + +>[!NOTE] You can consider 1 pixel height to be equivalent to 1¼ inches or 3.125 cm. + +Due to the fact that the tile is not square, as in classic orthogonal tilesets, the conjugation of four tiles has some peculiarities. + +>[!NOTE] In fact, this means that a pixel on the horizontal plane should be drawn if more than half of it falls within the boundaries of the object, and left empty otherwise. However, pixels on vertical surfaces should be drawn in most cases. diff --git a/doc/style/Ultica-ISO/images/rhombuses.png b/doc/style/Ultica-ISO/images/rhombuses.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc0c5edd4d9b6de44e240bc7ba6a90e0f1a2f67 GIT binary patch literal 24015 zcmX_n1yoeu7w*s?(kU^dgtT-^BOTHW(%nO+bax{l0@5YjE#-)G52@tP&Aa~o@4dBv zbGgGhXWxByeEZv*Xf+i%tQTZ2Kp+s-dwFRM5D1Y1xL!d=1%3)gLpFg0*;+zb0tBj0 z#C$MA0fAn;x0RAobJviQq<$|W#m6Pc$H(@ToeKn#kIvWh)=j-87F)lz#L<>qIIYig z2m#U3RiTgK>J{UrfXu>i@!t)7ih7|OoVeM)RIw0y~&;~939wtJP256N1!zdwW zloV8_+4%7VC=CR1@bQiPlW^Xdf`YRpStmf$0*D|fFu^1ewGz^2 z&R;zn6(%m9TICTyz2oVVnTo%-30u>Dl6jweXEAhKI%-;;oN(%$a&=C0MA!^y=^@ss_jGp!g6eEq324iOoIt1^AEWU{j}hvYJX zQ0LiWUts`R(gxYA-x_f*V|>fVyDM^`f^uNsYny>VnoE~o1~x~Gv(L5~T{P#90WAuCY~ zTsOK^jaGTYr%fYSnr18=hW{t%Eu1Rj5hK+b3se=M+N<&%t$Ey`H}Dt%F&10*mlx<= z;5l0y8D=sF*P7?8&ou~?+H;%ujs*cUnfYZ41nS%;H7rjfQ5r@Efuui&ys48wd)Y@= z)r+0iN7>m+f@p>+{q7}wuL!Or>UJ>2iz3ntiB}(bg%*&T>yXGk_1l<-m`*vaw2%gMq~D01@7l_#$YO>+yF)#AaEyX8 zitV9fO<>XB@5NVn>%(JCWCdQkUP0 zh`hJJ>;#=2F*cas5ZyQ&x8ET&DM?OONmr`;^&wpoemlAjMp!skKO=2wxoXpEU;Nua zh`CUGlCEqO!!Zq*rr@GqQq!$1~^kWG=DP_!qX4*`GPK*0$F+9Dh98F;>ICGMPU! zf7$P&{n`5ycH#XJD*`KQMBbd~mHjKfS7oFvuQ;-mzM{-zW{-a0oPSH6ZJmXa<*cRq z=IV_2>Fr^7A?cC;%SJ7-&(?TCFk6 zOYA?ZP`OLTi;_!{zbA7iP%3^-9(2B>R}NeP7N-+Q7W?*Dwyn_9@Xd0(ahvw!L7Nij z`x3@hhT}-$pw`BTQue#eAvhw8VAzaQNad=MeQs@XGA! z^_An*H01;ZKINRShp@k!hv$TsgG=YZmrb65iouG3KRVXr)(|cI2*9FFO8Soe&)gsJvHZ&m|u-8W25^xH!Gmg}F{_ z<(K7_^`9s0aTt3U>lxp7fmIvx7z*Y%9Y>c34K}*Q{Y-_#L@n>8{ve4Biy;>J7Dje| z?WSE9?WPNy3(O8gdnmXUz8il`yy@BWIU|OvpqL``A?zS@g^-0bBH1HRA!j3(qVb}{ zqjaEhyc8pne2IajN9C64+)Hvserv(KV$GTZCHjG$Poz(N$2q~E1fIi7h?quS#|?D; zdaLwj;yZfOhMYrGE0yi5Y?9jmLgqJbzp?*SZ_@N|^|)r8tJ>DPx9&=SCsxF@2`}4y zck{BYvUAXIusFn_miqjcX52NdVNc) zf=J44zIOVRz^ZV7)SXR)s;uWQH-@SPi%;^als39^Wo_xXwW{ew*F`qLw7j&u5)CZd zj3$)YA{_5tus5Hm9qqmuwSL6QY@i5Jn0o_W8+RW7y4}$L}uw9wNC6ZXAQK2-jJl5 zRJl}@*WA>}w(i1oR7__5FMS-Bmev$nejFXhAAC7*s=C(esa5E*lbHP(af($<4v*g< zH*r*0^C4T9xN~9vXdL^yp(&CRq|e`l}wTq`|f+Z(AHby-VI7l@O194ob$T#ucv?IjwWcDh{9UYjq!Zc(fjtr3+A zba~vAuQhN!u)H2W(h;fgxKKV2hMvp>-P!fdy3gOtvl|uqbe#+zlD9Z9tWvbTZoj8akb*Ky;Qgk+Pqv*J6AAPY)c| z;pg{kastx;$fUNA*H8w5d>KHX;BXM=4!9M(4+42|fo&{_&EOqCU4#p3d`|@=Kc|lfXp=zT{v#f06%PNZ8y*xuAzqqla#|NDKUT z$3;M_M&%tYa-V*h24x8P46)skP>yj}uuCr$I_F~>60Xf=y6?!WMo{5vg^(EEAP%G- zlULb2ySWL>+>dR@OgxTd%C$c43g+&bnx83=`v}zE+I+x8)+tJRf!dCw{?2-)P&oH# zZSrDIB`^7<^ZduZgm#=`Xh}$Uhz-FGGlksBwTtgE=GsSPd|pV#;%)+x&@h$K2Cu#2 zn6X!llZ0aKhp00ll8J`=q_8CYv@MX7pe~<)VEeVF%(nX6FtdOH#W)*# z{lAg#%aIez(-Nh6B}~PWzBEsHTAE8PONUG0B7@R2HhXcYu}e&UcYC>78ed{yVp6lR z2A`gSW(pqj!tvfyBNBh{+1YY%^C1g0PcJ;MFpuH#w#y$&9hz7o7m7i(g+w@=gA zq6TdO1V!;hX@5}$k?2Cyzs?^|O_gXe1{D`0?yoEsI;|oeJgs#3;pPk96ArIZh>^+etTzO4LslmtafI z!-G@Q4;5Oe!`bB*`Lod)SJW4Ib8p^|nR*%@)p}S*n@k|EGu&cCL0*xCR-X7h(-fRI+6F26fQ45i#3Gn@*xtolP)@l)DI4U{54fCUH%OeQ zt)Q*n8fb=?zE>~520g3I%+((^JFnx0h6T9paU5RZni#I+(#d(Hq`2jzrS<#PexeZ8 zjze;OE(bTH_ynt~@%O?it<%dn4>)FUYuZHjt{5FXWfbTXYVmyH_f+S;x&&GdbL z8f0W}{j$H>g>r zOEsX-BSDk(?xMI?GoLWo_xnGQ6pZ{Vk|FkGuNr#nIi+9gg4x^gynpZGu;`Xz63A?E zFegPJs9__A9b9kz*LTBU!=T#pTNfi?ULtxVooo6()Ql{|a(yY?J3Bu& zzu2E*XxsmRLLv=qwtqxX6+OXJge@CCL=%)goGJ44Jo%luo8t|p3qY6)ri*2x& zvJE4YYZR{{0bYQ7O#APRw!WMxNnr^d`^xt1^&b36dvL^iw_&{9{dQ-y?Xu&mc(dL!d5hKf{ z(e}F{%g$U0^c6IZNa-jVnVD(6P>0Um( zh>%#j!FC3N&p}`+0xO%IVb_dPH$XTZ(JJ@*j6y|i@N}^Am#auWntmu*YsY_D;RKQa zrx-(ai0ek#vS=y7j)-&=kMQHscDOc zff1{88w*(o)A)gDp&YjyT=6c;5zc8Y%~;b>L!x6sIq9<}GfTd0JAb1taVjt5ePuly zhcJHzB@!fHJH`n>?&E0{A*WqaWcS$?Y@Y)bFsh^m(Sz2OY)0`I;HJ*M%+@=k} zKQ}Iml9Qyfje#sgXxP!qjg#?v3$;QLJ=iLk-gs>cGa?Ft zNi(ner}mMUe5rR@(*mun&Y$KE7ZPtYh15V&gl=yGKOB_~LkTFe* z)9d9lFdrBY=5#f8W>AjV{8s6UPimu#R&u|33hcc4y1S_<$MYbe-b(q6iGQ+eVE3e| zGJeSGUO)YV&Wt@~-7xe>B3%};-PTyhza7}F75uST77qO`WGd>6Wh_3tFw+O00fx)uEW3$N|dN+4P$2K*Tx)-{r59K?t zP?{(g9tlMtTI)p10ZZQ18?ZvfaW7@B(&xfv*N_k~r5wV6i$9NTf4_~NUN&2oI$b|~ zVus_NB*3+_P`mGsNm+CXw$G;t90LyBNOfOymNaMJEmudqBx`wPfjQZaPn!BJO4 z=~J5%A{ar|fSd$~Y{JJ;J97s2ctn=xFLfnwDU@95YHf$dK@E-LH~S?6Rl2TGN6V_b zB!4ki5Lb%RmaretZlqttHdFX~3Eh$@;nG(Wp-l+n$KOU*8= z3Op0G6_9@mTpF&XfCYL&Yo%mC4S9n?VzLsS&5h=|6(4|(UiaPoXMl4n@Cxy9EG=jK z@BXM0bBOg$i(Bg%Y?UBFNFWmS0iy}X%S1|9Bpv<2GyRFw{?iLZTA5c}nksRafaU!_Y8w+b^icGbri#TRJQ1uu0KU z*B#$5U3Jd+wrJvCnJ#JJM0P~WTJSJ{j~U3~Hxpn*X=F$blopF{t8;Q8p3q1zS%2KC zd0bM+?*x{PXAY6*Oh~kN?yp~V|DM0L+c)aV7lOHPn+^LoSpCp0=68Z68Jx&6K-yhV zZ~-k@bE{@zq{d%2Q}FPwEoInFY3tRJvB<-zT1{&)nnFl=>IVR*N+F}(ar#}ET21DR zMqrWOo&=@d{H?tBN}Q%iN@CNg&3s8v_s+hn&lbZE-O)fmHj%Gec;yQyb8><&CUWFe zWV8(FkOkiq2~O$nHqx^1@%G0H8>S}5UEb6|4_j(?*EpX3ZlTl=WCiAbr|K9&!v-QT zeJ*F|GuVXX)z!5$%`8GL6)LEL8Jp&o^HQttXZSvqX!9ry=K8+G7m*f$k>oszuBG)v zMn(GMOc4Ud;BLG!eLE>46dkqSJAi|;QxqA2k7woySChb9qItagbXNErXSUV}F%IC3 z)-ir>=R~yZ+DoKR!P{$CeQ8`q|92SDCKRG=d12$oPJS7!Dqo(8<4qrECbcMFALK8Y z@83#?0ax}OW;IW)Nl%=UWuDbxZbn={S_vlF;_b!2Viigxh*q$vg*Yx z0J$R-AcGMfa)iD+ud9K5J~9DLZyYF?Y}DbF&GScCHvaEmr%y?i0M{^&6M&J6Y&$#S z_+uG{J@Y&ThM8|#m`aUN3TE|51Xu<6hZ;W($U-?sW?^QPHat<@^^gTWJwL#!c2HJO z9+37|e%C{xeG|F-F&)P-Ln9*#71zB;Qo2nx;vAiIxs<|gK%C2u0s#J`29PClosYMM zNW4??jZk}mv;f~ur4w{5jTB{tSLZUNo=HfZnYhdyGSMXno9fF=ebW65yf}+fUH(Jvz)XrYq*%{HYwlv~C zeMHY#Hl_~-35WF90DN8Ymyr#<{!MB?3F@#-rvEKf32DQC5{R%K2(sor_`B5cx2(>6 zT6Q{+%w*rgCtrTxWs4peP0r5}fA(cixo9pK83=I7`WG0S{rp|w#>Re*92`BJWhy-E zt)DT^cjL|b!}n$BVq+^Iw>wG&esH-rvAJydPc*0E`UfwCQ#}1dqy+Nl$#$DEAOea& zG-89h%&H~p!#PF8d~hMy=(dLt6B7=no&YBI-8gF2398`WVBKQ!9!8$eot-&Du|Ye9 z&kxC4BdSQ8ZXa=Wr>Uj~qg|PDC+W!Q_Q14oK(d-BjyK;nn&(q)=6l2#`CABsF**Jj zJUoudd8n3j=CW|nE9nw*zVUW-^7n^X9-sFc7#o-0@3MxvJ`Kneo2e)c4QTyup&b4K zRu!2Fbtis!@laH;#ok^{mncT2>~XQkts*H2V}8>RV5MqV8p3Pu2HDFOQ7PcLf(#C$ zzO`22XK$mQ_zO-XMCI0>IE1CMp=H66y#~f1Q5#Xu}bG!l)6rv`_-|l-7}* zB$Jsw_gnJ1Owvt>jhp9~VETBVXz+eLWzBG*w%4KBvsjtr9JJ#8vpn}-yv1hs{17W2SZAa;Nc<5}s-DR?xAf5I*skXR1BcNx@ zJlijcG@u8EQn&I0qR3ap;=lezuZ`^9TXiz-xWzvt`=Yn1c^q}2~Esk7$TCQMi5a=Gj+46YKP1Csko_?vf zA|#M!wSOT0`s(sr z(+cLAvc0VV_EQ>^!WBvWQLKP3E>8~+8*JxzJch4E7ZRwpsIOA^I&wI3M63y=J?UIp zAB-Ekzhx+`mqJ4nXD%&3E11*Q5$54S+tS$7El)$u+G0Ryb@=L4O(4SkER#hX?H=}^ z%24=m@n~FrHDhU?i;L^&;mElwD$&_vrF_6vMZ{|I?{H~m3 zj!(XVkyP;#ksHBS=d(tu`GQs!Oh)<7)3HIjsp3JBGSNGp7@b{2-fN4Wvbj4p_x8ZE zH{=9~BUIuBBFGXhIB#CC$Qx$M|BAGhE*bF=jVh#6oyRjW$}zaevT?fGXZYUJoc{$U zmF!?s6lb9*?XGdow?0+Vfhg|{#cnawv?n(wP3aZX z-2t^g#ftfOyuyTv?cmmhnCbc*vi&plz%z0~-^On7OnD=@_bSATny? z`lD%KSGt62MMfltAb!||1a70kLpG3nTjr!_xv7jfra0Z$+Vfp!izBEl;p{A*ty@L0 zZ0I{rcZ0@!w4B#>_%5G6g#LVQgxkkWad6;r<^=$iMY+WITkw1jfy*z?GP1Sf}IBvN1_U{TeV_#c-=g#_C6`q!=99u83>%AAXt( zXE5TFo~8xOUkDIoW>0pP!jAbv8?8+nN2rZUAX==PeJmiBu&xMzuP5pmpF<}Q*E%;R zWvz>lQGCt^3A#wd#rg{fSFy##oxu?51iur?(O;#q@P$UkS{0Gq>BPMV^1CPqx+Lb< z6#G_b=GEyixgRq#*HwIWQMirLjzC%;`>&!f)j|b+#M#xEp$+8O`e5rM_6^{4rWFQ zNlXsql;VOaclMn;_Du;B0XSX%aV$g#o+WhYhle9!gTSbo0f)tQ_#9LRq@{f*Av6pM zaNeCHAKHiJ8|52U&N%yv(^}B!UEc`3NFde~+7{X1Fa0fD-JIG(R5ef&c<@QV)_Qzc zZ~h-9OUy{B`+3{oI(JEc|F^r-pg#|JZ(KH@YAk3v(+>iNk&vgyv(&!a%lAfYv0W@r zEG#6!5y2hV9GHPTUdBcxVAl{N;?Zf>`(CQA`1sICxbXgyZoj1GSIY_7!-0t(6I->_ zuP>zEoeTR(ObllkEK4%#vN)X}d#HEDi!Jq1?G_aCT#G(>daAL$0*1`5GU}Q~2GUc^ zFbw=&{`=L2^;sE{AKn*6rAuLXbX0vaQ|QYX(C%3>v`p3vQ(xYKCk7n~RgPEy$mOe2 zG8jjq{54Bu8j113WdEmoW)|)%8>Iq@0RZ8V3O1xx&bX6xhjhpJ1yV#0;NKqg^yszs zpdwVJY2esauX{+u#G9wO{J#|Re=`xVXo^2`>;;W2q1dy5Nx;Vgm>d@t+oPt|U-vSA zx`KaAmjyh}Wf{{G75UR?Y=U*?6Ny*74Kzdu+PWD*3Yd}g&8fUj+1}d-Wh&XdzWm## zpq?_;+6n&_{?iDJZ!D*2Ua6Lw)inc~#|>uD`fwL-s7>5|ivT88uF1kgx9XMN3MIiz z@=$E;R~?Q6ZEq~}sM4ycov`i|8Zn`zyDb(Ld!P>DF9-@mdi4qg^pboo{`S1~LU@ zVqsLEqkX%-{T9jLNO+K{=}cp;ys^EyniJYXnnp{ThLFSG&8(7U#Or`gb0EF7c0jUX zBLt7%fR{esx~?V0{}`t9_5eyQ-%){Z;*EoYq2Cqx*#h+h0J%a3qiGV1Q6-hx>fJ-* z{P0T6I3{rGp382RX^JYadsP(q2!(@+gFQcpIV2x(vDrVfRLTkAsARd9!{So z)6^TQy=7s+n;qam_r;6EOO7dJbPG8F!_HE;aLV~6o$K}uVW~lcS0}6&qOv3hrUpq6$C;=96{k)?N>a19pH63 zz!Bg7OFIHaBE+xC9_i^thSs`jc^9e)|3NjUj_QE91sBv^SiOInB^(#oyNIbVDt}z5 zSlzLAd^r|j{-x=57ahg{dT$bl z6X$@~O~D4PW&^MZ@I?99CV6=e*cce9`~uRDU!7nems(5NoHjO6QtFBY{4H7d2r?tRrHE)5U#xzF{BDIOC#3Z+0$ z^3oQ=&L&=7f^FJBIm?>=+9fo7gvtS2;sm zl+M{-EW)_mTx}?^{e}h>0gAB;w&?)iMkl!L?>h6PKQm)h2K*>tMGbx3xy}i&nvVAG zhx(G0Y9=Dx4{sxP#?R%ICbo8SgG~2-qVG-;z;P+Yi=@hY0RFu5Iq=2oS8#j?0ovQM zg5>ZkLZ}N0-7%TOp9+l>F@?A5J7`tf3i)NtUN;`pWrR-+S|Wykau?o!YyPE4VjRq3 z1T{UMoRjWcY0I5IsP{mX8ahJNQuO8PhMIo>k>*zqtGf%h!$%cMGE&c!!(M%&4B<%A*t4%DUt2N2D@(8} zENT9hjx&D0s>=75fT~c9kt!pL;3Tj?y)gVHT#N-`YXpw#J5S^cesF+$tH%TcWS@oV^qP?QBPs=$(}gCc=FThHrhQ3`JIq{(oUY z7A2QjZ1!=wASgNGN+#^;=@AJ69}2v=i*an_4h%G&C|Fe!acYwR8cDCvun9RWhEXG4 z-iBYV35U0|m|q?CQHVe=V@XUT3&m*3jw3Q_Nw!QVRHcJr(+z6Tz~1|pls;#>HZ>yy ztFM$LSA7`^ABPBU@Cv&bHU?3Kf`?o{s#? zIA79T&tHBBb*+3&L({j5(r)-;|I_fKwC1gj77=_avBiS(L;mdXPATNLO-x$O+r{Qv zs6{zZVi=mUprVLVmuFX0q-k=O-+4Blqv$|HH7pEA;}ovG5)?$i%-nLen@a-i@UE-W zB&?zb3exey4vJZqmzg-jaxB>Ovix`n`YQ$^699?aLW08$n7qc5!FLfQv(04Gk*R{! z`19#ZyuAXI0Jv_`K0YR_UU9G_UvnABYf7;4=5%1-=FS(s5hf+z40X~_!Y zfkGT#d>N)2EY{1C(E8O)LeP`kC9zpQCnfG{RHAok2&J;TtR~QY7;0HJUjO{qkLlO& zacow5(gpp0*}buve(mYThMWOMOMC8gN_hFU=h;Bj&JGNcitw;JUU6OVm^me$umjq# z4spp4?CwkqRCa@4Tl_4UYX?&-bSpsqZyXcgN6(PU4GK|zqmJDyjT_$TEM z$DgbPZCTrF#3x+y_SN&>Z(zhO?wjR9yfCN+paDx5R1yj*uV6M?@6Ii+nh>k(vXG+^ zyJJdF$@i}oQk9qQG_tRd@3es0goh-ApC4`260<^S*!>g%-dmLL^JZu z?T*jW5!aQ81P@NXuVWKCQ3GSd5(wOFssG%V>5G)$e`$V0Ie-!KqT%Q-O}$t3)f;$1 zBF7}N&XtKSx87HRX_?cv5A z>m!os@yeR^c*I8A&D|TP)*^zLuSR2$RDshCmU=+*Y%`~IfEsg1rQI5l~!~- z92|x{Q*2@4BWh1g;Lw)^LRp*M*w)e$=pBJ(m<19O3#50d`>H=$uwp_d)fL$0^iS;K z4t?O;ooDvwE&Y3z#T`J$5|@Z53xFn z)5t0f%pN{PzK~c3mKaBDAz2RmhcR}rE$NUx)y6@P zj!epltY46Os!x2yy!m}mS8-gTwphm__r>C+w|PiM$k0_@cRYq1n>BC@0N$_$2l|Q; zhS%Z=7&G{73VCcnNN7LMJ&SDr#*P3c(BM&_E&>klKvK*&1Z-4&#Vs}}lKXZiGnG}h zF50<=m%Vi#C?S&!B3z~%_jt7D^l|rj>Ijf(UcEb8LJj-${4LFQxxhGq@9E2I7fU9e zT0 zNK%o3{b*EQX@5CgWH~ z_5DfGI$3c3-F1_*c&qsr983=`X?EpKPQq1{47KRFQ7!PVm00$im-$r^$vQ~Cpi&L- zzg}fyH4@4Y3y>C}_}2?26@Rj4?>u$?*J~>(3KY5B7Wi75Kh=hl7aJspht($(+JVA- zdKZ%6C2BS8v;4{BH|z>##sGjT1(BE-d?prQ5AEER7T9q|$M?JD@T*UWi6qx6+(}_* zjG_>IAzG?A7)0NiR*8O6Ro2PpVkHh_um9`Rj<@{mpX{FCn<*ao~3sX@YvKu?A z@9-ktl(IYi5nN6O4)TIQ;{eKW36`AyXcqQ;oCBxC&$~?>qdKhCSqd)TvJnTVGGvCC zvE=euy58>Cw{53z==MAbn3)Am6jDt?OJ;QIOnEjp&u)qIRphU6BjTy7Z085qM6Ejr z6Z8$)!F(|hg4Hx&EiIosu}Al?t3NXx3!cUjb<))kdd5OFaLXzK%#4kk-^y*#(*Bk3 zm15unSL*30w#elN5xGQ_y^1oJ3{SZBR!RqZ{crz#jc+n0xJUW|cCPJ^1!e#u(Sdz@ zOw7dg1=!h>%my3`zP!hED7sQttcF}1k-vdKUy46vjV;uh{M&x9l`AzW3Y%4zGp9tZ zj4LQm1bB=Z6?Gen3otZy$~Av7Hy~u$z)cJ<0jS1B^z{I4JsPsT6EO4H5jLn&ot{F? zGnUN-<~JZryk1|29uHYO-fbDWjgc4z-su_pX#NJAcEdQl^U&%l{IUs$8 zzB^!Kp17egV{>3L49E9;R)?nZ(F=@*{ShFv6bc~byg&-v`c_$GQu&&mzCiar52Mbx z`L`g(_aUnL9nyd4uWgUs)Nl)yw>)Jw$|fa`d9hQ!%~Lr|L>{_Y*`?rrpP)Mb=c4m7 zV+Fb9q_;A{lkIq$v_Ms_72KsBu-7bzE*Y!uPWqMG znu1Ybo4Y`Pp)S&mJXMhY*7O~9QPEij?h1~x^U&qI959^WC@1oZKUdn~|oWWE3HJn_{A3{SY$_rMvD*5 zzaKgP$%sn$Y)|}pWOY7`f>j?S-)`g{S?SA*@UGEFIVejG+5)EdJ47(iU7`zg4 zEFX>7P`^RB#an6aOZ-Lsxund5g+WNVUW$JAr=7u!2YUm8qkMt-NN1j zG*<^ufwFPBLut$h3(YL4pUbJ)9||$!i(M;$V9*wRU4N71R^AM!rBLZzgqaOpl9Ae; ztkF_PE*EKwbl>h;WpMPQJv~lG$r-MURI`Io!>ne%(Y>VVj;YY>v7Rmv0jA(!&GSwh zbG$8Yw|8kE_wR9vHx@k(SD_k>7cQ-I3B)+$Q|t4cMc&SOW*Rnr5I;ZHz5M#a^&nXh zU>2+;2SWNXClTO%fvU`HMp-;5E9>7V-#^$MiKDvJhsHq&#a()7#$}d~bFWLz(Z7iZ z^aJ!=x=~TC{4P_#*hNRMEq7UwHJ_0N$Oj$rDzU=8&$mDgkmo-2#;I)wEhXg)&`1{l zdS_HxnnBz1lfc8n_SKsvHX&Jq!_9p&$4-A*!>BHpnVf%`kCb${hz{|Rn3$OHifg1L zyqt0in)XjZ95H#bg*q*z-0uZIO%olBVFoQ$lvn9azdt4bJ8ZI$IKTQ+W#E?aAZ~{Opkaz~wz2s6%@9t|ET>fasuMA!u&W`i)8i12_6`D9zpW@eJPX1^DF!$xE5P${d{d}o z<&6adN^xFOQ>Xd&YCX~!tSi)cejO{9z~oV$!XEyd8&koqhVgv-=)bLnI{%OZuC^Cp z$r`F6Yj|+nC9zqe*^C^_s`!5bZRhY466*TXVMyjm>e#sv?VhAl*a=DDPWkRD7J@P00t6i)=e|Bm{rEn<} zw9-Q~oeOAf-{JqcF4fG|e&72ObQidgNfRv<)jG=ua9t`QSNg<>+dE^VcH6F{Kludm z&7f=v2IL$w=F5z76Xd^sv3jLrgvx2?Rop(DQ)pM+Bvn(?x5+&hse@U@OgQa|P_##X zdEsTG9coHPM1-ncJ7qQ$Ly#wANf;l3gp|!&Np3L`fk#F*u>7s>3u{?XC(*w;;u+&n z@L|;qzyUM>$4akNszqqY%am&n`tPk4HS;l*dLdcZEx$yaOrRVx^hlo7vP0>!{P2PF z=0dZ?W_z1d#^UGacUIHK!$TyIMR_YFP>LUl(C5ET7aiYBq~N*@Vd~s6BFNVa_Hr4e z3MC!QbG&l}QsE_!4cWf^2uVq5^!+rgygNI9ynG4J(Q)n=Swll=04D9hVujoD|7-il zb$Zhy)lgCcwK-)rMs`L{%Yqv=Uc!}P82^v&j$SoyU!!9eS55Sm6&9Ee#oQI+4OZ!` zw%(Xer)~qqTp5aZz5Aajp?~Zyje9O&ac+T#-zu)b0v_dQ{rz^5Qag?`t!Th38Za@J z0&rpKI(bg}Y9%&?kfJ@HR0M_y{$Rh*n2s8m#W7YMC8GJYMbnxV)BnN^hnEyn3(KKt zN91hsmkLzBP+Q^gh2e)~E6(1j{A8fwes14FL^MBYPZ(76R|I-q<~u(ESPibY+S-PN z$mnFH0d@#(==Q!zc|Oru9aYx6{$!m>ku_Y``>;0`&FwN?r}4Zp|KW5P=OfkFZb?s& z^hXbRos}Sz62`>udLqS0RnN|^;rQ#i4^xF+`eZ%u%DJV#Z%U~9p=-A>fOb!JGKEQn zuMV%()YU_cNRn@^D8)tR?jTb2A&2t~g15D)ANEN7ctS^zX8_metbMV=*5FfVX89x= zjfP*x5!A8ecyo=!iC+9nq5Km~Vp}{{^*F>(?CE~QzkA!gT@0E&Dom>`HixAh%?K8r zVQgd4gDv|!WHb{O=2bOc8vat9@4o%rX?8Ft853I#_FzS?mQ+^9VthJ5j^>J{cwTn> z=Kc+%n={M4yCWjR02SX?tGrUvgWVX{)c~3Qs4E(XJbgh);zV+9BmN)38T$Wy5xN)wYfeWj7trmYK?w*mAcxkGoSC;#jTU`(e*>809!-u z=5aP@JNts!fVcF97lrquSo(W&CEDzB?uxNmn(YQ$bN*rc4z7$OMHwE4enSz|+~^Sv zpkour$F}~l;#P6yI${#|M;TCU7Qe%S+B>VSta=;^a%N^I+2`@a$(J6)z@FiT;Qn4^ zr07*##Zg^6tPX%!rRRoc*%BrqDdL!x^R)^o_8~FgK4D36}y{;ME0O zlH1wwIQInf%lttvP%$&(b?!RLyqFca8Rl)-e}z0tlajrU@;PYUn~PiYg5g88tQYu)Z9iP&b~8+av&Jc zp2NR3x_x($s@p&x3xg?0jzqq7Ie&**MgHzohL#MwR9gf;9)<@dQBk+T%PruF9w7r# zmrqP%4A8TZQ0y?~2{36w$HOklxDF|~B>(n}r?%V9dX~D#$mPz1x3(uR@1R!Ie6fL5 zLBWocn;{KHJZ~`g1Qpl6C@Mk|*eyPq-|f~tlVEM09y|@0&}3r()a#`d)*6*u$n~LM z?FTX<&`*6G7GRi%c-Hy(;aqA3vPF%G{nA6-DpWYN&}8!dq;PvHv5}dLckT0V+@I0I z#Z^)vo~WcG_Fk@ehQ$PR;}~ExsBAs`QQ&L<4~WzfPs#p#q8-us<6i&TCWFQ#v6+bv zSA=mu@w53;hgi|!LCW69(KfOfP}!vqIppOOE43M?jj=yh*ibB5`{S?m(DTvh+TB%e z)dsuSS5SZ-Ntno)ji-?cHO$L5O*qrIAYV`H-n!#s2hR_~c35E08fe{RX?4b&vLG^R z~qW_V(bT%3+g$-p0w*l~XVfj+0bF3PWNK_`A=3aQ&NtGc!BOumv)_R=xSq zd$GrhI2#~F$^nB+QyYC}t&=l#+9KgsQa%!bJ&)J?iXD6wW~iM8C<^pbkyRblqZnGQWI5w zXNZ7s^{9{nnI9|^()s}#>bTu6No3-vm1J%``#}o!=Pc+8s}5=+#>G|ikA2ID9~PPX%<-kqajt!=qYgTVdTSqyYmqodI3B;_9NsNW}(8 z&4a?ifhTueU;I|#AX>A{-)^Up@6U52jLMr-s($$Jas9V` zbPGqIZ`CDSD_bk?W)A~^b*4<*!J&1`W*&v}`JI~xB2sUX>@II%A;^d0Ca|Npmd$5z zP}t{@0a5e^`lL{6%u&T3Td8e@r?U|ag|X~cF~&d&XGomp$9~1kd`hbrBfOt21ya=Pys4);aIl``ORl`{Ab-2BbW}wv^A0fl8Ol z^9K|XFWU5s0-F<)<8I$y&r&-SnuZ8c#28SncK?(b-5HA@prG~*OpLz07rkrs?JX)) zFkER<2f#i-6CthKbdAw=9)G6a?}eNZOlg{(X@4V;2T;Prh_R!4l>qumCSsn7)Xp_u zOxlu%oNWoO^79~NGkXNJt{i0(F6jCq?y#zsJloCfOqgZVTzD9s0AX5MXCP!QYGzn! zh@o$g)9)&#{Ny-Im3rY&r$6LBcG32bc8MkjYcG6IDE25D?bBBO@tjQmgGBM`1L85Q z^@6U7NrS@5gSTRD(oX4Mx=$rzo@PIlU!UjvhrVUn)k!aNI4e%aWEnP}Np{{xJIMeB zQ}eJU_>MD_^V|#OmLIkcy>a7HQ5C<@TN|y@3%(I}CzPe$!)N?5nlVOW@7olFFfJ?&r9%ZC)$%S5gEow;Mj#NH$>X$SGG=0Cgd-V?Guwc9=*)8 zBhReJ{IHOvKN`iO-x5e>jY!Dm=y=)UYRb$=P+1|y!C63?c5pVTEkDX9`~`(m_7H)PH$gRMctJ4aCR_Bw zY_hgFDoOLt$43iE=Cxdz7y-&#NTRoI8Rh@#vS526)rOYYVE2A)z3SRZDgMzEzRL+M z;zr)AU#{B#Y{*G#!HI8w+~!$8L3~{0NUdLohD78KB=U%>TT_6lB}s>!s>2HbcgpSuK!ET92540BuNs(7@H7jbeVmcn=>OQ}0*HbT~OZ*gY7l(0%(U3m^yF#nX*jCo8$R2_gI% zPO845e0$j_4?*muOltfkErToL=aZAcF!=KWxO6V?cdr^HMnvcjKK?hEMi2QjI4Bhyr0lYlc5p!UMr2?)*Joc>fh944Ue0f)#d>X|7@wQF z@S45t0qABy=yY`TlOo&29#oELhf54Sj@>&H)tD1e;7E13TEFlN4YzV^;vBd1@ii3% zMm=fRvJH`uh`aLcCzV)hwtiqeNT5R}c_yju8;H5~y`~R4dIvJ+VGQYfH`Do%y57xQybydHMM@`stWIv#aC7`81>8H9OC zmm}(Z^+uzk{T3+6B%ijy9=l2KhY0ga$ zzqEKwkGh?)aL<#TH{DKHJ;c99{AD1Bm>N`tOcpnHhV@j|aA;Pr&yCon*$Gut{08|h zG%7FzLIFy5K>F==@Xv{dfH{-SVN7e%gt?7!nU$^8ZQ9i3F4$Zk#HZoRzI_JDAUYF8 zVk`v$sTYao+*_|Q&Aylz4rj)3tUvqY{YQ*iTrbTdtGZ;vwrTXS z3x7sI;Lno1E=Si>9_DE&$MG9`AR;~Ao#gDD${CsB-f`HR_Fa=@7&YKUvXn~web=7* z=5S}u;``5F&R8^luu)TBKqKOON+vy8b~gml3}S*} zqIWBn<{CFNPOH~-+GTKEYkbdRt0s(f075KSxCk-%w8!LIR_TndCLLqi{eb02dGUtM z+1P0R*VTOd%{hzBxvsg4Pd}a6@}FjhcOJcJ6XdL+0`st;hcgP*+UWEQ)4)dsC8_S@ z;qYr({&V!W?K8T#AigKz9l!aLNtS&ot4FMaix!KxnpwgPOaOaMjA*RjQsYoo$%@tF zob4F6{OVFkCk`84eYqid5?}B znk+X4XbQyfbGlrWUoeE3Mwvx1TVKw-DAbIlyV!9HYf5k=8M^|HrbeK z*KrlD(AIoT9_yZTG(@+^hxo^;uaB?*?e=j+^)~p)gukhbI4-JY6afXN^8jx4LulzyU2WJEGTTV)x|7A8jF=NAIDsnr5tQFcWG@K-w z7HB^;Vt)`;!QW~P62gV(?4+JuP`0+S5n53ZaAMwPy0nYxtor(d@rmerHUB&m2n&#b%w-v|9mJMtl055TahAIsN@U&6&_2K#37nlW)q<6XhLxc z_Vtk4lCNKDn z*}~a$RLrDW|7^?0d$s;?%^hCWHAs&KJjOE$ut}mS9xZwTcgW1ibR`ySO^PkP2q)P_ zT6d-!1o7RyJA9&L*^#e+7Pibl*R(O=(J=fP6lqZNoAojRSzFcn@oh=B8DfHxqq7Gb zhJ@)Fq@T?>9c}ORP8W0<{5V(h_V+f43&))+uJ_*O3RaC#^}SI_J>XO_F1)yK@3|}V z?C>|JuKGF`;>zqYv>97a5E{_G1$K5BZE=1$3nHL@rp0bkmMCi)0%8+e`3Q+>{SEJB zBWs(%!-g;E2g-D@IU1osI#Eg<2xd9)dQ;Wy^!e>>NM*M=J-GCD(l<<10_b^s|$r}*?Ri*iu!JRU0|p<=q8OXIpg#X+=Am;<|-%)h)IZ@RMw8;3~O zp5n~TPiZ(CIh(}sIkHvOl{}>Pr3G+swy=I4)Ra)klb%x#zn3*NGNKe~emS&0p??0a zCUS8(saPami0l2c&*tD`aM_>nAU(fq0*Tw6RQAS=YWul}GeeNLwf%aBi|frXld~Pq zm%=An%^+nUvS+IJETu*CjZjU?>u}aXAc_#kwh)~6BmX2hHA&Wgx@zFKb1<^K?75fi z+YwyK9UbBb#rCYLtTi$X($GVgNn@)o?k z-L~{v=iBk$f>1j4pYM^xV~z;1W;0}K{P(ik0+-W`IbLz`RBD&JAUZ3WV*5C)TcmfD z3g^N-BfI)h zr7sy!nz=P5jnyxoGqdxAJd!{wF=Of1RMS?U!W05!f9C&*ZJ;1wj5&NBU8`lUtCg+N zcISeGjq(1(o}dKB5LZPc-E@tUBebDf!w@vfv|X;6DYl+qSDcC=*l=%Ms|-pYU?Pu$ zs8{y5Afq7;o15}`_%H|1rhOl@v;fv}o)AR7SYY(u{q~#6=Xl6t}I-@y!cY1lRYz5tE=xNt;TkhCylz215hdTBn-;QPhj-Ta*84{Ck zv{g$8VsMV<7+D~RLGF8__H!LJG0`2qfzahM(04*7@+4JiFhyAPJ|m~{b^FGh*uaDx zn~vkS+U%$;?)-B)Sq&!~&;(ta^mpUqs)wDfq;k7j6FdtVTD~e5$~_xEVx&9}xAXQ4 z{CFi|0Ww5lSTl`_pM}EonKzu)8k?Kl^FzIbK>R)8wSzNW@0C&LpZ_J`&WbT?F3Ijs=HtcZ zB0iR@MT#5&A%bs!buXn}qbnH~O#W=afhVlbS)p6Q<7LXS7O7jav9-IktdrH#G<>26 z%sh>!nlc#tTQzmDT_Em_$iDXyEw7uY|K=oB5!j%m&pxy-g`jTumodt-AOfFZPQ~qD z-P$E7mzL$3lskq#MH~r5f7yTyr?HGJoNDijEa16V3J@I2-5P<}H7lVXBRD1ZqmM;YI^pRJy$__UD;}%n4FB>xt>)qfu3LfiI52=k=~o)e6JkS zIEn>7_bnH&U@zPnF{eR@fA*_RYx&^hyvPuNuQ5+0c8Tr6O?pgMP19wR(m!PLNO1JM zU-o@r;?F?P@wZ(1QAb@H+bsdUgzqPBAFSRzQ*~DGeTI4Z2_xG_Du7Y|tIAaaF2q9t zv~zp9uTSL^v3$D9)id^_i{oc6bqh}?hmuAQr$Q}lyO#Rmv=a4}f3+DHn>-kM)XQg= zhk2TZIhEr7@JGD&y-}fFalH+7m6^76yx)W4iKyRbGYZ39bzDMQ1{#=TRC!!+dA<=P zuD-504MCP8^!Cdm8;(jFYjqok&-lt6$A5mYE`}ifx%9ZKe!Wi}H!M1A=`&(!OP-9U zSd`FFg5#{^{9#bv(fL3-^=ikjKYjMQKT$N7q)LdtOwZMkbV3WAR_;5O6i*0@=@wf_ zeXFTc@ne8BgI-{sW?@cE?P$6gALp_)8s%FJB{1vP1`pd%r7GN?KMR5M&kQ0%l->S9 z`YC?36!dh|5l_pxiSgS=D+lU-#@-f$%_|W-Mu5fa_`{35a6&%ZMCu?haZ#a}#s)Y~ zqRyhKQ;6^Fl{zF!F=FYLQ~~)dJGiaZ4hxyTNs@ox!r_KYl7DZwQdZ8nOONxoKOUUi zyu4mt#+aI9!rn6Ll~7`R01SX7!)07_BRuF*d)8fkaLop z;VD$;WJTI@6_&?gcKH74;Id0MwL@yE@sE{oUC?ik=n&gGM4K_1y+ZM2W@HMmfgF0Q zdnIRrDSqWMU?;3LwbgI{PAmlFI*4}Dk_W+yqRAd#4m87>A=G*lbG$!AEP9&fM-Lt&&L;;zl;9|3ydN1~_YQi$6B)8XLyLWfLU}VQulE_nT ze&Z%du|rLt7p(aWFt)d}Q{Ia!U8dkA+BaQ!)gY1P_%4-JUM72&wUhL#Ji%{|5RGas zlEcDENp;r5UfWEAjvPD>q6kbG-Z6zaS=FSalx2mvn+$MGSWZu5byZP2j`g03KPJP?w?mU&(*E$@OqkcSJ)&M68M!sz}XE zAU|<<+p-MzLrE=uI4#jHIcB7J$QmoQvdPLxhAaEZeKdH;N*o^1@@(A4#0pjPM5fyx zyMu507*X=5HVGh`7}Kr*lQV|n2Lg-)K(^=oTK&E9JFDeGmDQ{PIqR9)?YlTCqU6`9 zlIR{HEc^0SV`LOpV-!dmf!kqn;7F^k#AJkOLh`mia9*^VL5QOw5cOXwreYV(ua~Qw z?HyDA?0<CJa3e}q+6sgV{}2MLcl!})N?}!vBb%@b+oOpAEGy|Mbo6d z1(;mSATQ7lY%a*gf@EmCHe@{XCk+AmD*C4$=rvym#;2&Ff7yO~Pqr)Qf^oJDeFM@eq9Yv`si{}$Jp)dT`-@+4z=GKAP1YG}z*TxL9G9LK079BOdDmM9J`80(MED8LwK1xD_t8-UK*#uhd{MB^n3 z)oc@e!E3{@LSohs;j|qs*9SlijI%zmA`WcgQkuCq>b&E?-E0k}T31*No3?=NZmb2r zi8?-#BGp=;f)gesH|Bg?7VJ;Wxbfm<$+>Vxxx6W9s#Vb@gGSx)#KCFPco$8Ea3Vj6 z7i-A_B`yxgS@N!^EzJEU}J}4uT^xzH(O@?iN*&ZAOsGxYrz(`{uQ| zgBIUcv<&h$Ts8CA=y&79u_OU)p(38*nB`;#>>HObgmAg%UcDC=^As)*P>>)1NWt}y z`K~aaJ85R5OLMR67qK&UOCI(b5TNQ;0)@y0`viNV6;jyVw@dXi1Jo7PbhbP@ z!Mq^adK|FVQI<}v_%2*};)Frqo$)T!-)^}oXGT-{`)(&n-}?4IDs!A+-0+==-b97q zYXjc&*Xb(%`rJS2KQIdXl=$(x;K$FE75&vf^g-Rx3COy=gAh8#VPpr_EJ!#KK08(mN3Va1Maokg|O z=L#>0P60tBE)u<>j6{N1`zlg8atfSN{BRs4=2E^XOfx`+pLL&d?GSaVpa-iU3@c1KVx7hczwq zH1;zy`;V;fU%Jlt!}LW4ze(rcWR=FvtMZz(WJW;^l-;hQLoPT)sZIKQE{Z>HGb(yk zFDn#iNMKv!?Ndn(mzFxPMUSAjyBeZCIQo-kp}dAxRz+;k&$~}&4lKzSvQx#b)f%mE zUkbI*s#slLziSD|xUn}){Dj~^*_R%e+5aA-uV(^6k7DB)sJVF3VutD-EggBZ;bEezuYqIXs2u0#x|wleB608kr` z{a}Fx09Y#aa&lT8I!dziDhhH!Z$yNIxcIo=0Dy8-j;;?l8BQh%g@3>Y$u6GNraOHC z7?~COX6;!10bUFMO<`|E?!f)f20F~Osc$&N>8vm)@zG4 z003twe!jt;Kcya!YFq(iz-^wJnP_O^`E#oli#|Y~2&^*_?O`J&=m5jq?}tf%VG7`< z?k{UBAO!%N`~qbefpT2n_@9a-8n9TFyh;u%7QQUQ0KOst8LUdo$kJ_qx!xxoPUP-h zAiq+YksGzU8VO?1$ftx1=|BU#w*2~P? zzBDT%0o`M%6Y1|}`AM2nr>T4{&ek^>HhZ0FWi80r2y8I78MD)~n2444P}C-I0D$Ut zrsqjmDq(MTdt=vT&k6Q#pzz7@%#~4+;T-zZ9*c|$5NJ%nmd$o{7Es)VkbZh~IhGj# z%OJoGdTYYJf|+lKHSK>J<0t$eO`BVwH7ri^5(^vqv~M^HDdK? z#s3WWm?@o6)m`-Y@uP){cePI3-WaOv8yEN<)6>wGkjFT-nN5LOV@}fOb8u9%7Nh!* zUyDwnJi|!pCec9%-#J~{BWAJ>E>Ib+*{#ut-Z19W9ej#}9D@g*^#-JaFS%l=uoD3S zTLC^lH~=Jf-Ns9EAOREU#ajT-zE5HNBZXXT5CZ_@^FOiwltIVoA*t-f%kH6R?qN$%j@-y!m{a8T zQnZI-qRI?o5L+;aMiN@aEiz7GkY~i9GFm7LBteSl4G@9TH8HnJ&28 zNkqOHOW!4|4Ab*PKSZ}Hy-E30r;YL(*-N_R2OU-PV7|wUrvSbQB(2bKhN_-c0@7Gm zI`eMd%M%ESj< zp4gOtpP-p^Khn3|L?Sv6xv7R($gESGLZmAAL23uJB#%!vBfngGqAd3}MtP)Yo}r3! zzPA>SZbTWefLG?Li7Ya?v0|>G`RPo1TYI=2&w*zv=HJh>3hC47vyS`d2YUyf|M}qH zhU0!7QnqBJbfgTRETw3oM0?DrLV_!Xw0pzn%$zqGc>Fn^O(%$L#VwUr4~PwM#S#A{7yn-z7M zJ%-*{;nszJQOpllE_!d(G)VcCfozcP!#P-X!5xHh#Oe4=-O{M;_E^mu?Vj43CqPYC z&ZFF>(k9U+XZPa-65e3#`kBa5w(2CqB<^GY7YdgYSM7pBl}%M})!SwN<<4cx6ZaFc zlcQyrms^f>4rk7lsIw^C3$sx$RZq2!#^k>3I4)#w%8!QUCBE9ZYjSLBDV z1=tMTTV4SSp#(~&H^NqD;|W&#j^FH?XU@Vleh`k?wI=r470sv=y>4bXjj-Jk^d*P&rgf%%&U1Wxm~*vqv2x@%PGmmYG1sDV zseR?)>z5LR>;csnp_rkx<+Q*tv^4cJc;z>cB*+hR1^QE|vS56~dE~sH@1#YopM{ep znl;w=qbjSa-#g10O0r23&o;|;rR%c%=J??l>p1iH#fiwZ#r3Oe=j$n&@s~t23u2yP zf$pAO@ohPYs2q?>|6uQ9H|Fs2dU!|)u&%5jwp1f8K@=bf@ojS+FtPBNRrCpVB#9k zxhK1JlV4EZTJf*ia%Rquj$-7H8dBf!jM%*ZzrxSS+Gh?1aZTBzsOGIsXAn!S4@@H>nzEAVCs@_>GY$4x0m>kRX5jPMt zNC*`E@{K6HPHN{fy{r}wh2~DFi#iSQMOfAsO@+?FuZ7yRP0gy}NxM0q)NA3tVnK3u zcHx?eUW5FYnmQbQiIhn#Oqc2)`GvL0silugTp}siDcMCjxb|uF9DjJ5SerC$I5?7V zxBYgVN2!w|M&a8`w;q=(q)uPdW{T={s#FfhuSSV-A#QB zv-!X)Kj-D;HPxoklOyG$;v<(zxItHqYKMc&{B-ykZWZ&0)L0AxQY6S z(Fqhm3&9hk@y5!PivppdYyX@OlQGa^RYgM-HB@POCLtU3HkwIznG*l||il zvLLR@Stpr34Q__)c)c<^J+GnP0|U0S_6sKaR{JKP86izq7)Q!}9J8WbUX@%$&iN7r z9kBh_q8u7i8l}#r=U~{IEi11f!Fc`L{2W$^^V{vvCNucR<=S4n$yvMGKSsFa%B!Y#RT9+_O2KZA8_G3Cu16o>V<-CJ z)t>*n?~Lhgfgsi8e5%g?ABKk+k^7YLJQuMst2C}O&!ouoH9m)qjvAM$ zGg;0Em7A0CKnNR&8;_0;Zd?fd>GfEdJM!T$HQ?0e~!8 zMPBB;Z}v%!V=T>%-%!ZZ{baU8K#ya)VjD|k{2baAHD)K;YQF&L+truKI&8(NS_&Lo zdfMfIm~^ttktwVW_gs1@?!~6F|B$t_jC5Z))5|yGVj2)*nBt(4^tCSHz4&ARI~C!- z?0n?CoSe*%unlTIKCRrkOjq>S_0RRo-Fr4(%kWUVUh7I%Qli^2?%ylVYr|j1E;4Jb z0jrRO2b9Ajk2^wY+Q-L$my{Bg*lA^4#vW6Ga3o{hmKP8uvuK+A86HW0Ga1GlQkR;w zYGC0P?Gzhbg2^$F^dLnHRYZLL{>!-(#SeWpjU1(&MqldVmAhi6c15|HT;(C+hmiB-{F%_b>J~i8nM|u z6T-;{aDA;}bBwWi(pAs>I8zzQ-|M3g{u-U4LfYl)p0tIu6MEWQMB<)@#4y~rBeoA9 zwja_H5OF}&4R-eWG#$eDDf8J-l3MZtuZJiCEEqz`OK!x;93t80aiygz18pG*Eo;z5 zq}x^;3D;_I>N z6zhc43^^Jg%{1V7ct0^uh$xaAR~Cg!}hoe#Hmrs-q|X#j>Q0?dWldAVs}f z{Sv}2-I|?&IL#hUndRB~s+eCEleNk=2$NMp^lo2{SIj!WH5(MokiAJ`9B~pZTt0tz z|LG11?{`#(B)w4B<&zUe<`m!oUf;2<6{ss9-TnP5V=Hr^jRVc6vU6*#M*N2KwDpAh z+PF1h$kaFXAim#uvIE)*zvRLjGmYV`DCIYC`mjy0-WxxLl)3a$ zOZA(UD4+kf?L@HwCc}Q*ywB>9B&@{~Kks4lb<0s>8_;|YJAD$*euIh@pai$cSl{f* zqBhi*+1}m60lsbwP3#F+31G^Myr;4{))G@?<-^>=JzK<%FIlOkZE2;s)-7p`8hn`` zC~bN>5xZ`FNtz&M6e=A1<~p!#G@^MK%(f+9=6A+%<9dU5oay*S_kR_|c78LM*VvyV z7XvmYJl3;wJk0D6g7Igu*!#>cn;3iZ?<&vqtQLX8(JJxRw($}Rw^Q!5P4-2iusUwI z9uVhGTOlxTtpQa4v2k(SH-QKwmR3n?`G`%aQL<4w%ZAMd*73pTdVB=_UucOqHs_A{ zYR_kMU8Us)M{+AGtApztF`rz$edjOi^Da~#!1xIY>dz%UfxIx?*f&DIC_)=z25jVi z1#XFV8CG?2!Cb?&6-$xI-@j{7pTw{iVMip5!^!?~AcecnV6Q@|(#OrW~gNo-lEze$9@k_o z3pzl&A9226x8KEK?#=n=+wWA*jhhW~=fso0)FL-1l590N6iI?KeFvz_TeJjFCNl`? zTT4^w7-Ift+~dxbHQ5MXE#MrX>(>Um>5Xl@6b(W+nTf<9gxc~gCw`}bn-%5PRo4-^ zG56vx`}_@YpOCFvKdX>ZEOv|>$$a(g47baMKPYEK5h2Lk*gPGW-C5-Skj@T`l7V(f z;+n2|oITk8$eLy`es#It^h^!$F%v@WPF-mNe%c_M$)$-8>AWAF)2#Pe`+u683*iTt zfKc#_B9MEhcYM&~{59k3?#NZ3GS8KhHAdsLF@kryPdrgzh+$ozJ)hLs2@K`uTZ_<& z@R!C{m-i#*QuW?=#1~!o``eHYir1xOG%vQ#;388s%$Hju4;>?`Z#GayE^;&<@By>6 zb4lQ-X##fiKO+mYX-kKlOwKSV0Xgmm`|1pl`~dJm37`Jk(l*QT*J za0(0B7&?!b8u&%i@l~^F-VV>_!6?85Wj#X5FTdc)Cq#eFkNbzY=PCO3`nNOm749aW zDe&g=dHBDUW_`#KMM&tbTdouxB5K1mMjDkAC?sF-P~30ea#Mo5JsZDoF3-gc)}GQo zDv6&5ievfD-!uW>1_$9a*l&3w=${cp+Vw%meE*!@7-;^%fB5^V3E<^zudwLa_jg;8?F z4i9r|k%Yb2X(wKq>&GxzwhO%xf?bOv>Hs41r;*{0a$A>=`VISTCUifwJViG`wFOW> zP8f9ys^0EL5pS#29iMI7=BG77E+7vAZ;6(1a@c>ElT1K7xDkm31D_qC#UgnH(;;d| z7d{wRYq?^=9n+M2_^cq}`djOxn7_BgBb=^O{lj?i$R`W6V#Ms1Y)A^ z0;26+m(D}p?srVqwwSH&Mt8l5MQgrjrG_lzz?NdeY_#QHXYXfiY*@5MMMeEnFK0?+ z!2LmPCQ3W*6AESFEZro2{0<|{{q~IjKfk7Cs_H$2rVJ-F61TPzMmX8)7yN_=raioZ zA-f%9G5{K#w9lsI#eCLgfn`@UJL#7#`SN)z89G6l8X8oooWe4{T!Vy|QVVhuN3~!{ zs!d@OWjITTs#|oDBAiNeygHPJv}HJ6iGH6v>PCqmvP2{(<${V z6HOtUl9_>`md#)2f>~`motcXS@tj&`y=K<8-YHT#ly@eU1DbCtz@^6TURvOMohgx- zqVVUZY6xbb3BeJ7Wba4zwNGJhpn_9+^pc<3RL@S4# zUw9EL|6?$x5>~&AEPzDrwoV+*up0&hactvmOcuOAzkBj^%ZE)F(FhAq+oGf2VZrYl z8dSL=FE_p328)}7u-yKKu|{CF1Qb!<75%YI{P5-Tgxcl@ZzrLty#6ZvrJa$Hk>ihb zN23#Ppugy_s0??W2!2xWI*zu6SmZHHFmU6b^kuu z`OAhCU5CiygV+(e-#$9j!reW|^?5~VY6&hO*0k((wD5?=i)puOYAdAH=FGj@XAH82 zBiX>vw>!kC4eM4eU+X|r#bppmW0y_=;o`L1Y{n20vaoEPXL^f6dmho{J6k^r>!!}( zWsApUsB-Y}v^E}bo7&bcS}%sj?ujYvUTwQW-t{g8QR5`x%Lo{_kj7msG^OH_l72}< z{<*-&2zGokn4hwFD4}l^yOD8jJDHzkskNkKVZ%Zhq+%&c5$4;8o?qR1$S#lgcau!< z>Kwba!Df591ci#^7UxLIQ)1a34G@>c+Osd6B^nKPw|Gq#&G|%-i#4Ol#26-np>m^bXz`WQDt0c-Hy53LrFwC&k)yGJ-8d7J=`2B- z=-ZALDm}VWSGRD;i!%TZDs?JJnO!i{WGngkgBK^Y0fb`zP&4n~o15;Rhpi42q7qYz zLybHYn<>n)$~Mx23VD0sLH`9Z(8k7wHGRxHnU@J`XUJWFg-Dx`g|Dzai8WR}KvXDH zP_+m%R66@Jk`Pl!MM8>b`&$ta`}@1QOd;Z^_2~YMAgI1J1-5n7yfz6N6fT%wT3V{- z;{$iPAghmxm3G%w)#grrGiV;GQc=t)Z^_i$-{ExxiWPhryz8brkXu&JcGion%?`2_ zs&(MGzGIEXwTM-z5l>~C2?tR*Rz)V&w|Xc}+adMOR%w{X|i-=J2o4dQu zB5!hAPjpj>NeI%!SoeULRM|+w3y9>|N>X6AjH)S7u{wtKnnNnW(Tr6M3%Pr2QJY^G59^%mPaN3B2(IfTOVg>++xLntgNd*DIhQ%pE=Ki6+* zcibr*PdKRq^D+)7NB@3cOeVnzwchy`$YX?tyf`dxPoav1OI{r&ED$9K8XOwpGEYuK z!Ojnlh|u-_2Zzr=p{|bng8u#i%(qn9wbW5Ms`aIMBnpNpcG5x*QXOV{gBkqMfUsY-}tk=^!*}FyDpcl>OeZfogfq z{;76h(~oxe_*MZGdU@XAn^*0g9&?K-BV7f`I`Ok^MD-c^bL91kkqA|0{KXVgbfG|f zrd^r|LQ^b8P0s2y-oC!VHqsyD23TG<6w0SQ@~NCu^zxESU8cNIOwpm5Hgr@lj&`VO z5E``OG_1dY5E1It{PFVfX^QJzOs=fOZTQ66V_7?x^q$ODl*}|HE|o;#V=gOO3Mj?X zxXid?&!Mum{X+HO=yo*xhE|(I!FTyxpOL=4zFb3z9;eb~6=i%RZk0R(qkWv}q=m__ zN^k79VP$K^l9^HXR-IQG3u~32HVI~0J$iI6#uS`@@K3^Mt$tjAu^@p$;(V_68{H&s zPzvi;1xl;-eqw?AqpMb-#2IEx@PV&Xcg3HhWq8ozP0zVzAPhYo19^~2-bOBV3|ls^ z$M7JWx7drb*({oxX)iU7urMr!yA{Jq-LS8%Tvh&CZmx!uW7U?wnN8}+WNI$Yj2T6E znaN=AM{wt5N5rW{yFpm}%aZN%Y<|p83ahYU9d~G%#EJil^FYm)9+kC)DVA<_1b*s17AeJBMs4|CFUpI^vqa%``?m7rVmhce_;`B#sEOUprP8$?B$Pa%-UoISeGo-l(j(Vno3_&M>N z`Bz*86}zur0VdVThK0yT+&+RT&&rs;VvWt(lBr-_CGBndl8#~dV2bcyM8L?kUW|fU z3H>W;B?^nt_j_ik6)mQSH6`FBHlcg9&x4LtZD*CT3~>|O!G>AQ>6!Bp*!q*wL-BN_ zrZuHsNyg)#&C#Q?6yC*){ERMgSRVFU(Nh+0Cw z$XvW!?M_}7FqGy_5zf3NlqozJ0Fm0)WpQ(FE`HPLzFG8apbx> zH}e%ndh+Zb%bb+xP75E|W*7Sy`(Hs_etv#WxMwLek#b&5Zbg<9D*r^&4-dEPrLPR= zBnQ|~)U0D?M^Uf3Z(c!7NCzo6R-g^%p{%j{>^^ML=rZ|1P>bHu#O8r}?HPMO7|AaAEY6#%Q(e+4%1%Qf@;dGb2I>CNdKHho=YJQo(Ky zL+==TX`4==wpA*lL&l*l!{~!C`Guw39H$q=9xz-|d; z`;T+@Pzb(!oM&rmbTxgAag|>UoZNSk5lTfD60JK{y^E)N`Ml(gu=|O+x?%9!3s|^t zW1INLhyL?$tfADjY6iZ<4RX!5A$i+6TMLi(pse9A)rw&%$0Q5q&jXAqtgFETgFgP9 zudfVEQd?Eykf>NC5T=?FhVFelnz(lo6-Y>lnPeSG8hZa-Lz6*u|Mb-KAH}ox$1(Lk zSM>6XmX)=jltt^f3x*0TI_QWy$#Y8uC;X-IgZ-Hz<|-+~jJE>2WIO_` z3uzeaMbNuuTeV}HeGT=k`r8o{!(|xvMT4&O9OXd@Eh-!4R|kAYTvY=q3L5g&vgV=x E2b(pFD*ylh literal 0 HcmV?d00001 From 122afc1eb103d89407183d910ac9fcf0bb410fcb Mon Sep 17 00:00:00 2001 From: vetal l Date: Fri, 12 Jan 2024 19:26:37 +0300 Subject: [PATCH 2/3] Update general.md --- doc/style/Ultica-ISO/general.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/style/Ultica-ISO/general.md b/doc/style/Ultica-ISO/general.md index 1d02141dbd..4a504fcd6e 100644 --- a/doc/style/Ultica-ISO/general.md +++ b/doc/style/Ultica-ISO/general.md @@ -12,10 +12,16 @@ As a result of this approach, Ultica-ISO shares the main style guides with Ultic Experiments at the very beginning of the tileset creation showed that it would be optimal to increase the legacy sprites from Ultica by two times, and then, assuming the character's height is approximately 1.75-1.8 meters, get the dimensions of the rhombus to be 48 by 24 pixels. -The height of the Z-level is composed of the space above the base plane (3 meters), and the thickness of the base (thickness of the soil, roof, floor – 0.37 meters) and amounts to (96 + 12) 108 pixels. +![tilesize](./images/tilesize.png) + +The height of the Z-level is composed of the space above the base plane (3 meters), and the thickness of the base (thickness of the soil, roof/floor – 0.37 meters) and amounts to (96 + 12) 108 pixels. >[!NOTE] You can consider 1 pixel height to be equivalent to 1¼ inches or 3.125 cm. Due to the fact that the tile is not square, as in classic orthogonal tilesets, the conjugation of four tiles has some peculiarities. >[!NOTE] In fact, this means that a pixel on the horizontal plane should be drawn if more than half of it falls within the boundaries of the object, and left empty otherwise. However, pixels on vertical surfaces should be drawn in most cases. + +![corners](./images/rhombuses.png) + +In the picture above, you can see the colored matrix (4x4). Each color represents a row of the map. Red is the northmost row and blue is the southmost. Saturation decreases from west to east. From e9f69958d84f60da7ef38e9511fcfb1463cbdbba Mon Sep 17 00:00:00 2001 From: vetal l Date: Fri, 12 Jan 2024 19:32:47 +0300 Subject: [PATCH 3/3] Update general.md --- doc/style/Ultica-ISO/general.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/style/Ultica-ISO/general.md b/doc/style/Ultica-ISO/general.md index 4a504fcd6e..14dd5893f9 100644 --- a/doc/style/Ultica-ISO/general.md +++ b/doc/style/Ultica-ISO/general.md @@ -16,11 +16,13 @@ Experiments at the very beginning of the tileset creation showed that it would b The height of the Z-level is composed of the space above the base plane (3 meters), and the thickness of the base (thickness of the soil, roof/floor – 0.37 meters) and amounts to (96 + 12) 108 pixels. ->[!NOTE] You can consider 1 pixel height to be equivalent to 1¼ inches or 3.125 cm. +> [!NOTE] +> You can consider 1 pixel height to be equivalent to 1¼ inches or 3.125 cm. Due to the fact that the tile is not square, as in classic orthogonal tilesets, the conjugation of four tiles has some peculiarities. ->[!NOTE] In fact, this means that a pixel on the horizontal plane should be drawn if more than half of it falls within the boundaries of the object, and left empty otherwise. However, pixels on vertical surfaces should be drawn in most cases. +> [!NOTE] +> In fact, this means that a pixel on the horizontal plane should be drawn if more than half of it falls within the boundaries of the object, and left empty otherwise. However, pixels on vertical surfaces should be drawn in most cases. ![corners](./images/rhombuses.png)