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); }
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)); }
// AI Action functions public virtual float Evaluate(AIBrain brain, AINode.AICondition condition) { return(0); }
public override float Evaluate(AIBrain brain, AINode.AICondition condition) { return(EvaluateRanged(brain, condition)); }
public override float Evaluate(AIBrain brain, AINode.AICondition condition) { // TODO return(GetSplashDamage(brain.character) * 0.5f * (maxDamage + minDamage)); }