forked from Jaysyn/PRC8
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.
65 lines
2.6 KiB
Plaintext
65 lines
2.6 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Destruction Retribution
|
|
//:: prc_cc_desretrib.nss
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Causes all creatures whose masters have the feat to go boom.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Stratovarius
|
|
//:: Created On: April 30 , 2005
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_spells"
|
|
|
|
void main()
|
|
{
|
|
|
|
if(DEBUG) DoDebug("prc_cc_desretrib.nss: Creature has been killed");
|
|
|
|
object oCreature = OBJECT_SELF;
|
|
|
|
if(GetLocalInt(oCreature, "DestructionRetribution"))
|
|
{
|
|
if(DEBUG) DoDebug("prc_cc_desretrib.nss: Master has Destruction Retribution");
|
|
|
|
int nDamage;
|
|
int nHD = GetHitDice(oCreature) / 2 + 1;
|
|
float fDelay;
|
|
effect eExplode = EffectVisualEffect(VFX_FNF_LOS_EVIL_10); //Replace with Negative Pulse
|
|
effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
|
effect eVisHeal = EffectVisualEffect(VFX_IMP_HEALING_M);
|
|
effect eDam, eHeal;
|
|
|
|
location lTarget = GetLocation(oCreature);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, lTarget);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
nDamage = d6(nHD);
|
|
if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, 15, SAVING_THROW_TYPE_NEGATIVE))
|
|
nDamage /= 2;
|
|
|
|
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
|
|
if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD
|
|
|| (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)
|
|
|| GetLocalInt(oTarget, "AcererakHealing"))
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_NEGATIVE_ENERGY_BURST));
|
|
eHeal = EffectHeal(nDamage);
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget));
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVisHeal, oTarget));
|
|
}
|
|
else
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_NEGATIVE_ENERGY_BURST));
|
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_NEGATIVE);
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
}
|
|
|
|
oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget);
|
|
}
|
|
}
|
|
}
|