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);
 | ||
|     }
 | ||
| }
 |