From d53f477c54643cc39d615d3f8866e9e48ed1cd1e Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 10 Jun 2018 17:40:12 +1000 Subject: [PATCH] Remove g_subs --- qcsrc/common/mapobjects/func/breakable.qc | 1 - qcsrc/common/mapobjects/models.qc | 1 - qcsrc/common/monsters/sv_monsters.qc | 1 - qcsrc/common/mutators/mutator/nades/nades.qc | 1 - qcsrc/common/util.qc | 122 +++++++++++ qcsrc/common/util.qh | 17 ++ qcsrc/server/_mod.inc | 1 - qcsrc/server/_mod.qh | 1 - qcsrc/server/antilag.qc | 76 +++++++ qcsrc/server/antilag.qh | 16 ++ qcsrc/server/command/radarmap.qc | 1 - qcsrc/server/g_subs.qc | 204 ------------------- qcsrc/server/g_subs.qh | 32 --- qcsrc/server/items.qc | 1 - qcsrc/server/player.qc | 1 - qcsrc/server/weapons/hitplot.qc | 1 - qcsrc/server/weapons/tracing.qc | 1 - 17 files changed, 231 insertions(+), 247 deletions(-) delete mode 100644 qcsrc/server/g_subs.qc delete mode 100644 qcsrc/server/g_subs.qh diff --git a/qcsrc/common/mapobjects/func/breakable.qc b/qcsrc/common/mapobjects/func/breakable.qc index d09ccd5e0..d8f6cb138 100644 --- a/qcsrc/common/mapobjects/func/breakable.qc +++ b/qcsrc/common/mapobjects/func/breakable.qc @@ -1,7 +1,6 @@ #include "breakable.qh" #ifdef SVQC -#include #include #include #include diff --git a/qcsrc/common/mapobjects/models.qc b/qcsrc/common/mapobjects/models.qc index 9b1f2f8a4..7a3dbdfdb 100644 --- a/qcsrc/common/mapobjects/models.qc +++ b/qcsrc/common/mapobjects/models.qc @@ -3,7 +3,6 @@ #ifdef SVQC #include #include -#include #include #include "subs.qh" #include "triggers.qh" diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index 718838cde..b4861b917 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -1,6 +1,5 @@ #include "sv_monsters.qh" -#include #include #include "../constants.qh" #include "../teams.qh" diff --git a/qcsrc/common/mutators/mutator/nades/nades.qc b/qcsrc/common/mutators/mutator/nades/nades.qc index dbd04a70a..7da7c0709 100644 --- a/qcsrc/common/mutators/mutator/nades/nades.qc +++ b/qcsrc/common/mutators/mutator/nades/nades.qc @@ -158,7 +158,6 @@ void DrawAmmoNades(vector myPos, vector mySize, bool draw_expanding, float expan #include #include #include -#include REGISTER_MUTATOR(nades, autocvar_g_nades); diff --git a/qcsrc/common/util.qc b/qcsrc/common/util.qc index 95ab69ca6..53b67c903 100644 --- a/qcsrc/common/util.qc +++ b/qcsrc/common/util.qc @@ -17,7 +17,129 @@ #include "mapinfo.qh" #endif +#ifdef SVQC +float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity) // returns the number of traces done, for benchmarking +{ + vector pos, dir, t; + float nudge; + entity stopentity; + + //nudge = 2 * cvar("collision_impactnudge"); // why not? + nudge = 0.5; + + dir = normalize(v2 - v1); + + pos = v1 + dir * nudge; + + float c; + c = 0; + + for (;;) + { + if(pos * dir >= v2 * dir) + { + // went too far + trace_fraction = 1; + trace_endpos = v2; + return c; + } + + tracebox(pos, mi, ma, v2, nomonsters, forent); + ++c; + + if(c == 50) + { + LOG_TRACE("When tracing from ", vtos(v1), " to ", vtos(v2)); + LOG_TRACE(" Nudging gets us nowhere at ", vtos(pos)); + LOG_TRACE(" trace_endpos is ", vtos(trace_endpos)); + LOG_TRACE(" trace distance is ", ftos(vlen(pos - trace_endpos))); + } + + stopentity = trace_ent; + + if(trace_startsolid) + { + // we started inside solid. + // then trace from endpos to pos + t = trace_endpos; + tracebox(t, mi, ma, pos, nomonsters, forent); + ++c; + if(trace_startsolid) + { + // t is still inside solid? bad + // force advance, then, and retry + pos = t + dir * nudge; + + // but if we hit an entity, stop RIGHT before it + if(stopatentity && stopentity && stopentity != ignorestopatentity) + { + trace_ent = stopentity; + trace_endpos = t; + trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); + return c; + } + } + else + { + // we actually LEFT solid! + trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); + return c; + } + } + else + { + // pos is outside solid?!? but why?!? never mind, just return it. + trace_endpos = pos; + trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); + return c; + } + } +} + +void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity) +{ + tracebox_inverted(v1, '0 0 0', '0 0 0', v2, nomonsters, forent, stopatentity, ignorestopatentity); +} +#endif + #ifdef GAMEQC +/* +================== +findbetterlocation + +Returns a point at least 12 units away from walls +(useful for explosion animations, although the blast is performed where it really happened) +Ripped from DPMod +================== +*/ +vector findbetterlocation (vector org, float mindist) +{ + vector vec = mindist * '1 0 0'; + int c = 0; + while (c < 6) + { + traceline (org, org + vec, true, NULL); + vec = vec * -1; + if (trace_fraction < 1) + { + vector loc = trace_endpos; + traceline (loc, loc + vec, true, NULL); + if (trace_fraction >= 1) + org = loc + vec; + } + if (c & 1) + { + float h = vec.y; + vec.y = vec.x; + vec.x = vec.z; + vec.z = h; + } + c = c + 1; + } + + return org; +} + /* * Get "real" origin, in worldspace, even if ent is attached to something else. */ diff --git a/qcsrc/common/util.qh b/qcsrc/common/util.qh index 3304d0e7a..2e7d8b13f 100644 --- a/qcsrc/common/util.qh +++ b/qcsrc/common/util.qh @@ -1,6 +1,23 @@ #pragma once +#ifdef SVQC +float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); // returns the number of traces done, for benchmarking + +void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); +#endif + #ifdef GAMEQC +/* +================== +findbetterlocation + +Returns a point at least 12 units away from walls +(useful for explosion animations, although the blast is performed where it really happened) +Ripped from DPMod +================== +*/ +vector findbetterlocation (vector org, float mindist); + vector real_origin(entity ent); #endif diff --git a/qcsrc/server/_mod.inc b/qcsrc/server/_mod.inc index ca0dec4bb..0e6ec096d 100644 --- a/qcsrc/server/_mod.inc +++ b/qcsrc/server/_mod.inc @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include diff --git a/qcsrc/server/_mod.qh b/qcsrc/server/_mod.qh index c87bb2a03..a897b456a 100644 --- a/qcsrc/server/_mod.qh +++ b/qcsrc/server/_mod.qh @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include diff --git a/qcsrc/server/antilag.qc b/qcsrc/server/antilag.qc index 4062f7f66..c6e26e09e 100644 --- a/qcsrc/server/antilag.qc +++ b/qcsrc/server/antilag.qc @@ -5,6 +5,7 @@ #include #include #include + #include #include "antilag.qh" #endif @@ -146,3 +147,78 @@ void antilag_restore_all(entity ignore) antilag_restore(it, it); }); } + +/* +================== +traceline_antilag + +A version of traceline that must be used by SOLID_SLIDEBOX things that want to hit SOLID_CORPSE things with a trace attack +Additionally it moves players back into the past before the trace and restores them afterward. +================== +*/ +void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag, float wz) +{ + // check whether antilagged traces are enabled + if (lag < 0.001) + lag = 0; + if (!IS_REAL_CLIENT(forent)) + lag = 0; // only antilag for clients + + // change shooter to SOLID_BBOX so the shot can hit corpses + int oldsolid = source.dphitcontentsmask; + if(source) + source.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE; + + if (lag) + antilag_takeback_all(forent, lag); + + // do the trace + if(wz) + WarpZone_TraceBox (v1, mi, ma, v2, nomonst, forent); + else + tracebox (v1, mi, ma, v2, nomonst, forent); + + // restore players to current positions + if (lag) + antilag_restore_all(forent); + + // restore shooter solid type + if(source) + source.dphitcontentsmask = oldsolid; +} +void traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) +{ + tracebox_antilag_force_wz(source, v1, '0 0 0', '0 0 0', v2, nomonst, forent, lag, false); +} +void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) +{ + bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); + if (autocvar_g_antilag != 2 || noantilag) + lag = 0; + traceline_antilag_force(source, v1, v2, nomonst, forent, lag); +} +void tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag) +{ + bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); + if (autocvar_g_antilag != 2 || noantilag) + lag = 0; + tracebox_antilag_force_wz(source, v1, mi, ma, v2, nomonst, forent, lag, false); +} +void WarpZone_traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) +{ + tracebox_antilag_force_wz(source, v1, '0 0 0', '0 0 0', v2, nomonst, forent, lag, true); +} +void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) +{ + bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); + if (autocvar_g_antilag != 2 || noantilag) + lag = 0; + WarpZone_traceline_antilag_force(source, v1, v2, nomonst, forent, lag); +} +void WarpZone_tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag) +{ + bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); + if (autocvar_g_antilag != 2 || noantilag) + lag = 0; + tracebox_antilag_force_wz(source, v1, mi, ma, v2, nomonst, forent, lag, true); +} diff --git a/qcsrc/server/antilag.qh b/qcsrc/server/antilag.qh index d57762ccd..c3be5553a 100644 --- a/qcsrc/server/antilag.qh +++ b/qcsrc/server/antilag.qh @@ -13,3 +13,19 @@ void antilag_restore_all(entity ignore); #define ANTILAG_LATENCY(e) min(0.4, CS(e).ping * 0.001) // add one ticrate? + +/* +================== +traceline_antilag + +A version of traceline that must be used by SOLID_SLIDEBOX things that want to hit SOLID_CORPSE things with a trace attack +Additionally it moves players back into the past before the trace and restores them afterward. +================== +*/ +void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag, float wz); +void traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); +void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); +void tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag); +void WarpZone_traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); +void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); +void WarpZone_tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag); diff --git a/qcsrc/server/command/radarmap.qc b/qcsrc/server/command/radarmap.qc index 6c31af72c..87bcef82f 100644 --- a/qcsrc/server/command/radarmap.qc +++ b/qcsrc/server/command/radarmap.qc @@ -4,7 +4,6 @@ #include #include "../g_world.qh" -#include "../g_subs.qh" #include diff --git a/qcsrc/server/g_subs.qc b/qcsrc/server/g_subs.qc deleted file mode 100644 index 1130f7810..000000000 --- a/qcsrc/server/g_subs.qc +++ /dev/null @@ -1,204 +0,0 @@ -#include "g_subs.qh" - -#include -#include -#include "antilag.qh" -#include "command/common.qh" -#include "../common/state.qh" -#include "../lib/warpzone/common.qh" -#include "../common/mapobjects/subs.qh" - -/* -================== -traceline_antilag - -A version of traceline that must be used by SOLID_SLIDEBOX things that want to hit SOLID_CORPSE things with a trace attack -Additionally it moves players back into the past before the trace and restores them afterward. -================== -*/ -void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag, float wz) -{ - // check whether antilagged traces are enabled - if (lag < 0.001) - lag = 0; - if (!IS_REAL_CLIENT(forent)) - lag = 0; // only antilag for clients - - // change shooter to SOLID_BBOX so the shot can hit corpses - int oldsolid = source.dphitcontentsmask; - if(source) - source.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE; - - if (lag) - antilag_takeback_all(forent, lag); - - // do the trace - if(wz) - WarpZone_TraceBox (v1, mi, ma, v2, nomonst, forent); - else - tracebox (v1, mi, ma, v2, nomonst, forent); - - // restore players to current positions - if (lag) - antilag_restore_all(forent); - - // restore shooter solid type - if(source) - source.dphitcontentsmask = oldsolid; -} -void traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) -{ - tracebox_antilag_force_wz(source, v1, '0 0 0', '0 0 0', v2, nomonst, forent, lag, false); -} -void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) -{ - bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); - if (autocvar_g_antilag != 2 || noantilag) - lag = 0; - traceline_antilag_force(source, v1, v2, nomonst, forent, lag); -} -void tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag) -{ - bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); - if (autocvar_g_antilag != 2 || noantilag) - lag = 0; - tracebox_antilag_force_wz(source, v1, mi, ma, v2, nomonst, forent, lag, false); -} -void WarpZone_traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) -{ - tracebox_antilag_force_wz(source, v1, '0 0 0', '0 0 0', v2, nomonst, forent, lag, true); -} -void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag) -{ - bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); - if (autocvar_g_antilag != 2 || noantilag) - lag = 0; - WarpZone_traceline_antilag_force(source, v1, v2, nomonst, forent, lag); -} -void WarpZone_tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag) -{ - bool noantilag = ((IS_CLIENT(source)) ? CS(source).cvar_cl_noantilag : false); - if (autocvar_g_antilag != 2 || noantilag) - lag = 0; - tracebox_antilag_force_wz(source, v1, mi, ma, v2, nomonst, forent, lag, true); -} - -float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity) // returns the number of traces done, for benchmarking -{ - vector pos, dir, t; - float nudge; - entity stopentity; - - //nudge = 2 * cvar("collision_impactnudge"); // why not? - nudge = 0.5; - - dir = normalize(v2 - v1); - - pos = v1 + dir * nudge; - - float c; - c = 0; - - for (;;) - { - if(pos * dir >= v2 * dir) - { - // went too far - trace_fraction = 1; - trace_endpos = v2; - return c; - } - - tracebox(pos, mi, ma, v2, nomonsters, forent); - ++c; - - if(c == 50) - { - LOG_TRACE("HOLY SHIT! When tracing from ", vtos(v1), " to ", vtos(v2)); - LOG_TRACE(" Nudging gets us nowhere at ", vtos(pos)); - LOG_TRACE(" trace_endpos is ", vtos(trace_endpos)); - LOG_TRACE(" trace distance is ", ftos(vlen(pos - trace_endpos))); - } - - stopentity = trace_ent; - - if(trace_startsolid) - { - // we started inside solid. - // then trace from endpos to pos - t = trace_endpos; - tracebox(t, mi, ma, pos, nomonsters, forent); - ++c; - if(trace_startsolid) - { - // t is still inside solid? bad - // force advance, then, and retry - pos = t + dir * nudge; - - // but if we hit an entity, stop RIGHT before it - if(stopatentity && stopentity && stopentity != ignorestopatentity) - { - trace_ent = stopentity; - trace_endpos = t; - trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); - return c; - } - } - else - { - // we actually LEFT solid! - trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); - return c; - } - } - else - { - // pos is outside solid?!? but why?!? never mind, just return it. - trace_endpos = pos; - trace_fraction = ((trace_endpos - v1) * dir) / ((v2 - v1) * dir); - return c; - } - } -} - -void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity) -{ - tracebox_inverted(v1, '0 0 0', '0 0 0', v2, nomonsters, forent, stopatentity, ignorestopatentity); -} - -/* -================== -findbetterlocation - -Returns a point at least 12 units away from walls -(useful for explosion animations, although the blast is performed where it really happened) -Ripped from DPMod -================== -*/ -vector findbetterlocation (vector org, float mindist) -{ - vector vec = mindist * '1 0 0'; - int c = 0; - while (c < 6) - { - traceline (org, org + vec, true, NULL); - vec = vec * -1; - if (trace_fraction < 1) - { - vector loc = trace_endpos; - traceline (loc, loc + vec, true, NULL); - if (trace_fraction >= 1) - org = loc + vec; - } - if (c & 1) - { - float h = vec.y; - vec.y = vec.x; - vec.x = vec.z; - vec.z = h; - } - c = c + 1; - } - - return org; -} diff --git a/qcsrc/server/g_subs.qh b/qcsrc/server/g_subs.qh deleted file mode 100644 index 92b33e054..000000000 --- a/qcsrc/server/g_subs.qh +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -/* -================== -traceline_antilag - -A version of traceline that must be used by SOLID_SLIDEBOX things that want to hit SOLID_CORPSE things with a trace attack -Additionally it moves players back into the past before the trace and restores them afterward. -================== -*/ -void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag, float wz); -void traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); -void traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); -void tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag); -void WarpZone_traceline_antilag_force (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); -void WarpZone_traceline_antilag (entity source, vector v1, vector v2, float nomonst, entity forent, float lag); -void WarpZone_tracebox_antilag (entity source, vector v1, vector mi, vector ma, vector v2, float nomonst, entity forent, float lag); - -float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); // returns the number of traces done, for benchmarking - -void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity); - -/* -================== -findbetterlocation - -Returns a point at least 12 units away from walls -(useful for explosion animations, although the blast is performed where it really happened) -Ripped from DPMod -================== -*/ -vector findbetterlocation (vector org, float mindist); diff --git a/qcsrc/server/items.qc b/qcsrc/server/items.qc index 04b0ba41d..fbbafd7eb 100644 --- a/qcsrc/server/items.qc +++ b/qcsrc/server/items.qc @@ -5,7 +5,6 @@ /// game items. /// \copyright GNU GPLv2 or any later version. -#include "g_subs.qh" #include "mutators/events.qh" #include diff --git a/qcsrc/server/player.qc b/qcsrc/server/player.qc index fd7bad4f8..3170c99bc 100644 --- a/qcsrc/server/player.qc +++ b/qcsrc/server/player.qc @@ -5,7 +5,6 @@ #include "cheats.qh" #include "g_damage.qh" #include "handicap.qh" -#include "g_subs.qh" #include "miscfunctions.qh" #include "portals.qh" #include "teamplay.qh" diff --git a/qcsrc/server/weapons/hitplot.qc b/qcsrc/server/weapons/hitplot.qc index e6bdd00d2..e79e9ddb6 100644 --- a/qcsrc/server/weapons/hitplot.qc +++ b/qcsrc/server/weapons/hitplot.qc @@ -3,7 +3,6 @@ #include #include #include "../antilag.qh" -#include "../g_subs.qh" #include #include #include diff --git a/qcsrc/server/weapons/tracing.qc b/qcsrc/server/weapons/tracing.qc index 46c26b2e8..ddf1ff262 100644 --- a/qcsrc/server/weapons/tracing.qc +++ b/qcsrc/server/weapons/tracing.qc @@ -8,7 +8,6 @@ #include "weaponsystem.qh" #include "../g_damage.qh" -#include "../g_subs.qh" #include "../antilag.qh" #include -- 2.39.2