]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
MOVETYPE_STEP entities should now fall when support is removed (even if it is not...
authorlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 14 Mar 2002 00:04:15 +0000 (00:04 +0000)
committerlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Thu, 14 Mar 2002 00:04:15 +0000 (00:04 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@1645 d7cf8633-e32d-0410-b094-e92efae38249

sv_phys.c

index bfda9590876112449eb343865f1397ba15995ba0..b8297dd86091ce76bdbc3e690e99204d67d01a4b 100644 (file)
--- a/sv_phys.c
+++ b/sv_phys.c
@@ -1340,23 +1340,39 @@ will fall if the floor is pulled out from under them.
 */
 void SV_Physics_Step (edict_t *ent)
 {
-       qboolean        hitsound;
+       int flags, fall, hitsound;
 
-// freefall if not onground
-       if ( ! ((int)ent->v.flags & (FL_ONGROUND | FL_FLY | FL_SWIM) ) )
+       // freefall if not fly/swim
+       fall = true;
+       flags = (int)ent->v.flags;
+       if (flags & (FL_FLY | FL_SWIM))
+       {
+               if (flags & FL_FLY)
+                       fall = false;
+               else if ((flags & FL_SWIM) && SV_PointContents(ent->v.origin) != CONTENTS_EMPTY)
+                       fall = false;
+       }
+
+       if (fall)
        {
                if (ent->v.velocity[2] < sv_gravity.value*-0.1)
+               {
                        hitsound = true;
+                       if (flags & FL_ONGROUND)
+                               hitsound = false;
+               }
                else
                        hitsound = false;
 
                SV_AddGravity (ent);
                SV_CheckVelocity (ent);
                SV_FlyMove (ent, sv.frametime, NULL);
-               SV_LinkEdict (ent, true);
+               SV_LinkEdict (ent, false);
 
-               if ( (int)ent->v.flags & FL_ONGROUND )  // just hit ground
+               // just hit ground
+               if ((int)ent->v.flags & FL_ONGROUND)
                {
+                       VectorClear(ent->v.velocity);
                        if (hitsound)
                                SV_StartSound (ent, 0, "demon/dland2.wav", 255, 1);
                }