Sous ce titre je voulais vous presenter quelques pieges / rencontres evenements fait uniquement dans le but de rappeler a vos joueurs qui est le maitre dans son dongeon.
Je vais vous presenter le premier script, d une serie, qui si tout le monde s y met, arrivera au 101 annoncés dans le titre.
Donc, le premier :
Un classique, dans ma jeunesse quand je jouait à AD&D, il y avait un monstre qui s appelait l'aleax : C etait un monstre qui prenait l apparence et les caracteristiques d un aventurier pour lui bourrer la gueule
Ce script retranscrit cela, il cree un monstre qui reprend l apparence, les caracteristiques et l equipement de chaque aventurier qui declence le trigger.
Il faut donc :
Un trigger, que l on place quelque part dans son donjon. Moi, je l ai placé sous un VFX "champ de force", de tel maniere que l aleax apparait a chaque fois qu un gentil aventurier traverse ce champ de force.
Le script :
#include "nw_i0_generic"
void main()
{
int nInt;
object oItem;
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
// pour que cela ne se produise qu une fois par joueur.
int DoOnce = GetLocalInt(oPC, GetTag(OBJECT_SELF));
if (DoOnce==TRUE) return;
SetLocalInt(oPC, GetTag(OBJECT_SELF), TRUE);
// juste un effet special quand le joueur traverse mon champ de force
effect effet_champ=EffectNWN2SpecialEffectFile("fx_teleport.sef");
ApplyEffectToObject(DURATION_TYPE_INSTANT,effet_champ,oPC);
string sName = "Dup-"+GetName(oPC);
// ca c est le tag du waypoint ou va apparaitre le double du joueur.
object Ospawn=GetObjectByTag("spawn_double");
location Lspawn=GetLocation(Ospawn);
//creation du double
object Double = CopyObject(oPC, Lspawn,OBJECT_INVALID, sName);
ForceRest(Double);
// pour le distinguer du joueur je lui met des yeux qui brillent
effect effet_yeux=EffectNWN2SpecialEffectFile("fx_lich_eyes.sef");
ApplyEffectToObject(DURATION_TYPE_PERMANENT,effet_yeux,Double);
// toute cette partie est faite pour que le PC ne recupere pas en loot tous
// les objets qu il possede deja
string altName= GetName (Double);
string altTag= GetTag (Double);
int nGold = GetGold(Double);
// j enleve l or
TakeGoldFromCreature(nGold, Double, TRUE);
// je flag les objets en nodrop
for (nInt=0; nInt<NUM_INVENTORY_SLOTS; nInt++)
{
oItem=GetItemInSlot(nInt, Double);
SetDroppableFlag(oItem, FALSE);
}
object oItem1 = GetFirstItemInInventory(Double);
while (GetIsObjectValid(oItem1) == TRUE)
{
SetDroppableFlag(oItem1, FALSE);
SetDroppableFlag(oItem1, FALSE);
oItem1 = GetNextItemInInventory(Double);
}
// si on laisse comme ca le double ne faira rien, il n a pas d IA
// je met les scripts de creature standards
SetCreatureScriptsToSet( Double, 9 );
SetAILevel(Double,AI_LEVEL_HIGH);
// je le rend hostile
ChangeToStandardFaction(Double,STANDARD_FACTION_HOSTILE);
}
Et voila, bientot votre joyeux groupe d aventurier va se retrouver a combattre leurs doubles. Et je peux vous dire que quand dans les joueurs on a un gros bill, et bien ca leur fait tout drole de devoir l affronter.
Bon amusement.
Pour tout commentaire, questions, n hesitez pas