From 2a396193296cf0b109fb33e7106ac6f4e1e0b799 Mon Sep 17 00:00:00 2001 From: przemek Date: Sat, 8 Oct 2011 22:29:59 +0200 Subject: [PATCH] item_key initial commit --- models/keys/key.md3 | Bin 0 -> 6036 bytes models/keys/key.tga | Bin 0 -> 76142 bytes qcsrc/server/defs.qh | 8 ++++ qcsrc/server/item_key.qc | 80 +++++++++++++++++++++++++++++++++++++++ qcsrc/server/progs.src | 1 + qcsrc/server/t_plats.qc | 38 +++++++++++++++++-- 6 files changed, 124 insertions(+), 3 deletions(-) create mode 100644 models/keys/key.md3 create mode 100644 models/keys/key.tga create mode 100644 qcsrc/server/item_key.qc diff --git a/models/keys/key.md3 b/models/keys/key.md3 new file mode 100644 index 0000000000000000000000000000000000000000..097c90ce472e4a3d3570c8d9c88da7bce9e3f6ae GIT binary patch literal 6036 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 literal 0 HcmV?d00001 diff --git a/models/keys/key.tga b/models/keys/key.tga new file mode 100644 index 0000000000000000000000000000000000000000..5e70fa304ad29b6a10a792d6f4cd07bbcabccfbd GIT binary patch literal 76142 zcmcHC2fSXzeJA`|)CCyaoxZ6~w%DelhLGqTAqga^Q13#bgOHwkuNvJLFunHipN;)&0?~e|Gq@{tdX^+tbrCeE9J9z3+V={NM-sKk|`}bba)rA8qZl&G{bZZT$Ax z^x1aVwwluI<80ftq+Dtnu-$%l>Tch){p`)o=HAcPuCr}FBlqU~x@Noc`Ss2DJTv9m z*W26neLI&+D+ZU(bJD7ATbnijxoyaYKm6ejedt4b?6JqFQKNg{vp%;{XJwGBAcQfrrzsi4(t%dzt}y1vf#8r!RE`Sx6^Y{KJ6HxeZT<8$tRzD#1TjQr~mYyKJbALz^{St zx50YY5rB}E^s#b>rWt^CU`zVPA;&u`hf`Actp>5u>9kN^CC{CT~)b?fHm zp55}oOV54#?Qj3L|Nh_H<*G7UwmhAOY~8E|C0j1^mMiLeYTNVA4!rcjwyqan*w#{O z&z3ElpL^k1k8b_hpZ{5JZO+y$&%FHNww7WkGUUZ=&%e0sIltPn?fK_&zT956+n(=J zrsb-0_UpFawxxKdocj8dAL6k#uDACRBlTE}<50FU_Lpa1Zi z-~A>QJo?x}x88o!ij~WdX7uRMZN~iiumAe03s-&mipwurwep!`Jcb`=9`Z{^w2lH`c?a1{mNIiY~K9J%P;@%Pyh6<|N5^Vy!YO<7hk+; z+0u1u);#*a1Ap^3f9?F6U;eUR`;R~T@IANPR&P|v8?U|gr+@M%&MSHC<(EHv|NXUm z>(!TE-Yr*ZeV1H(&a!3aEMKP9RZEwyT2^-!pSNQ9HJ4xZ)vtV6D_Y<9+Shv1vafvQ zGgn@D!OE2_xAd=Cx_HQnMT^c}yl8oT7wbvO?cGi|>T|i*)~3|FxaFYb3E7Tt-^wK^ zwyKusJb2kMH!kgRSD&k0Zq2iXpSygyjoS0Obm__^OZ?hzouhEJd2l(kwBK&Iubx`s zQF&~ysuZjh0r*3Fyyo_Xr2k+wz(o=x;<1Mw`pHjz^6Zu^ zpZ&~dp4+m;{*#Y9a>va#fBReC`or&k|CY~w_VNuI>iI_>d~j2L|054Ppa$hz>szhe zY#pH~#Acmx%9*FkJagtuZ8>A+j5EvOoYPOgZ2iDn-~6Ulv~Ioe#v!(jh|kJySlQ?Y1^JsQEKc{px0KbXR%{5XSzJ2wm=*XV=RFTM2sd+xFS^y81;aqBJL|K9h0@9SUR*xye=>v<&|*7DAzNki_t`|eub z%B4$BJL#m>sne&oPMJP!w0+e>?XvajzW3eleEn-*+tA;)VW3}I-u~`)FI%_HkPXb7 zHg&{|sZ(d1ICaL<6Wy7crcZbKDbuH?qM6gC4RJ-0oSQan=G3Wu4u-hT^squGr zB;Llp7MW7nnu{)?6uzR%BftN9zgLMzd#Jm0>80vhx^Us$cZPTr)7gs_0gpC) z?4bvpL7=|Xt1FE{yjyO5`+MK}#@D}&^2mAbU3V#ia#~c0ci&xiwU#ej*juk4vYLYT zZj}x?Qb;ikzcvjF=-}7B`qg!yX(zQQRZbfA)=5*Q zAmCI(dul1`t}wg~*-0%og%2B??!h@!LzljWd0jK7P77PZnx0B%dwuqLE7J<`rny{5 z>QN_`Dnin33`=3V$R2Shzth~32lh6tojzU1`*3QQ?P({Uq+__|7z*H6=j^()(RSoc z@OY{!{d%aTM}&IRJY!l!@jXXpXr&v5d<`X5uhy7!a}OdB?sY6a=&AX;Z?REJ#@abQ?an|_k} z!x-b=ZR=b#L0Gmy{h?M@#>b^>L#}QWG@3BVEd1(IyxXldEo9BzDA(u`NS{azPN@uY zXVl*iTjQ;e+w7DY+?u`_ovwyhJq8YmD9hKCkKD3E-Y^}b8LPJ5;F-q#~x1TArsn)S7 zsll`X4KK3N#`)GImvm@zXQ2%xg*J?JRbKC=qz2Qb4_JXUT4RXHcOcFBzP=HaG_AHC)yrUACF0ES)R&?sFH7d11B~=@kBLT)hKpU$)h}` z#fzbW6OR_d#ghsr?rwWbH{Z;$sho%^DSpuooVfdLfd$hwm=psV5jc0}DOGcY1;{{& z(3CoNx`uYBG#dfT|L)l$P47z8nvkZE=ne(%g{wOW6|me*YSwzL8U3# zR(Gk&STR4vpVGi^CK|@D_CsN0d1yFOE2}%MJ1j*oM6rJRLp=J7lV|uv5x*O4!k#cE zY%OfcJz7&#T$&TMymvkR$WA@R8Mwwb_}bS{NVDs+6g&Oo8H3G{h>tniL9Yzr&>5#Q zx;t@*BmdOnk9W*b^vZ%A%uzVBXgi12UUKn$cg2Sm0gB~#-T${7+Ew_|;SiT+VC`CD z>Tn3Wkk!!)wVs9wJ(W^9V+4whP#_w{1sn-&cq@%#jz9ela#?A=sU~htRMYzH>|t64 z`99q`4B-v#q)VpdFi-cKV)H72qnhG>DC9TxD}GKX@2RJqbaJ%ksr z#0U=mEqnI?l~>ku6i}RtthsDpKr}j-HPsq5ta`5H+lzt`$CcqnmGbPO+ly}Ek!!6d`z?I6jo%VYQ>lfi z9O6M#>2W#tRKg5s#;{73e|?|Qq@g=;!eP2N5>W?hk$2(4Z&yoH`Jj=si1Z(Fbu7`- z#S-Cz5n&xVe5jVlErYelnu{;0W@S4c%8ftG5)E={*(f1YBGO%DYql$pzEGiILVxl! zWi-MBJ&fxy)V7Rsg%*}N{nCk3S!o+p?8H8zK?y7QX6co>52=s79Hm9a|TKwUmZOSxmY=dU?Q&A_H z+VAByy+98g%5M~UP8eo;P8SWIF= ze9P@{@6mD_&x2l7!OZLeuPrnFu5jltU;Rhxt;;cVMqsvUYy`dOUY{(fp847v1D z&&-1~`d{GO?x0czGo%yn#JMeT@_=;UDW@!3xUduOP*FO}#cc;XJ22$-n{N8wI=3y} zZSP>;HVhdBT~7)_ino3|FEQ-ocfsP5idGau+9dyEeJ03503}?_C3-L0qZkCvi~J zW2K9rzq(m5LA@Ps#Pzs)unkr0MGy^qMi&ptt_m93I2$Vw8P3=x%+>`B%N)zv_Tf5eLh+E8%)?{x(mG4Wx zHB{lb@>HmmjvAcn0`W`O2oskB{dPi6P#w-ZL7K%fe3bZkwa&r@14bn z=%OoiKH4MZ#wL2D#}+qo(YZjYg!$ZJxJI9#4-F?>3r-DFd1aM>mkfR8fY^!GP`XTCw_E@`UD4(#%18 zi{jP@kBiPhq1@PKJ6xreSlKD=E@nBC>|LVeaLr+(^Lop}qh35A3Mal;o*F{Ng9=l_ zr9LMMmz3dOMOWFg6Ou*$bngg7$|nnCqi8b;(slBbDG8q5O8|ZrpQy>ImBd61pSC^! z)A^(ql}|Q?NpRE;Tob&5KOR*v4wuDelI4&7s=c1nC3Y)>qkp}F*s}d=x zB^-^q8|tChVoymmc~TT;`mL6>v*b)vYz?z&=BAYBv@Td}r>o+rM@yov-%D7clix*S z<#hbgD(~NZ>n)3U4A83O%Pm9NfnY@V57waiAfb-N?woG*crY65ME z&MTivp^iPwMfXIBMfZft+OLLM&neTwgQAgKQ7&2$9rFxXrpSsXaP}h%MSFEuILc|| zL%5+VV?A5j={F#y);zNY8YK|?w?HL5G-v*%jKumc4Azepuo6CYLs6YSJc`Qk50tOeEVuyVN864LhO zbo=3LHJ6N1>3Eo#oItUg?YhFF!ax^_j40H;VF#q5uQMmQ;XOwrJbM?#7LZ0t)X^b> zIrdW~Fc8qhC~JgcgC|DAvG%ed9#xhNwH^9!V$mX~cQ{sEv1&S>eDu+1wUWCK39MMM z)^bDV~87$75f>L*5f84t8@lIs8y*@oU)=b zGE4wLJp*6nB8OEz)bVbZR&`xeM+TWKt<@%%5Ivc?3-3G$l@-Z|hA2(ep+pcPYvWz9 zQ&?8$T;{c>ER}RrJ}?pU$;RxQaOo*E()m;ac>W(G|PVkNZ2ZohR$jA*@tYu11U%VBktjLOa|8&+8+32q3Gtm?5SBJNde zk}=7Em7NS*C06uWv{}5i_VC9|%aFzuDqEHGt5wo8Un+4@b>SC2*R82Gmts7-)8M)YDZ3sLy_NYqh3z?)R(ETOO^``3m!r9Q zY#lk-cFVNmJw+m9A3SAAXCPEjV%v#T{r}}lEmhyaHEXgG9YYz{?9Dej#FDz&?wYM# zLn&tdq?p2YRbujAl_kOlt1hb&8%!*e8bqu+2NSDQxG+dYktN2$|wy^hb5+RV-qS? z zolVsaJc(PhW(~KfYLvn2#W=g_EfZ`D2aW5_Zqe!sFYIWPTW@M>l+~-3En0N<9e2n| z6`n9vnUGWRU3s!cKyFWO4mMWUv0-4K`rYoEb9B+)t{WRB{Mp$w0{p-Vkodr+xUbfoJcP5ie? zfRKz*DJmp$!qH5nMbj>GHb)hLsE}@zI?98F$W8rQbUJ!6Eb0W+JF2L@|G7d#SfF>iLrdX(s4soijVRYG1G)ziF z!)zx@(KiZY+fF)^BvL4YX>J_ilJV6BH6RT|*Ga7xbK(jG+TlwkO+to*Y`H19*bZ&f znU<=yI8|=zCMX_O>|dpioBl6)`!CWovbppIl+GwuUd4qdv6S+3!PM%K)+HR(2~I)xB3;QY z#&BdP9TpR4n^7;1+>s>P)k3V zShJtW7Pw~RT@ky{U<+Z|i?r*s$zZ}LSVp=Tz2Y6KAU~q& zvR^3E^t#C_Iiht^6+={98RZm@o_cTlyc318IOJU@lsq<;ocps}o3i+@iNa+SGg(sd z*qx>DhQ7KsHB)VZYyj0Mn!iTbjTv{Iv}rBqiarpmadz05~L zC3+?oLnGTZQ4DuOD%JHk>nOyw>8TISkv+k4bfHo#VU6q>9yM?Fgib-AE{kfr!F38G z{ApOI$iHRhhi36s+ZlKlMo~&%*Nor|CwXW7dY@;X84lI<^7)Szn1Q%`06$k*j{ zS{TL6X&CiT-T;HjPC3MPGHP)6&3OGxr4$pEm7So&DVm@X%F>bc5)u~8IUHz<=Wa$# z!OplDEJLOqOhfVw^187F$5C8CMU;An%YG-Eo$lZ4) zK;qOk6SeJ$fA0`7U-fFuHoslo?-SBVoIIZRkDOtO?`CP;zeOfC=kiR2AseQ zEow2IL#ttR&d65X6i;v0h9-3epiL8_B29JXjG1(l;Zm(L8_*+8CQVcZzi6bQucBz; z=VX+N2c2lF?LkvAnOM!khNMghc?`Evj-@RAlKptYLkmxvI@FZz3?fLn7xy+ri;~gR z?%I`2HZk1qX_tnYgW}hCXOqruUAj6;+chE65WE7f^?kiDO3QsqV#n9|KJkf9Tz}K` zykMUw0htWmSHAS6AN=44&pz`EdYCMK`pGB1|K0EA74(f87tfn_@p@(|_Rg45UZS5l)2rnzg3=2Uscd^^op$Pa zn_;uO_g>!0)M!-z$6?-N@6A!E#6eon+pbl)8F_O!Ca@@;uqI|Lx+iMPag<56qn&Lo z7wv>bSfWs^I=9U@IhAa%+vO>_DY~#L=WVZaE?nHC^YOXg(>@NaPBO8{8Joey&X!h4X`jKxO82bnAyN_4%cYpVH_uqZj1*=vrm^JJC zl`GA6I>R=hmtXt7_Hpy|*T4DY-*w}2TetF%>v?x^$?v=C&RV|p;QjaY)+^4Pzj8(Y z{8?uX-Bfx>=ajr``o?oth4$Yw;bh8+gYug)0VPz zu1n!Q*N5ov{4>w==hZ^3e)+|} z{HwqGn;-wpU;XH>zVyW}Yz1bod+c|C68mq+ZSUfS%d>h5!7ydgGw;zA^OVvs*XU@-5Z%);pY2lP_@G-+Ji2 z`-a#)`rrc$-RHmXhB`_?+s}Xg4R3jP>SgTJC?#ynV4?F94?pbN9)5kQ#z{KOexFk< zCx+MaiaAL6haU8)54X1*^f>K~M<0ABMf-Es)4Q^D+;VkDy(@)s*Mt3ZVmGwZk=-tz z9EqCT#j*MnuEqT73Ze09Hsp~9G}U8Nue`E(OiQ60cRN-^pG|jZPdPh~60T<3t(J%G zyEiv=KYYL4`&z2*x9xIcOS4kvdfVV)*PfaNYb5^ZdwQ}Xk^Un9dj+OQ=yzs&` zYt|@o?zuv-6@KmSbViwa^_+9gNlk7W;oRVxIz<%ZGhH%dr|PJ~OM6wTTzziKUTX2RTH6h_UCr^pPFsFaYH4*T4IB z|1R79U;DLR>$2^$?Xk6Kj@oCt>)C#r!G&|VwZl!D9Hq*f&Gs7G-G1XYe!~d+QqNv{ z?X~~@`yX(?0T^K4BC!APAO6Gd{Lb&V`kTM`n~M3s)IYo9vgYn}w&fWbI`mh5Pwz)=4K`TT}Y@2MCQM~oPuHXliYRd;uHKHhh=e_!$M<4)BN^=XC{>&7w1 z9K-X1{GE5)@!|_Fy!z5hFFyAiCF-kKpL^{!-?4h>#TTF5y7kdV9=YqzJFma~`i&bm zA{=TiTeeL5e6Wr;tdfHdK6w22@j&_1r#=M^-T38S{$*q5J4Yi&j`ZBLW0QYh^zWA( zYo_*UyVB#vjhixM%A!S!1_lQ1yZ7FgJ^qzf$l_?*r>hqT`KYzuF`imW_&p*Ha zl1sRTSFT_GnJcbfrtiP=PG1Lk>G|hhec=U7Z@vENtGmAZ;)~Bc`|RV7J$BFCci(i= zO;=oTg+88l-g(;0EI`ncH4OA=*arVT@83s;4jpP7p!4tl{l7o(zyqgEo2H+aU3S^S z4?pbFT`#}z0yW|@PTJr*Q!9OV%ZHzqF4d}wSFXHx)v8NYt-6SmuUy&Us|-EQcc_*v zTe&D7jS|-?-esmxK8`t@b5RYnGE35K?fa#9J=`Ug(UA|yJEpz^|Wg6UoU0SYlt2En3yv|;@ zuurMcR$$nu+3(85i*C8$dJMVx>Z`Hyw}1P$jVIa#&wShPb^k_bzE14B@4krq@Iw#z z0+p!=N&Z5Msi#gk`shh0wg3KO_ubd;#4%%96UUDI z#e>F=KVtIaV-G)k>aoX4uAS}$@)g4UvqgOD#Css>j%(qLGny+ zcFf_2A2?>rn0@vcx8HttCXE}{fAE9}T?dUD*Gl_!qg!td*k_;C0ekQL(f#+@Yrj4B ztfgIY!{iAQbnf^gkMv?fjrBYXhtlxbvyIl8i!StizbBu3a>uIN*Mw?MzmFoYb2QT^e;W`2o$q6T%K=DvW96O9&IA@Ny zKr&o*Y3lLEA2eaY0r<7&p8M~;cST*3CYSbWZc885=|Go`v>bQq2$0w5OiwN3sAX@I zj_HqkYbVC;x8FXW`qYFmWB9Y=$;h{O-NTp8pJxg9Yp=e#Y11ampz?RyZ8xOJhr7t{b`|=YILhXzNa3# z(5JxAN#n<9?BoglpWxWefK58k(t$nnKy856_QNMn_QdngUarjx=bW`@?woU%FEfku z{BzH-vUCU2;q#+l{s#@;=HCZ*g8cKZzYcP8v#6*E^2Dh>aO_wuA6Mw=krl-3Oqei` z=4-o6a8DOn!9Fc?E}(ZSmd0xM(9-_Wi}B-YO?@`+C*TM*9=l67PB{9gptf`=_8S3B zNsRa6i;q0~@cjAnjXa~trosL1b>TVxcCTaLygKR_a6NssPZ+g){`|`PvgH%k^XFvPdFTC+a#b0bo;a+^sIU+UVi|K?7 zXF!z(fj7<9+A5|QhnxxMT^Wexc!~GPH_uhN2#K>Tu;s4XAXZ-spsTKxLo;>;X z+is(bGLrM=ktTw0?vkaH5xnSY4Xz+-5_&O9M1wV=M-H1b>5z#NF|UQx-TY4ti3MvZ zG~BIvt<#_YQ98YylWMFeY-oBGUZ#iZ3oHgUy(|i0!tS=lP-Rgt`|T$uMeK|2OeVxQ z+WCP-wZDbX%WQrq!3} z#E^r=F`MIb&51!B>~lEEbz|-qA3U69gZbnG4MccOF^F#-bM0xh zzcPNC{Ts?Qk~HDv=ihikJ6V$!JO2Ko4?Bz&(-gpKmey!lRh>qIf#j)k;YeRx!Q!_0 zg-nYX+D%VM$OXl{zR)LFSFYqQshz#UcsF6Taj3+|01hX5`sgvWvz6V>MEPZ8KcM5a zqk2t}19V}oR`QLA3@$K8tX1q&GkPG~baM!-oF9I{LJK@x?eV%sx})BN)|- zmDR1LM}<1s(umzuU+wf!haE=0^TajUu<77cn>Jl@*<~Bnt`#e+KJPpltaO<(s~}I@ zjv7lNcKBxaW>umbmqXY#@q@%y$pYCcTw2*+14{7<8 zOBOF*xBwm1eb+6w+#dsg^UdG=-Pd1x?XgEiYL9H)vPCS%&`=D%J1Zs<8Et*)DbnvV zLcSyH-R?`J7N9j019+Da;=$eSF8$@+jT_smuan0Y%Qs;{baEg`cZVGmD8?D@LyJ?T zmCp7B1Oua~6ZYR<`|Z!4b>`WN7A^q7f(6^2eO3%9bmm^``2W*@FcRBEqyo#&zxJB( zp?D1x)r~pu%y9p@@kd8ii4ayVmK*?pig@7eyY=|ui!bJs(eAVeITbJ?m*82Hgc=n8 zMHgMfY+d{5Pv3F-?Wp&yKllT9LlNE;2Z{m|7_a|P%0u+E5$v*4G`VXbdv}1DPq z_xcWvoPbEL>-8vL1ri;waVtES5xrPCf9|pc^SQH>4zU)TvHV~NBv1PHF>*jM#Mi8? zgolvJpax+@4WlgTgd^4D09IfDZ#!fi>%3^2OWekRNGQcq!4J~LZ9h_ zs{9(NbUet*)EXz)L)aF`9DD4s_uqd%DB!wy&TOBBro3YkkIHIxX;-c|Ej>5Pfaegx1Bh4%zC{UQN}Gam|O<15(CY3EgGWRmE2`B z*!L`ILfO&!Zj|=^ET$Bdb@hmd(L-;-$_{tM7fCE_0n8 ze&D`k^XG!xTOiBk$L<}l_g<>hM{P9J#EcY=+33Ws?coXvrLWZ{j*WO1dN%_*VSMOc zgu`}}TE_01h#01XSUm65U?G;=t=x$LO-~>5FS!S)6q5MB{rBH|-F5on7L+)2(!~Au z-fO&`GE)2RkM9P(29~~;{^Ik`Kls1{@Iee>VPvmUSu?U!p<#dG(TDX;H+kXi1{m;k zle^z)dbmyx%Xk&0MnLr`W2jT?;P`{a8{8(oE<`A$TXuI-Lh*2*I7nmm-Wx#YEnl{L zK|+VM7hd@4E3Z(-#0vEPz3J?S37RkT_xJa|ylq?TnUHn)avoP<^8Sf-_S%b^L_Kqn zI1txga}8zLYPH~l4{$S}H>hoNb>I&_{P5dvzukn*@`dx4&YQbx$zn=&-2VH<1+3ld zErV7=k8%CAzvE-&Is+T-_UR5eF6uq|QR2yVbk|{yAsA&47`USjJ;dOU7a{fypZ>ID z9JJ*#jKH63*Q5S@NZW+l{>sMZUVoi$g}juj?h<$MrFy?aj1NM^8}R$@y6e?fUuCzX zoNHR`Ce+!OscA1FTpZyG<5J=0!YX-v@g(o@gMwuV^a8m~BGmma>avQ`Sf7jw)qA}!xNkJkg*;X68)FTsEgNK_w^BIOoG=rnJ>sxmTFZs zNUzjd(;jRdCz#^IK!FoB{+R|n>|e5OhQL6`Hi(6wKsm9adPO$_$kVA+_W!)4OOey4 zl2m@0{J!zOLmeY($0RLYdF2&3d%cosVtX{fz=wWSj8xUD#l<8>OQcugrs`QYv2xLw zZi*k-WpFZPJ*CIV3q;ZEVw-_G-~eqr^5BE1dxW9~uetnkPMz3L{(Gon2s zm@PI@1zL@FM3b$TG^UQytKm$96gaPE=>nO*#TLy}aZMH}p}Abd_=cn7l69%-vBWuD z#-c^0bulBAQr#2FZYMG*X#iFr>0vU{d*`jUTy@n|>=_Ab_u>O6G=2JXGi!iHJilYh zqz2*z+t}3cczEbR6QdgE&u1B4fAy79PC11QxhH+#nMs_Rd}7JCNfb;8s}2b0X@7j~ zv~Hjb60pm8+{-q@p(7C?MJA2sp^q!h=}4ukc||X&0PUwEUU>d_Sv|VF-TWQ~N1`?J zYNWpx%z5|$2WWSmGXgRYt+^UwWcul`#~$Ns(VV66&FwG0#M*g^NhkLQSvM1kM)sr2 z;T&ZXrC@aG5ZI<*;wx8Osa+k{t%gbCI?3-{TvrShu%z{rCC9ubqN?Q>fZZtZCk?ZP zQ(l$q(jk>r+gp`@r79QxV^!rA3aneVj)+k!rB^hJDLQ6CuUHNKcXYv+F%j-=ok$;a zDVc-XD|Ob>c9K^ZR!>&|?CX!~A=a)bIw2B!a7puHptezOY0A8LH(ht#Ew|hvQX{wN z&V&BN1rp?~U%y_2uhFE+yjT_AGDw=klKTzA=FL-+ym&2QK$%aQZzonShBC)6KSV4fB%i3lnP=`oL0jgc6K{lo}6# zOz;MH=?n;2>2wO#?Cs4r-E`emS1H3dopk*1?s9MG6x19=H!dXIYy^_Y!Du1iUnwIox*)sj$ z&4Mj84JS#eF~B5+u*vRlFKFfabZMxHEF5_D*=H}k=mJ5xF3B+O+tYZlYS7#S)agc` zP8V3zaZwdcC0(AGg3-1*=}eYK?7Oc#Ehn3*GB?ZNMs2FJ-C|sC$WBZQmohYlHmaf4 zV_ye|iuO{8-}w61)!?o)c~|}t?e^4@Px@06?&h1i8?i`BbW&TPX-h^TerQtNU727} zdz)2l9Ra28G`mg|uhW;dCp(g2P0jo6i{2W7!BX2yJVD2Z|I)B(IFl)1V?r!)zj(1u zlY5QH(?;l0?F?16{K

Rv?4sk%^s7?rDVEiAh*9j1wzK1iSKlUQno_lg=e3Q3@lk< z=9R;uD;fC_cw|rvEAeuD>(ft*8ENE3I^Jh1?JAbvG|(^ZJ9qigLnj?HW}n2Mx?(6Q z>(i#f6rHO%3Qcq-iY;?t+8r@btPD{#p54a6wFrFX)3V*w*2Z0-Vu`mTP!B(NGNw~j zMuHAt!#SSm-vj)MopM2y6&kQ>B-w5e;U4jyTq*(XbgSxVM(J8%U(wUk+IqUG$D*eXn>;zXzT_}p zfB9vTgVK&}y<5*l+42)OfM0#{&HhVQOSO?c6HhU!rE_J1Orzo$2q7Bh+CfdT6@n@m zj;KGD?Ka{Ag?=TJXst=(CtRVTOz5_Qzv1>POZ6c#QzT~)^)|U73d_T_e(vd~OKx$^ z%v>-SQg@x!6Df=1JlEeor1XdpB`G9uZ-!`8>JZt<;qA4T@K@`N(v5=gJMN$%G(0hD zvPJZbc-X9ozn^Etxg-i7!D5nV^Wxy9NwJ=(wy>^>Sfzp!jo|B0(Iz_6tt1huQ`RNj z9YBX05t#u|7qw9&xMBvJ12)|)qPzIxL}IY(OFLNVX@MI%WTI0Xs)xop6^+UR z%gnEl)T_mFWa($$bNg-AUVE(-mSpnQ^sOUUH{N)o#lXTn>spZaq!UgckT4EPwMkKO zS{VzLsjS*~UQ&_|vGVa*c}dYDr6YBG-I12mo_5D()GFE>&TLR*Gt_mhXrl-m4Vi|Q zp3ArEyjd4IAj5mVe_5d=$18PYo{BA}+`LF3Y{Jva3!6#K8xfe?9i_BaS`tNYjcZ9((MR zV~;uR$Rm$A;)o*;IV4m3mbaM2E7`I(4Dk}(UU5)+(9qI0VbEawh{Ri>+5Pt8`03e2 z=bU4z#ykRL*y%mfEMIZkZMRwdLT1Ue=kqcQOuP4^JmkQ!q(mbB06vwmMcv09en{A5 zfhb|U834bzlhDpT>nu7Np;SikfUoveBTLWaSjHG~ey#rNwpD0eXtAJWp=lt&p#k&9 zM6J+Sx^&U}`EzHT<()@w>ncfHz@dZMh4!7iVzht(^8f^^TD!;tAPRqpLG_h=G|0L; z&Ml+e0RoXHPMm0RO_Yo+WF7LDqtY0-(EuTy*d)gxQ=wyK-Y&i1d~0xzKmK?uz@r<3 z!@Ej3sXFAKgXm6qZq3&B0?1fG4^)SfCX6>xK5fbgXIfh<31%J1k|pP?Jp0^p&N~`iqltc!?Z};*C|`C6wSb;>m;wCBdF_ zDeutAD3iN1CUF47^#B>gwIXkv|C?^SvD#egV~T1x-b8}#M-wFR50d(u6Tfos#Dk7I z>Zns^%s6GnjQOU>q?;EnwzSU@6TjvWkk;d@*W$HVMlADo-Df@nor^EH0D{LKb)=!| zgu@z*6(L{IICVc6%Q%;9RQBE1AaN_GO7D!BZex=gf4-;+qs$Lt-Iy*NkdGzWT1`_$ zSoVlwD@wW!vDrQyTsS+LK$llvaDkW6ta%pPn;GWWu=PN?HtNF`<`!tLS+k~^?FF;W zbl?10X4yY!0>NWS#EvUTd}Tku?V*z=A9?uU3pfhroFn(o0e$G9hvZT%Lv5L*82zTN zP=5EjU;XM=pL^~(i=-cX@Ie>vxZ@7X8LqtIiu2A{<+DIh99Azj3b$f}Brz!^0FthE zHR^=*#nL)$>FqC0lq`Uzw|O(1FMut)8kV0XmFaLxV@Xoq9;v;=VTC?>bILJ{zD&Mx z>C!uIy;UOIYIX*fGz!u&hhn(`M7t6&6onF#%2$_7Fw^vvFaPd^UKMM52$U3M(*`Ju zdVe0l(lVx0 zd^!t^LFUFV>LV2^gMm@?*Z7+iq)8}D8l3=hA~+lr5VDDCK=xed0{B0`ng0okgbi(n%8c+0K1j+1OCfpC6Gzo)2 z#13V?vZLT<};rm-IS6A*XOQU#cC3$@nr$8ep;px?M4IX zu^msb<5!qwHYD&#QatsPsWY)%2R?4Lbr#;SLO#hBlZkXX)e`erJSth+;*_d5$)1m! z_0bjXkz|CIPFF0jx4%qJMn1RMJFbNzn8tI_Mx}LjoB|EIfN~}0TO(+U zibG7{Lr9opt)9qZ?wNVjwazG#H}H7X)H^$<$Hvaj8@CZW00YNVr<|7CXPh{N7hOl7 z7}KESnNj3Ju%&}g!>FzXpnd@L;c%C2%eF6DfQ_zz5q<(mB_W%MV}Mz|#&P4lH$Fkv zArnfbBam^S8pw(=%cRk=WwJGG$VM`6*4118_F1)*3@LowVr-xu&859bu%_u*Btp=g>1TP5f?i_HCj2L1a6^T|XC%Gp@ zAYw=_+q7x+8D|_t0W!;EQ13X{QDBF}TOCi9sF;vz`EmkC(B!rF7Hy=mM3V)xrjXs_ zt}WZ zmaQ=pX@^rn^4Vk>268+$8Lx{kywF!55H%3hG-x!Uqv1k4qA#OVO{6Kc?W`)PP4i)# z9)YhO>J?W6pDY`2bAV4c-t2az&dRV@ESl;2pVhGfYT;W7gYM8^YIQk%2jl@7(fAyb#b8a zQX^cv7U@@}$;+7bF^W$oUql6wN5Oyy()w%6)%4mw?bixU46-MLE6Tl22bqFw6j#BE zgJcv%h^>n*!Uma9ud{9U$$An^wS&*LFop$5!({Tz^S~+)KoAZnrHpBYsI~VeKGEgT zEg%h%kf94*29c~`?kCsrQOe>9yRq&)Re8S?wCJNgVC`m$PL)esSW9fp)Ip2$P|<=4 zkCvCmwQUJnhdDwAbc3B+otDYTmG@tB%{9dHl1nb0cESk_bnP64_CQZ_DG3X}s#sc& zP?MJt%K{zuNKS}@a>q?KfliDx=d{!Ks_t!j6je4G&Z#y%@394(OTjQYF3RV_pecr6 zzd8p*Qn6MWuuX;KB$6c&q_i`BRWx{CZGmygHt9zdZNkIY(Sx{T82X1k<5g8*!%lY*04Lrwd4-*wl#*|X`mP(qJv60m8Z zma}VF|7jYlOh~FyIM{|UYp*$GDto1@yQAH#Bg4SzVssD;q)pIY0PC&2uVCil(CzH6 zS`e$i^S*GdnGciKDsP6A5XLQTu3mm=YC*M5HkIHrBjdsz6cJe_po1ZWWQUEo1x(AM z$tWZN>9+->VYq4Lm*K=i(E;ZSk}cx9J8dq8=kL<>s0=67(V)&#h{PPU(v)0nNfAm} z=Sp0vE0vfK^}+;15pz4DWfI;DA&D@tE<0Dsmah|a~lHn%CRqS)aNL(Vh+iq)Bu>fBHWL0f~05weZIbeA@kEZ zJ#Nji!4d4WmSur`dFve=rD`j&5}*vNc+^hoZ-e9z=mEtEze>|-V<^$`nEfC)Df%;4Zq0W4eo4ECvIMX)r=0kW|Qs z`Tz(&3`3_YnB*AUlqLNno7mG@0H-`LR2oGN#hH3u8s)+ZE-*`wP(y=OzuYCdwK+SiK`Py9=Z1SvsFl z%d}10EG3JmhmmAD@E~Jv0XDMjbVNGKuADn`;(-*A9_cT>C88K&OFs3LwY~Y~o6Cn$ z08!C%r3JDsWa|S~7Z6*Z8&39Z*kK+s`>Yr=Vb?(%sO_9@mNS z)F~%KW$jX%4nZTHWan|m$e;@?Es?OkOHFJqhvtvl7z*7ilc6K5RzO1GotFm^x{Vo= zsfCab4t0rf&2uM>+eKWtisOct5esm3I>5z)4&k6p62|RPhqYd&t?6v-X9sk-nhP=o zpB9lFiVM)vZ+c13G`Iz*e*NqLRK=+Us9!}-Kv&D{4h7-GErB@fDs2g{{0;i4!rjhe z@6;(%z@s&O)9~`k2|VJEgENU=Rzg}FOBf`{P%Kbo{deAZ*2*mXGaWR4zGP*~ghO1u zh-Zz$CT!#+Soa&z1r94dXXOr|0<&JwN|1=nJun?=#s4>(PWIojp0$&=>I znPdKdb%Ysnt3P^3$D4l9E7Z`vKFsL`RD)M{#jE9xZh*n74_dzhH1QPNRpYqQj(1`o zT$qGvDshL-Iy~`&6RI;+8>v0IBCuyJ%@WA!$aZ^^%tQf3nrdQOf6yS-B%QoHW^I_2 z1vH!&&IY+DsaU^*4Xyx!H#e@p6?0&Jz~u(3f}l1y8~L>w5$(*_CEy53rh6tJ*UT9+ zUU=aJf*rei4*E0&i+{-_O=WRn>H3oov}`fB77tH~kI zWdTKXS#VXET9g+Y3LY2(sYvGrc<}1R#XQ(lpbC538C*_287{naTtNj?!5bX+OHcFY zef@KF5Ao1BKn+&vJ(VL3f!eTiS6E^y-iJQbQv(RBbx{580uC32n|Azh$4;J*@zMwF zNxMeUs=NxX=lVbi&11&kKY#9XC|KVm=>S7P)!dS|a#O5$7;e<>h+UHRwab3N5u-K) z0BTpl6YXzuPU52|r7p-sQRe+?E#Z4}V_$#$b@MbRqRobt#n)z@0(pZEm&`s~Fh-Ap z4&wB{qXN^i*K(nSFx~ISI3=_l#e*eQ!cgIY5^f-XRJrk>^0gymkEyvavE$CA(Xm0L|I6GyBBN9Iv$z;(yQr~il6p>}pTb_A_)i4u6t4n3Vm1`y_kcCvd&IOqkHlamO zLH&&e)sMj0i%PP>1XWc@;hnw0)2dnnDx5q~J2WFooG`X!x3i;I^(JbLC4p6A8Is}4 zdk3+uT?}clyd0SQ-yZmMv&s&4u3@?oKA~yi(na8rI?(C?WCK4@s zn!1sF^5n9r(YES2K{loQTD$26qG8gJCEW#9eve){sut)2HKDdp-@f!WSC61v{=EGZ8vmH>9!!;OAcvIz8%Ky1Z!3aRaiv=c2L}`HXl27saN$P4D*h0 zBeix|hpj=ixbJ?W2}eSg1j|PIxV5#7oEn~>6(7qM5b=3g&zn!WSuQQ1U{QkWCcV6v z0C&!F2idPS$c{#0Z)o6w)jZy|LtLyiH7L0Cb%3bg`Z_^l*fp;Ga!8t!0J3~dq8h1a zi%Q^~@y83`-+1EDyZP4pBKG4mK()--45-4J+9F}_PMKuDL_i*gdM^_zyGn$u0(miGT+soWP zI{Cl}yjs%{+H0~kIqM~h8GRUYB29rgDJ>-9CE{DTD3|C~P-E~;AioLZy#Bo_`)3{) zF}%89a?#A9*V_yY`qKEdDdw-zAOJ^I1mu9*wtTT_;jdHuHs#&sc1#dYYc$@wR%K7# zTK}Ja{`se#dWxq+qmucc6>#Cxje~eN)+|0>s1K1UmZAL-b7IZ2-=GrVM0gV|4w7 zw$TH*FsN|W9SO))17bGauQU1t=LuuS%sTT-AlD^QEE*R9F%hnfb1ztEQBXH*j>5=E zZW)x>#GUxNYX@StaWyD~c>{=55ps?B#M7=$!r12!EHDYu;?bXi^p_i?vrbn$P8VA7V|9FaZ*?xwfQ*Sv zXq2=?dHs?&1yl=h@_JYnnyhnJjT^`vSJaF8a8wjaOh(CFL?Mr|fB0dCO11FO(Mr%l z7gu!2JB<2J?j7I`gOkhTyyOPvU}na`rkO|$^+$tIImD$#wr<@@`8Z=(2#EwVf=E*_GCG1b=7)xGsEqS1SK5fb-## zeA9tz$0`ig5D2}`o}Z%Y0qmjPYm4U+zreeO@p}!n^Y%SCS8TfDk<*{p8hSgUd1+O` zQ@329+(!=_H_oa^&W^a5680;?;!H4b#<(NWRj@k@t~^9bezKM_h2S29ZyzK_VLG+# zmy+P2NW{ucsFak*L?pXB``fYEaC&C5G%*xP%!*|y?C9CBb`_wGi*2}P7dAswrD z3J{8O?4!x z1%?V199HDe4S0~F8iexd@rDG$hszvsg+;B-%hvG^Fs?*~aOh!L|F6;?S44fAEl zd>ggA*BU?_M*-wG3CqC@JbN+YH0Qh(%Xebne+FPa0XC{ibiB#eUpK#Fi4mJ`4H93R z$^=$f>Qw}@tcq@buB8`dAcI~5Vz(2DMeKv)kSe^yR%j{kZwY93ljfl)(Oq(cI)@U) z21%Y!B^~u9mIVvwTI9Ni$H&U&e)qo5NFbOTBm_yS6}sR4_P0I4{XD4Rjm8S199GnwGwgJD&|X;&Lee@8#SYT+Rt zoW;dN++lZ^cks}U;&#m9;6RMe3M|F!6J|z+v&5uhsNltLRFzs;OcRoPWsHeBfooVe zXbcGCJl`*BB|ZtLSyNu&ru{kqRv7&jMuIjlNBFZ1vT<5=Mpg#O!Z$k78%2Y4~|KL81C zWEKseABNMl@Iy;VfcmVsR_iV|qcB{pyArAuT56B*BC?VOmBg_fhw!mOBY-uS;Yb5v z3zC7bZJZ9A7#$FE9}RE-xJx7R#gc#scon>6aGYpgpZSim!y$)G=D?P*ut_xKWuid-k}b-P!+UDAOPwyOs~})G)a)#?#Z1 zX2#i7EOG^sz};XIJJ$nYS|dmH0&hNjM_baI1>TSuR&oTdz49{Aq_eO$*yhv3yTe(E zOHPi!QG+JyOnk;sos&O_<2`Vujw>fZ+rh}0ZcfS@Uu&cMYObc+3A#EGCg)sHB4Mss zhD5C})=EVS%*tjP8!q!aVf;88ZlUZiiMsHVdSIriI|^eE^G>13rok7u_{)=U3EADk z89x2A(+-(@@IhISQ&mNNJ%T9)i*~>o2}(dd+`a~SxB>ybbO2)mW^o~GqdO|f0X!sk z6vfguczMSZ(M$q6>0L9^e7r2526^I8mo$e^bIuztZMNS2ej7RN0Fil!-L^{J>rh1y=H z!g2RTqxFQbV`aLvZ{vmyqIv3@(}16XD(VBGeUR@#a!1riOPOKd&D_ILM;$n}SvCQ> zNL2HBjR*!1k)0;WYsNjy(0GNz4~^(;dQg0}sN`WVr6y1r#*Qg-ZO)7KF^Jyb97nwU zK@@MWS`KdYk#yG$S6|JoHHB&t=QRjF*AUtSgm-LY=n&#_ufKNfl~*A2{8?wx7cyrn z7A>%np8+HxoLfy!2f_r+)_Mnp31!;0qT20r2&?@8G#}Z?g0K$?-z1$xP9{+SNeNT1 zOd*&!X&hlHSFVrV;MaO3f_&VL*}96gp()HK{duEfHE&*XqP5&Z_LiMNvaL7 zi^-OPt6943v1?CN1K^9nEBOxFXoSMgG68Ll(Yp);n-}0iy}k!6x|2`|KcDxn`5OZm z%hi<@;zRnI5SN^HE_L9AJ}}bPkYthNaV!K*Lux3Ow^45Eh z%S?ahI+Pa`Gjou0W95^q=x9wn@xnaxD!?~D8-dZ1}A7i!HFo2Xm^zr zo;4&Z?t#lOOWkg0Moz3>yxSlX6ID>M%~xK+vFJ@Tk>cZzJkms>No5&+em1w2QnKiS z3H$B6x2e~%p!@)A(O?bh@XSuL z-l3q89BZa%yDZTzKCTvrn-OZal}<W=FUOOYhU%tY89q7jE4m}wN)_}$nLDv)jW?wN&)&d!ITtqAP9=%O!t z?sI%*mc(nJ1TskFk8R}ZDJ+aPtw{*MuzbrOZuDvbnC6wY%(2P}I$@M}UQ{0$h`{M! z1g<#x4nr(gGVEHEyt9p880EFQTvpm|w2w*a!jAP2ifYP@QT)Z$gS0Fy(e(}PM3Zvp zwz6o+E!}mH@XH%p)z9=;Wuv-E`67NrxGslD-mbO|Er6_AWw8tC@~sxL^WKa!T?7zx ziSziffB9yhRWjbe;uuH{_^zPWU0Dlqg*`YVdF(IgXiv4eFsWw186#cX@cL<~2={W*I#*g{n|BLgt=#) zL2yj{ke!oHoHFH@qu@@tShtq6`lmi+mX}p?7?=u19@j{XP57Z@x@1RFqg+bbEJLkN zJ=$l}93=%F)&z`h9Z&!4Mg~T>xt^&z6(nWd9aRjEWVhnwd0rH8gtjd`Z9TU>q7#%W zFk{DB??iM~EnD{e?|o0d`ABv8HNZrC@`)H9J+S;hzKtLL{Ik!>aag`qusPFGTd6JZ zm^PF?;8uB=?(`Wa(Zk0baX6QUxksTo4*@6hm!uX~TSTl;6H(F>0kGETOZXpM)X=4y zmesoelD%kFPRZbBdfzE$8YGI?xme$2sPxR7gtF15g)j|)x}6J3HnCBg3Oe48 zQQep^YcIHfMKRypcgZFG&Zi)ah4yxNBThjmpFAR9mSu?U_#ZUwbyr_)GL{QZ#}=#a z&r9XY@Z<_QV3P0h>-7vTSCKkPs5n^1$Q+OJf=b@XGgl*)jqLg30C_uVUw?pUpUdqI zwGYq^Wf-2UKI`b2hAwdgbs;IQ9hW1 zIG1~aZA4z~*A4@rS5Mfq(GN#%i^au)=(CtHV*#$=1fESSg3i*tW>=y$19sQn2 zq)bg!3ae;+S3{Pz%a?6&W;}u8VM#w_5P++eEW6w~_}zR%#B??0iEq5cfMH^GaD`ZfNmaPe#Q+azf2?s&5Q)cBW=0aF zS6;v;Oc_$yqXgRyz=&bsDds6+rHs&WP|OL{oZQ7pj5HtV^*^s`;}KJpDc)CJ;j~jo zSi^HkSdqE0Uj!G3ygAS1^JM}9En6iPk_X_`OAdVcnrr-hL5p*UoxeHl6K(!%Ds$$q z36fo~cm#-Gg|JHt<4ivFjkz3pY#k}8K+@f3na16Q4lD0;~mAeNLi43!*G(t&cbcOVpsZ^!O~rd%VXB~1h8vS=?gbmNX1 z0$NEXg-T9)42ZlF6^54p3(x)0MR{fk3M=MV^jE<1P5+{@9byyp?Nb)soTIY2i4w~E zAo(PLmpGiHa+iH?rNu|+@^#E?H`?wYDw8;{z{?=qb=$4}+@s!GcfdM$hurV71q)G` zQIto(8JY=AqIr|m*JQ2N*{WmwR)AcJzVSWWh>N3u=29$OoE@7ATpZvcRPDL~OtJAU zM7W9@%4n94`|(g(^3TI6ZG2}^CLJa^jwkVlzvtg*J~0WStoehSA#4nm$CZeY&!)RbMN>6=KuJVN7?Fgj3DWZAFMjbeWyP~` zCXKX&Z%XCk3GKf(mmX$as*T@tRhQb`YII^euq=KK-yXF+`AClD`qMbg92QEn`IJ)2|=<7X_*(&T#RWU^6^&Ue>Aj$PYj``d(ZU zD0xYpf8Qah2O5F2SnFaEE3!FPKS-UHm*B&;TeCnM3mSpUs?VNCZ)tZ@T_cS|Omlf* zIkGW-KG@JjOiw$dt^dD&A2J5Or?u!SdfnHVyuC`Cqpf|*VEJI7Ym;D+Amom+i0KMG(LK{-8knsp*}=! z{soyHeegm4pRr5h{@K5%S%EiOEnENe(@zT&082Ia^-;zdQ>SLpTl-ItWjH({!)H7P zH*7m#XnF-A{wsBWwj z{Lt9oBFX7(0~GyRV=05GX#*bE?J~I9?TKQ~ei{+B$FJFIuM>|s#_S-%-*NNJd=nJIJwZ+cr~G^0nLpqmw*Z8q@Dz=6g_yTgCEu&)MHtvrdUMW8j%m zwM2`T=u}fUx!RP+Ye_UgBC`M0+r58lT2yxeKkvD81L+3TsB1ZYLY8Er;wTd1tRNsb zf^?tLO*gIFJ6seLMH)nX&*=-@T!aRdivkLY35^3dDk@&0nO`$2YyJjTX2#6SpOE={ z_kN!DoNhIzJ)kUq>!)tVLnrIDzB4nG;dz&r1W ztcQn!iqqi`Tj+;qI^B|!^U(XNkH!(Ee`h~7FxW!nIjb|k9Pl4!tf#a9SGM6WoyFF{ z!4xM8TtUjk#Ky4d3wsn!pd^a3lw@EVxFZ%F?yb11GiWO=6yI_PD@uVjR}mAUnT-5~ zjPF73%i^VaGItTM4*5R=->_(yeg+Bn#+me)i*vZg$FlYs15)N7)9wZ+dM-q=eM$6V zM7dZuj|YIx^bEh)Yl2_?l8Y|ZPJ~DPYiD4YvH#%@XG1)w$@EoVy2tarJ>nt#-=6&Y|PwECyfdQg=sX**8Kol`T8;o74uH*Amg<-ww>JmI!V4G+#sFyF z)i9QA4Fkm>U--CeFBOBRyT9Nv@*ced;(!}oceY0+UeFZBS3t@;ftMPtx#sFUdpOhX zJ#fH=dFm%+v;6WmKp^Zf-vmA~cs8Ie8|S?l zzY$hukb#-5&tPA_2XDGQ7ci#Hm`8O*!=dk2nJNKDSx^~($bcZUjS3|ly*CVA2=yDl z((1lCH3oyB{9E5@v1$T(uf5jZcMsfuKm2Xry!%17xjB!iCsyb0e(?*6t1X6Xt+l|f zoj^a~D`uHgmDr&2$i2r3Z-F&#qq3a+5eSO;f;9legP1QOAyFsgrUTk$9R&H(@8LY= z)AP?gXDnp^F^cE|fJ)!TlA-erC2*Um34$Or+y~~_moNFy+yC^ebTfk=rpC)z7zSPH zYJ3D4sac3;3rE>u<(&ZALAk?-iIHtoH(=OKj|R3Ej~(Nr!dD|;ISlUg0K;u;2$rG< zk!+G(+{S3Q{bL`u-y)9C?%K!fXHN?qkYA`u~CpxO*7s0wT)&Es_)OAzlt^@L^m zp#Ubs)l|ZdUwK6b!>}Hq%6V;Dx#Rg1jZZ~)neF-99e3z_Zn)~IHc}Cc>QFC`GByZ8 zP+~w!b<^NYo#`Kqj2cnVF(a0Sol~%tE>SC4%Tyd6L2p1a0+X#Yqsk~p%l16PH4wbI8Hz{nV8UzvMz=pj0F%(l!i@^F@p3kkaCnCb|RW0xg0zG80E_$gfUbv6?dgiP{Ug z?vyI@TB}6%K+WNX$I`DUA!fmvI^s=!P3`0xN)jV}#;M zpvVc}*u}`f7*tRV&xPIFbfA`u8;cb(QOqwl~D|jhQGUA>ptPu2tkj zweEt4;HL1B6e7a5oQZW%LDI~+CwyBorbJ)?jrFN~Hyjot5RU>PyT5wGbwP%CB%TnM zv-f)V(=TFG$3M5V6nPCJO2+DIR!a3b(OLpVb&_|GWLDsftTuo`rGXboVX*(VzyEt9 zHY$zq!oD7X@d^cI2$=coBvfIkzze9bN;W)*d62{H2G*e^c@2&od;X>Gya2r>QP52V zeN;lsx?-Jx8#S{Q^q^xvAAHYmnZc!R)Ji7Z|MM*G|l@3qg z+0j9W7z4h@1m-`k!pnetb^tSbQ0LG)rZGP(KahBgpa0}lM(a)2bKPIdk;+Ls#D0Q>Yfb@>k*a?eV5>!+`}C)2WHRfR6}y`|-p>v>MBPTW0)Fs0@;YY4 z$lPS469?D<_PFe&H8d2;lYJZrv(F6hX4CM23AK)0=Hx^t%EJjkAjSC5B5K;MnGn30 zj0`Hn?kF85i#83!Z}D0_{H}NE?$a-IeQPauQWiG!i&plGxsNl$KE8*$Ch#d)qfcMZ*s&XX0`mwm<`i2|}t!B|t`q-!S%=LTQYU zs@ooR8hf`53budfLx#P$-89dYyLYqg^l>Ogzy#5)8Gvra&@O3I79gNsedQHA%|kgt z{8S*Gv8gCG0kXIV*-T85CX_dfU@uZXPzvHwHsG2YxH7K!!PJ0OxDF41eUnyUZzFPn zK8!DXPM=TN183qQcb<6}rCP?Y;4dqnwaTOnW?>IH)kxr&00eCM4RA*KzwZAGYJt3& zGGryho#792P9o(&xY6){4BU95 z-NIUvhU|bCU^`sEG=IjUSKfYTPMWg=@T)tV$}59Ht;1C_)*PaS{pe4wR^vUe@uOge z^k>zpn(pepT^rR9NtiUvj%=vBkh8wdDtJ3x&2XXpn{HB#jvN*MRZis@12xNsX5II8nxp6fadm_FAP>Mzk_W$SF#CG% ziB{Zllx3ZF^s8U}>Zzxm0s_}EfpqQsMW=!J``TB(YKJP#VZe=$XRpJ7<9KB$c&F!n z>7j>Up=}?~<2cyC(y9kUfT`hds~u0;KRkfjQqhgd9KurXF&Vh?d93)Tsn<)%#6=>e zZoeH*(v5%ft#6qUc>bH;q{YAT@KL*0oAsgHIipO^I?{saqqiR+&t7hWW6!qCdRdEt zIQH(nmIM%itLpNz4%6=dXq39hk&HFr(VJ~CSHTxV*i6EP*(bv9B)Zy6Y6gV&&~6 zTXdSyLx(JbEyS<6-%-AT`b=|5NIwu=6a&lYTb7>Q=(C^t6lb5UjF|~EjUc@~oEV69 z%w_1@dvL!MNLZT4jUZ;ffXt7xqs(OrUNnbpE(uF%uBIEO#E2AxT47fY!q>dY3xVZr zE1fgY6}I`IC}lg7>R#v#bI+Gve9;FlIA2^M?}1lJCcD$S?m{&+lKByotgTNdG8Z6G zGw=~ic4#^cDA!-FW!HXW4+Tw`5GFN+DT^=fb5)WBHGB^5nSc*K=@%EJf!2r?EiD1_ z^&gQN5^2S$--Lm@{p|umO~&4F+b4ha)1ROcRXD!kn4qSctzQhoR`!ai2{YL^mc`QX;h_7Hw(83tn z^gFYF;u)dJdgH`U0hF4uB<0l~{V3Zl7gR{^8~tO{PB}k>QoMK4=t?g(40~K*q~@$) z5-(#`pp-Q+Kp8An0FyLIKdAo$+8_-cGe~Umf+yeYMg*XkU$OK^|1-jwWoPlW>M~hc=1n>0 zSOaEKZP0H>#Kq4m9#xl-bkrBpmxDyD0f}cTPlHTQ1vjGpk~O#uc!R}IF-LCz5zL{B z02lEt^wd|5KBNmF7Uosp&%gvIJ?tW>9Obl|9uPa;3)HB+EIr!Vog#;w2mxno;YtHj z;$qCS(*%7^6UYFD&a2@d&|=a`0ygNv36K`Z+shxo-GM!?2O&=sb|SDH22aV{e(T4r zZ~EN6JO1g{zvkmND(2@Qv@8xn!sTz|XIc+X`a-SXg#vb5vjIDcdfq@a8c))yJs)!C zr*6xlsf0Y=;sl2_gVcv=P!3@1+uh87?P6H1fcbXY1<}BU^Ynv(_f2V5cB0PCt@ijb zR=VMutN9F>A1}R-SZh8Z-VdWPo^>laX(h_?;iE@)?b^lp2<4!T$2(BRkGr+Crs1U+ z6vpl9XYXW*Lj`ZVy)IER&f8iW9!q>O$Q%$0qdj99tS&UV{SvI$d8N0cIk-!9T8=$Q z>IJ0`s+c(oq+hq#!?USq7IQ~8T8Vnsr$41hg7Zw!Q=JWTrVax1_x)$H4~_$rkb_w& z%0tJ1Nf=G~D>_vua289JmjX(oyJBufPlSzUeiPshp}^1@rUtM>c8hoPNbj=u@;mir zU--;tGGM#q7A%+n+ZI8BLIvpuO>o|!^@&EudL|xROMGTP9~^-GfpoBxQGplCF!JFC z9`H?%d302eOY0ivx6&x@&H!=wa6wv(A?+4u6=2^C+jvO_rPUw$z=av3U3S@?l@&dx zKq=EQn3vv!awMGaeIV<=uOob= z&A{pHj9Y#5rvG?u{InDqhK*JkW*%ztA;ZgeTF0ac8)f#u2n|8Zd%=gn_Aoqx%(VgH zOi{)=%mfv@z=E>guZKtUFcZo2S6DWT$}O^J^9RQs~5cn`ESTq2gqNQW(_E9ZBWCR zM6pl_W-_3g@ktRIR+DH53Q9|PnWZ1V?c*8Jh(EWepgO;xdf*ZHf!h5^Yi+ktB3s~{ z(1FsxTo2V=r`tdA3EFJq(!S{cW#*#?FOo476O=OG;h|eV$roWemWDEvETo2EBmIZe zhG~N+=nCc{U3t>LWo}}@ooxLq&~CxS=w<1cJ}Go843c^4skuAb!!>}GS^IV6sy|_p z8kJChq!Heo=f*;yTxnEQmZ61G0~hr86KJWuaoZv_!JK*I&0+%vd>8Hma-LVSN`<*Q z7fRz7QJ1->-XaCzae!b>P;tzW^a19d4KUNKTnUUGu06VyP;yEdIn%HJW&{r~gLf6c zfp4(vT}6dXg4Sk8v-}-dBaM$nq6vPxv6>FE=blFWQ3}L2dVnFtZ2#mZjqXhN>r@B$ zejfOUmmYzej;oY;o1l@h3^O#^yZ78uqs9w`Q-!N08X#%5IF~dA17R5~nP*%ASU>hz z_pxcl9EOfeX8G6*KqAmy6|3`rK(s-XE_D%P{4y*XGY@Q?2l>6`qz_5ghV=Kj|6;yp zYD~%C7TtyjWalz{?Xkz&(9BfFjW^>X%ozBZ006nP^En$RM%%A$psX&dT%xj zRkQXK&P+RHymP~i8ri{8V+U_O;%afWSL6m>RErbI(&B6vlO=~@8XYN`GJW>S3mlJiys`W z?|=BC05T`4EM=}KTmCA4!FMkElfbjeQ;>}J$+!XXgDGbN$oq%753FZ95#*G1=J&t* z@-xpqedqKJN&$CcWhTAz9cQ zJDtM4Aqr}uu<2hWmVx2-PT;(pbav~fZvE01A22gSzq4U1$7J=bxthZ#Q_3mne)n5E z=d@rNbMf`>UtM!meR7>wa`m<2-s+o_vEZp&^MNi_JxF1za^L4^Ugnc}dBD{~k3U0_w|Hs43Zl0G9KbuDWU}i7`C!LZ=+?Q@9Ua^Ogl= zucI^dM$dlh>kJeofG(f*GVR2hiN)A^RB<}fPke&FwB3hPQK$SAW$+=SuBWui0`j_L z6Og+s*36(G%yPki~yY)nhn7_L(Tu2t!rLC7kH&_UO$ zAKAHM-X?41BHEd^^DZUwtjRNRm+YP_WQtm&q?7vbk6+>a5e<;uX>rjc2B*3x7{f!oE2hJ6tWcu`RubC=nb0d{MaOxq_t&je zk#h1mv7%@J}Z}}NSy@g%7tK$Ju5rp^~q4{yvw|?3BTuyU83A67hIBw9A2dr3vNN& znF9Nyat^?0*-*r5*7{WdEMh-~rY$k-g1~}`#T;{#jmknY-E2*zK_GLqdEn{_e=vqL zP9V(X43(1Sbg;EuLk1QVM{EA9PN&2x=pG+XmXMU_ms2o4NemNi@!OrP?JnzVniE-K z6EEcb58iK~3q43g8tsP)qeZtOu&3)dMDAsG@Ovm2mo$Q2 zEQc#S?w869lZI&qAOmtv5u5YLNo?`vZZTMz2Y&IlKjXi`0~y<8ii~-0Y;EvwS2tmk?xMV zJl>KV=>DaF?!m)4mqgOYdLF%%JQ zNs$NSpAPgrASI$9%E(YNow0Jz(^5y$g%GduHLrwy0_1WeUIm)K8Jnt3LTdu)AjC5Q z#;q`ne@s&w@0e1s@o>gx*=r@?jDP;_|6tXnWrZjgnk956=@{3AGI1oYql%u8walLGyT0s*L~3GmNq9n*GMSMj-hkgmloPe*;*2PJ zuf8&dO>jNnR02bx5nM*^1eX!7Xt*G6PFl*(^?=XPM8Q9)vfRI9}A>}B!A_J~b{RVe`~l%4FZ;-Xc@ezi)c za7#CAO?5k3_pX4azg~Y>ioY|QY{Z=Qn}|6<*~XumSuD;Ik%U6^YF~+uo zDr63?g@LLT*Sl9D_2C6vS3I_86ji%FJ4e0ido=e)ok+ot%Y_{X)38+3ixF3egc zp)}kxs*gZ7@hlZ8bLjOMxp}b!0R+WWs!MB2#}JV}98w~otvjxpsrF27Y~elP12N5H zC#@HcJx^a4DRSGJjQ>v;USJ6V7kVOOb;$#Fj9v4kP_0Eb`HhLJt6gI^uu4P$4eNMdxe7a!jkDH5`U&9zWo9Xg?4$6br#4!V`2x z#DO!a_YHl+2XdjXoAe@!JGT{AjL*UlOO+|A$c^$)H#~Pr;2UkakhE>FqOE#*z<@7P z=Ysbk{LUTLL$6Av?v^}EBesXV!w@IA-LXJI>6@;*=5K%g)3(CmDoogf2vi}!R`~Mp z+>-t1LTMWSUV3r11Qj-6)(xSv1~KkQltoB4-CM+|^*Rp_+tuv1pHK|GV1ALK-%jvZ z$8ps35JZ%q1cM>?j(c3Kx{OqX&?Ido=(^W^Z0sgN{}$yv3yDufnq6h}deo9=MJY0fdiY5VKA#fF;iSe47rQ^vSE*-7J4DJsBHr%O# zTanYqL8hKhQt&5&>zv^0Dm< zs^jDE9kPXWcC5rp(v43?-dOO+MRff9jQ$bgId>)Nl`WZcg<|M1|Zo?h*RN11zcdRV-7x}GroRs#TR_!^i z{p#PS+Y`oe21ejWHJ`DsR&-@QO!3gyUF%p%acH!%-~_rIBhU)iAU0f2PnAiB+N8iWtU4 zaz-=>d<_#A01l{ z{A%PL3z&szO)Qu(>Izd>3Vl z4Fk3#!?%&yVk0F7*a65W?9g>o=ON^vdGhGc0G%9O6nnnbjSMI2xT)%O>nm$6Ge#Hx zXwt!ATIJ)09HdU#?6(~lP|+gmUK=}5abaCjg(0WuK?BT0#+G(c zk4`HeU0@!^7D~2u78Bi&@5;+FUF9OUOHZ4(t&;rKb+{qIHfUcoLrA}hTSLx}vOCo1 zUk(+dk8;i@>2^cW!S$uM)*z*g6&pgun3kpAO8it4)-leN%3sf&UZA-VC*~bF|1JIu#Mko>Y9P&k;V>L&Ck-Bh2-bTu?0pYD4 zIHJAej01`4F$Jkd!>~a(Z(bQrVWDMGVuokKDB8Q`C%@s9s!YAgsR1<(E(Qq)Y~SuY zN!>A!4+1x8zXkyyYN%h!=BKlY{wCWqKS`~(?wDqa9IfdQ)7+zH!!z+5;>IkP(p4t} z=-i58jss*EK~o4dosmh6=!ER#B+gGL;)Q>Cp6=P4C80l#@ClPQLDhtZg0y_y0FJ7L zMyQVNE>RwR2?P%YLpongTILTAB%hB9x&~1LwWGb`myIS)4*H!khSiV1{hu+?HDSo>F$*01o4JCU9(8#`Iv>405H+b$> zRx~w+eHYVZxIH;YSOSe%a`V$OvS(%c=^Ynt;}H9D3v#wrg~epf1KH`rUW7@Ed#|7@ zozH5=tw!Le-MS#;u8j>ZI`6#b_?vFBMCdqjkIvG_IcMokjndL6`Gsz4OU0-*;Y^Nn zw5LJ>6##U2YwT_Ojr7FmiFOTTNBKe7o^q6`#H+AC`tsV z%Gf6IJsb&>G$;7&>-z0J$j2teqV&D>o8qG$Tt){dvIlUZlg30>I4OK6Gnkfi4{~m7 zPhY&Vkf6}j?8w?n{MGW zxA?>_oWi_J%`h%xgUAefMs^vD=;|AM90W%f37CQBoXvS%ovPDvh0st!Dr)!_ zc3%L6H(@4YPszl)G)@waPfAXA^%~)>os?-#vyRAzjhZG~MI=zd5Z-b(Vdz4;SMR>t zq6q6|#F$zZ^scirgwNu}A#xc1WIZU2(_JgeGgC9PRZxm+&Lp*=-#~?Q zyjz>hvV@ALTPwdq&SHgzM?MfnQ}OPH$7-BVY_fdN(}7R1f_Gi&IHBmldYh`1Dp6J0 zG1~$#z)z7%X1~Sd;gx_5%Ao0?sYgog{v6Re1Uan%`XWTK?J z)Axjr`>XA#j={1m_D_6*<56$fx)%ZIoNbQi$!FVOvwqt^0h zdGM$I&hTPjQTTzW*7UFxJ1_QMg#TXXs(1-$?iZwmz0f82jp$}dCNxSh6mxt8={wGp zMWdDEB3_CeJCsg$yHJdWbsHu~o+c;2=446H0hIlc_f`6kMc!1JH*JinuB-N&hJ}IR znvw(zDkQyyTEeSL?V{exCcgZ><^rIiu)W}Xq8jB*x6RtSm z1ZK)Oj5sx2BHBlwDU&%%O}3_u?-Y~IGsEgbSAKDe;Ws@coVn0dR`pTgqEH5xvqw=l1BGJ+mm&Z~ zsyc}%7>O%b`{zF!CS|j0#IRdLFX^=g)K(S@1N+#0(hku#-)#9z))KudC;lL1#unN0 zU*ebk&Uo?^`==84i!VS}yH@@NVK(S3Q*8a_!4_i#cZyVn8rn?sBJ?TwZV80ntTmxaPn=b38ivS&3%y9c(^kX~l_pmMah*sSV1iO49uv%I|}ct+&f zBWboC+J*|Y$>r){*Ks0=OwX}Sf5vw(JC@+xA##*<762iyt5|X8pD$YSw@`POj?Dm| zRJGQ^sb4KCe70>{${7M8ii7Vbe)9-z=(<@N8Wd*Crpqa#B1!~^(a=3dlw$yeRPy`M zuj`q)QJ_%{Y+i zQjO9Q^7pU6z}DY|0mXT>Q7Jz`Zr9g~+s(W8$gl{Q=u)oRFS*1vk?gA4d#UJYU)My< zG(}yAi}~OM7w-GSt(?avD&olNeP6uq@kbuH{;DfAPP@QR1`8y_WLgZ~3l}Z`=UF*? zYU$n>Yz$*iq9s@}>swgVD!098gRc|W4t{nX;r2rKETeQw3E{8mdRyf6du%{ z{`A$3hRHr)38dJ#a(>@!Sveoajs^eQw%JCL)FGf13K7OFt#Xl$Ncv@ATajr@j)33% z`tfettqkb9r*{i%VvX79$>Ngs#QDAEiYu5@#&g&1+2eY8&7LdfbGhdVzlXd!0?;GU z`7BA`Lh=Em^$TX>)l|ONAbKe{T#$Vu_FjJ?6}MP&w&$unkA3;!d%p06&)<3H=lAXV{2h0E?v6XGV6fwiUrX-O8{_=gVGt17v2d6l9h z3(|b^na}uLONGfQm8^Qd>T*uad7S*KN}E$^QkCt?7X{#5cP@cJ8wQ9A?)|`&8tK?7pWbG(TzQ zIkcrSL#%gZ*SML$@s-*4`-$}V7oVR>=B1vuc2e48?kgX=qX(0J+CJzm`->%3cuyA+V8DL4f! ze&e~XAGmM7=~TPZTHOB>WaiuwQ_8)$!%tp))kcY&0Faplbk|+i=N<4jLS}FJVLb0y@#e2gJdm0VbH?1=R$H3n6iQ-Ok$*5-L>f)2csi!-nsF?|V-^ z`Y1=I{om}WaYHt4H7!QKs8N$6mtJ&{01}%$)w*uyT-@~Zv88Fdi)#AASBS$Q4w;zK} z$QEW6{3=AFhjM-`J+nKd-c~>`h|LcykYQNpmq?VQv^G|8bdUbW8f}x3J|8zv_$S{F zy3jtn=8%C)Z!j@!Hl{3x*$MrGJ`{x2aes^d?X%O|6CtigXCi#cuY6hcBM@CyZq42}G;|*SwqLgV{*@1G U`@kh1dh5>fKk&i#pEdXY0IJR1C;$Ke literal 0 HcmV?d00001 diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index 9f4631a47..091866a06 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -245,6 +245,14 @@ float alreadychangedlevel; .float runes; +// Keys player is holding +.float itemkeys; +#define KEYS_GOLD_KEY 1 +#define KEYS_SILVER_KEY 2 +// spawnflags require key (for now only func_door) +#define SPAWNFLAGS_GOLD_KEY 8 +#define SPAWNFLAGS_SILVER_KEY 16 + .float version; diff --git a/qcsrc/server/item_key.qc b/qcsrc/server/item_key.qc new file mode 100644 index 000000000..6a1ce5383 --- /dev/null +++ b/qcsrc/server/item_key.qc @@ -0,0 +1,80 @@ +/* +Touch handler. +*/ +void item_key_touch(void) { + if (other.classname != "player") + return; + + // player already picked up this key + if (other.itemkeys & self.itemkeys) + return; + + other.itemkeys |= self.itemkeys; + + if (self.message) + centerprint(other, self.message); +} + +/* +Spawn a key with given model, key code and color. +*/ +void spawn_item_key(float key_code) { + self.itemkeys = key_code; + precache_model(self.model); + + if(self.spawnflags & 1) + self.noalign = 1; + if (self.noalign) + self.movetype = MOVETYPE_NONE; + else + self.movetype = MOVETYPE_TOSS; + + setsize(self, '-16 -16 -24', '16 16 32'); + setmodel(self, self.model); + self.modelflags |= MF_ROTATE; + + if (!self.noalign) + { + // first nudge it off the floor a little bit to avoid math errors + setorigin(self, self.origin + '0 0 1'); + // note droptofloor returns FALSE if stuck/or would fall too far + droptofloor(); + } + + self.touch = item_key_touch; +} + + +/* +Spawn silver key. +*/ +void spawnfunc_item_key1(void) { + if (!self.model) + self.model = "models/keys/key.md3"; + + if (!self.colormod) + self.colormod = '.9 .9 .9'; + + if (!self.message) + self.message = "You've picked up the silver key!"; + + spawn_item_key(KEYS_SILVER_KEY); +} + +/* +Spawn gold key. +*/ +void spawnfunc_item_key2(void) { + if (!self.model) + self.model = "models/keys/key.md3"; + + if (!self.colormod) + self.colormod = '1 .9 0'; + + if (!self.message) + self.message = "You've picked up the gold key!"; + + spawn_item_key(KEYS_GOLD_KEY); +} + + diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index c78b9f2fa..87e66136a 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -110,6 +110,7 @@ w_all.qc t_items.qc cl_weapons.qc cl_impulse.qc +item_key.qc ent_cs.qc diff --git a/qcsrc/server/t_plats.qc b/qcsrc/server/t_plats.qc index ca87ede22..25a25cdd1 100644 --- a/qcsrc/server/t_plats.qc +++ b/qcsrc/server/t_plats.qc @@ -971,11 +971,33 @@ void door_use() void door_trigger_touch() { if (other.health < 1) - if not(other.iscreature && other.deadflag == DEAD_NO) - return; + if not(other.iscreature && other.deadflag == DEAD_NO) + return; if (time < self.attack_finished_single) return; + + if (self.spawnflags & (SPAWNFLAGS_GOLD_KEY | SPAWNFLAGS_SILVER_KEY)) { + // this door require a key + // only a player can have a key + if (other.classname != "player") + return; + + // check gold key + if (self.spawnflags & SPAWNFLAGS_GOLD_KEY) + if (!(other.itemkeys & KEYS_GOLD_KEY)) { + centerprint(other, "You don't have the gold key"); + return; + } + + // check silver key + if (self.spawnflags & SPAWNFLAGS_SILVER_KEY) + if (!(other.itemkeys & KEYS_SILVER_KEY)) { + centerprint(other, "You don't have the silver key"); + return; + } + } + self.attack_finished_single = time + 1; activator = other; @@ -992,6 +1014,12 @@ void door_damage(entity inflictor, entity attacker, float damage, float deathtyp if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; self.health = self.health - damage; + + if (self.spawnflags & SPAWNFLAGS_GOLD_KEY || self.spawnflags & SPAWNFLAGS_SILVER_KEY) { + // don't allow opening doors through damage if keys are required + return; + } + if (self.health <= 0) { oself = self; @@ -1271,13 +1299,17 @@ void LinkDoors() }; -/*QUAKED spawnfunc_func_door (0 .5 .8) ? START_OPEN x DOOR_DONT_LINK x x TOGGLE +/*QUAKED spawnfunc_func_door (0 .5 .8) ? START_OPEN x DOOR_DONT_LINK GOLD_KEY SILVER_KEY TOGGLE if two doors touch, they are assumed to be connected and operate as a unit. TOGGLE causes the door to wait in both the start and end states for a trigger event. START_OPEN causes the door to move to its destination when spawned, and operate in reverse. It is used to temporarily or permanently close off an area when triggered (not useful for touch or takedamage doors). +GOLD_KEY causes the door to open only if the activator holds a gold key. + +SILVER_KEY causes the door to open only if the activator holds a silver key. + "message" is printed when the door is touched if it is a trigger door and it hasn't been fired yet "angle" determines the opening direction "targetname" if set, no touch field will be spawned and a remote button or trigger field activates the door. -- 2.39.2