2026/05/28 Afternoon update

Updated damagtypes.2da for CEP3 reserved rows.
Added and setup Darkvision icon.
Added and setup Ultravision icon.
Added spell icon for Thicket of Blades.
Fixed Blacklight, Cloud of the Archeai, Darkness, Deeper Darkness, Damning Darkness, Utterdark, Grasping Shadows, Dawn and Dusk and Child of Shadow and Light for Telflammar Shadowlord's Shadow Blur and Shadow Sight abilities.
Updated Blacklight's TLK entry.
Created a constant for Shadow Discorporation.
Fixed Shadow Time never ending on the targets.
Updated prc_inc_combat to use monk iterative progression if warranted.
Updated PRCGetIsRealSpellKnownByClass() to handle Sublime Chord better. (@Lightbeard)
Added class heartbeat script for Shadowlord to handle Shadow Blur and Shadow Sight.
Added ShadowlordEffects() to prc_inc_spells.
Added constants for new damagetypes.
Completely rewrote Verminlord's Vermin Domination.
Fixed duration for Empathic Feedback.
Fixed Morality Undone to not break characters over a server reset.
This commit is contained in:
Jaysyn904
2026-05-28 16:27:19 -04:00
parent b27d9d2e5f
commit c437270cd1
40 changed files with 813 additions and 362 deletions

View File

@@ -1,105 +1,107 @@
//::///////////////////////////////////////////////
//:: 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
//::///////////////////////////////////////////////
//:: 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
}
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)
{
ePnP = ShadowlordEffects(iShadow, ePnP);
eLink = ShadowlordEffects(iShadow, eLink);
eLink2 = ShadowlordEffects(iShadow, eLink2);
ePnP = TagEffect(ePnP, "SHADOWSIGHT+BLUR");
eLink = TagEffect(eLink, "SHADOWSIGHT+BLUR");
eLink2 = TagEffect(eLink2, "SHADOWSIGHT+BLUR");
}
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));
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
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
}

View File

@@ -59,7 +59,13 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
effect eEffect = GetFirstEffect(oTarget);
while(GetIsEffectValid(eEffect))
{
if(GetEffectTag(eEffect) == "PNP_DARKNESS")
if(GetEffectTag(eEffect) == "SHADOWSIGHT+BLUR")
{
RemoveEffect(oTarget, eEffect);
if(DEBUG) DoDebug("sp_blacklightb >> Removing SHADOWSIGHT+BLUR");
}
if(GetEffectTag(eEffect) == "PNP_DARKNESS")
RemoveEffect(oTarget, eEffect);
if(GetEffectTag(eEffect) == "PNP35_DARKNESS")
@@ -71,6 +77,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION);
eEffect = GetNextEffect(oTarget);
}
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
// Getting rid of the local integer storing the spellschool name
}

View File

@@ -1,3 +1,26 @@
//::///////////////////////////////////////////////
//:: Blacklight
//:: sp_blacklight.nss
//:://////////////////////////////////////////////
/*
You create an area of total darkness.
The darkness is impenetrable to normal vision
and darkvision, but you can see normally within
the blacklit area. Creatures outside the
spell's area, even you, cannot see through it.
You can cast the spell on a point in space, but
the effect is stationary unless you cast it cast
on a mobile object. You can cast the spell on a
creature, and the effect then radiates from the
creature and moves as it moves. Unattended
objects and points in space do not get saving
throws or benefit from spell resistance.
Blacklight counters or dispels any light spell
of equal or lower level, such as daylight.
*/
//:://////////////////////////////////////////////
#include "prc_inc_spells"
#include "prc_alterations"
@@ -46,5 +69,4 @@ void main()
SetAllAoEInts(SPELL_BLACKLIGHT, oAoE, PRCGetSpellSaveDC(SPELL_BLACKLIGHT, SPELL_SCHOOL_EVOCATION), 0, nCastLvl);
PRCSetSchool();
}
}

View File

@@ -1,15 +1,28 @@
//::///////////////////////////////////////////////
//:: Darkness: On Enter
//:: NW_S0_DarknessA.nss
//:: Copyright (c) 2001 Bioware Corp.
//:: Blacklight: On Enter
//:: sp_blacklighta.nss
//:://////////////////////////////////////////////
/*
Creates a globe of darkness around those in the area
of effect.
You create an area of total darkness.
The darkness is impenetrable to normal vision
and darkvision, but you can see normally within
the blacklit area. Creatures outside the
spell's area, even you, cannot see through it.
You can cast the spell on a point in space, but
the effect is stationary unless you cast it cast
on a mobile object. You can cast the spell on a
creature, and the effect then radiates from the
creature and moves as it moves. Unattended
objects and points in space do not get saving
throws or benefit from spell resistance.
Blacklight counters or dispels any light spell
of equal or lower level, such as daylight.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Feb 28, 2002
//:: Created By: Jaysyn
//:: Created On: 2026-05-28 12:07:02
//:://////////////////////////////////////////////
#include "prc_alterations"
#include "prc_inc_spells"
@@ -18,51 +31,51 @@ void main()
{
PRCSetSchool(SPELL_SCHOOL_EVOCATION);
int nMetaMagic = PRCGetMetaMagicFeat();
effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
effect eInvis2 = EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
effect eDarkv = EffectUltravision();
effect eCounc=EffectConcealment(50);
effect eDark = EffectDarkness();
effect eBlind= EffectBlindness();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eDark, eDur);
eLink = EffectLinkEffects(eLink, eBlind);
effect eLink2 = EffectLinkEffects(eInvis, eDur);
int nMetaMagic = PRCGetMetaMagicFeat();
effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
effect eInvis2 = EffectInvisibility(INVISIBILITY_TYPE_IMPROVED);
effect eDarkv = EffectUltravision();
effect eCounc = EffectConcealment(20);
effect eDark = EffectDarkness();
effect eBlind = EffectBlindness();
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
effect eLink = EffectLinkEffects(eDark, eDur);
eLink = EffectLinkEffects(eLink, eBlind);
effect eLink2 = EffectLinkEffects(eInvis, eDur);
eLink2=EffectLinkEffects(eInvis2,eDur);
eLink2=EffectLinkEffects(eDarkv, eLink2);
eLink2=EffectLinkEffects(eLink2,eCounc);
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);
eLink2 = EffectLinkEffects(eInvis2,eDur);
eLink2 = EffectLinkEffects(eDarkv, eLink2);
eLink2 = EffectLinkEffects(eLink2,eCounc);
object oTarget = GetEnteringObject();
int iShadow = GetLevelByClass(CLASS_TYPE_SHADOWLORD, oTarget);
if (iShadow)
{
eLink = ShadowlordEffects(iShadow, eLink);
eLink2 = ShadowlordEffects(iShadow, eLink2);
eLink = TagEffect(eLink, "SHADOWSIGHT+BLUR");
eLink2 = TagEffect(eLink2, "SHADOWSIGHT+BLUR");
}
if(GetIsObjectValid(oTarget) && oTarget != GetAreaOfEffectCreator())
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DARKNESS));
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BLACKLIGHT));
//Make SR Check
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,SPGetPenetrAOE(GetAreaOfEffectCreator())))
{
if (!iShadow)
//Fire cast spell at event for the specified target
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
}
}
else
{
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_DARKNESS, FALSE));
if (!iShadow)
//Fire cast spell at event for the specified target
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_BLACKLIGHT, FALSE));
//Fire cast spell at event for the specified target
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
}
}
@@ -75,4 +88,4 @@ void main()
}
PRCSetSchool();
}
}

View File

@@ -16,7 +16,7 @@ void main()
{
int nID = GetEffectSpellId(eAOE);
if( nID== SPELL_UR_BLACKLIGHT)
if( nID== SPELL_BLACKLIGHT)
{
if (GetEffectCreator(eAOE) == oCreator)
RemoveEffect(oTarget, eAOE);
@@ -26,6 +26,17 @@ void main()
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
effect eEffect = GetFirstEffect(oTarget);
while(GetIsEffectValid(eEffect))
{
if(GetEffectTag(eEffect) == "SHADOWSIGHT+BLUR")
{
RemoveEffect(oTarget, eEffect);
if(DEBUG) DoDebug("sp_blacklightb >> Removing SHADOWSIGHT+BLUR");
}
eEffect = GetNextEffect(oTarget);
}
PRCSetSchool();

View File

@@ -37,7 +37,17 @@ void main()
{
fDuration = fDuration *2; //Duration is +100%
}
int iShadow = GetLevelByClass(CLASS_TYPE_SHADOWLORD, oTarget);
if (iShadow)
{
eLink = ShadowlordEffects(iShadow, eLink);
eLink = TagEffect(eLink, "SHADOWSIGHT+BLUR");
eLink = ShadowlordEffects(iShadow, eLink);
eLinkConf = TagEffect(eLinkConf, "SHADOWSIGHT+BLUR");
}
// * 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)

View File

@@ -40,6 +40,16 @@ void main()
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
}
}
effect eEffect = GetFirstEffect(oTarget);
while(GetIsEffectValid(eEffect))
{
if(GetEffectTag(eEffect) == "SHADOWSIGHT+BLUR")
{
RemoveEffect(oTarget, eEffect);
if(DEBUG) DoDebug("sp_blacklightb >> Removing SHADOWSIGHT+BLUR");
}
eEffect = GetNextEffect(oTarget);
}
PRCSetSchool();
}

View File

@@ -65,14 +65,20 @@ void main()
ePnP = TagEffect(ePnP, "PNP35_DARKNESS");
}
object oTarget = GetEnteringObject();
object oPC = GetAreaOfEffectCreator();
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);
object oTarget = GetEnteringObject();
int iShadow = GetLevelByClass(CLASS_TYPE_SHADOWLORD, oTarget);
if (iShadow)
{
ePnP = ShadowlordEffects(iShadow, ePnP);
eLink = ShadowlordEffects(iShadow, eLink);
eLink2 = ShadowlordEffects(iShadow, eLink2);
ePnP = TagEffect(ePnP, "SHADOWSIGHT+BLUR");
eLink = TagEffect(eLink, "SHADOWSIGHT+BLUR");
eLink2 = TagEffect(eLink2, "SHADOWSIGHT+BLUR");
}
int nDuration = PRCGetCasterLevel(oPC);
if ((nMetaMagic & METAMAGIC_EXTEND))

View File

@@ -47,8 +47,8 @@ void main()
object oTarget = GetExitingObject();
object oPC = GetAreaOfEffectCreator();
effect eAOE;
effect eAOE;
// Clear the in-AOE marker to stop damage tracking
DeleteLocalInt(oTarget, "PRC_DamningDarkness_InAOE");
@@ -72,6 +72,18 @@ void main()
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}
}
}
effect eEffect = GetFirstEffect(oTarget);
while(GetIsEffectValid(eEffect))
{
if(GetEffectTag(eEffect) == "SHADOWSIGHT+BLUR")
{
RemoveEffect(oTarget, eEffect);
if(DEBUG) DoDebug("sp_damng_darkb >> Removing SHADOWSIGHT+BLUR");
}
eEffect = GetNextEffect(oTarget);
}
PRCSetSchool();
}

View File

@@ -65,7 +65,17 @@ void main()
//Spell Resist
if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
{
//Saving Throw
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
{
//Poor, poor paladin. It's pathetic that you didn't make your save.
AdjustAlignment(oTarget, ALIGNMENT_EVIL, (100 + nGoodEvil), FALSE);
// Store expiration time and shift amount using persistent locals
SetPersistantLocalInt(oTarget, "MoralityUndone_Expire", FloatToInt(GetTimeSecond() + fDur));
SetPersistantLocalInt(oTarget, "MoralityUndone_ShiftAmount", (100 + nGoodEvil));
}
/* //Saving Throw
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_EVIL))
{
//Poor, poor paladin. It's pathetic that you didn't make your save.
@@ -74,7 +84,7 @@ void main()
//Schedule restoration. This might be a problem if they were 100 before and
//improved their alignment any while evil. They might be restored to 85 instead.
DelayCommand(fDur, AdjustAlignment(oTarget, ALIGNMENT_GOOD, (100 + nGoodEvil), FALSE));
}
} */
}
//SPEvilShift(oPC);

View File

@@ -43,22 +43,46 @@ void main()
effect eLink = EffectInvisibility(INVISIBILITY_TYPE_DARKNESS);
eLink = EffectLinkEffects(eLink, EffectUltravision());
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_ULTRAVISION));
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE));
eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT));
eLink = EffectLinkEffects(eLink, EffectIcon(EFFECT_ICON_ULTRAVISION));
effect eDark = EffectDarkness();
int iShadow = GetLevelByClass(CLASS_TYPE_SHADOWLORD, oTarget);
if (iShadow)
{
eLink = ShadowlordEffects(iShadow, eLink);
eLink = TagEffect(eLink, "SHADOWSIGHT+BLUR");
eDark = ShadowlordEffects(iShadow, eDark);
eDark = TagEffect(eDark, "SHADOWSIGHT+BLUR");
}
//if valid and not caster
if(GetIsObjectValid(oTarget) && oTarget != oPC)
{
if(GetAlignmentGoodEvil(oTarget) != ALIGNMENT_EVIL)
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eDark, oTarget);
}
else
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
}
}
if(GetIsObjectValid(oTarget) && oTarget != oPC)
{
if(GetAlignmentGoodEvil(oTarget) != ALIGNMENT_EVIL)
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eDark, oTarget);
}
else
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
}
}
else if (oTarget == oPC)
{
// Caster gets effects based on alignment
if(GetAlignmentGoodEvil(oTarget) != ALIGNMENT_EVIL)
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eDark, oTarget);
}
else
{
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget);
}
}
PRCSetSchool();
}

View File

@@ -54,6 +54,12 @@ void main()
RemoveEffect(oTarget, eAOE);
}
if(GetEffectTag(eAOE) == "SHADOWSIGHT+BLUR")
{
RemoveEffect(oTarget, eAOE);
if(DEBUG) DoDebug("sp_utterdarkb >> Removing SHADOWSIGHT+BLUR");
}
//Get next effect on the target
eAOE = GetNextEffect(oTarget);
}