remove(self);
return;
}
- if (self.owner.weaponentity.state != WS_INUSE || (self.owner.ammo_cells <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen)
+ if (self.owner.weaponentity.state != WS_INUSE || (self.owner.(self.current_ammo) <= 0 && !(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)) || self.owner.deadflag != DEAD_NO || !self.owner.BUTTON_ATCK || self.owner.freezetag_frozen)
{
if(self == self.owner.arc_beam)
self.owner.arc_beam = world;
{
if(WEP_CVAR_PRI(arc, ammo))
{
- dt = min(dt, self.owner.ammo_cells / WEP_CVAR_PRI(arc, ammo));
- self.owner.ammo_cells = max(0, self.owner.ammo_cells - WEP_CVAR_PRI(arc, ammo) * frametime);
+ dt = min(dt, self.owner.(self.current_ammo) / WEP_CVAR_PRI(arc, ammo));
+ self.owner.(self.current_ammo) = max(0, self.owner.(self.current_ammo) - WEP_CVAR_PRI(arc, ammo) * frametime);
}
}
}
case WR_CHECKAMMO1:
{
- return !WEP_CVAR_PRI(arc, ammo) || (self.ammo_cells > 0);
+ return !WEP_CVAR_PRI(arc, ammo) || (self.(self.current_ammo) > 0);
}
case WR_CHECKAMMO2:
{
- return self.ammo_cells >= WEP_CVAR_SEC(arc, ammo);
+ return self.(self.current_ammo) >= WEP_CVAR_SEC(arc, ammo);
}
case WR_CONFIG:
{
CRYLINK_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_cells;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
// don't "run out of ammo" and switch weapons while waiting for release
if(self.crylink_lastgroup && self.crylink_waitrelease)
return TRUE;
- ammo_amount = self.ammo_cells >= WEP_CVAR_PRI(crylink, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(crylink, ammo);
ammo_amount += self.(weapon_load[WEP_CRYLINK]) >= WEP_CVAR_PRI(crylink, ammo);
return ammo_amount;
}
if(self.crylink_lastgroup && self.crylink_waitrelease)
return TRUE;
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(crylink, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(crylink, ammo);
ammo_amount += self.(weapon_load[WEP_CRYLINK]) >= WEP_CVAR_SEC(crylink, ammo);
return ammo_amount;
}
if (self.realowner.weapon == WEP_DEVASTATOR)
{
- if(self.realowner.ammo_rockets < WEP_CVAR(devastator, ammo))
+ if(self.realowner.(self.current_ammo) < WEP_CVAR(devastator, ammo))
{
self.realowner.cnt = WEP_DEVASTATOR;
ATTACK_FINISHED(self.realowner) = time;
if (self.realowner.weapon == WEP_DEVASTATOR)
{
- if(self.realowner.ammo_rockets < WEP_CVAR(devastator, ammo))
+ if(self.realowner.(self.current_ammo) < WEP_CVAR(devastator, ammo))
{
self.realowner.cnt = WEP_DEVASTATOR;
ATTACK_FINISHED(self.realowner) = time;
}
case WR_SETUP:
{
- self.current_ammo = ammo_rockets;
self.rl_release = 1;
return TRUE;
}
ammo_amount = FALSE;
if(WEP_CVAR(devastator, reload_ammo))
{
- if(self.ammo_rockets < WEP_CVAR(devastator, ammo) && self.(weapon_load[WEP_DEVASTATOR]) < WEP_CVAR(devastator, ammo))
+ if(self.(self.current_ammo) < WEP_CVAR(devastator, ammo) && self.(weapon_load[WEP_DEVASTATOR]) < WEP_CVAR(devastator, ammo))
ammo_amount = TRUE;
}
- else if(self.ammo_rockets < WEP_CVAR(devastator, ammo))
+ else if(self.(self.current_ammo) < WEP_CVAR(devastator, ammo))
ammo_amount = TRUE;
return !ammo_amount;
}
ELECTRO_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_cells;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_PRI(electro, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(electro, ammo);
ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_PRI(electro, ammo);
return ammo_amount;
}
{
if(WEP_CVAR(electro, combo_safeammocheck)) // true if you can fire at least one secondary blob AND one primary shot after it, otherwise false.
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_SEC(electro, ammo) + WEP_CVAR_PRI(electro, ammo);
}
else
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(electro, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(electro, ammo);
ammo_amount += self.(weapon_load[WEP_ELECTRO]) >= WEP_CVAR_SEC(electro, ammo);
}
return ammo_amount;
if(autocvar_g_balance_hagar_reload_ammo)
enough_ammo = self.(weapon_load[WEP_HAGAR]) >= WEP_CVAR_SEC(hagar, ammo);
else
- enough_ammo = self.ammo_rockets >= WEP_CVAR_SEC(hagar, ammo);
+ enough_ammo = self.(self.current_ammo) >= WEP_CVAR_SEC(hagar, ammo);
if(self.BUTTON_ATCK2)
{
}
case WR_SETUP:
{
- self.current_ammo = ammo_rockets;
self.hagar_loadblock = FALSE;
if(self.hagar_load)
}
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR_PRI(hagar, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(hagar, ammo);
ammo_amount += self.(weapon_load[WEP_HAGAR]) >= WEP_CVAR_PRI(hagar, ammo);
return ammo_amount;
}
case WR_CHECKAMMO2:
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR_SEC(hagar, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(hagar, ammo);
ammo_amount += self.(weapon_load[WEP_HAGAR]) >= WEP_CVAR_SEC(hagar, ammo);
return ammo_amount;
}
HLAC_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_cells;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_PRI(hlac, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(hlac, ammo);
ammo_amount += self.(weapon_load[WEP_HLAC]) >= WEP_CVAR_PRI(hlac, ammo);
return ammo_amount;
}
case WR_CHECKAMMO2:
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(hlac, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(hlac, ammo);
ammo_amount += self.(weapon_load[WEP_HLAC]) >= WEP_CVAR_SEC(hlac, ammo);
return ammo_amount;
}
#define HOOK_SETTINGS(w_cvar,w_prop) HOOK_SETTINGS_LIST(w_cvar, w_prop, HOOK, hook)
#define HOOK_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
w_cvar(id, sn, BOTH, animtime) \
- w_cvar(id, sn, BOTH, ammo) \
w_cvar(id, sn, BOTH, refire) \
+ w_cvar(id, sn, PRI, ammo) \
w_cvar(id, sn, PRI, hooked_ammo) \
w_cvar(id, sn, PRI, hooked_time_free) \
w_cvar(id, sn, PRI, hooked_time_max) \
{
entity gren;
- W_DecreaseAmmo(WEP_CVAR_SEC(hook, ammo));
+ //W_DecreaseAmmo(WEP_CVAR_SEC(hook, ammo)); // WEAPONTODO: Figure out how to handle ammo with hook secondary (gravitybomb)
W_SetupShot (self, FALSE, 4, "weapons/hookbomb_fire.wav", CH_WEAPON_A, WEP_CVAR_SEC(hook, damage));
gren = spawn ();
}
case WR_SETUP:
{
- self.current_ammo = ammo_fuel;
self.hook_state &= ~HOOK_WAITING_FOR_RELEASE;
return TRUE;
}
}
case WR_CHECKAMMO2:
{
- return self.ammo_cells >= WEP_CVAR_SEC(hook, ammo);
+ // infinite ammo for now
+ return TRUE; // self.ammo_cells >= WEP_CVAR_SEC(hook, ammo); // WEAPONTODO: see above
}
case WR_CONFIG:
{
UZI_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_nails;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
if(WEP_CVAR(uzi, mode) == 1)
- ammo_amount = self.ammo_nails >= WEP_CVAR(uzi, sustained_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(uzi, sustained_ammo);
else
- ammo_amount = self.ammo_nails >= WEP_CVAR(uzi, first_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(uzi, first_ammo);
if(autocvar_g_balance_uzi_reload_ammo)
{
case WR_CHECKAMMO2:
{
if(WEP_CVAR(uzi, mode) == 1)
- ammo_amount = self.ammo_nails >= WEP_CVAR(uzi, burst_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(uzi, burst_ammo);
else
- ammo_amount = self.ammo_nails >= WEP_CVAR(uzi, first_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(uzi, first_ammo);
if(autocvar_g_balance_uzi_reload_ammo)
{
if(autocvar_g_balance_minelayer_reload_ammo && self.clip_load < WEP_CVAR(minelayer, ammo)) // forced reload
{
// not if we're holding the minelayer without enough ammo, but can detonate existing mines
- if(!(W_PlacedMines(FALSE) && self.ammo_rockets < WEP_CVAR(minelayer, ammo)))
+ if(!(W_PlacedMines(FALSE) && self.(self.current_ammo) < WEP_CVAR(minelayer, ammo)))
WEP_ACTION(self.weapon, WR_RELOAD);
}
else if (self.BUTTON_ATCK)
MINELAYER_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_rockets;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
// don't switch while placing a mine
if (ATTACK_FINISHED(self) <= time || self.weapon != WEP_MINE_LAYER)
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR(minelayer, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(minelayer, ammo);
ammo_amount += self.(weapon_load[WEP_MINE_LAYER]) >= WEP_CVAR(minelayer, ammo);
return ammo_amount;
}
{
case WR_AIM:
{
- if(self.ammo_cells > 0)
+ if(self.(self.current_ammo) > 0)
self.BUTTON_ATCK = bot_aim(1000000, 0, 1, FALSE);
else
self.BUTTON_ATCK2 = bot_aim(WEP_CVAR_SEC(minstanex, speed), 0, WEP_CVAR_SEC(minstanex, lifetime), FALSE); // WEAPONTODO: replace with proper minstanex cvars
}
case WR_SETUP:
{
- self.current_ammo = ammo_cells;
+ self.current_ammo = (self.current_ammo);
self.minstanex_lasthit = 0;
return TRUE;
}
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_cells >= minstanex_ammo;
+ ammo_amount = self.(self.current_ammo) >= minstanex_ammo;
ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= minstanex_ammo;
return ammo_amount;
}
{
if(!WEP_CVAR_SEC(minstanex, ammo))
return TRUE;
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(minstanex, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(minstanex, ammo);
ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= WEP_CVAR_SEC(minstanex, ammo);
return ammo_amount;
}
MORTAR_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_rockets;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR_PRI(mortar, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(mortar, ammo);
ammo_amount += self.(weapon_load[WEP_MORTAR]) >= WEP_CVAR_PRI(mortar, ammo);
return ammo_amount;
}
case WR_CHECKAMMO2:
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR_SEC(mortar, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(mortar, ammo);
ammo_amount += self.(weapon_load[WEP_MORTAR]) >= WEP_CVAR_SEC(mortar, ammo);
return ammo_amount;
}
}
else
{
- dt = min(dt, (self.ammo_cells - WEP_CVAR_PRI(nex, ammo)) / WEP_CVAR_SEC(nex, ammo));
+ dt = min(dt, (self.(self.current_ammo) - WEP_CVAR_PRI(nex, ammo)) / WEP_CVAR_SEC(nex, ammo));
dt = max(0, dt);
if(dt > 0)
{
- self.ammo_cells = max(WEP_CVAR_SEC(nex, ammo), self.ammo_cells - WEP_CVAR_SEC(nex, ammo) * dt);
+ self.(self.current_ammo) = max(WEP_CVAR_SEC(nex, ammo), self.(self.current_ammo) - WEP_CVAR_SEC(nex, ammo) * dt);
}
}
}
NEX_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_cells;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_cells >= WEP_CVAR_PRI(nex, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(nex, ammo);
ammo_amount += (autocvar_g_balance_nex_reload_ammo && self.(weapon_load[WEP_NEX]) >= WEP_CVAR_PRI(nex, ammo));
return ammo_amount;
}
if(WEP_CVAR(nex, secondary))
{
// don't allow charging if we don't have enough ammo
- ammo_amount = self.ammo_cells >= WEP_CVAR_SEC(nex, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(nex, ammo);
ammo_amount += self.(weapon_load[WEP_NEX]) >= WEP_CVAR_SEC(nex, ammo);
return ammo_amount;
}
af = ATTACK_FINISHED(self);
self.switchweapon = self.weapon;
ATTACK_FINISHED(self) = time;
- print(ftos(self.ammo_nails), "\n");
+ print(ftos(self.(self.current_ammo)), "\n");
r = weapon_prepareattack(self.rifle_bullethail_frame == WFRAME_FIRE2, self.rifle_bullethail_refire);
if(self.switchweapon == self.weapon)
self.switchweapon = sw;
RIFLE_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_nails;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
- ammo_amount = self.ammo_nails >= WEP_CVAR_PRI(rifle, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_PRI(rifle, ammo);
ammo_amount += self.(weapon_load[WEP_RIFLE]) >= WEP_CVAR_PRI(rifle, ammo);
return ammo_amount;
}
case WR_CHECKAMMO2:
{
- ammo_amount = self.ammo_nails >= WEP_CVAR_SEC(rifle, ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR_SEC(rifle, ammo);
ammo_amount += self.(weapon_load[WEP_RIFLE]) >= WEP_CVAR_SEC(rifle, ammo);
return ammo_amount;
}
entity oldself,oldenemy;
self.cnt = self.cnt - 1;
- if((!(self.realowner.items & IT_UNLIMITED_AMMO) && self.realowner.ammo_rockets < WEP_CVAR(seeker, missile_ammo)) || (self.cnt <= -1) || (self.realowner.deadflag != DEAD_NO) || (self.realowner.switchweapon != WEP_SEEKER))
+ if((!(self.realowner.items & IT_UNLIMITED_AMMO) && self.realowner.(self.current_ammo) < WEP_CVAR(seeker, missile_ammo)) || (self.cnt <= -1) || (self.realowner.deadflag != DEAD_NO) || (self.realowner.switchweapon != WEP_SEEKER))
{
remove(self);
return;
SEEKER_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
- case WR_SETUP:
- {
- self.current_ammo = ammo_rockets;
- return TRUE;
- }
case WR_CHECKAMMO1:
{
if (WEP_CVAR(seeker, type) == 1)
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR(seeker, missile_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(seeker, missile_ammo);
ammo_amount += self.(weapon_load[WEP_SEEKER]) >= WEP_CVAR(seeker, missile_ammo);
}
else
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR(seeker, tag_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(seeker, tag_ammo);
ammo_amount += self.(weapon_load[WEP_SEEKER]) >= WEP_CVAR(seeker, tag_ammo);
}
return ammo_amount;
{
if (WEP_CVAR(seeker, type) == 1)
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR(seeker, tag_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(seeker, tag_ammo);
ammo_amount += self.(weapon_load[WEP_SEEKER]) >= WEP_CVAR(seeker, tag_ammo);
}
else
{
- ammo_amount = self.ammo_rockets >= WEP_CVAR(seeker, flac_ammo);
+ ammo_amount = self.(self.current_ammo) >= WEP_CVAR(seeker, flac_ammo);
ammo_amount += self.(weapon_load[WEP_SEEKER]) >= WEP_CVAR(seeker, flac_ammo);
}
return ammo_amount;