Okay, so I got it figured out and working, at least for ArrayListGetNext. I don't know about the others. It came down to me not thinking correctly on how logic moved between actions. The way I had it, the "reset" variable was set to true in the same state as the ArrayListGetNext action. I was picturing that when it looped back in to check the next entry in the array, it would just go straight to ArrayListGetNext, which, of course, now that I look at it again, it doesn't do. The flow always goes back to the first action in the stack even if an action in the stack is set to some sort of "loop". The way I had it resulted in ArrayListGetNext ALWAYS restarting with the first entry and never getting past it.
So here's the correct way to set it up (This is specifically for ArrayListGetNext. I assume others work similarly):
1. Create a Boolean. I called mine "resetMyArray". Set the default to false.
2. Create a state that contains the ArrayListGetNext action.
3. In the drop-down box to the right of "Reset" select "resetMyArray" or whatever you named your Boolean to.
So now whenever that state is first ENTERED, and "resetMyArray" is true, it will start looping from the beginning again. Now on to the loop...
4. Make another state to do something with the array entry. In my case it's a string array and I'm comparing the individual strings to text that the player inputted at the beginning. I'm calling my state "CheckLetter" in the attached images.
5. Back in ArrayListGetNext, set the "Loop Event" to that new state.
6. Now back in the state that does the comparing, set the false condition to go back to the ArrayListGetNext state. This way it will keep looping until it finds the entry you're looking for.
6. Set the true state in the comparer to move on to a new state that does something with the entry. In my case it's "DisplayLetter" that just prints the entry to the screen.
You now have a setup that loops through an array until it finds what you're looking for and then moves out of the loop to do something with it. (I'm ignoring the "Finished Event" and "Failure Event" for now)
Now for the final step. Once you've done something with the entry, at some point we're assuming you want to start the whole thing over again, looking for a different entry in the same array. The problem is that by default, ArrayListGetNext will pick up where it left off, so if the new entry is before the last one you looked for, it will continue to the end and fail. Jean's new upgrade fixes this.
7. Make a new state. I called mine "ResetArrayPointer".
8. In this state, add a SetBoolValue action. Remember the reset Boolean we made at the beginning? Use the SetBoolValue action to now set that value to true.
9. Now back in the last state you made, the one that did something with your output, add a "FINISHED" event and hook that up to the SetBoolValue state.
10. Finally, add a "FINISHED" event to the SetBoolValue state and hook that up back into the ArrayListGetNext state, and you are done.
Now what should happen is that ArrayListGetNext will initially see the "Reset" Boolean as false and start looping through the array entries. When it finds what you're looking for, it will exit the loop and do something with the entry. After all that's done, it will set the "Reset" Boolean to true, meaning, "Hey, I've finished doing what I needed, now I want to start completely over". The next time the ArrayListGetNext state is entered, it will see that "Reset" is now true, and start at the beginning again!
Anyway, sorry for the length of the post, but I wanted to be sure I gave all the necessary info. Better too much than too little. Attached you will find two images showing how I have things set up. I hope I've made it simple enough that it'll be self-evident how everything should be set up.
Thanks to Jean for his never-ending help. Hope this helps