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.
119 lines
3.9 KiB
Plaintext
119 lines
3.9 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Bestow Curse
|
|
//:: Greater Bestow Curse
|
|
//:: nw_s0_bescurse.nss
|
|
//::///////////////////////////////////////////////
|
|
/*
|
|
Bestow Curse
|
|
Necromancy
|
|
Level: Clr 3, Sor/Wiz 4
|
|
Components: V, S
|
|
Casting Time: 1 standard action
|
|
Range: Touch
|
|
Target: Creature touched
|
|
Duration: Permanent
|
|
Saving Throw: Will negates
|
|
Spell Resistance: Yes
|
|
|
|
You place a curse on the subject. Choose one of the
|
|
following three effects:
|
|
-6 decrease to an ability score (minimum 1).
|
|
-4 penalty on attack rolls, saves, ability checks,
|
|
and skill checks.
|
|
Each turn, the target has a 50% chance to act
|
|
normally; otherwise, it takes no action.
|
|
|
|
You may also invent your own curse, but it should
|
|
be no more powerful than those described above.
|
|
|
|
The curse bestowed by this spell cannot be dispelled,
|
|
but it can be removed with a break enchantment,
|
|
limited wish, miracle, remove curse, or wish spell.
|
|
|
|
Bestow curse counters remove curse.
|
|
|
|
Greater Bestow Curse
|
|
???
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: NWN version:
|
|
//:: Afflicted creature must save or suffer a -2 penalty
|
|
//:: to all ability scores. This is a supernatural effect.
|
|
//:://////////////////////////////////////////////
|
|
//:: By: Bob McCabe
|
|
//:: Created: March 6, 2001
|
|
//:: Modified: Jun 12, 2006
|
|
//:://////////////////////////////////////////////
|
|
//:: Flaming_Sword: Added touch attack roll
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_inc_sp_tch"
|
|
#include "prc_sp_func"
|
|
#include "prc_add_spell_dc"
|
|
|
|
int DoSpell(object oCaster, object oTarget, int nCasterLevel)
|
|
{
|
|
int nSpellID = PRCGetSpellId();
|
|
int iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
|
|
if (iAttackRoll > 0)
|
|
{
|
|
int nPenetr = nCasterLevel + SPGetPenetr();
|
|
int nPenalty = nSpellID == SPELL_GREATER_BESTOW_CURSE ? 4 : 2;
|
|
nPenalty *= iAttackRoll;//can score a *Critical Hit*
|
|
|
|
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
|
|
effect eCurse = EffectCurse(nPenalty, //str
|
|
nPenalty, //dex
|
|
nPenalty, //con
|
|
nPenalty, //int
|
|
nPenalty, //wis
|
|
nPenalty);//cha
|
|
//Make sure that curse is of type supernatural not magical
|
|
eCurse = SupernaturalEffect(eCurse);
|
|
|
|
//Signal spell cast at event
|
|
SignalEvent(oTarget, EventSpellCastAt(oTarget, nSpellID));
|
|
|
|
//Make SR Check
|
|
if (!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
|
{
|
|
//Make Will Save
|
|
if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oCaster)))
|
|
{
|
|
//Apply Effect and VFX
|
|
SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eCurse, oTarget, 0.0f, TRUE, nSpellID, nCasterLevel);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
|
|
}
|
|
}
|
|
}
|
|
|
|
return iAttackRoll; //return TRUE if spell charges should be decremented
|
|
}
|
|
|
|
void main()
|
|
{
|
|
if (!X2PreSpellCastCode()) return;
|
|
PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nCasterLevel = PRCGetCasterLevel(oCaster);
|
|
int nEvent = GetLocalInt(oCaster, PRC_SPELL_EVENT); //use bitwise & to extract flags
|
|
if(!nEvent) //normal cast
|
|
{
|
|
if(GetLocalInt(oCaster, PRC_SPELL_HOLD) && oCaster == oTarget)
|
|
{ //holding the charge, casting spell on self
|
|
SetLocalSpellVariables(oCaster, 1); //change 1 to number of charges
|
|
return;
|
|
}
|
|
DoSpell(oCaster, oTarget, nCasterLevel);
|
|
}
|
|
else
|
|
{
|
|
if(nEvent & PRC_SPELL_EVENT_ATTACK)
|
|
{
|
|
if(DoSpell(oCaster, oTarget, nCasterLevel))
|
|
DecrementSpellCharges(oCaster);
|
|
}
|
|
}
|
|
PRCSetSchool();
|
|
} |