Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
69 lines
3.2 KiB
Plaintext
69 lines
3.2 KiB
Plaintext
#include "prc_inc_spells"
|
|
#include "prc_add_spell_dc"
|
|
void main()
|
|
{
|
|
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
if (!X2PreSpellCastCode()) return;
|
|
|
|
PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT);
|
|
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF))
|
|
{
|
|
// Fire cast spell at event for the specified target
|
|
PRCSignalSpellEvent(oTarget);
|
|
int nCasterLvl = PRCGetCasterLevel(OBJECT_SELF);
|
|
|
|
// Make SR check
|
|
if (!PRCDoResistSpell(OBJECT_SELF, oTarget,nCasterLvl+SPGetPenetr()))
|
|
{
|
|
// Fort save or die, if the fort save is successful will save or dazed for
|
|
// 1d4 rounds.
|
|
if (!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF), SAVING_THROW_TYPE_SPELL))
|
|
{
|
|
DeathlessFrenzyCheck(oTarget);
|
|
|
|
// Target dies if it fails fort save.
|
|
effect eDead = EffectDeath();
|
|
eDead = EffectLinkEffects(eDead, EffectVisualEffect(VFX_IMP_DEATH));
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDead, oTarget);
|
|
}
|
|
else if (GetHasMettle(oTarget, SAVING_THROW_FORT))
|
|
{
|
|
// This script does nothing if it has Mettle, bail
|
|
return;
|
|
}
|
|
else if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget,OBJECT_SELF), SAVING_THROW_TYPE_SPELL))
|
|
{
|
|
float fDuration = PRCGetMetaMagicDuration(RoundsToSeconds(d4()));
|
|
|
|
effect eDazed = EffectDazed();
|
|
eDazed = EffectLinkEffects(eDazed, EffectVisualEffect(VFX_IMP_DAZED_S));
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDazed, oTarget, fDuration,TRUE,-1,nCasterLvl);
|
|
}
|
|
|
|
// The target always takes a -2 penalty to saves, attacks, and skill checks,
|
|
// we do it out here in case the target is immune to death effects (it could
|
|
// then still be alive even if it fails it's fort save).
|
|
if (!GetIsDead(oTarget))
|
|
{
|
|
// Determine the spell's duration, taking metamagic feats into account.
|
|
float fDuration = PRCGetMetaMagicDuration(RoundsToSeconds(nCasterLvl));
|
|
|
|
// Target's saves, attack rolls, and skill checks are reduced by 2 for the
|
|
// spell's duration.
|
|
effect eDebuff = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2);
|
|
eDebuff = EffectLinkEffects(eDebuff, EffectAttackDecrease(2));
|
|
eDebuff = EffectLinkEffects(eDebuff, EffectSkillDecrease(SKILL_ALL_SKILLS, 2));
|
|
eDebuff = EffectLinkEffects(eDebuff, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE));
|
|
eDebuff = EffectLinkEffects(eDebuff, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR));
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDebuff, oTarget, fDuration,TRUE,-1,nCasterLvl);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT,
|
|
EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE), oTarget);
|
|
}
|
|
}
|
|
}
|
|
|
|
PRCSetSchool();
|
|
}
|