if(!(self.realowner.items & IT_UNLIMITED_WEAPON_AMMO))
{
self.realowner.cnt = WEP_DEVASTATOR.m_id;
- ATTACK_FINISHED(self.realowner) = time;
+ int slot = 0; // TODO: unhardcode
+ ATTACK_FINISHED(self.realowner, slot) = time;
self.realowner.switchweapon = w_getbestweapon(self.realowner);
}
}
remove(self);
}
-void W_Devastator_DoRemoteExplode(void)
+void W_Devastator_DoRemoteExplode(int slot)
{SELFPARAM();
W_Devastator_Unregister();
if(!(self.realowner.items & IT_UNLIMITED_WEAPON_AMMO))
{
self.realowner.cnt = WEP_DEVASTATOR.m_id;
- ATTACK_FINISHED(self.realowner) = time;
+ ATTACK_FINISHED(self.realowner, slot) = time;
self.realowner.switchweapon = w_getbestweapon(self.realowner);
}
}
remove(self);
}
-void W_Devastator_RemoteExplode(void)
+void W_Devastator_RemoteExplode(int slot)
{SELFPARAM();
if(self.realowner.deadflag == DEAD_NO)
if(self.realowner.lastrocket)
: (vlen(NearestPointOnBox(self.realowner, self.origin) - self.origin) > WEP_CVAR(devastator, remote_radius)) // safety device
)
{
- W_Devastator_DoRemoteExplode();
+ W_Devastator_DoRemoteExplode(slot);
}
}
}
}
}
+ int slot = 0; // TODO: unhardcode
if(self.rl_detonate_later)
- W_Devastator_RemoteExplode();
+ W_Devastator_RemoteExplode(slot);
}
if(self.csqcprojectile_clientanimate == 0)
}
}
#endif
- METHOD(Devastator, wr_think, void(entity thiswep, entity actor, bool fire1, bool fire2))
+ METHOD(Devastator, wr_think, void(entity thiswep, entity actor, int slot, int fire))
{
if(WEP_CVAR(devastator, reload_ammo) && actor.clip_load < WEP_CVAR(devastator, ammo)) { // forced reload
Weapon w = get_weaponinfo(actor.weapon);
w.wr_reload(w);
} else {
- if(fire1)
+ if(fire & 1)
{
if(actor.rl_release || WEP_CVAR(devastator, guidestop))
- if(weapon_prepareattack(thiswep, actor, false, WEP_CVAR(devastator, refire)))
+ if(weapon_prepareattack(thiswep, actor, slot, false, WEP_CVAR(devastator, refire)))
{
W_Devastator_Attack(thiswep);
- weapon_thinkf(actor, WFRAME_FIRE1, WEP_CVAR(devastator, animtime), w_ready);
+ weapon_thinkf(actor, slot, WFRAME_FIRE1, WEP_CVAR(devastator, animtime), w_ready);
actor.rl_release = 0;
}
}
else
actor.rl_release = 1;
- if(fire2)
+ if(fire & 2)
if(actor.switchweapon == WEP_DEVASTATOR.m_id)
{
entity rock;
{
#if 0
// don't switch while guiding a missile
- if(ATTACK_FINISHED(self) <= time || self.weapon != WEP_DEVASTATOR.m_id)
+ if(ATTACK_FINISHED(self, slot) <= time || self.weapon != WEP_DEVASTATOR.m_id)
{
ammo_amount = false;
if(WEP_CVAR(devastator, reload_ammo))