]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mutators/mutator/kick_teamkiller/sv_kick_teamkiller.qc
Merge branch 'master' into martin-t/defaults
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mutators / mutator / kick_teamkiller / sv_kick_teamkiller.qc
1 #include "sv_kick_teamkiller.qh"
2
3 float autocvar_g_kick_teamkiller_rate;
4 float autocvar_g_kick_teamkiller_lower_limit;
5
6 REGISTER_MUTATOR(kick_teamkiller, (autocvar_g_kick_teamkiller_rate > 0));
7
8 MUTATOR_HOOKFUNCTION(kick_teamkiller, PlayerDies)
9 {
10         if (!teamplay)
11         {
12                 return;
13         }
14         if (warmup_stage)
15         {
16                 return;
17         }
18         entity attacker = M_ARGV(1, entity);
19         if (!IS_REAL_CLIENT(attacker))
20         {
21                 return;
22         }
23
24         int teamkills = PlayerScore_Get(attacker, SP_TEAMKILLS);
25         // use the players actual playtime
26         float playtime = time - CS(attacker).startplaytime;
27         // rate is in teamkills/minutes, playtime in seconds
28         if (teamkills >= autocvar_g_kick_teamkiller_lower_limit &&
29             teamkills >= autocvar_g_kick_teamkiller_rate*playtime/60.0)
30         {
31                 Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_QUIT_KICK_TEAMKILL, attacker.netname);
32                 dropclient(attacker);
33         }
34 }