Enhanced pathing for floaters
Their checks are now 2D instead of 3D.
This commit is contained in:
parent
0d9855cfe7
commit
f081ef1850
2 changed files with 26 additions and 2 deletions
|
|
@ -2733,14 +2733,24 @@ void A_DoChase (AActor *actor, bool fastchase, FState *meleestate, FState *missi
|
|||
sight = P_CheckSight(actor, actor->target, SF_SEEPASTBLOCKEVERYTHING);
|
||||
}
|
||||
else sight = 0;
|
||||
|
||||
|
||||
// Out of sight, so keep pathfinding
|
||||
if (sight == 0)
|
||||
{
|
||||
if (pnode && !(actor->goal->flags & MF_AMBUSH))
|
||||
{
|
||||
AActor* temp = actor->target;
|
||||
actor->target = actor->goal;
|
||||
bool reached = (P_CheckMeleeRange(actor));
|
||||
bool reached = false;
|
||||
// 2D checks for floaters, 3D otherwise
|
||||
if (actor->flags & MF_FLOAT)
|
||||
{
|
||||
bool vrange = !!(actor->flags5 & MF5_NOVERTICALMELEERANGE);
|
||||
actor->flags5 |= MF5_NOVERTICALMELEERANGE;
|
||||
P_CheckMeleeRange(actor);
|
||||
if (!vrange) actor->flags5 &= ~(MF5_NOVERTICALMELEERANGE);
|
||||
}
|
||||
else reached = (P_CheckMeleeRange(actor));
|
||||
actor->target = temp;
|
||||
|
||||
if (reached)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue