void CalculateDefence(Being attacker, Ability ability, float toHit, Being defender) { //TESTReportOnEffectQueue();//test //look through defences and put useable ones in the useableDefences list defender.GetUseableDefences(); //the next part selects a defence to use, this is done automatically by comparing speeds at the moment. //compare useable defences to the incoming ability if (defender.useableDefences.Count > 0) { for (int i = 0; i < defender.useableDefences.Count; i++) { Debug.Log(ability.abilityName + " " + toHit + " vs " + defender.useableDefences[i].abilityName + " " + defender.useableDefences[i].defenceSpeed); if (toHit <= defender.useableDefences[i].defenceSpeed) //choose this defence to use { defender.SelectDefenceTargets(defender.useableDefences[i]); defender.useableDefences[i].Use(); return; } } Debug.Log(defender.beingName + ": I can't dodge it!"); UseAbility(attacker, ability, defender); return; } Debug.Log("ERROR: " + defender.beingName + " has no defences, they should at least have a basic reflex"); //TODO now //1. consider how to implement a general list of effect tokens (stat mods, incoming damage etc) //2. That list might need to be overseen by a 'resolve effects' function }