From dd6cc53aad08f0261ee696218e05349ead5198de Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 29 Jul 2009 12:51:47 +0000 Subject: [PATCH] make projectiles SOLID_TRIGGER for a test git-svn-id: svn://svn.icculus.org/nexuiz/trunk@7280 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/defs.qh | 3 +++ data/qcsrc/server/g_hook.qc | 4 ++-- data/qcsrc/server/nexball.qc | 2 +- data/qcsrc/server/steerlib.qc | 4 ++-- data/qcsrc/server/w_common.qc | 2 +- data/qcsrc/server/w_crylink.qc | 4 ++-- data/qcsrc/server/w_electro.qc | 4 ++-- data/qcsrc/server/w_grenadelauncher.qc | 4 ++-- data/qcsrc/server/w_hagar.qc | 4 ++-- data/qcsrc/server/w_hlac.qc | 4 ++-- data/qcsrc/server/w_hook.qc | 2 +- data/qcsrc/server/w_laser.qc | 5 ++++- data/qcsrc/server/w_porto.qc | 2 +- data/qcsrc/server/w_rocketlauncher.qc | 2 +- 14 files changed, 26 insertions(+), 20 deletions(-) diff --git a/data/qcsrc/server/defs.qh b/data/qcsrc/server/defs.qh index f8af5891b..bdcdf7e81 100644 --- a/data/qcsrc/server/defs.qh +++ b/data/qcsrc/server/defs.qh @@ -609,3 +609,6 @@ float client_cefc_accumulatortime; #endif .float campingrifle_bulletcounter; + +#define PROJECTILE_MAKETRIGGER(e) (e).solid = SOLID_TRIGGER; (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE +// once was: SOLID_BBOX and default dphitcontentsmask, but then stuff can be blocked by them, and they are impacted by spectators diff --git a/data/qcsrc/server/g_hook.qc b/data/qcsrc/server/g_hook.qc index f49c6cf5e..60f5fb81e 100644 --- a/data/qcsrc/server/g_hook.qc +++ b/data/qcsrc/server/g_hook.qc @@ -63,7 +63,7 @@ void SetMovetypeFollow(entity ent, entity e) void UnsetMovetypeFollow(entity ent) { ent.movetype = MOVETYPE_FLY; - ent.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(ent); ent.aiment = world; } float LostMovetypeFollow(entity ent) @@ -332,7 +332,7 @@ void FireGrapplingHook (void) missile.classname = "grapplinghook"; missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); setmodel (missile, "models/hook.md3"); // precision set below setsize (missile, '-3 -3 -3', '3 3 3'); diff --git a/data/qcsrc/server/nexball.qc b/data/qcsrc/server/nexball.qc index fc16a3247..179e9e327 100644 --- a/data/qcsrc/server/nexball.qc +++ b/data/qcsrc/server/nexball.qc @@ -669,7 +669,7 @@ void W_Nexball_Attack2 (void) missile.classname = "ballstealer"; missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); setmodel (missile, "models/elaser.mdl"); // precision set below setsize (missile, '0 0 0', '0 0 0'); diff --git a/data/qcsrc/server/steerlib.qc b/data/qcsrc/server/steerlib.qc index b0ed1e703..bf324a278 100644 --- a/data/qcsrc/server/steerlib.qc +++ b/data/qcsrc/server/steerlib.qc @@ -512,7 +512,7 @@ void spawn_flocker() flocker.owner = self; flocker.think = flocker_think; flocker.nextthink = time + random() * 5; - flocker.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(flocker); flocker.movetype = MOVETYPE_BOUNCEMISSILE; flocker.effects = EF_LOWPRECISION; flocker.velocity = randomvec() * 300; @@ -612,7 +612,7 @@ void spawnfunc_flockerspawn() self.enemy.scale = 3; self.enemy.effects = EF_LOWPRECISION; self.enemy.movetype = MOVETYPE_BOUNCEMISSILE; - self.enemy.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(self.enemy); self.enemy.think = flocker_hunter_think; self.enemy.nextthink = time + 10; self.enemy.flock_id = self.flock_id; diff --git a/data/qcsrc/server/w_common.qc b/data/qcsrc/server/w_common.qc index e0d61b6a6..872b2fba8 100644 --- a/data/qcsrc/server/w_common.qc +++ b/data/qcsrc/server/w_common.qc @@ -322,7 +322,7 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f proj = spawn(); proj.classname = "bullet"; proj.owner = self; - proj.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(proj); if(gravityfactor > 0) { proj.movetype = MOVETYPE_TOSS; diff --git a/data/qcsrc/server/w_crylink.qc b/data/qcsrc/server/w_crylink.qc index fe9be7641..fe4507023 100644 --- a/data/qcsrc/server/w_crylink.qc +++ b/data/qcsrc/server/w_crylink.qc @@ -83,7 +83,7 @@ void W_Crylink_Attack (void) proj.bot_dodgerating = cvar("g_balance_crylink_primary_damage"); proj.movetype = MOVETYPE_BOUNCEMISSILE; - proj.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(proj); proj.projectiledeathtype = WEP_CRYLINK; //proj.gravity = 0.001; @@ -147,7 +147,7 @@ void W_Crylink_Attack2 (void) proj.bot_dodgerating = cvar("g_balance_crylink_secondary_damage"); proj.movetype = MOVETYPE_BOUNCEMISSILE; - proj.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(proj); proj.projectiledeathtype = WEP_CRYLINK | HITTYPE_SECONDARY; //proj.gravity = 0.001; diff --git a/data/qcsrc/server/w_electro.qc b/data/qcsrc/server/w_electro.qc index c6a4cf00f..f50106a27 100644 --- a/data/qcsrc/server/w_electro.qc +++ b/data/qcsrc/server/w_electro.qc @@ -82,7 +82,7 @@ void W_Electro_Attack() proj.use = W_Plasma_Explode; proj.think = adaptor_think2use; proj.nextthink = time + cvar("g_balance_electro_primary_lifetime"); - proj.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(proj); proj.projectiledeathtype = WEP_ELECTRO; setorigin(proj, w_shotorg); @@ -119,7 +119,7 @@ void W_Electro_Attack2() proj.bot_dodge = TRUE; proj.bot_dodgerating = cvar("g_balance_electro_secondary_damage"); proj.nextthink = time + cvar("g_balance_electro_secondary_lifetime"); - proj.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(proj); proj.projectiledeathtype = WEP_ELECTRO | HITTYPE_SECONDARY; setorigin(proj, w_shotorg); diff --git a/data/qcsrc/server/w_grenadelauncher.qc b/data/qcsrc/server/w_grenadelauncher.qc index 6e8a8a9a1..223647bf1 100644 --- a/data/qcsrc/server/w_grenadelauncher.qc +++ b/data/qcsrc/server/w_grenadelauncher.qc @@ -88,7 +88,7 @@ void W_Grenade_Attack (void) gren.bot_dodge = TRUE; gren.bot_dodgerating = cvar("g_balance_grenadelauncher_primary_damage"); gren.movetype = MOVETYPE_BOUNCE; - gren.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(gren); gren.projectiledeathtype = WEP_GRENADE_LAUNCHER; setorigin(gren, w_shotorg); setsize(gren, '0 0 -3', '0 0 -3'); @@ -123,7 +123,7 @@ void W_Grenade_Attack2 (void) gren.bot_dodge = TRUE; gren.bot_dodgerating = cvar("g_balance_grenadelauncher_secondary_damage"); gren.movetype = MOVETYPE_BOUNCE; - gren.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(gren); gren.projectiledeathtype = WEP_GRENADE_LAUNCHER | HITTYPE_SECONDARY; setsize(gren, '0 0 -3', '0 0 -3'); setorigin(gren, w_shotorg); diff --git a/data/qcsrc/server/w_hagar.qc b/data/qcsrc/server/w_hagar.qc index f0d3c8cdf..5b55517d5 100644 --- a/data/qcsrc/server/w_hagar.qc +++ b/data/qcsrc/server/w_hagar.qc @@ -55,7 +55,7 @@ void W_Hagar_Attack (void) missile.use = W_Hagar_Explode; missile.think = adaptor_think2use; missile.nextthink = time + cvar("g_balance_hagar_primary_lifetime"); - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); missile.projectiledeathtype = WEP_HAGAR; setorigin (missile, w_shotorg); setsize(missile, '0 0 0', '0 0 0'); @@ -91,7 +91,7 @@ void W_Hagar_Attack2 (void) missile.use = W_Hagar_Explode; missile.think = adaptor_think2use; missile.nextthink = time + cvar("g_balance_hagar_secondary_lifetime"); - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); missile.projectiledeathtype = WEP_HAGAR | HITTYPE_SECONDARY; setorigin (missile, w_shotorg); setsize(missile, '0 0 0', '0 0 0'); diff --git a/data/qcsrc/server/w_hlac.qc b/data/qcsrc/server/w_hlac.qc index 2b10ad735..0c93a8a42 100644 --- a/data/qcsrc/server/w_hlac.qc +++ b/data/qcsrc/server/w_hlac.qc @@ -53,7 +53,7 @@ void W_HLAC_Attack (void) missile.bot_dodgerating = cvar("g_balance_hlac_primary_damage"); missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); setorigin (missile, w_shotorg); setsize(missile, '0 0 0', '0 0 0'); @@ -97,7 +97,7 @@ void W_HLAC_Attack2f (void) missile.bot_dodgerating = cvar("g_balance_hlac_secondary_damage"); missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); setorigin (missile, w_shotorg); setsize(missile, '0 0 0', '0 0 0'); diff --git a/data/qcsrc/server/w_hook.qc b/data/qcsrc/server/w_hook.qc index ba7bcde7a..0bfc8f5da 100644 --- a/data/qcsrc/server/w_hook.qc +++ b/data/qcsrc/server/w_hook.qc @@ -68,7 +68,7 @@ void W_Hook_Attack2() gren.bot_dodge = TRUE; gren.bot_dodgerating = cvar("g_balance_hook_secondary_damage"); gren.movetype = MOVETYPE_TOSS; - gren.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(gren); gren.projectiledeathtype = WEP_HOOK | HITTYPE_SECONDARY; setorigin(gren, w_shotorg); setsize(gren, '0 0 0', '0 0 0'); diff --git a/data/qcsrc/server/w_laser.qc b/data/qcsrc/server/w_laser.qc index cd9f49994..b64dafde3 100644 --- a/data/qcsrc/server/w_laser.qc +++ b/data/qcsrc/server/w_laser.qc @@ -4,6 +4,9 @@ void W_Laser_Touch (void) { PROJECTILE_TOUCH; + if(other.classname == "spectator") + checkclient(); + self.event_damage = SUB_Null; if (self.dmg) RadiusDamage (self, self.owner, cvar("g_balance_laser_secondary_damage"), cvar("g_balance_laser_secondary_edgedamage"), cvar("g_balance_laser_secondary_radius"), world, cvar("g_balance_laser_secondary_force"), self.projectiledeathtype, other); @@ -31,7 +34,7 @@ void W_Laser_Attack (float issecondary) missile.bot_dodgerating = cvar("g_balance_laser_primary_damage"); missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); missile.projectiledeathtype = WEP_LASER; if(issecondary) missile.projectiledeathtype |= HITTYPE_SECONDARY; diff --git a/data/qcsrc/server/w_porto.qc b/data/qcsrc/server/w_porto.qc index 8d24155e5..401a9e87f 100644 --- a/data/qcsrc/server/w_porto.qc +++ b/data/qcsrc/server/w_porto.qc @@ -170,7 +170,7 @@ void W_Porto_Attack (void) gren.bot_dodge = TRUE; gren.bot_dodgerating = 200; gren.movetype = MOVETYPE_BOUNCEMISSILE; - gren.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(gren); gren.effects = EF_RED; gren.scale = 4; setorigin(gren, w_shotorg); diff --git a/data/qcsrc/server/w_rocketlauncher.qc b/data/qcsrc/server/w_rocketlauncher.qc index eb7caf0cc..8a02ac5f6 100644 --- a/data/qcsrc/server/w_rocketlauncher.qc +++ b/data/qcsrc/server/w_rocketlauncher.qc @@ -276,7 +276,7 @@ void W_Rocket_Attack (void) missile.event_damage = W_Rocket_Damage; missile.movetype = MOVETYPE_FLY; - missile.solid = SOLID_BBOX; + PROJECTILE_MAKETRIGGER(missile); missile.projectiledeathtype = WEP_ROCKET_LAUNCHER; setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot -- 2.39.2