/// <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);
        }
Example #2
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);
        }
Example #3
0
 /// <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;
 }