mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-28 15:02:01 +00:00
- Fixed: A_Respawn also needs to use P_SpawnMapThing-like sector finding. Since it is exactly the
same situation A_RestoreSpecialPosition, it now just calls that to do the moving. This also means it is no longer limited to respawning things on the floor. SVN r3514 (trunk)
This commit is contained in:
parent
498a432c8d
commit
64f0e0e984
2 changed files with 10 additions and 10 deletions
|
@ -49,4 +49,3 @@ DEFINE_ACTION_FUNCTION(AActor, A_BarrelDestroy)
|
||||||
self->Destroy ();
|
self->Destroy ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2625,6 +2625,8 @@ static void CheckStopped(AActor *self)
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
|
extern void AF_A_RestoreSpecialPosition(DECLARE_PARAMINFO);
|
||||||
|
|
||||||
enum RS_Flags
|
enum RS_Flags
|
||||||
{
|
{
|
||||||
RSF_FOG=1,
|
RSF_FOG=1,
|
||||||
|
@ -2637,24 +2639,20 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn)
|
||||||
ACTION_PARAM_START(1);
|
ACTION_PARAM_START(1);
|
||||||
ACTION_PARAM_INT(flags, 0);
|
ACTION_PARAM_INT(flags, 0);
|
||||||
|
|
||||||
fixed_t x = self->SpawnPoint[0];
|
|
||||||
fixed_t y = self->SpawnPoint[1];
|
|
||||||
bool oktorespawn = false;
|
bool oktorespawn = false;
|
||||||
sector_t *sec;
|
|
||||||
|
|
||||||
self->flags |= MF_SOLID;
|
self->flags |= MF_SOLID;
|
||||||
sec = P_PointInSector (x, y);
|
|
||||||
self->height = self->GetDefault()->height;
|
self->height = self->GetDefault()->height;
|
||||||
|
CALL_ACTION(A_RestoreSpecialPosition, self);
|
||||||
|
|
||||||
if (flags & RSF_TELEFRAG)
|
if (flags & RSF_TELEFRAG)
|
||||||
{
|
{
|
||||||
// [KS] DIE DIE DIE DIE erm *ahem* =)
|
// [KS] DIE DIE DIE DIE erm *ahem* =)
|
||||||
if (P_TeleportMove (self, x, y, sec->floorplane.ZatPoint (x, y), true)) oktorespawn = true;
|
oktorespawn = P_TeleportMove(self, self->x, self->y, self->z, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->SetOrigin (x, y, sec->floorplane.ZatPoint (x, y));
|
oktorespawn = P_TestMobjLocation(self);
|
||||||
if (P_TestMobjLocation (self)) oktorespawn = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oktorespawn)
|
if (oktorespawn)
|
||||||
|
@ -2687,9 +2685,12 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_Respawn)
|
||||||
|
|
||||||
if (flags & RSF_FOG)
|
if (flags & RSF_FOG)
|
||||||
{
|
{
|
||||||
Spawn<ATeleportFog> (x, y, self->z + TELEFOGHEIGHT, ALLOW_REPLACE);
|
Spawn<ATeleportFog> (self->x, self->y, self->z + TELEFOGHEIGHT, ALLOW_REPLACE);
|
||||||
|
}
|
||||||
|
if (self->CountsAsKill())
|
||||||
|
{
|
||||||
|
level.total_monsters++;
|
||||||
}
|
}
|
||||||
if (self->CountsAsKill()) level.total_monsters++;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue