#include "inc_utility" #include "NW_I0_SPELLS" #include "NW_I0_GENERIC" void main() { effect eHeal; effect eAC; effect eSave; effect eDam; effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY); effect eVis2 = EffectVisualEffect(VFX_IMP_HEALING_G); int nHeal; int nDam; object oCaster = OBJECT_SELF; int nDamage; location lTarget = GetLocation(OBJECT_SELF); object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget); while (GetIsObjectValid(oTarget)) { if(GetAlignmentGoodEvil(oTarget)==ALIGNMENT_GOOD) { nHeal = GetMaxHitPoints(oTarget); eHeal = EffectHeal(nHeal); // eAC = EffectACIncrease(3,AC_NATURAL_BONUS); eAC = EffectACIncrease(3,AC_DODGE_BONUS); eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL,3); ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget); if(PRCGetHasEffect(EFFECT_TYPE_AC_INCREASE,oTarget) == FALSE) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAC, oTarget,10800.0); } if(PRCGetHasEffect(EFFECT_TYPE_SAVING_THROW_INCREASE,oTarget) == FALSE) { ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSave, oTarget,10800.0); } } if(GetAlignmentGoodEvil(oTarget)==ALIGNMENT_EVIL) { nDam = d12(2); eDam = EffectDamage(nDam); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget); } }