- Bugfix: Fixed infinite loops that could occur in AI Actions (by Mae)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6680 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-12-05 07:55:26 +00:00
parent b7ee1b8979
commit 39f32c2e71
+4 -2
View File
@@ -858,12 +858,13 @@ INT32 RandDestWithinRange(SOLDIERTYPE *pSoldier)
{ {
if (fLimited) if (fLimited)
{ {
UINT8 ubTriesLeft2 = 128;
do//dnl ch53 111009 This loop should increase search performance, but probably need some counter to prevent eventual endless loop do//dnl ch53 111009 This loop should increase search performance, but probably need some counter to prevent eventual endless loop
{ {
sXOffset = ((INT16)Random(sXRange)) - sMaxLeft; sXOffset = ((INT16)Random(sXRange)) - sMaxLeft;
sYOffset = ((INT16)Random(sYRange)) - sMaxUp; sYOffset = ((INT16)Random(sYRange)) - sMaxUp;
sRandDest = usOrigin + sXOffset + (MAXCOL * sYOffset); sRandDest = usOrigin + sXOffset + (MAXCOL * sYOffset);
}while(!GridNoOnVisibleWorldTile(sRandDest)); }while(!GridNoOnVisibleWorldTile(sRandDest) && --ubTriesLeft2);
#ifdef BETAVERSION #ifdef BETAVERSION
if ((sRandDest < 0) || (sRandDest >= GRIDSIZE)) if ((sRandDest < 0) || (sRandDest >= GRIDSIZE))
{ {
@@ -874,10 +875,11 @@ INT32 RandDestWithinRange(SOLDIERTYPE *pSoldier)
} }
else else
{ {
UINT8 ubTriesLeft2 = 128;
do//dnl ch53 111009 This loop should increase search performance, but probably need some counter to prevent eventual endless loop do//dnl ch53 111009 This loop should increase search performance, but probably need some counter to prevent eventual endless loop
{ {
sRandDest = PreRandom(GRIDSIZE); sRandDest = PreRandom(GRIDSIZE);
}while(!GridNoOnVisibleWorldTile(sRandDest)); }while(!GridNoOnVisibleWorldTile(sRandDest) && --ubTriesLeft2);
} }
if ( usRoom && InARoom( sRandDest, &usTempRoom ) && usTempRoom != usRoom ) if ( usRoom && InARoom( sRandDest, &usTempRoom ) && usTempRoom != usRoom )