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