Expand Up
@@ -216,8 +216,7 @@ BASE_OBJECT * checkForRepairRange(DROID *psDroid,DROID *psTarget)
if (droidIsDamaged (psCurr) && visibleObject (psDroid, psCurr, false )
&& (unsigned )droidSqDist (psDroid, psCurr) < // Cast to unsigned, since droidSqDist returns -1 if psCurr is unreachable, which should compare greater than the maximum range.
// Hold position? Repair range, else repair max dist
unsigned ((psDroid->order .type == DORDER_NONE && secondaryGetState (psDroid, DSO_HALTTYPE) == DSS_HALT_HOLD) ?
REPAIR_RANGE : REPAIR_MAXDIST*REPAIR_MAXDIST) )
unsigned (psDroid->order .type == DORDER_HOLD ? REPAIR_RANGE : REPAIR_MAXDIST*REPAIR_MAXDIST))
{
return psCurr;
}
Expand Down
Expand Up
@@ -259,8 +258,7 @@ BASE_OBJECT * checkForDamagedStruct(DROID *psDroid, STRUCTURE *psTarget)
&& visibleObject (psDroid, psCurr, false )
&& (unsigned )droidSqDist (psDroid, psCurr) < // Cast to unsigned, since droidSqDist returns -1 if psCurr is unreachable, which should compare greater than the maximum range.
// Hold position? Repair range, else repair max dist
(unsigned )((psDroid->order .type == DORDER_NONE && secondaryGetState (psDroid, DSO_HALTTYPE) == DSS_HALT_HOLD) ?
REPAIR_RANGE : REPAIR_MAXDIST*REPAIR_MAXDIST) )
(unsigned )(psDroid->order .type == DORDER_HOLD ? REPAIR_RANGE : REPAIR_MAXDIST*REPAIR_MAXDIST))
{
return psCurr;
}
Expand Down
Expand Up
@@ -374,15 +372,11 @@ void orderUpdateDroid(DROID *psDroid)
actionDroid (psDroid, DACTION_REPAIR, psObj);
}
}
// default to guarding if the correct secondary order is set
else if (psDroid->order .psStats != structGetDemolishStat () && // stop the constructor auto repairing when it is about to demolish
secondaryGetState (psDroid, DSO_HALTTYPE) == DSS_HALT_GUARD &&
!isVtolDroid (psDroid))
// default to guarding
else if (psDroid->order .psStats != structGetDemolishStat () && !isVtolDroid (psDroid))
{
orderDroidLoc (psDroid, DORDER_GUARD, psDroid->pos .x , psDroid->pos .y , ModeImmediate);
}
break ;
case DORDER_TRANSPORTRETURN:
if (psDroid->action == DACTION_NONE)
Expand Down
Expand Up
@@ -758,15 +752,7 @@ void orderUpdateDroid(DROID *psDroid)
else if ((psDroid->action == DACTION_NONE) ||
(psDroid->action == DACTION_CLEARREARMPAD))
{
if (psDroid->order .type == DORDER_ATTACKTARGET &&
secondaryGetState (psDroid, DSO_HALTTYPE) == DSS_HALT_HOLD &&
!actionInRange (psDroid, psDroid->order .psObj , 0 ) )
{
// on hold orders give up
psDroid->order = DroidOrder (DORDER_NONE);
}
else if (!isVtolDroid (psDroid) ||
allVtolsRearmed (psDroid))
if (!isVtolDroid (psDroid) || allVtolsRearmed (psDroid))
{
actionDroid (psDroid, DACTION_ATTACK, psDroid->order .psObj );
}
Expand Down
Expand Up
@@ -1492,10 +1478,7 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder)
}
psDroid->order = *psOrder;
if (isVtolDroid (psDroid)
|| actionInRange (psDroid, psOrder->psObj , 0 )
|| (psOrder->type == DORDER_ATTACKTARGET
&& secondaryGetState (psDroid, DSO_HALTTYPE) == DSS_HALT_HOLD))
if (isVtolDroid (psDroid) || actionInRange (psDroid, psOrder->psObj , 0 ))
{
actionDroid (psDroid, DACTION_ATTACK, psOrder->psObj );
}
Expand Down
Expand Up
@@ -3047,7 +3030,6 @@ bool secondarySupported(DROID *psDroid, SECONDARY_ORDER sec)
case DSO_REPAIR_LEVEL:
case DSO_PATROL:
case DSO_HALTTYPE:
case DSO_RETURN_TO_LOC:
break ;
Expand Down
Expand Up
@@ -3103,13 +3085,6 @@ SECONDARY_STATE secondaryGetState(DROID *psDroid, SECONDARY_ORDER sec, QUEUE_MOD
case DSO_CIRCLE:
return (SECONDARY_STATE)(state & DSS_CIRCLE_MASK);
break ;
case DSO_HALTTYPE:
if (psDroid->order .type == DORDER_HOLD)
{
return DSS_HALT_HOLD;
}
return (SECONDARY_STATE)(state & DSS_HALT_MASK);
break ;
case DSO_RETURN_TO_LOC:
return (SECONDARY_STATE)(state & DSS_RTL_MASK);
break ;
Expand Down
Expand Up
@@ -3286,8 +3261,8 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
case DSO_RECYCLE:
if (State & DSS_RECYCLE_MASK)
{
secondaryMask = DSS_RTL_MASK | DSS_RECYCLE_MASK | DSS_HALT_MASK ;
secondarySet = DSS_RECYCLE_SET | DSS_HALT_GUARD ;
secondaryMask = DSS_RTL_MASK | DSS_RECYCLE_MASK;
secondarySet = DSS_RECYCLE_SET;
}
else
{
Expand All
@@ -3302,17 +3277,6 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
secondaryMask = DSS_PATROL_MASK;
secondarySet = (State & DSS_PATROL_SET)? DSS_PATROL_SET : 0 ;
break ;
case DSO_HALTTYPE:
switch (State & DSS_HALT_MASK)
{
case DSS_HALT_PURSUE:
case DSS_HALT_GUARD:
case DSS_HALT_HOLD:
secondaryMask = DSS_HALT_MASK;
secondarySet = State;
break ;
}
break ;
case DSO_RETURN_TO_LOC:
secondaryMask = DSS_RTL_MASK;
switch (State & DSS_RTL_MASK)
Expand All
@@ -3329,13 +3293,9 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
}
break ;
}
if ((CurrState & DSS_HALT_MASK) == DSS_HALT_HOLD)
{
secondaryMask |= DSS_HALT_MASK;
secondarySet |= DSS_HALT_GUARD;
}
break ;
case DSO_UNUSED:
case DSO_UNUSED2:
case DSO_FIRE_DESIGNATOR:
// Do nothing.
break ;
Expand Down
Expand Up
@@ -3494,8 +3454,8 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
{
orderDroid (psDroid, DORDER_RECYCLE, ModeImmediate);
}
CurrState &= ~(DSS_RTL_MASK|DSS_RECYCLE_MASK|DSS_HALT_MASK );
CurrState |= DSS_RECYCLE_SET|DSS_HALT_GUARD ;
CurrState &= ~(DSS_RTL_MASK|DSS_RECYCLE_MASK);
CurrState |= DSS_RECYCLE_SET;
psDroid->group = UBYTE_MAX;
if (psDroid->psGroup != NULL )
{
Expand Down
Expand Up
@@ -3544,32 +3504,6 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
CurrState &= ~DSS_PATROL_MASK;
}
break ;
case DSO_HALTTYPE:
switch (State & DSS_HALT_MASK)
{
case DSS_HALT_PURSUE:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_PURSUE;
if (orderState (psDroid, DORDER_GUARD))
{
orderDroid (psDroid, DORDER_STOP, ModeImmediate);
}
break ;
case DSS_HALT_GUARD:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_GUARD;
orderDroidLoc (psDroid, DORDER_GUARD, psDroid->pos .x , psDroid->pos .y , ModeImmediate);
break ;
case DSS_HALT_HOLD:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_HOLD;
if (!orderState (psDroid, DORDER_FIRESUPPORT))
{
orderDroid (psDroid, DORDER_STOP, ModeImmediate);
}
break ;
}
break ;
case DSO_RETURN_TO_LOC:
if ((State & DSS_RTL_MASK) == 0 )
{
Expand All
@@ -3585,11 +3519,6 @@ bool secondarySetState(DROID *psDroid, SECONDARY_ORDER sec, SECONDARY_STATE Stat
{
order = DORDER_NONE;
CurrState &= ~DSS_RTL_MASK;
if ((CurrState & DSS_HALT_MASK) == DSS_HALT_HOLD)
{
CurrState &= ~DSS_HALT_MASK;
CurrState |= DSS_HALT_GUARD;
}
switch (State & DSS_RTL_MASK)
{
case DSS_RTL_REPAIR:
Expand Down
Expand Up
@@ -3768,12 +3697,11 @@ static SECONDARY_STATE secondaryGetAverageGroupState(UDWORD player, UDWORD group
void secondarySetAverageGroupState (UDWORD player, UDWORD group)
{
// lookup table for orders and masks
#define MAX_ORDERS 4
#define MAX_ORDERS 2
struct { SECONDARY_ORDER order; UDWORD mask; } aOrders[MAX_ORDERS] =
{
{ DSO_REPAIR_LEVEL, DSS_REPLEV_MASK },
{ DSO_ATTACK_LEVEL, DSS_ALEV_MASK },
{ DSO_HALTTYPE, DSS_HALT_MASK }
};
SDWORD i, state;
Expand Down
Expand Up
@@ -4033,23 +3961,6 @@ bool setFactoryState(STRUCTURE *psStruct, SECONDARY_ORDER sec, SECONDARY_STATE S
CurrState &= ~DSS_PATROL_MASK;
}
break ;
case DSO_HALTTYPE:
switch (State & DSS_HALT_MASK)
{
case DSS_HALT_PURSUE:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_PURSUE;
break ;
case DSS_HALT_GUARD:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_GUARD;
break ;
case DSS_HALT_HOLD:
CurrState &= ~ DSS_HALT_MASK;
CurrState |= DSS_HALT_HOLD;
break ;
}
break ;
default :
break ;
}
Expand Down
Expand Up
@@ -4082,9 +3993,6 @@ bool getFactoryState(STRUCTURE *psStruct, SECONDARY_ORDER sec, SECONDARY_STATE *
case DSO_PATROL:
*pState = (SECONDARY_STATE)(state & DSS_PATROL_MASK);
break ;
case DSO_HALTTYPE:
*pState = (SECONDARY_STATE)(state & DSS_HALT_MASK);
break ;
default :
*pState = (SECONDARY_STATE)0 ;
break ;
Expand Down
Expand Up
@@ -4158,7 +4066,7 @@ const char* getDroidOrderName(DROID_ORDER order)
case DORDER_LEAVEMAP: return " DORDER_LEAVEMAP" ;
case DORDER_RTR_SPECIFIED: return " DORDER_RTR_SPECIFIED" ;
case DORDER_CIRCLE: return " DORDER_CIRCLE" ;
case DORDER_HOLD: return " DORDER_HOLD" ;
case DORDER_HOLD: return " DORDER_HOLD" ;
};
ASSERT (false , " DROID_ORDER out of range: %u" , order);
Expand Down