IEnumerator SelectAbility(Being being) //should perhaps be called Select ability { Debug.Log("starting " + being.beingName + "'s turn" + " HP:" + being.GetResourceValue("HP", 1) + " STAMINA:" + being.GetResourceValue("STAMINA", 1)); //Any looking for passive or some such would go here being.GetUseableActiveAbilities(); if (being.useableAbilities.Count > 0) { if (being.playerControlled == true) { for (int i = 0; i < being.useableAbilities.Count; i++) { Debug.Log(i + ". " + being.useableAbilities[i].abilityName); } if (playerSelection > -1) { being.SelectTargets(being.useableAbilities[playerSelection - 1]); } if (being.selectedAbility == null) { currentState = CombatStates.WAITFORPLAYERINPUT; } savedState = CombatStates.SELECTABILITY; } if (being.playerControlled == false) { being.SelectAnAbility(); being.SelectTargets(being.selectedAbility); Debug.Log(being.beingName + " chooses " + being.selectedAbility.abilityName); yield return(new WaitForSeconds(textSpeed)); CalculateToHit(being, being.selectedAbility, being.selectedTargets); yield return(new WaitForSeconds(textSpeed)); nextTurnDone = false; } } else { Debug.Log(being.beingName + " can't do anything! (is this an error?)"); nextTurnDone = false; yield return(null); } }