r5581 - in trunk/data/qcsrc: client common server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Fri Jan 16 16:11:12 EST 2009
Author: div0
Date: 2009-01-16 16:11:07 -0500 (Fri, 16 Jan 2009)
New Revision: 5581
Modified:
trunk/data/qcsrc/client/csqc_constants.qc
trunk/data/qcsrc/client/interpolate.qh
trunk/data/qcsrc/client/projectile.qc
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/csqcprojectile.qc
trunk/data/qcsrc/server/w_porto.qc
trunk/data/qcsrc/server/w_seeker.qc
Log:
make porto and seeker use csqc projectiles completely
Modified: trunk/data/qcsrc/client/csqc_constants.qc
===================================================================
--- trunk/data/qcsrc/client/csqc_constants.qc 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/csqc_constants.qc 2009-01-16 21:11:07 UTC (rev 5581)
@@ -187,3 +187,5 @@
float CAMERA_FREE = 1;
float CAMERA_CHASE = 2;
+
+float EF_NOMODELFLAGS = 8388608;
Modified: trunk/data/qcsrc/client/interpolate.qh
===================================================================
--- trunk/data/qcsrc/client/interpolate.qh 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/interpolate.qh 2009-01-16 21:11:07 UTC (rev 5581)
@@ -4,6 +4,7 @@
#define IFLAG_AUTOANGLES 4
#define IFLAG_VALID 8
#define IFLAG_PREVALID 16
+#define IFLAG_INTERNALMASK (IFLAG_VALID | IFLAG_PREVALID)
// call this BEFORE reading an entity update
void InterpolateOrigin_Undo();
Modified: trunk/data/qcsrc/client/projectile.qc
===================================================================
--- trunk/data/qcsrc/client/projectile.qc 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/client/projectile.qc 2009-01-16 21:11:07 UTC (rev 5581)
@@ -40,13 +40,27 @@
if(!(self.move_flags & FL_ONGROUND))
self.angles += '100 150 100' * time;
break;
+ case PROJECTILE_PORTO_RED:
+ // TODO add red dynamic light
+ trailparticles(self, particleeffectnum("TR_WIZSPIKE"), oldorg, self.origin);
+ break;
+ case PROJECTILE_PORTO_BLUE:
+ // TODO add blue dynamic light
+ trailparticles(self, particleeffectnum("TR_WIZSPIKE"), oldorg, self.origin);
+ break;
+ case PROJECTILE_FLAC:
+ trailparticles(self, particleeffectnum("TR_VORESPIKE"), oldorg, self.origin);
+ break;
+ case PROJECTILE_SEEKER:
+ trailparticles(self, particleeffectnum("TR_ROCKET"), oldorg, self.origin);
+ break;
default:
break;
}
self.renderflags = 0;
- if(self.count & 0x80 || self.iflags & IFLAG_VALID)
+ if((self.count & 0x80) || (self.iflags & IFLAG_VALID))
R_AddEntity(self);
}
@@ -84,9 +98,10 @@
f = ReadByte();
self.count = (f & 0x80);
- self.iflags = IFLAG_AUTOANGLES | IFLAG_ANGLES;
+ self.iflags = (self.iflags & IFLAG_INTERNALMASK) | IFLAG_AUTOANGLES | IFLAG_ANGLES;
self.move_flags &~= FL_ONGROUND;
self.solid = SOLID_TRIGGER;
+ //self.effects = EF_NOMODELFLAGS;
// sv_gameplayfix_delayprojectiles
if(!self.move_time)
@@ -94,7 +109,7 @@
else
self.move_time = max(self.move_time, time);
- if(self.count & 0x80)
+ if(!(self.count & 0x80))
InterpolateOrigin_Undo();
if(f & 1)
@@ -118,6 +133,7 @@
{
self.cnt = ReadByte();
+ self.scale = 1;
switch(self.cnt)
{
case PROJECTILE_ELECTRO: setmodel(self, "models/ebomb.mdl"); break;
@@ -130,14 +146,18 @@
case PROJECTILE_GRENADE_BOUNCING: setmodel(self, "models/grenademodel.md3"); break;
case PROJECTILE_LASER: setmodel(self, "models/laser.mdl"); break;
case PROJECTILE_HLAC: setmodel(self, "models/hlac_bullet.md3"); break;
+ case PROJECTILE_SEEKER: setmodel(self, "models/tagrocket.md3"); self.scale = 2; break;
+ case PROJECTILE_FLAC: setmodel(self, "models/hagarmissile.mdl"); self.scale = 0.4; break;
+ case PROJECTILE_PORTO_RED: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
+ case PROJECTILE_PORTO_BLUE: setmodel(self, "models/grenademodel.md3"); self.scale = 4; break;
default:
error("Received invalid CSQC projectile, can't work with this!");
break;
}
- self.scale = 1;
self.mins = '0 0 0';
self.maxs = '0 0 0';
+ self.colormod = '0 0 0';
self.move_movetype = MOVETYPE_TOSS;
self.move_moveflags = MOVEFLAG_STOPONIMPACT;
@@ -161,22 +181,28 @@
self.mins = '-2 -2 -2';
self.maxs = '2 2 2';
break;
- case PROJECTILE_GRENADE:
- self.mins = '0 0 0';
- self.maxs = '0 0 0';
- break;
case PROJECTILE_GRENADE_BOUNCING:
self.mins = '0 0 -3';
self.maxs = '0 0 -3';
self.move_movetype = MOVETYPE_BOUNCE;
self.move_moveflags = 0;
break;
+ case PROJECTILE_SEEKER:
+ self.mins = '-2 -2 -2';
+ self.maxs = '2 2 2';
+ break;
+ case PROJECTILE_PORTO_RED:
+ self.colormod = '2 1 1';
+ break;
+ case PROJECTILE_PORTO_BLUE:
+ self.colormod = '1 1 2';
+ break;
default:
break;
}
}
- if(self.count)
+ if(!(self.count & 0x80))
InterpolateOrigin_Note();
self.draw = Projectile_Draw;
@@ -194,4 +220,9 @@
precache_model("models/grenademodel.md3");
precache_model("models/laser.mdl");
precache_model("models/hlac_bullet.md3");
+ precache_model("models/hlac_bullet.md3");
+ precache_model("models/tagrocket.md3");
+ precache_model("models/hagarmissile.mdl");
+ precache_model("models/grenademodel.md3");
+ precache_model("models/grenademodel.md3");
}
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/common/constants.qh 2009-01-16 21:11:07 UTC (rev 5581)
@@ -364,3 +364,7 @@
float PROJECTILE_GRENADE_BOUNCING = 8;
float PROJECTILE_LASER = 9;
float PROJECTILE_HLAC = 10;
+float PROJECTILE_SEEKER = 11;
+float PROJECTILE_FLAC = 12;
+float PROJECTILE_PORTO_RED = 13;
+float PROJECTILE_PORTO_BLUE = 14;
Modified: trunk/data/qcsrc/server/csqcprojectile.qc
===================================================================
--- trunk/data/qcsrc/server/csqcprojectile.qc 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/csqcprojectile.qc 2009-01-16 21:11:07 UTC (rev 5581)
@@ -46,6 +46,7 @@
e.gravity = 0;
e.csqcprojectile_type = type;
+ e.SendFlags = 0xFFFFFF;
}
void UpdateCSQCProjectile(entity e)
Modified: trunk/data/qcsrc/server/w_porto.qc
===================================================================
--- trunk/data/qcsrc/server/w_porto.qc 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/w_porto.qc 2009-01-16 21:11:07 UTC (rev 5581)
@@ -123,6 +123,7 @@
trace_plane_normal = norm;
W_Porto_Fail(0);
}
+ CSQCProjectile(self, TRUE, PROJECTILE_PORTO_BLUE); // change type
}
else
{
@@ -147,7 +148,6 @@
W_Porto_Fail(0);
}
}
-
}
void W_Porto_Attack (void)
@@ -193,6 +193,8 @@
gren.right_vector = v_right;
gren.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
+
+ CSQCProjectile(gren, TRUE, PROJECTILE_PORTO_RED);
}
void spawnfunc_weapon_porto (void)
Modified: trunk/data/qcsrc/server/w_seeker.qc
===================================================================
--- trunk/data/qcsrc/server/w_seeker.qc 2009-01-16 20:22:51 UTC (rev 5580)
+++ trunk/data/qcsrc/server/w_seeker.qc 2009-01-16 21:11:07 UTC (rev 5581)
@@ -123,6 +123,7 @@
self.angles = vectoangles(self.velocity); // turn model in the new flight direction
self.nextthink = time + 0.05;
+ UpdateCSQCProjectile(self);
}
@@ -162,6 +163,8 @@
else
self.movetype = MOVETYPE_FLYMISSILE;
}
+
+ UpdateCSQCProjectile(self);
}
void Seeker_Fire_Missile(vector f_org)
@@ -216,6 +219,7 @@
missile.switchweapon = vlen(missile.velocity);
missile.angles = vectoangles (missile.velocity);
+ CSQCProjectile(missile, FALSE, PROJECTILE_SEEKER);
}
void Seeker_Vollycontroler_Think()
@@ -460,6 +464,8 @@
missile.angles = vectoangles (missile.velocity);
missile.flags = FL_PROJECTILE;
+
+ CSQCProjectile(missile, TRUE, PROJECTILE_FLAC);
}
void spawnfunc_weapon_seeker (void)
More information about the nexuiz-commits
mailing list