METHOD(Vaporizer, wr_aim, void(entity thiswep, entity actor, .entity weaponentity))
{
if((actor.items & IT_UNLIMITED_AMMO) || GetResource(actor, thiswep.ammo_type) > 0)
- PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, 1000000, 0, 1, false);
+ PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, 1000000, 0, 1, false, true);
else
- PHYS_INPUT_BUTTON_ATCK2(actor) = bot_aim(actor, weaponentity, WEP_CVAR_SEC(vaporizer, speed), 0, WEP_CVAR_SEC(vaporizer, lifetime), false); // WEAPONTODO: replace with proper vaporizer cvars
+ PHYS_INPUT_BUTTON_ATCK2(actor) = bot_aim(actor, weaponentity, WEP_CVAR_SEC(vaporizer, speed), 0, WEP_CVAR_SEC(vaporizer, lifetime), false, true); // WEAPONTODO: replace with proper vaporizer cvars
}
METHOD(Vaporizer, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
{
// if the laser uses load, we also consider its ammo for reloading
if(WEP_CVAR(vaporizer, reload_ammo) && WEP_CVAR_SEC(vaporizer, ammo) && actor.(weaponentity).clip_load < min(vaporizer_ammo, WEP_CVAR_SEC(vaporizer, ammo))) { // forced reload
thiswep.wr_reload(thiswep, actor, weaponentity);
+ actor.(weaponentity).hagar_load = false; // rocket minsta exclusive var
+ return;
} else if(WEP_CVAR(vaporizer, reload_ammo) && actor.(weaponentity).clip_load < vaporizer_ammo) { // forced reload
thiswep.wr_reload(thiswep, actor, weaponentity);
+ actor.(weaponentity).hagar_load = false; // rocket minsta exclusive var
+ return;
}
if((fire & 1) && (GetResource(actor, RES_CELLS) || !autocvar_g_rm) && !weaponLocked(actor))
{
if((autocvar_g_rm && autocvar_g_rm_laser) || autocvar_g_rm_laser == 2)
{
bool rapid = autocvar_g_rm_laser_rapid;
- if(actor.(weaponentity).jump_interval <= time && !actor.(weaponentity).held_down)
+ //hagar_load was previously named held_down
+ if(actor.(weaponentity).jump_interval <= time && !actor.(weaponentity).hagar_load)
{
if(rapid)
- actor.(weaponentity).held_down = true;
+ actor.(weaponentity).hagar_load = true;
actor.(weaponentity).jump_interval = time + autocvar_g_rm_laser_refire;
actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_delay;
impressive_hits = 0;
W_RocketMinsta_Attack(actor, weaponentity, 0);
}
- else if(rapid && actor.(weaponentity).jump_interval2 <= time && actor.(weaponentity).held_down)
+ else if(rapid && actor.(weaponentity).jump_interval2 <= time && actor.(weaponentity).hagar_load)
{
actor.(weaponentity).jump_interval2 = time + autocvar_g_rm_laser_rapid_refire;
impressive_hits = 0;
if(WEP_CVAR_SEC(vaporizer, ammo))
W_DecreaseAmmo(thiswep, actor, WEP_CVAR_SEC(vaporizer, ammo), weaponentity);
- BLASTER_SECONDARY_ATTACK(vaporizer, actor, weaponentity);
+ makevectors(actor.v_angle);
+ W_Blaster_Attack(actor, weaponentity, WEP_BLASTER.m_id | HITTYPE_SECONDARY);
// now do normal refire
weapon_thinkf(actor, weaponentity, WFRAME_FIRE2, WEP_CVAR_SEC(vaporizer, animtime), w_ready);
}
}
else
- actor.(weaponentity).held_down = false;
+ actor.(weaponentity).hagar_load = false;
}
METHOD(Vaporizer, wr_setup, void(entity thiswep, entity actor, .entity weaponentity))
{
METHOD(Vaporizer, wr_impacteffect, void(entity thiswep, entity actor))
{
- vector org2 = w_org + w_backoff * 6;
+ vector org2 = w_org + w_backoff * 2;
if(w_deathtype & HITTYPE_SECONDARY)
{
pointparticles(EFFECT_BLASTER_IMPACT, org2, w_backoff * 1000, 1);