+#fdef SVQC
#define RAPTOR_MIN '-80 -80 0'
#define RAPTOR_MAX '80 80 70'
void raptor_bomblet_boom()
{
- sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
- pointparticles(particleeffectnum("raptor_bomb_impact"), self.origin, trace_plane_normal * 1000, 1);
RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
autocvar_g_vehicle_raptor_bomblet_edgedamage,
autocvar_g_vehicle_raptor_bomblet_radius, world,
- autocvar_g_vehicle_raptor_bomblet_force, DEATH_SBROCKET, world);
+ autocvar_g_vehicle_raptor_bomblet_force, DEATH_RAPTOR_BOMB, world);
remove(self);
}
if(self.cnt > time)
if(autocvar_g_vehicle_raptor_bomblet_alt)
{
- UpdateCSQCProjectile(self);
self.nextthink = time;
traceline(self.origin, self.origin + (normalize(self.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, self);
- if(trace_fraction == 1.0)
- return;
-
- if(vlen(self.origin - self.owner.origin) < autocvar_g_vehicle_raptor_bomblet_radius)
+ if((trace_fraction == 1.0) || (vlen(self.origin - self.owner.origin) < autocvar_g_vehicle_raptor_bomblet_radius))
+ {
+ UpdateCSQCProjectile(self);
return;
+ }
}
entity bomblet;
float i;
- sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
- pointparticles(particleeffectnum("rocket_explode"), self.origin, self.velocity, 1);
+ //sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
+ //pointparticles(particleeffectnum("raptor_bomb_spread"), self.origin, self.velocity, 1);
+
+ Damage_DamageInfo(self.origin, 0, 0, 0, '0 0 0', DEATH_RAPTOR_BOMB_SPLIT, self);
for(i = 0; i < autocvar_g_vehicle_raptor_bomblets; ++i)
{
bomblet = spawn();
setorigin(bomblet, self.origin);
- //bomblet.solid = SOLID_TRIGGER;
bomblet.movetype = MOVETYPE_TOSS;
bomblet.touch = raptor_bomblet_touch;
bomblet.think = raptor_bomblet_boom;
bomblet.owner = self.owner;
bomblet.realowner = self.realowner;
bomblet.velocity = normalize(normalize(self.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(self.velocity);
+
PROJECTILE_MAKETRIGGER(bomblet);
CSQCProjectile(bomblet, TRUE, PROJECTILE_RAPTORBOMBLET, TRUE);
}
void raptor_fire_cannon(entity gun, string tagname)
{
entity bolt;
- vector b_org;
+ vector b_org;
b_org = gettaginfo(gun, gettagindex(gun, tagname));
- bolt = vehicles_projectile("raptor_cannon_impact", "weapons/laserimpact.wav", "raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav",
+ bolt = vehicles_projectile("raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav",
b_org, normalize(v_forward + randomvec() * autocvar_g_vehicle_raptor_cannon_spread) * autocvar_g_vehicle_raptor_cannon_speed,
autocvar_g_vehicle_raptor_cannon_damage, autocvar_g_vehicle_raptor_cannon_radius, autocvar_g_vehicle_raptor_cannon_force, 0,
- DEATH_WAKIGUN, PROJECTILE_RAPTORCANNON, 0);
+ DEATH_RAPTOR_CANNON, PROJECTILE_RAPTORCANNON, 0, TRUE, TRUE);
}
void raptor_think()
void raptor_exit(float eject)
{
self.tur_head.exteriormodeltoclient = world;
-
+
if(self.deadflag == DEAD_NO)
{
self.think = raptor_land;
else
player.PlayerPhysplug = raptor_frame;
+ player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
self = player;
return 1;
}
return 1;
}
-
-
crosshair_trace(player);
#if VEHICLES_VIEWROTATE_CROSSHAIR
raptor.lip = time;
}
- player.vehicle_reload1 = (time - raptor.lip) / (raptor.delay - raptor.lip);
- raptor.bomb1.alpha = raptor.bomb2.alpha = player.vehicle_reload1;
+ raptor.bomb1.alpha = raptor.bomb2.alpha = (time - raptor.lip) / (raptor.delay - raptor.lip);
+ player.vehicle_reload2 = bound(0, raptor.bomb1.alpha * 100, 100);
VEHICLE_UPDATE_PLAYER(health, raptor);
VEHICLE_UPDATE_PLAYER(energy, raptor);
self.delay = time;
}
+// If we dont do this ever now and then, the raptors rotors
+// stop working, presumably due to angle overflow. cute.
+void raptor_rotor_anglefix()
+{
+ self.gun1.angles_y = anglemods(self.gun1.angles_y);
+ self.gun2.angles_y = anglemods(self.gun2.angles_y);
+ self.nextthink = time + 15;
+}
+
void raptor_dinit()
{
entity spinner;
raptor_spawn, autocvar_g_vehicle_raptor_respawntime,
raptor_frame,
raptor_enter, raptor_exit,
- raptor_die, raptor_think))
+ raptor_die, raptor_think,
+ FALSE))
{
remove(self);
return;
self.bomb2 = spawn();
self.gun1 = spawn();
self.gun2 = spawn();
-
+
#ifdef RAPTOR_RETARDCAMERA
setattachment(self.vehicle_viewport, world, "");
#endif
spinner.avelocity = '0 -90 0';
self.bomb1.gun2 = spinner;
+ // Sigh.
+ self.bomb1.think = raptor_rotor_anglefix;
+ self.bomb1.nextthink = time;
+
self.mass = 1 ;
}
self.think = raptor_dinit;
self.nextthink = time + 1;
}
+#endif // SVQC
+
+#ifdef CSQC
+void raptor_draw()
+{
+
+}
+
+void raptor_draw2d()
+{
+
+}
+
+void raptor_read_extra()
+{
+
+}
+
+void vehicle_raptor_assemble()
+{
+
+}
+#endif //CSQC