Further file organization
Further file organization
This commit is contained in:
51
nwn/nwnprc/trunk/newspellbook/bnd_kss_prot.nss
Normal file
51
nwn/nwnprc/trunk/newspellbook/bnd_kss_prot.nss
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
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));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user