Further file organization
Further file organization
This commit is contained in:
64
nwn/nwnprc/trunk/scripts/prc_cc_desretrib.nss
Normal file
64
nwn/nwnprc/trunk/scripts/prc_cc_desretrib.nss
Normal file
@@ -0,0 +1,64 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user