Updated Darkness spell to use EffectTag. Removed old crafting baseitems. Removed defunct spellbook from Knight of the Weave.
110 lines
3.4 KiB
Plaintext
110 lines
3.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Darkness: On Enter
|
|
//:: NW_S0_DarknessA.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
Creates a globe of darkness around those in the area
|
|
of effect.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Feb 28, 2002
|
|
//:://////////////////////////////////////////////
|
|
|
|
|
|
//:: modified by mr_bumpkin Dec 4, 2003
|
|
#include "prc_inc_spells"
|
|
|
|
|
|
|
|
|
|
void main()
|
|
{
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
|
|
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
|
|
effect eDark = EffectDarkness();
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
|
|
|
|
effect eLink = EffectLinkEffects(eDark, eDur);
|
|
eLink = TagEffect(eLink, "BIO_DARKNESS");
|
|
|
|
effect eLink2 = EffectLinkEffects(eInvis, eDur);
|
|
eLink2 = TagEffect(eLink2, "PNP_DARKNESS");
|
|
|
|
effect ePnP = EffectLinkEffects(eDur, EffectDarkness());
|
|
if(GetPRCSwitch(PRC_PNP_DARKNESS_35ED))
|
|
{
|
|
ePnP = EffectLinkEffects(eDur, EffectConcealment(20));
|
|
ePnP = TagEffect(ePnP, "PNP35_DARKNESS");
|
|
}
|
|
|
|
object oTarget = GetEnteringObject();
|
|
int iShadow = GetLevelByClass(CLASS_TYPE_SHADOWLORD,oTarget);
|
|
|
|
if (iShadow)
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectUltravision(), oTarget,0.0f,FALSE);
|
|
if (iShadow>1)
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectConcealment(20), oTarget,0.0f,FALSE);
|
|
|
|
|
|
int nDuration = PRCGetCasterLevel(OBJECT_SELF);
|
|
//Enter Metamagic conditions
|
|
if ((nMetaMagic & METAMAGIC_EXTEND))
|
|
{
|
|
nDuration = nDuration *2; //Duration is +100%
|
|
}
|
|
|
|
|
|
// * July 2003: If has darkness then do not put it on it again
|
|
// Primogenitor: Yes, what about overlapping darkness effects by different casters?
|
|
//if (PRCGetHasEffect(EFFECT_TYPE_DARKNESS, oTarget) == TRUE)
|
|
//{
|
|
// return;
|
|
//}
|
|
|
|
if(GetIsObjectValid(oTarget) && oTarget != GetAreaOfEffectCreator())
|
|
{
|
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId()));
|
|
}
|
|
else
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
|
|
}
|
|
|
|
if (iShadow)
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink2, oTarget,0.0f,FALSE);
|
|
else
|
|
{
|
|
if(GetPRCSwitch(PRC_PNP_DARKNESS))
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePnP, oTarget,0.0f,FALSE);
|
|
else
|
|
//Fire cast spell at event for the specified target
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget,0.0f,FALSE);
|
|
}
|
|
}
|
|
else if (oTarget == GetAreaOfEffectCreator())
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
|
|
//Fire cast spell at event for the specified target
|
|
if(GetPRCSwitch(PRC_PNP_DARKNESS))
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, ePnP, oTarget,0.0f,FALSE);
|
|
else
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink2, oTarget,0.0f,FALSE);
|
|
}
|
|
|
|
|
|
|
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
|
// Getting rid of the local integer storing the spellschool name
|
|
|
|
}
|
|
|
|
|
|
|