X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Frace.qc;h=545bdad27be16a5595e74692fd9fa750cc3fad26;hb=54c73db251372d28956d780656c4a0a78a2e54ca;hp=5ccb607e926ce13362fc2d11e4c1e444b7bdeb01;hpb=05878d3a4c3285af636dd5e9f9b3aa1f54e6b3fb;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/race.qc b/qcsrc/server/race.qc index 5ccb607e9..545bdad27 100644 --- a/qcsrc/server/race.qc +++ b/qcsrc/server/race.qc @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -474,8 +475,6 @@ void race_deleteTime(string map, float pos) void race_SendTime(entity e, float cp, float t, float tvalid) { - float snew, l; - if(g_race_qualifying) t += e.race_penalty_accumulator; @@ -485,23 +484,15 @@ void race_SendTime(entity e, float cp, float t, float tvalid) if(cp == race_timed_checkpoint) // finish line if (!CS(e).race_completed) { - float s; - if(g_race_qualifying) - { - s = GameRules_scoring_add(e, RACE_FASTEST, 0); - if(!s || t < s) - GameRules_scoring_add(e, RACE_FASTEST, t - s); - } - else + int s = GameRules_scoring_add(e, RACE_FASTEST, 0); + if(!s || t < s) + GameRules_scoring_add(e, RACE_FASTEST, t - s); + if(!g_race_qualifying) { - s = GameRules_scoring_add(e, RACE_FASTEST, 0); - if(!s || t < s) - GameRules_scoring_add(e, RACE_FASTEST, t - s); - s = GameRules_scoring_add(e, RACE_TIME, 0); - snew = TIME_ENCODE(time - game_starttime); + int snew = TIME_ENCODE(time - game_starttime); GameRules_scoring_add(e, RACE_TIME, snew - s); - l = GameRules_scoring_add_team(e, RACE_LAPS, 1); + int l = GameRules_scoring_add_team(e, RACE_LAPS, 1); if(autocvar_fraglimit) if(l >= autocvar_fraglimit) @@ -511,6 +502,9 @@ void race_SendTime(entity e, float cp, float t, float tvalid) { CS(e).race_completed = 1; MAKE_INDEPENDENT_PLAYER(e); + if(e.bot_attack) + IL_REMOVE(g_bot_targets, e); + e.bot_attack = false; Send_Notification(NOTIF_ALL, NULL, MSG_INFO, INFO_RACE_FINISHED, e.netname); ClientData_Touch(e); } @@ -871,7 +865,7 @@ void trigger_race_checkpoint_verify(entity this) if (have_verified) return; have_verified = true; - bool qual = g_race_qualifying; + int qual = g_race_qualifying; int pl_race_checkpoint = 0; int pl_race_place = 0; @@ -881,7 +875,7 @@ void trigger_race_checkpoint_verify(entity this) pl_race_checkpoint = race_NextCheckpoint(i); // race only (middle of the race) - g_race_qualifying = false; + g_race_qualifying = 0; pl_race_place = 0; if (!Spawn_FilterOutBadSpots(this, findchain(classname, "info_player_deathmatch"), 0, false, true)) { error(strcat("Checkpoint ", ftos(i), " misses a spawnpoint with race_place==", ftos(pl_race_place), " (used for respawning in race) - bailing out"));