Exemple #1
0
    public Actions Decide()
    {
        bool attack       = false;
        bool attackNeutal = false;

        if (PlanetsNeedHealing())
        {
            return(Actions.Heal);
        }

        if (PlanetsNotAtMaximmumLevel() && Random.value > 0.5f)
        {
            return(Actions.Upgrade);
        }

        if (Random.value > 0.4f)
        {
            if (Random.value > 0.5f)
            {
                attack = true;
            }
            else
            {
                attackNeutal = true;
            }
        }

        EventEntity objective;

        if (ThereAreNeutralPlanets() && !attack)
        {
            objective = Effector.GetNearestPlanet(map, myPlayer, true);
            if (myPlayer.GetCurrentUnitsNumber() > Effector.CountNecessaryUnitsToConquer(objective, myPlayer) * 1.5f || attackNeutal)
            {
                return(Actions.AttackNeutral);
            }
        }
        else
        {
            objective = Effector.GetNearestPlanet(map, myPlayer);
            if (myPlayer.GetCurrentUnitsNumber() > Effector.CountNecessaryUnitsToConquer(objective, myPlayer) * 1.5f || attack)
            {
                return(Actions.AttackEnemy);
            }
        }
        return(Actions.Wait);
    }