Results 1 to 11 of 11

Thread: EDDI : édition 3.1.x

  1. #1

    EDDI : édition 3.1.x

    J'ouvre ce sujet pour présenter ce petit programme, y placer les informations, tutos et modification de façon à ce que chercher ce qui peut intéresser les utilisateurs (et utilisateurs potentiels) soit plus aisé.
    Je vais usé (et abuser) des spoiler afin que le message ne mette pas trois jours à s'afficher.


    Suite à l'arrivée de ED3.3 et des modifs liés à cela sur EDDI, j'éditerai peut-être ce sujet




    EDDI : c'est où?

    On peut trouver des informations et les listing du programme sur le site GitHub, sur la page du groupe EDCD/EDDI

    La dernière version est sur la page releases

    EDDI : c'est quoi?

    EDDI est un programme pour Windows qui va "voir" des évènement en jeu, et lancer un message vocal lié à cet évènement.
    Par exemple, en vendant des marchandises, EDDI sera capable de "dire" ce que vous avez vendu, et les bénéfices ou pertes de la vente.

    Ce programme ne provoque pas d'action, il ne fait que décrire ce qui se passe. Pour avoir des actions en plus, il faut utiliser EDDI comme plugin de VoiceAttack un logiciel payant, utilisable sur Windows et qui répond à des commandes vocale, ou par clavier, pour faire des actions pré-programmées ou, par exemple une programme comme JESS que l'on a sur ce forum.
    EDDI peut fonctionner très bien de façon autonome (ce qui est mon cas)

    Certains (voire beaucoup) parlent d'IA pour VoiceAttack+EDDI, personnellement, je trouve que c'est un peut galvaudé, ça n'apprend pas, c'est aussi intelligent qu'un répondeur téléphonique automatique.

    Le défaut principal de EDDI est dans son avantage, la fonction "Text to Speech" qui permet de "lire" un fichier texte par une voix synthétique. C'est aussi expressif qu'un GPS, mais, c'est ultra souple. Si on compare avec des phrase pré-enregistrées, puis retravaillées avec un logiciel de son, pour la phrase "Dommage critique, éjection d'urgence", avec EDDI, ce sera dit avec le même ton que "voila une pomme, je vais la peler et la manger". Avec une phrase pré-enregistrée, on peut donner un ton dramatique à l'enregistrement, mais c'est une autre technologie, et si on veut finalement changer la phrase prononcée, avec EDDI, il suffira de la modifier au clavier, en tapant au bon endroit par exemple "Dommage fatal, éjection enclenchée". Avec l'autre solution, ça fait pas mal de taf (dont je ne me sens pas capable, et en plus, j'ai pas envie)
    Des fonctions implémentées depuis quelques temps permettent de modifier la vitesse, le pitch et d'autres structures de ce qui est dit, à maitriser pour humaniser tout ça.

    La version décrite est la 3.1

    En plus du programme principal EDDI, il y a des "plugin", des fonctionnalités additives qui viennent s'insérer, pour apporter plus de fonctions, ou des liens comme par exemple avec le site EDSM - Elite Dangerous Star Map qui est un site communautaire très actif.
    Ces "Plugin" sont sous la forme de différents onglets, qui peuvent être activés, ou désactivés selon vos souhaits


    EDDI : écran de démarrage




    Comme vous pouvez le voir, c'est en français, mais on peut choisir sa langue d'utilisation sur cet onglet





    Onglet : Commander Detail






    Là vous pouvez inclure de petits détails personnels qui seront ensuite utiliser dans ce que dit EDDI.





    Onglet : Frontier API


    C'est dans cet onglet que l'on active le lien avec le jeu. Par mesure de sécurité il y a une procédure à suivre, imposée par les créateurs du jeu.
    Les utilisateurs d'autres logiciel d'aide comme TFS, et autre connaissent bien ce cotés.
    Cela permet à EDDI de récupérer les données en jeu sur les stations où vous êtes, des données sur votre vaisseau, etc...


    Dans Email il faut mettre le mail que vous uttilisez pour vortre compte pour le jeu Elite Dangerous
    Dans Password, il faut mettre le mot de passe de ce compte
    puis cliquer sur NEXT, la fenètre changera un peu



    Il vous faudra aller chercher un code dans votre adresse email, et le mettre dans la case "CODE"

    vous devriez avoir ceci








    Onglet : Text To Speech



    Ici on va travailler sur la voix (je connais peut cette parie, je suis contant avec la "Windows TTS Default"



    Volume de la voix : vous réglez le volume sonore des discours
    vitesse de la voix : là, vous réglez la vitesse, le débit du flot de parole
    niveau de traitement de la voix : vous pouvez régler le "style" de la voix, de la manière humaine naturelle à très distordue/robotique

    déformer la voix .....: si c'est coché, la voix sera déformée si votre vaisseau atteint un certain seuil de dégâts

    désactive le langage phonétique: EDDI utilise pour certains cas une utilisation d'un alphabet phonétique pour des mots ou des noms difficiles à prononcer, Certaines voix peuvent avoir des problèmes avec la prononciation phonétique, donc si vous rencontrez des problèmes, cochez cette case

    Activer ICAO : si vous activez cette case, vous aurez la fonction qui remplace les lettre séparées dans les noms des systèmes en mots reconnaissable. Par exemple si vous avez dans le nom d'un système "A T C", ce ne sera pas prononcé "A T C", mais "Alpha Tango Charlie". Cela peut devenir (très) long avec certains noms de système



    Onglet : EDDP Monitor




    Pour configurer le plugin EDDP, il faut aller sur l'onglet et bien vérifier que la case "plugin activé" est bien cochée


    ensuite il faut cliquer sur le bouton en bas "Nouvel Observateur", une nouvelle ligne apparait, qui vous permet de définir ce que vous voulez surveiller comme information (il peut y avoir plusieurs lignes)



    Pour les colonnes :
    Name : le nom que vous donnez à la surveillance
    System : à remplir si vous voulez surveiller un système en particulier
    Faction : idem pour les factions (à vrai dire, j'ai pas encore testé)
    State : l'état que vous voulez surveiller (bandeau déroulant)
    Max distance from ship : surveille uniquement si la distance de l'évènement est inférieure à ce que vous donnez
    Max distance from home : idem mais par rapport à votre système principal qui est défini sur l'onglet "Commander Details"

    Donc si on veut créer 3 surveillances
    la première va surveiller tous les évènements sur Edge Fraternity Landing, que je vait appeler "colonia"
    le second va surveiller tous les dépars de guerres civiles à 100 années lumières de distance je vais l'appeler "guerre" (certains évènements sont importants)
    le troisième surveillera tous les évènements à 50 AL de chez moi, je vais le nommer "maison"

    Et vous serez renseigné en temps réel de tous les évènements demandés

    La suite plus tard.....

  2. #2
    Onglet : Moniteur GALNET




    L'onglet est activable par la case à cocher



    Plugin qui fait le lien avec les informations du site Galnet (flux rss si j'ai bien compris). Un menu déroulant donne le choix entre plusieurs langues. Chose étrange, j'ai choisi le français.
    Grand merci en passant pour l'équipe de traducteurs, ce qui permet d'avoir les infos en français.
    Juste une petite remarque, si thargoid pourvait être écrit thargoïde, avec les deux points sur le i et le e aprés, pour être prononcé comme Moïse, et non pas comme doigt, car EDDI a certaines limitations ce serait vraiment génial. (sinon, je vait tenter la modif à la volée via script)

    La dernière case à cocher permet, si cocher de lire les infos Galnet lorsque vous n’êtes pas en jeu.



    Onglet : Moniteur de matériaux






    La case à cocher active ou désactive le plugin

    Affiche dans le tableau la liste des matériaux avec 4 colonnes chiffrées dont 3 ne sont plus vraiment utiles
    Inventaire==> ce que vous avez actuellement en stock
    Minimum ==> valeur que vous choisissez. Durant le jeu vous aurez une alerte vocale qui vous indiquera lorsque vous passez en dessous de ce minimum, et d'autres fonctions qui sont liées à un usage avec VoiceAttack, comme sortir l'inventaire de toutes les matières en dessous de ce minimum
    Desiré ==> la valeur qui vous semble la bomme à avoir dans votre inventaire. Lié à des messages en jeu quand vous récoltez, ou utilisez cette matière et aussi pour une utilisation avec VoiceAttack
    Maximum ==> le maximum de cette matière que vous voulez en soute, lié a des alertes vocales en jeu et utilisable avec VoiceAttack

    Mon avis : un reste du bon vieux temps où les matériaux transportables étaient vraiment restreint avec un max total transportable qui nécessitait de faire des choix

    Pour classer les liste on peut cliquer sur l’entête.
    Si vous voulez faire un classement double, par exemple classer par type, et dans les types, par ordre alphabétique, clic en premier sur type, puis appuyez sur shift et cliquer sur Nom





    Onglet : Moniteur de vaisseau





    La case à cocher active ou désactive le plugin

    Votre liste de vaisseau s'y incrémentera au fur en en mesure de vos achats - échanges - utilisations si vous avez activer le lien avec le jeu dans l'onglet "Frontier API"

    la colonne Role : bandeau à choix multiple, peut avoir de l'influence sur ce qui est dit plus tard.
    Nom (Phonétique) : Nom de votre engin en phonétique, par exemple étoile du soir devra s'écrire en phonétique etwal dy swaʁ, à utiliser si vous avez des noms bien biscornu. Lien vers un éditeur phonétique
    écouter : bouton pour vous permettre d'écouter la prononciation du nom
    Exporter : bouton pour envoyer les données de votre vaisseau vers le site Coriolis ou EDShipyard fonction de ce qui est choisi juste au dessus du tableau



    Onglet : Moniteur EDDN






    La case à cocher active ou désactive le plugin

    Envoie automatiquement (si activé) les données des stations, de vos sauts, et scan vers un site tiers EDDN.
    EDDN est une base de donnée utilisée par différents utilitaires liés au jeu, pour faire des recherche de produits, prix, équipement pour vaisseaux etc....




    Onglet : Moniteur EDSM





    La case à cocher active ou désactive le plugin

    Pour utiliser ce plugin, il vous faudra vous inscrire sur le site EDSM (Elite: Dangerous Star Map)
    Un fois inscrit, vous pourrez demander dans votre profil une clé API pour la mettre dans la case "clef API EDSM" et compléter avec votre nom dans la case "Nom du commandant EDSM"

    EDSM est un autre site tiers, très utilisé. Avec cet onglet, vos données de vol y seront envoyées, et les échanges entre EDSM et EDDI apporte un plus sur les phrases qui peuvent être dites, comme par exemple, si vous mettez des commentaires privées dans les pages décrivant les systèmes, ces commentaires pourront être lu lorsque vous faites un saut spatial vers ce système.

    Le bouton "récupérer les journaux EDSM" est a utiliser pour télécharger vos données enregistrées sur EDSM. Comme cela, les deux parties seront synchrone avec les même données (normalement, à ne faire qu'une fois, ou si vous avez jouer en transférant vos donner à EDSM sans utiliser EDDI, pour resynchroniser le tout.



    Onglet : Répondeur Voice Attack



    ne pas négliger tout ce qui est écrit la dedans

    La case à cocher active ou désactive le plugin

    Doit être activé si vous voulez utiliser EDDI avec Voice Attack



    Onglet : Répondeur Vocal




    La case à cocher active ou désactive le plugin

    Copier le texte......speechresponder.out : case à cocher, écrira tout ce qui se dit dans le fichier en question (attention, le fichier devient vite très gros)

    Ne pas parler .......ci dessus : case à cocher, si vous activer l'écriture ci dessus et ceci, EDDI ne parle plus et ne fait qu'écrire dans le fichier

    ---------------------------------------
    Le cœur de la bête, c'est là que sont tous les scripts liés aux évènements du jeu, car oui, les réactions ne sont que (façon de parler) des scripts.

    Il y a plusieurs colonnes
    Nom: Nom du script (souvent lié à l'évènement)
    Activé : case à cocher si on veut désactiver un script, on décoche
    Description : un petit descriptif de la fonction du script (en anglais en général)
    Tester : bouton servant à tester le script (si on appuis et qu'il ne se passe rien, ça veut pas forcément dire qu'il y a un soucis, par contre, si vous avez un message d'erreur...)
    Voir: permet de voir le script mais ne permet pas de modification
    Modifier: permet de modifier le script
    Effacer: pour effacer le script, certains ne peuvent pas l'être, se sont en quelque sorte des scripts Maîtres.

    Le Profil Actif est un bandeau déroulant à choix multiple, à utiliser quand vous avez plusieurs sets de scripts
    Quand vous venez d’installer le logiciel, il n'y a pas de choix.

    Pour avoir plus de choix , il y a deux solutions, s'en créer soi même, soit utiliser ce qui est mis à votre disposition.

    Pour en créer soi même, il faut cliquer sur le bouton "Copier le Profil" en bas au centre, et lui donner un nom, là, c'est parti.

    Pour installer une personnalité que vous avez téléchargé, il faut la mettre dans le répertoire : "C:\Users\OOOO\AppData\Roaming\EDDI\personalities"
    le OOOO représentant le nom d'utilisateur que vous avez sur votre PC.

    Sur l'image ci dessus, vous pouvez voir que j'utilise une personnalité nommée "EDDI French"




    La francisation de EDDI


    Les gars de EDCD EDDI ont bien travaillé, et beaucoup ont aidé à faire des traductions en plusieurs langues, donc, l'interface est totalement traduite, pour les scripts, ça viendra...


    Onglet : Moniteur de Mission



    La liste des missions que vous avez acceptées, avec la possibilité de mettre un rappel d'alerte avant l'expiration de chacune.



    Onglet : Moniteur de Mission





    Pour suivre l'évolution de ce que vous avez en soute, lier aussi avec vos missions de livraison... bien pratique tout ça....



    Plus d'information sur le comment scripter : Cottle Documentation (en anglais)

    Si on veut modifier un script, on arrive sur cette fenètre :

    Le bouton aide vous informera sur toutes les fonctions créées pour EDDI, le bouton variables vous listera les variables, le tout en anglais à la date où j’écris tout ça.


    Liste de script


    Ces scripts ne sont pas les scripts absolus ils ne sont pas forcément fait par moi, pour beaucoup, ils ne sont qu'une traduction/interprétation de ce qui a déjà été fait en anglais. Ils ne sont en fait que ceux que j'utilise. Tout commentaire, modifs etc... sont bien venus

    Voici l'ensemble des scripts ci dessous du nom de eddi frenchy.json zippé.
    Pour l'installer, il vous faudra dézipper le fichier

    eddi french 05-12-18.zip <edit du 05/12/18>

    et copier le eddi frenchy.json qu'il y a dedans dans votre répertoire
    C:\Users\votre_log\AppData\Roaming\EDDI\personalities\

    et aprés, ouvrez EDDI, onglet "Répondeur Vocal", et choisissez le avec le "Profil Actif"

    se lance en cas d'utilisation du MTA
    AFMU repairs Triggered when repairing modules using the Auto Field Maintenance Unit (AFMU)
    Code:
    {event.item} 
    {if event.repairedfully:
        Totalement réparé
    |else:
        partiellement répoaré
        {Occasionally(2, cat(
            "à ",
            Humanise(event.health*100), " ",
            "pourcent de fonctionalité"
        ))}
    }



    se lance aprés analise d'astéroïdes
    Belt scanned Triggered when you complete a scan of a belt
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'belt')}
    {SetState('eddi_context_last_action', 'scan')}
    {SetState('eddi_context_body_system', system.name)}
    {SetState('eddi_context_body_name', event.name)}
    {Pause(1000)}
    
    Scan de {P(event.name)} terminé. 
    Un amas de la ceinture d'astéroïde situé à {Humanise(event.distancefromarrival)} seconde lumière de l'étoile principale



    A utiliser en liaison avec voice attack principalement
    Blueprint make report Indique le nombre d'un Blueprint que nous pouvons faire
    Code:
    {_ Function to obtain current inventory of a material}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required:
                {return material}
            }
        }
    }
    
    {_ Fetch blueprint from state }
    {set blueprintname to state.blueprint}
    
    {_ set blueprintname to "Lightweight Kill warrant scanner grade 3"}
    
    {if blueprintname:
        {_ Fetch full blueprint details }
        {set Recette to BlueprintDetails(blueprintname)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'Recette')}
        {SetState('eddi_context_blueprint_name', blueprintname)}
    }
    
    {if !Recette:
        {_ Fetch from context }
        {set Recette to BlueprintDetails(state.eddi_context_blueprint_name)}
    }
    
    {set canbemade to 999}
    
    {if Recette:
        {_ Find the smallest number of this blueprint that can be made }
    
        {set cur to 0}
        {while cur < len(blueprint.materials):
            {set inventory to _inventory(Recette.materials[cur].material)}
            {if !inventory:
                {set canbemade to 0}
            |else:
                {if inventory.amount < canbemade:
                {set canbemade to inventory.amount}
                }
            }
            {set cur to cur + 1}
        }
    
        {if canbemade = 0:
            Vous ne pouvez pas faire de {blueprintname}
        |elif canbemade = 1:
            Vous pouvez en faire un {blueprintname}
        |else:
            Vous pouvez faire {canbemade} {blueprintname}
        }
    |else:
        Aucune information disponible sur les matériaux requis pour {blueprintname}
    }.


    A utiliser en liaison avec voice attack principalement
    Blueprint material report Donne les matières nécessaires pour une recette
    Code:
    {_ Fetch blueprint from state }
    {set blueprintname to state.blueprint}
    
    {_ set blueprintname to "Shielded Kill warrant scanner grade 5"}
    
    {if blueprintname:
        {_ Fetch full blueprint details }
        {set blueprint to BlueprintDetails(blueprintname)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'blueprint')}
        {SetState('eddi_context_blueprint_name', blueprintname)}
    }
    
    {if !blueprint:
        {_ Fetch from context }
        {set blueprint to BlueprintDetails(state.eddi_context_blueprint_name)}
    }
    
    {if blueprint:
        {set materials to len(blueprint.materials)}
        {blueprintname} nécessite 
        {if materials = 1:
            l'élément {blueprint.materials[0].name}
        |elif materials = 2:
            les éléments {blueprint.materials[0].name} et {blueprint.materials[1].name}
        |else:
            {set cur to 0}
            {while cur < len(blueprint.materials):
                {if cur = 0:
                    les éléments {blueprint.materials[cur].name}
                |elif cur < len(blueprint.materials) - 1:
                    , {blueprint.materials[cur].name}
                |else:
                    , et {blueprint.materials[cur].name}
                }
                {set cur to cur + 1}
            }
        }
    |else:
        aucune information pour {blueprintname}
    }.


    Je ne l'utilise plus, tout est dans un autre
    Body report Function to report on the details of the contextual body
    Code:
    {_ je n'utilise plus ce script}


    Se lance quand on a les données d'analyse d'une planète ou d'une géante
    Body scanned Triggered when you complete a scan of a planetary body
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'body')}
    {SetState('eddi_context_last_action', 'scan')}
    {SetState('eddi_context_body_system', system.name)}
    {SetState('eddi_context_body_name', event.name)}
    
    {Pause(1000)}
    
    {set reportbody  to BodyDetails(state.eddi_context_body_name, state.eddi_context_body_system)}
    {if !event.name || event.name = "": {set reportbody to BodyDetails(state.eddi_context_body_name)} }
    
    
    Scan {OneOf("Terminé", "compilé", "fini", "interprété")}.
    {set shortBodyName to event.name}
    {set systemName to system.name}
    {set sysNameLen to len(systemName)}
    {if len(shortBodyName) > sysNameLen && eq(systemName, slice(shortBodyName, 0, sysNameLen)):
     
      {if find(event.planettype, "éante")<=0:
       {set shortBodyName to cat("La planète numéro ", slice(shortBodyName, sysNameLen))}
      |else :
       {set shortBodyName to cat("La géante numéro ", slice(shortBodyName, sysNameLen))}
      }
     }
    
     
     {set QualityRing to event.reserves}
     {set NbreRing to len(event.rings)}
     {set WithCluster to false}
     {set WithRing to false}
     {for Rings in event.rings:
      {if find(Rings.name , "Belt") >= 0:
       {set WithCluster to true}
      |elif  find(Rings.name , "Ring") >= 0:
       {set WithRing to true}
      }
      }
     {OneOf("{P(event.name)} ", "ce corps céleste ", "{shortBodyName} ")},
    de type 
    {if find(event.planettype, "Classe I g")>=0: Classe 1 géante gazeuse
    |elif find(event.planettype, "Classe V g")>=0: Classe 5 géante gazeuse
    |else: {event.planettype},
    }
    {if find(event.planettype, "éante")<=0: {event.terraformstate}},
    {OneOf(" a ", " possède ", " génère ")}
     une gravité de
       {if event.gravity<1 :{round(event.gravity, 2)} 
       |else: {round(event.gravity, 1)} 
       }Gé,
     ce qui est
     {if event.gravity < 0.5:
      faible...
     |elif event.gravity <2:
      une gravité moyenne...
     |elif event.gravity <4:
      plutôt élevé...
     |elif event.gravity <7:
      trés élevée...
     |elif event.gravity <20:
      extrèmement élevée...
     |elif event.gravity <100:
      extrème...
     |else:
      digne des records...
     }
     
    
     {if event.tidallylocked:
      {shortBodyName} a une rotation synchrone.
     }
     
    
    {if NbreRing > 0:
     Avec {NbreRing} anneau de type
      {set ringcomposition to []}
            {for Ring in event.rings:
       {set ringcomposition to cat(ringcomposition, [Ring.composition])}
            }
            {if len(ringcomposition)= 1:
       {ringcomposition[0]}
            |elif len(ringcomposition) = 2:            
       {ringcomposition[0]} pour le premier et de 
       {ringcomposition[1]} pour le second.
            |elif len(ringcomposition) > 2:
                {set cur to 0}
                {while cur < len(event.rings):
                    {if cur = 0:                    
         {ringcomposition[cur]}
                    |elif cur < len(ringcomposition) - 1:
                        , de {ringcomposition[cur]}  
                    |else:
                        , et de {ringcomposition[cur]} pour le dernier
                    }
                    {set cur to cur + 1}
                }
            }
            {if find(QualityRing , "Pristine") >= 0:
                {OneOf("et étant inexploités jusqu'à présent", "étant vierge de toutes exploitation industrielle", "avec une concentration majeure de matière dedans", "avec une concentration très riche de matière dedans", "avec de trés grandes réserves de matière dedans")} 
            |elif find(QualityRing , "Major") >= 0:
                {OneOf("avec concentrations riche", "avec haute concentration", "avec un Haut niveau", "avec de fortes réserves", "avec de grandes réserves")} de matière dedans
      |elif find(QualityRing , "Common") >= 0:
                {OneOf("ayant concentrations moyenne de matière dedans", "une quantité standard de matière dedans", "quelques matières exploitables dedans")} 
      |elif find(QualityRing , "Low") >= 0:
                {OneOf("peu de matières exploitables dedans", "une faible quantité de matière dedans", "une faible concentration de matière dedans")} 
      |elif find(QualityRing , "Depleted") >= 0:
                {OneOf("presque plus de matières exploitables dedans", "quelques échantillons de matières dedans", "presque plus que de la poussière de matières exploitables dedans")} 
    
      }...
        }
    
    
    
    
     L'atérissage y est
    
     {if reportbody.landable:
      possible
     |else:
      impossible actuellement
     }
     .
    
    
    
     {_ Atmosphere? }
    
     {_ Volcanism}
      {set volcanisme to event.volcanism.composition}
     {if event.volcanism.type = "Magma":
      Il y a
      {if event.volcanism.amount = Major:
       {OneOf("de nombreuses", "quantité de", "beaucoup de")}
      |elif event.volcanism.amount = Minor:
       {OneOf("quelques", "ici et là, des", "peu de")}
      }
      coulées de lave 
    {if StartsWithVowel(volcanisme): d'{volcanisme} |else : de {volcanisme}}
      sur la surface.
     |elif event.volcanism.type = "Geysers":
      Il y a
      {if event.volcanism.amount = "Major":
       {OneOf("de nombreux", "quantités de", "beaucoup de")}
      |elif event.volcanism.amount = "Minor":
       {OneOf("quelques", "des", "peu de")}
      |elif event.volcanism.amount = []:
       des
      }
      gésers 
    {if StartsWithVowel(volcanisme): d'{volcanisme} |else : de {volcanisme}}
      {OneOf("détecté", "présent")} sur la surface.
     }
    
     {if reportbody.landable :
       la rotation
      {if event.rotationalperiod <= 0.5:
       rapide
      |elif event.rotationalperiod > 20.0:
       lente
      }
      s'étale sur une période de {round(event.rotationalperiod,2)} jours.
    
      {set goodmaterials to []}
      {set greatmaterials to []}
      {for material in event.materials:
       {if material.percentage >= MaterialDetails(material.material).greatpctbody:
        {set greatmaterials to cat(greatmaterials, [material])}
       |elif material.percentage >= MaterialDetails(material.material).goodpctbody:
        {set goodmaterials to cat(goodmaterials, [material])}
       }
      }
    
      {if len(greatmaterials) > 0:
       Cette planète a une forte concentration de minerai:...
       {if len(greatmaterials) = 1:
          {greatmaterials[0].name}
        avec un taux de {round(greatmaterials[0].percentage, 1)} pour cent
       |elif len(greatmaterials) = 2:
        {greatmaterials[0].name}
        avec {round(greatmaterials[0].percentage, 1)} pour cent ainsi que 
        {greatmaterials[1].name)}
        avec {round(greatmaterials[1].percentage,1)} pour cent
       |else:
        {set cur to 0}
        {while cur < len(greatmaterials):
         {if cur = 0:
          {round(greatmaterials[cur].percentage, 1)} pour cent en
          {greatmaterials[cur].name}
         |elif cur < len(greatmaterials) - 1:
          , ainsi que {round(greatmaterials[cur].percentage, 1)} pour cent en
          {greatmaterials[cur].name}
         |else:
          , et finalement {round(greatmaterials[cur].percentage, 1)} pour cent en
          {greatmaterials[cur].name}
         }
         {set cur to cur + 1}
        }
       }
      }.
      
      {if len(goodmaterials) > 0:
       {if len(greatmaterials) > 0:
        Ainsi que de bonnes concentrations en :
       |else:
        Cette planète a de bonnes concentrations de
       }
       {if len(goodmaterials) = 1:
       {goodmaterials[0].name}
        avec {round(goodmaterials[0].percentage, 1)} pourcent.
       |elif len(goodmaterials) = 2:
       {goodmaterials[0].name}
        avec {round(goodmaterials[0].percentage, 1)} pourcent et aussi 
        {goodmaterials[1].name}
     avec {round(goodmaterials[1].percentage, 1)} pourcent.
       |else:
        {set cur to 0}
        {while cur < len(goodmaterials):
         {if cur = 0:
      {goodmaterials[cur].name}
          avec {round(goodmaterials[cur].percentage, 1)} pourcent
         |elif cur < len(goodmaterials) - 1:
          , ainsi que {goodmaterials[cur].name}
       avec {round(goodmaterials[cur].percentage, 1)} pourcent
         |else:
          , et finalement {goodmaterials[cur].name}
       avec {round(goodmaterials[cur].percentage, 1)} pourcent.
         }
         {set cur to cur + 1}
        }
       }
      }
      {if len(greatmaterials) > 0 || len(goodmaterials) > 0:
       .
      |else:
       Quantités des matériaux présents en dessous ou dans la moyenne.
      }
    
     }
    
    
    {if event.estimatedvalue:
     Valeur estimée {OneOf("du scann", "de l'étude", "du sondage")}: 
     {set BodyValue to Humanise(event.estimatedvalue)}
     {if find(BodyValue, "route")>=0:
      {set BodyValue to cat("vers les ", slice(BodyValue, 14))}
     }
       {BodyValue} crédits.
    }

  3. #3
    Liste des scripts individuels ... suite...


    Déclenché lorsque vous recevez un récompense de combat
    Bond awarded Triggered when you are awarded a combat bond
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bond')}
    {SetState('eddi_context_last_action', 'award')}
    {SetState('eddi_context_bond_amount', event.reward)}
    {SetState('eddi_context_bond_faction', event.awardingfaction)}
    
     {OneOf("Vaisseau", "Engin")} {event.victimfaction} {OneOf("détruit", "éliminé", "Abattu")},
     {OneOf('vous recevez','vous avez reçu','arrivée de ')}
     {event.reward} 
     {OneOf("crédits en banque","crédits dans votre compte","crédits pour vos grands efforts")},
    {Occasionally(3, "de la part de la faction {event.awardingfaction}")}.



    Se lance lorsque l'on demande le paiement de récompenses de combat
    Bond redeemed Triggered when you redeem a combat bond
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bond')}
    {SetState('eddi_context_last_action', 'redeem')}
    {SetState('eddi_context_bond_amount', event.amount)}
    
    Récompance de combat de {Humanise(event.amount)} crédits encaissé
    {Occasionally(2, "
     {if len(event.rewards) = 1:
      par {P(event.rewards[0].faction)}
     |else:
      par
      {set cur to 0}
      {while cur < len(event.rewards):
       {if cur = 0:
       |elif cur < len(event.rewards) - 1:
        ,
       |else:
        et
       }
       {P(event.rewards[cur].faction)}
       {set cur to cur + 1}
      }
     }
    ")}.


    Déclenché lorsque vous obtenez une prime
    Bounty awarded Triggered when you are awarded a bounty
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bounty')}
    {SetState('eddi_context_last_action', 'award')}
    {SetState('eddi_context_bounty_name', event.target)}
    {SetState('eddi_context_bounty_faction', event.faction)}
    {SetState('eddi_context_bounty_amount', event.reward)}
    
    {Pause(500)}
    {if len(event.rewards) = 1:
        Récompense de {Humanise(event.reward)} crédits reçu par {P(event.rewards[0].faction)}
    |elif len(event.rewards) > 1:
        Reçu un total de {Humanise(event.reward)} crédits sur  {len(event.rewards)}  récompenses
        {Occasionally(2, " par {set cur to 0} {while cur < len(event.rewards): {if cur = 0:  |elif cur < len(event.rewards) - 1:, |else: , et} {P(event.rewards[cur].faction)} {set cur to cur + 1}}")}.
        {if event.shared: à partager avec vos compagnons de vol}.
    }


    se déclenche lorsque vous prenez une prime sur votre tête
    Bounty incurred Triggered when you incur a bounty
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bounty')}
    {SetState('eddi_context_last_action', 'incur')}
    {SetState('eddi_context_bounty_name', event.victim)}
    {SetState('eddi_context_bounty_faction', event.faction)}
    {SetState('eddi_context_bounty_amount', event.bounty)}
    
    {P(event.faction)} vous recherche, votre tête est mise à pris pour {event.bounty} crédits pour le crime commis sur {event.victim} par {event.crime}.


    s'enclenche lorsque vous payer les primes que vous encourez
    Bounty paid Triggered when you pay a bounty
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bounty')}
    {SetState('eddi_context_last_action', 'pay')}
    {SetState('eddi_context_fine_amount', event.amount)}
    
    
    Règlement de {Humanise(event.amount)} credits des primes sur votre compte.


    se déclenche lorsque vous encaissez les primes que vous avez victorieusement chassé <edité le 07/12/18 pour prendre en compte les primes reçues par interstellar factor>
    Bounty redeemed Triggered when you redeem a bounty voucher
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'bounty')}
    {SetState('eddi_context_last_action', 'redeem')}
    {SetState('eddi_context_bounty_amount', event.amount)}
    
     
    Les primes récoltés vous raportent {Humanise(event.amount)} crédits 
    {if Humanise(event.brokerpercentage) != "zéro":
     {Occasionally(2, "par l'intermédiaire d'interstellar factor")}.
    |else:
     {Occasionally(2, "
     {if len(event.rewards) = 1:
       de la part de{P(event.rewards[0].faction)}
     |else:
      par
        {set cur to 0}
        {while cur < len(event.rewards):
        {if cur = 0:
        |elif cur < len(event.rewards) - 1:
        ,
        |else:
        et
        }
        {P(event.rewards[cur].faction)}
        {set cur to cur + 1}
        }
     }
     ")}.
    }


    utilisé avec les missions de transfert de marchandises
    Cargo depot Triggered when engaging with a mission depot
    Code:
    {_ Cargo depot }
    {_ Triggered when engaging with a mission depot }
    
    
    {if event.updatetype = "Collect":
        Vous avez chargé {event.amount} tonne{if event.amount != 1:s}  
     {if StartsWithVowel(event.commodity): d'|else: de }{event.commodity} pour votre mission.
    |elif event.updatetype = "Deliver":
        Vous avez livrer {event.amount} tonne{if event.amount != 1:s}  
     {if StartsWithVowel(event.commodity): d'|else: de }{event.commodity} pour votre mission.
    
        {Pause(500)}
        {set remaining to event.totaltodeliver - event.delivered}
        {set haulage to HaulageDetails(event.missionid)}
    
        {if find(haulage.name, "Wing") > -1:
            {set Mtype to "en escadrille"}
        |elif find(haulage.name, "Rank") > -1:
            {set Mtype to "pour la flotte"}
        |else:
            {set Mtype to "en Solo"}
        }
    
        {if remaining = 0:
            Ce qui complète votre mission {Mtype}.
        |else:
            Ce qui vous ammène à {round(event.delivered / event.totaltodeliver * 100, 0)} pourcent de votre mission {Mtype}.
        }
    }


    S'enclenche à l'ouverture et à la fermeture de l'écoutille de soute
    Cargo scoop Triggered when you deploy or retract your cargo scoop
    Code:
    {_ Context }
    
    {if state.cargo_scoop= "fermée":
     {SetState("cargo_scoop", "ouverte")}
    |else : {SetState("cargo_scoop", "fermée")}
    }
    
    écoutille de soute {state.cargo_scoop}.


    S’enclenche lorsqu'un équipier d'escadrille charge ou dépose des marchandises en rapport avec une mission de livraison
    Cargo wingupdate Triggered when a wing-mate collects or delivers cargo for a wing mission
    Code:
    {_ Cargo wingupdate }
    {_ Triggered when a wing-mate collects or delivers cargo for a wing mission }
    
    {_ respectez les espaces, et sans espace pour une bonne lecture de "d'..." et "de ....."}
    {if event.updatetype = "Collect":
        Your wing mate has collected {event.amount} tonne{if event.amount != 1:s}
        {if event.commodity != "Unknown": of {event.commodity}} from the mission depot.
    |elif event.updatetype = "Deliver":
        Your wing mate has delivered {event.amount} tonne{if event.amount != 1:s} 
        {if event.commodity != "Unknown": of {event.commodity}} to the mission depot.
    }
    
    {Pause(500)}
    {set remaining to event.totaltodeliver - event.delivered}
    {if remaining = 0:
        Wing mission requirements are now completed.
    |elif event.updatetype = "Deliver":
        Wing mission is now {round(event.delivered / event.totaltodeliver * 100, 0)} percent complete.
    }


    S'enclanche lorsque vous effacez votre compte
    Cleared save Triggered when you clear your save
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'save')}
    {SetState('eddi_context_last_action', 'clear')}
    
    Au revoir {F("Honorific")}. Ce fut un plaisir de vous servir.


    Liste des scripts individuels ... suite 2...
    Le retour de la vengeance


    Se lance quand votre verrière se brise
    Cockpit breached Triggered when your ship's cockpit is broken
    Code:
    {_ Context }
    {_SetState('eddi_context_last_subject', 'cockpit')}
    {_SetState('eddi_context_last_action', 'breach')}
    
    {OneOf('Cest moi, ou il fait froit ici?','Bon, jespère que vous savez où est votre casque!','Brèche détecté, cest le moment de sassurer de votre réserve doxygène','Fissures en formation sur la verrière, danger!')}.


    Lorsque vous avez une promotion en combat
    Combat promotion Triggered when your combat rank increases
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'rank')}
    {SetState('eddi_context_last_action', 'promotion')}
    {SetState('eddi_context_rank_name', 'combat')}
    {SetState('eddi_context_rank_amount', event.rating)}
    
    {OneOf("Vos compétances aux combats sont reconnues dans toute la galaxie, vous êtes prommu au rang :","Vous êtes reconnu pour vos compétences de combat, vous prennez le grade de :")} {event.rating}...


    Lorsque vous revenez en jeu
    Commander continued Triggered when you continue an existing game
    Code:
    {OneOf("Bienvenue","Bonjour","Je suis heureux de vous revoir")} {F("Honorific")}.


    pour savoir ce qu'il vous reste à parcourrir jusqu'au rang suivant <edit du 06/11/18 pour un texte que je préfère>
    Commander progress Triggered when your progress is reported
    Code:
     {_ non utilisé actuellement ?? je ne sais pas, créé au cas ou, mais je passe raremant de rang}
    {_ variables possibles : les pourcentages dans les différent rangs}
    
    {_ par exemple event.combat vous donnera le % que vous avez dans votre rang actuel}
    {_ 100-(event.combat) cauq qu'il vous reste à parcourir pour monter de rang}
    
    
     {if event.combat>0 : 
      {set promotion to 100-event.combat}
    	{if cmdr.combatrating.rank = 8:
    		Rang {cmdr.combatrating.name} en combat.
    	|else :
    		Rang {cmdr.combatrating.name} en combat, plus que {promotion} pourcent pour le suivant.
    	}
     }
     {if event.trade>0 : 
      {set promotion to 100-event.trade}
    	{if cmdr.traderating.rank = 8:
    		Rang {cmdr.traderating.name} en commerce.
    	|else :
    		Rang {cmdr.traderating.name} en commerce, plus que {promotion} pourcent pour le suivant.
    	}
     }
     {if event.exploration>0 : 
      {set promotion to 100-event.exploration}
    	{if cmdr.explorationrating.rank = 8:
    		Rang {cmdr.explorationrating.name} en exploration.
    	|else :
    		Rang {cmdr.explorationrating.name} en exploration, plus que {promotion} pourcent pour le suivant.
    	}
     }
     {if event.cqc>0 : 
      {set promotion to 100-event.cqc}
    	{if cmdr.cqcrating.rank = 8:
    		Rang {cmdr.cqcrating.name} dans le championnat CQC.
    	|else :
    		Rang {cmdr.cqcrating.name} en CQC, plus que {promotion} pourcent pour le suivant.
    	}
     }
     {if event.empire>0 : 
      {set promotion to 100-event.empire}
    	{if cmdr.empirerating.rank = 14:
    		Déjà roi dans l'empire.
    	|else :
    		Plus que {promotion} pourcent pour le suivant rang dans l'empire.
    	}
     }
     
     {if event.federation>0 : 
      {set promotion to 100-event.federation}
    	{if cmdr.federationrating.rank = 14:
    		Déjà Amiral dans la flotte de la fédération.
    	|else :
    		Plus que {promotion} pourcent pour le suivant rang dans la fédération.
    	}
     }


    se lance au démarrage du jeu, ou à utiliser avec Voice Attack pour demander vos rangs
    Commander ratings Triggered when your ratings are reported
    Code:
    {_ mise à jours de tous les rangs}
    {_ les variables sont les obget des différents rang}
    
    {_ par exemple event.combat vous donnera le nom de votre rang actuel}
    
    vos rangs actuels sont :
    combat : {event.combat}...
    commerce : {event.trade}...
    exploration : {event.exploration}...
    Cékucé : {event.cqc}...
    empire : {event.empire}...
    fédération : {event.federation}...


    lorsque vous démarrer le jeu
    Commander started Triggered when you start a new game
    Code:
    Bienvenu, Commandeur.


    lorsque vous chargez une marchandise dans la soute du vaisseau ou du SRV
    Commodity collected Triggered when you pick up a commodity in your ship or SRV
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'commodity')}
    {SetState('eddi_context_last_action', 'collect')}
    {SetState('eddi_context_cargo_name', event.commodity)}
    
    L'unité de marchandise :
    {event.commodity}, {OneOf("viens d'être chargé.","est arimée dans la soute")}.


    Et lorsque l'on éjecte de la marchandise
    Commodity collected Triggered when you pick up a commodity in your ship or SRV
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'commodity')}
    {SetState('eddi_context_last_action', 'eject')}
    {SetState('eddi_context_commodity_name', event.commodity)}
    
    L'unité de marchandise :
    {event.commodity}, est bien éjectée.


    pour vérifier quels produites sont intéressants à accheter dans la station (avec voice attack?)
    Commodity purchase check Check to see which commodities are the best to purchase
    Code:
    {for commodity in station.commodities:
     {if commodity.stock > 0 && commodity.buyprice < commodity.avgprice:
      {set discount to commodity.avgprice - commodity.buyprice}
      {if discount > best.avgprice - best.buyprice:
       {set thirdbest to secondbest}
       {set secondbest to best}
       {set best to commodity}
      |elif discount > secondbest.avgprice - secondbest.buyprice:
       {set thirdbest to secondbest}
       {set secondbest to commodity}
      |elif discount > thirdbest.avgprice - thirdbest.buyprice:
       {set thirdbest to commodity}
      }
     }
    }
    
    {if best:
     Le marché local vent le {best.name} à un bon prix
     {if secondbest
      , ainsi que {secondbest.name} 
      {if thirdbest:
       et {thirdbest.name} 
      }
     }
    .}


    se lance lorsque vous achetez des marchandises
    Commodity purchased Triggered when you buy a commodity from the markets
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'commodity')}
    {SetState('eddi_context_last_action', 'purchase')}
    {SetState('eddi_context_commodity_name', event.commodity)}
    {SetState('eddi_context_commodity_amount', event.amount)}
    
    {if event.amount = 1:
    Vous venez d'acheter une unitée de {event.commodity} pour {event.price} crédits.
    |elif event.amount > 1:
    Vous venez d'acheter {event.amount} unitées de {event.commodity} pour un cout de {event.price} crédits l'unité. Le coût total est donc de {event.amount * event.price} crédits.
    }


    se lance lordque vous raffibez du minerais et obtenez des marchandises commercialisables
    Commodity refined Triggered when you refine a commodity from the refinery
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'commodity')}
    {SetState('eddi_context_last_action', 'refine')}
    {SetState('eddi_context_commodity_name', event.commodity)}
    
    Une {OneOf('unité','tonne')} de minerai {event.commodity} a été raffiné.


    teste pour savoir quelles marchandise que vous possédez sont intéressantes à vendre dans la station
    Commodity sale check Check to see which commodities can be sold here
    Code:
    {_ Commodity sale check}
    {_ Check to see which commodities can be sold here}
    
    
    {_ Function to find a given commodity in market}
    {set market(commodity) to:
        {for marketcommodity in station.commodities:
            {if marketcommodity.name = commodity.name:
                {return marketcommodity}
            }
        }
    }
    
    {_ Function to find an illegal mission related to the commodity}
    {set illegalmission(haulageData) to:
        {for haulage in haulageData:
            {if haulage.illegal:
                {return true}
            }
        }
        {return false}
    }
    
    {set totalprofit to 0}
    {set missioncommodities to []}
    {set profitablecommodities to []}
    {set stolencommodities to []}
    {set unknowncommodities to []}
    
    {for cargo in inventory:
        {if cargo.name != 'Limpet':
            {set marketcommodity to market(cargo.commodity)}
            {set illegal to illegalmission(cargo.haulageData)}
            {set profit to (marketcommodity.sellprice - cargo.price) * cargo.owned}
    
            {if cargo.stolen > 0 && !illegal:
                {set stolencommodities to cat(stolencommodities, [cargo.commodity])}
            |elif cargo.haulage > 0:
                {set missioncommodities to cat(missioncommodities, [cargo.commodity])}
            |elif !marketcommodity && lcase(cargo.category) != "powerplay" && cargo.total > 0:
                {set unknowncommodities to cat(unknowncommodities, [cargo.commodity])}
            |elif marketcommodity && profit > 0:
                {set profitablecommodities to cat(profitablecommodities, [cargo.commodity])}
                {set totalprofit to totalprofit + profit}
            }
        }
    }
    
    {_ Let the user know about any commodities they can sell here for a profit}
    {if len(profitablecommodities) > 0:
        Vous pouvez vendre vos
        {if len(profitablecommodities) = 1:
            {profitablecommodities[0].name}
        |elif len(profitablecommodities) = 2:
            {profitablecommodities[0].name}   et {profitablecommodities[1].name}  
        |else:
            {set cur to 0}
            {while cur < len(profitablecommodities):
                {if cur = 0:
                    {profitablecommodities[cur].name}  
                |elif cur < len(profitablecommodities) - 1:
                    , {profitablecommodities[cur].name}  
                |else:
                    , et {profitablecommodities[cur].name}  
                }
                {set cur to cur + 1}
            }
        }
        pour un profit de {totalprofit} crédits.
    }
    
    {_ Let the user know about any commodities about which we are unsure if they can sell for a profit}
    {if len(unknowncommodities) > 0:
        Vous pourriez {if len(profitablecommodities) > 0: aussi } vendre vos
        {if len(unknowncommodities) = 1:
    		{unknowncommodities[0].name}          
        |elif len(unknowncommodities) = 2:
            {unknowncommodities[0].name}    and {unknowncommodities[1].name}   
        |else:
            {set cur to 0}
            {while cur < len(unknowncommodities):
                {if cur = 0:
                    {unknowncommodities[cur].name}   
                |elif cur < len(profitablecommodities) - 1:
                    , {unknowncommodities[cur].name}  
                |else:
                    , et {unknowncommodities[cur].name}  
                }
                {set cur to cur + 1}
            }
        }
        , testez aussi les profits pottentiels pour {if len(unknowncommodities) > 1: tout cela |else: ceci} avant de clore vos transactions.
    }
    
    {_ Let the user know about any stolen commodities they can sell on the black market}
    {if len(stolencommodities) > 0:
        {if station.hasblackmarket:
            Vous pouvez {OneOf('décharger', 'vider', 'vendre')} vos marchandises volées
            {if len(stolencommodities) = 1:
                {stolencommodities[0].name}
            |elif len(stolencommodities) = 2:
                {stolencommodities[0].name} et {stolencommodities[1].name}
            |else:
                {set cur to 0}
                {while cur < len(stolencommodities):
                    {if cur = 0:
                        {stolencommodities[cur].name}
                    |elif cur < len(stolencommodities) - 1:
                        , {stolencommodities[cur].name}
                    |else:
                        , {stolencommodities[cur].name}
                    }
                    {set cur to cur + 1}
                }
            }
            ici.
        |else:
            Note: vous {OneOf("avez une cargaison volée en soute", "avez des biens volés à bord", "transportez des marchandises volées", "transportez une cargaison volée")}.
        }
    }
    
    {_ Let the user know about any mission related commodities they can sell on the black market}
    {if len(missioncommodities) > 0 && station.hasblackmarket:
    
        Vous pouvez {if len(stolencommodities) > 0: also} {OneOf('refourguer', 'revendre', 'écouler')} vos
        {if len(missioncommodities) = 1:
            {missioncommodities[0].name}
        |elif len(missioncommodities) = 2:
            {missioncommodities[0].name} and {missioncommodities[1].name}
        |else:
            {set cur to 0}
            {while cur < len(missioncommodities):
                {if cur = 0:
                    {missioncommodities[cur].name}
                |elif cur < len(missioncommodities) - 1:
                    , {missioncommodities[cur].name}
                |else:
                    , et {missioncommodities[cur].name}
                }
                {set cur to cur + 1}
            }
        } relier à une mission en cours
        ici.
    }


    Se lance lorsque vous vendez des marchandises
    Commodity sold Triggered when you sell a commodity to the markets
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'commodity')}
    {SetState('eddi_context_last_action', 'sell')}
    {SetState('eddi_context_commodity_name', event.commodity)}
    {SetState('eddi_context_commodity_amount', event.amount)}
    
    {if event.amount = 1:
    	Vous venez de vendre une unité de {event.commodity} pour {event.price} crédits
    |elif event.amount > 1:
    	Vous venez de vendre {event.amount} unités de{event.commodity}   à {event.price} crédits par l'unité. La valeur totale est de {event.amount * event.price} crédits
    }
    {if event.profit < 0:
    	avec une perte de {-1 * event.profit * event.amount} crédits.
    |elif event.profit = 0:
    	vous n'avez pas fait de profit, vous avez revendu au prix d'achat.
    |else:
    	avec un profit de {event.profit * event.amount} crédits.
    }


    votre évolution dans le communoty goal (à amméliorer, je ne pratique pas trop les CG))
    Community goal Triggered when checking the status of a community goal
    Code:
    {_ Set Context _}
    {SetState('eddi_context_last_subject', 'community goal')}
    {_ Save goal location to context if there is only one goal present _}
    {if len(event.cgid) = 1:
       {SetState('eddi_context_goal_system_name', event.system[0])}
       {SetState('eddi_context_goal_station_name', event.station[0])}
    }
    
    {F('Honorific')}, 
    
    {if len(event.name) > 1:
        {OneOf("Vous avez montré de lintéret pour", "Vous suivez")}
        les  community goals suivant:
    |else: 
     {OneOf("le community goal" , "le Cégé")} : 
    }
    
    {set cur to 0}
    {while cur < len(event.name):
    
       {if cur = 0 && len(event.name) = 1:
          {_ nothing _}
       |elif cur = 0 && len(event.name) > 1:
          en premier :
       |elif cur < (len(event.name) - 1):
          ensuite, 
       |else:
          et finalement,
       }
    
       {event.name[cur]},
    
       {if event.iscomplete[cur]:
          {OneOf("est fini", "a été complété")} 
       |else: 
          {if (event.expiry[cur] / 3600) < 12:
             {OneOf("est presque fini", 
                    "devrai finir dans {Humanise(round(event.expiry[cur] / 3600, 1))} heures", 
                    "arrive à terme")}
          |else:
             {OneOf("a besion de vos services", 
                    "est Toujours actif", 
                    "est incomplet")} 
          }
       }
    
       {if event.tier[cur]:
           {OneOf("et a atteint", "et est actuellement à ")} {event.tier[cur]}.
           {if event.contribution[cur] > 0:
               Votre récompense devrait être  
               {Occasionally(2, "actuellement")}
               {Occasionally(2, "calculé de")}
               {Humanise(event.tierreward[cur])} crédits
               {Occasionally(8, "dans les {event.percentileband[cur]}ième pourcents")}
           }
       }.
    
       {_ Create a comparison function _}
       {set compare(stat) to:     
           {if stat < 0.01:
               juste une {OneOf("fraction", "part")} de            
           |elif stat < 0.10:
                moins d'un dixième de 
           |elif stat < 0.25:
                moins d'un quart de 
           |elif stat < 0.5:
                moins de la moitié de
           |elif stat < 0.75:
                moins que 
           |elif stat < 0.96: 
                {OneOf("à peine","juste")}
                moins que
           |elif stat < 1.05:
                {OneOf("approximativement", "presque","environ")} 
                égal à 
           |elif stat < 1.25:
                un peu plus que
           |elif stat < 1.5:
                plus que
           |elif stat < 2:
                bien plus que
           |else:
                vraiment plus que
           }
        }
        {set compare_contribution to (event.contribution[cur] / round(event.total[cur] / event.contributors[cur], 0))}
    
        {if compare_contribution != 0:
           {if event.toprank[cur]: 
              Congratulations! 
              Vous êtes un des top {event.topranksize[cur]} de ce challenge, ayant contribué 
              {compare(compare_contribution)}
              que la moyenne.
           |else:
              {Occasionally(2, "vous avez contribué {compare(compare_contribution)} que la moyenne.")}
           }
        }
    
        {if !event.iscomplete[cur]:
           Vous devriez 
           {if event.contribution[cur] > 0: 
              {OneOf("contribuer plus", "faire plus d'effort")} 
           |else: 
              {OneOf("participer", "tenter une action")}
           }
           {if event.station[cur] = station.name:
              {Occasionally(2, "ici")}
              {Occasionally(2, "dans cette station")}.
           |elif event.system[cur] = system.name:
              at {P(event.station[cur])}
              {Occasionally(2, "ici")}
              {Occasionally(2, "dans ce système")}.
           |else:
              at {P(event.station[cur])},
              in {OneOf("{P(event.system[cur])}", "le système {P(event.system[cur])} " )}.
           }
        }
    
        {set cur to cur + 1}
        {Pause(1000)}
    }

  4. #4
    Liste des scripts individuels ... suite 3...
    résurection

    Se lance quand vous passez de votre vaisseau à votre chasseur
    Controlling fighter Triggered when you switch control from your ship to your fighter
    Code:
    {OneOf("liaison radio", "liaison", "contact")} {Occasionally(2, "avec le chasseur")} {OneOf("initialisée", "établie", "activé")}.


    Se lance lorsque vous passez de votre chasseur à votre vaisseau
    Controlling ship Triggered when you switch control from your fighter to your ship
    Code:
    {set Choix1A to OneOf("Contact", "Liaison", "Liaison radio")}
    {set Choix1 to "{Choix1A} {OneOf(' terminé.', ' fermé.')}"}
    {set Choix2A to OneOf("reprise de contrôle du", "retour aux commandes du", "Retour à la barre du")}
    {set Choix2 to "{Choix2A} {OneOf(' vaisseau mêre', ship.name, ship.ident)}"}
    
     {OneOf(Choix1, Choix2)}


    Lors du management de votre équipage
    Crew assigned Triggered when you assign crew
    Code:
    {if event.role = "Active":
    {event.name} Est maintenant en service actif.
    |else:
    {event.name} est en repos jusqu'à nouvel ordre.
    }



    lorsque l'on vire un membre d'équipage
    Crew fired Triggered when you fire crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'fire')}
    {SetState('eddi_context_crew_name', event.name)}
    
    {event.name} a été {OneOf("renvoyé", "viré", "retiré de l'équipage")}.



    lorsque vous engagez un membre d'équipage
    Crew hired Triggered when you hire crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'hire')}
    {SetState('eddi_context_crew_name', event.name)}
    
    {event.name} à rejoint votre service.



    lorsque vous rejoignez un équipage (cannonier en poste)
    Crew joined Triggered when you join a crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'join')}
    {SetState('eddi_context_crew_name', event.captain)}
    
    Vous avez rejoint l'équipage du {event.captain}


    lorsque vous quittez un équipage
    Crew left Triggered when you leave a crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'leave')}
    {SetState('eddi_context_crew_name', event.captain)}
    
    Vous avez quitté l'équipe de {event.captain}.


    lorsqu'un commandant rejoint votre équipage
    Crew member joined Triggered when a commander joins your crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'join')}
    {SetState('eddi_context_crew_name', event.crew)}
    
    
    {event.crew} has joined your crew.


    lorsqu'un de vos membre d'équipage part faire une ballade en chasseur
    Crew member launched Triggered when a crew member launches the fighter
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'launch')}
    {SetState('eddi_context_crew_name', event.crew)}
    
    
    {event.crew} prend les commande d'un chasseur.


    lorsqu'un commandant quitte votre équipage
    Crew member left Triggered when a commander leaves your crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'leave')}
    {SetState('eddi_context_crew_name', event.crew)}
    
    {event.crew} viens de quitter l'équipe.



    lorsque vous éjectez un commandant de votre équipage
    Crew member removed Triggered when you remove a commander from your crew
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'remove')}
    {SetState('eddi_context_crew_name', event.crew)}
    
    Vous avez sorti {event.crew} de votre équipe.


    lorsque un commandant change de role dans votre équipage
    Crew member role changed Triggered when a crew member changes their role
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'crew')}
    {SetState('eddi_context_last_action', 'role')}
    {SetState('eddi_context_crew_name', event.crew)}
    {SetState('eddi_context_crew_role', event.role)}
    
    {if event.role = 'Idle':
        {event.crew} n'a plus d'affectation
    |elif event.role = 'Fighter':
        {event.crew} est aux commandes d'un chasseur
    |elif event.role = 'Gunner':
        {event.crew} est au poste d'artillerie
    }.


    lorsque votre rôle dans un équipage a changé
    Crew role changed Triggered when your role in the crew changes
    Code:
    {if event.role = 'Gunner':
    Vous êtes maintenant l'artilleur de cette équipe.
    |elif event.role = 'Fighter':
    Vous êtes maintenant le pilote de chasse de cette équipe.
    |elif event.role = 'Idle':
    Vous n'avez pas été affecté au service actif.
    }


    pour faire la liste des dommages subis par votre vaisseau (en conjonction avec Voice Attack)
    Damage check Check on the levels of damage to your ship
    Code:
    {_ Track if there is any damage}
    {set damaged to 0}
    
    {_ Announce hull health}
    {if ship.health < 100:
     Coque à {Humanise(ship.health)}pourcent.
     {set damaged to 1}
    }
    
    {_ en premier la liste des modules critiques}
    
    {set minordamage to []}
    {set majordamage to []}
    
    {if ship.powerplant.health < 60:
     {set majordamage to cat(majordamage, [ship.powerplant])}
    |elif ship.powerplant.health < 100:
     {set minordamage to cat(minordamage, [ship.powerplant])}
    }
    
    {if ship.thrusters.health < 60:
     {set majordamage to cat(majordamage, [ship.thrusters])}
    |elif ship.thrusters.health < 100:
     {set minordamage to cat(minordamage, [ship.thrusters])}
    }
    
    {if ship.frameshiftdrive.health < 60:
     {set majordamage to cat(majordamage, [ship.frameshiftdrive])}
    |elif ship.frameshiftdrive.health < 100:
     {set minordamage to cat(minordamage, [ship.frameshiftdrive])}
    }
    
    {if ship.powerdistributor.health < 60:
     {set majordamage to cat(majordamage, [ship.powerdistributor])}
    |elif ship.powerdistributor.health < 100:
     {set minordamage to cat(minordamage, [ship.powerdistributor])}
    }
    
    {if ship.lifesupport.health < 60:
     {set majordamage to cat(majordamage, [ship.lifesupport])}
    |elif ship.lifesupport.health < 100:
     {set minordamage to cat(minordamage, [ship.lifesupport])}
    }
    
    {if ship.sensors.health < 60:
     {set majordamage to cat(majordamage, [ship.sensors])}
    |elif ship.sensors.health < 100:
     {set minordamage to cat(minordamage, [ship.sensors])}
    }
    
    {if len(majordamage) > 0:
     {set damaged to 1}
     Dégats critiques sur
     {if len(majordamage) = 1:
      {majordamage[0].name}
     |elif len(majordamage) = 2:
      {set translate to majordamage[0].name} et {majordamage[1].name} 
     |else:
      {set cur to 0}
      {while cur < len(majordamage):
       {if cur = 0:
        {majordamage[cur].name}
       |elif cur < len(majordamage) - 1:
        , {majordamage[cur].name} 
       |else:
        ,et {majordamage[cur].name} 
       {set cur to cur + 1}
       }
      }.
     }
    }
    
    {if len(minordamage) > 0:
     {set damaged to 1}
     Dégât minime
     {if len(minordamage) = 1:
      {minordamage[0].name}
     |elif len(minordamage) = 2:
      {minordamage[0].name} et {minordamage[1].name}
     |else:
      {set cur to 0}
      {while cur < len(minordamage):
       {if cur = 0:
        {minordamage[cur].name}
       |elif cur < len(minordamage) - 1:
        , {minordamage[cur].name} 
       |else:
        ,et  {minordamage[cur].name} 
       }
       {set cur to cur + 1}
      }
     }.
    }
    
    
    {_ liste des modules secaondaires}
    
    {set minordamage to []}
    {set majordamage to []}
    
    
    {for compartment in ship.compartments:
     {if compartment.module.health < 60:
      {set majordamage to cat(majordamage, [compartment.module.name])}
     |elif hardpoint.module.health < 100:
      {set minordamage to cat(minordamage, [compartment.module.name])}
     }
    }
    
    {for hardpoint in ship.hardpoints:
     {if hardpoint.module.health < 60:
      {set majordamage to cat(majordamage, [hardpoint.module.name])}
     |elif hardpoint.module.health < 100:
      {set minordamage to cat(minordamage, [hardpiont.module.name])}
     }
    }
    
    {if len(majordamage) > 0:
    {set damaged to 1}
     {if len(majordamage) = 1:
      Un autre élément du vaisseau avec des dégâts majeurs
     |elif len(majordamage) > 1:
      {len(majordamage)} autres élément du vaisseau avec des dégâts majeurs
     }
     {if len(minordamage) = 1:
      et un autre élément du vaisseau avec des dégâts mineurs
     |elif len(minordamage) > 1:
      et {len(minordamage)} autres élément du vaisseau avec des dégâts mineurs
     }.
    |elif len(minordamage) = 1:
      {set damaged to 1}
     Un autre élément du vaisseau avec des dégâts mineurs.
    |elif len(minordamage) > 1:
     {set damaged to 1}
     {len(minordamage)} autres éléments du navire avec des dommages mineurs.
    }
    
    {if damaged = 0:
     {OneOf("Tout les système sont pleinement opérationel.", "{ShipName()} est pleinement opérationel.", "{ShipName()} est en bon état.")}
    }


    enclenché suite à la lecture de certains points de liaisons de données
    Data scanned Triggered when scanning some types of data links
    Code:
    {_ Data scanned }
    {_ Triggered when scanning some types of data links }
    
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'scan')}
    {SetState('eddi_context_last_action', 'data')}
    {SetState('eddi_context_data_scan_type', event.datalinktype)}
    
    {OneOf("Scann des ", "Téléchargement des ")} {event.datalinktype} {OneOf("Terminé", "achevé", "complet")}.


    lorsque vous recevez une récompense pour des données
    Data voucher awarded Triggered when you are awarded a data voucher
    Code:
    {_ Data voucher awarded }
    {_ Triggered when you are awarded a data voucher }
    
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'data_voucher')}
    {SetState('eddi_context_last_action', 'award')}
    {SetState('eddi_context_bond_amount', event.reward)}
    {SetState('eddi_context_bond_faction', event.payeefaction)}
    
    "{event.payeefaction}" vous offre {event.reward} crédits pour les données de "{event.victimfaction}" que vous avez téléchargé.


    récompense pour des données
    Data voucher redeemed Triggered when you redeem a data voucher
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'data_voucher')}
    {SetState('eddi_context_last_action', 'redeem')}
    {SetState('eddi_context_data_voucher_amount', event.amount)}
    
    Récompance de {Humanise(event.amount)} crédits pour les donnée transmises
    {Occasionally(2, "
         {if len(event.rewards) = 1:
             au sujet de {P(event.rewards[0].faction)}
          |else:
              au sujet de 
              {set cur to 0}
              {while cur < len(event.rewards):
              {if cur = 0:
               |elif cur < len(event.rewards) - 1:
                        ,
               |else:
                       et
               }
               {P(event.rewards[cur].faction)}
               {set cur to cur + 1}
               }
           }
      ")}.


    lorsque vous scannez un truc de liaison de données
    Datalink message Triggered upon completion of Datalink scan
    Code:
    Lecture du message: {event.message}.


    lorsque votre engin se fait exploser
    Died Triggered when you have died
    Code:
    {if len(event.ships) > 0:
    
        {set commanders to []}
        {for cmdr in event.commanders:
            {if find(cmdr, "$ShipName") >= 0:
               {_ Ignore NPC ships _}        
            |else: 
               {set commanders to cat(commanders, [cmdr])}
            }
        }
    
        {ShipName()} vient
        {Occasionally(2, " juste ")}
        {OneOf(" d'être détruit", " d'être broyé", "d'être explosé", "de se faire bouffer", "de se prendre une raclée")}
    
        {if len(commanders) = 1:
            par un {event.ships[0]} 
      piloté par  {commanders[0]} de rang   {event.ratings[0]}.
        |elif len(commanders) = 2:
            par un {event.ships[0]} 
      piloté par  {commanders[0]} de rang   {event.ratings[0]},
            et par un {event.ships[1]} 
      piloté par  {commanders[1]} de rang   {event.ratings[1]}.
        |elif len(commanders) > 2:
            {set cur to 0}
            by
            {while cur < len(commanders):
                {if cur = 0:
                    par un {event.ships[cur]} 
              piloté par  {commanders[cur]} de rang   {event.ratings[cur]}
                |elif cur < len(commanders) - 1:
                    , un {event.ships[cur]} 
              piloté par  {commanders[cur]} de rang   {event.ratings[cur]}
                |else:
                    , et un {event.ships[cur]} 
              piloté par  {commanders[cur]} de rang   {event.ratings[cur]}
                }
                {set cur to cur + 1}
            }
        }
    }


    quand l'engin est bien garé
    Docked Triggered when your ship docks at a station or outpost
    Code:
    {Pause(2000)}
    
    {_ Find out in advance what we have to say }
    {if ship.role = "Généraliste" || ship.role = "Commerce":
    {set purchasecheck to F("Commodity purchase check")}
    }
    {set limpetcheck to F("Limpet check")}
    {set swapoutcheck to F("Swapout check")}
    {set salecheck to F("Commodity sale check")}
    
    {if purchasecheck || salecheck || limpetcheck || swapoutcheck:
    {OneOf("Établissement d'une liaison avec",
    "Contact établi avec",
    "Connection avec",
    "Accès avec")}
    {OneOf("le réseau informatique", "le réseau", "les réseaux", " les ordinateurs", "les services")}.
    {OneOf("de la base", "de la station", "de {event.station}")}
    
    {Pause(10000)}
    {OneOf("Début de liaison", "Liaison", "Accès", "Connection")} {OneOf("établi", "confirmé", "obtenue", "autorisé")}.
    {salecheck}
    {purchasecheck}
    {swapoutcheck}
    {limpetcheck}
    |else:
    {OneOf("Communications avec", "Contact avec", "Liaison avec", "accès avec")}
    {OneOf("le réseau informatique", "le réseau", "les réseaux", " les ordinateurs", "le service")}
    {OneOf("de la base", "de la station", "de {event.station}")}
    
    {OneOf("établi", "confirmé", "obtenue", "autorisé")}.
    }
    {SetState("systemearrivee", event.station)}
    {F("Zone Occupée")}


    lorsque vous annuler votre appontage
    Docking cancelled Triggered when your ship cancels a docking request at a station or outpost
    Code:
    Procédure d'appontage annulée.


    lorsque votre appontage est refusé
    Docking denied Triggered when your ship is denied docking at a station or outpost
    Code:
    {Pause(2000)}
    
    Nous avons un refus d'appontage
    
    {if event.reason = "ActiveFighter":
         Car nos armes sont déployées
    |elif event.reason = "Distance":
         Parce que nous sommes trop loin de la station
    |elif event.reason = "Hostile":
         Parce que la sation est sous le contôle d'une faction qui ne veut pas de nous
    |elif event.reason = "NoSpace":
         Parce que tous les pads d'atterrissage sont occupés
    |elif event.reason = "Offences":
         Parce que nous avons récemment commis un crime contre eux!... non? sans blague?
    |elif event.reason = "TooLarge":
         Parce qu'il n'y a aucune zone d'atterrissage assez grande pour notre vaisseau
    }.


    Appontage autorisé
    Docking granted Triggered when your ship is granted docking permission at a station or outpost
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'landing pad')}
    {SetState('eddi_context_landing_pad_system', system.name)}
    {SetState('eddi_context_landing_pad_station', event.station)}
    {SetState('eddi_context_landing_pad_pad', event.landingpad)}
    
    {set station to StationDetails(event.station)}
    {set landingpad to state.eddi_context_landing_pad_pad}
    {if station.model = "Base astéroïde" || station.model = "Spatioport Coriolis" || station.model = "Spatioport Ocellus" || station.model = "Station inconnue" || station.model = "Spatioport Orbis":
        {Pause(8000)}
        {F("Landing pad report")}
    |else : Votre plate forme dattérissage a le numéro {landingpad} 
            
    }


    lorsque vous demandez l'autorisation d'appontage
    Docking requested Triggered when your ship requests docking at a station or outpost
    Code:
    Votre demande d'appontage à  {event.station} est envoyée.


    lorsque pas de réponse à votre demande d'appontage
    Docking timed out Triggered when your docking request times out
    Code:
    Pas de réponse à la demande d'appontage.


    Sert à donner un bon particule dans l'empire
    Empire honorific Function to provide a suitable honorific for your commander when in the empire
    Code:
    {_ Forms of address taken from <https://en.wikipedia.org/wiki/Forms_of_address_in_the_United_Kingdom>}
    {if cmdr.empirerating.rank <= 4: {_ Commoner }
       commandeur
    |elif cmdr.empirerating.rank = 5: {_ Knight / Dame }
        {if cmdr.gender = "Male": 
            Sieur
        |elif cmdr.gender = "Female": 
            madame
        |else: 
            commandeur
        }
    |elif cmdr.empirerating.rank <= 11: {_ Peer / Peeress }
        {if cmdr.gender = "Male": 
            {OneOf("mon seigneur", "votre majesté")}
        |elif cmdr.gender = "Female": 
            {OneOf("gente dame", "votre magestée")}
        |else: 
            commandeur
        }
    |elif cmdr.empirerating.rank = 12:
        votre grace
    |elif cmdr.empirerating.rank = 13:
        votre grandeur
    |elif cmdr.empirerating.rank = 14:
        votre magestée royale
    }


    pour savoir quelle quantité de carburant il reste
    Fuel check Report on fuel levels
    Code:
    {_ Fuel Check _}
    {_ Report fuel level _}
    
    {if ship.name = state.eddi_fuelcheck_shipname:
        {if state.eddi_context_fuel_used > state.eddi_fuelcheck_maxfuel:
            {SetState('eddi_fuelcheck_maxfuel', state.eddi_context_fuel_used)}
        }
    |else:
        {SetState('eddi_fuelcheck_maxfuel', state.eddi_context_fuel_used)}
        {SetState('eddi_fuelcheck_shipname', ship.name)}
    }
    
    {set maxfuel to state.eddi_fuelcheck_maxfuel}
    {set fuelremaining to state.eddi_context_fuel_remaining}
    {set maxjump to fuelremaining/maxfuel}
    {set currentfuel to round(fuelremaining / ship.fueltanktotalcapacity * 100, 1)}
    {if find(currentfuel, ".0") > -1:
       {set currentfuel to round(currentfuel, 0)}
    }
    {set shipsfuel to:
       {OneOf("niveaux", "réservoirs", "réserves")} de carburant {Occasionally(2, "du {P(ShipName())}" )} {Occasionally(2, "sont")} {Occasionally(2, "actuellement")}
    }
    {set currentpercent to: 
       à {currentfuel} pourcent {Occasionally(2, "de capacité")}
    }
    
    {if maxjump < 0.5:
       Danger!
       {shipsfuel} vides!
       {Pause(500)}
       Fonctionnement sur les réserves, L'arret de tout système non vital est fortement conseillé.
       {Pause(500)}
       Transpondeur d'urgence activé
       {Pause(500)}
       Vérification radio OK! bande fréquence trouvé! Il est conseillé de faire appel à Symbiose!
    |elif maxjump < 1.25:
       {OneOf("Attention:", "Alerte:", "Danger:", "Alarme:")}
       {shipsfuel} {OneOf("dangereusement bas", "presque à sec")}.
       {OneOf("Approvisionnez en urgence", "faire le plein est fortement recommandé", "La priorité est de trouver du carburant", "Je conseillerai de trouver du carburant")}
    |elif currentfuel < 25:
       {OneOf("Attention:", "Alerte:", "Danger:", "Alarme:")}
       {shipsfuel} {OneOf("en dessous 25%", " {currentpercent}" )}
    |elif currentfuel < 50:
       {shipsfuel} {OneOf("en dessous 50%", " {currentpercent}" )}
    |elif currentfuel < 100:
       {shipsfuel} {currentpercent}
    |else:
       {shipsfuel} {OneOf(currentpercent, "pleins")}
    }
    {Occasionally(3,", {F('Honorific')}")}.


    Liste des scripts individuels ... suite 4...
    Reloaded

    lorsque vous gagnez un rang dans l'empire
    Empire promotion Triggered when your rank increases with the Empire
    Code:
    {if event.rank = "Chevalier":
        sieur
    |elif event.rank = "Banneret":
        monseigneur
    |elif event.rank = "Baron":
        monseigneur
    |elif event.rank = "Vicomte":
        monseigneur
    |elif event.rank = "Comte":
        monseigneur
    |elif event.rank = "Earl":
        monseigneur
    |elif event.rank = "Duc":
        monseigneur
    |elif event.rank = "Archiduc":
        votre grace
    |elif event.rank = "Prince":
        Votre altesse royale
    |elif event.rank = "Roi":
        Votre majesté
    |else:
        commandeur
    },
    La flotte impériale 
    {OneOf("vous a accordé une promotion pour le", "vous a promu au", "vous a gratifié du", "vous a nommé au")}
    titre honorifique de 
    {event.rank}
    {Occasionally(2, "suite aux services rendu à l'empire")}.


    lorsque un ingénieur vous ouvre vers de nouvelles amméliorations
    Engineer progressed Triggered when you reach a new rank with an engineer
    Code:
    {event.engineer} vous permet daccéder aux {OneOf('plans', 'technologies','modifications','améliorations')} de grade {event.rank}.


    lorsque vous entrez en CQC
    Entered CQC Triggered when you enter CQC
    Code:
    Vous entrez dans le C Q C


    de retour a des vitesses acceptables ....
    Entered normal space Triggered when your ship enters normal space
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'fsd')}
    {SetState('eddi_context_last_action', 'disengage')}
    {SetState('eddi_context_system_name', event.system)}
    {SetState('eddi_context_body_name', event.body)}
    {SetState('eddi_context_body_system', event.system)}
    {Pause(5000)}
    
    {OneOf("{ShipName()} est", "")} {OneOf("entré", "revenu", "passé")} en espace normal
    
    {if event.bodytype = 'Planet':
        {OneOf("proche", "à cotés de", "dans les environs de")} la planète {P(event.body)}
    |elif event.bodytype = 'Star':
        {OneOf("proche", "à cotés de", "dans les environs de")} l'étoile {P(event.body)}
      |elif event.bodytype = 'Station':
        {OneOf("proche", "à cotés de", "dans les environs de")} {P(event.body)}
    }.


    à l'entrée d'une source de signal
    Entered signal source Triggered when your ship enters a signal source
    Code:
    {set entered to OneOf("Vous entrez", "Arrivée", "Entrée")}
    
    {set warninglevel to:
       {if event.threat < 2:
       |elif event.threat = 2:
          Attention:  niveau de menace moyen
       |elif event.threat = 3:
          Alerte:  menace importtante
       |elif event.threat = 4:
          Danger: Menace létale
       |elif event.threat = 5:
          Danger Extrème:  Menace Létale de haut niveau
       |elif event.threat = 6:
          Danger Extrème:  Menace Létale de trés haut niveau
       |elif event.threat = 7:
          Danger Absolu: Menace Létale au seul maximum
       |else:
          Danger record:  Niveau de menace de rang {event.threat} jamais encore rencontré jusqu'alors
       }
    }
    {source}
    {set source to token(event.source, "$USS_Type_", 1)}
    
    {if source = "Aftermath;":
       {set source to OneOf("où un combat c'est déroulé", "contenant les épaves d'un combat")}
    |elif ((source = "Anomaly;" || source = "Salvage;") && event.threat = 2):
       {set source to OneOf("de présence aliène", "xeno-technologique", "non-humaine", "de sondage Thargoïde")}
    |elif (source = "Anomaly;" && event.threat = 4):
       {set source to OneOf("de présence aliène", "xeno-technologique", "non-humaine", "de surveillance Thargoïde")}
    |elif source = "Anomaly;":
       {set source to OneOf("anormale", "inconnue", "mystérieuse")}
    |elif source = "Ceremonial;":
        {set source to OneOf("où une cérémonie se déroule","de calme et de cérénité en vue d'une cérémonie")}
    |elif source = "Convoy;":
        {set source to "occupée par un convoi"}
    |elif source = "DisruptedWakeEchoes;":
        {set source to ""}
    |elif source = "DistressSignal;":
       {set source to OneOf("source d'un signal de détresse", "où un vaisseau semble en mauvaise posture")}
    |elif source = "MissionTarget;":
       {set source to OneOf("cible d'une de vos missions", "encodé par votre journal de mission")}
    |elif source = "NonHuman;":
       {set source to OneOf("de présence aliène", "xeno-technologique", "non-humaine")}
    |elif source = "Salvage;":
        {set source to "d'émissions dégradées"}
    |elif source = "ValuableSalvage;":
        {set source to "d'émissions encodée"}
    |elif source = "VeryValuableSalvage;":
        {set source to "d'émissions de haute qualité"}
    |elif source = "WeaponsFire;":
       {set source to OneOf("de combat", "avec détection de tirs")}
    }
    
    {Pause(2000)}
     {entered} dans une source de signal {source},
    {warninglevel}.
    
    {if (system.state.edname = "Anarchy" && source = "degraded emissions" && system.population > 0)=true: 
       {Occasionally(2, " Caution: {set local to OneOf('locales', 'du voisinage')} {set chatter to OneOf('ragots', 'potins', 'rumeurs')} {set indicate to OneOf('disent', 'suggèrent', 'impliquent', 'reportent')} {OneOf('des transmissions {local} {indicate}', 'des {chatter} dans les transmissions {local} {indicate}')} {Occasionally(3, 'quil y a')} {OneOf('une augmentation', 'une élévation', 'une accentuation')} {OneOf('dactivité de', 'de présence de')} {OneOf('syndicat du crime ', 'crime ', 'pirates ', 'gang de pirate ', 'clan de pirate ')} dans {OneOf('la zone', 'le voisinage', 'ce secteur', 'ce système')}. {OneOf('gardez votre', 'concervez votre')} {OneOf('calme', 'concentration', 'attention', 'vigilance')} {Occasionally(3,' {F(Honorific)}')}.")}
    }


    entrée en supercruise
    Entered supercruise Triggered when your ship enters supercruise
    Code:
    {Pause(1000)}
    {OneOf("{ShipName()} ", "")} {OneOf("est entré en", "a sauté en")} Hyper vitesse.



    lorsque l'on achète des données d'exploration
    Exploration data purchased Triggered when you purchase exploration data
    Code:
    {OneOf("Achat des données {OneOf('du système', 'dexploration')} pour {P(event.system)}",
                "les informations {OneOf('système', 'dexploration')} pour {P(event.system)} sont enregistré dans mes banques de données",
                "réception des données {OneOf('système', 'dexploration')} pour {P(event.system)} en provenance de la station",
                "téléchargement des données géo-spatiale pour {P(event.system)} confirmé")}.


    lorsque l'on vend des données d'exploration
    Exploration data sold Triggered when you sell exploration data
    Code:
    Données d'exploration de {len(event.systems)} systèmes vendus pour {Humanise(event.reward)} crédits
    
    {if len(event.firsts) > 0:
        , avec un bonus de {Humanise(event.bonus)} crédits pour
        {if len(event.firsts) = 1:
            une primodécouverte
        |else:
            {len(event.firsts)} primo découvertes
        }
    }.


    lorsque l'on gagne un rang en explo
    Exploration promotion Triggered when your exploration rank increases
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'rank')}
    {SetState('eddi_context_last_action', 'promotion')}
    {SetState('eddi_context_rank_name', 'combat')}
    {SetState('eddi_context_rank_amount', event.rating)}
    
    {OneOf("Tribulations au travers de la galaxie","Vos recherches de linconnu en divers endroits de la galaxie","Le différentes routes que vous avez ouverts au travers de la galaxie","L'ensemble de vos découvertes")} vous ont ammené au titre de {event.rating} en exploration.


    lorsque l'on gagne un rang dans la fédération
    Federation promotion Triggered when your rank increases with the Federation
    Code:
    {Occasionally(2,"Félicitation, officier!")}
    
    La marine fédérale  
    {OneOf("vous a accordé une promotion pour le", "vous a promu au", "vous a gratifié du", "vous a nommé au")}
    grade de
    {event.rank}
    {Occasionally(2, "suite aux services rendu à la Fédération")}.


    lorsque votre chasseur est de retour en soute
    Fighter docked Triggered when you dock a fighter with your ship
    Code:
    Le chasseur {OneOf("a apponté","est arrimé")} {Occasionally(2,'{OneOf("à votre vaisseau","à son vaisseau mère")}')}.


    lorsque votre chasseur est déployé
    Fighter launched Triggered when you launch a fighter from your ship
    Code:
    Chasseur {OneOf("largué","déployé")} {Occasionally(2,'{OneOf("de votre vaisseau","de son vaisseau mère","et paré au combat")}')}


    Lorsu'un chasseur est reconstruit en soute
    Fighter rebuilt Triggered when a ship's fighter is rebuilt in the hangar
    Code:
    Chasseur {OneOf("renouvelé", "reconstruit")} et pret {OneOf("à être largué", "au départ")}.


    lorsque vous avez le plaisir de recevoir un PV
    Fine incurred Triggered when you incur a fine
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'fine')}
    {SetState('eddi_context_last_action', 'incur')}
    {SetState('eddi_context_fine_name', event.victim)}
    {SetState('eddi_context_fine_faction', event.faction)}
    {SetState('eddi_context_fine_amount', event.fine)}
    
    Vous devez à {P(event.faction)} {Humanise(event.fine)} credits pour {event.crime} {OneOf("envers", "sur", "à l'encontre de")} {event.victim}.


    lorsque vous payez votre PV
    Fine paid Triggered when you pay a fine
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'fine')}
    {SetState('eddi_context_last_action', 'pay')}
    {SetState('eddi_context_fine_amount', event.amount)}
    
    {OneOf ("lamende","Le P V")} de  {Humanise(event.amount)} crédits est payée.


    lorsque un de vos contact change de statut
    Friends status Triggered when a friendly commander changes status
    Code:
    {_ Set uselist to "white" or "black", depending on which list you want to use to filter people _}
    {_ "white" will only allow notifications from people in this list (e.g. "User1", "User2", & "User3") _}
    {_ "black" will allow all notification EXCEPT those on this list (e.g. "User4", "User5", & "User6") _}
    {_ to allow all notifications, you may also use an empty blacklist (i.e. "set blacklist to []" _}
    
    {set uselist to "black"}
    
    {set whitelist to ["User1", "User2", "User3"]}
    {set blacklist to ["User4", "User5", "User6"]}
    
    {if uselist = "white":
        {if find(whitelist, event.friend) > -1:
            {event.friend} est {event.status}.
        }
    |elif uselist = "black":
        {if find(blacklist, event.friend) = -1:
            {event.friend} est {event.status}.
        }
    }


    lorsque le FSD est lancé edit du 05/12/18 correctif erreur mineure
    FSD engaged Triggered when your FSD has engaged
    Code:
    {_ Context }
    
    {SetState('eddi_context_last_subject', 'fsd')}
    {SetState('eddi_context_last_action', 'engage')}
    {SetState('eddi_context_system_name', event.system)}
    {SetState('eddi_context_system_system', event.system)}
    
      
    {if event.target = 'Hyperspace':
        {_ Rewrite context to represent a jump }
        {SetState('eddi_context_last_subject', 'jump')}
        {SetState('eddi_context_last_action', 'start')}
    
        {set systeme_cible to SystemDetails(event.system)}
    
        {_ Wait for the FSD countdown and initial jump}
        {Pause(6000)}
    
     {OneOf("Destination confirmée","Saut en cours","Telemetrie obtenue")}.
      {ShipName()} est en {OneOf("partance pour", "route vers", "voyage vers", "transit vers")} le système {P(systeme_cible.name)}.
       {if systeme_cible.name = homesystem.name:
       Bon retour chez vous, {F("Honorific")}
      |else:
            {if event.stellarclass = "D":
                Attention: naine blanche détectée.
            |elif event.stellarclass = "N":
                Attention: étoile à neutron détectée.
            |elif event.stellarclass = "H":
                Attention: {OneOf("trou noir detecté", "Anomalie détectée")}.
            |elif event.stellarclass != 'F' && event.stellarclass != 'O' && event.stellarclass != 'G' && event.stellarclass != 'K' && event.stellarclass != 'B' && event.stellarclass != 'A' && event.stellarclass != 'M':
                Information: Le plein nest pas réalisable sur létoile destination.
            }
      }
            {if lastsystem.allegiance && lastsystem.allegiance != "Aucune" && lastsystem.allegiance != "Indépendant" && (!system.allegiance || system.allegiance = "Aucune" || system.allegiance = "None" || system.allegiance = "Indépendant"):
        Vous {OneOf("quittez la zone d'influence", "êtes partie de la zone", "n'êtes plus dans l'espace")} 
      {if lastsystem.allegiance = "Empire":
       {OneOf("de lempire","impérial","des services impériaux")}
      |elif lastsystem.allegiance = "Federation":
       {OneOf("de la fédération","fédéral","des services fédéraux")}
      |elif lastsystem.allegiance = "Independent":
       {OneOf("Indépendant","libre","non aligné")}
      }.
      |elif lastsystem.allegiance && lastsystem.allegiance != systeme_cible.allegiance && systeme_cible.allegiance && systeme_cible.allegiance != "None":
       Vous {OneOf("êtes désormais dans un secteur", "entrez en zone", "arrivez en domaine de contrôle")} 
       
      {if systeme_cible.allegiance = 'Empire':
       {OneOf('de lempire','impérial','des services impériaux')},  
      |elif systeme_cible.allegiance = "Federation":
       {OneOf('de la fédération','fédéral','des services fédéraux')},  
      |elif systeme_cible.allegiance = "Independent":
       {OneOf("Indépendant","libre","non aligné")}, 
      |else: {OneOf("inoccupé", "libre", "hors de ma base de données", "en cours d'enregistrement")},  
      }.
       {if cmdr.title != "Commandeur":
        Bon retour {F("Honorific")}.
       }
      }
    
      {if systeme_cible.visits = 0:
       C'est votre première visite dans ce système
      |elif systeme_cible.visits = 1:
       C'est votre seconde visite dans ce système
      |elif systeme_cible.visits = 2:
       C'est votre Troisième visite dans ce système
      |elif systeme_cible.visits = 3:
       C'est votre quatrième visite dans ce système
      |else:
       Vous avez visité ce système {systeme_cible.visits} fois
      }.
    
      {if !systeme_cible.population:
       {OneOf("système non habité","pas de présence humaine ici", "l'humanité n'a pas encore colonisé ce système", "Pas de pollution humaine détectée")}.
      |else:
       {F("System report")}
       {if systeme_cible.state:
        L'état politico-économique général du système est :  {systeme_cible.state}.
       }
      }
      
      
      {if systeme_cible.distancefromhome:
       {Occasionally(7, "{OneOf(\"vou êtes à\", \"la position actuelle est à\", \"vous êtes maintenant à\")} {Humanise(systeme_cible.distancefromhome)} années lumières de {OneOf(\"votre base principale\", \"{P(homesystem.name)}\")}.")}
      }
    {SetState("systemearrivee", systeme_cible.name)}{F("Zone Occupée")}.
      {if systeme_cible.comment:
       vous avez {OneOf("une note", "un commentaire", "une remarque")} {OneOf("au sujet de", "pour ce", "sur ce")} système.  {OneOf("Citation :", "disant :", "Lecture", "c'est :")} {systeme_cible.comment}.
      }
     }


    dernier article galnet dans une catégorie (je ne sais comment la sélectionner)
    Galnet latest news Read the latest unread news in a given category
    Code:
    {_ Fetch category from state }
    {set articlecategory to state.article_category}
    
    {if articlecategory:
        {set articles to GalnetNewsArticles(articlecategory)}
    |else:
        {set articles to GalnetNewsArticles('Article')}
    }
    
    {if len(articles) = 0:
        "Il n'y a pas d'article non lu dans cette catégorie"
    |else:
        {set article to articles[0]}
        {SetState("eddi_context_galnet_news_id", article.id)}
        {article.title}: 
     {set morceaux to split(article.content, "thargoid")}
     {set nbre_morceaux to len(morceaux)}
    
     {if nbre_morceaux > 1 :
      {set test to 1}
      {set new_text to ""}
      {for part in morceaux:
       {if test = 1:
         {set new_text to cat(part, "thargoïde")}
       |elif test < nbre_morceaux:
         {set new_text to cat(new_text, part, "thargoïde")}
       |else : 
        {set new_text to cat(new_text, part)}
       
       }
       {set test to (test+1)}
       
      }
     |else :
      {set new_text to article.content}
     }
     {new_text}
        {GalnetNewsMarkRead(article.id)}
    }..


    marqués tous les articles comme lus
    Galnet mark read Mark news articles as read
    Code:
    {_ Fetch category from state }
    {set articlecategory to state.article_category}
    
    {if articlecategory:
        {set articles to GalnetNewsArticles(articlecategory)}
    |else:
        {set articles to GalnetNewsArticles('Article')}
    }
    
    {if len(articles) = 0:
        Il n'y a aucun article non lu
        {if articlecategory: 'in that category' }
    |else:
        {set item to 0}
        {while item < len(articles):
            {GalnetNewsMarkRead(articles[item].id)}
            {set item to (item + 1)}
        }
        {len(articles)} {OneOf('articles', 'infos')} notés comme lu
    }.


    pour lire un article galnews en particulier (avec voice attack?)
    Galnet news Read a particular news article
    Code:
    {_ Fetch article from state }
    {set articleid to state.articleid}
    {if articleid:
        {set article to GalnetNews(articleid)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'news')}
        {SetState('eddi_context_galnet_news_id', articleid)}
    }
    
    {if !article:
        {_ Fetch from context }
        {set article to GalnetNews(state.eddi_context_galnet_news_id)}
    }
    
    {if article:
        {article.title}:  
     {set morceaux to split(article.content, "thargoid")}
     {set nbre_morceaux to len(morceaux)}
    
     {if nbre_morceaux > 1 :
      {set test to 1}
      {set new_text to ""}
      {for part in morceaux:
       {if test = 1:
         {set new_text to cat(part, "thargoïde")}
       |elif test < nbre_morceaux:
         {set new_text to cat(new_text, part, "thargoïde")}
       |else : 
        {set new_text to cat(new_text, part)}
       
       }
       {set test to (test+1)}   
      }
     |else :
      {set new_text to article.content}
     }
     {new_text}
    |else:
       Je n'ai aucune information au sujet de cet article
    }.


    se lance pour lire l'article galnet qui vient d'être publié, ou tous les articles publiés depuis votre dernière connexion
    Galnet news published Triggered when news is published on Galnet
    Code:
    {set statustitle to "^(Galactic News: ((Weekly .*)|(Starport Status Update)))|(Powerplay: Incoming Update)"}
    
    {if len(event.items) = 1:
        Un nouvel article dont le nom est {event.items[0].title} a été plublié dans le Galnet.
        {if !match(event.items[0].title, statustitle):
      Lecture du sujet : 
      {set morceaux to split(event.items[0].content, "thargoid")}
      {set nbre_morceaux to len(morceaux)}
    
      {if nbre_morceaux > 1 :
       {set test to 1}
       {set new_text to ""}
       {for part in morceaux:
        {if test = 1:
          {set new_text to cat(part, "thargoïde")}
        |elif test < nbre_morceaux:
          {set new_text to cat(new_text, part, "thargoïde")}
        |else : 
         {set new_text to cat(new_text, part)}
        
        }
        {set test to (test+1)}
        
       }
      |else :
       {set new_text to event.items[0].content}
      }{new_text}.
        }
    |elif len(event.items) > 1:
        {len(event.items)} nouveaux articles ont été publiés sur le Galnet.
        {set item to 0}
        {while item < len(event.items):
            {if item = 0:
                Titre du premier : {event.items[item].title}
                {if !match(event.items[item].title, statustitle):
                    , et contient: 
        {set morceaux to split(event.items[item].content, "thargoid")}
        {set nbre_morceaux to len(morceaux)}
    
        {if nbre_morceaux > 1 :
         {set test to 1}
         {set new_text to ""}
         {for part in morceaux:
          {if test = 1:
            {set new_text to cat(part, "thargoïde")}
          |elif test < nbre_morceaux:
            {set new_text to cat(new_text, part, "thargoïde")}
          |else : 
           {set new_text to cat(new_text, part)}
          
          }
          {set test to (test+1)}
          
         }
        |else :
         {set new_text to event.items[item].content}
        }{new_text}   
                }. 
            |elif item = 1:
                Le second se nomme {event.items[item].title}
                {if !match(event.items[item].title, statustitle):
                    , et en voici le contenu: 
        {set morceaux to split(event.items[item].content, "thargoid")}
        {set nbre_morceaux to len(morceaux)}
    
        {if nbre_morceaux > 1 :
         {set test to 1}
         {set new_text to ""}
         {for part in morceaux:
          {if test = 1:
            {set new_text to cat(part, "thargoïde")}
          |elif test < nbre_morceaux:
            {set new_text to cat(new_text, part, "thargoïde")}
          |else : 
           {set new_text to cat(new_text, part)}
          
          }
          {set test to (test+1)}
         }
        |else :
         {set new_text to event.items[item].content}
        }
          {new_text}
                }.
            |elif item = len(event.items) - 1:
                Titre du dernier : {event.items[item].title}
                {if !match(event.items[item].title, statustitle):
                    . Lecture : 
        {set morceaux to split(event.items[item].content, "thargoid")}
        {set nbre_morceaux to len(morceaux)}
    
        {if nbre_morceaux > 1 :
         {set test to 1}
         {set new_text to ""}
         {for part in morceaux:
          {if test = 1:
            {set new_text to cat(part, "thargoïde")}
          |elif test < nbre_morceaux:
            {set new_text to cat(new_text, part, "thargoïde")}
          |else : 
           {set new_text to cat(new_text, part)}
          
          }
          {set test to (test+1)}
         }
        |else :
         {set new_text to event.items[item].content}
        }
          {new_text}
                }.
            |else:
                Le titre du suivant est {event.items[item].title}
                {if !match(event.items[item].title, statustitle):
                    , pour : 
        {set morceaux to split(event.items[item].content, "thargoid")}
        {set nbre_morceaux to len(morceaux)}
    
        {if nbre_morceaux > 1 :
         {set test to 1}
         {set new_text to ""}
         {for part in morceaux:
          {if test = 1:
            {set new_text to cat(part, "thargoïde")}
          |elif test < nbre_morceaux:
            {set new_text to cat(new_text, part, "thargoïde")}
          |else : 
           {set new_text to cat(new_text, part)}
          
          }
          {set test to (test+1)}
         }
        |else :
         {set new_text to event.items[item].content}
        }
          {new_text}
                }.
            }
            {set item to item + 1}
            {Pause(1000)}
        }
    }


    lit le plus vieil article non lu dans une catégorie donnée (par voice attack?)
    Galnet oldest news Read the oldest unread news in a given category
    Code:
    {_ Fetch category from state }
    {set articlecategory to state.article_category}
    
    {if articlecategory:
        {set articles to GalnetNewsArticles(articlecategory)}
    |else:
        {set articles to GalnetNewsArticles('Article')}
    }
    
    {if len(articles) = 0:
        Il n'y a aucun article non lu dans cette catégorie.
    |else:
        {set article to articles[len(articles)-1]}
        {SetState('eddi_context_galnet_news_id', article.id)}
        {article.title}: 
      
     {set morceaux to split(article.content, "thargoid")}
     {set nbre_morceaux to len(morceaux)}
    
     {if nbre_morceaux > 1 :
      {set test to 1}
      {set new_text to ""}
      {for part in morceaux:
       {if test = 1:
         {set new_text to cat(part, "thargoïde")}
       |elif test < nbre_morceaux:
         {set new_text to cat(new_text, part, "thargoïde")}
       |else : 
        {set new_text to cat(new_text, part)}
       
       }
       {set test to (test+1)}
      }
     |else :
      {set new_text to article.content}
     }
       {new_text}
    
        {GalnetNewsMarkRead(article.id)}
    }.


    Donne le nombre d'article galnet non lu
    Galnet unread report Report on unread news
    Code:
    {set articles to GalnetNewsArticles("Article")}
    
    {if len(articles) = 0:
        Vous avez déjà lu tous les articles
    |elif len(articles) = 1:
        vous avez un article non lu.
    |else:
        Vous avez {len(articles)} articles non lus
    }.


    Liste des scripts individuels ... suite 5...
    Reboot n°1

    se lance lorsque vous entrez ou sortez du mode d'approche planétaire
    Glide Triggered when your ship enters or exits glide
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'fsd')}
    {SetState('eddi_context_last_action', 'glide')}
    {SetState('eddi_context_system_name', event.system)}
    {SetState('eddi_context_body_name', event.body)}
    {SetState('eddi_context_body_system', event.system)}
    
    {if event.gliding:
        {Pause(5000)}
        {Occasionally(2, "mode d'")}entrée planétaire 
        {OneOf("engagé.", "initialisé.")}
    
        {Pause(1000)}
        {set body to BodyDetails(event.body, event.system)}
        {if !body.name || body.name = "" || !body.gravity:
            Données d'approche planétaire inconnues.
        |else:
            {if body.landable:
                {set gravity to round(body.gravity,2)}
                {if gravity > 4:
                    Danger! {P(body.name)} a une gravité extrème de {gravity} Gé.
                |elif gravity > 2:
                    Attention! {P(body.name)} a une forte gravité de {gravity} Gé.
                |elif gravity > 0.5:
                    Alerte! {P(body.name)} a une gravité moyenne de {gravity} Gé.
                |else:
                    {P(body.name)} a une gravité faible de {gravity} Gé.
                }
            }
        }
    |else:
        {OneOf("Arrivée en faible altitude.", "Apprauche planétaire terminée.")}.
    }


    se lance lorsque le vaisseau prend des dégats par température excessive
    Heat damage Triggered when your ship is taking damage from excessive heat
    Code:
    {Occasionally(2, "Danger:")}
    Dégats thermiques subis!.


    alerte temp au dela de 100%
    Heat warning Triggered when your ship's heat exceeds 100%
    Code:
    {Occasionally(2, "Alerte:")}
    La température dépasse les seuils de tolérance!.


    trouver le bon titre pour votre commandant
    Honorific Function to provide a suitable honorific for your commander
    Code:
    {if system.allegiance = "Empire":
        {if cmdr.empirerating.rank <= 4:
           commandeur
        |elif cmdr.empirerating.rank = 5:
            sieur
        |elif cmdr.empirerating.rank <= 11:
            monseigneur
        |elif cmdr.empirerating.rank = 12:
            votre grace
        |elif cmdr.empirerating.rank = 13:
            votre altesse royale
        |elif cmdr.empirerating.rank = 14:
            votre majesté
        }
    |elif system.allegiance = "Federation":
        {if cmdr.federationrating.rank = 0:
            commandeur
        |else:
            {cmdr.federationrating.name}
        }
    |else:
        commandeur
    }


    lorsque le coque se prend certaines quantités de dégats
    Hull damaged Triggered when your hull is damaged to a certain extent
    Code:
    {if event.vehicle = vehicle:
        {if event.health < 40:
            Danger!:
        |elif event.health < 60:
            Attention!:
        |elif event.health < 80:
            Alerte!:
        }
        {OneOf("Coque", "Intégrité structurelle", "Intégrité")} {Occasionally(3, "est")} à {event.health}%.
    }


    test de solvabillité pour votre assurance (à utiliser avec voice attack
    Insurance check Check for enough credits to cover your insurance
    Code:
    {set insurance to round(ship.value * cmdr.insurance / 100)}
    
    {set covereds to round((cmdr.credits / insurance) - 0.5)}
    
    {if covereds = 0:
      Danger: vous ne pouvez pas payer d'assurance actuellement.
    |elif covereds = 1:
      Attention: Vous avez juste assez de crédit pour payer votre assurance une seule fois.
    |elif covereds < 4:
      Note: Vous pouvez payer votre assurance huste deux ou trois fos.
    |else
      (aucun problème dassurance avec ce compte en banque)
    }


    losque vous avez surchargé votre FSD sur une naine ou une neutron
    Jet cone boost Triggered when enough material has been collected from a solar jet cone (at a white dwarf or neutron star) for a jump boost
    Code:
    {Pause(1000)}
    Réacteur F S D emplifiés de {Humanise(event.boost * 100)} pourcent.
    Paré pour le saut.


    se lance quand vous asez fait un saut et arrivez dans le nouveau système
    Jumped Triggered when you complete a jump to another system
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'jump')}
    {SetState('eddi_context_last_action', 'complete')}
    {SetState('eddi_context_system_name', system.name)}
    {SetState('eddi_context_system_system', system.name)}
    {SetState('eddi_context_fuel_remaining', event.fuelremaining)}
    {SetState('eddi_context_fuel_used', event.fuelused)}
    
    {F('Fuel check')}


    lorsque vous abattez un autre joueur
    Killed Triggered when you kill another player
    Code:
    Vous avez vaincu le pilote {event.rating}, {event.victim}.


    lorsque vous sortez ou entrez votre train d'attérissage
    Landing gear Triggered when you deploy or retract your landing gear
    Code:
    {_ Context }
    {if state.landing_gear= "sortis":
     {SetState("landing_gear", "rentré")}
    |else : {SetState("landing_gear", "sortis")}
    }
    Train d'atérissage {state.landing_gear}.


    une indication pour aider à trouver son pad sur les grosses stations
    Landing pad report Report on the location of a landing pad
    Code:
    {set landingpad to state.eddi_context_landing_pad_pad}
    Votre plate forme dattérissage numéro {landingpad} est 
    {if landingpad = 1:
        à proximité à six heure
    |elif landingpad = 2:
        proche de lentré à six heures
    |elif landingpad = 3:
        à 6 heures vers le fond
    |elif landingpad = 4:
        à 6 heures vers le fond
    |elif landingpad = 5:
       vers les sept heures proche 
    |elif landingpad = 6:
        à sept heure juste à cotés
    |elif landingpad = 7:
        à sept heure vers le fond
    |elif landingpad = 8:
        vers les sept heures en séloignant
    |elif landingpad = 9:
        à huit heure juste devant
    |elif landingpad = 10:
        à huit heures vers le fond
    |elif landingpad = 11:
        à neuf heure proche
    |elif landingpad = 12:
        vers les neufs juste aprés l'entrée
    |elif landingpad = 13:
        vers les neufs heures, au centre de la station
    |elif landingpad = 14:
        à neuf heures, au fond de la station
    |elif landingpad = 15:
        à meuf heures, vers l'arrière de la station
    |elif landingpad = 16:
        juste en entrant à dix heures
    |elif landingpad = 17:
        à dix heures, juste aprés l'entrée
    |elif landingpad = 18:
        vers les dix heures, dans le cul de basse fosse
    |elif landingpad = 19:
        Vers les dix heures, au fond de la station
    |elif landingpad = 20:
        à onze heures proche de l'entrée
    |elif landingpad = 21:
        juste aprés l'entrée à onze heures
    |elif landingpad = 22:
        vers les onze heures dans les profondeurs de la station
    |elif landingpad = 23:
        au fond à onze heures
    |elif landingpad = 24:
        à douze heures vers l'entrée
    |elif landingpad = 25:
        à douze heure au fond
    |elif landingpad = 26:
        à une heure, juste aprés l'entrée
    |elif landingpad = 27:
        à une heure, proche de l'entrée
    |elif landingpad = 28:
        à une heure vers le milieu de la station
    |elif landingpad = 29:
        à une heure vraiment loin de l'entrée
    |elif landigpad = 30:
        vers les une heure au fond de la station
    |elif landingpad = 31:
        à deux heures, au début de la station
    |elif landingpad = 32:
        à deux heures en entrant
    |elif landingpad = 33:
        à deux heures au fond
    |elif landingpad = 34:
        à deux heures au fond
    |elif landingpad = 35:
     à trois heures, au début de la station
    |elif landingpad = 36:
        à trois heures juste à l'entrée
    |elif landingpad = 37:
        à trois heures, vers le centre de la station
    |elif landingpad = 38:
        à trois heures vers le fond
    |elif landingpad = 39:
        à quatres heures juste en entrant
    |elif landingpad = 40:
        à quatres heures au fond
    |elif landingpad = 41:
        à cinq heures peu aprés l'entrée
    |elif landingpad = 42:
        à cinq heures peu aprés l'entrée
    |elif landingpad = 43:
        à cinq heures vers le centre de la station
    |elif landingpad = 44:
     à cinq heures au fond
    |elif landingpad = 45:
     à cinq heures au fond de la station
    }
     , en passant correctement avec les lumières vertes à votre droite.


    lorsqu'on décolle d'une planète
    Liftoff Triggered when your ship lifts off from a planet's surface
    Code:
    {if event.playercontrolled = true:
      Décollage.
    |else:
      {ShipName()} a décollé.
    }


    lorsqu'on allume ou éteint les phares
    Lights Triggered when you activate or deactivate your lights
    Code:
    {_ Context }
    {if state.phares= "allumés":
     {SetState("phares", "éteints")}
    |else : {SetState("phares", "allumés")}
    }
    Phares {state.phares}.


    pour connaitre votre inventaire de drones
    Limpet check Check for the presence/absence of limpets and limpet controllers
    Code:
    {set  controllers to 0}
    {for compartment in ship.compartments:
        {if find(compartment.module.name, "Contrôleur") != -1:
            {set controllers to controllers + 1}
        }
    }
    {set limpets to 0}
    {for cargo in inventory:
        {if cargo.edname = "Drones":
            {set limpets to cargo.total}
        }
    }
    {set tenpercent to ship.cargocapacity / 10 - 1}
    {if controllers > 0 && limpets = 0:
        Mémo: Vous avez un contrôleur de drône mais aucun drone à bord.
    |elif controllers = 0 && limpets > 0:
        Vous avez des drones mais aucun controleur pour les diriger.
    |elif controllers > 0 && limpets < tenpercent:
        Vous avez seulement {limpets} drones à bord; Vous devriez considérer un réaprovisionnement.
    |else: Vous avez {limpets} drones à bord.
    }


    quand on utilise un drone
    Limpet launched Triggered when a limpet is launched
    Code:
    Drone {OneOf('lancé','activé')}.


    quand on achète un drone
    Limpet purchased Triggered when you buy limpets from a station
    Code:
    {event.amount} drone{if event.amount > 1:s}
    {if event.amount > 1:{Occasionally(2,"ont été")} |else: {Occasionally(2,"est")}}
    ajouté à votre
    {OneOf("soute", "inventaire", "réserve")}


    lorsqu'on vend des drones
    Limpet sold Triggered when you sell limpets to a station
    Code:
    {event.amount} drone{if event.amount > 1:s}
    {Occasionally(2, "ont été")} vendu.


    l'inventaire des srv et chasseurs
    List launchbays Describes the contents of each launchbay in the ship
    Code:
    {for launchbay in ship.launchbays:
        vous avez un hangar de taille {launchbay.size} pour {launchbay.type}.
        {for vehicle in launchbay.vehicles:
            Il y a un {P(vehicle.name)} option {vehicle.loadout}
    
            {if type(vehicle.mount) != null:
                {if vehicle.mount = 'F':
                    , avec armes fixes
                |elif vehicle.mount = 'G':
                    , avec armement rotatif
                }
            }
            .{_ full stop}
    
            {if vehicle.rebuilds != null:
                {if vehicle.rebuilds = 1:
                    Renouvelable une fois.
                |elif vehicle.rebuilds = 0:
                    Non renouvelable.
                |else:
                    Renouvelable {vehicle.rebuilds} fois.
                }
            }
    
            {Pause(500)}
        }
    }


    Lancer au démarrage du jeu, pour savoir où vous êtes
    Location Triggered when the commander's location is reported, usually when they reload their game.
    Code:
    {_ Context }
    {SetState('eddi_context_system_name', event.system)}
    {SetState('eddi_context_body_name', event.body)}
    {SetState('eddi_context_body_system', event.system)}
    {SetState("cargo_scoop", "fermée")}
    {SetState("landing_gear", "rentré")}
    
    Vous êtes
    {if event.docked:
        Parké dans
        {if event.station = event.body:
            la station orbitale  {P(event.station)},
        |else:
            la station planétaire {P(event.station)} on {P(event.body)},
        }
    |elif event.body:
        proche de {P(event.body)}
    }
    dans le système {P(event.system)} .


    alerte carburant en dessous de 25% (avec test de modif vocale inside)
    Low fuel Triggered when your fuel level falls below 25%.
    Code:
     {SpeechRate('Attention, Attention!', 'fast')}, {SpeechPitch('niveau de ', 'x-low')}{SpeechPitch('carburant en ', 'x-high')}dessous de 25%!

  5. #5
    Des scripts, encore des scripts, toujours des scripts
    le spinoff de "Liste des scripts individuels"

    quand les données commerciales ont été mise à jour là où vous êtes docké
    Market information updated Triggered when market information for the currently docked station has been updated
    Code:
    {_ Find out in advance what we have to say }
    {if ship.role = "Multi-Rôle" || ship.role = "Commerce":
        {set purchasecheck to F("Commodity purchase check")}
    }
    {set limpetcheck to F("Limpet check")}
    {set swapoutcheck to F("Swapout check")}
    {set salecheck to F("Commodity sale check")}
    
    {if purchasecheck || salecheck || limpetcheck || swapoutcheck:
        {OneOf("mise à jour", "rafraichissement", "chargement")} des
        {OneOf("données", "informations", "prix")}
        {OneOf("du Marché", "du marché local", "des services de la Station")}
        {OneOf("reçu", "obtenu")}.
    
        {salecheck}
        {purchasecheck}
        {swapoutcheck}
        {limpetcheck}
    }


    quand on charge/embarque des éléments de craft
    Material collected Triggered when you collect a material
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'material')}
    {SetState('eddi_context_last_action', 'collect')}
    {SetState('eddi_context_material_name', event.material)}
    {SetState('eddi_context_material_name', material.name)}
    
    {if MaterialDetails(event.name).category.name = "Donnée" || MaterialDetails(event.name).category.name = "Encodé":
      {event.amount} données : {event.name}, {OneOf("sont bien téléchargées.","sont enregistrées.","sont collectées")} dans le serveur,
    |elif MaterialDetails(event.name).category.name = "Fabriqué"  : 
     {event.amount} objet manufacturé:
     {event.name}{OneOf("viens d'être chargé.","est collecté.","est dans la soute")}
    |else :
       {event.amount} unité de matière :
     {event.name} {OneOf("viens d'être chargé.","est collecté.","est dans la soute")}
    
    }.
    
    
       {if MaterialDetails(event.name).rarity.level = 1 :
        {Occasionally(5, "Quelque chose de vraiment trés commun")}
    
       |elif MaterialDetails(event.name).rarity.level = 2 :
        {Occasionally(4, "Quelque chose de commun")}
    
       |elif MaterialDetails(event.name).rarity.level = 3 :
        {Occasionally(3, "C'est pas tous les jours qu'on voit ça, mais c'est pas exceptionnel non plus.")}
    
       |elif MaterialDetails(event.name).rarity.level = 4 :
        {Occasionally(2, "Quelque chose de rare, cela pourrait être intéressant pour l'avenir.")}
     
       |elif MaterialDetails(event.name).rarity.level = 5 :
           Voilà le rare du rare, à conserver bien au chaud!.
    }


    rapport sur votre stock de matériaux (en concordance avec l'onglet "Moniteur de matériaux"
    Material discard report Report on how many of a material can be discarded
    Code:
    {_ Function to obtain a material from inventory}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required:
                {return material}
            }
        }
    }
    
    {_ Fetch material from state }
    {set material to state.material}
    {_ set material to "chrome"}
    {if material:
        {_ Fetch full material details }
        {set material to MaterialDetails(material)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'material')}
        {SetState('eddi_context_material_name', material.name)}
    }
    
    {if !material:
        {_ Fetch from context }
        {set material to MaterialDetails(state.eddi_context_material_name)}
    }
    
    {set inventory to _inventory(material.name)}
    
    
    {if inventory:
        {if inventory.maximum && inventory.maximum < inventory.amount:
            {set over to inventory.amount - inventory.maximum}
            {if over > 1:
                Vous pouvez éjecter {over} unités de {inventory.name} pour avoir la quantité maximum désirée.
            |elif over = 1:
                Vous pouvez éjecter 1 unité de {inventory.name}pour avoir la quantité maximum désirée.
            }
        |elif inventory.desired && inventory.desired < inventory.amount:
            {set over to inventory.amount - inventory.desired}
            {if over > 1:
                Vous pouvez éjecter {over} unités de {inventory.name} pour avoir la quantité optimale désirée.
            |elif over = 1:
                Vous pouvez éjecter 1 unités de {inventory.name} pour avoir la quantité optimale désirée.
            }
        |elif inventory.desired:
            Vous êtes en dessous de votre quantité optimale désirée pour : {inventory.name}.
        |elif inventory.maximum:
            Vous êtes en dessous de votre quantité Maximale désirée pour : {inventory.name}.
        |else:
            Vous êtes en dessous de tous les seuils désirés pour : {inventory.name}.
        }
    }


    lorsque vous découvrez une matière qui vous était encore inconnue
    Material discovered Triggered when you discover a material
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'material')}
    {SetState('eddi_context_last_action', 'discover')}
    {SetState('eddi_context_material_name', event.name)}
    
    Vous venez de trouver la matière:{event.name}, pour la première fois.


    lorsque l'on donne des matières (à un ingé par exemple)
    Material donated Triggered when you donate a material
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'material')}
    {SetState('eddi_context_last_action', 'donate')}
    {SetState('eddi_context_material_name', event.material)}
    
    {if MaterialDetails(event.name).category.name = "Donnée" :
     {event.amount} données : {event.name}, transférée.
    |elif MaterialDetails(event.name).category = "Fabriqué" : 
     {event.amount}  objet manufacturé:
     {event.name}{OneOf("offerts.","donnés.","laissé en cadeau")}
    |else :
      {event.amount} unité de matière :
     {event.name} {OneOf("offerts.","donnés.","laissé en cadeau")}
    }.


    pour savoir combien d'un matériau vous aves à bord (a utiliser avec voice attack)
    Material inventory report Report on how many of a material are on-board
    Code:
    {_ Function to obtain a material from inventory}
    {set _inventory(required) to:
        {for material in materials:
            {if material.material = required:
                {return material}
            }
        }
    }
    {_ Fetch material from state }
    {set material to state.material}
    {_ set material to "bore"}
    {if material:
        {_ Fetch full material details }
        {set material to MaterialDetails(material)}
        {_ Context }
        {SetState('eddi_context_last_subject', 'material')}
        {SetState('eddi_context_last_subject', 'inventory')}
        {SetState('eddi_context_material_name', material.name)}
    }
    {if !material:
        {_ Fetch from context }
        {set material to MaterialDetails(state.eddi_context_material_name)}
    }
    {set inventory to _inventory(material.name)}
    {if inventory && inventory.amount > 0:
        {if inventory.amount = 1:
           Vous avez {inventory.amount} unités de {material.name} à bord.
        |else:
           Vous avez {inventory.amount} unités de {material.name} à bord.
        }
    |else:
        Vous navez aucun {material.name} à bord.
    }


    pour avoir des information où trouver les matériaux, information non traduites, elles sont ici : EDDP il reste encore à programmer la possibilité d'utiliser ces données traduites ensuite.
    Material location report Report on the where to obtain a particular material
    Code:
    {_ Fetch material from state }
    {set material to state.material}
    
    {_ set material to "Conductive Polymers"}
    
    {if material:
        {_ Fetch full material details }
        {set material to MaterialDetails(material)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'material')}
        {SetState('eddi_context_material_name', material.name)}
    }
    
    {if !material:
        {_ Fetch from context }
        {set material to MaterialDetails(state.eddi_context_material_name)}
    }
    
    {if material.name:
        {if material.location:
            {material.name} peut être {material.location}
        |else:
            Aucune information pour savoir où trouver {material.name} 
        }
    |else:
        Je n'est aucune information sur ça
    }.


    pour savoir où vous en êtes de vos matériaux par rapport à l'onglet "Moniteur de Matériaux" (plus trop utile depuis la 3.0 et la refonte des matériaux)
    Material required report Report on how many of a material are required to reach 'desired' level
    Code:
    {set required to []}
    
    {for material in materials:
      {if material.desired && material.amount < material.desired:
        {set required to cat(required, [material])}
     }
    }
    
    {if len(required) > 0:
        Il vous manque
        {if len(required) = 1:
            {required[0].desired - required[0].amount} 
      {required[0].name}
        |elif len(required) = 2:
            {required[0].desired - required[0].amount} {required[0].name} and {required[1].desired - required[1].amount} {required[1].name}
        |else:
            {set cur to 0}
            {while cur < len(required):
                {if cur = 0:
                    {required[cur].desired - required[cur].amount} {required[cur].name}
                |elif cur < len(required) - 1:
                    , {required[cur].desired - required[cur].amount} {required[cur].name}
                |else:
                    , and {required[cur].desired - required[cur].amount} {required[cur].name}
                }
                {set cur to cur + 1}
            }
        }.
    |else:
        Quantité de matériel présent comme indiqué dans votre liste de choix.
    }


    Surveille vos stock de matériaux pour prévenir pour les seuils choisis dans "Moniteur de Matière"
    Material threshold Triggered when a material reaches a threshold
    Code:
    {if event.level = 'Minimum':
        {_ Gone below the minimum level }
        {OneOf("Stock", "Inventaire", "Approvisionnement")} de {event.material.name} est passé en dessous de votre minimum surveillé.
    |elif event.level = 'Maximum':
      {_ Gone above the maximum level }
        {OneOf("Stock", "Inventaire", "Approvisionnement")} of {event.material.name} a augmenté au delà de votre maximum toléré.
    |else:
        {_ Moved around the desired level }
        {if event.change = 'Increase':
     Vous avez atteint la quantité optimale désirée de : {event.material.name}.
        |else:
            Vous êtes en dessous de la quantité nominale désirée pour : {event.material.name}.
        }
    } 
    {OneOf("Le stock actuel est de {event.amount}",
           "inventaire de {event.amount}",
           "{event.amount} unités à bord")}.


    lorsqu'on fait des échange avec un Commerçant de matériel
    Material traded Triggered when materials are traded at a material trader
    Code:
    Marché conclu avec le Commerçant de matériel de type : {event.tradertype}.
    
    Vous avez donné {event.paid_quantity} {event.paid} en échange de {event.received_quantity} {event.received}.


    liste des recettes qui utilisent un matériau donné (manque encore de traduction et programmation, EDDP il reste encore à programmer la possibilité d'utiliser ces données traduites ensuite) à utilisé avec VoiceAttack
    Material use report Report on the use of a material
    Code:
    {_ Fetch material from state }
    {set material to state.material}
    {_ set material to "Carbon"}
    
    {if material:
        {_ Fetch full material details }
        {set material to MaterialDetails(material)}
    
        {_ Context }
        {SetState('eddi_context_last_subject', 'material')}
        {SetState('eddi_context_material_name', material.name)}
    }
    
    {if !material:
        {_ Fetch from context }
        {set material to MaterialDetails(state.eddi_context_material_name)}
    }
    
    {if material && material.name:
        {set uses to len(material.blueprints)}
        {if slice(material.name, len(material.name)-1) = 's':
            {set plural to 'sont'}
        |else:
            {set plural to 'est'}
        }  
        {if uses = 0:
          {material.name}  {plural} non utilisé quelque soit le schéma technique.
        |elif uses = 1:
       {material.blueprints[0].name}
       {material.blueprints[0].modulename}
            {set name to cat(material.blueprints[0].name, ' ', material.blueprints[0].modulename, ' grade ', material.blueprints[0].grade)}
            
       {material.name} {plural} utilisé pour le schéma {name}
      |elif uses = 2:
       {material.blueprints[0].name}
       {material.blueprints[0].modulename}
    
            {set name0 to cat(material.blueprints[0].name, ' ', material.blueprints[0].modulename, ' grade ', material.blueprints[0].grade)}
    
      {material.blueprints[1].name}
      {material.blueprints[1].modulename}
    
            {set name1 to cat(material.blueprints[1].name, ' ', material.blueprints[1].modulename, ' grade ', material.blueprints[1].grade)}
            {material.name} {plural} utilisé pour {name0} et {name1}.
        |else:
            {material.name}  {plural} utilisés dans {len(material.blueprints)} schéma technique.  Liste :
            {set cur to 0}
            {while cur < len(material.blueprints):
    
        {material.blueprints[cur].name}
        {material.blueprints[cur].modulename}
                {set name to cat(material.blueprints[cur].name, ' ', material.blueprints[cur].modulename, ' grade ', material.blueprints[cur].grade)}
                {if cur = 0:
                    {name} 
       |elif cur < len(material.blueprints) - 1:
                    , {name}
                |else:
                    , et {name}
                }
                {set cur to cur + 1}
            }
        }
    |else:
        Je n'ai aucune information sur ce matériel
    }.


    Se lance lorsque vous recevez un message
    Message received Triggered when you receive a message
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'message')}
    {SetState('eddi_context_last_action', 'receive')}
    {SetState('eddi_context_message_name', event.from)}
    {SetState('eddi_context_message_content', event.message)}
    
    {if event.message = "o7":
        {event.from} salut
        {if event.channel = "player":
            toi
        }.
    |elif find(event.message, "Entered Channel")<0 :
        Message reçu de {event.from}.  Lecture: {event.message}.
    }


    lorsque vous envoyez un message
    Message sent Triggered when you send a message
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'message')}
    {SetState('eddi_context_last_action', 'send')}
    {SetState('eddi_context_message_name', event.to)}
    {SetState('eddi_context_message_content', event.message)}
    
    {OneOf("Message envoyé", "Message réceptionné", "Message expédié")}.


    se lance lorsque vous abandonnez une mission
    Mission abandoned Triggered when you abandon a mission
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'abandon')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if event.communal:
        Vous avez abandonné la mission communautaire: {mission.localisedname}
    |else:
        {if find(mission.typeEDName, "Passenger") > -1:
            {set type to "Transport "}
            {set type to cat(type, mission.passengertype)}
        |else:
            {set type to mission.type}
        }
        {set type to cat("la mission ", type)}
    
        {type} {if mission.faction: pour {mission.faction}} abandoné.
    }


    lorsque vous acceptez une mission
    Mission accepted Triggered when you accept a mission
    Code:
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'accepted')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if mission.type = "Don":
        {OneOf("Vous avez choisi } de donner","Mission de donation   accepter")}. Vous offrez:
        {if mission.typeEDName = "Altruism": {mission.commodity} |else: credits} ce qui
        {OneOf('améliore','augmente','acroit')} votre {OneOf('réputation','position')} avec {P(mission.faction)}
    |elif event.communal:
        Vous avez accepter une mission communautaire: {mission.localisedname}
    |else:
        {if find(mission.typeEDName, "Passenger") > -1:
            {set type to "Transport "}
            {set type to cat(type, mission.passengertype)}
        |else:
            {set type to mission.type}
        }
        {set type to cat("mission ", type)}
        {OneOf("{type} {if mission.faction: pour {mission.faction}} accepter",
            "{type} accepter {if mission.faction: pour {mission.faction}}",
            "Vous avez accepter une mission de type: {mission.type} {if mission.faction: pour {mission.faction}}")
        }
    }
    
    {F("Mission faction state")}
    
    {if mission.passengerswanted:
        Attention! Vous {OneOf("transportez","avez à bord")}
        {OneOf("{OneOf('un passager','une personne')} {OneOf('recherché','illicite')}","badit connu")}!
        Vous pouvez vous faire attaquer par {OneOf("les authorités","la police")} {Occasionally(2,"du système")}.
        La prudence est de mise,évitez de vous faire scanner.
    
    |elif token(mission.name,"_",2) = "Skimmer":
        Ceci est une {OneOf("mission","opération")} de surface.
    
    |elif token(mission.name,"_",2) = "Surface":
        Ceci est une {OneOf("mission","opération")} de surface, un SRV est nécessaire.
    }.
    
    {if missionsCount = 20:
        Vous avez accepter votre cotat maximum de missions.
        Merci den finir quelques une avant den vouloir dautres.
    |else:
       {OneOf("Vous avez {missionsCount} mission{if missionsCount > 1:s}",
            "c'est votre
        {if missionsCount = 1: première
        |elif missionsCount = 2: seconde
        |elif missionsCount = 3: troisième
        |else: {missionsCount}ième
        }
        mission")}.
    }


    pour savoir dans quels systèmes sont vos missions
    Mission check galaxy Check what systems you have missions in
    Code:
    {_ Mission report }
    {_ Check what systems you have missions in }
    
    {_ Setup allmissions function }
    {set allmissions(system) to:
    {set here to find(systems, system)}
        {if here > -1:
            {set number to systems_count[here] + 1}
            {set systems_count to union(systems_count, [here:number])}
        |else:
            {set systems to cat(systems, [system])}
            {set systems_count to cat(systems_count, [1])}
        }
    }
    
    {if missionsCount > 0:
    
        {set multi to 0}
    
        Il vous reste {missionsCount} mission{if missionsCount != 1:s} à finir.
    
        {if missionsCount = 1:
            c'est {Occasionally(2,"situé")} dans 
            {if missions[0].destinationsystem && missions[0].destinationsystem != "":
                le système {P(missions[0].destinationsystem)}
            |else:
                un emplacement qui n'est pas dans ma base de donnée
            }.  
        |else:
            {set systems to []}
            {set systems_count to []}
    
            {for mission in missions:
                {if mission.status = "Active":
                    {if mission.destinationsystems:
                        {set multi to multi + 1}
                        {for destination in mission.destinationsystems:
                            {allmissions(destination.name)}
                        }
                    |elif mission.destinationsystem && mission.destinationsystem != "":
                        {allmissions(mission.destinationsystem)}
                    }
                }
            }
    
            {if len(systems) = 0:
                Vous n'avez aucun système indiqué dans vos missions.
            |elif len(systems) = 1:
                Vos missions sont toutes 
                {if systems && systems[0] != "":
                   {Occasionally(2,"localisées")} dans le système {P(systems[0])}
                |else:
                    non assignées à un système donné.
                }.
    
            |else:
                {if multi > 0:
    
                    {if multi = missionsCount: tous |else: {multi}}
                    dans ces 
                    {if multi = 1: is a |else: are}
                    multi-destination mission{if multi != 1:s}.
                }
                 {if systems_count[0] = 1: c'est |else: ce sont }
    
                {set cur to 0}
                {while cur < len(systems):
                    {systems_count[cur]} 
                    {if cur = 0: destination{if systems_count[0] > 1: s}}
                    {if systems[cur] = "":
                        dans un système non défini
                    |else:
                        {OneOf("à ","dans le système")} {P(systems[cur])}
                    }
    
                    {set cur to cur + 1}
                    {if cur = len(systems)-1: and |elif cur < len(systems):, }
                }
            }.
        }
    |else:
        {OneOf("vous n'avez pas de mission.", "vous n'avez aucune mission.", "aucune mission en cours dans ma base de donnée.")}
    }


    Liste des scripts individuels ...Origins...
    Le préquel

    vérifie si vous avez des missions en liaison avec la station où vous entrez
    Mission check station Check what missions you have for the current station
    Code:
    {_ Mission check station }
    {_ Check what missions you have for the current station }
    
    
    {if missionsCount > 0:
        {set current_station to state.eddi_context_body_name}
        {set active_missions to 0}
        {set complete_missions to 0}
        {set depot_missions to 0}
    
        {if current_station && current_station != "":
            {for mission in missions:
                {if mission.destinationstation = current_station ||
                    (mission.originstation = current_station && find(mission.type, "Delivery") > -1):
                    {if mission.status = "Active":
                        {if find(mission.type, "Collect") > -1 || find(mission.type, "Delivery") > -1:
                            {set depot_missions to depot_missions + 1}
                        |else:
                            {set active_missions to active_missions + 1}
                        }
                    |elif mission.status = "Complete":
                        {set complete_missions to complete_missions + 1}
                    }
                }
            }
        }
    
        {set total to active_missions + complete_missions + depot_missions}
        {if total > 0:
            Vous avez 
            {if depot_missions > 0:
                {depot_missions} mission{if total > 1:s} de livraison
                {if active_missions > 0 && complete_missions > 0: ,
                |elif active_missions > 0 || complete_missions > 0: and}
            }
            {if active_missions > 0:
                {active_missions} mission{if total > 1:s} active{if total > 1:s}
                {if complete_missions > 0: and}
            }
            {if complete_missions > 0:
                {complete_missions} mission{if total > 1:s} complétéen{if total > 1:s} 
            }
            {Occasionally(3,"localisée")} en cette station.
        }
    }


    test pour savoir si vous avez des mission dans le système, et si oui, lesquelles
    Mission check system Check what missions you have for the current system
    Code:
    {_ Mission check system }
    {_ Check what missions you have for the current system }
    
    
    {_ Setup addstation function }
    {set addstation(station) to:
        {set missions_here to missions_here + 1}
        {set station_based to station_based + 1}
        {set here to find(stations_here, station)}
        {if here > -1:
            {if mission.status = "Actif":
                {if mission.type = "Collection" ||  mission.type= "Livraison":
                    {set depot to stations_depot[here] + 1}
                    {set stations_depot to union(stations_depot, [here:depot])}
    
                |else:
                    {set active to stations_active[here] + 1}
                    {set stations_active to union(stations_active, [here:active])}
                }
            |else:
                {set complete to stations_complete[here] + 1}
                {set stations_complete to union(stations_complete, [here:complete])}
            }
        |else:
            {set stations_here to cat(stations_here, [station])}
            {if mission.status = "Actif":
                {if mission.type = "Collection" ||  mission.type= "Livraison":
                    {set stations_active to cat(stations_active, [0])}
                    {set stations_depot to cat(stations_depot, [1])}
                |else:
                    {set stations_active to cat(stations_active, [1])}
                    {set stations_depot to cat(stations_depot, [0])}
                }
                {set stations_complete to cat(stations_complete, [0])}
            |else:
                {set stations_active to cat(stations_active, [0])}
                {set stations_complete to cat(stations_complete, [1])}
                {set stations_depot to cat(stations_depot, [0])}
            }
        }
    }
    
    {if missionsCount > 0:
        {set current_system to system.name}
        {set missions_here to 0}
        {set station_based to 0}
        {set stations_active to []}
        {set stations_complete to []}
        {set stations_depot to []}
        {set stations_here to []}
        {set non_stations to []}
    
        {_ Find all missions in the current system and identify all the stations }
        {for mission in missions:
            {if mission.status != "Raté":
                {if mission.destinationsystems:
                    {for destination in mission.destinationsystems:
                        {if destination.name = current_system && !destination.visited:
                            {set missions_here to missions_here + 1}
                            {if find(mission.typeEDName, "Passenger") > -1:
                                {set type to "Transport de "}
                                {set type to cat(type, mission.passengertype)}
                            |else:
                                {set type to mission.type}
                            }
    
                            {if find(non_stations, type) = -1:
                                {set non_stations to cat(non_stations, [type])}
                            }
                        }
                    }
                |elif mission.destinationsystem = current_system:
                    {if mission.destinationstation && mission.destinationstation != "":
                        {addstation(mission.destinationstation)}
                    |else:
                        {if mission.status = "Actif":
                            {set missions_here to missions_here + 1}
                            {if find(mission.typeEDName, "Passenger") > -1:
                                {set type to "Transport de "}
                                {set type to cat(type, mission.passengertype)}
                            |else:
                                {set type to mission.type}
                            }
                            {if find(non_stations, type) = -1:
                                {set non_stations to cat(non_stations, [type])}
                            }
                        }
                    }
                |elif mission.originsystem = current_system && find(mission.type, "Delivery") > -1:
                    {if mission.originstation && mission.originstation != "":
                        {addstation(mission.originstation)}
                    }
                }
            }
        }
    
        {if missions_here > 0:
            Il y a {missions_here} {if missions_here > 1: missions |else: mission} 
            {OneOf('ici','dans ce système')}.
    
            {if station_based > 0:
                {Pause(500)}
                {if missions_here = 1: votre
                |elif len(stations_here) = 1:
                    {if missions_here = station_based: toutes vos |else: vous avez des }
                }
    
                {set cur to 0}
                {while cur < len(stations_here):
                    {set station to StationDetails(stations_here[cur])}
                    {set total to stations_active[cur] + stations_complete[cur] + stations_depot[cur]}
        mission{if total > 1:s}
                    {if stations_depot[cur] > 0:
                        livraison {stations_depot[cur]} 
                        {if stations_active[cur] > 0 && stations_complete[cur] > 0: ,
                        |elif stations_active[cur] > 0 || stations_complete[cur] > 0: et}
                    }
                    {if stations_active[cur] > 0:
                        active {stations_active[cur]} 
                        {if stations_complete[cur] > 0: et}
                    }
                    {if stations_complete[cur] > 0:
                        complétée {stations_complete[cur]} 
                    }
                    
                    {if len(stations_here) = 1: {if total > 1: sont |else: est}} à
                    {station.model}, {stations_here[cur]}
                    {set cur to cur + 1}
                    {if cur = len(stations_here)-1: et |elif cur < len(stations_here): ,}
                }.
            }
    
            {if missions_here > station_based:
                {Pause(500)}
                {set remaining to missions_here - station_based}
                {if station_based > 0: les {remaining} restantes |else: la }
    
                {set cur to 0}
                {while cur < len(non_stations):
                    {non_stations[cur]}
                   
                    {set cur to cur + 1}
                    {if cur = len(non_stations)-1: et |elif cur < len(non_stations): ,}
                }
                mission{if remaining > 1: s} must be {OneOf("searched for","determined","found")}.
            }
        }
    }


    Déclenché lorsque vous terminez une mission edit du 05/12/18 correctif gros bug
    Mission completed Triggered when you complete a mission
    Code:
     {_ Mission completed }
    {_ Triggered when you complete a mission }
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'complete')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if find(mission.typeEDName, "Passenger") > -1:
        {set type to "Transport "}
        {set type to cat(type, mission.passengertype)}
    |else:
        {set type to mission.type}
    }
    {set type to cat("mission ", type)}
    {set ranktype to token(mission.name,"_",2)}
    
    {if mission.type = "Don":
        {if mission.typeEDName = "Altruism":
            {set donate to cat("de ", event.amount, " tonnes de ",event.commodity)}
        |else:
            {set donate to cat("de ", event.donation," crédits")}
        }
    
        {OneOf("donation {Occasionally(2, '{donate}')} à {P(mission.faction)} {Occasionally(2, 'sui vous est reconnaissante')}",
            "{P(mission.faction)} a reçu votre donantion {Occasionally(2, '{donate}')}",
            "{P(mission.faction)} vous remercie pour votre donantionation {Occasionally(2, '{donate}')}")}
        {F("Mission faction state")}.
    
    |elif ranktype = "RANKEMP" || ranktype = "RankEmp" || ranktype = "RANKFED" || ranktype = "RankFed":
        Vous avez {OneOf("fini la {type} avec succés","réussite de la {type} validée")}
    |elif mission.communal:
        Vous avez terminé la mission communautaire: {mission.name}.
        {OneOf('Vous avez reçu','Vous touchez en récompense')} {Humanise(mission.reward)} crédits pour
        {OneOf("votre contribution","votre participation","avoir participé")}
    |else:
        {if event.reward > 0:
            {OneOf("{type} Terminée. Vous {OneOf('recevez','touchez en récompense')}
                    {Humanise(event.reward)} crédits",
                "Vous {OneOf('recevez ','êtes récompensé de ')} {Humanise(event.reward)} crédits pour
                    {OneOf('avoir fini la {type} avec succés','avoir terminé la {type}',
                        'votre réussite dans la {type}')}")
            }
        |else:
            {OneOf("{type} terminée","terminé la {type} avec succés",
                "Vous avez réussi la {type}")}
       }
    }
    {if mission.type != "Don": {F("Mission faction state")}}.
    
    {if event.rewardCommodity && event.rewardCommodity != "":
        {Pause(500)}
        {if event.rewardCommodityAmount = 0:
            {if event.reward > 0:
                {OneOf("Toute fois, ","Mais, ")}
            }
            Vous ne pouvez pas recevoir votre récompense {OneOf("en nature","en marchandises")}, {Occasionally(2,"car")}
            {if ship.cargocapacity = 0:
                Vous n'avez pas de soute pour cela.
            |else:
                Vos soutes sont {Occasionally(2,"déjà")} pleines.
            }
        |else:         
            {if event.reward > 0:
                {OneOf("En plus, ","Et, ")}
            }
            {OneOf("il y a ", "vous avez ", "")}{event.rewardCommodityAmount} tonne{if event.rewardCommodityAmount > 1: s} de {event.rewardCommodity}
            {OneOf("confirmé en chargement","confirmé en soute","reçu","embarqué en récompense")}.
        }
    |elif event.rewardMaterial && event.rewardMaterial != "":
        {if event.reward > 0:
            {OneOf("En plus, ","Et, ")}
        }
        {event.rewardMaterialAmount} unité{if event.rewardMaterialAmount > 1:s} de {event.rewardMaterial}
        {OneOf("ont été reçu","donné en récompense")}.
    }
    
    {if ranktype = "RANKFED" || ranktype = "RankFed":
        {Pause(500)}
        {set rank to cmdr.federationrating.rank + 1}
    
        Congratulations {OneOf("Commandeur {cmdr.name}","Sieur")}! Vous
            {OneOf("{OneOf('élevez votre position','êtes promu')}",
                "montez en grade")}
            dans la marine fédérale
    
        {if rank = 3:
            , et pouvez désormais avoir accés au Fédéral Dropship
        |elif rank = 4:
            , et vous pouvez accéder au système sol {P("Sol")}
        |elif rank = 5:
            , et pouvez désormais avoir accés au Fédéral Assault Ship.
            Et, vous recevez les permis d'accés pour les systèmes {P("Vega")} et {P("Beta Hydri")}
        |elif rank = 6:
            , et, vous recevez le permis d'accés pour le système PLX 695
        |elif rank = 7:
            , et pouvez désormais avoir accés au Fédéral Gunship.
            Et vous recevez le permis d'entrer dans le système Ross 128
        |elif rank = 8:
            , et vous recevez le permis d'entrer dans le système  {P("Exbeur")}
        |elif rank = 10:
            , et vous recevez le permis d'entrer dans le système  {P("Hors")}
        |elif rank = 12:
            , et pouvez désormais avoir accés à la Corvette Fédérale
        |elif rank = 14:
            , et vous avez atteint le plus haut rang dans la fédération
        }.
    
    |elif ranktype = "RANKEMP" || ranktype = "RankEmp":
        {Pause(500)}
        {set rank to cmdr.empirerating.rank + 1}
    
        Congratulations {OneOf("Commandeur {cmdr.name}","Sieur")}! Vous
            {OneOf("{OneOf('élevez votre position','êtes promu')}",
                "montez en grade")}
        dans l'Empire.
    
        {if rank = 1:
            Vous pouvez désormais avoir accés à l'Impérial Eagle
        |elif rank = 3:
            Vous pouvez désormais avoir accés à l'Imperial Courier
        |elif rank = 4:
            Vous recevez l'honneur d'un accés libre pour le système {P("Archenar")}
        |elif rank = 7:
            Vous pouvez désormais avoir accés à l'Imperial Clipper.
            Et vous recevez le permis d'entrer dans le système {P("Summer-land")}
        |elif rank = 10:
            Et vous recevez le permis d'entrer dans le système {P("Facece")}
        |elif rank = 12:
            Vous pouvez désormais avoir accés à l'Imperial Cutter
        |elif rank = 14:
            et vous avez atteint le plus haut rang dans l'Empire
       }.
    }


    se lance quand le temps imparti pour une mission est écoulé
    Mission expired Triggered when a mission has expired
    Code:
    {_ Mission expired }
    {_ Triggered when a mission has expired }
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'expired')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if find(mission.typeEDName, "Passenger") > -1:
        {set type to "Transport "}
        {set type to cat(type, mission.passengertype)}
    |else:
        {set type to mission.type}
    }
    {set type to cat("mission de"), type}
    
     {OneOf("{type} {if mission.faction: pour {mission.faction}} a expirée.", 
       "Le temps pour la réussite de la {type} est écoulé.",
       "Echec de la {type}, temps imparti dépassé!")}
    {if mission.commodity:
        {for cargo in inventory:
            {if cargo.name = mission.commodity && cargo.haulage > 0:
                toute cargaison liée à la mission est maintenant déclarée volée.
            }
        }
    }


    mais quel est donc l'état politico-économique de la faction pour laquelle vous acceptez une mission?
    Mission faction state Report the faction state
    Code:
    {if (mission.factionstate) = "Boom":
        {OneOf("durant","en")} {OneOf("ces temps prospères","Essor économique")}
    |elif (mission.factionstate) = "Bust":
        {OneOf("durant","en")} {OneOf("en ces temps de Faillite","recession","crise économique")}
    |elif (mission.factionstate) = "CivilUnrest":
        {OneOf("durant","en")} {Occasionally(2,"ces temps d")}{OneOf("e troubles sociaux","'émeutes")}
    |elif (mission.factionstate) = "CivilWar":
        {OneOf("durant","en")} {Occasionally(2,"ces temps ")}{OneOf("de guerre civile","d'insurection")}
    |elif (mission.factionstate) = "CivilLiberty":
        {OneOf("au nom de","pour")}{OneOf(" la démocratie", "s libertés individuelles", "s libéralismes")} 
    |elif (mission.factionstate) = "Election":
     {OneOf("durant des élections","en plein phase électorale", "durant la campagne électorale")} 
    |elif (mission.factionstate) = "Famine":
        {OneOf('lors de','durant')} {OneOf('cette','la')} famine
    |elif (mission.factionstate) = "Investment":
        {OneOf('lors de','durant')} cette phase d'investissements dans les infrastructures
    |elif (mission.factionstate) = "Lockdown":
        {OneOf("Durant ces restrictions à cause de la loi martiale", "lors de ces blocus militaires")}
    |elif (mission.factionstate) = "Expansion":
        {OneOf('lors de','durant')} cette phase d'expansion vers un nouveau système
    |elif (mission.factionstate) = "War":
        {OneOf("durant","en")} {OneOf("ces temps d", "plein")}{OneOf("e guerre civile","'insurection")}
    |elif (mission.factionstate) = "Retreat":
        {OneOf('lors de','durant')} cette phase de repli d'un autre système
    |elif (mission.factionstate) = "Outbreak"
        {OneOf('lors de','durant')} {OneOf("cette urgence médicale","cette épidémie fulgurante")}
    }


    quand ça a merdé quelque part dans la mission
    Mission failed Triggered when you fail a mission
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'fail')}
    
    
    {set mission to MissionDetails(event.missionid)}
    
    {if find(mission.typeEDName, "Passenger") > -1:
        {set type to "Transport "}
        {set type to cat(type, mission.passengertype)}
    |else:
        {set type to mission.type}
    }
    {set type to cat("mission ", type)}
    
    {OneOf("{type} {if mission.faction: pour {mission.faction}} a échouée", 
        "vous avez {OneOf('échoué pour', 'raté')} la {type} {if mission.faction: pour {mission.faction}}",
     "échec de la {type} {if mission.faction: pour {mission.faction}}")}.


    lors des changement de destination pour les missions
    Mission redirected Triggered when a mission is redirected
    Code:
    {_ Mission redirected }
    {_ Triggered when a mission is redirected }
    
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'redirected')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if find(mission.typeEDName, "Passenger") > -1:
        {set type to "Transport "}
        {set type to cat(type, mission.passengertype)}
    |else:
        {set type to mission.type}
    }
    {set type to cat("mission ", type)}
    
    {if mission.status = "Complete" && mission.destinationsystem = mission.originsystem:
        prérequis et obligation de la {type} atteint. Redirigé vers l'origine de la mission.
    |elif mission.destinations:
        {type} en {OneOf("épisodes", "chaine")} redirigée vers le système {P(event.newdestinationsystem)}.
    |else:
        {type} redirigé 
        {if event.newdestinationstation:
           vers {event.newdestinationstation} dans le système {P(event.newdestinationsystem)}.
        |else:
           dans le système {P(event.newdestinationsystem)}.
        }
    }


    une alerte quand le temps donnée dans le moniteur de mission est arrivé
    Mission warning Triggered when a mission is about to expire, based on a set threshold
    Code:
    {_ Mission warning }
    {_ Triggered when a mission is about to expire, based on a set threshold }
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'mission')}
    {SetState('eddi_context_last_action', 'warning')}
    
    {set mission to MissionDetails(event.missionid)}
    
    {if find(mission.typeEDName, "Passenger") > -1:
        {set type to "Transport "}
        {set type to cat(type, mission.passengertype)}
    |else:
        {set type to mission.type}
    }
    {set type to cat("mission", type)}
    
    {SpeechRate('Attention, Attention:', 'fast')} {type} {if mission.faction: pour {mission.faction}} expirera dans {event.remaining} minutes.


    en liaison avec la nouvelle fonction RouteDetails() , voir 'Aide' dans EDDI
    Missions route Get the missions route for various mission details
    Code:
    {_ Missions route }
    {_ Get the missions route for various mission details }
    
    {if event.routetype = "expiring":
         {if event.distance > 0:
             {set mission to MissionDetails(event.missionids[0])}
    
             {if find(mission.typeEDName, "Passenger") > -1:
                 {set type to "Transport "}
                 {set type to cat(type, mission.passengertype)}
             |else:
                 {set type to mission.type}
             }
             {set type to cat("mission ", type)}
    
             {type} {if mission.faction: pour {mission.faction}}
             {if mission.destinationsystem: dans 
                 {if mission.destinationsystem = system.name:
                     le système actuel
                 |else:
                   le système {mission.destinationsystem}
                 } 
             } est la prochaine à expirer
         |else:
             Aucune mission trouvée.
         }
    |elif event.routetype = "farthest":
         {if event.distance > 0:
             {if missionsCount = 1: La destination de votre seule mission |else: la destination de votre mission la plus éloignée}
             est
             {if event.system = system.name:
                 {OneOf("ici même", "dans ce système", "là où vous êtes")}
             |else:
                 dans le système {event.system}, à {round(event.distance, 1)} années lumière
             }.
         |else:
             Pas de mission trouvée avec une destination précise.
         }
    |elif event.routetype = "most":
         {if missionsCount = 1:
             Votre seule mission 
             {if missions[0].destinationsystem = "":
                n'a pas de destination précise
             |elif missions[0].destinationsystem = system.name:
                 est dans ce système
    		 |else:
                 est dans le systême {missions[0].destinationsystem}
             }
             .
         |else:
             {set systems to split(event.systems, "_")}
             {set system_most to event.system}
             {set systems_count to len(systems)}
    
             {if systems_count = 1:
                 {if system_most = system.name:
                     {set system_most to "Le systême actuel"}
                 |else:
                     {set system_most to cat("Le systême ", system_most)}
                 }
                 {OneOf("La plupart de vos missions sont {Occasionally(2,'locatlisées')} dans {system_most}",
                     "{system_most} concentre {OneOf('la majorité','la plupart')} de vos missions",
                     "{system_most} est celui qui a le plus de missions en attentes")}.
             |elif systems_count > 1:
                 Vous avez des missions réparti en même nombre dans {event.count} cible{if event.count > 1:s} 
    				Ce sont les systèmes
                 {set cur to 0}
                 {while cur < len(equal):
                     {systems[cur]}
                     {set cur to cur + 1}
                     {if cur = systems_count-1: et |elif cur < systems_count: ,}
                 }.
             }
         }
    |elif event.routetype = "nearest":
         {if event.distance > 0:
             La cible pour votre {if missionsCount = 1: seule mission |else: mission la plus proche}
             est dans le système
             {if event.system = system.name:
                 actuel
             |else:
                 {event.system}, à {round(event.distance, 1)} années lumières
             }.
         |else:
             Pas de mission trouvée avec une destination précise.
         }
    |elif event.routetype = "route":
         {if event.routedistance > 0:
             Calcul de l'itinéraire des missions pour {event.count} systèmes.
             L'itinéraire complet est de {round(event.routedistance, 1)} années lumières.
             La première mission est sur le système {event.system}, à {round(event.distance, 1)} années lumières.
         |else:
             Impossible de calculer l'itinéraire des missions.
         }
    |elif event.routetype = "source":
         {if event.count > 0:
             {set systems to split(event.route, "_")}
    
             {set pos to 0}
             {while pos < event.count:
    
                 {set source_cargo to []}
                 {for missionid in event.missionids:
                     {set haulage to HaulageDetails(missionid)}
                     {if haulage.sourcesystem = systems[pos]:
                         {set cargo to CargoDetails(missionid)}
                         {if find(source_cargo, cargo.name) = -1:
                             {set source_cargo to cat(source_cargo, [cargo.name])}
                         }
                     }
                 }
    
                 {if pos = 0:
                     votre {if event.count = 1: seule |else: plus proche} source
                 |elif pos = 1:
                     En plus, votre source
                 |elif pos = event.count - 1:
                     finalement, votre source
                 |else:
                     Votre source
                 }
    
                 pour
                 {set cur to 0}
                 {while cur < len(source_cargo):
                     {source_cargo[cur]}
                     {set cur to cur + 1}
                     {if cur = len(source_cargo) - 1: and |elif cur < len(source_cargo): ,}
                 }
    
                 est dans le système
                 {if systems[pos] = system.name:
                     actuel
                 |else:
                     {systems[pos]}, à
                     {set distance to Distance(system.name, systems[pos])}
                     {round(distance, 1)} années lumières
                 }.
                 {set pos to pos + 1}
             }
             {SetState('eddi_context_cargo_source', event.route)}
         |else:
             Source de fret non trouvée avec un système cible désigné.
         }
    |elif event.routetype = "update":
         {if event.routedistance > 0:
             La prochaine destination est pour le système {event.system}, à {round(event.distance, 1)} années lumières.
         |else:
             Impossible d'effectuer la mise à jour vers la prochaine destination de la mission.
         }
    }





    Liste des scripts individuels ...Infinity...
    La guerre des Codes

    Lorsque vous faites des améliorations sur un module
    Modification crafted Triggered when you craft a modification to a module
    Code:
    L'ingénieur est {event.engineer}. la recette est {event.blueprint} de grade {event.level}.
    {set NbreMaterial to len(event.materials)} 
    
    On utilise {NbreMaterial} matériaux de construction
    {set materials to event.materials}
    {set cur to 0}
    {set IsPrefixe1 to 0}
    {set IsSufixe1 to 0}
    {set IsPrefixe2 to 0}
    {set IsSufixe2 to 0}
    {set IsPrefixe3 to 0}
    {set IsSufixe3 to 0}
    {while cur < len(materials):
     {if cur = 0:
         {set material1 to MaterialDetails(materials[0].material)}
      {material1.name} présent dans {len(material1.blueprints)} recettes
      {set blueprints to []}
            {for blueprints in material1.blueprints:
                {set prefixe to NoSpace(lcase(blueprints.name))}
       {if EDprefixe = prefixe && event.level=blueprints.grade: {set IsPrefixe1 to IsPrefixe1+1}}
                {set sufixe to NoSpace(lcase(blueprints.modulename))}
       {if EDsufixe = sufixe && event.level=blueprints.grade: {set IsSufixe1 to IsSufixe1+1}}
            }
        |elif cur = 1: 
         {set material2 to MaterialDetails(materials[1].material)}
      {material2.name} présent dans {len(material2.blueprints)} recettes
      {set blueprints to []}
            {for blueprints in material2.blueprints:
                {set prefixe to NoSpace(lcase(blueprints.name))}
       {if EDprefixe = prefixe && event.level=blueprints.grade: {set IsPrefixe2 to IsPrefixe1+1}}
                {set sufixe to NoSpace(lcase(blueprints.modulename))}
       {if EDsufixe = sufixe && event.level=blueprints.grade: {set IsSufixe2 to IsSufixe1+1}}
            }
     |else: 
         {set material3 to MaterialDetails(materials[2].material)}
      {material3.name} présent dans {len(material3.blueprints)} recettes
      {set blueprints to []}
            {for blueprints in material3.blueprints:
                {set prefixe to NoSpace(lcase(blueprints.name))}
       {if EDprefixe = prefixe && event.level=blueprints.grade: {set IsPrefixe3 to IsPrefixe1+1}}
                {set sufixe to NoSpace(lcase(blueprints.modulename))}
       {if EDsufixe = sufixe && event.level=blueprints.grade: {set IsSufixe3 to IsSufixe1+1}}
            }
     }
     {set cur to cur + 1}
    }


    Lorsque un module que vous avez envoyé vers une autre station est enfin arrivé
    Module arrived Triggered when you complete a module transfer
    Code:
    {Occasionally(2, '{F(\'Honorific\')}, ')}
    Votre {event.module.name} 
    
    {OneOf('est arrivé {if event.system && event.station: \'à\')}', 
           'a fini son transfert {if event.system && event.station: \'vers\')}')}
    
    {if event.sytem != system.name && len(event.system) > 0 && len(event.station) > 0:
       {event.station} in the {event.system} system
    |elif event.station != station.name && len(event.station) > 0:
       {event.station}
    }.


    Lorsque vous achetez un module
    Module purchased Triggered when you purchase a module in outfitting
    Code:
    Vous avez acheté un module {event.buymodule.name} {event.buymodule.class}-{event.buymodule.grade},
    
    {if type(event.buymodule.mount) != "void":
        {for index, value in event.buymodule.mount: {set mount to value}}
        {if mount = 0:
            fixe
        |elif mount = 1:
            rotafif
        |elif mount = 2:
            montage tourelle
        }
    }
     {event.buymodule.class}-{event.buymodule.grade}
     pour {event.buyprice} crédits
    
    {if type(event.sellmodule) != "void":
        , et vendu un module {event.sellmodule.name}
    
        {if type(event.sellmodule.mount) != "void":
            {for index, value in event.sellmodule.mount: {set mount to value}}
            {if mount = 0:
                fixe
            |elif mount = 1:
                rotafif
           |elif mount = 2:
                montage tourelle
            }
        }
     {event.sellmodule.class}-{event.sellmodule.grade},
        pour {event.sellprice} crédits
    
    |elif type(event.storedmodule) != "void":
        , et {OneOf("stocké", "mis au hangar", "conservé")} votre {event.storedmodule.name}
        {if type(event.storedmodule.mount) != "void":
            {for index, value in event.storedmodule.mount: {set mount to value}}
            {if mount = 0:
                fixe
            |elif mount = 1:
                rotafif
           |elif mount = 2:
                montage tourelle
            }
        }
        {event.storedmodule.class}-{event.storedmodule.grade}
    }.


    lorsque vous prenez un module de vos stock pour le remettre sur un visseau
    Module retrieved Triggered when you fetch a previously stored module
    Code:
    Vous réinstallez un {event.module.name} grade {event.module.class}-{event.module.grade}
    
    {if type(event.module.mount) != "void":
        {for index, value in event.module.mount: {set mount to value}}
        {if mount = 0:
           à montage fixe
        |elif mount = 1:
            à montage rotafif
        |elif mount = 2:
            à montage tourelle
        }
    }
    
     de vos hangards
    
    {if type(event.swapoutmodule) != "void":
        et stockez votre  {event.swapoutmodule.name} {event.swapoutmodule.class}-{event.swapoutmodule.grade}
    
        {if type(event.swapoutmodule.mount) != "void":
            {for index, value in event.swapoutmodule.mount: {set mount to value}}
            {if mount = 0:
            à montage fixe
        |elif mount = 1:
            à montage rotafif
        |elif mount = 2:
            à montage tourelle
            }
        }
    }
    {if type(event.cost) != "void": pour un coût de  {event.cost} crédits}
    .


    lorsque vous vendu un de vos modules directement de votre vaisseau
    Module sold Triggered when selling a module to outfitting
    Code:
    Vous avez vendu votre {event.module.name}
    
    {if type(event.module.mount) != "void":
        {for index, value in event.module.mount: {set mount to value}}
        {if mount = 0:
            fixe
        |elif mount = 1:
            rotatif
        |elif mount = 2:
            montage tourelle
        }
    }
    {event.module.class}-{event.module.grade},
     depuis votre stock pour {event.price} crédits.


    lorsque vous vendez un module du stock en station
    Module sold from storage Triggered when selling a module from storage
    Code:
    Vous avez vendu votre {event.module.name}
    
    {if type(event.module.mount) != "void":
        {for index, value in event.module.mount: {set mount to value}}
        {if mount = 0:
            fixe
        |elif mount = 1:
            rotatif
        |elif mount = 2:
            montage tourelle
        }
    }
    {event.module.class}-{event.module.grade},
     depuis votre stock pour {event.price} crédits.


    lorsque vous stocker un de vos module en station
    Module stored Triggered when you store a module
    Code:
    Vous avez stocké votre {event.module.name}
    
    {if type(event.module.mount) != "void":
        {for index, value in event.module.mount: {set mount to value}}
        {if mount = 0:
            fixe
        |elif mount = 1:
            rotatif
        |elif mount = 2:
            montage tourelle
        }
    }
    {event.module.class}-{event.module.grade}
    
    {if type(event.cost) = "void": . |else: pour un cout de {event.cost} crédits.}


    Déclenché lorsque vous scannez une balise de navigation, avant que les données de scan de tous les corps du système ne soient écrites dans le journal.
    Nav beacon scan Triggered when you scan a nav beacon, before the scan data for all the bodies in the system is written into the journal
    Code:
    {_ Context _}
    {SetState('eddi_context_last_subject', 'nav beacon')}
    {SetState('eddi_context_last_action', 'scan')}
    {SetState('eddi_context_star_system', system.name)}
    {SetState('eddi_context_nav_scans', event.numbodies)}
    
    {set nav to OneOf("Nahv", "de navigation")}
    {set beacon to OneOf("Cette balise", "Cette bouée", "Ce signal", "Ce podh", "Ce Phare")}
    {OneOf("{beacon} {nav} ma transmis des informations sur {event.numbodies} planètes dans ce système.",
    "Réception de données concernant {event.numbodies} planètes et autres éléments de ce système.",
    "Je reçoit des données concernant {event.numbodies} corps céleste de la {beacon} {nav}.")}
    {SetState("Nbre_Objects", 0)}
    {SetState("Beacon_System", system.name)}
    
    {Pause(500)}


    quand on change l'emplacement d'un module ajout du 06/12/18 comme quoi il faut vraiment tout tester
    Module swapped Triggered when modules are swapped between slots on the ship
    Code:
    Vous avez échangé les positions de votre {event.frommodule.name} {event.frommodule.class}-{event.frommodule.grade}
    
    {if type(event.frommodule.mount) != "void":
        {for index, value in event.frommodule.mount: {set mount to value}}
        {if mount = 0:
            montage fixe
        |elif mount = 1:
            montage rotatif
        |elif mount = 2:
            montage tourelle
        }
    }
    
    et
    
    {if event.tomodule:
        votre {event.tomodule.name} {event.tomodule.class}-{event.tomodule.grade}
        {if type(event.tomodule.mount) != "void":
            {for index, value in event.tomodule.mount: {set mount to value}}
       {if mount = 0:
        montage fixe
       |elif mount = 1:
        montage rotatif
       |elif mount = 2:
        montage tourelle
       }
        }
        .
    |else: 
        un emplacement vide.
    }


    lorsque vous lancez le transfert d'un module vers la station où vous êtes ajout du 06/12/18 c'est vrai que je transfère presque jamais
    Module transfer Triggered when you transfer a module from storage at another station
    Code:
    vous avez demandé le transfert d'un {event.module.name}  {event.module.class}-{event.module.grade}
    
    {if event.module.mount:
        {for index, value in event.module.mount: {set mount to value}}
        {if mount = 0:
            fixed
        |elif mount = 1:
            giimballed
        |elif mount = 2:
            turreted
        }
    }
    
    {if event.transfercost: pour un coùt de {event.transfercost} credits.}
    
    {set t_remaining to event.transfertime}
    
    {if t_remaining:
    
       {Pause(1000)}
       Arrivée estimée dans:
    
       {if t_remaining > (60*60*24):
          {set t_days to floor(t_remaining/(60*60*24))}
          {t_days} days,
          {set t_remaining to t_remaining-(t_days*(60*60*24))}
       }
    
       {if t_remaining > 3600:
          {set t_hours to floor(t_remaining/3600)}
          {t_hours} hours,
          {set t_remaining to t_remaining-(t_hours*(60*60))}
       }
    
       {if t_remaining > 60:
          {if t_days || t_hours: and}
          {set t_minutes to round(t_remaining/(60),0)}
          {t_minutes} minutes.
       }
    }


    Lorsque un PNJ vous attaque
    NPC attack commenced Triggered when an attack on your ship by an NPC is detected
    Code:
    Alerte: 
    {set Attaque1 to "{if event.by: {event.by} |else: on vous attaque!}"}
    {set Attaque2 to "attaque {if event.by: de {event.by}} detectée."}
    
    {OneOf(Attaque1, Attaque2)}


    lorsque un PNJ scanne votre vaisseau
    NPC cargo scan commenced Triggered when a cargo scan on your ship by an NPC is detected
    Code:
    {_ See if we are carrying non-limpet cargo}
    {set carryingvaluablecargo to 0}
    {for cargo in ship.cargo:
        {if cargo.commodity != 'Limpet':
            {set carryingvaluablecargo to 1}
        }
    }
    
    {if carryingvaluablecargo = 1:
      Attention: scan de cargaison
      {if event.by:
        de {event.by} 
      }
      detectée.
    }


    Lorsqu'un PNJ tente une interdiction sur votre vaisseau
    NPC interdiction commenced Triggered when an interdiction attempt on your ship by an NPC is detected
    Code:
    Alerte: tentative dinterdiction
    {if event.by:
       par {event.by} 
    }
    detectée.
    
    {Occasionally(5, "Puissance à 0 ou tentez de vous évader")}.


    Lorsque vous livrez des marchandises en liaison avec le powerplay
    Power commodity delivered Triggered when a commander delivers a commodity to a power
    Code:
    {event.amount} unités de {event.commodity} livrées {Occasionally(2, "pour {P(event.power)}")}.


    Déclenché lorsqu'un commandant accélère le mouvement d'une marchandise d'une puissance.
    Power commodity fast tracked Triggered when a commander fast tracks a commodity of a power
    Code:
    {Humanise(event.amount)} crédits utilisés pour achat suplémentaires {Occasionally(2, "pour {P(event.power)}")}.


    Déclenché lorsqu'un commandant obtient une marchandise d'une puissance
    Power commodity obtained Triggered when a commander obtains a commodity from a power
    Code:
    {event.amount} unités de {event.commodity} obtenues {Occasionally(2, "de {P(event.power)}")}.


    Déclenché lorsque vous passez d'une puissance à l'autre
    Power defected Triggered when you defect from one power to another
    Code:
    Vous avez quité {P(event.frompower)} pour rejoindre {P(event.topower)}.


    Déclenché quand un commandant vote pour l'expansion du système
    Power expansion vote cast Triggered when a commander votes for system expansion
    Code:
    Vote
    {OneOf("envoyé", "enregistré", "validé")}


    Déclenché lorsque vous rejoignez une puissance
    Power joined Triggered when you join a power
    Code:
    Vous avez intégré les rangs de {P(event.power)}.


    Déclenché lorsque vous quittez un pouvoir
    Power left Triggered when you leave a power
    Code:
    Vous ne faites plus parti des affiliés à  {P(event.power)}.


    Déclenché lorsqu'un commandant vote pour la préparation du système
    Power preparation vote cast Triggered when a commander votes for system preparation
    Code:
    Votre vote d'une valeur de {if event.amount=1: une |else: {event.amount}} voix 
    {OneOf("envoyé à", "enregistré pour")} {event.power} est placé sur le systême {event.system}.


    Déclenché lorsqu'un commandant réclame un salaire d'un pouvoir
    Power salary claimed Triggered when a commander claims salary from a power
    Code:
    Salaire de {Humanise(event.amount)}  credits obtenus {Occasionally(2, "de {P(event.power)}")}.


    Déclenché lorsque votre navire est réparé via un contrôleur de drones de réparation
    Repair drone Triggered when your ship is repaired via a repair limpet controller
    Code:
    {set systemsrepaired to []}
    
    {if event.hull:
       {set systemsrepaired to cat(systemsrepaired, ["la coque"])} 
    }
    {if event.cockpit:
       {set systemsrepaired to cat(systemsrepaired, ["la verrière"])} 
    }
    {if event.corrosion:
       {set systemsrepaired to cat(systemsrepaired, [OneOf("les systèmes corrodés", "les systèmes atteints de corrosion")])} 
    }
    
    {if len(systemsrepaired) > 0:
    
        {set remote to Occasionally(2, OneOf("autonome","semi-otomatique"))}
        {set sequence to OneOf("la séquence", "le cycle")}
        {OneOf(
            "les drones ont fini leur reparations sur", 
            "{sequence} {remote} est terminé, réparations effectuées sur"
        )}
    
        {set cur to 0}
        {while cur < len(systemsrepaired):
            {if cur = 0:
            |elif cur < len(systemsrepaired) - 1:
                , 
            |else:
                et
            }
            {systemsrepaired[cur]}
            {set cur to cur + 1}
        }
    }.


    donne une estimantion de la valeur du dernier corp scanné
    Report last scan value Report the estimated value of the last body scanned
    Code:
    {_ Context }
    {set scanValue to state.eddi_context_last_scan_estimated_value}
    
    {if scanValue:
       {OneOf("Ceci", "Ces données", "Ce scan")} 
       {OneOf("pourrait", "a la possibilité de", "peut") } 
       {OneOf("rapporter", "valloir", "vous rapporter", "être vendu pour")}
       {Humanise(scanValue)} crédits.
    }


    Lorsque vous faites une livraison à un contact "search & rescue"
    Search and rescue Triggered when delivering items to a Search and Rescue contact
    Code:
    La récompense pour 
    {event.amount} 
    {if event.commodity.rare: rare}
    
    {if event.commodity.name = "Boîte noire":
       {if event.amount > 1:
          {OneOf("enregistreur de vol", "Boîte noire")}
       |else: 
          {OneOf("enregistreurs de vols", "boites noires")}
       }
    
    |elif event.commodity.name = "Nacelle d'évacuation endommagée":
       {OneOf("nacelle cryogénique endomagée", "nacelle de sauvetage endommagée")}{if event.amount > 1:s}
    
    |elif event.commodity.name = "Nacelle d'évacuation occupée":
       {OneOf("nacelle de sauvetage occupée", "nacelle cryogénique occupée")}{if event.amount > 1:s}
    
    |elif event.commodity.name = "Effets personnels":
       {if event.amount > 1:des |else un} {OneOf("set", "lot")}{if event.amount > 1:s} 
       {OneOf("d'effets personnels", "d'obgets personnels")}
    
    |elif event.commodity.name = "Débris récupérables":
       {set fragment to OneOf("fragment", "brisure", "morceau", "partie", "reste", "lambeau", "chicot")}
       {set wreckage to OneOf("d'épave", "de débris")}
       {fragment}{if event.amount > 1:s} {wreckage}
    
    |elif event.commodity.name = "Otage":
       {OneOf("otage", "prisonnier", "captif")}{if event.amount > 1:s}
    
    |else:
       {event.commodity.name}{if event.amount > 1:s}
    }
    que vous avez 
    {OneOf("récupéré", "rapporté")}
    {Occasionally(2, "{if event.amount = 1: est |else: sont}")}
    de {Humanise(event.reward)} crédits.


    Fonction de rapport sur les détails de la sécurité du système
    Security presence report Function to report on the details of system security
    Code:
    {if system.population > 0:
        Il y a 
        {if system.security = "Aucun":
            aucune présence
      {OneOf("policière", "des forces de sécurités", "de représentatnts de la loi")} 
        |elif system.security = "Faible":
            présence 
      {OneOf("policière", "des forces de sécurités", "de représentatnts de la loi")}   
      {OneOf("est au minimum", "vraiment faible", "légère")}
        |elif system.security = "Intermédiaire":
            présence 
      {OneOf("policière", "des forces de sécurités", "de représentatnts de la loi")} 
            {OneOf("standard", "moyenne", "normale")}
        |elif system.security = "Haute":
            présence 
      {OneOf("policière", "des forces de sécurités", "de représentatnts de la loi")} 
            {OneOf("élevée", "lourde", "forte")}
        |else:
            présence 
      {OneOf("policière", "des forces de sécurités", "de représentatnts de la loi")} 
           {system.security}
        }
     {OneOf("ici", "dans ce système", "dans les environs")}.
    }


    lorsque vous lancez l'autodestruction de votre engin
    Self destruct Triggered when you start the self destruct sequence
    Code:
    Séquence d'auto-destruction enclenchée...
    ...
    pensez à évacuer...


    Déclenché lorsque les boucliers de votre vaisseau se déconnectent.
    Shields down Triggered when your ship's shields go offline
    Code:
    {SpeechRate ("Alerte, Alerte", "fast")}: les boucliers sont tombés.
    Attention à la gestion de l'énergie.

  6. #6
    ....


    Déclenché lorsque les boucliers de votre vaisseau s'activent.
    Shields up Triggered when your ship's shields come online
    Code:
    Information: Bouclier réarmé en puissance minimale. 
    Condensateurs en charge linéaire.


    lorsque votre vaisseau en transfert arrive à bon port
    Ship arrived Triggered when you complete a ship transfer
    Code:
    {Occasionally(2, '{F(\'Honorific\')}, ')}
    votre {event.ship} 
    
    {OneOf('est arrivé {if event.system && event.station: \'à\')}', 
           'a fini son transfert {if event.system && event.station: \'vers\')}')}
    
    {if event.sytem != system.name && len(event.system) > 0 && len(event.station) > 0:
       {event.station} in the {event.system} system
    |elif event.station != station.name && len(event.station) > 0:
       {event.station}
    }.


    Déclenché lorsque votre navire nouvellement acheté vous est livré
    Ship delivered Triggered when your newly-purchased ship is delivered to you
    Code:
    {ShipCallsign()} transfert terminé.


    Lorsque votre engin est intercepté par un autre vaisseau
    Ship interdicted Triggered when your ship is interdicted by another ship
    Code:
    {if event.iscommander : 
     {set target to cat("Commandeur ", event.interdictor)}
    |else : 
     {set target to event.interdictor}
    }   
    {if event.submitted :
     Vous vous êtes soumis à l'interdiction de {target},
    |else :
     {OneOf("Vous avez raté votre évasion à l'interdiction {if StartsWithVowel(target)="true":d'|else:de }{target}", "{target} a réussi son interdiction sur votre vaisseau")}
    }
    
    {if event.faction !="": 
     pour le compte {if StartsWithVowel(event.power)="true":d'|else:de }{event.faction}
    |elif event.power !="" : 
     pour le compte de {if StartsWithVowel(event.power)="true":l'|else:la }{event.power}
    }.


    lorsque vous réussissez une interdiction
    Ship interdiction Triggered when you interdict another ship
    Code:
    {if event.succeeded
     {if event.iscommander : 
      {set target to cat("Commandeur ", event.interdictee)}
     |else : 
      {set target to event.interdictee}
     }  
      Vous avez réussi votre interdiction sur {target}.
    }


    lorsque vous achetez un vaisseau
    Ship purchased Triggered when you purchase a ship
    Code:
    Vous avez acheté un {event.ship} pour {Humanise(event.price)} crédits
    {if event.soldprice :
     et revendu votre {event.soldship} pour {Humanise(event.soldprice)} crédits
    |elif event.storedshipid>0:
     et remiser au hangar votre {event.storedship}
    }.


    lors du reboot / réparation du vaisseau
    Ship rebooted Triggered when you run reboot/repair on your ship
    Code:
    {SpeechVolume('ré-initialisation', 'loud')} {SpeechPitch('total du ', 'x-low')} {SpeechRate('vaisseau', 'slow')} terminé.


    quand on charge du carburant
    Ship refuelled Triggered when you refuel your ship
    Code:
    {if event.source = "Scoop":
       {SetState('eddi_context_fuel_remaining', event.total)}
    |elif event.full:
       {SetState('eddi_context_fuel_remaining', ship.fueltanktotalcapacity)}
    |else:
       {SetState('eddi_context_fuel_remaining', state.eddi_context_fuel_remaining + event.amount)}
    }
    
    {Pause(2000)}
    {if event.full:
       {set refueled_desc to OneOf("complètement remplis", "au max de capacité","à 100% de capacité")}
       {OneOf("le ravitaillement est {refueled_desc}", "plein du {ShipName()} complet", "Réservoirs du {ShipName()} sont remplis", "les réservoirs de {P(ShipName())} sont désormais {refueled_desc}" )}
    |else:
       {if event.amount <= 5.0000:
          {F('Fuel check')}
       }
    }


    quand on renomme son vaisseau
    Ship renamed Triggered when you rename a ship
    {ShipName()} maintenant enregistré auprés de {P(system.faction)}. Identification {event.ident}.


    Quand on fait réparer son vaisseau
    Ship repaired Triggered when you repair your ship
    Code:
    {if event.item: {event.item}}
    {ShipName()} réparé pour {Humanise(event.price)} crédits.


    lors du ravitaillement du vaisseau
    Ship restocked Triggered when you restock your ship's ammunition
    Code:
    {ShipName()} {OneOf("Réaprovisionné","réarmé")} pour {Humanise(event.price)} crédits.


    Lorsqu'un vaisseau est vendu
    Ship sold Triggered when you sell a ship
    Code:
    {OneOf("Le {ShipName(event.shipid, event.ship)} {OneOf('sort du service actif','prend sa retraite')}",
                 "Mise hors service du {ShipName(event.shipid, event.ship)}",
                 "vente du {ShipName(event.shipid, event.ship)}",)}
    Pour la somme de {event.price} crédits.


    Déclenché lorsque vous vendez un navire pour lever des fonds sur l'écran d'assurance / racheter
    Ship sold on rebuy Triggered when you sell a ship to raise funds on the insurance / rebuy screen
    Code:
    {event.ship}, vendu dans le système {event.system} pour {Humanise(event.price)} credits.


    Quand on change de vaisseau
    Ship swapped Triggered when you swap a ship
    Code:
    {if event.storedship:
        {ShipName(event.storedshipid, event.storedship)} {OneOf("remisé au hangar", "parké dans la station", "mis en réserve")}  et
    |elif event.soldship:
        {ShipName(event.soldshipid, event.soldship)} vendu et
    }
    {OneOf("échange avec","embarquement dans","remise en service du")} {ShipName(event.shipid, event.ship)}.
    
    {F("Limpet check")}
    {F("List launchbays")}
    
    {set fighterhangar to false}
    {for compartment in ship.compartments:
        {if find(compartment.module.name, "Fighter Hangar") != -1:
            {set fighterhangar to true}
        }
    }
    {if fighterhangar = true:
        Mémo: penser à réassigner vos équipages à leur poste.
    }


    lorsque vous choisissez une cible
    Ship targeted Triggered when the player selects a target
    Code:
    {_ Ship targeted }
    {_ Triggered when the player selects a target }
    
    {_ event Parameters:   targetlocked - bool (ie false when losing target) }
    {_ If target locked:   name (of ship), scanstage (ie 0, 1, 2, 3) }
    {_ If Scan stage >= 1: name (of pilot), rank (of pilot) }
    {_ If scan stage >= 2: shieldhealth, hullhealth (both 0-100) }
    {_ If scan stage >= 3: faction, legalstatus (ie clean, wanted, etc), bounty (if appicable), }
    {_                     subsystem (ie FSD, power plant, etc), subsystemhealth (0-100) }
    
    {_ Context }
    {SetState('eddi_context_last_subject', 'ship')}
    {SetState('eddi_context_last_action', 'targeted')}
    
    {if event.targetlocked && event.scanstage > 2 && !event.subsystem:
        {set legalstatus to event.legalstatus}
    	
        {if legalstatus = "Recherché" || legalstatus = "Ennemi recherché" || legalstatus = "Autorisé":
             {event.name} {OneOf("Vaisseau recherché", "Prime sur l'engin", "c'est une cible légitime")} de rang {event.rank}.
    	|elif legalstatus = "Hors-la-loi":
    		 {event.name} {OneOf("Vaisseau Hors-la-loi", "Hors-la-loi", "Se méfier de celui là")} de rang {event.rank}.
    	|elif legalstatus = "Ennemi":
    		 {event.name} {OneOf("Vaisseau ennemi", "Puissance hostile")} de rang {event.rank}.
        }
    }


    quand vous transférez un vaisseau d'une station à une autre
    Ship transfer initiated Triggered when you initiate a ship transfer
    Code:
    {ShipName(event.shipid, event.ship)} {OneOf("en chemin de","transéré depuis", "transfert amorcé depuis", "est transporté depuis", "va arriver de")} {P(event.system)}.
    {set t_remaining to event.time}
    
    {if t_remaining:
    
       {Pause(1000)}
       Arrivée attendu dans:
    
       {if t_remaining > (60*60*24):
          {set t_days to floor(t_remaining/(60*60*24))}
          {t_days} jours,
          {set t_remaining to t_remaining-(t_days*(60*60*24))}
       }
    
       {if t_remaining > 3600:
          {set t_hours to floor(t_remaining/3600)}
          {t_hours} heures,
          {set t_remaining to t_remaining-(t_hours*(60*60))}
       }
    
       {if t_remaining > 60:
          {if t_days || t_hours: and}
          {set t_minutes to round(t_remaining/(60),0)}
          {t_minutes} minutes.
       }
    }


    lorsque le srv retourne dans le vaisseau
    SRV docked Triggered when you dock an SRV with your ship
    Code:
    {OneOf("Buggy", "SRV")} {OneOf("rentré", "parké", "rangé", "docké")}.


    lorsque le srv quitte le vaisseau
    SRV launched Triggered when you launch an SRV from your ship
    Code:
    {OneOf("Buggy", "SRV")} {OneOf("largué", "en partance")}.


    Déclenché lorsque votre SRV entre ou sort de la zone de restriction autour d'un navire.
    SRV turret deployable Triggered when your SRV enters or leaves the restriction zone around a ship.
    Code:
    {if !event.deployable:
       {OneOf("Buggy", "SRV")} Parré pour embarquement.
    }


    ...
    . . . . . .
    Code:
        ___________________________________________
     /  -> Des scripts traduits                     \
    |  ---==>   Des scripts nouveaux                 |
    | -> Des scripts avec tout plein de bugs inside  |
     \  -> Le tout offert par les Créateurs de Bugs  /
      `._______  __________________________________,'
              /,'
          O  /'
         /|-
         /|
    lorsque le srv est sous le vaisseau paré pour embarquer
    SRV under ship Triggered when your SRV enters the recovery zone under your ship
    Code:
    {OneOf("Buggy", "SRV")} {OneOf("en attente d'embarquement", "paré pour embarquement")}.


    Fonction de rapport sur les détails d'une étoile scannée
    Star report Function to report on the details of the contextual body
    Code:
    {_ Fetch from context }
    {_ set reportbody to BodyDetails(state.eddi_context_star_star, state.eddi_context_star_system)}
    
     {set Bodies to []}
     {for Bodies in system.bodies:
      {if Bodies.name = state.eddi_context_star_star: {set reportbody to Bodies} }
     }
    
     {set LuminosityClass to Spacialise(reportbody.luminosityclass)}
    
    
    {if !reportbody.name || reportbody.name = "":
        Je ne voit pas de quelle étoile vous demandez des données.
    |else:
        {set mainsequence to 0}
        {set QualityRing to event.reserves}
     {set NbreRing to len(reportbody.rings)}
     {set WithCluster to false}
     {set WithRing to false}
     {for Rings in reportbody.rings:
      {if find(Rings.name , "Belt") >= 0:
       {set WithCluster to true}
      |elif  find(Rings.name , "Ring") >= 0:
       {set WithRing to true}
      }
      }
    
    
        {if reportbody.stellarclass = "O":
            étoile de type oh, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . 
      Il s’agit d’étoiles extrêmes.  les plus chaudes, les plus bleues, les plus brillantes, les plus massives… et rares! Le système de classement de type O est ouvert: il peut évoluer selon les découvertes.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "B":
            Une étoile de type Bé,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Ces étoiles sont de véritables phares dans le ciel: parmi les 100 étoiles les plus brillantes, un tier sont des étoiles de type B. Ces étoiles sont très chaudes, bleues et émettent de fortes radiations ultraviolettes.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "A":
            Une étoile de type ah,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles blanches assez répandues.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "F":
            Une étoile de type èfe,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles blanc-jaune assez répandues.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "G":
            Une étoile de type gé,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles jaunes comme il y a pour le système Sol.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "K":
            Une étoile de type Ka,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles orange très répandu.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "M":
            Une étoile de type ème,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles rouges et froides dont les plus connues sont Betelgueuse ou Antarès.  Toutes les étoiles M visibles à l’œil nu sont des supergéantes.
            {set mainsequence to 1}
        |elif reportbody.stellarclass = "L":
            étoile de type elle,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoile de couleur rouge très foncé et illuminent surtout dans l’infrarouge. Leurs gaz sont assez froids pour que les hydrures de métaux et les métaux alcalins prédominent dans leur spectre.
        |elif reportbody.stellarclass = "T":
            une naine brune Té,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}... . Étoiles à peine assez massives pour pouvoir effectuer des réactions nucléaires. Elles émettent peu ou pas de lumière, mais seulement des infrarouges. 
        |elif reportbody.stellarclass = "Y":
            Naine brune Igrec,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... elles se trouvent à l’extrémité de l’échelle, elles sont plus froides que celles de la classe spectrale Té.
        |elif reportbody.stellarclass = "TTS":
            une étoile Té tauri,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  en phase de contraction gravitationnelle
        |elif reportbody.stellarclass = "AeBe":
            une proto étoile très jeune pour être en position principale {Occasionally(4, "mais pourrai devenir une étoile de type Ah ou Bé")}.,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "W":
            une étoile de type doublevé,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  est plutôt agée {Occasionally(4, "approchant de sa fin de vie et ne consommant plus d'hydrogène")}.
        |elif reportbody.stellarclass = "WN":
            une étoile agée de type W N,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "approchant de sa fin de vie et ne consommant plus d'hydrogène")}.
        |elif reportbody.stellarclass = "WNC":
            une étoile agée de type W N C,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... {Occasionally(4, "approchant de sa fin de vie et ne consommant plus d'hydrogène")}.
        |elif reportbody.stellarclass = "WC":
            une étoile agée de type W C? {Occasionally(4, "approchant de sa fin de vie et ne consommant plus d'hydrogène")}.  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}...
        |elif reportbody.stellarclass = "WO":
            une étoile agée de type w o,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "approchant de sa fin de vie et ne consommant plus d'hydrogène")}.
        |elif reportbody.stellarclass = "CS":
            une étoile carbonnée de type C S,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "C":
            une étoile carbonnée de type C, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(2, "basse-séquence")} {Occasionally(4, "avec une atmosphère principalement de carbone")}.
        |elif reportbody.stellarclass = "CN":
            une étoile carbonnée de type C N,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(2, "basse-séquence")} {Occasionally(4, "avec une atmosphère principalement de carbone")}.
        |elif reportbody.stellarclass = "CJ":
            une étoile carbonnée de type C J,  {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(2, "basse-séquence")} {Occasionally(2, "avec une atmosphère principalement de carbone")}.
        |elif reportbody.stellarclass = "CH":
            une étoile carbonnée de type C H, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(2, "basse-séquence")} {Occasionally(4, "avec une atmosphère principalement de carbone")}.
        |elif reportbody.stellarclass = "CHd":
            une étoile carbonnée de type C H D, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(2, "basse-séquence")} {Occasionally(4, "avec une atmosphère principalement de carbone")}.
        |elif reportbody.stellarclass = "MS":
            une étoile basses séquence de type M S, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "qui était une étoile de type M et deviendra une étoile carbonnéer")}.
        |elif reportbody.stellarclass = "S":
            une étoile basses séquence de type esse, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "qui était une étaoile de type èm et deviendra une étoile carbonnéer")}.
        |elif reportbody.stellarclass = "D":
            Une naine blanche de type dé, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.....
        |elif reportbody.stellarclass = "DA":
            une naine blanche de type dé ah, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "avec une atmosphere riche en hydrogène")}
        |elif reportbody.stellarclass = "DAB":
            une naine blanche de type D A B, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... {Occasionally(4, "avec une atmosphere riche en hydrogène")}.
        |elif reportbody.stellarclass = "DAO":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "DAZ":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "DAV":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DB":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DBZ":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DBV":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DO":
            Une naine blanche? {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "DOV":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "DQ":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "DC":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DCV":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... 
        |elif reportbody.stellarclass = "DX":
            Une naine blanche, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....
        |elif reportbody.stellarclass = "N":
            une étoile à neutron , {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}..... {Occasionally(4, "qui a un noyau dangeureusement dense")}.
        |elif reportbody.stellarclass = "H":
            un trou noir.
        |elif reportbody.stellarclass = "X":
            une entité stélaire exotique.
        |elif reportbody.stellarclass = "SuperMassiveBlackHole":
             une trou noir supermassif.
        |elif reportbody.stellarclass = "A_BlueWhiteSuperGiant":
            une bleue-blanc supermassive, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "qui continura son extention jusqu'à devenir une super géante rouge")}.
        |elif reportbody.stellarclass = "F_WhiteSuperGiant":
            une blanc-jaune supermassive, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "qui continura son extention jusqu'à devenir une super géante rouge")}
        |elif reportbody.stellarclass = "M_RedSuperGiant":
            une super géante rouge, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... {Occasionally(4, "en phase de consomation d'hélium")}.
        |elif reportbody.stellarclass = "M_RedGiant":
            une géante rouge, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}....  {Occasionally(4, "qui continu son évolution vers la super géante rouge")}.
        |elif reportbody.stellarclass = "K_OrangeGiant":
            une géante orange, {if len(LuminosityClass)>0 : de classe de luminosité {LuminosityClass}}.... {Occasionally(4, "qui continue à ce développer ainsi jusqu'à sa mort")}.
        |elif reportbody.stellarclass = "RoguePlanet":
            a rogue planet
        |elif reportbody.stellarclass = "Nebula":
            une nébuleuse.
        |elif reportbody.stellarclass = "StellarRemnantNebula":
            un vestige de nébuleuse.
        }
        {set ageInYears to reportbody.age * 1000000}
        {OneOf("qui a {Humanise(ageInYears)} années",
               "née depuis {Humanise(ageInYears)} ans",
               "d'un àge estimè à {Humanise(ageInYears)} ans",
        )},
     
     
        {if ageInYears < 1000000:
            ce qui en fait ne des plus jeune de la galaxie.
        |elif ageInYears >14000000000:
            ce qui fait d'elle une des plus vieille de la galaxie.
        }.
    
    {if NbreRing > 0:
      Avec
     {if WithCluster:
      Quelques champs d'astéroïdes
        {if WithRing: et {NbreRing} anneau}
     |elif WithRing:
     {NbreRing} anneau
     }
     
    }
    {if NbreRing > 0:
      de type
      {set ringcomposition to []}
            {for Ring in reportbody.rings:
       {set ringcomposition to cat(ringcomposition, [Ring.composition])}
            }
            {if len(ringcomposition)= 1:
       {ringcomposition[0]}
            |elif len(ringcomposition) = 2:            
       {ringcomposition[0]} pour le premier et de 
       {ringcomposition[1]} pour le second.
            |elif len(ringcomposition) > 2:
                {set cur to 0}
                {while cur < len(reportbody.rings):
                    {if cur = 0:                    
         {ringcomposition[cur]}
                    |elif cur < len(ringcomposition) - 1:
                        , de {ringcomposition[cur]}  
                    |else:
                        , et de {ringcomposition[cur]} pour le dernier
                    }
                    {set cur to cur + 1}
                }
            }
            {if find(QualityRing , "Pristine") >= 0:
                {OneOf("et étant inexploités jusqu'à présent", "étant vierge de toutes exploitation industrielle", "avec une concentration majeure de matière dedans", "avec une concentration très richede matière dedans", "avec de trés grandes réserves de matière dedans")} 
            |elif find(QualityRing , "Major") >= 0:
                {OneOf("avec concentrations riche", "avec haute concentration", "avec un Haut niveau", "avec de fortes réserves", "avec de grandes réserves")} de matière dedans
      |elif find(QualityRing , "Common") >= 0:
                {OneOf("ayant concentrations moyenne de matière dedans", "une quantité standard de matière dedans", "quelques matières exploitables dedans")} 
      |elif find(QualityRing , "Low") >= 0:
                {OneOf("peu de matières exploitables dedans", "une faible quantité de matière dedans", "une faible concentration de matière dedans")} 
      |elif find(QualityRing , "Depleted") >= 0:
                {OneOf("presque plus de matières exploitables dedans", "quelques échantillons de matières dedans", "presque plus que de la poussière de matières exploitables dedans")} 
    
      }...
        }
    
        
    
    
     
        {if mainsequence = 1:
            {OneOf(".",".","Comme vous pouvez le constater, elle émet une lumière {reportbody.chromaticity}...")} 
    
            {set notables to []}
    ... ...
            {if reportbody.massprobability < 0.01:
                {set notables to cat(notables, [cat("une masse solaire incroyablement faible de ", Humanise(reportbody.solarmass))])}
            |elif reportbody.massprobability <0.1:
                {set notables to cat(notables, [cat("une masse solaire faible de ", Humanise(reportbody.solarmass))])}
            |elif reportbody.massprobability <1:
                {set notables to cat(notables, ["une masse solaire peu courante de "])}
            |elif reportbody.massprobability <10:
                {set notables to cat(notables, ["une masse solaire inférieure à la myenne"])}
            |elif reportbody.massprobability > 99.99:
                {set notables to cat(notables, [cat("une masse solaire incroyablement haute de ", Humanise(reportbody.solarmass))])}
            |elif reportbody.massprobability > 99.9:
                {set notables to cat(notables, [cat("une masse solaire extrèmement haute de ", Humanise(reportbody.solarmass))])}
            |elif reportbody.massprobability > 99:
                {set notables to cat(notables, ["une masse solaire particulièrement haute de "])}
            |elif reportbody.massprobability > 90:
                {set notables to cat(notables, ["une masse solaire juste au dessus de la moyenne"])}
            }
    
            {if reportbody.radiusprobability < 0.01:
                {set notables to cat(notables, [cat("Un rayon solaire incroyablement bas de ", Humanise(reportbody.solarradius))])}
            |elif reportbody.radiusprobability <0.1:
                {set notables to cat(notables, [cat("Un rayon solaire extrêmement faible de ", Humanise(reportbody.solarradius))])}
            |elif reportbody.radiusprobability <1:
                {set notables to cat(notables, ["Un rayon solaire exceptionnellement faible"])}
            |elif reportbody.radiusprobability <10:
                {set notables to cat(notables, ["Rayon solaire inférieur à la moyenne"])}
            |elif reportbody.radiusprobability > 99.99:
                {set notables to cat(notables, [cat("Un rayon solaire extrêmement élevé de ", Humanise(reportbody.solarradius))])}
            |elif reportbody.radiusprobability > 99.9:
                {set notables to cat(notables, [cat("Un rayon solaire incroyablement élevé de ", Humanise(reportbody.solarradius))])}
            |elif reportbody.radiusprobability > 99:
                {set notables to cat(notables, ["Un rayon solaire exceptionnellement élevé"])}
            |elif reportbody.radiusprobability > 90:
                {set notables to cat(notables, ["un rayon solaire plus grand que la moyenne"])}
            }
            {set temp to reportbody.temperature - 273.15} 
            {if reportbody.tempprobability < 0.01:
                {set notables to cat(notables, [cat("Une température de surface incroyablement basse de ", Humanise(temp), " Degrés Celsius")])}
            |elif reportbody.tempprobability <0.1:
                {set notables to cat(notables, [cat("Une température superficielle extrêmement faible de ", Humanise(temp), " Degrés Celsius")])}
            |elif reportbody.tempprobability <1:
                {set notables to cat(notables, ["Une température de surface exceptionnellement faible"])}
            |elif reportbody.tempprobability <10:
                {set notables to cat(notables, ["Température de surface inférieure à la moyenne"])}
            |elif reportbody.tempprobability > 99.99:
                {set notables to cat(notables, [cat("Une température de surface extrêmement élevée de ", Humanise(temp), " Degrés Celsius")])}
            |elif reportbody.tempprobability > 99.9:
                {set notables to cat(notables, [cat("Une température de surface incroyablement élevée de ", Humanise(temp), " Degrés Celsius")])}
            |elif reportbody.tempprobability > 99:
                {set notables to cat(notables, ["Une température de surface exceptionnellement élevée"])}
            |elif reportbody.tempprobability > 90:
                {set notables to cat(notables, ["Température de surface supérieure à la moyenne"])}
            }
    
            {if len(notables) = 0:
                {OneOf("", "un exemple classique de ce type d'étoile.", "Rien de particulier relevé sur cette étoile.", "rapport de particularité èr ah ess.")}
            |else:
                {OneOf('comparé aux autres étoiles de ce type', 'en comparaison aux autres étoiles {reportbody.stellarclass} ', 'par rapport aux autres étoiles {reportbody.stellarclass} ')}, celle ci est 
                {if len(notables) = 1:
                    remarquable pour avoir {notables[0]}.
                |elif len(notables) = 2:
                    {OneOf('intéressante', 'inhabituelle')}, avec {notables[0]} et {notables[1]}.
                |elif len(notables) = 3:
                    {OneOf('exceptionnelle', 'remarquable')}, avec {notables[0]}, {notables[1]} et {notables[2]}.
                }
            }
        }    
    }


    quand on a scanné une étoile
    Star scanned Triggered when you complete a scan of a stellar body
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'star')}
    {SetState('eddi_context_last_action', 'scan')}
    {SetState('eddi_context_star_system', system.name)}
    {SetState('eddi_context_star_star', event.name)}
    {Pause(1000)}
    
    Scann de létoile {P(event.name)} de classe {event.stellarclass}  terminé.
    
    {F("Star report")}
    
    
    {if event.estimatedvalue:
     Valeur estimée {OneOf("du scann", "de l'étude", "du sondage")}: 
     {set BodyValue to Humanise(event.estimatedvalue)}
     {if find(BodyValue, "route")>=0:
      {set BodyValue to cat("vers les ", slice(BodyValue, 14))}
     }
       {BodyValue} crédits.
    }
    
    
    {if (event.estimatedhabzoneinner && event.estimatedhabzoneouter) && 
     (event.estimatedhabzoneinner > 0 && event.estimatedhabzoneouter> 0):
       Zone habitable
       {Occasionally(2, OneOf("calculée de ", "estimée de ", "aux environs de "))}: 
       {set BodyValue to Humanise(event.estimatedhabzoneinner*1000)}
     {if find(BodyValue, "route")>=0:
      {set BodyValue to cat("vers les ", slice(BodyValue, 14))}
      }
     {BodyValue} 
       à {set BodyValue to Humanise(event.estimatedhabzoneouter*1000)}
     {if find(BodyValue, "route")>=0:
      {set BodyValue to cat("vers les ", slice(BodyValue, 14))}
      }
     {BodyValue} 
       secondes lumières.
    |elif event.estimatedhabzoneouter && event.estimatedhabzoneouter > 0:
       Zone habitable
       {Occasionally(2, OneOf("calculé jusqu'à", "estimé jusqu'à"))}:
       {set BodyValue to Humanise(event.estimatedhabzoneouter*1000)}
     {if find(BodyValue, "route")>=0:
      {set BodyValue to cat("vers les ", slice(BodyValue, 14))}
      }
     {BodyValue} 
       secondes lumières maximum.
    }


    lorsque vous entrez dans une zone neutre
    Station no fire zone entered Triggered when your ship enters a station's no fire zone
    Code:
    {if event.weaponsdeployed = "true" :
     Attention: Vous entrez dans une zone neutre avec vos armes déployées. 
     Désactivez les avant représaille de la station.
    |else :
     Vous entrez dans une zone neutre. N'activez vos armes que si vous en acceptez les risques.
    }


    lorsque vous quittez une zone neutre
    Station no fire zone exited Triggered when your ship exits a station's no fire zone
    Code:
    Vous sortez d'une zone neutre. {Occasionally(5, "Assurez vous de n'être pas suivi ou attendu par vos ennemis.")}


    Vérifiez ici si des modules équipés sont disponibles à un prix plus avantageux.
    Swapout check Check to see if any fitted modules are available more cheaply here
    Code:
    {_ Function to find a given module in outfitting}
    {set outfitting(module) to:
        {for outfittingmodule in station.outfitting:
            {if outfittingmodule.EDDBID = module.EDDBID:
                {return outfittingmodule}
            }
        }
    }
    
    {_ Function to report if a module is cheaper in outfitting that on the ship}
    {set reportIfCheaper(shipmodule) to:
        {_ Only consider if this has no modifications}
        {if !shipmodule.modified:
            {set outfittingmodule to outfitting(shipmodule)}
            {if outfittingmodule:
                {if outfittingmodule.price < shipmodule.price:
                    {set saving to shipmodule.price - outfittingmodule.price}
                    {_ Only bother if it's a relatively good saving}
                    {if saving / cmdr.credits > 0.001:
                        Vous pouvez économiser {Humanise(saving)} crédits échangeant votre module {shipmodule.name} ici.
                    }
                }
            }
        }
    }
    
    {reportIfCheaper(ship.powerplant)}
    {reportIfCheaper(ship.thrusters)}
    {reportIfCheaper(ship.frameshiftdrive)}
    {reportIfCheaper(ship.lifesupport)}
    {reportIfCheaper(ship.powerdistributor)}
    {reportIfCheaper(ship.sensors)}
    {for hardpoint in ship.hardpoints:
        {if hardpoint.module:
            {reportIfCheaper(hardpoint.module)}
        }
    }
    {for compartment in ship.compartments:
        {if compartment.module:
            {reportIfCheaper(compartment.module)}
        }
    }


    lorsque vous faites une synthese à partir de vos stock de matières
    Synthesised Triggered when you synthesise something from materials
    Code:
    Utilisation de
    {set cur to 0}
    {for material in event.materials:
        {if cur=0:
     |elif cur=1 && len(event.materials)=3:,
     |else: et
     }
        {material.amount} {material.material}
     {set cur to cur+1}
    }
    pour {OneOf('effectuer la synthèse de','procéder à la production de','terminer', 'faire')} {event.synthesis}.


    pour connaitre la distance vers un système demandé (à utiliser via d'autre script, ou demande via voiceattack?)
    System distance report Function to report on the distance to the contextual system
    Code:
    {_ Fetch from context }
    {set reportsystem to SystemDetails(state.eddi_context_system_system)}
    
    {if !reportsystem.name || reportbody.name = "":
        Je ne vois pas de quel système vous voulez parler.
    |else:
        La distance vers {P(reportsystem.name)} est de {Humanise(Distance(reportsystem.x, reportsystem.y, reportsystem.z, system.x, system.y, system.z))} années lumières.
    }


    Code:
      ____________________________._________________________________     _____________ ___._________________________
     /   _____/\_   ___ \______   \   \______   \__    ___/   _____/    /   _____/    |   \   \__    ___/\_   _____/
     \_____  \ /    \  \/|       _/   ||     ___/ |    |  \_____  \     \_____  \|    |   /   | |    |    |    __)_ 
     /        \\     \___|    |   \   ||    |     |    |  /        \    /        \    |  /|   | |    |    |        \
    /_______  / \______  /____|_  /___||____|     |____| /_______  / /\/_______  /______/ |___| |____|   /_______  /
            \/         \/       \/                               \/  \/        \/                                \/
    Déclenché lorsqu'il y a un changement d'état d'un système surveillé (en liaison avec l'onglet EDDP , long et pourtant toujours pas fini)
    System state changed Triggered when there is a change in the state of a watched system
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'system')}
    {SetState('eddi_context_last_action', 'change_state')}
    {SetState('eddi_context_system', event.system)}
    {SetState('eddi_context_system_system', event.system)}
    
    {_ Set up our system name}
    {if event.system = homesystem.name:
      {set system to OneOf('{P(event.system)}',
                           'Votre système habitat')}
    |elif event.system = system.name:
      {set system to OneOf('{P(event.system)}',
                           'ce système où vous êtes')}
    |else:
      {set system to OneOf('le système {P(event.system)}'
                           '{P(event.system)}')}
    }
    
      {_ System has entered a new state}
      {OneOf('Restez à la pointe de lactualité et de la technologie avec Rèmlok Industries! :','Les nouvelles vous sont offertes par Gal net point F R! le meilleurs site dinformation de la galaxie!','','élite-dangerouss.fr, pour tout savoir sur la galaxie et plus encore vous offre cette news!','','Le Discord Déhessène, le discord des explorateurs a une transmission pour vous :','',',','Une transmition locale rapporte que ', 'Information: ', 'Transmission interceptée.  Le contenu indique que ','Vous êtes en panne, avez besoin de réparation ou de réapprovisionnements ? Contactez SYMBIOSE, nous sommes là pour vous dépanner !.')}
    {if event.newstate != 'Aucune':
      {if event.newstate = 'Essor économique':
       {if event.oldstate = "Faillite":
           {OneOf("L'économie dans {system} fait du yoyo. Après une période de récession, nous voilà en plein essort, autant en profiter avant que cela ne change", "La récession dans {system} se transforme en une phase d'essor économique")}
          |elif event.oldstate = "CivilUnrest":
           {OneOf("Les émeutes dans {system} sont appaisées, la hausse du moral que cela induit a apporté un nouveau boom économique", "la fin des émeutes a porté {system} vers un nouvel essor économique")}
          |elif event.oldstate = "Guerre civile":
              {OneOf("La guerre civile dans {system} est terminée, la reconstruction a apporté un nouvel essor économique", "Apés sa guerre civile, {system} est désormais en plein boom économique")}
          |elif event.oldstate = "Élections":
           {OneOf("Le choix des dernières élections dans {system} a mis en confiance les industriels et investisseur. Un nouvel essor économique commance.", "Les élections sont enfin fini dans {system}, résultant sur un nouveau boom économique.")}
           |elif event.oldstate = "Politique expansionniste":
           {OneOf("La phase d'expansion dans {system} aboutie a un nouvel essor économique", "L'eccélante gestion de l'expansion dans {system} donne un nouvel essor é&conomique comme résultat")}.
           |elif event.oldstate = "Famine":
              {OneOf("La famine a été endigué dans {system}, les habitants repus, {system} joui d'un nouvel essor économique", "Fin de la famine dans {system}, début d'un nouveau boum économique")}
           |elif event.oldstate = "Investissements":
           {OneOf("{system} en a fini dans son aggrandissement de ses structures, la bonne qualité des travaux a mis la population en confiance et apporte un nouveau boum économique", "La qualité des investissements dans {system} aboutie sur un nouvel essor économique")}
           |elif event.oldstate = "Loi Martiale":
           {OneOf("La loi martiale dans {system} a porter ses fruits abouttissant sur un nouvel essor économique", "Le nouveau boum économique dans {system} a mis fin à la loi martiale")}
           |elif event.oldstate = "Épidémie":
           |elif event.oldstate = "Retraite":
           |elif event.oldstate = "Guerre":
          |else:
            {OneOf('{system} connait un boum économique','{system} connait un boum économique, cest le moment pour y commercer','{system} connait un boum économique, voir comment y investir','{system} entre dans une période de grands succés commerciaux','{system} entre dans une période de grands succés commerciaux, cest le moment di  spéculer','{system} entre dans une période de grands succés commerciaux, voir comment y investir')}
       }
      |elif event.newstate = 'Faillite':
        {system} Éprouve des difficultés économiques.
      |elif event.newstate = 'Émeutes':
        {OneOf('{system} Éprouve des troubles civils',
               'Il y a des troubles dans le système {system}')}
      |elif event.newstate = 'Guerre civile':
        {OneOf('{system} Est en guerre avec une autre faction dans le même système',
               'La guerre civile a éclaté à {system}',
               '{system} est maintenant en guerre civile',
               'Les hostilités ont éclaté dans {system}')}
      |elif event.newstate = "Élections":
        {system} est en precessus électoral
      |elif event.newstate = "Politique expansionniste":
        {OneOf('Une faction dans {system} essaie de se développer vers un système voisin',
               'Une faction dans {system} se prépare à se développer vers un système voisin')}
      |elif event.newstate = 'Famine':
        {system} subie une famine
      |elif event.newstate = 'Investissements':
        La faction de contrôlant {system} investit fortement dans son infrastructure locale
      |elif event.newstate = 'Loi Martiale':
        {system} a accru la sécurité en raison dun blocus par la faction y aillant le contrôle
      |elif event.newstate = 'Épidémie':
        {system} souffre dune épidémie virale ou bactérienne sévère. 
      |elif event.newstate = 'Retraite':
        La faction contrôlant {system} se retire dun système voisin
      |elif event.newstate = 'Guerre':
        {system} est désormais en guerre avec un système voisin
      |else:
        {OneOf('{system} est entré en {event.newstate}',
               '{system} est maintenant dans un état de {event.newstate}')}
      }
    |else: {_ the state go from any one to Aucune}
      {if event.oldstate = 'Essor économique':
        {OneOf("Le boum économique dans {system} est terminé, fini les bonnes affaire.", "L'essor économique dans {system} s'est tassé, retour à un état plus standard", "l'essor économique dans {system} est terminé")}
      |elif event.oldstate = 'Faillite':
      {OneOf("{system} n'éprouve plus de difficultés économiques", "l'état de faillite dans {system} est résolu, retour en un état économique stable")}
      |elif event.oldstate = 'Émeutes':
        {OneOf("{system} n'éprouve plus de troubles civils",
               "les troubles dans le système {system} se sont appaisés, il n'y a plus de problème")}
      |elif event.oldstate = 'Guerre civile':
        {OneOf("La guerre civile dans {system} est terminé",
               "Les différentes parties dans {system} ont trouvé un accord de paix, fin de la guerre civile")}
      |elif event.oldstate = "Élections":
        {OneOf("les élections dans {system} sont finies", "Les bulletins dans {system} ont été dépuillés et comptés, les élections sont bel et bien finies")}
      |elif event.oldstate = "Politique expansionniste":
        {OneOf("{system} en a fini avec sa politique expentioniste", "fin de la politique expentioniste dans {system}")}
      |elif event.oldstate = 'Famine':
         {OneOf("{system} ne subie plus de famine", "la famine dans {system} a été héradiquée")}
      |elif event.oldstate = 'Investissements':
         {OneOf("{system} en a fini avec sa politique d'investissement")}
      |elif event.oldstate = 'Loi Martiale':
         {OneOf("plus de problème dans {system}, fin de la loi martiale", "{system} a mis fin à la loi lartiale, fin des blocus")}
      |elif event.oldstate = 'Épidémie':
        l'épidémie dans {system} a été enrayée 
      |elif event.oldstate = 'Retraite':
        {system} a fini de se retiré d'un système voisin, retour à un état normal
      |elif event.oldstate = 'Guerre':
        {OneOf("La guerre dans {system} est terminé",
               "{system} ont trouvé un accord de paix avec son adversaire, fin de la guerre")}
      }
    
    }.


    Rapport d'info sur un système suite à une demande
    System state report Report on the current state of the contextual system
    Code:
    {_ Fetch from context }
    {set reportsystem to SystemDetails(state.eddi_context_system_system)}
    
    {if !reportsystem.name || reportbody.name = "":
     Je n'ai pas de système en mémoire pour lequel vous donner des informations.
    |else:
     {P(reportsystem.name)} est un système
    
     {if reportsystem.population && reportsystem.population > 0:
      {if reportsystem.allegiance = "Federation":
       {OneOf("de la Fédération","fédéral","d'allégeance fédérale")},
      |elif reportsystem.allegiance = "Empire":
       {OneOf("Impérial","de l'empire","d'allégeance impériale")}
      |else:
       {OneOf("Indépendant","non-alligné")},
      }
     {if reportsystem.government:
      dont le gouvernement est de type :{reportsystem.government)},
     |else:
      ,
     }
     {OneOf("abritant ", "ayant une population de ", "étant le foyer de ", "comportant ", "composé de ")} {Humanise(reportsystem.population)} {OneOf("personnes", "habitants")}
     {if reportsystem.power:
      , {OneOf("dirigé par ", "allié avec ", "contrôlé par ")} {P(reportsystem.power)}
     }.
    
     {if reportsystem.faction:
      {P(reportsystem.faction)} est {OneOf("la puissance ", "la faction ", "le groupe ", "la corpo ")}{OneOf("ayant le contrôle ", "locale ", "principale ", "dirrigeante ")} ici.
     }
     {if reportsystem.state:
      état politico-économique :{P(reportsystem.state)},
     }
    
     {if reportsystem.primaryeconomy:
      son économie principale est :{P(reportsystem.primaryeconomy)},
     }
     {if len(reportsystem.stations) = 0:
      Il ny a pas de station présente.
     |else:
      {if len(reportsystem.orbitalstations) = 0:
       {if len(reportsystem.planetarystations) = 1:
        Il y a {OneOf("une seule", "une unique", "juste une")} station planétaire
       |else:
        il y a {len(reportsystem.planetarystations)} stations planétaires
       }
      |elif len(reportsystem.orbitalstations) = 1:
       Il y a {OneOf("une seule", "une unique", "une")} station orbitale
       {if len(reportsystem.planetarystations) = 1:
        et une station planétaire
       |elif len(reportsystem.planetarystations) > 1:
        et {len(reportsystem.planetarystations)} stations planétaires
       }
      |else:
       il y a {len(reportsystem.orbitalstations)} stations orbitale
       {if len(reportsystem.planetarystations) = 1:
        et {OneOf("une seule", "une")} station planétaire
       |elif len(reportsystem.planetarystations) > 1:
        et {len(reportsystem.planetarystations)} stations planétaires
       }
      }
     }
     {OneOf("ici","dans ce système","localement")}
     |else:
     dépeuplé
     }.
    }


    lorsqu'on se pose sur une planète
    Touchdown Triggered when your ship touches down on a planet's surface
    Code:
    {set body to BodyDetails(state.eddi_context_body_name, state.eddi_context_system_name)}
    
    {if event.playercontrolled = true:
      Attérissage sur {P(body.name)} réussi.
      {Pause(2000)}
    |else:
      {ShipName()} a attéri sur {P(body.name)}.
    }
    
    {if type(event.latitude) != "void" && type(event.longitude) != "void" :
    les coordonées sont {round(event.longitude, 2)} degrés de longitude, {round(event.latitude, 2)} degrés de latitude.
    }


    Quand on achète des données commerciales
    Trade data purchased Triggered when you purchase trade data
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'tradedata')}
    {SetState('eddi_context_last_action', 'buy')}
    {SetState('eddi_context_tradedata_name', event.system)}
    
    {OneOf("Données commerciales achetées pour le systèmes {P(event.system)}", "les données commerciales pour {P(event.system)} sont maintenant enregistrées", "Les données commerciales de {P(event.system)} ont été envoyées par les services éconamiques de la station",  "Réception des données commerciales de {P(event.system)} confirmée")}.


    Lorsqu'on gagne un rang en commerce
    Trade promotion Triggered when your trade rank increases
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'rank')}
    {SetState('eddi_context_last_action', 'promotion')}
    {SetState('eddi_context_rank_name', 'trade')}
    {SetState('eddi_context_rank_amount', event.rating)}
    
    {OneOf('Vos capacités commerciales vous ont portées au titre de','Grace à vos bénéfices commerciaux, vous avez gagné le rang de')} {event.rating}.

  7. #7
    Code:
      _____  _____ _____  _____ _____ _______ _____      ______ _____ _   _ 
     / ____|/ ____|  __ \|_   _|  __ \__   __/ ____|    |  ____|_   _| \ | |
    | (___ | |    | |__) | | | | |__) | | | | (___      | |__    | | |  \| |
     \___ \| |    |  _  /  | | |  ___/  | |  \___ \     |  __|   | | | . ` |
     ____) | |____| | \ \ _| |_| |      | |  ____) | _ _| |     _| |_| |\  |
    |_____/ \_____|_|  \_\_____|_|      |_| |_____(_|_|_)_|    |_____|_| \_|
    Lorsqu'on revend un bon de commerce? je vois pas trop ce que c'est :blink: :blush:
    Trade voucher redeemed Triggered when you redeem a trade voucher
    Code:
    {_ Context }
    {SetState('eddi_context_last_subject', 'trade_voucher')}
    {SetState('eddi_context_last_action', 'redeem')}
    {SetState('eddi_context_trade_voucher_amount', event.amount)}
    
     {Humanise(event.amount)} crédits versé
    {Occasionally(2, "
      {if len(event.rewards) = 1:
        par {P(event.rewards[0].faction)}
      |else:
        dont
        {set cur to 0}
        {while cur < len(event.rewards):
            {if cur = 0:
            |elif cur < len(event.rewards) - 1:
                , 
            |else:
                et
            }
            {P(event.rewards[cur].faction)}
            {set cur to cur + 1}
        }
      }
    ")}.


    Lorsque vous quittez votre dock en station ou base
    Undocked Triggered when your ship undocks from a station or outpost
    Code:
    {OneOf("Le contrôle complet du vaisseai vous est rendu", "ecoutilles d'amarrage libérées", "Déconnecté du réseau local")}.
    
    {set limpetcheck to F("Limpet check")}
    
    {if limpetcheck:
        {Pause(5000)}
        {limpetcheck}
    }


    lorsque le chasseur ou le srv est detruit
    Vehicle destroyed Triggered when your vehicle is destroyed
    Code:
    {Pause(2000)}
     {OneOf("Votre {event.vehicle} a été perdu", "{event.vehicle} détruit", "perte de votre {event.vehicle}")}


    Code:
     _____ _____ _____ _____ _____ _____       _____ _____ _____ _____ _____ 
    |   __|     | __  |     |  _  |_   _|     | __  |     |   | |  |  |   __|
    |__   |   --|    -|-   -|   __| | |  _ _ _| __ -|  |  | | | |  |  |__   |
    |_____|_____|__|__|_____|__|    |_| |_|_|_|_____|_____|_|___|_____|_____|
    Test pour savoir si une région ou station est occupée par un groupe de joueur (en attendant un truc automatisé avec des liens API vers des sites comme eddb ou inara....)
    Zone Occupée Test pour savoir si une région ou station est occupée par un groupe de joueur

    Lorsque vous entrez dans une station, base ou un système, un test est lancé vers ce script, si le lieu est enregistré ci dessous, le texte lié sera lu.
    A compléter par la communauté... C'est simple! (comme dit la pub)

    Code:
    {_ Avec l'accord de Nicou pour Remlock Industrie}
    {_ Vu avec Duita Rider Pour Concordia}
    
    {if state.systemearrivee = "Bragurom Du" :
    {_ Station : Pellegrino Station.}
    Message : Bienvenue sur Bragurom Du, commandant {P(cmdr.name)}. Rèmlok Industries y produit des matériaux et modules de très haute qualité, ainsi que des composants Rèmlok. Merci de suivre les règles locales. 
    English message:
    Welcome on Bragurom Du commandeur. Rèmlok Industries produces high tech materials, modules, and Rèmlok components. Please, follow the local rules.
    
    |elif state.systemearrivee = "Edge Fraternity Landing":
    Bienvenu à EDGE FRATERNITY, système ouvert à tous les chercheurs et explorateurs. Attention, many french speaking here!
    
    |elif state.systemearrivee = "CONCORDIA":
    Soyez les bienvenus à CONCORDIA, centre de recherche inter-factions Francophones et base avancée d'exploration.
    
    }
    Pour compléter cela, il faut ajouter avant le dernier " } "
    |elif state.systemearrivee = "Nom de votre station ou nom de votre système":
    Texte lié à votre station ou texte lié à votre système

    Vous partagez le tout avec la communauté, ou me l'envoyez pour que je l'inclu dans le script ci dessus...
    Voilà, simple... ;)


  8. #8
    Dangerous Global Moderator Nicou's Avatar
    Hey Stivl,

    Merci pour tous ces détails !
    J'ai justement parlé d'EDDI dans un récent article RI sur les assistants comme Voice Attack.
    J'ajoute ce sujet à mon article.

  9. #9
    Originally Posted by Nicou View Post (Source)
    Hey Stivl,

    Merci pour tous ces détails !
    J'ai justement parlé d'EDDI dans un récent article RI sur les assistants comme Voice Attack.
    J'ajoute ce sujet à mon article.
    Chouette article, juste une petite remarque, si ça peut aider, Vocals est très sympa, mais n'est plus suivi, par contre, tu peux jeter un oeil sur le sujet "Jess", qui a l'air trés bien et prométeur vu le suivi et la réactivité de son développeur (je n'utilise aucun des deux, parler dérange un peut trop à la maison)

  10. #10
    Dangerous Global Moderator Nicou's Avatar
    Ah excellent, merci pour l'info !

  11. #11
    Les trucs et astuces

    Chapitre premier : la gestion de la priorité dans les scripts

    Il existe une gestion de priorité de scripts dans EDDI. Cette priorité est représentée par une valeur. A l'installation, tous les scripts ont la même priorité classée à 3.
    Plus la valeur est basse, plus la priorité est importante
    Un script ayant une priorité plus "importante" coupera là parole à un script l'étant moins.

    Par exemple, vous écoutez tranquille peinard les dernières news du galnet, et un pirate vous attaque. Si les 2 ont la même priorité, le message d'alerte de l'attaque se lancera que quand les news seront finies, alors que si vous avez mis une priorité plus importante sur le message d'alerte d'attaque (perso, j'y ai mis 1), les news seront coupées pour lancer le message d'alerte.

    Mais où changer cette valeur?
    Il vous faudra ouvrir votre fichier personnalisé de personnalité dans C:\Users\MyName\AppData\Roaming\EDDI\personalities (remplacer MyName par votre login windows) et ouvrez votre fichier.
    Il commence comme cela :
    Code:
    {
      "name": "Nom de personnalité",
      "description": "votre description.",
      "scripts": {
        "AFMU repairs": {
          "enabled": true,
          "priority": 3,
          "responder": true,
          "script": "{event.item} \r\n{if event.repairedfully:\r\n    Totalement réparé\r\n|else:\r\n    partiellement répoaré\r\n    {Occasionally(2, cat(\r\n        \"à \",\r\n        Humanise(event.health*100), \" \",\r\n        \"pourcent de fonctionalité\"\r\n    ))}\r\n}",
          "default": false,
          "name": "AFMU repairs",
          "description": "Triggered when repairing modules using the Auto Field Maintenance Unit (AFMU)"
        },
    ........
    ......
    .....
    ..
    et ainsi de suite pour chaque script.

    Ce qu'il vous faudra changer est le chiffre dans la ligne "priority": 3,
    réduisez la valeur pour rendre le message plus prioritaire, augmentez là pour que cela le soit moins.

    Le fichier que j'ai mis en DL plus haut a déjà des valeurs de modifiées (fonction de mes goûts)