mirror of
https://github.com/ZDoom/Raze.git
synced 2025-02-07 07:21:10 +00:00
- the third block.
This commit is contained in:
parent
ff29570675
commit
dc4c632b08
1 changed files with 15 additions and 16 deletions
|
@ -6905,40 +6905,39 @@ void useTargetChanger(DBloodActor* sourceactor, DBloodActor* actor)
|
||||||
int mDist = 3;
|
int mDist = 3;
|
||||||
if (aiFightIsMeleeUnit(actor)) mDist = 2;
|
if (aiFightIsMeleeUnit(actor)) mDist = 2;
|
||||||
|
|
||||||
if (pXSprite->target_i >= 0 && aiFightGetTargetDist(actor, pDudeInfo, &bloodActors[pXSprite->target_i]) < mDist)
|
if (targetactor != nullptr && aiFightGetTargetDist(actor, pDudeInfo, targetactor) < mDist)
|
||||||
{
|
{
|
||||||
if (!isActive(actor)) aiActivateDude(actor);
|
if (!isActive(actor)) aiActivateDude(actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// lets try to look for target that fits better by distance
|
// lets try to look for target that fits better by distance
|
||||||
else if ((PlayClock & 256) != 0 && (pXSprite->target_i < 0 || aiFightGetTargetDist(actor, pDudeInfo, &bloodActors[pXSprite->target_i]) >= mDist))
|
else if ((PlayClock & 256) != 0 && (targetactor == nullptr || aiFightGetTargetDist(actor, pDudeInfo, targetactor) >= mDist))
|
||||||
{
|
{
|
||||||
auto targactor = aiFightGetTargetInRange(actor, 0, mDist, pXSource->data1, pXSource->data2);
|
auto newtargactor = aiFightGetTargetInRange(actor, 0, mDist, pXSource->data1, pXSource->data2);
|
||||||
if (targactor != nullptr)
|
if (newtargactor != nullptr)
|
||||||
{
|
{
|
||||||
pTarget = &targactor->s();
|
auto pNewTarg = &newtargactor->s();
|
||||||
pXTarget = &targactor->x();
|
auto pXNewTarg = &newtargactor->x();
|
||||||
|
|
||||||
// Make prev target not aim in dude
|
// Make prev target not aim in dude
|
||||||
if (pXSprite->target_i > -1)
|
if (targetactor)
|
||||||
{
|
{
|
||||||
spritetype* prvTarget = &sprite[pXSprite->target_i];
|
aiSetTarget(targetactor, targetactor->s().x, targetactor->s().y, targetactor->s().z);
|
||||||
aiSetTarget_(&xsprite[prvTarget->extra], prvTarget->x, prvTarget->y, prvTarget->z);
|
if (!isActive(newtargactor))
|
||||||
if (!isActive(pTarget->index))
|
aiActivateDude(newtargactor);
|
||||||
aiActivateDude(&bloodActors[pXTarget->reference]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Change target for dude
|
// Change target for dude
|
||||||
aiSetTarget_(pXSprite, pTarget->index);
|
aiSetTarget(actor, newtargactor);
|
||||||
if (!isActive(actor))
|
if (!isActive(actor))
|
||||||
aiActivateDude(actor);
|
aiActivateDude(actor);
|
||||||
|
|
||||||
// ...and change target of target to dude to force it fight
|
// ...and change target of target to dude to force it fight
|
||||||
if (pXSource->data3 > 0 && pXTarget->target_i != pSprite->index)
|
if (pXSource->data3 > 0 && newtargactor->GetTarget() != actor)
|
||||||
{
|
{
|
||||||
aiSetTarget_(pXTarget, pSprite->index);
|
aiSetTarget(newtargactor, actor);
|
||||||
if (!isActive(pTarget->index))
|
if (!isActive(newtargactor))
|
||||||
aiActivateDude(&bloodActors[pXTarget->reference]);
|
aiActivateDude(newtargactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue