//:://///////////////////////////////////////////// //:: Invisibility Sphere //:: NW_S0_InvSph.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* All allies within 15ft are rendered invisible. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Jan 7, 2002 //::////////////////////////////////////////////// //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff #include "prc_alterations" #include "prc_spell_const" #include "x2_inc_spellhook" void main() { DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_ILLUSION); /* Spellcast Hook Code Added 2003-06-23 by GeorgZ If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables including Area of Effect Object int nDuration = GetLevelByClass(CLASS_TYPE_NIGHTSHADE,OBJECT_SELF); //Make sure duration does no equal 0 if (nDuration < 1) { nDuration = 1; } location lTarget = GetSpellTargetLocation(); effect eInvis = EffectInvisibility(INVISIBILITY_TYPE_NORMAL); effect eVis = EffectVisualEffect(VFX_DUR_INVISIBILITY); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); effect eSanc = EffectEthereal(); effect eLink = EffectLinkEffects(eInvis, eVis); eLink = EffectLinkEffects(eLink, eDur); eLink = EffectLinkEffects(eLink, eSanc); object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE); //Cycle through the targets within the spell shape until an invalid object is captured. while (GetIsObjectValid(oTarget)) { if(GetIsFriend(oTarget, OBJECT_SELF)) // * don't try and make dead people invisible if (GetIsDead(oTarget) == FALSE) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SHADOWWALK, FALSE)); //Apply the VFX impact and effects ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget,HoursToSeconds(nDuration)); } //Select the next target within the spell shape. oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, lTarget, TRUE, OBJECT_TYPE_CREATURE ); } DeleteLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR"); // Getting rid of the local integer storing the spellschool name }