r5234 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Dec 16 04:42:48 EST 2008


Author: div0
Date: 2008-12-16 04:42:34 -0500 (Tue, 16 Dec 2008)
New Revision: 5234

Modified:
   trunk/data/qcsrc/server/cl_weaponsystem.qc
   trunk/data/qcsrc/server/w_hook.qc
Log:
hook: separate refire timers for primary/secondary (probably a bit buggy)


Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-12-16 09:31:26 UTC (rev 5233)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-12-16 09:42:34 UTC (rev 5234)
@@ -482,19 +482,23 @@
 		return FALSE;
 
 	// don't fire if previous attack is not finished
-	if (ATTACK_FINISHED(self) > time + frametime * 0.5)
-		return FALSE;
+	if(attacktime >= 0)
+		if (ATTACK_FINISHED(self) > time + frametime * 0.5)
+			return FALSE;
 	// don't fire while changing weapon
 	if (self.weaponentity.state != WS_READY)
 		return FALSE;
 	self.weaponentity.state = WS_INUSE;
 	// if the weapon hasn't been firing continuously, reset the timer
-	if (ATTACK_FINISHED(self) < time - frametime * 1.5)
+	if(attacktime >= 0)
 	{
-		ATTACK_FINISHED(self) = time;
-		//dprint("resetting attack finished to ", ftos(time), "\n");
+		if (ATTACK_FINISHED(self) < time - frametime * 1.5)
+		{
+			ATTACK_FINISHED(self) = time;
+			//dprint("resetting attack finished to ", ftos(time), "\n");
+		}
+		ATTACK_FINISHED(self) = ATTACK_FINISHED(self) + attacktime;
 	}
-	ATTACK_FINISHED(self) = ATTACK_FINISHED(self) + attacktime;
 	self.bulletcounter += 1;
 	//dprint("attack finished ", ftos(ATTACK_FINISHED(self)), "\n");
 	return TRUE;

Modified: trunk/data/qcsrc/server/w_hook.qc
===================================================================
--- trunk/data/qcsrc/server/w_hook.qc	2008-12-16 09:31:26 UTC (rev 5233)
+++ trunk/data/qcsrc/server/w_hook.qc	2008-12-16 09:42:34 UTC (rev 5234)
@@ -5,6 +5,7 @@
 .float dmg_power;
 .float dmg_duration;
 .float dmg_last;
+.float hook_refire;
 
 void W_Hook_ExplodeThink (void)
 {
@@ -116,7 +117,8 @@
 		{
 			if(!self.hook)
 			if not(self.hook_state & HOOK_WAITING_FOR_RELEASE)
-			if (weapon_prepareattack(0, cvar("g_balance_hook_primary_refire")))
+			if (time > self.hook_refire)
+			if (weapon_prepareattack(0, -1))
 			{
 				if not(self.items & IT_UNLIMITED_WEAPON_AMMO)
 					self.ammo_cells = self.ammo_cells - cvar("g_balance_hook_primary_ammo");
@@ -125,13 +127,8 @@
 			}
 		}
 
-		if(self.hook)
+		if (self.BUTTON_ATCK2)
 		{
-			// if hooked, no bombs, and increase the timer
-			ATTACK_FINISHED(self) = max(ATTACK_FINISHED(self), time + cvar("g_balance_hook_primary_refire"));
-		}
-		else if (self.BUTTON_ATCK2)
-		{
 			if (weapon_prepareattack(1, cvar("g_balance_hook_secondary_refire")))
 			{
 				W_Hook_Attack2();
@@ -139,6 +136,12 @@
 			}
 		}
 
+		if(self.hook)
+		{
+			// if hooked, no bombs, and increase the timer
+			self.hook_refire = max(self.hook_refire, time + cvar("g_balance_hook_primary_refire"));
+		}
+
 		if (self.BUTTON_CROUCH)
 		{
 			self.hook_state &~= HOOK_PULLING;




More information about the nexuiz-commits mailing list