#ifdef REGISTER_WEAPON
REGISTER_WEAPON(
/* WEP_##id */ PORTO,
-/* function */ w_porto,
-/* ammotype */ 0,
+/* function */ W_Porto,
+/* ammotype */ ammo_none,
/* impulse */ 0,
/* flags */ WEP_TYPE_OTHER | WEP_FLAG_SUPERWEAPON,
/* rating */ 0,
+/* color */ '0.5 0.5 0.5',
/* model */ "porto" ,
/* netname */ "porto",
/* fullname */ _("Port-O-Launch")
);
-#define PORTO_SETTINGS(weapon) \
- WEP_ADD_CVAR(weapon, MO_BOTH, animtime) \
- WEP_ADD_CVAR(weapon, MO_BOTH, lifetime) \
- WEP_ADD_CVAR(weapon, MO_BOTH, refire) \
- WEP_ADD_CVAR(weapon, MO_BOTH, speed) \
- WEP_ADD_CVAR(weapon, MO_NONE, secondary) \
- 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 PORTO_SETTINGS(w_cvar,w_prop) PORTO_SETTINGS_LIST(w_cvar, w_prop, PORTO, porto)
+#define PORTO_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+ w_cvar(id, sn, BOTH, animtime) \
+ w_cvar(id, sn, BOTH, lifetime) \
+ w_cvar(id, sn, BOTH, refire) \
+ w_cvar(id, sn, BOTH, speed) \
+ w_cvar(id, sn, NONE, secondary) \
+ 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
-PORTO_SETTINGS(porto)
+PORTO_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
.entity porto_current;
.vector porto_v_angle; // holds "held" view angles
.float porto_v_angle_held;
gren.touch = W_Porto_Touch;
if(self.items & IT_STRENGTH)
- W_SetupProjectileVelocity(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed) * autocvar_g_balance_powerup_strength_force, 0);
+ W_SetupVelocity_Explicit(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed) * autocvar_g_balance_powerup_strength_force, 0);
else
- W_SetupProjectileVelocity(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed), 0);
+ W_SetupVelocity_Explicit(gren, WEP_CVAR_BOTH(porto, (type <= 0), speed), 0);
gren.angles = vectoangles (gren.velocity);
gren.flags = FL_PROJECTILE;
other = gren; MUTATOR_CALLHOOK(EditProjectile);
}
-float w_nexball_weapon(float req);
-float w_porto(float req)
+float w_nexball_weapon(float req); // WEAPONTODO
+float W_Porto(float req)
{
//vector v_angle_save;
}
case WR_CONFIG:
{
- WEP_CONFIG_SETTINGS(PORTO_SETTINGS(porto))
+ PORTO_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
return TRUE;
}
case WR_THINK:
precache_sound ("porto/explode.wav");
precache_sound ("porto/fire.wav");
precache_sound ("porto/unsupported.wav");
- WEP_SET_PROPS(PORTO_SETTINGS(porto), WEP_PORTO)
+ PORTO_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
return TRUE;
}
case WR_SETUP:
}
#endif
#ifdef CSQC
-float w_porto(float req)
+float W_Porto(float req)
{
switch(req)
{