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.
96 lines
3.4 KiB
Plaintext
96 lines
3.4 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Bless
|
|
//:: Spell FileName SMP_S_Bless
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Enchantment (Compulsion) [Mind-Affecting]
|
|
Level: Clr 1, Pal 1
|
|
Components: V, S, DF
|
|
Casting Time: 1 standard action
|
|
Range: 10M. (30-ft.)
|
|
Area: The caster and all allies within a 10M. burst (30-ft.), centered
|
|
on the caster
|
|
Duration: 1 min./level
|
|
Saving Throw: None
|
|
Spell Resistance: Yes (harmless)
|
|
|
|
Bless fills your allies with courage. Each ally gains a +1 morale bonus on
|
|
attack rolls and on saving throws against fear effects.
|
|
|
|
Bless counters and dispels bane.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Dispels bane, or adds +1 to attack rolls and feat effects.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "SMP_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell hook check.
|
|
if(SMP_SpellHookCheck()) return;
|
|
|
|
// Define ourselves.
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget;
|
|
location lSelf = GetLocation(oCaster);
|
|
int nCasterLevel = SMP_GetCasterLevel();
|
|
int nMetaMagic = SMP_GetMetaMagicFeat();
|
|
float fDelay;
|
|
// Duration in minutes
|
|
float fDuration = SMP_GetDuration(SMP_MINUTES, nCasterLevel, nMetaMagic);
|
|
|
|
// Effect - attack +1, effect +1 save vs. fear.
|
|
effect eAttack = EffectAttackIncrease(1);
|
|
effect eMorale = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_FEAR);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
|
|
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
|
|
// Link effects
|
|
effect eLink = EffectLinkEffects(eAttack, eMorale);
|
|
eLink = EffectLinkEffects(eLink, eDur);
|
|
eLink = EffectLinkEffects(eLink, eVis);
|
|
|
|
// This is the dispell effect used when they have bane.
|
|
effect eDispel = EffectVisualEffect(VFX_IMP_HEAD_HOLY);
|
|
|
|
// AOE visual applied.
|
|
effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
|
|
SMP_ApplyLocationVFX(lSelf, eImpact);
|
|
|
|
// Loop allies - and apply the effects. AOE is 30ft, 10M
|
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_30, lSelf);
|
|
while(GetIsObjectValid(oTarget))
|
|
{
|
|
// Only affects friends
|
|
if((GetIsFriend(oTarget) || GetFactionEqual(oTarget) || oTarget == oCaster) &&
|
|
// Make sure they are not immune to spells
|
|
!SMP_TotalSpellImmunity(oTarget))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_BLESS, FALSE);
|
|
|
|
// Delay for visuals and effects.
|
|
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
|
|
|
|
// Remove bane - dispells it.
|
|
if(SMP_RemoveSpellEffectsFromTarget(SMP_SPELL_BANE, oTarget, fDelay))
|
|
{
|
|
// Apply effect if we remove any.
|
|
DelayCommand(fDelay, SMP_ApplyVFX(oTarget, eDispel));
|
|
}
|
|
else
|
|
{
|
|
// Apply the VFX impact and effects
|
|
DelayCommand(fDelay, SMP_ApplyVFX(oTarget, eVis));
|
|
SMP_ApplyDuration(oTarget, eLink, fDuration);
|
|
}
|
|
}
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_FEET_30, lSelf);
|
|
}
|
|
}
|