From: Nick S Date: Thu, 29 Jun 2023 21:46:42 +0000 (+0300) Subject: Merge remote-tracking branch 'origin/master' into morosophos/server-current4 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=a657361d3a16752c8adef3e7aeaa438d44fccd8c;p=xonotic%2Fxonotic-data.pk3dir.git Merge remote-tracking branch 'origin/master' into morosophos/server-current4 --- a657361d3a16752c8adef3e7aeaa438d44fccd8c diff --cc qcsrc/common/mapobjects/trigger/jumppads.qc index 6bec3a20c,f7281e5e4..4dc685057 --- a/qcsrc/common/mapobjects/trigger/jumppads.qc +++ b/qcsrc/common/mapobjects/trigger/jumppads.qc @@@ -249,24 -249,22 +249,37 @@@ bool jumppad_push(entity this, entity t vector org = targ.origin; - if(Q3COMPAT_COMMON || this.spawnflags & PUSH_STATIC) + if(STAT(Q3COMPAT, targ) || this.spawnflags & PUSH_STATIC) + { org = (this.absmin + this.absmax) * 0.5; + } + + bool already_pushed = false; + if(is_velocity_pad) // remember velocity jump pads + { + if(this == targ.last_pushed || (targ.last_pushed && !STAT(Q3COMPAT, targ))) // if q3compat is active overwrite last stored jump pad, otherwise ignore + { + already_pushed = true; + } + else + { + targ.last_pushed = this; // may be briefly out of sync between client and server if client prediction is toggled + } + } + bool already_pushed = false; + if(is_velocity_pad) // remember velocity jump pads + { + if(this == targ.last_pushed || (targ.last_pushed && !STAT(Q3COMPAT, targ))) // if q3compat is active overwrite last stored jump pad, otherwise ignore + { + already_pushed = true; + } + else + { + targ.last_pushed = this; // may be briefly out of sync between client and server if client prediction is toggled + } + } + if(this.enemy) { if(!is_velocity_pad) diff --cc qcsrc/common/mapobjects/trigger/jumppads.qh index 0ef42018a,7146cc52c..96ab74aaa --- a/qcsrc/common/mapobjects/trigger/jumppads.qh +++ b/qcsrc/common/mapobjects/trigger/jumppads.qh @@@ -3,16 -3,16 +3,24 @@@ const int PUSH_ONCE = BIT(0); // legacy, deactivate with relay instead const int PUSH_SILENT = BIT(1); // not used? -const int PUSH_STATIC = BIT(12); // xonotic-only, Q3 already behaves like this by default +#define PUSH_STATIC BIT(12) // xonotic-only, Q3 already behaves like this by default + +#define PUSH_VELOCITY_PLAYERDIR_XY BIT(0) +#define PUSH_VELOCITY_ADD_XY BIT(1) +#define PUSH_VELOCITY_PLAYERDIR_Z BIT(2) +#define PUSH_VELOCITY_ADD_Z BIT(3) +#define PUSH_VELOCITY_BIDIRECTIONAL_XY BIT(4) +#define PUSH_VELOCITY_BIDIRECTIONAL_Z BIT(5) +#define PUSH_VELOCITY_CLAMP_NEGATIVE_ADDS BIT(6) + #define PUSH_VELOCITY_PLAYERDIR_XY BIT(0) + #define PUSH_VELOCITY_ADD_XY BIT(1) + #define PUSH_VELOCITY_PLAYERDIR_Z BIT(2) + #define PUSH_VELOCITY_ADD_Z BIT(3) + #define PUSH_VELOCITY_BIDIRECTIONAL_XY BIT(4) + #define PUSH_VELOCITY_BIDIRECTIONAL_Z BIT(5) + #define PUSH_VELOCITY_CLAMP_NEGATIVE_ADDS BIT(6) + IntrusiveList g_jumppads; STATIC_INIT(g_jumppads) { g_jumppads = IL_NEW(); }