PRC8/nwn/nwnprc/trunk/newspellbook/bnd_kss_prot.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

51 lines
1.8 KiB
Plaintext

/*
07/03/21 by Barmlot
bnd_kss_prot.nss
Knight of the Sacred Vestige's Protection & Aura
Vestige's Protection (CHA to AC for 1 round, 5 round cooldown)
Vestige's Protection Aura (as above, but affects all adjacent friends)
*/
#include "bnd_inc_bndfunc"
#include "prc_inc_combat"
void main()
{
object oBinder = OBJECT_SELF;
int nKSSLvl = GetLevelByClass(CLASS_TYPE_KNIGHT_SACRED_SEAL, oBinder);
int nCHAmod = max(1, GetAbilityModifier(ABILITY_CHARISMA, oBinder));
int nSpellID = PRCGetSpellId();
if(GetIsPatronVestigeBound(oBinder))
{
if(!BindAbilCooldown(oBinder, GetSpellId(), -1)) return;
if(!TakeSwiftAction(oBinder)) return;
if (nKSSLvl >= 3)//Vestige Protection Aura
{
location lTarget = GetLocation(oBinder);
object oAreaTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
while(GetIsObjectValid(oAreaTarget))
{
if(oAreaTarget != oBinder && // Not you
GetIsInMeleeRange(oBinder, oAreaTarget) && // They must be in melee range
GetIsFriend(oAreaTarget, oBinder)) // Only allies
{
//Apply bonuses to oAreaTarget
effect eLink = EffectACIncrease(nCHAmod, AC_DODGE_BONUS);
eLink = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nCHAmod), eLink);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oAreaTarget, RoundsToSeconds(1));
}
//Select the next target within the spell shape.
oAreaTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_SMALL, lTarget, TRUE, OBJECT_TYPE_CREATURE);
}
}
effect eLink = EffectACIncrease(nCHAmod, AC_DODGE_BONUS);
eLink = EffectLinkEffects(EffectSavingThrowIncrease(SAVING_THROW_REFLEX, nCHAmod), eLink);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oBinder, RoundsToSeconds(1));
}
}