Qu'il est important que tout le monde soit au même niveau de connaissances pour pouvoir juger la pertinence (ou pas) d'une solution proposée.
Sans quoi, je passerai au mieux pour un marginal, au pire pour un incompétent.
Il existe une condition minimale à l'incantation des sorts : ne pas être silencieux.
Pour cela, nous avons l'utile
Code : Tout sélectionner
StateCheck(Myself, STATE_SILENCED)J'y vois deux inconvénients :
- les moddeurs ont vite fait oublier de l'enlever sur les rares capacités à ne pas nécessiter de composante verbale
- des mods peuvent modifier la composante verbale des sorts, le script devient alors partiellement inadapté
Sauf qu'il existe une solution incroyablement simple à ces deux problèmatiques, que l'on utilise déjà sans le savoir : le trigger
Code : Tout sélectionner
HaveSpellC'est vrai, mais incomplet.Returns true only if the active CRE has the specified spell (either as symbolic value or resource string) memorised.
Celui-ci vérifie que :
- le sort est mémorisé (ok)
- si le sort nécessite une composante verbale, le lanceur de sort n'est pas sous l'effet d'un silence
- le lanceur n'est pas sous l'effet empêchant le lancement de sort (comme celle dans la Transformation de Tenser par exemple)
Cela signifie que la présence d'une composante verbale est checkée au moment du lancement du sort :
- cela gère donc les modifications faites par les mods
- on ne peut plus s'emmêler les pinceaux avec `StateCheck(Myself, STATE_SILENCED)` puisqu'il suffit de ne pas le mettre
Ainsi, le meilleur moyen de gérer le silence dans un bloc pour lancer un sort, c'est de laisser l'action `HaveSpell` faire le travail.
Et c'est la raison pour laquelle vous ne trouverez probablement jamais dans mes scripts un `StateCheck(Myself, STATE_SILENCED)` avant de lancer un sort.
Bien à vous.