Aller au contenu

Photo

area effect spell script help


  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1
Surek

Surek
  • Members
  • 94 messages

I was hopeing to get some help with this script it works fine but the only thing I need it to do now is stop healing the monsters and just heal the PCs in the area effect.  any help would be great.

 

Here is the script i'm using.

 

 

 

const float EFFECT_RADIUS = 10.0;
void main()
{
object oPC     = GetItemActivator();
 
 
    effect   eDamage = EffectHeal(30);
    effect   eVisual = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
    effect   eEffect = EffectLinkEffects(eVisual, eDamage);
    location lTarget = GetLocation(oPC);
    oPC = GetFirstObjectInShape(SHAPE_SPHERE, EFFECT_RADIUS, lTarget);
    while (GetIsObjectValid(oPC))    {ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
        oPC = GetNextObjectInShape(SHAPE_SPHERE, EFFECT_RADIUS, lTarget);    }}
 


#2
Vincent07

Vincent07
  • Members
  • 47 messages

Easy, just adjust the While to this:

 

while(GetIsObjectValid(oPC) && GetIsPC(oPC))



#3
MagicalMaster

MagicalMaster
  • Members
  • 2 003 messages

No, that's a bad idea -- because then the loop would cancel as soon as it found a non-PC.

 

Try something like this:

const float EFFECT_RADIUS = 10.0;

void main()
{
    object oPC     = GetItemActivator();

    effect   eDamage = EffectHeal(30);
    effect   eVisual = EffectVisualEffect(VFX_FNF_LOS_HOLY_10);
    effect   eEffect = EffectLinkEffects(eVisual, eDamage);
    location lTarget = GetLocation(oPC);
    oPC = GetFirstObjectInShape(SHAPE_SPHERE, EFFECT_RADIUS, lTarget);

    while (GetIsObjectValid(oPC))
    {
        if (GetIsPC(oPC))
        {
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
        }

        oPC = GetNextObjectInShape(SHAPE_SPHERE, EFFECT_RADIUS, lTarget);
    }
}

  • Squatting Monk et Rolo Kipp aiment ceci