/// <summary> /// <para>Aplica el damage</para> /// </summary> /// <param name="target">Area</param> public override int OnAplicar(Area target) { Unidad defensor = target.contenido.GetComponent <Unidad>(); EstadoUnidad estado = defensor.GetComponentInChildren <EstadoUnidad>(); DuracionCondicionEstadoUnidad[] candidatos = estado.GetComponentsInChildren <DuracionCondicionEstadoUnidad>(); for (int i = candidatos.Length - 1; i >= 0; --i) { EfectoEstadoUnidad efecto = candidatos[i].GetComponentInParent <EfectoEstadoUnidad>(); if (Tipos.Contains(efecto.GetType())) { candidatos[i].Remove(); } } return(0); }
/// <summary> /// <para>Evaluar el plan de ataque</para> /// </summary> /// <returns></returns> public PlanDeAtaque Evaluar() // Evaluar el plan de ataque { // Obtener el plan de ataque y el patron PlanDeAtaque plan = new PlanDeAtaque(); PatronAtaque patron = Unidad.GetComponentInChildren <PatronAtaque>(); // Si hay patron, seleccionar plan, sino dar uno por defecto if (patron) { patron.Eleccion(plan); } else { PatronAtaqueGeneral(plan); } // Comprobar la posicion y direccion y preparar la accion if (IsPosicionIndependiente(plan)) { PlanPosicionIndependiente(plan); } else if (IsDireccionIndependiente(plan)) { PlanDireccionIndependiente(plan); } else { PlanDirectionDependent(plan); } // Mover hacia el oponente if (plan.habilidad == null) { MoverHaciaOponente(plan); } return(plan); }
/// <summary> /// <para>Asigna solo atacar</para> /// </summary> /// <param name="plan"></param> private void PatronAtaqueGeneral(PlanDeAtaque plan) // Asigna solo atacar { // Solo obtiene la habilidad de ataque plan.habilidad = Unidad.GetComponentInChildren <Habilidad>(); plan.objetivo = Objetivos.Enemigo; }