Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
81 lines
2.7 KiB
Plaintext
81 lines
2.7 KiB
Plaintext
//////////////////////////////////////////////////
|
|
// Profane Life Leech
|
|
// prc_prflflch.nss
|
|
//////////////////////////////////////////////////
|
|
/** @file Profane Lifeleech [Divine]
|
|
|
|
Prerequisite: Ability to rebuke undead.
|
|
|
|
Benefit: As a standard action, you can spend two of your rebuke attempts to deal
|
|
1d6 points of damage to all living creatures within a 30-foot burst. You are healed of
|
|
an amount of damage equal to the total amount of hit points that you drain from
|
|
affected creatures, but this healing does not allow you to exceed your full normal
|
|
hit point total.
|
|
|
|
Special: This feat deals no damage to constructs or undead.
|
|
*/
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
// Author: Tenjac
|
|
// Created: 4/22/08
|
|
///////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
object oPC = OBJECT_SELF;
|
|
location lLoc = GetLocation(oPC);
|
|
|
|
//Rebuke check
|
|
if(GetAlignmentGoodEvil(oPC) != ALIGNMENT_EVIL && !GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oPC))
|
|
{
|
|
SendMessageToPC(oPC, "You must be able to Rebuke Undead to use this feat.");
|
|
return;
|
|
}
|
|
|
|
//If they have zero left, uncermoniously boot them without incrementing
|
|
if(!GetHasFeat(FEAT_TURN_UNDEAD, oPC))
|
|
{
|
|
SendMessageToPC(oPC, "You do not have enough uses of Rebuke Undead left.");
|
|
return;
|
|
}
|
|
|
|
DecrementRemainingFeatUses(oPC, FEAT_TURN_UNDEAD);
|
|
|
|
//Check for a remaining use
|
|
if(GetHasFeat(FEAT_TURN_UNDEAD, oPC))
|
|
{
|
|
//burn the other use required
|
|
DecrementRemainingFeatUses(oPC, FEAT_TURN_UNDEAD);
|
|
|
|
//VFX
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_PWKILL), lLoc);
|
|
|
|
int nDam;
|
|
float fRange = FeetToMeters(30.0);
|
|
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
if(oTarget != oPC)
|
|
{
|
|
if(PRCGetIsAliveCreature(oTarget) && !GetIsReactionTypeFriendly(oTarget))
|
|
{
|
|
nDam = d6(1);
|
|
|
|
//Damage
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, DAMAGE_TYPE_DIVINE), oTarget);
|
|
|
|
//Heal
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nDam), oPC);
|
|
}
|
|
}
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRange, lLoc, FALSE, OBJECT_TYPE_CREATURE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
IncrementRemainingFeatUses(oPC, FEAT_TURN_UNDEAD);
|
|
SendMessageToPC(oPC, "You do not have enough uses of Rebuke Undead left.");
|
|
}
|
|
} |