#ifdef IMPLEMENTATION
#ifdef SVQC
-#include "../../effects.qh"
+#include "../../effects/effects.qh"
#include "../../triggers/trigger/impulse.qh"
bool autocvar_g_vehicle_racer;
var vector racer_force_from_tag(string tag_name, float spring_length, float max_power);
void racer_align4point(float _delta)
-{
+{SELFPARAM();
vector push_vector;
float fl_push, fr_push, bl_push, br_push;
}
void racer_fire_cannon(string tagname)
-{
+{SELFPARAM();
vector v;
entity bolt;
v = gettaginfo(self, gettagindex(self, tagname));
- bolt = vehicles_projectile("wakizashi_gun_muzzleflash", "weapons/lasergun_fire.wav",
+ bolt = vehicles_projectile(EFFECT_RACER_MUZZLEFLASH.eent_eff_name, SND(LASERGUN_FIRE),
v, normalize(v_forward + randomvec() * autocvar_g_vehicle_racer_cannon_spread) * autocvar_g_vehicle_racer_cannon_speed,
autocvar_g_vehicle_racer_cannon_damage, autocvar_g_vehicle_racer_cannon_radius, autocvar_g_vehicle_racer_cannon_force, 0,
DEATH_VH_WAKI_GUN, PROJECTILE_WAKICANNON, 0, true, true, self.owner);
}
void racer_rocket_groundhugger()
-{
+{SELFPARAM();
vector olddir, newdir;
float oldvel, newvel;
}
void racer_rocket_tracker()
-{
+{SELFPARAM();
vector olddir, newdir;
float oldvel, newvel;
}
void racer_fire_rocket(string tagname, entity trg)
-{
+{SELFPARAM();
vector v = gettaginfo(self, gettagindex(self, tagname));
- entity rocket = vehicles_projectile("wakizashi_rocket_launch", "weapons/rocket_fire.wav",
+ entity rocket = vehicles_projectile(EFFECT_RACER_ROCKETLAUNCH.eent_eff_name, SND(ROCKET_FIRE),
v, v_forward * autocvar_g_vehicle_racer_rocket_speed,
autocvar_g_vehicle_racer_rocket_damage, autocvar_g_vehicle_racer_rocket_radius, autocvar_g_vehicle_racer_rocket_force, 3,
DEATH_VH_WAKI_ROCKET, PROJECTILE_WAKIROCKET, 20, false, false, self.owner);
}
float racer_frame()
-{
+{SELFPARAM();
entity player, racer;
vector df;
float ftmp;
player = self;
racer = self.vehicle;
- self = racer;
+ setself(racer);
vehicles_painframe();
if(racer.deadflag != DEAD_NO)
{
- self = player;
+ setself(player);
player.BUTTON_ATCK = player.BUTTON_ATCK2 = 0;
return 1;
}
{
self.sounds = 1;
self.sound_nexttime = time + 10.922667; //soundlength("vehicles/racer_move.wav");
- sound (self, CH_TRIGGER_SINGLE, "vehicles/racer_move.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (self, CH_TRIGGER_SINGLE, SND_VEH_RACER_MOVE, VOL_VEHICLEENGINE, ATTEN_NORM);
}
#endif
}
{
self.sounds = 0;
self.sound_nexttime = time + 11.888604; //soundlength("vehicles/racer_idle.wav");
- sound (self, CH_TRIGGER_SINGLE, "vehicles/racer_idle.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (self, CH_TRIGGER_SINGLE, SND_VEH_RACER_IDLE, VOL_VEHICLEENGINE, ATTEN_NORM);
}
}
#endif
{
#ifdef SVQC
if(time - racer.wait > 0.2)
- pointparticles(particleeffectnum("wakizashi_booster_smoke"), self.origin - v_forward * 32, v_forward * vlen(self.velocity), 1);
+ pointparticles(particleeffectnum(EFFECT_RACER_BOOSTER), self.origin - v_forward * 32, v_forward * vlen(self.velocity), 1);
#endif
racer.wait = time;
{
traceline(racer.origin, racer.origin - '0 0 256', MOVE_NORMAL, self);
if(trace_fraction != 1.0)
- pointparticles(particleeffectnum("smoke_small"), trace_endpos, '0 0 0', 1);
+ pointparticles(particleeffectnum(EFFECT_SMOKE_SMALL), trace_endpos, '0 0 0', 1);
racer.invincible_finished = time + 0.1 + (random() * 0.1);
}
if(racer.strength_finished < time)
{
racer.strength_finished = time + 10.922667; //soundlength("vehicles/racer_boost.wav");
- sound (racer.tur_head, CH_TRIGGER_SINGLE, "vehicles/racer_boost.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (racer.tur_head, CH_TRIGGER_SINGLE, SND_VEH_RACER_BOOST, VOL_VEHICLEENGINE, ATTEN_NORM);
}
#endif
}
else
{
racer.strength_finished = 0;
- sound (racer.tur_head, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (racer.tur_head, CH_TRIGGER_SINGLE, SND_Null, VOL_VEHICLEENGINE, ATTEN_NORM);
}
if(cont == CONTENT_WATER || cont == CONTENT_LAVA || cont == CONTENT_SLIME)
setorigin(player,racer.origin + '0 0 32');
player.velocity = racer.velocity;
- self = player;
+ setself(player);
return 1;
}
void racer_think()
-{
+{SELFPARAM();
self.nextthink = time;
float pushdeltatime = time - self.lastpushtime;
self.angles_x *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * pushdeltatime);
self.angles_z *= 1 - (autocvar_g_vehicle_racer_anglestabilizer * pushdeltatime);
- CSQCMODEL_AUTOUPDATE();
+ CSQCMODEL_AUTOUPDATE(self);
}
void racer_exit(float eject)
-{
+{SELFPARAM();
vector spot;
self.think = racer_think;
self.nextthink = time;
self.movetype = MOVETYPE_BOUNCE;
- sound (self.tur_head, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_VEHICLEENGINE, ATTEN_NORM);
+ sound (self.tur_head, CH_TRIGGER_SINGLE, SND_Null, VOL_VEHICLEENGINE, ATTEN_NORM);
if(!self.owner)
return;
}
void racer_blowup()
-{
+{SELFPARAM();
self.deadflag = DEAD_DEAD;
self.vehicle_exit(VHEF_NORMAL);
}
void racer_blowup_think()
-{
+{SELFPARAM();
self.nextthink = time;
if(time >= self.delay)
racer_blowup();
- CSQCMODEL_AUTOUPDATE();
+ CSQCMODEL_AUTOUPDATE(self);
}
void racer_deadtouch()
-{
+{SELFPARAM();
self.avelocity_x *= 0.7;
self.cnt -= 1;
if(self.cnt <= 0)
racer_blowup();
}
-void spawnfunc_vehicle_racer()
+spawnfunc(vehicle_racer)
{
if(!autocvar_g_vehicle_racer) { remove(self); return; }
if(!vehicle_initialize(VEH_RACER, false)) { remove(self); return; }
#ifdef CSQC
#if 0
void racer_draw()
-{
+{SELFPARAM();
float pushdeltatime = time - self.lastpushtime;
if (pushdeltatime > 0.15) pushdeltatime = 0;
self.lastpushtime = time;
#endif
bool v_racer(int req)
-{
+{SELFPARAM();
switch(req)
{
case VR_IMPACT:
self.cnt = 1 + random() * 2;
self.touch = racer_deadtouch;
- Send_Effect("explosion_medium", self.origin, '0 0 0', 1);
+ Send_Effect(EFFECT_EXPLOSION_MEDIUM, self.origin, '0 0 0', 1);
if(random() < 0.5)
self.avelocity_z = 32;
case VR_PRECACHE:
{
- #ifdef SVQC
- precache_sound ("weapons/lasergun_fire.wav");
- precache_sound ("weapons/rocket_fire.wav");
-
- precache_sound ("vehicles/racer_idle.wav");
- precache_sound ("vehicles/racer_move.wav");
- precache_sound ("vehicles/racer_boost.wav");
-
- precache_model ("models/vhshield.md3");
- #endif
- #ifndef MENUQC
- precache_model ("models/vehicles/wakizashi.dpm");
- precache_model ("models/vehicles/wakizashi_cockpit.dpm");
- #endif
return true;
}
}