Beispiel #1
0
    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
    }