Files
quakemapping/mod_slipgate/source/server/trigger_monsterjump.qc
2019-12-30 17:23:05 +01:00

44 lines
1.2 KiB
Plaintext

/*==========
monsterjump_touch
==========*/
static void() monsterjump_touch =
{
if (other.flags & (FL_MONSTER | FL_FLY | FL_SWIM) != FL_MONSTER)
return;
if (other.health <= 0)
return;
if (self.netname != "")
{
if (other.classname != self.netname)
return;
}
// set XY even if not on ground, so the jump will clear lips
other.velocity_x = self.movedir_x * self.speed;
other.velocity_y = self.movedir_y * self.speed;
if (!(other.flags & FL_ONGROUND))
return;
other.flags = other.flags - FL_ONGROUND;
other.velocity_z = self.height;
};
/*QUAKED trigger_monsterjump (.5 .5 .5) ? X X X X X X X X NOT_IN_EASY NOT_IN_NORMAL NOT_IN_HARD NOT_IN_DM
Walking monsters that touch this will jump at a set "speed" and "height" according to "angle"
Keys:
"angle" - angle to fling monsters
"speed" - defaults to 200, the speed thrown forward
"height" - defaults to 200, the speed thrown upwards
"netname" - only monsters with this classname will be affected, e.g. "monster_shambler"
*/
void() trigger_monsterjump =
{
if (!self.angles)
self.angles = '0 360 0';
SetPositiveDefault(speed, 200);
SetPositiveDefault(height, 200);
self.touch = monsterjump_touch;
InitTrigger();
};