- 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:
parent
14730a89be
commit
5358fd594b
5 changed files with 39 additions and 12 deletions
|
|
@ -2649,10 +2649,21 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn)
|
|||
{
|
||||
// [KS] DIE DIE DIE DIE erm *ahem* =)
|
||||
oktorespawn = P_TeleportMove(self, self->x, self->y, self->z, true);
|
||||
if (oktorespawn)
|
||||
{ // Need to do this over again, since P_TeleportMove() will redo
|
||||
// it with the proper point-on-side calculation.
|
||||
self->UnlinkFromWorld();
|
||||
self->LinkToWorld(true);
|
||||
sector_t *sec = self->Sector;
|
||||
self->dropoffz =
|
||||
self->floorz = sec->floorplane.ZatPoint(self->x, self->y);
|
||||
self->ceilingz = sec->ceilingplane.ZatPoint(self->x, self->y);
|
||||
P_FindFloorCeiling(self, true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
oktorespawn = P_TestMobjLocation(self);
|
||||
oktorespawn = P_CheckPosition(self, self->x, self->z, true);
|
||||
}
|
||||
|
||||
if (oktorespawn)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue