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.
		
			
				
	
	
		
			162 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*:://////////////////////////////////////////////
 | 
						|
//:: Spell Name Fight Theme
 | 
						|
//:: Spell FileName XXX_S_FightTheme
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: In Game Spell desctiption
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Illusion [Phantasm] [Mind-Effecting]
 | 
						|
    Level: Brd 2
 | 
						|
    Components: V ("Hit it!")
 | 
						|
    Casting Time: 1 standard action
 | 
						|
    Range: 10M (30ft)
 | 
						|
    Area: All allies and foes within a 10M-radius (30ft) burst centered on you
 | 
						|
    Saving Throw: Will negate or Will negates (harmless)
 | 
						|
    Spell Resistance: Yes or Yes (harmless)
 | 
						|
    Source: Various (BlaineTog)
 | 
						|
 | 
						|
    Casting this spell causes an up-beat, frenetic music to fill the area.
 | 
						|
    Essentially, its the music that they play to let you know when the battle
 | 
						|
    has turned to the hero's.
 | 
						|
 | 
						|
    The tangible benefits are that the caster and all his or her allies in the
 | 
						|
    area gain a +1 morale bonus to attack rolls and saves against fear, and all
 | 
						|
    the caster's enemies take a -1 morale penalty to attack rolls and saves
 | 
						|
    against fear if they fail their will save.
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Spell Effects Applied / Notes
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
    Will add some new .wav files for the casting/conjuring of these "music"
 | 
						|
    spells.
 | 
						|
 | 
						|
    This is very prayerish, but still fun, and the music, I don't know what
 | 
						|
    really...
 | 
						|
 | 
						|
    However, it'll just be a short extract, ideas:
 | 
						|
 | 
						|
    - Eye of the tiger
 | 
						|
    - Something from gladiator
 | 
						|
    - A big roll of drums
 | 
						|
 | 
						|
    How is "one fight" determined? Well, to be exact, it is until an AOE
 | 
						|
    placed on each person decides the person it is on is dead, or not in
 | 
						|
    combat (!GetIsInCombat()) for whatever reason (might be moved, away, killed
 | 
						|
    everyone ETC).
 | 
						|
//:://////////////////////////////////////////////
 | 
						|
//:: Created By: Jasperre
 | 
						|
//::////////////////////////////////////////////*/
 | 
						|
 | 
						|
#include "SMP_INC_SPELLS"
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    // Spell hook check.
 | 
						|
    if(SMP_SpellHookCheck(SMP_SPELL_FIGHT_THEME)) return;
 | 
						|
 | 
						|
    // Define ourselves.
 | 
						|
    object oCaster = OBJECT_SELF;
 | 
						|
    object oTarget;
 | 
						|
    location lSelf = GetLocation(oCaster);
 | 
						|
    int nCasterLevel = SMP_GetCasterLevel();
 | 
						|
    int nMetaMagic = SMP_GetMetaMagicFeat();
 | 
						|
    int nSpellSaveDC = SMP_GetSpellSaveDC();
 | 
						|
    float fDelay;
 | 
						|
    // Duration - "permanent" until removed by AOE
 | 
						|
 | 
						|
    // Effect - attack +1, +1 saves, +1 damage, +1 skills
 | 
						|
    effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
 | 
						|
    effect eAttack = EffectAttackIncrease(1);
 | 
						|
    effect eMorale = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FEAR);
 | 
						|
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | 
						|
    // Link effects
 | 
						|
    effect eLink = EffectLinkEffects(eAttack, eMorale);
 | 
						|
    eLink = EffectLinkEffects(eLink, eDur);
 | 
						|
 | 
						|
    // Bad effects - minus the above.
 | 
						|
    effect eBadVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
 | 
						|
    effect eBadAttack = EffectAttackDecrease(1);
 | 
						|
    effect eBadMorale = EffectSavingThrowDecrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FEAR);
 | 
						|
    effect eBadDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
 | 
						|
    // Link effects
 | 
						|
    effect eBadLink = EffectLinkEffects(eBadAttack, eBadMorale);
 | 
						|
    eBadLink = EffectLinkEffects(eBadLink, eBadDur);
 | 
						|
 | 
						|
    // Same AOE each time. Previous ones are removed on any application of
 | 
						|
    // new effects
 | 
						|
    effect eAOE = EffectAreaOfEffect(SMP_AOE_MOB_FIGHT_THEME);
 | 
						|
 | 
						|
    // Link AOE
 | 
						|
    eBadLink = EffectLinkEffects(eBadLink, eAOE);
 | 
						|
    eLink = EffectLinkEffects(eLink, eAOE);
 | 
						|
 | 
						|
    // Apply AOE visual
 | 
						|
    effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
 | 
						|
    SMP_ApplyLocationVFX(lSelf, eImpact);
 | 
						|
 | 
						|
    // Loop allies - and apply the effects.
 | 
						|
    oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_30, lSelf);
 | 
						|
    while(GetIsObjectValid(oTarget))
 | 
						|
    {
 | 
						|
        // Make sure they are not immune to spells
 | 
						|
        if(!SMP_TotalSpellImmunity(oTarget))
 | 
						|
        {
 | 
						|
            // Check if ally or enemy
 | 
						|
            if(GetIsFriend(oTarget) || GetFactionEqual(oTarget) || oTarget == oCaster)
 | 
						|
            {
 | 
						|
                // Fire cast spell at event for the specified target
 | 
						|
                SMP_SignalSpellCastAt(oTarget, SMP_SPELL_FIGHT_THEME, FALSE);
 | 
						|
 | 
						|
                // Delay for visuals and effects.
 | 
						|
                if(oTarget == oCaster)
 | 
						|
                {
 | 
						|
                    fDelay = 0.0;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    fDelay = GetDistanceBetween(oCaster, oTarget)/20;
 | 
						|
                }
 | 
						|
                // Remove previous effects of any type form this spell
 | 
						|
                // - Won't overlap, and any bad effects are just ruined by new music
 | 
						|
                SMP_RemoveSpellEffectsFromTarget(SMP_SPELL_FIGHT_THEME, oTarget);
 | 
						|
 | 
						|
                // Apply the VFX impact and effects
 | 
						|
                DelayCommand(fDelay, SMP_ApplyVFX(oTarget, eVis));
 | 
						|
                SMP_ApplyPermanent(oTarget, eLink);
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                // Enemy/Non-friend
 | 
						|
 | 
						|
                // Fire cast spell at event for the specified target
 | 
						|
                SMP_SignalSpellCastAt(oTarget, SMP_SPELL_FIGHT_THEME, TRUE);
 | 
						|
 | 
						|
                // Delay for visuals and effects.
 | 
						|
                if(oTarget == oCaster)
 | 
						|
                {
 | 
						|
                    fDelay = 0.0;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    fDelay = GetDistanceBetween(oCaster, oTarget)/20;
 | 
						|
                }
 | 
						|
 | 
						|
                // Spell resistance
 | 
						|
                if(!SMP_SpellResistanceCheck(oCaster, oTarget, fDelay))
 | 
						|
                {
 | 
						|
                    // Will saving throw
 | 
						|
                    if(!SMP_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS, oCaster, fDelay))
 | 
						|
                    {
 | 
						|
                        // Remove previous effects of any type form this spell
 | 
						|
                        // - Won't overlap, and any bad effects are just ruined by new music
 | 
						|
                        SMP_RemoveSpellEffectsFromTarget(SMP_SPELL_FIGHT_THEME, oTarget);
 | 
						|
 | 
						|
                        // Apply the VFX impact and effects
 | 
						|
                        DelayCommand(fDelay, SMP_ApplyVFX(oTarget, eBadVis));
 | 
						|
                        SMP_ApplyPermanent(oTarget, eBadLink);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_30, lSelf);
 | 
						|
    }
 | 
						|
}
 |