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.
101 lines
4.1 KiB
Plaintext
101 lines
4.1 KiB
Plaintext
/*:://////////////////////////////////////////////
|
|
//:: Spell Name Shield Other
|
|
//:: Spell FileName PHS_S_ShieldOth
|
|
//:://////////////////////////////////////////////
|
|
//:: In Game Spell desctiption
|
|
//:://////////////////////////////////////////////
|
|
Range: Close (8M)
|
|
Target: One creature
|
|
Duration: 1 hour/level (D)
|
|
|
|
This spell wards the subject and creates a mystic connection between you and
|
|
the subject so that some of its wounds are transferred to you. The subject
|
|
gains a +1 deflection bonus to AC and a +1 resistance bonus on saves.
|
|
Additionally, the subject takes only half damage from all magical damaging
|
|
attacks that deal hit point damage. The amount of damage not taken by the
|
|
warded creature is taken by you. Forms of harm that do not involve hit points,
|
|
such as charm effects, temporary ability damage, level draining, and death
|
|
effects, are not affected. If the subject suffers a reduction of hit points
|
|
from a lowered Constitution score, the reduction is not split with you
|
|
because it is not hit point damage. When the spell ends, subsequent damage
|
|
is no longer divided between the subject and you, but damage already split
|
|
is not reassigned to the subject.
|
|
|
|
If you and the subject of the spell move out of range of each other, the
|
|
spell ends.
|
|
|
|
Focus: A pair of platinum rings (worth at least 50 gp each) worn by both you
|
|
and the warded creature.
|
|
//:://////////////////////////////////////////////
|
|
//:: Spell Effects Applied / Notes
|
|
//:://////////////////////////////////////////////
|
|
Changed somewhat:
|
|
|
|
- Only divides up direct magical damage
|
|
- No monster spells affected
|
|
|
|
No phisical damage is split either. Its still quite powerful (and, there is
|
|
always the AC bonuses!)
|
|
|
|
Needs a new AOE for the caster, and a VFX for the target. The AOE is actually
|
|
totally invisible, and is just 8M diameter. If the person with the shield
|
|
other effects moves out of the spells range, ie, out of the AOE, it gets
|
|
instantly removed.
|
|
|
|
Only one shield other can ever be applied to any target. It'll remove the
|
|
effects from the target, and the creator of the targets spell effects too.
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Jasperre
|
|
//::////////////////////////////////////////////*/
|
|
|
|
#include "PHS_INC_SPELLS"
|
|
|
|
void main()
|
|
{
|
|
// Spell Hook Check.
|
|
if(!PHS_SpellHookCheck(PHS_SPELL_SHIELD_OTHER)) return;
|
|
|
|
// Declare Major Variables
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = GetSpellTargetObject();
|
|
object oRemoveCreator = PHS_FirstCasterOfSpellEffect(PHS_SPELL_SHIELD_OTHER, oTarget);
|
|
int nCasterLevel = PHS_GetCasterLevel();
|
|
int nMetaMagic = PHS_GetMetaMagicFeat();
|
|
|
|
// Cannot target self
|
|
if(oTarget == oCaster) return;
|
|
|
|
// 1 Hour/level
|
|
float fDuration = PHS_GetDuration(PHS_HOURS, nCasterLevel, nMetaMagic);
|
|
|
|
// Delcare effects
|
|
effect eVis = EffectVisualEffect(VFX_IMP_AC_BONUS);
|
|
effect eAC = EffectACIncrease(1, AC_DEFLECTION_BONUS);
|
|
effect eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_ALL);
|
|
effect eDur = EffectVisualEffect(PHS_VFX_DUR_SHIELD_OTHER);
|
|
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
|
effect eAOE = EffectAreaOfEffect(PHS_AOE_MOB_SHIELD_OTHER);
|
|
|
|
// Link effects for target
|
|
effect eLink = EffectLinkEffects(eAC, eDur);
|
|
eLink = EffectLinkEffects(eLink, eSave);
|
|
eLink = EffectLinkEffects(eLink, eCessate);
|
|
|
|
// remove previous castings from the creator of the spell on the target
|
|
if(GetIsObjectValid(oRemoveCreator))
|
|
{
|
|
// Remove previous castings
|
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_SHIELD_OF_FAITH, oRemoveCreator);
|
|
}
|
|
// Remove previous castings
|
|
PHS_RemoveSpellEffectsFromTarget(PHS_SPELL_SHIELD_OF_FAITH, oTarget);
|
|
|
|
// Signal spell cast at
|
|
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_SHIELD_OF_FAITH, FALSE);
|
|
PHS_SignalSpellCastAt(oCaster, PHS_SPELL_SHIELD_OF_FAITH, FALSE);
|
|
|
|
// Apply effects
|
|
PHS_ApplyDurationAndVFX(oCaster, eVis, eAOE, fDuration);
|
|
PHS_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
|
|
}
|