Composant de sort !?

Répondre
Partager Rechercher
C'est possible, d'ailleur, c'est un procédé que j'utilise pour balancer certains sorts trop puissants...

Il va par contre te falloir modifier le script de tout les sorts que tu veux limiter :

Exemple avec TimeStop :
Code PHP:

#include "ro_generic" //Ca, ca repere la liste  des DM de NwNRo, avec ca : GetIsNvnRoDM()

void main()
{
//////////////////////////////////////////////////////////
//BlueGem Consomation -- "Blue Gemstone"
///////////////////////////////////////////////////////////
SetLocalInt(OBJECT_SELF,"Gem",FALSE);
if ((
GetIsPC(OBJECT_SELF)==FALSE)||(GetIsNvnRoDM(OBJECT_SELF)==TRUE))
    {
    
SetLocalInt(OBJECT_SELF,"Gem",TRUE);
    }
if (
GetLocalInt(OBJECT_SELF,"Gem")==FALSE)
    {
    
object oGem GetFirstItemInInventory(OBJECT_SELF);
    while (
GetIsObjectValid(oGem))
        {
        if (
GetName(oGem)== "Blue Gemstone")
            {
            break;
            }
        
oGem GetNextItemInInventory(OBJECT_SELF);
        }
    if (
GetIsObjectValid(oGem))
        {
        
int nStack GetNumStackedItems(oGem);
        
DestroyObject(oGem);
        if (
nStack>1)
            {
            
CreateItemOnObject("bluegemstone",OBJECT_SELF,nStack-1);
            }
        
SetLocalInt(OBJECT_SELF,"Gem",TRUE);
        }
    }
if (
GetLocalInt(OBJECT_SELF,"Gem")==FALSE)
    {
    
SendMessageToPC(OBJECT_SELF,"You do not have the Blue Gem needed to cast this spell");
    return;
    }
////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////

    
object oPC OBJECT_SELF;

        
//Declare major variables
        
location lTarget GetSpellTargetLocation();
        
effect eVis EffectVisualEffect(VFX_FNF_TIME_STOP);
        
effect eTime EffectTimeStop();
        
int nRoll d4();
        
float fDuration IntToFloat(nRoll) + 9.0f;

    if (
GetIsDM(oPC))
    {
        
//Fire cast spell at event for the specified target
        
SignalEvent(OBJECT_SELFEventSpellCastAt(OBJECT_SELFSPELL_TIME_STOPFALSE));

        
//Apply the VFX impact and effects
        
DelayCommand(0.75ApplyEffectToObject(DURATION_TYPE_TEMPORARYeTimeOBJECT_SELFfDuration));
        
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeVislTarget);
    }
    else
    {
    
int nNBCreature GetHitDice(oPC);
    
int nNBDone 1;
    
object oCible;
    
effect eFX;

    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeVislTarget);
        while (
nNBCreature 0)
            {
            
oCible GetNearestObject(OBJECT_TYPE_CREATURE,oPC,nNBDone);
            
eFX GetFirstEffect(oCible);

            
AssignCommand(oCible,ClearAllActions());

            
DelayCommand(0.2,SetCommandable(FALSE,oCible));

            
DelayCommand(fDuration,SetCommandable(TRUE,oCible));

            
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGIC_RESISTANCE),oCible,fDuration);
            
nNBDone nNBDone+1;
            
nNBCreature nNBCreature-1;
            }
    }

Pour info, l'include "ro_generic" n'est la que pour prendre en compte une nouvelle stat de joueur : la magic Atk.
Répondre

Connectés sur ce fil

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