Anphillia Continuum
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Fear spell

Go down

Fear spell Empty Fear spell

Post  Vladimir Sat Jul 02, 2011 12:50 pm

noticed mobs got feared for no reason.then i looked at the fear spell nss.
this spell is broken.hurts allys and caster.no other spell of the type does that.
maybe it should hurt allys but never caster i think.

heres a fix.

hurt only enemys
Code:
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
    if (!X2PreSpellCastCode())
    {
        return;
    }
    int nCasterLevel = MothGetCasterLevel(OBJECT_SELF);
    int nMetaMagic = GetMetaMagicFeat();
    float fDuration = RoundsToSeconds(nCasterLevel);
    nCasterLevel = nCasterLevel/2;
    int nDamage;
    effect eDmg;
    effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
    effect eFear = EffectFrightened();
    effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
    effect eImpact1 = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
    effect eImpact2 = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
    effect eImpact = EffectLinkEffects(eImpact1,eImpact2);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
    float fDelay;
    effect eLink = EffectLinkEffects(eFear, eMind);
    eLink = EffectLinkEffects(eLink, eDur);
    object oTarget;
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
        fDuration = fDuration * 2.0;
    }
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation());
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
    while(GetIsObjectValid(oTarget))
    {
        if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF))
        {
            fDelay = GetRandomDelay();
            SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FEAR));
            if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
            {
                nDamage = d2(nCasterLevel);
                eDmg = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
                if(!MySavingThrow(SAVING_THROW_WILL, oTarget, MothDC()+3, SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay))
                {
                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration));
                }
                DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oTarget));
            }
        }
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
    }
}

or if it should hurt allys&enemys but not caster.
Code:
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
    if (!X2PreSpellCastCode())
    {
        return;
    }
    int nCasterLevel = MothGetCasterLevel(OBJECT_SELF);
    int nMetaMagic = GetMetaMagicFeat();
    float fDuration = RoundsToSeconds(nCasterLevel);
    nCasterLevel = nCasterLevel/2;
    int nDamage;
    effect eDmg;
    effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S);
    effect eFear = EffectFrightened();
    effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
    effect eImpact1 = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
    effect eImpact2 = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
    effect eImpact = EffectLinkEffects(eImpact1,eImpact2);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
    float fDelay;
    effect eLink = EffectLinkEffects(eFear, eMind);
    eLink = EffectLinkEffects(eLink, eDur);
    object oTarget;
    if (nMetaMagic == METAMAGIC_EXTEND)
    {
        fDuration = fDuration * 2.0;
    }
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation());
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
    while(GetIsObjectValid(oTarget))
    {
        if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oTarget != OBJECT_SELF)
        {
            fDelay = GetRandomDelay();
            SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FEAR));
            if(!MyResistSpell(OBJECT_SELF, oTarget, fDelay))
            {
                nDamage = d2(nCasterLevel);
                eDmg = EffectDamage(nDamage, DAMAGE_TYPE_SONIC);
                if(!MySavingThrow(SAVING_THROW_WILL, oTarget, MothDC()+3, SAVING_THROW_TYPE_FEAR, OBJECT_SELF, fDelay))
                {
                    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration));
                }
                DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDmg, oTarget));
            }
        }
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
    }
}

Vladimir

Posts : 110
Join date : 2011-05-17

Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum