Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
}
|