From 03fc3c95783b4b9953ee9d89a03b16d8c71c9c24 Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 11 Sep 2009 13:28:40 +0000 Subject: [PATCH] try to work around dead bodies git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7733 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/g_damage.qc | 25 ++++++++++++++++--------- data/qcsrc/server/w_fireball.qc | 8 +++----- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/data/qcsrc/server/g_damage.qc b/data/qcsrc/server/g_damage.qc index 3efcc3000..b8bc7f62b 100644 --- a/data/qcsrc/server/g_damage.qc +++ b/data/qcsrc/server/g_damage.qc @@ -1132,15 +1132,22 @@ float Fire_AddDamage(entity e, entity o, float d, float t, float dt) float dps; float maxtime, mintime, maxdamage, mindamage, maxdps, mindps, totaldamage, totaltime; - if(e.classname != "player") - if(!e.fire_burner) + if(e.classname == "player") { - // 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; + if(e.deadflag) + return -1; + } + else + { + 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); @@ -1204,7 +1211,7 @@ float Fire_AddDamage(entity e, entity o, float d, float t, float dt) e.fire_hitsound = FALSE; } } - return totaldamage - mindamage; // can never be negative + return max(0, totaldamage - mindamage); // can never be negative, but to make sure } else return 0; diff --git a/data/qcsrc/server/w_fireball.qc b/data/qcsrc/server/w_fireball.qc index 4b434cc28..84c067a7f 100644 --- a/data/qcsrc/server/w_fireball.qc +++ b/data/qcsrc/server/w_fireball.qc @@ -213,14 +213,12 @@ void W_Firemine_Touch (void) { PROJECTILE_TOUCH; if (other.takedamage == DAMAGE_AIM) + if(Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT) >= 0) { - Fire_AddDamage(other, self.realowner, cvar("g_balance_fireball_primary_damage"), cvar("g_balance_fireball_primary_damagetime"), self.projectiledeathtype | HITTYPE_HEADSHOT); remove(self); + return; } - else - { - self.projectiledeathtype |= HITTYPE_BOUNCE; - } + self.projectiledeathtype |= HITTYPE_BOUNCE; } void W_Fireball_Attack1() -- 2.39.2