/// <summary> /// Attaque d'une armée ennemie -- appelée aussi par l'IA /// </summary> /// <param name="cible">armée cible</param> /// <returns> true si on a gagné</returns> public bool attaqueArmee(List <Armee> cible) { Combat combat = new Combat(_jeu, _jeu.selectedArmee, cible); // Mode auto ou graphique if (_jeu.factions.getFaction(_jeu.tourFaction).humanPlayer || _jeu.factions.getFaction(cible[0].faction).humanPlayer) { // mode graphique ZoneCombat zc = new ZoneCombat(_jeu, combat, delegate(bool attaquantVainqueur) { if (!attaquantVainqueur) { _jeu.selectedArmee = null; } }); _jeu.addOverlay(zc); } else { bool resCombat = combat.combatAuto(); if (!resCombat) { // perdu ! _jeu.selectedArmee = null; } } return(_jeu.selectedArmee != null); }
/// <summary> /// Fouille une ruine /// </summary> /// <param name="heros">héros visiteur</param> /// <param name="ruine">ruine visitée</param> /// <param name="nomEnnemi">en sortie, le nom de l'ennemi rencontré</param> /// <param name="nomRecompense">en sortie (si vainqueur), le nom de la récompense</param> /// <returns>true si le héros gagne, false s'il meurt</returns> /// public bool fouilleRuine(Creature heros, RuineDescription ruine, ref string nomEnnemi, ref string nomRecompense) { // Détermine l'ennemi à combattre Creature ennemi; switch (_jeu.rnd.Next(3)) { case 0: ennemi = new Creature(_jeu, Creatures.TYPE_GRIFFON, 0, heros.positionCarte); nomEnnemi = "un griffon"; break; case 1: ennemi = new Creature(_jeu, Creatures.TYPE_GEANT, 0, heros.positionCarte); nomEnnemi = "un géant des montagnes"; break; default: ennemi = new Creature(_jeu, Creatures.TYPE_SORCIERE, 0, heros.positionCarte); nomEnnemi = "une sorcière"; break; } Armee aheros = new Armee(_jeu); aheros.addCreature(heros); Armee aennemi = new Armee(_jeu); aennemi.addCreature(ennemi); List <Armee> garnison = new List <Armee>(); garnison.Add(aennemi); Combat combat = new Combat(_jeu, aheros, garnison); bool herosGagne = combat.combatAuto(); // Détermine la récompense : item, troupe ou argent nomRecompense = ""; if (herosGagne) { ruine.visite = true; if (ruine.item != null) { nomRecompense = "l'objet : " + ruine.item.nom; heros.addItem(ruine.item); } else if (_jeu.rnd.Next(4) == 0) { int montant = _jeu.rnd.Next(1500) + 500; nomRecompense = montant + " pièces d'or"; _jeu.factions.getFaction(_jeu.tourFaction).or += montant; } else { // Alliés Armee allies = new Armee(_jeu); int typeAllie = _jeu.rnd.Next(Creatures.TYPE_ALLIEMAX + 1 - Creatures.TYPE_ALLIEMIN) + Creatures.TYPE_ALLIEMIN; int nbAllie = _jeu.rnd.Next(2) + 2; for (int i = 0; i < nbAllie; i++) { allies.addCreature(new Creature(_jeu, typeAllie, _jeu.tourFaction, heros.positionCarte)); } _jeu.addArmee(allies); nomRecompense = nbAllie + " alliés"; } } else { // Suppression du héros du jeu if (_jeu.selectedArmee.getTaille() == 1) { _jeu.removeArmee(_jeu.selectedArmee); _jeu.selectedArmee = null; } else { _jeu.selectedArmee.removeCreature(heros); } } return(herosGagne); }