Attempt to fix ticket:449 - Warzone crashed when destroyed repair facility. Reviewed by Zarel.
git-svn-id: https://warzone2100.svn.sourceforge.net/svnroot/warzone2100/trunk@7281 4a71c877-e1ca-e34f-864e-861f7616d084master
parent
83cb5626e4
commit
0a599f9818
10
src/action.c
10
src/action.c
|
@ -1125,6 +1125,12 @@ void actionUpdateDroid(DROID *psDroid)
|
|||
formationLeave(psDroid->sMove.psFormation, psDroid);
|
||||
psDroid->sMove.psFormation = NULL;
|
||||
}
|
||||
// Check that repair facility still exists
|
||||
if (!psDroid->psTarget)
|
||||
{
|
||||
psDroid->action = DACTION_NONE;
|
||||
break;
|
||||
}
|
||||
// move back to the repair facility if necessary
|
||||
if (DROID_STOPPED(psDroid) &&
|
||||
!actionReachedBuildPos(psDroid,
|
||||
|
@ -2400,6 +2406,10 @@ void actionUpdateDroid(DROID *psDroid)
|
|||
}
|
||||
}
|
||||
}
|
||||
if (psDroid->action != DACTION_DROIDREPAIR)
|
||||
{
|
||||
break; // action has changed
|
||||
}
|
||||
|
||||
//check still next to the damaged droid
|
||||
xdiff = (SDWORD)psDroid->pos.x - (SDWORD)psDroid->psActionTarget[0]->pos.x;
|
||||
|
|
|
@ -1568,14 +1568,11 @@ BOOL droidUpdateDroidRepair(DROID *psRepairDroid)
|
|||
|
||||
CHECK_DROID(psRepairDroid);
|
||||
|
||||
ASSERT( psRepairDroid->action == DACTION_DROIDREPAIR,
|
||||
"unitUpdateUnitRepair: unit does not have unit repair order" );
|
||||
ASSERT( psRepairDroid->asBits[COMP_REPAIRUNIT].nStat != 0,
|
||||
"unitUpdateUnitRepair: unit does not have a repair turret" );
|
||||
ASSERT_OR_RETURN(false, psRepairDroid->action == DACTION_DROIDREPAIR, "Unit does not have unit repair order");
|
||||
ASSERT_OR_RETURN(false, psRepairDroid->asBits[COMP_REPAIRUNIT].nStat != 0, "Unit does not have a repair turret");
|
||||
|
||||
psDroidToRepair = (DROID *)psRepairDroid->psActionTarget[0];
|
||||
ASSERT( psDroidToRepair->type == OBJ_DROID,
|
||||
"unitUpdateUnitRepair: target is not a unit" );
|
||||
ASSERT_OR_RETURN(false, psDroidToRepair->type == OBJ_DROID, "Target is not a unit");
|
||||
|
||||
// FIXME: add power cost for repair
|
||||
// remember that self repair is free
|
||||
|
|
Loading…
Reference in New Issue