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.
		
			
				
	
	
		
			110 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						||
   ----------------
 | 
						||
   Ectoplasmic Cocoon, Mass
 | 
						||
 | 
						||
   psi_pow_ectococm
 | 
						||
   ----------------
 | 
						||
 | 
						||
   9/4/05 by Stratovarius
 | 
						||
*/ /** @file
 | 
						||
 | 
						||
    Ectoplasmic Cocoon, Mass
 | 
						||
 | 
						||
    Metacreativity
 | 
						||
    Level: Shaper 7
 | 
						||
    Manifesting Time: 1 standard action
 | 
						||
    Range: Medium (100 ft. + 10 ft./level)
 | 
						||
    Area: 20-ft.-radius burst
 | 
						||
    Duration: 1 hour/level
 | 
						||
    Saving Throw: Reflex negates
 | 
						||
    Power Resistance: No
 | 
						||
    Power Points: 13
 | 
						||
    Metapsionics: Extend, Twin, Widen
 | 
						||
 | 
						||
    You draw writhing strands of ectoplasm from the Astral Plane that wrap up
 | 
						||
    the subjects in the area like mummies. The subjects can still breathe but
 | 
						||
    are otherwise helpless, unable to see outside the cocoon, speak, or take any
 | 
						||
    physical actions. The subjects’s nostrils are clear (air passes through the
 | 
						||
    cocoon normally).
 | 
						||
 | 
						||
    Augment: For every 2 additional power points you spend, the radius of this
 | 
						||
             power’s area increases by 5 feet.
 | 
						||
*/
 | 
						||
 | 
						||
#include "psi_inc_psifunc"
 | 
						||
#include "psi_inc_pwresist"
 | 
						||
#include "psi_spellhook"
 | 
						||
#include "prc_inc_spells"
 | 
						||
 | 
						||
void main()
 | 
						||
{
 | 
						||
/*
 | 
						||
  Spellcast Hook Code
 | 
						||
  Added 2004-11-02 by Stratovarius
 | 
						||
  If you want to make changes to all powers,
 | 
						||
  check psi_spellhook to find out more
 | 
						||
 | 
						||
*/
 | 
						||
 | 
						||
    if (!PsiPrePowerCastCode())
 | 
						||
    {
 | 
						||
    // If code within the PrePowerCastHook (i.e. UMD) reports FALSE, do not run this spell
 | 
						||
        return;
 | 
						||
    }
 | 
						||
 | 
						||
// End of Spell Cast Hook
 | 
						||
 | 
						||
    object oManifester = OBJECT_SELF;
 | 
						||
    struct manifestation manif =
 | 
						||
        EvaluateManifestation(oManifester, OBJECT_INVALID,
 | 
						||
                              PowerAugmentationProfile(PRC_NO_GENERIC_AUGMENTS,
 | 
						||
                                                       2, PRC_UNLIMITED_AUGMENTATION
 | 
						||
                                                       ),
 | 
						||
                              METAPSIONIC_EXTEND | METAPSIONIC_TWIN | METAPSIONIC_WIDEN
 | 
						||
                              );
 | 
						||
 | 
						||
    if(manif.bCanManifest)
 | 
						||
    {
 | 
						||
        int nDC         = GetManifesterDC(oManifester);
 | 
						||
        effect eLink    = EffectCutsceneParalyze();
 | 
						||
    	       eLink    = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY));
 | 
						||
    	       // The cocoon has hardness 8 and 20 hitpoints
 | 
						||
	        eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_SLASHING,    8));
 | 
						||
	       	eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_PIERCING,    8));
 | 
						||
	        eLink = EffectLinkEffects(eLink, EffectDamageResistance(DAMAGE_TYPE_BLUDGEONING, 8));    
 | 
						||
                eLink = EffectLinkEffects(eLink, EffectDamageReduction(20, DAMAGE_POWER_PLUS_TWENTY, 20));    
 | 
						||
        effect eVis     = EffectVisualEffect(VFX_DUR_TENTACLE);
 | 
						||
        float fRadius   = EvaluateWidenPower(manif, FeetToMeters(20.0f + (5.0f * manif.nTimesAugOptUsed_1)));
 | 
						||
        float fDuration = RoundsToSeconds(manif.nManifesterLevel);
 | 
						||
        object oTarget;
 | 
						||
        location lTarget = PRCGetSpellTargetLocation();
 | 
						||
        if(manif.bExtend) fDuration *= 2;
 | 
						||
 | 
						||
        // Handle Twin Power
 | 
						||
        int nRepeats = manif.bTwin ? 2 : 1;
 | 
						||
        for(; nRepeats > 0; nRepeats--)
 | 
						||
        {
 | 
						||
            oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | 
						||
            while (GetIsObjectValid(oTarget))
 | 
						||
            {
 | 
						||
				// Only effect those that are hostile
 | 
						||
	    		if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oManifester))
 | 
						||
				{
 | 
						||
        	        // Let the AI know
 | 
						||
	                PRCSignalSpellEvent(oTarget, TRUE, manif.nSpellID, oManifester);
 | 
						||
 | 
						||
        	        // Reflex negates
 | 
						||
	                if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_NONE))
 | 
						||
                	{
 | 
						||
        	            // Apply effects
 | 
						||
	       	            SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDuration, TRUE, manif.nSpellID, manif.nManifesterLevel);
 | 
						||
	                    SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget, 4.5f, FALSE);
 | 
						||
                	}// end if - Save
 | 
						||
				}	
 | 
						||
 | 
						||
                oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | 
						||
            }// end while - Target loop
 | 
						||
        }// end for - Twin Power
 | 
						||
    }// end if - Successfull manifestation
 | 
						||
}
 |