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.
		
			
				
	
	
		
			138 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*:://////////////////////////////////////////////
 | 
						||
//:: Spell Name Order’s Wrath
 | 
						||
//:: Spell FileName PHS_S_OrdersWrat
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
//:: In Game Spell desctiption
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
    Casting Time: 1 standard action
 | 
						||
    Range: Medium (20M)
 | 
						||
    Area: Nonlawful creatures within a burst that fills a 10M. cube
 | 
						||
    Duration: Instantaneous (1 round); see text
 | 
						||
    Saving Throw: Will partial; see text
 | 
						||
    Spell Resistance: Yes
 | 
						||
 | 
						||
    You channel lawful power to smite enemies. The power takes the form of a
 | 
						||
    three-dimensional grid of energy. Only chaotic and neutral (not lawful)
 | 
						||
    creatures are harmed by the spell.
 | 
						||
 | 
						||
    The spell deals 1d8 points of damage per two caster levels (maximum 5d8) to
 | 
						||
    chaotic creatures (or 1d6 points of damage per caster level, maximum 10d6,
 | 
						||
    to chaotic outsiders) and causes them to be dazed for 1 round. A successful
 | 
						||
    Will save reduces the damage to half and negates the daze effect.
 | 
						||
 | 
						||
    The spell deals only half damage to creatures who are neither chaotic nor
 | 
						||
    lawful, and they are not dazed. They can reduce the damage in half again
 | 
						||
    (down to one-quarter of the roll) with a successful Will save.
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
//:: Spell Effects Applied / Notes
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
    Lawful = No damage
 | 
						||
    Neutral = Half damage, can quarter on a will save. Never Dazed.
 | 
						||
    Chaotic = Full damage, can half on a will save. Dazed on fail.
 | 
						||
 | 
						||
    Divine damage.
 | 
						||
//:://////////////////////////////////////////////
 | 
						||
//:: Created By: Jasperre
 | 
						||
//::////////////////////////////////////////////*/
 | 
						||
 | 
						||
#include "PHS_INC_SPELLS"
 | 
						||
 | 
						||
void main()
 | 
						||
{
 | 
						||
    // Spell Hook Check.
 | 
						||
    if(!PHS_SpellHookCheck(PHS_SPELL_ORDERS_WRATH)) return;
 | 
						||
 | 
						||
    // Delcare major variables.
 | 
						||
    object oCaster = OBJECT_SELF;
 | 
						||
    object oTarget;
 | 
						||
    location lTarget = GetSpellTargetLocation();
 | 
						||
    int nCasterLevel = GetCasterLevel(oCaster);
 | 
						||
    int nMetaMagic = PHS_GetMetaMagicFeat();
 | 
						||
    int nAlignment, nDam;
 | 
						||
    int nSpellSaveDC = GetSpellSaveDC();
 | 
						||
    float fDelay;
 | 
						||
 | 
						||
    // fDuration is 1 round for daze
 | 
						||
    float fDuration = PHS_GetDuration(PHS_ROUNDS, 1, nMetaMagic);
 | 
						||
 | 
						||
    // Delcare Effects
 | 
						||
    effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
 | 
						||
    effect eVisDaze = EffectVisualEffect(VFX_IMP_DAZED_S);
 | 
						||
    effect eDaze = EffectSlow();
 | 
						||
    effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
 | 
						||
    effect eLink = EffectLinkEffects(eDaze, eDur);
 | 
						||
    eLink = EffectLinkEffects(eLink, eVisDaze);
 | 
						||
 | 
						||
    // how much damage dice?
 | 
						||
    // 1d8 damage/2 caster levels. We do 1d6/caster level to outsiders
 | 
						||
    int nOutsiderDice = PHS_LimitInteger(nCasterLevel, 10);
 | 
						||
 | 
						||
    // Normal dice will be nOutsiderDice/2, or 1 per 2 caster levels.
 | 
						||
    int nNormalDice = PHS_LimitInteger(nOutsiderDice/2);
 | 
						||
 | 
						||
    // Apply AOE visual
 | 
						||
    effect eImpact = EffectVisualEffect(PHS_VFX_FNF_ORDERS_WRATH);
 | 
						||
    PHS_ApplyLocationVFX(lTarget, eImpact);
 | 
						||
 | 
						||
    // Loop all targets in the cube - 10x10M, put 5.0M in
 | 
						||
    oTarget = GetFirstObjectInShape(SHAPE_CUBE, 5.0, lTarget, TRUE);
 | 
						||
    while(GetIsObjectValid(oTarget))
 | 
						||
    {
 | 
						||
        // Alignment check and PvP check
 | 
						||
        nAlignment = GetAlignmentLawChaos(oTarget);
 | 
						||
        if(nAlignment != ALIGNMENT_LAWFUL && !GetIsReactionTypeFriendly(oTarget))
 | 
						||
        {
 | 
						||
            // Signal spell cast at
 | 
						||
            PHS_SignalSpellCastAt(oTarget, PHS_SPELL_ORDERS_WRATH);
 | 
						||
 | 
						||
            // Delay
 | 
						||
            fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
 | 
						||
 | 
						||
            // Get random damage
 | 
						||
            if(GetRacialType(oTarget) == RACIAL_TYPE_OUTSIDER)
 | 
						||
            {
 | 
						||
                nDam = PHS_MaximizeOrEmpower(6, nOutsiderDice, nMetaMagic);
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                nDam = PHS_MaximizeOrEmpower(8, nNormalDice, nMetaMagic);
 | 
						||
            }
 | 
						||
            // Half damage if only neutral
 | 
						||
            if(nAlignment == ALIGNMENT_NEUTRAL)
 | 
						||
            {
 | 
						||
                // Divide by 2.
 | 
						||
                nDam /= 2;
 | 
						||
            }
 | 
						||
            // Will saving throw for half damage, and no slow.
 | 
						||
            // - Lawful Saving throw.
 | 
						||
            // If we SAVE it does half damage - no slow
 | 
						||
            if(PHS_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_LAW))
 | 
						||
            {
 | 
						||
                // No slow - half damage
 | 
						||
                nDam /= 2;
 | 
						||
                if(nDam > 0)
 | 
						||
                {
 | 
						||
                    // Do damage and VFX
 | 
						||
                    DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_DIVINE));
 | 
						||
                }
 | 
						||
            }
 | 
						||
            else
 | 
						||
            {
 | 
						||
                // Else, full damage. If not neutral, slow for 1d6 rounds
 | 
						||
 | 
						||
                // Do damage and VFX
 | 
						||
                DelayCommand(fDelay, PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_DIVINE));
 | 
						||
 | 
						||
                // If not alignment neutral, we apply daze as they failed the save.
 | 
						||
                if(nAlignment != ALIGNMENT_NEUTRAL)
 | 
						||
                {
 | 
						||
                    // Apply daze for fDuration, and instantly!
 | 
						||
                    PHS_ApplyDuration(oTarget, eLink, fDuration);
 | 
						||
                }
 | 
						||
            }
 | 
						||
        }
 | 
						||
        // Get next target
 | 
						||
        oTarget = GetNextObjectInShape(SHAPE_CUBE, 5.0, lTarget, TRUE);
 | 
						||
    }
 | 
						||
}
 |