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); } } } }
/***************************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; } }