r5605 - in trunk/data/qcsrc: client common server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sun Jan 18 15:22:35 EST 2009
Author: div0
Date: 2009-01-18 15:22:34 -0500 (Sun, 18 Jan 2009)
New Revision: 5605
Modified:
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/client/damage.qc
trunk/data/qcsrc/client/gibs.qc
trunk/data/qcsrc/client/progs.src
trunk/data/qcsrc/common/constants.qh
trunk/data/qcsrc/server/clientcommands.qc
trunk/data/qcsrc/server/g_casings.qc
trunk/data/qcsrc/server/g_damage.qc
trunk/data/qcsrc/server/g_triggers.qc
Log:
csqc casings
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/Main.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -136,6 +136,7 @@
Projectile_Precache();
GibSplash_Precache();
+ Casings_Precache();
}
// CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@ -524,6 +525,8 @@
Ent_GibSplash();
else if(self.enttype == ENT_CLIENT_DAMAGEINFO)
Ent_DamageInfo();
+ else if(self.enttype == ENT_CLIENT_CASING)
+ Ent_Casing();
else
error(strcat("unknown entity type in CSQC_Ent_Update: ", ftos(self.enttype), "\n"));
Modified: trunk/data/qcsrc/client/damage.qc
===================================================================
--- trunk/data/qcsrc/client/damage.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/damage.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -23,8 +23,16 @@
thisdmg = vlen(self.origin - org) / rad;
if(thisdmg >= 1)
continue;
- thisdmg = dmg + (edge - dmg) * thisdmg;
- thisforce = vlen(force) * normalize(self.origin - org);
+ if(dmg)
+ {
+ thisdmg = dmg + (edge - dmg) * thisdmg;
+ thisforce = vlen(force) * (thisdmg / dmg) * normalize(self.origin - org);
+ }
+ else
+ {
+ thisdmg = 0;
+ thisforce = vlen(force) * normalize(self.origin - org);
+ }
}
else
{
Modified: trunk/data/qcsrc/client/gibs.qc
===================================================================
--- trunk/data/qcsrc/client/gibs.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/gibs.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -1,6 +1,18 @@
+void SUB_RemoveOnNoImpact()
+{
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
+ remove(self);
+}
+
void Gib_Touch()
{
// TODO maybe bounce of walls, make more gibs, etc.
+
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_NOIMPACT)
+ {
+ remove(self);
+ return;
+ }
sound(self, CHAN_PAIN, strcat("misc/gib_splat0", ftos(floor(random() * 4 + 1)), ".wav"), VOL_BASE, ATTN_NORM);
pointparticles(particleeffectnum("blood"), self.origin + '0 0 1', '0 0 30', 10);
@@ -48,6 +60,8 @@
gib.draw = Gib_Draw;
if(destroyontouch)
gib.move_touch = Gib_Touch;
+ else
+ gib.move_touch = SUB_RemoveOnNoImpact;
gib.move_origin = gib.origin = org;
gib.move_velocity = v + randomvec();
@@ -77,7 +91,6 @@
isgentle = (type & 0x80 || cvar("cl_gentle"));
type = type & 0x7F;
-
gibfactor = 1 - cvar("cl_nogibs");
if(gibfactor <= 0)
return;
Modified: trunk/data/qcsrc/client/progs.src
===================================================================
--- trunk/data/qcsrc/client/progs.src 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/client/progs.src 2009-01-18 20:22:34 UTC (rev 5605)
@@ -32,6 +32,7 @@
projectile.qc
gibs.qc
damage.qc
+casings.qc
Main.qc
View.qc
Modified: trunk/data/qcsrc/common/constants.qh
===================================================================
--- trunk/data/qcsrc/common/constants.qh 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/common/constants.qh 2009-01-18 20:22:34 UTC (rev 5605)
@@ -57,6 +57,7 @@
const float ENT_CLIENT_PROJECTILE = 12;
const float ENT_CLIENT_GIBSPLASH = 13;
const float ENT_CLIENT_DAMAGEINFO = 14;
+const float ENT_CLIENT_CASING = 15;
const float SPRITERULE_DEFAULT = 0;
const float SPRITERULE_TEAMPLAY = 1;
Modified: trunk/data/qcsrc/server/clientcommands.qc
===================================================================
--- trunk/data/qcsrc/server/clientcommands.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/clientcommands.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -36,23 +36,22 @@
{
nagger = spawn();
Net_LinkEntity(nagger);
- nagger.SendFlags = 128;
nagger.SendEntity = Nagger_SendEntity;
}
void Nagger_VoteChanged()
{
if(nagger)
- nagger.SendFlags = 128;
+ nagger.SendFlags |= 128;
}
void Nagger_VoteCountChanged()
{
if(nagger)
- nagger.SendFlags = 1;
+ nagger.SendFlags |= 1;
}
void Nagger_ReadyCounted()
{
if(nagger)
- nagger.SendFlags = 1;
+ nagger.SendFlags |= 1;
}
void ReadyCount();
Modified: trunk/data/qcsrc/server/g_casings.qc
===================================================================
--- trunk/data/qcsrc/server/g_casings.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_casings.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -1,3 +1,4 @@
+#if 0
void casingtouch()
{
PROJECTILE_TOUCH;
@@ -105,3 +106,38 @@
setsize (e, '0 0 -1', '0 0 -1');
setorigin (e, org);
};
+#endif
+
+float Casing_SendEntity(entity to, float sf)
+{
+ WriteByte(MSG_ENTITY, ENT_CLIENT_CASING);
+ WriteByte(MSG_ENTITY, self.state); // actually type
+ WriteCoord(MSG_ENTITY, self.origin_x);
+ WriteCoord(MSG_ENTITY, self.origin_y);
+ WriteCoord(MSG_ENTITY, self.origin_z);
+ WriteShort(MSG_ENTITY, self.oldorigin_x); // acrually compressed velocity
+ WriteByte(MSG_ENTITY, self.angles_x * 256 / 360);
+ WriteByte(MSG_ENTITY, self.angles_y * 256 / 360);
+ WriteByte(MSG_ENTITY, self.angles_z * 256 / 360);
+ return TRUE;
+}
+
+void SpawnCasing(vector org, vector vel, float randomvel, vector ang, vector avel, float randomavel, float casingtype)
+{
+ entity e;
+
+ e = spawn();
+ e.state = casingtype;
+ e.origin = org;
+ e.velocity = vel;
+ e.angles = ang;
+
+ e.oldorigin_x = compressShortVector(e.velocity);
+
+ setmodel(e, "null");
+ e.SendEntity = Casing_SendEntity;
+
+ e.nextthink = time + 0.2;
+ e.think = SUB_Remove;
+ // 0.2s should be enough time for all clients to receive this ent once, do the gibbage and be done with it
+}
Modified: trunk/data/qcsrc/server/g_damage.qc
===================================================================
--- trunk/data/qcsrc/server/g_damage.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_damage.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -956,7 +956,7 @@
if(vlen(force) == 0)
force = '0 0 -1';
else
- force = normalize(force) * forceintensity;
+ force = normalize(force);
Damage_DamageInfo(blastorigin, coredamage, edgedamage, rad, forceintensity * force, deathtype);
}
Modified: trunk/data/qcsrc/server/g_triggers.qc
===================================================================
--- trunk/data/qcsrc/server/g_triggers.qc 2009-01-18 19:22:38 UTC (rev 5604)
+++ trunk/data/qcsrc/server/g_triggers.qc 2009-01-18 20:22:34 UTC (rev 5605)
@@ -597,7 +597,6 @@
self.effects = EF_NODEPTHTEST;
self.SendEntity = pointparticles_SendEntity;
- self.SendFlags = 7;
if(!self.modelindex)
{
vector misave, masave;
@@ -982,7 +981,6 @@
self.effects = EF_NODEPTHTEST;
self.SendEntity = laser_SendEntity;
- self.SendFlags = 15;
setmodel(self, "null");
self.mangle = self.angles;
More information about the nexuiz-commits
mailing list