r5557 - in trunk/data/qcsrc: client common server server/tturrets/units
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Jan 15 12:08:33 EST 2009
Author: div0
Date: 2009-01-15 12:08:33 -0500 (Thu, 15 Jan 2009)
New Revision: 5557
Modified:
trunk/data/qcsrc/client/projectile.qc
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/csqcprojectile.qc
trunk/data/qcsrc/server/csqcprojectile.qh
trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
trunk/data/qcsrc/server/w_electro.qc
trunk/data/qcsrc/server/w_rocketlauncher.qc
trunk/data/qcsrc/server/w_seeker.qc
Log:
csqcprojectiles: make them more readable; make turrets use them too when they fire a rocket with sound (so they no longer need to use stopsound).
Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/client/projectile.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -27,17 +27,16 @@
switch(self.cnt)
{
- default:
- case 0:
- break;
- case 1:
+ case PROJECTILE_ELECTRO:
break; // electro uses no trail
- case 2:
+ case PROJECTILE_ROCKET:
trailparticles(self, particleeffectnum("TR_ROCKET"), oldorg, self.origin); // rocket
break;
- case 3:
+ case PROJECTILE_TAG:
trailparticles(self, particleeffectnum("TR_VORESPIKE"), oldorg, self.origin); // seeker
break;
+ default:
+ break;
}
self.renderflags = 0;
@@ -48,8 +47,8 @@
void Ent_RemoveProjectile()
{
- if(self.cnt)
- if(csqc_flags & CSQC_FLAG_COLORCODES)
+ if(csqc_flags & CSQC_FLAG_COLORCODES)
+ if(self.cnt)
sound(self, CHAN_PAIN, "misc/null.wav", VOL_BASE, ATTN_NORM);
}
@@ -112,24 +111,23 @@
}
self.cnt = ReadShort();
- switch(self.cnt)
- {
- case 1:
- // only new engines support sound moving with object
- if(csqc_flags & CSQC_FLAG_COLORCODES)
+
+ if(csqc_flags & CSQC_FLAG_COLORCODES)
+ switch(self.cnt)
+ {
+ case PROJECTILE_ELECTRO:
+ // only new engines support sound moving with object
sound(self, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
- break;
- case 2:
- if(csqc_flags & CSQC_FLAG_COLORCODES)
+ break;
+ case PROJECTILE_ROCKET:
sound(self, CHAN_PAIN, "weapons/rocket_fly.wav", VOL_BASE, ATTN_NORM);
- break;
- case 3:
- if(csqc_flags & CSQC_FLAG_COLORCODES)
+ break;
+ case PROJECTILE_TAG:
sound(self, CHAN_PAIN, "weapons/tag_rocket_fly.wav", VOL_BASE, ATTN_NORM);
- break;
- default:
- break;
- }
+ break;
+ default:
+ break;
+ }
sz = ReadByte();
switch(sz)
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/common/constants.qh 2009-01-15 17:08:33 UTC (rev 5557)
@@ -352,3 +352,8 @@
#define VOL_BASE 0.7
#define VOL_BASEVOICE 1.0
+
+// this sets sounds and other properties of the projectiles in csqc
+float PROJECTILE_ELECTRO = 1;
+float PROJECTILE_ROCKET = 2;
+float PROJECTILE_TAG = 3;
Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/csqcprojectile.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -1,3 +1,5 @@
+.float csqcprojectile_type;
+
float CSQCProjectile_SendEntity(entity to, float sf)
{
sf = sf & 0x3F;
@@ -35,16 +37,28 @@
WriteShort(MSG_ENTITY, self.effects & 65535);
WriteByte(MSG_ENTITY, floor(self.effects / 65536));
}
- WriteShort(MSG_ENTITY, self.csqcprojectile_flysound);
+ WriteShort(MSG_ENTITY, self.csqcprojectile_type);
WriteByte(MSG_ENTITY, 0); // size category
}
return 1;
}
-void CSQCProjectile(entity e)
+void CSQCProjectile(entity e, float clientanimate, float type)
{
e.SendEntity = CSQCProjectile_SendEntity;
+
+ e.csqcprojectile_clientanimate = clientanimate;
+
+ if(e.movetype == MOVETYPE_TOSS || e.movetype == MOVETYPE_BOUNCE)
+ {
+ if(e.gravity == 0)
+ e.gravity = 1;
+ }
+ else
+ e.gravity = 0;
+
+ e.csqcprojectile_type = type;
}
void UpdateCSQCProjectile(entity e)
Modified: trunk/data/qcsrc/server/csqcprojectile.qh
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qh 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/csqcprojectile.qh 2009-01-15 17:08:33 UTC (rev 5557)
@@ -1,5 +1,4 @@
-.float csqcprojectile_flysound;
.float csqcprojectile_clientanimate;
-void CSQCProjectile(entity e);
+void CSQCProjectile(entity e, float clientanimate, float type);
void UpdateCSQCProjectile(entity e);
Modified: trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -31,7 +31,6 @@
missile = spawn ();
setorigin(missile, self.tur_shotorg_updated);
- sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
setmodel (missile, "models/turrets/mlrs_rocket.md3"); // precision set below
setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
@@ -57,6 +56,8 @@
missile.tur_aimpos = randomvec() * 128;
te_explosion (missile.origin);
+ CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
+
// switch tubes
self.tur_shotorg_y = self.tur_shotorg_y * -1;
@@ -142,6 +143,8 @@
self.think = turret_hellion_missile_explode;
self.nextthink = time + itime;
}
+
+ UpdateCSQCProjectile(self);
}
void turret_hellion_missile_explode()
@@ -157,7 +160,6 @@
return;
}
- stopsound (self, CHAN_PAIN);
sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
org2 = findbetterlocation (self.origin, 16);
Modified: trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hk.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hk.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -91,7 +91,6 @@
missile.solid = SOLID_BBOX;
setmodel (missile, "models/turrets/hunter2.md3"); // precision set below
setsize (missile, missile.mins,missile.maxs); // give it some size so it can be shot
- sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
setorigin(missile, self.tur_shotorg_updated);
missile.scale = 1;
@@ -116,6 +115,8 @@
missile.cnt = time + 30;
missile.ticrate = max(cvar("sys_ticrate"),0.05);
+ CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET);
+
te_explosion (missile.origin);
if (self.tur_head.frame == 0)
@@ -344,6 +345,8 @@
self.atime = time + 0.2;
//}
#endif
+
+ UpdateCSQCProjectile(self);
}
void turret_hk_missile_explode()
@@ -363,7 +366,6 @@
return;
//vector org2;
- stopsound (self, CHAN_PAIN);
sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
org2 = findbetterlocation (self.origin, 16);
Modified: trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -25,7 +25,6 @@
missile = spawn ();
setmodel (missile, "models/turrets/rocket.md3"); // precision set below
setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
- sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
setorigin(missile, self.tur_shotorg_updated);
missile.classname = "mlrs_missile";
missile.owner = self;
@@ -46,6 +45,8 @@
missile.solid = SOLID_BBOX;
missile.enemy = self.enemy;
+ CSQCProjectile(self, TRUE, PROJECTILE_ROCKET);
+
te_explosion (missile.origin);
//self.tur_head.frame = 7 - self.volly_counter;
@@ -64,7 +65,6 @@
}
- stopsound (self, CHAN_PAIN);
sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
org2 = findbetterlocation (self.origin, 16);
pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
Modified: trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_walker.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/tturrets/units/unit_walker.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -159,7 +159,7 @@
}
//#define WALKER_ROCKET_MOVE movelib_move(newdir * 275,900,0.1,10)
-#define WALKER_ROCKET_MOVE movelib_move_simple(newdir,1000,cvar("g_turrets_unit_walker_std_rocket_tunrate"))
+#define WALKER_ROCKET_MOVE movelib_move_simple(newdir,1000,cvar("g_turrets_unit_walker_std_rocket_tunrate")); UpdateCSQCProjectile(self)
void walker_rocket_loop();
void walker_rocket_think()
{
@@ -311,7 +311,6 @@
setorigin(rocket, org);
sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", VOL_BASE, ATTN_NORM);
- sound (rocket, CHAN_PAIN, "weapons/rocket_fly.wav", 0.4 * VOL_BASE, ATTN_NORM);
setmodel (rocket, "models/turrets/rocket.md3"); // precision set below
setsize (rocket, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
@@ -345,6 +344,8 @@
rocket.solid = SOLID_BBOX;
rocket.tur_health = time + 9;
+ CSQCProjectile(rocket, TRUE, PROJECTILE_ROCKET);
+
te_explosion (rocket.origin);
}
Modified: trunk/data/qcsrc/server/w_electro.qc
===================================================================
--- trunk/data/qcsrc/server/w_electro.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_electro.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -154,12 +154,7 @@
proj.event_damage = W_Plasma_Damage;
proj.flags = FL_PROJECTILE;
- //sound (proj, CHAN_PAIN, "weapons/electro_fly.wav", VOL_BASE, ATTN_NORM);
-
- CSQCProjectile(proj);
- proj.csqcprojectile_clientanimate = 1;
- proj.gravity = 1;
- proj.csqcprojectile_flysound = 1;
+ CSQCProjectile(proj, TRUE, PROJECTILE_ELECTRO);
}
void spawnfunc_weapon_electro (void)
Modified: trunk/data/qcsrc/server/w_rocketlauncher.qc
===================================================================
--- trunk/data/qcsrc/server/w_rocketlauncher.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_rocketlauncher.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -247,16 +247,8 @@
//sound (missile, CHAN_PAIN, "weapons/rocket_fly.wav", VOL_BASE, ATTN_NORM);
missile.flags = FL_PROJECTILE;
- CSQCProjectile(missile);
+ CSQCProjectile(missile, cvar("g_balance_rocketlauncher_speedaccel") == 0 && cvar("g_laserguided_missiles") == 0, PROJECTILE_ROCKET);
- if(cvar("g_balance_rocketlauncher_speedaccel") == 0 && cvar("g_laserguided_missiles") == 0)
- missile.csqcprojectile_clientanimate = 1;
- else
- missile.csqcprojectile_clientanimate = 0; // we won't client animate if the missiles may behave weird
-
- missile.gravity = 0;
- missile.csqcprojectile_flysound = 2;
-
// muzzle flash for 1st person view
flash = spawn ();
flash.scale = 1.2;
Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc 2009-01-15 17:06:03 UTC (rev 5556)
+++ trunk/data/qcsrc/server/w_seeker.qc 2009-01-15 17:08:33 UTC (rev 5557)
@@ -369,10 +369,7 @@
W_SetupProjectileVelocity(missile);
missile.angles = vectoangles (missile.velocity);
- CSQCProjectile(missile);
- missile.csqcprojectile_clientanimate = 1;
- missile.gravity = 0;
- missile.csqcprojectile_flysound = 3;
+ CSQCProjectile(missile, TRUE, PROJECTILE_TAG);
}
More information about the nexuiz-commits
mailing list