From 9bbaf653e6d235a7507c8ef15f644c081a0eb7e2 Mon Sep 17 00:00:00 2001 From: terencehill Date: Sat, 22 Dec 2012 09:51:02 +0100 Subject: [PATCH] Full support for 3 and 4 teams in CA and Freezetag --- _hud_descriptions.cfg | 2 + gamemodes.cfg | 5 + gfx/hud/default/player_pink.tga | Bin 0 -> 48362 bytes gfx/hud/default/player_yellow.tga | Bin 0 -> 48356 bytes hud_luminos.cfg | 2 + hud_luminos_minimal.cfg | 2 + hud_luminos_minimal_xhair.cfg | 2 + hud_luminos_old.cfg | 2 + hud_nexuiz.cfg | 2 + qcsrc/client/autocvars.qh | 2 + qcsrc/client/hud.qc | 101 ++++++++++++++++---- qcsrc/client/hud_config.qc | 2 + qcsrc/server/arena.qc | 61 ++++++++---- qcsrc/server/autocvars.qh | 4 + qcsrc/server/defs.qh | 2 + qcsrc/server/g_world.qc | 6 -- qcsrc/server/mutators/gamemode_freezetag.qc | 87 +++++++++++------ qcsrc/server/teamplay.qc | 12 ++- 18 files changed, 221 insertions(+), 73 deletions(-) create mode 100644 gfx/hud/default/player_pink.tga create mode 100644 gfx/hud/default/player_yellow.tga diff --git a/_hud_descriptions.cfg b/_hud_descriptions.cfg index cb95f96813..b2bfcf6a0b 100644 --- a/_hud_descriptions.cfg +++ b/_hud_descriptions.cfg @@ -194,7 +194,9 @@ seta hud_panel_modicons_bg_color_team "" "override panel color with team color i seta hud_panel_modicons_bg_alpha "" "if set to something else than \"\" = override default panel background alpha" seta hud_panel_modicons_bg_border "" "if set to something else than \"\" = override default size of border around the background" seta hud_panel_modicons_bg_padding "" "if set to something else than \"\" = override default padding of contents from border" +seta hud_panel_modicons_ca_layout "" "2 possible layouts: 0) number of alive players; 1) icons and number of alive players" seta hud_panel_modicons_dom_layout "" "3 possible layouts: 0) only icons; 1) icons and percentage of average pps (points per second); 2) icons and average pps" +seta hud_panel_modicons_freezetag_layout "" "2 possible layouts: 0) number of alive players; 1) icons and number of alive players" seta hud_panel_pressedkeys "" "enable/disable this panel, 1 = show only when spectating other players, 2 = show always" seta hud_panel_pressedkeys_pos "" "position of this base of the panel" diff --git a/gamemodes.cfg b/gamemodes.cfg index 6cff7e5a42..515b8ce6c8 100644 --- a/gamemodes.cfg +++ b/gamemodes.cfg @@ -168,6 +168,9 @@ set g_ca_spectate_enemies 0 "Allow spectating enemy player by dead player during set g_ca_warmup 10 "how long the players will have time to run around the map before the round starts" set g_ca_damage2score_multiplier 0.01 set g_ca_round_timelimit 180 +seta g_ca_teams_override 0 +set g_ca_teams 0 + // ================== @@ -283,6 +286,8 @@ seta g_freezetag_revive_speed 0.4 "Speed for reviving a frozen teammate" seta g_freezetag_revive_clearspeed 1.6 "Speed at which reviving progress gets lost when out of range" seta g_freezetag_revive_extra_size 100 "Distance in qu that you can stand from a frozen teammate to keep reviving him" seta g_freezetag_frozen_force 0.6 "How much to multiply the force on a frozen player with" +seta g_freezetag_teams_override 0 +set g_freezetag_teams 0 // ========== diff --git a/gfx/hud/default/player_pink.tga b/gfx/hud/default/player_pink.tga new file mode 100644 index 0000000000000000000000000000000000000000..89a765921813dbe56d62d9b52980e6105d77c77f GIT binary patch literal 48362 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 literal 0 HcmV?d00001 diff --git a/gfx/hud/default/player_yellow.tga b/gfx/hud/default/player_yellow.tga new file mode 100644 index 0000000000000000000000000000000000000000..8717d8f76db0ed197decaa3f1fcd35e94a20e9c5 GIT binary patch literal 48356 zcma&P1)NpY_r^Uzmvo4tprUjbh!PfH04gEaqF7kiE#9F-M8xhcFc1uE3@jw1nNDJ; z=@};1`+V2E=Q8N;|GqCDkLS#}r}lc*dRFXx_KAsU6chY=H0IHmBOAQNp9y9b8}sO+ zkH&?x6&JT?(V}>5#4lgIyiRD%%{Qmpz4YRYe8|t@4+qZ9TG;`g$b&W%8#j%T@{z%Vmn82|K zJgjepI4y=BX>y|&j-Sq%2|IW0Y@EQBUoE%zF1eULZ-e)$K-W^ug`LrT8ks3-P}L z0(8}hjR-t`2J&H7d-6)w#N@*y{=;>f!=+Z8Hm9Z?!IinFj_EA9cS%^EnAD{eTkPRij^aVM30LB}K)W?7 zhvQmkzl##3L^Wun8tl}g^#L)yf&~4ai_t~nM@6jI6-;M@>5X6hLuG!BD=S;EU23bS zcEkrN3Zy`*=WU7sN#HF}IK+Vzv_4{MdPe8X$tg!~NlEQ0;T@Nhl+<0%-g8q@a!>u< zOAFgQ_?z{{#H8*UwkCGtcrC|p?uMk~qjX*ugoZ_TZo*%Z@lm?c(YnGhl3-W;aBSob z-6XB9+^}U!Fa6#-q|5bgt^e^?FMipS?Dy@?S=^6%ad`mWnw51Zs;%EztDVhh zBc@23|1EnL^vlTHx4;>K2+8q1X=r5UG_z;caS@A>S$e?6gU!ac=zd0$X-`3Q$-pDBdK{a7Z*Y2Yu`bwt#b=C<&`$XMmfR^yJ6BAF> zzClT8X@j+INJ3I-+K|?4>8!!rm3!$aPUeZUzn`ACm+o_%)*yJq){Lw}wcR$-s%Fsm z|0!!k?HuZS5$m339y?uM8zTRY3d7Fcb#=eh<61}$eMN$sckF87-T^e5u!mnbf+O{$ z?&Luay8+kuBLgh?l_NP5y_c9;p)1;t?RHihkEMNDj@R#}iVn}n$jCT5D=TYMR!+`^ zT93=j&b~<76Em{1CZ=a*PSEy6T3@97YFQ<5_>`>Rbov>XMa(MH-TnI7_g*#cbglmrzHbshth#{8)zY7>N6 z$dGu0>#W!mcKh0Hv2o+ZmhPy!z{qrsUCFn%6o) z)kmOdunZcgmJF6m&QYr;?8wcXymQyC+qB%fYtNpCcJJN$=-$11r)ztrmKnQu@1CBZ z|0UGhvuDqv9HArc&e^{GM#=4RNq$^XO3L{J8Kax&9v4XdV};~IJ?rJ!+qO;Kwr$&u zI{KFFJ9pl`ZO4wgxsUGoQ10&Ck8*9TXX$>Ah4jBUZFToKT4w8B+&w|tkLZYdwcMsw zT`Nt!SXVnQEi-G7?6$A-7EVg87;N+y&HfiQFv$~u5F6SZ_7*Tq7$px<+tfx#+m2A6 zj)LLdr4`mv3+55?_j zeOzK%df$}vj8o8NNo%4cbj!ZH{27IXg)bBp6}?wnT>Pn)FG@;EzSjCXt-oij<(mX{ z_S4ofEuZV?h57mU&r50vLh24-a-%T6PU{{*SoF-Lt!!nb=rc(Bm+! zfWQOfKm)zln36`Q)+uA#_G5E$a(d~meY1Dw_Ds*&))gO}n3>&?r&^ns+(zq`gy3)_ zPnW>O`l3~!7Kug(DG7x-3$boOtiP7iB;PU8@9U(>32OfvlEb&frKM|1O3RY8WN14_ z%ML9&wd59+l;rx~CBAQaVX?1w=-6!SPty5+?%kKScxUdeSM((F_2lz}+X7+s^4`3> z_l4O~9kaZsxa4o)u%WE1Y^#=Jou8(4hL$XC=MVOg+4E=sZ#CE9g9=A`cBjcrsSt6^8)!4h$=x3$GpG%-?_wV1IQ&wJHAmNqmD=x0snV(;oy?0Ml#;#pe={s|) zv-a$%%G$HLDwMr@cU6Zh?ak4i-T4KTf>t8lpR22E)z$vcRe#j-y-e(9iFT#-Zw4Zc z5kz@fiUm_Ccha)Iptz(wuc)X(Ew0?LcW)Ip$k@5FI(5g6>QKt|?bYqsO5L%&T6eA9 zu4mYzXDcWvDc9M8xoo$V&ARg!1w}=Vsa;pe@0}r8^%j6fBP-;9oRAU9jqCwZX5;|? zYY)<5a8xt+x#7Q44DDo^g!2bPFwgJrJR+IAqvbbAKCQHDf1Y3}7p^sHv$E}r4IAyv-+s4efB4bnF8jtF z|Kclq^2@I*^whGitv_4yzx>i({{DOWcKv$G$lYZ+yFwaLsH^SP6YmhN+a>v(f?%(H zD@F-~W99Zed#V$4hm~8m+E44&+c&FM+vk7%Wgq{#!ruFFxxK6#JhgPGJ@)aZ_UOVz z_TYOT*aPprZx6ono`pVKXmdaQ#Ge1+3wv+*a{G488dHF7`w9!Ibe}@qGfB&5(ywWv zhw+lYKw6H5Yaz>P6Vd!;kQ(7$2*~5sYYY2`hJ($hDCqcRe{GFa78IOtL~RYhQfpH+ zzCdhB@u`^$YLrN2vzUr2P%irH>e zGe#-08>ps`uaMnz)^!dOknI7OCZPaalU&O=JT0Ag`glctXDZsbOxJl-KrhlY{}HS0 z6cnX0;_59scGw52R@>c6KDTpUe$`HT;wkI%*j(!#nql1@c-VTd-1lH~-SgfDY+%An zoAlBv_Wmy`OonIsN=vJytW|15<-UT#N^Mti?VP;)nt!r$>?=WxnmqXKdv^Jg^X_-EV{LxXT9Kai^Vl>uuI=>h0F^wyAd9Ew|dyH{WDkrrct&hI`2J1HE zChM(VPQLRlyKu%#o4IhI{UoK^xo=;!Ogvw$TCLW-EPr!7>Me=%$G=KiL=sW+0C>zJ zL@-$gBazGwDtLrsEv=hI%&`@}augm=*NIXCbfDkE7i{AXKTX{;sE!T&EI!vG( zg9R%T8KXxI3G}Z7M(Uoz!o2dT>WqqtieI(wC4iTUBXmDi!CgP;a5s`tvDOi|9h@{u zAol1aCF;WOG+Xx?s-SS3Snhst>jx6eIsv{{wo#G2cdvcBd8 zXr?v1|6!|t_x)D)mfNlFO}AM>-Rp0%c6D#O#p>N~vo*Q(4(lS=$3FFpJ^s!2_THa= z*(X2zU?0i)K21)ukEA{yuKCBF`|EGJ^)I;4>Wvy>p}M2bx9N38jkZ>GMqXh2#qI_dj z%N7%9l&c}>64+w-`}-8DU$8Yf^M7FP>lFw#zTRT5y2fHATw*a}FS3~PMq12> zb1lS1Y|MG1eb00@4)xz6d*XzDa~*%iz4zHW-~V8_d3jZ`ft|8}A7ulN$<BZ5|qt?{!T z0pJ3-4rK!XcP59(V~!&>$7Mqw7_=@!t>sujeS%o}eB}ub3y7~}aNFgHD${rEwq5!8 zw!fwt-$%^*wbWtmwjH_GDULi}3H<4T{N$9346n3MiBjdIryAKu*FAx}J~ci4Y_dxc z#-qCaXHuCI8FOjs?%npBfIj!FckRe0pSEUmp0s+ipO9J2nrrcOXUwrW(;th%9s>7v zC;*C3XWESLFAq+$IuATz^#pqT0Rydm_a0VXI&sMB?^yj|Bdp=0Gp+Gc&sqJ)=lk(- zIu3P-6-mTgH^pMEyxL+ezRY4S94B~3TLQ>B#zI{92fLcq8#&r~Tz9=a@zKYo7_COJ zMu8f#TEciyvF4OSWz0&JPm?ePC^4rbLW+m?-p^Lwn?K- zl=udSCkNsrGqQ6Aq-ST7*7r)y%BEoGAv#npy*UVF(YROeqyD-ZF&)Ow(dY+uth0LP zYJ(JeT_ymY61aaUS;*hEcW=!%>o?e+iAlD*xTLzgx=IFElBi=orC1;qo=o9I<(gsA z-XWCNv_45?wE@1Jnl@DBf^*U`GDzd^RD$@j2<{JEe;3O0LrSV$y66+@Br9$-?`f+y z|5>XK7*D@oAvPM+)84v|%`*_M6Po3)vSwfKTL`RMV(~FYA8j#RyE+4)2%y7{T({ob zr^4zYg$Nh|pbr9h{6vcphtK5181NO`qpcZR@#l`RPM2R{cf9nnZO+Ir;aehw-=Zk& zJ@MK-DveycIVthH&0DvgA>ziP4Ulr57=r8?YU?D-U~5XoDU=PhK3!)F6UUt+)gP6! zbH^A3F%v@)>t#*k0LE)$#I~KeCn*j-4iBi36nzpciP#`+Vdhbp?Dv2Tw+mQW=G7Yi z2^&!4l!*-!1K%j=zp1C*TvA?Mx-vD*LZ2?SSxc7MU#Y29SXotBT2ZcmJpUgBI`1kC zou(q$WH0(;q@TMvDQy@9xigySio?{R^YqI_**V*8k|&-gmi}5sn=ZX6*^ysR^V;95 z?UXm(wq^^Sw+8Z;4PSo48ov6LB{X{NZ99T3_V7!9BPca|@wMnaj2qlzhMgTowntAp zaaVzJZp>Aa4O8{=b)M^oj(4*MVQGU?zj)gb*745ULihi$;O?7IP@q^5Cu^v9NsI07f$(prx;rsq^)HmN+ z(%yYmR$Z-ZrF6So^9nhk*Q8PpQ!7eN%e>S9Pf58@rh9=*dyLi-RR_CHLU>ek_JJOJ z14*p7pz6=eEW1;|R@WC_wMK#(02{ycfi?Z$6Kl5UGi&zoQfvO%S9ZwaFMS`sxhm*5 zlpy#U@L_b!H0H#UET-dO4qTIW7g@~J*BN{qFJK$I@T${8VAAddL`*0d6Lx&1%*ZL>Uv9s$1jD& zg=_K)3)V{BE94qpQ_bkkNaoWYLzU5XT&qmSagFo{L{e@yae(hbHb=lNzHUc^popo5 zv~Z9vG=XSBp#P-kVppEPA-6qwT7q@DWvY!`@Qi(;ICfWgMRiGaRk0o@L*Or$vb-)0 zogquVOTgc#Hx-VE$BjkS{1Cc}&ngEZ2NbT6)Gksp**ys=-g_AwSZ?{v)B}p+d{HB-(hn z=#J05WQ|^WJ#4e@EOaP=we2r|T8BSYTd3pT>#W70f3C6iD^^;&U;lF80TKoPJS^6o z@~MLy=$PYAuz~qyt_FY>L|iaJ2*g{sgOI&PZC%a)*op4~f{&8>rB{Rr9>|H+oan<_+1NKwzy4ybc{dX%YDXo-5b_w>s1@A(&{5eTv!S)?HpB2onsp$BDB)nJ>^J=(U z!7n;~tx9&uf;UTQvt1>-U3o=?`8uv7ucESiPjyXI=Kk`UjN)SI1?7@py3SiHqr6uv zGEzo*f+#&o@e0J7W6T8PwX?5NBD~*HYic=k2KSRbo+a3B)C0Yt3vU*rr7H#R)vvv2 z9d1=ld-b(;$PG8yAQd&{EdAWp{<#JT~w)7s5;%$8I;CMna`M{Q2E zE}K*A@U@#<0h%xU+SLUZ9g<$XE#}ZeJ^DH>eY-*Jp;#O=Ach)CtD3TpjoKD}kdIe1 z=h2&TGFKS6214{ujPUQ{9{ztQ0MJud`S6#YEw8YsS}o0&Bon3VKZ)CxYW=yqJRKf? zYT2YEO)zJx#Is{xQSm-maZyQSWm$e@RmHCT`zv!wN~^M}YpPSKYHEJS$h3EV|I=Pl zX7{Bkd=zYS{XJTKl~f-W^q0tS43gFN!iYf?t54jyJL=toDE%m)_aEg66r3NUu)n{& z&)K4%+eE$}C?H8Gl4gCoWvh))v7*V1H+xDNKj~U)ef<3cQ!OD)UP=-<@XWc{A6YgesNYCUz?w|2D5uQBwDi>?D80q~gl z(TN!r>Y2UETK34wH8ze-$u{6WY}I2L$?2Zpjyw$xAXmfZE8(Wr(q9#~SHJzncIV~Q zR0=}<%N6uVlEel{bc>cug{^yv%FC7DRPQgWuBj-isxGgruC9;-t5Pbf?AOvVTUu0V z3-e3t@fE+@124W{*FG`NLL(k{&<;ru(@bP-C$!qsc-l(|n@gKKY4L7$O*^<_J1sW{Z_+b`|a3kC*^&nVc&#=I0(-32tnJdgXn?ZcoITB^1Z;zhtQtB9^D5? zIzB&80x3YyPhGO+E zMT)gZxzODTmc4j~r(Z9dC(p)_W8UQ7+OCJq_l5*W)hO4=?z_@?A*vrKd%s&3`=qp@ zA|tn?q~dMpSmmhtuqBii33BSFv8|=`18%v^ChK9IT>P0WQ@2A(MY-*h{TEeKR*1;T z)M)gfsBC{J7Eqa2R#x*{TDsl-^>^0e{g14f>` zC+C&gNxKUz#E#Bgld~LLJpV8O?cn$6YcbusyWi#@LOK#O_x>_k)Qp^f5D_+L`_u0p zDzc69IAVRG!81GsEPw+Dte9fN{V_hEy zTW9OWe$&IUiP7+Vh!d(HLXY!($zGvmiiuqGn9PFGxI zCr-W7CaB|J#;2d!;;o6cRm3ITuGvvsQlkL?HQBkjH7O;f_Jj0wnzDX!^R{ojZ%yA5 z{32bvH3BDQukGCf=tIP6^#LCxKmqtA2>8w^R&D|eF>>+^sNal`GN3|i!vfeV5kJ6l z9}gItaXwJvJYX1N3HEUWw$ItvKD7X@;v8_F>buGcyqep?V}2!_$fK(Ccs7 z&wsD9q?~LM)V95{#?-TJZ*AUUcP#(KM#!#vs>0h|AUA*JMLR_K3z1G^-HigH--#eo zcM7hLW2ry!QtN-`J@(4C-!fg5nAJ~6$zmd?8@vyXB0>tiHN&&=}~0D}g#OCAx}4xEtDrw?VJbbqMVJ;u^cMxZ3({ zO16t%c*%ZNSx`Y$g|NyINq-}ooh5&LxxgO=fhVe#Pq9`?a8Ru0gPDl{eE699ZdB9n zqd4!3ob5ZW$;&TzUh1@Ze^q4xx!2Qj_I;mHCH(IDJwWzAH#P`#6Nq%%;tArfz0n#e z=x?cbu&vf@6b&A!_-S5|+0UibE_zId_zCDejIYJ?KuElX0V00jrQr!+ek2M&mX3L2Yd%y+z-%P1CUWH(gp6qzFs-I{mwiEipVv9B3j>( z!H4krO#qC#uE&l+A{ybJ75QN;M-a_jNJD|Xb}`PNDX)8L^;J6oH!{ z0+>D3AkJyiEj8O7E~>U03To_a0ez+bzrV2BW@vlZvhQrsuPcmBepS=x+`=%@;S7D7^s`T#3rC*rFbk*!Hub_7) zS;V|pM*fKEBokG7J6*WwUhK2Rr)Q6l%C*kXw; zm`M)uM`pHN^~q<}L4K%?9z20Sb_f8ofkz{}@lZ!=S9=9}M{Z1V9kuW2;^L&Mb7i!^ebRuAQJV5}zmv;30Atz+6>@hvSt98*%cEUTi3+lV! z&`)AJB4Bd>hbaQGbI>DUCY1?52Vm&yX00*$)#YaA=3T*d)A*bpbhcO5@?)5ZLs>!UI+ZFcb$)H?M)5W z+P-gJjruEz<;dNaD1n=Xr9;*f+o{(D?9P}u-uY=rxjx9*p#o}j3@FtYw`-&|&nhAK zOIoy#F=G^02I*#v<(d#>$XgKr4d@6Qw-|yQuk-4a5RYlnM5VB17Nar>n(x3zG@J(4 zw)KGK-PVJ$tS$x_W7ni=*dOb_`N9SGjfHY|Tq{O3dF(YP-4dm7AE1XiQ7Xa&c!1-G ziGcbotx=zq;tPcSxrBVLu8C@(CNzrP0qmVz0Is6d=)UvXzo5s{9mIpsx{M`gf8ZVh zYp?C{0tJ{YTF1&?75KRIkEE6h!~mD;Sy7743Kgz<=2=^@c{8ybLvi*>0sdC8_7ySp z6cumImX-IX{wkb1dXla>&7ov)o8{vf+^7)%dJVwixZbk(A!v;<_vxZ}hQ@4DeZJy{ zv~;^*;m6img`2tw3g#oe$^D$b#5VB3_(2-(T^aFpET(m9*}V$otzrfZaY77qpXNuK zES(SH8N>@jc-J7B!{gS5A2>poeM^e4gyNqFB+>v%HatUc6>O9coabd97R5OTZ>#`* zLFc6^(3b18>85`tZd1s;w#*FCa}>P8vv3vE>;HsYcSgl(Lmt4*-QC9J$)h6#BHJzl zJtZtjRQsIZ<;jTNP{n21{#DPzKG>jZdP-_>>aKQ(ZRE;_w0Oy26u@#7V2`zg1n5}ZR)b`?P!ra zNn-#QYy2N{>v=M^-BE#b*RB@Rwykf6_@Ox-*To^tcbUHOZP^B4pQphBaghEB!mVwL7~Q~a7oxcK@yggb!;bh8#kL{e~V#o*Juleisf z3Eu&{N5dWTaA>7J zc^}FmIBtyCeK(;L-JXi0$(^8eR|82R2=}63tJMM6SS3E4>k*pav9VmF4758i@+g#GHASOCH<0rl2~Eih?YzjUwUIQBQ1!e={-dSVczuF9C3Qt<64? z$T{_W7WWmm2*r~3#2zhFc3J_ zi$fvK2uZ&}dIHW1`tiG|75BgUo`-MhbKfuSO%w;eBQBo88xX>-7nL}Sm$0ohrT6SV zvV8~~J#9fXMrFIcI^Z;U@k`~!!#P@cd9FtKS1n6UwF^J{+}cU|8a(r&!vpp5&|$Kc z_jP13YL&kUk`Y1><2jp2M~K?64_rU2jj<7}1x~p(x;So-#k4U<(8rJoqQ^!Q z-uqUiUC8xTIX)smkcQjQ9IlJg&J<^_lR?A#IP339s_i!+PLYE^fCy=m_D=_IMjW}R zp?A3MpcYD68UpNC*J!oT%QA6MzIH3nqlD1nrUB3>0EeIuQGsY5jh!TL2|CXxt?~?o z6GI@}grT!7rBI`0&+*|Jd({^rh*Jgehw3A_RS*x`s+U|;TkA}*m4PvB=u8)sJ}x~{ zeQm!bUDa3_yr*PYS!0x|Gj{w_kwRLDx=1%^2n8JhL1zdp#yXrRNw$Qk*R~HvSh!RC zik6ll5xgfNY6SHRkIPlx05N0<(jbUkVoQW+L0A^lN${UgHg<`IVB>`FF{3nkO)&vB z1~qd{ScmAG(k)u@jC^5$YPJyPUy;n2e;fDLxUUS&*FiDVhz`*BA)Lem5Knq&PAoC?etsamm(b0IE;JARZ5UASaE@0r1$7qwElI z_j#e|{@RPIkN)daIqDA-oZliE9-s;&UsB0`As$*%K7d zjgX^e9QiBa?zQ6X{9N^lEZUl6W4`|0Ixk)3y&#~4GxUlF_6utVYoYAU8pQRW&Q(Mx zK~OF}bGufKLt^ZR2pxFLQCEXuZvtXaN9}P|B;@=J;sggAkKGceVec_RPYbiRJO{@i zG`s=~%&~X?cv3!EL;Aqj+!qIHd^0!`vrX3$92@rB82WDM2I)F%M5`PUm`lzX-FDa& zlmx(H&~Dl>wAah#b%Ec1moB=Y13c*t$k+84055?eNpqdA1h@~&X%er}?cwTEo$|tq zwmLP%)b&Ah##?l6DIC91snwZ6HEiNc6Co3Cy z8m=`x7NS~>pCHjs~6C{ zKi8#Kgk3xI<0B{GW=2=^zU>a1ukj{&U9qODys}W-yhbtB3#x!#%}6zQ*xsVzsQW!# z5ASb(dSD$M{M1~w+E$=-N=#4pA*@;3wvQA)PgSqln-P26r|7NfPrZNlz~BE^-^E{8 z6E%qN7r}dDsgMv=(P$zpG*^Ek7>_>)qZMn=Vw#Q&s7F9{fuH1hL`}d$Pzi|GERbQh zL{``MWJ1CX1nq_mq@YFGT$u@YiBZ2a7HwN!sBqfhdWXd1QW2vU;~`-$lwFMKCq!V>=vp6girUEFbjB)21F&GI zGPP5k&|Rf9%A@D1JbJxSZwA6MTzQ*%KFgE$<=K1+|Aa*Ig>gOgcG(=cLsd+`4N4f4rm6~?y%nz zu8#o^?$cXO7z)i%FOUjALj;cATAjxli-(R-0G`^FKnma~mXsE2huPiQ73xIGPQWjg zucwyvoN}|x`Q#JR3-89u9OCp%GR(Jx*sZ+c!22wM+efxg2bI+~>&^Q`kvGCU79)@5 z2M*BEF(ot09WyjRmx%cNPF<9DQP!v{Y_DFGs#>GbS98{^vok*a%-U&GIq>ta*e215 z>pmQ>2le1n4FmRo%Ml(75fm{3i^PqhLcj`yMBczm>;xZ&=(Xt2Ux3WfTp?g~L`P2% zcOvpbbd(^t8j8b}fu9(POch{Bp9!Y{o_~}`Q840j?t>y=_57n+j%VR%X$jooL9^m7 zhey^)t4K86yAgq+2ID8XGC}+V6Tvg10zQ1Y1B$>?N5k=m0{GQYus{JOs{*IdGfl6U zWM^nt(0(OE^=n4GsEGMbib(8%0yZjc7bdql6;OcXF3@ zJMf}pY#jv&${9g47DQrL7BLp&PKHBLO|A)K*djKGBJexsa6fnhv2)#^qtLUImMwiB z9UgE5$_cM<4l02~LhAgZV1cveeD*`u+@EBdf2aZbP&t$r7wzz4r2#p;pT1?Y+A&|47aU!f#3eL6IE4f@#HhE1munYLPI_KQUeeQHX3+#1ON!w zVnFg(J2Z)q0hdY&ygft)3itpY!l5^X0#JoO4Ip!l!kY2bWbNJ=itkmJ&hgG21Q9VP zn2%>W6^HPkV5g)3I{-UYkNU9<6L3xbhB;^vFkz!W6Qs)y3ocF}nmYi-bom2K2%%DKkc{hs!Xei!^hno>7w5OT{azcd*8#uydll0TRLRVlJ!XYodYP~C z=Okf#rV{9W3{GTBdf?>g{A?e))ww=u?jGLP%EaLWimlH16wlQ=s^v7j;5b%JCzF%z(ZC zO2vfNW93-s_oGva(kAP9g8OV!B ze*#o~81bzexJZL5K>&edP(;qa=s6e())Q5>cyOAXGUo}K_vJE6R}YnjFH&Mjllgrn zKm3qJu#FR5r!rjq-`tKlGciDTvcchjrBh>-WqW^#*3F0o7~AHBSiQ&YL89UXU3!A7 z{cgejs)kkkCRe{*uoGOiZ!^E;x!RW8cizkr<+y}jWuPmLe z?w6>Dii<~p6v3HT{qW>%JN)I-V4(UmM_#jl2zIx4;HUPcwG(~t7P4l_^DsX$Ek#d- zi361B4OggtiEi|OLdbV?<5jZyU4p+NU3IvZG_d`=j~CmaL~?TU(4Z5&V54CH^kiz- zw|6o@$)i+-I{gfX!NsOP7;D6qfX35U(X^KuWvN_~zJDmwA?$cqn9hN|kIF>+9c%-; z_7QmFG6^UUxL3ir=diQG*N{5^5Cl%{2EX7!PzlCGpr$ARY=Aq0A>97ewt(^j*G}N> z`JI@Dw(`7$0jRF0IT1DRa)y4xvY~bq3X5k9#$F{Hbp3E|x?vfK+iU4EyG8GJEK?C> zS4Fw%bLG6BMEBTdM05(kE)r7@k;(Rv3G?n*G^7s(E&D`2?&FUS;=6$GBk!^J#FIWz zNOsO)(xIb8B)t^l4OCr+Nj7_*pbS8=fF~dc{niRxch2KF}M-ezjcLP*h1WO_rDF&i877e|3d`|qzh0{1!~SZ2 z`-9i~^)DNjt8UE&0{wawX3r7uCsDtl1Du&9MDzYK>hkn7e@nrq^>W~u2iAkTfb!7| z=}ObU(=#=VLWQof`91=FkS=|mGQ7$1EVI^IP zCMqn(S7SGTMfgqN?%r7R?7e{#qR;|2Py;id1f3)SK!P0_#2UX8JrbznMLm#)WI3O7 zIucAr)yJD;l3;+g0LFwF!zz*sMaDqzew?rl=NZ^wJ9u~rR zpb+l;rEpj~Y~Tt<0aFSQupt2;j*!Tfk^xqr%J(V8V+Z^j`JjZmNpCT1 zQvOFxFOt{y6Y_&~pHV2721?Hr^33j*sAuuqe(jE2dmQBTepSb}6}yPVV04t0wy;LY z-K@crfEzp=6Jd?f1$eXOZ+>SzN;Dw6kUs+ih{FhlVOpq!;M_6A$z!;%yz=-2lwe3O z{>FTs7irK#SrHoJu;uUC;#3!%Wct&?2!U{6Oo1)Q(6DA3z{L3j;re^AAw3 zZR+?M`~lhlpYxBhG3V3z*dD#C@v+C+N#n-Z{I}ln!A$CRA(~4^;v(BwLf}df@Ngl* ztkvCw`Vm^%QHdp6C!!-!)1~95gSMM_2l!pPqVAoEpdzoTHe(1J(H$cxbUL$B^;d>4 zRPQ@oC{rhwds1#?nK(X4Zbma7sG7HPm(5Wz=L`YPD;RO7Nu&ZcL^}rh00QwH4$h$g zQUng%gye!0wIGJWgb)b9KG77;j~obRiQo}3`5t`ez2s1X;B`(1Zel$E1=t|W$MFYF zpLmdM)QSCC0~F5&$OPZyc9=X~iu+>HfnpF>qH?4a978I=@0{z=UFX_x*EVuoIgu_Z zMeh&)s1CRU^dxnsm%KY_vTO5evy zyKa$vFOarh9zTPuplbng6b&O9YBlVV^V_>Lu{9$tnu;3+o_s7>}9>Yskul@Hq8_?sgm;N>I9#mK_8u?-O;JY1E8S+hP=s+ePUx>vJ1l+p$sid-#%V5pWG&(pO#&J zqa|HLt{P2A^}^-LZG>L1YklrWYapAhf7+Qoqe{aO=cos2+(bLPfo4-YQSO#t6!Jry zxG`)M0YR9!L4*OkBt1_9R3HRo*8D9?39+NSs{+5E z7M#TqQVE456oxuvUz`Mv}P?-?H+F@Lm z>vJ3Iy53e_l`5Km=oq}VZNY~w45b}eUY;B+g15_uBfE= zXF2Tcr5YH!HZjqrz4Vfud+V)s>ZEII;4L@XKuu6OP}8TJdjEqq==+~M-8ox~%zH>) zU6k_%Jsl1zafeIamTWc*p13?zoNnTS7hjudVtgKU5l zd)D_qT3UHUjVfbIaJWth>+3jI8OUhO;c=?+n_d_X-Cn_qy*O9F6rGwa50)_Uq)7T@o92^j=|Cxo-Bhr-h}f!9Le15$$k zrz2M%;~0Y^eXF&fFK%^9L%sp;q7_^l+*lJ^Q6Cd-Uc^wG^W zVf0Gq3=x}-bm!brdZcF!y1t!Z!(0oT?SuFU`-V5pmyKVhD>FUDT|cj|ANJ;1&aT`V z&CIn&R`83GpeLznVUJo5mJ`Lkm-}$cpvd~Q#{Ndka8>G7!bk_ zf(*!EHEgryZ~f*h8p3xr^}_>a3aG(p3dEsu#O@H$9jySIJd0S)&A6FoYn+8C^PrrK zS`cAjp8UoGiD)5coG4ceyU+(7u?}?~(L}p5AGhXnpR!|Kd&?$n*lP2#w%N~V>9%w4 zzG}hAKSqLnrgY!ZW8 z9j6&l>go0K#&_OpEoRTPRxC5;*r77UW1o4!hG=@S>os!zoqskMimka=s^ylLlqjR9 zq-eRs^|Z!uU#FQAhYQJmOn;;`uB{CLD(~I|B`G1u$f8=46+aHk9!$=VD!#as~aXik45?b`w z+6DrO2wCY!VBxHtg`4^v0+!`YY_ry#iJU1dK#sUM&w%07CQU@?Qk~DlL4*Q>6yq0?vD`Om#z2|R5;Gh#F0A`zB`At@_z;fIdK8!>_<&R3EOC>dIG6u9 zls!UL9Zgt-cNoeD*%JPs8-nprN|&gpa(*^0dTE?jOe5v+L)^fXU%?n;H zD4F5wDeFbVyzf`JH7Ca&eEAhST8T{EqmBy07bFa_0qXg{h?5~ug#}6NUGUflAV{PM z5L{R9b&y5DXbv=B!gk_M2Noto_++ST2mC6w#43HDjx383IMg0J2AH{91X3phtd&wW z#SNaql}Fc=pQrz{*Lw@?CQS$S!H>&rg=UHiG1G6GHOVQqS#92?kWigLm4c9Yt9B47 zD#2SKM>S9NqniZd`3hh8!dWj(KI{|L1&K(|F$7&6WRKoa@I(~EetdQ*YL6;5VUH0V z@XQmcMnAOQKO!bTj}wr5c8$zrux5`Qt~qwk*L16wFe|AN;D=v`JHaLECYBC3cua8Yy!6R|>Cbk|Z(atDRYVh0kLTUTIvieDTut|4%pI-9x+ zqbMBwii_h6t`Iqrkp*0xDm~>tm^;J)-5qj{3LIkqCuPXmQ0m~=Vdq$r3&!|d@r%~} zW9lAf{3S*F3blK`d`YRMn$mw|%sj;RN49EV{?WIk;0gL_&NUjJIZ{=jQ$(h{^d-mW z*I$^PAjm(o_8G_^)Y`V_I3D=8+|m3V;28Kw2HgvbgFnls>L6cg5uVIf*-Z=cm!B*Q zPv4r9G%6`A^2#W5Cn5JkT5v*r~%T5Iycyg6Jm_o9H6Mzw{6QAh)2@ zh|NFI1lcNy;0M9BP@%+p+1*{TExw#J94=Gn!T0oz#yki^;62hmHzBL>oZ}$- z^U}TJh7E=@k8b}4572e>=vOT9uoxm^^aAH7Lp&Bn6@UYj`7lZOXn}X7GNJng+#6zw zRVo$aZQH%OdVxlX_PTbm)jMCN0St=lsE3diQrHQ`&0z|Z1)_Z}n9ikFgw07{dDp5z+lMTVO7je zW#ZU6b*+VPyX2~?jKYWT;vKWSYAKVu|DtH~3oQ$^yebLImCD|y5aAm6n+tfyK{dG( zc(sha?*K3Q#w5w6BnjGA|37@`h4=YUzU&;tq7hKNg2RabPFYsl%?@&Y@~?EdZA?n+ z!%X{|6O;I4*Ld0fR6XR&Qm&O+_GRYgRzIdM5_G@+A)j>uOFF%5h0-FuocW2i5~ojxM*N6;|XzCY+x3V--BpWY7u^wj{+*=X1NY8B;bO36!^GKu@YSVw#qzlEXDp z*>U0=KJa*|)VZHjyqiGjjH+W)0Z4&UlkDpfpI|oN;o*n_^%OuQXn*W~2r;lJkOpyV zN;mLNnaQ^JOc~uJ+s9m zD~O5yMi`4O1gE@+sGNx+MCtF=c}=noU0x(tNH55gJ%c_0li(Lv6(e;St5V{L9f1mF zA#r0im=Zw<840~FBz*om)W=QXU74d7@`V*<<{Yejv6HT~7FSHNi8H3#s(=1r7JcTN zOu>vK>3QliVxIA9v|J>iFtTu{x{gnhuzG9hN_Uk6>0hxz;}I$d2^p`N1ra1DIYQp4 zu^@^N`{It%|40@NvLk#S@Gw|~58mp|T?9=Jea&EijQH#vjYyR)J+G%-CEY4W&d#oR z@D@77p)&xzK z^|yutDS*)A7iC)o%OZ?MhB8@GzK;=^jG*Er!SvU{9OOr9>6EViUi6wE0!RX8laSqL z2ojLILjoAFj?2?*YWz@D*d?_Kc<$dZ1w2=~zA5`WT=7d+5o#XuToL&8O1@X z=yFQZK!Um1JM31Cb!hw5_vV#c$vuRcHg&HmE1$b@9M0 zGKKTyQ-{hFj#urcJ0&Ke(2;kY@EeGS-f@|QeMUjyU27Yu>!MHEh_> z>i6m6(OCTG^DXxDGs6rcL30~M#UbbMVauQ+_u*2Do4smD-sR3T>G?GDJlwwR@{@d4Yo4tv4<1tjdk^@4lkfbhFW z;ULUMF;Ku~-X8U~_0!Eq>LDJG#eJbFY_GG>gO zJbAJv&^pE1pP@#nR>CWhUPHm+C80ogVvCWgZKK6VFrsbF3wQyJ#@E6@I>yOAJ|KTT z%Y`p#cXi0PvO^|VxE|Z$Fve0e?bgkX89u@WsM~nR^jUV=9e3E^3oo>RLxaQps+^oa`B4p-%_Uq>fX3qq8~!m%}DS6eCRb2x}u&EIZ=@l zd^9pb;IUpLciH=&4!~h>3dT@dvvK9*8B}dRn$O0G=B`te{j$D`vRcC$a!V>J%6QQ? zyRgXCX?EtHcki`tRL=iYLrGpQDz(eErdkJ$6y;M)QPCn6*I{im4vR3X!w@l56~@$% zk>IjP&RIjuZ2LzC>eD+9LEs}D)PUY=U;79LM1)gE^`fIEU2QkboMG=N1NuUr>HPA` zFKwwl=lS7>AKL35e{3&m-@7|@*$>-z!szwx>qb=4%zF)VpHQ%f8J zT?+b(1fqimywJT%;y@YFy9PDdq2Aoc3%ELlk|gr=`j&d1f=)Y*0Tp_p7~F%4q#HR} zV!?!9Bawc+vq#$TijQCWfyK%^1DeSr{ z{orG2<23)k-J+Oh^~L7JdXnEnHJc^(Or@B6s;a8gfJ#0gY>$2VnH_hn@>^v9AylxL z>$hlvsv~knZr;@ceGp*c@(5?x4w5alWA}^HE`^xKNR3@d>y)+}p z5K-9$lJ@nw`y(oXJtw>uN$NjJ>KpasyF~8gS(@r^rar3MRr4hC?N1L7kfkI*ih~|H z5qIeluC-FA?|4`^Rtbvs#4m(;NR>5`B|Z;u02AUHUBkQ9j^qe5pF6n!MWd0kN?j+a z-}xO)B(5oDnV+6nO1R%pvhOM+^@!5Tsdq)w!C=rbdg?umbv^n+W05Y> zM!J$($W1@YG_rtjJVJrMe?zn!J)J)fCnIL4T@cLI)r7d+CtqW8HP3lYQL$C%LoKp5 zzVEX}@>;5vy&(-*pr@XtArcQM)tIVoJU-2Kfm$?FLnr!dOiDUR38;^Omjpb#6C?O= zXqW+M9njY&5#s?_9?Gvl(4p;mgySG09~k};vY0_g9qVDdM%^c+X7KsE%aq*Qt_W|w z0?%)x0h#-&s><|rXS;3j66>U4lf1BnuHv5<6cr8|6hON$y^k-1Bx7BS3dr2}<{fv@>Owe89Aq=Dv*%UxH)NE3tqF$^pkl!w4^exge2fI8E$; zG_^#npHQ0#`Cx5AxM)VA)Lq(nmX@)q#oeeuYjdQPU(4#VH1xgvFZtd}HP1^s^-0EQ zSQ;5IU2$GbkbzCFSM5Ge2dly)EiYw`$kE4k5m^X5a4@HXgI-;&KgHt=Ajm{&K zK@=c1JLgVwgzMyiDGE?Mz!(!!S|tNZlSS8qv59jhYwh)t>wDaShAKYN~- z*o7DG)+VYKG*Yyu=*~16l1elbb8Yn6)GNr&|Lnl5J1FA6-_sxfOWD3NnpzM6>j9*Q zX`=)n-(8Vzop^HHomv6@=tX!t&8s5&0n#c#r-lwq3KN zR0-iOlt9tKI_l@@DDT?r=zdIpQQ0LXfF1cR>q$4ggJPs3e)=r7hCbTMS!Mw%jf_pV8IJe;1Iu}e~ zfX4~a2F3wNa08Vdo+Hhlv}0%PY$5uMo-l_m2Yr~5W`jTY$QmOwCHG!9!#ki=XjoKu z+ELGC1;YjXc*qVPqY|5&aZK2oOMbBjK=9Z zBzxew=QV{#1@hy=d22Na;AMR+ZHiiOzGOE95*N`OOERNYd+5%<6A}6UU8i)3xd2~_ zDxC+DA6d;oLP!cNkQ*l1O;Wk;Ng=v|(W84b8vK<_TkIr#)}oPy&Uhu4 zumss5Ey>TVv_Vw$_yvVS6@y@fza_H-gb_ZHqmW8)9gaqUxu*7obUv`lLByT9C{$2Pa80CN%l$!}Kyo?lfric>Vh#Z*^R>i>n>baQEs^ALP?dfMkk{6xSCXkf(EJ#|7ufEns z&75t2s#7(PlpOs_vbf3O8D4gYjOVUaVp; z8f66!>JdbQp}e(?gTJDzgyu=I449##jJGf;BDfyuOz($m<@ZuHfirG&D>^n$GIYRTtJ$s;`Hf$YMaepm;hUu%;b!r{a7h{t6_pc*Bkh{tpp;r}GB_I&+~ zph1b3 z2Yj9f6;+>x(n}~_FX5d(I%rS=UG?D6KL-TjI@BRZgwU`^mE5P#mNj*zBSER_U?q{4 z$&%(tV}8?cmVH@8#ntmRCtAM`Ke48=ChsK+I={eL(m-2yxsrd(m= zSD3m{J{K9$;TcSB?6dA+=-~_!fy+=MZwE_EwhT9|xd20JA_c0o5@4NjLBjr~eYp5&sqrR7LHGP>Ertk~&jlO_ZyjC0GBW z>gBtraJ`j$#7p5766PT1Jhv#Otz+fu5U`?mHo0QA|s!l+PT{zlnOtfED zp(4cGgTYzBnwp*~BE}f7lg??Xr|6O}%kKSTv88Cr9vM`D^oLKOF^R|}O!Y#D3FHKV zl8zHHDuI-c0%0Xm^7^scldBINJ{(XoZJ7@}>~ZCYFp+zy=^TG}K&T84&>$)Q z2iN$}a{>W4C~*Bcp^k>Hch;u~?@LOv)dfYG-c`9}rM{qBQnC#EB##ReRu4$jr&A&W z$b1S4vM(aLgDNivOXyx8nvvpBoaw8?SzjO9euWCAj|+?+B$yq1%<`)h zD{Qoi7A?*i=AC=q&_E!>bqGd=#ONWqRw%`}u0%}7rGVZ*P3&Wv^HB`WXPe(Hy&{~k zFsLC=m|(4Y#P#lLt<=4F;Y~N$cN%>xj~RTN=T}kVd?GQtwg{o0h~}Uf=_oZz4pAqC zOi&ot9~V<=cELaJ5Mq)z8&Ibr4VHM@!&|s2iE6OF4w;+#kWA{+!s4O~vGV?Zwr;gs z=FPJs1Yw<1!cFvw#v$HNas{$_8cN3>t{hg-Z~P{Q6om!J#!v64U=FvRPY)apZI=AiZWgdGgyAbKT{?}X#fA^s}2ar z`RAD0zKY})CMLWl@r8-CoUB0#qs92Qt9bO5B(zaL6=m(*Su^(?4ePx4VykzOLK)gi zOHhJHYU*pe57rd%LM|i8j6xGu$H#m42PrYI-FraX&7*}})$^|Qe*Id?!@cTBK7B`z zHinmO(7lEWb z$4c%eNH!y6WY?-6=o#IcZ*A}0r4NL^^Tn6`Vr3(>CALq$uxva%Qk^2!lTT@b_tM9^ zY@|ET3g5Arfk5JUh0zPwn3jLBIZX@E%I1!ZH#KF9T`%Dtyicya(?;3$_Xt$){lp)ib&W_f& z&Y=`(hWJ^k)GrZ9o| z52^b7qvv{6&wi6~=yQ2qLKH$!YI6`F?UI&6L$-h@ycg4z!DVqca>83nS>uPfyp4?Qrab49QbKj>0A3hR};3Sc}AYjIeDYx;|Z_@jw3dTT_RRcUnLdsv*x) zuy!RrS7{0#xAxCtL3wIH^rgFl;*x)fVkn}}5-qd%=d@JRl0WGn5qH@bo{MUzRB)nr zVwzNPsa}1}QVz6#<)+Pcqk5z|sYuH!*ipm4pU^1c_fZ#w*AfMaL9YUhr?kMdkDn`* zMl?)I;8dX?#Cvf$A0LF#pkfFo;;Z9N9%zRS8*W!W^pO3rZk9d69exur zJTq!fMGBp1%m4DTwA~frfKa0RSvwLzrGlh67*inC>7o56>$>Ob6^}dQYv0K)%G-*s z&5+72(1-4i7ib>I2L1#WiF&Aw-nZ(bjT%rjBIIBcD?{grP;n-1Dc4PL5jx#=aDhaE zlG>?M{Xv7R@A!*s{yT4*96ggnQ#$bZLYXx}L5I&5DnNaHZ~}(fDbBysKkxi|8}fAV zv?1sS>?O!@B3gDB_Tr8;GlTCjU8hL!S-qe4r=06<=Cb_i&p&OC;3Tm#Rx;y7cjj zyuy9iD!=XDoS9{hzW=`Uyy<4EKT=}>^;(frgqoZ{5g^v{e{CcnkNPed1@-*l@#^@A zVG&?c5`~v`+qiY05E4v1y_($Z>TB!~y?~XNndyV^HL4{|PeJtgpz`xEqKZ?cwS4OS zp!tFoZA2?2QL8x6{Pxm>SnX$Vwm@M5t5~Z#0ty8YODVc(d!Vf10$IhKvWhoz_iocG z)@Av7r3_0}t+p}qp0c*r=#68>*3&8)uR+-UQRO(K;4!82!S}e1#Jg~y210kQZ0pPp zPB2^ozLf~#FT2v(s4ji}jG4AX8H)6euF8D*j@1gXUXp&^pr(${Bc31;9ILelR{w9l zgQmMA-oYLQBZYt)0$m79Vzr1@66h$tIY!A`f8A=h+}AZSiMe_C`!sf>Fb7@Os_M+V zZ@#m^v*uXyn{Kr@wUsuLmijs(12Ws_er>x>NLoHdD9{Zo2*F4w2Zle6)_cGct%a_~ zKtw*F%SX~RK8SHcd}QxSX8V?&GK2JBExnU7GyT0nnQ|+MhEn@~lUnc8b~!jNc)%@z z#ILs1(OPtnuIWPbGxiYooJwg(263012d^uwQJsFTz71BnTH|~lT=Kc~d33rpx_N3i zFQ?4duy(Vf+Y%8?_kES7>;&sCMVqEKW!Gk88h2xemsoM7 zl=3A-RX55toUNvxD9EC-C=0Uitb37RCbSNv_x2uWe!IXR0#(p4(a1{b;KL$N1!hoFEUu!VJW4`+l1N?RECa$+SWH z5KEvOfyua4=r{h3n{uny)4OW>`h_3akE*HX>FR2A0aXm$^&=%0o`lMo4-y0R7CzBQ zCbfM~#8A5&=>5y@qW><3fk-4!en~7EO$%!uPO6r7OAfyPe2!wWYt`fUgp`iqG#SFa zbX#7YeWDKmPX2%DI{R21%P@dD5k@$1eD%Q!wUW=Wd~B#3+i8s{)S6Xe#aN4q+N|-) zR!U=`WrPahIELvo%M#Wf@>dS&FH??uY;7WmHg~_@b>8RkI@Z~q^WN|KJkNc7-q(HI z_kG>hy?#>~xct*p!L((Ix$|PDQMR=vK8wF8aldCg2rWRlgAXsyNVlRH?YZCo{l#g@ z@)fCuj6SE&|7n8FOVDqMf?B5f7BMJ(iK(qh8fUbBr?-&M4Ou5NZP0gJ>WzpWCh^s& zI$t2pV)G%of|hfKUK8^a4kw18Vq;LX891(=&>`*znR*y-`4s1B?BTGh`Fp-gqt~rZ zJ(es>_0V~Qr|-;fLcQR#0i ze4CAoWOJ*VM07*@Ygz1b=zH{zR)dQXuJsB<#jN8ri_bY+V#dyI(nu7c*NT;?1AJ)B zArmd%Tb$fLA`f(pn$DdU=W;in`DSYOP9b%hzc3A6x;#y;*`8Lja$JXXGn*w%%F{9G zg@v(Mg*Q0M`Al$e_jF%y?1`dBHUqv#tf|Ann}i+#0oREhlI@W2N#*^6?GYT$Apl zC3Ic$WokpzMVk+or1oqa@4o1x)bHaJsq%{rY5K0(wBq2Qv=@7JlJ$ICJY;;;Nq)Dm z?t{szw6gULXQz&!H7bPrxVqUgb%9|>!6c7y}R51^^LIcYa zrztNM;!RBz77@0?fjdA#Wj+?BD;-OROq(G*-;}5D!eA@UvY_^>T(l2+H=9jFZJQUT zQDQ@0X3K=&GDfjI4+8@Y`Xt))8!Qzr2D^=5=~VSkP;E-Ovs~w)1abfKH_LRFFJ3YB z`wHX5tCzTEXLODM$_bu7jA7nK6RE~ITZ$;>;4MvJa9_n5!BAleTSr2>Do#?VM5I!j zm6SBtJcH6$vkD@E=J>61sS;C;AwO^Dl$xo=IB{z4g@x$D=OCBRQ7q3BevwZ5bytdP z%ygqQQVjM#s)&64T;Sia&X%Crn=$=c+<2GUg7Qu5IEJgbAu`UTZEN}LM7A{UY)KpD&G_h3}#F;8}b z>CbabQvj-(?Fz(KBHT5e2(z{mrO)_vrFUEeW#-{+7&D#LJ_$=V*2C5j$q*G22oHiq z4zs9s3Wt)AT>EPTSZCyVBN+)-Y+UAX%Az1SP z=Llsm*Kh)3P2FV@+=+PqFDL{?#8U}5o=Vy46= z5#Gg4$Wou&ayvt^{hhi#A8E z0%QywQ9p-Dpn8fs_e22>jOwUvX@-k;hQ^bg_kdPg1D`!@)6{a85Y#y#3Rw)qgx_z7 zY0XKA34!XIl!{VP(7~8ZqvBluD7UrG5eV2tLIV)$W?-m@#QG@mV%h#7y-~jRE2x|m zmclXY#XZ(4&=5Pf53gdilo=i#OQOG1oYwo1YRFfMCv)6srtM--pvXVS1j zD>iUM3kw1|it_AE{T#deW1OUDK#7qD1s?9v!BT{naL1O-TX*}0b5PbmxxyNaopup0 ze}kr`QvA6agh686s4$_qg4Xzj((d zK&7K^_@=W&GC^jDs=6+!r5r9|a!ar@e5P%p>R&@VYI&w98LJ!Ptov#0LQxfkDDGfY zF0;g>z|HpMmWq))<$)V^KnK=0ouacQxsc(Qu{6UmXK7#;egAfgfx8X%mR1ITDg}`= z1)Zc?oz-f7sIryF8q6kAw-uCQl;St mySize_y) + if(mySize_x/mySize_y > aspect_ratio) { - redpos = pos; - bluepos = pos + eY * 0.5 * mySize_y; - drawpic_aspect_skin(redpos, "player_red.tga", 0.5 * mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(redpos + eX * 0.5 * mySize_x, ftos(redalive), 0.5 * mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawpic_aspect_skin(bluepos, "player_blue.tga", 0.5 * mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(bluepos + eX * 0.5 * mySize_x, ftos(bluealive), 0.5 * mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + i = aspect_ratio * mySize_y; + myPos_x = myPos_x + (mySize_x - i) / 2; + mySize_x = i; } else { - redpos = pos; - bluepos = pos + eY * 0.5 * mySize_y; - drawpic_aspect_skin(redpos, "player_red.tga", eX * mySize_x + eY * 0.3 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(redpos + eY * 0.3 * mySize_y, ftos(redalive), eX * mySize_x + eY * 0.2 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawpic_aspect_skin(bluepos, "player_blue.tga", eX * mySize_x + eY * 0.3 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); - drawstring_aspect(bluepos + eY * 0.3 * mySize_y, ftos(bluealive), eX * mySize_x + eY * 0.2 * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + i = 1/aspect_ratio * mySize_x; + myPos_y = myPos_y + (mySize_y - i) / 2; + mySize_y = i; + } + + if(layout) + { + drawpic_aspect_skin(myPos, pic, eX * 0.7 * mySize_x + eY * mySize_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL); + drawstring_aspect(myPos + eX * 0.7 * mySize_x, ftos(stat), eX * 0.3 * mySize_x + eY * mySize_y, color, panel_fg_alpha, DRAWFLAG_NORMAL); + } + else + drawstring_aspect(myPos, ftos(stat), mySize, color, panel_fg_alpha, DRAWFLAG_NORMAL); +} + +// Clan Arena and Freeze Tag HUD modicons +void HUD_Mod_CA(vector myPos, vector mySize) +{ + mod_active = 1; // required in each mod function that always shows something + entity tm; + float teams_count; + for(tm = teams.sort_next; tm; tm = tm.sort_next) + if(tm.team != COLOR_SPECTATOR) + ++teams_count; + + float layout; + if(gametype == MAPINFO_TYPE_CA) + layout = autocvar_hud_panel_modicons_ca_layout; + else //if(gametype == MAPINFO_TYPE_FREEZETAG) + layout = autocvar_hud_panel_modicons_freezetag_layout; + float rows, columns, aspect_ratio; + rows = mySize_y/mySize_x; + aspect_ratio = (layout) ? 2 : 1; + rows = bound(1, floor((sqrt((4 * aspect_ratio * teams_count + rows) * rows) + rows + 0.5) / 2), teams_count); + columns = ceil(teams_count/rows); + + int i; + float row, column; + for(i=0; i= rows) + { + row = 0; + ++column; + } } } diff --git a/qcsrc/client/hud_config.qc b/qcsrc/client/hud_config.qc index 75c1d2c0e4..23e9f8e4b1 100644 --- a/qcsrc/client/hud_config.qc +++ b/qcsrc/client/hud_config.qc @@ -135,7 +135,9 @@ void HUD_Panel_ExportCfg(string cfgname) HUD_Write_PanelCvar_q("_alreadyvoted_alpha"); break; case HUD_PANEL_MODICONS: + HUD_Write_PanelCvar_q("_ca_layout"); HUD_Write_PanelCvar_q("_dom_layout"); + HUD_Write_PanelCvar_q("_freezetag_layout"); break; case HUD_PANEL_PRESSEDKEYS: HUD_Write_PanelCvar_q("_attack"); diff --git a/qcsrc/server/arena.qc b/qcsrc/server/arena.qc index 14caab85b8..4f986d1384 100644 --- a/qcsrc/server/arena.qc +++ b/qcsrc/server/arena.qc @@ -19,6 +19,8 @@ float redalive, bluealive, yellowalive, pinkalive; .float redalive_stat, bluealive_stat, yellowalive_stat, pinkalive_stat; float red_players, blue_players, yellow_players, pink_players; float total_players; +#define CA_TEAMS() ((red_players > 0) + (blue_players > 0) + (yellow_players > 0) + (pink_players > 0)) +#define CA_TEAMS_OK() (CA_TEAMS() == ca_teams) /** * Resets the state of all clients, items, flags, runes, keys, weapons, waypoints, ... of the map. @@ -224,7 +226,7 @@ void Arena_Warmup() allowed_to_spawn = 1; else if (warmup == 0) //first warmup or warmup cleared { - if (red_players && blue_players) + if(CA_TEAMS_OK()) reset_map(TRUE); else if(f != roundStartTime_prev) { @@ -251,7 +253,7 @@ void Arena_Warmup() if(f != roundStartTime_prev) { roundStartTime_prev = f; - if(g_ca && !(red_players && blue_players)) { + if(g_ca && !CA_TEAMS_OK()) { warmup = 0; return; } @@ -281,7 +283,7 @@ void Arena_Warmup() { roundStartTime_prev = f; if(g_ca) { - if(red_players && blue_players) + if(CA_TEAMS_OK()) allowed_to_spawn = 0; else { @@ -343,13 +345,44 @@ void count_alive_players() redalive += 1; else if (self.team == COLOR_TEAM2 && self.health >= 1) bluealive += 1; + else if (self.team == COLOR_TEAM3 && self.health >= 1) + yellowalive += 1; + else if (self.team == COLOR_TEAM4 && self.health >= 1) + pinkalive += 1; } FOR_EACH_REALCLIENT(self) { self.redalive_stat = redalive; self.bluealive_stat = bluealive; + self.yellowalive_stat = yellowalive; + self.pinkalive_stat = pinkalive; } } +float CA_GetWinnerTeam() +{ + float winner_team; + if(redalive >= 1) + winner_team = COLOR_TEAM1; + if(bluealive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM2; + } + if(yellowalive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM3; + } + if(pinkalive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM4; + } + if(winner_team) + return winner_team; + return -1; // no player left +} + /** * This function finds out whether an arena round is over 1 player is left. * It determines the last player who's still alive and saves it's entity reference @@ -363,22 +396,18 @@ void Spawnqueue_Check() return; if(g_ca) { + float winner_team; if(allowed_to_spawn) // round is not started yet return; if(!next_round) { - if(!(redalive && bluealive)) { - // every player of (at least) one team is dead, round ends here - if(redalive) { - play2all("ctf/red_capture.wav"); - FOR_EACH_CLIENT(self) centerprint(self, "^1RED ^7team wins the round"); - TeamScore_AddToTeam(COLOR_TEAM1, ST_SCORE, +1); + winner_team = CA_GetWinnerTeam(); + if(winner_team) { + if(winner_team > 0) { + FOR_EACH_CLIENT(self) + centerprint(self, strcat(ColoredTeamName(winner_team), " wins the round")); + TeamScore_AddToTeam(winner_team, ST_SCORE, +1); } - else if(bluealive) { - play2all("ctf/blue_capture.wav"); - FOR_EACH_CLIENT(self) centerprint(self, "^4BLUE ^7team wins the round"); - TeamScore_AddToTeam(COLOR_TEAM2, ST_SCORE, +1); - } - else + else //if(winner_team == -1) // no player left FOR_EACH_CLIENT(self) centerprint(self, "^7Round tied"); next_round = -1; } @@ -389,7 +418,7 @@ void Spawnqueue_Check() } else if(next_round == -1) { // wait for killed players to be put as spectators - if(!(red_players && blue_players)) + if(!CA_TEAMS_OK()) next_round = time + 5; } else if((next_round > 0 && next_round < time)) diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index ae57831a6d..bbae1e234d 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -743,6 +743,8 @@ float autocvar_g_ca_point_leadlimit; float autocvar_g_ca_point_limit; float autocvar_g_ca_round_timelimit; float autocvar_g_ca_spectate_enemies; +float autocvar_g_ca_teams; +float autocvar_g_ca_teams_override; float autocvar_g_ca_warmup; float autocvar_g_campaign; #define autocvar_g_campaign_forceteam cvar("g_campaign_forceteam") @@ -854,6 +856,8 @@ float autocvar_g_freezetag_point_limit; float autocvar_g_freezetag_revive_extra_size; float autocvar_g_freezetag_revive_speed; float autocvar_g_freezetag_revive_clearspeed; +float autocvar_g_freezetag_teams; +float autocvar_g_freezetag_teams_override; float autocvar_g_freezetag_warmup; #define autocvar_g_friendlyfire cvar("g_friendlyfire") #define autocvar_g_friendlyfire_virtual cvar("g_friendlyfire_virtual") diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index c57efb54bc..0b3d1e7529 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -58,6 +58,8 @@ float team1_score, team2_score, team3_score, team4_score; float maxclients; +float ca_teams; + // Fields .void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) event_damage; diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 5ab72ce4ef..eed0a7914b 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -806,12 +806,6 @@ void spawnfunc_worldspawn (void) addstat(STAT_HAGAR_LOAD, AS_INT, hagar_load); - if(g_ca) - { - addstat(STAT_REDALIVE, AS_INT, redalive_stat); - addstat(STAT_BLUEALIVE, AS_INT, bluealive_stat); - } - // g_movementspeed hack addstat(STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW, AS_FLOAT, stat_sv_airspeedlimit_nonqw); addstat(STAT_MOVEVARS_MAXSPEED, AS_FLOAT, stat_sv_maxspeed); diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index ca06458b0b..4e7fbd1d7d 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -1,3 +1,4 @@ +float freezetag_teams; float freezetag_CheckTeams(); float freezetag_CheckWinner(); void freezetag_Initialize() @@ -49,24 +50,14 @@ void freezetag_count_alive_players() e.pinkalive_stat = pinkalive; } } - -float freezetag_TeamsCanPlay() -{ - if((redalive >= 1 && bluealive >= 1) - || (redalive >= 1 && yellowalive >= 1) - || (redalive >= 1 && pinkalive >= 1) - || (bluealive >= 1 && yellowalive >= 1) - || (bluealive >= 1 && pinkalive >= 1) - || (yellowalive >= 1 && pinkalive >= 1)) - return 1; // we still have active players on two or more teams, nobody won yet - return 0; -} +#define FREEZETAG_ALIVE_TEAMS() ((redalive > 0) + (bluealive > 0) + (yellowalive > 0) + (pinkalive > 0)) +#define FREEZETAG_ALIVE_TEAMS_OK() (FREEZETAG_ALIVE_TEAMS() == freezetag_teams) float prev_total_players; float freezetag_CheckTeams() { entity e; - if(freezetag_TeamsCanPlay()) + if(FREEZETAG_ALIVE_TEAMS_OK()) { if(prev_total_players != -1) { @@ -81,6 +72,10 @@ float freezetag_CheckTeams() string teams_missing; if(!redalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM1), ", "); if(!bluealive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM2), ", "); + if(freezetag_teams >= 3) + if(!yellowalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM3), ", "); + if(freezetag_teams == 4) + if(!pinkalive) teams_missing = strcat(teams_missing, ColoredTeamName(COLOR_TEAM4), ", "); teams_missing = substring(teams_missing, 0, strlen(teams_missing)-2); FOR_EACH_REALCLIENT(e) @@ -89,31 +84,54 @@ float freezetag_CheckTeams() } return 0; } + +float freezetag_getWinnerTeam() +{ + float winner_team; + if(redalive >= 1) + winner_team = COLOR_TEAM1; + if(bluealive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM2; + } + if(yellowalive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM3; + } + if(pinkalive >= 1) + { + if(winner_team) return 0; + winner_team = COLOR_TEAM4; + } + if(winner_team) + return winner_team; + return -1; // no player left +} + float freezetag_CheckWinner() { - if(freezetag_TeamsCanPlay()) + if(FREEZETAG_ALIVE_TEAMS() > 1) return 0; - entity e, winner; + entity e; + float winner_team; string teamname; - winner = world; - - FOR_EACH_PLAYER(e) - { - if(e.freezetag_frozen == 0 && e.health >= 1) // here's one player from the winning team... good - { - winner = e; - break; // break, we found the winner - } - } - - if(winner != world) // just in case a winner wasn't found + winner_team = freezetag_getWinnerTeam(); + if(winner_team > 0) { - teamname = ColoredTeamName(winner.team); + teamname = ColoredTeamName(winner_team); FOR_EACH_REALCLIENT(e) centerprint(e, strcat(teamname, "^5 wins the round, all other teams were frozen.")); bprint(teamname, "^5 wins the round since all the other teams were frozen.\n"); - TeamScore_AddToTeam(winner.team, ST_SCORE, +1); + TeamScore_AddToTeam(winner_team, ST_SCORE, +1); + } + else if(winner_team == -1) + { + FOR_EACH_REALCLIENT(e) + centerprint(e, "^5Round tied! All teams were frozen."); + bprint("^5Round tied! All teams were frozen.\n"); } return 1; @@ -570,6 +588,16 @@ MUTATOR_HOOKFUNCTION(freezetag_SpectateCopy) return 0; } +MUTATOR_HOOKFUNCTION(freezetag_GetTeamCount) +{ + freezetag_teams = autocvar_g_freezetag_teams_override; + if(freezetag_teams < 2) + freezetag_teams = autocvar_g_freezetag_teams; + freezetag_teams = bound(2, freezetag_teams, 4); + ret_float = freezetag_teams; + return 0; +} + MUTATOR_DEFINITION(gamemode_freezetag) { MUTATOR_HOOK(MakePlayerObserver, freezetag_RemovePlayer, CBC_ORDER_ANY); @@ -584,6 +612,7 @@ MUTATOR_DEFINITION(gamemode_freezetag) MUTATOR_HOOK(ForbidThrowCurrentWeapon, freezetag_ForbidThrowCurrentWeapon, CBC_ORDER_ANY); MUTATOR_HOOK(HavocBot_ChooseRule, freezetag_BotRoles, CBC_ORDER_ANY); MUTATOR_HOOK(SpectateCopy, freezetag_SpectateCopy, CBC_ORDER_ANY); + MUTATOR_HOOK(GetTeamCount, freezetag_GetTeamCount, CBC_ORDER_EXCLUSIVE); MUTATOR_ONADD { diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 61b9f06fdc..0314104b1d 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -182,8 +182,14 @@ void InitGameplayMode() fraglimit_override = autocvar_g_ca_point_limit; leadlimit_override = autocvar_g_ca_point_leadlimit; allowed_to_spawn = TRUE; - precache_sound("ctf/red_capture.wav"); - precache_sound("ctf/blue_capture.wav"); + ca_teams = autocvar_g_ca_teams_override; + if(ca_teams < 2) + ca_teams = autocvar_g_ca_teams; + ca_teams = bound(2, ca_teams, 4); + addstat(STAT_REDALIVE, AS_INT, redalive_stat); + addstat(STAT_BLUEALIVE, AS_INT, bluealive_stat); + addstat(STAT_YELLOWALIVE, AS_INT, yellowalive_stat); + addstat(STAT_PINKALIVE, AS_INT, pinkalive_stat); } if(g_keyhunt) { @@ -476,6 +482,8 @@ void CheckAllowedTeams (entity for_whom) // cover anything else by treating it like tdm with no teams spawned if(g_race) dm = race_teams; + else if(g_ca) + dm = ca_teams; else dm = 2; -- 2.39.2