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

94 lines
2.0 KiB
Plaintext

static enumflags { SHOOTER_SUPERSPIKE, SHOOTER_LASER };
void(vector org, vector vec) LaunchLaser;
/*==========
shooter_use
==========*/
static void() shooter_use =
{
if (self.spawnflags & SHOOTER_LASER)
{
sound (self, CHAN_VOICE, "enforcer/enfire.wav", 1, ATTN_NORM);
LaunchLaser (self.origin, self.movedir);
}
else if (self.spawnflags & SHOOTER_SUPERSPIKE)
{
sound (self, CHAN_VOICE, "weapons/spike2.wav", 1, ATTN_NORM);
launch_spike (self.origin, self.movedir);
newmis.touch = superspike_touch;
}
else
{
sound (self, CHAN_VOICE, "weapons/rocket1i.wav", 1, ATTN_NORM);
launch_spike (self.origin, self.movedir);
}
newmis.velocity = self.movedir * 500;
};
/*==========
shooter_think
==========*/
static void() shooter_think =
{
shooter_use();
self.think = shooter_think;
self.nextthink = time + self.wait;
};
/*==========
shooter_precache
==========*/
static void() shooter_precache =
{
if (self.spawnflags & SHOOTER_LASER)
{
precache_model2 ("progs/laser.mdl");
precache_sound2 ("enforcer/enfire.wav");
precache_sound2 ("enforcer/enfstop.wav");
}
else if (self.spawnflags & SHOOTER_SUPERSPIKE)
precache_sound ("weapons/spike2.wav");
else
precache_sound("weapons/rocket1i.wav");
};
/*QUAKED trap_spikeshooter (1 .5 0) (-8 -8 -8) (8 8 8) SUPERSPIKE LASER
Fires projectiles when triggered.
Keys:
"angle" - direction of movement
Spawnflags:
If no spawnflag is set, shoots regular nails.
SUPERSPIKE - fire supernails
LASER - fire enforcer lasers
*/
void() trap_spikeshooter =
{
shooter_precache();
SetMovedir();
self.use = shooter_use;
};
/*QUAKED trap_shooter (1 .5 0) (-8 -8 -8) (8 8 8) SUPERSPIKE LASER
Continuously fires projectiles.
Keys:
"angle" - direction of movement
"wait" - time between shots
"nextthink" - delay on first shot, so shooters can be staggered.
Spawnflags:
If no spawnflag is set, shoots regular nails.
SUPERSPIKE - fire supernails
LASER - fire enforcer lasers
*/
void() trap_shooter =
{
shooter_precache();
SetPositiveDefault(wait, 1);
self.think = shooter_think;
self.nextthink = self.nextthink + self.wait;
};