- Fixed: A_Respawn and P_NightmareRespawn() should not check for collision with world geometry.

The initial spawn did not, so this can prevent respawns of things that were initially
  spawned if they happen to intersect a wall.
- Fixed: Don't respawn actors inside the floor.
- Fixed: The final calls to P_FindFloorCeiling() in P_NightmareRespawn() and A_RestoreSpecialPosition
  also need to pass true as the second parameter. (Because this parameter is onlyspawnpos, not
  onlymidtex.)

SVN r3518 (trunk)
This commit is contained in:
Randy Heit 2012-04-06 04:46:45 +00:00
commit 5358fd594b
5 changed files with 39 additions and 12 deletions

View file

@ -1256,7 +1256,7 @@ bool PIT_CheckThing (AActor *thing, FCheckPosition &tm)
//
//==========================================================================
bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm)
bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm, bool actorsonly)
{
sector_t *newsec;
AActor *thingblocker;
@ -1399,7 +1399,7 @@ bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm)
thing->BlockingMobj = NULL;
thing->height = realheight;
if (thing->flags & MF_NOCLIP)
if (actorsonly || (thing->flags & MF_NOCLIP))
return (thing->BlockingMobj = thingblocker) == NULL;
FBlockLinesIterator it(box);
@ -1435,10 +1435,10 @@ bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, FCheckPosition &tm)
return (thing->BlockingMobj = thingblocker) == NULL;
}
bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y)
bool P_CheckPosition (AActor *thing, fixed_t x, fixed_t y, bool actorsonly)
{
FCheckPosition tm;
return P_CheckPosition(thing, x, y, tm);
return P_CheckPosition(thing, x, y, tm, actorsonly);
}
//----------------------------------------------------------------------------