Bon, je crois avoir vu où est-ce que ça pourrait coincer, mais avant tout je te conseille vraiment d'essayer de clarifier ton script.
Pour ça, il y a plusieurs choses sur la syntaxe à savoir :
# au lieu d'imbriquer les if, genre :
if(a==1)
{
if(b==1)
{
}
}
tu peux regrouper dans ce genre de cas les deux tests, en faisant une condition unique qui serait ici :
if(a==1 && b==1)
(pour des informations sur les opérateurs logiques ET, OU etc., cf. les persistants ou Jedaï
)
# dans la même veine, au lieu de faire un test du genre :
if(a==1)
{
}
if(a!=1)
{
}
tu peux utiliser if...else
# Enfin, le niveau des créatures se récupère normalement sans problème avec GetHitDice (c'est la méthode que j'ai toujours utilisée, malgré que certains aient l'air de dire qu'elle n'est pas fiable à 100%)
Bon, ensuite faudrait juste que tu me dise si la variable iNpc sert à quelque chose de précis, et si oui à quoi
Pour en revenir au problème : tu récupère ta créature invoquée grâce à :
object oCreature = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oUser);
Or je ne crois pas que tu ai explicitement "associé" cette créature avec le PJ. Après relecture de la description de la fonction (un peu obscure d'ailleurs
) dans le toolset, apparemment la créature est placée dans le groupe du "caller".
Peut-être que :
AssignCommand(oUser, ApplyEffectAtLocation (DURATION_TYPE_TEMPORARY, eRelease, lTarget, 120.0));
te donneras plus de résultat, quoique je n'en sois pas sûr du tout.
En dehors de ça, la remarque de Twist est tout à fait juste il me semble