]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/csqcprojectile.qc
Merge remote branch 'origin/master' into terencehill/infinite_ammo
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / csqcprojectile.qc
index aecdcf7f2f186b7091123ee7253fcb02753edf9f..d5b6697f25932c34ca6936951f6283fd235f9acd 100644 (file)
@@ -3,10 +3,9 @@
 float CSQCProjectile_SendEntity(entity to, float sf)
 {
        float ft, fr;
-       float s;
 
-       // note: flag 0x10 = no trail please
-       sf = sf & 0x1F;
+       // note: flag 0x08 = no trail please (teleport bit)
+       sf = sf & 0x0F;
 
        if(self.csqcprojectile_clientanimate)
                sf |= 0x80; // client animated, not interpolated
@@ -14,7 +13,7 @@ float CSQCProjectile_SendEntity(entity to, float sf)
        if(self.flags & FL_ONGROUND)
                sf |= 0x40;
 
-       if(self.fade_time != 0 && self.fade_rate != 0)
+       if(self.fade_time != 0 || self.fade_rate != 0)
        {
                ft = (self.fade_time - time) / sys_frametime;
                fr = (1 / self.fade_rate) / sys_frametime;
@@ -22,12 +21,8 @@ float CSQCProjectile_SendEntity(entity to, float sf)
                        sf |= 0x20;
        }
 
-       // HACK: subflags for sendflags = 0x80
-
-       s = 0;
-
-       if (self.movetype == MOVETYPE_BOUNCEMISSILE || self.movetype == MOVETYPE_BOUNCE)
-               s |= 1;
+       if(self.gravity != 0)
+               sf |= 0x10;
 
        WriteByte(MSG_ENTITY, ENT_CLIENT_PROJECTILE);
        WriteByte(MSG_ENTITY, sf);
@@ -43,15 +38,8 @@ float CSQCProjectile_SendEntity(entity to, float sf)
                        WriteCoord(MSG_ENTITY, self.velocity_x);
                        WriteCoord(MSG_ENTITY, self.velocity_y);
                        WriteCoord(MSG_ENTITY, self.velocity_z);
-                       WriteCoord(MSG_ENTITY, self.gravity);
-
-                       WriteByte(MSG_ENTITY, s);
-
-                       if (s & 1)
-                       {
-                               WriteCoord(MSG_ENTITY, self.bouncefactor);
-                               WriteCoord(MSG_ENTITY, self.bouncestop);
-                       }
+                       if(sf & 0x10)
+                               WriteCoord(MSG_ENTITY, self.gravity);
                }
 
                if(sf & 0x20)
@@ -101,7 +89,7 @@ void UpdateCSQCProjectile(entity e)
        if(e.SendEntity == CSQCProjectile_SendEntity)
        {
                // send new origin data
-               e.SendFlags |= 1;
+               e.SendFlags |= 0x01;
        }
 }
 
@@ -109,29 +97,9 @@ void UpdateCSQCProjectileAfterTeleport(entity e)
 {
        if(e.SendEntity == CSQCProjectile_SendEntity)
        {
-               // send new origin data and mark as teleported
-               e.SendFlags |= 0x11;
-       }
-}
-
-.void(void) csqcprojectile_oldthink;
-.float csqcprojectile_oldnextthink;
-
-void CSQCProjectile_Update_Think()
-{
-       UpdateCSQCProjectile(self);
-       self.think = self.csqcprojectile_oldthink;
-       self.nextthink = max(time, self.csqcprojectile_oldnextthink);
-}
-
-void UpdateCSQCProjectileNextFrame(entity e)
-{
-       if(e.SendEntity == CSQCProjectile_SendEntity)
-       if(e.think != CSQCProjectile_Update_Think)
-       {
-               e.csqcprojectile_oldthink = e.think;
-               e.csqcprojectile_oldnextthink = e.nextthink;
-               e.think = CSQCProjectile_Update_Think;
-               e.nextthink = time;
+               // send new origin data
+               e.SendFlags |= 0x01;
+               // mark as teleported
+               e.SendFlags |= 0x08;
        }
 }