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.
70 lines
2.4 KiB
Plaintext
70 lines
2.4 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Silence
|
|
//:: NW_S0_Silence.nss
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
The target is surrounded by a zone of silence
|
|
that allows them to move without sound. Spell
|
|
casters caught in this area will be unable to cast
|
|
spells.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Jan 7, 2002
|
|
//:://////////////////////////////////////////////
|
|
//:: modified by mr_bumpkin Dec 4, 2003
|
|
#include "prc_inc_spells"
|
|
#include "prc_add_spell_dc"
|
|
|
|
void main()
|
|
{
|
|
if(!X2PreSpellCastCode()) return;
|
|
|
|
PRCSetSchool(SPELL_SCHOOL_ILLUSION);
|
|
|
|
//Declare major variables including Area of Effect Object
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nCasterLvl = PRCGetCasterLevel(oCaster);
|
|
int nPenetr = nCasterLvl + SPGetPenetr();
|
|
int nMetaMagic = PRCGetMetaMagicFeat();
|
|
int nAoE = AOE_MOB_SILENCE;
|
|
|
|
//Make sure duration does no equal 0
|
|
if(nCasterLvl < 1)
|
|
nCasterLvl = 1;
|
|
|
|
float fDuration = RoundsToSeconds(nCasterLvl);
|
|
//Check Extend metamagic feat.
|
|
if(nMetaMagic & METAMAGIC_EXTEND)
|
|
fDuration *= 2; //Duration is +100%
|
|
|
|
if(!GetIsFriend(oTarget))
|
|
{
|
|
if(!PRCDoResistSpell(oCaster, oTarget, nPenetr))
|
|
{
|
|
if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (PRCGetSaveDC(oTarget, oCaster))))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_SILENCE));
|
|
|
|
//Create an instance of the AOE Object using the Apply Effect function
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(nAoE), oTarget, fDuration);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_SILENCE, FALSE));
|
|
//Create an instance of the AOE Object using the Apply Effect function
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectAreaOfEffect(nAoE), oTarget, fDuration);
|
|
}
|
|
|
|
//Setup Area Of Effect object
|
|
object oAoE = GetAreaOfEffectObject(GetLocation(oTarget), "VFX_MOB_SILENCE");
|
|
SetAllAoEInts(SPELL_SILENCE, oAoE, PRCGetSpellSaveDC(SPELL_SILENCE, SPELL_SCHOOL_ILLUSION), 0, nCasterLvl);
|
|
|
|
PRCSetSchool();
|
|
} |