forked from Jaysyn/PRC8
68 lines
2.5 KiB
Plaintext
68 lines
2.5 KiB
Plaintext
|
//:://////////////////////////////////////////////
|
||
|
//:: FileName: "ss_ep_unseenwand"
|
||
|
/* Purpose: Unseen Wanderer - grants a player target the "Wander Unseen"
|
||
|
feat, which allows you to turn invisible/visible at will, permanently.
|
||
|
*/
|
||
|
//:://////////////////////////////////////////////
|
||
|
//:: Created By: Boneshank
|
||
|
//:: Last Updated On: March 13, 2004
|
||
|
//:://////////////////////////////////////////////
|
||
|
|
||
|
#include "prc_alterations"
|
||
|
#include "inc_epicspells"
|
||
|
//#include "x2_inc_spellhook"
|
||
|
#include "x0_i0_position"
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||
|
SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION);
|
||
|
|
||
|
if (!X2PreSpellCastCode())
|
||
|
{
|
||
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||
|
return;
|
||
|
}
|
||
|
object oTarget = PRCGetSpellTargetObject();
|
||
|
if (GetIsObjectValid(oTarget) && // Is the target valid?
|
||
|
!GetHasFeat(5028, oTarget) && // Does the target not already have the feat?
|
||
|
GetIsPC(oTarget)) // Is the target a player?
|
||
|
{
|
||
|
if (GetCanCastSpell(OBJECT_SELF, SPELL_EPIC_UNSEENW))
|
||
|
{
|
||
|
int nY;
|
||
|
effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS);
|
||
|
float fAngle, fDist, fOrient;
|
||
|
location lTarget = GetLocation(oTarget);
|
||
|
location lNew, lNew2;
|
||
|
float fDelay = 0.2;
|
||
|
for (nY = 20; nY > 0; nY--) // Where in perimeter.
|
||
|
{
|
||
|
fAngle = IntToFloat(nY * 18);
|
||
|
fDist = 1.1;
|
||
|
fOrient = fAngle;
|
||
|
lNew = GenerateNewLocationFromLocation
|
||
|
(lTarget, fDist, fAngle, fOrient);
|
||
|
fAngle += 180.0;
|
||
|
fOrient = fAngle;
|
||
|
lNew2 = GenerateNewLocationFromLocation
|
||
|
(lTarget, fDist, fAngle, fOrient);
|
||
|
DelayCommand(fDelay,
|
||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lNew));
|
||
|
DelayCommand(fDelay,
|
||
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lNew2));
|
||
|
fDelay += 0.4;
|
||
|
}
|
||
|
DelayCommand(6.0, GiveFeat(oTarget, 428));
|
||
|
FloatingTextStringOnCreature("You have gained the ability " +
|
||
|
"to wander unseen at will!", oTarget, FALSE);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
FloatingTextStringOnCreature("Spell failed - target already has this " +
|
||
|
"ability.", OBJECT_SELF, FALSE);
|
||
|
|
||
|
DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR");
|
||
|
}
|
||
|
|