// or when a dead player gets stuck in the jumppad for some reason
if(!already_pushed && this.pushltime < time && !(IS_DEAD(targ) && targ.velocity == '0 0 0'))
{
- // flash when activated
- Send_Effect(EFFECT_JUMPPAD, targ.origin, targ.velocity, 1);
+ if (Q3COMPAT_COMMON && this.classname == "target_push")
+ this.pushltime = time + 1.5;
+ else
+ {
+ // flash when activated
+ Send_Effect(EFFECT_JUMPPAD, targ.origin, targ.velocity, 1);
+ this.pushltime = time + 0.2;
+ }
_sound (targ, CH_TRIGGER, this.noise, VOL_BASE, ATTEN_NORM);
- this.pushltime = time + 0.2;
}
+
if(IS_REAL_CLIENT(targ) || IS_BOT_CLIENT(targ))
{
bool found = false;
* or OUTSIDE (negative) of the jump trajectory. General rule: use
* positive values for targets mounted on the floor, and use negative
* values to target a point on the ceiling.
- * movedir: if target is not set, this * speed * 10 is the velocity to be reached.
+ * movedir: if target is not set, movedir * speed * 10 is the velocity to be reached.
*/
spawnfunc(trigger_push)
{
target_push_link(this);
}
-void target_push_init2(entity this)
+spawnfunc(target_push)
{
- if(this.target && this.target != "") // we have an old style pusher!
- {
+ target_push_init(this); // normal push target behaviour can be combined with a legacy pusher?
+ this.use = target_push_use;
+
+ if(this.target && this.target != "") // Q3 or old style Nexuiz pusher
InitializeEntity(this, trigger_push_findtarget, INITPRIO_FINDTARGET);
- this.use = target_push_use;
+ else // Q3 .angles and .speed pusher
+ {
+ if (!this.speed)
+ this.speed = 1000;
+ SetMovedir(this); // this clears .angles so it must be after target_push_init()
+ this.movedir *= this.speed;
}
- target_push_init(this); // normal push target behaviour can be combined with a legacy pusher?
-}
-
-spawnfunc(target_push)
-{
- target_push_init2(this);
+ if (!this.noise)
+ {
+ if (Q3COMPAT_COMMON && !(this.spawnflags & Q3_TARGET_PUSH_JUMPPAD))
+ this.noise = "sound/misc/windfly.wav"; // Q3 mappers provide this, it's not in pak0
+ else
+ this.noise = "misc/jumppad.wav";
+ }
+ precache_sound (this.noise);
}
spawnfunc(info_notnull)