[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