← Documentation
Fonctions intégrées
Loreline inclut une collection de fonctions natives que vous pouvez appeler depuis des expressions, de l'interpolation de texte ou comme instructions autonomes.
Nouveau sur Loreline ? Commencez par le Guide d'écriture pour apprendre les beats, les choix et la gestion de l'état. Revenez ici quand vous aurez besoin de détails sur une fonction spécifique.
Référence rapide
| Catégorie |
Fonctions |
| Math |
floor ceil round abs min max clamp pow |
| Random |
random chance seed_random random_float |
| Timing |
wait |
| Conversion de type |
float string bool |
| String |
string_upper string_lower string_contains string_replace string_split string_trim string_index string_sub string_starts string_ends string_repeat string_length |
| Text |
plural (+ syntaxe pipe) |
| Array |
array_add array_pop array_prepend array_shift array_remove array_index array_has array_sort array_reverse array_join array_pick array_shuffle array_copy array_length |
| Map |
map_keys map_has map_get map_set map_remove map_copy map_length |
| État du récit |
current_beat has_beat beat_visits |
| Introspection des choix |
choices choices_all choices_disabled |
Math
| Fonction |
Description |
floor(n) |
Arrondit un nombre vers le bas à l'entier le plus proche. floor(3.7) renvoie 3. |
ceil(n) |
Arrondit un nombre vers le haut à l'entier le plus proche. ceil(3.2) renvoie 4. |
round(n) |
Arrondit un nombre à l'entier le plus proche. round(3.5) renvoie 4. |
abs(n) |
Renvoie la valeur absolue d'un nombre. abs(-5) renvoie 5. |
min(a, b) |
Renvoie la plus petite des deux valeurs. min(3, 7) renvoie 3. |
max(a, b) |
Renvoie la plus grande des deux valeurs. max(3, 7) renvoie 7. |
clamp(valeur, bas, haut) |
Contraint une valeur à rester dans un intervalle donné. clamp(10, 0, 5) renvoie 5. |
pow(base, exp) |
Élève un nombre à une puissance. pow(2, 3) renvoie 8. |
sante = clamp(sante + soin, 0, santeMax)
degats = min(puissanceAttaque, santeEnnemi)
Random
| Fonction |
Description |
random(min, max) |
Renvoie un nombre entier aléatoire entre min et max (inclus). |
chance(n) |
Renvoie true avec une probabilité de 1 sur n. chance(3) a environ 33 % de chances d'être vrai. |
seed_random(graine) |
Définit la graine (seed) du générateur aléatoire pour des résultats reproductibles. Après cet appel, toutes les fonctions aléatoires produisent la même séquence à chaque fois. |
random_float(min, max) |
Renvoie un nombre décimal aléatoire de min jusqu'à (mais sans inclure) max. |
lancerDe = random(1, 6)
Tu as obtenu un $lancerDe !
if chance(4)
Tu trouves une gemme rare par terre !
Timing
| Fonction |
Description |
wait(secondes) |
Met le script en pause pendant le nombre de secondes indiqué avant de continuer. |
Le sol commence à trembler...
wait(2)
Un énorme rocher fracasse le mur !
Conversion de type
| Fonction |
Description |
float(valeur) |
Convertit une valeur en nombre. Les chaînes comme "3.14" sont analysées. Renvoie 0 si la conversion échoue. |
string(valeur) |
Convertit n'importe quelle valeur en texte. string(42) renvoie "42". |
bool(valeur) |
Convertit une valeur en true ou false. Zéro, les chaînes vides, les tableaux vides et null sont faux, tout le reste est vrai. |
String
| Fonction |
Description |
string_upper(texte) |
Convertit toutes les lettres en majuscules. string_upper("bonjour") renvoie "BONJOUR". |
string_lower(texte) |
Convertit toutes les lettres en minuscules. string_lower("BONJOUR") renvoie "bonjour". |
string_contains(texte, recherche) |
Vérifie si une chaîne contient un morceau de texte. string_contains("bonjour le monde", "monde") renvoie true. |
string_replace(texte, ancien, nouveau) |
Remplace chaque occurrence d'un morceau de texte. string_replace("bonjour le monde", "monde", "tous") renvoie "bonjour le tous". |
string_split(texte, separateur) |
Découpe une chaîne en tableau. string_split("a,b,c", ",") renvoie "a", "b", "c"]. |
string_trim(texte) |
Supprime les espaces au début et à la fin. string_trim(" bonjour ") renvoie "bonjour". |
string_index(texte, recherche) |
Trouve la position de la première occurrence d'un texte (à partir de 0), ou -1 si non trouvé. string_index("bonjour", "nj") renvoie 2. |
string_sub(texte, debut, longueur) |
Extrait une portion d'une chaîne. string_sub("ABCDEF", 0, 3) renvoie "ABC". |
string_starts(texte, prefixe) |
Vérifie si une chaîne commence par le préfixe donné. string_starts("bonjour le monde", "bonjour") renvoie true. |
string_ends(texte, suffixe) |
Vérifie si une chaîne se termine par le suffixe donné. string_ends("bonjour le monde", "monde") renvoie true. |
string_repeat(texte, nombre) |
Répète le texte le nombre de fois indiqué. string_repeat("ab", 3) renvoie "ababab". |
string_length(texte) |
Renvoie le nombre de caractères dans une chaîne. string_length("bonjour") renvoie 7. |
if string_contains(message, "aide")
Quelqu'un a besoin d'aide !
mots = string_split(phrase, " ")
La phrase contient $array_length(mots) mots.
if string_starts(nom, "Sire")
Tu t'inclines devant le chevalier.
Toutes les fonctions string_ supportent aussi la notation par point : supprimez le préfixe string_ et appelez la fonction directement sur la valeur. Par exemple, string_upper(nom) peut s'écrire nom.upper(), et string_contains(msg, "aide") s'écrire msg.contains("aide"). Cela fonctionne aussi sur les littéraux et peut être chaîné :
titre = "bonjour".upper()
salutation = " bonjour le monde ".trim().upper()
Text
| Fonction |
Description |
plural(nombre, singulier, pluriel) |
Renvoie singulier quand nombre vaut 1, pluriel sinon. Fonctionne pour les pluriels de noms et la conjugaison de verbes dans n'importe quelle langue. |
objets = 3
Tu as trouvé $objets $plural(objets, "pièce", "pièces").
// "Tu as trouvé 3 pièces."
messages = 1
Tu as $plural(messages, "un nouveau", "des nouveaux") $plural(messages, "message", "messages").
// "Tu as un nouveau message."
Il existe aussi une syntaxe abrégée avec le pipe pour le cas courant. Après une $expression numérique, écrivez singulier|pluriel et la résolution se fait automatiquement :
objets = 3
Tu as trouvé $objets pièce|pièces.
// "Tu as trouvé 3 pièces."
boites = 1
$boites (boîte a été trouvée|boîtes ont été trouvées).
// "1 boîte a été trouvée."
Utilisez des parenthèses pour les alternatives à plusieurs mots. Échappez avec | si vous avez besoin d'un caractère pipe littéral. La syntaxe pipe ne s'active qu'après une expression numérique. Sinon | est conservé tel quel.
Array
| Fonction |
Description |
array_add(tableau, valeur) |
Ajoute un élément à la fin d'un tableau. |
array_pop(tableau) |
Retire et renvoie le dernier élément. Renvoie null si le tableau est vide. |
array_prepend(tableau, valeur) |
Ajoute un élément au début d'un tableau. |
array_shift(tableau) |
Retire et renvoie le premier élément. Renvoie null si le tableau est vide. |
array_remove(tableau, valeur) |
Trouve et retire la première occurrence d'une valeur. Renvoie true si trouvée. |
array_index(tableau, valeur) |
Trouve la position d'une valeur (à partir de 0), ou -1 si non trouvée. |
array_has(tableau, valeur) |
Vérifie si un tableau contient une valeur donnée. |
array_sort(tableau) |
Trie le tableau sur place et le renvoie. |
array_reverse(tableau) |
Inverse le tableau sur place et le renvoie. |
array_join(tableau, separateur) |
Combine tous les éléments en une chaîne. array_join(["a", "b", "c"], ", ") renvoie "a, b, c". |
array_pick(tableau) |
Renvoie un élément au hasard. Affecté par seed_random. |
array_shuffle(tableau) |
Mélange le tableau sur place et le renvoie. Affecté par seed_random. |
array_copy(tableau) |
Renvoie une copie superficielle du tableau. |
array_length(tableau) |
Renvoie le nombre d'éléments dans un tableau. |
objets = ["épée", "bouclier"]
array_add(objets, "potion")
if array_has(inventaire, "clé dorée")
Tu ouvres la porte ancienne.
salutations = ["Bonjour !", "Salut !", "Bienvenue !"]
barista: $array_pick(salutations)
Toutes les fonctions array_ supportent aussi la notation par point. Par exemple, array_add(objets, "épée") peut s'écrire objets.add("épée"), et array_join(objets, ", ") s'écrire objets.join(", "). Cela fonctionne aussi sur les littéraux :
trie = [3, 1, 2].sort().join(", ") // "1, 2, 3"
Map
| Fonction |
Description |
map_keys(dictionnaire) |
Renvoie un tableau de toutes les clés du dictionnaire. |
map_has(dictionnaire, cle) |
Vérifie si une clé existe dans le dictionnaire. |
map_get(dictionnaire, cle) |
Obtient la valeur associée à une clé. Renvoie null si la clé n'existe pas. |
map_set(dictionnaire, cle, valeur) |
Stocke une valeur sous une clé. |
map_remove(dictionnaire, cle) |
Supprime une clé et sa valeur. Renvoie true si la clé existait. |
map_copy(dictionnaire) |
Renvoie une copie superficielle du dictionnaire. |
map_length(dictionnaire) |
Renvoie le nombre de clés dans un dictionnaire. |
map_set(comptesInventaire, "fleches", 20)
nombre = map_get(comptesInventaire, "fleches")
Il te reste $nombre flèches.
Toutes les fonctions map_ supportent aussi la notation par point. Par exemple, map_get(stats, "pv") peut s'écrire stats.get("pv") :
cles = { nom: "Alice", age: 30 }.keys()
État du récit
| Fonction |
Description |
current_beat() |
Renvoie une référence au beat en cours d'exécution. Utilisé dans du texte (current_beat()), il affiche le nom du beat. Peut être comparé à une chaîne : current_beat() == "MonBeat". |
has_beat(nom) |
Vérifie si un beat portant le nom donné existe et est accessible depuis votre position actuelle. Accepte une chaîne (has_beat("MonBeat")) ou une référence de beat (has_beat(MonBeat)). |
beat_visits() |
Renvoie le nombre de fois que le beat courant a été visité. |
beat_visits(nom) |
Renvoie le nombre de fois que le beat nommé a été visité. Accepte une chaîne (beat_visits("MonBeat")) ou une référence de beat (beat_visits(MonBeat)). |
if has_beat("FinSecrete")
choice
Tenter le chemin secret -> FinSecrete
Les noms de beats peuvent être utilisés directement comme références dans les expressions. Cela permet la notation par point pour les fonctions de beat. Par exemple, beat_visits(CoffeeShop) peut aussi s'écrire CoffeeShop.visits() :
beat CoffeeShop
if beat_visits() == 1
Bienvenue au coffee shop !
else
Bon retour ! Vous êtes venu $CoffeeShop.visits() fois.
Introspection des choix
| Fonction |
Description |
choices() |
Renvoie un tableau du texte de toutes les options de choix actuellement activées. |
choices_all() |
Renvoie un tableau du texte de toutes les options de choix, qu'elles soient activées ou désactivées. |
choices_disabled() |
Renvoie un tableau du texte de toutes les options de choix désactivées. |
Ces fonctions sont utiles à l'intérieur du corps d'une option de choix pour inspecter quelles options étaient disponibles quand le joueur a fait son choix :
choice
Café
if choices().length() > 2
barista: Tant de choix aujourd'hui, et tu as pris un café !
else
barista: Menu réduit aujourd'hui, bon choix.
Thé
barista: Un classique.
Jus de fruit if aJusDeFruit
barista: Pressé du jour !
On peut aussi utiliser choices() dans une condition d'option de choix. Ici, l'option de repli n'apparaît que quand toutes les options préfixées par - ont été choisies lors de visites précédentes :
choice
- Café
barista: Voici ton café !
- Thé
barista: Ça arrive !
- Jus de fruit
barista: Pressé du jour !
Il te reste quelque chose ? if !choices()
barista: Désolé, il n'y a plus rien. Reviens demain !