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.
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | |
| //:: Spell Name Forbiddance: On Enter
 | |
| //:: Spell FileName PHS_S_ForbiddncA
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Spell Effects Applied / Notes
 | |
| //:://////////////////////////////////////////////
 | |
|     Ok, creates an AOE:
 | |
| 
 | |
|     - Large and permament (takes 6 rounds to cast!)
 | |
|     - Party members immune to its effects (And SR + Save applieS)
 | |
|     - Always blocks Planar Travel
 | |
|     - Does damage to those who don't enter in the first few seconds:
 | |
|       - 1 Alignment difference, (EG: N cast, LN goes in) 6d6 damage (divine?) (will half)
 | |
|       - 2 alignment difference, (EG: N cast, LG goes in) 12d6 damage. (divine?) (will half)
 | |
| 
 | |
|     Material component worth 4000 too!
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Jasperre
 | |
| //::////////////////////////////////////////////*/
 | |
| 
 | |
| #include "PHS_INC_SPELLS"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     // Check the AOE creator
 | |
|     if(!PHS_CheckAOECreator()) return;
 | |
| 
 | |
|     // Declare major variables
 | |
|     object oCaster = GetAreaOfEffectCreator();
 | |
|     object oTarget = GetEnteringObject();
 | |
|     int nMetaMagic = PHS_GetAOEMetaMagic();
 | |
|     int nSpellSaveDC = PHS_GetAOESpellSaveDC();
 | |
|     int nGoodEvilSelf = GetAlignmentGoodEvil(oCaster);
 | |
|     int nLawChaosSelf = GetAlignmentLawChaos(oCaster);
 | |
|     int nGoodEvilTarget = GetAlignmentGoodEvil(oTarget);
 | |
|     int nLawChaosTarget = GetAlignmentLawChaos(oTarget);
 | |
|     int nVFX, nDam;
 | |
| 
 | |
|     // Get a viusal based on our alignment (good/evil)
 | |
|     if(nGoodEvilSelf == ALIGNMENT_EVIL)
 | |
|     {
 | |
|         nVFX = VFX_IMP_HEAD_EVIL;
 | |
|     }
 | |
|     else if(nGoodEvilSelf == ALIGNMENT_GOOD)
 | |
|     {
 | |
|         nVFX = VFX_IMP_HEAD_HOLY;
 | |
|     }
 | |
|     else //if(nGoodEvilSelf == ALIGNMENT_NEUTRAL)
 | |
|     {
 | |
|         nVFX = VFX_IMP_HEAD_ODD;
 | |
|     }
 | |
| 
 | |
|     // Get alignment "difference"
 | |
|     int nDifference = 0;
 | |
|     // 1 differnce (more)
 | |
|     if(nGoodEvilSelf != nGoodEvilTarget)
 | |
|     {
 | |
|         nDifference += 1;
 | |
|     }
 | |
|     // 1 differnce (more)
 | |
|     if(nLawChaosSelf != nLawChaosTarget)
 | |
|     {
 | |
|         nDifference += 1;
 | |
|     }
 | |
| 
 | |
|     // Declare major effects
 | |
|     effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | |
|     effect eVis = EffectVisualEffect(nVFX);
 | |
| 
 | |
|     //Fire cast spell at event for the target
 | |
|     PHS_SignalSpellCastAt(oTarget, PHS_SPELL_FORBIDDANCE);
 | |
| 
 | |
|     // Always apply the "Dimensional Lock"
 | |
|     PHS_AOE_OnEnterEffects(eDur, oTarget, PHS_SPELL_FORBIDDANCE);
 | |
| 
 | |
|     // PvP Check, needs to not be of equal alignment
 | |
|     if(!GetIsReactionTypeFriendly(oTarget, oCaster) &&
 | |
|        !GetFactionEqual(oTarget, oCaster) &&
 | |
|     // Alignment difference of 1 or 2
 | |
|         nDifference >= 1 &&
 | |
|     // Make sure they are not immune to spells
 | |
|        !PHS_TotalSpellImmunity(oTarget))
 | |
|     {
 | |
|         // Spell resistance check
 | |
|         if(!PHS_SpellResistanceCheck(oCaster, oTarget))
 | |
|         {
 | |
|             // Damage based on nDifference
 | |
|             if(nDifference == 1)
 | |
|             {
 | |
|                 // 6d6 damage
 | |
|                 nDam = PHS_MaximizeOrEmpower(6, 6, nMetaMagic);
 | |
|             }
 | |
|             else //if(nDifference == 2)
 | |
|             {
 | |
|                 // 12d6 damage
 | |
|                 nDam = PHS_MaximizeOrEmpower(12, 6, nMetaMagic);
 | |
|             }
 | |
|             // Will save for half
 | |
|             nDam = PHS_GetAdjustedDamage(SAVING_THROW_WILL, nDam, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_NONE, oCaster);
 | |
| 
 | |
|             if(nDam > 0)
 | |
|             {
 | |
|                 // Do damage
 | |
|                 PHS_ApplyDamageVFXToObject(oTarget, eVis, nDam, DAMAGE_TYPE_MAGICAL);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |