Finished Invocations for Ability focus
Finished the rest of the Invocations for Ability focus.
This commit is contained in:
parent
2caeb8941c
commit
3a362d25be
@ -27,6 +27,10 @@ void main()
|
|||||||
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
||||||
int nPenetr = CasterLvl + SPGetPenetr();
|
int nPenetr = CasterLvl + SPGetPenetr();
|
||||||
int iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
|
int iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
|
||||||
|
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_CURSE_OF_DESPAIR, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
int dec = 2 * iAttackRoll;//4 on Critical Hit
|
int dec = 2 * iAttackRoll;//4 on Critical Hit
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
||||||
effect eCurse = EffectCurse(dec, dec, dec, dec, dec, dec);
|
effect eCurse = EffectCurse(dec, dec, dec, dec, dec, dec);
|
||||||
@ -43,7 +47,7 @@ void main()
|
|||||||
if (!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
if (!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
||||||
{
|
{
|
||||||
//Make Will Save
|
//Make Will Save
|
||||||
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, oCaster)))
|
if (!/*Will Save*/ PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC))
|
||||||
{
|
{
|
||||||
//Apply Effect and VFX
|
//Apply Effect and VFX
|
||||||
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eCurse, oTarget, 0.0f, TRUE, -1, CasterLvl);
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eCurse, oTarget, 0.0f, TRUE, -1, CasterLvl);
|
||||||
|
@ -26,9 +26,6 @@ void main()
|
|||||||
location lTarget = PRCGetSpellTargetLocation();
|
location lTarget = PRCGetSpellTargetLocation();
|
||||||
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
|
||||||
int nPenetr = CasterLvl + SPGetPenetr();
|
int nPenetr = CasterLvl + SPGetPenetr();
|
||||||
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
|
||||||
|
|
||||||
if (GetHasFeat(FEAT_ABFOC_DEAFENING_ROAR, oCaster)) nDC += 2;
|
|
||||||
|
|
||||||
float fDelay;
|
float fDelay;
|
||||||
effect eDeaf = EffectDeaf();
|
effect eDeaf = EffectDeaf();
|
||||||
@ -42,6 +39,10 @@ void main()
|
|||||||
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
||||||
|
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_DEAFENING_ROAR, oCaster)) nDC += 2;
|
||||||
|
|
||||||
if(oTarget != oCaster && !GetIsReactionTypeFriendly(oTarget))
|
if(oTarget != oCaster && !GetIsReactionTypeFriendly(oTarget))
|
||||||
{
|
{
|
||||||
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
|
||||||
|
@ -40,8 +40,12 @@ void main()
|
|||||||
|
|
||||||
//Get first target in the spell cone
|
//Get first target in the spell cone
|
||||||
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
|
||||||
|
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_FRIGHTFUL_PRESENCE, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)
|
if(spellsIsTarget(oTarget, SPELL_TARGET_SELECTIVEHOSTILE, OBJECT_SELF)
|
||||||
&& MyPRCGetRacialType(oTarget)!= RACIAL_TYPE_DRAGON)
|
&& MyPRCGetRacialType(oTarget)!= RACIAL_TYPE_DRAGON)
|
||||||
{
|
{
|
||||||
@ -52,7 +56,7 @@ void main()
|
|||||||
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
||||||
{
|
{
|
||||||
//Make a will save - if failed, shaken for 10 minutes
|
//Make a will save - if failed, shaken for 10 minutes
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_FEAR, oCaster, fDelay))
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, oCaster, fDelay))
|
||||||
{
|
{
|
||||||
//Apply the linked effects and the VFX impact
|
//Apply the linked effects and the VFX impact
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(10), TRUE, -1, CasterLvl));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(10), TRUE, -1, CasterLvl));
|
||||||
|
@ -36,8 +36,14 @@ void main()
|
|||||||
//Get first target in the spell cylinder
|
//Get first target in the spell cylinder
|
||||||
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fRange, lTarget,
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fRange, lTarget,
|
||||||
TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
|
TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_SCALDING_GUST, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
|
||||||
{
|
{
|
||||||
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
|
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
|
||||||
@ -47,7 +53,7 @@ void main()
|
|||||||
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
||||||
{
|
{
|
||||||
if(PRCGetCreatureSize(oTarget) < CREATURE_SIZE_MEDIUM)
|
if(PRCGetCreatureSize(oTarget) < CREATURE_SIZE_MEDIUM)
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, GetInvocationSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_NONE))
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
|
||||||
{
|
{
|
||||||
effect eWindblown = EffectKnockdown();
|
effect eWindblown = EffectKnockdown();
|
||||||
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eWindblown, oTarget, 6.0));
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eWindblown, oTarget, 6.0));
|
||||||
|
@ -50,8 +50,12 @@ void main()
|
|||||||
|
|
||||||
//Get first target in the spell cone
|
//Get first target in the spell cone
|
||||||
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(OBJECT_SELF));
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(OBJECT_SELF));
|
||||||
|
|
||||||
while(GetIsObjectValid(oTarget))
|
while(GetIsObjectValid(oTarget))
|
||||||
{
|
{
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, oCaster);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_TERRIFYING_ROAR, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)
|
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster)
|
||||||
&& !(GetHitDice(oTarget) > CasterLvl))
|
&& !(GetHitDice(oTarget) > CasterLvl))
|
||||||
{
|
{
|
||||||
@ -62,7 +66,7 @@ void main()
|
|||||||
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
|
||||||
{
|
{
|
||||||
//Make a will save - if failed, panicked
|
//Make a will save - if failed, panicked
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, oCaster), SAVING_THROW_TYPE_FEAR, oCaster, fDelay))
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR, oCaster, fDelay))
|
||||||
{
|
{
|
||||||
//Apply the linked effects and the VFX impact
|
//Apply the linked effects and the VFX impact
|
||||||
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0, TRUE, -1, CasterLvl));
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0, TRUE, -1, CasterLvl));
|
||||||
|
@ -11,6 +11,8 @@ void main()
|
|||||||
object oTarget = GetEnteringObject();
|
object oTarget = GetEnteringObject();
|
||||||
int CasterLvl = GetInvokerLevel(GetAreaOfEffectCreator(), CLASS_TYPE_WARLOCK);
|
int CasterLvl = GetInvokerLevel(GetAreaOfEffectCreator(), CLASS_TYPE_WARLOCK);
|
||||||
int nDC = GetInvocationSaveDC(oTarget, GetAreaOfEffectCreator(),INVOKE_ENERVATING_SHADOW);
|
int nDC = GetInvocationSaveDC(oTarget, GetAreaOfEffectCreator(),INVOKE_ENERVATING_SHADOW);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_ENERVATING_SHADOW, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
effect eConceal = EffectConcealment(20);
|
effect eConceal = EffectConcealment(20);
|
||||||
effect eStrength = EffectAbilityDecrease(ABILITY_STRENGTH, 4);
|
effect eStrength = EffectAbilityDecrease(ABILITY_STRENGTH, 4);
|
||||||
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
||||||
|
@ -15,8 +15,11 @@ void main()
|
|||||||
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(),
|
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(),
|
||||||
INVOKE_NIGHTMARES_MADE_REAL));
|
INVOKE_NIGHTMARES_MADE_REAL));
|
||||||
|
|
||||||
|
int nDC = GetInvocationSaveDC(oTarget, GetAreaOfEffectCreator(), INVOKE_NIGHTMARES_MADE_REAL);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_NIGHTMARES_MADE_REAL, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
//save
|
//save
|
||||||
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, GetAreaOfEffectCreator(), INVOKE_NIGHTMARES_MADE_REAL), SAVING_THROW_TYPE_SPELL))
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL))
|
||||||
{
|
{
|
||||||
effect eEntangle = EffectLinkEffects(EffectEntangle(), EffectVisualEffect(VFX_DUR_ENTANGLE));
|
effect eEntangle = EffectLinkEffects(EffectEntangle(), EffectVisualEffect(VFX_DUR_ENTANGLE));
|
||||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEntangle, oTarget, RoundsToSeconds(nCasterLevel));
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEntangle, oTarget, RoundsToSeconds(nCasterLevel));
|
||||||
|
@ -13,6 +13,8 @@ void main()
|
|||||||
object oCaster = GetAreaOfEffectCreator();
|
object oCaster = GetAreaOfEffectCreator();
|
||||||
int nCasterLvl = GetInvokerLevel(oCaster, CLASS_TYPE_WARLOCK);
|
int nCasterLvl = GetInvokerLevel(oCaster, CLASS_TYPE_WARLOCK);
|
||||||
int nDC = GetInvocationSaveDC(oTarget, oCaster, INVOKE_WALL_OF_GLOOM);
|
int nDC = GetInvocationSaveDC(oTarget, oCaster, INVOKE_WALL_OF_GLOOM);
|
||||||
|
if (GetHasFeat(FEAT_ABFOC_WALL_OF_GLOOM, OBJECT_SELF)) nDC += 2;
|
||||||
|
|
||||||
effect eConceal = EffectConcealment(50);
|
effect eConceal = EffectConcealment(50);
|
||||||
effect eHalt = EffectMovementSpeedDecrease(99);
|
effect eHalt = EffectMovementSpeedDecrease(99);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user