]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/w_nex.qc
Use weaponinfo to get weapon sprite info
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / w_nex.qc
index 6b5f4a2ff4b162319b56742ed65763e80bc12e6f..f6fe16dab6b6e8ca7b2862903e087d312f5c893b 100644 (file)
@@ -2,48 +2,53 @@
 REGISTER_WEAPON(
 /* WEP_##id */ NEX,
 /* function */ w_nex,
-/* ammotype */ IT_CELLS,
+/* ammotype */ ammo_cells,
 /* impulse  */ 7,
 /* flags    */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_TYPE_HITSCAN,
 /* rating   */ BOT_PICKUP_RATING_HIGH,
+/* color       */ '0.5 1 1',
 /* model    */ "nex",
 /* netname  */ "nex",
-/* fullname */ _("Nex")
+/* fullname */ _("Vortex")
 );
 
-#define NEX_SETTINGS(weapon) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, ammo) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, animtime) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, damage) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, force) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, damagefalloff_mindist) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, damagefalloff_maxdist) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, damagefalloff_halflife) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, damagefalloff_forcehalflife) \
-       WEP_ADD_CVAR(weapon, MO_BOTH, refire) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_mindmg) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_shot_multiplier) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_animlimit) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_limit) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_rate) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_rot_rate) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_rot_pause) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_start) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_minspeed) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_maxspeed) \
-       WEP_ADD_CVAR(weapon, MO_NONE, charge_velocity_rate) \
-       WEP_ADD_CVAR(weapon, MO_NONE, secondary) \
-       WEP_ADD_CVAR(weapon, MO_SEC,  chargepool) \
-       WEP_ADD_CVAR(weapon, MO_SEC,  chargepool_regen) \
-       WEP_ADD_CVAR(weapon, MO_SEC,  chargepool_pause_regen) \
-       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 NEX_SETTINGS(w_cvar,w_prop) NEX_SETTINGS_LIST(w_cvar, w_prop, NEX, nex)
+#define NEX_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+       w_cvar(id, sn, BOTH, ammo) \
+       w_cvar(id, sn, BOTH, animtime) \
+       w_cvar(id, sn, BOTH, damage) \
+       w_cvar(id, sn, BOTH, force) \
+       w_cvar(id, sn, BOTH, damagefalloff_mindist) \
+       w_cvar(id, sn, BOTH, damagefalloff_maxdist) \
+       w_cvar(id, sn, BOTH, damagefalloff_halflife) \
+       w_cvar(id, sn, BOTH, damagefalloff_forcehalflife) \
+       w_cvar(id, sn, BOTH, refire) \
+       w_cvar(id, sn, NONE, charge) \
+       w_cvar(id, sn, NONE, charge_mindmg) \
+       w_cvar(id, sn, NONE, charge_shot_multiplier) \
+       w_cvar(id, sn, NONE, charge_animlimit) \
+       w_cvar(id, sn, NONE, charge_limit) \
+       w_cvar(id, sn, NONE, charge_rate) \
+       w_cvar(id, sn, NONE, charge_rot_rate) \
+       w_cvar(id, sn, NONE, charge_rot_pause) \
+       w_cvar(id, sn, NONE, charge_start) \
+       w_cvar(id, sn, NONE, charge_minspeed) \
+       w_cvar(id, sn, NONE, charge_maxspeed) \
+       w_cvar(id, sn, NONE, charge_velocity_rate) \
+       w_cvar(id, sn, NONE, secondary) \
+       w_cvar(id, sn, SEC,  chargepool) \
+       w_cvar(id, sn, SEC,  chargepool_regen) \
+       w_cvar(id, sn, SEC,  chargepool_pause_regen) \
+       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
-NEX_SETTINGS(nex)
+NEX_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
 #endif
 #else
 #ifdef SVQC
@@ -105,7 +110,7 @@ void W_Nex_Attack (float issecondary)
        //beam and muzzle flash done on client
        SendCSQCNexBeamParticle(charge);
 
-       W_DecreaseAmmo(ammo_cells, myammo, autocvar_g_balance_nex_reload_ammo);
+       W_DecreaseAmmo(myammo);
 }
 
 void spawnfunc_weapon_nex (void); // defined in t_items.qc
@@ -183,7 +188,7 @@ float w_nex(float req)
                                                                if(self.BUTTON_ATCK2) // only eat ammo when the button is pressed
                                                                {
                                                                        dt = min(dt, (1 - self.nex_charge) / WEP_CVAR(nex, charge_rate));
-                                                                       if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
+                                                                       if(!(self.items & IT_UNLIMITED_WEAPON_AMMO))
                                                                        {
                                                                                // if this weapon is reloadable, decrease its load. Else decrease the player's ammo
                                                                                if(autocvar_g_balance_nex_reload_ammo)
@@ -198,11 +203,11 @@ float w_nex(float req)
                                                                                }
                                                                                else
                                                                                {
-                                                                                       dt = min(dt, (self.ammo_cells - WEP_CVAR_PRI(nex, ammo)) / WEP_CVAR_SEC(nex, ammo));
+                                                                                       dt = min(dt, (self.AMMO_VAL(WEP_NEX) - 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.AMMO_VAL(WEP_NEX) = max(WEP_CVAR_SEC(nex, ammo), self.AMMO_VAL(WEP_NEX) - WEP_CVAR_SEC(nex, ammo) * dt);
                                                                                        }
                                                                                }
                                                                        }
@@ -241,17 +246,12 @@ float w_nex(float req)
                        precache_sound ("weapons/nexwhoosh1.wav");
                        precache_sound ("weapons/nexwhoosh2.wav");
                        precache_sound ("weapons/nexwhoosh3.wav");
-                       WEP_SET_PROPS(NEX_SETTINGS(nex), WEP_NEX)
-                       return TRUE;
-               }
-               case WR_SETUP:
-               {
-                       self.current_ammo = ammo_cells;
+                       NEX_SETTINGS(WEP_SKIPCVAR, WEP_SET_PROP)
                        return TRUE;
                }
                case WR_CHECKAMMO1:
                {
-                       ammo_amount = self.ammo_cells >= WEP_CVAR_PRI(nex, ammo);
+                       ammo_amount = self.AMMO_VAL(WEP_NEX) >= 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;
                }
@@ -260,8 +260,8 @@ float w_nex(float req)
                        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.(weapon_load[WEP_NEX]) >= WEP_CVAR_SEC(nex, ammo);  
+                               ammo_amount = self.AMMO_VAL(WEP_NEX) >= WEP_CVAR_SEC(nex, ammo);
+                               ammo_amount += self.(weapon_load[WEP_NEX]) >= WEP_CVAR_SEC(nex, ammo);
                                return ammo_amount;
                        }
                        else
@@ -271,7 +271,7 @@ float w_nex(float req)
                }
                case WR_CONFIG:
                {
-                       WEP_CONFIG_SETTINGS(NEX_SETTINGS(nex))
+                       NEX_SETTINGS(WEP_CONFIG_WRITE_CVARS, WEP_CONFIG_WRITE_PROPS)
                        return TRUE;
                }
                case WR_RELOAD: