//sets aiPlayer.activeSpecialAbility private void EvaluateSpecial() { bool specialAbilityReady = false; int i; for (i = 0; i < aiPlayer.abilities.abilityArray.Length && !specialAbilityReady; i++) { ISpecial potentialAbility = aiPlayer.abilities.abilityArray[i]; //maybe to "dumbify" ai make it some ratio of time since ready to full cooldown? //note: empty ability always returns false on isReady if (potentialAbility.isReady() && potentialAbility.energyRequired < aiPlayer.player.resources.currentEnergy && MatchesAbilityPref(potentialAbility)) { //Decide whether to use ability or continue searching (sorry this got kinda complicated!), might want a separate method? if (potentialAbility.EvaluateCoopUse(aiPlayer.player, aiPlayer.targetedEnemy, aiPlayer.tm)) { aiPlayer.activeSpecialAbility = potentialAbility; } else { aiPlayer.activeSpecialAbility = null; } if (aiPlayer.activeSpecialAbility != null) { specialAbilityReady = true; } //Debug.Log("Evaluating ability " + i); } } }