From 3c568f3a44776afa76dd4daf4540cc9774f37496 Mon Sep 17 00:00:00 2001 From: LegendaryGuard Date: Sat, 27 Mar 2021 00:28:47 +0100 Subject: [PATCH] Changed to Murder in Megaerebus Manor, fixes and enhanced bots Civilians and Sleuths vs Murderers and improvements --- gamemodes-client.cfg | 2 +- gamemodes-server.cfg | 45 +- gfx/menu/luma/gametype_mmm.tga | Bin 0 -> 42866 bytes gfx/menu/luma/gametype_ttt.tga | Bin 65580 -> 0 bytes gfx/menu/luminos/gametype_mmm.tga | Bin 0 -> 32567 bytes gfx/menu/luminos/gametype_ttt.tga | Bin 65580 -> 0 bytes gfx/menu/wickedx/gametype_mmm.tga | Bin 0 -> 32567 bytes gfx/menu/wickedx/gametype_ttt.tga | Bin 65580 -> 0 bytes .../{gametype_ttt.tga => gametype_mmm.tga} | Bin 65580 -> 65580 bytes notifications.cfg | 18 +- qcsrc/common/ent_cs.qc | 10 +- qcsrc/common/gamemodes/gamemode/_mod.inc | 2 +- qcsrc/common/gamemodes/gamemode/_mod.qh | 2 +- qcsrc/common/gamemodes/gamemode/mmm/_mod.inc | 8 + qcsrc/common/gamemodes/gamemode/mmm/_mod.qh | 8 + .../gamemode/{ttt/cl_ttt.qc => mmm/cl_mmm.qc} | 58 +- qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qh | 3 + qcsrc/common/gamemodes/gamemode/mmm/mmm.qc | 1 + qcsrc/common/gamemodes/gamemode/mmm/mmm.qh | 45 ++ .../gamemode/{ttt/sv_ttt.qc => mmm/sv_mmm.qc} | 543 +++++++++--------- .../gamemode/{ttt/sv_ttt.qh => mmm/sv_mmm.qh} | 8 +- qcsrc/common/gamemodes/gamemode/ttt/_mod.inc | 8 - qcsrc/common/gamemodes/gamemode/ttt/_mod.qh | 8 - qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qh | 3 - qcsrc/common/gamemodes/gamemode/ttt/ttt.qc | 1 - qcsrc/common/gamemodes/gamemode/ttt/ttt.qh | 46 -- qcsrc/common/notifications/all.inc | 24 +- qcsrc/common/notifications/all.qh | 4 +- qcsrc/common/scores.qh | 3 +- qcsrc/common/stats.qh | 2 +- qcsrc/menu/xonotic/util.qc | 4 +- qcsrc/server/world.qc | 6 +- 32 files changed, 429 insertions(+), 433 deletions(-) create mode 100644 gfx/menu/luma/gametype_mmm.tga delete mode 100644 gfx/menu/luma/gametype_ttt.tga create mode 100644 gfx/menu/luminos/gametype_mmm.tga delete mode 100644 gfx/menu/luminos/gametype_ttt.tga create mode 100644 gfx/menu/wickedx/gametype_mmm.tga delete mode 100644 gfx/menu/wickedx/gametype_ttt.tga rename gfx/menu/xaw/{gametype_ttt.tga => gametype_mmm.tga} (90%) create mode 100644 qcsrc/common/gamemodes/gamemode/mmm/_mod.inc create mode 100644 qcsrc/common/gamemodes/gamemode/mmm/_mod.qh rename qcsrc/common/gamemodes/gamemode/{ttt/cl_ttt.qc => mmm/cl_mmm.qc} (53%) create mode 100644 qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qh create mode 100644 qcsrc/common/gamemodes/gamemode/mmm/mmm.qc create mode 100644 qcsrc/common/gamemodes/gamemode/mmm/mmm.qh rename qcsrc/common/gamemodes/gamemode/{ttt/sv_ttt.qc => mmm/sv_mmm.qc} (54%) rename qcsrc/common/gamemodes/gamemode/{ttt/sv_ttt.qh => mmm/sv_mmm.qh} (84%) delete mode 100644 qcsrc/common/gamemodes/gamemode/ttt/_mod.inc delete mode 100644 qcsrc/common/gamemodes/gamemode/ttt/_mod.qh delete mode 100644 qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qh delete mode 100644 qcsrc/common/gamemodes/gamemode/ttt/ttt.qc delete mode 100644 qcsrc/common/gamemodes/gamemode/ttt/ttt.qh diff --git a/gamemodes-client.cfg b/gamemodes-client.cfg index 633b73fe2..aa8daa67e 100644 --- a/gamemodes-client.cfg +++ b/gamemodes-client.cfg @@ -32,7 +32,7 @@ alias cl_hook_gamestart_ka alias cl_hook_gamestart_ft alias cl_hook_gamestart_inv alias cl_hook_gamestart_duel -alias cl_hook_gamestart_ttt //LegendGuard adds ttt client hook for TTT 20-02-2021 +alias cl_hook_gamestart_mmm //LegendGuard adds mmm client hook for MMM 20-02-2021 alias cl_hook_gameend "rpn /cl_matchcount dup load 1 + =" // increase match count every time a game ends alias cl_hook_shutdown alias cl_hook_activeweapon diff --git a/gamemodes-server.cfg b/gamemodes-server.cfg index 6e058ec4e..f7bbfc4bd 100644 --- a/gamemodes-server.cfg +++ b/gamemodes-server.cfg @@ -29,7 +29,7 @@ alias sv_hook_gamestart_ka alias sv_hook_gamestart_ft alias sv_hook_gamestart_inv alias sv_hook_gamestart_duel -alias sv_hook_gamestart_ttt //LegendGuard adds ttt hook for TTT 20-02-2021 +alias sv_hook_gamestart_mmm //LegendGuard adds mmm hook for MMM 20-02-2021 // there is currently no hook for when the match is restarted // see sv_hook_readyrestart for previous uses of this hook //alias sv_hook_gamerestart @@ -59,7 +59,7 @@ alias sv_vote_gametype_hook_ons alias sv_vote_gametype_hook_rc alias sv_vote_gametype_hook_tdm alias sv_vote_gametype_hook_duel -alias sv_vote_gametype_hook_ttt //LegendGuard adds ttt hook for TTT 20-02-2021 +alias sv_vote_gametype_hook_mmm //LegendGuard adds mmm hook for MMM 20-02-2021 // Example preset to allow 1v1ctf to be used for the gametype voting screen. // Aliases can have max 31 chars so the gametype can have max 9 chars. @@ -210,13 +210,13 @@ set g_duel_respawn_delay_large_count 0 set g_duel_respawn_delay_max 0 set g_duel_respawn_waves 0 set g_duel_weapon_stay 0 -set g_ttt_respawn_delay_small 0 //LegendGuard adds ttt cvars for TTT 20-02-2021 -set g_ttt_respawn_delay_small_count 0 -set g_ttt_respawn_delay_large 0 -set g_ttt_respawn_delay_large_count 0 -set g_ttt_respawn_delay_max 0 -set g_ttt_respawn_waves 0 -set g_ttt_weapon_stay 0 +set g_mmm_respawn_delay_small 0 //LegendGuard adds mmm cvars for MMM 20-02-2021 +set g_mmm_respawn_delay_small_count 0 +set g_mmm_respawn_delay_large 0 +set g_mmm_respawn_delay_large_count 0 +set g_mmm_respawn_delay_max 0 +set g_mmm_respawn_waves 0 +set g_mmm_weapon_stay 0 // ========= @@ -566,16 +566,21 @@ set g_duel 0 "Duel: frag the opponent more in a one versus one arena battle" set g_duel_with_powerups 0 "Enable powerups to spawn in the duel gamemode" set g_duel_not_dm_maps 0 "when this is set, DM maps will NOT be listed in duel" -//LegendGuard adds ttt cvars for TTT 20-02-2021 +//LegendGuard adds mmm cvars for MMM 20-02-2021 // ========== -// trouble in terrorist town +// murder in megaerebus manor // ========== -set g_ttt 0 "Trouble in Terrorist Town: A group of space terrorists have traitors among them. Traitors must kill terrorists, while the terrorists have to try to find and kill the traitors" -set g_ttt_not_lms_maps 0 "when this is set, LMS maps will NOT be listed in ttt" -//set g_ttt_traitor_count 0.25 "number of players who will become traitors, set between 0 and 0.9 to use a multiplier of the current players, or 1 and above to specify an exact number of players" -set g_ttt_punish_teamkill 0 "kill the player when they kill an ally" -set g_ttt_reward_innocent 1 "give a point to all innocent players if the round timelimit is reached, in addition to the points given for kills" -set g_ttt_warmup 10 "how long the players will have time to run around the map before the round starts" -set g_ttt_round_timelimit 180 "round time limit in seconds" -set g_ttt_max_karma_points 1000 "limit of maximum number of karma points will have in the server" -set g_ttt_min_karma_points 400 "limit where number of karma points can be reached when are being decreased" \ No newline at end of file +set g_mmm 0 "Murder in Megaerebus Manor: A group of space civilians have murderers among them. Murderers must kill civilians, while the civilians have to try to find and kill the murderers" +set g_mmm_not_lms_maps 0 "when this is set, LMS maps will NOT be listed in mmm" +set g_mmm_civilian_count 0.625 "number of players who will become civilians, set between 0 and 0.9 to use a multiplier of the current players, or 1 and above to specify an exact number of players" +//set g_mmm_murderer_count 0.25 "number of players who will become murderers, set between 0 and 0.9 to use a multiplier of the current players, or 1 and above to specify an exact number of players" +set g_mmm_punish_teamkill 0 "kill the player when they kill an ally" +set g_mmm_reward_civilian 1 "give a point to all civilian players if the round timelimit is reached, in addition to the points given for kills" +set g_mmm_warmup 10 "how long the players will have time to run around the map before the round starts" +set g_mmm_round_timelimit 180 "round time limit in seconds" +set g_mmm_max_karma_points 1000 "limit of maximum number of karma points will have in the server" +set g_mmm_min_karma_points 400 "limit where number of karma points can be reached when are being decreased" +set g_mmm_karma_bankick_tool 0 "tool for strict rules when karma is low: '0' forces player to spec, '1' kicks player, '2' bans player" +set g_mmm_karma_bantime 1800 "number of seconds to ban someone with very low karma" +set g_mmm_karma_damageactive 1 "enable karma damage rule. If a player's karma is low, they will not do as much damage as a player who has high or full karma" +set g_mmm_reward_sleuth 1 "give a point to all sleuth players if investigated corpses" \ No newline at end of file diff --git a/gfx/menu/luma/gametype_mmm.tga b/gfx/menu/luma/gametype_mmm.tga new file mode 100644 index 0000000000000000000000000000000000000000..481c62132f8c719e31b4bca65cfe6ee187db9c93 GIT binary patch literal 42866 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

M1elLyt!cO?5|#kp~)i6 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 literal 0 HcmV?d00001 diff --git a/gfx/menu/luma/gametype_ttt.tga b/gfx/menu/luma/gametype_ttt.tga deleted file mode 100644 index d36db5ddd83d6ac60c98797a74771b7857af9d0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65580 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

WD9RM6ik1uLwTY%pJ``>9_ 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 diff --git a/gfx/menu/luminos/gametype_mmm.tga b/gfx/menu/luminos/gametype_mmm.tga new file mode 100644 index 0000000000000000000000000000000000000000..8bacd80fdc7bcfbd221a81c4c227b105e45d7903 GIT binary patch literal 32567 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 Mb?xZp>C!~{KYq%(Z2$lO literal 0 HcmV?d00001 diff --git a/gfx/menu/luminos/gametype_ttt.tga b/gfx/menu/luminos/gametype_ttt.tga deleted file mode 100644 index 7fd5a53418fb292b5562e8505687e1e1f48f92d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65580 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

+PyL}q3{icXn+$Y|* z|8(OB`YpzT&U3GJVMY^<#(d5l@9Vv^h8}JW5n7LYN3H{3V7V5(5c8w^P8>;{6W3CH!JTtIMAlqHef^q_x3)*9qzV z?vt*0xlg&}>@odbGxwSIEV=KfH6-R-jm?W@H#t79bC(?x92cIP;dCFzp*x??lUMJD zxgWg0s`tZMAG{yddVv4p{`Kk6RzA^)&(p!VT3I_M(!FJTe)p^vbSbhKU5>O9kse_~ z=@HiSD7hnHPJ4cytI&F2kNgIKA$#)U(u3PqClzL{$4z zX-m3=KG`_j`R(q>CI72<|Ln`fS`umU{6HIiQS2{RLT3I^nZ>Zi*k)dK8UMN2WqqUH zm1{NURe6MO^s93Iy!PZDn{DnN^R{H`xXhyd3#lO1BVto_nmkMzU~xOf&+TYvi)q`( zSf9l)OYGn98~k(ke!w5zNS^t^`%UsKPFE6pbH2>rbMzka+rI@i?n*^czvTqn9Z z&q?&=*SJT!Hn#;`o5Q{OoMx1@nQJ%i8{Rdvl*oHv4?JbuclMHK7su}2irAyP#bZ1V zKFB-(XP^bB9jSdySPvRdb~4X&`FHwJyk6!<$vw@*d=j1&-W5EC2He{)hTb2Y`}xr9 zHe0T(95C$7j)_)$vI76DyT8ak)CkOy_A)29R^S{Y=tKvVz+*g*=*Iifpe6o1dysH_ zeq0NQuaku}t+O+ohOZlHx#jK3wx4crAFP`HGX6QeAA3I;|IU_bv}(8&ecU-(oCB7* zmaprvfamHwlM}O7*4JAcw_{!D_I!?57rt#tx437!9qmA$w-2H0&HZU@XElKxFa-9% z75D=0y?rFw$FaZf*T7>ukJn`$;B(*(I0O#BL#}MEMqB%s(Xnxr>D<)1lor;Q(r5Cy z$sx6Ab+3{Qr2}We?Vm?eczqL`^{(*ZR5@;~=zK6?^12 z@CD`v`|<3rzeI;s0*~?h0S<5h?}t`E3sgA(KZzLvW(t@sVa|j(Gvx# z9huTRV$XQn3&4N%5KDo-Jo}N?edON1hmAht>@9Tl&5G7yZ4GN}w|S0oAM2~!TVXBb zDLl8*cRyL|%XN@fn*aKVOd}M$`M>&oSl;}7I zZV`A6oB$8N6Ilyn4xkpmPl5w0c!r3XBGwWxXU6Oa>y4O4VLbx#Nm&Di*{jjheRJu< zxunm>u!_Jehwpaz2EM1D5c0tFRaO?v9A3=T;0^d_Og!bLPo} znshADnD}oQ{rRK)*ZZWX0r4J28Ht|Nu0^@E+ZSRRcP8BN9yB04s7jvr@8t7$@cPTd zR=jTR!PxtVHMGY(N5?!pBc(mPUEPtRleo>~>omSjZYyRnn8`fh-aKN(2YyCwJ5vO{-I?r)o z_}9Q=@Buu4Hb4vTIdA~A0N;n2BKtwi6;TJE0a$CwO9K}6swU=*iNkjg-Wd;9we|tzq@ZY;7KBpDuHN9Ns{mYFg*Uqc~31?v-IOd zo=&{aEo9rs#yk0%s-JK@Mc+DlIcq$mI8}FUMz6k~XT=O~qv96xQ>+4u= z$ykZJ4-&N>*o!r}rQTwX**l)eZ0xQhZ~;Ehe&j52AG!}sM_wcEfiZCZZInb;MoV;c zjN%se)A>2@0J;Dz00&SDP(RQY$X)>RA@qc@7tE~z=mj>6Zzgj8;epr}msX8Qy1y^F z@7t5B8?hHC#D8n%Z{_=PGm-oy4V>Se$=AH%^ISR{p4@D~@oDxqf%U!#c4F-x{ojnh zG6H`^?f2xh6Ca`f4;Kfr&*!~0yteX!y&vK^@3q9t9qaI7{>t;W537{3*3spJH-|Pu zqh;*}Zom&X0#6xxV112ozcKb}T<80E4!n>#0385#z#(u6eh}QstpTb&0KLHcwnmh3 zb~Syvn)>--%E$w^w}pqkJi5#Sf16VLZPLGS?#o=j-_Urw#J}Xzc%Noz5iLjT9NT35 z{e?c6;J^f5bFnAZ_ZKy~&+8`GC;5|7?ZTG>f7E{DDe_g;e&jxM9k>Et;CyqOM7PIFbVnJukLSPx z@B{C~XYg5g2Y3Ow4xk^9H2^+9wHLrV;L7^(BKL2l&bWPL{e(qN4=wDHb#4t0jJ6m2 zyY+lB-nnmu58z&aua#Z-cC3g0$?5hp_l&bTit8Y}Vz1xH%22HR_i1iKuXs)E%l596 zv6Zjq$5>zE-v1`Aq2J=!AL8}`#Tv^^p8H`>#@l2?uYZ5O10}Ur7x+VufeEky{=iE1 zeaK^II&>d;51fJfy$KTC=XfwtaeFsJqFYK1fG25OD^N4g7sz!$RRgd_fL;K53@{IX z58TbyAHf>*t6!I8Tv|1J{ewNTM`oT*;tdL0OY!r($>#4{_rK!+u6@0tbs<~}`DV0h zw_{V9#q)KOuOr{D^Ezoj9Zhkr%peD2?)zQn3*!$SWbr!7qs4x_uBO;;jdi_yaUQ&% z-Y;iw{cjOgv@}Rv%jgYu4-P;h;0I7M z~_JYqAc{fj=({kv+Nj520=ea&X9XL42jsj|{iTQuKhH4bssT|L5 z6|*3`o>yeE?(ZL2nc_Itu%{E+`y>2Ow^93%!^mamI%+=h96A4FvP93ONc4QF;uep= z0lW^4fL6$LK-K{G0C-FE0`fcnK5%{S!jyGxHTIEzxwUEhh1=Vv%ztude&<)Glj^^L z=liSvz2W~d0Vze&c*=F)^>W{e_ZND)r_F8|av;QZ)1xJU8GJD=+BKmWwXUaF|HHYI zSSt#1JhFjCN!4)VbKwGibua#o<@<;IpjSIc;jwi70@1X}frr*51X~NQH2V?qW zoL+A8_H0T?@pr3vjqJaCsQrg6zn_Rkxh zc{0&4``pH|bS~B4FY&iU{}0)LI*`V5L0;P_^du>;&fWM{ZO_f|3g17q_(t>ssx?4xY-9<_Jhe>Z{j>d%4{mQ7v+CLYxuf44U*h)e z(x!^+`HcUrbH0C-PGW5Ue^+sBaFJIj?d#oM8XSBfDj@ve4EJ4+)(pzTwfL_t@5ARy z8j1ZsIM)~Z{$>2J?-S?dVzz>{7R+07@NcJ>$6+pq{$JJq%l=QU|8oAz_yhCz;SznE zso((g02+Y$03RUN0Q3*&1u;v+T;bfzhVDj)>dv^u)bH=>+b(zO|_`RF! z3eeuYf9pBVpW?vQz8KUMeY(1P{kzM%w!OHZ{qzG7zFTf44R}V!=hDlaQ)y1;YGU6E z_RnD7Kh{#Qri!&yoa=-A{=gso7WyvqU+BY7i!qx)ZI=6g)NJ^7_;_eJG#%P5>p$}U z9pnEgLUD`7s0(-<_`@%vZ}{2=XwdED!D8Pruj_n%x^v2vN884&cyVCPsH_u9-QS;D zTb0glHih5&C-r)NlnX)!_IA+C+|a-1%MF9-+)3%*Dt$?hiAU!Jt>(YSeCy-!*e_pB zC(wa;?P-LAwm9bx=X~LOKkWO*8avk6FlWKqD`u})hk*yj+8jJNW_0M&k*CO4VPW#xjjJov~rYre7>mlA1HNcHdwJpcXP*;$hmS<)(Ycr+8OIh?dvz$z;la*1U9WEmoq9fb)bevHMjT-t zJpFiO`)84dS9kC=8$xOKG$&ft(L~gM+#cXZa{##yfUm=hM{r=W8oh|FLYeE^(Z^GK z%~0kV;`8NoAF_`|+|AfAG&O7AtC1A^|d4DxeoL` z-{<{1uz&YitdWR$>5-Iz+2>NqW}RML|HY9+w?_vSbiKQ4*0^h%CdXV(8MQin50^K8lyg?~mg@$6#=#K1t zW0$`>G(Ga;uXBfeIK43VV){MU6*=+NmdR1q*N<6#W!2zK*Vhj}e1H4o^rw3x@4h-5 z^DN^;!kg@~%d@i2u6XDkcs6H)y? zoQd!7>HIRUj~9~cC~aMBy25*PuB8?cz8?9`xaWKO{{qN=;42k<0v~_ifb|siU0Ixy z@7ROAXI*}CI;C;;xg`6nQ!CsvPA>I-ePU72n_~+)WgLm^mT`1`kBp-+J#m|LG^T6j ziMWp0?BU*@Tju-e{BjrI{ek%;^8Ci`GIW7!JGdtHXmWl3o9)s61Bd%B{T9XCfHmRd zNi90U`)Hr?zKYAc%vd9ealV$O^whG%YcKDwtgZU~(%KsDFRZThK7B(iam(KA{coG9 zyi40qfi7>e;0?MZMUKPAr|snv^slnM!_$T2=lWlo1z&$SQ6u0PF>i-HpjO;HqDPNd zC!R2-n9G18xCO=!PU;KZpqAtP!o#z+{Dar$zaGuM*FB*X+@C3Yg!GTyfARN1HUGEC zKLYtjApZ#DAA$TMkbea7k3jwr$Ug%4MIc`Sb&I#fuPteb|{N@!%mMkB}sBpl_Xm&NouVxNlhzAl9iz(SsO@_9sj+Fj^b~1HTX3( ze!mKD%Gtb=)?jDE8-J{sCcn){(rjfe>DXFH+IB4@?KUkXZTseux_uK#y>%l=!?v!Z z*`}5xH8bUps-!ptPFwo1N@wtitFf!h8-J{mrljL!!dp{GyPb!m=g?QubsQn-*pHHQ z?T7Qn502a>-1V@VI2-F->d?iPRKc|PTCK4l93oF(ZvOyr+~C0&Oul8&8= zxMEzP)TW9gS?cnp&Y!P*0%ux@9bc$?I(HMvz`cc3!L6rc*eP8ybonmn+mWQ(k|dpG z6eel^MFx^~Q~s?vZ~Urmt70C=Yrg(VeA0B@!g>2!(z5R?Y1-LK>NX7}sU=?!PAmZ> zrDMF4Qn6!XV9G!(sgi$HsiJ2q-g+t-xvf<;>QJmy!JZ^dOFpSaLz*RN)F)j@%Zkt1 zg7}Oi={w}}S+7dkj>&BG36c(5TGQ51(y*(~Kr%|zaa}4$aiSFLFaU*1RSwjZjJnp4 zss!3f#=d=(j9fP=8Q2!%>LkrZgmX!nP57rcaXr$PG%QM9wNzZXo-Gfc?GMJ`5!*S9 z2QZ%D4V2VuTJy=-lWMb*3Rsm6HZo_W7wYuV*gXpcf7*`iD#c1DtrxYEnL}5 zob?dSzYMz)utQa)%0qRfS_7*}=KY(f)C}=bHtjl2wW|Md6+`|wElb6zC7g^As7K;R z4B$_%X^TNIT9R&S4CpI6!4dYz>FoSLk{WYPa0`@`R1RVsOR>YR>;MDRB;#>9Qr+Q| zrP{+RRLuuDsF?Tdsai8+wtB6ecU7x&BuSgERUQhDr#{X7r=7IKAmE+w4?PD!v#^AP zZQ1=9mio{Yl><0;Ja+tRC=YrfxOSO4Dk* zqgJEQK^hiA#%RZN68BT4qmBWpD=)MyOVnAxf#hUFBmD>=ng(6f%Iq}wL3ijGsf ziB{{m)irIR%=D~78)!EPZLZmDx}&z$WM9q3)FKF>Doj)8Q4U3&~G)%L$^g(fKIdNJ$0?74AX8rVXAiH z@yU9BO+KsNeA=4|Ekntm#SGGEFpQKdy7OsaO$<%YfQ?pqB*rKI+KALRs*sXl2OeR& z$E?*M3L&!A7NeVs(XlNV-`0!tHQOfC)^l8BuiqxNtA6Ww!}P3YP1LoHn6B4+<}Cf@ zGnN>%2;0cpDT9`g_Y7@je==$_mke#^P=!|Eq-`;nl#N_@WUPaljGMw}^%Ry9ZYc(} z1m@#k8}P`qT9Q&lS5h+S_&_q~*iX`RW^rhuBStm{Bjb?AG-$F~N7E_Q%%JU}4*E7R z!z;FnKU2jyDZh&I(l3>rm;T_5Dz{Id%I)H*lG9?U-S-FB9eT1g%)9?-*hVJH6BOWbqA8VX%HzHxbT(g*pn&;0oG?Gzcz=a z64=BrWJ5G36=P3QuHt!Hs^mF<$5Cz!I+D|2RXwNlN(Sv#S{t=p($}cXf{dyjYrj`^ zO5pRb5b3t(tsQSpygA~$4oqG?InK?$*|$f9daf%l@yH<6%6|VC4~FyG zXn06%;G7(=w5)k3tPFxue;k&E2z^@3NUd4`sZ{IyL^AOkCRO%rDjB&6c=lmXv#{f| zMS+%)+otLjJEb`rIwnju?zHx9b^jftU2n)gt)wiE3q}&d;!m;VBW)YDAp0m(lMMs@ zv(pF%78VmhP#p1JAy;^dR#Q@|9z?1&y1tgGb{-{}bZIFWcyM|sDgPRzjue=wqVKxb zsFK&F=9OGl^{?Dv#jYAbd#R%Rg5L%xn~jInmUy7-LI6=7p1P#XGNsL0fMN2fg`I#X z4^%*_B&pZs-|A9aDbQsG%ZyN~9!MIsd*&;fc9|rZc5BNUvo26Y3^o!LMQBoz0#9if zdu5p$dv5fq*nY*F8i9KXs(0SQl=t8PD|}8KtnBT=mdXNRHYJA2Hf@C+^Ips7o4+nZyC4S*Pz${0rJBJm91}S-S*!gTqCWIh&+kA*6W_h9 zD!Z-w+tg=swps9TLCJp`-fxyvk}WAlrz&Uyztm)T7rJ3VVnDMo(gh_$vm{kxAJVQr znAB3Z7C*n5w66_>Oav)~h7YjoaAO8U-hIgT1- zm{AsBxL>Kwcz6J~1sjh?r6QsZ(?QZ?$k{u84NX~6uR}8CB~g^=&Z#8nH2j-1&HEfy zGw&TDnGI|p8HXUxQOW|ysC5tsNV$UVr3$89k2b67vwcu?|6QkR_q{*{O{e{j#wuJ9 zBh_Y=fzrT)EU-LkWa;dnj5`w8Mv8UK>Ys6u&A7m*v-mk0|KHM$v6F zinQtvd8lUAXM|eqK`o@3LzrHn%D=9|NE%3LwSsR{H4Qr4!NhYzsClompUium;frIX z{4e${y@rzU^RU?mN-uz21KBt>TnN&?1{7JwiFx$mvcz?S7!C_KB2g`uO*J_0ehKO_W$rr4MH6kTusj17UvWya6HIs#NIsN8SNylpReU17< zM`~G)ZY4DsRuQr&cw$7Mp^7WU)#A#o?lh#kSyevY+EK0O#;#gluI{XzcX^$~^V91Z zzCD+2`SRqt#&6GLHu{jgrA}e?rmB>?O^>pZ)L^|;rBkY~+sMGgi3H3@+h!Xvm^-ADeVuMnuDgUxT6I^x4^>hAe3Dg^LC=o_b1Y4mV{0b8g zBxKp0g#%GQ)D#hgRa=L%DShi{-?i!wi_^9o?WNgZl9^-{iYiWG2Vf^)P#>gfvIFSn zU&*QhGvr^}+%WIr#uhJ5r8_=6k>+;y$SS`ZSLJn+S_)s7!8t*!Urc!D9!^UE|wQtt>U3y zvy^oVHV9MqcdPJgjZnvmOkb2y77E!B3}!DWktku5S_-4IB(D-d)((|kiL7_v{lE~&RTGNYwYNU`x89!P9)TS zmz`t)L$8F@!?0tgBqif$FCL&wGc-oG-8K|hLy}@hmmyKk^v9Gpk?@1J)a!z(bkNuHC|uZSnuWOjjbOYPxHKymE13T+mgx0(&x_Kn-aQWeadsY9*r9cNe$N zqho96(b1JubZskry|$(JMCz2Sm)A`n^E4}}ebI?IH7P4vhbUBeMX3Qar9e`#82hPG z?V*p_*6eX=a{UpH-!vHg;`^gB)3GYAG z9dK1Kypm)~*}#d6Y-dxgZU@O?$Zcvc;t4exn@5c&Xsh{3{bf=Vo9O*yuC$@H8DN7oemynmQrk>_XDQ~dP)6wuC+ER2<@F597AWr@NpcsHwl z6}C$J_|8O^SJBhmQLm3D3{1MQX4H_^TgTgf&KgsLvc~CvAENCitWuTTL%r_s&(-S< zzUOJ)?PQGAv~NFacG<5O8IMr4vKyItW)NPh*<~M@xFk}gHZ!TB%`~d)Fq=%>mXmq# zVX|aSwFoD&pF`vlOXMC?KsE!mQ%#$pq@o84u^~iGH0Sp$uf$+%IuVDA6=p)Ch(%fx zIWCh?5EGt+ocNbFX;wz*|^D zV~N5WnedS%b~w_uGF7HS@k5EuC(?sWlb;=p3r@O`I$&sC=5WWNErZS8ruERL!%nJ5 zTb7k_OV=`#)Ga3#)wCG)(64sy?Bz{EiA>$od5jFLjty0Eh~+4?igfFTkg{eCl2j_P zN2nN)9*!iHN+hXPW{x!@!=^*Y+%Ju6r@y353yAy^h`PiVlEcs)RIBw6Qr6?Wpc%$8>AbS`-q(a9LPn?CBvk(i+5 z+@z2Z&sX;9_-S2Fi;tOsMzqLHgF+?cq*7z*)g4Y64JH+t)gOAlbG^Qo(yZB=s=B7| z=vr}|$k~SAei*3cIpNVNN8EXuP3~3A3`7 zLLWuq3Dd$`VP1IaFM`*o<4#95@OhcUkB+BPh@16qCM|1DSQ3T|`-^u{(`tOwjCYaE ztCt+<*wxdZt0{wtj)c>r^kFZLM0u^bx;S9cdTBelvb*6gJU3+u6!b$Qd_57Hqe zH6v2iuEq{ojg-`@u#Mr!us4oPguRv6oQ4(w)S~Bl3SRa_*tqGuSuF}>!C<3_j=oUanr5M-3F|jz z>st=Kw4u#x7L4|bgv+Q_>O?x0BT2O)vk_hlkA~%yw0YAc6`g8i(6}!dJ1-I{T*WDd z^ey|4iY~isIRs!}7*wNTD{A7mfPxn0Q5f7_$$9hvGOFDP=C6TW2@nDU6@fts0~C7A z2-y6B0IDpTAHFX`Ae;Y}w4i?;I(`~`zrCN{UD!auuFVKR8%hinE^qd-CWoD2@K(IF zt|d`B3soB2-k4^0wV>3Y&1uc>mb7L>D@q#FoJPCXAp1HhWW(>ndu`2?Y15?kM7#c` zf(?DYo|)V6?1{+si8%}0#y(u??f+(#Z>tY$18M`Km#aJKP?EJ8bZBuYLn_D&u^M?l zuy^L;xWdfuwjZ-ft#Ql||}*#}V)Y z05L~c`~U7YoaoLTy0&d0*;`f-Vgzs?M9}oId;k|@P=t}qBTf*B5xw_szYD zw)H34K7eS)Al_J-c5*b`#X*39c)Pwo&F*eVcIFbb;eTt(TXb+ED$49hKezOxd+}Z` z4otV-awf_-=H>#ozaKC4@_Cu+Z}VxDpM{XJ%s>M{sLVia9t5fYFwrs*q%ud~Xfw5_ zR`anB{jG+aS>ZH~sE!ZUhT?LYaf5Ck`iG>X!Dbgh1Cj<(X_1;i9jatIO@IctOuaIw zqU}t6oqb(|6b4zuX-JzXZyd!LhRRL)l6TBoA#IMswv(zZQa_G0OsVQ+$mIrs`|r5@ ziC73KGO>VJ3rdKXL3DEqwX9(bm2Kr=N^d z;ikUyYE3XbNDgESz39T+4so&$NYaFGIb0mj464}?5s4Z_@TI$o~ zST~|Ay{K?qx8iHDZnqDG+O0b`yM6SHg{~tX#Cvvmne5m8{i=Xw5JSeRT7G6=W&UX( zLK1{AwYMh!u1-k<)nq)ye2>7>3|Upn$j>!ej(gy-RWYzI6b7+SH$(r}w4Xsljw3xhq|Z51>m6yy<*&CptZ= z9UY%(M~5f3q!j3@#i%qgR5 z4cZi3l`%CESVLSnV-~GKfvtfxcV_KpQPoxxAGwFRZmn@V&kl^Ru5E)8+W zDu5&u)ZI#(){kyYUpMqBRm=iL@Fgqc!;As+aNQt!z(4P%^`%>>A(WHUg|002qYLxh z>11LK;~o)L{`|ER|Feg71?w`MSPu#m{PoW@Y5u} zz-P<+ye=KEhXfBp5iS`~G1Vpztsrq(-6oo<*iL`p*lg&T>FsB|fA19j zN+DjNhO;8|s_vY=$8d5vk(5Lo#0)G=F!dQ4Wj$VX&84DxHJ7d6U!ZRVjl&K0>wJSBJa3neIJ(d=d{opNBtyynAA19GqiT{EU$z*xK zl@m!BN^9B^KZCxVUi=%35Lb|Ken=zwvXO%x3+dM_Ou*GW=+27nbZ1pB0pH_|L+R<} z;q+wFFnX|VAl+Hrn{F=ePS+9w=wh4~otxW{PDMD<(P=hxa6)t1JJOPN4yj9zSM(%0 z8bSS?Dv@ggi8|JoN@11B>Sn1<(LF5a^88Npb2GaUleKtb@Xx%JfdzNty`Nl&cD-;i z(s|#Juy&b;!Aa&NsxL#RrJWHM|WMymR3I*2Jml_3oSA2sDlOi9g{ zbj*FY2u`NjeX^ zN;}V$PDMJ=vFU9XOl!(wPVO99k0WU(qT_QYx=&N`XvExa$STgD0$7(4V8K;cfje94 z($WD|basvlhF$?q>4d&cuJ(;+t zQ3dNsoUVE?+|4*HHX!vXZAhoKKN+>2O4WQeQO&Lg$vor~cQ{s%rimlNZVc$E@N@we z+u}$dDV1=vDtUW^-JmW@i%ChVArrAa88_)gt@>`F&Wj7FTQavemgJLl*JY%Iiu1P$ zPmY)}jv%HreaMdGZEK-566DPiU{K zyU3Q1>9#RbqAsl~P*`9+TK#tm%9`#-7w5ZC&O$GGp2CefhWJjr_p7XF4ry2ByN-ID z>|Pszn(}XsjZktz>K~dKX(l zeM&=P!a!@H-NWhis_t}TN^3e1+Lq4Db{3%zArPSuA@Tm&{!GKctgV03UEBxZ@TFnm%w+A)a|n~j(0T$HG#N@db%IDufQTRnn7H31 z65GmLj4+h5kUp^@R{}dL^J)t5N4&{|YPJg{R7%D+<2ZVXHh^ddRHtexIu=yTDU8}o ze=ZVZmpO$D@d8rTW%$Y!{cdep3Y8gRP z(`PMz5V{MB4--jJRV9s@oS#i5>nU%E<2$t+dzJ(j4O*Nw<(LJeX%OJAh&KUG-T3~(d zUQVJ*tgU;7H>CYz|Kb9%6&H$a6(r?!2GoP*0>T^1x=rrRm~h%T<6DZVu*xP?SLtR?Es8vyQ74q#b<%aTCYGtYPME0U8=ahS1vzyyFr^95qywrTE)Ffvp+1 zof`5Kta@deQZV5K%9_cv~nmQpFq;Bi@q!C&aH%wOb7 zs8x|Gm4z3Dm8`?Tc2xv#?8MPeGpMa>#2v%1!Y{FBebEvBODyrNzf^%oP61S+pKaIGtUx#Y=ZxR#D zlP5107arQVjtEc?H?JmI^yAP>dX+wqxmBl>wFs?8r`Zai&T!(3suE%gc*9U;S^`eI z0?-AdEZ!(n&=3M!_i_sXb?3P#E`zSFrM=PJXn?Im{cX6x%Uhq;l7JZShVTX!171k9 z9CE>4q{Lt^${R>C!faV+BKA-ktgk)YJcGrHx1G3{jl20oKl@Mf5D2Sh)Nx! zNymF`Uj0s?H@bG1a5}A5>d&9fV-Ej;t#TMGE5W~VA%*;w0aZz~8W__^G#dny$qj-d(2?;y!C5N`6CikQt_y_& z=*DOVp}}`D+<}hG0H&?z0Dl5V52|L3Y)oIyCR5S*l{Ce(A`P*VXfSVs+DN4s_br1j zR9aSOky3H^l|yfNY%%iksvJ^6**o!G@3W@0U7NemeK4B9oHlWvK~ly9izsQTSSOKM z;JgA8&!`7Z&J)f|?mYk5(_Slnl2KjnUrZI*(VqnPSNu~*E8AK0f4LK=AgLawz1$l# z1hk^%%fO1a2sMQlaE((Y%vSBRoXkQ_ayevO@=^TnR1LV9*pI6DZlN$>>spyZs;Vx} zzlgS@KEKnDn%1q$EtuZ4e}25tIJhmH05m^EmRYFj5dz|maEI7Q*A_E z3|&Sm=v0K002x04Das#^8&nmrvI6fO-hlRxYfhhzvPk4?+urLx{HcEFGS`HYUU7f0L=l8p5aQHeHzSM_-t%nBmzoFNnrCaYW~Bl%qr=c^kn<18pEJlUYU?LX9{q zlNj+A0*!h|Mi{+{^5P7HQOwTj%1I&jBC_YYJUkxWF8)!XSI|er>Q?`_ z!m6H8Pn=vPot+pE^YkG?ZLQXWIZOJtj7cW!pHWpc)e78i5U#^C=8sWQt3Vo+nviy_4m=&sZ75Y;eqB?XuwJ#Q z^kZ{RI>RkD=oxek1V*_Cb0Mw;x7Mb&`)1S6GfQ}a%tb&Al?G(cS`ZopMe7fcLbdS| zE&zBj@qz;C+&nLOv!AE3Zt~K-E19%$Mn{_9%nJ<0x0lFlTsw)z@&?dlz{`Ryt2UxC zk}gE!vTFUGfJUKg1^W&!CxpH z0vdP$vyJzzLHWlQ(2sLTbU7}7d-~>Fo7NFQ6d*&j!O<`vskM)f0Q=EtZMYpZgz``E zf}-5*^pm%nn`TgS7h{^@!mv*6z`IGjt2L2P2FNnTATZ&Mz#g1My-TMjK+pc zVp*nfF>>JxY_Bi$KyLAK`*_=|OY=KUeZA7(A%C?W-&rk5V){))UBATqDt^&VZQZ71 z5BCbsIRo;x>9>wCEnns^X%QxcoXVDl6vNugAD~u(C(Io#DQSSTnpEkZz`_j>ff1sZEj7J4$3ejdxQSTi^?Lfi5Tva6w)fSj1z*Vvtsj!BFS_1S&jJ?q;A& zPZ`ooT(B-C_ND2hPKnClgozC&np>3*Vl6{w1J8* zujN!XmA+rg6cP(g0>$q)x6z$#k+dz`jb{7m(9BLu%TV5hhq;v;nc=k=t`Y%cU<`a^ zY(ZLClx4yqjYgS-+)9qRGFfFIhQi2|E^tN1aaacvf$7!xon9OdcT9Q^@6`=a7MO}# zO}$af1}2e#U-Zkyox*N*>oERU0#9ZZVM5ceR(m0Xzgj@$BdSbJh0qEeWCR72N|=b} z4L<>`c%6fw$al(0Fqr!9xS|)LZtTEi&{i__&Lo|>J=o9CmXiIeBB`iVq`foU#g#_z zya&RMoEghJML$pQl;sVU12Z6duqZ4$g;&sRjr5~y>!;B30}JWRiDmR;{{p(XIg}19 z3Zb>*Y-yIamI6)2F&tP%xN{;C$vZO~iI@0g8Qk)~%7jH)g_P>Qfr=r^ph9wxE4W!| zh|9d6=>2K`^tNlc=Re@>$^gE3SCYhnmWr0#>i3Jzui`oPMJu-%R|mLFIlm<&rT9l6 zM^inMR&2PkN-NhgzobtgrvM5-s&Vv`RH^kZ7-a}SPf!^y@E;&VTUcm)4Q?{oGmM*g z+s1b>FCv|K!KB91vZ@AuQQS~oWWu3y=j67cxdi8x(_fjGsQYDNA`?MIf;1F@2jPPN zf-uNtU~32^NCg1}(F74opaW>LJb3*uZ&9AS)OC&*xPqey zs?c6!#|Wr0KV{uTMl6@Kh!*fhxmCf-X6gN!ps#zT*lxZN>pl{t>n|9gwU~tSU-Y@U z*Ssf=uG6wddW2p+#I?;&|9SUG)3CumH11chl=)b~MMjWeRACtT=ocHc7`p#GjL5r{ zd3}AwHjz}F(_bhqmYn}RG)$p2aUNt>TSc^fkuV@}KouaTw`ExfZH1m8$%Os>8-zke z8A9MALkHyM@;1+#5sbzz#;4@S46osDcn`n@Nz3b6}UVLL#*IG2$qcZik(-c(>t^tu>u5fUT=QyS3={O`rd#=WGob+Zz0NY!V z#1jv^C9YGQLSO58E&gEc8+E^9$4O_$dxc#;gEoZkoI9jz+>G%oOGgk(PI^E(Xecz5 z5tNj9Q!4qXqIj)TWB-KepE4n=3jIY+QB8?@xi-(baq&{8I}PaGkG^l}MX%UXJ2lo8 zDLu4RZX+Su$a(FbhzVVV$blhX3akq&%cKOWfT)ns5+ce-0>k;d#riU8alA9a5njPx z05jexV=B1np-jsL^YlUtuP;m+MQ>0-or)vkMi(8N#&b(!6>CI!O=1|dMu!)s(5BJN zskg0`i2M*5WJS9t^IRXlA!}-zqgUp4ocTJ%kDr<%N#e;GB4ToPUq4{p>v~?Z?z*{7 zIz7=VBIg{K8N};G3~M3#_&uNeC8|hrfFMuspH3puD`6=A|sH2wTWE{|!O# z5j+FuWb^>s0zZis`b)Hkw}{07Oidis!b|v*3~O@VYLqqCn{u~=Q_PM;OVf_ zarBe#I{3U}6n)I>OK;M;aSGR&w*c`oZ&eU4Ug<6_6QHrA(pcAu!Z9JY8^*L0U>=%b zfA&gr$H*7SzD@u$8aq!X?!t7K!|BibJPUvcTDr}+c%R1xtmJ_V>Mwa~jd=h=wIhmfP@yz>DAG)=~oo>f_(49oCf0lZS*X}L# zc3G4#A8u<0fAR=CD_I6bu1vOU_N}D>kiGcECq~qnwF&&~_F86gVg|Y%u zNePQR0jDRp$tvqQ^~@-@spqx_Cl!4WrDxw&q^il>5v3&HQ6xFCs`7Mz617q2Di_?&|`@80@$$L`oo~ z+oHGn9&xW~dqzKS>NM@bAm{N%l6Y0#E1>8<_deBV*0}_ivIwehPk@7?gF;{b|H*aa z6}oppa#&Ad0XC<>vrB&bdxBxhcaDW(T~D`UCnPf+vw%4>2x#RovuaOQBJHQ z1}!sdb_p<<)wA!*SirAeZctN zPVi;S{e=Z~jBhEbimGJ$JO7Z^{BML54W{2CqK&1Z!!gdQ zj<|~f>u<28uWUpto2ix+Qn^-?vs9UXC^Eo5h$!lNWS7WF5CtKi;2zL}W`c7-PDU-2 zQCr!a|J|w{?Dea8cOsha%K?71-t&C-<*1f)b#80QiLs-bjNk2r?dk54j`VP;J3U^; z>-ko&-mVO!H*31md&ce4`kqvf*_&@e>O=Yb^TWEHjA;*nuD!v|NGVx)Du8 zWwK_dLQ_xAZh!G=Y$w*#&O%eg-7fA}YJ@7pd%-JXpV*gH-m`9dxK24Uvg3rq%LAex zKf+8)&lNw&>F+I6rJh3>456IZkhRKT@ZV~U@(TLzq0p+HLPckGt}j+jVP!356A%hf zG9nL`EB>;5obn1Phe7ZUVGuO{>H*}D2!a2G9ykZS0XcvM%+>@;l*U{5+7Ry89gei2 z;#(a1?(U=4+sDz3`F4~WXHRz+yL(Gq7&|w5vdoj$V*1jnRh{W=T37mz5zM&tqA#2J zQSr6`RLpCGzijR&FnpIDOfOe=6RL_B`DP>E!L+L%EetUeJ;yEMIKAOT;isZHoV&ij zJ>o@bS0~VK0e1Ql-+yPBN$S3FR3U)X)O+?LJNK|F-CV{WnZh`3;ikX~UWS_u7yfeGLjuH^XlVlThd$iD)Dt=;4%8`Rp3sT~ef|=6djUBlG3Y!Z ziIFEkP*0%Hm;0%*a>@w|3Vb;WEz3JuHIaEDX+gY$VlL~d!cB#ybamB0Iy}o>AO^Gm zRz^?e-a6ieuj|DFlyvBjV#)a z;cYB6>NJCz2E)aaF5_-**2OYbA5hQBUaAN=!hxU)znWpv7x z=txH7DGJmC=$j#wq2YqU4yk0>L_|&_5yoNzv}oU4FM4`#A^p5}P=Sc_{q`Qkk^1%# zRSE0?CV*ojZ=3o`w3)YvE&UiD9Bt{Z!U?}C(Vj6vs0uT>Fiu{K52uD;)9OHaw-zGE z3t(9YKduWFg7^+e2qz^-PLO2YPx7IM%lzoaCSF~*zB`R^))FNur2XBN5%gi}$S=p{ zcy7F#(sTIx%%M#Ijkph5U*gt_+oC%fNGUOy9I*IJ1E2ZN+IU6g`gqK^*w1y+@rmun z?u+R(_0(3M$Qze{Q@8jJ1*id|KrgG1<;CB-E`IkhAo|H8pIN!tfzyv|oEVz2Vp+uG zEi1gv(-mAQam z!cTjmFPAgu)$W;eCxvg);>6(l?Y;CRXRAN~tN;SS=4||J{aM_$58&Mn-kISDFKy*N z0h^Ok&8Tp#;(mZ1n?vYhT4xqFU&>?3B3^yg?|sCmz-xjPxYtAob%sb z%C%d97k$kP7V@xeSpCxO=ilvhd7*t6Jz4+vhcj^js~@Hf=$pTDR71ca9tz+LI0Bh2 zSo+#6i7NTVy*CSteP`tt^Qf)Y?AxAhVOM*&P0JqQGV$aD=dnk^oJa4U=Q`n7vfGri z8#+xnyV-4e_AdA77k0Z&IlHCf#1m_s#~okVe$2r+F5^$kaG7#$tUFf=edeC+wQ$M0 zf!pFn&E7QKeS7W_?@wqBw5hHB8$jrR$Qd6>XLPaTic8MdQ8vrj-oy?{w0@EUJ=r^l z=YcXslj1usI?dZYiEbr&(^by2ugz=2n=RjE!Asn3Y@!#tLxp648n8T203jJl!}V=*xjgwSkRzEC#!! zqWW@5CCwh(;|g4qU%4yi?|w`2EPUs^ZVKA?&VA(UJ?ox_Pvk8>p3)8S2*1%4Qs*9; z(;deiVYz``5qEvPW<7NCp8K?&*Zik8oIf@hmw2V|&J_#WoL$nd|Guz}%d_XXKEo&n z@w)FnW#MRNAcrfP383ANOaOgiV6t*#3wpVmm!b2DZmiBP+#gO)*YK@x3p&t^xOTjZ zIL?W*b7LJSH`bnBuIoc+DP3LSA%qHOfETbkK-j}uSk@5E2lnx<7LN7~R{RO@02TBNE~Pl?JWclG4Y%9)Fl1dy-*+m!H5YrzLT{0PLVvTO ze8iHTbMd_{N1KpPt z)e2l(WFC<4rFK}CMIY)k3rP4-JCNJVfk{O*0~0@2>y}(#9Jri}(6mg-+;8wAW0cvW z#Lk|lqdLslJI($wt|4t?tKUEh_nmAjnw-d)^*?k?i;Wl=jS+{uxE7pff?UtJIa5Wv1LKWx5#s6+>N z3p+TBn`(!6Cyuo68i0{80c@ZO6fbMI0n?==6|D=R*|;FRk83*9x*;`1V+45z@(;KS z$nbRAH2Qja@sAS=yYITYe$<3d`@-#b*(yJ}tK>oOYOuN}U=Oq9S*);}8>9&D%{zWH zFKLG1rN0L9%0ht-7fK+HxVfC4^njM}<@v4?w~V*h^?7}d@Ao-%FYDy8eM{3_j?J=t z``IYbhKY7mynm`#H(#)sZ_!=G?J+LpMeBtr{*bpvNgniQDQ`*c{Ie51nIcEmg3!SK?u_CtI|wuIsX zmx86GaS~2*|=@pWQi&M|CxwuBMI6%~?Bk!K*#9{fo{nHmAd>;!%j( zU^`>1WiHC-YW6tE%lFi*_OXX%I$nd_Hjc9qc9TmixxFZ7>w_J%**<~(5I>wwA2NE-`?cLfEt0ni_TxGum2u^}_dc!hrLBCG@HSjEe5b74U?JG++!(&X z?6GXK^Sr|=vh84D{0mqdpCIcZ?1q{Nr7oHkXgi?=1&>3CT;AhW@nZt8faS@)*t{$0 z<5oV)itSgBooYpA()5X+KU!)t1yfVJ_43nv8r_Ze?0F>AG5JzV$EWbPnBWF~wAp@M zl#0K?^);v(I0x^6pTR1y6-;$;oJ5z#v#(v|T@4)Jl?%MVhHyamo@_r@9;yfXAvJ*F zfw5@tfU)p7wDJDrbN6;f(+|$jFQ$z@eP?@Q)Vq^O9z{8sHNjGGkHL0WuMs<%`e%MV z$*WXvmrKzdLw8PYbBM#k4>*xa169!lkqhcU_PSzHi`PI??h?-KlGwqxi}#AVvhOoO zxXag@zHsZ|`}RTfeVd|VRLD}-Fzp_qDN-0*qU>a#9f&C# z3?{lVL87a?g}gc6+hV42oD=AYp_sm=ksdO_iOzAx*zY+k3B8*(tOwF@T7#k zjej#(JWtl+^%p!HfhidCkTu zEb*}180*p)05y|64E_QWz!WeR%yWH`L^me0!EW-dI*#xP{(^VNM#H~^kK&W?iHHqQ zH`Hup<3f2ai{hC2nrW4`YgP_n7PGM+^tX844LyE^u~@p;yU;%_ zhlBE7hCsS)W;@|sFODU>yRl(f z#{!#`(lY|YYEi679ZxC2ud%ZLIc72GXSz;{ja(zxCyBik)IJIDC}409yRNwkuY zWz6eZtBiK}a4*7NQ1QjeuH2*GNfYi>guP?Iuk@B@r%^JawJSxqeuMF3Q^CJrU>F((M-%`6<$bHHf+1=y z?V(5cmp9V)J6S)jXHGu$XirSk`_pT@@f2zC9BuZgaJbV>>>A?HiJw;mR?AEAZ zY101bZMHsJ?q2{ig$2|UQ|$qNDbX|T4Pegp1t$%d{d>R?kG2}724C=eE|Q5C+(&r9 zb52OYo-XHNiRUpsuTwlL=3bngXeJ?W!AMXlAP*0ai3eW-wO|660w#GdL!w7B*_R&k z&J;&@1qOo&@lN~;{7dK@)JrBJ!lmp}P_D9}63N-^tuuu$J(K{p zuKe6Pfbw_qlLgoycRAyFz`e(?hn(hHKU$_J=O1u>kG}Kgb&3q@*-{tE=%p-71QKB2 zxB!?47bFWgyaGf5)j%;A1D1IjCebtAo`)-bJ_(iRVTqw&${eOAXo~nKldr5tq4q^g zMB5yB807sR-xG%Ust@PaFUM? zlzT!CkED-;O@v{1O##@N1vDsMGl45e}JmmUz4d&5lPnQBYGQQ6u(j zr9?@6Yjd6Asi<|E6fuF0POeYMj0h$a;l}@F0%!%421o;OPy_-4Z-8gKj+E%lEQ#LE zR{X^8Fb4h(Pl89ul#)FK+5^!?T$8gWNc7fWm8tN`Ml31#`EbX~YmfHKTKf9L(taN< zX0-SOIp#;Mi>CqYR(MCIq>{%J`nWcr-m~RCUO5Xpg&qra-0^Z%*L=Qfln#Woqi)uU zCInVmqJa|SZ%A9mG@@(sow&)sbKAUKkFlpcW9w34kh)?HsEZlTii`jVhpB94(HHZs#bcP(Y4u=lrBB4Eb@&xI=j=sHyek4 zrb9F6RBQkZv{MxwX?c1BjR-U(Fvlw!10@hv#9%!IN=gLDvc{03k1VY+Y04V|egMzN zXFG%yMN3o}7J-}Om3Ro$1sVcDMkFdr8)5Frrc`iYjqr*$N8_G9+A(dzo1=@Temc9# z^UIAL^;k^xkr#^<`+MOP_M%sUCmL@Ksq!JSm-VC7AtBe|gJO=)^E&Wy)0hH02I|h* zzj-B`o@kb0`6VX1Wg}pI2MZ{XFrgkqnqF#zo{Fp#*(vgrvhhV0Pgyx+kC2UkOaB@p zQSp3%KTRJ?dEo(`-kbxk+`Q%gb5Z+`*ePd_g6^f zgDn;CjUQr-dlpR4R+wP-aHO8bc^e0{c(QgtkL$~N%{>+yueEn-=wJ zBpQEc0Aj`%EdsO(&@#XZ4a^kd@)6Du))3wh=D=4ZQsA$gfq>VD0Eh%|Z@4+!T_yy4 z;0s^=_gKYG{0^ev@3?#jEn?2ENTNcI)`p1bH7*~2FjBaPp08`JD@=EyF&s|JUkUJ|^KpTPdG_-xY8 zpBGc<*pgl}$wgf(Gr}SjEHT2oE4n7AWRd2eGk{bYg&TAm)h~1$xg;_GAOxg<7?6Y1 z0ZCjEkOjg}fX|FLE+5F3z4Y>mkUOU~6`WlvnE&m@mT&x|l9g=1j_Spr3bL9BQ7^H zRGp4T8Gbr2+v3fEhz^gp%@~rqZbIDI<%4$K-9GE-*Xx^p(4D>X{BQzgOlU*1J(Yyo zmlwG5YF}R9%5xjeEhAhS{&0;IaN!U)kt9WG(>tD%{lT3hWP;ysZu$D*VCc1X`)92C zcrrGk;QaEC&zCaVP|l8;;#+9&y*+%9V*Rc70!+RMnv)-{%-)^})h{}+u;$0Z^KD*c zMR&cwEppn`j7g~%R*gFP^icd8e$f6;oZ{`dG}=GUkCt@RE)}nTWAA@*VHr<^G`KM? zDGa`>FA|{mdb|u|BwyH0abZ7lcN7;MkACzaYtpX#qqCQMK9ex&%azq$->$Fwi*k0E zh{B1py7>U^umU|iI`~wq7F|iKl7D7JqYo#NU7qh>G~nK@sM%N7O<8*-ebOnuu)N~i zdw&Sq-Py-WFr(<;99LS?$3Qq}c~1UYjFuG{5`&aPTvVhIy-R371zUSk@r7lId3)_2 zH@AE%Ivx8Yf8Y45!XuH%MQ0aI{dy_2d-3JWwsdVv9eT9WkVB3JdVXRl-w|94PwVpZ zMh?3ow*x<)%cxP9y{38I>E&K8jwB9wuq!6&#-z z^NS~ZySO~0`0CmYd=Iu2Hz2BsP>ye;V%v(fKF2XIz7?Js!1bhP=%BXb?=mX5w52IZ zsk~DwyS+S;IO6$%xbTO&BIECEowoM&hOs;DZJl`X+1|+9yu)!%KAcQ^lYcJtQ_$IqBxHxOUF#MK?%@^Ej} zFE@8t6kgxd@&jjXZ%?NLy*;^Xz^kK+$Gtif8}{PByqM=%vl3qH4NrN#Yxs^!A=k1=n?(N>G>8us2KOGKFE<6^s`1A3YxkZ5VT>Qvymr{Cvzq-b^_*#Y& z!mpeioii98hpBxla)j$6Eyu|1IAMM^N;f??AzyC`XP?1cfXBt(c z+ET;+?HNb)88TvAlMw^PnYC!ryh*c`|KZ=8;crSM|CfEAN|Wh|UpxB;x&*lexcPWn Mb?xZp>C!~{KYq%(Z2$lO literal 0 HcmV?d00001 diff --git a/gfx/menu/wickedx/gametype_ttt.tga b/gfx/menu/wickedx/gametype_ttt.tga deleted file mode 100644 index 7fd5a53418fb292b5562e8505687e1e1f48f92d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65580 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

+PyL}q3{icXn+$Y|* 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 S!uq|>VZAwJm+wwx-Tx141Wlg+ diff --git a/notifications.cfg b/notifications.cfg index cfcff6f7c..3028b11b9 100644 --- a/notifications.cfg +++ b/notifications.cfg @@ -286,9 +286,9 @@ seta notification_INFO_SUPERWEAPON_PICKUP "1" "0 = off, 1 = print to console, 2 seta notification_INFO_TEAMCHANGE_LARGERTEAM "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" seta notification_INFO_TEAMCHANGE_NOTALLOWED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" -//LegendGuard adds ttt notifications for TTT 20-02-2021 -seta notification_INFO_TTT_TRAITOR_WIN "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" -seta notification_INFO_TTT_INNOCENT_WIN "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" +//LegendGuard adds mmm notifications for MMM 20-02-2021 +seta notification_INFO_MMM_MURDERER_WIN "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" +seta notification_INFO_MMM_CIVILIAN_WIN "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" seta notification_INFO_VERSION_BETA "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" seta notification_INFO_VERSION_OLD "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)" @@ -543,12 +543,12 @@ seta notification_CENTER_TEAMCHANGE_SPECTATE "1" "0 = off, 1 = centerprint" seta notification_CENTER_TEAMCHANGE_SUICIDE "1" "0 = off, 1 = centerprint" seta notification_CENTER_TIMEOUT_BEGINNING "1" "0 = off, 1 = centerprint" seta notification_CENTER_TIMEOUT_ENDING "1" "0 = off, 1 = centerprint" -//LegendGuard adds ttt notification for TTT 20-02-2021 -seta notification_CENTER_TTT_TRAITOR "1" "0 = off, 1 = centerprint" -seta notification_CENTER_TTT_TRAITOR_WIN "1" "0 = off, 1 = centerprint" -seta notification_CENTER_TTT_INNOCENT "1" "0 = off, 1 = centerprint" -seta notification_CENTER_TTT_INNOCENT_WIN "1" "0 = off, 1 = centerprint" -seta notification_CENTER_TTT_DETECTIVE "1" "0 = off, 1 = centerprint" +//LegendGuard adds mmm notification for MMM 20-02-2021 +seta notification_CENTER_MMM_MURDERER "1" "0 = off, 1 = centerprint" +seta notification_CENTER_MMM_MURDERER_WIN "1" "0 = off, 1 = centerprint" +seta notification_CENTER_MMM_CIVILIAN "1" "0 = off, 1 = centerprint" +seta notification_CENTER_MMM_CIVILIAN_WIN "1" "0 = off, 1 = centerprint" +seta notification_CENTER_MMM_SLEUTH "1" "0 = off, 1 = centerprint" seta notification_CENTER_VEHICLE_ENTER "1" "0 = off, 1 = centerprint" seta notification_CENTER_VEHICLE_ENTER_GUNNER "1" "0 = off, 1 = centerprint" diff --git a/qcsrc/common/ent_cs.qc b/qcsrc/common/ent_cs.qc index 5f0d78897..713ed6f99 100644 --- a/qcsrc/common/ent_cs.qc +++ b/qcsrc/common/ent_cs.qc @@ -157,11 +157,11 @@ ENTCS_PROP(SOLID, true, sv_solid, solid, ENTCS_SET_NORMAL, { WriteByte(chan, ent.sv_solid); }, { ent.sv_solid = ReadByte(); }) -//LegendGuard adds ENTCS_PROP from TTT 20-02-2021 -// gamemode specific player ttt status (independent of score and frags) -ENTCS_PROP(TTT_STATUS, true, ttt_status, ttt_status, ENTCS_SET_NORMAL, - { WriteShort(chan, ent.ttt_status); }, - { ent.ttt_status = ReadShort(); }) +//LegendGuard adds ENTCS_PROP from MMM 20-02-2021 +// gamemode specific player mmm status (independent of score and frags) +ENTCS_PROP(MMM_STATUS, true, mmm_status, mmm_status, ENTCS_SET_NORMAL, + { WriteShort(chan, ent.mmm_status); }, + { ent.mmm_status = ReadShort(); }) #ifdef SVQC diff --git a/qcsrc/common/gamemodes/gamemode/_mod.inc b/qcsrc/common/gamemodes/gamemode/_mod.inc index 759f00def..aed8d748b 100644 --- a/qcsrc/common/gamemodes/gamemode/_mod.inc +++ b/qcsrc/common/gamemodes/gamemode/_mod.inc @@ -12,8 +12,8 @@ #include #include #include +#include //LegendGuard adds _mod.inc for Murder in Megaerebus Manor 20-02-2021 #include #include #include -#include //LegendGuard adds _mod.inc for Trouble In Terrorist Town 20-02-2021 #include \ No newline at end of file diff --git a/qcsrc/common/gamemodes/gamemode/_mod.qh b/qcsrc/common/gamemodes/gamemode/_mod.qh index ef725161b..3631a218b 100644 --- a/qcsrc/common/gamemodes/gamemode/_mod.qh +++ b/qcsrc/common/gamemodes/gamemode/_mod.qh @@ -12,8 +12,8 @@ #include #include #include +#include //LegendGuard adds _mod.qh for Murder in Megaerebus Manor 20-02-2021 #include #include #include -#include //LegendGuard adds _mod.qh for Trouble In Terrorist Town 20-02-2021 #include \ No newline at end of file diff --git a/qcsrc/common/gamemodes/gamemode/mmm/_mod.inc b/qcsrc/common/gamemodes/gamemode/mmm/_mod.inc new file mode 100644 index 000000000..32ad9f796 --- /dev/null +++ b/qcsrc/common/gamemodes/gamemode/mmm/_mod.inc @@ -0,0 +1,8 @@ +// generated file; do not modify +#include +#ifdef CSQC + #include +#endif +#ifdef SVQC + #include +#endif diff --git a/qcsrc/common/gamemodes/gamemode/mmm/_mod.qh b/qcsrc/common/gamemodes/gamemode/mmm/_mod.qh new file mode 100644 index 000000000..03ae61b36 --- /dev/null +++ b/qcsrc/common/gamemodes/gamemode/mmm/_mod.qh @@ -0,0 +1,8 @@ +// generated file; do not modify +#include +#ifdef CSQC + #include +#endif +#ifdef SVQC + #include +#endif diff --git a/qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qc b/qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qc similarity index 53% rename from qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qc rename to qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qc index 8820cf1e1..888260048 100644 --- a/qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qc +++ b/qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qc @@ -1,31 +1,31 @@ -#include "cl_ttt.qh" +#include "cl_mmm.qh" #include #include -void HUD_Mod_TTT(vector pos, vector mySize) +void HUD_Mod_MMM(vector pos, vector mySize) { - mod_active = 1; // ttt should always show the mod HUD + mod_active = 1; // mmm should always show the mod HUD - int mystatus = entcs_receiver(player_localnum).ttt_status; + int mystatus = entcs_receiver(player_localnum).mmm_status; string player_text = ""; vector player_color = '1 1 1'; //string player_icon = ""; - if(mystatus == TTT_STATUS_TRAITOR) + if(mystatus == MMM_STATUS_MURDERER) { - player_text = _("Traitor"); + player_text = _("Murderer"); player_color = '1 0 0'; //player_icon = "player_red"; } - else if(mystatus == TTT_STATUS_INNOCENT) + else if(mystatus == MMM_STATUS_CIVILIAN) { - player_text = _("Innocent"); + player_text = _("Civilian"); player_color = '0 1 0'; //player_icon = "player_neutral"; } - else if(mystatus == TTT_STATUS_DETECTIVE) + else if(mystatus == MMM_STATUS_SLEUTH) { - player_text = _("Detective"); + player_text = _("Sleuth"); player_color = '0 0 1'; //player_icon = "player_blue"; } @@ -37,13 +37,13 @@ void HUD_Mod_TTT(vector pos, vector mySize) string time_text = string_null; vector timer_color = '1 1 1'; - if(!STAT(GAME_STOPPED) && !warmup_stage && STAT(TTT_ROUNDTIMER) > 0) + if(!STAT(GAME_STOPPED) && !warmup_stage && STAT(MMM_ROUNDTIMER) > 0) { - float timeleft = max(0, STAT(TTT_ROUNDTIMER) - time); + float timeleft = max(0, STAT(MMM_ROUNDTIMER) - time); timeleft = ceil(timeleft); float minutesLeft = floor(timeleft / 60); time_text = seconds_tostring(timeleft); - if(intermission_time || minutesLeft >= 5 || warmup_stage || STAT(TTT_ROUNDTIMER) == 0) + if(intermission_time || minutesLeft >= 5 || warmup_stage || STAT(MMM_ROUNDTIMER) == 0) timer_color = '1 1 1'; //white else if(minutesLeft >= 1) timer_color = '1 1 0'; //yellow @@ -61,43 +61,43 @@ void HUD_Mod_TTT(vector pos, vector mySize) } } -REGISTER_MUTATOR(cl_ttt, true); +REGISTER_MUTATOR(cl_mmm, true); -MUTATOR_HOOKFUNCTION(cl_ttt, ForcePlayercolors_Skip, CBC_ORDER_LAST) +MUTATOR_HOOKFUNCTION(cl_mmm, ForcePlayercolors_Skip, CBC_ORDER_LAST) { - if(!ISGAMETYPE(TTT)) + if(!ISGAMETYPE(MMM)) return false; entity player = M_ARGV(0, entity); entity e = entcs_receiver(player.entnum - 1); - int otherplayer_status = ((e) ? e.ttt_status : 0); - int mystatus = entcs_receiver(player_localnum).ttt_status; + int otherplayer_status = ((e) ? e.mmm_status : 0); + int mystatus = entcs_receiver(player_localnum).mmm_status; - int plcolor = TTT_COLOR_INNOCENT; // default to innocent + int plcolor = MMM_COLOR_CIVILIAN; // default to civilian - if((mystatus == TTT_STATUS_TRAITOR || intermission || STAT(GAME_STOPPED)) && otherplayer_status == TTT_STATUS_TRAITOR) + if((mystatus == MMM_STATUS_MURDERER || intermission || STAT(GAME_STOPPED)) && otherplayer_status == MMM_STATUS_MURDERER) { - plcolor = TTT_COLOR_TRAITOR; + plcolor = MMM_COLOR_MURDERER; } - //LegendGuard adds INNOCENT part 21-02-2021 - if((mystatus == TTT_STATUS_INNOCENT || intermission || STAT(GAME_STOPPED)) && otherplayer_status == TTT_STATUS_INNOCENT) + //LegendGuard adds CIVILIAN part 21-02-2021 + if((mystatus == MMM_STATUS_CIVILIAN || intermission || STAT(GAME_STOPPED)) && otherplayer_status == MMM_STATUS_CIVILIAN) { - plcolor = TTT_COLOR_INNOCENT; + plcolor = MMM_COLOR_CIVILIAN; } - //LegendGuard adds if sentence for Detective model color which will shown for everyone 21-02-2021 - if (otherplayer_status == TTT_STATUS_DETECTIVE) + //LegendGuard adds if sentence for Sleuth model color which will shown for everyone 21-02-2021 + if (otherplayer_status == MMM_STATUS_SLEUTH) { - plcolor = TTT_COLOR_DETECTIVE; + plcolor = MMM_COLOR_SLEUTH; } player.colormap = 1024 + plcolor; return true; } -MUTATOR_HOOKFUNCTION(cl_ttt, DrawScoreboard_Force) +MUTATOR_HOOKFUNCTION(cl_mmm, DrawScoreboard_Force) { - // show the scoreboard when the round ends, so players can see who the traitor was + // show the scoreboard when the round ends, so players can see who the murderer was return STAT(GAME_STOPPED); } diff --git a/qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qh b/qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qh new file mode 100644 index 000000000..154a1274a --- /dev/null +++ b/qcsrc/common/gamemodes/gamemode/mmm/cl_mmm.qh @@ -0,0 +1,3 @@ +#pragma once + +void HUD_Mod_MMM(vector pos, vector mySize); diff --git a/qcsrc/common/gamemodes/gamemode/mmm/mmm.qc b/qcsrc/common/gamemodes/gamemode/mmm/mmm.qc new file mode 100644 index 000000000..7228ebc29 --- /dev/null +++ b/qcsrc/common/gamemodes/gamemode/mmm/mmm.qc @@ -0,0 +1 @@ +#include "mmm.qh" diff --git a/qcsrc/common/gamemodes/gamemode/mmm/mmm.qh b/qcsrc/common/gamemodes/gamemode/mmm/mmm.qh new file mode 100644 index 000000000..a53794974 --- /dev/null +++ b/qcsrc/common/gamemodes/gamemode/mmm/mmm.qh @@ -0,0 +1,45 @@ +#pragma once + +#include +#include + +#ifdef CSQC +void HUD_Mod_MMM(vector pos, vector mySize); +#endif +CLASS(MurderinMegaerebusManor, Gametype) + INIT(MurderinMegaerebusManor) + { + this.gametype_init(this, _("Murder in Megaerebus Manor"),"mmm","g_mmm",GAMETYPE_FLAG_USEPOINTS,"","timelimit=30 pointlimit=20",_("A group of space civilians have murderers among them. Murderers must kill civilians, while the civilians have to try to find and kill the murderers")); + } + METHOD(MurderinMegaerebusManor, m_isAlwaysSupported, bool(Gametype this, int spawnpoints, float diameter)) + { + return true; + } + METHOD(MurderinMegaerebusManor, m_isForcedSupported, bool(Gametype this)) + { + if(!cvar("g_mmm_not_lms_maps")) + { + // if this is unset, all LMS maps support MurderinMegaerebusManor too + if(!(MapInfo_Map_supportedGametypes & this.m_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS.m_flags)) + return true; // TODO: references another gametype (alternatively, we could check which gamemodes are always enabled and append this if any are supported) + } + return false; + } +#ifdef CSQC + ATTRIB(MurderinMegaerebusManor, m_modicons, void(vector pos, vector mySize), HUD_Mod_MMM); +#endif +ENDCLASS(MurderinMegaerebusManor) +REGISTER_GAMETYPE(MMM, NEW(MurderinMegaerebusManor)); + +#ifdef GAMEQC +// shared state signalling the player's mmm status +.int mmm_status; +const int MMM_STATUS_CIVILIAN = 1; +const int MMM_STATUS_MURDERER = 2; +const int MMM_STATUS_SLEUTH = 3; + +// hardcoded player colors for mmm +const int MMM_COLOR_SLEUTH = 221; // blue +const int MMM_COLOR_CIVILIAN = 51; // green +const int MMM_COLOR_MURDERER = 68; // red +#endif diff --git a/qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qc b/qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qc similarity index 54% rename from qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qc rename to qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qc index 63c8e66b3..14795bb2c 100644 --- a/qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qc +++ b/qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qc @@ -1,30 +1,23 @@ -#include "sv_ttt.qh" - -//set g_ttt_detective_count 0.125 "number of players who will become detectives, set between 0 and 0.9 to use a multiplier of the current players, or 1 and above to specify an exact number of players" -//float autocvar_g_ttt_detective_count = 0.125; //I don't think that it won't be used... -float autocvar_g_ttt_innocent_count = 0.625; -//float autocvar_g_ttt_traitor_count = 0.25; -float autocvar_g_ttt_round_timelimit = 180; -float autocvar_g_ttt_warmup = 10; -bool autocvar_g_ttt_punish_teamkill = false; -bool autocvar_g_ttt_reward_innocent = true; -bool autocvar_g_ttt_reward_detective = true; //detective reward if investigated corpses -float autocvar_g_ttt_max_karma_points = 1000; //LegendGuard sets Karma points 21-02-2021 -float autocvar_g_ttt_min_karma_points = 400; -int autocvar_g_ttt_karma_bankick_tool = 0; //LegendGuard sets a ban tool for server admins 11-03-2021 -float autocvar_g_ttt_karma_bantime = 1800; //karma ban seconds -bool autocvar_g_ttt_karma_damageactive = true; //LegendGuard sets Karma damage setting if active 20-03-2021 - -// 27-02-2021 -// Ideas: -// Add for the corpse a role of who killed 22-03-2021 - -// Detective is a created team, this team is added inside Innocents team - -//TODO: -// detective shouldn't be attacked by innocent bots - -void ttt_FakeTimeLimit(entity e, float t) +#include "sv_mmm.qh" + +//set g_mmm_sleuth_count 0.125 "number of players who will become sleuths, set between 0 and 0.9 to use a multiplier of the current players, or 1 and above to specify an exact number of players" +//float autocvar_g_mmm_sleuth_count = 0.125; //I don't think that it won't be used... +float autocvar_g_mmm_civilian_count = 0.625; +//float autocvar_g_mmm_murderer_count = 0.25; +float autocvar_g_mmm_round_timelimit = 180; +float autocvar_g_mmm_warmup = 10; +bool autocvar_g_mmm_punish_teamkill = false; +bool autocvar_g_mmm_reward_civilian = true; +bool autocvar_g_mmm_reward_sleuth = true; //sleuth reward if investigated corpses +float autocvar_g_mmm_max_karma_points = 1000; //LegendGuard sets Karma points 21-02-2021 +float autocvar_g_mmm_min_karma_points = 400; +int autocvar_g_mmm_karma_bankick_tool = 0; //LegendGuard sets a ban tool for server admins 11-03-2021 +float autocvar_g_mmm_karma_bantime = 1800; //karma ban seconds +bool autocvar_g_mmm_karma_damageactive = true; //LegendGuard sets Karma damage setting if active 20-03-2021 + +// Sleuth is a created team, this team is added inside Civilians team + +void mmm_FakeTimeLimit(entity e, float t) { if(!IS_REAL_CLIENT(e)) return; @@ -37,7 +30,7 @@ void ttt_FakeTimeLimit(entity e, float t) else WriteCoord(MSG_ONE, (t + 1) / 60); #else - STAT(TTT_ROUNDTIMER, e) = t; + STAT(MMM_ROUNDTIMER, e) = t; #endif } @@ -46,42 +39,26 @@ void nades_Clear(entity player); void karma_Control(entity it) { float masksize = autocvar_g_ban_default_masksize; - float bantime = autocvar_g_ttt_karma_bantime; - if(it.karmapoints >= autocvar_g_ttt_max_karma_points) + float bantime = autocvar_g_mmm_karma_bantime; + if(it.karmapoints >= autocvar_g_mmm_max_karma_points) { //Resets karmapoints to maintain the maximum //PrintToChatAll("^3REWARD ^1MAXIMUM RESET"); - GameRules_scoring_add(it, TTT_KARMA, autocvar_g_ttt_max_karma_points - it.karmapoints); - it.karmapoints = autocvar_g_ttt_max_karma_points; + GameRules_scoring_add(it, MMM_KARMA, autocvar_g_mmm_max_karma_points - it.karmapoints); + it.karmapoints = autocvar_g_mmm_max_karma_points; } - else if(it.karmapoints <= autocvar_g_ttt_min_karma_points) + else if(it.karmapoints <= autocvar_g_mmm_min_karma_points) { - switch (autocvar_g_ttt_karma_bankick_tool) + switch (autocvar_g_mmm_karma_bankick_tool) { - case 0: - { - //force to spec - PutObserverInServer(it); - return; - } - case 1: - { - //kick - dropclient(it); - return; - } - case 2: - { - //ban and kick - Ban_KickBanClient(it, bantime, masksize, "Too low karma"); - return; - } - default: - { - //force to spec - PutObserverInServer(it); - return; - } + //force to spec + case 0: PutObserverInServer(it); return; + //kick + case 1: dropclient(it); return; + //ban and kick + case 2: Ban_KickBanClient(it, bantime, masksize, "Too low karma"); return; + //force to spec + default: PutObserverInServer(it); return; } } } @@ -92,56 +69,56 @@ void karmaLoseDifference(entity attacker, entity target) if (target.karmapoints < attacker.karmapoints) { float decreasekarma = - ( target.karmapoints * random() * ( 0.1 + random() ) * 0.25 ); - GameRules_scoring_add(attacker, TTT_KARMA, decreasekarma); + GameRules_scoring_add(attacker, MMM_KARMA, decreasekarma); attacker.karmapoints = attacker.karmapoints + decreasekarma; } else if (target.karmapoints > attacker.karmapoints) { float decreasekarma = - ( target.karmapoints * random() * ( 0.1 + random() ) * 0.25 ); - GameRules_scoring_add(attacker, TTT_KARMA, decreasekarma); + GameRules_scoring_add(attacker, MMM_KARMA, decreasekarma); attacker.karmapoints = attacker.karmapoints + decreasekarma; } else { float decreasekarma = - ( target.karmapoints * random() * ( 0.1 + random() ) * 0.25 ); - GameRules_scoring_add(attacker, TTT_KARMA, decreasekarma); + GameRules_scoring_add(attacker, MMM_KARMA, decreasekarma); attacker.karmapoints = attacker.karmapoints + decreasekarma; } } void karmaWinDifference(entity it) { - GameRules_scoring_add(it, SCORE, 1); // reward innocents who make it to the end of the round time limit - float increasekarma = ( autocvar_g_ttt_min_karma_points * random() * ( 0.1 + random() ) * 0.12 ); - GameRules_scoring_add(it, TTT_KARMA, increasekarma); + GameRules_scoring_add(it, SCORE, 1); // reward civilians who make it to the end of the round time limit + float increasekarma = ( autocvar_g_mmm_min_karma_points * random() * ( 0.1 + random() ) * 0.12 ); + GameRules_scoring_add(it, MMM_KARMA, increasekarma); it.karmapoints = it.karmapoints + increasekarma; } -void ttt_UpdateScores(bool timed_out) +void mmm_UpdateScores(bool timed_out) { // give players their hard-earned kills now that the round is over FOREACH_CLIENT(true, { - it.totalfrags += it.ttt_validkills; - if(it.ttt_validkills) + it.totalfrags += it.mmm_validkills; + if(it.mmm_validkills) { - GameRules_scoring_add(it, SCORE, it.ttt_validkills); + GameRules_scoring_add(it, SCORE, it.mmm_validkills); } - it.ttt_validkills = 0; + it.mmm_validkills = 0; // player survived the round if(IS_PLAYER(it) && !IS_DEAD(it)) // LegendGuard adds something for Karma 21-02-2021 { - if((autocvar_g_ttt_reward_innocent && timed_out && it.ttt_status == TTT_STATUS_INNOCENT) - || (autocvar_g_ttt_reward_innocent && !timed_out && it.ttt_status == TTT_STATUS_INNOCENT)) + if((autocvar_g_mmm_reward_civilian && timed_out && it.mmm_status == MMM_STATUS_CIVILIAN) + || (autocvar_g_mmm_reward_civilian && !timed_out && it.mmm_status == MMM_STATUS_CIVILIAN)) { karmaWinDifference(it); //PrintToChatAll(sprintf("^2REWARD ^7it.karmapoints: ^1%f", it.karmapoints)); karma_Control(it); } - //Detective reward after investigated a corpse - if((autocvar_g_ttt_reward_detective && timed_out && it.ttt_status == TTT_STATUS_DETECTIVE) - || (autocvar_g_ttt_reward_detective && !timed_out && it.ttt_status == TTT_STATUS_DETECTIVE)) + //Sleuth reward after investigated a corpse + if((autocvar_g_mmm_reward_sleuth && timed_out && it.mmm_status == MMM_STATUS_SLEUTH) + || (autocvar_g_mmm_reward_sleuth && !timed_out && it.mmm_status == MMM_STATUS_SLEUTH)) { if (it.investigated == true) { @@ -151,74 +128,73 @@ void ttt_UpdateScores(bool timed_out) karma_Control(it); } - if(it.ttt_status == TTT_STATUS_INNOCENT) + if(it.mmm_status == MMM_STATUS_CIVILIAN) { - GameRules_scoring_add(it, TTT_RESISTS, 1); karmaWinDifference(it); - //PrintToChatAll(sprintf("^2INNOCENT ^7it.karmapoints: ^1%f", it.karmapoints)); + //PrintToChatAll(sprintf("^2CIVILIAN ^7it.karmapoints: ^1%f", it.karmapoints)); karma_Control(it); } - else if(it.ttt_status == TTT_STATUS_TRAITOR) + else if(it.mmm_status == MMM_STATUS_MURDERER) { karmaWinDifference(it); - //PrintToChatAll(sprintf("^1TRAITOR ^7it.karmapoints: ^1%f", it.karmapoints)); + //PrintToChatAll(sprintf("^1MURDERER ^7it.karmapoints: ^1%f", it.karmapoints)); karma_Control(it); } } }); } -float ttt_CheckWinner() +float mmm_CheckWinner() { if(round_handler_GetEndTime() > 0 && round_handler_GetEndTime() - time <= 0) { - // if the match times out, innocents win too! - Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_TTT_INNOCENT_WIN); - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_TTT_INNOCENT_WIN); + // if the match times out, civilians win too! + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MMM_CIVILIAN_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MMM_CIVILIAN_WIN); FOREACH_CLIENT(true, { if(IS_PLAYER(it)) nades_Clear(it); - ttt_FakeTimeLimit(it, -1); + mmm_FakeTimeLimit(it, -1); }); - ttt_UpdateScores(true); + mmm_UpdateScores(true); allowed_to_spawn = false; game_stopped = true; - round_handler_Init(5, autocvar_g_ttt_warmup, autocvar_g_ttt_round_timelimit); + round_handler_Init(5, autocvar_g_mmm_warmup, autocvar_g_mmm_round_timelimit); return 1; } - int innocent_count = 0, traitor_count = 0, detective_count = 0; + int civilian_count = 0, murderer_count = 0, sleuth_count = 0; FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it), { - if(it.ttt_status == TTT_STATUS_INNOCENT) - innocent_count++; - else if(it.ttt_status == TTT_STATUS_TRAITOR) - traitor_count++; - else if(it.ttt_status == TTT_STATUS_DETECTIVE) //LegendGuard adds detective_count 20-02-2021 - detective_count++; + if(it.mmm_status == MMM_STATUS_CIVILIAN) + civilian_count++; + else if(it.mmm_status == MMM_STATUS_MURDERER) + murderer_count++; + else if(it.mmm_status == MMM_STATUS_SLEUTH) //LegendGuard adds sleuth_count 20-02-2021 + sleuth_count++; }); - if(innocent_count > 0 && traitor_count > 0) + if(civilian_count > 0 && murderer_count > 0) { return 0; } - if(traitor_count > 0) // traitors win + if(murderer_count > 0) // murderers win { - Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_TTT_TRAITOR_WIN); - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_TTT_TRAITOR_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MMM_MURDERER_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MMM_MURDERER_WIN); } - else if(innocent_count > 0) // innocents win + else if(civilian_count > 0) // civilians win { - Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_TTT_INNOCENT_WIN); - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_TTT_INNOCENT_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MMM_CIVILIAN_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MMM_CIVILIAN_WIN); } - else if (detective_count > 0 && innocent_count > 0) // detectives are same as innocents win + else if (sleuth_count > 0 && civilian_count > 0) // sleuths are same as civilians win { - Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_TTT_INNOCENT_WIN); - Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_TTT_INNOCENT_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, CENTER_MMM_CIVILIAN_WIN); + Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_MMM_CIVILIAN_WIN); } else { @@ -226,11 +202,11 @@ float ttt_CheckWinner() Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_ROUND_TIED); } - ttt_UpdateScores(false); + mmm_UpdateScores(false); allowed_to_spawn = false; game_stopped = true; - round_handler_Init(5, autocvar_g_ttt_warmup, autocvar_g_ttt_round_timelimit); + round_handler_Init(5, autocvar_g_mmm_warmup, autocvar_g_mmm_round_timelimit); FOREACH_CLIENT(true, { @@ -239,13 +215,13 @@ float ttt_CheckWinner() it.respawn_flags = RESPAWN_SILENT; //CSQC print output respawn lib.qh error fix nades_Clear(it); } - ttt_FakeTimeLimit(it, -1); + mmm_FakeTimeLimit(it, -1); }); return 1; } -void ttt_RoundStart() +void mmm_RoundStart() { allowed_to_spawn = boolean(warmup_stage); int playercount = 0; @@ -255,85 +231,89 @@ void ttt_RoundStart() if(IS_PLAYER(it) && !IS_DEAD(it)) { ++playercount; - it.ttt_status = TTT_STATUS_INNOCENT; + it.mmm_status = MMM_STATUS_CIVILIAN; } else - it.ttt_status = 0; // this is mostly a safety check; if a client manages to somehow maintain a ttt status, clear it before the round starts! - it.ttt_validkills = 0; + it.mmm_status = 0; // this is mostly a safety check; if a client manages to somehow maintain a mmm status, clear it before the round starts! + it.mmm_validkills = 0; }); - int innocent_count = bound(1, ((autocvar_g_ttt_innocent_count >= 1) ? autocvar_g_ttt_innocent_count : floor(playercount * autocvar_g_ttt_innocent_count)), playercount - 1); // 20%, but ensure at least 1 and less than total - int total_innocents = 0; - //int traitor_count = bound(1, ((autocvar_g_ttt_traitor_count >= 1) ? autocvar_g_ttt_traitor_count : floor(playercount * autocvar_g_ttt_traitor_count)), playercount - 1); // 20%, but ensure at least 1 and less than total - int total_traitors = 0; - //int detective_count = bound(1, ((autocvar_g_ttt_detective_count >= 1) ? autocvar_g_ttt_detective_count : floor(playercount * autocvar_g_ttt_detective_count)), playercount - 1); // 20%, but ensure at least 1 and less than total - int total_detectives = 0; - - //innocents TOTAL + int civilian_count = bound(1, ((autocvar_g_mmm_civilian_count >= 1) ? autocvar_g_mmm_civilian_count : floor(playercount * autocvar_g_mmm_civilian_count)), playercount - 1); // 20%, but ensure at least 1 and less than total + int total_civilians = 0; + //int murderer_count = bound(1, ((autocvar_g_mmm_murderer_count >= 1) ? autocvar_g_mmm_murderer_count : floor(playercount * autocvar_g_mmm_murderer_count)), playercount - 1); // 20%, but ensure at least 1 and less than total + int total_murderers = 0; + //int sleuth_count = bound(1, ((autocvar_g_mmm_sleuth_count >= 1) ? autocvar_g_mmm_sleuth_count : floor(playercount * autocvar_g_mmm_sleuth_count)), playercount - 1); // 20%, but ensure at least 1 and less than total + int total_sleuths = 0; + + //civilians TOTAL FOREACH_CLIENT_RANDOM(IS_PLAYER(it) && !IS_DEAD(it), { - if(total_innocents >= innocent_count) + if(total_civilians >= civilian_count) break; //LegendGuard fixes the round start again 22-03-2021 - total_innocents++; - if (total_innocents <= 1) + total_civilians++; + if (total_civilians <= 1) { - if (total_traitors <= 1) + if (total_murderers <= 1) { - total_traitors++; - it.ttt_status = TTT_STATUS_TRAITOR; + total_murderers++; + it.mmm_status = MMM_STATUS_MURDERER; } } - else if (total_innocents == 2) + else if (total_civilians == 2) { - if (total_detectives >= 1) + if (total_sleuths >= 1) break; else { - total_detectives++; - it.ttt_status = TTT_STATUS_DETECTIVE; + total_sleuths++; + it.mmm_status = MMM_STATUS_SLEUTH; } } - else if (total_innocents == 5) + else if (total_civilians == 5) { - if (total_detectives >= 2) + if (total_sleuths >= 2) break; else { - total_detectives++; - it.ttt_status = TTT_STATUS_DETECTIVE; + total_sleuths++; + it.mmm_status = MMM_STATUS_SLEUTH; } } - else if (total_innocents >= 7) + else if (total_civilians >= 7) { - if (total_detectives >= 3) + if (total_sleuths >= 3) break; - else if (total_traitors == 3) + else if (total_murderers == 3) { - total_traitors++; - it.ttt_status = TTT_STATUS_TRAITOR; + total_murderers++; + it.mmm_status = MMM_STATUS_MURDERER; } else { - total_detectives++; - it.ttt_status = TTT_STATUS_DETECTIVE; + total_sleuths++; + it.mmm_status = MMM_STATUS_SLEUTH; } } else - it.ttt_status = TTT_STATUS_TRAITOR; + { + total_murderers++; + it.mmm_status = MMM_STATUS_MURDERER; + } }); FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it), { - float totalmeankarma = ((autocvar_g_ttt_max_karma_points + autocvar_g_ttt_min_karma_points + it.karmapoints) / 3); + float totalmeankarma = ((autocvar_g_mmm_max_karma_points + autocvar_g_mmm_min_karma_points + it.karmapoints) / 3); karma_Control(it); + it.activekillerrole = false; - if(it.ttt_status == TTT_STATUS_INNOCENT) + if(it.mmm_status == MMM_STATUS_CIVILIAN) { - SetResource(it, RES_SHELLS, 50); - SetResource(it, RES_BULLETS, 70); - SetResource(it, RES_ROCKETS, 30); - SetResource(it, RES_CELLS, 60); + SetResource(it, RES_SHELLS, 10); + SetResource(it, RES_BULLETS, 20); + SetResource(it, RES_ROCKETS, 10); + SetResource(it, RES_CELLS, 10); if (it.karmapoints <= totalmeankarma) { centerprint(it, strcat(BOLD_OPERATOR, "^1KARMA WARNING!\n^3Here, have the Rifle!")); @@ -341,16 +321,16 @@ void ttt_RoundStart() } //Gives Mine Layer weapon to the player GiveWeapon(it, WEP_MINE_LAYER.m_id, OP_PLUS, 1); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_TTT_INNOCENT); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_TTT_INNOCENT); - //PrintToChatAll(sprintf("^1DEBUG^7: %s is ^2Innocent^7!", it.netname)); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_MMM_CIVILIAN); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_MMM_CIVILIAN); + //PrintToChatAll(sprintf("^1DEBUG^7: %s is ^2Civilian^7!", it.netname)); } - else if(it.ttt_status == TTT_STATUS_TRAITOR) + else if(it.mmm_status == MMM_STATUS_MURDERER) { - SetResource(it, RES_SHELLS, 20); - SetResource(it, RES_BULLETS, 60); - SetResource(it, RES_ROCKETS, 20); - SetResource(it, RES_CELLS, 40); + SetResource(it, RES_SHELLS, 10); + SetResource(it, RES_BULLETS, 20); + SetResource(it, RES_ROCKETS, 10); + SetResource(it, RES_CELLS, 10); if (it.karmapoints <= totalmeankarma) { centerprint(it, strcat(BOLD_OPERATOR, "^1KARMA WARNING!\n^3Here, have the Rifle!")); @@ -358,13 +338,13 @@ void ttt_RoundStart() } //Gives Mine Layer weapon to the player GiveWeapon(it, WEP_MINE_LAYER.m_id, OP_PLUS, 1); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_TTT_TRAITOR); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_TTT_TRAITOR); - //PrintToChatAll(sprintf("^1DEBUG^7: %s is ^1Traitor^7!", it.netname)); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_MMM_MURDERER); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_MMM_MURDERER); + //PrintToChatAll(sprintf("^1DEBUG^7: %s is ^1Murderer^7!", it.netname)); } - else if(it.ttt_status == TTT_STATUS_DETECTIVE) + else if(it.mmm_status == MMM_STATUS_SLEUTH) { - SetResource(it, RES_ROCKETS, 20); + SetResource(it, RES_ROCKETS, 10); if (it.karmapoints <= totalmeankarma) { centerprint(it, strcat(BOLD_OPERATOR, "^1KARMA WARNING!\n^3Here, have the Rifle!")); @@ -373,15 +353,15 @@ void ttt_RoundStart() //Gives Shockwave and Mine Layer weapon to the player GiveWeapon(it, WEP_SHOCKWAVE.m_id, OP_PLUS, 1); GiveWeapon(it, WEP_MINE_LAYER.m_id, OP_PLUS, 1); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_TTT_DETECTIVE); - Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_TTT_DETECTIVE); - PrintToChatAll(sprintf("%s is ^4Detective^7!", it.netname)); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_CENTER, CENTER_MMM_SLEUTH); + Send_Notification(NOTIF_ONE_ONLY, it, MSG_INFO, INFO_MMM_SLEUTH); + PrintToChatAll(sprintf("%s is ^4Sleuth^7!", it.netname)); } - ttt_FakeTimeLimit(it, round_handler_GetEndTime()); + mmm_FakeTimeLimit(it, round_handler_GetEndTime()); }); } -bool ttt_CheckPlayers() +bool mmm_CheckPlayers() { static int prev_missing_players; allowed_to_spawn = true; @@ -393,8 +373,8 @@ bool ttt_CheckPlayers() //Karma points start if (it.karmastarted != true) { - GameRules_scoring_add(it, TTT_KARMA, autocvar_g_ttt_max_karma_points - it.karmapoints); - it.karmapoints = autocvar_g_ttt_max_karma_points; + GameRules_scoring_add(it, MMM_KARMA, autocvar_g_mmm_max_karma_points - it.karmapoints); + it.karmapoints = autocvar_g_mmm_max_karma_points; it.karmastarted = true; } karma_Control(it); @@ -427,7 +407,7 @@ bool ttt_CheckPlayers() return false; } -bool ttt_isEliminated(entity e) +bool mmm_isEliminated(entity e) { if(e.caplayer == 1 && (IS_DEAD(e) || e.frags == FRAGS_PLAYER_OUT_OF_GAME)) return true; @@ -436,17 +416,16 @@ bool ttt_isEliminated(entity e) return false; } -void ttt_Initialize() // run at the start of a match, initiates game mode +void mmm_Initialize() // run at the start of a match, initiates game mode { GameRules_scoring(0, SFL_SORT_PRIO_PRIMARY, 0, { - field(SP_TTT_RESISTS, "resists", 0); - field(SP_TTT_KARMA, "karma", SFL_SORT_PRIO_SECONDARY); //LegendGuard adds Karma points in the scoreboard 22-02-2021 + field(SP_MMM_KARMA, "karma", SFL_SORT_PRIO_SECONDARY); //LegendGuard adds Karma points in the scoreboard 22-02-2021 }); allowed_to_spawn = true; - round_handler_Spawn(ttt_CheckPlayers, ttt_CheckWinner, ttt_RoundStart); - round_handler_Init(5, autocvar_g_ttt_warmup, autocvar_g_ttt_round_timelimit); - EliminatedPlayers_Init(ttt_isEliminated); + round_handler_Spawn(mmm_CheckPlayers, mmm_CheckWinner, mmm_RoundStart); + round_handler_Init(5, autocvar_g_mmm_warmup, autocvar_g_mmm_round_timelimit); + EliminatedPlayers_Init(mmm_isEliminated); } void checkWeaponDeathtype(entity target, float deathtype) @@ -456,16 +435,18 @@ void checkWeaponDeathtype(entity target, float deathtype) case WEP_ARC.m_id: case 276: case 788: target.killedwithweapon = "Impacted by the Arc's electric shock"; return; case WEP_BLASTER.m_id: case 513: target.killedwithweapon = "Blasted by the Blaster"; return; case WEP_CRYLINK.m_id: case 263: case 519: target.killedwithweapon = "Shot by the Crylink"; return; - case WEP_DEVASTATOR.m_id: case 522: target.killedwithweapon = "Bombarded by the Devastator"; return; + case WEP_DEVASTATOR.m_id: case 522: case 1546: target.killedwithweapon = "Bombarded by the Devastator"; return; case WEP_ELECTRO.m_id: case 262: case 518: case 1542: target.killedwithweapon = "Electrocuted by the Electro"; return; case WEP_FIREBALL.m_id: case 273: case 529: case 1297: target.killedwithweapon = "Burned by the Fireball"; return; - case WEP_HAGAR.m_id: target.killedwithweapon = "Gunned by the Hagar"; return; + case WEP_HAGAR.m_id: case 265: target.killedwithweapon = "Gunned by the Hagar"; return; + case WEP_HLAC.m_id: case 270: case 526: target.killedwithweapon = "Cut down with the HLAC"; return; case WEP_HOOK.m_id: case 1805: target.killedwithweapon = "Caught in Hook gravity bomb"; return; case WEP_MACHINEGUN.m_id: target.activekillerrole = true; target.killedwithweapon = "Riddled full of holes by the Machine Gun"; return; - case WEP_MINE_LAYER.m_id: target.killedwithweapon = "Exploited by the Mine Layer"; return; + case WEP_MINE_LAYER.m_id: case 517: case 1541: target.killedwithweapon = "Exploited by the Mine Layer"; return; case WEP_MORTAR.m_id: case 516: case 1284: target.killedwithweapon = "Blew up with the Mortar"; return; - case WEP_RIFLE.m_id: target.activekillerrole = true; target.killedwithweapon = "Sniped by the Rifle"; return; - case WEP_SEEKER.m_id: target.killedwithweapon = "Blasted by the Seeker"; return; + case WEP_OVERKILL_NEX.m_id: target.killedwithweapon = "Sniped by the Overkill Nex"; return; + case WEP_RIFLE.m_id: case 272: target.activekillerrole = true; target.killedwithweapon = "Sniped by the Rifle"; return; + case WEP_SEEKER.m_id: case 274: case 786: target.killedwithweapon = "Blasted by the Seeker"; return; case WEP_SHOCKWAVE.m_id: target.killedwithweapon = "Gunned down by the Shockwave"; return; case 275: target.killedwithweapon = "Knocked by the Shockwave"; return; case WEP_SHOTGUN.m_id: target.activekillerrole = true; target.killedwithweapon = "Shot by Shotgun"; return; @@ -479,6 +460,10 @@ void checkWeaponDeathtype(entity target, float deathtype) case DEATH_MIRRORDAMAGE.m_id: target.killedwithweapon = "Suicide"; return; case DEATH_SLIME.m_id: target.killedwithweapon = "Melted in slime"; return; case DEATH_TELEFRAG.m_id: target.killedwithweapon = "Telefragged"; return; + case DEATH_NADE.m_id: target.killedwithweapon = "Blown up by the nade"; return; + case DEATH_NADE_NAPALM.m_id: target.killedwithweapon = "Burned by the Napalm nade"; return; + case DEATH_NADE_ICE.m_id: target.killedwithweapon = "Frozen by the Ice nade"; return; + case DEATH_NADE_HEAL.m_id: target.killedwithweapon = "Sucked by the Heal nade"; return; default: target.killedwithweapon = "Unknown"; return; } } @@ -486,7 +471,7 @@ void checkWeaponDeathtype(entity target, float deathtype) void ReduceKarmaPointsandFrags(entity frag_attacker, entity frag_target, float frag_deathtype, entity wep_ent) { karmaLoseDifference(frag_attacker, frag_target); - GiveFrags(frag_attacker, frag_target, ((autocvar_g_ttt_punish_teamkill) ? -1 : -2), frag_deathtype, wep_ent.weaponentity_fld); + GiveFrags(frag_attacker, frag_target, ((autocvar_g_mmm_punish_teamkill) ? -1 : -2), frag_deathtype, wep_ent.weaponentity_fld); karma_Control(frag_attacker); frag_target.whokilled = frag_attacker.netname; } @@ -495,13 +480,13 @@ void ReduceKarmaPointsandFrags(entity frag_attacker, entity frag_target, float f // Hook Functions // ============== -MUTATOR_HOOKFUNCTION(ttt, ClientObituary) +MUTATOR_HOOKFUNCTION(mmm, ClientObituary) { // LegendGuard's IDEA: To adjust the grade of severity of karma, // we could add if sentence per weapons and adjust each weapon attack // its own grade. Instead doing random decrease grade 22-02-2021 - // in ttt, announcing a frag would tell everyone who the traitor is + // in mmm, announcing a frag would tell everyone who the murderer is entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); @@ -514,75 +499,80 @@ MUTATOR_HOOKFUNCTION(ttt, ClientObituary) checkWeaponDeathtype(frag_target, frag_deathtype); // "team" kill, a point is awarded to the player by default so we must take it away plus an extra one // unless the player is going to be punished for suicide, in which case just remove one - if(frag_attacker.ttt_status == frag_target.ttt_status) + if(frag_attacker.mmm_status == frag_target.mmm_status) { //PrintToChatAll("^1DEBUG^7: A ^2PLAYER^7 has fragged a ^2PLAYER OF HIS OWN TEAM^7, TOO BAD!"); ReduceKarmaPointsandFrags(frag_attacker, frag_target, frag_deathtype, wep_ent); - switch (frag_attacker.ttt_status) + switch (frag_attacker.mmm_status) { - case TTT_STATUS_INNOCENT: frag_target.killerrole = "\n^3Killer role: ^2Innocent"; return; - case TTT_STATUS_TRAITOR: frag_target.killerrole = "\n^3Killer role: ^1Traitor"; return; - case TTT_STATUS_DETECTIVE: frag_target.killerrole = "\n^3Killer role: ^4Detective"; return; + case MMM_STATUS_CIVILIAN: frag_target.killerrole = "\n^3Killer role: ^2Civilian"; return; + case MMM_STATUS_MURDERER: frag_target.killerrole = "\n^3Killer role: ^1Murderer"; return; + case MMM_STATUS_SLEUTH: frag_target.killerrole = "\n^3Killer role: ^4Sleuth"; return; default: return; } //PrintToChatAll(sprintf("frag_attacker.karmapoints: ^1%f", frag_attacker.karmapoints)); } - if(frag_attacker.ttt_status == TTT_STATUS_DETECTIVE) + if(frag_attacker.mmm_status == MMM_STATUS_SLEUTH) { - if (frag_target.ttt_status == TTT_STATUS_INNOCENT || frag_target.ttt_status == TTT_STATUS_DETECTIVE) + if (frag_target.mmm_status == MMM_STATUS_CIVILIAN || frag_target.mmm_status == MMM_STATUS_SLEUTH) { - //PrintToChatAll("^1DEBUG^7: A ^4Detective^7 fragged an ^2Innocent^7/^4Detective^7, TOO BAD!"); + //PrintToChatAll("^1DEBUG^7: A ^4Sleuth^7 fragged an ^2Civilian^7/^4Sleuth^7, TOO BAD!"); ReduceKarmaPointsandFrags(frag_attacker, frag_target, frag_deathtype, wep_ent); - frag_target.killerrole = "\n^3Killer role: ^4Detective"; + frag_target.killerrole = "\n^3Killer role: ^4Sleuth"; //PrintToChatAll(sprintf("frag_attacker.karmapoints: ^1%f", frag_attacker.karmapoints)); } else { frag_target.whokilled = frag_attacker.netname; - frag_target.killerrole = "\n^3Killer role: ^4Detective"; + frag_target.killerrole = "\n^3Killer role: ^4Sleuth"; } } - if (frag_attacker.ttt_status == TTT_STATUS_INNOCENT) + if (frag_attacker.mmm_status == MMM_STATUS_CIVILIAN) { - if (frag_target.ttt_status == TTT_STATUS_DETECTIVE) + if (frag_target.mmm_status == MMM_STATUS_SLEUTH) { - //PrintToChatAll("^1DEBUG^7: An ^2Innocent^7 fragged a ^4Detective^7, TOO BAD!"); + //PrintToChatAll("^1DEBUG^7: An ^2Civilian^7 fragged a ^4Sleuth^7, TOO BAD!"); ReduceKarmaPointsandFrags(frag_attacker, frag_target, frag_deathtype, wep_ent); - frag_target.killerrole = "\n^3Killer role: ^2Innocent"; + frag_target.killerrole = "\n^3Killer role: ^2Civilian"; } else { frag_target.whokilled = frag_attacker.netname; - frag_target.killerrole = "\n^3Killer role: ^2Innocent"; + frag_target.killerrole = "\n^3Killer role: ^2Civilian"; } } - if (frag_attacker.ttt_status == TTT_STATUS_TRAITOR) + if (frag_attacker.mmm_status == MMM_STATUS_MURDERER) { - if (frag_target.ttt_status == TTT_STATUS_INNOCENT) + if (frag_target.mmm_status == MMM_STATUS_CIVILIAN) { frag_target.whokilled = frag_attacker.netname; - frag_target.killerrole = "\n^3Killer role: ^1Traitor"; + frag_target.killerrole = "\n^3Killer role: ^1Murderer"; } else { frag_target.whokilled = frag_attacker.netname; - frag_target.killerrole = "\n^3Killer role: ^1Traitor"; + frag_target.killerrole = "\n^3Killer role: ^1Murderer"; } } - //if ttt_status is 1, means innocent, 2 means traitor, 3 means detective, TODO: the bots: frag_attacker(1) shouldn't attack to frag_target(3) - //PrintToChatAll(sprintf("^1DEBUG^7: frag_attacker.ttt_status is ^3%s^7",ftos(frag_attacker.ttt_status))); - //PrintToChatAll(sprintf("^1DEBUG^7: frag_target.ttt_status is ^3%s^7",ftos(frag_target.ttt_status))); + //if mmm_status is 1, means civilian, 2 means murderer, 3 means sleuth, TODO: the bots: frag_attacker(1) shouldn't attack to frag_target(3) + //PrintToChatAll(sprintf("^1DEBUG^7: frag_attacker.mmm_status is ^3%s^7",ftos(frag_attacker.mmm_status))); + //PrintToChatAll(sprintf("^1DEBUG^7: frag_target.mmm_status is ^3%s^7",ftos(frag_target.mmm_status))); + } + else + { + float frag_deathtype = M_ARGV(3, float); + checkWeaponDeathtype(frag_target, frag_deathtype); } - //TODO: try to do a "find out" if a detective can see who fragged to who if possible 21-02-2021 + //TODO: try to do a "find out" if a sleuth can see who fragged to who if possible 21-02-2021 M_ARGV(5, bool) = true; // anonymous attacker } //karma weapon damage, halve the damage attack when player has low karma 20-03-2021 -MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) +MUTATOR_HOOKFUNCTION(mmm, Damage_Calculate) { entity attacker = M_ARGV(1, entity); entity target = M_ARGV(2, entity); @@ -591,19 +581,19 @@ MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) vector force = M_ARGV(6, vector); string corpsemessagestrcat = ""; - if (autocvar_g_ttt_karma_damageactive != false) + if (autocvar_g_mmm_karma_damageactive != false) { if (IS_PLAYER(attacker)) { if(target == attacker) // damage done to yourself { - damage /= autocvar_g_weapondamagefactor / (attacker.karmapoints / autocvar_g_ttt_max_karma_points); - force /= autocvar_g_weaponforcefactor / (attacker.karmapoints / autocvar_g_ttt_max_karma_points); + damage /= autocvar_g_weapondamagefactor / (attacker.karmapoints / autocvar_g_mmm_max_karma_points); + force /= autocvar_g_weaponforcefactor / (attacker.karmapoints / autocvar_g_mmm_max_karma_points); } else if (target != attacker) { - damage /= autocvar_g_weapondamagefactor / (attacker.karmapoints / autocvar_g_ttt_max_karma_points); - force /= autocvar_g_weaponforcefactor / (attacker.karmapoints / autocvar_g_ttt_max_karma_points); + damage /= autocvar_g_weapondamagefactor / (attacker.karmapoints / autocvar_g_mmm_max_karma_points); + force /= autocvar_g_weaponforcefactor / (attacker.karmapoints / autocvar_g_mmm_max_karma_points); } else { @@ -613,8 +603,8 @@ MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) } } - //DETECTIVE CORPSE DETECTION SKILL 21-03-2021 - if (attacker.ttt_status == TTT_STATUS_DETECTIVE) + //SLEUTH CORPSE DETECTION SKILL 21-03-2021 + if (attacker.mmm_status == MMM_STATUS_SLEUTH) { if(IS_DEAD(target)) { @@ -625,7 +615,10 @@ MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) target.killedwithweapon = "UNKNOWN CAUSE"; if (target.activekillerrole != true) + { target.killerrole = ""; + target.activekillerrole = false; + } string killedbyphrase = strcat("\n^3Killed by:^7 ", target.whokilled, target.killerrole); string wepkilledphrase = strcat("\n^3Cause:^7 ", target.killedwithweapon); @@ -633,26 +626,26 @@ MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) { killedbyphrase = ""; if (target.killedwithweapon == "") - wepkilledphrase = "\n^3Cause:^7 UNCLEAR"; + wepkilledphrase = "\n^3Cause:^7 UNKNOWN CAUSE"; } damage = 0; force = '0 0 0'; - if (target.ttt_status == TTT_STATUS_INNOCENT) + if (target.mmm_status == MMM_STATUS_CIVILIAN) { //try to add centerprint message for chat privately if possible - corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^2Innocent", killedbyphrase, wepkilledphrase); - centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^2Innocent\n", "^1Killed by^3:^7 ", target.whokilled))); + corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^2Civilian", killedbyphrase, wepkilledphrase); + centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^2Civilian\n", "^1Killed by^3:^7 ", target.whokilled))); } - else if (target.ttt_status == TTT_STATUS_TRAITOR) + else if (target.mmm_status == MMM_STATUS_MURDERER) { - corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^1Traitor", killedbyphrase, wepkilledphrase); - centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^1Traitor\n", "^1Killed by^3:^7 ", target.whokilled))); + corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^1Murderer", killedbyphrase, wepkilledphrase); + centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^1Murderer\n", "^1Killed by^3:^7 ", target.whokilled))); } - else if (target.ttt_status == TTT_STATUS_DETECTIVE) + else if (target.mmm_status == MMM_STATUS_SLEUTH) { - corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^4Detective", killedbyphrase, wepkilledphrase); - centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^4Detective\n", "^1Killed by^3:^7 ", target.whokilled))); + corpsemessagestrcat = strcat("\n^3Name:^7 ", target.netname, "\n^3Role: ^4Sleuth", killedbyphrase, wepkilledphrase); + centerprint(attacker, strcat(BOLD_OPERATOR, corpsemessagestrcat));//("\n^6Name^3:^7 ", target.netname, "\n^5Role^3: ^4Sleuth\n", "^1Killed by^3:^7 ", target.whokilled))); } attacker.investigated = true; } @@ -663,7 +656,7 @@ MUTATOR_HOOKFUNCTION(ttt, Damage_Calculate) M_ARGV(6, vector) = force; } -MUTATOR_HOOKFUNCTION(ttt, PlayerPreThink) +MUTATOR_HOOKFUNCTION(mmm, PlayerPreThink) { entity player = M_ARGV(0, entity); @@ -671,14 +664,14 @@ MUTATOR_HOOKFUNCTION(ttt, PlayerPreThink) { // update the scoreboard colour display to out the real killer at the end of the round // running this every frame to avoid cheats - int plcolor = TTT_COLOR_INNOCENT; - if(player.ttt_status == TTT_STATUS_INNOCENT && game_stopped) //Innocent status by default - plcolor = TTT_COLOR_INNOCENT; - if(player.ttt_status == TTT_STATUS_TRAITOR && game_stopped) - plcolor = TTT_COLOR_TRAITOR; - //LegendGuard adds for Detective 21-02-2021 - if(player.ttt_status == TTT_STATUS_DETECTIVE)// && game_stopped) - plcolor = TTT_COLOR_DETECTIVE; + int plcolor = MMM_COLOR_CIVILIAN; + if(player.mmm_status == MMM_STATUS_CIVILIAN && game_stopped) //Civilian status by default + plcolor = MMM_COLOR_CIVILIAN; + if(player.mmm_status == MMM_STATUS_MURDERER && game_stopped) + plcolor = MMM_COLOR_MURDERER; + //LegendGuard adds for Sleuth 21-02-2021 + if(player.mmm_status == MMM_STATUS_SLEUTH)// && game_stopped) + plcolor = MMM_COLOR_SLEUTH; setcolor(player, plcolor); } @@ -692,18 +685,18 @@ MUTATOR_HOOKFUNCTION(ttt, PlayerPreThink) } } -MUTATOR_HOOKFUNCTION(ttt, PlayerSpawn) +MUTATOR_HOOKFUNCTION(mmm, PlayerSpawn) { entity player = M_ARGV(0, entity); - player.ttt_status = 0; - player.ttt_validkills = 0; + player.mmm_status = 0; + player.mmm_validkills = 0; player.caplayer = 1; if (!warmup_stage) eliminatedPlayers.SendFlags |= 1; } -MUTATOR_HOOKFUNCTION(ttt, ForbidSpawn) +MUTATOR_HOOKFUNCTION(mmm, ForbidSpawn) { entity player = M_ARGV(0, entity); @@ -715,7 +708,7 @@ MUTATOR_HOOKFUNCTION(ttt, ForbidSpawn) return false; } -MUTATOR_HOOKFUNCTION(ttt, PutClientInServer) +MUTATOR_HOOKFUNCTION(mmm, PutClientInServer) { entity player = M_ARGV(0, entity); @@ -730,12 +723,12 @@ MUTATOR_HOOKFUNCTION(ttt, PutClientInServer) } } -MUTATOR_HOOKFUNCTION(ttt, reset_map_players) +MUTATOR_HOOKFUNCTION(mmm, reset_map_players) { FOREACH_CLIENT(true, { CS(it).killcount = 0; - it.ttt_status = 0; - ttt_FakeTimeLimit(it, -1); // restore original timelimit + it.mmm_status = 0; + mmm_FakeTimeLimit(it, -1); // restore original timelimit if (!it.caplayer && IS_BOT_CLIENT(it)) it.caplayer = 1; if (it.caplayer) @@ -750,17 +743,17 @@ MUTATOR_HOOKFUNCTION(ttt, reset_map_players) return true; } -MUTATOR_HOOKFUNCTION(ttt, reset_map_global) +MUTATOR_HOOKFUNCTION(mmm, reset_map_global) { allowed_to_spawn = true; return true; } -entity ttt_LastPlayerForTeam(entity this) +entity mmm_LastPlayerForTeam(entity this) { entity last_pl = NULL; FOREACH_CLIENT(IS_PLAYER(it) && it != this, { - if (!IS_DEAD(it) && this.ttt_status == it.ttt_status) + if (!IS_DEAD(it) && this.mmm_status == it.mmm_status) { if (!last_pl) { @@ -773,23 +766,23 @@ entity ttt_LastPlayerForTeam(entity this) return last_pl; } -void ttt_LastPlayerForTeam_Notify(entity this) +void mmm_LastPlayerForTeam_Notify(entity this) { if (!warmup_stage && round_handler_IsActive() && round_handler_IsRoundStarted()) { - entity pl = ttt_LastPlayerForTeam(this); + entity pl = mmm_LastPlayerForTeam(this); if (pl) Send_Notification(NOTIF_ONE_ONLY, pl, MSG_CENTER, CENTER_ALONE); } } -MUTATOR_HOOKFUNCTION(ttt, PlayerDies) +MUTATOR_HOOKFUNCTION(mmm, PlayerDies) { entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); //float frag_deathtype = M_ARGV(3, float); - ttt_LastPlayerForTeam_Notify(frag_target); + mmm_LastPlayerForTeam_Notify(frag_target); if (!allowed_to_spawn) { frag_target.respawn_flags = RESPAWN_DENY; @@ -807,22 +800,22 @@ MUTATOR_HOOKFUNCTION(ttt, PlayerDies) bot_clear(frag_target); } - //if(frag_attacker.ttt_status == frag_target.ttt_status) + //if(frag_attacker.mmm_status == frag_target.mmm_status) // killed an ally! punishment is sentenced - if(frag_attacker.ttt_status == TTT_STATUS_DETECTIVE) + if(frag_attacker.mmm_status == MMM_STATUS_SLEUTH) { - if (frag_target.ttt_status == TTT_STATUS_INNOCENT) + if (frag_target.mmm_status == MMM_STATUS_CIVILIAN) { - //PrintToChatAll("^1DEBUG^7: ^4DETECTIVE ^1DAMAGE/DEAD^7 HAS TAKEN!"); + //PrintToChatAll("^1DEBUG^7: ^4SLEUTH ^1DAMAGE/DEAD^7 HAS TAKEN!"); //30 damage points deal Damage(frag_attacker, frag_attacker, frag_attacker, 30, DEATH_MIRRORDAMAGE.m_id, DMG_NOWEP, frag_attacker.origin, '0 0 0'); } } - if (frag_attacker.ttt_status == TTT_STATUS_INNOCENT) + if (frag_attacker.mmm_status == MMM_STATUS_CIVILIAN) { - if (frag_target.ttt_status == TTT_STATUS_DETECTIVE) + if (frag_target.mmm_status == MMM_STATUS_SLEUTH) { - //PrintToChatAll("^1DEBUG^7: ^2INNOCENT ^1DAMAGE/DEAD^7 HAS TAKEN!"); + //PrintToChatAll("^1DEBUG^7: ^2CIVILIAN ^1DAMAGE/DEAD^7 HAS TAKEN!"); //30 damage points deal Damage(frag_attacker, frag_attacker, frag_attacker, 30, DEATH_MIRRORDAMAGE.m_id, DMG_NOWEP, frag_attacker.origin, '0 0 0'); } @@ -830,22 +823,22 @@ MUTATOR_HOOKFUNCTION(ttt, PlayerDies) return true; } -MUTATOR_HOOKFUNCTION(ttt, ClientDisconnect) +MUTATOR_HOOKFUNCTION(mmm, ClientDisconnect) { entity player = M_ARGV(0, entity); if (IS_PLAYER(player) && !IS_DEAD(player)) - ttt_LastPlayerForTeam_Notify(player); + mmm_LastPlayerForTeam_Notify(player); return true; } -MUTATOR_HOOKFUNCTION(ttt, MakePlayerObserver) +MUTATOR_HOOKFUNCTION(mmm, MakePlayerObserver) { // LegendGuard, here is where spectators shouldn't talk to any players to say the hints or who is who 21-10-2021 entity player = M_ARGV(0, entity); if (IS_PLAYER(player) && !IS_DEAD(player)) - ttt_LastPlayerForTeam_Notify(player); + mmm_LastPlayerForTeam_Notify(player); if (player.killindicator_teamchange == -2) // player wants to spectate player.caplayer = 0; if (player.caplayer) @@ -854,44 +847,44 @@ MUTATOR_HOOKFUNCTION(ttt, MakePlayerObserver) eliminatedPlayers.SendFlags |= 1; if (!player.caplayer) { - player.ttt_validkills = 0; - player.ttt_status = 0; - ttt_FakeTimeLimit(player, -1); // restore original timelimit + player.mmm_validkills = 0; + player.mmm_status = 0; + mmm_FakeTimeLimit(player, -1); // restore original timelimit return false; // allow team reset } return true; // prevent team reset } -MUTATOR_HOOKFUNCTION(ttt, Scores_CountFragsRemaining) +MUTATOR_HOOKFUNCTION(mmm, Scores_CountFragsRemaining) { // announce remaining frags? return true; } -MUTATOR_HOOKFUNCTION(ttt, GiveFragsForKill, CBC_ORDER_FIRST) +MUTATOR_HOOKFUNCTION(mmm, GiveFragsForKill, CBC_ORDER_FIRST) { entity frag_attacker = M_ARGV(0, entity); if(!warmup_stage && round_handler_IsActive() && round_handler_IsRoundStarted()) - frag_attacker.ttt_validkills += M_ARGV(2, float); + frag_attacker.mmm_validkills += M_ARGV(2, float); M_ARGV(2, float) = 0; // score will be given to the winner when the round ends return true; } -MUTATOR_HOOKFUNCTION(ttt, AddPlayerScore) +MUTATOR_HOOKFUNCTION(mmm, AddPlayerScore) { // add scorefield for scoreboard here entity scorefield = M_ARGV(0, entity); if(scorefield == SP_KILLS || scorefield == SP_DEATHS || scorefield == SP_SUICIDES || scorefield == SP_DMG || scorefield == SP_DMGTAKEN) - M_ARGV(1, float) = 0; // don't report that the player has killed or been killed, that would out them as a traitor! + M_ARGV(1, float) = 0; // don't report that the player has killed or been killed, that would out them as a murderer! } -MUTATOR_HOOKFUNCTION(ttt, CalculateRespawnTime) +MUTATOR_HOOKFUNCTION(mmm, CalculateRespawnTime) { // no respawn calculations needed, player is forced to spectate anyway return true; } -MUTATOR_HOOKFUNCTION(ttt, Bot_FixCount, CBC_ORDER_EXCLUSIVE) +MUTATOR_HOOKFUNCTION(mmm, Bot_FixCount, CBC_ORDER_EXCLUSIVE) { FOREACH_CLIENT(IS_REAL_CLIENT(it), { if (IS_PLAYER(it) || it.caplayer == 1) @@ -901,7 +894,7 @@ MUTATOR_HOOKFUNCTION(ttt, Bot_FixCount, CBC_ORDER_EXCLUSIVE) return true; } -MUTATOR_HOOKFUNCTION(ttt, ClientCommand_Spectate) +MUTATOR_HOOKFUNCTION(mmm, ClientCommand_Spectate) { entity player = M_ARGV(0, entity); @@ -916,27 +909,27 @@ MUTATOR_HOOKFUNCTION(ttt, ClientCommand_Spectate) return MUT_SPECCMD_CONTINUE; } -MUTATOR_HOOKFUNCTION(ttt, GetPlayerStatus) +MUTATOR_HOOKFUNCTION(mmm, GetPlayerStatus) { entity player = M_ARGV(0, entity); return player.caplayer == 1; } -MUTATOR_HOOKFUNCTION(ttt, BotShouldAttack) +MUTATOR_HOOKFUNCTION(mmm, BotShouldAttack) { - //TODO: LegendGuard, try bots attack to innocents vs traitors, detectives must be on innocents team 21-02-2021 entity bot = M_ARGV(0, entity); entity targ = M_ARGV(1, entity); - if(targ.ttt_status == bot.ttt_status) + if(targ.mmm_status == bot.mmm_status) { return true; } - if(targ.ttt_status == TTT_STATUS_DETECTIVE) + // LegendGuard fixed the problem of Sleuths and Civilians attacking each other 26-03-2021 + if(bot.mmm_status == MMM_STATUS_SLEUTH) { - if(bot.ttt_status == TTT_STATUS_INNOCENT) - return false; + if(targ.mmm_status == MMM_STATUS_CIVILIAN) + return true; } } diff --git a/qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qh b/qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qh similarity index 84% rename from qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qh rename to qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qh index 5046924f6..e5eca2115 100644 --- a/qcsrc/common/gamemodes/gamemode/ttt/sv_ttt.qh +++ b/qcsrc/common/gamemodes/gamemode/mmm/sv_mmm.qh @@ -2,19 +2,19 @@ #include #include -void ttt_Initialize(); +void mmm_Initialize(); -REGISTER_MUTATOR(ttt, false) +REGISTER_MUTATOR(mmm, false) { MUTATOR_STATIC(); MUTATOR_ONADD { - ttt_Initialize(); + mmm_Initialize(); } return false; } -.int ttt_validkills; // store the player's valid kills to be given at the end of the match (avoid exposing their score until then) +.int mmm_validkills; // store the player's valid kills to be given at the end of the match (avoid exposing their score until then) .float karmapoints; //LegendGuard adds karma points to store player status 22-02-2021 .string whokilled; //LegendGuard sets a variable to know who killed who 22-03-2021 .string killerrole; //LegendGuard sets a variable to identify killer role 25-03-2021 diff --git a/qcsrc/common/gamemodes/gamemode/ttt/_mod.inc b/qcsrc/common/gamemodes/gamemode/ttt/_mod.inc deleted file mode 100644 index 5574f4aaf..000000000 --- a/qcsrc/common/gamemodes/gamemode/ttt/_mod.inc +++ /dev/null @@ -1,8 +0,0 @@ -// generated file; do not modify -#include -#ifdef CSQC - #include -#endif -#ifdef SVQC - #include -#endif diff --git a/qcsrc/common/gamemodes/gamemode/ttt/_mod.qh b/qcsrc/common/gamemodes/gamemode/ttt/_mod.qh deleted file mode 100644 index 09983d725..000000000 --- a/qcsrc/common/gamemodes/gamemode/ttt/_mod.qh +++ /dev/null @@ -1,8 +0,0 @@ -// generated file; do not modify -#include -#ifdef CSQC - #include -#endif -#ifdef SVQC - #include -#endif diff --git a/qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qh b/qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qh deleted file mode 100644 index 508ddf2ac..000000000 --- a/qcsrc/common/gamemodes/gamemode/ttt/cl_ttt.qh +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once - -void HUD_Mod_TTT(vector pos, vector mySize); diff --git a/qcsrc/common/gamemodes/gamemode/ttt/ttt.qc b/qcsrc/common/gamemodes/gamemode/ttt/ttt.qc deleted file mode 100644 index 0e43e0925..000000000 --- a/qcsrc/common/gamemodes/gamemode/ttt/ttt.qc +++ /dev/null @@ -1 +0,0 @@ -#include "ttt.qh" diff --git a/qcsrc/common/gamemodes/gamemode/ttt/ttt.qh b/qcsrc/common/gamemodes/gamemode/ttt/ttt.qh deleted file mode 100644 index 08c483173..000000000 --- a/qcsrc/common/gamemodes/gamemode/ttt/ttt.qh +++ /dev/null @@ -1,46 +0,0 @@ -#pragma once - -#include -#include - -#ifdef CSQC -void HUD_Mod_TTT(vector pos, vector mySize); -#endif -CLASS(TroubleinTerroristTown, Gametype) - INIT(TroubleinTerroristTown) - { - this.gametype_init(this, _("Trouble in Terrorist Town"),"ttt","g_ttt",GAMETYPE_FLAG_USEPOINTS,"","timelimit=30 pointlimit=20",_("A group of space terrorists have traitors among them. Traitors must kill terrorists, while the terrorists have to try to find and kill the traitors")); - } - METHOD(TroubleinTerroristTown, m_isAlwaysSupported, bool(Gametype this, int spawnpoints, float diameter)) - { - return true; - } - METHOD(TroubleinTerroristTown, m_isForcedSupported, bool(Gametype this)) - { - if(!cvar("g_ttt_not_lms_maps")) - { - // if this is unset, all LMS maps support TroubleinTerroristTown too - if(!(MapInfo_Map_supportedGametypes & this.m_flags) && (MapInfo_Map_supportedGametypes & MAPINFO_TYPE_LMS.m_flags)) - return true; // TODO: references another gametype (alternatively, we could check which gamemodes are always enabled and append this if any are supported) - } - return false; - } -#ifdef CSQC - ATTRIB(TroubleinTerroristTown, m_modicons, void(vector pos, vector mySize), HUD_Mod_TTT); -#endif -ENDCLASS(TroubleinTerroristTown) -REGISTER_GAMETYPE(TTT, NEW(TroubleinTerroristTown)); - -#ifdef GAMEQC -// shared state signalling the player's ttt status -//TODO: add Detective STATUS and COLOR 20-02-2021 -.int ttt_status; -const int TTT_STATUS_INNOCENT = 1; -const int TTT_STATUS_TRAITOR = 2; -const int TTT_STATUS_DETECTIVE = 3; - -// hardcoded player colors for ttt -const int TTT_COLOR_DETECTIVE = 221; // blue -const int TTT_COLOR_INNOCENT = 51; // green -const int TTT_COLOR_TRAITOR = 68; // red -#endif diff --git a/qcsrc/common/notifications/all.inc b/qcsrc/common/notifications/all.inc index 7a43de5a9..f192e5f11 100644 --- a/qcsrc/common/notifications/all.inc +++ b/qcsrc/common/notifications/all.inc @@ -439,17 +439,17 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input != MSG_INFO_NOTIF(TEAMCHANGE_LARGERTEAM, N_CONSOLE, 0, 0, "", "", "", _("^BGYou cannot change to a larger team"), "") MSG_INFO_NOTIF(TEAMCHANGE_NOTALLOWED, N_CONSOLE, 0, 0, "", "", "", _("^BGYou are not allowed to change teams"), "") - //LegendGuard adds MSG_INFO_NOTIF for TTT 20-02-2021 + //LegendGuard adds MSG_INFO_NOTIF for MMM 20-02-2021 //LegendGuard adds N_CHATCON option 20-03-2021 - MSG_INFO_NOTIF(TTT_TRAITOR, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^K1Traitor^BG!"), "") - MSG_INFO_NOTIF(TTT_TRAITOR_WIN, N_CONSOLE, 0, 0, "", "", "", _("^K1Traitors^BG win the round"), "") + MSG_INFO_NOTIF(MMM_MURDERER, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^K1Murderer^BG!"), "") + MSG_INFO_NOTIF(MMM_MURDERER_WIN, N_CONSOLE, 0, 0, "", "", "", _("^K1Murderers^BG win the round"), "") //LegendGuard adds N_CHATCON option 20-03-2021 - MSG_INFO_NOTIF(TTT_INNOCENT, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^F1Innocent^BG!"), "") - MSG_INFO_NOTIF(TTT_INNOCENT_WIN, N_CONSOLE, 0, 0, "", "", "", _("^F1Innocents^BG win the round"), "") + MSG_INFO_NOTIF(MMM_CIVILIAN, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^F1Civilian^BG!"), "") + MSG_INFO_NOTIF(MMM_CIVILIAN_WIN, N_CONSOLE, 0, 0, "", "", "", _("^F1Civilians^BG win the round"), "") //LegendGuard adds N_CHATCON option 20-03-2021 - MSG_INFO_NOTIF(TTT_DETECTIVE, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^4Detective^BG!"), "") + MSG_INFO_NOTIF(MMM_SLEUTH, N_CHATCON, 0, 0, "", "", "", _("^BGYou are ^4Sleuth^BG!"), "") MSG_INFO_NOTIF(VERSION_BETA, N_CONSOLE, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s (beta)^BG, you have ^F2Xonotic %s"), "") MSG_INFO_NOTIF(VERSION_OLD, N_CHATCON, 2, 0, "s1 s2", "", "", _("^F4NOTE: ^BGThe server is running ^F1Xonotic %s^BG, you have ^F2Xonotic %s"), "") @@ -781,14 +781,14 @@ string multiteam_info_sprintf(string input, string teamname) { return ((input != MSG_CENTER_NOTIF(TIMEOUT_BEGINNING, N_ENABLE, 0, 1, "", CPID_TIMEOUT, "1 f1", _("^F4Timeout begins in ^COUNT"), "") MSG_CENTER_NOTIF(TIMEOUT_ENDING, N_ENABLE, 0, 1, "", CPID_TIMEIN, "1 f1", _("^F4Timeout ends in ^COUNT"), "") - //LegendGuard adds MSG_CENTER_NOTIF for TTT 20-02-2021 - MSG_CENTER_NOTIF(TTT_TRAITOR, N_ENABLE, 0, 0, "", CPID_TTT, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^K1Traitor^BG! Kill all the innocents without raising suspicion!")), "") - MSG_CENTER_NOTIF(TTT_TRAITOR_WIN, N_ENABLE, 0, 0, "", CPID_ROUND, "0 0", _("^K1Traitors^BG win the round"), "") + //LegendGuard adds MSG_CENTER_NOTIF for MMM 20-02-2021 + MSG_CENTER_NOTIF(MMM_MURDERER, N_ENABLE, 0, 0, "", CPID_MMM, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^K1Murderer^BG! Kill all the civilians without raising suspicion!")), "") + MSG_CENTER_NOTIF(MMM_MURDERER_WIN, N_ENABLE, 0, 0, "", CPID_ROUND, "0 0", _("^K1Murderers^BG win the round"), "") - MSG_CENTER_NOTIF(TTT_INNOCENT, N_ENABLE, 0, 0, "", CPID_TTT, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^F1Innocent^BG! Try to find out who are traitors and survive until time is up!")), "") - MSG_CENTER_NOTIF(TTT_INNOCENT_WIN, N_ENABLE, 0, 0, "", CPID_ROUND, "0 0", _("^F1Innocents^BG win the round"), "") + MSG_CENTER_NOTIF(MMM_CIVILIAN, N_ENABLE, 0, 0, "", CPID_MMM, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^F1Civilian^BG! Try to find out who are murderers and survive until time is up!")), "") + MSG_CENTER_NOTIF(MMM_CIVILIAN_WIN, N_ENABLE, 0, 0, "", CPID_ROUND, "0 0", _("^F1Civilians^BG win the round"), "") - MSG_CENTER_NOTIF(TTT_DETECTIVE, N_ENABLE, 0, 0, "", CPID_TTT, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^4Detective^BG! Find out who are traitors and protect the innocents!")), "") + MSG_CENTER_NOTIF(MMM_SLEUTH, N_ENABLE, 0, 0, "", CPID_MMM, "5 0", strcat(BOLD_OPERATOR, _("^BGYou are ^4Sleuth^BG! Find out who are murderers and protect the civilians!")), "") MSG_CENTER_NOTIF(JOIN_PREVENT_MINIGAME, N_ENABLE, 0, 0, "", CPID_Null, "0 0", _("^K1Cannot join given minigame session!"), "" ) diff --git a/qcsrc/common/notifications/all.qh b/qcsrc/common/notifications/all.qh index 8c921055a..64b11c7be 100644 --- a/qcsrc/common/notifications/all.qh +++ b/qcsrc/common/notifications/all.qh @@ -40,7 +40,7 @@ string Get_Notif_TypeName(MSG net_type) LOG_WARNF("Get_Notif_TypeName(%d): Improper net type!", ORDINAL(net_type)); return ""; } -//LegendGuard adds CASE(CPID, TTT) after TIMEIN for TTT 20-02-2021 +//LegendGuard adds CASE(CPID, MMM) after TIMEIN for MMM 20-02-2021 ENUMCLASS(CPID) CASE(CPID, ASSAULT_ROLE) CASE(CPID, ROUND) @@ -72,7 +72,7 @@ ENUMCLASS(CPID) CASE(CPID, TEAMCHANGE) CASE(CPID, TIMEOUT) CASE(CPID, TIMEIN) - CASE(CPID, TTT) + CASE(CPID, MMM) CASE(CPID, VEHICLES) CASE(CPID, VEHICLES_OTHER) /** always last */ diff --git a/qcsrc/common/scores.qh b/qcsrc/common/scores.qh index c64eeaf89..8e1d8e61c 100644 --- a/qcsrc/common/scores.qh +++ b/qcsrc/common/scores.qh @@ -86,8 +86,7 @@ REGISTER_SP(NEXBALL_FAULTS); REGISTER_SP(ONS_TAKES); REGISTER_SP(ONS_CAPS); -REGISTER_SP(TTT_RESISTS); //LegendGuard adds REGISTER_SP for TTT 20-02-2021 //Innocents as number of suvivals -REGISTER_SP(TTT_KARMA); //LegendGuard adds REGISTER_SP for TTT Karma points 21-02-2021 +REGISTER_SP(MMM_KARMA); //LegendGuard adds REGISTER_SP for MMM Karma points 21-02-2021 #endif diff --git a/qcsrc/common/stats.qh b/qcsrc/common/stats.qh index 880b378c8..2ce953cd5 100644 --- a/qcsrc/common/stats.qh +++ b/qcsrc/common/stats.qh @@ -435,4 +435,4 @@ REGISTER_STAT(GUNALIGN, int) SPECTATE_COPYFIELD(_STAT(GUNALIGN)) #endif -REGISTER_STAT(TTT_ROUNDTIMER, float) //LegendGuard adds TTT_ROUNDTIMER for TTT 20-02-2021 +REGISTER_STAT(MMM_ROUNDTIMER, float) //LegendGuard adds MMM_ROUNDTIMER for MMM 20-02-2021 diff --git a/qcsrc/menu/xonotic/util.qc b/qcsrc/menu/xonotic/util.qc index 5a98716bd..39a26956b 100644 --- a/qcsrc/menu/xonotic/util.qc +++ b/qcsrc/menu/xonotic/util.qc @@ -683,8 +683,8 @@ float updateCompression() GAMETYPE(MAPINFO_TYPE_ASSAULT) \ /* GAMETYPE(MAPINFO_TYPE_DUEL) */ \ /* GAMETYPE(MAPINFO_TYPE_INVASION) */ \ - GAMETYPE(MAPINFO_TYPE_TTT) \ - //LegendGuard adds GAMETYPE for menu for TTT 20-02-2021 + GAMETYPE(MAPINFO_TYPE_MMM) \ + //LegendGuard adds GAMETYPE for menu for MMM 20-02-2021 /**/ // hidden gametypes come last so indexing always works correctly diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index 91cb13810..7f8d1e990 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -301,8 +301,8 @@ void cvar_changes_init() BADCVAR("g_tdm"); BADCVAR("g_tdm_on_dm_maps"); BADCVAR("g_tdm_teams"); - BADCVAR("g_ttt"); - BADCVAR("g_ttt_not_dm_maps"); + BADCVAR("g_mmm"); + BADCVAR("g_mmm_not_dm_maps"); BADCVAR("g_vip"); BADCVAR("leadlimit"); BADCVAR("nextmap"); @@ -312,7 +312,7 @@ void cvar_changes_init() BADCVAR("g_mapinfo_ignore_warnings"); BADCVAR("g_maplist_ignore_sizes"); BADCVAR("g_maplist_sizes_count_bots"); - //LegendGuard adds BADCVAR(g_*) for TTT 20-02-2021 + //LegendGuard adds BADCVAR(g_*) for MMM 20-02-2021 // long BADCVAR("hostname"); -- 2.39.2