Sign in to follow this  
Followers 0

DOGFLY.DEH doesn't work with comp_overunder

They normally jump and bounce two days ago, but now they don't. They just stand in front of the obstacle over which they used to jump (e.g., the raised lamps in the large room at the end of MAP01, or the switch platforms with the four zombies in the same map).

See next post for reason.

Share this post


Link to post

Found it: "disabled 3D clipping" set to no prevents them from jumping, as it yanks them back to the ground.

in p_enemy.c's P_Move:

   // haleyjd: OVER_UNDER:
   // [RH] Instead of yanking non-floating monsters to the ground,
   // let gravity drop them down, unless they're moving down a step.
   if(!comp[comp_overunder])
   {
      if(!(actor->flags & MF_NOGRAVITY) && actor->z > actor->floorz && 
         !(actor->intflags & MIF_ONMOBJ))
      {
         if (actor->z > actor->floorz + 24*FRACUNIT)
            return false;
         else
            actor->z = actor->floorz;
      }
   }
Since the floatspeed jump is worth 4*FRACUNIT, it's lesser than the step height and so they are yanked to the ground. I guess the reason is that the test for floaters is made on the MF_NOGRAVITY flag rather than the MF_FLOAT flag.

Share this post


Link to post

Thanks I'll look into how to reconcile these two features. The code in question is obviously from ZDoom, so it shouldn't be a big surprise that it has some trouble with the more exotic MBF features ;) Getting TOUCHY objects to work with the 3D object clipping was also quite an adventure.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0