[DD SPELL]Remove Fear

Répondre
Partager Rechercher
http://dolanor.free.fr/nwn/images/pierre100sorts.jpg




Voila le code du sort remove fear/regain d'assurance a la sauce d&d.

Code PHP:

//::///////////////////////////////////////////////
//:: Remove Fear
//:: NW_S0_RmvFear.nss
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    All allies within a 10ft radius have their actual fear
    effects allowed a new saving throw against a random
    DC based on the caster level, but with a +4 bonus
    and if they didn't have a fear effect they
    are granted a +4 Save versus future fear effects.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: April 13, 2001
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
//:: Modified By: Dolanor
//:: Modified On: 23/05/2005
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"

void main()
{
    
//Declare major variables
    
object oTarget;
    
effect eFear;
    
effect eSave EffectSavingThrowIncrease(SAVING_THROW_WILL4SAVING_THROW_TYPE_FEAR);
    
effect eMind EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE);
    
effect eDur EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    
effect eImpact EffectVisualEffect(VFX_FNF_LOS_HOLY_10);

    
effect eLink EffectLinkEffects(eMindeSave);
    
eLink EffectLinkEffects(eLinkeDur);
    
float fDelay;
    
ApplyEffectAtLocation(DURATION_TYPE_INSTANTeImpactGetSpellTargetLocation());
    
effect eVis EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);
    
//Get first target in the spell area
    
oTarget GetFirstObjectInShape(SHAPE_SPHERERADIUS_SIZE_MEDIUMGetSpellTargetLocation());


    
int nCLevel GetCasterLevel(OBJECT_SELF);
    
int nFriendNumber + (nCLevel 4);
    
//indique si le sujet a un effet de peur applique
    
int nFear 0;
    while (
GetIsObjectValid(oTarget) && nFriendNumber 0)
    {
        
//Only remove the fear effect from the people who are friends.
        
if(GetIsFriend(oTarget))
        {
            
fDelay GetRandomDelay();
            
//Fire cast spell at event for the specified target
            
SignalEvent(oTargetEventSpellCastAt(OBJECT_SELFSPELL_REMOVE_FEARFALSE));
            
eFear GetFirstEffect(oTarget);
            
//Get the first effect on the current target
            
while(GetIsEffectValid(eFear))
            {
                if (
GetEffectType(eFear) == EFFECT_TYPE_FRIGHTENED)
                {
                    
//Remove any fear effects and apply the VFX impact
                    
RemoveEffect(oTargeteFear);
                    
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisoTarget);
                    
//On assigne une valeur aleatoire au DC du 2 eme effet de peur
                    
int nRandomFearDC Random(nCLevel 4) + 6;
                    if(!
MySavingThrow(SAVING_THROW_WILLoTargetnRandomFearDCSAVING_THROW_TYPE_FEAROBJECT_SELFfDelay))
                    {
                        
nFear 1;
                        
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTargetRoundsToSeconds(d6(Random(nCLevel 6) + 1))));
                    }
                }
                
//Get the next effect on the target
                
eFear GetNextEffect(oTarget);
            }
            if (
nFear == 0)
            {
                
//Apply the linked effects
                
DelayCommand(fDelayApplyEffectToObject(DURATION_TYPE_TEMPORARYeLinkoTargetRoundsToSeconds(100)));
            }
            
//On reinitialise nFear
            
nFear 0;
            
//On a utilise le sort sur 1 ami, on passe au suivant.
            
nFriendNumber--;
        }
        
//Get the next target in the spell area.
        
oTarget GetNextObjectInShape(SHAPE_SPHERERADIUS_SIZE_MEDIUMGetSpellTargetLocation());
    }


CORRECTIONS apportées :
*Le sort n'enleve plus l'effet de peur, mais permet de rejouer le jet de sauvegarde avec le bonus de +4 de ce sort.
Je n'ai pas pu rejouer exactement le meme effet de peur, car d'une part je peux recuperer l'effet de peur, mais ni sa durée, ni son DD, donc sa durée et son DD sont aleatoire en fonction du niveau du pretre (j'ai pas trouvé mieux, mais il me semble que plus un pretre est elevé, plus il va affronter des bestioles avec des pouvoirs plus difficile et plus long). Mais bon si la valeur aleatoire descends tres bas face a un DD de dragon, l'allié resistera surement au nouveau JS, mais ca reste mieux que d'enlever l'effet de peur directement. La y'a une chance que ca ne se dissipe pas.
*Changé la durée du sort de 10 rd a 10 min.
Répondre

Connectés sur ce fil

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