#ifdef SVQC
-METHOD(RaptorCannon, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) {
- bool isPlayer = IS_PLAYER(actor);
- entity player = isPlayer ? actor : actor.owner;
- entity veh = player.vehicle;
- // 1 [wait] 1 [wait] 2 [wait] 2 [wait] [wait]
- float t = autocvar_g_vehicle_raptor_cannon_refire * (1 + veh.misc_bulletcounter == 4);
- if (fire & 1)
- if (weapon_prepareattack(thiswep, player, weaponentity, false, t)) {
- if (isPlayer) W_SetupShot_Dir(player, weaponentity, v_forward, false, 0, SND_Null, CH_WEAPON_B, 0);
- vector org = w_shotorg;
- vector dir = w_shotdir;
- if (veh) {
- veh.misc_bulletcounter += 1;
- org = (veh.misc_bulletcounter <= 2) ? gettaginfo(veh.gun1, gettagindex(veh.gun1, "fire1"))
- : (((veh.misc_bulletcounter == 4) ? veh.misc_bulletcounter = 0 : 0), gettaginfo(veh.gun2, gettagindex(veh.gun2, "fire1")));
- dir = v_forward;
- veh.vehicle_energy -= autocvar_g_vehicle_raptor_cannon_cost;
- actor.cnt = time;
- }
- vehicles_projectile(veh, EFFECT_RAPTOR_MUZZLEFLASH.eent_eff_name, SND_LASERGUN_FIRE,
- org, normalize(dir + 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.m_id, PROJECTILE_RAPTORCANNON, 0, true, true, player);
- weapon_thinkf(player, weaponentity, WFRAME_FIRE1, 0, w_ready);
- }
+METHOD(RaptorCannon, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
+{
+ bool isPlayer = IS_PLAYER(actor);
+ entity player = isPlayer ? actor : actor.owner;
+ entity veh = player.vehicle;
+ // 1 [wait] 1 [wait] 2 [wait] 2 [wait] [wait]
+ float t = autocvar_g_vehicle_raptor_cannon_refire * (1 + veh.misc_bulletcounter == 4);
+ if (fire & 1) {
+ if (weapon_prepareattack(thiswep, player, weaponentity, false, t)) {
+ if (isPlayer) { W_SetupShot_Dir(player, weaponentity, v_forward, false, 0, SND_Null, CH_WEAPON_B, 0); }
+ vector org = w_shotorg;
+ vector dir = w_shotdir;
+ if (veh) {
+ veh.misc_bulletcounter += 1;
+ org = (veh.misc_bulletcounter <= 2) ? gettaginfo(veh.gun1, gettagindex(veh.gun1, "fire1"))
+ : (((veh.misc_bulletcounter == 4) ? veh.misc_bulletcounter = 0 : 0), gettaginfo(veh.gun2, gettagindex(veh.gun2, "fire1")));
+ dir = v_forward;
+ veh.vehicle_energy -= autocvar_g_vehicle_raptor_cannon_cost;
+ actor.cnt = time;
+ }
+ vehicles_projectile(veh, EFFECT_RAPTOR_MUZZLEFLASH.eent_eff_name, SND_LASERGUN_FIRE,
+ org, normalize(dir + 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.m_id, PROJECTILE_RAPTORCANNON, 0, true, true, player);
+ weapon_thinkf(player, weaponentity, WFRAME_FIRE1, 0, w_ready);
+ }
+ }
}
-METHOD(RaptorCannon, wr_checkammo1, bool(RacerAttack thiswep, entity actor, .entity weaponentity)) {
- bool isPlayer = IS_PLAYER(actor);
- entity player = isPlayer ? actor : actor.owner;
- entity veh = player.vehicle;
- return isPlayer || veh.vehicle_energy >= autocvar_g_vehicle_raptor_cannon_cost;
+METHOD(RaptorCannon, wr_checkammo1, bool(RacerAttack thiswep, entity actor, .entity weaponentity))
+{
+ bool isPlayer = IS_PLAYER(actor);
+ entity player = isPlayer ? actor : actor.owner;
+ entity veh = player.vehicle;
+ return isPlayer || veh.vehicle_energy >= autocvar_g_vehicle_raptor_cannon_cost;
}
void raptor_bombdrop(entity this);
-METHOD(RaptorBomb, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) {
- bool isPlayer = IS_PLAYER(actor);
- entity player = isPlayer ? actor : actor.owner;
- entity veh = player.vehicle;
- if (fire & 2)
- if (!isPlayer || weapon_prepareattack(thiswep, player, weaponentity, true, autocvar_g_vehicle_raptor_bombs_refire)) {
- entity e = (veh) ? veh : player;
- raptor_bombdrop(e);
- weapon_thinkf(player, weaponentity, WFRAME_FIRE2, 0, w_ready);
- }
+METHOD(RaptorBomb, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
+{
+ bool isPlayer = IS_PLAYER(actor);
+ entity player = isPlayer ? actor : actor.owner;
+ entity veh = player.vehicle;
+ if (fire & 2) {
+ if (!isPlayer || weapon_prepareattack(thiswep, player, weaponentity, true, autocvar_g_vehicle_raptor_bombs_refire)) {
+ entity e = (veh) ? veh : player;
+ raptor_bombdrop(e);
+ weapon_thinkf(player, weaponentity, WFRAME_FIRE2, 0, w_ready);
+ }
+ }
}
void raptor_flare_think(entity this);
void raptor_flare_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force);
void raptor_flare_touch(entity this, entity toucher);
-METHOD(RaptorFlare, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire)) {
- bool isPlayer = IS_PLAYER(actor);
- entity player = isPlayer ? actor : actor.owner;
- entity veh = player.vehicle;
- if (fire & 2)
- if (!isPlayer || weapon_prepareattack(thiswep, player, weaponentity, true, autocvar_g_vehicle_raptor_flare_refire)) {
- for(int i = 0; i < 3; ++i) {
- entity _flare = spawn();
- setmodel(_flare, MDL_VEH_RAPTOR_FLARE);
- _flare.effects = EF_LOWPRECISION | EF_FLAME;
- _flare.scale = 0.5;
- setorigin(_flare, actor.origin - '0 0 16');
- set_movetype(_flare, MOVETYPE_TOSS);
- _flare.gravity = 0.15;
- _flare.velocity = 0.25 * actor.velocity + (v_forward + randomvec() * 0.25)* -500;
- setthink(_flare, raptor_flare_think);
- _flare.nextthink = time;
- _flare.owner = veh ? veh : player;
- _flare.solid = SOLID_CORPSE;
- _flare.takedamage = DAMAGE_YES;
- _flare.event_damage = raptor_flare_damage;
- _flare.health = 20;
- _flare.tur_impacttime = time + autocvar_g_vehicle_raptor_flare_lifetime;
- settouch(_flare, raptor_flare_touch);
- }
- weapon_thinkf(player, weaponentity, WFRAME_FIRE2, 0, w_ready);
- }
+METHOD(RaptorFlare, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
+{
+ bool isPlayer = IS_PLAYER(actor);
+ entity player = isPlayer ? actor : actor.owner;
+ entity veh = player.vehicle;
+ if (fire & 2) {
+ if (!isPlayer || weapon_prepareattack(thiswep, player, weaponentity, true, autocvar_g_vehicle_raptor_flare_refire)) {
+ for (int i = 0; i < 3; ++i) {
+ entity _flare = spawn();
+ setmodel(_flare, MDL_VEH_RAPTOR_FLARE);
+ _flare.effects = EF_LOWPRECISION | EF_FLAME;
+ _flare.scale = 0.5;
+ setorigin(_flare, actor.origin - '0 0 16');
+ set_movetype(_flare, MOVETYPE_TOSS);
+ _flare.gravity = 0.15;
+ _flare.velocity = 0.25 * actor.velocity + (v_forward + randomvec() * 0.25) * -500;
+ setthink(_flare, raptor_flare_think);
+ _flare.nextthink = time;
+ _flare.owner = veh ? veh : player;
+ _flare.solid = SOLID_CORPSE;
+ _flare.takedamage = DAMAGE_YES;
+ _flare.event_damage = raptor_flare_damage;
+ _flare.health = 20;
+ _flare.tur_impacttime = time + autocvar_g_vehicle_raptor_flare_lifetime;
+ settouch(_flare, raptor_flare_touch);
+ }
+ weapon_thinkf(player, weaponentity, WFRAME_FIRE2, 0, w_ready);
+ }
+ }
}
void raptor_bomblet_boom(entity this)
{
- RadiusDamage (this, this.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
- autocvar_g_vehicle_raptor_bomblet_edgedamage,
- autocvar_g_vehicle_raptor_bomblet_radius, NULL, NULL,
- autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB.m_id, NULL);
- delete(this);
+ RadiusDamage(this, this.realowner, autocvar_g_vehicle_raptor_bomblet_damage,
+ autocvar_g_vehicle_raptor_bomblet_edgedamage,
+ autocvar_g_vehicle_raptor_bomblet_radius, NULL, NULL,
+ autocvar_g_vehicle_raptor_bomblet_force, DEATH_VH_RAPT_BOMB.m_id, NULL);
+ delete(this);
}
void raptor_bomblet_touch(entity this, entity toucher)
{
- if(toucher == this.owner)
- return;
+ if (toucher == this.owner) {
+ return;
+ }
- PROJECTILE_TOUCH(this, toucher);
- setthink(this, raptor_bomblet_boom);
- this.nextthink = time + random() * autocvar_g_vehicle_raptor_bomblet_explode_delay;
+ PROJECTILE_TOUCH(this, toucher);
+ setthink(this, raptor_bomblet_boom);
+ this.nextthink = time + random() * autocvar_g_vehicle_raptor_bomblet_explode_delay;
}
void raptor_bomb_burst(entity this)
{
- if(this.cnt > time)
- if(autocvar_g_vehicle_raptor_bomblet_alt)
- {
- this.nextthink = time;
- traceline(this.origin, this.origin + (normalize(this.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, this);
- if((trace_fraction == 1.0) || (vdist(this.origin - this.owner.origin, <, autocvar_g_vehicle_raptor_bomblet_radius)))
- {
- UpdateCSQCProjectile(this);
- return;
- }
- }
-
- entity bomblet;
- float i;
-
- Damage_DamageInfo(this.origin, 0, 0, 0, '0 0 0', DEATH_VH_RAPT_FRAGMENT.m_id, 0, this);
-
- for(i = 0; i < autocvar_g_vehicle_raptor_bomblets; ++i)
- {
- bomblet = spawn();
- setorigin(bomblet, this.origin);
-
- set_movetype(bomblet, MOVETYPE_TOSS);
- settouch(bomblet, raptor_bomblet_touch);
- setthink(bomblet, raptor_bomblet_boom);
- bomblet.nextthink = time + 5;
- bomblet.owner = this.owner;
- bomblet.realowner = this.realowner;
- bomblet.velocity = normalize(normalize(this.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(this.velocity);
-
- PROJECTILE_MAKETRIGGER(bomblet);
- CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true);
- }
-
- delete(this);
+ if (this.cnt > time) {
+ if (autocvar_g_vehicle_raptor_bomblet_alt) {
+ this.nextthink = time;
+ traceline(this.origin, this.origin + (normalize(this.velocity) * autocvar_g_vehicle_raptor_bomblet_alt), MOVE_NORMAL, this);
+ if ((trace_fraction == 1.0) || (vdist(this.origin - this.owner.origin, <, autocvar_g_vehicle_raptor_bomblet_radius))) {
+ UpdateCSQCProjectile(this);
+ return;
+ }
+ }
+ }
+
+ entity bomblet;
+ float i;
+
+ Damage_DamageInfo(this.origin, 0, 0, 0, '0 0 0', DEATH_VH_RAPT_FRAGMENT.m_id, 0, this);
+
+ for (i = 0; i < autocvar_g_vehicle_raptor_bomblets; ++i) {
+ bomblet = spawn();
+ setorigin(bomblet, this.origin);
+
+ set_movetype(bomblet, MOVETYPE_TOSS);
+ settouch(bomblet, raptor_bomblet_touch);
+ setthink(bomblet, raptor_bomblet_boom);
+ bomblet.nextthink = time + 5;
+ bomblet.owner = this.owner;
+ bomblet.realowner = this.realowner;
+ bomblet.velocity = normalize(normalize(this.velocity) + (randomvec() * autocvar_g_vehicle_raptor_bomblet_spread)) * vlen(this.velocity);
+
+ PROJECTILE_MAKETRIGGER(bomblet);
+ CSQCProjectile(bomblet, true, PROJECTILE_RAPTORBOMBLET, true);
+ }
+
+ delete(this);
}
void raptor_bomb_touch(entity this, entity toucher)
void raptor_bombdrop(entity this)
{
- entity bomb_1, bomb_2;
-
- bomb_1 = spawn();
- bomb_2 = spawn();
-
- vector org = gettaginfo(this, gettagindex(this, "bombmount_left"));
- setorigin(bomb_1, org);
- org = gettaginfo(this, gettagindex(this, "bombmount_right"));
- setorigin(bomb_2, org);
-
- set_movetype(bomb_1, MOVETYPE_BOUNCE);
- set_movetype(bomb_2, MOVETYPE_BOUNCE);
- bomb_1.velocity = bomb_2.velocity = this.velocity;
- settouch(bomb_1, raptor_bomb_touch);
- settouch(bomb_2, raptor_bomb_touch);
- setthink(bomb_1, raptor_bomb_burst);
- setthink(bomb_2, raptor_bomb_burst);
- bomb_1.cnt = bomb_2.cnt = time + 10;
-
- if(autocvar_g_vehicle_raptor_bomblet_alt)
- bomb_1.nextthink = bomb_2.nextthink = time;
- else
- bomb_1.nextthink = bomb_2.nextthink = time + autocvar_g_vehicle_raptor_bomblet_time;
-
- bomb_1.owner = bomb_2.owner = this;
- bomb_1.realowner = bomb_2.realowner = this.owner;
- bomb_1.solid = bomb_2.solid = SOLID_BBOX;
- bomb_1.gravity = bomb_2.gravity = 1;
-
- PROJECTILE_MAKETRIGGER(bomb_1);
- PROJECTILE_MAKETRIGGER(bomb_2);
-
- CSQCProjectile(bomb_1, true, PROJECTILE_RAPTORBOMB, true);
- CSQCProjectile(bomb_2, true, PROJECTILE_RAPTORBOMB, true);
+ entity bomb_1, bomb_2;
+
+ bomb_1 = spawn();
+ bomb_2 = spawn();
+
+ vector org = gettaginfo(this, gettagindex(this, "bombmount_left"));
+ setorigin(bomb_1, org);
+ org = gettaginfo(this, gettagindex(this, "bombmount_right"));
+ setorigin(bomb_2, org);
+
+ set_movetype(bomb_1, MOVETYPE_BOUNCE);
+ set_movetype(bomb_2, MOVETYPE_BOUNCE);
+ bomb_1.velocity = bomb_2.velocity = this.velocity;
+ settouch(bomb_1, raptor_bomb_touch);
+ settouch(bomb_2, raptor_bomb_touch);
+ setthink(bomb_1, raptor_bomb_burst);
+ setthink(bomb_2, raptor_bomb_burst);
+ bomb_1.cnt = bomb_2.cnt = time + 10;
+
+ if (autocvar_g_vehicle_raptor_bomblet_alt) {
+ bomb_1.nextthink = bomb_2.nextthink = time;
+ } else {
+ bomb_1.nextthink = bomb_2.nextthink = time + autocvar_g_vehicle_raptor_bomblet_time;
+ }
+
+ bomb_1.owner = bomb_2.owner = this;
+ bomb_1.realowner = bomb_2.realowner = this.owner;
+ bomb_1.solid = bomb_2.solid = SOLID_BBOX;
+ bomb_1.gravity = bomb_2.gravity = 1;
+
+ PROJECTILE_MAKETRIGGER(bomb_1);
+ PROJECTILE_MAKETRIGGER(bomb_2);
+
+ CSQCProjectile(bomb_1, true, PROJECTILE_RAPTORBOMB, true);
+ CSQCProjectile(bomb_2, true, PROJECTILE_RAPTORBOMB, true);
}
void raptor_flare_touch(entity this, entity toucher)
{
- delete(this);
+ delete(this);
}
void raptor_flare_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
{
- this.health -= damage;
- if(this.health <= 0)
- delete(this);
+ this.health -= damage;
+ if (this.health <= 0) {
+ delete(this);
+ }
}
void raptor_flare_think(entity this)
{
- this.nextthink = time + 0.1;
- IL_EACH(g_projectiles, it.enemy == this.owner,
- {
- if(vdist(this.origin - it.origin, <, autocvar_g_vehicle_raptor_flare_range))
- if(random() > autocvar_g_vehicle_raptor_flare_chase)
- it.enemy = this;
- });
-
- if(this.tur_impacttime < time)
- delete(this);
+ this.nextthink = time + 0.1;
+ IL_EACH(g_projectiles, it.enemy == this.owner,
+ {
+ if (vdist(this.origin - it.origin, <, autocvar_g_vehicle_raptor_flare_range)) {
+ if (random() > autocvar_g_vehicle_raptor_flare_chase) {
+ it.enemy = this;
+ }
+ }
+ });
+
+ if (this.tur_impacttime < time) {
+ delete(this);
+ }
}
#endif
void RaptorCBShellfragDraw(entity this)
{
- if(wasfreed(this))
- return;
+ if (wasfreed(this)) {
+ return;
+ }
- Movetype_Physics_MatchTicrate(this, autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy);
- this.avelocity += randomvec() * 15;
- this.renderflags = 0;
+ Movetype_Physics_MatchTicrate(this, autocvar_cl_gibs_ticrate, autocvar_cl_gibs_sloppy);
+ this.avelocity += randomvec() * 15;
+ this.renderflags = 0;
- if(this.cnt < time)
- this.alpha = bound(0, this.nextthink - time, 1);
+ if (this.cnt < time) {
+ this.alpha = bound(0, this.nextthink - time, 1);
+ }
- if(this.alpha < ALPHA_MIN_VISIBLE)
- delete(this);
+ if (this.alpha < ALPHA_MIN_VISIBLE) {
+ delete(this);
+ }
}
void RaptorCBShellfragToss(vector _org, vector _vel, vector _ang)
{
- entity sfrag = spawn();
- setmodel(sfrag, MDL_VEH_RAPTOR_CB_FRAGMENT);
- setorigin(sfrag, _org);
+ entity sfrag = spawn();
+ setmodel(sfrag, MDL_VEH_RAPTOR_CB_FRAGMENT);
+ setorigin(sfrag, _org);
- set_movetype(sfrag, MOVETYPE_BOUNCE);
- sfrag.gravity = 0.15;
- sfrag.solid = SOLID_CORPSE;
+ set_movetype(sfrag, MOVETYPE_BOUNCE);
+ sfrag.gravity = 0.15;
+ sfrag.solid = SOLID_CORPSE;
- sfrag.draw = RaptorCBShellfragDraw;
- IL_PUSH(g_drawables, sfrag);
+ sfrag.draw = RaptorCBShellfragDraw;
+ IL_PUSH(g_drawables, sfrag);
- sfrag.velocity = _vel;
- sfrag.avelocity = prandomvec() * vlen(sfrag.velocity);
- sfrag.angles = _ang;
+ sfrag.velocity = _vel;
+ sfrag.avelocity = prandomvec() * vlen(sfrag.velocity);
+ sfrag.angles = _ang;
- sfrag.move_time = time;
- sfrag.damageforcescale = 4;
+ sfrag.move_time = time;
+ sfrag.damageforcescale = 4;
- sfrag.nextthink = time + 3;
- sfrag.cnt = time + 2;
- sfrag.alpha = 1;
- sfrag.drawmask = MASK_NORMAL;
+ sfrag.nextthink = time + 3;
+ sfrag.cnt = time + 2;
+ sfrag.alpha = 1;
+ sfrag.drawmask = MASK_NORMAL;
}
#endif