Lorsqu'un sort est lancé dans le jeu, tu peux ajouter de façon générique des traitements spécifiques dans le script "gen_spellhook" (nom à initialiser dans le module).
Je te donne un exemple issu de notre module des Iles du couchant :
// Script permettant de rependre la main sur le système de sort de NWN
// Le script est activé sur lancement d'un sort, son nom est fixé dans mod_start par la commande SetModuleOverrideSpellscript("gen_spellhook");
#include "x2_inc_switches"
void main()
{
// Si le réceptacle du sort est un atelier d'enchantement, activation du script d'enchantement, inhibition du sort.
object oTarget = GetSpellTargetObject();
if(GetTag(oTarget)=="TS_ATELIER_ENCHANTEUR")
{
int iSort = GetSpellId(); // Sort lancé sur l'atelier
SetLocalInt(OBJECT_SELF, "iSort", iSort);
SetLocalObject(OBJECT_SELF,"oTarget", oTarget);
SetModuleOverrideSpellScriptFinished(); // inhibition du sort
ExecuteScript("ts_enchanteur", OBJECT_SELF);
}
return;
}
Dans cet exemple, un magicien lance un sort sur un atelier pour enchanter un objet.
Le sort est récupéré par la commande iSort = GetSpellId();
Il est ensuite sauvegardé en variable locale du lanceur du sort : SetLocalInt(OBJECT_SELF, "iSort", iSort);
Pour info, nous sauvegardons aussi l'objet cible du sort, et le sort lui-même est inhibé dans notre cas particulier car utilisé uniquement pour activer l'enchantement (SetModuleOverrideSpellScriptFinished(); // inhibition du sort). Si tu veux que le sort s'exécute normalement, il ne faut pas mettre cette commande.
Ensuite, tu peux utiliser dans un autre script (dans notre exemple ts-enchanteur) le nom du sort lancé pour conditionner les effets, tu récupères la variable locale et tu la compares à la constante correspondant au sort que tu recherches.
Les constantes de sort sont de la forme SPELL_NomDuSort, par exemple SPELL_STONE_TO_FLESH, ou SPELL_FLESH_TO_STONE.
Tu peux peut-être faire plus simple et spécifique en utilisant GetSpellId() directement dans ton script de "déclenchement par un sort" (je ne suis pas sur que ça fonctionne) sur la statue, et en faisant ensuite la comparaisons avec la constante du sort attendu pour activer la suite de tes traitements.