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

Math

sante = clamp(sante + soin, 0, santeMax)
degats = min(puissanceAttaque, santeEnnemi)

Random

lancerDe = random(1, 6)
Tu as obtenu un $lancerDe !

if chance(4)
  Tu trouves une gemme rare par terre !

Timing

Le sol commence à trembler...
wait(2)
Un énorme rocher fracasse le mur !

Conversion de type

String

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

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

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

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

if has_beat("FinSecrete")
  choice
    Tenter le chemin secret -> FinSecrete