forked from Jaysyn/PRC8
51 lines
1.8 KiB
Plaintext
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));
|
||
|
}
|
||
|
}
|