]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/client/main.qc
Merge branch 'drjaska/spawnfunc-item_buff_name' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / main.qc
index 689618fd116712f79ca9bc09191949d7a190e479..9e214551097dd0dc60e5d3431cbfd4df32b43ecc 100644 (file)
@@ -541,7 +541,7 @@ float CSQC_InputEvent(int bInputType, float nPrimary, float nSecondary)
 
 // --------------------------------------------------------------------------
 // BEGIN OPTIONAL CSQC FUNCTIONS
-
+.int survival_status;
 void Ent_RemovePlayerScore(entity this)
 {
        if(this.owner) {
@@ -550,6 +550,11 @@ void Ent_RemovePlayerScore(entity this)
                FOREACH(Scores, true, {
                        this.owner.(scores(it)) = 0; // clear all scores
                });
+               this.owner.ready = 0;
+               this.owner.eliminated = 0;
+               this.owner.colormap = 0;
+               // TODO add a hook to reset this Survival field
+               this.owner.survival_status = 0;
        }
 }
 
@@ -1055,13 +1060,25 @@ bool CSQC_Parse_TempEntity()
        return false;
 }
 
+bool autocvar_r_drawfog;
+bool autocvar_r_fog_exp2;
 string forcefog;
 void Fog_Force()
 {
        if (autocvar_cl_orthoview && autocvar_cl_orthoview_nofog)
-               localcmd("\nr_drawfog 0\n");
+       {
+               if (autocvar_r_drawfog)
+                       cvar_set("r_drawfog", "0");
+       }
        else if (forcefog != "")
-               localcmd(sprintf("\nfog %s\nr_fog_exp2 0\nr_drawfog 1\n", forcefog));
+       {
+               // using cvar_set as it's faster and safer than a command
+               if (!autocvar_r_drawfog)
+                       cvar_set("r_drawfog", "1");
+               if (autocvar_r_fog_exp2)
+                       cvar_set("r_fog_exp2", "0");
+               localcmd(sprintf("\nfog %s\n", forcefog));
+       }
 }
 
 bool net_handle_ServerWelcome();
@@ -1244,11 +1261,11 @@ NET_HANDLE(TE_CSQC_RACE, bool isNew)
                        race_server_record = ReadInt24_t();
                        break;
                case RACE_NET_SPEED_AWARD:
-                       race_speedaward = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit);
+                       race_speedaward = ReadInt24_t();
                        strcpy(race_speedaward_holder, ReadString());
                        break;
                case RACE_NET_SPEED_AWARD_BEST:
-                       race_speedaward_alltimebest = ReadInt24_t() * GetSpeedUnitFactor(autocvar_hud_panel_physics_speed_unit);
+                       race_speedaward_alltimebest = ReadInt24_t();
                        strcpy(race_speedaward_alltimebest_holder, ReadString());
                        break;
                case RACE_NET_RANKINGS_CNT:
@@ -1397,18 +1414,18 @@ bool net_handle_ServerWelcome()
        campaign = ReadByte();
        if (campaign)
        {
-               string campaign_title = ReadString();
                int campaign_level = ReadByte();
-               string campaign_msg = ReadString();
-               string welcomedialog_args;
-               welcomedialog_args = strcat("HOSTNAME \"", campaign_title, "\"");
+               // Menu can't build the whole campaign message because it lacks getcommandkey and CCR
+               // so we build part of the message here and let the menu insert the level description
+               // (that client doesn't know) by replacing the keyword _LEVEL_DESC
                string key = getcommandkey(_("jump"), "+jump");
                string msg = strcat(
                        CCR("^F1"), sprintf(_("Level %d:"), campaign_level),
-                       sprintf(CCR(" ^BG%s\n^3\n"), campaign_msg),
+                       sprintf(CCR(" ^BG%s\n\n"), "_LEVEL_DESC"),
                        sprintf(CCR(_("^BGPress ^F2%s^BG to enter the game")), key));
                msg = MakeConsoleSafe(strreplace("\n", "\\n", msg));
-               welcomedialog_args = strcat(welcomedialog_args, " WELCOME \"", msg, "\"");
+               string welcomedialog_args = strcat("CAMPAIGN ", itos(campaign_level), " \"", msg, "\"");
+
                localcmd("\nmenu_cmd directmenu Welcome ", welcomedialog_args, "\n");
                return true;
        }