[nexuiz-commits] r7668 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Sun Sep 6 14:45:22 EDT 2009


Author: div0
Date: 2009-09-06 14:45:22 -0400 (Sun, 06 Sep 2009)
New Revision: 7668

Modified:
   trunk/data/qcsrc/server/g_damage.qc
Log:
fireball: support setting turrets on fire


Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc	2009-09-06 18:41:01 UTC (rev 7667)
+++ trunk/data/qcsrc/server/g_damage.qc	2009-09-06 18:45:22 UTC (rev 7668)
@@ -1095,7 +1095,10 @@
 .float fire_deathtype;
 .entity fire_owner;
 .float fire_hitsound;
+.entity fire_burner;
 
+void fireburner_think();
+
 float Fire_IsBurning(entity e)
 {
 	return (time < e.fire_endtime);
@@ -1105,6 +1108,18 @@
 {
 	float dps;
 	float maxtime, mintime, maxdamage, mindamage, maxdps, mindps, totaldamage, totaltime;
+
+	if(e.classname != "player")
+	if(!e.fire_burner)
+	{
+		// print("adding a fire burner to ", e.classname, "\n");
+		e.fire_burner = spawn();
+		e.fire_burner.classname = "fireburner";
+		e.fire_burner.think = fireburner_think;
+		e.fire_burner.nextthink = time;
+		e.fire_burner.owner = e;
+	}
+
 	t = max(t, 0.1);
 	dps = d / t;
 	if(Fire_IsBurning(e))
@@ -1229,3 +1244,22 @@
 	else
 		e.effects &~= EF_FLAME;
 }
+
+void fireburner_think()
+{
+	// for players, this is done in the regular loop
+	if(wasfreed(self.owner))
+	{
+		remove(self);
+		return;
+	}
+	if(!Fire_IsBurning(self.owner))
+	{
+		self.owner.fire_burner = world;
+		remove(self);
+		return;
+	}
+	Fire_ApplyDamage(self.owner);
+	Fire_ApplyEffect(self.owner);
+	self.nextthink = time;
+}



More information about the nexuiz-commits mailing list