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

76 lines
2.6 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Arrow of Bone event script
//:: FileName prc_evnt_arrbone.nss
//:://////////////////////////////////////////////
/**@file Arrow of Bone
Necromancy [Death]
Level: Sorcerer/wizard 7
Components: V, S, M
Range: Touch
Target: One projectile or thrown weapon touched
Duration: 1 hour/level or until discharged
Saving Throw: Fortitude partial
Spell Resistance: Yes
You complete the ritual needed to
cast the spell, scribing arcane runes into
the item. It changes before your eyes into
an identical item made of bone. The runes
glow with dark magic and the weapon feels
cold to the touch.
When thrown or fired at a creature as a
normal ranged attack, the weapon gains
a +4 enhancement bonus on attack
rolls and damage rolls. In addition, any
living creature struck by an arrow of
bone must succeed on a Fortitude save
or be instantly slain. A creature that
makes its save instead takes 3d6 points
of damage +1 point per caster level
(maximum +20). Regardless of whether
the attack hits, the magic of the arrow
of bone is discharged by the attack, and
the missile is destroyed.
Material Component: A tiny sliver
of bone and an oil of magic weapon
Author: Tenjac
Created: 6/28/07
*/
//:://////////////////////////////////////////////
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "prc_add_spell_dc"
void main()
{
object oSpellOrigin = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject(oSpellOrigin);
int nSaveDC = PRCGetSaveDC(oTarget,oSpellOrigin);
object oItem = PRCGetSpellCastItem(oSpellOrigin);
int nCasterLvl = PRCGetCasterLevel(oSpellOrigin);
//SR check
if(!PRCDoResistSpell(oSpellOrigin, oTarget, (nCasterLvl + SPGetPenetr())) && PRCGetIsAliveCreature(oTarget))
{
//Save
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nSaveDC, SAVING_THROW_TYPE_DEATH))
{
int nDam = d6(3) + min(20, nCasterLvl);
}
else
{
//Kill it
effect eDeath = EffectDeath();
eDeath = SupernaturalEffect(eDeath);
DeathlessFrenzyCheck(oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DEATH), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget);
}
}
}