X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fantilag.qc;h=73025f1f61004ed50996fc1dfa692aafac943895;hb=a9a7db34cf93f756ae42925c302cec84f9f9b7d2;hp=69d291a4ed69018848e0ebccb7c897b250b922d1;hpb=ad76a3d4a0a56e4e89bb25541a87893bbd21b91f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/antilag.qc b/qcsrc/server/antilag.qc index 69d291a4e..73025f1f6 100644 --- a/qcsrc/server/antilag.qc +++ b/qcsrc/server/antilag.qc @@ -3,6 +3,7 @@ .float antilag_times[ANTILAG_MAX_ORIGINS]; .float antilag_index; .vector antilag_saved_origin; +.float antilag_takenback; .float antilag_debug; @@ -14,6 +15,9 @@ void antilag_dummy() void antilag_record(entity e, float t) { + if (e.vehicle && e.vehicle.vehicle_flags == VHF_PLAYERSLOT) + return; + if(e.vehicle) antilag_record(e.vehicle, t); @@ -65,9 +69,11 @@ vector antilag_takebackorigin(entity e, float t) i0 = antilag_find(e, t); if(i0 < 0) { - i0 = e.antilag_index - 1; - if(i0 < 0) - i0 = ANTILAG_MAX_ORIGINS - 1; + // IN THE PRESENT + if(e.antilag_takenback) + return e.antilag_saved_origin; + else + return e.origin; } i1 = i0 + 1; if(i1 >= ANTILAG_MAX_ORIGINS) @@ -89,17 +95,44 @@ vector antilag_takebackavgvelocity(entity e, float t0, float t1) void antilag_takeback(entity e, float t) { - if(e.vehicle) - antilag_takeback(e.vehicle, t); - e.antilag_saved_origin = e.origin; + if (e.vehicle && e.vehicle.vehicle_flags == VHF_PLAYERSLOT) + return; + + if(e.vehicle) + antilag_takeback(e.vehicle, t); + + if(!e.antilag_takenback) + e.antilag_saved_origin = e.origin; + setorigin(e, antilag_takebackorigin(e, t)); + e.antilag_takenback = TRUE; } void antilag_restore(entity e) { - if(e.vehicle) - antilag_restore(e.vehicle); + if (e.vehicle && e.vehicle.vehicle_flags == VHF_PLAYERSLOT) + return; + + if(e.vehicle) + antilag_restore(e.vehicle); + + if(!e.antilag_takenback) + return; setorigin(e, e.antilag_saved_origin); + e.antilag_takenback = FALSE; +} + +void antilag_clear(entity e) +{ + float i; + + antilag_restore(e); + for(i = 0; i < ANTILAG_MAX_ORIGINS; ++i) + { + e.(antilag_times[i]) = -2342; + e.(antilag_origins[i]) = e.origin; + } + e.antilag_index = ANTILAG_MAX_ORIGINS - 1; // next one is 0 }