]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/w_minstanex.qc
fireball is now a superweapon (expires)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / w_minstanex.qc
index 277cb0140c2577e8de35837389823228f008ffea..34c71cf50935508902626903d48a75cad3369c44 100644 (file)
@@ -3,13 +3,14 @@ REGISTER_WEAPON(MINSTANEX, w_minstanex, IT_CELLS, 7, WEP_FLAG_HIDDEN | WEP_FLAG_
 #else
 #ifdef SVQC
 .float minstanex_lasthit;
+.float jump_interval;
 
 void W_MinstaNex_Attack (void)
 {
        float flying;
        flying = IsFlying(self); // do this BEFORE to make the trace values from FireRailgunBullet last
 
-       W_SetupShot (self, TRUE, 0, "weapons/minstanexfire.wav", CHAN_WEAPON, 10000);
+       W_SetupShot (self, TRUE, 0, "weapons/minstanexfire.wav", CH_WEAPON_A, 10000);
 
        yoda = 0;
        damage_goodhits = 0;
@@ -208,9 +209,11 @@ float w_minstanex(float req)
                else if (self.BUTTON_ATCK2)
                {
                        if (self.jump_interval <= time)
+                       if (weapon_prepareattack(1, -1))
                        {
-                               self.jump_interval = time + autocvar_g_balance_laser_primary_refire * W_WeaponRateFactor();
-
+                               // handle refire manually, so that primary and secondary can be fired without conflictions (important for minstagib)
+                               self.jump_interval = time + autocvar_g_balance_minstanex_laser_refire * W_WeaponRateFactor();
+                               
                                // decrease ammo for the laser?
                                if(autocvar_g_balance_minstanex_laser_ammo)
                                        W_DecreaseAmmo(ammo_cells, autocvar_g_balance_minstanex_laser_ammo, autocvar_g_balance_minstanex_reload_ammo);
@@ -221,6 +224,9 @@ float w_minstanex(float req)
                                self.weapon = WEP_LASER;
                                W_Laser_Attack(2);
                                self.weapon = w;
+                               
+                               // now do normal refire
+                               weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_minstanex_laser_animtime, w_ready);
                        }
                }
        }
@@ -246,7 +252,7 @@ float w_minstanex(float req)
        else if (req == WR_CHECKAMMO1)
        {
                ammo_amount = self.ammo_cells >= minstanex_ammo;
-               ammo_amount += self.weapon_load[WEP_MINSTANEX] >= minstanex_ammo;
+               ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= minstanex_ammo;
                return ammo_amount;
        }
        else if (req == WR_CHECKAMMO2)
@@ -254,7 +260,7 @@ float w_minstanex(float req)
                if(!autocvar_g_balance_minstanex_laser_ammo)
                        return TRUE;
                ammo_amount = self.ammo_cells >= autocvar_g_balance_minstanex_laser_ammo;
-               ammo_amount += self.weapon_load[WEP_MINSTANEX] >= autocvar_g_balance_minstanex_laser_ammo;
+               ammo_amount += self.(weapon_load[WEP_MINSTANEX]) >= autocvar_g_balance_minstanex_laser_ammo;
                return ammo_amount;
        }
        else if (req == WR_RESETPLAYER)
@@ -272,7 +278,7 @@ float w_minstanex(float req)
                W_Reload(used_ammo, autocvar_g_balance_minstanex_reload_ammo, autocvar_g_balance_minstanex_reload_time, "weapons/reload.wav");
        }
        return TRUE;
-};
+}
 #endif
 #ifdef CSQC
 float w_minstanex(float req)
@@ -283,7 +289,7 @@ float w_minstanex(float req)
                org2 = w_org + w_backoff * 6;
                pointparticles(particleeffectnum("nex_impact"), org2, '0 0 0', 1);
                if(!w_issilent)
-                       sound(self, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
+                       sound(self, CH_SHOTS, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
        }
        else if(req == WR_PRECACHE)
        {
@@ -292,7 +298,7 @@ float w_minstanex(float req)
        else if (req == WR_SUICIDEMESSAGE)
                w_deathtypestring = _("%s is now thinking with portals");
        else if (req == WR_KILLMESSAGE)
-               w_deathtypestring = _("%s has been vaporized by %s");
+               w_deathtypestring = _("%s has been vaporized by %s's minstanex");
        return TRUE;
 }
 #endif