]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/player.qc
Merge branch 'Mario/cts_respawn_clear' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / player.qc
index 980a0472ff0c9c550f71ede88bb6e149b397f56d..faa3c810137a4628ae82b585d43cdcbd1def147c 100644 (file)
@@ -253,7 +253,7 @@ void calculate_player_respawn_time(entity this)
                ));
                if (sdelay_small_count == 0)
                {
-                       if (g_cts)
+                       if (IS_INDEPENDENT_PLAYER(this))
                        {
                                // Players play independently. No point in requiring enemies.
                                sdelay_small_count = 1;
@@ -266,7 +266,7 @@ void calculate_player_respawn_time(entity this)
                }
                if (sdelay_large_count == 0)
                {
-                       if (g_cts)
+                       if (IS_INDEPENDENT_PLAYER(this))
                        {
                                // Players play independently. No point in requiring enemies.
                                sdelay_large_count = 1;
@@ -615,8 +615,6 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage,
                UNSET_ONGROUND(this);
                // dying animation
                this.deadflag = DEAD_DYING;
-               // clear checkpoints (prevent cheating)
-               if (this.personal) delete(this.personal);
 
                // when to allow respawn
                calculate_player_respawn_time(this);
@@ -660,6 +658,7 @@ void PlayerDamage(entity this, entity inflictor, entity attacker, float damage,
                                ATTACK_FINISHED_FOR(this, it.m_id, slot) = 0;
                        }
                ));
+               MUTATOR_CALLHOOK(PlayerDied, this);
        }
 }
 
@@ -680,6 +679,54 @@ void dedicated_print(string input)
        if (server_is_dedicated) print(input);
 }
 
+void PrintToChat(entity player, string text)
+{
+       text = strcat("\{1}^7", text, "\n");
+       sprint(player, text);
+}
+
+void DebugPrintToChat(entity player, string text)
+{
+       if (autocvar_developer)
+       {
+               PrintToChat(player, text);
+       }
+}
+
+void PrintToChatAll(string text)
+{
+       text = strcat("\{1}^7", text, "\n");
+       bprint(text);
+}
+
+void DebugPrintToChatAll(string text)
+{
+       if (autocvar_developer)
+       {
+               PrintToChatAll(text);
+       }
+}
+
+void PrintToChatTeam(int teamnum, string text)
+{
+       text = strcat("\{1}^7", text, "\n");
+       FOREACH_CLIENT(IS_REAL_CLIENT(it),
+       {
+               if (it.team == teamnum)
+               {
+                       sprint(it, text);
+               }
+       });
+}
+
+void DebugPrintToChatTeam(int teamnum, string text)
+{
+       if (autocvar_developer)
+       {
+               PrintToChatTeam(teamnum, text);
+       }
+}
+
 /**
  * message "": do not say, just test flood control
  * return value:
@@ -745,10 +792,7 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc
                        privatemsgprefixlen = strlen(msgstr);
                        msgstr = strcat(msgstr, msgin);
                        cmsgstr = strcat(colorstr, colorprefix, namestr, "^3 tells you:\n^7", msgin);
-                       if(autocvar_g_chat_teamcolors)
-                               privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", playername(privatesay, true), ": ^7");
-                       else
-                               privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", privatesay.netname, ": ^7");
+                       privatemsgprefix = strcat("\{1}\{13}* ^3You tell ", playername(privatesay, autocvar_g_chat_teamcolors), ": ^7");
                }
                else if(teamsay)
                {
@@ -915,6 +959,13 @@ int Say(entity source, int teamsay, entity privatesay, string msgin, bool floodc
                ret = 1;
        }
 
+       if (privatesay && source && !IS_PLAYER(source))
+       {
+               if (!game_stopped)
+               if ((privatesay && !IS_PLAYER(privatesay)) || (autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !warmup_stage))
+                       ret = -1; // just hide the message completely
+       }
+
        MUTATOR_CALLHOOK(ChatMessage, source, ret);
        ret = M_ARGV(1, int);