Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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();
|
|
}
|
|
}
|