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.
87 lines
3.0 KiB
Plaintext
87 lines
3.0 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Dancing Lights
|
|
//:: Spell FileName PHS_S_Danclight
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
20M range, 1 minute duration. 4 glowing lights are created, (will-o'-wisps)
|
|
which move around the caster. Wink out if dispelled or go over 20M away
|
|
from the caster.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Gone for the wisp version.
|
|
|
|
4 wisps, with ghost effect, which stay around the caster if they can,
|
|
each 1.5M from the caster in each direction (each gets a set direction).
|
|
|
|
The distance thing easily works as dimension door, and suchlike, could be
|
|
used.
|
|
|
|
Oh, and why have tihs instead of the longer duration "light"? well, basically,
|
|
it is a lot more light :-) but only 1 minute's worth (or 2 extended)
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_DANCING_LIGHTS)) return;
|
|
|
|
//Declare major variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject(); // Should be OBJECT_SELF.
|
|
location lTarget = GetLocation(oTarget);
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
string sResRef = "phs_dancinglight";
|
|
string PHS_DANCING_LIGHT_SET = "PHS_DANCING_LIGHT_SET";
|
|
int nCnt;
|
|
object oLight;
|
|
|
|
// Duration is 1 minute
|
|
float fDuration = PHS_GetDuration(PHS_MINUTES, 1, nMetaMagic);
|
|
|
|
// Declare effect for the caster to check for
|
|
effect eDur = EffectVisualEffect(VFX_DUR_GLOW_LIGHT_YELLOW);
|
|
|
|
// Check if they have the effects
|
|
if(GetHasSpellEffect(PHS_SPELL_DANCING_LIGHTS, oTarget))
|
|
{
|
|
// Check validness of the lights
|
|
for(nCnt = 1; nCnt <= 4; nCnt++)
|
|
{
|
|
// Check validness of light
|
|
if(GetIsObjectValid(GetLocalObject(oTarget, PHS_DANCING_LIGHT_SET + IntToString(nCnt))))
|
|
{
|
|
// Stop the script if any valid
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Remove previous castings
|
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_DANCING_LIGHTS, oTarget);
|
|
|
|
// Signal Event
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_DANCING_LIGHTS, FALSE);
|
|
|
|
// New eDur effect on you
|
|
PHS_ApplyDuration(oTarget, eDur, fDuration);
|
|
|
|
// Create the 4 creatures (and set them in locals)
|
|
for(nCnt = 1; nCnt <= 4; nCnt++)
|
|
{
|
|
// Create the light
|
|
oLight = CreateObject(OBJECT_TYPE_CREATURE, sResRef, lTarget);
|
|
// Set local on target (self)
|
|
SetLocalObject(oTarget, PHS_DANCING_LIGHT_SET + IntToString(nCnt), oLight);
|
|
// Set local on light for caster
|
|
SetLocalObject(oLight, PHS_MASTER, oTarget);
|
|
// Set local for the light number (1 = north, Etc, see "C" script)
|
|
SetLocalInt(oLight, PHS_DANCING_LIGHT_SET, nCnt);
|
|
}
|
|
}
|