Example #1
0
    public void defenseSimultanee(CarteVaisseauMetier vaisseauAttaquant, NetworkInstanceId netIdTaskEvent)
    {
        bool attaqueEvite = 0 < CapaciteUtils.valeurAvecCapacite(0, listEffetCapacite, ConstanteIdObjet.ID_CAPACITE_EVITE_ATTAQUE);

        if (!attaqueEvite)
        {
            bool attaqueReoriente = 0 < CapaciteUtils.valeurAvecCapacite(0, listEffetCapacite, ConstanteIdObjet.ID_CAPACITE_REORIENTE_ATTAQUE);
            if (attaqueReoriente)
            {
                List <CarteMetierAbstract> listCartes = CarteUtils.getListCarteCibleReorientation(vaisseauAttaquant, this);
                CarteMetierAbstract        cible      = listCartes [Random.Range(0, listCartes.Count)];

                if (cible is CarteConstructionMetierAbstract)
                {
                    vaisseauAttaquant.attaqueCarte((CarteConstructionMetierAbstract)cible, netIdTaskEvent);
                }
                else if (cible is CartePlaneteMetier)
                {
                    vaisseauAttaquant.attaquePlanete((CartePlaneteMetier)cible, netIdTaskEvent);
                }
            }
            else
            {
                bool attaquePriorite = 0 < CapaciteUtils.valeurAvecCapacite(0, listEffetCapacite, ConstanteIdObjet.ID_CAPACITE_ATTAQUE_OPPORTUNITE);
                int  degatInfliger   = getPointDegat();
                int  degatRecu       = vaisseauAttaquant.getPointDegat();

                if (attaquePriorite)
                {
                    this.recevoirAttaque(vaisseauAttaquant, netIdTaskEvent, false);

                    if (this.PV > 0)
                    {
                        vaisseauAttaquant.recevoirAttaque(this, netIdTaskEvent, false);
                    }
                }
                else
                {
                    vaisseauAttaquant.recevoirAttaque(this, netIdTaskEvent, true);
                    this.recevoirAttaque(vaisseauAttaquant, netIdTaskEvent, true);
                }
            }
        }
    }
Example #2
0
    /***************************Methode IAttaquer*************************/

    public void attaqueCarte(CarteConstructionMetierAbstract cible, NetworkInstanceId netIdEventTask)
    {
        bool attaqueReoriente = 0 < CapaciteUtils.valeurAvecCapacite(0, listEffetCapacite, ConstanteIdObjet.ID_CAPACITE_REORIENTE_ATTAQUE);
        bool attaqueEvite     = 0 < CapaciteUtils.valeurAvecCapacite(0, listEffetCapacite, ConstanteIdObjet.ID_CAPACITE_EVITE_ATTAQUE);

        if (!attaqueEvite)
        {
            if (attaqueReoriente && netIdEventTask == NetworkInstanceId.Invalid)               //Si netIdEventTask est invalid alors ce n'est pas une action appeler diretement mais une action rappelé par
            {
                List <CarteMetierAbstract> listCartes     = CarteUtils.getListCarteCibleReorientation(this, cible);
                CarteMetierAbstract        cibleReoriente = listCartes [Random.Range(0, listCartes.Count)];

                if (cibleReoriente is CartePlaneteMetier)
                {
                    attaquePlanete((CartePlaneteMetier)cibleReoriente, netIdEventTask);
                }
                else if (cibleReoriente is CarteConstructionMetierAbstract)
                {
                    cible = (CarteConstructionMetierAbstract)cibleReoriente;
                }
            }

            if (cible is IDefendre)
            {
                JoueurUtils.getJoueurLocal().CmdCreateTask(cible.netId, JoueurProprietaire.netId, this.IdISelectionnable, ConstanteIdObjet.ID_CONDITION_ACTION_DEFEND, netIdEventTask, false);
                AttaqueCeTour = true;
            }
            else if (cible is IVulnerable)
            {
                ((IVulnerable)cible).recevoirAttaque(this, netIdEventTask, false);

                AttaqueCeTour = true;
            }
        }
        else
        {
            //TODO anim evite
        }

        if (!isCapableAttaquer())
        {
            this.JoueurProprietaire.CarteSelectionne = null;
        }
    }