From: z411 Date: Mon, 19 Oct 2020 21:43:25 +0000 (-0300) Subject: Implemented endmatch announcer in teamplay X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=dabd6906d8c233040a03cc8e3d9e034d0be6f96f;p=xonotic%2Fxonotic-data.pk3dir.git Implemented endmatch announcer in teamplay --- diff --git a/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc b/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc index 6c18b2d33..84e21534a 100644 --- a/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc +++ b/qcsrc/common/gamemodes/gamemode/clanarena/sv_clanarena.qc @@ -110,7 +110,7 @@ float CA_CheckWinner() Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, APP_TEAM_NUM(winner_team, CENTER_ROUND_TEAM_WIN)); Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(winner_team, INFO_ROUND_TEAM_WIN)); - Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, APP_TEAM_NUM(winner_team, ANNCE_ROUND_TEAM_WIN)); + if(fragsleft > 1) Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, APP_TEAM_NUM(winner_team, ANNCE_ROUND_TEAM_WIN)); TeamScore_AddToTeam(winner_team, ST_CA_ROUNDS, +1); } else if(winner_team == -1) @@ -254,6 +254,12 @@ MUTATOR_HOOKFUNCTION(ca, reset_map_players) return true; } +MUTATOR_HOOKFUNCTION(ca, Scores_CountFragsRemaining) +{ + // announce remaining frags + return true; +} + MUTATOR_HOOKFUNCTION(ca, ClientConnect) { entity player = M_ARGV(0, entity); diff --git a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc index 88e16a1ad..74ccc4e25 100644 --- a/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc +++ b/qcsrc/common/gamemodes/gamemode/freezetag/sv_freezetag.qc @@ -153,7 +153,7 @@ bool freezetag_CheckWinner() Send_Notification(NOTIF_ALL, NULL, MSG_CENTER, APP_TEAM_NUM(winner_team, CENTER_ROUND_TEAM_SCORES)); Send_Notification(NOTIF_ALL, NULL, MSG_INFO, APP_TEAM_NUM(winner_team, INFO_ROUND_TEAM_SCORES)); - Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, APP_TEAM_NUM(winner_team, ANNCE_ROUND_TEAM_WIN)); + if(fragsleft > 1) Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, APP_TEAM_NUM(winner_team, ANNCE_ROUND_TEAM_WIN)); TeamScore_AddToTeam(winner_team, ST_FT_ROUNDS, +1); } else if(winner_team == -1) diff --git a/qcsrc/common/notifications/all.inc b/qcsrc/common/notifications/all.inc index 74b66e754..47139534e 100644 --- a/qcsrc/common/notifications/all.inc +++ b/qcsrc/common/notifications/all.inc @@ -94,12 +94,12 @@ #define N__ALWAYS 2 #define ANNCE_DEFTIME 2 -#define MULTITEAM_ANNCE(prefix, defaultvalue, sound, channel, volume, position) \ +#define MULTITEAM_ANNCE(prefix, defaultvalue, sound, channel, volume, position, queuetime) \ NOTIF_ADD_AUTOCVAR(ANNCE_##prefix, defaultvalue) \ - MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_1, prefix##_RED, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_1)), channel, volume, position) \ - MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_2, prefix##_BLUE, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_2)), channel, volume, position) \ - MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_3, prefix##_YELLOW, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_3)), channel, volume, position) \ - MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_4, prefix##_PINK, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_4)), channel, volume, position) + MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_1, prefix##_RED, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_1)), channel, volume, position, queuetime) \ + MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_2, prefix##_BLUE, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_2)), channel, volume, position, queuetime) \ + MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_3, prefix##_YELLOW, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_3)), channel, volume, position, queuetime) \ + MSG_ANNCE_NOTIF_TEAM(NUM_TEAM_4, prefix##_PINK, prefix, defaultvalue, sprintf(sound, strtolower(STATIC_NAME_TEAM_4)), channel, volume, position, queuetime) // MSG_ANNCE_NOTIFICATIONS MSG_ANNCE_NOTIF(ACHIEVEMENT_AIRSHOT, N_GNTLOFF, "airshot", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) @@ -221,14 +221,9 @@ MSG_ANNCE_NOTIF(LEAD_LOST, N__ALWAYS, "leadlost", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) MSG_ANNCE_NOTIF(LEAD_TIED, N__ALWAYS, "leadtied", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_WIN_RED, N__ALWAYS, "round_win_red", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_WIN_BLUE, N__ALWAYS, "round_win_blue", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_WIN_YELLOW, N__ALWAYS, "round_win_yellow", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_WIN_PINK, N__ALWAYS, "round_win_pink", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_SCORES_RED, N__ALWAYS, "scores_red", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_SCORES_BLUE, N__ALWAYS, "scores_blue", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_SCORES_YELLOW, N__ALWAYS, "scores_yellow", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) - MSG_ANNCE_NOTIF(ROUND_TEAM_SCORES_PINK, N__ALWAYS, "scores_pink", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) + MULTITEAM_ANNCE(ROUND_TEAM_WIN, N__ALWAYS, "round_win_%s", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) + MULTITEAM_ANNCE(ROUND_TEAM_SCORES, N__ALWAYS, "scores_%s", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) + MULTITEAM_ANNCE(WINS, N__ALWAYS, "wins_%s", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) MSG_ANNCE_NOTIF(ROUND_OVER, N__ALWAYS, "round_over", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) MSG_ANNCE_NOTIF(ROUND_TIED, N__ALWAYS, "round_tied", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) MSG_ANNCE_NOTIF(ALONE, N__ALWAYS, "alone", CH_INFO, VOL_BASEVOICE, ATTEN_NONE, ANNCE_DEFTIME) diff --git a/qcsrc/common/notifications/all.qh b/qcsrc/common/notifications/all.qh index b4e907ebb..1c6aa2037 100644 --- a/qcsrc/common/notifications/all.qh +++ b/qcsrc/common/notifications/all.qh @@ -767,8 +767,8 @@ Notification Get_Notif_Ent(MSG net_type, int net_name) return it; } -#define MSG_ANNCE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position) \ - MSG_ANNCE_NOTIF_(teamnum, ANNCE_##name, ANNCE_##cvarname, defaultvalue, sound, channel, volume, position) +#define MSG_ANNCE_NOTIF_TEAM(teamnum, name, cvarname, defaultvalue, sound, channel, volume, position, queuetime) \ + MSG_ANNCE_NOTIF_(teamnum, ANNCE_##name, ANNCE_##cvarname, defaultvalue, sound, channel, volume, position, queuetime) #define MSG_ANNCE_NOTIF(name, defaultvalue, sound, channel, volume, position, queuetime) \ NOTIF_ADD_AUTOCVAR(ANNCE_##name, defaultvalue) \ diff --git a/qcsrc/server/world.qc b/qcsrc/server/world.qc index 309a42123..4b930263c 100644 --- a/qcsrc/server/world.qc +++ b/qcsrc/server/world.qc @@ -1619,6 +1619,11 @@ void NextLevel() WeaponStats_Shutdown(); Kill_Notification(NOTIF_ALL, NULL, MSG_CENTER, CPID_Null); // kill all centerprints now + + // send winner notification + if(teamplay) { + Send_Notification(NOTIF_ALL, NULL, MSG_ANNCE, APP_TEAM_NUM(WinningConditionHelper_winnerteam, ANNCE_WINS)); + } if(autocvar_sv_eventlog) GameLogEcho(":gameover"); @@ -1760,7 +1765,6 @@ void ShuffleMaplist() cvar_set("g_maplist", shufflewords(autocvar_g_maplist)); } -int fragsleft_last; float WinningCondition_Scores(float limit, float leadlimit) { // TODO make everything use THIS winning condition (except LMS) @@ -1793,7 +1797,6 @@ float WinningCondition_Scores(float limit, float leadlimit) if(MUTATOR_CALLHOOK(Scores_CountFragsRemaining)) { - float fragsleft; if (checkrules_suddendeathend && time >= checkrules_suddendeathend) { fragsleft = 1; diff --git a/qcsrc/server/world.qh b/qcsrc/server/world.qh index 2e696d95e..319fdf994 100644 --- a/qcsrc/server/world.qh +++ b/qcsrc/server/world.qh @@ -16,6 +16,9 @@ string modname; string gamemode_name; +int fragsleft; +int fragsleft_last; + string clientstuff; string matchid;