def cible_protection(personne):
    """
	Ce que les héros doivent protéger : 
	une personne, un secret, un objet personnel, un convoi, un lieu.

	Beaucoup de détails si la cible est un convoi :
	type de convoi, date de départ, durée du trajet, destination du convoi.

	Renvoie un texte.
	"""
    cible = protection[randrange(len(protection))]

    if cible == "une personne":
        proteger = personne

    elif cible == "un secret":
        proteger = "le secret de " + personne

    elif cible == "un objet personnel":
        proteger = objet_pers[randrange(len(objet_pers))] + "."

    elif cible == "un convoi":
        proteger = type_convoi() + ".\nIl part dans " + str(randrange(
            1, 3, 1)) + " jour.s pour "
        proteger += zone()
        proteger += "\nLe voyage devrait durer " + str(randrange(
            1, 10, 1)) + " jour.s."

    else:  #"un lieu"
        proteger = type_lieu_ville()

    prenom = personne.split(" ")
    proteger += "\n" + menace(prenom[0], cible)

    return proteger
def mission_intercepter():
    """
	Ce que les héros doivent intercepter
	La date prévu de son arrivée dans la zone.

	Renvoie un texte.
	"""
    cible = interception[randrange(len(interception))]

    if cible == "un convoi":
        texte = type_convoi() + " qui vient de : " + zone(
        ) + "\n\nCe convoi doit arriver dans "

    elif cible == "des documents sensibles":
        texte = cible + " qui viennent de : " + zone() + "\n\nLe porteur est "
        texte += genere_affiche_perso_light() + "\nSon arrivée est prévu dans "

    else:  #"une lettre"
        texte = cible + " qui vient de : " + zone() + "\n\nLe porteur est "
        texte += genere_affiche_perso_light(
        ) + "\nSon arrivée est prévue dans "

    return texte + str(randrange(1, 3, 1)) + " jour.s."
def ou_en_ville():
    """
	Indique une direction cardinale et une distance (parfois en jours de marche)
	pour une zone en ville.

	Renvoie un texte.
	"""
    point = quelle_zone[randrange(len(quelle_zone))]

    if point == "ici":
        texte = "tout près d'ici, " + rose_vent[randrange(
            len(rose_vent))] + "."

    else:  #"ailleurs"
        texte = "dans " + zone() + "\nIl faudra " + str(randrange(1, 10, 1))
        texte += " jour.s de marche aux héros pour s'y rendre."

    return texte
def ou_nature():
    """
	Indique une direction cardinale et une distance (parfois en jours de marche)
	pour une zone dans la nature.

	Renvoie un texte.
	"""
    point = quelle_zone[randrange(len(quelle_zone))]

    if point == "ici":
        texte = "\nC'est " + rose_vent[randrange(len(rose_vent))] + " d'ici."

    else:  #"ailleurs"
        texte = "\nC'est " + rose_vent[randrange(
            len(rose_vent))] + " de : " + zone()

    texte += "\nIl faudra " + str(randrange(
        5, 10, 1)) + " jour.s de marche aux héros pour s'y rendre."

    return texte
    def set_particularites(self):
        """
		Pour chaque attribut vide, on génère une valeur.

		Si cette valeur est interdite pour l'attribut en cours
		de génération, la fonction boucle sur elle même.

		Pour un PNJ on appelle la fonction metier_pers(), pour
		un Pj, on pioche dans la liste classe_pers.

		Les valeurs des attributs générés sont enregistrées.

		Un pronom est définit en fonction du genre du personnage.
		"""

        if self.race == "":
            race = pers_race[randrange(len(pers_race))][:-1]
            if race not in self.races_proscrites:
                self.race = race
            else:
                self.set_particularites()

        if self.genre == "":
            genre = pers_genre[randrange(len(pers_genre))]
            if genre not in self.genre_proscrit:
                self.genre = genre
            else:
                self.set_particularites()

        if self.metier == "":

            if self.type == "pj":
                metier_long = classe_pers[randrange(len(classe_pers))]
            else:
                metier_long = metier_pers()

            metier_court = self.raccourcir_nom_metier(metier_long)
            if metier_court not in self.metiers_proscrits:
                self.metier = metier_long
            else:
                self.set_particularites()

        if self.ville == "":
            self.ville = zone() + "\n"

        if self.secret == "":
            self.secret = "à propos " + pers_secret[randrange(
                len(pers_secret))]

        if self.prenom == "":
            denomination = nom_pers(self.genre, self.race).split(" ")
            self.prenom = denomination[0]

        if self.nom == "":
            denomination = nom_pers(self.genre, self.race).split(" ")
            self.nom = denomination[1]

        if self.age == "":
            self.age = pers_age[randrange(len(pers_age))]

        if self.leitmotiv == "":
            self.leitmotiv = leitmotiv[randrange(len(leitmotiv))]

        if self.genre == "masculin":
            self.pronom = "Il"

        elif self.genre == "féminin":
            self.pronom = "Elle"

        else:
            self.pronom = "Iel"