{
  "reference": "https://keplerbot.net/scripts",
  "language": "fr",
  "count": 325,
  "functions": [
    {
      "name": "AbortAllFarmingSessions",
      "signature": "AbortAllFarmingSessions()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "Arrête tout et retire toutes les campagnes, celle qui tourne et celles de l'onglet Pillage comprises.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": [
        "AbortAllFarmingSessions()   // le soir : plus rien ne tourne, plus rien d'hier"
      ]
    },
    {
      "name": "Abs",
      "signature": "Abs(x)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "La valeur absolue.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": []
    },
    {
      "name": "ActivateItem",
      "signature": "ActivateItem(référence, céleste)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Allume un objet de l'inventaire.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "err = ActivateItem(o.Ref, c.GetID())"
      ]
    },
    {
      "name": "AddHunterTarget",
      "signature": "AddHunterTarget(joueur)",
      "returns": 1,
      "category": "Workers",
      "section": "Composer une liste de surveillance",
      "summary": "Met un joueur sous surveillance.",
      "anchor": "workers--composer-une-liste-de-surveillance",
      "url": "https://keplerbot.net/scripts/workers#workers--composer-une-liste-de-surveillance",
      "examples": [
        "AddHunterTarget(\"Xylo\")          // par son nom, comme à l'écran",
        "AddHunterTarget(4242)            // ou par son identifiant",
        "err = AddHunterTarget(999999)"
      ]
    },
    {
      "name": "AddItemToQueue",
      "signature": "AddItemToQueue(céleste, quoi, nombre)",
      "returns": 1,
      "since": "1.82.323",
      "category": "Workers",
      "section": "La file de la Construction",
      "summary": "Pose une ligne au bout de la file d'un céleste.",
      "anchor": "workers--la-file-de-la-construction",
      "url": "https://keplerbot.net/scripts/workers#workers--la-file-de-la-construction",
      "examples": [
        "err = AddItemToQueue(c.GetID(), METALMINE, 0)",
        "AddItemToQueue(c.GetID(), METALMINE, 0)  // un niveau de plus encore",
        "AddItemToQueue(c.GetID(), BOMBER, 5)"
      ]
    },
    {
      "name": "AddToFarmBlacklist",
      "signature": "AddToFarmBlacklist(cible)",
      "returns": 1,
      "since": "1.82.309",
      "category": "Workers",
      "section": "La liste noire du Pillage",
      "summary": "Un joueur, par son nom ou son identifiant, ou une position.",
      "anchor": "workers--la-liste-noire-du-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--la-liste-noire-du-pillage",
      "examples": [
        "AddToFarmBlacklist(\"1:42:8\")      // à la main : la planète ET sa lune",
        "AddToFarmBlacklist(\"Xylo\")        // un joueur, par son nom",
        "AddToFarmBlacklist(4242)          // ou par son identifiant"
      ]
    },
    {
      "name": "Atoi",
      "signature": "Atoi(texte)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Convertir un nombre et une chaîne",
      "summary": "Lit un entier dans un texte.",
      "anchor": "outils--convertir-un-nombre-et-une-chaîne",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--convertir-un-nombre-et-une-chaîne",
      "examples": [
        "Atoi(\"42\")                    // 42",
        "Atoi(\"  42  \")                // 42, les espaces autour sont ignorés",
        "Atoi(\"+42\")                   // 42"
      ]
    },
    {
      "name": "AttackStrength",
      "signature": "AttackStrength(id, recherches)",
      "returns": 1,
      "category": "Flottes",
      "section": "Puissance de combat",
      "summary": "Puissance de feu, plus 10 % de la valeur de base par niveau d'armes.",
      "anchor": "flottes--puissance-de-combat",
      "url": "https://keplerbot.net/scripts/flottes#flottes--puissance-de-combat",
      "examples": [
        "Print(AttackStrength(LIGHTFIGHTER, nil))              // avec vos recherches",
        "Print(AttackStrength(LIGHTFIGHTER, recherchesCible))  // avec les siennes"
      ]
    },
    {
      "name": "Base64",
      "signature": "Base64(texte)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Encoder en base64",
      "summary": "Encode.",
      "anchor": "outils--encoder-en-base64",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--encoder-en-base64",
      "examples": [
        "code = Base64(\"coucou\")"
      ]
    },
    {
      "name": "Base64Decode",
      "signature": "Base64Decode(texte)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Encoder en base64",
      "summary": "Décode.",
      "anchor": "outils--encoder-en-base64",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--encoder-en-base64",
      "examples": [
        "clair, err = Base64Decode(code)      // ← DEUX cibles"
      ]
    },
    {
      "name": "Build",
      "signature": "Build(céleste, quoi, nombre)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Bâtiment, technologie, vaisseau ou défense.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "err = Build(c.GetID(), LIGHTFIGHTER, 5)",
        "Build(c.GetID(), LIGHTLASER, 5)"
      ]
    },
    {
      "name": "BuildBuilding",
      "signature": "BuildBuilding(céleste, bâtiment)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Refuse ce qui n'est pas un bâtiment.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "BuildBuilding(c.GetID(), METALMINE)"
      ]
    },
    {
      "name": "BuildTechnology",
      "signature": "BuildTechnology(céleste, technologie)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Refuse ce qui n'est pas une technologie.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "BuildTechnology(c.GetID(), ENERGYTECHNOLOGY)"
      ]
    },
    {
      "name": "BuyOfferOfTheDay",
      "signature": "BuyOfferOfTheDay()",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Achète l'offre du marchand.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "Print(BuyOfferOfTheDay())"
      ]
    },
    {
      "name": "BuyResetTree",
      "signature": "BuyResetTree(planète, palier)",
      "returns": 1,
      "since": "1.82.240",
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Le même geste, contre de la matière noire.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "Bytes2Str",
      "signature": "Bytes2Str(octets)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Quelques commodités",
      "summary": "Convertit des octets en texte. Anko ne sait pas écrire un []byte littéral, d'où cette fonction.",
      "anchor": "base--quelques-commodités",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--quelques-commodités",
      "examples": []
    },
    {
      "name": "CalcCargo",
      "signature": "CalcCargo(total)",
      "returns": 2,
      "category": "Flottes",
      "section": "Composer un transport",
      "summary": "Deux solutions séparées, pas les deux moitiés d'une flotte.",
      "anchor": "flottes--composer-un-transport",
      "url": "https://keplerbot.net/scripts/flottes#flottes--composer-un-transport",
      "examples": [
        "gt, pt = CalcCargo(res.Total())"
      ]
    },
    {
      "name": "CalcFastCargo",
      "signature": "CalcFastCargo(gtDispo, ptDispo, total)",
      "returns": 3,
      "category": "Flottes",
      "section": "Composer un transport",
      "summary": "La composition que votre parc autorise.",
      "anchor": "flottes--composer-un-transport",
      "url": "https://keplerbot.net/scripts/flottes#flottes--composer-un-transport",
      "examples": [
        "gt, pt, fret = CalcFastCargo(10, 8, res.Total())",
        "gt, pt, fret = CalcFastCargo(gtDispo, ptDispo, total)"
      ]
    },
    {
      "name": "CalcPreferredCargo",
      "signature": "CalcPreferredCargo(préféré, sondes, éclaireurs, grands, petits, total, arrondi)",
      "returns": 5,
      "category": "Flottes",
      "section": "Le fret, en privilégiant un type",
      "summary": "Compose un transport en servant d'abord le type voulu.",
      "anchor": "flottes--le-fret-en-privilégiant-un-type",
      "url": "https://keplerbot.net/scripts/flottes#flottes--le-fret-en-privilégiant-un-type",
      "examples": [
        "sondes, eclaireurs, gt, pt, fret = CalcPreferredCargo(LARGECARGO, 0, 0, 50, 20, 5000000, true)"
      ]
    },
    {
      "name": "CancelBuilding",
      "signature": "CancelBuilding(céleste)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Annule le chantier en cours.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "CancelBuilding(c.GetID())"
      ]
    },
    {
      "name": "CancelFleet",
      "signature": "CancelFleet(flotte)",
      "returns": 1,
      "category": "Flottes",
      "section": "Rappeler une flotte",
      "summary": "Fait faire demi-tour à un vol en cours.",
      "anchor": "flottes--rappeler-une-flotte",
      "url": "https://keplerbot.net/scripts/flottes#flottes--rappeler-une-flotte",
      "examples": [
        "err = CancelFleet(vol.ID)"
      ]
    },
    {
      "name": "CancelLfBuilding",
      "signature": "CancelLfBuilding(céleste)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les formes de vie, au-delà des niveaux",
      "summary": "Annule le bâtiment de forme de vie en cours.",
      "anchor": "celestes--les-formes-de-vie-au-delà-des-niveaux",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie-au-delà-des-niveaux",
      "examples": []
    },
    {
      "name": "CancelResearch",
      "signature": "CancelResearch(céleste)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Annule la recherche en cours.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "CancelResearch(c.GetID())"
      ]
    },
    {
      "name": "Cargo",
      "signature": "Cargo(flotte)",
      "returns": 1,
      "category": "Flottes",
      "section": "Ce qu'une flotte porte et à quelle vitesse",
      "summary": "Le fret total, ressources confondues.",
      "anchor": "flottes--ce-quune-flotte-porte-et-à-quelle-vitesse",
      "url": "https://keplerbot.net/scripts/flottes#flottes--ce-quune-flotte-porte-et-à-quelle-vitesse",
      "examples": [
        "Print(Speed(f), Cargo(f))"
      ]
    },
    {
      "name": "Ceil",
      "signature": "Ceil(x)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "L'entier au-dessus.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": []
    },
    {
      "name": "ChapterClaimAll",
      "signature": "ChapterClaimAll(chapitre)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Ramasse tout ce qui est ramassable.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": [
        "err = ChapterClaimAll(4006)               // ← à vous : l'identifiant du chapitre",
        "err = ChapterClaimAll(CHAPITRE)"
      ]
    },
    {
      "name": "ChapterCollectReward",
      "signature": "ChapterCollectReward(tâche)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Ramasse la récompense d'une tâche.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "CharacterClass",
      "signature": "CharacterClass()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "La classe : NO_CLASS, COLLECTOR, GENERAL ou DISCOVERER.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "ClearAllConstructionQueues",
      "signature": "ClearAllConstructionQueues()",
      "returns": 1,
      "since": "1.82.323",
      "category": "Workers",
      "section": "La file de la Construction",
      "summary": "Vide la file de chaque céleste en mode File.",
      "anchor": "workers--la-file-de-la-construction",
      "url": "https://keplerbot.net/scripts/workers#workers--la-file-de-la-construction",
      "examples": [
        "ClearAllConstructionQueues()"
      ]
    },
    {
      "name": "ClearFarmBlacklist",
      "signature": "ClearFarmBlacklist()",
      "returns": 1,
      "since": "1.82.309",
      "category": "Workers",
      "section": "La liste noire du Pillage",
      "summary": "Tout vider, entrées d'office comprises.",
      "anchor": "workers--la-liste-noire-du-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--la-liste-noire-du-pillage",
      "examples": [
        "ClearFarmBlacklist()"
      ]
    },
    {
      "name": "Clock",
      "signature": "Clock()",
      "returns": 3,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": [
        "h, m, s = Clock()             // trois cibles, pas une"
      ]
    },
    {
      "name": "ConstructionsBeingBuilt",
      "signature": "ConstructionsBeingBuilt(céleste)",
      "returns": 4,
      "category": "Célestes",
      "section": "Les chantiers en cours",
      "summary": "Le bâtiment et la recherche en cours.",
      "anchor": "celestes--les-chantiers-en-cours",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chantiers-en-cours",
      "examples": [
        "bID, bSec, rID, rSec = ConstructionsBeingBuilt(\"1:2:3\")"
      ]
    },
    {
      "name": "ConstructionTime",
      "signature": "ConstructionTime(id, nbr, installations)",
      "returns": 1,
      "category": "Flottes",
      "section": "Prix et durées de construction",
      "summary": "Durée de construction, installations à l'appui.",
      "anchor": "flottes--prix-et-durées-de-construction",
      "url": "https://keplerbot.net/scripts/flottes#flottes--prix-et-durées-de-construction",
      "examples": [
        "Print(ShortDur(ConstructionTime(LARGECARGO, 20, inst)))"
      ]
    },
    {
      "name": "ConvertIntoCoordinate",
      "signature": "ConvertIntoCoordinate(quoi)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "Normalise tout ce qui désigne une position.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": []
    },
    {
      "name": "CoordinatesAvailableForDiscoveryFleet",
      "signature": "CoordinatesAvailableForDiscoveryFleet(origine, galaxie, système)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Relever un système",
      "summary": "Les positions où une expédition de forme de vie peut partir, places vides comprises. Liste vide quand il n'y en a aucune.",
      "anchor": "galaxie--relever-un-système",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--relever-un-système",
      "examples": [
        "coords, err = CoordinatesAvailableForDiscoveryFleet(origine, 1, 64)"
      ]
    },
    {
      "name": "CountColonies",
      "signature": "CountColonies()",
      "returns": 2,
      "category": "Galaxie",
      "section": "Compter ses colonies",
      "summary": "Ce que vous avez, ce que vous pouvez avoir.",
      "anchor": "galaxie--compter-ses-colonies",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--compter-ses-colonies",
      "examples": [
        "combien, possible = CountColonies()",
        "colonies, possibles = CountColonies()"
      ]
    },
    {
      "name": "CreateUnion",
      "signature": "CreateUnion(vol, joueurs)",
      "returns": 2,
      "category": "Flottes",
      "section": "L'attaque groupée",
      "summary": "Ouvre une attaque groupée autour d'un vol.",
      "anchor": "flottes--lattaque-groupée",
      "url": "https://keplerbot.net/scripts/flottes#flottes--lattaque-groupée",
      "examples": []
    },
    {
      "name": "CronExec",
      "signature": "CronExec(horaire, f)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Appelle f selon un horaire.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "id, err = CronExec(\"@03h30\", f)",
        "CronExec(\"@04h00\", func() { Print(\"chaque nuit\") })",
        "id, err = CronExec(\"@03h30\", func() {\n    Print(\"rapport de la nuit\")\n})"
      ]
    },
    {
      "name": "Date",
      "signature": "Date()",
      "returns": 3,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": [
        "a, mo, j = Date()",
        "an, mois, jour = Date()"
      ]
    },
    {
      "name": "Delete",
      "signature": "Delete(clé)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Se souvenir entre deux passes",
      "summary": "Efface.",
      "anchor": "base--se-souvenir-entre-deux-passes",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--se-souvenir-entre-deux-passes",
      "examples": []
    },
    {
      "name": "DeleteAllMessagesFromTab",
      "signature": "DeleteAllMessagesFromTab(onglet)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Vide un onglet entier.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "DeleteAllMessagesFromTab(20)"
      ]
    },
    {
      "name": "DeleteMessage",
      "signature": "DeleteMessage(idMessage)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Efface un message.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "DeleteMessage(resumes[0].ID)"
      ]
    },
    {
      "name": "DeleteShared",
      "signature": "DeleteShared(clé)",
      "returns": 1,
      "since": "1.82.374",
      "category": "Sortie et stockage",
      "section": "Partager entre robots",
      "summary": "Efface.",
      "anchor": "base--partager-entre-robots",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--partager-entre-robots",
      "examples": [
        "DeleteShared(\"fs.fini\")"
      ]
    },
    {
      "name": "DestroyRockets",
      "signature": "DestroyRockets(planète, abm, ipm)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Démolir des missiles",
      "summary": "Détruit des missiles de votre silo.",
      "anchor": "outils--démolir-des-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--démolir-des-missiles",
      "examples": []
    },
    {
      "name": "Distance",
      "signature": "Distance(origine, cible)",
      "returns": 1,
      "category": "Flottes",
      "section": "Distance et durée de vol",
      "summary": "La distance dans l'unité du jeu. Aucune requête.",
      "anchor": "flottes--distance-et-durée-de-vol",
      "url": "https://keplerbot.net/scripts/flottes#flottes--distance-et-durée-de-vol",
      "examples": [
        "Print(Distance(depart, \"1:2:4\"))       // le céleste suffit, pas besoin de .GetCoordinate()",
        "if Distance(depart, cible) > 5000 {\n        continue                      // gratuit, aucune requête\n    }"
      ]
    },
    {
      "name": "Dotify",
      "signature": "Dotify(n)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Convertir un nombre et une chaîne",
      "summary": "Met en forme un grand nombre à la façon du jeu : 1000000 donne 1.000.000.",
      "anchor": "outils--convertir-un-nombre-et-une-chaîne",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--convertir-un-nombre-et-une-chaîne",
      "examples": []
    },
    {
      "name": "DurationBetweenTimeStrings",
      "signature": "DurationBetweenTimeStrings(a, b)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "L'écart entre deux heures d'horloge.",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": []
    },
    {
      "name": "ExecAt",
      "signature": "ExecAt(quand, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Appelle f une fois, à l'heure dite.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": []
    },
    {
      "name": "ExecAtCh",
      "signature": "ExecAtCh(quand, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Comme ExecAt, mais le canal se ferme après f.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "<-ExecAtCh(depart, func() {\n    LogInfo(\"c'est l'heure de partir\")\n})"
      ]
    },
    {
      "name": "ExecAtSync",
      "signature": "ExecAtSync(quand, f)",
      "returns": 0,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Attend l'heure dite, puis appelle f.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "ExecAtSync(\"03:17:00\", func() { RentrerLaFlotte() })"
      ]
    },
    {
      "name": "ExecIn",
      "signature": "ExecIn(ms, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Appelle f une fois, dans ms millisecondes.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "annuler = ExecIn(60000, func() { Print(\"une minute plus tard\") })"
      ]
    },
    {
      "name": "ExecInCh",
      "signature": "ExecInCh(ms, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Comme ExecIn, mais le canal se ferme après f.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "<-ExecInCh(60000, func() { Print(\"une minute plus tard\") })"
      ]
    },
    {
      "name": "ExecInSync",
      "signature": "ExecInSync(ms, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Attend, puis appelle f, sans rendre la main.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": []
    },
    {
      "name": "Exit",
      "signature": "Exit()",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Gouverner son propre script",
      "summary": "Arrête le script proprement.",
      "anchor": "base--gouverner-son-propre-script",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--gouverner-son-propre-script",
      "examples": [
        "Exit()"
      ]
    },
    {
      "name": "FarmingBotSessionsCount",
      "signature": "FarmingBotSessionsCount()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "Combien de campagnes tournent.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": []
    },
    {
      "name": "FetchURL",
      "signature": "FetchURL(adresse)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Lire une page du jeu telle quelle",
      "summary": "N'importe quelle adresse, par la même session.",
      "anchor": "galaxie--lire-une-page-du-jeu-telle-quelle",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--lire-une-page-du-jeu-telle-quelle",
      "examples": [
        "corps, err = FetchURL(\"https://exemple.net/api\")"
      ]
    },
    {
      "name": "FindAbandonedPlanetWithMinimumTravelTime",
      "signature": "FindAbandonedPlanetWithMinimumTravelTime(origine, flotte, minimum, avecLune)",
      "returns": 4,
      "category": "Flottes",
      "section": "Trouver où envoyer, pour rentrer après telle heure",
      "summary": "Une planète détruite.",
      "anchor": "flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "url": "https://keplerbot.net/scripts/flottes#flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "examples": []
    },
    {
      "name": "FindDebrisFieldWithMinimumTravelTime",
      "signature": "FindDebrisFieldWithMinimumTravelTime(origine, flotte, minimum)",
      "returns": 4,
      "category": "Flottes",
      "section": "Trouver où envoyer, pour rentrer après telle heure",
      "summary": "Un champ de ruines.",
      "anchor": "flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "url": "https://keplerbot.net/scripts/flottes#flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "examples": [
        "dest, secs, deut, err = FindDebrisFieldWithMinimumTravelTime(p.GetCoordinate(),\n    flotte, 7 * time.Hour)",
        "FindDebrisFieldWithMinimumTravelTime(o, f, 7 * time.Hour)   // ✓",
        "FindDebrisFieldWithMinimumTravelTime(o, f, 25200)           // ✓ le même"
      ]
    },
    {
      "name": "FindEmptyPlanetWithMinimumTravelTime",
      "signature": "FindEmptyPlanetWithMinimumTravelTime(origine, flotte, minimum)",
      "returns": 4,
      "category": "Flottes",
      "section": "Trouver où envoyer, pour rentrer après telle heure",
      "summary": "Une place vide.",
      "anchor": "flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "url": "https://keplerbot.net/scripts/flottes#flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "examples": [
        "dest, secs, deut, err = FindEmptyPlanetWithMinimumTravelTime(c.GetCoordinate(),\n        flotte, HEURES * 3600)"
      ]
    },
    {
      "name": "FindInactivePlanetWithMinimumTravelTime",
      "signature": "FindInactivePlanetWithMinimumTravelTime(origine, flotte, minimum, avecLune)",
      "returns": 4,
      "category": "Flottes",
      "section": "Trouver où envoyer, pour rentrer après telle heure",
      "summary": "Un joueur inactif.",
      "anchor": "flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "url": "https://keplerbot.net/scripts/flottes#flottes--trouver-où-envoyer-pour-rentrer-après-telle-heure",
      "examples": []
    },
    {
      "name": "FlightTime",
      "signature": "FlightTime(origine, cible, vitesse, flotte, mission, [stationnement])",
      "returns": 2,
      "category": "Flottes",
      "section": "Distance et durée de vol",
      "summary": "Une requête à chaque appel.",
      "anchor": "flottes--distance-et-durée-de-vol",
      "url": "https://keplerbot.net/scripts/flottes#flottes--distance-et-durée-de-vol",
      "examples": [
        "secs, fuel = FlightTime(depart, cible, HUNDRED_PERCENT, flotte, TRANSPORT)",
        "secs, fuel = FlightTime(depart, \"1:2:4\", HUNDRED_PERCENT, flotte, EXPEDITION, 2)",
        "secs, fuel = FlightTime(origine,\n    cible, HUNDRED_PERCENT, flotte, ATTACK)     // ✓"
      ]
    },
    {
      "name": "Floor",
      "signature": "Floor(x)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "L'entier en dessous.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": [
        "Floor(o[\"planet_id\"] / 2) == 16814034   // true"
      ]
    },
    {
      "name": "FreeResetTree",
      "signature": "FreeResetTree(planète, palier)",
      "returns": 1,
      "since": "1.82.240",
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Vide un palier entier. Gratuit, en nombre limité.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": [
        "err = FreeResetTree(p, 1)                     // le palier 1, de nouveau vierge"
      ]
    },
    {
      "name": "GalaxyInfos",
      "signature": "GalaxyInfos(galaxie, système)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Relever un système",
      "summary": "Les quinze positions d'un système.",
      "anchor": "galaxie--relever-un-système",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--relever-un-système",
      "examples": [
        "sys, err = GalaxyInfos(1, 224)         // DEUX cibles",
        "sys, err = GalaxyInfos(1, s)",
        "sys, err = GalaxyInfos(3, 193)"
      ]
    },
    {
      "name": "GalaxyInfosUsing",
      "signature": "GalaxyInfosUsing(galaxie, système, céleste)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Relever un système",
      "summary": "Le même, en se plaçant sur un céleste.",
      "anchor": "galaxie--relever-un-système",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--relever-un-système",
      "examples": [
        "sys, err = GalaxyInfosUsing(4, 116, c.GetID())"
      ]
    },
    {
      "name": "Get",
      "signature": "Get(clé)",
      "returns": 2,
      "category": "Sortie et stockage",
      "section": "Se souvenir entre deux passes",
      "summary": "Relit. Une clé absente rend la chaîne vide, sans erreur.",
      "anchor": "base--se-souvenir-entre-deux-passes",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--se-souvenir-entre-deux-passes",
      "examples": [
        "sys, err = Get(\"dernier.systeme\")     // ← DEUX cibles, voir le piège n°1",
        "noirs, err = Get(\"liste.noire\")"
      ]
    },
    {
      "name": "GetActiveItems",
      "signature": "GetActiveItems(céleste)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Les seuls en cours d'effet.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "actifs, err = GetActiveItems(c.GetID())"
      ]
    },
    {
      "name": "GetAllResources",
      "signature": "GetAllResources()",
      "returns": 2,
      "category": "Célestes",
      "section": "Les ressources",
      "summary": "Les ressources de tous les célestes d'un coup.",
      "anchor": "celestes--les-ressources",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-ressources",
      "examples": [
        "toutes, err = GetAllResources()"
      ]
    },
    {
      "name": "GetAttacks",
      "signature": "GetAttacks()",
      "returns": 1,
      "category": "Flottes",
      "section": "Ce qui vole, et ce qui arrive",
      "summary": "Les flottes hostiles en route vers votre compte.",
      "anchor": "flottes--ce-qui-vole-et-ce-qui-arrive",
      "url": "https://keplerbot.net/scripts/flottes#flottes--ce-qui-vole-et-ce-qui-arrive",
      "examples": [
        "for a in GetAttacks() {\n    Print(a.AttackerName, \"arrive sur\", a.DestinationName, \"dans\", a.ArriveIn, \"s\")\n    if a.Ships == nil { Print(\"  composition inconnue\") }\n}"
      ]
    },
    {
      "name": "GetAuction",
      "signature": "GetAuction()",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "L'enchère en cours.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "ench, err = GetAuction()"
      ]
    },
    {
      "name": "GetCachedCelestial",
      "signature": "GetCachedCelestial(quoi)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Le céleste tel que le robot le connaît déjà.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "c = GetCachedCelestial(\"1:2:3\")",
        "p = GetCachedCelestial(\"1:2:3\").GetID()",
        "lune = GetCachedCelestial(\"M:1:2:3\")"
      ]
    },
    {
      "name": "GetCachedCelestials",
      "signature": "GetCachedCelestials()",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Toutes vos planètes et lunes, telles que le robot les connaît déjà.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "depart = GetCachedCelestials()[0]",
        "origine = GetCachedCelestials()[0]",
        "flotte, err = GetShips(GetCachedCelestials()[0].GetID())"
      ]
    },
    {
      "name": "GetCachedLfBonuses",
      "signature": "GetCachedLfBonuses()",
      "returns": 2,
      "category": "Célestes",
      "section": "Les formes de vie",
      "summary": "Ce que le robot sait déjà. Aucune requête.",
      "anchor": "celestes--les-formes-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie",
      "examples": [
        "bonus, err = GetCachedLfBonuses()"
      ]
    },
    {
      "name": "GetCachedMoons",
      "signature": "GetCachedMoons()",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Vos lunes, prises dans le même cache.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": []
    },
    {
      "name": "GetCachedPlanets",
      "signature": "GetCachedPlanets()",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Vos planètes, prises dans le même cache.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "c = GetCachedPlanets()[0]",
        "p = GetCachedPlanets()[0]",
        "origine = GetCachedPlanets()[0]"
      ]
    },
    {
      "name": "GetCachedPlayer",
      "signature": "GetCachedPlayer()",
      "returns": 1,
      "category": "Galaxie",
      "section": "Le compte",
      "summary": "PlayerID, PlayerName, Points, Rank, Total, HonourPoints.",
      "anchor": "galaxie--le-compte",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--le-compte",
      "examples": [
        "moi = GetCachedPlayer()          // UNE cible : c'est une structure"
      ]
    },
    {
      "name": "GetCelestial",
      "signature": "GetCelestial(quoi)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Une planète ou une lune précise, l'une ou l'autre.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": []
    },
    {
      "name": "GetCelestials",
      "signature": "GetCelestials()",
      "returns": 2,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Toutes vos planètes et lunes ensemble.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "c, err = GetCelestials()   // ✓ c vaut la liste, err vaut nil"
      ]
    },
    {
      "name": "GetChapter",
      "signature": "GetChapter(chapitre)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Ses tâches, et l'état de chacune.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "GetCombatReportSummaryFor",
      "signature": "GetCombatReportSummaryFor(coordonnée)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Le dernier combat à cette position.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "combat, err = GetCombatReportSummaryFor(\"1:2:3\")"
      ]
    },
    {
      "name": "GetDefense",
      "signature": "GetDefense(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Missiles compris.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": []
    },
    {
      "name": "GetDepartureTime",
      "signature": "GetDepartureTime(arrivée, origine, destination, flotte, vitesse, mission)",
      "returns": 1,
      "category": "Flottes",
      "section": "Le vol à l'envers : partir de l'heure d'arrivée",
      "summary": "Quand décoller pour arriver à l'heure dite.",
      "anchor": "flottes--le-vol-à-lenvers-partir-de-lheure-darrivée",
      "url": "https://keplerbot.net/scripts/flottes#flottes--le-vol-à-lenvers-partir-de-lheure-darrivée",
      "examples": [
        "depart = GetDepartureTime(\"08:00:00\", \"1:64:8\", \"1:64:12\", flotte, TEN_PERCENT, TRANSPORT)"
      ]
    },
    {
      "name": "GetDiameter",
      "signature": "GetDiameter(céleste)",
      "returns": 1,
      "category": "Célestes",
      "section": "La fiche d'un céleste",
      "summary": "Le diamètre, en kilomètres.",
      "anchor": "celestes--la-fiche-dun-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--la-fiche-dun-céleste",
      "examples": [
        "Print(\"rayon :\", GetDiameter(\"1:2:3\") / 2)"
      ]
    },
    {
      "name": "GetEmpire",
      "signature": "GetEmpire(type)",
      "returns": 2,
      "category": "Célestes",
      "section": "L'empire en une requête",
      "summary": "Tout d'une nature de célestes : ressources, mines, installations, défenses, vaisseaux.",
      "anchor": "celestes--lempire-en-une-requête",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lempire-en-une-requête",
      "examples": [
        "empire, err = GetEmpire(PLANET_TYPE)"
      ]
    },
    {
      "name": "GetEspionageReport",
      "signature": "GetEspionageReport(idMessage)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Le rapport détaillé d'un message.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "detail, err = GetEspionageReport(resumes[0].ID)"
      ]
    },
    {
      "name": "GetEspionageReportFor",
      "signature": "GetEspionageReportFor(coordonnée)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Le dernier rapport visant cette position.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "rapport, err = GetEspionageReportFor(\"1:2:3\")"
      ]
    },
    {
      "name": "GetEspionageReportMessages",
      "signature": "GetEspionageReportMessages()",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "Le résumé de chaque rapport de la première page.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "resumes, err = GetEspionageReportMessages()",
        "rapports, err = GetEspionageReportMessages()"
      ]
    },
    {
      "name": "GetEspionageReportMessagesPages",
      "signature": "GetEspionageReportMessagesPages(pages)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les rapports et la boîte à messages",
      "summary": "La même chose, sur plusieurs pages.",
      "anchor": "galaxie--les-rapports-et-la-boîte-à-messages",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-rapports-et-la-boîte-à-messages",
      "examples": [
        "anciens, err = GetEspionageReportMessagesPages(3)"
      ]
    },
    {
      "name": "GetExpeditionsStrategy",
      "signature": "GetExpeditionsStrategy()",
      "returns": 1,
      "since": "",
      "category": "Workers",
      "section": "La stratégie des expéditions",
      "summary": "\"majority\", \"all\" ou \"never\".",
      "anchor": "workers--la-stratégie-des-expéditions",
      "url": "https://keplerbot.net/scripts/workers#workers--la-stratégie-des-expéditions",
      "examples": [
        "if GetExpeditionsStrategy() != \"all\" {\n    err = SetExpeditionsStrategy(\"all\")\n    if err != nil { LogError(\"stratégie :\", err) }\n}"
      ]
    },
    {
      "name": "GetFacilities",
      "signature": "GetFacilities(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Les onze : usines, chantier, labo, dépôt, silo, terraformeur, dock, base lunaire, phalange, porte de saut.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": [
        "inst, err = GetFacilities(celeste)"
      ]
    },
    {
      "name": "GetFarmBlacklist",
      "signature": "GetFarmBlacklist()",
      "returns": 2,
      "since": "1.82.309",
      "category": "Workers",
      "section": "La liste noire du Pillage",
      "summary": "Toute la liste, joueurs et positions mêlés.",
      "anchor": "workers--la-liste-noire-du-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--la-liste-noire-du-pillage",
      "examples": [
        "liste, err = GetFarmBlacklist()"
      ]
    },
    {
      "name": "GetFields",
      "signature": "GetFields(céleste)",
      "returns": 1,
      "category": "Célestes",
      "section": "La fiche d'un céleste",
      "summary": "",
      "anchor": "celestes--la-fiche-dun-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--la-fiche-dun-céleste",
      "examples": [
        "ch = GetFields(\"1:2:3\")"
      ]
    },
    {
      "name": "GetFleets",
      "signature": "GetFleets()",
      "returns": 2,
      "category": "Flottes",
      "section": "Ce qui vole, et ce qui arrive",
      "summary": "Vos flottes en l'air, pas celles qui vous visent.",
      "anchor": "flottes--ce-qui-vole-et-ce-qui-arrive",
      "url": "https://keplerbot.net/scripts/flottes#flottes--ce-qui-vole-et-ce-qui-arrive",
      "examples": [
        "flottes, emplacements = GetFleets()          // DEUX cibles",
        "vols, emplacements = GetFleets()"
      ]
    },
    {
      "name": "GetFleetSlotsReserved",
      "signature": "GetFleetSlotsReserved()",
      "returns": 1,
      "category": "Workers",
      "section": "La réserve d'emplacements de flotte",
      "summary": "Le nombre d'emplacements laissés libres.",
      "anchor": "workers--la-réserve-demplacements-de-flotte",
      "url": "https://keplerbot.net/scripts/workers#workers--la-réserve-demplacements-de-flotte",
      "examples": [
        "garde = GetFleetSlotsReserved()",
        "if slots.Total - slots.InUse <= GetFleetSlotsReserved() {\n    return                          // on laisse la place au Defender\n}",
        "if slots.Total - slots.InUse <= GetFleetSlotsReserved() {\n        LogWarn(\"plus de place, on laisse le Defender respirer\")\n        return\n    }"
      ]
    },
    {
      "name": "GetHighscore",
      "signature": "GetHighscore(category, typ, page)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Le classement",
      "summary": "Ne fonctionne plus en version 13.",
      "anchor": "galaxie--le-classement",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--le-classement",
      "examples": []
    },
    {
      "name": "GetHomeWorld",
      "signature": "GetHomeWorld()",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "La relit.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": []
    },
    {
      "name": "GetHunterTargets",
      "signature": "GetHunterTargets()",
      "returns": 2,
      "category": "Workers",
      "section": "Composer une liste de surveillance",
      "summary": "Les joueurs sous surveillance.",
      "anchor": "workers--composer-une-liste-de-surveillance",
      "url": "https://keplerbot.net/scripts/workers#workers--composer-une-liste-de-surveillance",
      "examples": [
        "cibles, err = GetHunterTargets()"
      ]
    },
    {
      "name": "GetIgnored",
      "signature": "GetIgnored()",
      "returns": 2,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Toute la liste, les trois genres mêlés.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": [
        "liste, err = GetIgnored()"
      ]
    },
    {
      "name": "GetItems",
      "signature": "GetItems(céleste)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Tous les objets du céleste.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "objets, err = GetItems(c.GetID())"
      ]
    },
    {
      "name": "GetLang",
      "signature": "GetLang()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir où l'on est",
      "summary": "Le code de langue du serveur, fr, en…",
      "anchor": "celestes--savoir-où-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-où-lon-est",
      "examples": [
        "Printf(\"%s s%d-%s\", GetUniverseName(), GetServerNumber(), GetLang())"
      ]
    },
    {
      "name": "GetLfBonuses",
      "signature": "GetLfBonuses()",
      "returns": 2,
      "category": "Célestes",
      "section": "Les formes de vie",
      "summary": "Relit les bonus dans le jeu.",
      "anchor": "celestes--les-formes-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie",
      "examples": [
        "frais, err = GetLfBonuses()"
      ]
    },
    {
      "name": "GetLfBuildings",
      "signature": "GetLfBuildings(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les formes de vie",
      "summary": "Une requête à chaque appel.",
      "anchor": "celestes--les-formes-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie",
      "examples": [
        "b, err = GetLfBuildings(c.GetID())"
      ]
    },
    {
      "name": "GetLfResearch",
      "signature": "GetLfResearch(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les formes de vie",
      "summary": "Une requête à chaque appel.",
      "anchor": "celestes--les-formes-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie",
      "examples": [
        "rech, err = GetLfResearch(c.GetID())"
      ]
    },
    {
      "name": "GetLfResearchDetails",
      "signature": "GetLfResearchDetails(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les formes de vie, au-delà des niveaux",
      "summary": "Coûts, durées et ce qui est ouvert.",
      "anchor": "celestes--les-formes-de-vie-au-delà-des-niveaux",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie-au-delà-des-niveaux",
      "examples": []
    },
    {
      "name": "GetMoon",
      "signature": "GetMoon(quoi)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Une lune précise.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": []
    },
    {
      "name": "GetMoons",
      "signature": "GetMoons()",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Toutes vos lunes.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": []
    },
    {
      "name": "GetNextDatetimeAt",
      "signature": "GetNextDatetimeAt(h, m, s)",
      "returns": 2,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "La prochaine fois qu'il sera cette heure.",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": [
        "quand, err = GetNextDatetimeAt(3, 30, 0)   // rend DEUX valeurs"
      ]
    },
    {
      "name": "GetNextSleepTime",
      "signature": "GetNextSleepTime()",
      "returns": 1,
      "category": "Workers",
      "section": "La veille, et la cadence du Defender",
      "summary": "Le prochain coucher.",
      "anchor": "workers--la-veille-et-la-cadence-du-defender",
      "url": "https://keplerbot.net/scripts/workers#workers--la-veille-et-la-cadence-du-defender",
      "examples": [
        "fin = GetNextSleepTime()"
      ]
    },
    {
      "name": "GetNextWakeTime",
      "signature": "GetNextWakeTime()",
      "returns": 1,
      "category": "Workers",
      "section": "La veille, et la cadence du Defender",
      "summary": "Le prochain réveil.",
      "anchor": "workers--la-veille-et-la-cadence-du-defender",
      "url": "https://keplerbot.net/scripts/workers#workers--la-veille-et-la-cadence-du-defender",
      "examples": []
    },
    {
      "name": "GetPlanet",
      "signature": "GetPlanet(quoi)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Une planète précise.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "p, err = GetPlanet(\"1:2:3\")           // DEUX cibles, la doc annonce l'erreur"
      ]
    },
    {
      "name": "GetPlanetInfo",
      "signature": "GetPlanetInfo(coordonnée)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Relever un système",
      "summary": "Une seule position.",
      "anchor": "galaxie--relever-un-système",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--relever-un-système",
      "examples": [
        "p, err = GetPlanetInfo(\"4:116:6\")"
      ]
    },
    {
      "name": "GetPlanetInfoUsing",
      "signature": "GetPlanetInfoUsing(coordonnée, céleste)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Relever un système",
      "summary": "La même, en se plaçant sur un céleste.",
      "anchor": "galaxie--relever-un-système",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--relever-un-système",
      "examples": []
    },
    {
      "name": "GetPlanetLifeformType",
      "signature": "GetPlanetLifeformType(planète)",
      "returns": 1,
      "since": "1.82.240",
      "category": "Célestes",
      "section": "Les formes de vie",
      "summary": "Une requête. Sans erreur : voir plus bas.",
      "anchor": "celestes--les-formes-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-formes-de-vie",
      "examples": [
        "if GetPlanetLifeformType(p) != KAELESH {\n    return                                    // ce script ne sait traiter que les Kaelesh\n}"
      ]
    },
    {
      "name": "GetPlanets",
      "signature": "GetPlanets()",
      "returns": 1,
      "category": "Célestes",
      "section": "Les planètes et les lunes",
      "summary": "Toutes vos planètes.",
      "anchor": "celestes--les-planètes-et-les-lunes",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-planètes-et-les-lunes",
      "examples": [
        "planetes = GetPlanets()               // UNE cible : la liste",
        "for p in GetPlanets() {\n        Print(p.GetName(), toutes[p.GetID()].Metal)\n    }"
      ]
    },
    {
      "name": "GetPlayerCoordinates",
      "signature": "GetPlayerCoordinates(joueur)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "Les positions relevées d'un joueur.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": []
    },
    {
      "name": "GetPrice",
      "signature": "GetPrice(id, nbr)",
      "returns": 1,
      "category": "Flottes",
      "section": "Prix et durées de construction",
      "summary": "nbr est un niveau pour un bâtiment ou une recherche, un nombre d'exemplaires pour un vaisseau ou une défense.",
      "anchor": "flottes--prix-et-durées-de-construction",
      "url": "https://keplerbot.net/scripts/flottes#flottes--prix-et-durées-de-construction",
      "examples": [
        "p = GetPrice(METALMINE, 20)"
      ]
    },
    {
      "name": "GetProduction",
      "signature": "GetProduction(céleste)",
      "returns": 3,
      "category": "Célestes",
      "section": "Les chantiers en cours",
      "summary": "Vaisseaux et défenses au chantier spatial.",
      "anchor": "celestes--les-chantiers-en-cours",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chantiers-en-cours",
      "examples": [
        "file, restant, err = GetProduction(\"1:2:3\")"
      ]
    },
    {
      "name": "GetRequirements",
      "signature": "GetRequirements(id)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "Les prérequis directs d'une construction.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": [
        "Print(GetRequirements(LIGHTLASER))   // chantier 2, technologie laser 3"
      ]
    },
    {
      "name": "GetResearch",
      "signature": "GetResearch()",
      "returns": 1,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Elles appartiennent au compte, pas au céleste : aucun argument.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": []
    },
    {
      "name": "GetResources",
      "signature": "GetResources(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les ressources",
      "summary": "Métal, cristal, deutérium, énergie, matière noire, population, nourriture.",
      "anchor": "celestes--les-ressources",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-ressources",
      "examples": [
        "r, err = GetResources(\"1:2:3\")",
        "res, err = GetResources(c.GetID())   // ✓ la même lecture",
        "res, err = GetResources(c[i].GetID())"
      ]
    },
    {
      "name": "GetResourcesBuildings",
      "signature": "GetResourcesBuildings(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Les neuf : mines, centrale, réacteur à fusion, satellites, entrepôts.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": [
        "bat, err = GetResourcesBuildings(\"1:2:3\")"
      ]
    },
    {
      "name": "GetResourcesDetails",
      "signature": "GetResourcesDetails(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les ressources",
      "summary": "Les mêmes, avec la capacité de stockage et la production.",
      "anchor": "celestes--les-ressources",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-ressources",
      "examples": [
        "d, err = GetResourcesDetails(\"1:2:3\")"
      ]
    },
    {
      "name": "GetResourceSettings",
      "signature": "GetResourceSettings(planète)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les curseurs de production",
      "summary": "Les sept curseurs de rendement.",
      "anchor": "celestes--les-curseurs-de-production",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-curseurs-de-production",
      "examples": [
        "reg, err = GetResourceSettings(\"1:2:3\")",
        "avant, err = GetResourceSettings(c.GetID())"
      ]
    },
    {
      "name": "GetRunningScripts",
      "signature": "GetRunningScripts()",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Ceux qui tournent en ce moment.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": []
    },
    {
      "name": "GetScripts",
      "signature": "GetScripts()",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Tous les scripts du compte.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": []
    },
    {
      "name": "GetServerNumber",
      "signature": "GetServerNumber()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir où l'on est",
      "summary": "Le numéro du serveur : s152-en donne 152.",
      "anchor": "celestes--savoir-où-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-où-lon-est",
      "examples": [
        "Printf(\"%s s%d-%s\", GetUniverseName(), GetServerNumber(), GetLang())"
      ]
    },
    {
      "name": "GetShared",
      "signature": "GetShared(clé)",
      "returns": 2,
      "since": "1.82.374",
      "category": "Sortie et stockage",
      "section": "Partager entre robots",
      "summary": "Relit. Une clé absente rend la chaîne vide, sans erreur.",
      "anchor": "base--partager-entre-robots",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--partager-entre-robots",
      "examples": [
        "cible, err = GetShared(\"fs.cible\")      // ← DEUX cibles, comme Get"
      ]
    },
    {
      "name": "GetShips",
      "signature": "GetShips(céleste)",
      "returns": 2,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Ce qui est posé là, pas ce qui vole.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": [
        "ships, err = GetShips(planete)",
        "flotte, err = GetShips(GetCachedCelestials()[0].GetID())",
        "flotte, err = GetShips(c.GetID())"
      ]
    },
    {
      "name": "GetSlots",
      "signature": "GetSlots()",
      "returns": 1,
      "category": "Galaxie",
      "section": "Le compte",
      "summary": "InUse, Total, ExpInUse, ExpTotal.",
      "anchor": "galaxie--le-compte",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--le-compte",
      "examples": [
        "slots = GetSlots()               // UNE cible également",
        "slots = GetSlots()",
        "libres = GetSlots()"
      ]
    },
    {
      "name": "GetSortedCelestials",
      "signature": "GetSortedCelestials(destination)",
      "returns": 1,
      "category": "Célestes",
      "section": "Choisir la base la plus proche",
      "summary": "Vos célestes, du plus proche au plus loin.",
      "anchor": "celestes--choisir-la-base-la-plus-proche",
      "url": "https://keplerbot.net/scripts/celestes#celestes--choisir-la-base-la-plus-proche",
      "examples": []
    },
    {
      "name": "GetSortedMoons",
      "signature": "GetSortedMoons(destination)",
      "returns": 1,
      "category": "Célestes",
      "section": "Choisir la base la plus proche",
      "summary": "Vos lunes seules.",
      "anchor": "celestes--choisir-la-base-la-plus-proche",
      "url": "https://keplerbot.net/scripts/celestes#celestes--choisir-la-base-la-plus-proche",
      "examples": []
    },
    {
      "name": "GetSortedPlanets",
      "signature": "GetSortedPlanets(destination)",
      "returns": 1,
      "category": "Célestes",
      "section": "Choisir la base la plus proche",
      "summary": "Vos planètes seules.",
      "anchor": "celestes--choisir-la-base-la-plus-proche",
      "url": "https://keplerbot.net/scripts/celestes#celestes--choisir-la-base-la-plus-proche",
      "examples": [
        "base = GetSortedPlanets(\"4:212:9\")[0]     // la plus proche de la cible"
      ]
    },
    {
      "name": "GetSystemsInRange",
      "signature": "GetSystemsInRange(origine, rayon)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Parcourir plusieurs systèmes",
      "summary": "Dans l'ordre des numéros.",
      "anchor": "galaxie--parcourir-plusieurs-systèmes",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--parcourir-plusieurs-systèmes",
      "examples": [
        "Print(GetSystemsInRange(3, 2))       // [1 2 3 4 5]"
      ]
    },
    {
      "name": "GetSystemsInRangeAsc",
      "signature": "GetSystemsInRangeAsc(origine, rayon)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Parcourir plusieurs systèmes",
      "summary": "Du plus proche au plus loin.",
      "anchor": "galaxie--parcourir-plusieurs-systèmes",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--parcourir-plusieurs-systèmes",
      "examples": [
        "Print(GetSystemsInRangeAsc(3, 2))    // [3 2 4 1 5]",
        "for s in GetSystemsInRangeAsc(224, 15) {\n    sys, err = GalaxyInfos(1, s)\n    if err != nil { LogWarn(s, err); continue }\n    SleepRandMs(500, 1200)           // espacez, rien ne le fera pour vous\n}"
      ]
    },
    {
      "name": "GetSystemsInRangeDesc",
      "signature": "GetSystemsInRangeDesc(origine, rayon)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Parcourir plusieurs systèmes",
      "summary": "Du plus loin au plus proche.",
      "anchor": "galaxie--parcourir-plusieurs-systèmes",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--parcourir-plusieurs-systèmes",
      "examples": [
        "Print(GetSystemsInRangeDesc(3, 2))   // [5 1 4 2 3]"
      ]
    },
    {
      "name": "GetTechs",
      "signature": "GetTechs(céleste)",
      "returns": 6,
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Tout le relevé d'un coup.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": [
        "bat, inst, vais, def, rech, err = GetTechs(\"1:2:3\")"
      ]
    },
    {
      "name": "GetTechs2",
      "signature": "GetTechs2(céleste)",
      "returns": 8,
      "since": "1.82.240",
      "category": "Célestes",
      "section": "Ce qu'il y a sur un céleste",
      "summary": "Le relevé entier d'un céleste.",
      "anchor": "celestes--ce-quil-y-a-sur-un-céleste",
      "url": "https://keplerbot.net/scripts/celestes#celestes--ce-quil-y-a-sur-un-céleste",
      "examples": [
        "bat, inst, vais, def, rech, lfBat, lfRech, err = GetTechs2(\"1:2:3\")"
      ]
    },
    {
      "name": "GetTimestamp",
      "signature": "GetTimestamp()",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "L'instant présent en secondes depuis 1970.",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": []
    },
    {
      "name": "GetUniverseName",
      "signature": "GetUniverseName()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir où l'on est",
      "summary": "Le nom de l'univers.",
      "anchor": "celestes--savoir-où-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-où-lon-est",
      "examples": [
        "Printf(\"%s s%d-%s\", GetUniverseName(), GetServerNumber(), GetLang())"
      ]
    },
    {
      "name": "Has",
      "signature": "Has(clé)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Se souvenir entre deux passes",
      "summary": "Dit si la clé existe.",
      "anchor": "base--se-souvenir-entre-deux-passes",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--se-souvenir-entre-deux-passes",
      "examples": [
        "if Has(\"liste.noire\") {\n    noirs, err = Get(\"liste.noire\")\n}"
      ]
    },
    {
      "name": "HasAdmiral",
      "signature": "HasAdmiral()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": [
        "if !HasAdmiral() {\n    Print(\"moins d'emplacements de flotte que vous ne croyez\")\n}"
      ]
    },
    {
      "name": "HasCommander",
      "signature": "HasCommander()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "L'officier est-il engagé.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "HasEngineer",
      "signature": "HasEngineer()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "HasGeologist",
      "signature": "HasGeologist()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "HasShared",
      "signature": "HasShared(clé)",
      "returns": 1,
      "since": "1.82.374",
      "category": "Sortie et stockage",
      "section": "Partager entre robots",
      "summary": "Dit si la clé existe.",
      "anchor": "base--partager-entre-robots",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--partager-entre-robots",
      "examples": [
        "if HasShared(\"fs.fini\") {\n    DeleteShared(\"fs.fini\")\n}"
      ]
    },
    {
      "name": "HasTechnocrat",
      "signature": "HasTechnocrat()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "HighscoreData",
      "signature": "HighscoreData(category, typ)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Le classement",
      "summary": "Par l'API du jeu. Des identifiants, pas des noms.",
      "anchor": "galaxie--le-classement",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--le-classement",
      "examples": [
        "rangs, err = HighscoreData(1, 0)      // joueurs, classement général"
      ]
    },
    {
      "name": "HttpRequest",
      "signature": "HttpRequest(méthode, adresse, en-têtes, corps)",
      "returns": 3,
      "category": "Galaxie",
      "section": "Lire une page du jeu telle quelle",
      "summary": "Une requête complète, par la même session.",
      "anchor": "galaxie--lire-une-page-du-jeu-telle-quelle",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--lire-une-page-du-jeu-telle-quelle",
      "examples": [
        "corps, code, err = HttpRequest(\"POST\", \"https://exemple.net/api\", entêtes, charge)"
      ]
    },
    {
      "name": "ID2Str",
      "signature": "ID2Str(id)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Nommer un identifiant du jeu",
      "summary": "Le nom lisible d'un vaisseau, d'une défense, d'un bâtiment ou d'une technologie.",
      "anchor": "outils--nommer-un-identifiant-du-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--nommer-un-identifiant-du-jeu",
      "examples": [
        "Print(ID2Str(204))            // LightFighter",
        "Print(ID2Str(LIGHTFIGHTER))   // LightFighter, le nombre et la constante marchent",
        "Print(ID2Str(METALMINE))      // MetalMine"
      ]
    },
    {
      "name": "IgnoreAlliance",
      "signature": "IgnoreAlliance(tag)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Épargne tous les membres connus d'une alliance.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": [
        "IgnoreAlliance(\"SLD\")         // tous ses membres que le Scanner a vus"
      ]
    },
    {
      "name": "IgnorePlanet",
      "signature": "IgnorePlanet(coord)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Épargne une position, la lune comprise.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": [
        "IgnorePlanet(\"1:42:8\")        // la planète ET sa lune"
      ]
    },
    {
      "name": "IgnorePlayer",
      "signature": "IgnorePlayer(joueur)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Épargne un joueur. Son nom ou son identifiant.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": [
        "IgnorePlayer(\"Xylo\")          // par son nom, comme à l'écran",
        "IgnorePlayer(4242)            // ou par son identifiant"
      ]
    },
    {
      "name": "IntervalExec",
      "signature": "IntervalExec(ms, f)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Appelle f toutes les ms millisecondes, indéfiniment.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "IntervalExec(600000, func() { Print(\"toutes les dix minutes\") })"
      ]
    },
    {
      "name": "IsActive",
      "signature": "IsActive()",
      "returns": 1,
      "category": "Workers",
      "section": "Ce que le robot fait de ce compte",
      "summary": "Le redémarrera-t-il au prochain lancement.",
      "anchor": "workers--ce-que-le-robot-fait-de-ce-compte",
      "url": "https://keplerbot.net/scripts/workers#workers--ce-que-le-robot-fait-de-ce-compte",
      "examples": []
    },
    {
      "name": "IsAllianceIgnored",
      "signature": "IsAllianceIgnored(tag)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": []
    },
    {
      "name": "IsBotPaused",
      "signature": "IsBotPaused()",
      "returns": 1,
      "category": "Workers",
      "section": "L'arrêt d'urgence",
      "summary": "Dit où l'on en est.",
      "anchor": "workers--larrêt-durgence",
      "url": "https://keplerbot.net/scripts/workers#workers--larrêt-durgence",
      "examples": []
    },
    {
      "name": "IsCollector",
      "signature": "IsCollector()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Raccourci sur la classe.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": [
        "if IsCollector() {\n    Print(\"charge majorée, vitesse de transporteur majorée\")\n}"
      ]
    },
    {
      "name": "IsDiscoverer",
      "signature": "IsDiscoverer()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "IsFarmSessionOngoing",
      "signature": "IsFarmSessionOngoing()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "Une campagne travaille-t-elle en ce moment.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": [
        "if IsFarmSessionOngoing() {\n    PauseFarmingBot()          // on rend les slots au Defender\n    SleepMin(30)\n    ResumeFarmingBot()         // et on repart là où on s'était arrêté\n}"
      ]
    },
    {
      "name": "IsGeneral",
      "signature": "IsGeneral()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le même.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "IsLoggedIn",
      "signature": "IsLoggedIn()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir où l'on est",
      "summary": "Dit si la session est ouverte.",
      "anchor": "celestes--savoir-où-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-où-lon-est",
      "examples": []
    },
    {
      "name": "IsPaused",
      "signature": "IsPaused()",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Gouverner son propre script",
      "summary": "Dit si le joueur a mis le script en pause.",
      "anchor": "base--gouverner-son-propre-script",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--gouverner-son-propre-script",
      "examples": [
        "if IsPaused() { SleepSec(30); continue }"
      ]
    },
    {
      "name": "IsPausedFarmingBot",
      "signature": "IsPausedFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "Une campagne est-elle en pause.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": []
    },
    {
      "name": "IsPausedScript",
      "signature": "IsPausedScript(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Celui-là est-il en pause.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": [
        "if IsPausedScript(GARDE) {\n        ResumeScript(GARDE)\n    }"
      ]
    },
    {
      "name": "IsPioneers",
      "signature": "IsPioneers()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le compte passe-t-il par le lobby « pioneers ».",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": []
    },
    {
      "name": "IsPlanetIgnored",
      "signature": "IsPlanetIgnored(coord)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": []
    },
    {
      "name": "IsPlayerIgnored",
      "signature": "IsPlayerIgnored(joueur)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Dit s'il est dans la liste.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": [
        "if IsPlayerIgnored(\"Xylo\") {\n    Print(\"il est tranquille\")\n}"
      ]
    },
    {
      "name": "IsRunningBrainBot",
      "signature": "IsRunningBrainBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "Vrai si le Brain est allumé.",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "Print(IsRunningBrainBot(), IsRunningExpeditionsBot(), IsRunningColonizerBot())"
      ]
    },
    {
      "name": "IsRunningColonizerBot",
      "signature": "IsRunningColonizerBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "Print(IsRunningBrainBot(), IsRunningExpeditionsBot(), IsRunningColonizerBot())"
      ]
    },
    {
      "name": "IsRunningDefenderBot",
      "signature": "IsRunningDefenderBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "Print(IsRunningDiscoveryBot(), IsRunningDefenderBot())"
      ]
    },
    {
      "name": "IsRunningDiscoveryBot",
      "signature": "IsRunningDiscoveryBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "Print(IsRunningDiscoveryBot(), IsRunningDefenderBot())"
      ]
    },
    {
      "name": "IsRunningExpeditionsBot",
      "signature": "IsRunningExpeditionsBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "Print(IsRunningBrainBot(), IsRunningExpeditionsBot(), IsRunningColonizerBot())"
      ]
    },
    {
      "name": "IsRunningFarmingBot",
      "signature": "IsRunningFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Demander lequel tourne",
      "summary": "Vrai si le pillage est allumé.",
      "anchor": "workers--demander-lequel-tourne",
      "url": "https://keplerbot.net/scripts/workers#workers--demander-lequel-tourne",
      "examples": [
        "if IsRunningFarmingBot() {\n  Print(\"le pillage tourne\")\n}"
      ]
    },
    {
      "name": "IsScriptRunning",
      "signature": "IsScriptRunning(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Celui-là tourne-t-il.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": [
        "if IsScriptRunning(GARDE) {\n        LogInfo(\"la garde tourne déjà\")\n        return\n    }"
      ]
    },
    {
      "name": "IsStarted",
      "signature": "IsStarted()",
      "returns": 1,
      "category": "Workers",
      "section": "Ce que le robot fait de ce compte",
      "summary": "Le robot tourne-t-il pour ce compte.",
      "anchor": "workers--ce-que-le-robot-fait-de-ce-compte",
      "url": "https://keplerbot.net/scripts/workers#workers--ce-que-le-robot-fait-de-ce-compte",
      "examples": []
    },
    {
      "name": "IsUnderAttack",
      "signature": "IsUnderAttack()",
      "returns": 1,
      "category": "Flottes",
      "section": "Ce qui vole, et ce qui arrive",
      "summary": "Vrai s'il y en a au moins une.",
      "anchor": "flottes--ce-qui-vole-et-ce-qui-arrive",
      "url": "https://keplerbot.net/scripts/flottes#flottes--ce-qui-vole-et-ce-qui-arrive",
      "examples": []
    },
    {
      "name": "IsVacationModeEnabled",
      "signature": "IsVacationModeEnabled()",
      "returns": 1,
      "category": "Célestes",
      "section": "Savoir qui l'on est",
      "summary": "Le compte est-il en mode vacances.",
      "anchor": "celestes--savoir-qui-lon-est",
      "url": "https://keplerbot.net/scripts/celestes#celestes--savoir-qui-lon-est",
      "examples": [
        "if IsVacationModeEnabled() {\n    LogWarn(\"mode vacances : rien ne partira, ce n'est pas une panne du script\")\n    return\n}"
      ]
    },
    {
      "name": "IsWorkerRunning",
      "signature": "IsWorkerRunning(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "La forme générale",
      "summary": "Dit s'il est allumé.",
      "anchor": "workers--la-forme-générale",
      "url": "https://keplerbot.net/scripts/workers#workers--la-forme-générale",
      "examples": [
        "Print(nom, IsWorkerRunning(nom))"
      ]
    },
    {
      "name": "Itoa",
      "signature": "Itoa(n)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Convertir un nombre et une chaîne",
      "summary": "Écrit un entier en texte.",
      "anchor": "outils--convertir-un-nombre-et-une-chaîne",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--convertir-un-nombre-et-une-chaîne",
      "examples": [
        "Print(Itoa(Pow(10, 7)))      // ✓ 10000000 : passez par Itoa pour afficher",
        "Itoa(2.7)          // \"2\"",
        "Itoa(-2.7)         // \"-2\", la troncature va vers zéro des deux côtés"
      ]
    },
    {
      "name": "JsonDecode",
      "signature": "JsonDecode(données)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Lire du JSON",
      "summary": "Décode du JSON.",
      "anchor": "outils--lire-du-json",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--lire-du-json",
      "examples": [
        "o, err = JsonDecode(corps)            // ← DEUX cibles, encore",
        "o, err = JsonDecode(corps)",
        "o, err = JsonDecode(\"{\\\"a\\\": 1}\") // ✓ passez par du texte"
      ]
    },
    {
      "name": "JsonEncode",
      "signature": "JsonEncode(valeur)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Écrire du JSON",
      "summary": "Écrit du JSON.",
      "anchor": "outils--écrire-du-json",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--écrire-du-json",
      "examples": [
        "texte, err = JsonEncode(charge)       // ← DEUX cibles",
        "charge, err = JsonEncode({\"celeste\": 33628068})"
      ]
    },
    {
      "name": "JsonEncodeIndent",
      "signature": "JsonEncodeIndent(valeur, retrait)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Écrire du JSON",
      "summary": "Le même, mis en forme.",
      "anchor": "outils--écrire-du-json",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--écrire-du-json",
      "examples": []
    },
    {
      "name": "JumpGate",
      "signature": "JumpGate(origine, destination, vaisseaux)",
      "returns": 1,
      "category": "Flottes",
      "section": "La porte de saut",
      "summary": "Saute des vaisseaux d'une lune à l'autre.",
      "anchor": "flottes--la-porte-de-saut",
      "url": "https://keplerbot.net/scripts/flottes#flottes--la-porte-de-saut",
      "examples": [
        "err = JumpGate(lune.GetID(), destinations[0], vaisseaux)"
      ]
    },
    {
      "name": "JumpGate2",
      "signature": "JumpGate2(origine, destination, vaisseaux)",
      "returns": 3,
      "category": "Flottes",
      "section": "La porte de saut",
      "summary": "Le même saut, avec le délai en nombre.",
      "anchor": "flottes--la-porte-de-saut",
      "url": "https://keplerbot.net/scripts/flottes#flottes--la-porte-de-saut",
      "examples": [
        "parti, recharge, err = JumpGate2(lune.GetID(), destinations[0], vaisseaux)"
      ]
    },
    {
      "name": "JumpGateDestinations",
      "signature": "JumpGateDestinations(origine)",
      "returns": 3,
      "category": "Flottes",
      "section": "La porte de saut",
      "summary": "Ce qui est joignable, et dans combien de temps.",
      "anchor": "flottes--la-porte-de-saut",
      "url": "https://keplerbot.net/scripts/flottes#flottes--la-porte-de-saut",
      "examples": [
        "destinations, recharge, err = JumpGateDestinations(lune.GetID())"
      ]
    },
    {
      "name": "ListWorkers",
      "signature": "ListWorkers()",
      "returns": 1,
      "category": "Workers",
      "section": "La forme générale",
      "summary": "Les noms acceptés, en anglais.",
      "anchor": "workers--la-forme-générale",
      "url": "https://keplerbot.net/scripts/workers#workers--la-forme-générale",
      "examples": [
        "for nom in ListWorkers() {\n  Print(nom, IsWorkerRunning(nom))\n}"
      ]
    },
    {
      "name": "LogDebug",
      "signature": "LogDebug(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Le détail qui n'intéresse que vous, un jour de mise au point.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": []
    },
    {
      "name": "LogDebugf",
      "signature": "LogDebugf(format, ...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Le détail qui n'intéresse que vous, un jour de mise au point.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": []
    },
    {
      "name": "LogError",
      "signature": "LogError(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Ce qui a échoué.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": [
        "if err != nil { LogError(\"relevé impossible :\", err) }",
        "if err != nil { LogError(err) }",
        "if err != nil { LogError(\"Discord :\", err) }"
      ]
    },
    {
      "name": "LogErrorf",
      "signature": "LogErrorf(format, ...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Ce qui a échoué.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": []
    },
    {
      "name": "Login",
      "signature": "Login()",
      "returns": 1,
      "category": "Workers",
      "section": "L'arrêt d'urgence",
      "summary": "Alias de ResumeBot.",
      "anchor": "workers--larrêt-durgence",
      "url": "https://keplerbot.net/scripts/workers#workers--larrêt-durgence",
      "examples": []
    },
    {
      "name": "LogInfo",
      "signature": "LogInfo(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Le déroulé normal : « campagne lancée », « douze cibles retenues ».",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": [
        "LogInfo(m.SenderName, \"écrit :\", m.Text)",
        "LogInfo(\"porte occupée, on repasse dans\", ShortDur(recharge * 1000000000))",
        "LogInfo(\"c'est l'heure de partir\")"
      ]
    },
    {
      "name": "LogInfof",
      "signature": "LogInfof(format, ...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Le déroulé normal : « campagne lancée », « douze cibles retenues ».",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": [
        "LogInfof(\"%d cibles retenues sur %d\", gardees, vues)",
        "LogInfof(\"%s : %s\", planete.Coordinate, ShortShipsInfos(ships))"
      ]
    },
    {
      "name": "LogOut",
      "signature": "LogOut()",
      "returns": 1,
      "category": "Workers",
      "section": "L'arrêt d'urgence",
      "summary": "Alias de PauseBot, pour les scripts venus de Ninja.",
      "anchor": "workers--larrêt-durgence",
      "url": "https://keplerbot.net/scripts/workers#workers--larrêt-durgence",
      "examples": []
    },
    {
      "name": "LogWarn",
      "signature": "LogWarn(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Ce qui mérite un œil sans être grave : une cible perdue, une page illisible.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": [
        "LogWarn(\"attaque de\", a.AttackerName, \"sur\", a.DestinationName)",
        "LogWarn(\"mode vacances : rien ne partira, ce n'est pas une panne du script\")",
        "LogWarn(\"vacances refusées : \" + err.Error())"
      ]
    },
    {
      "name": "LogWarnf",
      "signature": "LogWarnf(format, ...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Journaliser par niveau",
      "summary": "Ce qui mérite un œil sans être grave : une cible perdue, une page illisible.",
      "anchor": "base--journaliser-par-niveau",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--journaliser-par-niveau",
      "examples": []
    },
    {
      "name": "LowestSpeed",
      "signature": "LowestSpeed(arrivée, origine, destination, flotte)",
      "returns": 4,
      "category": "Flottes",
      "section": "Le vol à l'envers : partir de l'heure d'arrivée",
      "summary": "L'allure la moins chère qui parte encore.",
      "anchor": "flottes--le-vol-à-lenvers-partir-de-lheure-darrivée",
      "url": "https://keplerbot.net/scripts/flottes#flottes--le-vol-à-lenvers-partir-de-lheure-darrivée",
      "examples": [
        "allure, deut, depart, err = LowestSpeed(\"08:00:00\", \"1:64:8\", \"1:64:12\", flotte)",
        "allure, deut, quand, err = LowestSpeed(RETOUR, DEPART, ABRI, flotte)"
      ]
    },
    {
      "name": "MapKeys",
      "signature": "MapKeys(tableau)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Parcourir un tableau",
      "summary": "Triées.",
      "anchor": "outils--parcourir-un-tableau",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--parcourir-un-tableau",
      "examples": [
        "Print(MapKeys(cache)[i], MapValues(cache)[i])",
        "for i = 0; i < len(MapKeys(cache)); i++ {\n    Print(MapKeys(cache)[i], MapValues(cache)[i])\n}"
      ]
    },
    {
      "name": "MapValues",
      "signature": "MapValues(tableau)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Parcourir un tableau",
      "summary": "Dans l'ordre des clés.",
      "anchor": "outils--parcourir-un-tableau",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--parcourir-un-tableau",
      "examples": [
        "Print(MapKeys(cache)[i], MapValues(cache)[i])"
      ]
    },
    {
      "name": "Max",
      "signature": "Max(x, y)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "Le plus grand des deux.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": []
    },
    {
      "name": "MillisecondsBetweenTimeStrings",
      "signature": "MillisecondsBetweenTimeStrings(a, b)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "Le même, en millisecondes.",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": []
    },
    {
      "name": "Min",
      "signature": "Min(x, y)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "Le plus petit des deux.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": [
        "Printf(\"%.0f\", Min(3, 5))    // ✓ 3"
      ]
    },
    {
      "name": "NewCoordinate",
      "signature": "NewCoordinate(galaxie, système, position, type)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Construire une valeur à passer",
      "summary": "Le type est PLANET_TYPE, MOON_TYPE ou DEBRIS_TYPE.",
      "anchor": "outils--construire-une-valeur-à-passer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--construire-une-valeur-à-passer",
      "examples": []
    },
    {
      "name": "NewFarmSession",
      "signature": "NewFarmSession()",
      "returns": 1,
      "category": "Workers",
      "section": "Composer une campagne de pillage",
      "summary": "À enchaîner, puis BuildFarmSession().",
      "anchor": "workers--composer-une-campagne-de-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--composer-une-campagne-de-pillage",
      "examples": [
        "f = NewFarmSession()"
      ]
    },
    {
      "name": "NewFleet",
      "signature": "NewFleet()",
      "returns": 1,
      "category": "Flottes",
      "section": "Et pour envoyer, vraiment",
      "summary": "À enchaîner. nil sans session ouverte.",
      "anchor": "flottes--et-pour-envoyer-vraiment",
      "url": "https://keplerbot.net/scripts/flottes#flottes--et-pour-envoyer-vraiment",
      "examples": [
        "f = NewFleet()"
      ]
    },
    {
      "name": "NewResources",
      "signature": "NewResources(metal, cristal, deut)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Construire une valeur à passer",
      "summary": "Les trois quantités d'un coup.",
      "anchor": "outils--construire-une-valeur-à-passer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--construire-une-valeur-à-passer",
      "examples": [
        "res = NewResources(10000, 20000, 30000)"
      ]
    },
    {
      "name": "NewResourceSettings",
      "signature": "NewResourceSettings(métal, cristal, deutérium, solaire, fusion, satellite, foreuse)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les curseurs de production, et le prix sur place",
      "summary": "Compose les sept curseurs.",
      "anchor": "celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "examples": [
        "apres = NewResourceSettings(avant.MetalMine, avant.CrystalMine, 100,\n    avant.SolarPlant, avant.FusionReactor, avant.SolarSatellite, avant.Crawler)"
      ]
    },
    {
      "name": "NewShipsInfos",
      "signature": "NewShipsInfos()",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Construire une valeur à passer",
      "summary": "À remplir avec .Set(id, nombre), puis à passer à FlightTime, Speed ou Cargo.",
      "anchor": "outils--construire-une-valeur-à-passer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--construire-une-valeur-à-passer",
      "examples": [
        "flotte = NewShipsInfos()",
        "f = NewShipsInfos()",
        "vaisseaux = NewShipsInfos()"
      ]
    },
    {
      "name": "NewTemperature",
      "signature": "NewTemperature(min, max)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "Les deux bornes, comme le jeu les affiche.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": [
        "temp = NewTemperature(-12, 40)"
      ]
    },
    {
      "name": "Notify",
      "signature": "Notify(titre, message)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Prévenir",
      "summary": "Écrit au journal du compte, au niveau Warn.",
      "anchor": "base--prévenir",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--prévenir",
      "examples": []
    },
    {
      "name": "Now",
      "signature": "Now()",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "L'instant présent.",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": [
        "if fin != nil && fin.Sub(Now()).Minutes() < 10 {\n    LogInfo(\"le compte s'endort bientôt, on ne lance pas la campagne\")\n    return\n}"
      ]
    },
    {
      "name": "NowInTimeRange",
      "signature": "NowInTimeRange(début, fin)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "Dit si l'heure courante est dans la plage.",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": [
        "if NowInTimeRange(\"23:00:00\", \"07:00:00\") {\n    Print(\"c'est la nuit\")           // la plage passe minuit, c'est prévu\n}"
      ]
    },
    {
      "name": "NowTimeString",
      "signature": "NowTimeString()",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "L'heure courante, 15:04:05.",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": []
    },
    {
      "name": "PageContent",
      "signature": "PageContent(requête)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Lire une page du jeu telle quelle",
      "summary": "Une page du jeu, par la session du compte.",
      "anchor": "galaxie--lire-une-page-du-jeu-telle-quelle",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--lire-une-page-du-jeu-telle-quelle",
      "examples": [
        "html, err = PageContent(\"page=ingame&component=overview\")"
      ]
    },
    {
      "name": "ParseCoord",
      "signature": "ParseCoord(chaîne)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Construire une valeur à passer",
      "summary": "Lit \"1:2:3\" ou \"M:1:2:3\".",
      "anchor": "outils--construire-une-valeur-à-passer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--construire-une-valeur-à-passer",
      "examples": [
        "coord, err = ParseCoord(\"M:1:2:3\")     // DEUX cibles"
      ]
    },
    {
      "name": "ParseNextDatetimeAt",
      "signature": "ParseNextDatetimeAt(s)",
      "returns": 2,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "La même, depuis \"03:30:00\".",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": []
    },
    {
      "name": "PauseBot",
      "signature": "PauseBot()",
      "returns": 1,
      "category": "Workers",
      "section": "L'arrêt d'urgence",
      "summary": "Coupe toute communication avec le jeu.",
      "anchor": "workers--larrêt-durgence",
      "url": "https://keplerbot.net/scripts/workers#workers--larrêt-durgence",
      "examples": [
        "PauseBot()"
      ]
    },
    {
      "name": "PauseFarmingBot",
      "signature": "PauseFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "Suspend la campagne en cours.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": [
        "PauseFarmingBot()          // on rend les slots au Defender"
      ]
    },
    {
      "name": "PauseHunterTarget",
      "signature": "PauseHunterTarget(joueur, suspendu)",
      "returns": 1,
      "category": "Workers",
      "section": "Composer une liste de surveillance",
      "summary": "Le suspend sans perdre son historique.",
      "anchor": "workers--composer-une-liste-de-surveillance",
      "url": "https://keplerbot.net/scripts/workers#workers--composer-une-liste-de-surveillance",
      "examples": []
    },
    {
      "name": "PauseScript",
      "signature": "PauseScript(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Le suspend.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": []
    },
    {
      "name": "Phalanx",
      "signature": "Phalanx(lune, cible)",
      "returns": 2,
      "category": "Flottes",
      "section": "La phalange",
      "summary": "Relève ce qui vole autour d'une position.",
      "anchor": "flottes--la-phalange",
      "url": "https://keplerbot.net/scripts/flottes#flottes--la-phalange",
      "examples": [
        "vols, err = Phalanx(lune.GetID(), \"1:2:8\")",
        "vols, err = Phalanx(lune.GetID(), p.Coordinate)"
      ]
    },
    {
      "name": "PlayerDataByID",
      "signature": "PlayerDataByID(id)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les joueurs",
      "summary": "Erreur franche si l'identifiant est inconnu.",
      "anchor": "galaxie--les-joueurs",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-joueurs",
      "examples": [
        "p, err = PlayerDataByID(id)"
      ]
    },
    {
      "name": "PlayerDataByName",
      "signature": "PlayerDataByName(pseudo)",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les joueurs",
      "summary": "Pseudo entier, la casse est ignorée.",
      "anchor": "galaxie--les-joueurs",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-joueurs",
      "examples": [
        "cible, err = PlayerDataByName(\"Xylo\")"
      ]
    },
    {
      "name": "PlayersData",
      "signature": "PlayersData()",
      "returns": 2,
      "category": "Galaxie",
      "section": "Les joueurs",
      "summary": "Tous les joueurs de l'univers.",
      "anchor": "galaxie--les-joueurs",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--les-joueurs",
      "examples": [
        "joueurs, err = PlayersData()          // DEUX cibles",
        "joueurs, err = PlayersData()"
      ]
    },
    {
      "name": "Pow",
      "signature": "Pow(x, y)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "x à la puissance y.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": [
        "Print(Itoa(Pow(10, 7)))      // ✓ 10000000 : passez par Itoa pour afficher"
      ]
    },
    {
      "name": "print",
      "signature": "print(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Écrire dans la console",
      "summary": "Le même, sous son autre nom.",
      "anchor": "base--écrire-dans-la-console",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--écrire-dans-la-console",
      "examples": []
    },
    {
      "name": "Print",
      "signature": "Print(...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Écrire dans la console",
      "summary": "Écrit une ligne. Les arguments sont collés avec un espace.",
      "anchor": "base--écrire-dans-la-console",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--écrire-dans-la-console",
      "examples": [
        "Print(\"cible\", coord, \"butin\", butin)      // cible [P:1:64:6] butin 75",
        "Print(cle)",
        "Print(\"passe \" + i)"
      ]
    },
    {
      "name": "Printf",
      "signature": "Printf(format, ...)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Écrire dans la console",
      "summary": "Écrit une ligne formatée, à la façon de fmt.Printf.",
      "anchor": "base--écrire-dans-la-console",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--écrire-dans-la-console",
      "examples": [
        "Printf(\"%d planetes, %d lunes\", np, nl)",
        "Printf(\"%s s%d-%s\", GetUniverseName(), GetServerNumber(), GetLang())",
        "Printf(\"%v, %.1f h de vol, %d deutérium\", dest, secs / 3600, deut)"
      ]
    },
    {
      "name": "Put",
      "signature": "Put(clé, valeur)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Se souvenir entre deux passes",
      "summary": "Range une valeur.",
      "anchor": "base--se-souvenir-entre-deux-passes",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--se-souvenir-entre-deux-passes",
      "examples": [
        "Put(\"dernier.systeme\", 128)"
      ]
    },
    {
      "name": "PutShared",
      "signature": "PutShared(clé, valeur)",
      "returns": 1,
      "since": "1.82.374",
      "category": "Sortie et stockage",
      "section": "Partager entre robots",
      "summary": "Range une valeur, lisible par tous les robots.",
      "anchor": "base--partager-entre-robots",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--partager-entre-robots",
      "examples": [
        "PutShared(\"fs.cible\", \"4:120:8\")"
      ]
    },
    {
      "name": "Random",
      "signature": "Random(min, max)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "Un entier tiré au hasard, bornes comprises.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": []
    },
    {
      "name": "RangeCronExec",
      "signature": "RangeCronExec(début, fin, libellé, f)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Appelle f une fois par jour, à une heure tirée au hasard dans le créneau.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "id, err = RangeCronExec(\"03:00:00\", \"03:45:00\", \"rentrée de nuit\", func() {\n    Print(\"la flotte rentre\")\n})"
      ]
    },
    {
      "name": "RecruitOfficer",
      "signature": "RecruitOfficer(officier, jours)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Engage un officier. 2 commandant, 3 amiral, 4 ingénieur, 5 géologue, 6 technocrate ; 7 ou 90 jours.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "Print(RecruitOfficer(5, 7)) // un géologue pour sept jours"
      ]
    },
    {
      "name": "RemoveCron",
      "signature": "RemoveCron(numéro)",
      "returns": 1,
      "category": "Ordonnancement",
      "section": "Les dix",
      "summary": "Retire une tâche posée par les deux précédentes.",
      "anchor": "ordo--les-dix",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--les-dix",
      "examples": [
        "if RemoveCron(id) {\n    Print(\"décrochée\")\n} else {\n    Print(\"ce numéro ne désigne plus rien\")\n}"
      ]
    },
    {
      "name": "RemoveFromFarmBlacklist",
      "signature": "RemoveFromFarmBlacklist(cible)",
      "returns": 1,
      "since": "1.82.309",
      "category": "Workers",
      "section": "La liste noire du Pillage",
      "summary": "Retirer ce qui n'y est pas n'est pas une erreur ; un nom que rien ne connaît en est une.",
      "anchor": "workers--la-liste-noire-du-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--la-liste-noire-du-pillage",
      "examples": [
        "RemoveFromFarmBlacklist(e.Key)   // ne rendre que les entrées d'office"
      ]
    },
    {
      "name": "RemoveHunterTarget",
      "signature": "RemoveHunterTarget(joueur)",
      "returns": 1,
      "category": "Workers",
      "section": "Composer une liste de surveillance",
      "summary": "Le retire, avec son historique.",
      "anchor": "workers--composer-une-liste-de-surveillance",
      "url": "https://keplerbot.net/scripts/workers#workers--composer-une-liste-de-surveillance",
      "examples": []
    },
    {
      "name": "RepatriateNow",
      "signature": "RepatriateNow()",
      "returns": 1,
      "category": "Workers",
      "section": "Rapatrier tout de suite",
      "summary": "Lance une passe de rapatriement sans attendre.",
      "anchor": "workers--rapatrier-tout-de-suite",
      "url": "https://keplerbot.net/scripts/workers#workers--rapatrier-tout-de-suite",
      "examples": [
        "RepatriateNow()",
        "err = RepatriateNow()"
      ]
    },
    {
      "name": "RepatriateSetAllDestinations",
      "signature": "RepatriateSetAllDestinations(céleste)",
      "returns": 1,
      "category": "Workers",
      "section": "Rassembler tout au même endroit",
      "summary": "Ce céleste reçoit, tous les autres l'alimentent.",
      "anchor": "workers--rassembler-tout-au-même-endroit",
      "url": "https://keplerbot.net/scripts/workers#workers--rassembler-tout-au-même-endroit",
      "examples": [
        "RepatriateSetAllDestinations(\"1:64:8\")",
        "err = RepatriateSetAllDestinations(BASE)"
      ]
    },
    {
      "name": "ResumeBot",
      "signature": "ResumeBot()",
      "returns": 1,
      "category": "Workers",
      "section": "L'arrêt d'urgence",
      "summary": "La rend.",
      "anchor": "workers--larrêt-durgence",
      "url": "https://keplerbot.net/scripts/workers#workers--larrêt-durgence",
      "examples": [
        "ResumeBot()"
      ]
    },
    {
      "name": "ResumeFarmingBot",
      "signature": "ResumeFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Savoir ce que fait le Pillage",
      "summary": "La reprend où elle s'est arrêtée.",
      "anchor": "workers--savoir-ce-que-fait-le-pillage",
      "url": "https://keplerbot.net/scripts/workers#workers--savoir-ce-que-fait-le-pillage",
      "examples": [
        "ResumeFarmingBot()         // et on repart là où on s'était arrêté"
      ]
    },
    {
      "name": "ResumeScript",
      "signature": "ResumeScript(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Le reprend là où il en était.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": [
        "ResumeScript(GARDE)"
      ]
    },
    {
      "name": "Round",
      "signature": "Round(x)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "L'entier le plus proche.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": [
        "Itoa(Round(2.7))   // \"3\""
      ]
    },
    {
      "name": "SelectLfResearchArtifacts",
      "signature": "SelectLfResearchArtifacts(planète, emplacement, techno)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "L'échange contre des artefacts.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "SelectLfResearchRandom",
      "signature": "SelectLfResearchRandom(planète, emplacement)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "En retire une autre au sort.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "SelectLfResearchSelect",
      "signature": "SelectLfResearchSelect(planète, emplacement)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les chapitres, et le choix d'une recherche de forme de vie",
      "summary": "Valide la recherche proposée.",
      "anchor": "celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-chapitres-et-le-choix-dune-recherche-de-forme-de-vie",
      "examples": []
    },
    {
      "name": "SendDiscord",
      "signature": "SendDiscord(webhook, message)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Prévenir dehors",
      "summary": "Publie sur un webhook Discord.",
      "anchor": "base--prévenir-dehors",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--prévenir-dehors",
      "examples": [
        "err = SendDiscord(\"https://discord.com/api/webhooks/…\", \"débris à \" + coord)",
        "SendDiscord(DISCORD_WEBHOOK, \"débris à \" + coord)",
        "SendDiscord(MON_WEBHOOK, FILE + \" : débris à \" + coord)"
      ]
    },
    {
      "name": "SendDiscordFile",
      "signature": "SendDiscordFile(webhook, nom, contenu)",
      "returns": 1,
      "since": "1.82.240",
      "category": "Sortie et stockage",
      "section": "Prévenir dehors",
      "summary": "Publie un fichier texte en pièce jointe.",
      "anchor": "base--prévenir-dehors",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--prévenir-dehors",
      "examples": [
        "err = SendDiscordFile(DISCORD_WEBHOOK, \"inactifs.csv\", lignes)"
      ]
    },
    {
      "name": "SendDiscoveryFleet",
      "signature": "SendDiscoveryFleet(origine, destination)",
      "returns": 1,
      "category": "Flottes",
      "section": "L'expédition de forme de vie, position par position",
      "summary": "Une expédition sur UNE position.",
      "anchor": "flottes--lexpédition-de-forme-de-vie-position-par-position",
      "url": "https://keplerbot.net/scripts/flottes#flottes--lexpédition-de-forme-de-vie-position-par-position",
      "examples": [
        "err = SendDiscoveryFleet(\"1:64:8\", \"1:64:12\")",
        "Print(SendDiscoveryFleet(origine, el))   // <nil> : parti"
      ]
    },
    {
      "name": "SendIPM",
      "signature": "SendIPM(planète, cible, nombre, défense)",
      "returns": 2,
      "category": "Boîte à outils",
      "section": "Objets, matière noire, enchère et missiles",
      "summary": "Lance des missiles.",
      "anchor": "outils--objets-matière-noire-enchère-et-missiles",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--objets-matière-noire-enchère-et-missiles",
      "examples": [
        "partis, err = SendIPM(c.GetID(), \"1:1:1\", 10, 0)"
      ]
    },
    {
      "name": "SendMessage",
      "signature": "SendMessage(playerID, message)",
      "returns": 1,
      "category": "Galaxie",
      "section": "Écrire à un joueur",
      "summary": "Un message privé, par le chat du jeu.",
      "anchor": "galaxie--écrire-à-un-joueur",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--écrire-à-un-joueur",
      "examples": [
        "err = SendMessage(cible.ID, \"Bonjour, je viens en paix.\")",
        "SendMessage(m.SenderID, \"je suis occupé, écris plus tard\")",
        "SendMessage(m.SenderID, \"gg à toi\")"
      ]
    },
    {
      "name": "SendTelegram",
      "signature": "SendTelegram(chatID, message)",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Prévenir dehors",
      "summary": "Écrit dans une conversation Telegram.",
      "anchor": "base--prévenir-dehors",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--prévenir-dehors",
      "examples": [
        "SendTelegram(0, \"débris à \" + coord)     // 0 : la conversation des réglages",
        "SendTelegram(0, \"URGENT : \" + texte)"
      ]
    },
    {
      "name": "ServerURL",
      "signature": "ServerURL()",
      "returns": 2,
      "category": "Galaxie",
      "section": "Le compte",
      "summary": "L'adresse de votre serveur, sans barre finale. Un ajout de Kepler.",
      "anchor": "galaxie--le-compte",
      "url": "https://keplerbot.net/scripts/galaxie#galaxie--le-compte",
      "examples": [
        "adresse, err = ServerURL()       // DEUX cibles"
      ]
    },
    {
      "name": "SetDefenderCheckInterval",
      "signature": "SetDefenderCheckInterval(min, max)",
      "returns": 1,
      "category": "Workers",
      "section": "La veille, et la cadence du Defender",
      "summary": "La cadence de la ronde, en secondes.",
      "anchor": "workers--la-veille-et-la-cadence-du-defender",
      "url": "https://keplerbot.net/scripts/workers#workers--la-veille-et-la-cadence-du-defender",
      "examples": []
    },
    {
      "name": "SetExpeditionsStrategy",
      "signature": "SetExpeditionsStrategy(nom)",
      "returns": 1,
      "since": "",
      "category": "Workers",
      "section": "La stratégie des expéditions",
      "summary": "La change, réglage enregistré.",
      "anchor": "workers--la-stratégie-des-expéditions",
      "url": "https://keplerbot.net/scripts/workers#workers--la-stratégie-des-expéditions",
      "examples": [
        "err = SetExpeditionsStrategy(\"all\")"
      ]
    },
    {
      "name": "SetFleetSlotsReserved",
      "signature": "SetFleetSlotsReserved(n)",
      "returns": 1,
      "category": "Workers",
      "section": "La réserve d'emplacements de flotte",
      "summary": "Change ce nombre, réglage enregistré.",
      "anchor": "workers--la-réserve-demplacements-de-flotte",
      "url": "https://keplerbot.net/scripts/workers#workers--la-réserve-demplacements-de-flotte",
      "examples": []
    },
    {
      "name": "SetHomeWorld",
      "signature": "SetHomeWorld(céleste)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "Retient votre base.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": []
    },
    {
      "name": "SetResourceSettings",
      "signature": "SetResourceSettings(planète, réglages)",
      "returns": 1,
      "category": "Célestes",
      "section": "Les curseurs de production, et le prix sur place",
      "summary": "Les applique.",
      "anchor": "celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "examples": [
        "err = SetResourceSettings(c.GetID(), apres)"
      ]
    },
    {
      "name": "SetVacationMode",
      "signature": "SetVacationMode()",
      "returns": 1,
      "category": "Célestes",
      "section": "Mettre le compte en vacances",
      "summary": "Gèle le compte. Quarante-huit heures au minimum.",
      "anchor": "celestes--mettre-le-compte-en-vacances",
      "url": "https://keplerbot.net/scripts/celestes#celestes--mettre-le-compte-en-vacances",
      "examples": [
        "err = SetVacationMode()"
      ]
    },
    {
      "name": "SharedKeys",
      "signature": "SharedKeys()",
      "returns": 1,
      "since": "1.82.374",
      "category": "Sortie et stockage",
      "section": "Partager entre robots",
      "summary": "Toutes les clés partagées.",
      "anchor": "base--partager-entre-robots",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--partager-entre-robots",
      "examples": [
        "for cle in SharedKeys() {\n    Print(cle)\n}"
      ]
    },
    {
      "name": "ShieldPower",
      "signature": "ShieldPower(id, recherches)",
      "returns": 1,
      "category": "Flottes",
      "section": "Puissance de combat",
      "summary": "Bouclier, plus 10 % par niveau de bouclier.",
      "anchor": "flottes--puissance-de-combat",
      "url": "https://keplerbot.net/scripts/flottes#flottes--puissance-de-combat",
      "examples": []
    },
    {
      "name": "ShipCargo",
      "signature": "ShipCargo(id)",
      "returns": 1,
      "category": "Flottes",
      "section": "Un vaisseau à l'unité",
      "summary": "Sa soute.",
      "anchor": "flottes--un-vaisseau-à-lunité",
      "url": "https://keplerbot.net/scripts/flottes#flottes--un-vaisseau-à-lunité",
      "examples": [
        "Print(ShipCargo(LARGECARGO))     // 25000 de base, davantage avec l'hyperespace"
      ]
    },
    {
      "name": "ShipFuel",
      "signature": "ShipFuel(id)",
      "returns": 1,
      "category": "Flottes",
      "section": "Un vaisseau à l'unité",
      "summary": "Sa consommation de référence, celle qui entre dans le calcul du carburant. Jamais moins de 1.",
      "anchor": "flottes--un-vaisseau-à-lunité",
      "url": "https://keplerbot.net/scripts/flottes#flottes--un-vaisseau-à-lunité",
      "examples": []
    },
    {
      "name": "ShipsAttackStrength",
      "signature": "ShipsAttackStrength(flotte, recherches)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "La puissance de feu d'une flotte entière.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": []
    },
    {
      "name": "ShipsAttackStrengthUsingOwnResearches",
      "signature": "ShipsAttackStrengthUsingOwnResearches(flotte)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "La même, avec vos recherches.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": [
        "Print(\"puissance :\", ShipsAttackStrengthUsingOwnResearches(flotte))"
      ]
    },
    {
      "name": "ShipSpeed",
      "signature": "ShipSpeed(id)",
      "returns": 1,
      "category": "Flottes",
      "section": "Un vaisseau à l'unité",
      "summary": "Sa vitesse.",
      "anchor": "flottes--un-vaisseau-à-lunité",
      "url": "https://keplerbot.net/scripts/flottes#flottes--un-vaisseau-à-lunité",
      "examples": []
    },
    {
      "name": "ShortDur",
      "signature": "ShortDur(d)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Comparer et mesurer",
      "summary": "Écrit une durée lisiblement, 2h15m.",
      "anchor": "temps--comparer-et-mesurer",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--comparer-et-mesurer",
      "examples": [
        "Print(cible, ShortDur(secs), \"deut\", fuel)",
        "Print(ShortDur(secs), fuel)          // ShortDur lit des secondes",
        "Print(ShortDur(ConstructionTime(LARGECARGO, 20, inst)))"
      ]
    },
    {
      "name": "ShortShipsInfos",
      "signature": "ShortShipsInfos(flotte)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Décrire une flotte en une ligne",
      "summary": "Résume une flotte : LightFighter: 120, SmallCargo: 40.",
      "anchor": "outils--décrire-une-flotte-en-une-ligne",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--décrire-une-flotte-en-une-ligne",
      "examples": [
        "LogInfof(\"%s : %s\", planete.Coordinate, ShortShipsInfos(ships))"
      ]
    },
    {
      "name": "Shuffle",
      "signature": "Shuffle(liste)",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Quelques commodités",
      "summary": "Mélange une liste sur place.",
      "anchor": "base--quelques-commodités",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--quelques-commodités",
      "examples": [
        "Shuffle(cibles)          // l'ordre change, la liste reste la même"
      ]
    },
    {
      "name": "Sleep",
      "signature": "Sleep(n)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "Sleep(500)",
        "Sleep(60)                                 // trop vite : on réessaiera",
        "Sleep(500)                  // on n'enchaîne pas les lectures"
      ]
    },
    {
      "name": "SleepDur",
      "signature": "SleepDur(d)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepDur(90 * time.Second)"
      ]
    },
    {
      "name": "SleepMin",
      "signature": "SleepMin(n)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepMin(5)",
        "SleepMin(60)",
        "SleepMin(30)"
      ]
    },
    {
      "name": "SleepMs",
      "signature": "SleepMs(n)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": []
    },
    {
      "name": "SleepRandHour",
      "signature": "SleepRandHour(min, max)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepRandHour(1, 3)"
      ]
    },
    {
      "name": "SleepRandMin",
      "signature": "SleepRandMin(min, max)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepRandMin(3, 8)"
      ]
    },
    {
      "name": "SleepRandMs",
      "signature": "SleepRandMs(min, max)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepRandMs(200, 800)    // ✓ vous attendez de 200 à 800 millisecondes",
        "SleepRandMs(500, 1200)           // espacez, rien ne le fera pour vous",
        "SleepRandMs(400, 900)"
      ]
    },
    {
      "name": "SleepRandSec",
      "signature": "SleepRandSec(min, max)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepRandSec(20, 40)",
        "SleepRandSec(20, 40)       // préférez le hasard : un intervalle régulier se voit",
        "SleepRandSec(20, 60)"
      ]
    },
    {
      "name": "SleepSec",
      "signature": "SleepSec(n)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepSec(30)",
        "SleepSec(2)",
        "if IsPaused() { SleepSec(30); continue }"
      ]
    },
    {
      "name": "SleepUntil",
      "signature": "SleepUntil(quand)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Attendre",
      "summary": "",
      "anchor": "temps--attendre",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--attendre",
      "examples": [
        "SleepUntil(\"03:30:00\")           // la prochaine fois qu'il sera 3 h 30",
        "if err == nil { SleepUntil(quand) }        // ne l'imbriquez jamais dans SleepUntil(...)"
      ]
    },
    {
      "name": "SolarSatelliteProduction",
      "signature": "SolarSatelliteProduction(température, nombre)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Ce qui se calcule sans rien demander au jeu",
      "summary": "L'énergie produite par des satellites.",
      "anchor": "outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--ce-qui-se-calcule-sans-rien-demander-au-jeu",
      "examples": [
        "Print(\"énergie :\", SolarSatelliteProduction(temp, 123))"
      ]
    },
    {
      "name": "Speed",
      "signature": "Speed(flotte)",
      "returns": 1,
      "category": "Flottes",
      "section": "Ce qu'une flotte porte et à quelle vitesse",
      "summary": "La vitesse du vaisseau le plus lent, celle qui dicte le vol.",
      "anchor": "flottes--ce-quune-flotte-porte-et-à-quelle-vitesse",
      "url": "https://keplerbot.net/scripts/flottes#flottes--ce-quune-flotte-porte-et-à-quelle-vitesse",
      "examples": [
        "Print(Speed(f), Cargo(f))"
      ]
    },
    {
      "name": "Sqrt",
      "signature": "Sqrt(x)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Calculer",
      "summary": "La racine carrée.",
      "anchor": "outils--calculer",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--calculer",
      "examples": []
    },
    {
      "name": "StartBrain",
      "signature": "StartBrain()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le Brain. Files de construction et recherches.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartBrain()"
      ]
    },
    {
      "name": "StartColonizerBot",
      "signature": "StartColonizerBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le colonisateur.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartColonizerBot()"
      ]
    },
    {
      "name": "StartDefenderBot",
      "signature": "StartDefenderBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "La défense.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartDefenderBot()"
      ]
    },
    {
      "name": "StartDiscoveryBot",
      "signature": "StartDiscoveryBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le découvreur.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartDiscoveryBot()"
      ]
    },
    {
      "name": "StartExpeditionsBot",
      "signature": "StartExpeditionsBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Les expéditions.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartExpeditionsBot()"
      ]
    },
    {
      "name": "StartFarmingBot",
      "signature": "StartFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le pillage. StartFarmingBot() donne une campagne au Pillage s'il n'en a pas.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartFarmingBot()",
        "err = StartFarmingBot()"
      ]
    },
    {
      "name": "StartFarmSession",
      "signature": "StartFarmSession(campagne)",
      "returns": 1,
      "since": "1.82.240",
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Lance une campagne désignée, comme le ▶ de sa ligne.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartFarmSession(campagne.ID)"
      ]
    },
    {
      "name": "StartHunter",
      "signature": "StartHunter()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le chasseur. Traque des cibles.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartHunter()"
      ]
    },
    {
      "name": "StartPhalanxSession",
      "signature": "StartPhalanxSession(lune, cible, cadence)",
      "returns": 2,
      "category": "Flottes",
      "section": "Confier la surveillance au robot",
      "summary": "Règle la surveillance d'une position et l'allume.",
      "anchor": "flottes--confier-la-surveillance-au-robot",
      "url": "https://keplerbot.net/scripts/flottes#flottes--confier-la-surveillance-au-robot",
      "examples": [
        "id, err = StartPhalanxSession(lune.GetID(), \"1:2:8\", 300)   // toutes les 5 min"
      ]
    },
    {
      "name": "StartScanner",
      "signature": "StartScanner()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le scanner. Balayage des systèmes.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StartScanner()"
      ]
    },
    {
      "name": "StartScript",
      "signature": "StartScript(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "Le lance et rend la main aussitôt.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": [
        "StartScript(\"garde-de-nuit\")",
        "StartScript(\"rapport\")",
        "err = StartScript(GARDE)"
      ]
    },
    {
      "name": "StartSleepMode",
      "signature": "StartSleepMode()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "La veille. Voir l'avertissement plus bas.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": []
    },
    {
      "name": "StartWorker",
      "signature": "StartWorker(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "La forme générale",
      "summary": "Allume le worker nommé.",
      "anchor": "workers--la-forme-générale",
      "url": "https://keplerbot.net/scripts/workers#workers--la-forme-générale",
      "examples": [
        "err = StartWorker(\"timer\")",
        "err = StartWorker(\"repatriate\")"
      ]
    },
    {
      "name": "StopBrain",
      "signature": "StopBrain()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le Brain. Files de construction et recherches.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopBrain()"
      ]
    },
    {
      "name": "StopColonizerBot",
      "signature": "StopColonizerBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le colonisateur.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopColonizerBot()"
      ]
    },
    {
      "name": "StopDefenderBot",
      "signature": "StopDefenderBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "La défense.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopDefenderBot()"
      ]
    },
    {
      "name": "StopDiscoveryBot",
      "signature": "StopDiscoveryBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le découvreur.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopDiscoveryBot()"
      ]
    },
    {
      "name": "StopExpeditionsBot",
      "signature": "StopExpeditionsBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Les expéditions.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopExpeditionsBot()"
      ]
    },
    {
      "name": "StopFarmingBot",
      "signature": "StopFarmingBot()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le pillage. StartFarmingBot() donne une campagne au Pillage s'il n'en a pas.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "err = StopFarmingBot()"
      ]
    },
    {
      "name": "StopHunter",
      "signature": "StopHunter()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le chasseur. Traque des cibles.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopHunter()"
      ]
    },
    {
      "name": "StopPhalanxSession",
      "signature": "StopPhalanxSession(identifiant)",
      "returns": 1,
      "category": "Flottes",
      "section": "Confier la surveillance au robot",
      "summary": "L'éteint.",
      "anchor": "flottes--confier-la-surveillance-au-robot",
      "url": "https://keplerbot.net/scripts/flottes#flottes--confier-la-surveillance-au-robot",
      "examples": [
        "StopPhalanxSession(id)"
      ]
    },
    {
      "name": "StopScanner",
      "signature": "StopScanner()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "Le scanner. Balayage des systèmes.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": [
        "StopScanner()"
      ]
    },
    {
      "name": "StopScript",
      "signature": "StopScript(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "Un script qui en pilote d'autres",
      "summary": "L'arrête.",
      "anchor": "workers--un-script-qui-en-pilote-dautres",
      "url": "https://keplerbot.net/scripts/workers#workers--un-script-qui-en-pilote-dautres",
      "examples": [
        "StopScript(\"garde-de-nuit\")",
        "StopScript(GARDE)"
      ]
    },
    {
      "name": "StopSleepMode",
      "signature": "StopSleepMode()",
      "returns": 1,
      "category": "Workers",
      "section": "Allumer et éteindre",
      "summary": "La veille. Voir l'avertissement plus bas.",
      "anchor": "workers--allumer-et-éteindre",
      "url": "https://keplerbot.net/scripts/workers#workers--allumer-et-éteindre",
      "examples": []
    },
    {
      "name": "StopWorker",
      "signature": "StopWorker(nom)",
      "returns": 1,
      "category": "Workers",
      "section": "La forme générale",
      "summary": "L'éteint.",
      "anchor": "workers--la-forme-générale",
      "url": "https://keplerbot.net/scripts/workers#workers--la-forme-générale",
      "examples": [
        "StopWorker(\"spyer\")"
      ]
    },
    {
      "name": "StorageKeys",
      "signature": "StorageKeys()",
      "returns": 1,
      "category": "Sortie et stockage",
      "section": "Se souvenir entre deux passes",
      "summary": "Toutes les clés rangées par ce script.",
      "anchor": "base--se-souvenir-entre-deux-passes",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--se-souvenir-entre-deux-passes",
      "examples": [
        "for cle in StorageKeys() {\n    Print(cle)\n}"
      ]
    },
    {
      "name": "StructuralIntegrity",
      "signature": "StructuralIntegrity(id, recherches)",
      "returns": 1,
      "category": "Flottes",
      "section": "Puissance de combat",
      "summary": "Structure, plus 10 % par niveau de blindage.",
      "anchor": "flottes--puissance-de-combat",
      "url": "https://keplerbot.net/scripts/flottes#flottes--puissance-de-combat",
      "examples": []
    },
    {
      "name": "TearDown",
      "signature": "TearDown(céleste, bâtiment)",
      "returns": 1,
      "category": "Célestes",
      "section": "Lancer et annuler un chantier",
      "summary": "Démolit un niveau.",
      "anchor": "celestes--lancer-et-annuler-un-chantier",
      "url": "https://keplerbot.net/scripts/celestes#celestes--lancer-et-annuler-un-chantier",
      "examples": [
        "TearDown(c.GetID(), SOLARPLANT)"
      ]
    },
    {
      "name": "TechnologyConstructionTime",
      "signature": "TechnologyConstructionTime(id, niveau, laboratoire)",
      "returns": 1,
      "category": "Flottes",
      "section": "Prix et durées de construction",
      "summary": "Durée d'une recherche, niveau de laboratoire donné en clair.",
      "anchor": "flottes--prix-et-durées-de-construction",
      "url": "https://keplerbot.net/scripts/flottes#flottes--prix-et-durées-de-construction",
      "examples": [
        "Print(ShortDur(TechnologyConstructionTime(ESPIONAGETECHNOLOGY, 10, inst.ResearchLab)))"
      ]
    },
    {
      "name": "TechnologyDetails",
      "signature": "TechnologyDetails(céleste, quoi)",
      "returns": 2,
      "category": "Célestes",
      "section": "Les curseurs de production, et le prix sur place",
      "summary": "Prix, durée et niveau, sur ce céleste.",
      "anchor": "celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "url": "https://keplerbot.net/scripts/celestes#celestes--les-curseurs-de-production-et-le-prix-sur-place",
      "examples": []
    },
    {
      "name": "Terminate",
      "signature": "Terminate()",
      "returns": 0,
      "category": "Sortie et stockage",
      "section": "Gouverner son propre script",
      "summary": "Le même.",
      "anchor": "base--gouverner-son-propre-script",
      "url": "https://keplerbot.net/scripts/sortie-et-stockage#base--gouverner-son-propre-script",
      "examples": []
    },
    {
      "name": "TriggerFleetSave",
      "signature": "TriggerFleetSave()",
      "returns": 1,
      "category": "Workers",
      "section": "La veille, et la cadence du Defender",
      "summary": "Sort la flotte maintenant, avec les réglages du mode veille.",
      "anchor": "workers--la-veille-et-la-cadence-du-defender",
      "url": "https://keplerbot.net/scripts/workers#workers--la-veille-et-la-cadence-du-defender",
      "examples": [
        "err = TriggerFleetSave()"
      ]
    },
    {
      "name": "UnignoreAlliance",
      "signature": "UnignoreAlliance(tag)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": []
    },
    {
      "name": "UnignorePlanet",
      "signature": "UnignorePlanet(coord)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": []
    },
    {
      "name": "UnignorePlayer",
      "signature": "UnignorePlayer(joueur)",
      "returns": 1,
      "category": "Workers",
      "section": "Épargner des joueurs, des positions, des alliances",
      "summary": "Le retire de la liste.",
      "anchor": "workers--épargner-des-joueurs-des-positions-des-alliances",
      "url": "https://keplerbot.net/scripts/workers#workers--épargner-des-joueurs-des-positions-des-alliances",
      "examples": []
    },
    {
      "name": "Unix",
      "signature": "Unix(sec, nsec)",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "Reconstruit une date depuis un horodatage.",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": []
    },
    {
      "name": "VersionCompare",
      "signature": "VersionCompare(a, b)",
      "returns": 1,
      "category": "Boîte à outils",
      "section": "Comparer deux versions",
      "summary": "-1 si a est plus ancienne, 0 si elles sont égales, 1 si a est plus récente.",
      "anchor": "outils--comparer-deux-versions",
      "url": "https://keplerbot.net/scripts/boite-a-outils#outils--comparer-deux-versions",
      "examples": [
        "Print(VersionCompare(\"1.2\", \"1.2.0\"))     // 0 : les segments absents valent zéro",
        "if VersionCompare(VERSION, \"0.91.8\") == -1 {\n    Print(\"bot trop ancien\")\n    Exit()\n}"
      ]
    },
    {
      "name": "WaitAttack",
      "signature": "WaitAttack(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend une attaque. Le booléen dit si elle est venue.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": [
        "a, vu = WaitAttack(0)",
        "a, vu = WaitAttack(0)          // 0 : attendre sans limite"
      ]
    },
    {
      "name": "WaitAttackGone",
      "signature": "WaitAttackGone(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend qu'une attaque disparaisse.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": []
    },
    {
      "name": "WaitChatMessage",
      "signature": "WaitChatMessage(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend qu'un joueur écrive.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": [
        "m, vu = WaitChatMessage(0)"
      ]
    },
    {
      "name": "WaitFleet",
      "signature": "WaitFleet(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend qu'un worker envoie une flotte.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": [
        "f, vu = WaitFleet(0)"
      ]
    },
    {
      "name": "WaitHunterTargetActive",
      "signature": "WaitHunterTargetActive(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend qu'une cible revienne devant son écran.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": [
        "e, vu = WaitHunterTargetActive(0)"
      ]
    },
    {
      "name": "WaitHunterTargetIdle",
      "signature": "WaitHunterTargetIdle(secondes)",
      "returns": 2,
      "category": "Ordonnancement",
      "section": "Réagir à un événement",
      "summary": "Attend qu'une cible le quitte.",
      "anchor": "ordo--réagir-à-un-événement",
      "url": "https://keplerbot.net/scripts/ordonnancement#ordo--réagir-à-un-événement",
      "examples": [
        "e, vu = WaitHunterTargetIdle(0)"
      ]
    },
    {
      "name": "Weekday",
      "signature": "Weekday()",
      "returns": 1,
      "category": "Temps et attente",
      "section": "Savoir l'heure",
      "summary": "Le jour de la semaine, dimanche valant zéro.",
      "anchor": "temps--savoir-lheure",
      "url": "https://keplerbot.net/scripts/temps-et-attente#temps--savoir-lheure",
      "examples": [
        "if Weekday() == 0 { Print(\"dimanche\") }"
      ]
    }
  ]
}
