101 façons d ennuyer les aventuriers

Répondre
Partager Rechercher
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 :

Code PHP:

#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(oPCGetTag(OBJECT_SELF));
    if (
DoOnce==TRUE) return;
    
SetLocalInt(oPCGetTag(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(oPCLspawn,OBJECT_INVALIDsName);
    
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 altNameGetName (Double);
    
string altTagGetTag (Double);
    
int nGold GetGold(Double);
// j enleve l or
    
TakeGoldFromCreature(nGoldDoubleTRUE);
// je flag les objets en nodrop
    
for (nInt=0nInt<NUM_INVENTORY_SLOTSnInt++)
    {
        
oItem=GetItemInSlot(nIntDouble);
        
SetDroppableFlag(oItemFALSE);
    }
    
object oItem1 GetFirstItemInInventory(Double);
    while (
GetIsObjectValid(oItem1) == TRUE)
    {
        
SetDroppableFlag(oItem1FALSE);
        
SetDroppableFlag(oItem1FALSE);
        
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
    
SetCreatureScriptsToSetDouble);
    
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
Bon, pour commencer je suis une vraiment quiche en script ( avec des vraie morceaux dedans, comme dirait certain)

Par contre j'ai deux petites questions ( qui apparaissent peut etre dans le script mais bon...)


-comment se nomme le double?

-c'est peut etre voule mais si les doubles ont la meme apparence qui le groupe, le guerrier n'a plus qu'a prier que le mage du groupe ne le confonde pas avec son double méchant et lui envoie un zoli doigt de mort dans la figure


Sinon, ca a m'a tout l'air de la solution "miracle" de l'equilibrage d'un donjon, genre tour aux milles miroirs, ca peut faire de sacré ennemis, ni trop fort, ni trop faible!
et ce quelque soit le niveau ^^
Citation :
Publié par Inchenzo
Bon, pour commencer je suis une vraiment quiche en script ( avec des vraie morceaux dedans, comme dirait certain)

Par contre j'ai deux petites questions ( qui apparaissent peut etre dans le script mais bon...)


-comment se nomme le double?
Le double a exactement le meme nom que le PJ doublé.

Citation :
-c'est peut etre voule mais si les doubles ont la meme apparence qui le groupe, le guerrier n'a plus qu'a prier que le mage du groupe ne le confonde pas avec son double méchant et lui envoie un zoli doigt de mort dans la figure
C est voulu, le double a exactement la meme apparence sauf les yeux. Le double a des yeux de Lich
ok merci pour la precision


Sinon en tant que joueur, et meme RP parlant, ca peut etre super interessant, surtout dans l'optique d'un perso maitre d'arme, de pouvoir enfin mesurer son "art" face a quelqu'un de vraiment fort !


tres sympa dans tout les cas
Hier soir, j ai utilisé ce script pour la premiere fois.

J avais le guerrier du groupe qui devait une bonne vingtaine de potion de soins sur lui. Comme le double a le meme equipement, il leur a fallu un bon bout de temps avant de l abattre car le double lui aussi consommait les potions de soins
Peut etre plutot mettre le déclenchement sur un objet non visible par le PJ pour eviter les trucs du genre:
"si je passe le champs de force un double de moi apparait, alors je pose mon arme par terre et je la recupere au debut du combat"
Oué, c'est pas bête du tout... sinon merci pour le script... je vais essayer de le faire valider par mon staff pour que nos scripteurs le mettent sur le module..
Merci !
Citation :
Publié par Njs-2004
Faut bien veiller a ce qu'il ne drope pas l'equipement du personnage cloné, j'ai vu ce genre de monstre sur nwn 1, et l'inventaire etai dedoublé. (pratique pour tricher...)
Ariok n'a rien oublié :
Code PHP:

// toute cette partie est faite pour que le PC ne recupere pas en loot tous
// les objets qu il possede deja   
string altNameGetName (Double);
string altTagGetTag (Double);
int nGold GetGold(Double);
// j enleve l'or
TakeGoldFromCreature(nGoldDoubleTRUE);
// je flag les objets en nodrop
for (nInt=0nInt<NUM_INVENTORY_SLOTSnInt++)
{
    
oItem=GetItemInSlot(nIntDouble);
    
SetDroppableFlag(oItemFALSE);
}
object oItem1 GetFirstItemInInventory(Double);
while (
GetIsObjectValid(oItem1) == TRUE)
{
    
SetDroppableFlag(oItem1FALSE);
    
SetDroppableFlag(oItem1FALSE);
    
oItem1 GetNextItemInInventory(Double);



J'y pense... La ligne "string altName = GetName (Double);" sert à quelque chose ?
Citation :

J'y pense... La ligne "string altName = GetName (Double);" sert à quelque chose ?
Hahaha, oui, bien sur regarde bien .. hum hum.... attend, ah voila, euh non, en fait a rien....



Ca doit etre un residu quand c etait en devellopement
Juste une question, pourquoi changer la couleur de ses yeux ? Ca serait largement plus drole si les autres joueurs ne pouvaient pas faire la différence entre le clone et le joueur...
Citation :
Publié par Xeolani
Juste une question, pourquoi changer la couleur de ses yeux ? Ca serait largement plus drole si les autres joueurs ne pouvaient pas faire la différence entre le clone et le joueur...
Ca c est une question de gout

C est facile d enlever l effet sur les yeux, il suffit d enlever ces deux lignes :

Code PHP:


    effect effet_yeux
=EffectNWN2SpecialEffectFile("fx_lich_eyes.sef");
    
ApplyEffectToObject(DURATION_TYPE_PERMANENT,effet_yeux,Double); 
Question
Petite question : si un PJ overboosté passe le portail, son double sera-t-il lui aussi overboosté ou sera-t-il "nu" de tout sort, un peu comme dans la quête solo HotU de never 1 et le miroir ??
Citation :
Publié par Netham
Petite question : si un PJ overboosté passe le portail, son double sera-t-il lui aussi overboosté ou sera-t-il "nu" de tout sort, un peu comme dans la quête solo HotU de never 1 et le miroir ??
QUe veux tu dire par overboosté ? ?
Les effets appliqués au joueur
non ils ne le sont pas au Double.. Mais si le double est reposé c'est normal qu'il n'ait aucun effet, il a quand même un avantage


Je propose ça mais la fonction applique les effets positifs comme négatifs..
à mettre après

Code PHP:

ForceRest (Double); 

Code PHP:

effect eEffectPC GetFirstEffect (oPC);
while 
GetIsEffectValid (eEffectPC )
    {
    
ApplyEffectToObject (DURATION_TYPE_PERMANENTeEffectPCDouble);
    
eEffectPC GetNextEffect (oPC);
    } 
Ca m'étonnerait beaucoup que ça marche sinon tu peux toujours t'amuser à convertir un effect lu en un effect applicable en recherchant le type d'effet puis les nombres utilisés dans sa création(constantes). Ca risque de faire long comme fonction quand même^^.
Wink
Citation :
Publié par Ariok
QUe veux tu dire par overboosté ? ?

KorteX y a répondu je pense, cela voulait dire bardé de sorts de protection, boost de caracs etc...
Le double, comme sur never 1, lui aurait les caracs de base + celles des items mais aucun avantage liés à des sorts lancés sur l'original.
Je scripte pas pour le moment, mais je peux donner une autre idée pour ennuyer les aventuriers !

Je sais pas si c'est réalisable, mais mettre des embuscades d'ennemis lorsque l'on voyage d'une zone à une autre (avec un certain % de chance que cela arrive). A la Baldur's Gate quoi, que les pjs charge une petite instance à la place de charger la map. Bon on se passerait du "Les ennemis vous attaquent, défendez vous "
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés