Salut à tous !
Première intervention sur ce site pour soumettre à celles et ceux qui sont intéressés par le moding sur Neverwinter Nights, mais sans trop s'y connaître en script (tout comme moi en fait) une ou deux astuces de scripts que je nommerais "multi-usages" ...
Alors c'est tout à fait par curiosité que j'ai découverts que le script qui transformait le plaçable "tas de crânes" en squelette (ainsi, logiquement, que celui qui change des corps en zombies) pouvait avoir un tout autre usage pratique, non sur des plaçables, mais sur des créatures. En effet, il se révèle une alternative pratique aux scripts compliqués qui gèrent les transformations des lycanthropes ! Pour mieux vous détailler l'astuce, je vous affiche ici le script original qui destiné à changer les tas de crânes en squelettes :
//::///////////////////////////////////////////////
//:: NW_O2_SKELETON.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Turns the placeable into a skeleton
if a player comes near enough.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: January 17, 2002
//:://////////////////////////////////////////////
void ActionCreate(string sCreature, location lLoc)
{
CreateObject(OBJECT_TYPE_CREATURE, sCreature, lLoc);
}
void main()
{
object oCreature = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
if (GetIsObjectValid(oCreature) == TRUE && GetDistanceToObject(oCreature) < 10.0)
{
effect eMind = EffectVisualEffect(
VFX_FNF_SUMMON_UNDEAD);
string sCreature =
"NW_SKELWARR01";
// * 10% chance of a skeleton chief instead
if (Random(100) > 90)
{
sCreature =
"NW_SKELCHIEF";
}
location lLoc = GetLocation(OBJECT_SELF);
DelayCommand(0.3, ActionCreate(sCreature, lLoc));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eMind, GetLocation(OBJECT_SELF));
SetPlotFlag(OBJECT_SELF, FALSE);
DestroyObject(OBJECT_SELF, 0.5);
}
}
J'ai surligné en rouge les options à modifier pour faire se changer un objet en autre chose qu'un squelette. Il vous suffit de les remplacer par le TAG de n'importe quelle autre créature de votre choix. Vous constaterez aussi dans le script un pourcentage de chances que l'un ou l'autre des squelettes apparaissent. Vous pouvez modifier à loisir ce pourcentage. Si vous souhaitez qu'un seul type de créature apparaisse, copiez simplement le TAG de la créature et collez-le aux deux emplacements que j'ai surligné en rouge. Ainsi il n'y aura qu'un seul type de créature pouvant apparaître.
En bleu, j'ai surligné l'effet visuel et sonore qui intervient lors de la transformation. Vous pouvez le modifier en consultant la liste dans l'onglet "Constantes" situé à droite de la boîte de scriptes. Si vous remplacez par exemple
VFX_FNF_SUMMON_UNDEAD utilisé pour générer un nuage blanc lumineux et un effet sonore au moment de la transformation par
VFX_IMP_DESTRUCTION , vous obtiendrez un effet assez dégueu d'explosion d'os, de chair et de sang. Et il y a bien d'autres effets possibles.
Si vous souhaitez appliquer ce script sur des créatures, vous pouvez le mettre dans "OnDamaged", "OnDeath" ou "OnPhysicalAttacked" d'une créature pour la voir se changer respectivement sur une blessure qu'elle reçoit, à sa mort ou dès qu'on l'attaque. Essayez de mettre le script original NW_O2_SKELETON sur une créature de votre choix pour faire des tests. Vous verrez c'est assez bluffant. Le seul défaut à ceci que j'ai constaté est que la créature transformée n'apparait pas exactement à l'endroit de son ancienne forme, il y a un tout petit décalage.
Voilà, amusez-vous bien, vous verrez que de nombreux scripts peuvent être ainsi utilisés en dehors de leurs fonctions premières avec des effets tout à fait acceptable.