-#ifdef REGISTER_VEHICLE
-REGISTER_VEHICLE(
+#ifndef VEHICLE_RAPTOR
+#define VEHICLE_RAPTOR
+#include "raptor.qh"
+#ifndef MENUQC
+int v_raptor(int);
+#endif
+REGISTER_VEHICLE_SIMPLE(
/* VEH_##id */ RAPTOR,
-/* function */ v_raptor,
/* spawnflags */ VHF_DMGSHAKE | VHF_DMGROLL,
/* mins,maxs */ '-80 -80 0', '80 80 70',
/* model */ "models/vehicles/raptor.dpm",
/* tags */ "", "tag_hud", "tag_camera",
/* netname */ "raptor",
/* fullname */ _("Raptor")
-);
-#else
+) {
+ this.m_icon = "vehicle_raptor";
+#ifndef MENUQC
+ this.vehicle_func = v_raptor;
+#endif
+}
+#endif
+
+#ifdef IMPLEMENTATION
#ifdef SVQC
bool autocvar_g_vehicle_raptor;
.entity bomb2;
float raptor_altitude(float amax)
-{
+{SELFPARAM();
tracebox(self.origin, self.mins, self.maxs, self.origin - ('0 0 1' * amax), MOVE_WORLDONLY, self);
return vlen(self.origin - trace_endpos);
}
void raptor_bomblet_boom()
-{
+{SELFPARAM();
RadiusDamage (self, self.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
autocvar_g_vehicle_raptor_bomblet_edgedamage,
autocvar_g_vehicle_raptor_bomblet_radius, world, world,
}
void raptor_bomblet_touch()
-{
+{SELFPARAM();
if(other == self.owner)
return;
}
void raptor_bomb_burst()
-{
+{SELFPARAM();
if(self.cnt > time)
if(autocvar_g_vehicle_raptor_bomblet_alt)
{
}
void raptor_bombdrop()
-{
+{SELFPARAM();
entity bomb_1, bomb_2;
bomb_1 = spawn();
void raptor_fire_cannon(entity gun, string tagname)
-{
- vehicles_projectile("raptor_cannon_muzzleflash", "weapons/lasergun_fire.wav",
+{SELFPARAM();
+ vehicles_projectile(EFFECT_RAPTOR_MUZZLEFLASH.eent_eff_name, SND(LASERGUN_FIRE),
gettaginfo(gun, gettagindex(gun, tagname)), 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_VH_RAPT_CANNON, PROJECTILE_RAPTORCANNON, 0, true, true, self.owner);
}
void raptor_land()
-{
+{SELFPARAM();
float hgt;
hgt = raptor_altitude(512);
}
self.nextthink = time;
-
- CSQCMODEL_AUTOUPDATE();
+
+ CSQCMODEL_AUTOUPDATE(self);
}
void raptor_exit(float eject)
-{
+{SELFPARAM();
vector spot;
self.tur_head.exteriormodeltoclient = world;
}
void raptor_flare_touch()
-{
+{SELFPARAM();
remove(self);
}
void raptor_flare_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
-{
+{SELFPARAM();
self.health -= damage;
if(self.health <= 0)
remove(self);
}
void raptor_flare_think()
-{
+{SELFPARAM();
self.nextthink = time + 0.1;
entity _missile = findchainentity(enemy, self.owner);
while(_missile)
}
float raptor_frame()
-{
+{SELFPARAM();
entity player, raptor;
float ftmp = 0;
vector df;
player = self;
raptor = self.vehicle;
- self = raptor;
-
+ setself(raptor);
+
vehicles_painframe();
/*
ftmp = vlen(self.velocity);
if(self.sound_nexttime < time)
{
self.sound_nexttime = time + 7.955812;
- //sound (self.tur_head, CH_TRIGGER_SINGLE, "vehicles/raptor_fly.wav", 1 - ftmp, ATTEN_NORM );
- sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", 1, ATTEN_NORM);
+ //sound (self.tur_head, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_FLY, 1 - ftmp, ATTEN_NORM );
+ sound (self, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_SPEED, 1, ATTEN_NORM);
self.wait = ftmp;
}
/*
else if(fabs(ftmp - self.wait) > 0.2)
{
- sound (self.tur_head, CH_TRIGGER_SINGLE, "", 1 - ftmp, ATTEN_NORM );
- sound (self, CH_TRIGGER_SINGLE, "", ftmp, ATTEN_NORM);
+ sound (self.tur_head, CH_TRIGGER_SINGLE, SND_Null, 1 - ftmp, ATTEN_NORM );
+ sound (self, CH_TRIGGER_SINGLE, SND_Null, ftmp, ATTEN_NORM);
self.wait = ftmp;
}
*/
if(raptor.deadflag != DEAD_NO)
{
- self = player;
+ setself(player);
player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
return 1;
}
for(i = 0; i < 3; ++i)
{
_flare = spawn();
- setmodel(_flare, "models/runematch/rune.mdl");
+ setmodel(_flare, MDL_VEH_RAPTOR_FLARE);
_flare.effects = EF_LOWPRECISION | EF_FLAME;
_flare.scale = 0.5;
setorigin(_flare, self.origin - '0 0 16');
}
if(_incomming)
- sound(self, CH_PAIN_SINGLE, "vehicles/missile_alarm.wav", VOL_BASE, ATTEN_NONE);
+ sound(self, CH_PAIN_SINGLE, SND_VEH_MISSILE_ALARM, VOL_BASE, ATTEN_NONE);
self.bomb1.cnt = time + 1;
}
player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
- self = player;
+ setself(player);
return 1;
}
float raptor_takeoff()
-{
+{SELFPARAM();
entity player, raptor;
player = self;
raptor = self.vehicle;
- self = raptor;
-
+ setself(raptor);
+
self.nextthink = time;
- CSQCMODEL_AUTOUPDATE();
+ CSQCMODEL_AUTOUPDATE(self);
self.nextthink = 0; // will this work?
-
+
if(self.sound_nexttime < time)
{
self.sound_nexttime = time + 7.955812; //soundlength("vehicles/raptor_fly.wav");
- sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (self, CH_TRIGGER_SINGLE, SND_VEH_RAPTOR_SPEED, VOL_VEHICLEENGINE, ATTEN_NORM);
}
// Takeoff sequense
VEHICLE_UPDATE_PLAYER(player, shield, raptor);
player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0;
- self = player;
+ setself(player);
return 1;
}
void raptor_blowup()
-{
+{SELFPARAM();
self.deadflag = DEAD_DEAD;
self.vehicle_exit(VHEF_NORMAL);
RadiusDamage (self, self.enemy, 250, 15, 250, world, world, 250, DEATH_VH_RAPT_DEATH, world);
}
void raptor_diethink()
-{
+{SELFPARAM();
if(time >= self.wait)
self.think = raptor_blowup;
if(random() < 0.05)
{
- sound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTEN_NORM);
- Send_Effect("explosion_small", randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
+ sound (self, CH_SHOTS, SND_ROCKET_IMPACT, VOL_BASE, ATTEN_NORM);
+ Send_Effect(EFFECT_EXPLOSION_SMALL, randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1);
}
self.nextthink = time;
-
- CSQCMODEL_AUTOUPDATE();
+
+ CSQCMODEL_AUTOUPDATE(self);
}
// If we dont do this ever now and then, the raptors rotors
// stop working, presumably due to angle overflow. cute.
void raptor_rotor_anglefix()
-{
+{SELFPARAM();
self.gun1.angles_y = anglemods(self.gun1.angles_y);
self.gun2.angles_y = anglemods(self.gun2.angles_y);
self.nextthink = time + 15;
}
float raptor_impulse(float _imp)
-{
+{SELFPARAM();
switch(_imp)
{
case 1:
return false;
}
-void spawnfunc_vehicle_raptor()
+spawnfunc(vehicle_raptor)
{
if(!autocvar_g_vehicle_raptor) { remove(self); return; }
if(!vehicle_initialize(VEH_RAPTOR, false)) { remove(self); return; }
}
float v_raptor(float req)
-{
+{SELFPARAM();
switch(req)
{
case VR_IMPACT:
{
if(autocvar_g_vehicle_raptor_bouncepain)
vehicles_impact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z);
-
+
return true;
}
case VR_ENTER:
self.nextthink = time;
self.wait = time + 5 + (random() * 5);
- Send_Effect("explosion_medium", findbetterlocation (self.origin, 16), '0 0 0', 1);
+ Send_Effect(EFFECT_EXPLOSION_MEDIUM, findbetterlocation (self.origin, 16), '0 0 0', 1);
self.velocity_z += 600;
self.gun1 = spawn();
self.gun2 = spawn();
- setmodel(self.bomb1,"models/vehicles/clusterbomb_folded.md3");
- setmodel(self.bomb2,"models/vehicles/clusterbomb_folded.md3");
- setmodel(self.gun1, "models/vehicles/raptor_gun.dpm");
- setmodel(self.gun2, "models/vehicles/raptor_gun.dpm");
- setmodel(self.tur_head, "models/vehicles/raptor_body.dpm");
+ setmodel(self.bomb1, MDL_VEH_RAPTOR_CB_FOLDED);
+ setmodel(self.bomb2, MDL_VEH_RAPTOR_CB_FOLDED);
+ setmodel(self.gun1, MDL_VEH_RAPTOR_GUN);
+ setmodel(self.gun2, MDL_VEH_RAPTOR_GUN);
+ setmodel(self.tur_head, MDL_VEH_RAPTOR_TAIL);
setattachment(self.bomb1, self, "bombmount_left");
setattachment(self.bomb2, self, "bombmount_right");
spinner = spawn();
spinner.owner = self;
- setmodel(spinner,"models/vehicles/spinner.dpm");
+ setmodel(spinner, MDL_VEH_RAPTOR_PROP);
setattachment(spinner, self, "engine_left");
spinner.movetype = MOVETYPE_NOCLIP;
spinner.avelocity = '0 90 0';
spinner = spawn();
spinner.owner = self;
- setmodel(spinner,"models/vehicles/spinner.dpm");
+ setmodel(spinner, MDL_VEH_RAPTOR_PROP);
setattachment(spinner, self, "engine_right");
spinner.movetype = MOVETYPE_NOCLIP;
spinner.avelocity = '0 -90 0';
self.movetype = MOVETYPE_TOSS;
self.solid = SOLID_SLIDEBOX;
self.vehicle_energy = 1;
-
+
self.PlayerPhysplug = raptor_frame;
self.bomb1.gun1.avelocity_y = 90;
self.bomb1.gun2.avelocity_y = -90;
-
+
self.delay = time;
self.bouncefactor = autocvar_g_vehicle_raptor_bouncefactor;
if(autocvar_g_vehicle_raptor_energy_regen)
self.vehicle_flags |= VHF_ENERGYREGEN;
-
+
self.vehicle_exit = raptor_exit;
self.respawntime = autocvar_g_vehicle_raptor_respawntime;
self.vehicle_health = autocvar_g_vehicle_raptor_health;
self.vehicle_shield = autocvar_g_vehicle_raptor_shield;
self.max_health = self.vehicle_health;
-
+
return true;
}
case VR_PRECACHE:
{
- precache_model ("models/vehicles/raptor.dpm");
- precache_model ("models/vehicles/raptor_gun.dpm");
- precache_model ("models/vehicles/spinner.dpm");
- precache_model ("models/vehicles/raptor_cockpit.dpm");
- precache_model ("models/vehicles/clusterbomb_folded.md3");
- precache_model ("models/vehicles/raptor_body.dpm");
-
- precache_sound ("vehicles/raptor_fly.wav");
- precache_sound ("vehicles/raptor_speed.wav");
- precache_sound ("vehicles/missile_alarm.wav");
-
return true;
}
}
#ifdef CSQC
void RaptorCBShellfragDraw()
-{
+{SELFPARAM();
if(wasfreed(self))
return;
}
void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang)
-{
+{SELFPARAM();
entity sfrag;
sfrag = spawn();
- setmodel(sfrag, "models/vehicles/clusterbomb_fragment.md3");
+ setmodel(sfrag, MDL_VEH_RAPTOR_CB_FRAGMENT);
setorigin(sfrag, _org);
sfrag.move_movetype = MOVETYPE_BOUNCE;
case RSM_BOMB: crosshair = vCROSS_BURST; break;
default: crosshair = vCROSS_BURST;
}
-
- Vehicles_drawHUD("vehicle_raptor", "vehicle_raptor_weapon1", "vehicle_raptor_weapon2",
+
+ Vehicles_drawHUD(VEH_RAPTOR.m_icon, "vehicle_raptor_weapon1", "vehicle_raptor_weapon2",
"vehicle_icon_ammo1", autocvar_hud_progressbar_vehicles_ammo1_color,
"vehicle_icon_ammo2", autocvar_hud_progressbar_vehicles_ammo2_color,
crosshair);