PRC8/trunk/newspellbook/shd_myst_drkslft.nss
Jaysyn904 1662218bb4 Initial upload.
Adding base PRC 4.19a files to repository.
2022-10-07 13:51:24 -04:00

61 lines
2.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
18/02/19 by Stratovarius
Dark Soul
Master, Heart and Soul
Level/School: 7th/Enchantment (Compulsion) [Mind Affecting]
Range: Personal
Target: You
Duration: 1 round/level
Saving Throw: Will negates; see text
Spell Resistance: Yes; see text
You open the subjects mind to the Plane of Shadow, altering its personality.
You turn the dark energies from the Plane of Shadow upon another creature, compelling it to act in ways that it normally would not.
While this effect is active, you can use a standard action to focus the shadow energies on one living creature within 30 feet that you select.
The creature must succeed on a Will saving throw (DC 17 + your Cha modifier) or immediately make a melee attack against one target within its reach.
*/
#include "shd_inc_shdfunc"
#include "prc_inc_combat"
void main()
{
object oShadow = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int nPen = ShadowSRPen(oShadow, GetShadowcasterLevel(oShadow));
if (spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, oShadow))
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oShadow, PRCGetSpellId()));
if (!PRCDoResistSpell(oShadow, oTarget, nPen) && !/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetShadowcasterDC(oShadow), SAVING_THROW_TYPE_MIND_SPELLS))
{
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_SOUND_SYMBOL_PAIN), oTarget);
location lTarget = GetLocation(oTarget);
int bBreak = FALSE;
// Use the function to get the closest creature as a target
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while(GetIsObjectValid(oAreaTarget) && !bBreak)
{
if(oAreaTarget != oTarget && oAreaTarget != oShadow && GetIsInMeleeRange(oTarget, oAreaTarget))
{
//effect eNone;
AssignCommand(oTarget, ClearAllActions());
AssignCommand(oTarget, ActionAttack(oAreaTarget));
//AssignCommand(oTarget, PerformAttack(oAreaTarget, oTarget, eNone));
//if (DEBUG) DoDebug("shd_myst_drkslft: Successful attack against "+GetName(oAreaTarget));
//FloatingTextStringOnCreature("shd_myst_drkslft: Successful attack against "+GetName(oAreaTarget), oShadow, FALSE);
DelayCommand(4.5, AssignCommand(oTarget, ClearAllActions()));
bBreak = TRUE;
}
//Select the next target within the spell shape.
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
}
}
}