r4914 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Mon Oct 27 07:18:21 EDT 2008
Author: div0
Date: 2008-10-27 07:18:21 -0400 (Mon, 27 Oct 2008)
New Revision: 4914
Modified:
trunk/data/qcsrc/server/w_common.qc
trunk/data/qcsrc/server/w_grenadelauncher.qc
trunk/data/qcsrc/server/w_hagar.qc
trunk/data/qcsrc/server/w_rocketlauncher.qc
trunk/data/qcsrc/server/w_seeker.qc
Log:
fix radiusdamage recursions
Modified: trunk/data/qcsrc/server/w_common.qc
===================================================================
--- trunk/data/qcsrc/server/w_common.qc 2008-10-27 11:08:20 UTC (rev 4913)
+++ trunk/data/qcsrc/server/w_common.qc 2008-10-27 11:18:21 UTC (rev 4914)
@@ -152,3 +152,15 @@
Damage (trace_ent, self, self, damage, dtype, trace_endpos, dir * force);
}
}
+
+void W_PrepareExplosionByDamage(entity attacker, void() explode)
+{
+ self.takedamage = DAMAGE_NO;
+ self.event_damage = SUB_Null;
+ self.owner = attacker;
+
+ // do not explode NOW but in the NEXT FRAME!
+ // because recursive calls to RadiusDamage are not allowed
+ self.nextthink = time;
+ self.think = explode;
+}
Modified: trunk/data/qcsrc/server/w_grenadelauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_grenadelauncher.qc 2008-10-27 11:08:20 UTC (rev 4913)
+++ trunk/data/qcsrc/server/w_grenadelauncher.qc 2008-10-27 11:18:21 UTC (rev 4914)
@@ -82,8 +82,7 @@
self.health = self.health - damage;
if (self.health <= 0)
{
- self.owner = attacker;
- self.think ();
+ W_PrepareExplosionByDamage(attacker, self.think);
}
}
Modified: trunk/data/qcsrc/server/w_hagar.qc
===================================================================
--- trunk/data/qcsrc/server/w_hagar.qc 2008-10-27 11:08:20 UTC (rev 4913)
+++ trunk/data/qcsrc/server/w_hagar.qc 2008-10-27 11:18:21 UTC (rev 4914)
@@ -74,7 +74,7 @@
{
self.health = self.health - damage;
if (self.health <= 0)
- self.think ();
+ W_PrepareExplosionByDamage(attacker, self.think);
}
void W_Hagar_Attack (void)
Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-10-27 11:08:20 UTC (rev 4913)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc 2008-10-27 11:18:21 UTC (rev 4914)
@@ -196,10 +196,7 @@
self.health = self.health - damage;
self.angles = vectoangles(self.velocity);
if (self.health <= 0)
- {
- self.owner = attacker;
- W_Rocket_Explode();
- }
+ W_PrepareExplosionByDamage(attacker, W_Rocket_Explode);
}
void W_Rocket_Attack (void)
Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc 2008-10-27 11:08:20 UTC (rev 4913)
+++ trunk/data/qcsrc/server/w_seeker.qc 2008-10-27 11:18:21 UTC (rev 4914)
@@ -129,7 +129,6 @@
void Seeker_Missile_Damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
{
-
float d;
d = damage;
@@ -139,7 +138,7 @@
self.health = self.health - d;
if (self.health <= 0)
- Seeker_Missile_Explode();
+ W_PrepareExplosionByDamage(attacker, Seeker_Missile_Explode);
}
#define EF_ROCKET 16777216
More information about the nexuiz-commits
mailing list