REGISTER_WEAPON(
/* WEP_##id */ HAGAR,
/* function */ w_hagar,
-/* ammotype */ IT_ROCKETS,
+/* ammotype */ ammo_rockets,
/* impulse */ 8,
/* flags */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH,
/* rating */ BOT_PICKUP_RATING_MID,
/* fullname */ _("Hagar")
);
-#define HAGAR_SETTINGS(weapon) \
- WEP_ADD_CVAR(weapon, MO_BOTH, ammo) \
- WEP_ADD_CVAR(weapon, MO_BOTH, damage) \
- WEP_ADD_CVAR(weapon, MO_BOTH, edgedamage) \
- WEP_ADD_CVAR(weapon, MO_BOTH, force) \
- WEP_ADD_CVAR(weapon, MO_BOTH, radius) \
- WEP_ADD_CVAR(weapon, MO_BOTH, refire) \
- WEP_ADD_CVAR(weapon, MO_BOTH, speed) \
- WEP_ADD_CVAR(weapon, MO_BOTH, damageforcescale) \
- WEP_ADD_CVAR(weapon, MO_BOTH, health) \
- WEP_ADD_CVAR(weapon, MO_PRI, lifetime) \
- WEP_ADD_CVAR(weapon, MO_NONE, secondary) \
- WEP_ADD_CVAR(weapon, MO_SEC, spread) \
- WEP_ADD_CVAR(weapon, MO_SEC, load) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_max) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_abort) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_animtime) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_hold) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_speed) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_releasedeath) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_spread) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_spread_bias) \
- WEP_ADD_CVAR(weapon, MO_SEC, load_linkexplode) \
- WEP_ADD_CVAR(weapon, MO_SEC, lifetime_min) \
- WEP_ADD_CVAR(weapon, MO_SEC, lifetime_rand) \
- WEP_ADD_PROP(weapon, reloading_ammo, reload_ammo) \
- WEP_ADD_PROP(weapon, reloading_time, reload_time) \
- WEP_ADD_PROP(weapon, switchdelay_raise, switchdelay_raise) \
- WEP_ADD_PROP(weapon, switchdelay_drop, switchdelay_drop)
+#define HAGAR_SETTINGS(w_cvar,w_prop) HAGAR_SETTINGS_LIST(w_cvar, w_prop, HAGAR, hagar)
+#define HAGAR_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+ w_cvar(id, sn, BOTH, ammo) \
+ w_cvar(id, sn, BOTH, damage) \
+ w_cvar(id, sn, BOTH, edgedamage) \
+ w_cvar(id, sn, BOTH, force) \
+ w_cvar(id, sn, BOTH, radius) \
+ w_cvar(id, sn, BOTH, refire) \
+ w_cvar(id, sn, BOTH, speed) \
+ w_cvar(id, sn, BOTH, spread) \
+ w_cvar(id, sn, BOTH, damageforcescale) \
+ w_cvar(id, sn, BOTH, health) \
+ w_cvar(id, sn, PRI, lifetime) \
+ w_cvar(id, sn, SEC, load) \
+ w_cvar(id, sn, SEC, load_max) \
+ w_cvar(id, sn, SEC, load_abort) \
+ w_cvar(id, sn, SEC, load_animtime) \
+ w_cvar(id, sn, SEC, load_hold) \
+ w_cvar(id, sn, SEC, load_speed) \
+ w_cvar(id, sn, SEC, load_releasedeath) \
+ w_cvar(id, sn, SEC, load_spread) \
+ w_cvar(id, sn, SEC, load_spread_bias) \
+ w_cvar(id, sn, SEC, load_linkexplode) \
+ w_cvar(id, sn, SEC, lifetime_min) \
+ w_cvar(id, sn, SEC, lifetime_rand) \
+ w_cvar(id, sn, NONE, secondary) \
+ w_prop(id, sn, float, reloading_ammo, reload_ammo) \
+ w_prop(id, sn, float, reloading_time, reload_time) \
+ w_prop(id, sn, float, switchdelay_raise, switchdelay_raise) \
+ w_prop(id, sn, float, switchdelay_drop, switchdelay_drop) \
+ w_prop(id, sn, string, weaponreplace, weaponreplace) \
+ w_prop(id, sn, float, weaponstart, weaponstart) \
+ w_prop(id, sn, float, weaponstartoverride, weaponstartoverride)
#ifdef SVQC
-HAGAR_SETTINGS(hagar)
+HAGAR_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
#endif
#else
#ifdef SVQC
{
entity missile;
- W_DecreaseAmmo(ammo_rockets, WEP_CVAR_PRI(hagar, ammo), autocvar_g_balance_hagar_reload_ammo);
+ W_DecreaseAmmo(WEP_CVAR_PRI(hagar, ammo));
W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CH_WEAPON_A, WEP_CVAR_PRI(hagar, damage));
setsize(missile, '0 0 0', '0 0 0');
missile.movetype = MOVETYPE_FLY;
- W_SETUPPROJECTILEVELOCITY(missile, g_balance_hagar_primary);
+ WEP_SETUPPROJVELOCITY_PRI(missile, hagar);
missile.angles = vectoangles (missile.velocity);
missile.flags = FL_PROJECTILE;
{
entity missile;
- W_DecreaseAmmo(ammo_rockets, WEP_CVAR_SEC(hagar, ammo), autocvar_g_balance_hagar_reload_ammo);
+ W_DecreaseAmmo(WEP_CVAR_SEC(hagar, ammo));
W_SetupShot (self, FALSE, 2, "weapons/hagar_fire.wav", CH_WEAPON_A, WEP_CVAR_SEC(hagar, damage));
setsize(missile, '0 0 0', '0 0 0');
missile.movetype = MOVETYPE_BOUNCEMISSILE;
- W_SETUPPROJECTILEVELOCITY(missile, g_balance_hagar_secondary);
+ WEP_SETUPPROJVELOCITY_SEC(missile, hagar);
missile.angles = vectoangles (missile.velocity);
missile.flags = FL_PROJECTILE;
{
// if we pressed primary fire while loading, unload all rockets and abort
self.weaponentity.state = WS_READY;
- W_DecreaseAmmo(ammo_rockets, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1, autocvar_g_balance_hagar_reload_ammo); // give back ammo
+ W_DecreaseAmmo(WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo
self.hagar_load = 0;
sound(self, CH_WEAPON_A, "weapons/hagar_beep.wav", VOL_BASE, ATTN_NORM);
{
if(!self.hagar_loadblock && self.hagar_loadstep < time)
{
- W_DecreaseAmmo(ammo_rockets, WEP_CVAR_SEC(hagar, ammo), autocvar_g_balance_hagar_reload_ammo);
+ W_DecreaseAmmo(WEP_CVAR_SEC(hagar, ammo));
self.weaponentity.state = WS_INUSE;
self.hagar_load += 1;
sound(self, CH_WEAPON_B, "weapons/hagar_load.wav", VOL_BASE * 0.8, ATTN_NORM); // sound is too loud according to most
}
// we aren't checking ammo during an attack, so we must do it here
- if not(WEP_ACTION(self.weapon, WR_CHECKAMMO1) + WEP_ACTION(self.weapon, WR_CHECKAMMO2))
+ if(!(WEP_ACTION(self.weapon, WR_CHECKAMMO1) + WEP_ACTION(self.weapon, WR_CHECKAMMO2)))
{
// note: this doesn't force the switch
W_SwitchToOtherWeapon(self);
precache_sound ("weapons/hagar_fire.wav");
precache_sound ("weapons/hagar_load.wav");
precache_sound ("weapons/hagar_beep.wav");
- WEP_SET_PROPS(HAGAR_SETTINGS(hagar), WEP_HAGAR)
+ HAGAR_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
case WR_SETUP:
if(self.hagar_load)
{
- W_DecreaseAmmo(ammo_rockets, WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1, autocvar_g_balance_hagar_reload_ammo); // give back ammo if necessary
+ W_DecreaseAmmo(WEP_CVAR_SEC(hagar, ammo) * self.hagar_load * -1); // give back ammo if necessary
self.hagar_load = 0;
}
}
case WR_CONFIG:
{
- WEP_CONFIG_SETTINGS(HAGAR_SETTINGS(hagar))
+ HAGAR_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
return TRUE;
}
case WR_RESETPLAYER:
}
case WR_RELOAD:
{
- if not(self.hagar_load) // require releasing loaded rockets first
- W_Reload(min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), autocvar_g_balance_hagar_reload_ammo, autocvar_g_balance_hagar_reload_time, "weapons/reload.wav");
+ if(!self.hagar_load) // require releasing loaded rockets first
+ W_Reload(min(WEP_CVAR_PRI(hagar, ammo), WEP_CVAR_SEC(hagar, ammo)), "weapons/reload.wav");
return TRUE;
}