-float PUSH_ONCE = 1;
-float PUSH_SILENT = 2;
+#if defined(CSQC)
+#elif defined(MENUQC)
+#elif defined(SVQC)
+ #include "../dpdefs/progsdefs.qc"
+ #include "../dpdefs/dpextensions.qc"
+ #include "sys-post.qh"
+ #include "../warpzonelib/util_server.qh"
+ #include "../common/constants.qh"
+ #include "../common/util.qh"
+ #include "../common/animdecide.qh"
+ #include "../common/weapons/weapons.qh"
+ #include "weapons/csqcprojectile.qh"
+ #include "constants.qh"
+ #include "defs.qh"
+#endif
+
+const float PUSH_ONCE = 1;
+const float PUSH_SILENT = 2;
.float pushltime;
.float istypefrag;
if(other.gravity)
grav *= other.gravity;
- zdist = torg_z - org_z;
+ zdist = torg.z - org.z;
sdist = vlen(torg - org - zdist * '0 0 1');
sdir = normalize(torg - org - zdist * '0 0 1');
*/
// push him so high...
- vz = sqrt(2 * grav * jumpheight); // NOTE: sqrt(positive)!
+ vz = sqrt(fabs(2 * grav * jumpheight)); // NOTE: sqrt(positive)!
// we start with downwards velocity only if it's a downjump and the jump apex should be outside the jump!
if(ht < 0)
vector solution;
solution = solve_quadratic(0.5 * grav, -vz, zdist); // equation "z(ti) = zdist"
// ALWAYS solvable because jumpheight >= zdist
- if(!solution_z)
- solution_y = solution_x; // just in case it is not solvable due to roundoff errors, assume two equal solutions at their center (this is mainly for the usual case with ht == 0)
+ if(!solution.z)
+ solution_y = solution.x; // just in case it is not solvable due to roundoff errors, assume two equal solutions at their center (this is mainly for the usual case with ht == 0)
if(zdist == 0)
- solution_x = solution_y; // solution_x is 0 in this case, so don't use it, but rather use solution_y (which will be sqrt(0.5 * jumpheight / grav), actually)
+ solution_x = solution.y; // solution_x is 0 in this case, so don't use it, but rather use solution_y (which will be sqrt(0.5 * jumpheight / grav), actually)
if(zdist < 0)
{
// almost straight line type
// jump apex is before the jump
// we must take the larger one
- trigger_push_calculatevelocity_flighttime = solution_y;
+ trigger_push_calculatevelocity_flighttime = solution.y;
}
else
{
// regular jump
// jump apex is during the jump
// we must take the larger one too
- trigger_push_calculatevelocity_flighttime = solution_y;
+ trigger_push_calculatevelocity_flighttime = solution.y;
}
}
else
// almost straight line type
// jump apex is after the jump
// we must take the smaller one
- trigger_push_calculatevelocity_flighttime = solution_x;
+ trigger_push_calculatevelocity_flighttime = solution.x;
}
else
{
// regular jump
// jump apex is during the jump
// we must take the larger one
- trigger_push_calculatevelocity_flighttime = solution_y;
+ trigger_push_calculatevelocity_flighttime = solution.y;
}
}
vs = sdist / trigger_push_calculatevelocity_flighttime;
return;
if(self.team)
- if((self.spawnflags & 4 == 0) == (self.team != other.team))
+ if(((self.spawnflags & 4) == 0) == (self.team != other.team))
return;
EXACTTRIGGER_TOUCH;
other.velocity = self.movedir;
}
- other.flags &~= FL_ONGROUND;
+ other.flags &= ~FL_ONGROUND;
if (IS_PLAYER(other))
{
{
// flash when activated
pointparticles(particleeffectnum("jumppad_activate"), other.origin, other.velocity, 1);
- sound (other, CH_TRIGGER, self.noise, VOL_BASE, ATTN_NORM);
+ sound (other, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
self.pushltime = time + 0.2;
}
if(IS_REAL_CLIENT(other) || IS_BOT_CLIENT(other))
{
float i;
float found;
- found = FALSE;
+ found = false;
for(i = 0; i < other.jumppadcount && i < NUM_JUMPPADSUSED; ++i)
if(other.(jumppadsused[i]) == self)
- found = TRUE;
+ found = true;
if(!found)
{
- other.(jumppadsused[mod(other.jumppadcount, NUM_JUMPPADSUSED)]) = self;
+ other.(jumppadsused[other.jumppadcount % NUM_JUMPPADSUSED]) = self;
other.jumppadcount = other.jumppadcount + 1;
}
other.lastteleporttime = time;
if (other.deadflag == DEAD_NO)
- animdecide_setaction(other, ANIMACTION_JUMP, TRUE);
+ animdecide_setaction(other, ANIMACTION_JUMP, true);
}
else
- other.jumppadcount = TRUE;
+ other.jumppadcount = true;
// reset tracking of who pushed you into a hazard (for kill credit)
other.pushltime = 0;
// first calculate a typical start point for the jump
org = (self.absmin + self.absmax) * 0.5;
- org_z = self.absmax_z - PL_MIN_z;
+ org_z = self.absmax.z - PL_MIN_z;
if (self.target)
{
self.speed = 1000;
self.movedir = self.movedir * self.speed * 10;
- if not(self.noise)
+ if (!self.noise)
self.noise = "misc/jumppad.wav";
precache_sound (self.noise);