PWE_PRC8/_module/nss/altar_effect.nss
Jaysyn904 ee1dc35889 Initial Commit
Initial Commit
2025-04-03 10:29:41 -04:00

51 lines
1.7 KiB
Plaintext

#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);
}
}