mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-11 07:12:16 +00:00
- fixed: P_CheckMissileSpawn's setup for P_TryMove must be done in a way that allows detecting portal transitions.
By setting the position before the call any portal lying between the actual spawn point and the check position would be skipped.
This commit is contained in:
parent
78061f1cf7
commit
55df3a91ec
1 changed files with 7 additions and 2 deletions
|
@ -6718,6 +6718,8 @@ bool P_CheckMissileSpawn (AActor* th, double maxdist)
|
||||||
th->tics = 1;
|
th->tics = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DVector3 newpos = th->Pos();
|
||||||
|
|
||||||
if (maxdist > 0)
|
if (maxdist > 0)
|
||||||
{
|
{
|
||||||
// move a little forward so an angle can be computed if it immediately explodes
|
// move a little forward so an angle can be computed if it immediately explodes
|
||||||
|
@ -6731,7 +6733,7 @@ bool P_CheckMissileSpawn (AActor* th, double maxdist)
|
||||||
advance *= 0.5f;
|
advance *= 0.5f;
|
||||||
}
|
}
|
||||||
while (advance.XY().LengthSquared() >= maxsquared);
|
while (advance.XY().LengthSquared() >= maxsquared);
|
||||||
th->SetXYZ(th->Pos() + advance);
|
newpos += advance;
|
||||||
}
|
}
|
||||||
|
|
||||||
FCheckPosition tm(!!(th->flags2 & MF2_RIP));
|
FCheckPosition tm(!!(th->flags2 & MF2_RIP));
|
||||||
|
@ -6755,7 +6757,9 @@ bool P_CheckMissileSpawn (AActor* th, double maxdist)
|
||||||
bool MBFGrenade = (!(th->flags & MF_MISSILE) || (th->BounceFlags & BOUNCE_MBF));
|
bool MBFGrenade = (!(th->flags & MF_MISSILE) || (th->BounceFlags & BOUNCE_MBF));
|
||||||
|
|
||||||
// killough 3/15/98: no dropoff (really = don't care for missiles)
|
// killough 3/15/98: no dropoff (really = don't care for missiles)
|
||||||
if (!(P_TryMove (th, th->Pos(), false, NULL, tm, true)))
|
auto oldf2 = th->flags2;
|
||||||
|
th->flags2 &= ~MF2_MCROSS; // The following check is not supposed to activate missile triggers.
|
||||||
|
if (!(P_TryMove (th, newpos, false, NULL, tm, true)))
|
||||||
{
|
{
|
||||||
// [RH] Don't explode ripping missiles that spawn inside something
|
// [RH] Don't explode ripping missiles that spawn inside something
|
||||||
if (th->BlockingMobj == NULL || !(th->flags2 & MF2_RIP) || (th->BlockingMobj->flags5 & MF5_DONTRIP))
|
if (th->BlockingMobj == NULL || !(th->flags2 & MF2_RIP) || (th->BlockingMobj->flags5 & MF5_DONTRIP))
|
||||||
|
@ -6778,6 +6782,7 @@ bool P_CheckMissileSpawn (AActor* th, double maxdist)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
th->flags2 = oldf2;
|
||||||
th->ClearInterpolation();
|
th->ClearInterpolation();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue