Finished Invocations for Ability focus

Finished the rest of the Invocations for Ability focus.
This commit is contained in:
Jaysyn904 2025-05-13 23:36:44 -04:00
parent 2caeb8941c
commit 3a362d25be
8 changed files with 36 additions and 10 deletions

View File

@ -27,6 +27,10 @@ void main()
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
int nPenetr = CasterLvl + SPGetPenetr();
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
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
effect eCurse = EffectCurse(dec, dec, dec, dec, dec, dec);
@ -43,7 +47,7 @@ void main()
if (!PRCDoResistSpell(oCaster, oTarget, nPenetr))
{
//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
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eCurse, oTarget, 0.0f, TRUE, -1, CasterLvl);

View File

@ -26,9 +26,6 @@ void main()
location lTarget = PRCGetSpellTargetLocation();
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
int nPenetr = CasterLvl + SPGetPenetr();
int nDC = GetInvocationSaveDC(oTarget, oCaster);
if (GetHasFeat(FEAT_ABFOC_DEAFENING_ROAR, oCaster)) nDC += 2;
float fDelay;
effect eDeaf = EffectDeaf();
@ -42,6 +39,10 @@ void main()
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, FeetToMeters(30.0), lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
while(GetIsObjectValid(oTarget))
{
int nDC = GetInvocationSaveDC(oTarget, oCaster);
if (GetHasFeat(FEAT_ABFOC_DEAFENING_ROAR, oCaster)) nDC += 2;
if(oTarget != oCaster && !GetIsReactionTypeFriendly(oTarget))
{
fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;

View File

@ -40,8 +40,12 @@ void main()
//Get first target in the spell cone
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(oCaster));
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)
&& MyPRCGetRacialType(oTarget)!= RACIAL_TYPE_DRAGON)
{
@ -52,7 +56,7 @@ void main()
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
{
//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
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(10), TRUE, -1, CasterLvl));

View File

@ -36,8 +36,14 @@ void main()
//Get first target in the spell cylinder
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, fRange, lTarget,
TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(OBJECT_SELF));
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))
{
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
@ -47,7 +53,7 @@ void main()
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
{
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();
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eWindblown, oTarget, 6.0));

View File

@ -50,8 +50,12 @@ void main()
//Get first target in the spell cone
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCONE, fRange, lTarget, TRUE, OBJECT_TYPE_CREATURE, GetPosition(OBJECT_SELF));
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)
&& !(GetHitDice(oTarget) > CasterLvl))
{
@ -62,7 +66,7 @@ void main()
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr, fDelay))
{
//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
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0, TRUE, -1, CasterLvl));

View File

@ -11,6 +11,8 @@ void main()
object oTarget = GetEnteringObject();
int CasterLvl = GetInvokerLevel(GetAreaOfEffectCreator(), CLASS_TYPE_WARLOCK);
int nDC = GetInvocationSaveDC(oTarget, GetAreaOfEffectCreator(),INVOKE_ENERVATING_SHADOW);
if (GetHasFeat(FEAT_ABFOC_ENERVATING_SHADOW, OBJECT_SELF)) nDC += 2;
effect eConceal = EffectConcealment(20);
effect eStrength = EffectAbilityDecrease(ABILITY_STRENGTH, 4);
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);

View File

@ -15,8 +15,11 @@ void main()
SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(),
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
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));
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEntangle, oTarget, RoundsToSeconds(nCasterLevel));

View File

@ -13,6 +13,8 @@ void main()
object oCaster = GetAreaOfEffectCreator();
int nCasterLvl = GetInvokerLevel(oCaster, CLASS_TYPE_WARLOCK);
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 eHalt = EffectMovementSpeedDecrease(99);