Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
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.");
|
|
}
|
|
} |