Fix bug #12400: assert in droid.c (r6104). First issue is that we check against DROID_MAXWEAPS on
a structure, which has potentially one more weapon that this. Second and more serious issue is that if a building is demolished, it will no longer be updated in regards to dead targets. git-svn-id: svn+ssh://svn.gna.org/svn/warzone/trunk@6136 4a71c877-e1ca-e34f-864e-861f7616d084master
parent
dcc87a0973
commit
4f33dfa994
|
@ -2762,14 +2762,6 @@ static void aiUpdateStructure(STRUCTURE *psStructure)
|
||||||
|
|
||||||
CHECK_STRUCTURE(psStructure);
|
CHECK_STRUCTURE(psStructure);
|
||||||
|
|
||||||
for (i = 0; i < DROID_MAXWEAPS; i++)
|
|
||||||
{
|
|
||||||
if (psStructure->psTarget[i] && psStructure->psTarget[i]->died)
|
|
||||||
{
|
|
||||||
setStructureTarget(psStructure, NULL, i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Will go out into a building EVENT stats/text file
|
// Will go out into a building EVENT stats/text file
|
||||||
/* Spin round yer sensors! */
|
/* Spin round yer sensors! */
|
||||||
if (psStructure->numWeaps == 0)
|
if (psStructure->numWeaps == 0)
|
||||||
|
@ -3612,6 +3604,16 @@ void structureUpdate(STRUCTURE *psBuilding)
|
||||||
UDWORD widthScatter,breadthScatter;
|
UDWORD widthScatter,breadthScatter;
|
||||||
UDWORD emissionInterval, iPointsToAdd, iPointsRequired;
|
UDWORD emissionInterval, iPointsToAdd, iPointsRequired;
|
||||||
Vector3i dv;
|
Vector3i dv;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
// Remove invalid targets. This must be done each frame.
|
||||||
|
for (i = 0; i < STRUCT_MAXWEAPS; i++)
|
||||||
|
{
|
||||||
|
if (psBuilding->psTarget[i] && psBuilding->psTarget[i]->died)
|
||||||
|
{
|
||||||
|
setStructureTarget(psBuilding, NULL, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//update the manufacture/research of the building once complete
|
//update the manufacture/research of the building once complete
|
||||||
if (psBuilding->status == SS_BUILT)
|
if (psBuilding->status == SS_BUILT)
|
||||||
|
@ -3619,9 +3621,6 @@ void structureUpdate(STRUCTURE *psBuilding)
|
||||||
aiUpdateStructure(psBuilding);
|
aiUpdateStructure(psBuilding);
|
||||||
}
|
}
|
||||||
|
|
||||||
// must be after aiUpdateStructure because this is where we clean out dead targets
|
|
||||||
CHECK_STRUCTURE(psBuilding);
|
|
||||||
|
|
||||||
if(psBuilding->status!=SS_BUILT)
|
if(psBuilding->status!=SS_BUILT)
|
||||||
{
|
{
|
||||||
if(psBuilding->selected)
|
if(psBuilding->selected)
|
||||||
|
|
Loading…
Reference in New Issue