From: Rudolf Polzer <divverent@alientrap.org>
Date: Wed, 21 Sep 2011 14:24:28 +0000 (+0200)
Subject: various fixes for uzi refire
X-Git-Tag: xonotic-v0.6.0~40^2~121
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=362913b8ac04b889c102b32fdc1dad522ab2c718;p=xonotic%2Fxonotic-data.pk3dir.git

various fixes for uzi refire

(the .cfg change makes it behave like before, except now intentionally so)
---

diff --git a/balanceXonotic.cfg b/balanceXonotic.cfg
index 0c46451f4..dc9a9c065 100644
--- a/balanceXonotic.cfg
+++ b/balanceXonotic.cfg
@@ -289,7 +289,7 @@ set g_balance_uzi_first 1
 set g_balance_uzi_first_damage 16
 set g_balance_uzi_first_force 5
 set g_balance_uzi_first_spread 0.03
-set g_balance_uzi_first_refire 0.2
+set g_balance_uzi_first_refire 0.3
 set g_balance_uzi_first_ammo 1
 
 set g_balance_uzi_sustained_damage 14
diff --git a/qcsrc/server/w_uzi.qc b/qcsrc/server/w_uzi.qc
index 92c81714a..4a10ecdf3 100644
--- a/qcsrc/server/w_uzi.qc
+++ b/qcsrc/server/w_uzi.qc
@@ -4,8 +4,8 @@ REGISTER_WEAPON(UZI, w_uzi, IT_NAILS, 3, WEP_FLAG_NORMAL | WEP_FLAG_RELOADABLE |
 #ifdef SVQC
 
 // leilei's fancy muzzleflash stuff
-void UZI_Flash_Go() 
-{	
+void UZI_Flash_Go()
+{
 	self.frame = self.frame + 2;
 	self.scale = self.scale * 0.5;
 	self.alpha = self.alpha - 0.25;
@@ -18,17 +18,17 @@ void UZI_Flash_Go()
 		self.realowner.muzzle_flash = world;
 		return;
 	}
-	
+
 }
 
 void UziFlash()
-{	
+{
 	if (self.muzzle_flash == world)
-		self.muzzle_flash = spawn();	
-	
+		self.muzzle_flash = spawn();
+
 	// muzzle flash for 1st person view
 	setmodel(self.muzzle_flash, "models/uziflash.md3"); // precision set below
-	
+
 	self.muzzle_flash.scale = 0.75;
 	self.muzzle_flash.think = UZI_Flash_Go;
 	self.muzzle_flash.nextthink = time + 0.02;
@@ -102,14 +102,9 @@ void uzi_mode1_fire_auto()
 {
 	float uzi_spread;
 
-	W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo);
-	
-	if (self.BUTTON_ATCK)
-		weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto);
-	else
+	if (!self.BUTTON_ATCK)
 	{
-		ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor();
-		weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, w_ready);
+		w_ready();
 		return;
 	}
 
@@ -120,27 +115,32 @@ void uzi_mode1_fire_auto()
 		w_ready();
 		return;
 	}
-	
+
+	W_DecreaseAmmo(ammo_nails, autocvar_g_balance_uzi_sustained_ammo, autocvar_g_balance_uzi_reload_ammo);
+
 	W_SetupShot (self, autocvar_g_antilag_bullets && autocvar_g_balance_uzi_speed >= autocvar_g_antilag_bullets, 0, "weapons/uzi_fire.wav", CH_WEAPON_A, autocvar_g_balance_uzi_sustained_damage);
 	if (!g_norecoil)
 	{
 		self.punchangle_x = random () - 0.5;
 		self.punchangle_y = random () - 0.5;
 	}
-	
+
 	uzi_spread = bound(autocvar_g_balance_uzi_spread_min, autocvar_g_balance_uzi_spread_min + (autocvar_g_balance_uzi_spread_add * self.misc_bulletcounter), autocvar_g_balance_uzi_spread_max);
 	fireBallisticBullet(w_shotorg, w_shotdir, uzi_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant);
 	endFireBallisticBullet();
-	
+
 	self.misc_bulletcounter = self.misc_bulletcounter + 1;
-	
+
 	pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
 	UziFlash();
 	W_AttachToShotorg(self.muzzle_flash, '5 0 0');
-	
+
 	if (autocvar_g_casings >= 2) // casing code
 		SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self);
+
+	ATTACK_FINISHED(self) = time + autocvar_g_balance_uzi_first_refire * W_WeaponRateFactor();
+	weapon_thinkf(WFRAME_FIRE1, autocvar_g_balance_uzi_sustained_refire, uzi_mode1_fire_auto);
 }
 
 void uzi_mode1_fire_burst()
@@ -151,16 +151,16 @@ void uzi_mode1_fire_burst()
 		self.punchangle_x = random () - 0.5;
 		self.punchangle_y = random () - 0.5;
 	}
-	
+
 	fireBallisticBullet(w_shotorg, w_shotdir, autocvar_g_balance_uzi_burst_spread, autocvar_g_balance_uzi_speed, 5, autocvar_g_balance_uzi_sustained_damage, 0, autocvar_g_balance_uzi_sustained_force, WEP_UZI, 0, 1, autocvar_g_balance_uzi_bulletconstant);
 	endFireBallisticBullet();
-	
-	
+
+
 	pointparticles(particleeffectnum("uzi_muzzleflash"), w_shotorg, w_shotdir * 1000, 1);
 
 	UziFlash();
 	W_AttachToShotorg(self.muzzle_flash, '5 0 0');
-	
+
 	if (autocvar_g_casings >= 2) // casing code
 		SpawnCasing (((random () * 50 + 50) * v_right) - (v_forward * (random () * 25 + 25)) - ((random () * 5 - 70) * v_up), 2, vectoangles(v_forward),'0 250 0', 100, 3, self);
 
@@ -174,7 +174,7 @@ void uzi_mode1_fire_burst()
 	{
 		weapon_thinkf(WFRAME_FIRE2, autocvar_g_balance_uzi_burst_refire, uzi_mode1_fire_burst);
 	}
-		
+
 }
 
 void spawnfunc_weapon_machinegun(); // defined in t_items.qc
@@ -197,15 +197,16 @@ float w_uzi(float req)
 		{
 			if (self.BUTTON_ATCK)
 			if (weapon_prepareattack(0, 0))
-			{				
+			{
 				self.misc_bulletcounter = 0;
 				uzi_mode1_fire_auto();
 			}
-			
+
 			if(self.BUTTON_ATCK2)
 			if(weapon_prepareattack(1, 0))
 			{
 				if (!weapon_action(self.weapon, WR_CHECKAMMO2))
+				if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 				{
 					W_SwitchWeapon_Force(self, w_getbestweapon(self));
 					w_ready();
@@ -220,7 +221,7 @@ float w_uzi(float req)
 		}
 		else
 		{
-			
+
 			if (self.BUTTON_ATCK)
 			if (weapon_prepareattack(0, 0))
 			{