From 5a93a6e9e71485346e098214147b5c271f4c9f77 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 8 Mar 2021 11:47:30 +0100 Subject: [PATCH] Initial commit, carried over from Nuclide's Git on March 8th 2021 --- LICENSE | 15 + README.md | 37 ++ img/preview1.jpg | Bin 0 -> 81953 bytes img/preview2.jpg | Bin 0 -> 68048 bytes img/preview3.jpg | Bin 0 -> 66865 bytes img/preview4.jpg | Bin 0 -> 71785 bytes src/Makefile | 5 + src/client/Makefile | 4 + src/client/hud_weaponselect.qc | 235 +++++++ src/client/init.qc | 67 ++ src/client/progs.src | 39 ++ src/progs.src | 2 + src/server/Makefile | 4 + src/server/ammo_op4.qc | 176 ++++++ src/server/defs.h | 19 + src/server/gamerules.qc | 168 +++++ src/server/gamerules_ctf.h | 27 + src/server/gamerules_ctf.qc | 145 +++++ src/server/input.qc | 83 +++ src/server/monster_drillsergeant.qc | 94 +++ src/server/monster_recruit.qc | 81 +++ src/server/progs.src | 95 +++ src/server/server.qc | 39 ++ src/shared/include.src | 46 ++ src/shared/items.h | 51 ++ src/shared/player.qc | 806 ++++++++++++++++++++++++ src/shared/w_displacer.qc | 384 +++++++++++ src/shared/w_eagle.qc | 412 ++++++++++++ src/shared/w_grapple.qc | 314 +++++++++ src/shared/w_knife.qc | 275 ++++++++ src/shared/w_m249.qc | 352 +++++++++++ src/shared/w_penguin.qc | 375 +++++++++++ src/shared/w_pipewrench.qc | 350 ++++++++++ src/shared/w_shockrifle.qc | 317 ++++++++++ src/shared/w_sniperrifle.qc | 327 ++++++++++ src/shared/w_sporelauncher.qc | 491 +++++++++++++++ src/shared/weapons.h | 65 ++ src/shared/weapons.qc | 44 ++ zpak001.pk3dir/default.cfg | 47 ++ zpak001.pk3dir/particles/shockrifle.cfg | 17 + zpak001.pk3dir/scripts/map_blacklist | 45 ++ 41 files changed, 6053 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 img/preview1.jpg create mode 100644 img/preview2.jpg create mode 100644 img/preview3.jpg create mode 100644 img/preview4.jpg create mode 100644 src/Makefile create mode 100644 src/client/Makefile create mode 100644 src/client/hud_weaponselect.qc create mode 100644 src/client/init.qc create mode 100644 src/client/progs.src create mode 100755 src/progs.src create mode 100644 src/server/Makefile create mode 100644 src/server/ammo_op4.qc create mode 100644 src/server/defs.h create mode 100644 src/server/gamerules.qc create mode 100644 src/server/gamerules_ctf.h create mode 100644 src/server/gamerules_ctf.qc create mode 100644 src/server/input.qc create mode 100644 src/server/monster_drillsergeant.qc create mode 100644 src/server/monster_recruit.qc create mode 100755 src/server/progs.src create mode 100644 src/server/server.qc create mode 100644 src/shared/include.src create mode 100644 src/shared/items.h create mode 100644 src/shared/player.qc create mode 100644 src/shared/w_displacer.qc create mode 100644 src/shared/w_eagle.qc create mode 100644 src/shared/w_grapple.qc create mode 100644 src/shared/w_knife.qc create mode 100644 src/shared/w_m249.qc create mode 100644 src/shared/w_penguin.qc create mode 100644 src/shared/w_pipewrench.qc create mode 100644 src/shared/w_shockrifle.qc create mode 100644 src/shared/w_sniperrifle.qc create mode 100644 src/shared/w_sporelauncher.qc create mode 100644 src/shared/weapons.h create mode 100644 src/shared/weapons.qc create mode 100755 zpak001.pk3dir/default.cfg create mode 100755 zpak001.pk3dir/particles/shockrifle.cfg create mode 100644 zpak001.pk3dir/scripts/map_blacklist diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..73679b8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2016-2021, Marco "eukara" Hladik + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..515791a --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# FreeSci +Clean-room reimplementation of Gunman Chronicles in QuakeC. + +![Preview 1](img/preview1.jpg) +![Preview 2](img/preview2.jpg) +![Preview 3](img/preview3.jpg) +![Preview 4](img/preview4.jpg) + +## Building +Clone the repository into the Nuclide-SDK: + +> git clone REPOURL rewolf + +then either run Nuclide's ./build_game.sh shell script, or issue 'make' inside +./rewolf/src! + +Obviously make sure that Nuclide has fteqw and fteqcc set-up for building. + +## Community +Join us on #halflife or #gunman via irc.frag-net.com and chat. + +## License +ISC License + +Copyright (c) 2016-2021 Marco Hladik + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER +IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING +OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/img/preview1.jpg b/img/preview1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6ecf7e47d0cb6a8272a6cd6bcf57875ebd0aa36 GIT binary patch literal 81953 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 z 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�QH#k2@uuL*(B&wlwy6!Sg!BhT2 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 literal 0 HcmV?d00001 diff --git a/img/preview2.jpg b/img/preview2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1e6361937f304248d643231a2b9c1c089445bf4 GIT binary patch literal 68048 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 W5S;%%d`&HfsQ@YV?+5&{y9 zG&4{0Fx98mYB{Is+x3-vwRhFq{M$MJOHN8w3IGEG1Ni>_0=z8&Bmr=+u>W1}3I6>; zKte!(hetp`MErn+hJuEMih_!Yj)8-Pj)9GVii$;mg^i1ckB^UrNk~M1M}&iikN00D zFmUhBz#||dARyzRqoU*eKTdBQ0Bj^!B-jEt7#aX9HVhm#%v%qD5&(cfc(?XHga228 zfql2}10oVK3hMg}wO9aH7&tgsc)0(pe!tuI{eJ*FHUbVcr}zilZ$^kTPIz2_ahXW8 z5|y3!Dih~GZe!;lWE28IB4QFcdIm-&W*%NXegQ!t$L4jUeUn)3sW_%}o&CtMn?KqNegxXj8Ob9`gx2^0b#&j#Ja zf6)F1vj2O)g8pA2``^I+Ph5)tG&q=d=fPnEK!E3>tZ+s^_JgHQOk6Llq?h?6l?kID$XHFm`m;@8>zVt-%^?MSVmvA&F#n7IJW|Nnviuh&vC zuf@C9LgC&$x?f1a#ViD1%nAoE%S_Q{lUw(|u`yrYguJ}(^ zUdQ|RUTfDN3te=|{`FUH0DJ$Js)|>nwKstIfG@pMVnmE#yWyuV?iQ{XHv|2nqAWqB z+I@EPKf17;6fy+btJ9>*nq!_^-T=o3nzs%Z(L<%CjAPGUu5SS7(QIC8xC}92n4#BD z&2%0@EErQR#^&2G^mt;M1kx!}b2E4ts(Ns1>wi3Bu(p9-^4DiYPXg1$A<{=+bRe7b!(u^vBUPPW%dIIHAOnn|bK*nd-W zTfMq@>m(f`dtNoluO?Kux`MdS^aj|PuJ)nRl1OazPu_YJeFHo(-|&vJozmB{Zz~Xw zA(q;D{LHy!x67ip?C8G{t2LO_?_TJ;717`bp2MktmHps_i)r}ml>VZ%{Zt;vxnx4p;1hXa_Xb#)`{zN~Eff=))vO?)-Vmi#BOg3j zTXsF=?qcT(-$`J`c;0Lh?MZR%ZB@F!jNILUw}PPPBhXlA+4n5S@G#-)=DD z)saIW_VO2a$l^Nd#6!T#UlIQ`S8LG10Z?LXNek*w^#-_gJ>=}h(d}yPkyAy%w4SMm z=8d`=L`m4F9-p6DJbx z5a`%9RIhb~pX9b-^XU7S!4ZJWiX;0{^^S&zHMy%2xAJ@R<7YV~@-I52^fjgpbmJEfeu&a|Qj$f9%JbBARbGz{cf}^_@J8F{ zCEsaI`)kK2?^e9(7uom&cli1koJ0X7^Vdt+E-qyJ82ptB!Ow`f3>vP4l6wu3i7+tJMW`Lk@1K2Mb}PZ8YqUfi-O z!$jf*rS)%hvPjP7D2iF%-XRKT#PYN7q}?f+e8~_WUK-R?>2*vgVnZflQFf~_ImZK7 zTLJfOm-nJ&;-j9-hzVxuq53krS9Jb?`YhrTXGnlv=wM(cR3K9$ejy^kO~h9Wq2DM- zV;VO5lwhl4SO%L0s0`2?eR}I<4FAI)FP-+!7`eS%w)`9F#pgKpTuZuVD-Tp8Q zfqGiaV%okVnkWt14w}aY83)Kp3>cq5G zp=f?s5+ZxZz5wI(tKd}}sh4H1DS6%FX{8&JT^bVh z;sY~4%%QtZc(>;Xti<C1*R9= zIo00)Qlm0tZvcGvYTchuDk)C^LB!~=17)mUEGQ~gk8}1XeZNzI<-C zTt4L#%~7I~^&l3=?o#6pGDr|F={`i8XmLA?L@Ou&d4O^$Cf^4F27K@Hvc692+}U^= zGM|bd|7)Sdxeff%Wv;>03bV)rVY{pTle^*u2TUt|!re_9nFW)5nU1l-+=|KTC1G5o z5WGr3z6|r95e&5O*U>c$m{?{DCfClAFIH=! zD+SGj>d!wtU+ACR>IYj1FD|syevm{F_Br+n9?_a*$6T7olq7Q^kHnGM`P9+pmjEtR zwTS^UWDK370OyRSaJ9L(J8y#-YaY~H0wIvu6sL0>Vb5U;EwqmxyXM;S*UCRl+B=o` zTgP+3p-Rx;SU5j|rAxKsGl9`pBOhVv5%hB)xx5pPdYfS(RSW?7=5N%|6AIT4kcu$|)MYQnGfZ zGHOwz$xf~J3=CrPd50s#dF-D()8{%o?Bbnfi5sB=ke76WnwPZocI+AoDk-VM5vzdq z`xke@VowjFXynq9El=e1oMo4|KB0B-JP5x;u0AceZyWVRb#BI z|21N4A=3`4Voqcnlg{=LQ}t=E%1_wyTcRXwlDvjgX^Zk7b>^cu?$P{ zOJi+8P_B0EMZ(BF%yr}3uq{4XZj4yUx{A8>nbYOxtG$#~w$1L%+9)ReOX3^wt-? z@4ddNarq5bKv_BcyCkpr1wRbE&xQR7$8JKoEsOfCU3#aQKzjx-_iP=NH;1SRt69R| zVcD~{_O>Pp(mN&rn ze#CLVyHss|v#Q5%T^*Y&ODMMj8zhm|P+6oq{-oFY=WQRKarsl_Wx=;TUuzc43}jlm z`p)2%_yJy!R`JB2e@z**u1_3)Ez;fq4z!=bZ0*_ntU&9+_hnxG0XjkQA4APjdG?{OEjw)R@$;S6Ggm%Tf8DmbrG#7-)kUD~Y=6Z8 zp{4q*Iuu%`8A|r$zCcbk17u$sdhS%sBK@~+zWSi7@i;;YM8E?5uygHnSMNgXL>z&klEeHx-aeqRt6wdYEj z^NMooSURx%Ogweu#8i3?G5E0uT!~~5l(M6@l+Gh%l^~8_g5hNCW}`wMjU4vy81=gS)5X|X)o5x)O#+`lAp^Ol{K%3C)Zs?ARxj0x?AMipy>UH_8+aulK1NSF7D*HaindLS zs2!#lN}Q*a_XfxaZWm=ynd}-*Y-o)1Tz@Xf&jqQ-d(zC4o>@@zB`G(CX0Y?Y?tkr5 zMMgE){0{di^7cpk2`y=davh!~KX@E= zuIz9H#zUU7%E9}6LnX@zU5U7wZA#G(>!i^NW`Di^>hn;=ztEW>)31iDHue8Z#H35> zH?47{BP~NBXGtHgDWnBo?hhI;>FpAZYLwALw+2%AQ5$^IUS1@9UHTl zYLzaei*2E4h-PH$K8;{D;Sz6+&rAt~&MIR#i^IFZt2?{VpJZ0sSt+#i6YesLpE9GP z%sw8D8Pv4WF!9WV+b}@^0kYpxWlx?T=$gS2pT0%9iH^A1pR>pI&r^88vw8=8gegq= zq%dF9h8-m$?dxo;cgP4Ij-RfD-!BLV51;F%ZvyT|qut3;P9R1e^#DRMX{ zM5db7nA#R%Cn?tuBn$pd@R6V6blKFM((P|v*NM&Ur(p)|0CVP%j*||7vcG*zDhr)t zx8Tl#B|R3T-SAbd85zK(X}zMOG~nVyZ#TtAbUXfYRgc_1_PG3H@x7PO*FUPIV+tc& zRx_?ljpc*gIFpxK>Mhc+jN&x-oNZfkpzagxB=$v(f06Xqr!X1(vWNyL4>s!AK{f?& z;yhKX=-B4JI7ZS!-vH{Gyhq@l?l%}muyb@ z`m`4l4PmX%ajy+MJ}YXAm=TnLb6fgsVat9+LL(_UW}>*&TW9S5&}B;#8|U=L#0ten zwaW#|O_Y}0AluW{tAoEKergUgXjoirOPJDGC}{WetvaNzEj6r!rYL?8z`ZotOmMy(k(ZP@Gs!dm zx!8WN$aKf~D{c9sJBW4|X*Im7Hrc|WS@l!2+dL(ou*K{SFwaIa^zR?Aw)ZJK7(x)uYG{z#&H(G9O> zd#j>~6EroAOel#Q>3!_M?k~=FWnqGrr#}Xr<=Di+KqUHfU4J60)-g=tiT7S04ztx~ zMh%1pdQ}Kqu-z!#Z~~_YZnFlIp=XNGr`}KcLfq6*Uq))6P5^>Vd2`Ahfl*H~XYS7X zP^}-Orlct*brC~oc@nf}?jNDdZ5b~@wccZ8#NO(Tn!=g zf&y?$cHhEBy+?FpfWI{u`!96|d@5KVr_&_)QOAyHrX$u48BkI2W#Y3jiW3nuTsuE&Mfu!hL=(aqoK1C%zP3G4Ur#I z8v48fkCeb8r94}7IWdfgDCDCUqBgYZ7p);>g=GAs$6IxYGTZ3(`)2z>MAMPjY1kQF zC`R|enGUGv-MiX^&Kq%vvEU>xsUHAN#5dQ)x3irz z7*%8+ALI*0h1F3ZI9AnzaovRr(qs?QB3tIB%h*v$w`#i8Ws8>K&DnX z-|H)4`&}EM8JT8*0mZjn$Y!B+HG|E;r@>;ey(OgE9v-gqg(Y)pqo)4PujyVQn87T9 zj)M-e+nm)v8{|yA1?{!m+LMxE2X34yCPd7dv7$DO!|Mo%OV)&e60PD|WrYY`^CI8aNdQ76htNE)Q*cQ81ZGXY_x9{Y^`% ze(SRUb_ zR}j#*7l6sut6dqWIhHEy$QeQe;>Ol)a%`IF25JVJP_Li~GPhQ^yfAke=ntW+vJEyy zrWcv?DSgF0QaP)zv^)^<((CjF%HZto+g*{ZGvSkJ=?{@rN&|4vvrnkjE#`f#l{mB; zr%u^S8fxqRFfy2<1-SO()2A0&bLj!IMobgoNwcj0YfDr(TsEQ_xy4*kljWsbh9UyT z|0uK|Is+`lp5^94XgGy*9;*_M83{9Q02|)i?qxllQEU@>RhFOv%ztA#dpve-^sTK) zrk6@2uV-Z2xYyUOYNvM~ts*1moOipLIlBtdWIA?TnbNsLA5LNpG_8 zx?0-N*Eal6Hjho{MtZ0Ql}n2NnMq~8Nsz%)z=G<^4sqfdR;j^eGWrw_B6-07bmKWo*P*tZmQ@6xRtVI zY&F+~D%AFPsa?wBuHYl#(T?`2K|aYAi&2tfWEKnkjVSj0$mF z8>D2l)~YpnTC583IU=Zru*2!YFTgV+#wuMKrItq2#3t|bFghIl!mPm5YPN%17*gFQ-q(m0=v5%w$>sluXRU+9l>bsq<#s0N|=Y}9+f#51=&d-hhkn}v!{843&wk!G;HlrD&*sj#lHHvQcOY| zZ{OLp5cArm1o3DYle##)?RZG)1R}YhxmcQ`NW4zyQI}iNhZ#Q& zN_XONr8X^#27Zm%$jB{Lcpr<``!WaRsaiIT=WS<^G2Ea9!oa z`GhQwZ-5Sg7-Vb0$JS=vjw`%tDvj2Y<5>dm=ZO=hD+c2Jvi#5IR|nq)>?^o%<71dA z-vC)h{CX1(z;qpfD!j`)?y2`;Vk}ED=T71i!dEFc4+(~Nl9w^5rf#&@Zgj0q+)l1p zjx;j^ulJ2m;hY_vD3zX_OGiFZ)wqqcdc7XK0V?uOkoRQwT}bF!ZiRmE)#vDW!vCT> zElvy67ttK@wO0Ac8Zi;(6|OZijuj$_wq+st2Jlh0(SFWHy146e^S{N{o6|u}Z=K*R zeXf=}m*Jun!JW*UO(`v-i8sOO27|&@Yw3Ser31f^YI{C_o=|FC>F+mPuzXA{EF6>? zJT}bBl8%w_>d6qyxkT)A1?J6hMdTxMTPdv%olZ6j%by@jH#Xyx<4TBgCo z4f0lb-O$z;p^Jd(`RJ20SfdcpGI+ z>dQ==FLBa<$BguBlQrdY;HnB=$DC-HsUl7xemgoiAKkY)q<*Ec02c^7eHZeo)C<{j z1Z%4VW6+n6NJ1eZ&QLsnAj&0K#Vt*3%?gcM&<=Yo6aR3LNJAgKmirq(tTsz-X-zJU z{yIJ}k{xNx=~Dg4fx@?0diq2Wg1W4mqj8a3QkrSH*a049dxio5TtL-1;i@kdD$XsQ zw7%Z&jg%|FI!Q0Ct>|&-eN>^*=NcUCmPk^N=WVov40BMi`Z*0y(z<_JJ1?rE(aM`D zWyeOZXq2S>i1u-1?IXX#t zE+kH#1@#RYPpsSW6L1?D;re#fZ8|1fa4!;429hxeCulfo-n5@+wlejModmJ>p zB(gra^kK?%oNp82Dv89Mt`-q@m3fHxJGJNj&{-{g1KY#`h&nxIEg_>DH~ zfqGcNNZN|=vqc=)Y5=x48P1{@EZOMrg#sK?*OeYJ9A?LJ2anq1E(aA_OG7^bnh9*;)k?J~{+ycjd{)FpZF^t~vRPIK={=Ffi zNSH{n%^EW!v7O|PbRS76**~qPs&*C1am6nU_!~O8esn5i9B6Gxy1CN|UH$A`_}lq( zJR9iEPqtUS;;^IJt=yQ3_7@xXnoE`dk<96-sG}NIHjzJugG_ptR=7INIK>WsWHsV8 zQ6V1wva$?~^;tl0Jjr6zt4WGd{AFBoq~Fmv%4#@o z#rbt??P)T0qVnvNRdX2}`jQhTe8My>{jh8{PGOZwS z+u*>U?99En@Yz>Jo7B}E&#kK80qEpeCj*Fr%g!Aym^Vck$g>&_moN54n&>3OiAv{& z?~We6wKGwzp3E_tKVR`eq~6sF*Puh+j@-VuMl zNV?=&IsKj=z@JT}PuQY%#2@+7EYt0hkuNOm&pMX_wy6c1bFk#eH$9IGkb#RcGTs0N zU4g9rzbO0Stqwmy%Pez4qKF&w8%N~P3e^%mpZO~to$)>gFTN|=OB}B=GP6+7A?T9u z4Paf8!@RX4@w$~OL(Po+*K%cEqitxo-DFq)f(v^4U?4F4`ASB)FHoGAr~_LX`V8;i z)XG9fz_(rje`};+o*{tQpTZD1tzt01H-1rx!WrHm4Q6J^EEQmOR6eFzqz3#}4xak( zMN(Js5|cHgD0fpZ%C`EUr4S!@RvgGB!iBaGS0N>ZsbrnN zD}3!Z&nmto=!G2%Hjmg?zeE%RAofhM!0uBJ#RD9EB(nMiM@O4c9% zA8DT1CmJ^Vl`yl%#EiK zCj!qSo;}7^vakz;aFEo0E>6VCvpJ_CcHgZ9Y3F^$8V?d7#BBYhtyB5Gm8dsj1xLNU zhiqLG$NE@IZls$L%tecz{*Hf_7d651v@BS5xq7basZn_-FlIjxpO)3V1u9f6@3h63 z?#*9`Qf;bHT^Wtyo%hmk@M8K?XC_{0?%g)>FI_ERW4YK#2Nsp`o-OjNAC^TFAjy8l zxw=16q-H-UDd~jC(YaLb57eHagW$9)Orkav2JIL`AC6XQdC6gyRO)LzH*~A5yVSID zmU9B9A2-{K^?B#hj4Jo7`g-FFpj+RLpEzASDZg3kxG$C*ho2FK4BLPEL?p6(ol{vC ztT-C-%e3^l`h5YTUdseA9{@t^Fg$P=?>Z&1O@xQ<2;VLSiayV=W7bw1?Zn z3TE>1b+3m(+(popYznGns#l*@OWu4xSVrdciW_EBh|SdljApt;0y$3rT z`ZUog>H>LryzC3{m&;9fgzd^x9VfXQiD1StzrF#ezuG)yzvS8!A!|IYCkDx^F;`xb znM9{N+XTJ=LY}e>*h;1jl4j?=S+Ecc;CsFj(8+F*husv=-*;{t9pyon>?DIk7B-2# z4FFEeMP8T%>1x9jMMvwUlJ)3X00S&M+bNi&fU_mgi}n6i=;$u7vYuI{;PM`jQmNE) z_3s5o*Da`(B-u))Qx(2}Vr!=?b*%4|JV^;`cv6hVMHS1UM`e=HD+^C)(x1yXf^pDPYR2S8lHaJANpaLWHP1|0?7%85QmS9DP2<+prBUJ<P=@y=d?$XTEzb=4D`?1}PTyX6<;aB|JF~oP^4&#vrq!F3XH5`EK#}q;e3yCcA;X6oVQ@CI1L#G$FlY%jcr?qR$>msWxYVbEg+Y zS6kaOVc**jVd*xHynPiA_f7}i95Y%qjmEj~4&#cu8s+QkMD|sgI=5ycYXr^>l7__pl zBpxpQ^gnP$zJPQt3STeEZSI!`?P?OVQbmZXMxLd&%kd#+BsT?b0Cch&F?tPA%Ut^! zjlS=#);*LS>aIr`R8L(2qEqW+Vx}ZRlud1l{uhroPx8sR7zG&LB}V_ z4_>~bS1cAZC zQw{>pB{oSl7g5_;FzoT>`vBpsirPqsvj2FL!@NgdAJHz@mq<+f2q6!2y`s=ficYxa zKb(Z-D@t>A|7ttZbY4)&jq48ogfSas$1ch7a%0Z&ccw;uN#kV{;^{m#2-LvkLo9#x zzAl4wX)fyD-Nv@oRafgqbulCk5-@uEuCUI$2rG=2{af;jP{ znf`rkiBlqs$jy#uPi^0h>-GO`GwY>Wdlptp(;N8fFESMIbzZ%>6l56Gw<=TfH)jtg zTYD((p}W`3=^mswGtKG-vaUl!`Tc!?QtAFr>XaBl2z`{v_^E^=-(SS7Hvkhp3#EV+ z$IvS>2VXJa8Atc)dk?zzJ=?xYw^*5@P(}0KX7(Ko4aZ=eKRarp2R$jaet8zPBPb;= zn8?8`7*Ne~dnBi+rTpZvrN79Cjj<;U{{}e7Du0sGr@c>jsb-ITR>FNk8=`qVg8K*i z;XjrB2YA0MFvmlid=CDXF624Ppt$(ndBc3o&dQSdX-QYYSbCGEQd`wS_*-M6ZXBMl zz%pb3H!JWcFds&@n^S312k`wkaUsk-vo~ijb_3%@dX|NNcR|nV8uEzb%pD13UL`Bf8>wyudp|TiU zv-JQBr>Q6Y+1l61u+OiX?X};VKn)kg0_=VhzIJG0<~>|?*c7Xf=0cu1n1&@(i5TOW|qsL zA{rPK_zlXRY;sI)G^VJmk~W7UW!1g6{r$|#_7ZyZ3o;s&Yr=zyv2H>I%e~$1awwLO zI~!cIB)_v{HR0*~Tbly?_}`Dc;}z?HhRN#)tEk?ph=nY3DH_onM>p_9C0UGNS1$kg zVz;ful$<;d_HYLh(nHvbQ>mGpeYTao>rA$asy*XC^LY7gz>ud%bb)gu+bw)&|ABo& z=NL6|VHLqzzRlUBZnz=5R>xYkIUyocJ71$GRD1v>sR%D8$)8&b+GH?FeR6aQ`eB*X^IPiWpdqk>f zsuO^j7}2>4yvTxfZ%T2Mveew-WhXiS2keqF&X^eF+^?LkbECxT#r_Z05O~`zi>o)1&=qkri zG{Oee*p~^2)gP7hc!o`gR6O$F^7Z;qvBF{2)nx*Gp~Ksla=x9y^EifZ`PPyB?H?^G z=C@#z32CgdJ2fTvUYMqSZ-?O5;WL1|d2vbvsJr{-55U~Ytbfx#rLAMY8OLHi@dTsq z!1B96d1)0RXjv2Q{XX!ie#aqiNKg{Dk{LTesRFuL5n`iiKqBQ*&4C_ok~GlFe2 z=y%g7a`k1T=dMh?Pq8zm1s%?6o&>IAZzl&~N2(_>i3oa^Bv^1tVk7lC@pE!?@afh~ z(L){4dY;U{fDYKOS_Hz92=MpkDdB{wHBetsXh(B5(t!N4i{v3#%BzptH>wM@hvd2k>cup~L-Gc&(=D2MrdyxC=@Zf=!a~(HaHSAsjn{7nuww7+=KrtW4Ey z!WOedizcycwU-@GNueAr!Qm#dTr$c%vJ^i_Xf-t4V za2V(WC0b^PgPG~y_(0;sr*a7^%N)eUX zr(XKXE+1jTc1-Rs^!UR}ZS1^yx0YH4u|6PD@(=n;8f1##1YZ4f_*do?qbgI1W>jJw z_iNfv?>Nfs-<2Ys7lsGE@si=R@l*Z#+WcnR9y&!EUZEitLm+xP=^OolI9egEvUO;_ z_@z_;GGax)mcA^vB>M(%7kFX5iTQPAce?1o|Iq?%9MYgP1)9yq23qVfuc;T#^3XE> z^DfLenJ#V%Ie50=9d@TVosl2vN}!YQS~st%Ay=x~L znP9f<1u%a;Z8~;P>2w=Sd@JMHnVw?eR?y*h>eAu34lV2e>QJ5JOm+P;g6EGnfX7_! zv-s4;R7nY#{7I|daafnqeGX!9vm5`e7bNif!H@RjTUpR=nvitOssR%I4`HC}f5fB8 zh}AyC^|;#Bmt@8uhWBMR+#3Mp`mc7)O*ii(y;tO1qz3|fUUf_Oa$O(i8Hy96^$jpr zb|FG>>ntvihUY`ZIWU&%I1|&dWT6fUg?hBn)Sf>V^Yt}GRfwtougFvFy!-o>N~w&;E<_pfw^NxF%bZ|)+#2!b8Nj^CffH?dhM!<;zinbSB+t{ zjT_ZHBFRfBtRW=mlh+X8W^j1gtTDiE70w9|P>n@#lzzF;d8L}9dHRmMUM6Jw9yEO_ za@0XK0W(gaAtE~XKW)}3{NV9AC?655S9F{H{0L}p?I-nrLh-d#sHxQHh5a>-Z#L@YDH-$ZTszFAKs#V( zO;qqO-Pb_-`Z5ROk9R9H@P{*a7t!i{1NM%q)g}yn+kRZCIi;t`e@5k+IsVa9*_NWF z{xB_pN%xiI4bWGFWZ%73g`_48X&Gmrd_c(x-`&z0lEJ4}@7rvD=a$JzF8&=7dQCHf zZ9zRH$%ya2WPTAPP6B$9BiB|*XY8&oiFRF(vdYN9-%%)N3(eOBNZMH0(NKinDrflR zq2!uu?9-S_|AY!WtuYvu4`{hBvd!IIbJdI{?(@S$vP(NOeml-&qsU{AVzQi=D*tu1 zT@R+U%IP93dIOm15J1cPhBR4S`&G0OFd$yA8woXk6*`^*ZM5nhP2&fC6P^XB2fdTt zP!`&+6BvJ8T|6SIs)m9h|EKA6q1n&Hr=M9dh+jhPXeS7JWU<6w{u;}O{F$`#^74n~ zT7!PuZ8k`Iqe{YOqt`3eb%2zrG|@NFC7&2RgD*#i#~Axev@Si*y3`}6>}|h$(kNH= zVN517E7c7`ioSVWW`hbQbieraC6*WKS|wTeyXI@>OqtOnAI$dP6N9df)Y~`Mo<7T5 zXe|iq!5V`W>gIv|OSvuvjOWifiOF?y4nXXlKD9W!H0-6Hd#%p=tNc?x`q}&tRd@ z?KiIhGp5^h;SQFqguUMDT#8C=CT8y<)K*0cBud;jeE9n4h-b3wqUTp%X06jDXMd*M z9YBtU6j!mZqmG9QInd{EjLSdI3C~qbAoh+p6%B(@aGV$IC-FHO7OyUUR&fGw$q;Md zWRp?%6Ah5R9L2ZX@9~!Y;cHTlNv_C}Vs|AN5(?S7v-S|&cc(y9^tikrtn+^#qM4(% z)gR;p?gsD=nK_RN=XV!ci|()V=Zv(p(ksGQso01jdGH~M`Y5};vibs_>Ixl|p|lWlpq(=kc=pfrUXpFYV|7O5 zBoY-cJTG!^`pGP%Cff;>jCpMp4x6iUh&Texhnsdez*Swx;Q&8a8(eSQb`(astGz&{_8$~Qwc{42lR%FruPo)dVsBs zzDY_TlTXyW0isX~vzgF$qrKo#Zz9U!_xV*lqfAJuU9qca&fCI2kqc{(y#X+;3r&|x zonQn=al~t!PLW?Mn+RD1{ozbe6@pI zz~dD5Ju_?BDTB)$?NvRk9n&E!b+P{`yXMcD?m-nhr&@DUyG|C z{s*bEQ|t$3(7mK<2E=4f;GK?0_ZQ0gQK~V^Pd|CdI8A7>^UjCmhr8(`6jl<|M^#KD zSBTD~n$T5BEJa^>*gc0s_2mu-U!3eYlVD@Y8YGy zG6e@jFf+jvTd6(zT6okab55^x!q&ZYg|;XUT|OB7;=8$dA2uUm6|wa=9M@i~Bc5cs zVWKu1M<5&PGk7zb`b*}FksdhgGS7usC$bVroK-guql-AFTw4ZGSHgZz@~qXJ!OB zL$TKG*98Ky+dwbsTsqujK%=pDZj8RVq3@!Cd_(*Ua-JuP?G(rL@pjZ-$7Mb=9z)w{ zzu`R$$#=4@06qI`iPo*ZSGM~n;04wvjutkQyGbc=Iddt!a%lN*9Tl=er!=Tbd!QQyhFQ4X^ zZT|$#hK+_VZ-9Vv>v9Otp>u0IHK&Zw(kBs#lo&d`nfhZ_{107QR#}fiS4<+G*qACD z5RPVEPW11)FO)HolXUy7%>N>_$`2KNEIW0uJ}+p1}VR zKFY64aV?jvSY|d&=zvjYOT_O&G!1HvFTLRR+M850LM-vXVSQZ;2Yr+28{GX5ecWm5$}5wRUba`J+|rc1k12 z`|1Z4Fm?d`>t9(Bkyx3b46zM^WZ`DjhL-SMPkgpTAlhd?lk5t;b5wXhntR71O0F@s zo!qifHlj!xw#?)Lc^6Xz_5?wL?;o}0*|WLJ`2;x>dmHz*@+rG0(sVicDHPvWk?yE& z2g>^swW$o2@>QA#+^x9Fcga3__DfsYLIQO_e2|z|F3O?1%w+Y0uI>&B=e5AY{&1*p!6Ucbdn7DgrrP~VCnWvLo~ogiUn3^HBva8>dZp9>d2xQgE2>a@ zZ|~^^xwwt4K1Q((M@NzbI-~5K1C9=M)U1r*tePRvAdnEmzHIxh_fAIpOvksxRFAq{ zLSd8{p|8U7qLABRbLFf-GZk^-J{uP43wRf+>ee|-xbN|6vtc%2)lt7{({*KRRzmSo zH`Le_C%fMOs*;0 zT9|1+c&#~2{?H^s73}c%!7>wFs#NE0L87lGVqK;k(ir4g0c-63*CbBxVl;ODqR~w~ zs$PBB2Um|2n0OcK=zrEL`#)Z%>SFiT@q_BwYi_}(y4)hDKM_&nF`srz^baEnB{{2V z*DBrdT=in|htz==^bnhDsWVn5*vuVmEd&Xtgyk7F8zuNd7l zQx7s(dK+Y3D1Dyd#iHfXFY%C;{~`-#YC-)AHG0MS#U^;xkI7)gaGAHXeqo)xk7}Jj zeEvC`_$)Z?rVQV)bfJBf=v7T-n`7DNT14aUr%;MvWp%Mf_P06E*6FQ$Bvu!_V?hp@ zDU~wJBgWorRqCxW$OB{T9{K%Du66NHT-5wyq^d;d{`+^w*&=LxBrC3g=Ez&a%tg?x z&XPaY{=mjj1gQeWi9;CyC*4fX?G=?76*%J7hz4#9mFkd73ytDOraBPTw{ABz2~7a$ z{fvqQ)wE(HgS~y~>2T4ve3j)D@;hG;C|Qs;y$jS)N|mAhDmrvCB2wb)!W!LP`iX!) zwuE`IUJ;SEve68vaZ~|O)QBAp{KZ-zltwlwnL9Xvm~tzH$ugZYan=m;_mL!;_g-)ifeF} z-n{R<_rw3r{g#=`WKJ?UXRp21`aK)7p>|+z)3U-qkGLQ~fZuSe}o_I9$ z+pah6K>V`&4|=W3ZZf93g04=YId?O23DO8j656@<*lxSD4;pB@fQ$_9nSL*#y8b{u z9ClRMLW`6mR7-09URPm7O2&b8jk29IQeoTic3H4X?Qb}-wcB=moui1|q$!HqLYAc{ z`6-R1ns=KR*-Y5BOG@W&tCQ0C8$fzC=jc1_9e@>m8ExtN7jBo;#D%7Y09@M-b8=H* zcx2_DGnk&dvwP>%kO<$JA6dkuPc=>xSJZ2$_|Qz_ZPYN?vTJ)$X%xN3Ek9!VrMs_4>&Jn>u8; z`*J!ZvREw&_IHk8N9YdMwOq8Hr7x`x+$|OMODpJl;kbyL?2Z+>QPr( zcr{x1ACX>pv<|-)bCfvXTT=<-CkY^;{ zMC*!C)rdoU08F0$06v#8d=8X;0wq@|F2!f~;QJ{=mY?KYiJ9YrN-eL+0*;(~gW`Y} zcrCZS%cZlaxxP@aU4kthkfI*WKZh?!LS<&%U+IJr99F{2DUeLtbPnuvRT3qGH z91KFzlfterjwQS~Q3ftRDQSJs#JN3z?uiA6GVM;E!EAx2I-xMj#ekiKD}pbAorDBffTl;JR`o z_QUb!?vzY_Q6b?KSJ(=R6c5rL%I0RSLg37+52?9Mjc-6KZK|-TE(k^=C1yB@_XGVd!eGUFX!8n z!WY-&ea9=*aLMS^gg}m0T8sdLXj#;7J(+t`Oz9Jxjq_6bp+T0eM|i3>H6PAWYvu(y zd-o4;96kQ^m&8>LNCn&OE1ohF>+l1WZ@{D^<|`2eVbfVX9ABxjg6`SMpZan15&G`v9TRjh7c{*$_aS$ zP+fee0FvQarbpiQ3YKuelv=fH%NBOzUUGd%woofDxuLFUw~V37r>%=!w|@PD#l-h= zRw-K|zBRtr4B5o)cYa|?2_3c$UVP~u=kn+d)$zUt00Y zt^SLdLxG8(ow|`$yw;vn&lhkUv!x;LXH4cOKI+{4fI^c=4?Rh1-TH>g8 zt{_=l{VrM5_qq9R-wnKLVM3iLQB@Xx^EJ+S5^(#>qw4szwXk(@@b98yLo3VM$jxN_ zbJj{rQL^1zFg{^!kKYV=|Pj`YNu0Gg27ZIuJMISn%t-s|*h(vm{KHpcc#EVK12M4?bkq2AetZaa!i z7e%b+F0=82Y?Hm=r=($KsBC( z0u1=f<@}&wJ<5bYMzox5wpoGEJB}f|2>V+0i9n|8l<&D(Lr`y6$~e33%}sy#gvt?15Tey zU#+cw3Ohd^)o1o&Oc_>i+F%NtjjOlP?K*iQEEKoJv0Vy6%wLK0Y>?Q{P=b(OHPBfm zdeBrn8P3a_X2O!g5sqJ&MdqVBY?Ui@KX;6ek^rD76HS|@0P z{XF=tOHOx~CIpaxPaHYoV`|z1obPEK0>ZQe@J|7L&l&D;1G`#lVF@eR<3?>AzA=SI zXyU5oW+B;WQ38*+hoVC;^5pOya0}9PH_sdX_!@y_FOeOLnkVs~_VTwJCusL`OgW>? zPUHyu$8-Mxa>!I`qz(WR^VeiC%m*Ji6Ek3pajR2=i2#BuDCf12FvNYLc#q7Fk$5Ux z+BXBx2S*V4bs)61#ZJV=#zwa2A~MRKGp+_J8O0NZlmxy31a5Og|L$UqcCipbT%+&kMnIjJBfc*YL zWcZ1T)ImkMA@DU+gL8ZjltS~CV$g^3IfkmKMJ7tX;zq5CQAQHXf}s!ARyF1zU4glj3`G%D*s$Dzm$}T|&U0a+d!AMt+6Qt(!xW zrQzsuh_Qe{FQLmvhzPC?A#m4Nj9hEkn(!es`?fsgw}cGyYESaEyNF2&P1ZhjzP^cw zb;iXceN*T($Ck_@P^n=jb~U6i&-X^_SclK-iy7@C&DZSsmre8+rjb0EP$9X&d2B^+ zk<^m8Xz}8_Pe6m7{H*sQg{@(;By(KGV0_~?dA&SIibP|9g|UBf0UK+Tziy5N+#Hfs z12Hutzgxn@tb0mKl+k8hvCcAexFXDO9wx#XqBQ+&?J0Bp4Z6^jwGM-uL$1?9g8O6( z!UwI1BIfWFU<~et`u~u5)gm<3!R;)GHVHV#x_=PcIb= zcIwM6E!PXHZ~=ZO&^4J^#3I<+hqD}}9i{;tcJr@H_V1QGN&f+Mi`NgIg_%bf;L<}7 zgvjBOyi!TXr^jq6<~<)Na$a`)Utb8|z277AVQWK8(k1l45VYxbs4Aq|V{e)007C-m zUEzj-hf#jzOb-~RUP?Q58g6fEkytP3xY2r4^VZ)j{ZTYxoT~frB%-zI+kaQeddpkz z!v?&=77%%HUFEJ{Zj3#08W4a_g%Ikn6c_B=b3=0=Z1+j)KGAZTThA}iAUpL9JryDF zuL-Iw#m2|ic;ev`8wR3wVgIj$apgT8JAS(*FkkJjIr^n@u)j@^Qj04xRA0Ac!P*@s zt~u?X^=GjQlsPG)wkI+=(U0aB1R)tP+8U5J+Ofe{A)BQagVj~$ckTpy-Kd=epY)a~ z$1O{oJY|Vxc*|^ggdt@^x$%caqhnkIg&b%69R8aje&YZ5o>z*}TO#cN4kqu7m(JfJ z$V)D};JA?O20h|EAETYrF^&k(yi_Gk3TSL;uD$-P%vZuRx7??fXC1rqzy&*dIu!dl zr2K`%E)tV4WCh~(lqu4@d$^RY>6fKmnPAV=$eu|3R`4CR4?Im@B8hAc)3%lCT`6P% zi=1#=2}f`Tk?oH`Jz9$M`f%P!NxdEvAwlA^K7d#rvuxN&!?Mrm(+`;tT|_Db%1)L* zaGzv3kTp=_d4!H)AU^B;W)AecWLp+pt@1J}BBzwr1A;l39%0&=e|TH++>z zgFpna&OaWzB1`dfsdga-GRa*Tyq(F6I%wqnM4pkGv`O)%tWE*e?w%|>s!{F`%)0x% zW>qBN|QfG(ktQn*lfd?%tqY#?8d>c}v>26;zRro14vh z=)j<=6@`YT+3mM0;_;G!;(6P&*ag|@mp9zsRbk){pL(quT(8{T^!HU>rf$(PsAvBy zJ@GMHZ?mq@@S485~CZT>J7d*z(e_ZPVddW*nu^G-@?| zC!^l`MeH@{0ZfBRwhg^{P>bJ_S~dAdBk~+=UTj)o6d0_$4Lue`WH+}Um)Bt1qKm|F z5)gUlm!u6BkU3KRDl_XF*3Jd&O*i2^Kxmbw4N4!kAtLvh(3meTm5HknZqu?sNmCN& zM`Y0(A@71QEoP$#?&=1D0?XcEHaQP~^%RNm5iT#Xeup8E+qw4~BnVL6JkGD^PMo+Q zC~seV$cZOl$MA65O4pNg6XvJfe%Y3>gr*}GJMUD1@6#dlcgwWPqLadciK_2c^O1yb z8i~DdgvD``X9C&8CqIplh-vOa!QxU9Y-2=BvfVdk8mF|LOP4Yu)k@DuFSb5jO-)=4 zVZ@XBFV={%s>st}ujG9f$3ZVlwVy2~q^7*H;R6eevdot#h2pdm&k}68YL|toN4lD% zjapul5ZLf#hM5zSfuD+GUz1jTh_THXMJqXvV3fDjXHWXmMw#ovaTq#>fuc2;uIFhEpM|1&sJiw(%>$Po2%W^Jz%1L!3asOn2G*<@ECRL4jw}<+W=iP8 zHUns;xb#cyMygrg!kfePWbQ>b61>qq+896lZ}6YKIg1Y6Jd^90lWh}}DgBZ}C#toz zEG?XB@(%zy)XX7JEdM!M=e26~>MaE-q?^qNG+7zVR!%PGJK>V}h!c~oQ?PwgWKb%O z^d5Ld`IuP zOi|VyaV&~5hPn4C=>lj7(f9}8G8SDERm^*kNh7}vX5P2^8HF79Rwtktc&|MTNx4`K zra=gL8d>C-)cj`izBN{%cHb8-@rab@{YpCD9?`R;&JQ)Uej5Dx*uD_>6TGbep=lhk z^sLn>KyJTTExC!VX+hN-VT;OVb4M$&uy7HVw5++vjw4a29mE_4QsdB~nVHd~FkIX& zav_1}JL|VOJq}~Xrm_Bk=R1rp1;-7O ze@@K|L;E8At>Bx*kE66q9$qsva6#=>hR-vHhR^o*Fg>gw*6a!m@}yA?Rg7__27Lmz zJSJDH$qg*{wwesSWLV~W8*uJudBjtbc9?;#)vhhFkBeAF)wS*hyf=$x_Tw>i=_2tI z*oJxkiJQEO@c|BaI#4O{EByrTor?T+>2QH-i$A%~JYbS%N%vz(?1kvn!2d={Ol|-5 zEJP_{Hif4r7koU(ksbU_TvOF@CiwEMN(;-qFG0}>>m$p`H?zbW zvqYpuf*-{gQr80YvIYjWRlc_NF$&P$6kH<;P=@{kl&6*e`;-DCR13ld&}I4_4rZ|C zM>_@AXT)mL6>iKF628Q^yw#3Q1>{NNxRjtOUuX(T?I>*9 zu)GE*OfO*-QN5u*Bn@a3{G5mxhd_CaSolP0kFw!dbF4*cofo4=hXkM9suKcM}xztL976b^gW?8g{mn(u7}LZgB^{_wfCzD$mh1DR!DJHka}_If^$grt2Ch zJ>bmE3!gtfe(@T;pmw{as=7A|DV;ydZcyj@B_6t!u+KGlX8^`Y!20{{<^R~KrWdfiPCA#_7rHLG0PG+UV$yNnXX z`!YvNLT3J$fiNy;SA-K^^BJ8+I2QLFPa)Qnq{f>s!1*6wp-4}Q+$Dyq&)^(^7-Rt5 zSA8R=P%OlDcJW%2?ZKf7pvggd3{X{Yd+7ce3?G9V{~`$xNFuMyY@LMrxq4CbC`O#@ zxbT;crBM1~zyQ1$bP2LW4_;%MHchTp#n>SLm2y~0Uy_b0f z?d41641Ob#RyfT9nII?e8fHK`7L6?WX%?==F`>Mx;k$5YEZhoAmZx0pf&|6C*iz>z zqzUb)BSb6YI2^0UEH0xN%$;5~{~cgTs$(&cIU$n3mleWkK(Oo{O0o*(FRvK%4qCnH zclwjXlsG9_|DdYR0u%WMXc7h)7aBBQ6l^l4EYT*?hR57O`~-@>8j}0ESeoRQpq-cI zJ%ocI&982FCKo+NdgLQKKD`}4y*YlcY&_w?)E`Dm7IJA(T+s|av1&OIjFv2aUwMv~ z1|0%)k$YoUV<4<$g+RO1iOz|g(2=0`=tW;^xy<;lMdkv%zo4asFLq0#En)=anfwjf zL?QP>k;zRbSwRET0K-HiQup>z5XgK~5CO1OBp@T1ABs3$ppg?ID#btN+8k z4@J0k@Vex(M4yra4Oqm8SRo&kwC}C~??3th&r84LnyW2#n>zo=0d6bDylq{}BJ>@F z_s@>!uu*RmtjOZCo~KZvh-G3Lu9A^J2JoC%ku!y*7-9Ym3CtOKtQe!4^yypT;Q?qM z^*sA$20_?lalip1qLej+N>|iW9QNwQf=jy6Fdn><(sis+s2Y;sLI}??*+J@R)p*qA z0H@Xhl*M_=c(3J=kldS{e*i((%P2r3BW3de+I@O4%5uV*(w4FwIKdEov+Vj#DBX;t z!uE{?MmftBf1AI`<#TmhxSdb9Q06L+UfaBpp=1-WuIU4>>~WSKe0Hj)u}X@3 z4pBuST8S2Dp)PTuuhE&Z&dXrrTNm);H)tf|;vu2JZofBiazy{x*2gZA)daxWUwZrW zJNGr|Nm$K{i_<{-cQjuo{k+>Nk@ z*X)Vn`9|jO2z=eXu8Y(~=taelc`)8!ri0Jve?M^Bqovv6XO#VX*L(FIKRT3%{c#bm z!0%BkFjPULa8UJi#a;_GujEMbjawHemNALBgdTlQ{bl3QwsO_o55d zi{l9OG^NGqDt)oJh2n|oElZ+xC~&jg+^6Y!U0rB{PQIfrrmcQpu3&rwNiE} z&4UUx^Fus2hAbbjmx;jWrBHvk{N8frA&DiiCxLhM6eWou=>AXWkElJBPl;%+-dO$x z+8v%+FQC7KO_54YH3K*sZT_l570lLg)A3HFwnYM}%{U466$2>Y@>mq(iTZ-U!yj1^ zDzZ<~#}Y8pf>tX@$RlVT7Cs)f<~3HyV%G^`J&%3PJ-q+W@WW}PR94&FCq6_sa#pIB z7R!6SsSQ78?HiDMZm#`@h5h%1<~)K_TGv}vz1rjVYHZluwC?_PSxrwu`wrrKcRHqp zE%iQ5}f#jP05e-{xLP%QK_*JcCAk*CJiG#O7i0 zM0EFeR;zi{Xa8105 z9sV9T{ciX`{C7HB4EVbn>9zGwh%#I{NDs6+7;VVCC*Gb|79H^4_3ZdhDWy_E&bmkY zSK(WLU)xRJ^nqw;j+>ln9itvLU}^`|Ns_iiJPcg6Mn z9GftPdS~%4qqay2^-QaEl}3T z?Yr`nscvg_^|1i;nIJ+9gGs)Tv`K|n6n%SYDM-T%_+`G7%^^BaiV&wKU$E%9n=a#8 z<)bY!hnM@lb=TMR%y&7g1vFzl=~0zMX}$cH8jm;SAk)TJp`bm`U3w}JjE4X;if{E& zRI=TCC3OfCnWyyJUgbB?w1_W=iyQzS&lFE7blUSb(INEA()|{(f+Y=kJJ00VNiqMD zT00TcEbz>S?gDW2-1Q;RGFBPPV=L;yC`K=1?)Q=^Eyo&qe_>KXNiBzoQyOZzLvM8V zsQgga2~PcO>+&9ACTR+JF)iZ~nG?{ykYPxsGfVZn%+3niAT`Y5)RqG~Bmw&RkvXAN zfI$+NZG|GwYVbPxQrZLni8gTx!O-&i`Q;wWHDy<^vj)VM_FCJvgK|3iOK?B^y7Il) zEH^Px<>|slbdKSV0`C0C-~%UqGIO<$Qv2!FAnY>-LgBwpA5Pa*Ta$l4pZ0^jFF9t~ z*MO3B=SR$9fGYrr`$J{~$?&tFlW^IS;_gIU&B#6$*E2)Nqq^C$c)8!Elh~P9o-E-S z@fs&qs1*NpN!~|{Ve|oZ41(j3_{R?kx`5=?K~m+pfSX#CHpJ6lK$qhmw1?NEz_h{C zvCVyCyu_|aw1?=J>>)R^D^AG83HX)!*}l&f=MF{mjt2UNNZ&bOi53m%SAd?0fnWV+ zf?+1n=Q@xI6X_2=Hb}?Y-yY|a*F>6Do};=~J!;DCq0uR!Q~m?ME0Oz%L2rhK4S*x1a(oaoBs6Y7xD*#m7)Kfu0pHE$?~EBZ zb(X1rDAl5j9|Z0ni!s4QXR{dJ#)?Mi=K{B*OOy`DC`1kBW^1iuoi_?ij{T{>E5vU_ z`HqGww=a2{f&M<%D_{zy6yp3uc4SGN5HHzjCXaYHHZaO98!s0z#_Ow)8|VZ9)m06Y z>83fAX=EAf2OqpKYKv^tHa=x+&;quFR}M8KVGCOdzbN|91zn5a7n5rI*!uxbrHod>$tKH~x_Ra&P%*~h2I+ra;l zK`mx;@o^sySXHO>J@+`s;#c*CKcozqQ`Ju>fgxJs%~7tSIYZ6P%I0B1a!aaW8el4|`G)wcK?jD<9t zk$tSl8N69bI-w-o79dxRQ*19ZBTdw&R+rerZx%EtcCQf+84tc+1nmDI;SLwr2r!YQ za=-1`fBra8GDF`_l`MO#B3{kCY5rBr5$-GBl%BY^6AA3Fp*0)tF(Tw`*Z_bXqC^z= zPSY#z6@)Gm2%en}Ks^=1F`HpRR16f)0qO>OrPPLN+at-;5xX(%K=tmk=UTN}f+^@H zLLd4@twGmsz#-_dLK6q-TGJNZ5n=XjdKfGXV~~857slJVeaTa4IOym zu;28WK`G25ZC^w~8{>459qv_sXyYCiUw=!nP9ptF<+Zg;n?QK3tMfbHH+;%hPZp0X zYf^;=!3r*{h0@=T>D$Pjetc+ig5Qs~@&K5IxqrrdT7wT?gj?giu_UMc3u(H0Hr;Nw zjpkN{#~LwcG~J=dpoqR6ij*<1F*UyweModl*&ZbOhOmr(#~u#HSAU?3BdNp^seI4> zs%g3GBcpUh!rsX6@f%CpMlnZS@odLf^$Oh^+-Y&TA7v$O|nf6lzz!OX2!d zdy3*c-ss=Y;s?3E#@~;I3=Z*EV=N$p*;%bsVnc!OX`?3iyz-nP2ZW=SmGeEcEN_hD%Wn zwuv3ED=OJ9d!Dy%KSocs1)2Efx_x~)>MXW3$CAVJneoso5V2>aW@t{K8<2;pD$1n# zO#xpLRu}4dVs7y@Nkn2o)cT9`mxABcSDWnf7v^Cb^&Ebz$GTm7ym~%*&54u8x&LeU zatrxTj<_by*9)J64)Y=+d@Sr^al-QNQ|}ytI~O0!KRFg65}QptZJc9Vq`?cZ7WdQc zcg{9pBN<*T%N+l=WdZGi?6&@IV5;f=0j4CZ8hXkWk*{gDiqfYLQtW$|^J|-AH&L!G zugmR=C#l24nm`7owTboQZE=#N!`8es05ntnlKrfson4jYU+he)yl?f{ZBXxy!^;y4 zbD_3>r5hz@OjK%S!bYKj%J=A%A1h8P3GPJAwdB{ndtJ3h%g2~`;C&J)s@9^Bb#yAg zC-hk`Jbl&2^Br6+7gCqM;utzs^FLLOZ8$;s?ql4*cvZlJ`*poYnQi=45@~fFxy?FC zjq5Nv^IMg}T&;-OEvqPjkui2F14zz28~HKR3y#~p@>X2fHuas6uFR#^+m&I8YBarr ziqg-y7BoJDX4xFsMt%hfbEq3`47-tBsw7Wt*vjjuTYLFiUULWPz-ZHW2Yy2DpmMHn zDSZ{M@FqU1IP_sJi5*4<%NlKIEG3cb#?Yfr%MYEdAfXE%HIDuM=3EcGjd9g;3^t!L ziAhsX8Iped(wjl%l3%*HKfB(}`o3FBkK-ZUGE0bnC9@5fUl|al2yP~iWqq!sMmt05VhXSl z;NvjMSjOdMTs}z#zHom2N4nky`-W0gU(SQ^gJy|*veiY;C&4ASB(z^;8_Rs@QT35h@ z!g~bTQ)Gg!({Q^lbB$H6TEAu1dIxJ+&l z*kw1N|a4NMj3yMB)9Y3evO(l%Wv=Z|>1SEemA7nqvcB}+Xx;M>!oFJ~5+}A5Dkq``4!V%>M=_$r= zK6Z`MixJas4{bB)#DeE$B$$SF--(KnA6ZZNb^#LsugP?Ab%ZR!`qkTNpD;-2l)yJd zEl6Gy(y7i5Gu3B#fF_JmP+SoT$@M)OssnYbnnu;0SRA`IMPAwHUshh3sVyB1M5VzA z&$En$zIZ@%dx*K!bun>036?kR5o1fb0CP5q96MEutapl)T84jXg-X9#XdK?{zrb`C-VNzn% z5-q_3Zwp51KdF#QfU^U>&C6$FAI`AJ2?+>{*&nZ<(OefhyJUQ*>85jr@xxaN%@&@Y zqZ-O=M~1^)YA!iu=T{3xD z0<$nZiZgm6a4-hE=H6?u-s*#wUECO*AIau<^yN!KxTUCGXW-w3Cnp9q!MYn?KR-~g zbmdWtC7gtwcDe22k$4Dnq>*A}I4phn%=)m={53qM-Y&_-nXu)!)A_kX0V9lc{*8PH z-ZdRO?+GesOxbz&W_Kba*JARBX(6BYAi&E~x{Ws=Q$3bhjkE4S`M?F6o3f*gPAp{% z*EQhq3;p~L@6Y0E_mr>6DZz)t_)cDE)b6RO*!A)r_N z;{s9gmH{7qivFnAB1}LeJjq~{zc*%laVw|e$=m~F%bD5=*215&VZan~+h^{kRb{7B z>0sFWt1XfUI~mlQp>fQZ^xVbl9h+C1s1^qrTGzdHUMNb`bP!sE@2bh)&=0^0Y?Tp5 z(k!lOXPJYU(g!Nq-RW7Rh$XN9Bbe+CP z+Fm7#1N!GKioNntH-`xGu6*}W%B+FiXv})Dka}lXk)7q`e7)tflj9$vz4ae+Z$8V% z*CvhzXpwyw&l-!olW-#Tpq%}xSpGEIfor6w)Em8Ua#bCZi|lRLxANK?4*|9seS(i% zJ=ys1#dJlEqt(e5*7`G=^(D=^&Gx5{E&{%XE9$o z;V(69%^EXh3B5bi@?W!OvfMoN-xu=Nn5iM*(9`Q<-)zWUcSx4gSs;;TB<5+SXA8n( zbiEnm5jPYOkqAaxNXN_2Ew~Zs$#(oUNl*Lm{-(6+iNA+x83c(A-m)*lIm%&^B~;lq z-HF|cca$2d2cVhh4m%4Ejs#MY>y~*|&M;t8t=;5xNjn+sc55<)UJg|DTR38UiQj83 zJylNkoJaqwO@0)yLgG>zs|*&!=b21tcOi5y`7>s!<5b*QX-L}r7~4phz$pC#l2-Ux z#qIggEYPlfMhMf)I)Oxbg{^CYR6#@>)tf=-Q+A8?Nii9;8b@`gvyTGnQ1H3qv)PjLShq?clU zS>6}Zz)LRWe1-Gy^3lOMLCnQ>kNFvc<4^U&7PKL%BaN8oYwFIVi^w4;Oueba#&k5W zSSV;Qwt*(pW0i|+w3#Ai@zs^ky40Z7NdFA!0IUHyGF&vX!|p>m6KOKq^kQeC`fWR;MWbU9H^;}fONXmE0NskxnneGz0r%)^% zGo(f}U2{}U2?ECD-suQE_mXSAwC}yfo(qZVPF3Nc^$7As0^z6qZ6f z*s>GwX`!@pL>9-%+m#y-g*XJ=`#m1qLeWUZS3DLE&fMf+`1AWX-F%iZu8sFgHm~s0 zYokgKDe8o-esezV1=>{(CjNveX+)`U*VQX`{D=iHO~yW`_+E`$azf{;0hT{-XG#O` z9=1a?SzLUC!hzq0+)WnS@)+=VL{dbrHoFh$Q#q8(kLg&cL*CFnfc{9VAnukJR z<$K)MMm>|U5b|*li6%p}m};6kGp<}hcW^xA35ta+pFBWlr)H~S!`MrDR5^1c5KUdH zL6HZ}`nu%FC-7?>WOY5ljhZU;lAJ1e3q>x81jT0U&m>S8Q)h;ics#;&N`B9U&ZP!G!X47Xm?S@!KKJ- zE#%`{XuYDcZ`rA)blxCmc3_VB>6wTn7)(k#gLbvWcJPHORnCDeqA&GRu8$do${r>dY$$j+x-H_0I7U(Bw zOHMq=LOQaXGL zzxgoQ^Qxk<*e~B!wm`s&3GBTIZ-#)A{{WTBhE>N6r$X7)j)#hIG%`QE*<@dhXHxOP z=q?}`X29y}!c+kI!HyZ!AD*WGzqJmXy#{0o_0@4^F0yP41>7748OAYEOx@(QTkyo*D_(^IF@Subrjw6!X&Qzp4hHkXq41Ny#%HG=E;x$)Zy*ITgqk<3mKYdco_|u}j30gGibP2)0RN-)JfHJk7JkvKf zgY0c$o=Ti-PU)XM#VZF@Qu@qPysC?Hu>NVfnlC<^BN{wZ3U0y?s!fJ!>@6 z{>%3H$9@uGk2P&fr*^!i{!o12dkTGT9)sV%o<7%t;woAj9R)w7VDETW*<~91vW(i9 z-utY9yOOH`-;pDTkqVVrB}Hg zlDH7jQ9wYIj{g8XoMpLN{sC<_=(BsV3SK&Q66tBixp|F|+~+CrySbkAb4c-8*nMiQ z7?qD2+TMO6n*}kz5@Bq0>%GtfQLAfVZ1aj61yVZ=rwtN5FF}WsfKj7txJ$7FcPR|+ zn?EZ$7CT1v^^P5H!2ZO;8yDW!pzv6)_M!ic?dr$ygGQtSK~)sqZ$1>$_Hy&Fs%MCxxlpdZBT{Bu)*t?XCml_ndD$#(&g0EZhjoeW-; zWZ+4<3tWYraG+7Nl-A%8?}esBK?3Bwjq;rN*Vj9b`g7jzY)L|2vTj)W3*ME0n>|W* zW=RlhI=0>cyx}WQo2&EXX3E`Od7GT9wHVSu1NW)D{SWgC_;|3~af(1qLngKMIApZi zGYtpo41P$7+UNb~^=#eXZDx!I>6fxn7WBg_i>R|>`Sfm6Y+&yX?~XoNg@a;jW~cA7 zzqk0w{^VG1V6)^)+ZA!G24XP&MIdH~eL>$3$x0rv5zHztYD;y{lX(lMS;apB5EJi1 zyJCaezAJy|r?t5qUjPq={9@N7zL>017V>c`_DM*dwEtwD}3Y*U2TNnGkTM z;eq|35{o&mJ;l}u=HTIP;GD)g=zcHcZ_*`h6(ho-Yxgh9$#enWDbDYyS02jtOH#0_ zLAZfcNOze-uz;@i9<75x_SV^>Di*7gM>`7fK7AmACcShs6a();;HkGZPj`fb=9P}Z zG+TY+x=d+WIFm+P3rZ}a^F4)4q-hbM10c*7nhW1kLKh0n2Lv5Vz}aH~ObK6% z*Diwhkq+T+lvOgiu@!&zdbUQmR2bkk1vjUwoD3alCks4_l~g*7vhPDqDFzEIkBq1y z_!`UvJv7e^4J#q#yX<1OaHOidO>| zi27leq)VLmmb&iDVN`afi*J}g^rNF=merFGjW5Jg zRZov6NeiERN9aVvWpr?gqW58ehl!EeaVkW4dOPrq0U`0S-Js zv%t8vY=La_AT>8|eUf20)6r$RKAaWfx`z+hk4aRWrnh;Q3LL1SQE$+Mr^Rh9+_isE zRCuX}iqNs+fIu$&S1!Iia!nzIZFcB^%hR-8 zv3}|$0q*lmDF@+M=UamM2V8`~s>IXVEN~xfnUO#7U%uwwOnH92Gv4ThW zyF0v*#dQs{SU)A3xFP ze@OE(#p{xLk6e$l_S-5jJKH74x_YitaxI+pA~!DbL>4TeK(|tdE>1u0^1a1m znqnTx-@hAF>P72uRTs)6$;aFAf1rs#IGK9w-m5?q@rQn|D>YOtVp0^_@$^*o+1ni{ z%dP0^Gta-QPRVf$z_=c?g(@w4cMCk=z*9KdzIsy(DZQE7*Tr(zA|$r!jd}x1RCdr4 zcATyG{HIL?*}84uI@z4oBf&T&HcdD=sX%G*EDx!sP?Y){WOfSUeR}lT&QD8;RaWXz z%OeCwmhJmLz)E==Fi}H4TaE>ILam{;c%2MQ1+)UE=5O&5Z}I;DxCwyw2*?^gEh7OV zq}M#;m}xbzgdo9!r7+9n$-YawGpc=n>NFD;PzzT7ZY#b+MQFXRe8owCMc zTIAx79me8<>$#;%Z|)Eh_EHOCVR6aV-jzHR9uhm|G}GmDG_fW+mJI&@)@pK{NqP>SP@dEh^ssT|w&JY?7P=KpvW zeZl_&Dm|zugdc=a04=m#Iert9z|?v($@8;#<>z-_D}YPXI;F*&r_@_q@496@eYO*rNTXuI60s#{ zB3`n;WDH`i`b=NAk%QIR#D&xd5Gk&Fmna$~t}S&gI53j0vCD%0!3p1=^zy^jWuUnz=YTL~_uxI2L$#U&8jtx$@)ySo=jAXssC zcPQ=@FS`GHXPX!fk6r@Y+jbjuh-qeFDi^bPe`GE|@LqL3 z9x~xWHF*8%_DkL(&W6;_{IbmZjmEDJh{A3k?c_n)hH|6-LJ|<~IEuCj+cWAtkZeM{ z8C|jKHN}DCpD*SDnif2+V}-7He`~Fz(A)lD3+_TC`$|p!LmKtXI|}QCd^w$zDC~3O zACZ;|`Kggt%A;iX?Zl7PD2oNPTzZ#;E4g#wfF@SFubv9SCue6D8@F zVWy;Erk>73IA|C^Z$mV4keduwSGp&mdw%5`OfVHU$EG-Ve$}BPutz${75MP5z%jqG zu2}z7h=M=_59HrB3;vMYOm*6~#U-W!vCZ@&=JB?v;k@Wz7EL;dJ2JdQ3;>?Ajnf1q z%`&tPyKlw@_f20UFn^r|(h)ExUtZS%5I2?u0V4d@3q)~H zJvFOa@odR%L2}XXDoIHw97ArO2y-F@&_6c83P~(D-(SalGnZTWs#qC~B|ytBgfwFu zcrHmwTyM`>HK2q$P~%@lTtg$1or@Lp1APYZ{JNY>#jKb28s0fl^~Na>gkh(%#k+_% ziG49|7eM-?g?~&c!*1)0O~Bidf=((mOn60h{MM+xGPfH}WVFpcBlo6W4yVn-H4~|U zD=5MWGJSV3bYEd~o*_M?@gpwlXlX_$Im8I*Y7&A*6i3mqZyV!%%%l zFR~Ml_h9|3ld!E6K`c=(^SQ-OG-eQ`;l+n~bfK=Jhok9g(m@@!BtYwxXs~9yNA)U| zAXVs7Rb@2i`Q!V+>a_QMZMrh|B$Ys5fJKX)OTKOtxW2(mPhV^?K?!nayBbCvlI2>l>cDPfN32+efeCK8;AXwBE&x{GNsm$NM64fr3{_6ay`W5l*`-9 zm7=5rHJG+8j$m>(Id@6GzHf7Cf&QbwuUjnEM*$)_JCD^LlUUM&Eu@5*=J<6qzLVT- z0}`u-xu(eLS<@Q*UgKCh=cd|hMk+51j&m-PG6)J~{j z#Lr3*0lr>}eP#9-1c;P~O|+YT6yNk^SE!Ocf{RSyGXs3G+8V98YQ-?7F2(WD=J!Hj zJv>tA)tY5Bm(8Nv(J5mk?wnO`I?S~+-(;%!j?8%sRY;wYtOI4AujFm5>fe5^f8%-w*P$0YG8Yeaa17#kit$ELYa$YJtd1^ z;t6@i16j_e_P=cZ_0250V+;yrVmq}#ELfmIYSEsu`1pdlNzBE_m(LBiBtyZF1 z#LI=xu{$OmdRHSx`}!fSiJJQ{Q@=p(AJ%WNz)HmGr|$FlV9F_uSl7BO$KLiD!vE}% z>DHW;5&CgTSGK#w8Sq+rs@rHa9QRcOQbchZrz%2tLxAd}F7v0xp z>&q}2>7l$%SGV0NU_{GxbbKjsyRp<;n7uU;-+y2GgK3amWOf(oeea*`7&iyx&SbCm zJN_rJRuvC!2B}Z%a6A<%{1=i{sW=@(^3o|6`1HlB zRt`cMK1^OgReTMEZL_X`A#^FNn7vcE;IT$f_$Xb7SZcXp{{caHh{7w4P^F8_3^OX+ zM5xT-ZB%%`{AlT))i+T>R(aKsZ| z^t_)%=wkPgoiG_@tpB+Ch`Aa&dKxc73AYHRIB;b5N0_&CD2aE^--!4NzbgvfmnAWi zqkl|NWgu$5;2Zd|1>l9emeEzn)%QpwV>sQ(24eZ^%}~*Yo;ykM@^5^h z1e5<{m+)+5mK??YP6woK3i-m{Oe^;Mw);ebU6VPHDOu=HrvaCRixFojl$0Kxs@!5T zxX#Y2TN;Vlmf<1aX(MRXi~hH~q*=-1Jw=69cKwMe%p0q9EJN$+hj5&#?e9;x+#?}7 z`oT1U-4`1AMp(9y$xKc(MV^HIi58rdWBC*@1I4jNoR+adNn@5m9MhpeH)1N znpyO~$5I1?_wHoIJ|=B!VwuoVIyhH&RyOBnl)3`{@+jRv!SBujCA==-S9dbSSJ#ZY z)>t5VrXuiI5e({2DDrMo#)Ae;tZApcCmk7Xq7U4PUm9o6vx;&{V78=7AMU1BtX%kJ z8&MKeEaC*>^?qhK=ebtA`}8AENKGR;u20KK&+5G#v}TX3h49e7UQK~kflvXZ$i!kl zS-R(*wQUQ~*5spcq_{1fJ0y$R)$X~gA zoPIdWOo84!(=Uxjjr81~ZT6=jQ6im76N9xq8j*__fa3iK$zv>Qp&lvj*H_x&_mjvk zYh{P?etqj4{kiKkzvoA~{tL++PWa@TVb*QqH)+(a;|WhGrn2xJbg#O*UzkCv_Q(rh z2JabaRe%(FE28hQd2~;=n)4X+1_-4 zsyH`5j6jApBOOhgY(-4}UgVj+bkyNG7(T~n`x#Jgc{?Ck3B;!b>-`s!KIu2-aUFOr zRzwgGDR!OJ5vD&PZ|SAhOk35_Bp@9GeL0Fq>c=omrV}41vCArtFH7(8p_2KUX^~LQ zGd7*Oe#{aw<22s(IQ6#8$XNax!D@BBCk0t&Yigcz?|HN1T^Mza)zQ6r(e@V6JzZo6 zAF=Bv=3}ojg=o5lP-_MT1>~a%TWW z__dtvx4aQ>lAX+(@1avz<2*UZRW+l?are6I6Go~gTZ$QV%Kr?$zn#ynXG=*Hy626T zMOH_|KL*wI^ygb6)aP?NnsK^>q$Y%O*|HL^Ua32asGut+`Ju|c?1QEbpsoVH95wSH zOfzr-M=c;B@5H~c;4u=ugA~T^TrPaYZ;y=e2V1gvL=F3HL}~q{H&{}^_JU! z%PVy-qNxVRReN(-2mLBOyRBJTGxl2zbX25TZ;UDVjrrkCNXTUqozt4gK2+v-y|6Z4Kw`C1#OHM-U2ampN~ENr zFO*N>_J+S&-IT%#ocb_ao1c1MZcFxvA&+MBa3JQV*}K|p@=+5Xvfq&J@4qmrhduSw z9Lq80*@MhkoJwZ zh%`JCc^lPAmGrg=e;jU={RXwt1%38809vS@v6d+BAa`5MrXq9} z{S=%kc1Sb|^!z%nsz&$w;hBw7ux!CF8E22pH0x12m6+goXEHqnhE9>~h)BVIA37r0 z-q4#_!$xk(@9Mg%1*brY6@20iDv#>Jr-|@^sanChr{|>Rp0R2oj-TlJwSvb}nYi#R zsC`iqkAW7tJoVEX>6A>&T zHYskoLI#Wg1Nvduw6)H&oCC z*&eg>@D7O71R;0$QwcW;KLFNKxDZ$xM0}&Uqr?Fl0IFG&h8hiJrWcs-;UuU1dhUbf zsscRg!u0X7XrJkJ@@nX51zRjuDy7g>r2>d>XLKo2W}`l+>7AMU&_64-^UnS;!c9)X zj!YBiBxfES%Q}>a!q=#Py9A__NatD2MW(^d^TW%pOcVGi&yg$VWo~7G6pyyW`{nkJ z>kZ+mjb$^npQwYArwd+(N?p~OMpVaM%jS)3d_oAjJi3?|YZJuP)G4cF_`%4B8vN^y z=lN+}8>Jf*N_r4`Ecjy&d6JIiX}*eg*^;Y&GQ9!L`{8QK1@E8wjHx1`zG17udD2|x z{p#8pbTD<4m7f$?wvZb>WrWcy1SG+f1M$D%OPVyNsJLc%TH4jx*j{3jz2f=y=dPl- zo#5?S4dKba&5i`9jxfTVaWq8}{Kv%H&UxTr(2xq&}rWRq@4h}*dhA3dWb zihnTa+gNAagVj{pYP`3+Hm4*|1y`^18g(9Vz<7>N~=-#gF)3=x~U`@B1oE^%(@mF{uO+9#*cM2aLY);gO%55j0xLqR@9ld-QYDqEMv z6vVqNt6Z}d5ih2X$Jl0xg_G3Oh%;MEV? zbg6k3%ZS>8@bfgfYh8@kSH{DQ(wK@|4L&QBuMYP0=)9h|S2`b4S!6l9uedGyxTG9` zGv4|tGY_+lR-rCbR<9570tf;!_!Bsi^adL__WIIaJL2~I z=KKBxkWmXtp`6s5qg@LhK_Z!8qy1_aZ5}(&O1?zIVMa%{S52B;MZj$r%JEGLScz>Z zZ=w4*PZ}80bu|)vG*d0(*1%(E5}Cdg%{^3=rOPPH%iOe=!OQJ>qJQ7&7A(Q(47ya> zqfSk<%~Van_oSS$79eMrjQ_!MH=9oWR#MXrtP?SNpkwu@t25tZm_AIkT-iq1T4cOA z68|P&C*l*mrAsONi7f~_kU++b_ooa#+DT) z$z3UD0^e`ZH7-k{iEhz_Vq*F{4TFUMX18eiVqQ(#n!u(`pe9j*2zY0t6sR}9Cc61S<8gktkxC%Sk=BS6kK!GboBH);f1+lHb3Di>IWO3 z={{Da&q>&C4q1uK zv63_?_EPp6%{q>^ATK)I0DMo2IlrL#>aZ2Z`1)=9h?!al{RMA=8wT(FF5&1*0`#8K z`FQl3Mk%B_AiWZ~sx8*>m37hAIn8s3_?Ebm$CXMa#1Bsv5XJaHNHTeeidVXl*Q4W< z@2V32wTkq@B=_LwZ{NRLBi6-L^BHI17-o;k^39J34MakU6GT}BlyY)HsBNS|NLCl% ztKl#z__&fza&1bSxDW?a=yIWXPM{GF z+-M{RYC=Y0iikUfeTCk73Twe<88y;aJ6mjqlrS2e3tidb*CMXsV5<5PFH9HK$wh6+XM%7mbu`i>! z9ZRGQMrT21d06CcvrNGSEssitU=%3FD@m0DZ3ZlTKel`>&_O3yo(E z?G z0Sm9Pfx**gzuX&R15VoXGwPmsk$TW{z_Ug$v5W)~0|t;J;8&wl0%i+&#GNfMbFlYpaKj zbkG6n{3Y8mFqxVyDnM~bte_}RQ1wHeRJ-S7h?J_Zh>MqBSLy~pr)RumamHEH0?@z6 z&X!NVA7Il|$>Ok)BT@K+^ExwI%gN!ut8;fyU%k|)S^f!@=M(w|cLrTTQCA9ZR?{Hi z8A_cazN4rR3gWIgE+UGvBkHrEVj+EZ0|?;oxWdLL(ogoJLrZBx&hxhAXb&7@!~Txt z!q)iDy}I+Mo*7enK=9(eDrF8Z#7M_OGU+4(_R_U6?`wp%gt^FT44TiBtDt;+K&M+NUo~$1>s3|d_2u<%h5FvH zcAg1-@e2^=LO(O6E^!%YX91c?C%8_IFRHnIOW4a}CcJT2yYU(M#Hegxm8g1s=)Av4Qoco!eS0M%aSqjf#uzH2^w5 z=Yk~0_G{LWwngT{^FToratcS5QKAoK>D`q+%sF0UQNx#zyY|LOF25FmT|Xxos7g@b zCjA(0EP<#9hGJJ#z!;o@S39h}TfKc~g-WtzSxv}`7v{9R+e}k_65bbuRG-uY5{WkF z7tU&CYBYPub*Sytp6)QF_VVI1k2r-^mGl}U5;@uV*m=_%mH#}L$-(`Z<;t{qb5q$; zZC-Mj9+DOW{1Zw{itf&TFVC|Zl%Q`%w>k3ox|ZLMf!)Ej&Rgm4mQ zqW-jAs8uH9G#81>FY!RLEG^;8T(wXYld+MA3{+-ym^{)cZ1RQI(^B}%PZvp%W~s~nr^i#SG9S&u`qTzIt3blvP;8shlEsBR2?5d&3~q7Q$ zP*qnz3ED`_L7Fwt(SBLR?wr>(kZy4a!S(-At#_->Ub<2%PZ{Ih%GqY^`d*<3bMRjk z3lom4#dp&#?SeS^`|8yieuz-B)F+gwMR!*S{@1&6@+DpNg$>)jsCb`DFmMiA#7MH# z(jXSio3_>0m(5#4nE*Ej$7-}VpGF$0^Snx{y4`Y9L)7|i`S%+>*3p*Of7SeriMFCc zIfbTE72Q?DpwW?kDJXKscHb;JhRNT>oyc~XA`(Z&26;CL2Tb>W1(1Op?re4sguSjX z<1B^;1EDUI`e&BbANCBqr2cj+r$r9IXpL^>T%Xpn7F8N-c3SL%CPA}}nH%!P8_wyk zf9YymD(LG6-gn-jAPG*A42U`Fep>vb*T);M|7DGM&!AN3)aP!H(vI4ap+0#cU4NCA z{*dCUfh~IFqE3&>PNdYSE7!KO{-XE?WijHZ8I&-sw3e5y+VFY`!!N%FY0RSR-X ztO9yPd4ZbvLy0P{xCKWn>lX3U*!1V2tT5C&K5hbLNbM&{K^{_BRXpSlFjJ(6U=D-S z52uDAors%y%Cs!H=k;(QR2_pTf!Otlzgw3u@~1%I!tU-q(_47-Zpnu40u}xBnLCQtK@*kaJOUlIDi)2{ zRcKTLjah2=W$TqmDh%;!v0rYgGa-i}yqkA=iI9@dw?sCF2?GN8JlyAHLC+ikpb4%_&vymC*?vhC~472nVtPWq+@KA#aA@(2)UIgRBnh z{ib5y6Xq#>-8awz3r8Q6Z|BP4qZ@A(o|JZ75u{(wS^IUsd{~#&*DOEv9D%-rU0wi( z>hezqhD*^z(t;H^9nU`Ek96S=66Yf$ViPjrt9_b1f2_XzJ7+0g=wToK^KWR(ej1^`A-Ha?md~`3Mv&ZQQ@<>b z8q4K$CHa#x?Q@&OH+378Thd_D@8p5C*w!1+g$bc;1|!2qt8!Rw^d`U7T4bz|X#a?O zcN-C3AHzakQcUonoo^RNF-O%aY?OSkBapHe`}^mI#m{$HE$MGItRy;&(t6weI9JQZ z;K%gQAJjjjmVU>gaI;3pl2$TQ>Dj@NUGPTaS7RB6F+Ke^b$Q^ugLyKnK=SiNR86Z| z0ig7em2=l1R0yJXyFur@SpVX|j)f$MG zBB4dg9G?nJ%7<({bDc3RmW|4eG191OS68`Z1C;A|8Hnsyy7hhX+e>2m4+Mp8DS$hW z{! ze-gR*B&`+A#p#2rr{t25;cOO_Mk%8kdhE4XK;uc&;FhrmnR)YZri{$blv|Fk7VX3F z>_eWohY#j_Q`?UtBof_9&pRw)RT=drZG-6DzrI@2;fM6iY_kbER?P}tmitW{T!k{^ zmvKIpYkw6#Q(@ec&sj;w`=>i-1*wE-Bj5dcKDv@)pO7RatSKEBodgw7qNP;z5VA4T zJkGZ*HrtF2bWtmAm)No|vAW$<5S#;%8mUV-HP(KMHX8CMZ%Z8Ll+K#F?*yM{%D9n- zR%DWLe!TY=t2m{jm0#gXlt_P^j}c}I-@_fhiUTb+&Vm4ARgswnmRJcvkrApZpNb7& zZ6ULENO(0ep0wrS25;EV9{&^$kq$zoAm#DBOoFGj#Tx}KH+KVnI$irU^OSj>r}^1H zZ2zp)vM|B?FuUeApPzn%JW&|gR>LQ{^U7<+nbZ?$v5VL=2TSFMkqzer!s#^WP7aw{ zP2A`-pt+(fn6D{0?vCs+A*5Oxa5rz=9VXV#qnO8TFDjx?qh+dF4g=E~PZpJ8Dc%&e z(A#R?Dh#*l^i`*u+MeU>rT(jUiu-E*rqp9&A=Uk#PibZ;q0PMSYZBr>Cw!CmtMXA4 zmvQ%1pPGhX5Z1RknO&;`ew{XZ%40`R6bRF#BQw)XJ!8Z!Chm(4Eip z&vysLVzw*Y&ewWqhM$&iDnGi8+Kg1CibFd@?;54Cxvq2PzvwHlxwM7VU88nh-2vfq|q%jCeuko;GWsLTkA*Z{!DSVMg9}mi`P?kR9g!o-5qJ^$;~I* z3Fsqy6J|@Xt6dLn)|LJwZZjky@NELl6!zUTwPZR+d4=LGTw1eg>xytUNLqmx)RLma z<_DjUBvS1)4*52b$1^6&FZiHF)gdALyS`?5nVdYyNlozptl^PJU7)95)8s1G-rmu8 zB!AELfu5HuD|*gK8bKLYKP#^!U&PKF~Pw{ z+K%k;yJnTEgQ9Bb!z4$U=_RdXsi}Z8wJ$}ilDFj!?CAyXyerP2`#M`0SzW$y}%lycL%AM)qVXa{;83h;|8maxpXQVyrM!6)cB^kdEnHF=i=nxw2#6~(}wTW4I0tz z*PtKNlFQG1A}~387RAc-2c2A-FNx*`Z7iBN(@oFxUHZ%?KE^5TcPxaiH46>h46Em{ zs&!4Nj4`2RF441DaN)+>nwx0e&O0`$ToQ9C$JbF~3B<*7Moq4me$!L->hoVn zrzzXlFFQsz0jSdd&v^8|jK@dpsvN(2U`-XoOQD0}w|F6t#BGe`=#&Am*7>$o9%S}1 zqUc;0>9hgZmiKLZ$T#C#pawib@=Dde-^KIeL>Z>4?VWIu3=OaAZTTMMI9jB_Dz8&# z3Q?a%UpqG0j6sV7-NYA1#R6CC*oW2rkN8=l=V%`#K%rP=G2O!e7)MIc$_R4x$tWHh zdl}(e5*9hJ&rdEAeQq4~o$rr%SsQToHF}B!(A{GYEc%V}h2}bp^fO|V6*}nP-6o6? zJUPNN9Ixa$DR5EM;;fX`4fqUQMqa$`kUk?AOC?tuwDjVX*OuuWp!JX1Vcnb zxcGb{$IWL>WaJo~rw>ER6mcMVYz2b-0D<@D&Y(w`(^Nfuw7shD);fk}6~@wZTFo^g zYd9Vq&23^|sTC_k)z~1az=dBkD_=c{X`T>&EHNNIZukll&A@igX{Isj*Dq-C;<#Yx6 zer^}wKeaiawBu>*&TtP;wV06M#hZHQ!f9*zi8wTN}!)!LmVG$4&8=`hZYw|V~>8tN_33O1}wW`G5&4w{SS5sg=; zIhFPV@9REw?l)+t%wIAKG~Y3b|M| zwhEy;_#j6E-Dnd**b9yA&cPoD#4skWYRUnYUWls8Kx)v$48TT5QY6?11(f-#-k01K zGCJ&a^(*5uR8y?T&UG#+p}V|71>p8^s><1&Fq;h%YG)tHo;2<{dvw8`*T$d*Rl*s+ z%j@Mz{{e?P{yKx`Hv=kDj`V^2ihVnK;)OK^Cx6HIf1j^T%`X)yHSoV*zA3BrWO-Vp zI5`rqX`5~iTAG9SveU39B-3?xoRl@m3vO3_(;K+VxeWfN!@>kNo;Z=pgtaLwp&>mj z%vUP~!G1Zq?M2*6r5r$ou~tWEcm--~3Y+CbbggdZf3!RVR%6wC{@@qp*iysXE=f2F zQ!etIE&K+p=ZT*KH&c$C*w!`ek5KdYBjjGMLf)@yvS#8Pm1DZfA92F~#wUtjakaHq zIKX7_;E%ry6V09MSVg`I4UR{AM=b4DOz3EwRkvB_ zs<@GYjlKsvJC-NPV)bd8xbIRQ+C{==Bl&eAxo>L2y2yTxZ!59s#wtbefAZs*Q}DP@IR=xL~Z=4a1pHl~9)XJer$-X*f9t4;wa2kVFu%&($OZ3JbR zb^Mu)SMAi`nA6g5zi8K0!23=(%wCC9e7nZzwBP^T!AzM3LQRbNK=Uvcd}6@wlPN?# z_zl#^uAwrrLs(L}$CBOO%la31Sqb@sz6Y3Hv&9hHse@V>+LB9B9tInY8rgEcQ;D#LeVJeDxE4n}|nGEaK6#AkI3v zZ*a6TJBFy@{O^S!tLk6n5ygrA{|1WA{ZAS>WpgM4&#E%IR`cUR^fccAwpVo>ZsI3D zw;e!%vuER;F*LfF6m&I0Z!G+%s~^&A^2QFt=FRzy3899CH!Y>IzkTQcJDLdD4}W*Rj;nPob@#g2_Y5Tx5c+hxREDjwc5K+y2@kcn*xd)oQiQ7&15a8 zE?bv*is=KrYqhBw558?r^GZK8a&LXMghaGW{ok_lOTwN1=|--G7nR8hoYSFfw26u6 zgwW!rko3E{tf20BJ?fCwS^PXZy3n8aNIB8@=#~C~l(ZV7eR&f_#5c3b(dXHLiKr3c zN;rg$Ks=SNIx$D_VFe1^mV-WqKesP5t|SH+yB=w+>U|jHRIzoc53N@Xu+J;egSK(Q zmOtkCtZ;k#S0U0@7S&ynN;!O=_29xC75~uk{JjpyiG|^V@05JK1PYxsA&RSu9 zydF#9L~&uslTRhGCy)xNxxGf4O4M%A)E?&3f)g7Gf05N9e=kIsTEtVE`*jdCGEZra zYWiMqQ>zjqZQoEcN@5+>Uq!zXtO08?meHo*Zlj zrfX1oqYQ8{?8_CjjdHza*Y6Lg@xp8gFKxn~Sy`8Rw~6!Lw+<}>HRn=65l=3kIq0k& z&c)n3oLy&;(sqrVIF|+nS82eBQwIZ`PghB?)k@TV&rBmbw%ReP-p%|_J@uJNJp9NR zWtGrrDJXU{Yioitw5npzv|y6`HsNa?DD#j$;;9rZ=1VUgFKm4<_U7-R24z<&krlZ> zqM=z+Ohtrqbfl*Ln*j^5%%q5qwpE;Or{3_R6}3Yn;uE>;gh@dQrlEp2<*+m<0mzx( zF9A*&1&$_2PJRI238g9K+Z4(BssTaHk8Tdg2qAcF-WDEyZlC!%8dvTFf$XYaf<G_|SQMRXm4EBFN7kgD=u8vXK&`~V%!Q{cfK%*K6rs{|37i3!2Z zcOGPH&B7AA@av~z%PS{+W!I?w$A2vw!i7b6jdnOkkw(?-RtXnV#uAt(Hqq=aQNHTb z7^XJboN3jtO6n^qvPq9lPH-AMm9fm1+Gg`zny;lck424k&NH)P znNfobqfbn^B-n!c>v~AM?J~;9HM0dbez_FF4eosEHNzifBoi+ zuHu+BSGjaRQfg^jbqA|3q}=F7su$k@COgwwvYqwrqX13q1jRm@&^xBg0qA^zLA1G3 ziJi73QnW54w1{{3nzDBTR@509Kmq}jmZzSN*`2Xq5+F@N%}AMM_r~mX+sIp_n1;F* z0OO^q`mS<-X4KljqgU=Uo7g`naTmHt#|zEQ{M2^l1+^{)^rp#M^R^t}l&W&hD)hH3 zgY^!k`-)2kM_N+$l;Wnr`uLOVc=4_X`Q6C&%~=M|h4$DPWI&}1Wj1pnbwqEIM_xO2 zzSH`LWcr%x(u^FqK@kt6u*7b@YP>GfSJjTY-DI|apJqqdIRGUakT~D2FtVv1d$;7wVd#`Ll(D(3Z+{)+Hx0LHSWT(j1Tk+mQW{E=0fCppor$j~dV z6iLB;OC#e}i4mW9{c~fTZnWA_Hz^fzaY%c`k9=wkmFOnOl?2so#M@rE?jxXCD@yj< z$X-94n|G+#`b#BxLi+RCoJVHrbo3?AZ^;3P9?6#32=@YRM5~WWqAegy@4~+&bW2oN z&ndWH93$Z5Rj#OzxZ6f0b?GyC8gILK=KcGL!yEfQm?oH?OGIIq!lcvzVsT1Q_u)Um z25j2Ml zq&Q{}z%Lp}B>KXguMGrJDef1~pPk>R$eh;EUF{o7QdHGhX{{lsIJ@}zSM|xyYqM*X z-d3qkdruYWlZA0yP5?K*4#5&{uZK9IuiQD}L+w{!l3EL1=NXt~vrd=A&U&#ne>mLw|EfnYAv zZ1;s^^>fvCH{}H#sndaeI}6R{<~9-Rg4OVXkB~raF>n$-c-0`)j8F&*q(G}EG~jQS zVxi4=l@-`*tDWA-7hG*w?{>`{HE+o)jpo!M93 zRXU9I=_s>+QUUhk%oQK$QHQ0-*D!WI3giK;u18$aOyr5<>%=hy z59XYb0}^`~+nFH+Pz}qS1~G^P(4_KVWbYTH)dTt5iELMGL@|q3s8>GFT!TOXt4(iP zb8jo|xHtkpz+V)Afh0iNR&X51B-22b#LPd&-7`N4nie^dr>bD!bfTMH4Vu1{5A5sR zzXiYu$WunRAAt-ERdTZkS7p*FUP9bVeKO}c-*}AdEJtMF0#D1XtA<>y=uh^d%(kC3%q%2-Q@F``877#Z5^)K+n4#hnvwEI zT^Zou*v|nx)NC%Pq#v?^b$M2aDp(pH>K>cb|50+=&9zh4a-4+e?i=Ohr6B-!jWV>3 z;lHsqzyAKh@%M??-rKL;dkYqD?ls^IIMC|-JsjP=N2s>((U`RD^61-_W6#gvR_(2a z>&o|+y_mP=Ka}t%kr0Fdys0Z==GnS-1;!Y9VH2pYO`oR>?K}EG4NFWxU)p7We0nmRu>0u5&ObaOVA+x zWD`W}DKjAH4^|CBnMDSz6~ng8zP3#s1=Yi&v!X`yLZNCuznaB-W~GB!5C# zb!U5-2tmghirp4QWeYGm1b32Ti5d)9s&eJP^**KK{f|SMA?NfiG5Wa&dd{(oJhI=Y z%Q5rbc4JrXkOLsdIfrf(S_@5Vb%^No1&UA@8!1|)0$x@Vv`lg5A)Xf8`#D<%mT?2b z=%u2QFU0dX?v-P>3`QHb5}_A8|H9O~R?Ra~@JRo}&PdSOLi6v%PLxx=#;bvg%KxO# za(GJn>}m`2ow4J%07k@gO997c-v?^-=(UhANN)f}v`-GQPPVz)sg8MywzlOfK#pS{ zr=RDN-PJHZ=c)OlTgc^3C+kmmvIB)yy`t(0ffQnVovYty5dYk-9_#wSbdfgqG;T!0 zLaK9r7u48`_>N6Aw>DNNIi+v|Ui~|vk@>sXbrL=Z+@FoVR;)Fmu1KdaLrHJPo z_7xer?^_F{;1#gaT8ewEAEF1Qc@=dx2au=gr+{{phn6Ks4R3HosFn|1gg->yyoj$C zBDqFx#tu7hWH3fp#LQLEMTer7)3p@x?pfg!`yF!2%E-}+o91eo;hybhWccncDth;(s1nLl~~uD%i_H@m|i{h*i-5JK{Y}SHT?je(n~_0GNx` zAPm{-8z`S;wDcjS#r39qp*z@r*QlZ0pjgqltf)tgKUZIfeC)TOshuTGJ3&@l84F{{ z1A&{`AQ0QoHRLcMpQx#a*fBUb&Wd zfA@NkjA(1-q6a&MNQAg5S^&EbHku%g^e~!Wnd*=H^s}HP6YP1f62ykI`U6 z`7z15(kCL}=z|LmLUC6e%Mj7)|TM~0oM-6!i78L+ok zjO#~IMnr2keLe-~HkveGV;<5h(pjPk{LvTSuOBK#bd7L0((+sl_Y*7g3oDI-$U`x? z@yg5O94OEbZXkGhwN(G$R$T+SsWe9coSuWV^7km;h0E7yMz305}%SP>o()&BaGjOck^3 zss6cVEYa6@QGMg=1hxs_Z_AK(<_Bmz4tLXIz)~7ySU(Uu0o}-NDJmZ1OjV7+CTqC*XK_s!Be?~od%b6p|v+vs|kE) zh`1tXWglR&`p({6Q?eV?g2KX|)yb<2q{A}l^}Dx7q-sjL0Hc3hAwW#yj0)p2`Ty(g ztN+@Hnm1{o1&X!Br9gq=P~5Fhyg0$#AxLre;_e=bYjB6+!Civ86)jGo$lktvclYz% zKVg5!4@quv=FB;F&fJ-2o@vKB!%Hd_tDfBgIXN%qbGY%6iGriggnn?}Q*j@n8If^@ z`?(G>@+>n!8+mJ8t{)zD?G9I(;U#g5nxvx32h z@3qx-MR~-4i@Mxyk3ASi+m9ZLW_cDgO@*oHW2o_ifTSxNY&I~It)#X&S3$1By3Amu z?QHuF{84c#E;ey}GH*HKwNUko_4mQ>5-1ZWc-sJsvp*6Nr_x0Q?|G#_TDLeY0;HGT z7(~LEcB+hH>7|^fimdnhOG+N6F?ula9X0Yd1xI=eTuxwe$QfiSMkvrvR`UadIN7Fx z_JP_=LDibhu2C{WtwFDKwRMDb3v*i<4#2$78V4W(#TdS8u8tcUFHnLmSW0Lub6M{B zPSlg#uQ$eHhLl`V@q-STmYNZJsKg z)$uyg3|H6p7XE%Dc+!Y8Up(KeqZ78(9m&pY2_a>iTtlJ+7r-T{!=1b%y;+8XTwv+5 zwc|}lN#y`RDH1bn0^u*mXlYsR=)4qAZOkF5(T?Sy#=nFTqe1&EODf1U-3d4~nFNZK z+mwGyRx)Rhxb~SoUz4Tm$N&nx)T90ubv+@#ZkWJ@h)bhDxQk(c=1*U%MZ{$atjyXD6) z0=<{8C@7-igx1*`LMrPoWl33tUyWHq=-bNPZ+wC|7B|3XD+THhagIbrhOnG+Jc6M@-kE!IMkI!p@;xvRS86qxEIbOr^nQk>rb+lLbo zT)b3Y-uZH|_w}crpGe+ZUQ*WUG{%8MD!tC^LaaIeNCX_b`1%Z$7SYSSpME6<@i5wf zp~p*U!}AFNbugaje8f+D#zI7;vj@{9GcMZwzH?SukkE2PCt4bW&s)kSHO-iPY1KzS97usD+TpG3VE!nSW-9vSCi;WY5gFYdeA+bG@s_jhIWDa&- zbY2c#djC}xYp5;)`(5r@s?_jThMKyW+!m3_7^wTE2t4y5MyB4f4A&Nuj%Qh&A48dT zOD6|;S)Iv~q4pT(Fw2!dXOB}bL(GBuEjQ8Is-ZZ|Vx72Aan6e6IIVN-q8j z&Ui=ct+-$6)+a>DFWpK`I4)CoN{6lCYc9nSNyKP@{^=#St2|aeEFB3A2Z{;xmgL=O zmWR*biOEVWHhl~(14|08^>AZ6qJPQJqJ31b%J3i5-A4i_jQES&g8Rh)X3ELH_d$k( zcGnANPPn;74D-v0eez(JsS`RCjL5q=VWw}fjl(j!IbRY2<;wgUy$KBe)Mgi`)(62A z3*4?s@fI`V22cla;g<0|js#{1WLhcT`di>S~Mw?W(R`KrC}@kCcngGQqTN~k`V$|8(1Jw|5ceRHQZ;-R*jb!3_-%60zy znEYm^$(e?$a)xxf4%7v|Y$pL`w(t}CckqLa^|4u7O9KD<#>jzVKk07&1V7Y!x|I(u zc&!s=ft$k-sEXy0k>!NC1Z8x{@$fNLc46M8jSb})zK*|2pig6c|3YDgJxKO2UW zERakUFHPON_WE83-o}ZaU2J(nB!j~y@o}Ql>{*;bGTDm(HfGUnKL!r?XsxuIi)36e4 z^d9~FUVwezvD)$Ukz16_5VsTM%Lv3`Xini`fGmLpB}>p@^No=A@B1n+|*b$d~iNIvO9kd7e^~yT4)Zp47c2s;hY5ko%oF=!+9m? z*)>(PGc4Ki{dIBR4q};+;W@5EH4b#pXHiw~bP~jiS4)A)^(_QEVmfVH-{RHs5~b0$ zkPqkeeLb;KSM1n?{Wuw10pyO^BdInVJa=P-bEzv zy(E$zdMlbnljC%3G?EHa|LTE?!0x;J9NT!s~6kYK&i2B~4E(2r`jt$7gbh%cndGfy$ib z?`NXVa@U#ASi(3tZctjSzjom5Xp&D~Uth2TEL8spN{e8)47kZ2j{seRX(a;?VY@8x zdew(3M6GUHr?_GP{nGV6Po>6A67OuS@duVCgvF%8xOc}vl|;XZxs&Y5(6@vX9>?{X zUu^chWEd(xR?3jzR_C^1MEYjdXgIm<*3?PS?CGsTe+9D;D`zk6vDZ0n|K`a}ZGlFR zlR^$kHX4pxR}(wXyXE+OgNS{OaY{u|x$8dSdlSYzqo?ho=A#=lk44FajT?CYK&)Uu*yW^5Y7+*V#Ymcvkpklm zAy;{5#X6wD{Tyn!(ZX4NNzNFd%$K_!`xW`1!3syECQFSVGNunMFFC4Hw?BY=Mc|9m zJHmA3U8wd`NynPTGzE4owN$^#>x;MfBOIm6z;T15a};gYtLJWH2=RiJ)5~)96t0DXMr`r%tlbGo%GlH&)fHhre!Ey(|!<6)q?);*cCEhhsWAIVA3Vc2$ z35%08G?;ocD?w-ZK#}2?)wa6GspVp)rUA-cftl`S8t*bK#?PTHv!)GkI=n zr6|LvB3KacBSA|RzAoIDmLKXdrkZ!S9m*N`@5xRlMDEdz~GXobD3{gF*qS&wJWl_1Q!;FP^bh~(6~ z$A+0-S>8_G)G-%46bdwQ^LY<{mT#yR2#dEU8y* z-;b{EPVW>Eh~LK;GX*3r=f|W!Az0gCF8*A@JAy1Oqa7ZTuAb}-KIed0Ph7dpybvNKJ*Y$GP1F_K(eDeZk?J>6CapvEZlj1H*FRb>5l}! zO=Z6|p<&)cmd6?w83+{-a;9C+w7jm19%4F=lfX~NjCVU?Q2wQ$P0@(`i7Md2VJS#p zV1>!qJWEi4DvrQ zJU8QA?KJjb^}i~pnxbw@np!Z4yXMl~G2EZ<_5~PiJT14AK@b|nt!Vp!OU|qknSRAI zm)O!gi^KD+z*~?;1(jt!S`g1N%Ap8tdx#BAm?I&-i2Y5<1YGbsyIpt4Dk!*;nj0Tv zdg8%y2~B0DY!{>Yf+=)<^Rmj`e&%Q7ZJlSD#AxCk&QEqiRI&i<~8v!JE=?0avQ^&72?A7C?GKvyUcn2a_(}Z>h1~gpefMu@`!iT&iKE zfYNgbeJ4_>?OrX*pE$VIp6*wjKG<9l))r?(rBbzC^8HLfOp*z(u+mOV~9CuV7x>G4* zTS;7bx;%!~b*`{PqA5Vg!3g};)4P=3ULRPoA zDlfyB;XpZ||3IVvBGe8PABlK(e^LBP0@;du)T%~a#nt`KIrSaO^fxp6OTYuM?zr~2 ztdC3FY+G6{_h-7&xjFy)Nvtf%T#_2otoi46vte(tGD+6eBDr%}UV<41t4yX1jO}UB zrfRoObfKl(;`?z;C2hNuP`1SpDr0!5m3r5f z;~e|h;1#sC02^WOP)l1*x(Ln6@rG%y8bkt;t_yJjzw zHZnjD66@E>*<@gO?R`*<^708QggF4 zr^l^kYa-aJZ>F|^#OyiY zzPL^`u;rUGH!r%i-;m^#e?m}LmZnHy(bzcYW~`CLk}MT4_a#oQxW)sX}?`Hi5uuxoY-#X7l|aS8BJ#2qH~^vHlnV34Arr z``rXTi(pw6WTh}AI&p$<&4gX(WR|b?Q`f#0Dp_(9Otp>YC;bV->tUatY(!~z<+@e< zF&-sf%OB`-l#3vA^O7J-5_O$ZtOAYr`6A$1SIc{;`@s$R$J>benMR;8YeEBzJZ7xs zLn!|V%zBx&#V#REDMKVMPAp!^%);+@GqvAbk3ri25jVq|^djg`iE!lr59K3Q)o$bE zVX;}Kmp3>b?>x_m3e=SER`sc?@TkYQ!R^fq4ln7f+E*i$^nq$PgaVOh2K@VE#tG@B zT<2Y%*%(s(Zt-w#+9%To2E$`+5-1<8+ZYOzVx@EELjYKfJV2a}e^-2cPSf6$lO<9WxnW$ife^Pcb9;fbjy9yCWg8xQKrzxy`^In>T=$uma9UqQAR{#dZs!)w()L39lN#KwAzD8RxGjm zKuF0oFE9pdY7l!$=-KjddA8N_)*ffcu!FO>7w@$Nr>)H*m*y944Ys1@BX}yw$dchO zIT;KlzP0ni!1FgXIU(AG7ma00r@d`016NJ zwtCkS0^TF>LC1@Gl@B$XqkS>77NM0EA#86$JXLX&@VYOvQX(aT(NLcSGW{<5z-gM$i<%<&09VaOqXbj z`1Pb{VmlCWm2Fo_Ad^32EAV~j)y=Xz%DtRI**@2x@5kh9^Y>}KuAKy1MZeX|Dh;_} ztJ6T#0ZQjGftTc$!h6*1$C}wh`%UQ+%UR;zLWe3c8h>p_AR|m2G``liJZ+UJ^P(CI zQr}^ybIk6pWwM@S+)bl)mgqkT9W*?U+8WsIFfLvzH;7n5^kj%rDImv12k zq2;D5Tl^sfN=n~U$@xw8$a?-Vsn_aAlbCTo3(<)ivr_TMKiR;yeO2Tr0gGdoB`F{7 z-m~l{hxb9|)J8FS-E{8_GhYbx3-~yvUQkVj;kxWq?aMSW9*CIs1e8~>3AQJ?qaJwp zL^+$5E}cYmQtr^NsNTFR*RdSMXP9am{`5yJ+odMi0BABvH(-S2<SjwC1(ANxx-WpjM+tA~$7VfE7pM1wO;*`!r=OoPEXnNyuh{9-e$& zxc|EPvHWIr`rWrUXWkNnj%Xw9Xm2aDL*@L<@3NvjMVwkFKR1Ft#L#w534Hk>Zqz-8 z7Zoe5?*VU|74xGa%aSW+OPYUn=UUcq9VQ^)XC-YIeB@RB?56CsWvvKXTR1avjio#H zXVT!tdK9V1H`BOLd6K(Q#6O(00&u^1GmIu*bEtgTs@$fP;tZquh0{zD{?nPDXSe!< z=}`p+#y62a>G6Tb7Y_gc)%c^q1A5f7Tw~=WzU3&Wx+guZ>{d|>ke@m_DJ9n zx~1=$2g`RdlWslIowyvN$sIGNwNiPxj=-V^0Qf9Bfb~mbJ!>DDN+)8ta#TcM>xBOV z=4_g$EzpfQeV#5s4s2>Q1b3AP-y^g)q>}sLfMI;#!FFKo#MqExOqJEan62YF?z;!` zkkyc+$m+oj@h(8v_8*7J6i+t?dSfx1n+N++9MA+9F7&anN5&|1ZQE;IyJYcHq^Q<6 zG=&+r$-x|}yL#RWh1@x%LxR$-ymwG>dkS?n$@EzR)p3XcAv;2uH z$XV98pa)69USX@$F>17Xj@wUI;c{;f`@<6Y`Li>(I-={Awukq<13AVVycwt|8Ra8f z#T&}*E-CY097M5C+E$bMz0_H3U7w4O^oZ+0CA*d(aHne1bVIw8D~!%A*D@`JUJQLx zbo)iBV83fKFMVv?QMvOJdtVV%Q=9xk7h_p!2%r>^K7KS3*Gjs^jbdWEEMf$!>M|ZZ z1GsgZ4dMCVl%SfnnR<8hl{Tff&gJz+Cd*cDd~T2!u)~+8E;n3y$dVM88lPP^gz=e% zY$>kndrOfe*)^oY2mM$r9Z zJF5)(5W=~rNoKUX2c~eAj)3(g-BPFTT-lMn0&9F66y_OoMXm{mP3Mc?UA$yZ1Cn_L1{hTwha3+k#P-h0S zKZC4>mjW~Nxfc>|xTb_G)*Mbc$CXZiO}`nG|Mhpp&>e-)c<~~P=bFkv_&J87mNf(f zyClgp5?B1{Ug=Hhb4Su%9=~7ntub@(HL+_kJ%Kld*#K40TaiZ-u^bW>&b4LB+Cx+l zIh$f#V+txw+<l`4sZ5jF6a4J0Jk{d&5_+!w%un&>n(q_jhQs#W_78%2(VbBeUA;s%x4)F*lTz70cD973`JF#>2^;F4@vDp z=dBd%{8s2!j%!-&HK(-MoXQ(H_^3Jp4p=Y|J;KWbtT0sr1k2FzB2T3XJZ~uv9OyKd z6csakY{Y=7EykmNhVfJZSA?P4Z5y<}LHV;1^FYW%?c6*iO8m&Pb_LCrH}&m+WJuvoX9`Lfo8R4ey=~_dU!_N!qkP^ zaF~0Gn_5Y(t}1n2jr!HG0iDxj1^A=sBP^S|=hxwj8nc7BcumZ$Dd(lC<=! z=;2Uja9u+9s5BF*vIA|#S9x)nGXGI&Y~ujBqwkeC8D?kk+7REf&qioue=PqJ8zzkd z`L0SB*%cn;V+(M2?Wh2#iX<|Bk}Dw^qyK{U%>GX^B!Ryuie@ilBv{#<573Uyyi%jj zLp|OL&8Xq7o&Q$&kDy04YbA4Sy@ZSCawvorC)(=A@-wUM0g>WW?o9sx$EoJq@)KE| zmQ+`VP{%_MG*FIQxWKt`onbij^Sn*IE!oeD>>0@zc!{P3^^{mgV>Q``N|c-YwVCRn zXr5Q4kt`ZBA`3J$iBcyM*nlk06wjm;^e4&VFfBAo?C#64Y% z?@tfp;ojW}3&podV%xKcp~r(|i%f;trMjWUwQZQ6c>hQ|LIzQV3qAx@E?yBF%e2x_ z;fgG*V=oX~Kkk?BfFy3z8uG4(m{vGV9eKy(U#K-dQ`}3?X6H(?6Nux?+AuLHdZ3de z-^vLECg+^R{Kgb)kFN4L!8}YeLs)F5_&%({5~OVDQ17d7LC?uN$D!Arz5A6YC{L$( zYp0Y{G7;Ujj7qYUWq@<~fSAdj#H?zUKf6flBxp5w^w2nN&WWK+Djod#h9!CT1yT#* z{=>#yG~YQmseyqpqa{HPhFcqYW7Irq*L7;ePI%0vrB}N%{PyjatMQy)adVkh0|zRy z5@wS_-v1i zC6FhLq?KlyqTgE8pcuk%bIiO~!jGvi8Avr`NEsXse7Z}}e0i&osY_T1i}N8oW$=_= z)}5qDZu`_6W4tAGD?|*bcGM8M0$FGD&*CX_C2yME@o(KzJ1RvjWbPepjSOGA9)9)X z-cufbl|<#hAT(veN%dKqe>~M6=yPc0n+P&iZ`S2|IG*97MF>i8Ig$J$74n4euELyu zI2n#I)7Gp7K6yf5=R3`sKL$-ARv{PYcaJr{vua(!^!gVVufLpZ%xpmfgix;!2Kt#lMMI1V6l#LzIA{Z(H&-&B>U~*><_0DFY z_Bc60f4W}a2MuDkEuM04j^GXq*4A4UEI0IQ5hQ)**vC*a@r64QaUFZL`3V7sii@xQ zstP5}RvITT#fhTG?tfsG`Y|}o)bx}okXpPV0b4_=% zp&9Rr^cT7xPMoQ&gTMV~YN${2j+IP~eUru?xfOY#dW9zDY*mwARSuJyceCXok2!_@ zn(3Jtf?!{37ZT8x$8`3&(@R}fmUoyxA;jpRonm!AkoJS%==f)Khg4*y>2moaN4%<( zNu~m%kM-y74e0Q`y0ci-18$RF zIkO?X#wo;U6YPsOx*DkD!57jX|4AZ6VfR@&|F-6nd%RQPrEc z9Q)_3k5`nL+?K8eJ`}ldYo?QU{QAZK-dTyy7z`;wJ1zG2rS~I~F)LpVvriyNT9Oc@ zV2Ck@S6t)_2FzKDT5k=Dg>PrGqksjItefn z`ATzWTq8oWjxiYklR8vPas1GB-EK_ZPyMwhSZV%2xUYPZ&xRUNwFX z-Ks_BZD#0mcqb3>_z`TIHS2!ZN)ihk^H4j|lF@1SEn*)X0_DbSC0GN7L9r!EHhozHf^>#C(X|#q|fXe zV^`r21zAnP);pZqZa%k48eldw*ewI{-}P7O(L;T!+n*T3*k4mw5;hV3+M&H;#wv2>%MxFy!FBDgQQq2W@*gEu(1M}JQ5Hu6s4lIH=V=-v=@iY-Z#Xy>WH0r z*=aEm)2l{Y@eD}`^#Uf1i|PoIc4pC=+uaIO(O%Kfd<_s`oTJOatQ86+I9lo28Zo%; zt5*U8quIXud|3;TDWWRRR%+HPSk}gRE6Em=QrV$3X=#||NQ`)_^J6S!Oue#RO|!xV z3#lr1ILDQf({Ql7vx8-zAVHZuQdr;PCx{LP;4La)iGw`Q5P#>hrDFT3xoxOG^-oyk5=y z0b26TAq8~W&)t%3gTn^7?xSWlPg?S_TAI#v?o{m$P*zT@eDN*U7Us^yh@?spcoJMZ zeCtAeW%f9=(W2;`!$rkvLUy_3d5;dT>l~=^jjO}ULvajv_)Hw~e?q)E&SkH?H$+I+PFVw%4sL<{ z`qwqcmus4f^TJOsZ7=z?13da3B-fe-xy^rj$m62~Go)Wn*cn2S7JmBR2R}~87^F*# zu?2kbiRF0!M>l5pA8MyNbrDK;A_qc_EVJbaD?Z$Ujdg7onC38zdC>gGVkQh~y#m6T(kU1^MT4W*iG`cyX%wi>1J8*3BQF&Rqnx`U0|MW`>Px^JQ zdjsXJMU8AP|AVT>)gI*A9P8JE{aEm{oSU|!<9~{7iAK+a(&2ac{>JB_O6Rwp{2uOrCHVg6 zETfbpZthL?(|nu|u2XR*JQ1+EWr4`)!JE|28S=(pp7LdpXW;8YT|B-~&54$?sS+R^?;C=Cj+}6SR_JAPVy+BZ+l;KW>zSrY zOPJ_0&W@rLNtS0VcQb+r@dWbAMj@dE)?yX~u0ST<-mYF6Cf8@AQ)0>)|_a50;T?ov9s-paJ<0e|@3DdB)jszmoao5%XowJ~*XJh*D6rq{~p(2YaWF2I2 zqDAvz#Y8bfv}qf0U)6T)MrI^P{;13&e7UbLktjd8XE+r%Oj=04z}yPI-78l5O?SSP zA7-bj!q*z+%_B1^ES+$d6b{UBJN_6(2-!P!`3=)%bH&+$_&&~!sc zM48ZDTarZGvY28*;ccVhM6T#z3OmsH*7OW$=|w%VL(t+1%1^8xpbF6x>f+;UgTS#1 zRy_75F3Ek(5bf!#>xUvnd0ybmdj;#5L+A35wx$Ihbuzq*6u^NAj0rD91zE>0OLin6 zi`w%OXB3i@J)X8pc}6&~tkbwjR8Y(!%CC+We~6}*X{Kx`w&+)lVidGSW)xr6Ci;@N zQJ$4bsJFUuP=^@|)(?b>P<Si^y z%LQWX>lKGR>K0+dd%-jOUWVP;iMrv8T|~#!ybr1#2@_bA0HVfGQC`_ae1S=pdoH2S zzo^ZnX}K5q^}|UAY=;@Jvw#j15BP%9N z+NRF7sI#QIUuiH-acpd@)KdJXk8(}8uS0A_vGP@HL;=;c+Trcvw?1cD(Ki`dOY$9Q znebj6ESY_pn)6E=E`^V_zu0#dqUP;%1BGvKD)mXhD1u!TgV3#v z&(oT!&sWVyYl++c?}ZCWhh+MbS+&1&4)55rEf8Oo2!6`@l8I=d!vL^1IGcAY^nGl%tX$_gz$M-KZJ|51k>4Myikb5 za*i8<8?0jZRd$h{`H$Mzm2&w@BU>?a6WqHSBE_Y~lbOmh{{Z&2LKfe+3fc8uJNy8g zTM97}2d*y^A{_!DZ3;1?KJ8iMUurZU4E^#l`O_Q)^2&~_$G12DEH-1mo{;Dr*G4Y6 zLBDmU({+^aB~j;Dw4Xss7_3!{Skmu{kOmEn@cEDcBr9faYULO6uw;aRCwM+#=*`Du zVp6Hd%!DU|FL~n%Vpo@gqV}1T-khvaywjN!D^m(ZMQJ?>;2ns#jhoi$PpXs z7^gM@soOZLM07Rv-Mqk%`cOwq;j3RDQv`{%EHJBS)DaFdKPLDvov3{u?;vN#*wOgRE7 z1M4Lk&6i=%?mLT5jI33lcQcI&^=uZ93<9mONxHTgn;n3OvIF%ICplTpoyVwDcttVq z{CSQvM(>h(p*!@Ci!1>*iETeFox@R-p}3^7<$GCTFRUNoJ;|cy*btzB?dOqx2z{Vz zyww)6&F5`6ESvjfrieWxNty(IdqzDyy_YLcaclnD(cmumj-*&0J$q4M_dQWzW5z9~ zf!^DuQA_-xdd^yp#1(W~nK`=6%8^qxUXWkXA@bDx&2nj0Oy(A(Kd`^Ch;yoFw0+kEYhbgcV#iJ2 z!G>lsk>x&0^N-rer{WK!hJ#Q>>dGA4^7Djb4Zw-h!M>-T2;fajMx>cA$^k9XZ4BUO zGJVUm+F#D5-sn&59A!eH_g~TOWZ)1qxNNjlngAx_o?|)mcRK z>>%+J2Pu5ol-|8~`_(cLHX;)51&do5d`{sR5~(1)CZmJ{{a+j@jFqx*%1gZQmBKpM z9zd+b1U$Q}wAxxM+l@mr;mv}G|`3dmO6iDf=N?xhaN z)Q@1}K`Safafe5ynse*Vp+W}h=)T!jzigQrXr4D$zNL?1Hd^;8kQ&&(cvUQ@#5RBN z$JHx=B3RJD^Of_)Jc{Krm9egYdwSyL{AVbO>eB^c*TpB;#s*vd{W6Cv7Zf5|c1&NJ z-#xIaF&($1Vb0(0^p9-CUFA0hp|RDOp67=>+a}Y0tks4L%;>xU6eYQE+Qmu(erhkS!!fjdx`pA`{TDTBhgo>^z0%SkW z7%oc;2fY*7C?gwYX??%^nk>y*_-+PX{;?oR_UF{p9_^}$1N9bg24Zdd5{>+bEVUfi zqvs~~)lZKoOZz% z=%paB8CzD@G$m-A%Ea1~>uv_4WL26f4T{AIy65GjPeNd)bL&V%ZLtS@ZI3pEpL0ir z;Zph7A>{WR-EMT=-tZYgxLeUAr70pTKbq+z@HVcdC#_+<6XlVnQhR zj72HNX1e`6{TOCAwl55&^Z4@&VP5iVb%*?oMaD<88#(fP6yKwjSt!3fAuIt{@K?dQ zyaj{w{$b-o&mRL?G??(j2RFhl%NPtuuo4k4QDN>@GW?WK*PX??A<)UO&@lmIMMS z5(qc){XUGUr8Ctq+G?drbH-q59!v3*XJKQB9HDEK7eKKS`+!zNSS`And|$?qhM2Sm zbzHLRg;_oyHtKyX&oG*CleUCPTgIN$zNu`Lc!An}N{C2;z#yrlTl*T!Y*FQ?4Wq7q zU++kx6tTk@_hxaPb7GtR!bYK#CV^~7605QS` zcbvUl&NWFHi`|U2@I5FFX`Nc{3u)r@87HUjm`hzgoTP-&`*I!Gdq;aCOO3YPF;M3> z_v(=(KvE_9&l51;`MLP~)DomUcuqIdO3un+f8F9eID8)KcarTBLSrUS0b7K8jDhox z;|s9;0DcKWJ=DEyErE+e<^4~Wbn;R+w;dLezy z5RNsiB)u4ilDY#m?>K)DGt&;G&-8G4`CNRDJDw1X)wX_*ql+QRJ|PUoJodGL$A#+L z_uw(c3RTT%CyHKf;cuQ0$i3IDuK+<+x2^-e`Ho-%T=Y)}e_oy13EWKrq6kI_!91n4 z<^&(f7O4rMeXDAp5bUxaD)L$%a`J#+Kq@nUB+_^Pi=pTO#Fm73TmB&s`bG`!Z(Y3i z4Vd4y$cTCHenPm$W$HhEoe=43wDq|9p8N|f{^<{F z-p3(8@a)I#HraoImo11@bDP&U_T%#QrNsOJ20gOMxHpuhT3&P)TC)J&f(QP|U~#Q@ zgfE!p!_k{Zwg6n$2uwd;A!-r`%Eqes9s`=Js>J=jio+@TP<^6!?;cK>edGl!#2l~? z>cShjhD(7tPYBz<<%W8Q|JFsax@g|(TyRk#W?~R1%Fyxs&#Ecv-rLo5)Fs3BM6f@R zFAmIk`<{(qby%HY{hQ>wS9Uo9BgflkOf_SDtAuY!x$I~%fF#A{E{{w>{dbYR zolgjNvr28Bh`C&11-aG9{;MYXH%l~On|jsek1qg>R8dE`&9d>)Z=j;%?;L~w&9Pu8 z#IYhl+kfn{r|&ul+iH@`uCMvO`_8LaQs1VspwO>9>e+K?@ zx;cv!gFe>Cn7uEx4GjS{)BJK|P6YaM=|lg7Dx)5lXI(-}G!v6&B2+B=;>RMSHyiP9 zR`Q!Qe93d>@$ki!6YdW!i3%x%dYu@ZOBKDCAz+pfS)!}*#X81bKkvCS0DA(|ma zx#X#alNXvbQl$2@*s#HW~6Wl!x9(RgiQ6q+ZEEHv$+KM z)X4s68{cpcySDm_%Ee{#<42#D?5()U!^(}d9o+n`0iB6sZ0ta)%J<(!WBzDPyxKpJ z>{}P9mh)-CYs7bYSNJ;1NlW;3t%0@?MI!B93oDJ>szU_&Dn~O!|L^^nO8O)JUN1(rHXQ5d7e}FwoiO1bP2rly zTKz+=+9F%_{E|P}#Z3%AsD}1$iEErJe`qnJK{lMvRvFT`0Sj#dSewen?(cR{aV-7U z>W_e7zsB8M{dYS)B=RG(3r60Xe9OKC?u+eyz(^|%pLw84V5U4FB#=Esx&QYLBOQ7d zm{vQh07F3ql;Qg*30ODFvwKjm@NJ0s;}Ya_iHkNxhQIwJ(jUklFDUW4uWiZ(YjAe{F5^T>4C?=My)4rsq4IujS?`eDr2=7uA1E475v VBK&{xaTc$zheLZ literal 0 HcmV?d00001 diff --git a/img/preview4.jpg b/img/preview4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe27edee6c24b884962452fa9eba621dc267f295 GIT binary patch literal 71785 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�Dy}-t5JVV|~7p%1l@bQ;v`7;2_T5 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 + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +vector g_vecHUDNums[8] = +{ + [168 / 255,72 / 128], + [188 / 255,72 / 128], + [208 / 255,72 / 128], + [168 / 255,92 / 128], + [188 / 255,92 / 128], + [228 / 255,72 / 128], + [228 / 255,92 / 128], + [208 / 255,92 / 128], +}; + +void +HUD_DrawWeaponSelect_Forward(void) +{ + player pl = (player)pSeat->m_ePlayer; + + if (!pl.activeweapon) { + return; + } + + if (pSeat->m_flHUDWeaponSelectTime < time) { + pSeat->m_iHUDWeaponSelected = pl.activeweapon; + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE); + } else { + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE); + pSeat->m_iHUDWeaponSelected--; + if (pSeat->m_iHUDWeaponSelected <= 0) { + pSeat->m_iHUDWeaponSelected = g_weapons.length - 1; + } + } + + pSeat->m_flHUDWeaponSelectTime = time + 3; + + /* compiler bug */ + if (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) { + } else { + HUD_DrawWeaponSelect_Forward(); + } +} + +void +HUD_DrawWeaponSelect_Back(void) +{ + player pl = (player)pSeat->m_ePlayer; + + if (!pl.activeweapon) { + return; + } + + if (pSeat->m_flHUDWeaponSelectTime < time) { + pSeat->m_iHUDWeaponSelected = pl.activeweapon; + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE); + } else { + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE); + pSeat->m_iHUDWeaponSelected++; + if (pSeat->m_iHUDWeaponSelected >= g_weapons.length) { + pSeat->m_iHUDWeaponSelected = 1; + } + } + + pSeat->m_flHUDWeaponSelectTime = time + 3; + + /* compiler bug */ + if (pl.g_items & g_weapons[pSeat->m_iHUDWeaponSelected].id) { + } else { + HUD_DrawWeaponSelect_Back(); + } +} + +void +HUD_DrawWeaponSelect_Trigger(void) +{ + player pl = (player)pSeat->m_ePlayer; + pl.activeweapon = pSeat->m_iHUDWeaponSelected; + sendevent("PlayerSwitchWeapon", "i", pSeat->m_iHUDWeaponSelected); + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_select.wav", 0.5f, ATTN_NONE); + pSeat->m_iHUDWeaponSelected = pSeat->m_flHUDWeaponSelectTime = 0; +} + +void +HUD_DrawWeaponSelect_Last(void) +{ + player pl = (player)pSeat->m_ePlayer; + if (pl.g_items & g_weapons[pSeat->m_iOldWeapon].id) { + pl.activeweapon = pSeat->m_iOldWeapon; + sendevent("PlayerSwitchWeapon", "i", pSeat->m_iOldWeapon); + } +} + +void +HUD_DrawWeaponSelect_Num(vector vecPos, float fValue) +{ + drawsubpic(vecPos, [20,20], "sprites/640hud7.spr_0.tga", g_vecHUDNums[fValue], [20/255, 20/128], g_hud_color, 1, DRAWFLAG_ADDITIVE); +} + +int +HUD_InSlotPos(int slot, int pos) +{ + player pl = (player)pSeat->m_ePlayer; + for (int i = 1; i < g_weapons.length; i++) { + if (g_weapons[i].slot == slot && g_weapons[i].slot_pos == pos) { + if (pl.g_items & g_weapons[i].id) { + return i; + } else { + return -1; + } + } + } + return -1; +} + +void +HUD_SlotSelect(int slot) +{ + player pl = (player)pSeat->m_ePlayer; + int curslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot; + int i; + + if (g_textmenu != "") { + Textmenu_Input(slot); + return; + } + + /* hack to see if we have ANY weapons at all. */ + if (!pl.activeweapon) { + return; + } + + if (pSeat->m_flHUDWeaponSelectTime < time) { + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudon.wav", 0.5, ATTN_NONE); + } else { + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_moveselect.wav", 0.5, ATTN_NONE); + } + + /* weren't in that slot? select the first one then */ + if (curslot != slot) { + for (i = 1; i < g_weapons.length; i++) { + if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) { + pSeat->m_iHUDWeaponSelected = i; + pSeat->m_flHUDWeaponSelectTime = time + 3; + break; + } + } + } else { + int first = -1; + for (i = 1; i < g_weapons.length; i++) { + if (g_weapons[i].slot == slot && pl.g_items & g_weapons[i].id) { + if (i < pSeat->m_iHUDWeaponSelected && first == -1) { + first = i; + } else if (i > pSeat->m_iHUDWeaponSelected) { + first = -1; + pSeat->m_iHUDWeaponSelected = i; + pSeat->m_flHUDWeaponSelectTime = time + 3; + break; + } + } + } + + if (first > 0) { + pSeat->m_iHUDWeaponSelected = first; + pSeat->m_flHUDWeaponSelectTime = time + 3; + } + } +} + +void +HUD_DrawWeaponSelect(void) +{ + player pl = (player)pSeat->m_ePlayer; + if (!pl.activeweapon) { + return; + } + if (pSeat->m_flHUDWeaponSelectTime < time) { + if (pSeat->m_iHUDWeaponSelected) { + sound(pSeat->m_ePlayer, CHAN_ITEM, "common/wpn_hudoff.wav", 0.5, ATTN_NONE); + pSeat->m_iHUDWeaponSelected = 0; + } + return; + } + + vector vecPos = g_hudmins + [16,16]; + + int b; + int wantslot = g_weapons[pSeat->m_iHUDWeaponSelected].slot; + int wantpos = g_weapons[pSeat->m_iHUDWeaponSelected].slot_pos; + for (int i = 0; i < 7; i++) { + int slot_selected = 0; + vecPos[1] = g_hudmins[1] + 16; + HUD_DrawWeaponSelect_Num(vecPos, i); + vecPos[1] += 20; + for (int x = 0; x < 32; x++) { + if (i == wantslot) { + slot_selected = TRUE; + if (x == wantpos) { + // Selected Sprite + Weapons_HUDPic(pSeat->m_iHUDWeaponSelected, 1, vecPos, 1.0f); + drawsubpic(vecPos, [170,45], "sprites/640hud3.spr_0.tga", + [0,180/256], [170/256,45/256], + g_hud_color, 1, DRAWFLAG_ADDITIVE); + vecPos[1] += 50; + } else if ((b=HUD_InSlotPos(i, x)) != -1) { + // Unselected Sprite + Weapons_HUDPic(b, 0, vecPos, 1.0f); + vecPos[1] += 50; + } + } else if (HUD_InSlotPos(i, x) != -1) { + HUD_DrawWeaponSelect_Num(vecPos, 7); + vecPos[1] += 25; + } + } + + if (slot_selected == TRUE) { + vecPos[0] += 175; + } else { + vecPos[0] += 25; + } + } +} diff --git a/src/client/init.qc b/src/client/init.qc new file mode 100644 index 0000000..f5838b5 --- /dev/null +++ b/src/client/init.qc @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +float(entity foo, float chanid) getchannellevel = #0; + + +/* +================= +ClientGame_Init + +Comparable to worldspawn in SSQC in that it's mostly used for precaches +================= +*/ +void +ClientGame_Init(float apilevel, string enginename, float engineversion) +{ + Obituary_Init(); +} + +void +ClientGame_InitDone(void) +{ +} + +void +ClientGame_RendererRestart(string rstr) +{ + Obituary_Precache(); + + FX_Blood_Init(); + FX_BreakModel_Init(); + FX_Explosion_Init(); + FX_GibHuman_Init(); + FX_Spark_Init(); + FX_Impact_Init(); + + precache_model("sprites/640hud1.spr"); + precache_model("sprites/640hud2.spr"); + precache_model("sprites/640hud3.spr"); + precache_model("sprites/640hud4.spr"); + precache_model("sprites/640hud5.spr"); + precache_model("sprites/640hud6.spr"); + precache_model("sprites/640hudof01.spr"); + precache_model("sprites/640hudof02.spr"); + precache_model("sprites/640hudof03.spr"); + precache_model("sprites/640hudof04.spr"); + precache_model("sprites/640hudof05.spr"); + precache_model("sprites/640hudof06.spr"); + precache_model("sprites/ofch1.spr"); + precache_model("sprites/ofch2.spr"); + precache_model("sprites/320hudof01.spr"); + + BEAM_TRIPMINE = particleeffectnum("weapon_tripmine.beam"); +} diff --git a/src/client/progs.src b/src/client/progs.src new file mode 100644 index 0000000..eccfc07 --- /dev/null +++ b/src/client/progs.src @@ -0,0 +1,39 @@ +#pragma target fte +#pragma progs_dat "../../csprogs.dat" + +#define CSQC +#define CLIENT +#define VALVE +#define GEARBOX +#define GS_RENDERFX +#define CLASSIC_VGUI + +#includelist +../../../src/shared/fteextensions.qc +../../../src/shared/defs.h +../../../valve/src/client/defs.h +../../../src/client/defs.h + +../../../src/vgui/include.src + +../../../src/gs-entbase/client.src +../../../src/gs-entbase/shared.src +../shared/include.src + +../../../valve/src/client/predict.qc +init.qc +../../../valve/src/client/player.qc +../../../valve/src/client/entities.qc +../../../valve/src/client/cmds.qc +../../../valve/src/client/game_event.qc +../../../valve/src/client/view.qc +../../../valve/src/client/obituary.qc +../../../valve/src/client/hud.qc +hud_weaponselect.qc +../../../valve/src/client/scoreboard.qc +../../../valve/src/client/input.qc +../../../base/src/client/modelevent.qc + +../../../src/client/include.src +../../../src/shared/include.src +#endlist diff --git a/src/progs.src b/src/progs.src new file mode 100755 index 0000000..2c2a868 --- /dev/null +++ b/src/progs.src @@ -0,0 +1,2 @@ +#pragma sourcefile client/progs.src +#pragma sourcefile server/progs.src diff --git a/src/server/Makefile b/src/server/Makefile new file mode 100644 index 0000000..627019a --- /dev/null +++ b/src/server/Makefile @@ -0,0 +1,4 @@ +CC=fteqcc + +all: + $(CC) progs.src diff --git a/src/server/ammo_op4.qc b/src/server/ammo_op4.qc new file mode 100644 index 0000000..0829deb --- /dev/null +++ b/src/server/ammo_op4.qc @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED ammo_556 (0 0 0.8) (-16 -16 0) (16 16 32) + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Ammo for the M249. +A single ammo_556 will provide 50 bullets. + +*/ +class ammo_556:item_ammo +{ + void(void) ammo_556; + virtual void(void) touch; +}; + +void +ammo_556::ammo_556(void) +{ + model = "models/w_saw_clip.mdl"; + item_ammo::item_ammo(); +} +void +ammo_556::touch(void) +{ + if (other.classname == "player") { + player pl = (player)other; + if (pl.ammo_556 < 200) { + pl.ammo_556 = bound(0, pl.ammo_556 + 50, 200); + item_ammo::touch(); + } + } +} + +/*QUAKED ammo_762 (0 0 0.8) (-16 -16 0) (16 16 32) + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Ammo for the M-40A1 Sniper. +A single ammo_762 will provide 5 bullets. + +*/ +class ammo_762:item_ammo +{ + void(void) ammo_762; + virtual void(void) touch; +}; + +void +ammo_762::ammo_762(void) +{ + model = "models/w_m40a1clip.mdl"; + item_ammo::item_ammo(); +} +void +ammo_762::touch(void) +{ + if (other.classname == "player") { + player pl = (player)other; + if (pl.ammo_762 < 15) { + pl.ammo_762 = bound(0, pl.ammo_762 + 5, 15); + item_ammo::touch(); + } + } +} + +/*QUAKED ammo_spore (0 0 0.8) (-16 -16 0) (16 16 32) + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Ammo for the Spore Launcher. +A single ammo_spore will provide 1 spore. +The angle key refers to the direction the entity will fire (?) +when shot. The model itself uses decal-like logic to determine +the direction the model is aiming. + +*/ +class ammo_spore:item_ammo +{ + void(void) ammo_spore; + virtual void(void) touch; + virtual void(void) Respawn; + virtual void(void) Death; +}; + +void +ammo_spore::ammo_spore(void) +{ + movetype = MOVETYPE_NONE; + model = "models/spore_ammo.mdl"; + item_ammo::item_ammo(); +} + +void +ammo_spore::Death(void) +{ + makevectors(m_oldAngle); + Sporelauncher_AltFire(this, origin, v_forward); + frame = 2; + m_iBody = 0; + solid = SOLID_NOT; + think = Respawn; + nextthink = time + 10.0f; +} + +void ammo_spore::Respawn(void) +{ + frame = 1; + m_iBody = 2; + movetype = MOVETYPE_NONE; + takedamage = DAMAGE_YES; + health = 1; + + if (m_oldModel) { + SetModel(m_oldModel); + } + + solid = SOLID_NOT; + setsize(this, [0,0,0], [0,0,0]); + SetOrigin(m_oldOrigin); + + decal_pickwall(this, m_oldOrigin); + + /* we never hit any wall. */ + if (g_tracedDecal.fraction == 1.0f) { + print(sprintf("^xFA0Warning^7: ammo_spore tracing failed at %v\n", origin)); + return; + } + + origin = g_tracedDecal.endpos; + makevectors(vectoangles(g_tracedDecal.endpos - origin)); + vector cpl = v_forward - (v_forward * g_tracedDecal.normal) * g_tracedDecal.normal; + + if (g_tracedDecal.normal[2] == 0) { + cpl = [0, 0, 1]; + } + angles = vectoangles(cpl, g_tracedDecal.normal); + + solid = SOLID_BBOX; + setsize(this, [-16,-16,-16], [16,16,16]); + think = __NULL__; + nextthink = -1; +} + +void +ammo_spore::touch(void) +{ + if not (other.flags & FL_CLIENT) { + return; + } + + player pl = (player)other; + if (pl.ammo_spore < 20) { + pl.ammo_spore = bound(0, pl.ammo_spore + 1, 20); + Weapons_RefreshAmmo(pl); + Logging_Pickup(other, this, __NULL__); + frame = 2; + m_iBody = 0; + think = Respawn; + nextthink = time + 10.0f; + } +} diff --git a/src/server/defs.h b/src/server/defs.h new file mode 100644 index 0000000..3a04a3b --- /dev/null +++ b/src/server/defs.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../../../valve/src/server/gamerules.h" +#include "gamerules_ctf.h" +#include "../../../valve/src/server/items.h" diff --git a/src/server/gamerules.qc b/src/server/gamerules.qc new file mode 100644 index 0000000..30ae7cd --- /dev/null +++ b/src/server/gamerules.qc @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +var int autocvar_sv_playerkeepalive = TRUE; + +/* we check what fields have changed over the course of the frame and network + * only the ones that have actually changed */ +void +HLGameRules::PlayerPostFrame(base_player pp) +{ + Animation_PlayerUpdate(); +} + +void +HLGameRules::LevelNewParms(void) +{ + parm1 = parm2 = parm3 = parm4 = parm5 = parm6 = parm7 = + parm8 = parm9 = parm10 = parm11 = parm12 = parm13 = parm14 = + parm15 = parm16 = parm17 = parm18 = parm19 = parm20 = parm21 = + parm22 = parm23 = parm24 = parm25 = parm26 = parm27 = parm28 = + parm29 = parm30 = 0; + parm64 = FL_CLIENT; +} + +void +HLGameRules::LevelDecodeParms(base_player pp) +{ + player pl = (player)pp; + g_landmarkpos[0] = parm1; + g_landmarkpos[1] = parm2; + g_landmarkpos[2] = parm3; + pl.angles[0] = parm4; + pl.angles[1] = parm5; + pl.angles[2] = parm6; + pl.velocity[0] = parm7; + pl.velocity[1] = parm8; + pl.velocity[2] = parm9; + pl.g_items = parm10; + pl.activeweapon = parm11; + pl.flags = parm64; + + pl.ammo_9mm = parm12; + pl.ammo_357 = parm13; + pl.ammo_buckshot = parm14; + pl.ammo_m203_grenade = parm15; + pl.ammo_bolt = parm16; + pl.ammo_rocket = parm17; + pl.ammo_uranium = parm18; + pl.ammo_handgrenade = parm19; + pl.ammo_satchel = parm20; + pl.ammo_tripmine = parm21; + pl.ammo_snark = parm22; + pl.ammo_hornet = parm23; + + pl.glock_mag = parm24; + pl.mp5_mag = parm25; + pl.python_mag = parm26; + pl.shotgun_mag = parm27; + pl.crossbow_mag = parm28; + pl.rpg_mag = parm29; + pl.satchel_chg = parm30; + + /* near gearbox additions */ + pl.ammo_556 = parm31; + pl.ammo_762 = parm32; + pl.ammo_spore = parm33; + pl.ammo_shock = parm34; + pl.ammo_penguin = parm35; + pl.eagle_mag = parm36; + pl.sniper_mag = parm37; + pl.m249_mag = parm38; + pl.sporelauncher_mag = parm39; + + if (pl.flags & FL_CROUCHING) { + setsize(pl, VEC_CHULL_MIN, VEC_CHULL_MAX); + } else { + setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); + } +} + +void +HLGameRules::LevelChangeParms(base_player pp) +{ + player pl = (player)pp; + parm1 = g_landmarkpos[0]; + parm2 = g_landmarkpos[1]; + parm3 = g_landmarkpos[2]; + parm4 = pl.angles[0]; + parm5 = pl.angles[1]; + parm6 = pl.angles[2]; + parm7 = pl.velocity[0]; + parm8 = pl.velocity[1]; + parm9 = pl.velocity[2]; + parm64 = pl.flags; + parm10 = pl.g_items; + parm11 = pl.activeweapon; + parm12 = pl.ammo_9mm; + parm13 = pl.ammo_357; + parm14 = pl.ammo_buckshot; + parm15 = pl.ammo_m203_grenade; + parm16 = pl.ammo_bolt; + parm17 = pl.ammo_rocket; + parm18 = pl.ammo_uranium; + parm19 = pl.ammo_handgrenade; + parm20 = pl.ammo_satchel; + parm21 = pl.ammo_tripmine; + parm22 = pl.ammo_snark; + parm23 = pl.ammo_hornet; + parm24 = pl.glock_mag; + parm25 = pl.mp5_mag; + parm26 = pl.python_mag; + parm27 = pl.shotgun_mag; + parm28 = pl.crossbow_mag; + parm29 = pl.rpg_mag; + parm30 = pl.satchel_chg; + + /* near gearbox additions */ + parm31 = pl.ammo_556; + parm32 = pl.ammo_762; + parm33 = pl.ammo_spore; + parm34 = pl.ammo_shock; + parm35 = pl.ammo_penguin; + parm36 = pl.eagle_mag; + parm37 = pl.sniper_mag; + parm38 = pl.m249_mag; + parm39 = pl.sporelauncher_mag; +} + +void +HLGameRules::PlayerConnect(base_player pl) +{ + if (Plugin_PlayerConnect(pl) == FALSE) + bprint(PRINT_HIGH, sprintf("%s connected\n", pl.netname)); +} + +void +HLGameRules::PlayerDisconnect(base_player pl) +{ + bprint(PRINT_HIGH, sprintf("%s disconnected\n", pl.netname)); + + /* Make this unusable */ + pl.solid = SOLID_NOT; + pl.movetype = MOVETYPE_NONE; + pl.modelindex = 0; + pl.health = 0; + pl.takedamage = 0; + pl.SendFlags = PLAYER_MODELINDEX; +} + +void +HLGameRules::PlayerKill(base_player pp) +{ + player pl = (player)pp; + Damage_Apply(pl, pl, pl.health, WEAPON_NONE, DMG_SKIP_ARMOR); +} diff --git a/src/server/gamerules_ctf.h b/src/server/gamerules_ctf.h new file mode 100644 index 0000000..d12c87f --- /dev/null +++ b/src/server/gamerules_ctf.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +class OP4CTFRules:HLGameRules +{ + int m_iIntermission; + int m_iIntermissionTime; + + virtual void(void) FrameStart; + + /* client */ + virtual void(base_player) PlayerSpawn; + virtual void(base_player) PlayerDeath; +}; diff --git a/src/server/gamerules_ctf.qc b/src/server/gamerules_ctf.qc new file mode 100644 index 0000000..c606cb1 --- /dev/null +++ b/src/server/gamerules_ctf.qc @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +void +OP4CTFRules::FrameStart(void) +{ + if (cvar("mp_timelimit")) + if (time >= (cvar("mp_timelimit") * 60)) { + IntermissionStart(); + } +} + +void +OP4CTFRules::PlayerDeath(base_player pp) +{ + player pl = (player)pp; + + /* obituary networking */ + WriteByte(MSG_MULTICAST, SVC_CGAMEPACKET); + WriteByte(MSG_MULTICAST, EV_OBITUARY); + if (g_dmg_eAttacker.netname) + WriteString(MSG_MULTICAST, g_dmg_eAttacker.netname); + else + WriteString(MSG_MULTICAST, g_dmg_eAttacker.classname); + WriteString(MSG_MULTICAST, pl.netname); + WriteByte(MSG_MULTICAST, g_dmg_iWeapon); + WriteByte(MSG_MULTICAST, 0); + msg_entity = world; + multicast([0,0,0], MULTICAST_ALL); + + /* death-counter */ + pl.deaths++; + forceinfokey(pl, "*deaths", ftos(pl.deaths)); + + /* update score-counter */ + if (pl.flags & FL_CLIENT || pl.flags & FL_MONSTER) + if (g_dmg_eAttacker.flags & FL_CLIENT) { + if (pl == g_dmg_eAttacker) + g_dmg_eAttacker.frags--; + else + g_dmg_eAttacker.frags++; + } + + /* in DM we only care about the frags */ + if (cvar("mp_fraglimit")) + if (g_dmg_eAttacker.frags >= cvar("mp_fraglimit")) { + IntermissionStart(); + } + + weaponbox_spawn(pl); + pl.movetype = MOVETYPE_NONE; + pl.solid = SOLID_NOT; + pl.takedamage = DAMAGE_NO; + pl.gflags &= ~GF_FLASHLIGHT; + pl.armor = pl.activeweapon = pl.g_items = 0; + + pl.think = PutClientInServer; + pl.nextthink = time + 4.0f; + Sound_Play(pl, CHAN_AUTO, "player.die"); + + if (pl.health < -50) { + pl.health = 0; + FX_GibHuman(pl.origin); + return; + } + + pl.health = 0; + + /* Let's handle corpses on the clientside */ + entity corpse = spawn(); + setorigin(corpse, pl.origin + [0,0,32]); + setmodel(corpse, pl.model); + setsize(corpse, VEC_HULL_MIN, VEC_HULL_MAX); + corpse.movetype = MOVETYPE_TOSS; + corpse.solid = SOLID_TRIGGER; + corpse.modelindex = pl.modelindex; + corpse.frame = ANIM_DIESIMPLE; + corpse.angles = pl.angles; + corpse.velocity = pl.velocity; +} + +void +OP4CTFRules::PlayerSpawn(base_player pp) +{ + player pl = (player)pp; + + /* this is where the mods want to deviate */ + entity spot; + + pl.classname = "player"; + pl.health = pl.max_health = 100; + pl.takedamage = DAMAGE_YES; + pl.solid = SOLID_SLIDEBOX; + pl.movetype = MOVETYPE_WALK; + pl.flags = FL_CLIENT; + pl.viewzoom = 1.0; + pl.model = "models/player.mdl"; + string mymodel = infokey(pl, "model"); + + if (mymodel) { + mymodel = sprintf("models/player/%s/%s.mdl", mymodel, mymodel); + if (whichpack(mymodel)) { + pl.model = mymodel; + } + } + setmodel(pl, pl.model); + + setsize(pl, VEC_HULL_MIN, VEC_HULL_MAX); + pl.view_ofs = VEC_PLAYER_VIEWPOS; + pl.velocity = [0,0,0]; + pl.gravity = __NULL__; + pl.frame = 1; + pl.SendFlags = UPDATE_ALL; + pl.customphysics = Empty; + pl.iBleeds = TRUE; + forceinfokey(pl, "*spec", "0"); + forceinfokey(pl, "*deaths", ftos(pl.deaths)); + + LevelNewParms(); + LevelDecodeParms(pl); + pl.g_items = ITEM_CROWBAR | ITEM_GLOCK | ITEM_SUIT; + pl.activeweapon = WEAPON_GLOCK; + pl.glock_mag = 18; + pl.ammo_9mm = 44; + + spot = Spawn_SelectRandom("info_player_deathmatch"); + setorigin(pl, spot.origin); + pl.angles = spot.angles; + Weapons_RefreshAmmo(pl); + + Client_FixAngle(pl, pl.angles); +} diff --git a/src/server/input.qc b/src/server/input.qc new file mode 100644 index 0000000..486d73d --- /dev/null +++ b/src/server/input.qc @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +void +Game_Input(void) +{ + if (input_buttons & INPUT_BUTTON0) { + Weapons_Primary(); + } else if (input_buttons & INPUT_BUTTON4) { + Weapons_Reload(); + } else if (input_buttons & INPUT_BUTTON3) { + Weapons_Secondary(); + } else { + Weapons_Release(); + } + + if (input_buttons & INPUT_BUTTON5) { + Player_UseDown(); + } else { + Player_UseUp(); + } + + if (self.impulse == 100) { + Flashlight_Toggle(); + } + + if (cvar("sv_cheats") == 1) { + player pl = (player)self; + if (self.impulse == 101) { + pl.health = 100; + pl.armor = 100; + pl.g_items |= ITEM_SUIT; + Weapons_AddItem(pl, WEAPON_CROWBAR, -1); + Weapons_AddItem(pl, WEAPON_GLOCK, -1); + Weapons_AddItem(pl, WEAPON_PYTHON, -1); + Weapons_AddItem(pl, WEAPON_MP5, -1); + Weapons_AddItem(pl, WEAPON_SHOTGUN, -1); + Weapons_AddItem(pl, WEAPON_CROSSBOW, -1); + Weapons_AddItem(pl, WEAPON_RPG, -1); + Weapons_AddItem(pl, WEAPON_GAUSS, -1); + Weapons_AddItem(pl, WEAPON_EGON, -1); + Weapons_AddItem(pl, WEAPON_HORNETGUN, -1); + Weapons_AddItem(pl, WEAPON_HANDGRENADE, -1); + Weapons_AddItem(pl, WEAPON_SATCHEL, -1); + Weapons_AddItem(pl, WEAPON_TRIPMINE, -1); + Weapons_AddItem(pl, WEAPON_SNARK, -1); + Weapons_AddItem(pl, WEAPON_PENGUIN, -1); + Weapons_AddItem(pl, WEAPON_PIPEWRENCH, -1); + Weapons_AddItem(pl, WEAPON_KNIFE, -1); + Weapons_AddItem(pl, WEAPON_GRAPPLE, -1); + Weapons_AddItem(pl, WEAPON_EAGLE, -1); + Weapons_AddItem(pl, WEAPON_M249, -1); + Weapons_AddItem(pl, WEAPON_SHOCKRIFLE, -1); + Weapons_AddItem(pl, WEAPON_SPORELAUNCHER, -1); + Weapons_AddItem(pl, WEAPON_SNIPERRIFLE, -1); + Weapons_AddItem(pl, WEAPON_DISPLACER, -1); + } + + if (self.impulse == 102) { + // Respawn all the entities + for (entity a = world; (a = findfloat(a, g::identity, 1));) { + CBaseEntity caw = (CBaseEntity)a; + caw.Respawn(); + } + bprint(PRINT_HIGH, "Respawning all map entities...\n"); + } + } + + self.impulse = 0; +} diff --git a/src/server/monster_drillsergeant.qc b/src/server/monster_drillsergeant.qc new file mode 100644 index 0000000..014b42b --- /dev/null +++ b/src/server/monster_drillsergeant.qc @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED monster_drillsergeant (0 0.8 0.8) (-16 -16 0) (16 16 72) + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Drill Sergeant +...from the Opposing Force Boot-Camp Training + +*/ + +enum +{ + DRILL_IDLE1, + DRILL_IDLE2, + DRILL_IDLE3, + DRILL_WALK, + DRILL_RUN, + DRILL_TURNLEFT, + DRILL_TURNRIGHT, + DRILL_FLINCH, + DRILL_DIESIMPLE, + DRILL_DIEBACKWARD, + DRILL_DIEFORWARD, + DRILL_DEADONSIDE, + DRILL_DEADONSTOMACH, + DRILL_HANDSONHIPS, + DRILL_POINT1, + DRILL_POINT2, + DRILL_BARK, + DRILL_YELLHARD, + DRILL_BARKHARD, + DRILL_WHISTLE, + DRILL_BINOCULARS +}; + +class monster_drillsergeant:CBaseNPC +{ + void(void) monster_drillsergeant; + virtual void(void) Respawn; + virtual int(void) AnimIdle; + virtual int(void) AnimWalk; + virtual int(void) AnimRun; +}; + +int +monster_drillsergeant::AnimIdle(void) +{ + return DRILL_IDLE1; +} + +int +monster_drillsergeant::AnimWalk(void) +{ + return DRILL_WALK; +} + +int +monster_drillsergeant::AnimRun(void) +{ + return DRILL_RUN; +} + +void +monster_drillsergeant::Respawn(void) +{ + CBaseNPC::Respawn(); + takedamage = DAMAGE_NO; + iBleeds = FALSE; +} + +void +monster_drillsergeant::monster_drillsergeant(void) +{ + netname = "Drill Sergeant"; + model = "models/drill.mdl"; + base_mins = [-16,-16,0]; + base_maxs = [16,16,72]; + CBaseNPC::CBaseNPC(); +} diff --git a/src/server/monster_recruit.qc b/src/server/monster_recruit.qc new file mode 100644 index 0000000..e73a460 --- /dev/null +++ b/src/server/monster_recruit.qc @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED monster_recruit (0 0.8 0.8) (-16 -16 0) (16 16 72) + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Recruit +...from the Opposing Force Boot-Camp Training + +*/ + +enum +{ + RECRUIT_IDLE, + RECRUIT_WALK, + RECRUIT_RUN, + RECRUIT_TURNLEFT, + RECRUIT_TURNRIGHT, + RECRUIT_PUSHUPS, + RECRUIT_JUMPINJACK, + RECRUIT_SALUTE +}; + +class monster_recruit:CBaseNPC +{ + void(void) monster_recruit; + virtual void(void) Respawn; + virtual int(void) AnimIdle; + virtual int(void) AnimWalk; + virtual int(void) AnimRun; +}; + +int +monster_recruit::AnimIdle(void) +{ + return RECRUIT_IDLE; +} + +int +monster_recruit::AnimWalk(void) +{ + return RECRUIT_WALK; +} + +int +monster_recruit::AnimRun(void) +{ + return RECRUIT_RUN; +} + +void +monster_recruit::Respawn(void) +{ + CBaseNPC::Respawn(); + takedamage = DAMAGE_NO; + iBleeds = FALSE; +} + +void +monster_recruit::monster_recruit(void) +{ + netname = "Recruit"; + model = "models/recruit.mdl"; + base_mins = [-16,-16,0]; + base_maxs = [16,16,72]; + CBaseNPC::CBaseNPC(); +} diff --git a/src/server/progs.src b/src/server/progs.src new file mode 100755 index 0000000..9d20767 --- /dev/null +++ b/src/server/progs.src @@ -0,0 +1,95 @@ +#pragma target fte +#pragma progs_dat "../../progs.dat" + +#define QWSSQC +#define SERVER +#define VALVE +#define GEARBOX +#define GS_RENDERFX + +#includelist +../../../src/shared/fteextensions.qc +../../../src/gs-entbase/server/defs.h +../../../src/shared/defs.h +../../../src/server/defs.h + +../../../src/gs-entbase/server.src +../../../src/gs-entbase/shared.src +../shared/include.src + +defs.h + +../../../valve/src/server/monster_apache.qc +../../../valve/src/server/monster_alien_controller.qc +../../../valve/src/server/monster_alien_grunt.qc +../../../valve/src/server/monster_alien_slave.qc +../../../valve/src/server/monster_barnacle.qc +../../../valve/src/server/monster_barney.qc +../../../valve/src/server/monster_barney_dead.qc +../../../valve/src/server/monster_bigmomma.qc +../../../valve/src/server/monster_bloater.qc +../../../valve/src/server/monster_bullchicken.qc +../../../valve/src/server/monster_cockroach.qc +../../../valve/src/server/monster_flyer_flock.qc +../../../valve/src/server/monster_gargantua.qc +../../../valve/src/server/monster_gman.qc +../../../valve/src/server/monster_headcrab.qc +../../../valve/src/server/monster_babycrab.qc +../../../valve/src/server/monster_hevsuit_dead.qc +../../../valve/src/server/monster_houndeye.qc +../../../valve/src/server/monster_human_grunt.qc +../../../valve/src/server/monster_hgrunt_dead.qc +../../../valve/src/server/monster_human_assassin.qc +../../../valve/src/server/monster_ichthyosaur.qc +../../../valve/src/server/monster_leech.qc +../../../valve/src/server/monster_miniturret.qc +../../../valve/src/server/monster_nihilanth.qc +../../../valve/src/server/monster_osprey.qc +../../../valve/src/server/monster_rat.qc +../../../valve/src/server/monster_scientist_dead.qc +../../../valve/src/server/monster_sitting_scientist.qc +../../../valve/src/server/monster_scientist.qc +../../../valve/src/server/monster_sentry.qc +../../../valve/src/server/monster_tentacle.qc +../../../valve/src/server/monster_turret.qc +../../../valve/src/server/monster_zombie.qc +monster_drillsergeant.qc +monster_recruit.qc + +../../../valve/src/server/player.qc +../../../valve/src/server/spectator.qc +../../../valve/src/server/items.qc +../../../valve/src/server/item_longjump.qc +../../../valve/src/server/item_suit.qc +../../../valve/src/server/item_healthkit.qc +../../../valve/src/server/item_battery.qc +../../../valve/src/server/item_weaponbox.qc +../../../valve/src/server/world_items.qc +../../../valve/src/server/xen_spore_small.qc +../../../valve/src/server/xen_spore_medium.qc +../../../valve/src/server/xen_spore_large.qc +../../../valve/src/server/xen_hair.qc +../../../valve/src/server/xen_plantlight.qc +../../../valve/src/server/ammo.qc +ammo_op4.qc + +../../../src/botlib/include.src + +gamerules.qc +../../../valve/src/server/gamerules_singleplayer.qc +../../../valve/src/server/gamerules_multiplayer.qc +gamerules_ctf.qc +../../../valve/src/server/client.qc +server.qc +../../../valve/src/server/damage.qc +../../../valve/src/server/rules.qc +../../../valve/src/server/flashlight.qc +../../../base/src/server/modelevent.qc + +../../../valve/src/server/input.qc +../../../valve/src/server/spawn.qc + +../../../src/server/include.src +../../../src/shared/include.src +#endlist + diff --git a/src/server/server.qc b/src/server/server.qc new file mode 100644 index 0000000..fd1c23d --- /dev/null +++ b/src/server/server.qc @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +void +Game_InitRules(void) +{ + if (cvar("sv_playerslots") == 1 || cvar("coop") == 1) { + g_grMode = spawn(HLSingleplayerRules); + } else { + g_grMode = spawn(HLMultiplayerRules); + } +} + +void +Game_Worldspawn(void) +{ + Sound_Precache("ammo.pickup"); + Sound_Precache("ammo.respawn"); + Sound_Precache("player.die"); + Sound_Precache("player.fall"); + Sound_Precache("player.lightfall"); + precache_model("models/player.mdl"); + precache_model("models/w_weaponbox.mdl"); + Weapons_Init(); + Player_Precache(); +} diff --git a/src/shared/include.src b/src/shared/include.src new file mode 100644 index 0000000..06d2042 --- /dev/null +++ b/src/shared/include.src @@ -0,0 +1,46 @@ + #includelist +../../../valve/src/shared/entities.h +../../../valve/src/shared/flags.h +player.qc +../../../valve/src/shared/weapon_common.h +../../../valve/src/shared/animations.h +../../../valve/src/shared/animations.qc +../../../valve/src/shared/pmove.qc +../../../valve/src/shared/pmove_water.qc + +../../../valve/src/shared/fx_blood.qc +../../../valve/src/shared/fx_breakmodel.qc +../../../valve/src/shared/fx_explosion.qc +../../../valve/src/shared/fx_gibhuman.qc +../../../valve/src/shared/fx_spark.qc +../../../valve/src/shared/fx_impact.qc + +items.h +weapons.h +../../../valve/src/shared/w_crossbow.qc +../../../valve/src/shared/w_crowbar.qc +../../../valve/src/shared/w_egon.qc +../../../valve/src/shared/w_gauss.qc +../../../valve/src/shared/w_glock.qc +../../../valve/src/shared/w_handgrenade.qc +../../../valve/src/shared/w_hornetgun.qc +../../../valve/src/shared/w_mp5.qc +../../../valve/src/shared/w_python.qc +../../../valve/src/shared/w_rpg.qc +../../../valve/src/shared/w_satchel.qc +../../../valve/src/shared/w_shotgun.qc +../../../valve/src/shared/w_snark.qc +../../../valve/src/shared/w_tripmine.qc +w_pipewrench.qc +w_knife.qc +w_grapple.qc +w_eagle.qc +w_m249.qc +w_displacer.qc +w_sniperrifle.qc +w_sporelauncher.qc +w_penguin.qc +w_shockrifle.qc +weapons.qc +../../../valve/src/shared/weapon_common.qc +#endlist diff --git a/src/shared/items.h b/src/shared/items.h new file mode 100644 index 0000000..efe5bd1 --- /dev/null +++ b/src/shared/items.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#define ITEM_CROWBAR 0x00000001i +#define ITEM_GLOCK 0x00000002i +#define ITEM_PYTHON 0x00000004i +#define ITEM_MP5 0x00000008i +#define ITEM_CROSSBOW 0x00000010i +#define ITEM_SHOTGUN 0x00000020i +#define ITEM_RPG 0x00000040i +#define ITEM_GAUSS 0x00000080i + +#define ITEM_EGON 0x00000100i +#define ITEM_HORNETGUN 0x00000200i +#define ITEM_HANDGRENADE 0x00000400i +#define ITEM_TRIPMINE 0x00000800i +#define ITEM_SATCHEL 0x00001000i +#define ITEM_SNARK 0x00002000i +#define ITEM_SUIT 0x00004000i +#define ITEM_LONGJUMP 0x00008000i + +#define ITEM_PIPEWRENCH 0x00010000i +#define ITEM_KNIFE 0x00020000i +#define ITEM_GRAPPLE 0x00040000i +#define ITEM_EAGLE 0x00080000i +#define ITEM_M249 0x00100000i +#define ITEM_DISPLACER 0x00200000i +#define ITEM_SNIPERRIFLE 0x00400000i +#define ITEM_PENGUIN 0x00800000i + +#define ITEM_SHOCKRIFLE 0x01000000i +#define ITEM_SPORELAUNCHER 0x02000000i +#define ITEM_UNUSED27 0x04000000i +#define ITEM_UNUSED28 0x08000000i +#define ITEM_UNUSED29 0x10000000i +#define ITEM_UNUSED30 0x20000000i +#define ITEM_UNUSED31 0x40000000i +#define ITEM_UNUSED32 0x80000000i diff --git a/src/shared/player.qc b/src/shared/player.qc new file mode 100644 index 0000000..742edce --- /dev/null +++ b/src/shared/player.qc @@ -0,0 +1,806 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* all potential SendFlags bits we can possibly send */ +enumflags +{ + PLAYER_KEEPALIVE, + PLAYER_MODELINDEX, + PLAYER_ORIGIN, + PLAYER_ORIGIN_Z, + PLAYER_ANGLES_X, + PLAYER_ANGLES_Y, + PLAYER_ANGLES_Z, + PLAYER_VELOCITY, + PLAYER_VELOCITY_Z, + PLAYER_FLAGS, + PLAYER_WEAPON, + PLAYER_ITEMS, + PLAYER_HEALTH, + PLAYER_ARMOR, + PLAYER_MOVETYPE, + PLAYER_VIEWOFS, + PLAYER_BASEFRAME, + PLAYER_FRAME, + PLAYER_AMMO1, + PLAYER_AMMO2, + PLAYER_AMMO3, + PLAYER_UNUSED1, + PLAYER_UNUSED2 +}; + +/* ammo 1 type updates */ +enumflags +{ + AMMO1_GLOCK, + AMMO1_MP5, + AMMO1_PYTHON, + AMMO1_SHOTGUN, + AMMO1_CROSSBOW, + AMMO1_RPG, + AMMO1_SATCHEL +}; + +/* ammo 2 type updates */ +enumflags +{ + AMMO2_9MM, + AMMO2_357, + AMMO2_BUCKSHOT, + AMMO2_BOLT, + AMMO2_ROCKET, + AMMO2_URANIUM, + AMMO2_HANDGRENADE, + AMMO2_SATCHEL, + AMMO2_TRIPMINE, + AMMO2_SNARK, + AMMO2_HORNET, +}; + +enumflags +{ + AMMO3_M203_GRENADE, + AMMO3_SHOTGUN_STATE, + AMMO3_GAUSS_STATE, + AMMO3_GAUSS_VOLUME, + AMMO3_EGON_STATE, + AMMO3_RPG_STATE, + AMMO3_HANDGRENADE_STATE +}; + +noref int input_sequence; +class player:base_player +{ + /* Weapon specific */ + int glock_mag; + int glock_mag_net; + int mp5_mag; + int mp5_mag_net; + int python_mag; + int python_mag_net; + int shotgun_mag; + int shotgun_mag_net; + int crossbow_mag; + int crossbow_mag_net; + int rpg_mag; + int rpg_mag_net; + int satchel_chg; + int satchel_chg_net; + + int ammo_9mm; + int ammo_9mm_net; + int ammo_357; + int ammo_357_net; + int ammo_buckshot; + int ammo_buckshot_net; + int ammo_bolt; + int ammo_bolt_net; + int ammo_rocket; + int ammo_rocket_net; + int ammo_uranium; + int ammo_uranium_net; + int ammo_handgrenade; + int ammo_handgrenade_net; + int ammo_satchel; + int ammo_satchel_net; + int ammo_tripmine; + int ammo_tripmine_net; + int ammo_snark; + int ammo_snark_net; + int ammo_hornet; + int ammo_hornet_net; + + int ammo_m203_grenade; + int ammo_m203_grenade_net; + int ammo_shotgun_state; + int ammo_shotgun_state_net; + int ammo_gauss_state; + int ammo_gauss_state_net; + int ammo_gauss_volume; + int ammo_gauss_volume_net; + int ammo_egon_state; + int ammo_egon_state_net; + int ammo_rpg_state; + int ammo_rpg_state_net; + int mode_tempstate; + int mode_tempstate_net; + + /* gearbox */ + int eagle_mag; int eagle_mag_net; + int sniper_mag; int sniper_mag_net; + int m249_mag; int m249_mag_net; + int sporelauncher_mag; int sporelauncher_mag_net; + int ammo_556; int ammo_556_net; + int ammo_762; int ammo_762_net; + int ammo_spore; int ammo_spore_net; + int ammo_shock; int ammo_shock_net; + int ammo_penguin; int ammo_penguin_net; + int mode_displacer; int mode_displacer_net; + int mode_eagle; int mode_eagle_net; + int mode_wrench; int mode_wrench_net; + int mode_sporelauncher; int mode_sporelauncher_net; + int mode_m249; int mode_m249_net; + +#ifdef CLIENT + /* External model */ + entity p_model; + int p_hand_bone; + int p_model_bone; + float lastweapon; + + virtual void(void) gun_offset; + virtual void(void) draw; + virtual float() predraw; + virtual void(void) postdraw; + virtual void(float) ReceiveEntity; + virtual void(void) PredictPreFrame; + virtual void(void) PredictPostFrame; +#else + virtual void(void) EvaluateEntity; + virtual float(entity, float) SendEntity; +#endif +}; + +#ifdef CLIENT +void Weapons_AmmoUpdate(entity); +/* +================= +player::ReceiveEntity +================= +*/ +void +player::ReceiveEntity(float new) +{ + float fl; + if (new == FALSE) { + /* Go through all the physics code between the last received frame + * and the newest frame and keep the changes this time around instead + * of rolling back, because we'll apply the new server-verified values + * right after anyway. */ + /* FIXME: splitscreen */ + if (entnum == player_localentnum) { + /* FIXME: splitscreen */ + pSeat = &g_seats[0]; + + for (int i = sequence+1; i <= servercommandframe; i++) { + /* ...maybe the input state is too old? */ + if (!getinputstate(i)) { + break; + } + input_sequence = i; + PMove_Run(); + } + + /* any differences in things that are read below are now + * officially from prediction misses. */ + } + } + + /* seed for our prediction table */ + sequence = servercommandframe; + + fl = readfloat(); + + /* HACK: we need to make this more reliable */ + if (fl == UPDATE_ALL) { + /* we respawned */ + gravity = __NULL__; + } + + if (fl & PLAYER_MODELINDEX) + modelindex = readshort(); + + if (fl & PLAYER_ORIGIN) { + origin[0] = readcoord(); + origin[1] = readcoord(); + } + + if (fl & PLAYER_ORIGIN_Z) + origin[2] = readcoord(); + if (fl & PLAYER_ANGLES_X) + pitch = readfloat(); + if (fl & PLAYER_ANGLES_Y) + angles[1] = readfloat(); + if (fl & PLAYER_ANGLES_Z) + angles[2] = readfloat(); + + if (fl & PLAYER_VELOCITY) { + velocity[0] = readcoord(); + velocity[1] = readcoord(); + } + + if (fl & PLAYER_VELOCITY_Z) + velocity[2] = readcoord(); + if (fl & PLAYER_FLAGS) { + flags = readfloat(); + gflags = readfloat(); + } + if (fl & PLAYER_WEAPON) + activeweapon = readbyte(); + if (fl & PLAYER_ITEMS) + g_items = (__variant)readfloat(); + if (fl & PLAYER_HEALTH) + health = readbyte(); + if (fl & PLAYER_ARMOR) + armor = readbyte(); + if (fl & PLAYER_MOVETYPE) + movetype = readbyte(); + if (fl & PLAYER_VIEWOFS) + view_ofs[2] = readfloat(); + if (fl & PLAYER_BASEFRAME) + baseframe = readbyte(); + if (fl & PLAYER_FRAME) { + frame = readbyte(); + frame1time = 0.0f; + frame2time = 0.0f; + } + + if (fl & PLAYER_AMMO1) { + glock_mag = readbyte(); + mp5_mag = readbyte(); + python_mag = readbyte(); + shotgun_mag = readbyte(); + crossbow_mag = readbyte(); + rpg_mag = readbyte(); + satchel_chg = readbyte(); + + /* gearbox */ + eagle_mag = readbyte(); + sniper_mag = readbyte(); + m249_mag = readbyte(); + sporelauncher_mag = readbyte(); + } + + if (fl & PLAYER_AMMO2) { + ammo_9mm = readbyte(); + ammo_357 = readbyte(); + ammo_buckshot = readbyte(); + ammo_bolt = readbyte(); + ammo_rocket = readbyte(); + ammo_uranium = readbyte(); + ammo_handgrenade = readbyte(); + ammo_satchel = readbyte(); + ammo_tripmine = readbyte(); + ammo_snark = readbyte(); + ammo_hornet = readbyte(); + + /* gearbox */ + ammo_556 = readbyte(); + ammo_762 = readbyte(); + ammo_spore = readbyte(); + ammo_shock = readbyte(); + ammo_penguin = readbyte(); + } + + if (fl & PLAYER_AMMO3) { + ammo_m203_grenade = readbyte(); + ammo_shotgun_state = readbyte(); + ammo_gauss_state = readbyte(); + ammo_gauss_volume = readbyte(); + ammo_egon_state = readbyte(); + ammo_rpg_state = readbyte(); + mode_tempstate = readbyte(); + + /* gearbox */ + mode_displacer = readbyte(); + mode_eagle = readbyte(); + mode_wrench = readbyte(); + mode_sporelauncher = readbyte(); + mode_m249 = readbyte(); + } + + if (fl & PLAYER_AMMO1 || fl & PLAYER_AMMO2 || fl & PLAYER_AMMO3) + Weapons_AmmoUpdate(this); + + setorigin(this, origin); +} + +/* +================= +player::PredictPostFrame + +Save the last valid server values away in the _net variants of each field +so we can roll them back later. +================= +*/ +void +player::PredictPreFrame(void) +{ + glock_mag_net = glock_mag; + mp5_mag_net = mp5_mag; + python_mag_net = python_mag; + shotgun_mag_net = shotgun_mag; + crossbow_mag_net = crossbow_mag; + rpg_mag_net = rpg_mag; + satchel_chg_net = satchel_chg; + ammo_9mm_net = ammo_9mm; + ammo_357_net = ammo_357; + ammo_buckshot_net = ammo_buckshot; + ammo_bolt_net = ammo_bolt; + ammo_rocket_net = ammo_rocket; + ammo_uranium_net = ammo_uranium; + ammo_handgrenade_net = ammo_handgrenade; + ammo_satchel_net = ammo_satchel; + ammo_tripmine_net = ammo_tripmine; + ammo_snark_net = ammo_snark; + ammo_hornet_net = ammo_hornet; + + ammo_m203_grenade_net = ammo_m203_grenade; + ammo_shotgun_state_net = ammo_shotgun_state; + ammo_gauss_state_net = ammo_gauss_state; + ammo_gauss_volume_net = ammo_gauss_volume; + ammo_egon_state_net = ammo_egon_state; + ammo_rpg_state_net = ammo_rpg_state; + mode_tempstate_net = mode_tempstate; + + /* gearbox */ + eagle_mag_net = eagle_mag; + sniper_mag_net = sniper_mag; + m249_mag_net = m249_mag; + sporelauncher_mag_net = sporelauncher_mag; + ammo_556_net = ammo_556; + ammo_762_net = ammo_762; + ammo_spore_net = ammo_spore; + ammo_shock_net = ammo_shock; + ammo_penguin_net = ammo_penguin; + mode_displacer_net = mode_displacer; + mode_eagle_net = mode_eagle; + mode_wrench_net = mode_wrench; + mode_sporelauncher_net = mode_sporelauncher; + mode_m249_net = mode_m249; +} + +/* +================= +player::PredictPostFrame + +Where we roll back our values to the ones last sent/verified by the server. +================= +*/ +void +player::PredictPostFrame(void) +{ + glock_mag = glock_mag_net; + mp5_mag = mp5_mag_net; + python_mag = python_mag_net; + shotgun_mag = shotgun_mag_net; + crossbow_mag = crossbow_mag_net; + rpg_mag = rpg_mag_net; + satchel_chg = satchel_chg_net; + ammo_9mm = ammo_9mm_net; + ammo_357 = ammo_357_net; + ammo_buckshot = ammo_buckshot_net; + ammo_m203_grenade = ammo_m203_grenade_net; + ammo_bolt = ammo_bolt_net; + ammo_rocket = ammo_rocket_net; + ammo_uranium = ammo_uranium_net; + ammo_handgrenade = ammo_handgrenade_net; + ammo_satchel = ammo_satchel_net; + ammo_tripmine = ammo_tripmine_net; + ammo_snark = ammo_snark_net; + ammo_hornet = ammo_hornet_net; + + ammo_m203_grenade = ammo_m203_grenade_net; + ammo_shotgun_state = ammo_shotgun_state_net; + ammo_gauss_state = ammo_gauss_state_net; + ammo_gauss_volume = ammo_gauss_volume_net; + ammo_egon_state = ammo_egon_state_net; + ammo_rpg_state = ammo_rpg_state_net; + mode_tempstate = mode_tempstate_net; + + /* gearbox */ + eagle_mag = eagle_mag_net; + sniper_mag = sniper_mag_net; + m249_mag = m249_mag_net; + sporelauncher_mag = sporelauncher_mag_net; + ammo_556 = ammo_556_net; + ammo_762 = ammo_762_net; + ammo_spore = ammo_spore_net; + ammo_shock = ammo_shock_net; + ammo_penguin = ammo_penguin_net; + mode_displacer = mode_displacer_net; + mode_eagle = mode_eagle_net; + mode_wrench = mode_wrench_net; + mode_sporelauncher = mode_sporelauncher_net; + mode_m249 = mode_m249_net; +} + +#else +void +player::EvaluateEntity(void) +{ + SendFlags |= PLAYER_KEEPALIVE; + + if (old_modelindex != modelindex) + SendFlags |= PLAYER_MODELINDEX; + + if (old_origin[0] != origin[0]) + SendFlags |= PLAYER_ORIGIN; + + if (old_origin[1] != origin[1]) + SendFlags |= PLAYER_ORIGIN; + + if (old_origin[2] != origin[2]) + SendFlags |= PLAYER_ORIGIN_Z; + + if (old_angles[0] != v_angle[0]) + SendFlags |= PLAYER_ANGLES_X; + + if (old_angles[1] != angles[1]) + SendFlags |= PLAYER_ANGLES_Y; + + if (old_angles[2] != angles[2]) + SendFlags |= PLAYER_ANGLES_Z; + + if (old_velocity[0] != velocity[0]) + SendFlags |= PLAYER_VELOCITY; + + if (old_velocity[1] != velocity[1]) + SendFlags |= PLAYER_VELOCITY; + + if (old_velocity[2] != velocity[2]) + SendFlags |= PLAYER_VELOCITY_Z; + + if (old_flags != flags) + SendFlags |= PLAYER_FLAGS; + + if (old_gflags != gflags) + SendFlags |= PLAYER_FLAGS; + + if (old_activeweapon != activeweapon) + SendFlags |= PLAYER_WEAPON; + + if (old_items != g_items) + SendFlags |= PLAYER_ITEMS; + + if (old_health != health) + SendFlags |= PLAYER_HEALTH; + + if (old_armor != armor) + SendFlags |= PLAYER_ARMOR; + + if (old_movetype != movetype) + SendFlags |= PLAYER_MOVETYPE; + + if (old_viewofs != view_ofs[2]) + SendFlags |= PLAYER_VIEWOFS; + + if (old_baseframe != baseframe) + SendFlags |= PLAYER_BASEFRAME; + + if (old_frame != frame) + SendFlags |= PLAYER_FRAME; + + /* ammo 1 type updates */ + if (glock_mag != glock_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (mp5_mag != mp5_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (python_mag != python_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (shotgun_mag != shotgun_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (crossbow_mag != crossbow_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (rpg_mag != rpg_mag_net) { + SendFlags |= PLAYER_AMMO1; + } + if (satchel_chg != satchel_chg_net) { + SendFlags |= PLAYER_AMMO1; + } + + /* ammo 2 type updates */ + if (ammo_9mm != ammo_9mm_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_357 != ammo_357_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_buckshot != ammo_buckshot_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_bolt != ammo_bolt_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_rocket != ammo_rocket_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_uranium != ammo_uranium_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_handgrenade != ammo_handgrenade_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_satchel != ammo_satchel_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_tripmine != ammo_tripmine_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_snark != ammo_snark_net) { + SendFlags |= PLAYER_AMMO2; + } + if (ammo_hornet != ammo_hornet_net) { + SendFlags |= PLAYER_AMMO2; + } + + if (ammo_m203_grenade != ammo_m203_grenade_net) { + SendFlags |= PLAYER_AMMO3; + } + if (ammo_shotgun_state != ammo_shotgun_state_net) { + SendFlags |= PLAYER_AMMO3; + } + if (ammo_gauss_state != ammo_gauss_state_net) { + SendFlags |= PLAYER_AMMO3; + } + if (ammo_gauss_volume != ammo_gauss_volume_net) { + SendFlags |= PLAYER_AMMO3; + } + if (ammo_egon_state != ammo_egon_state_net) { + SendFlags |= PLAYER_AMMO3; + } + if (ammo_rpg_state != ammo_rpg_state_net) { + SendFlags |= PLAYER_AMMO3; + } + if (mode_tempstate != mode_tempstate_net) { + SendFlags |= PLAYER_AMMO3; + } + + old_modelindex = modelindex; + old_origin = origin; + old_angles = angles; + old_angles[0] = v_angle[0]; + old_velocity = velocity; + old_flags = flags; + old_gflags = gflags; + old_activeweapon = activeweapon; + old_items = g_items; + old_health = health; + old_armor = armor; + old_movetype = movetype; + old_viewofs = view_ofs[2]; + old_baseframe = baseframe; + old_frame = frame; + + glock_mag_net = glock_mag; + mp5_mag_net = mp5_mag; + python_mag_net = python_mag; + shotgun_mag_net = shotgun_mag; + crossbow_mag_net = crossbow_mag; + rpg_mag_net = rpg_mag; + satchel_chg_net = satchel_chg; + + ammo_9mm_net = ammo_9mm; + ammo_357_net = ammo_357; + ammo_buckshot_net = ammo_buckshot; + ammo_m203_grenade_net = ammo_m203_grenade; + ammo_bolt_net = ammo_bolt; + ammo_rocket_net = ammo_rocket; + ammo_uranium_net = ammo_uranium; + ammo_handgrenade_net = ammo_handgrenade; + ammo_satchel_net = ammo_satchel; + ammo_tripmine_net = ammo_tripmine; + ammo_snark_net = ammo_snark; + ammo_hornet_net = ammo_hornet; + + ammo_m203_grenade_net = ammo_m203_grenade; + ammo_shotgun_state_net = ammo_shotgun_state; + ammo_gauss_state_net = ammo_gauss_state; + ammo_gauss_volume_net = ammo_gauss_volume; + ammo_egon_state_net = ammo_egon_state; + ammo_rpg_state_net = ammo_rpg_state; + mode_tempstate_net = mode_tempstate; + + /* gearbox */ + if (eagle_mag_net != eagle_mag) + SendFlags |= PLAYER_AMMO1; + if (sniper_mag_net != sniper_mag) + SendFlags |= PLAYER_AMMO1; + if (m249_mag_net != m249_mag) + SendFlags |= PLAYER_AMMO1; + if (sporelauncher_mag_net != sporelauncher_mag) + SendFlags |= PLAYER_AMMO1; + + if (ammo_556_net != ammo_556) + SendFlags |= PLAYER_AMMO2; + if (ammo_762_net != ammo_762) + SendFlags |= PLAYER_AMMO2; + if (ammo_spore_net != ammo_spore) + SendFlags |= PLAYER_AMMO2; + if (ammo_shock_net != ammo_shock) + SendFlags |= PLAYER_AMMO2; + if (ammo_penguin_net != ammo_penguin) + SendFlags |= PLAYER_AMMO2; + + if (mode_displacer_net != mode_displacer) + SendFlags |= PLAYER_AMMO3; + if (mode_eagle_net != mode_eagle) + SendFlags |= PLAYER_AMMO3; + if (mode_wrench_net != mode_wrench) + SendFlags |= PLAYER_AMMO3; + if (mode_sporelauncher_net != mode_sporelauncher) + SendFlags |= PLAYER_AMMO3; + + eagle_mag_net = eagle_mag; + sniper_mag_net = sniper_mag; + m249_mag_net = m249_mag; + sporelauncher_mag_net = sporelauncher_mag; + ammo_556_net = ammo_556; + ammo_762_net = ammo_762; + ammo_spore_net = ammo_spore; + ammo_shock_net = ammo_shock; + ammo_penguin_net = ammo_penguin; + mode_displacer_net = mode_displacer; + mode_eagle_net = mode_eagle; + mode_wrench_net = mode_wrench; + mode_sporelauncher_net = mode_sporelauncher; + mode_m249_net = mode_m249; +} + +/* +================= +player::SendEntity +================= +*/ +float +player::SendEntity(entity ePEnt, float fChanged) +{ + if (health <= 0 && ePEnt != this) { + return FALSE; + } + + if (clienttype(ePEnt) != CLIENTTYPE_REAL) { + return FALSE; + } + + if (ePEnt != self) { + fChanged &= ~PLAYER_ITEMS; + fChanged &= ~PLAYER_HEALTH; + fChanged &= ~PLAYER_ARMOR; + fChanged &= ~PLAYER_VIEWOFS; + fChanged &= ~PLAYER_AMMO1; + fChanged &= ~PLAYER_AMMO2; + fChanged &= ~PLAYER_AMMO3; + } + + WriteByte(MSG_ENTITY, ENT_PLAYER); + WriteFloat(MSG_ENTITY, fChanged); + + /* really trying to get our moneys worth with 23 bits of mantissa */ + if (fChanged & PLAYER_MODELINDEX) + WriteShort(MSG_ENTITY, modelindex); + if (fChanged & PLAYER_ORIGIN) { + WriteCoord(MSG_ENTITY, origin[0]); + WriteCoord(MSG_ENTITY, origin[1]); + } + if (fChanged & PLAYER_ORIGIN_Z) + WriteCoord(MSG_ENTITY, origin[2]); + if (fChanged & PLAYER_ANGLES_X) + WriteFloat(MSG_ENTITY, v_angle[0]); + if (fChanged & PLAYER_ANGLES_Y) + WriteFloat(MSG_ENTITY, angles[1]); + if (fChanged & PLAYER_ANGLES_Z) + WriteFloat(MSG_ENTITY, angles[2]); + if (fChanged & PLAYER_VELOCITY) { + WriteCoord(MSG_ENTITY, velocity[0]); + WriteCoord(MSG_ENTITY, velocity[1]); + } + if (fChanged & PLAYER_VELOCITY_Z) + WriteCoord(MSG_ENTITY, velocity[2]); + if (fChanged & PLAYER_FLAGS) { + WriteFloat(MSG_ENTITY, flags); + WriteFloat(MSG_ENTITY, gflags); + } + if (fChanged & PLAYER_WEAPON) + WriteByte(MSG_ENTITY, activeweapon); + if (fChanged & PLAYER_ITEMS) + WriteFloat(MSG_ENTITY, (__variant)g_items); + if (fChanged & PLAYER_HEALTH) + WriteByte(MSG_ENTITY, bound(0, health, 255)); + if (fChanged & PLAYER_ARMOR) + WriteByte(MSG_ENTITY, armor); + if (fChanged & PLAYER_MOVETYPE) + WriteByte(MSG_ENTITY, movetype); + if (fChanged & PLAYER_VIEWOFS) + WriteFloat(MSG_ENTITY, view_ofs[2]); + if (fChanged & PLAYER_BASEFRAME) + WriteByte(MSG_ENTITY, baseframe); + if (fChanged & PLAYER_FRAME) + WriteByte(MSG_ENTITY, frame); + + if (fChanged & PLAYER_AMMO1) { + WriteByte(MSG_ENTITY, glock_mag); + WriteByte(MSG_ENTITY, mp5_mag); + WriteByte(MSG_ENTITY, python_mag); + WriteByte(MSG_ENTITY, shotgun_mag); + WriteByte(MSG_ENTITY, crossbow_mag); + WriteByte(MSG_ENTITY, rpg_mag); + WriteByte(MSG_ENTITY, satchel_chg); + + /* gearbox */ + WriteByte(MSG_ENTITY, eagle_mag); + WriteByte(MSG_ENTITY, sniper_mag); + WriteByte(MSG_ENTITY, m249_mag); + WriteByte(MSG_ENTITY, sporelauncher_mag); + } + + if (fChanged & PLAYER_AMMO2) { + WriteByte(MSG_ENTITY, ammo_9mm); + WriteByte(MSG_ENTITY, ammo_357); + WriteByte(MSG_ENTITY, ammo_buckshot); + WriteByte(MSG_ENTITY, ammo_bolt); + WriteByte(MSG_ENTITY, ammo_rocket); + WriteByte(MSG_ENTITY, ammo_uranium); + WriteByte(MSG_ENTITY, ammo_handgrenade); + WriteByte(MSG_ENTITY, ammo_satchel); + WriteByte(MSG_ENTITY, ammo_tripmine); + WriteByte(MSG_ENTITY, ammo_snark); + WriteByte(MSG_ENTITY, ammo_hornet); + + /* gearbox */ + WriteByte(MSG_ENTITY, ammo_556); + WriteByte(MSG_ENTITY, ammo_762); + WriteByte(MSG_ENTITY, ammo_spore); + WriteByte(MSG_ENTITY, ammo_shock); + WriteByte(MSG_ENTITY, ammo_penguin); + } + + if (fChanged & PLAYER_AMMO3) { + WriteByte(MSG_ENTITY, ammo_m203_grenade); + WriteByte(MSG_ENTITY, ammo_shotgun_state); + WriteByte(MSG_ENTITY, ammo_gauss_state); + WriteByte(MSG_ENTITY, ammo_gauss_volume); + WriteByte(MSG_ENTITY, ammo_egon_state); + WriteByte(MSG_ENTITY, ammo_rpg_state); + WriteByte(MSG_ENTITY, mode_tempstate); + + /* gearbox */ + WriteByte(MSG_ENTITY, mode_displacer); + WriteByte(MSG_ENTITY, mode_eagle); + WriteByte(MSG_ENTITY, mode_wrench); + WriteByte(MSG_ENTITY, mode_sporelauncher); + WriteByte(MSG_ENTITY, mode_m249); + } + + return TRUE; +} +#endif + diff --git a/src/shared/w_displacer.qc b/src/shared/w_displacer.qc new file mode 100644 index 0000000..66225c2 --- /dev/null +++ b/src/shared/w_displacer.qc @@ -0,0 +1,384 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_displacer (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_displacer.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Displacer Weapon + +*/ + +enum +{ + DISP_IDLE1, + DISP_IDLE2, + DISP_SPINUP, + DISP_SPIN, + DISP_FIRE, + DISP_DRAW, + DISP_HOLSTER +}; + +#ifdef SERVER +entity Spawn_SelectRandom(string); +#endif + +void +w_displacer_precache(void) +{ +#ifdef SERVER + precache_sound("weapons/displacer_impact.wav"); + precache_sound("weapons/displacer_fire.wav"); + precache_sound("weapons/displacer_self.wav"); + precache_sound("weapons/displacer_spin.wav"); + precache_sound("weapons/displacer_spin2.wav"); + precache_sound("weapons/displacer_start.wav"); + precache_sound("weapons/displacer_teleport.wav"); + precache_sound("weapons/displacer_teleport_player.wav"); + precache_model("models/w_displacer.mdl"); + precache_model("sprites/exit1.spr"); +#else + precache_model("models/v_displacer.mdl"); + precache_model("models/p_displacer.mdl"); +#endif +} + +void +w_displacer_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, pl.ammo_uranium, -1); +} + +string +w_displacer_wmodel(void) +{ + return "models/w_displacer.mdl"; +} + +string +w_displacer_pmodel(void) +{ + return "models/p_displacer.mdl"; +} + +string +w_displacer_deathmsg(void) +{ + return "%s was assaulted by %s's Displacer."; +} + +int +w_displacer_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (pl.ammo_uranium < MAX_A_URANIUM) { + pl.ammo_uranium = bound(0, pl.ammo_uranium + 40, MAX_A_URANIUM); + } else { + return FALSE; + } +#endif + return TRUE; +} + +void +w_displacer_draw(void) +{ +#ifdef CLIENT + Weapons_SetModel("models/v_displacer.mdl"); + Weapons_ViewAnimation(DISP_DRAW); +#endif +} + +void +w_displacer_holster(void) +{ +#ifdef CLIENT + Weapons_ViewAnimation(DISP_HOLSTER); +#endif +} + +void +w_displacer_teleport(entity target) +{ +#ifdef SERVER + player pl = (player)target; + /* TODO, 250 damage */ + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_teleport.wav", 1, ATTN_NORM); + + /* FIXME: This will teleport upon your standard spawn positions + * in other game modes, such as CTF (your team spawns), no clue + * about singleplayer */ + entity spot = Spawn_SelectRandom("info_player_deathmatch"); + setorigin(pl, spot.origin); +#endif +} + +void +w_displacer_fireball(void) +{ +#ifdef SERVER + player pl = (player)self; + + static void displacerball_touch(void) + { + if (other.flags & FL_CLIENT) { + w_displacer_teleport(other); + } + Damage_Radius(self.origin, self.owner, 250, 250 * 2.5f, TRUE, WEAPON_DISPLACER); + sound(self, 1, "weapons/displacer_impact.wav", 1, ATTN_NORM); + remove(self); + } + + static void displacerball_animate(void) + { + self.frame++; + + if (self.frame > 25) + self.frame = 0; + + self.nextthink = time + 0.1f; + } + + Weapons_MakeVectors(); + entity ball = spawn(); + + setmodel(ball, "sprites/exit1.spr"); + setorigin(ball, Weapons_GetCameraPos() + (v_forward * 16)); + ball.owner = self; + ball.velocity = v_forward * 500; + ball.movetype = MOVETYPE_FLYMISSILE; + ball.solid = SOLID_BBOX; + ball.angles = vectoangles(ball.velocity); + ball.touch = displacerball_touch; + ball.effects = EF_ADDITIVE; + ball.think = displacerball_animate; + ball.nextthink = time + 0.1f; + setsize(ball, [0,0,0], [0,0,0]); + sound(pl, CHAN_WEAPON, "weapons/displacer_fire.wav", 1, ATTN_NORM); +#endif +} + +void +w_displacer_release(void) +{ + player pl = (player)self; + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.mode_displacer == 1) { + Weapons_ViewAnimation(DISP_FIRE); + w_displacer_fireball(); + pl.mode_displacer = 0; + pl.w_idle_next = pl.w_attack_next = 1.0f; + pl.ammo_uranium -= 20; + return; + } else if (pl.mode_displacer == 2) { + Weapons_ViewAnimation(DISP_FIRE); + w_displacer_teleport(pl); + pl.mode_displacer = 0; + pl.w_idle_next = pl.w_attack_next = 1.0f; + pl.ammo_uranium -= 60; + return; + } + + int r = (float)input_sequence % 3; + if (r == 1) { + Weapons_ViewAnimation(DISP_IDLE1); + } else { + Weapons_ViewAnimation(DISP_IDLE2); + } + + pl.w_idle_next = 3.0f; +} + +void +w_displacer_primary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + + /* ammo check */ + if (pl.ammo_uranium < 20) { + return; + } + + /* we're already in spinning mode */ + if (pl.mode_displacer > 0) { + w_displacer_release(); + return; + } + + pl.mode_displacer = 1; + +#ifdef CLIENT + Weapons_ViewAnimation(DISP_SPINUP); +#else + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_spin.wav", 1, ATTN_NORM); +#endif + pl.w_idle_next = pl.w_attack_next = 1.0f; +} + +void +w_displacer_secondary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + + if (pl.ammo_uranium < 60) { + return; + } + + /* we're already in spinning mode */ + if (pl.mode_displacer > 0) { + w_displacer_release(); + return; + } + + pl.mode_displacer = 2; + +#ifdef CLIENT + Weapons_ViewAnimation(DISP_SPINUP); +#else + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/displacer_spin2.wav", 1, ATTN_NORM); +#endif + pl.w_idle_next = pl.w_attack_next = 1.0f; +} + +float +w_displacer_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; +} + +void +w_displacer_hud(void) +{ +#ifdef CLIENT + vector cross_pos; + vector aicon_pos; + + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [48/72,0], + [24/72,24/72], + [1,1,1], + 1, + DRAWFLAG_NORMAL + ); + + drawsubpic( + aicon_pos, + [24,24], + "sprites/640hud7.spr_0.tga", + [0,96/128], // was [24/256,72/128]... which makes 0 sense + [24/256, 24/128], + g_hud_color, + pSeat->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); + + HUD_DrawAmmo2(); +#endif +} + +void +w_displacer_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.ammo_uranium == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_uranium, MAX_A_URANIUM, a); + + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof02.spr_0.tga", + [0,180/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof01.spr_0.tga", + [0,180/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_displacer = +{ + .name = "displacer", + .id = ITEM_DISPLACER, + .slot = 5, + .slot_pos = 1, + .draw = w_displacer_draw, + .holster = w_displacer_holster, + .primary = w_displacer_primary, + .secondary = w_displacer_secondary, + .reload = __NULL__, + .release = w_displacer_release, + .crosshair = w_displacer_hud, + .precache = w_displacer_precache, + .pickup = w_displacer_pickup, + .updateammo = w_displacer_updateammo, + .wmodel = w_displacer_wmodel, + .pmodel = w_displacer_pmodel, + .deathmsg = w_displacer_deathmsg, + .aimanim = w_displacer_aimanim, + .hudpic = w_displacer_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_displacer(void) +{ + Weapons_InitItem(WEAPON_DISPLACER); +} +#endif diff --git a/src/shared/w_eagle.qc b/src/shared/w_eagle.qc new file mode 100644 index 0000000..861b74b --- /dev/null +++ b/src/shared/w_eagle.qc @@ -0,0 +1,412 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_eagle (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_desert_eagle.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Desert Eagle Weapon + +*/ + +enum +{ + EAGLE_IDLE1, + EAGLE_IDLE2, + EAGLE_IDLE3, + EAGLE_IDLE4, + EAGLE_IDLE5, + EAGLE_SHOOT, + EAGLE_SHOOT_EMPTY, + EAGLE_RELOAD, + EAGLE_RELOAD_NOSHOT, + EAGLE_DRAW, + EAGLE_HOLSTER +}; + +void +w_eagle_precache(void) +{ +#ifdef SERVER + precache_model("models/w_desert_eagle.mdl"); + precache_sound("weapons/desert_eagle_fire.wav"); + precache_sound("weapons/desert_eagle_sight.wav"); + precache_sound("weapons/desert_eagle_sight2.wav"); +#else + precache_model("models/v_desert_eagle.mdl"); + precache_model("models/p_desert_eagle.mdl"); +#endif +} + +int +w_eagle_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (new) { + pl.eagle_mag = 7; + } else { + if (pl.ammo_357 < MAX_A_357) { + pl.ammo_357 = bound(0, pl.ammo_357 + 7, MAX_A_357); + } else { + return FALSE; + } + } +#endif + return TRUE; +} + +void +w_eagle_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, pl.eagle_mag, pl.ammo_357, -1); +} + +string +w_eagle_wmodel(void) +{ + return "models/w_desert_eagle.mdl"; +} +string +w_eagle_pmodel(void) +{ + return "models/p_desert_eagle.mdl"; +} +string +w_eagle_deathmsg(void) +{ + return ""; +} + +void +w_eagle_draw(void) +{ +#ifdef CLIENT + Weapons_SetModel("models/v_desert_eagle.mdl"); + Weapons_ViewAnimation(EAGLE_DRAW); +#else + player pl = (player)self; + Weapons_UpdateAmmo(pl, pl.eagle_mag, pl.ammo_357, -1); +#endif +} + +void +w_eagle_holster(void) +{ + Weapons_ViewAnimation(EAGLE_HOLSTER); +} + +void +w_eagle_release(void) +{ + player pl = (player)self; + + /* auto-reload if need be */ + if (pl.w_attack_next <= 0.0) + if (pl.eagle_mag == 0 && pl.ammo_357 > 0) { + Weapons_Reload(); + return; + } + + if (pl.w_idle_next) { + return; + } + + /* these idles don't support the 'empty' animation style */ +#ifdef CLIENT + if (pl.eagle_mag <= 0) { + return; + } +#else + if (pl.eagle_mag <= 0) { + return; + } +#endif + + int r = (float)input_sequence % 4; + switch (r) { + case 0: + Weapons_ViewAnimation(EAGLE_IDLE1); + pl.w_idle_next = 2.5f; + break; + case 1: + Weapons_ViewAnimation(EAGLE_IDLE2); + pl.w_idle_next = 2.5f; + break; + case 2: + Weapons_ViewAnimation(EAGLE_IDLE3); + pl.w_idle_next = 1.633333f; + break; + default: + Weapons_ViewAnimation(EAGLE_IDLE4); + pl.w_idle_next = 2.5f; + } +} + +void +w_eagle_primary(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.eagle_mag <= 0) { + return; + } +#else + if (pl.eagle_mag <= 0) { + return; + } +#endif + + /* Actual firing */ + if (pl.mode_eagle == 1) { +#ifdef SERVER + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 34, [0, 0], WEAPON_EAGLE); +#endif + pl.w_attack_next = 0.5f; + } else { +#ifdef SERVER + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 34, [0.1,0.1], WEAPON_EAGLE); +#endif + pl.w_attack_next = 0.2f; + } + +#ifdef SERVER + sound(pl, CHAN_WEAPON, "weapons/desert_eagle_fire.wav", 1, ATTN_NORM); + pl.eagle_mag--; + Weapons_UpdateAmmo(pl, pl.eagle_mag, pl.ammo_357, -1); +#else + pl.eagle_mag--; + View_SetMuzzleflash(MUZZLE_SMALL); + Weapons_ViewPunchAngle([-10,0,0]); + + if (pl.eagle_mag <= 0) { + Weapons_ViewAnimation(EAGLE_SHOOT_EMPTY); + } else { + Weapons_ViewAnimation(EAGLE_SHOOT); + } +#endif +} + +void +w_eagle_secondary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + + /* toggle laser */ + pl.mode_eagle = 1 - pl.mode_eagle; + +#ifdef SERVER + if (pl.mode_eagle) { + sound(pl, 8, "weapons/desert_eagle_sight.wav", 1, ATTN_NORM); + } else { + sound(pl, 8, "weapons/desert_eagle_sight2.wav", 1, ATTN_NORM); + } +#endif + + pl.w_attack_next = 1.0f; + w_eagle_release(); +} + +void +w_eagle_reload(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.eagle_mag >= 7) { + return; + } + if (pl.ammo_357 <= 0) { + return; + } +#else + if (pl.eagle_mag >= 7) { + return; + } + if (pl.ammo_357 <= 0) { + return; + } +#endif + + /* Audio-Visual bit */ +#ifdef CLIENT + if (pl.eagle_mag <= 0) { + Weapons_ViewAnimation(EAGLE_RELOAD); + } else { + Weapons_ViewAnimation(EAGLE_RELOAD_NOSHOT); + } +#else + Weapons_ReloadWeapon(pl, player::eagle_mag, player::ammo_357, 7); + Weapons_UpdateAmmo(pl, pl.eagle_mag, pl.ammo_357, -1); +#endif + + pl.w_attack_next = 1.64f; + pl.w_idle_next = 10.0f; +} + +void +w_eagle_crosshair(void) +{ +#ifdef CLIENT + player pl = (player)self; + vector cross_pos; + vector aicon_pos; + + /* crosshair/laser */ + if (pl.mode_eagle == 1) { + float lerp; + vector jitter; + Weapons_MakeVectors(); + vector src = pl.origin + pl.view_ofs; + traceline(src, src + (v_forward * 256), FALSE, pl); + lerp = Math_Lerp(18,6, trace_fraction); + jitter[0] = (random(0,2) - 2) * (1 - trace_fraction); + jitter[1] = (random(0,2) - 2) * (1 - trace_fraction); + cross_pos = g_hudmins + (g_hudres / 2) + ([-lerp,-lerp] / 2); + drawsubpic( + cross_pos + jitter, + [lerp,lerp], + "sprites/laserdot.spr_0.tga", + [0,0], + [1.0, 1.0], + [1,1,1], + 1.0f, + DRAWFLAG_ADDITIVE + ); + } else { + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [0,0], + [24/72, 24/72], + [1,1,1], + 1, + DRAWFLAG_NORMAL + ); + } + + /* ammo counters */ + HUD_DrawAmmo1(); + HUD_DrawAmmo2(); + + /* ammo icon */ + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic( + aicon_pos, + [24,24], + "sprites/640hud7.spr_0.tga", + [24/256,72/128], + [24/256, 24/128], + g_hud_color, + pSeat->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); +#endif +} + +float +w_eagle_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON; +} + +void +w_eagle_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.eagle_mag == 0 && pl.ammo_357 == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof02.spr_0.tga", + [0,90/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof01.spr_0.tga", + [0,90/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } + + HUD_DrawAmmoBar(pos, pl.ammo_357, MAX_A_357, a); +#endif +} + +weapon_t w_eagle = +{ + .name = "eagle", + .id = ITEM_EAGLE, + .slot = 1, + .slot_pos = 2, + .draw = w_eagle_draw, + .holster = w_eagle_holster, + .primary = w_eagle_primary, + .secondary = w_eagle_secondary, + .reload = w_eagle_reload, + .release = w_eagle_release, + .crosshair = w_eagle_crosshair, + .precache = w_eagle_precache, + .pickup = w_eagle_pickup, + .updateammo = w_eagle_updateammo, + .wmodel = w_eagle_wmodel, + .pmodel = w_eagle_pmodel, + .deathmsg = w_eagle_deathmsg, + .aimanim = w_eagle_aimanim, + .hudpic = w_eagle_hudpic +}; + +#ifdef SERVER +void +weapon_eagle(void) +{ + Weapons_InitItem(WEAPON_EAGLE); +} +#endif diff --git a/src/shared/w_grapple.qc b/src/shared/w_grapple.qc new file mode 100644 index 0000000..eaddf15 --- /dev/null +++ b/src/shared/w_grapple.qc @@ -0,0 +1,314 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_grapple (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_bgrap.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Barnacle Grappling-Hook Weapon + +*/ + +#ifdef CLIENT +/* because some people apparently prefer the worse quality one */ +var int autocvar_cl_tonguemode = 0; +#endif + +enum +{ + BARN_IDLE1, + BARN_IDLE2, + BARN_IDLE3, + BARN_COUGH, + BARN_HOLSTER, + BARN_DRAW, + BARN_FIRE, + BARN_FIREWAIT, + BARN_FIREREACH, + BARN_FIRETRAVEL, + BARN_FIRERELEASE +}; + +void +w_grapple_precache(void) +{ +#ifdef SERVER + precache_sound("weapons/bgrapple_cough.wav"); + precache_sound("weapons/bgrapple_fire.wav"); + precache_sound("weapons/bgrapple_impact.wav"); + precache_sound("weapons/bgrapple_pull.wav"); + precache_sound("weapons/bgrapple_release.wav"); + precache_sound("weapons/bgrapple_wait.wav"); + precache_model("sprites/_tongue.spr"); + precache_model("sprites/tongue.spr"); + precache_model("models/w_bgrap.mdl"); +#else + precache_model("models/v_bgrap.mdl"); + precache_model("models/v_bgrap_tonguetip.mdl"); + precache_model("models/p_bgrap.mdl"); +#endif +} + +void +w_grapple_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, -1, -1); +} + +string +w_grapple_wmodel(void) +{ + return "models/w_bgrap.mdl"; +} + +string +w_grapple_pmodel(void) +{ + return "models/p_bgrap.mdl"; +} + +string +w_grapple_deathmsg(void) +{ + return "%s was assaulted by %s's Barnacle."; +} + +void +w_grapple_draw(void) +{ + Weapons_SetModel("models/v_bgrap.mdl"); + Weapons_ViewAnimation(BARN_DRAW); +} + +void +w_grapple_holster(void) +{ + Weapons_ViewAnimation(BARN_HOLSTER); +} + +/* called once the tongue hits a wall */ +void Grapple_Touch(void) +{ + player pl = (player)self.owner; + pl.hook.movetype = MOVETYPE_NONE; + pl.hook.touch = __NULL__; + pl.hook.velocity = [0,0,0]; + pl.hook.solid = SOLID_NOT; + pl.a_ammo1 = 1; +} + +#ifdef CLIENT +/* draw the tongue from a to b */ +float +grapple_predraw(void) +{ + vector forg = gettaginfo(pSeat->m_eViewModel, pSeat->m_iVMBones); + vector morg = self.origin; + vector fsize = [3,3]; + + vector col1 = getlight(forg) / 255; + vector col2 = getlight(morg) / 255; + + makevectors(view_angles); + + R_BeginPolygon(autocvar_cl_tonguemode == 1 ? "sprites/_tongue.spr_0.tga" : "sprites/tongue.spr_0.tga", 0, 0); + R_PolygonVertex(forg + v_right * fsize[0] - v_up * fsize[1], + [1,1], col1, 1.0f); + R_PolygonVertex(forg - v_right * fsize[0] - v_up * fsize[1], + [0,1], col1, 1.0f); + R_PolygonVertex(morg - v_right * fsize[0] + v_up * fsize[1], + [0,0], col2, 1.0f); + R_PolygonVertex(morg + v_right * fsize[0] + v_up * fsize[1], + [1,0], col2, 1.0f); + R_EndPolygon(); + addentity(self); + return PREDRAW_NEXT; +} +#endif + +/* spawn and pull */ +void +w_grapple_primary(void) +{ + player pl = (player)self; + + if (pl.hook != __NULL__) { + /* play the looping reel anim once */ + if (pl.a_ammo1 == 1) { + pl.a_ammo1 = 2; + Weapons_ViewAnimation(BARN_FIRETRAVEL); + } else if (pl.a_ammo1 == 2) { + pl.hook.skin = 1; /* grappled */ + } + + if (pl.w_attack_next > 0.0) { + return; + } + +#ifdef SERVER + Weapons_MakeVectors(); + vector src = Weapons_GetCameraPos(); + traceline(src, src + (v_forward * 32), FALSE, pl); + if (trace_ent.takedamage == DAMAGE_YES && trace_ent.iBleeds) { + Damage_Apply(trace_ent, pl, 25, WEAPON_GRAPPLE, DMG_GENERIC); + } +#endif + pl.w_attack_next = 0.5f; + return; + } + + Weapons_MakeVectors(); + pl.hook = spawn(); + +#ifdef CLIENT + /*setmodel(pl.hook, "models/v_bgrap_tonguetip.mdl");*/ + pl.hook.drawmask = MASK_ENGINE; + pl.hook.predraw = grapple_predraw; +#else + sound(pl, CHAN_WEAPON, "weapons/bgrapple_fire.wav", 1.0, ATTN_NORM); + sound(pl, CHAN_VOICE, "weapons/bgrapple_pull.wav", 1.0, ATTN_NORM); +#endif + setorigin(pl.hook, Weapons_GetCameraPos() + (v_forward * 16)); + pl.hook.owner = self; + pl.hook.velocity = v_forward * 1500; + pl.hook.movetype = MOVETYPE_FLYMISSILE; + pl.hook.solid = SOLID_BBOX; + pl.hook.angles = vectoangles(pl.hook.velocity); + pl.hook.touch = Grapple_Touch; + setsize(pl.hook, [0,0,0], [0,0,0]); + Weapons_ViewAnimation(BARN_FIRE); +} + +/* let go, hang */ +void +w_grapple_secondary(void) +{ + player pl = (player)self; + if (pl.hook == __NULL__) { + return; + } + + pl.hook.skin = 0; /* ungrappled */ +} + +/* de-spawn and play idle anims */ +void +w_grapple_release(void) +{ + player pl = (player)self; + + if (pl.hook != __NULL__) { + pl.a_ammo1 = 0; /* cache */ + pl.hook.skin = 0; /* ungrappled */ + remove(pl.hook); +#ifdef CLIENT + Weapons_ViewAnimation(BARN_FIRERELEASE); +#else + sound(pl, CHAN_VOICE, "weapons/bgrapple_release.wav", 1.0, ATTN_NORM); +#endif + pl.w_idle_next = 1.0f; + pl.hook = __NULL__; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + int r = (float)input_sequence % 3; + switch (r) { + case 1: + Weapons_ViewAnimation(BARN_IDLE1); + pl.w_idle_next = 2.566667f; + break; + case 2: + Weapons_ViewAnimation(BARN_IDLE2); + pl.w_idle_next = 10.0f; + break; + default: + Weapons_ViewAnimation(BARN_IDLE3); + pl.w_idle_next = 1.35f; + break; + } +} + +float +w_grapple_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; +} + +void +w_grapple_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof02.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof01.spr_0.tga", + [0,45/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_grapple = +{ + .name = "grapple", + .id = ITEM_GRAPPLE, + .slot = 0, + .slot_pos = 3, + .draw = w_grapple_draw, + .holster = w_grapple_holster, + .primary = w_grapple_primary, + .secondary = w_grapple_secondary, + .reload = __NULL__, + .release = w_grapple_release, + .crosshair = __NULL__, + .precache = w_grapple_precache, + .pickup = __NULL__, + .updateammo = w_grapple_updateammo, + .wmodel = w_grapple_wmodel, + .pmodel = w_grapple_pmodel, + .deathmsg = w_grapple_deathmsg, + .aimanim = w_grapple_aimanim, + .hudpic = w_grapple_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_grapple(void) +{ + Weapons_InitItem(WEAPON_GRAPPLE); +} +#endif diff --git a/src/shared/w_knife.qc b/src/shared/w_knife.qc new file mode 100644 index 0000000..ae8faef --- /dev/null +++ b/src/shared/w_knife.qc @@ -0,0 +1,275 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_knife (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_knife.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Knife Weapon + +*/ + +enum +{ + KNIFE_IDLE1, + KNIFE_DRAW, + KNIFE_HOLSTER, + KNIFE_ATTACK1HIT, + KNIFE_ATTACK1MISS, + KNIFE_ATTACK2MISS, + KNIFE_ATTACK2HIT, + KNIFE_ATTACK3MISS, + KNIFE_ATTACK3HIT, + KNIFE_IDLE2, + KNIFE_IDLE3 +}; + +void +w_knife_precache(void) +{ +#ifdef SERVER + precache_model("models/w_knife.mdl"); + precache_sound("weapons/knife1.wav"); + precache_sound("weapons/knife2.wav"); + precache_sound("weapons/knife3.wav"); + precache_sound("weapons/knife_hit_wall1.wav"); + precache_sound("weapons/knife_hit_wall2.wav"); + precache_sound("weapons/knife_hit_flesh1.wav"); + precache_sound("weapons/knife_hit_flesh2.wav"); +#else + precache_model("models/v_knife.mdl"); + precache_model("models/p_knife.mdl"); +#endif +} + +void +w_knife_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, -1, -1); +} + +string +w_knife_wmodel(void) +{ + return "models/w_knife.mdl"; +} + +string +w_knife_pmodel(void) +{ + return "models/p_knife.mdl"; +} + +string +w_knife_deathmsg(void) +{ + return "%s was assaulted by %s's Knife."; +} + +void +w_knife_draw(void) +{ + Weapons_SetModel("models/v_knife.mdl"); + Weapons_ViewAnimation(KNIFE_DRAW); +} + +void +w_knife_holster(void) +{ + Weapons_ViewAnimation(KNIFE_HOLSTER); +} + +void +w_knife_primary(void) +{ + int anim = 0; + int r; + vector src; + player pl = (player)self; + + if (pl.w_attack_next) { + return; + } + + Weapons_MakeVectors(); + src = pl.origin + pl.view_ofs; + traceline(src, src + (v_forward * 32), FALSE, pl); + + if (trace_fraction >= 1.0) { + pl.w_attack_next = 0.5f; + } else { + pl.w_attack_next = 0.25f; + } + pl.w_idle_next = 2.5f; + +#ifdef CLIENT + r = (float)input_sequence % 3; + switch (r) { + case 0: + anim = trace_fraction >= 1 ? KNIFE_ATTACK1MISS:KNIFE_ATTACK1HIT; + break; + case 1: + anim = trace_fraction >= 1 ? KNIFE_ATTACK2MISS:KNIFE_ATTACK2HIT; + break; + default: + anim = trace_fraction >= 1 ? KNIFE_ATTACK3MISS:KNIFE_ATTACK3HIT; + } + Weapons_ViewAnimation(anim); +#else + if (pl.flags & FL_CROUCHING) { + Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f); + } else { + Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f); + } + + r = (float)input_sequence % 3; + switch (r) { + case 0: + sound(pl, CHAN_WEAPON, "weapons/knife1.wav", 1, ATTN_NORM); + break; + case 1: + sound(pl, CHAN_WEAPON, "weapons/knife2.wav", 1, ATTN_NORM); + break; + default: + sound(pl, CHAN_WEAPON, "weapons/knife3.wav", 1, ATTN_NORM); + } + + if (trace_fraction >= 1.0) { + return; + } + + /* don't bother with decals, we got squibs */ + if (trace_ent.iBleeds) { + FX_Blood(trace_endpos, [1,0,0]); + } else { + FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal); + } + + if (trace_ent.takedamage) { + Damage_Apply(trace_ent, self, 10, WEAPON_KNIFE, DMG_SLASH); + + if (!trace_ent.iBleeds) { + return; + } + + if (random() < 0.5) { + sound(pl, 8, "weapons/knife_hit_flesh1.wav", 1, ATTN_NORM); + } else { + sound(pl, 8, "weapons/knife_hit_flesh2.wav", 1, ATTN_NORM); + } + } else { + if (random() < 0.5) { + sound(pl, 8, "weapons/knife_hit_wall1.wav", 1, ATTN_NORM); + } else { + sound(pl, 8, "weapons/knife_hit_wall2.wav", 1, ATTN_NORM); + } + } +#endif +} + +void +w_knife_release(void) +{ + int r; + player pl = (player)self; + + if (pl.w_idle_next) { + return; + } + + r = (float)input_sequence % 3; + switch (r) { + case 0: + Weapons_ViewAnimation(KNIFE_IDLE1); + pl.w_idle_next = 2.7f; + break; + case 1: + Weapons_ViewAnimation(KNIFE_IDLE2); + pl.w_idle_next = 5.3f; + break; + default: + Weapons_ViewAnimation(KNIFE_IDLE3); + pl.w_idle_next = 5.3f; + } +} + +float +w_knife_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; +} + +void +w_knife_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof04.spr_0.tga", + [0,90/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof03.spr_0.tga", + [0,90/256], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_knife = +{ + .name = "knife", + .id = ITEM_KNIFE, + .slot = 0, + .slot_pos = 2, + .draw = w_knife_draw, + .holster = w_knife_holster, + .primary = w_knife_primary, + .secondary = __NULL__, + .reload = __NULL__, + .release = w_knife_release, + .crosshair = __NULL__, + .precache = w_knife_precache, + .pickup = __NULL__, + .updateammo = w_knife_updateammo, + .wmodel = w_knife_wmodel, + .pmodel = w_knife_pmodel, + .deathmsg = w_knife_deathmsg, + .aimanim = w_knife_aimanim, + .hudpic = w_knife_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void weapon_knife(void) +{ + Weapons_InitItem(WEAPON_KNIFE); +} +#endif diff --git a/src/shared/w_m249.qc b/src/shared/w_m249.qc new file mode 100644 index 0000000..c4c4832 --- /dev/null +++ b/src/shared/w_m249.qc @@ -0,0 +1,352 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_m249 (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_saw.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +M249 Weapon + +*/ + +/* Animations */ +enum +{ + M249_IDLE1, + M249_IDLE2, + M249_RELOAD1, + M249_RELOAD2, + M249_HOLSTER, + M249_DRAW, + M249_FIRE +}; + +void +w_m249_precache(void) +{ +#ifdef SERVER + precache_model("models/w_saw.mdl"); + precache_sound("weapons/saw_fire1.wav"); + precache_sound("weapons/saw_fire2.wav"); + precache_sound("weapons/saw_fire3.wav"); + precache_sound("weapons/saw_reload.wav"); + precache_sound("weapons/saw_reload2.wav"); +#else + precache_model("models/v_saw.mdl"); + precache_model("models/p_saw.mdl"); +#endif +} + +int +w_m249_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (new) { + pl.m249_mag = 50; + } else { + if (pl.ammo_556 < MAX_A_556) { + pl.ammo_556 = bound(0, pl.ammo_556 + 50, MAX_A_556); + } else { + return FALSE; + } + } +#endif + return TRUE; +} + +void +w_m249_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, pl.m249_mag, pl.ammo_556, -1); +} + +string +w_m249_wmodel(void) +{ + return "models/w_saw.mdl"; +} + +string +w_m249_pmodel(void) +{ + return "models/p_saw.mdl"; +} + +string +w_m249_deathmsg(void) +{ + return ""; +} + +void +w_m249_draw(void) +{ +#ifdef CLIENT + Weapons_SetModel("models/v_saw.mdl"); + Weapons_ViewAnimation(M249_DRAW); +#endif +} + +void +w_m249_holster(void) +{ + Weapons_ViewAnimation(M249_DRAW); +} + +void +w_m249_release(void) +{ + player pl = (player)self; + + /* auto-reload if need be */ + if (pl.w_attack_next <= 0.0) + if (pl.m249_mag == 0 && pl.ammo_556 > 0) { + Weapons_Reload(); + return; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.mode_m249 == 1) { + Weapons_ViewAnimation(M249_RELOAD2); + pl.mode_m249 = 0; + pl.w_attack_next = 2.45f; + pl.w_idle_next = 15.0f; + return; + } + + if (random() < 0.5) { + Weapons_ViewAnimation(M249_IDLE1); + } else { + Weapons_ViewAnimation(M249_IDLE2); + } + + pl.w_idle_next = 15.0f; +} + +void +w_m249_primary(void) +{ + player pl = (player)self; + vector push; + + if (pl.mode_m249 == 1) { + w_m249_release(); + return; + } + + if (pl.w_attack_next > 0.0) { + return; + } + + /* ammo check */ +#ifdef CLIENT + if (pl.m249_mag <= 0) { + return; + } +#else + if (pl.m249_mag <= 0) { + return; + } +#endif + + Weapons_ViewAnimation(M249_FIRE); + + push = v_forward * -64; + push[2] *= 0.25f; /* gravity duh */ + pl.velocity += push; + + /* actual firing */ +#ifdef CLIENT + pl.m249_mag--; + View_SetMuzzleflash(MUZZLE_RIFLE); + Weapons_ViewPunchAngle([-5,0,0]); +#else + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 8, [0.052,0.052], WEAPON_M249); + + int r = (float)input_sequence % 3; + switch (r) { + case 0: + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire1.wav", 1, ATTN_NORM); + break; + case 1: + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire2.wav", 1, ATTN_NORM); + break; + default: + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/saw_fire3.wav", 1, ATTN_NORM); + } + + pl.m249_mag--; +#endif + + pl.w_attack_next = 0.075f; + pl.w_idle_next = 10.0f; +} + +void +w_m249_reload(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + w_m249_release(); + return; + } + +#ifdef CLIENT + if (pl.m249_mag >= 50) { + return; + } + if (pl.ammo_556 <= 0) { + return; + } + Weapons_ViewAnimation(M249_RELOAD1); +#else + if (pl.m249_mag >= 50) { + return; + } + if (pl.ammo_556 <= 0) { + return; + } + Weapons_ReloadWeapon(pl, player::m249_mag, player::ammo_556, 50); + Weapons_UpdateAmmo(pl, pl.m249_mag, pl.ammo_556, __NULL__); +#endif + + pl.mode_m249 = 1; + pl.w_attack_next = pl.w_idle_next = 1.5f; +} + +void +w_m249_crosshair(void) +{ +#ifdef CLIENT + vector cross_pos; + vector aicon_pos; + + /* crosshair */ + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [24/72,0], + [24/72, 24/72], + [1,1,1], + 1.0, + DRAWFLAG_NORMAL + ); + + /* ammo counters */ + HUD_DrawAmmo1(); + HUD_DrawAmmo2(); + + /* ammo icon */ + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic( + aicon_pos, + [24,24], + "sprites/640hud7.spr_0.tga", + [24/128,72/128], + [24/256, 24/128], + g_hud_color, + pSeat->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); +#endif +} + +float +w_m249_aimanim(void) +{ + return self.flags & ANIM_CR_AIMMP5 ? ANIM_CR_AIMCROWBAR : ANIM_AIMMP5; +} + +void +w_m249_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.m249_mag == 0 && pl.ammo_556 == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_556, MAX_A_556, a); + + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof02.spr_0.tga", + [0,135/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof01.spr_0.tga", + [0,135/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_m249 = +{ + .name = "m249", + .id = ITEM_M249, + .slot = 5, + .slot_pos = 0, + .draw = w_m249_draw, + .holster = w_m249_holster, + .primary = w_m249_primary, + .secondary = __NULL__, + .reload = w_m249_reload, + .release = w_m249_release, + .crosshair = w_m249_crosshair, + .precache = w_m249_precache, + .pickup = w_m249_pickup, + .updateammo = w_m249_updateammo, + .wmodel = w_m249_wmodel, + .pmodel = w_m249_pmodel, + .deathmsg = w_m249_deathmsg, + .aimanim = w_m249_aimanim, + .hudpic = w_m249_hudpic +}; + +#ifdef SERVER +void +weapon_m249(void) +{ + Weapons_InitItem(WEAPON_M249); +} +#endif + diff --git a/src/shared/w_penguin.qc b/src/shared/w_penguin.qc new file mode 100644 index 0000000..e6a6096 --- /dev/null +++ b/src/shared/w_penguin.qc @@ -0,0 +1,375 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_penguin (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_penguin.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Penguin Weapon + +*/ + +enum +{ + PENGUIN_IDLE, + PENGUIN_FIDGET1, + PENGUIN_FIDGET2, + PENGUIN_HOLSTER, + PENGUIN_DRAW, + PENGUIN_THROW +}; + +int +w_penguin_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (pl.ammo_penguin < MAX_A_PENGUIN) { + pl.ammo_penguin = bound(0, pl.ammo_penguin + 3, MAX_A_PENGUIN); + } else { + return FALSE; + } +#endif + return TRUE; +} + +void +w_penguin_draw(void) +{ + Weapons_SetModel("models/v_penguin.mdl"); + Weapons_ViewAnimation(PENGUIN_DRAW); +} + +void +w_penguin_holster(void) +{ + +} + +#ifdef SERVER +void penguin_squeak(entity p) +{ + int r = floor(random(1,4)); + + switch (r) { + case 1: + sound(p, CHAN_VOICE, "squeek/sqk_hunt1.wav", 1.0, ATTN_NORM); + break; + case 2: + sound(p, CHAN_VOICE, "squeek/sqk_hunt2.wav", 1.0, ATTN_NORM); + break; + default: + sound(p, CHAN_VOICE, "squeek/sqk_hunt3.wav", 1.0, ATTN_NORM); + } +} + +void +penguin_ai(void) +{ + input_movevalues = [250,0,0]; + input_buttons = 0; + input_impulse = 0; + input_angles = self.angles; + input_timelength = frametime; + + if (self.health <= 0) { + return; + } + + if (self.weapon <= 0.0 && self.aiment == __NULL__) { + entity ef; + float shortest = 999999; + for (ef = world; (ef = findfloat(ef, movetype, MOVETYPE_WALK));) { + float len = vlen(ef.origin - self.origin); + if (ef.classname != "snark" && len < shortest && ef.health > 0) { + self.owner = __NULL__; + self.aiment = ef; + shortest = len; + } + } + } + + if (self.aiment) { + self.angles = input_angles = vectoangles(self.aiment.origin - self.origin); + } + + if (self.aiment && self.weapon <= 0.0) { + self.weapon = 0.5f + random(); + penguin_squeak(self); + input_buttons = 2; + Damage_Apply(self, world, 1, 0, DMG_GENERIC); + + makevectors(self.angles); + traceline(self.origin, self.origin + (v_forward * 128), 0, self); + + if (trace_ent.takedamage == DAMAGE_YES) { + float pit = 100 + random(0,10); + sound(self, CHAN_BODY, "squeek/sqk_deploy1.wav", 1.0, ATTN_NORM, pit); + Damage_Apply(trace_ent, self.goalentity, 10, WEAPON_PENGUIN, DMG_GENERIC); + } + + if (self.aiment.health <= 0) { + self.aiment = __NULL__; + } + } + self.weapon -= frametime; + runstandardplayerphysics(self); +} + +void +penguin_die(void) +{ + /* clear this first to avoid infinite recursion */ + self.health = 0; + + /* now we can explodededededed */ + FX_Explosion(self.origin); + Damage_Radius(self.origin, self.owner, 150, 150 * 2.5f, TRUE, WEAPON_PENGUIN); + + if (random() < 0.5) { + sound(self, 1, "weapons/explode3.wav", 1.0f, ATTN_NORM); + } else { + sound(self, 1, "weapons/explode4.wav", 1.0f, ATTN_NORM); + } + + remove(self); +} + +void +penguin_pain(void) +{ + /* add stuff? */ +} + +void +w_penguin_deploy(void) +{ + CBaseEntity pingu = spawn(CBaseEntity); + pingu.owner = self; + pingu.goalentity = self; + pingu.netname = "Penguin"; + pingu.classname = "snark"; /* so snarks and pingus don't attack e/o */ + setmodel(pingu, "models/w_penguin.mdl"); + makevectors(self.v_angle); + setorigin(pingu, self.origin + v_forward * 32); + pingu.solid = SOLID_BBOX; + pingu.movetype = MOVETYPE_WALK; + pingu.frame = 3; /* running like crazy. */ + pingu.customphysics = penguin_ai; + pingu.angles = self.angles; + pingu.health = 20; + pingu.Pain = penguin_pain; + pingu.takedamage = DAMAGE_YES; + pingu.aiment = __NULL__; + pingu.Death = penguin_die; + pingu.weapon = 3.0f; + penguin_squeak(pingu); +} +#endif + +void +w_penguin_primary(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.ammo_penguin <= 0) { + return; + } +#else + if (pl.ammo_penguin <= 0) { + return; + } +#endif + + Weapons_ViewAnimation(PENGUIN_THROW); + + /* Audio-Visual Bit */ +#ifdef CLIENT + pl.ammo_penguin--; +#else + w_penguin_deploy(); + pl.ammo_penguin--; + Weapons_UpdateAmmo(pl, __NULL__, pl.ammo_penguin, __NULL__); + + if (pl.ammo_penguin <= 0) { + Weapons_RemoveItem(pl, WEAPON_SNARK); + } +#endif + + pl.w_idle_next = 2.0f; + pl.w_attack_next = 2.0f; + +} + +void +w_penguin_secondary(void) +{ + +} + +void +w_penguin_reload(void) +{ + +} + +void +w_penguin_release(void) +{ + int r; + player pl = (player)self; + if (pl.w_idle_next > 0.0) { + return; + } + + r = (float)input_sequence % 3; + switch (r) { + case 0: + Weapons_ViewAnimation(PENGUIN_IDLE); + pl.w_idle_next = 1.875f; + break; + case 1: + Weapons_ViewAnimation(PENGUIN_FIDGET1); + pl.w_idle_next = 4.375f; + break; + default: + Weapons_ViewAnimation(PENGUIN_FIDGET2); + pl.w_idle_next = 5.0f; + break; + } +} + +void +w_penguin_precache(void) +{ +#ifdef SERVER + precache_model("models/w_penguin.mdl"); + precache_sound("squeek/sqk_deploy1.wav"); + precache_sound("squeek/sqk_die1.wav"); + precache_sound("squeek/sqk_blast1.wav"); + precache_sound("squeek/sqk_hunt1.wav"); + precache_sound("squeek/sqk_hunt2.wav"); + precache_sound("squeek/sqk_hunt3.wav"); +#else + precache_model("models/p_penguin.mdl"); + precache_model("models/v_penguin.mdl"); +#endif +} + +void +w_penguin_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, pl.ammo_penguin, -1); +} + +string +w_penguin_wmodel(void) +{ + return "models/w_penguinnest.mdl"; +} + +string +w_penguin_pmodel(void) +{ + return "models/p_penguin.mdl"; +} + +string +w_penguin_deathmsg(void) +{ + return ""; +} + + +float +w_penguin_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK; +} + +void +w_penguin_hud(void) +{ +#ifdef CLIENT + HUD_DrawAmmo2(); + vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic(aicon_pos, [24,24], "sprites/640hud7.spr_0.tga", [144/256,72/128], [24/256, 24/128], g_hud_color, pSeat->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); +#endif +} + +void +w_penguin_hudpic(int s, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.ammo_penguin == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_penguin, MAX_A_PENGUIN, a); + + if (s) { + drawsubpic(pos, [170,45], "sprites/640hudof04.spr_0.tga", + [0,180/256], [170/256,45/256], + hud_col, a, DRAWFLAG_ADDITIVE); + } else { + drawsubpic(pos, [170,45], "sprites/640hudof03.spr_0.tga", + [0,180/256], [170/256,45/256], + hud_col, a, DRAWFLAG_ADDITIVE); + } +#endif +} + +weapon_t w_penguin = +{ + .name = "penguin", + .id = ITEM_PENGUIN, + .slot = 4, + .slot_pos = 4, + .draw = w_penguin_draw, + .holster = w_penguin_holster, + .primary = w_penguin_primary, + .secondary = w_penguin_secondary, + .reload = w_penguin_reload, + .release = w_penguin_release, + .crosshair = w_penguin_hud, + .precache = w_penguin_precache, + .pickup = w_penguin_pickup, + .updateammo = w_penguin_updateammo, + .wmodel = w_penguin_wmodel, + .pmodel = w_penguin_pmodel, + .deathmsg = w_penguin_deathmsg, + .aimanim = w_penguin_aimanim, + .hudpic = w_penguin_hudpic +}; + +#ifdef SERVER +void +weapon_penguin(void) +{ + Weapons_InitItem(WEAPON_PENGUIN); +} +#endif diff --git a/src/shared/w_pipewrench.qc b/src/shared/w_pipewrench.qc new file mode 100644 index 0000000..c0562f0 --- /dev/null +++ b/src/shared/w_pipewrench.qc @@ -0,0 +1,350 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_pipewrench (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_pipe_wrench.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Pipe-Wrench Weapon + +*/ + +enum +{ + PIPE_IDLE1, + PIPE_IDLE2, + PIPE_IDLE3, + PIPE_DRAW, + PIPE_HOLSTER, + PIPE_ATTACK1HIT, + PIPE_ATTACK1MISS, + PIPE_ATTACK2HIT, + PIPE_ATTACK2MISS, + PIPE_ATTACK3HIT, + PIPE_ATTACK3MISS, + PIPE_ATTACKBIGWIND, + PIPE_ATTACKBIGHIT, + PIPE_ATTACKBIGMISS, + PIPE_ATTACKBIGLOOP +}; + +void +w_pipewrench_precache(void) +{ +#ifdef SERVER + precache_sound("weapons/pwrench_big_miss.wav"); + precache_sound("weapons/pwrench_big_hit1.wav"); + precache_sound("weapons/pwrench_big_hit2.wav"); + precache_sound("weapons/pwrench_big_hitbod1.wav"); + precache_sound("weapons/pwrench_big_hitbod2.wav"); + precache_sound("weapons/pwrench_miss1.wav"); + precache_sound("weapons/pwrench_miss2.wav"); + precache_sound("weapons/pwrench_hit1.wav"); + precache_sound("weapons/pwrench_hit2.wav"); + precache_sound("weapons/pwrench_hitbod1.wav"); + precache_sound("weapons/pwrench_hitbod2.wav"); + precache_sound("weapons/pwrench_hitbod3.wav"); + precache_model("models/w_pipe_wrench.mdl"); +#else + precache_model("models/p_pipe_wrench.mdl"); + precache_model("models/v_pipe_wrench.mdl"); +#endif +} + +void +w_pipewrench_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, -1, -1); +} + +string +w_pipewrench_wmodel(void) +{ + return "models/w_pipe_wrench.mdl"; +} + +string +w_pipewrench_pmodel(void) +{ + return "models/p_pipe_wrench.mdl"; +} + +string +w_pipewrench_deathmsg(void) +{ + return "%s was assaulted by %s's Pipewrench."; +} + +void +w_pipewrench_draw(void) +{ + Weapons_SetModel("models/v_pipe_wrench.mdl"); + Weapons_ViewAnimation(PIPE_DRAW); +} + +void +w_pipewrench_holster(void) +{ + Weapons_ViewAnimation(PIPE_HOLSTER); +} + +void +w_pipewrench_primary(void) +{ + int anim = 0; + vector src; + player pl = (player)self; + + if (pl.w_attack_next) { + return; + } + + Weapons_MakeVectors(); + src = Weapons_GetCameraPos(); + traceline(src, src + (v_forward * 32), FALSE, pl); + + if (trace_fraction >= 1.0) { + pl.w_attack_next = 0.7f; + } else { + pl.w_attack_next = 0.53f; + } + pl.w_idle_next = 2.5f; + +#ifdef CLIENT + int r = (float)input_sequence % 3; + switch (r) { + case 0: + anim = trace_fraction >= 1 ? PIPE_ATTACK1MISS:PIPE_ATTACK1HIT; + break; + case 1: + anim = trace_fraction >= 1 ? PIPE_ATTACK2MISS:PIPE_ATTACK2HIT; + break; + default: + anim = trace_fraction >= 1 ? PIPE_ATTACK3MISS:PIPE_ATTACK3HIT; + } + Weapons_ViewAnimation(anim); +#else + if (pl.flags & FL_CROUCHING) { + Animation_PlayerTopTemp(ANIM_SHOOTCROWBAR, 0.5f); + } else { + Animation_PlayerTopTemp(ANIM_CR_SHOOTCROWBAR, 0.42f); + } + + sound(pl, CHAN_WEAPON, "weapons/pwrench_miss1.wav", 1, ATTN_NORM); + + if (trace_fraction >= 1.0) { + return; + } + + /* don't bother with decals, we got squibs */ + if (trace_ent.iBleeds) { + FX_Blood(trace_endpos, [1,0,0]); + } else { + FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal); + } + + if (trace_ent.takedamage) { + Damage_Apply(trace_ent, self, 10, WEAPON_PIPEWRENCH, DMG_BLUNT); + + if (!trace_ent.iBleeds) { + return; + } + + if (random() < 0.33) { + sound(pl, 8, "weapons/pwrench_hitbod1.wav", 1, ATTN_NORM); + } else if (random() < 0.66) { + sound(pl, 8, "weapons/pwrench_hitbod2.wav", 1, ATTN_NORM); + } else { + sound(pl, 8, "weapons/pwrench_hitbod3.wav", 1, ATTN_NORM); + } + } else { + if (random() < 0.5) { + sound(pl, 8, "weapons/pwrench_hit1.wav", 1, ATTN_NORM); + } else { + sound(pl, 8, "weapons/pwrench_hit2.wav", 1, ATTN_NORM); + } + } +#endif +} + +void +w_pipewrench_secondary(void) +{ + player pl = (player)self; + + if (!pl.w_attack_next) { + /* Hack */ + if (pl.mode_wrench != 1) { + Weapons_ViewAnimation(PIPE_ATTACKBIGWIND); + pl.mode_wrench = 1; + pl.w_attack_next = 0.75f; + } + } + pl.w_idle_next = 2.5f; +} + +void +w_pipewrench_release(void) +{ + vector src; + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + + if (pl.mode_wrench == 1) { + #ifdef SERVER + int hitsound = 0; + string snd; + #endif + /* attack! */ + Weapons_MakeVectors(); + src = Weapons_GetCameraPos(); + traceline(src, src + (v_forward * 64), FALSE, pl); + + if (trace_fraction < 1.0) { + #ifdef SERVER + if (trace_ent.takedamage == DAMAGE_YES) { + hitsound = floor(random(1, 2)); + /* TODO Damage is 45 - 200+ (?) */ + Damage_Apply(trace_ent, pl, 200, WEAPON_PIPEWRENCH, DMG_BLUNT); + } else { + hitsound = 3; + } + + /* don't bother with decals, we got squibs */ + if (trace_ent.iBleeds) { + FX_Blood(trace_endpos, [1,0,0]); + } else { + FX_Impact(IMPACT_MELEE, trace_endpos, trace_plane_normal); + } + #endif + Weapons_ViewAnimation(PIPE_ATTACKBIGHIT); + Weapons_ViewPunchAngle([-10,0,0]); + } else { + Weapons_ViewAnimation(PIPE_ATTACKBIGMISS); + } +#ifdef SERVER + snd = "weapons/pwrench_big_miss.wav"; + switch (hitsound) { + case 1: + snd = "weapons/pwrench_big_hitbod1.wav"; + break; + case 2: + snd = "weapons/pwrench_big_hitbod2.wav"; + break; + case 3: + snd = "weapons/pwrench_big_hit1.wav"; + break; + } + Weapons_PlaySound(pl, CHAN_WEAPON, snd, 1.0f, ATTN_NORM); +#endif + pl.w_attack_next = 1.0f; + pl.w_idle_next = 10.0f; + pl.mode_wrench = 0; + } + + /* Pure cosmetics start here */ + if (pl.w_idle_next > 0.0) { + return; + } + + int r = floor(random(0,3)); + switch (r) { + case 0: + Weapons_ViewAnimation(PIPE_IDLE1); + pl.w_idle_next = 2.0f; + break; + case 1: + Weapons_ViewAnimation(PIPE_IDLE2); + pl.w_idle_next = 3.0f; + break; + case 2: + Weapons_ViewAnimation(PIPE_IDLE3); + pl.w_idle_next = 3.0f; + break; + } +} + +float +w_pipewrench_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMCROWBAR : ANIM_AIMCROWBAR; +} + +void +w_pipewrench_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof02.spr_0.tga", + [0,0], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof01.spr_0.tga", + [0,0], + [170/256,45/256], + g_hud_color, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_pipewrench = +{ + .name = "pipewrench", + .id = ITEM_PIPEWRENCH, + .slot = 0, + .slot_pos = 1, + .draw = w_pipewrench_draw, + .holster = w_pipewrench_holster, + .primary = w_pipewrench_primary, + .secondary = w_pipewrench_secondary, + .reload = w_pipewrench_release, + .release = w_pipewrench_release, + .crosshair = __NULL__, + .precache = w_pipewrench_precache, + .pickup = __NULL__, + .updateammo = w_pipewrench_updateammo, + .wmodel = w_pipewrench_wmodel, + .pmodel = w_pipewrench_pmodel, + .deathmsg = w_pipewrench_deathmsg, + .aimanim = w_pipewrench_aimanim, + .hudpic = w_pipewrench_hudpic +}; + +/* entity definitions for pickups */ +#ifdef SERVER +void +weapon_pipewrench(void) +{ + Weapons_InitItem(WEAPON_PIPEWRENCH); +} +#endif diff --git a/src/shared/w_shockrifle.qc b/src/shared/w_shockrifle.qc new file mode 100644 index 0000000..3869777 --- /dev/null +++ b/src/shared/w_shockrifle.qc @@ -0,0 +1,317 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_shockrifle (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_shock.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Shockrifle Weapon + +*/ + +#ifdef CLIENT +var int PART_SHOCKPIECE; +#endif + +enum +{ + SHOCKRIFLE_IDLE1, + SHOCKRIFLE_SHOOT, + SHOCKRIFLE_DRAW, + SHOCKRIFLE_HOLSTER, + SHOCKRIFLE_IDLE2 +}; + +void +w_shockrifle_precache(void) +{ +#ifdef SERVER + precache_model("models/w_shock.mdl"); + precache_sound("weapons/shock_discharge.wav"); + precache_sound("weapons/shock_draw.wav"); + precache_sound("weapons/shock_fire.wav"); + precache_sound("weapons/shock_impact.wav"); + precache_sound("weapons/shock_recharge.wav"); +#else + PART_SHOCKPIECE = particleeffectnum("shockrifle.shockrifle_piece"); + precache_model("models/v_shock.mdl"); + precache_model("models/p_shock.mdl"); +#endif +} + +int +w_shockrifle_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + /* only pick it up once */ + if (new) { + pl.ammo_shock = MAX_A_SHOCK; + return TRUE; + } +#endif + return FALSE; +} + +void +w_shockrifle_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, -1, pl.ammo_shock, -1); +} + +string +w_shockrifle_wmodel(void) +{ + return "models/w_shock.mdl"; +} + +string +w_shockrifle_pmodel(void) +{ + return "models/p_shock.mdl"; +} + +string +w_shockrifle_deathmsg(void) +{ + return ""; +} + +void +w_shockrifle_draw(void) +{ + Weapons_SetModel("models/v_shock.mdl"); + Weapons_ViewAnimation(SHOCKRIFLE_DRAW); +#ifdef SERVER + player pl = (player)self; + Weapons_UpdateAmmo(pl, -1, pl.ammo_shock, -1); +#endif +} + +void +w_shockrifle_holster(void) +{ + +} + +#ifdef SERVER +void +w_shockrifle_shoothornet(void) +{ + static void Hornet_Touch(void) { + if (other.takedamage == DAMAGE_YES) { + Damage_Apply(other, self.owner, 10, WEAPON_SHOCKRIFLE, DMG_ELECTRO); + } + + if (other.iBleeds) { + FX_Blood(trace_endpos, [1,0,0]); + } else { + FX_Spark(self.origin, trace_plane_normal); + } + remove(self); + } + Weapons_MakeVectors(); + entity bolt = spawn(); + //setmodel(bolt, "models/hornet.mdl"); + setorigin(bolt, Weapons_GetCameraPos() + (v_forward * 16) + (v_up * -8)); + bolt.owner = self; + bolt.velocity = v_forward * 1000; + bolt.movetype = MOVETYPE_FLY; + bolt.solid = SOLID_BBOX; + //bolt.flags |= FL_LAGGEDMOVE; + bolt.gravity = 0.5f; + bolt.angles = vectoangles(bolt.velocity); + bolt.touch = Hornet_Touch; + setsize(bolt, [0,0,0], [0,0,0]); +} +#endif + +void +w_shockrifle_release(void) +{ + player pl = (player)self; + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.ammo_shock < MAX_A_SHOCK) { + pl.ammo_shock = bound(0, pl.ammo_shock + 1, MAX_A_SHOCK); + pl.w_idle_next = 0.35f; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + if (random() < 0.5) { + Weapons_ViewAnimation(SHOCKRIFLE_IDLE1); + } else { + Weapons_ViewAnimation(SHOCKRIFLE_IDLE2); + } + + pl.w_idle_next = 3.333333f; +} + +void +w_shockrifle_primary(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ + if (pl.ammo_shock <= 0) { + w_shockrifle_release(); + return; + } + + +#ifdef SERVER + w_shockrifle_shoothornet(); + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/shock_fire.wav", 1, ATTN_NORM); + + pl.ammo_shock--; + Weapons_UpdateAmmo(pl, -1, pl.ammo_shock, -1); +#else + Weapons_MakeVectors(); + vector src = Weapons_GetCameraPos() + (v_forward * 16) + (v_up * -8); + pointparticles(PART_SHOCKPIECE, src, v_forward * 1000, 1); + pl.ammo_shock--; +#endif + + Weapons_ViewAnimation(SHOCKRIFLE_SHOOT); + pl.w_attack_next = 0.1f; + pl.w_idle_next = 0.5f; +} + +void +w_shockrifle_crosshair(void) +{ +#ifdef CLIENT + vector cross_pos; + vector aicon_pos; + + /* crosshair */ + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [0,24/72], + [24/72, 24/72], + [1,1,1], + 1.0, + DRAWFLAG_NORMAL + ); + + /* ammo counter */ + HUD_DrawAmmo2(); + + /* ammo icon */ + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic( + aicon_pos, + [24,24], + "sprites/640hud7.spr_0.tga", + [224/256,48/128], + [24/256, 24/128], + g_hud_color, + pSeat->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); +#endif +} + +float +w_shockrifle_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMHIVE : ANIM_AIMHIVE; +} + +void +w_shockrifle_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.ammo_shock == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_shock, MAX_A_SHOCK, a); + + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof04.spr_0.tga", + [0,45/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof03.spr_0.tga", + [0,45/256], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_shockrifle = +{ + .name = "shockrifle", + .id = ITEM_SHOCKRIFLE, + .slot = 6, + .slot_pos = 1, + .draw = w_shockrifle_draw, + .holster = w_shockrifle_holster, + .primary = w_shockrifle_primary, + .secondary = w_shockrifle_release, + .reload = w_shockrifle_release, + .release = w_shockrifle_release, + .crosshair = w_shockrifle_crosshair, + .precache = w_shockrifle_precache, + .pickup = w_shockrifle_pickup, + .updateammo = w_shockrifle_updateammo, + .wmodel = w_shockrifle_wmodel, + .pmodel = w_shockrifle_pmodel, + .deathmsg = w_shockrifle_deathmsg, + .aimanim = w_shockrifle_aimanim, + .hudpic = w_shockrifle_hudpic +}; + +#ifdef SERVER +void +weapon_shockrifle(void) +{ + Weapons_InitItem(WEAPON_SHOCKRIFLE); +} +#endif diff --git a/src/shared/w_sniperrifle.qc b/src/shared/w_sniperrifle.qc new file mode 100644 index 0000000..6c9bf2d --- /dev/null +++ b/src/shared/w_sniperrifle.qc @@ -0,0 +1,327 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_sniperrifle (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_m40a1.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Sniper-Rifle Weapon + +*/ + +enum +{ + SNIPER_DRAW, + SNIPER_IDLE1, + SNIPER_FIRE1, + SNIPER_FIRE2, + SNIPER_RELOAD1, + SNIPER_RELOAD2, + SNIPER_RELOAD3, + SNIPER_IDLE2, + SNIPER_HOLSTER, + SNIPER_DRAW +}; + +void +w_sniperrifle_precache(void) +{ +#ifdef SERVER + precache_model("models/w_m40a1.mdl"); + precache_sound("weapons/sniper_fire.wav"); +#else + precache_model("models/v_m40a1.mdl"); + precache_model("models/p_m40a1.mdl"); +#endif +} + +int +w_sniperrifle_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (new) { + pl.sniper_mag = 5; + } else { + if (pl.ammo_762 < MAX_A_762) { + pl.ammo_762 = bound(0, pl.ammo_762 + 5, MAX_A_762); + } else { + return FALSE; + } + } +#endif + return TRUE; +} + +void +w_sniperrifle_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, pl.sniper_mag, pl.ammo_762, -1); +} + +string +w_sniperrifle_wmodel(void) +{ + return "models/w_m40a1.mdl"; +} + +string +w_sniperrifle_pmodel(void) +{ + return "models/p_m40a1.mdl"; +} + +string +w_sniperrifle_deathmsg(void) +{ + return ""; +} + +void +w_sniperrifle_draw(void) +{ + Weapons_SetModel("models/v_m40a1.mdl"); + Weapons_ViewAnimation(SNIPER_DRAW); +#ifdef SERVER + player pl = (player)self; + Weapons_UpdateAmmo(pl, pl.sniper_mag, pl.ammo_762, -1); +#endif +} + +void +w_sniperrifle_holster(void) +{ + Weapons_ViewAnimation(SNIPER_HOLSTER); +} + +void +w_sniperrifle_primary(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.sniper_mag <= 0) { + return; + } +#else + if (pl.sniper_mag <= 0) { + return; + } +#endif + + /* Actual firing */ +#ifdef SERVER + TraceAttack_FireBullets(1, pl.origin + pl.view_ofs, 40, [0.00873, 0.00873], WEAPON_SNIPERRIFLE); + Weapons_PlaySound(pl, CHAN_WEAPON, "weapons/sniper_fire.wav", 1, ATTN_NORM); + + pl.sniper_mag--; + Weapons_UpdateAmmo(pl, pl.sniper_mag, pl.ammo_762, __NULL__); +#else + pl.sniper_mag--; + View_SetMuzzleflash(MUZZLE_SMALL); + Weapons_ViewPunchAngle([-10,0,0]); + + if (pl.sniper_mag) { + Weapons_ViewAnimation(SNIPER_FIRE1); + } else { + Weapons_ViewAnimation(SNIPER_FIRE2); + } +#endif + + pl.w_attack_next = 1.75f; + pl.w_idle_next = 10.0f; +} + +void +w_sniperrifle_secondary(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + /* Simple toggle of fovs */ + if (pl.viewzoom == 1.0f) { + pl.viewzoom = 0.25f; + } else { + pl.viewzoom = 1.0f; + } + pl.w_attack_next = 0.5f; +} + +void +w_sniperrifle_reload(void) +{ + player pl = (player)self; + if (pl.w_attack_next > 0.0) { + return; + } + + /* Ammo check */ +#ifdef CLIENT + if (pl.sniper_mag >= 5) { + return; + } + if (pl.ammo_762 <= 0) { + return; + } +#else + if (pl.sniper_mag >= 5) { + return; + } + if (pl.ammo_762 <= 0) { + return; + } +#endif + + /* Audio-Visual bit */ + /* TODO has a couple reloading states */ + Weapons_ViewAnimation(SNIPER_RELOAD1); +#ifdef SERVER + Weapons_ReloadWeapon(pl, player::sniper_mag, player::ammo_762, 5); + Weapons_UpdateAmmo(pl, pl.sniper_mag, pl.ammo_762, __NULL__); +#endif + pl.w_attack_next = 2.3f; + pl.w_idle_next = 10.0f; +} +void +w_sniperrifle_release(void) +{ + player pl = (player)self; + + /* auto-reload if need be */ + if (pl.w_attack_next <= 0.0) + if (pl.sniper_mag == 0 && pl.ammo_762 > 0) { + Weapons_Reload(); + return; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + int r = (float)input_sequence % 2; + if (r == 1) { + Weapons_ViewAnimation(SNIPER_IDLE1); + } else { + Weapons_ViewAnimation(SNIPER_IDLE2); + } + pl.w_idle_next = 15.0f; +} +void +w_sniperrifle_crosshair(void) +{ +#ifdef CLIENT + player pl = (player)self; + static vector cross_pos; + + if (pl.viewzoom == 1.0f) { + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [0,48/72], + [24/72, 24/72], + [1,1,1], + 1, + DRAWFLAG_NORMAL + ); + } else { + cross_pos = g_hudmins + (g_hudres / 2) + [-128,-128]; + drawsubpic( + cross_pos, + [256,256], + "sprites/ofch2.spr_0.tga", + [0,0], + [1, 1], + [1,1,1], + 1, + DRAWFLAG_NORMAL + ); + } + + HUD_DrawAmmo1(); + HUD_DrawAmmo2(); + + vector aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic(aicon_pos, [24,24], "sprites/640hud7.spr_0.tga", [24/256,72/128], [24/256, 24/128], g_hud_color, pSeat->m_flAmmo2Alpha, DRAWFLAG_ADDITIVE); +#endif +} + +float +w_sniperrifle_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMPYTHON : ANIM_AIMPYTHON; +} + +void +w_sniperrifle_hudpic(int s, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.sniper_mag == 0 && pl.ammo_762 == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_762, MAX_A_762, a); + + if (s) { + drawsubpic(pos, [170,45], "sprites/640hudof04.spr_0.tga", [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE); + } else { + drawsubpic(pos, [170,45], "sprites/640hudof03.spr_0.tga", [0,135/256], [170/256,45/256], hud_col, a, DRAWFLAG_ADDITIVE); + } +#endif +} + +weapon_t w_sniperrifle = +{ + .name = "sniperrifle", + .id = ITEM_SNIPERRIFLE, + .slot = 5, + .slot_pos = 2, + .draw = w_sniperrifle_draw, + .holster = w_sniperrifle_holster, + .primary = w_sniperrifle_primary, + .secondary = w_sniperrifle_secondary, + .reload = w_sniperrifle_reload, + .release = w_sniperrifle_release, + .crosshair = w_sniperrifle_crosshair, + .precache = w_sniperrifle_precache, + .pickup = w_sniperrifle_pickup, + .updateammo = w_sniperrifle_updateammo, + .wmodel = w_sniperrifle_wmodel, + .pmodel = w_sniperrifle_pmodel, + .deathmsg = w_sniperrifle_deathmsg, + .aimanim = w_sniperrifle_aimanim, + .hudpic = w_sniperrifle_hudpic +}; + +#ifdef SERVER +void +weapon_sniperrifle(void) +{ + Weapons_InitItem(WEAPON_SNIPERRIFLE); +} +#endif diff --git a/src/shared/w_sporelauncher.qc b/src/shared/w_sporelauncher.qc new file mode 100644 index 0000000..ad9acc9 --- /dev/null +++ b/src/shared/w_sporelauncher.qc @@ -0,0 +1,491 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/*QUAKED weapon_sporelauncher (0 0 1) (-16 -16 0) (16 16 32) +"model" "models/w_spore_launcher.mdl" + +HALF-LIFE: OPPOSING FORCE (1999) ENTITY + +Sporelauncher Weapon + +*/ + +enum +{ + SPORE_IDLE1, + SPORE_FIDGET, + SPORE_RELOAD1, + SPORE_RELOAD2, + SPORE_RELOAD3, + SPORE_FIRE, + SPORE_HOLSTER, + SPORE_DRAW, + SPORE_IDLE2 +}; + +enum +{ + SLSTATE_IDLE, + SLSTATE_RELOAD_START, + SLSTATE_RELOAD, + SLSTATE_RELOAD_END +}; + +#ifdef SERVER +void Sporelauncher_Fire(entity spawner, vector org, vector dir) +{ + static void Spore_Touch(void) { + int r; + string hitsnd; + + if (other.takedamage == DAMAGE_YES) { + Damage_Apply(other, self.owner, 50, WEAPON_SPORELAUNCHER, DMG_GENERIC); + } else { + Decals_Place(self.origin, sprintf("{yblood%d", floor(random(1,7)))); + } + + r = floor(random(0,3)); + hitsnd = "weapons/spore_hit1.wav"; + switch (r) { + case 0: + hitsnd = "weapons/spore_hit2.wav"; + break; + case 1: + hitsnd = "weapons/spore_hit3.wav"; + break; + } + sound(self, CHAN_BODY, hitsnd, 1.0f, ATTN_NORM); + remove(self); + } + + entity blob = spawn(); + setmodel(blob, "models/spore.mdl"); + blob.owner = spawner; + blob.velocity = dir * 2000; + blob.movetype = MOVETYPE_BOUNCE; + blob.solid = SOLID_BBOX; + //bolt.flags |= FL_LAGGEDMOVE; + blob.gravity = 0.5f; + blob.angles = vectoangles(blob.velocity); + blob.avelocity[2] = 10; + blob.touch = Spore_Touch; + setsize(blob, [0,0,0], [0,0,0]); + setorigin(blob, org); + + sound(spawner, CHAN_WEAPON, "weapons/splauncher_fire.wav", 1, ATTN_NORM); +} +void Sporelauncher_AltFire(entity spawner, vector org, vector dir) +{ + static void Spore_Explode(void) { + int r; + string hitsnd; + + Damage_Radius(self.origin, self.owner, 100, 256, 1, WEAPON_SPORELAUNCHER); + r = floor(random(0,3)); + hitsnd = "weapons/spore_hit1.wav"; + switch (r) { + case 0: + hitsnd = "weapons/spore_hit2.wav"; + break; + case 1: + hitsnd = "weapons/spore_hit3.wav"; + break; + } + sound(self, CHAN_BODY, hitsnd, 1.0f, ATTN_NORM); + remove(self); + } + static void Spore_Touch(void) { + Decals_Place(self.origin, sprintf("{yblood%d", floor(random(1,7)))); + if (other.takedamage == DAMAGE_YES) { + Spore_Explode(); + } else if (self.think == __NULL__) { + self.think = Spore_Explode; + self.nextthink = time + 2.0f; + } + self.velocity *= 0.5f; + } + + entity blob = spawn(); + setmodel(blob, "models/spore.mdl"); + blob.owner = spawner; + blob.velocity = dir * 2000; + blob.movetype = MOVETYPE_BOUNCE; + blob.solid = SOLID_BBOX; + //bolt.flags |= FL_LAGGEDMOVE; + blob.gravity = 0.5f; + blob.angles = vectoangles(blob.velocity); + blob.avelocity[2] = 10; + blob.touch = Spore_Touch; + setsize(blob, [0,0,0], [0,0,0]); + setorigin(blob, org); + + sound(spawner, CHAN_WEAPON, "weapons/splauncher_fire.wav", 1, ATTN_NORM); +} +#endif + +void +w_sporelauncher_precache(void) +{ +#ifdef SERVER + precache_model("models/spore.mdl"); + precache_model("models/w_spore_launcher.mdl"); + precache_sound("weapons/splauncher_altfire.wav"); + precache_sound("weapons/splauncher_bounce.wav"); + precache_sound("weapons/splauncher_fire.wav"); + precache_sound("weapons/splauncher_impact.wav"); + precache_sound("weapons/splauncher_pet.wav"); + precache_sound("weapons/splauncher_reload.wav"); + precache_sound("weapons/spore_ammo.wav"); + precache_sound("weapons/spore_hit1.wav"); + precache_sound("weapons/spore_hit2.wav"); + precache_sound("weapons/spore_hit3.wav"); +#else + precache_model("models/v_spore_launcher.mdl"); + precache_model("models/p_spore_launcher.mdl"); +#endif + +} +void +w_sporelauncher_updateammo(player pl) +{ + Weapons_UpdateAmmo(pl, pl.sporelauncher_mag, pl.ammo_spore, -1); +} + +string +w_sporelauncher_wmodel(void) +{ + return "models/w_spore_launcher.mdl"; +} + +string +w_sporelauncher_pmodel(void) +{ + return "models/p_spore_launcher.mdl"; +} +string +w_sporelauncher_deathmsg(void) +{ + return ""; +} + +int +w_sporelauncher_pickup(int new, int startammo) +{ +#ifdef SERVER + player pl = (player)self; + + if (new) { + pl.sporelauncher_mag = 5; + } else { + if (pl.ammo_spore < MAX_A_SPORE) { + pl.ammo_spore = bound(0, pl.ammo_spore + 5, MAX_A_SPORE); + } else { + return FALSE; + } + } +#endif + return TRUE; +} + +void +w_sporelauncher_draw(void) +{ +#ifdef CLIENT + Weapons_SetModel("models/v_spore_launcher.mdl"); + Weapons_ViewAnimation(SPORE_DRAW); +#else + player pl = (player)self; + Weapons_UpdateAmmo(pl, pl.sporelauncher_mag, pl.ammo_spore, -1); +#endif +} + +void +w_sporelauncher_holster(void) +{ + Weapons_ViewAnimation(SPORE_HOLSTER); +} + +void +w_sporelauncher_primary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + +#ifdef SERVER + if (pl.sporelauncher_mag <= 0) { + return; + } + + Weapons_MakeVectors(); + Sporelauncher_Fire(self, Weapons_GetCameraPos() + (v_forward * 16), v_forward); + + pl.sporelauncher_mag--; + Weapons_UpdateAmmo(pl, pl.sporelauncher_mag, pl.ammo_spore, -1); +#else + if (pl.sporelauncher_mag <= 0) { + return; + } + + Weapons_ViewPunchAngle([-2,0,0]); + Weapons_ViewAnimation(SPORE_FIRE); +#endif + + pl.w_attack_next = 0.75f; + pl.w_idle_next = 10.0f; +} + +void +w_sporelauncher_secondary(void) +{ + player pl = (player)self; + + if (pl.w_attack_next > 0.0) { + return; + } + +#ifdef SERVER + if (pl.sporelauncher_mag <= 0) { + return; + } + + Weapons_MakeVectors(); + Sporelauncher_AltFire(self, Weapons_GetCameraPos() + (v_forward * 16), v_forward); + + pl.sporelauncher_mag--; + Weapons_UpdateAmmo(pl, pl.sporelauncher_mag, pl.ammo_spore, -1); +#else + if (pl.sporelauncher_mag <= 0) { + return; + } + + Weapons_ViewPunchAngle([-2,0,0]); + Weapons_ViewAnimation(SPORE_FIRE); +#endif + + pl.w_attack_next = 0.75f; + pl.w_idle_next = 10.0f; +} + +void w_sporelauncher_release(void) +{ + player pl = (player)self; + + /* auto-reload if need be */ + if (pl.w_attack_next <= 0.0) + if (pl.mode_sporelauncher == SLSTATE_IDLE && pl.sporelauncher_mag == 0 && pl.ammo_spore > 0) { + Weapons_Reload(); + return; + } + + if (pl.w_idle_next > 0.0) { + return; + } + + if (pl.mode_sporelauncher == SLSTATE_IDLE) { + int r = (float)input_sequence % 3; + switch (r) { + case 0: + Weapons_ViewAnimation(SPORE_IDLE1); + pl.w_idle_next = 2.0f; + break; + case 1: + Weapons_ViewAnimation(SPORE_FIDGET); + pl.w_idle_next = 4.0f; + break; + case 2: + Weapons_ViewAnimation(SPORE_IDLE2); + pl.w_idle_next = 4.0f; + break; + } + } else if (pl.mode_sporelauncher == SLSTATE_RELOAD_START) { + Weapons_ViewAnimation(SPORE_RELOAD1); + pl.mode_sporelauncher = SLSTATE_RELOAD; + pl.w_idle_next = 0.65f; + } else if (pl.mode_sporelauncher == SLSTATE_RELOAD) { + Weapons_ViewAnimation(SPORE_RELOAD2); +#ifdef CLIENT + pl.sporelauncher_mag++; + pl.ammo_spore--; + + if (pl.ammo_spore <= 0 || pl.sporelauncher_mag >= 5) { + pl.mode_sporelauncher = SLSTATE_RELOAD_END; + } +#else + pl.sporelauncher_mag++; + pl.ammo_spore--; + + if (pl.ammo_spore <= 0 || pl.sporelauncher_mag >= 5) { + pl.mode_sporelauncher = SLSTATE_RELOAD_END; + } +#endif + pl.w_idle_next = 1.0f; + } else if (pl.mode_sporelauncher == SLSTATE_RELOAD_END) { + Weapons_ViewAnimation(SPORE_RELOAD3); + + pl.mode_sporelauncher = SLSTATE_IDLE; + pl.w_idle_next = 10.0f; + pl.w_attack_next = 0.5f; + } +} + +void +w_sporelauncher_reload(void) +{ + player pl = (player)self; + +#ifdef CLIENT + if (pl.sporelauncher_mag >= 5) { + return; + } + if (pl.ammo_spore <= 0) { + return; + } +#else + if (pl.sporelauncher_mag >= 5) { + return; + } + if (pl.ammo_spore <= 0) { + return; + } +#endif + + if (pl.mode_sporelauncher > SLSTATE_IDLE) { + return; + } + + pl.mode_sporelauncher = SLSTATE_RELOAD_START; + pl.w_idle_next = 0.0f; +} + +void +w_sporelauncher_crosshair(void) +{ +#ifdef CLIENT + vector cross_pos; + vector aicon_pos; + + /* crosshair */ + cross_pos = g_hudmins + (g_hudres / 2) + [-12,-12]; + drawsubpic( + cross_pos, + [24,24], + "sprites/ofch1.spr_0.tga", + [24/72,24/72], + [24/72,24/72], + [1,1,1], + 1.0, + DRAWFLAG_NORMAL + ); + + /* ammo counters */ + HUD_DrawAmmo1(); + HUD_DrawAmmo2(); + + /* ammo icon */ + aicon_pos = g_hudmins + [g_hudres[0] - 48, g_hudres[1] - 42]; + drawsubpic( + aicon_pos, + [24,24], + "sprites/640hud7.spr_0.tga", + [200/256,48/128], + [24/256, 24/128], + g_hud_color, + pSeat->m_flAmmo2Alpha, + DRAWFLAG_ADDITIVE + ); +#endif +} + +float +w_sporelauncher_aimanim(void) +{ + return self.flags & FL_CROUCHING ? ANIM_CR_AIMBOW : ANIM_AIMBOW; +} + +void +w_sporelauncher_hudpic(int selected, vector pos, float a) +{ +#ifdef CLIENT + player pl = (player)self; + vector hud_col; + + if (pl.sporelauncher_mag == 0 && pl.ammo_spore == 0) + hud_col = [1,0,0]; + else + hud_col = g_hud_color; + + HUD_DrawAmmoBar(pos, pl.ammo_spore, MAX_A_SPORE, a); + + if (selected) { + drawsubpic( + pos, + [170,45], + "sprites/640hudof04.spr_0.tga", + [0,0], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } else { + drawsubpic( + pos, + [170,45], + "sprites/640hudof03.spr_0.tga", + [0,0], + [170/256,45/256], + hud_col, + a, + DRAWFLAG_ADDITIVE + ); + } +#endif +} + +weapon_t w_sporelauncher = +{ + .name = "sporelauncher", + .id = ITEM_SPORELAUNCHER, + .slot = 6, + .slot_pos = 0, + .draw = w_sporelauncher_draw, + .holster = w_sporelauncher_holster, + .primary = w_sporelauncher_primary, + .secondary = w_sporelauncher_secondary, + .reload = w_sporelauncher_reload, + .release = w_sporelauncher_release, + .crosshair = w_sporelauncher_crosshair, + .precache = w_sporelauncher_precache, + .pickup = w_sporelauncher_pickup, + .updateammo = w_sporelauncher_updateammo, + .wmodel = w_sporelauncher_wmodel, + .pmodel = w_sporelauncher_pmodel, + .deathmsg = w_sporelauncher_deathmsg, + .aimanim = w_sporelauncher_aimanim, + .hudpic = w_sporelauncher_hudpic +}; + +#ifdef SERVER +void +weapon_sporelauncher(void) +{ + Weapons_InitItem(WEAPON_SPORELAUNCHER); +} +#endif + diff --git a/src/shared/weapons.h b/src/shared/weapons.h new file mode 100644 index 0000000..5d08d6e --- /dev/null +++ b/src/shared/weapons.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016-2021 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* Weapon Indices for the weapon table */ +enum +{ + WEAPON_NONE, + WEAPON_CROWBAR, + WEAPON_PIPEWRENCH, + WEAPON_KNIFE, + WEAPON_GRAPPLE, + WEAPON_GLOCK, + WEAPON_PYTHON, + WEAPON_EAGLE, + WEAPON_MP5, + WEAPON_SHOTGUN, + WEAPON_CROSSBOW, + WEAPON_RPG, + WEAPON_GAUSS, + WEAPON_EGON, + WEAPON_HORNETGUN, + WEAPON_HANDGRENADE, + WEAPON_SATCHEL, + WEAPON_TRIPMINE, + WEAPON_SNARK, + WEAPON_PENGUIN, + WEAPON_M249, + WEAPON_DISPLACER, + WEAPON_SNIPERRIFLE, + WEAPON_SPORELAUNCHER, + WEAPON_SHOCKRIFLE +}; + +#define MAX_A_9MM 250 +#define MAX_A_357 36 +#define MAX_A_BUCKSHOT 125 +#define MAX_A_M203_GRENADE 10 +#define MAX_A_BOLT 50 +#define MAX_A_ROCKET 5 +#define MAX_A_URANIUM 100 +#define MAX_A_HANDGRENADE 10 +#define MAX_A_SATCHEL 5 +#define MAX_A_TRIPMINE 10 +#define MAX_A_SNARK 10 +#define MAX_A_HORNET 8 + +/* gearbox */ +#define MAX_A_556 200 +#define MAX_A_PENGUIN 9 +#define MAX_A_SHOCK 10 +#define MAX_A_762 15 +#define MAX_A_SPORE 20 diff --git a/src/shared/weapons.qc b/src/shared/weapons.qc new file mode 100644 index 0000000..f7d2a3f --- /dev/null +++ b/src/shared/weapons.qc @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2016-2020 Marco Hladik + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +weapon_t w_null = {}; +weapon_t g_weapons[] = { + w_null, + w_crowbar, + w_pipewrench, + w_knife, + w_grapple, + w_glock, + w_python, + w_eagle, + w_mp5, + w_shotgun, + w_crossbow, + w_rpg, + w_gauss, + w_egon, + w_hornetgun, + w_handgrenade, + w_satchel, + w_tripmine, + w_snark, + w_penguin, + w_m249, + w_displacer, + w_sniperrifle, + w_sporelauncher, + w_shockrifle +}; diff --git a/zpak001.pk3dir/default.cfg b/zpak001.pk3dir/default.cfg new file mode 100755 index 0000000..fd2712e --- /dev/null +++ b/zpak001.pk3dir/default.cfg @@ -0,0 +1,47 @@ +// Generic Binds +bind "ESC" "togglemenu" +bind "w" "+forward" +bind "s" "+back" +bind "a" "+moveleft" +bind "d" "+moveright" +bind "SPACE" "+jump" +bind "CTRL" "+duck" +bind "SHIFT" "+speed" +bind "0" "slot10" +bind "1" "slot1" +bind "2" "slot2" +bind "3" "slot3" +bind "4" "slot4" +bind "5" "slot5" +bind "6" "slot6" +bind "7" "slot7" +bind "8" "slot8" +bind "9" "slot9" +bind "UPARROW" "+forward" +bind "DOWNARROW" "+back" +bind "LEFTARROW" "+left" +bind "RIGHTARROW" "+right" +bind "MOUSE1" "+attack" +bind "MOUSE2" "+attack2" +bind "MWHEELDOWN" "invnext" +bind "MWHEELUP" "invprev" +bind "r" "+reload" +bind "e" "+use" +bind "TAB" "+showscores" +bind "y" "messagemode" +bind "u" "messagemode2" +bind "t" "impulse 201" +bind "f" "impulse 100" +bind "f1" "vote yes" +bind "f2" "vote no" + +// Game Variables +seta "hostname" "Opposing Force Server" +name "Shephard" +model shephard +seta "maxplayers" "8" + +// 2D/HUD Variables +seta "con_color" "0 255 0" +seta "vgui_color" "0 255 0" +seta "cross_color" "0 255 0" diff --git a/zpak001.pk3dir/particles/shockrifle.cfg b/zpak001.pk3dir/particles/shockrifle.cfg new file mode 100755 index 0000000..b8f93f4 --- /dev/null +++ b/zpak001.pk3dir/particles/shockrifle.cfg @@ -0,0 +1,17 @@ +r_part shockrifle_piece +{ + type texturedspark + texture ball + tcoords 1 65 31 95 256 8 32 + scale 1 + count 8 + scalefactor 1 + alpha 0.5 + die 25 + rgb 0 255 255 + blend add + spawnmode ball + spawnorg 1 + friction 0.5 + gravity 0 +} diff --git a/zpak001.pk3dir/scripts/map_blacklist b/zpak001.pk3dir/scripts/map_blacklist new file mode 100644 index 0000000..c25e3c9 --- /dev/null +++ b/zpak001.pk3dir/scripts/map_blacklist @@ -0,0 +1,45 @@ +of0a0.bsp +of1a1.bsp +of1a2.bsp +of1a3.bsp +of1a4b.bsp +of1a4.bsp +of1a5b.bsp +of1a5.bsp +of1a6.bsp +of2a1b.bsp +of2a1.bsp +of2a2.bsp +of2a3.bsp +of2a4.bsp +of2a5.bsp +of2a6.bsp +of3a1b.bsp +of3a1.bsp +of3a2.bsp +of3a4.bsp +of3a5.bsp +of3a6.bsp +of4a1.bsp +of4a2.bsp +of4a3.bsp +of4a4.bsp +of4a5.bsp +of5a1.bsp +of5a2.bsp +of5a3.bsp +of5a4.bsp +of6a1.bsp +of6a2.bsp +of6a3.bsp +of6a4b.bsp +of6a4.bsp +of6a5.bsp +of7a0.bsp +ofboot0.bsp +ofboot1.bsp +ofboot2.bsp +ofboot3.bsp +ofboot4.bsp +of2a5dmo.bsp +of5a3dmo.bsp