76 lines
2.1 KiB
Plaintext
76 lines
2.1 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Name Wave of Grief
|
||
|
//:: FileName sp_wave_grief.nss
|
||
|
//:://////////////////////////////////////////////
|
||
|
/**@file Wave of Grief
|
||
|
Enchantment [Evil, Mind-Affecting]
|
||
|
Level: Brd 2, Clr 2
|
||
|
Components: S, M
|
||
|
Casting Time: 1 action
|
||
|
Range: Close (25 ft. + 5 ft./2 levels)
|
||
|
Area: Cone
|
||
|
Duration: 1 round/level
|
||
|
Saving Throw: Will negates
|
||
|
Spell Resistance: Yes
|
||
|
|
||
|
All within the cone when the spell is cast are
|
||
|
overcome with sorrow and grief. They take a -3 morale
|
||
|
penalty on all attack rolls, saving throws, ability
|
||
|
checks, and skill checks.
|
||
|
|
||
|
Material Component: Three tears.
|
||
|
|
||
|
Author: Tenjac
|
||
|
Created: 5/9/2006
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_inc_spells"
|
||
|
#include "prc_add_spell_dc"
|
||
|
void main()
|
||
|
{
|
||
|
object oPC = OBJECT_SELF;
|
||
|
location lLoc = PRCGetSpellTargetLocation();
|
||
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, 7.62f, lLoc, TRUE, OBJECT_TYPE_CREATURE);
|
||
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
||
|
int nPenalty = 3;
|
||
|
int nDC = PRCGetSaveDC(oTarget, oPC);
|
||
|
float fDur = RoundsToSeconds(nCasterLvl);
|
||
|
|
||
|
if(nMetaMagic & METAMAGIC_EMPOWER)
|
||
|
{
|
||
|
nPenalty += (nPenalty/2);
|
||
|
}
|
||
|
|
||
|
if (nMetaMagic & METAMAGIC_EXTEND)
|
||
|
{
|
||
|
fDur = (fDur * 2);
|
||
|
}
|
||
|
|
||
|
effect eVis = EffectVisualEffect(VFX_DUR_GLOW_BLUE);
|
||
|
effect eLink = EffectAttackDecrease(nPenalty, ATTACK_BONUS_MISC);
|
||
|
eLink = EffectLinkEffects(eLink, EffectSavingThrowDecrease(SAVING_THROW_ALL, nPenalty, SAVING_THROW_TYPE_ALL));
|
||
|
eLink = EffectLinkEffects(eLink, EffectSkillDecrease(SKILL_ALL_SKILLS, nPenalty));
|
||
|
eLink = EffectLinkEffects(eLink, eVis);
|
||
|
|
||
|
|
||
|
while(GetIsObjectValid(oTarget))
|
||
|
{
|
||
|
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
|
||
|
{
|
||
|
//Save
|
||
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
|
||
|
{
|
||
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur);
|
||
|
}
|
||
|
}
|
||
|
oTarget = MyNextObjectInShape(SHAPE_SPELLCONE, 7.62f, lLoc, TRUE, OBJECT_TYPE_CREATURE);
|
||
|
}
|
||
|
|
||
|
//SPEvilShift(oPC);
|
||
|
PRCSetSchool();
|
||
|
}
|
||
|
|
||
|
|