mirror of
https://github.com/ZDoom/Raze.git
synced 2025-04-07 00:11:22 +00:00
- another large AI cleanup batch
This commit is contained in:
parent
ea04f5f800
commit
230913bad3
15 changed files with 111 additions and 93 deletions
|
@ -345,9 +345,11 @@ static void beastThinkSwimChase(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &beastSwimSearch);
|
||||
|
@ -358,10 +360,10 @@ static void beastThinkSwimChase(DBloodActor* actor)
|
|||
aiNewState(actor, &beastSwimSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
|
|
|
@ -172,18 +172,19 @@ static void eelThinkPonder(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &eelSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) << 2;
|
||||
int height2 = (getDudeInfo(target->spr.type)->eyeHeight * target->spr.yrepeat) << 2;
|
||||
int top, bottom;
|
||||
|
@ -273,9 +274,10 @@ static void eelThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &eelSearch);
|
||||
|
@ -286,10 +288,10 @@ static void eelThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &eelSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
|
|
|
@ -156,9 +156,11 @@ static void burnThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
switch (actor->spr.type)
|
||||
|
@ -189,10 +191,10 @@ static void burnThinkChase(DBloodActor* actor)
|
|||
}
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -125,9 +125,10 @@ static void calebThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
if (pXSector && pXSector->Underwater)
|
||||
|
@ -147,10 +148,10 @@ static void calebThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &tinycalebSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
@ -160,6 +161,8 @@ static void calebThinkChase(DBloodActor* actor)
|
|||
actor->dudeSlope = nDist == 0 ? 0 : DivScale(target->int_pos().Z - actor->int_pos().Z, nDist, 10);
|
||||
if (nDist < 0x599 && abs(nDeltaAngle) < 28)
|
||||
{
|
||||
int dx = dvec.X * worldtoint;
|
||||
int dy = dvec.Y * worldtoint;
|
||||
int hit = HitScan(actor, actor->int_pos().Z, dx, dy, 0, CLIPMASK1, 0);
|
||||
switch (hit)
|
||||
{
|
||||
|
@ -231,9 +234,10 @@ static void calebThinkSwimChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &tinycalebSwimSearch);
|
||||
|
@ -244,10 +248,10 @@ static void calebThinkSwimChase(DBloodActor* actor)
|
|||
aiNewState(actor, &tinycalebSwimSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
|
|
|
@ -341,9 +341,10 @@ static void cerberusThinkChase(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
|
||||
if (target->xspr.health == 0) {
|
||||
switch (actor->spr.type) {
|
||||
|
@ -369,10 +370,10 @@ static void cerberusThinkChase(DBloodActor* actor)
|
|||
return;
|
||||
}
|
||||
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
@ -402,6 +403,8 @@ static void cerberusThinkChase(DBloodActor* actor)
|
|||
}
|
||||
else if (nDist < 0x200 && abs(nDeltaAngle) < 85)
|
||||
{
|
||||
int dx = dvec.X * worldtoint;
|
||||
int dy = dvec.Y * worldtoint;
|
||||
int hit = HitScan(actor, actor->int_pos().Z, dx, dy, 0, CLIPMASK1, 0);
|
||||
switch (actor->spr.type) {
|
||||
case kDudeCerberusTwoHead:
|
||||
|
|
|
@ -218,9 +218,10 @@ static void gillThinkSwimChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (actor->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &gillBeastSwimSearch);
|
||||
|
@ -231,10 +232,10 @@ static void gillThinkSwimChase(DBloodActor* actor)
|
|||
aiNewState(actor, &gillBeastSwimSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
int top, bottom;
|
||||
GetActorExtents(actor, &top, &bottom);
|
||||
|
|
|
@ -87,9 +87,10 @@ static void handThinkChase(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &handSearch);
|
||||
|
@ -100,10 +101,9 @@ static void handThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &handSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -104,9 +104,10 @@ static void houndThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &houndSearch);
|
||||
|
@ -117,10 +118,10 @@ static void houndThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &houndSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -71,9 +71,10 @@ static void innocThinkChase(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &innocentSearch);
|
||||
|
@ -84,10 +85,10 @@ static void innocThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &innocentSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -180,9 +180,10 @@ static void aiPodChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0) {
|
||||
|
||||
switch (actor->spr.type) {
|
||||
|
@ -197,10 +198,9 @@ static void aiPodChase(DBloodActor* actor)
|
|||
}
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -82,9 +82,10 @@ static void ratThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &ratSearch);
|
||||
|
@ -95,10 +96,10 @@ static void ratThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &ratSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -190,9 +190,10 @@ static void spidThinkChase(DBloodActor* actor)
|
|||
DUDEINFO* pDudeInfo = getDudeInfo(actor->spr.type);
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &spidSearch);
|
||||
|
@ -203,9 +204,9 @@ static void spidThinkChase(DBloodActor* actor)
|
|||
aiNewState(actor, &spidSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist) {
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -289,9 +289,10 @@ static void sub_72934(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &tchernobogSearch);
|
||||
|
@ -302,10 +303,10 @@ static void sub_72934(DBloodActor* actor)
|
|||
aiNewState(actor, &tchernobogSearch);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -112,9 +112,11 @@ static void zombaThinkChase(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &zombieASearch);
|
||||
|
@ -129,10 +131,10 @@ static void zombaThinkChase(DBloodActor* actor)
|
|||
if (!VanillaMode() && actor->spr.type == kDudeZombieAxeBuried)
|
||||
actor->spr.type = kDudeZombieAxeNormal;
|
||||
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
@ -162,9 +164,10 @@ static void zombaThinkPonder(DBloodActor* actor)
|
|||
if (!actor->ValidateTarget(__FUNCTION__)) return;
|
||||
auto target = actor->GetTarget();
|
||||
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
aiChooseDirection(actor, getangle(dx, dy));
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int nAngle = getangle(dvec);
|
||||
int nDist = approxDist(dvec);
|
||||
aiChooseDirection(actor, nAngle);
|
||||
if (target->xspr.health == 0)
|
||||
{
|
||||
aiNewState(actor, &zombieASearch);
|
||||
|
@ -175,10 +178,10 @@ static void zombaThinkPonder(DBloodActor* actor)
|
|||
aiNewState(actor, &zombieAGoto);
|
||||
return;
|
||||
}
|
||||
int nDist = approxDist(dx, dy);
|
||||
|
||||
if (nDist <= pDudeInfo->seeDist)
|
||||
{
|
||||
int nDeltaAngle = ((getangle(dx, dy) + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
int nDeltaAngle = ((nAngle + 1024 - actor->int_ang()) & 2047) - 1024;
|
||||
double height = (pDudeInfo->eyeHeight * actor->spr.yrepeat) * REPEAT_SCALE;
|
||||
if (cansee(target->spr.pos, target->sector(), actor->spr.pos.plusZ(-height), actor->sector()))
|
||||
{
|
||||
|
|
|
@ -5359,10 +5359,9 @@ bool aiFightIsMeleeUnit(DBloodActor* dude)
|
|||
|
||||
int aiFightGetTargetDist(DBloodActor* actor, DUDEINFO* pDudeInfo, DBloodActor* target)
|
||||
{
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
int dist = approxDist(dvec);
|
||||
|
||||
int dist = approxDist(dx, dy);
|
||||
if (dist <= pDudeInfo->meleeDist) return 0;
|
||||
if (dist >= pDudeInfo->seeDist) return 13;
|
||||
if (dist <= pDudeInfo->seeDist / 12) return 1;
|
||||
|
@ -5387,11 +5386,8 @@ int aiFightGetTargetDist(DBloodActor* actor, DUDEINFO* pDudeInfo, DBloodActor* t
|
|||
|
||||
int aiFightGetFineTargetDist(DBloodActor* actor, DBloodActor* target)
|
||||
{
|
||||
int dx = target->int_pos().X - actor->int_pos().X;
|
||||
int dy = target->int_pos().Y - actor->int_pos().Y;
|
||||
|
||||
int dist = approxDist(dx, dy);
|
||||
return dist;
|
||||
auto dvec = target->spr.pos.XY() - actor->spr.pos.XY();
|
||||
return approxDist(dvec);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in a new issue