#include "blaster.qh"
#ifdef SVQC
-spawnfunc(weapon_blaster) { weapon_defaultspawnfunc(this, WEP_BLASTER); }
-spawnfunc(weapon_laser) { spawnfunc_weapon_blaster(this); }
void W_Blaster_Touch(entity this, entity toucher)
{
this.event_damage = func_null;
- RadiusDamage(
+ RadiusDamageForSource(
this,
+ (this.origin + (this.mins + this.maxs) * 0.5),
+ this.velocity,
this.realowner,
this.blaster_damage,
this.blaster_edgedamage,
this.blaster_radius,
NULL,
NULL,
+ false,
this.blaster_force,
+ this.blaster_force_zscale,
this.projectiledeathtype,
+ this.weaponentity_fld,
toucher
);
float atk_edgedamage,
float atk_radius,
float atk_force,
+ float atk_force_zscale,
float atk_speed,
float atk_spread,
float atk_delay,
{
vector s_forward = v_forward * cos(atk_shotangle * DEG2RAD) + v_up * sin(atk_shotangle * DEG2RAD);
- W_SetupShot_Dir(actor, weaponentity, s_forward, false, 3, SND_LASERGUN_FIRE, CH_WEAPON_B, atk_damage);
- Send_Effect(EFFECT_BLASTER_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, 1);
+ W_SetupShot_Dir(actor, weaponentity, s_forward, false, 3, SND_LASERGUN_FIRE, CH_WEAPON_B, atk_damage, atk_deathtype);
+ W_MuzzleFlash(WEP_BLASTER, actor, weaponentity, w_shotorg, w_shotdir);
entity missile = new(blasterbolt);
missile.owner = missile.realowner = actor;
missile.blaster_edgedamage = atk_edgedamage;
missile.blaster_radius = atk_radius;
missile.blaster_force = atk_force;
+ missile.blaster_force_zscale = atk_force_zscale;
missile.blaster_lifetime = atk_lifetime;
setorigin(missile, w_shotorg);
IL_PUSH(g_bot_dodge, missile);
missile.missile_flags = MIF_SPLASH;
missile.projectiledeathtype = atk_deathtype;
+ missile.weaponentity_fld = weaponentity;
setthink(missile, W_Blaster_Think);
missile.nextthink = time + atk_delay;
WEP_CVAR_PRI(blaster, edgedamage),
WEP_CVAR_PRI(blaster, radius),
WEP_CVAR_PRI(blaster, force),
+ WEP_CVAR_PRI(blaster, force_zscale),
WEP_CVAR_PRI(blaster, speed),
WEP_CVAR_PRI(blaster, spread),
WEP_CVAR_PRI(blaster, delay),
WEP_CVAR_SEC(blaster, edgedamage),
WEP_CVAR_SEC(blaster, radius),
WEP_CVAR_SEC(blaster, force),
+ WEP_CVAR_SEC(blaster, force_zscale),
WEP_CVAR_SEC(blaster, speed),
WEP_CVAR_SEC(blaster, spread),
WEP_CVAR_SEC(blaster, delay),
return WEAPON_BLASTER_MURDER;
}
+METHOD(OffhandBlaster, offhand_think, void(OffhandBlaster this, entity actor, bool key_pressed))
+{
+ if (!key_pressed || (time < actor.jump_interval))
+ {
+ return;
+ }
+ actor.jump_interval = time + WEP_CVAR_SEC(blaster, refire) * W_WeaponRateFactor(actor);
+ .entity weaponentity = weaponentities[1];
+ BLASTER_SECONDARY_ATTACK(blaster, actor, weaponentity);
+}
+
#endif
#ifdef CSQC