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.
		
			
				
	
	
		
			81 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//::///////////////////////////////////////////////
 | 
						|
//:: Dismissal
 | 
						|
//:: NW_S0_Dismissal.nss
 | 
						|
//:: Copyright (c) 2001 Bioware Corp.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
/*
 | 
						|
    All summoned creatures within 30ft of caster
 | 
						|
    make a save and SR check or be banished
 | 
						|
*/
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Created By: Preston Watamaniuk
 | 
						|
//:: Created On: Oct 22, 2001
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: VFX Pass By: Preston W, On: June 20, 2001
 | 
						|
//:: modified by mr_bumpkin Dec 4, 2003
 | 
						|
 | 
						|
#include "prc_inc_spells"
 | 
						|
#include "prc_add_spell_dc"
 | 
						|
#include "inc_npc"
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    if(!X2PreSpellCastCode()) return;
 | 
						|
 | 
						|
    PRCSetSchool(SPELL_SCHOOL_ABJURATION);
 | 
						|
 | 
						|
    //Declare major variables
 | 
						|
    object oCaster = OBJECT_SELF;
 | 
						|
    object oMaster;
 | 
						|
    location lTarget = GetLocation(oCaster);
 | 
						|
    int CasterLvl = PRCGetCasterLevel(oCaster);
 | 
						|
    CasterLvl += SPGetPenetr();
 | 
						|
 | 
						|
    effect eVis = EffectVisualEffect(VFX_IMP_UNSUMMON);
 | 
						|
    effect eImpact = EffectVisualEffect(VFX_FNF_LOS_EVIL_30);
 | 
						|
 | 
						|
    ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, lTarget);
 | 
						|
 | 
						|
    //Get the first object in the are of effect
 | 
						|
    object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget);
 | 
						|
    while(GetIsObjectValid(oTarget))
 | 
						|
    {
 | 
						|
        //does the creature have a master.
 | 
						|
        oMaster = GetMasterNPC(oTarget);
 | 
						|
        //Is that master valid and is he an enemy
 | 
						|
        if(GetIsObjectValid(oMaster) && spellsIsTarget(oMaster, SPELL_TARGET_STANDARDHOSTILE, oCaster))
 | 
						|
        {
 | 
						|
            //Is the creature a summoned associate
 | 
						|
            int nAssociateType = GetAssociateTypeNPC(oTarget);
 | 
						|
            if((nAssociateType == ASSOCIATE_TYPE_SUMMONED &&
 | 
						|
                GetStringLeft(GetTag(oTarget), 14) != "psi_astral_con") ||
 | 
						|
                nAssociateType == ASSOCIATE_TYPE_FAMILIAR ||
 | 
						|
                nAssociateType == ASSOCIATE_TYPE_ANIMALCOMPANION ||
 | 
						|
                GetLocalInt(oTarget, "HenchPseudoSummon"))
 | 
						|
             {
 | 
						|
                SignalEvent(oTarget, EventSpellCastAt(oCaster, SPELL_DISMISSAL));
 | 
						|
                 //Make SR and will save checks
 | 
						|
                if (!PRCDoResistSpell(oCaster, oTarget, CasterLvl)
 | 
						|
                    && !PRCMySavingThrow(SAVING_THROW_WILL, oTarget, PRCGetSaveDC(oTarget, oCaster) + 6))
 | 
						|
                {
 | 
						|
                     //Apply the VFX and delay the destruction of the summoned monster so
 | 
						|
                     //that the script and VFX can play.
 | 
						|
                     SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
 | 
						|
                     AssignCommand(oTarget, SetIsDestroyable(TRUE));
 | 
						|
                     //OnDeath script... so lets kill it.
 | 
						|
                     effect eKill = EffectDamage(GetCurrentHitPoints(oTarget));
 | 
						|
                     //just to be extra-sure... :)
 | 
						|
                     effect eDeath = EffectDeath(FALSE, FALSE);
 | 
						|
                     DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eKill, oTarget));
 | 
						|
                     DelayCommand(0.25, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oTarget));
 | 
						|
                     DestroyObject(oTarget, 0.5);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        //Get next creature in the shape.
 | 
						|
        oTarget = MyNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, lTarget);
 | 
						|
    }
 | 
						|
 | 
						|
    PRCSetSchool();
 | 
						|
}
 |