mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
- 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:
@@ -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 )
|
||||||
|
|||||||
Reference in New Issue
Block a user