forked from Jaysyn/PRC8
90 lines
2.5 KiB
Plaintext
90 lines
2.5 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: Name Boneblast
|
||
|
//:: FileName sp_boneblast.nss
|
||
|
//:://////////////////////////////////////////////
|
||
|
/**@file Boneblast
|
||
|
Necromancy [Evil]
|
||
|
Level: Blk 1, Clr 2
|
||
|
Components: V, S, M, Undead
|
||
|
Casting Time: 1 action
|
||
|
Range: Touch
|
||
|
Target: One creature that has a skeleton
|
||
|
Duration: Instantaneous
|
||
|
Saving Throw: Fortitude half or negates
|
||
|
Spell Resistance: Yes
|
||
|
|
||
|
The caster causes some bone within a touched
|
||
|
creature to break or crack. The caster cannot specify
|
||
|
which bone. Because the damage is general rather than
|
||
|
specific, the target takes 1d3 points of Constitution
|
||
|
damage. A Fortitude save reduces the Constitution damage
|
||
|
by half, or negates it if the full damage would have been
|
||
|
1 point of Constitution damage.
|
||
|
|
||
|
Material Component: The bone of a small child that still lives.
|
||
|
|
||
|
|
||
|
Author: Tenjac
|
||
|
Created:
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_inc_spells"
|
||
|
#include "prc_add_spell_dc"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
//define vars
|
||
|
object oPC = OBJECT_SELF;
|
||
|
object oTarget = PRCGetSpellTargetObject();
|
||
|
int nCasterLvl = PRCGetCasterLevel(oPC);
|
||
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
||
|
int nType = MyPRCGetRacialType(oPC);
|
||
|
int nCreatureType = MyPRCGetRacialType(oTarget);
|
||
|
int nDam = d3(1);
|
||
|
int nDC = PRCGetSaveDC(oTarget, oPC);
|
||
|
|
||
|
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
||
|
|
||
|
|
||
|
//Check for PLAYER undeath
|
||
|
if(nType == RACIAL_TYPE_UNDEAD)
|
||
|
{
|
||
|
//check for target skeleton or innate immunity
|
||
|
//***RACIAL_TYPE_PLANT should also be included if it ever exists***
|
||
|
|
||
|
if(nType != RACIAL_TYPE_UNDEAD &&
|
||
|
nType != RACIAL_TYPE_OOZE &&
|
||
|
nType != RACIAL_TYPE_CONSTRUCT &&
|
||
|
nType != RACIAL_TYPE_PLANT &&
|
||
|
nType != RACIAL_TYPE_ELEMENTAL)
|
||
|
|
||
|
{
|
||
|
//Check for resistance
|
||
|
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
|
||
|
{
|
||
|
//Check for save
|
||
|
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
|
||
|
{
|
||
|
nDam--;
|
||
|
|
||
|
if(GetHasMettle(oTarget, SAVING_THROW_FORT))
|
||
|
{
|
||
|
nDam = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Apply ability *DAMAGE*
|
||
|
ApplyAbilityDamage(oTarget, ABILITY_CONSTITUTION, nDam, DURATION_TYPE_TEMPORARY, TRUE, -1.0f);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//SPEvilShift(oPC);
|
||
|
|
||
|
PRCSetSchool();
|
||
|
}
|
||
|
|
||
|
|
||
|
|