Exemplo n.º 1
0
        public float EvaluateRanged(AIBrain brain, AINode.AICondition condition)
        {
            Character caster = brain.character;

            npcTarget = null;
            float            bestEval = 0;
            List <Character> targets  = targetType == TargetType.Enemies ? brain.enemies : brain.allies;

            foreach (Character ch in targets)
            {
                if (ch != caster)
                {
                    bool cond = AINode.IsCondition(condition, ch, this);
                    if (cond)
                    {
                        float eval = Eval(caster, ch);

                        // TODO - factor in collateral and splash damage ?

                        //Debug.Log("Power:" + name + " Ch:" + ch.name + " Eval:" + eval);
                        if (eval > bestEval)
                        {
                            bestEval  = eval;
                            npcTarget = ch;
                        }
                    }
                    // else
                    //Debug.Log("Power:" + name + " Ch:" + ch.name + "condition not met");
                }
            }

            return(bestEval);
        }
Exemplo n.º 2
0
        public override float Evaluate(AIBrain brain, AINode.AICondition condition)
        {
            duration = -1.5f;
            Power subP = GetPower(brain.character);

            range = subP.range;
            return(subP.Evaluate(brain, condition));
        }
Exemplo n.º 3
0
 // AI Action functions
 public virtual float Evaluate(AIBrain brain, AINode.AICondition condition)
 {
     return(0);
 }
Exemplo n.º 4
0
 public override float Evaluate(AIBrain brain, AINode.AICondition condition)
 {
     return(EvaluateRanged(brain, condition));
 }
Exemplo n.º 5
0
 public override float Evaluate(AIBrain brain, AINode.AICondition condition)
 {
     // TODO
     return(GetSplashDamage(brain.character) * 0.5f * (maxDamage + minDamage));
 }