//:://///////////////////////////////////////////// //:: Hold Monster //:: NW_S0_HoldMon //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Will hold any monster in place for 1 round per caster level. */ //::////////////////////////////////////////////// //:: Created By: Keith Soleski //:: Created On: Jan 18, 2001 //::////////////////////////////////////////////// //:: Update Pass By: Preston W, On: Aug 1, 2001 /* Patch 1.71 - added missing saving throw subtype as per spell's descriptor */ #include "70_inc_spells" #include "x0_i0_spells" #include "x2_inc_spellhook" void main() { /* Spellcast Hook Code Added 2003-06-23 by GeorgZ If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables spellsDeclareMajorVariables(); int nDuration = spell.Level; nDuration = 5; //GetScaledDuration(nDuration, spell.Target); effect eParal = EffectParalyze(); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED); effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD); effect eLink = EffectLinkEffects(eDur2, eDur); eLink = EffectLinkEffects(eLink, eParal); eLink = EffectLinkEffects(eLink, eDur3); if(spellsIsTarget(spell.Target, SPELL_TARGET_SINGLETARGET, spell.Caster)) { //Fire cast spell at event for the specified target SignalEvent(spell.Target, EventSpellCastAt(spell.Caster, spell.Id)); //Make SR check if (!MyResistSpell(spell.Caster, spell.Target)) { //Make Will save if (!MySavingThrow(SAVING_THROW_WILL, spell.Target, spell.DC, SAVING_THROW_TYPE_MIND_SPELLS, spell.Caster)) { //Check for metamagic extend if (spell.Meta == METAMAGIC_EXTEND) { nDuration = nDuration * 2; } //Apply the paralyze effect and the VFX impact ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, spell.Target, RoundsToSeconds(nDuration)); } } } }