Interesting DEBUG log. Here is the "processResults" method for HedgePuzzleRequest.
Code:
public void processResults()
{
HedgePuzzleRequest.parseResponse( this.getURLString(), this.responseText );
if ( HedgePuzzleRequest.PUZZLE_PIECE.getCount( KoLConstants.inventory ) == 0 )
{
KoLmafia.updateDisplay( MafiaState.ERROR, "Ran out of puzzle pieces." );
return;
}
}
In other words, after every puzzle rotation, it checks to see if you have a puzzle piece in inventory. If not, it prints a message and goes into an ERROR state.
The whole hedge script is full of this kind of check:
Code:
if ( !KoLmafia.permitsContinue() )
{
return;
}
In other words, if KoLmafia does not "permit continue" - is in an ERROR state - it bails.
Now lets look at what your log said when you lost that puzzle:
Code:
Processing result: hedge maze puzzle (-1)
Ran out of puzzle pieces.
We noticed you lost the puzzle and had none left, so at this point, we were in an ERROR state. Next:
Code:
class net.sourceforge.kolmafia.request.ApiRequest
Connecting to api.php...
Requesting: http://www.kingdomofloathing.com/api.php?what=status&for=KoLmafia
3 request properties
Field: Cookie = [appserver=www8; PHPSESSID=hc9k8ejt4k6mejeqsgehnt3822]
Field: User-Agent = [KoLmafia v16.4]
Field: Content-Type = [application/x-www-form-urlencoded]
Retrieving server reply...
Starting relay script: relay_Guide.ash
Finished relay script: relay_Guide.ash
Ooh, look at that. We executed a relay script. Since scripts don't/can't run in an ERROR state, we clear it.
And so, Guide finishes, we are no longer in an ERROR state, and the script continues merrily along, "knowing" that it is still working on the puzzle since, after all, we'd be in an ERROR state if you didn't have a puzzle any more.
I only saw Guide start/finish 187 times in your DEBUG log.
I am not surprised in the slightest that the Hedge solver fails for people using an asynchronous relay script. In order to fix it, it would need to maintain its own state variable, rather than depending on KoLmafia's ERROR state.
All of the built-in Sorceress Lair scripts are chock full of "KoLmafia.permitsContinue()" checks and will almost certainly not detect failures correctly for people running Guide.