45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
void main()
|
|
{
|
|
float fRadius = RADIUS_SIZE_MEDIUM;
|
|
int nDC = 22;
|
|
int nDice = 4;
|
|
int nTargetVisualFail = VFX_IMP_FLAME_M;
|
|
int nTargetVisualSuccess = VFX_IMP_FLAME_S;
|
|
int nImpactVisual = VFX_FNF_LOS_NORMAL_20;
|
|
|
|
location lTargetLocation = GetItemActivatedTargetLocation();
|
|
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRadius,
|
|
lTargetLocation, TRUE);
|
|
while(oTarget != OBJECT_INVALID)
|
|
{
|
|
int nSave = ReflexSave(oTarget, nDC, SAVING_THROW_TYPE_FIRE);
|
|
int nDamage = d8(nDice);
|
|
effect eDamage;
|
|
|
|
if(nSave == 0)
|
|
{
|
|
if(GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
|
|
{
|
|
nDamage /= 2;
|
|
}
|
|
eDamage = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
|
|
effect eVisual = EffectVisualEffect(nTargetVisualFail);
|
|
eDamage = EffectLinkEffects(eVisual, eDamage);
|
|
}
|
|
else if(nSave == 1 && !GetHasFeat(FEAT_EVASION, oTarget) &&
|
|
!GetHasFeat(FEAT_IMPROVED_EVASION, oTarget))
|
|
{
|
|
eDamage = EffectDamage(nDamage / 2, DAMAGE_TYPE_FIRE);
|
|
effect eVisual = EffectVisualEffect(nTargetVisualSuccess);
|
|
eDamage = EffectLinkEffects(eVisual, eDamage);
|
|
}
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
|
|
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRadius,
|
|
lTargetLocation, TRUE);
|
|
}
|
|
effect eVisual = EffectVisualEffect(nImpactVisual);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVisual, lTargetLocation);
|
|
}
|