]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/w_arc.qc
No need for that extra prefix
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / w_arc.qc
index 71d1fd564fb0a996265b2a07807cafb056312d4a..2f2d2ea9d03ae58230ec14904f155e1b95d44f76 100644 (file)
@@ -1,36 +1,38 @@
 #ifdef REGISTER_WEAPON
 REGISTER_WEAPON(
-/* WEP_##id  */ ARC,
-/* function  */ w_arc,
-/* ammotype  */ IT_CELLS,
-/* impulse   */ 5,
-/* flags     */ WEP_FLAG_NORMAL,
-/* rating    */ BOT_PICKUP_RATING_HIGH,
-/* model     */ "arc",
-/* shortname */ "arc",
-/* fullname  */ _("Arc")
+/* WEP_##id */ ARC,
+/* function */ w_arc,
+/* ammotype */ ammo_cells,
+/* impulse  */ 3,
+/* flags    */ WEP_FLAG_NORMAL,
+/* rating   */ BOT_PICKUP_RATING_HIGH,
+/* model    */ "arc",
+/* netname  */ "arc",
+/* fullname */ _("Arc")
 );
 
-#define ARC_SETTINGS(weapon) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, ammo) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  animtime) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  damage) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  falloff_halflifedist) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  falloff_maxdist) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  falloff_mindist) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  force) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  range) \
-       WEP_ADD_CVAR(weapon, MO_PRI,  refire) \
-       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 ARC_SETTINGS(w_cvar,w_prop) ARC_SETTINGS_LIST(w_cvar, w_prop, ARC, arc)
+#define ARC_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+       w_cvar(id, sn, BOTH, ammo) \
+       w_cvar(id, sn, PRI,  animtime) \
+       w_cvar(id, sn, PRI,  damage) \
+       w_cvar(id, sn, PRI,  falloff_halflifedist) \
+       w_cvar(id, sn, PRI,  falloff_maxdist) \
+       w_cvar(id, sn, PRI,  falloff_mindist) \
+       w_cvar(id, sn, PRI,  force) \
+       w_cvar(id, sn, PRI,  range) \
+       w_cvar(id, sn, PRI,  refire) \
+       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)
 
 #ifndef MENUQC
 vector arc_shotorigin[4];
 #endif
 #ifdef SVQC
-ARC_SETTINGS(arc)
+ARC_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
 void ArcInit();
 .vector hook_start, hook_end; // used for beam
 .entity arc_beam; // used for beam
@@ -39,10 +41,7 @@ void ArcInit();
 #endif
 #else
 #ifdef SVQC
-void spawnfunc_weapon_arc (void) // should this really be here?
-{
-       weapon_defaultspawnfunc(WEP_ARC);
-}
+void spawnfunc_weapon_arc() { weapon_defaultspawnfunc(WEP_ARC); }
 
 float W_Arc_Beam_Send(entity to, float sf)
 {
@@ -93,7 +92,7 @@ void W_Arc_Beam_Think()
 
        float dt, f;
        dt = frametime;
-       if not(self.owner.items & IT_UNLIMITED_WEAPON_AMMO)
+       if(!(self.owner.items & IT_UNLIMITED_WEAPON_AMMO))
        {
                if(WEP_CVAR_PRI(arc, ammo))
                {
@@ -239,7 +238,7 @@ float w_arc(float req)
                                
                        return TRUE;
                }
-               case WR_PRECACHE:
+               case WR_INIT:
                {
                        precache_model ("models/weapons/g_arc.md3");
                        precache_model ("models/weapons/v_arc.md3");
@@ -252,11 +251,6 @@ float w_arc(float req)
                        //precache_sound ("weapons/W_Arc_Beam_fire.wav");
                        return TRUE;
                }
-               case WR_SETUP:
-               {
-                       weapon_setup(WEP_ARC);
-                       return TRUE;
-               }
                case WR_CHECKAMMO1:
                {
                        return !WEP_CVAR_PRI(arc, ammo) || (self.ammo_cells > 0);
@@ -265,6 +259,11 @@ float w_arc(float req)
                {
                        return self.ammo_cells >= WEP_CVAR_SEC(arc, ammo);
                }
+               case WR_CONFIG:
+               {
+                       ARC_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
+                       return TRUE;
+               }
                case WR_KILLMESSAGE:
                {
                        if(w_deathtype & HITTYPE_SECONDARY)
@@ -290,17 +289,12 @@ float w_arc(float req)
 
 void ArcInit()
 {
-       weapon_action(WEP_ARC, WR_PRECACHE);
+       WEP_ACTION(WEP_ARC, WR_INIT);
        arc_shotorigin[0] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC), FALSE, FALSE, 1);
        arc_shotorigin[1] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC), FALSE, FALSE, 2);
        arc_shotorigin[2] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC), FALSE, FALSE, 3);
        arc_shotorigin[3] = shotorg_adjust_values(CL_Weapon_GetShotOrg(WEP_ARC), FALSE, FALSE, 4);
-
-       #define WEP_ADD_CVAR(weapon,mode,name) /*nothing*/
-       #define WEP_ADD_PROP(weapon,prop,name) get_weaponinfo(WEP_ARC).##prop = autocvar_g_balance_##weapon##_##name;
-       ARC_SETTINGS(arc)
-       #undef WEP_ADD_CVAR
-       #undef WEP_ADD_PROP
+       ARC_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
 }
 #endif
 #ifdef CSQC
@@ -328,7 +322,7 @@ float w_arc(float req)
                        
                        return TRUE;
                }
-               case WR_PRECACHE:
+               case WR_INIT:
                {
                        precache_sound("weapons/arc_impact.wav");
                        precache_sound("weapons/arc_impact_combo.wav");