예제 #1
0
        /// <summary>
        /// Création d'un nouvel héros pour la faction courante
        /// </summary>
        /// <param name="nom">nom du héros</param>
        /// <param name="femme">true si femme</param>
        /// <param name="allies">true si on ajoute des alliés</param>
        public void createHeros(string nom, bool femme, bool allies)
        {
            // Choix de la ville
            List <VilleDescription> villesFaction = new List <VilleDescription>();

            foreach (VilleDescription vd in _jeu.villes.villeDesc)
            {
                if (vd.faction == _jeu.tourFaction)
                {
                    villesFaction.Add(vd);
                }
            }
            if (villesFaction.Count != 0)
            {
                VilleDescription vd = villesFaction[_jeu.rnd.Next(villesFaction.Count)];
                int      herosType  = femme ? TYPE_HEROS : TYPE_HEROINE;
                Creature heros      = new Creature(_jeu, herosType, vd.faction, vd.positionMap);
                heros.vraiNom = nom;
                // Possède un étendard
                heros.addItem(_jeu.items.itemDesc[Items.ETENDARD]);

                Armee armee = new Armee(_jeu);
                armee.addCreature(heros);
                // Alliés éventuels : types 19-27
                int nbAllie = 0;
                if (allies)
                {
                    int typeAllie = _jeu.rnd.Next(TYPE_ALLIEMAX + 1 - TYPE_ALLIEMIN) + TYPE_ALLIEMIN;
                    nbAllie = _jeu.rnd.Next(3) + 1;
                    for (int i = 0; i < nbAllie; i++)
                    {
                        armee.addCreature(new Creature(_jeu, typeAllie, vd.faction, vd.positionMap));
                    }
                }
                armee.positionCarte = armee.getPositionLibre(armee.positionCarte, false, false).Value;
                _jeu.addArmee(armee);
                if (allies)
                {
                    _jeu.messageInfo = nom + " est accompagné" + (femme ? "e" : "") + " de " + nbAllie + " allié" + (nbAllie > 1 ? "s" : "") + " et se trouve à " + vd.nom;
                }
                else
                {
                    _jeu.messageInfo = nom + " se trouve à " + vd.nom;
                }
            }
        }
예제 #2
0
 /// <summary>
 /// Production des villes
 /// </summary>
 public void productions()
 {
     foreach (VilleDescription vd in villeDesc)
     {
         if (vd.productionCourante != -1)
         {
             vd.productionPoints++;
             int coutPP = vd.geNbToursPourCreatures(_jeu.creatures.description[vd.typeCreatures[vd.productionCourante]].cout);
             if (vd.productionPoints >= coutPP)
             {
                 vd.productionPoints -= coutPP;
                 // Ajoute la créature
                 Creature crea  = new Creature(_jeu, vd.typeCreatures[vd.productionCourante], vd.faction, vd.positionMap);
                 Armee    armee = new Armee(_jeu);
                 armee.addCreature(crea);
                 _jeu.addArmee(armee);
             }
         }
     }
 }
예제 #3
0
        /// <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);
        }