]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/weapons/w_devastator.qc
Even more cleanup of SetupProjVelocity
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / weapons / w_devastator.qc
index 90ab1c4c37c6fc3b9d8795deb918e0bba591fc69..0f5afb02ceb0f783e24bfe011c302acd7352957d 100644 (file)
@@ -2,45 +2,48 @@
 REGISTER_WEAPON(
 /* WEP_##id */ DEVASTATOR,
 /* function */ W_Devastator,
-/* ammotype */ IT_ROCKETS,
+/* ammotype */ ammo_rockets,
 /* impulse  */ 9,
 /* flags    */ WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE | WEP_FLAG_CANCLIMB | WEP_TYPE_SPLASH,
 /* rating   */ BOT_PICKUP_RATING_HIGH,
+/* color       */ '1 1 0',
 /* model    */ "rl",
 /* netname  */ "devastator",
 /* fullname */ _("Devastator")
 );
 
-#define DEVASTATOR_SETTINGS(w_cvar,w_prop) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, ammo) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, animtime) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, damage) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, damageforcescale) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, detonatedelay) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, edgedamage) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, force) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, guidedelay) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, guidegoal) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, guiderate) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, guideratedelay) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, guidestop) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, health) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, lifetime) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, radius) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, refire) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, remote_damage) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, remote_edgedamage) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, remote_force) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, remote_radius) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, speed) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, speedaccel) \
-       w_cvar(WEP_DEVASTATOR, devastator, MO_NONE, speedstart) \
-       w_prop(WEP_DEVASTATOR, devastator, float,  reloading_ammo, reload_ammo) \
-       w_prop(WEP_DEVASTATOR, devastator, float,  reloading_time, reload_time) \
-       w_prop(WEP_DEVASTATOR, devastator, float,  switchdelay_raise, switchdelay_raise) \
-       w_prop(WEP_DEVASTATOR, devastator, float,  switchdelay_drop, switchdelay_drop) \
-       w_prop(WEP_DEVASTATOR, devastator, string, weaponreplace, weaponreplace) \
-       w_prop(WEP_DEVASTATOR, devastator, float,  weaponstart, weaponstart)
+#define DEVASTATOR_SETTINGS(w_cvar,w_prop) DEVASTATOR_SETTINGS_LIST(w_cvar, w_prop, DEVASTATOR, devastator)
+#define DEVASTATOR_SETTINGS_LIST(w_cvar,w_prop,id,sn) \
+       w_cvar(id, sn, NONE, ammo) \
+       w_cvar(id, sn, NONE, animtime) \
+       w_cvar(id, sn, NONE, damage) \
+       w_cvar(id, sn, NONE, damageforcescale) \
+       w_cvar(id, sn, NONE, detonatedelay) \
+       w_cvar(id, sn, NONE, edgedamage) \
+       w_cvar(id, sn, NONE, force) \
+       w_cvar(id, sn, NONE, guidedelay) \
+       w_cvar(id, sn, NONE, guidegoal) \
+       w_cvar(id, sn, NONE, guiderate) \
+       w_cvar(id, sn, NONE, guideratedelay) \
+       w_cvar(id, sn, NONE, guidestop) \
+       w_cvar(id, sn, NONE, health) \
+       w_cvar(id, sn, NONE, lifetime) \
+       w_cvar(id, sn, NONE, radius) \
+       w_cvar(id, sn, NONE, refire) \
+       w_cvar(id, sn, NONE, remote_damage) \
+       w_cvar(id, sn, NONE, remote_edgedamage) \
+       w_cvar(id, sn, NONE, remote_force) \
+       w_cvar(id, sn, NONE, remote_radius) \
+       w_cvar(id, sn, NONE, speed) \
+       w_cvar(id, sn, NONE, speedaccel) \
+       w_cvar(id, sn, NONE, speedstart) \
+       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
 DEVASTATOR_SETTINGS(WEP_ADD_CVAR, WEP_ADD_PROP)
@@ -79,7 +82,7 @@ void W_Devastator_Explode()
 
        if (self.realowner.weapon == WEP_DEVASTATOR)
        {
-               if(self.realowner.ammo_rockets < WEP_CVAR(devastator, ammo))
+               if(self.realowner.AMMO_VAL(WEP_DEVASTATOR) < WEP_CVAR(devastator, ammo))
                {
                        self.realowner.cnt = WEP_DEVASTATOR;
                        ATTACK_FINISHED(self.realowner) = time;
@@ -100,7 +103,7 @@ void W_Devastator_DoRemoteExplode()
 
        if (self.realowner.weapon == WEP_DEVASTATOR)
        {
-               if(self.realowner.ammo_rockets < WEP_CVAR(devastator, ammo))
+               if(self.realowner.AMMO_VAL(WEP_DEVASTATOR) < WEP_CVAR(devastator, ammo))
                {
                        self.realowner.cnt = WEP_DEVASTATOR;
                        ATTACK_FINISHED(self.realowner) = time;
@@ -260,7 +263,7 @@ void W_Devastator_Attack (void)
        entity missile;
        entity flash;
 
-       W_DecreaseAmmo(ammo_rockets, WEP_CVAR(devastator, ammo), WEP_CVAR(devastator, reload_ammo));
+       W_DecreaseAmmo(WEP_CVAR(devastator, ammo));
 
        W_SetupShot_ProjectileSize (self, '-3 -3 -3', '3 3 3', FALSE, 5, "weapons/rocket_fire.wav", CH_WEAPON_A, WEP_CVAR(devastator, damage));
        pointparticles(particleeffectnum("rocketlauncher_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
@@ -289,7 +292,7 @@ void W_Devastator_Attack (void)
        setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
        setorigin (missile, w_shotorg - v_forward * 3); // move it back so it hits the wall at the right point
-       W_SetupProjectileVelocity(missile, WEP_CVAR(devastator, speedstart), 0);
+       W_SetupProjVelocity_Basic(missile, WEP_CVAR(devastator, speedstart), 0);
        missile.angles = vectoangles (missile.velocity);
 
        missile.touch = W_Devastator_Touch;
@@ -401,7 +404,6 @@ float W_Devastator(float req)
                }
                case WR_SETUP:
                {
-                       self.current_ammo = ammo_rockets;
                        self.rl_release = 1;
                        return TRUE;
                }
@@ -413,10 +415,10 @@ float W_Devastator(float req)
                                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.AMMO_VAL(WEP_DEVASTATOR) < 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.AMMO_VAL(WEP_DEVASTATOR) < WEP_CVAR(devastator, ammo))
                                        ammo_amount = TRUE;
                                return !ammo_amount;
                        }