From 93952f8b47cd835491ef33b9775abd0b98eb4547 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Wed, 26 May 2010 07:39:18 +0200 Subject: [PATCH] start of force-setting HITTYPE_SPLASH for timed out explosions (so client/damage.qc can check that flag to decide whether the explosion should spawn rubble or not) --- qcsrc/server/miscfunctions.qc | 7 +++++++ qcsrc/server/w_electro.qc | 7 +++---- qcsrc/server/w_fireball.qc | 1 + qcsrc/server/w_grenadelauncher.qc | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc index c54235d2c..ac0bc8f63 100644 --- a/qcsrc/server/miscfunctions.qc +++ b/qcsrc/server/miscfunctions.qc @@ -1916,6 +1916,13 @@ void adaptor_think2use() activator = a; } +void adaptor_think2use_hittype_splash() // for timed projectile detonation +{ + if not(self.flags & FL_ONGROUND) // if onground, we ARE touching something, but HITTYPE_SPLASH is to be networked if the damage causing projectile is not touching ANYTHING + self.projectiledeathtype |= HITTYPE_SPLASH; + adaptor_think2use(); +} + // deferred dropping void DropToFloor_Handler() { diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index c1cb49d0e..c9e7d23c3 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -51,7 +51,6 @@ void W_Plasma_Explode (void) void W_Plasma_Explode_Combo (void) { - W_Plasma_TriggerCombo(self.origin, cvar("g_balance_electro_combo_comboradius"), self.owner); self.event_damage = SUB_Null; @@ -98,7 +97,7 @@ void W_Plasma_Damage (entity inflictor, entity attacker, float damage, float dea else { self.use = W_Plasma_Explode; - self.think = adaptor_think2use; + self.think = adaptor_think2use; // not _hittype_splash, as this runs "immediately" } } } @@ -117,7 +116,7 @@ void W_Electro_Attack() proj.bot_dodge = TRUE; proj.bot_dodgerating = cvar("g_balance_electro_primary_damage"); proj.use = W_Plasma_Explode; - proj.think = adaptor_think2use; + proj.think = adaptor_think2use_hittype_splash; proj.nextthink = time + cvar("g_balance_electro_primary_lifetime"); PROJECTILE_MAKETRIGGER(proj); proj.projectiledeathtype = WEP_ELECTRO; @@ -151,7 +150,7 @@ void W_Electro_Attack2() proj.classname = "plasma"; proj.owner = self; proj.use = W_Plasma_Explode; - proj.think = adaptor_think2use; + proj.think = adaptor_think2use_hittype_splash; proj.bot_dodge = TRUE; proj.bot_dodgerating = cvar("g_balance_electro_secondary_damage"); proj.nextthink = time + cvar("g_balance_electro_secondary_lifetime"); diff --git a/qcsrc/server/w_fireball.qc b/qcsrc/server/w_fireball.qc index c1d30ba02..0462cd901 100644 --- a/qcsrc/server/w_fireball.qc +++ b/qcsrc/server/w_fireball.qc @@ -98,6 +98,7 @@ void W_Fireball_Think() if(time > self.pushltime) { self.cnt = 1; + self.projectiledeathtype |= HITTYPE_SPLASH; W_Fireball_Explode(); return; } diff --git a/qcsrc/server/w_grenadelauncher.qc b/qcsrc/server/w_grenadelauncher.qc index 380e849fe..251137401 100644 --- a/qcsrc/server/w_grenadelauncher.qc +++ b/qcsrc/server/w_grenadelauncher.qc @@ -99,7 +99,7 @@ void W_Grenade_Attack (void) setsize(gren, '0 0 -3', '0 0 -3'); gren.nextthink = time + cvar("g_balance_grenadelauncher_primary_lifetime"); - gren.think = adaptor_think2use; + gren.think = adaptor_think2use_hittype_splash; gren.use = W_Grenade_Explode; gren.touch = W_Grenade_Touch1; W_SETUPPROJECTILEVELOCITY_UP(gren, g_balance_grenadelauncher_primary); @@ -135,7 +135,7 @@ void W_Grenade_Attack2 (void) setorigin(gren, w_shotorg); gren.nextthink = time + cvar("g_balance_grenadelauncher_secondary_lifetime"); - gren.think = adaptor_think2use; + gren.think = adaptor_think2use_hittype_splash; gren.use = W_Grenade_Explode2; gren.touch = W_Grenade_Touch2; gren.takedamage = DAMAGE_YES; -- 2.39.2