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:
@@ -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
|
||||
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user