[nexuiz-commits] r8708 - in trunk/data/qcsrc: server warpzonelib

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Feb 28 14:44:07 EST 2010


Author: div0
Date: 2010-02-28 14:44:07 -0500 (Sun, 28 Feb 2010)
New Revision: 8708

Modified:
   trunk/data/qcsrc/server/w_fireball.qc
   trunk/data/qcsrc/warpzonelib/TODO
Log:
fix fireball

Modified: trunk/data/qcsrc/server/w_fireball.qc
===================================================================
--- trunk/data/qcsrc/server/w_fireball.qc	2010-02-28 19:44:01 UTC (rev 8707)
+++ trunk/data/qcsrc/server/w_fireball.qc	2010-02-28 19:44:07 UTC (rev 8708)
@@ -25,6 +25,7 @@
 		modeleffect_spawn("models/sphere/sphere.md3", 0, 0, self.origin, '0 0 0', '0 0 0', '0 0 0', 0, cvar("g_balance_fireball_secondary_bfgradius"), 0.2, 0.05, 0.25);
 
 		// 2. bfg effect
+		// NOTE: this cannot be made warpzone aware by design. So, better intentionally ignore warpzones here.
 		for(e = findradius(self.origin, cvar("g_balance_fireball_secondary_bfgradius")); e; e = e.chain)
 		if(e != self.owner) if(e.takedamage == DAMAGE_AIM) if(e.classname != "player" || !self.owner || IsDifferentTeam(e, self))
 		{
@@ -68,26 +69,23 @@
 		return;
 
 	RandomSelection_Init();
-	for(e = findradius(self.origin, dist); e; e = e.chain)
+	for(e = WarpZone_FindRadius(self.origin, dist, TRUE); e; e = e.chain)
 	if(e != self.owner) if(e.takedamage == DAMAGE_AIM) if(e.classname != "player" || !self.owner || IsDifferentTeam(e, self))
 	{
 		p = e.origin;
 		p_x += e.mins_x + random() * (e.maxs_x - e.mins_x);
 		p_y += e.mins_y + random() * (e.maxs_y - e.mins_y);
 		p_z += e.mins_z + random() * (e.maxs_z - e.mins_z);
-		d = vlen(self.origin - p);
+		d = vlen(WarpZone_UnTransformOrigin(e, self.origin) - p);
 		if(d < dist)
 		{
-			traceline(p, self.origin, MOVE_NORMAL, e);
-			if(/* trace_startsolid || */ trace_fraction != 1)
-				continue;
 			e.fireball_impactvec = p;
 			RandomSelection_Add(e, 0, string_null, 1 / (1 + d), !Fire_IsBurning(e));
 		}
 	}
 	if(RandomSelection_chosen_ent)
 	{
-		d = vlen(self.origin - RandomSelection_chosen_ent.fireball_impactvec);
+		d = vlen(WarpZone_UnTransformOrigin(RandomSelection_chosen_ent, self.origin) - RandomSelection_chosen_ent.fireball_impactvec);
 		d = damage + (edgedamage - damage) * (d / dist);
 		Fire_AddDamage(RandomSelection_chosen_ent, self.realowner, d * burntime, burntime, self.projectiledeathtype | HITTYPE_BOUNCE);
 		//trailparticles(self, particleeffectnum("fireball_laser"), self.origin, RandomSelection_chosen_ent.fireball_impactvec);

Modified: trunk/data/qcsrc/warpzonelib/TODO
===================================================================
--- trunk/data/qcsrc/warpzonelib/TODO	2010-02-28 19:44:01 UTC (rev 8707)
+++ trunk/data/qcsrc/warpzonelib/TODO	2010-02-28 19:44:07 UTC (rev 8708)
@@ -1,7 +1,4 @@
 Open issues:
-- radius damage
-  - make warpzone entities radiusdamage-able, and do a new radius damage on the
-    opposite side
 - grep for TODO and FIXME
 
 Weapon support:
@@ -18,9 +15,8 @@
 - hlac: YES
 - minstanex: YES
 - rifle: YES
+- fireball: YES (BFG effect cannot work through warpzones by design, so it's not available through warpzones)
 
-- fireball: PARTIAL (no radius damage, laser damage)
-
 - rocketlauncher: NO (guiding not working, trail bug)
 - hook: NO (hook beam, pull not working)
 - tuba: NO (sound)



More information about the nexuiz-commits mailing list