From 39f32c2e71e2f619900a02895327ad6453025357 Mon Sep 17 00:00:00 2001 From: Wanne Date: Thu, 5 Dec 2013 07:55:26 +0000 Subject: [PATCH] - 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 --- TacticalAI/AIUtils.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/TacticalAI/AIUtils.cpp b/TacticalAI/AIUtils.cpp index b10dbd88..fe0e9a26 100644 --- a/TacticalAI/AIUtils.cpp +++ b/TacticalAI/AIUtils.cpp @@ -858,12 +858,13 @@ INT32 RandDestWithinRange(SOLDIERTYPE *pSoldier) { 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 { sXOffset = ((INT16)Random(sXRange)) - sMaxLeft; sYOffset = ((INT16)Random(sYRange)) - sMaxUp; sRandDest = usOrigin + sXOffset + (MAXCOL * sYOffset); - }while(!GridNoOnVisibleWorldTile(sRandDest)); + }while(!GridNoOnVisibleWorldTile(sRandDest) && --ubTriesLeft2); #ifdef BETAVERSION if ((sRandDest < 0) || (sRandDest >= GRIDSIZE)) { @@ -874,10 +875,11 @@ INT32 RandDestWithinRange(SOLDIERTYPE *pSoldier) } else { + UINT8 ubTriesLeft2 = 128; do//dnl ch53 111009 This loop should increase search performance, but probably need some counter to prevent eventual endless loop { sRandDest = PreRandom(GRIDSIZE); - }while(!GridNoOnVisibleWorldTile(sRandDest)); + }while(!GridNoOnVisibleWorldTile(sRandDest) && --ubTriesLeft2); } if ( usRoom && InARoom( sRandDest, &usTempRoom ) && usTempRoom != usRoom )