Skip to content

Commit

Permalink
Fix guard behavior.
Browse files Browse the repository at this point in the history
Units would break out of guarding automatically and start attacking (DORDER_ATTACK).
This prevented units from only moving a few tiles and instead chased whatever came
into weapon range much like a player actually clicked on an object.
  • Loading branch information
KJeff01 committed Mar 24, 2019
1 parent 4b974e5 commit 2fb1727
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
4 changes: 2 additions & 2 deletions src/action.cpp
Expand Up @@ -1591,7 +1591,7 @@ void actionUpdateDroid(DROID *psDroid)
if (!visibleObject(psDroid, psDroid->psActionTarget[0], false)
|| xdiff * xdiff + ydiff * ydiff >= rangeSq)
{
if (secondaryGetState(psDroid, DSO_HALTTYPE) != DSS_HALT_GUARD && (order->type == DORDER_OBSERVE || order->type == DORDER_NONE || order->type == DORDER_HOLD))
if (secondaryGetState(psDroid, DSO_HALTTYPE) != DSS_HALT_GUARD && (order->type == DORDER_NONE || order->type == DORDER_HOLD))
{
psDroid->action = DACTION_NONE;
}
Expand Down Expand Up @@ -2097,7 +2097,7 @@ static void actionDroidBase(DROID *psDroid, DROID_ACTION_DATA *psAction)
setDroidActionTarget(psDroid, psAction->psObj, 0);
psDroid->actionPos.x = psDroid->pos.x;
psDroid->actionPos.y = psDroid->pos.y;
if (secondaryGetState(psDroid, DSO_HALTTYPE) != DSS_HALT_GUARD && (order->type == DORDER_OBSERVE || order->type == DORDER_NONE || order->type == DORDER_HOLD))
if (secondaryGetState(psDroid, DSO_HALTTYPE) != DSS_HALT_GUARD && (order->type == DORDER_NONE || order->type == DORDER_HOLD))
{
psDroid->action = visibleObject(psDroid, psDroid->psActionTarget[0], false) ? DACTION_OBSERVE : DACTION_NONE;
}
Expand Down
6 changes: 4 additions & 2 deletions src/ai.cpp
Expand Up @@ -1174,7 +1174,8 @@ void aiUpdateDroid(DROID *psDroid)
{
if (aiChooseSensorTarget(psDroid, &psTarget))
{
if (!orderState(psDroid, DORDER_HOLD))
if (!orderState(psDroid, DORDER_HOLD)
&& secondaryGetState(psDroid, DSO_HALTTYPE) == DSS_HALT_PURSUE)
{
psDroid->order = DroidOrder(DORDER_OBSERVE, psTarget);
}
Expand All @@ -1185,7 +1186,8 @@ void aiUpdateDroid(DROID *psDroid)
{
if (aiChooseTarget((BASE_OBJECT *)psDroid, &psTarget, 0, true, nullptr))
{
if (!orderState(psDroid, DORDER_HOLD))
if (!orderState(psDroid, DORDER_HOLD)
&& secondaryGetState(psDroid, DSO_HALTTYPE) == DSS_HALT_PURSUE)
{
psDroid->order = DroidOrder(DORDER_ATTACK, psTarget);
}
Expand Down

0 comments on commit 2fb1727

Please sign in to comment.