public void StartAction() { if (!Character.Available) { onCompleteAction.Invoke(); return; } // Listen for when the character is available again Character.ListenToAvailable(Act); // Prompts the character to do something. After which they will become unavailable // while doing it, and then become available again if (!AITemplate.ConsiderRepositioning(Character)) { Act(); } }