X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2Fmain.qc;h=9e214551097dd0dc60e5d3431cbfd4df32b43ecc;hb=3993b2bf0f649a09b0f3e997a5beea6b3b97c6dd;hp=689618fd116712f79ca9bc09191949d7a190e479;hpb=23f6ab3616da6c14b4ca506227dd296df299e035;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/main.qc b/qcsrc/client/main.qc index 689618fd1..9e2145510 100644 --- a/qcsrc/client/main.qc +++ b/qcsrc/client/main.qc @@ -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; }