We've actions that can be marked as cycles, for when it's possible to do the same action multiple times to cycle through modes, for example. However, we might add some special versions that change modes and set some other context (e.g. AV2 will have a "Throw Drone" action in some places). Since there are still actions considered to undo other actions (e.g. AV2 will have a "Recall Drone" action). To avoid the search algorithm generating many sequences of [Throw Drone, move, Recall], we should have Recall disallowed until another action is performed, item collected, or other condition met (moved far enough away that Recall has a different effect, e.g. for performing AV2 stuckness glitches... but this could also be a different Recall action).
To avoid having to spell out the full list of actions, we could give actions fields like undo_type and undoes.
We've actions that can be marked as cycles, for when it's possible to do the same action multiple times to cycle through modes, for example. However, we might add some special versions that change modes and set some other context (e.g. AV2 will have a "Throw Drone" action in some places). Since there are still actions considered to undo other actions (e.g. AV2 will have a "Recall Drone" action). To avoid the search algorithm generating many sequences of [Throw Drone, move, Recall], we should have Recall disallowed until another action is performed, item collected, or other condition met (moved far enough away that Recall has a different effect, e.g. for performing AV2 stuckness glitches... but this could also be a different Recall action).
To avoid having to spell out the full list of actions, we could give actions fields like
undo_type
andundoes
.