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.
		
			
				
	
	
		
			145 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*:://////////////////////////////////////////////
 | 
						|
//:: Spell Name Faerie Fire
 | 
						|
//:: Spell FileName PHS_S_FaerieFire
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: In Game Spell desctiption
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Evocation [Light]
 | 
						|
    Level: Drd 1
 | 
						|
    Components: V, S, DF
 | 
						|
    Casting Time: 1 standard action
 | 
						|
    Range: Long (40M)
 | 
						|
    Area: Creatures and objects within a 1.67-M.-radius burst
 | 
						|
    Duration: 1 min./level (D)
 | 
						|
    Saving Throw: None
 | 
						|
    Spell Resistance: Yes
 | 
						|
 | 
						|
    A pale glow surrounds and outlines the subjects. Outlined subjects shed
 | 
						|
    light as candles. Outlined creatures have blur, displacement, invisibility,
 | 
						|
    or similar effects removed from them, and they cannot apply such effects
 | 
						|
    again until the duration expires of Faeri Fire is dispelled. The light is
 | 
						|
    too dim to have any special effect on undead or dark-dwelling creatures
 | 
						|
    vulnerable to light. The light, however, carries with it a -10 penalty to
 | 
						|
    hide checks if illuminated. The faerie fire is randomly blue, green, or violet.
 | 
						|
    The faerie fire does not cause any harm to the objects or creatures thus
 | 
						|
    outlined.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Spell Effects Applied / Notes
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Ok, small burst.
 | 
						|
 | 
						|
    It only removes the effects and doesn't allow them to be reapplied.
 | 
						|
 | 
						|
    Note:
 | 
						|
    Could change to dispelling effects. This would mean that for the level 1
 | 
						|
    spell that it is, it could be less powerful.
 | 
						|
    Note 2:
 | 
						|
    It has the smallest radius, and might not be too harmful anyway.
 | 
						|
 | 
						|
    Applies a -10 penalty to the hide skill, however.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Created By: Jasperre
 | 
						|
//::////////////////////////////////////////////*/
 | 
						|
 | 
						|
#include "PHS_INC_SPELLS"
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    // Spell Hook Check.
 | 
						|
    if(!PHS_SpellHookCheck(PHS_SPELL_FAERIE_FIRE)) return;
 | 
						|
 | 
						|
    // Declare major variables
 | 
						|
    object oCaster = OBJECT_SELF;
 | 
						|
    object oTarget;
 | 
						|
    location lTarget = GetSpellTargetLocation();
 | 
						|
    int nCasterLevel = PHS_GetCasterLevel();
 | 
						|
    int nMetaMagic = PHS_GetMetaMagicFeat();
 | 
						|
    float fDelay;
 | 
						|
    int nVFX;
 | 
						|
    effect eCheck;
 | 
						|
 | 
						|
    // Get duration in minutes
 | 
						|
    float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel, nMetaMagic);
 | 
						|
 | 
						|
    // Randomise nVFX
 | 
						|
    switch(d3())
 | 
						|
    {
 | 
						|
        case 1: nVFX = VFX_DUR_GLOW_LIGHT_BLUE; break;
 | 
						|
        case 2: nVFX = VFX_DUR_GLOW_LIGHT_GREEN; break;
 | 
						|
        case 3: nVFX = VFX_DUR_GLOW_LIGHT_PURPLE; break;
 | 
						|
    }
 | 
						|
 | 
						|
    // Declare Effects
 | 
						|
    effect eDur = EffectVisualEffect(nVFX);
 | 
						|
    effect eHide = EffectSkillDecrease(SKILL_HIDE, 10);
 | 
						|
    effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | 
						|
 | 
						|
    effect eLink = EffectLinkEffects(eDur, eHide);
 | 
						|
    eLink = EffectLinkEffects(eLink, eCessate);
 | 
						|
 | 
						|
    // Apply AOE visual
 | 
						|
    effect eImpact = EffectVisualEffect(PHS_VFX_FNF_FAERIE_FIRE);
 | 
						|
    PHS_ApplyLocationVFX(lTarget, eImpact);
 | 
						|
 | 
						|
    // Get all targets in a sphere, 1.67M radius, creatures only.
 | 
						|
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 1.67, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | 
						|
    // Loop targets
 | 
						|
    while(GetIsObjectValid(oTarget))
 | 
						|
    {
 | 
						|
        // PvP Check
 | 
						|
        if(!GetIsReactionTypeFriendly(oTarget, oCaster) &&
 | 
						|
        // Make sure they are not immune to spells
 | 
						|
           !PHS_TotalSpellImmunity(oTarget))
 | 
						|
        {
 | 
						|
            //Fire cast spell at event for the specified target
 | 
						|
            PHS_SignalSpellCastAt(oTarget, PHS_SPELL_FAERIE_FIRE);
 | 
						|
 | 
						|
            //Get the distance between the explosion and the target to calculate delay
 | 
						|
            fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/30;
 | 
						|
 | 
						|
            // Spell resistance And immunity checking.
 | 
						|
            if(!PHS_SpellResistanceCheck(oCaster, oTarget, fDelay))
 | 
						|
            {
 | 
						|
                // Remove the effects from the target:
 | 
						|
                // * Displacement, EffectInvisibility, Blur.
 | 
						|
                eCheck = GetFirstEffect(oTarget);
 | 
						|
                while(GetIsEffectValid(eCheck))
 | 
						|
                {
 | 
						|
                    switch(GetEffectType(eCheck))
 | 
						|
                    {
 | 
						|
                        case EFFECT_TYPE_INVISIBILITY:
 | 
						|
                        case EFFECT_TYPE_IMPROVEDINVISIBILITY:
 | 
						|
                        {
 | 
						|
                            // Remove all invisibilities
 | 
						|
                            RemoveEffect(oTarget, eCheck);
 | 
						|
                        }
 | 
						|
                        break;
 | 
						|
                        // Other spells
 | 
						|
                        default:
 | 
						|
                        {
 | 
						|
                            switch(GetEffectSpellId(eCheck))
 | 
						|
                            {
 | 
						|
                                case PHS_SPELL_BLUR:
 | 
						|
                                case PHS_SPELL_FAERIE_FIRE: // No overlap of -10
 | 
						|
                                case PHS_SPELL_DISPLACEMENT:
 | 
						|
                                {
 | 
						|
                                    // Remove all displacement and blurs
 | 
						|
                                    RemoveEffect(oTarget, eCheck);
 | 
						|
                                }
 | 
						|
                                break;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    // Get next effect
 | 
						|
                    eCheck = GetNextEffect(oTarget);
 | 
						|
                }
 | 
						|
                // Apply effects
 | 
						|
                PHS_ApplyDuration(oTarget, eLink, fDuration);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        // Get Next Target
 | 
						|
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, 1.67, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | 
						|
    }
 | 
						|
}
 |