Actions, especially global actions, are a little too flexible at the moment, generating excessive amounts of states to check, even when checking for whether the action has an effect or is undoing itself. So, let's add a tighter restriction: we only wish to perform an action if it does any of these:
moves the player
unlocks new access to another spot
accesses a spot in a shorter total time than before the action
unlocks access to a new location
accesses a location in shorter total time than before the action
It isn't clear to me immediately whether we should then focus on those affected spots/locations, e.g. if there are actions that cycle between sets of available locations (e.g. time of day in OoT)--despite the action being available to change the time of day, we might not use it immediately. Perhaps we can avoid undoing the action that hasn't been yet used in this way, so as to prevent e.g. cycling the time of day all the way around multiple times in a dungeon where it doesn't matter.
Actions, especially global actions, are a little too flexible at the moment, generating excessive amounts of states to check, even when checking for whether the action has an effect or is undoing itself. So, let's add a tighter restriction: we only wish to perform an action if it does any of these:
It isn't clear to me immediately whether we should then focus on those affected spots/locations, e.g. if there are actions that cycle between sets of available locations (e.g. time of day in OoT)--despite the action being available to change the time of day, we might not use it immediately. Perhaps we can avoid undoing the action that hasn't been yet used in this way, so as to prevent e.g. cycling the time of day all the way around multiple times in a dungeon where it doesn't matter.