Le LeekScript 2 (anciennement LeekScript 1.1) est la seconde version du LeekScript, le langage de Leek Wars, sortie le 28 février 2021. Elle a pour objectif un nettoyage du language, des corrections et l'ajout de la programmation orientée objet.
Étant donnée que des modifications profondes sont effectuées sur le fonctionnement du langage, il s'agit d'une version sans compatibilité descendante qui s'active manuellement par l'utilisateur dans l'éditeur.
La version 2 est une étape vers la version future annoncée en 2016. De nombreuses fonctionnalités prévues sont donc présentes dans la version 2, permettant de faire avancer le langage progressivement, ces fonctionnalités étant très bénéfiques pour coder une IA complexe.
Une page dédiée à l'aide à la migration est disponible ici : Migration LeekScript 1 vers 2.
Ajout de la programmation orientée objet : classes et objets. Voir la page Les Classes et Objets pour toute la documentation sur cet ajout.
Les mots-clés new, class, extends, static, public, protected, private, implements, interface, constructor, this, super et instanceof sont réservés pour la POO et ne sont donc plus disponibles pour des noms de variables ou fonctions.
Les valeurs non-primitives, c'est à dire les tableaux et les objets sont passées par référence par défaut. Les valeurs primitives (nombre, booléen, chaîne) sont toujours copiées.
La syntaxe @ ne sert plus et est donc dépréciée partout. Il est impossible en LeekScript 2 de créer des références vers une valeur primitive.
Possibilité d'ajouter des références dans les tableaux (et les objets), permettant de créer des structures complexes et/ou récursives à un coût raisonnable.
Exemples de structures de données difficilement réalisables en 1 et très facile en 2 :
Ajout d'une fonction clone(valeur, [level]) pour cloner une valeur précisément :
Plusieurs erreurs sémantiques renvoyées dans l'éditeur au lieu d'une seule (aussi disponible en LS 1).


La pile d'appel complète est affichée sous chaque erreur, au lieu d'une seule ligne auparavant (aussi disponible en LS 1).

Mais il est toujours possible d'en utiliser bien entendu. (aussi disponible en LS 1)
La limite de taille de tableau est supprimée, le coût en opérations étant suffisant pour limiter leur usage.
Correction de arrayFilter : le tableau est correctement réindexé sans laisser de valeurs null.
Correction de l'échappement de la chaîne "\\" qui affiche bien un seul \ au lieu de deux.
Correction sur les déclarations de globales à travers plusieurs fichiers.
Correction de l'opérateur ^= qui devient le XOR (OU exclusif) binaire au lieu de la puissance.
La fonction shuffle prend en compte le générateur de nombre aléatoire branché sur la graine du combat et est donc déterministe pour une même graine. Elle pouvait provoquer des variations entre deux combats générés à partir d'une même graine, ce qui impacte les tests.
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.