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.
		
			
				
	
	
		
			108 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | ||
| //:: Spell Name Break Enchantment
 | ||
| //:: Spell FileName PHS_S_BreakEncha
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: In Game Spell desctiption
 | ||
| //:://////////////////////////////////////////////
 | ||
|     Abjuration
 | ||
|     Level: Brd 4, Clr 5, Luck 5, Pal 4, Sor/Wiz 5
 | ||
|     Components: V, S
 | ||
|     Casting Time: 1 minute
 | ||
|     Range: Close (8M)
 | ||
|     Targets: Up to one creature per level, all within a 5M-radius sphere
 | ||
|     Duration: Instantaneous
 | ||
|     Saving Throw: See text
 | ||
|     Spell Resistance: No
 | ||
| 
 | ||
|     This spell frees victims from enchantments, transmutations, and curses. Break
 | ||
|     enchantment can reverse even an instantaneous effect. For each such effect,
 | ||
|     you make a caster level check (1d20 + caster level, maximum +15) against a DC
 | ||
|     of 11 + caster level of the effect. Success means that the creature is free
 | ||
|     of the spell, curse, or effect. For a cursed magic item, the DC is 25.
 | ||
| 
 | ||
|     If the spell is one that cannot be dispelled by dispel magic, break
 | ||
|     enchantment works only if that spell is 5th level or lower.
 | ||
| 
 | ||
|     If the effect comes from some permanent magic item break enchantment does
 | ||
|     not remove the curse from the item, but it does frees the victim from the
 | ||
|     item’s effects.
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Spell Effects Applied / Notes
 | ||
| //:://////////////////////////////////////////////
 | ||
|     As above.
 | ||
| 
 | ||
|     We have special dispelling things now to dispel all the Enchantments,
 | ||
|     transmutations and curses and so on.
 | ||
| 
 | ||
|     Also a special one for any 5th level or lower if cannot be dispelled
 | ||
|     by dispel magic (IE: Supernautral, Extraodinary).
 | ||
| 
 | ||
|     No item cursing removal yet.
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:: Created By: Jasperre
 | ||
| //::////////////////////////////////////////////*/
 | ||
| 
 | ||
| #include "PHS_INC_SPELLS"
 | ||
| 
 | ||
| void main()
 | ||
| {
 | ||
|     // Spell Hook Check.
 | ||
|     if(!PHS_SpellHookCheck()) return;
 | ||
| 
 | ||
|     // Declare Major Variables
 | ||
|     object oCaster = OBJECT_SELF;
 | ||
|     object oTarget;
 | ||
|     location lTarget = GetSpellTargetLocation();
 | ||
|     int nCasterLevel = PHS_GetCasterLevel();
 | ||
|     int nDone;
 | ||
|     float fDelay;
 | ||
| 
 | ||
|     // Make sure they are not immune to spells
 | ||
|     if(PHS_TotalSpellImmunity(oTarget)) return;
 | ||
| 
 | ||
|     // Cap caster level at 15 for this spell
 | ||
|     int nBonusDispelLevel = PHS_LimitInteger(nCasterLevel, 15);
 | ||
| 
 | ||
|     // Delcare effects
 | ||
|     effect eVis = EffectVisualEffect(VFX_IMP_DISPEL);
 | ||
| 
 | ||
|     // Get all cretures (duh) in a 5M sphere
 | ||
|     oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 5.0, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | ||
|     // Limit creatures affected - 1 per level
 | ||
|     while(GetIsObjectValid(oTarget) && nDone < nCasterLevel)
 | ||
|     {
 | ||
|         // We only affect chosen allies as it is meant to stop bad things
 | ||
|         // (the spell schools are usually tansforming into bad spells and enchanting
 | ||
|         // to do bad things, like domination)
 | ||
|         if((GetIsFriend(oTarget) || GetFactionEqual(oTarget)) &&
 | ||
|         // Check master!
 | ||
|            (GetMaster(oTarget) != oCaster ||
 | ||
|             GetAssociateType(oTarget) != ASSOCIATE_TYPE_DOMINATED))
 | ||
|         {
 | ||
|             // Done by +1.
 | ||
|             nDone++;
 | ||
| 
 | ||
|             // Get the distance between the explosion and the target to calculate delay
 | ||
|             fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
 | ||
| 
 | ||
|             // Signal Spell cast at the target
 | ||
|             PHS_SignalSpellCastAt(oTarget, PHS_SPELL_BREAK_ENCHANTMENT, FALSE);
 | ||
| 
 | ||
|             // We (attempt to) dispel curses, the curse effect
 | ||
|             PHS_DispelAllEffectsOfType(oTarget, nBonusDispelLevel, EFFECT_TYPE_CURSE);
 | ||
| 
 | ||
|             // We then (attempt to) dispel all spells from the spell school
 | ||
|             // - Enchantments
 | ||
|             PHS_DispelAllSpellsFromSpellSchool(oTarget, nBonusDispelLevel, SPELL_SCHOOL_ENCHANTMENT, 5);
 | ||
| 
 | ||
|             // - Transmutations
 | ||
|             PHS_DispelAllSpellsFromSpellSchool(oTarget, nBonusDispelLevel, SPELL_SCHOOL_TRANSMUTATION, 5);
 | ||
| 
 | ||
|             // We will apply VFX regardless now.
 | ||
|             DelayCommand(fDelay, PHS_ApplyVFX(oTarget, eVis));
 | ||
|         }
 | ||
|         // Get next target
 | ||
|         oTarget = GetNextObjectInShape(SHAPE_SPHERE, 5.0, lTarget, TRUE, OBJECT_TYPE_CREATURE);
 | ||
|     }
 | ||
| }
 |