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.
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*
 | |
| 15/02/19 by Stratovarius
 | |
| 
 | |
| Curtain of Shadows
 | |
| 
 | |
| Initiate, Veil of Shadows 
 | |
| Level/School: 5th/Transmutation 
 | |
| Range: Close (25 ft. + 5 ft./2 levels) 
 | |
| Effect: Shadowy wall 
 | |
| Duration: 1 minute/level 
 | |
| Saving Throw: None 
 | |
| Spell Resistance: No
 | |
| 
 | |
| You create a wall of frigid shadow that wracks all who pass through it with cold.
 | |
| 
 | |
| You create a wall of shadow. Any creature passing through the wall takes 1d6 points of cold damage per caster level (maximum 15d6).
 | |
| */
 | |
| 
 | |
| void DecrementTentacleCount(object oTarget, string sVar)
 | |
| {
 | |
|     SetLocalInt(oTarget, sVar, GetLocalInt(oTarget, sVar) - 1);
 | |
| }
 | |
| 
 | |
| #include "shd_inc_shdfunc"
 | |
| #include "prc_inc_combmove"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     if (!GetIsObjectValid(GetAreaOfEffectCreator()))
 | |
|     {
 | |
|         DestroyObject(OBJECT_SELF);
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     //Declare major variables
 | |
|     object oShadow = GetAreaOfEffectCreator();
 | |
|     struct mystery myst = GetLocalMystery(oShadow, MYST_HOLD_MYST); 
 | |
| 
 | |
|     object oTarget = GetFirstInPersistentObject();
 | |
|     while(GetIsObjectValid(oTarget))
 | |
|     {
 | |
|         if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oShadow) && GetCreatureFlag(oTarget, CREATURE_VAR_IS_INCORPOREAL) != TRUE)
 | |
|         {
 | |
|             //Fire cast spell at event for the target
 | |
|             SignalEvent(oTarget, EventSpellCastAt(oShadow, SPELL_EVARDS_BLACK_TENTACLES));
 | |
|             //now do grappling and stuff
 | |
|             int nGrappleSucessful = FALSE;
 | |
|             //this spell doesnt need to make a touch attack
 | |
|             //as defined in the spell
 | |
|             int nAttackerGrappleMod = myst.nShadowcasterLevel + 8;
 | |
|             nGrappleSucessful = _DoGrappleCheck(OBJECT_INVALID, oTarget, nAttackerGrappleMod);
 | |
|             if(nGrappleSucessful)
 | |
|             {
 | |
|                 //if already being grappled, apply damage
 | |
|                 if(GetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF)))
 | |
|                 {
 | |
|                     //apply the damage
 | |
|                     int nDamage = MetashadowsDamage(myst, 6, 1, 4);
 | |
|                     effect eDam = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_PLUS_TWO);
 | |
|                     SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
 | |
|                 }
 | |
|                 //now being grappled
 | |
|                 AssignCommand(oTarget, ClearAllActions());
 | |
|                 effect eHold = EffectCutsceneImmobilize();
 | |
|                 effect eEntangle = EffectVisualEffect(VFX_DUR_SPELLTURNING_R);
 | |
|                 effect eLink = EffectLinkEffects(eHold, eEntangle);
 | |
|                 //eLink = EffectKnockdown();
 | |
|                 SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, 6.0);
 | |
|                 SetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF),
 | |
|                     GetLocalInt(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF))+1);
 | |
|                 DelayCommand(6.1, DecrementTentacleCount(oTarget, "GrappledBy_"+ObjectToString(OBJECT_SELF)));
 | |
|             }
 | |
|         }
 | |
|         oTarget = GetNextInPersistentObject();
 | |
|     }  
 | |
| }
 |