PRC8_fork/nwn/nwnprc/trunk/spells/x0_s2_divshield.nss

54 lines
1.8 KiB
Plaintext
Raw Permalink Normal View History

//::///////////////////////////////////////////////
//:: Divine Shield
//:: x0_s2_divshield.nss
//:: Copyright (c) 2002 Bioware Corp.
//:://////////////////////////////////////////////
/*
Up to [turn undead] times per day the character may add his Charisma bonus to his armor
class for a number of rounds equal to the Charisma bonus.
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: Sep 13, 2002
//:://////////////////////////////////////////////
#include "prc_inc_spells"
void main()
{
if (!GetHasFeat(FEAT_TURN_UNDEAD, OBJECT_SELF))
{
SpeakStringByStrRef(40550);
}
else
if(GetHasFeatEffect(414) == FALSE)
{
//Declare major variables
object oTarget = PRCGetSpellTargetObject();
int nLevel = GetCasterLevel(OBJECT_SELF);
effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
int nCharismaBonus = GetAbilityModifier(ABILITY_CHARISMA);
if (GetHasFeat(FEAT_EPIC_DIVINE_SHIELD, OBJECT_SELF)) nCharismaBonus += nCharismaBonus;
effect eAC = EffectACIncrease(nCharismaBonus, AC_SHIELD_ENCHANTMENT_BONUS);
effect eLink = EffectLinkEffects(eAC, eDur);
eLink = SupernaturalEffect(eLink);
// * Do not allow this to stack
PRCRemoveEffectsFromSpell(oTarget, GetSpellId());
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, 474, FALSE));
//Apply Link and VFX effects to the target
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nCharismaBonus));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
DecrementRemainingFeatUses(OBJECT_SELF, FEAT_TURN_UNDEAD);
}
}