forked from Jaysyn/PRC8
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);
|
||
}
|
||
}
|