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.
		
			
				
	
	
		
			136 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
//::///////////////////////////////////////////////
 | 
						|
//:: Elemental Swarm
 | 
						|
//:: NW_S0_EleSwarm.nss
 | 
						|
//:: Copyright (c) 2001 Bioware Corp.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
/*
 | 
						|
    This spell creates a conduit from the caster
 | 
						|
    to the elemental planes.  The first elemental
 | 
						|
    summoned is a 24 HD Air elemental.  Whenever an
 | 
						|
    elemental dies it is replaced by the next
 | 
						|
    elemental in the chain Air, Earth, Water, Fire
 | 
						|
*/
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Created By: Preston Watamaniuk
 | 
						|
//:: Created On: April 12, 2001
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Update Pass By: Preston W, On: July 30, 2001
 | 
						|
//:: modified by mr_bumpkin Dec 4, 2003
 | 
						|
 | 
						|
#include "prc_inc_spells"
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    if(!X2PreSpellCastCode()) return;
 | 
						|
 | 
						|
    PRCSetSchool(SPELL_SCHOOL_CONJURATION);
 | 
						|
 | 
						|
    //Declare major variables
 | 
						|
    object oCaster = OBJECT_SELF;
 | 
						|
    int CasterLvl = PRCGetCasterLevel(oCaster);
 | 
						|
    int nMetaMagic = PRCGetMetaMagicFeat();
 | 
						|
 | 
						|
    if(GetPRCSwitch(PRC_PNP_ELEMENTAL_SWARM)
 | 
						|
    && GetPRCSwitch(PRC_MULTISUMMON))
 | 
						|
    {
 | 
						|
        float fDuration = IntToFloat(60*10*CasterLvl);
 | 
						|
        float fDelay = 600.0;
 | 
						|
        if(GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL))
 | 
						|
        {
 | 
						|
            fDuration = RoundsToSeconds(CasterLvl);
 | 
						|
            fDelay = RoundsToSeconds(1);
 | 
						|
        }
 | 
						|
        //Check for metamagic duration
 | 
						|
        if ((nMetaMagic & METAMAGIC_EXTEND))
 | 
						|
            fDuration = fDuration * 2.0;  //Duration is +100%
 | 
						|
        MultisummonPreSummon();
 | 
						|
        int i;
 | 
						|
        int nVFX = VFX_FNF_SUMMON_MONSTER_3;
 | 
						|
        string sResRef;
 | 
						|
        int nElement = Random(4);
 | 
						|
        switch(nElement)
 | 
						|
        {
 | 
						|
                case 0:
 | 
						|
                    sResRef = "NW_S_AIRHUGE";
 | 
						|
                    break;
 | 
						|
                case 1:
 | 
						|
                    sResRef = "NW_S_WATERHUGE";
 | 
						|
                    break;
 | 
						|
                case 2:
 | 
						|
                    sResRef = "NW_S_FIREHUGE";
 | 
						|
                    break;
 | 
						|
                case 3:
 | 
						|
                    sResRef = "NW_S_EARTHHUGE";
 | 
						|
                    break;
 | 
						|
        }
 | 
						|
        effect eSummon = EffectSummonCreature(sResRef, nVFX);
 | 
						|
        int nHugeElementals = d4(2);
 | 
						|
        for(i=0; i<nHugeElementals; i++)
 | 
						|
        {
 | 
						|
            ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, PRCGetSpellTargetLocation(), fDuration);
 | 
						|
        }
 | 
						|
        
 | 
						|
        switch(nElement)
 | 
						|
        {
 | 
						|
                case 0:
 | 
						|
                    sResRef = "NW_S_AIRGREAT";
 | 
						|
                    break;
 | 
						|
                case 1:
 | 
						|
                    sResRef = "NW_S_WATERGREAT";
 | 
						|
                    break;
 | 
						|
                case 2:
 | 
						|
                    sResRef = "NW_S_FIREGREAT";
 | 
						|
                    break;
 | 
						|
                case 3:
 | 
						|
                    sResRef = "NW_S_EARTHGREAT";
 | 
						|
                    break;
 | 
						|
        }
 | 
						|
        eSummon = EffectSummonCreature(sResRef, nVFX);
 | 
						|
        int nGreaterElementals = d4(1);
 | 
						|
        for(i=0; i<nGreaterElementals; i++)
 | 
						|
        {
 | 
						|
            DelayCommand(fDelay, MultisummonPreSummon());
 | 
						|
            DelayCommand(fDelay, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(OBJECT_SELF), fDuration-fDelay));
 | 
						|
        }
 | 
						|
        switch(nElement)
 | 
						|
        {
 | 
						|
                case 0:
 | 
						|
                    sResRef = "NW_S_AIRELDER";
 | 
						|
                    break;
 | 
						|
                case 1:
 | 
						|
                    sResRef = "NW_S_WATERELDER";
 | 
						|
                    break;
 | 
						|
                case 2:
 | 
						|
                    sResRef = "NW_S_FIREELDER";
 | 
						|
                    break;
 | 
						|
                case 3:
 | 
						|
                    sResRef = "NW_S_EARTHELDER";
 | 
						|
                    break;
 | 
						|
        }
 | 
						|
        eSummon = EffectSummonCreature(sResRef, nVFX);
 | 
						|
        DelayCommand(fDelay*2.0, MultisummonPreSummon());
 | 
						|
        DelayCommand(fDelay*2.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetLocation(OBJECT_SELF), fDuration-(fDelay*2.0)));
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        int nDuration = 24;
 | 
						|
        effect eSummon;
 | 
						|
        effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
 | 
						|
        float fDuration = HoursToSeconds(nDuration);
 | 
						|
        if(GetPRCSwitch(PRC_SUMMON_ROUND_PER_LEVEL))
 | 
						|
            fDuration = RoundsToSeconds(CasterLvl);
 | 
						|
        //Check for metamagic duration
 | 
						|
        if((nMetaMagic & METAMAGIC_EXTEND))
 | 
						|
            fDuration = fDuration * 2.0;  //Duration is +100%
 | 
						|
        //Set the summoning effect
 | 
						|
        eSummon = EffectSwarm(FALSE, "NW_SW_AIRGREAT", "NW_SW_WATERGREAT","NW_SW_EARTHGREAT","NW_SW_FIREGREAT");
 | 
						|
        //Apply the summon effect
 | 
						|
        SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSummon, OBJECT_SELF, fDuration, TRUE,-1,CasterLvl);
 | 
						|
 | 
						|
        DelayCommand(0.5, AugmentSummonedCreature("NW_SW_AIRGREAT"));
 | 
						|
    }
 | 
						|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
 | 
						|
// Getting rid of the local integer storing the spellschool name
 | 
						|
}
 | 
						|
 |