PRC8/nwn/nwnprc/trunk/newspellbook/inv_darkoneluck.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

58 lines
2.1 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name Dark One's Own Luck
//:: FileName inv_darkoneluck.nss
//::///////////////////////////////////////////////
/*
Least Invocation
2nd Level Spell
You are favored by the dark powers, and gain a
bonus to one saving throw equal to your Charisma
modifier. This invocation lasts for 24 hours, and
you can only affect one save at a time.
*/
//::///////////////////////////////////////////////
#include "inv_inc_invfunc"
#include "inv_invokehook"
void main()
{
if(!PreInvocationCastCode()) return;
//Declare major variables
object oCaster = OBJECT_SELF;
object oTarget = PRCGetSpellTargetObject();
int CasterLvl = GetInvokerLevel(oCaster, GetInvokingClass());
int nBonus = GetAbilityModifier(ABILITY_CHARISMA, oCaster);
int nSpellID = GetSpellId();
effect eVis = EffectVisualEffect(VFX_IMP_MAGBLUE);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
int nSaveType;
switch(nSpellID)
{
case INVOKE_DARK_ONES_OWN_LUCK_FORT: nSaveType = SAVING_THROW_FORT; break;
case INVOKE_DARK_ONES_OWN_LUCK_REFLEX: nSaveType = SAVING_THROW_REFLEX; break;
case INVOKE_DARK_ONES_OWN_LUCK_WILL: nSaveType = SAVING_THROW_WILL; break;
}
effect eSave = EffectSavingThrowIncrease(nSaveType, nBonus);
effect eLink = EffectLinkEffects(eSave, eDur);
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oCaster, nSpellID, FALSE));
if(GetHasSpellEffect(INVOKE_DARK_ONES_OWN_LUCK_FORT, oTarget)
|| GetHasSpellEffect(INVOKE_DARK_ONES_OWN_LUCK_REFLEX, oTarget)
|| GetHasSpellEffect(INVOKE_DARK_ONES_OWN_LUCK_WILL, oTarget))
{
PRCRemoveSpellEffects(INVOKE_DARK_ONES_OWN_LUCK_FORT, oCaster, oTarget);
PRCRemoveSpellEffects(INVOKE_DARK_ONES_OWN_LUCK_REFLEX, oCaster, oTarget);
PRCRemoveSpellEffects(INVOKE_DARK_ONES_OWN_LUCK_WILL, oCaster, oTarget);
}
//Apply the VFX impact and effect
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(24),TRUE,-1,CasterLvl);
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}