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.
73 lines
3.1 KiB
Plaintext
73 lines
3.1 KiB
Plaintext
/*
|
|
1/03/21 by Stratovarius
|
|
|
|
Dahlver Nar, the Tortured One
|
|
|
|
Once a human binder, Dahlver-Nar now grants powers just as other vestiges do. He gives his summoners tough skin, a frightening moan, protections against madness,
|
|
and the ability to share injuries with allies.
|
|
|
|
Shield Self: At will as a standard action, you can designate one creature within 10 feet per effective binder level to share the damage you take. As long as the
|
|
subject creature remains within range, you take only half damage from all effects that deal hit point damage, and it takes the rest. The effect ends immediately
|
|
if you designate another creature or if either you or the subject dies. Any damage dealt to you after the effect ends is no longer split between you and the subject,
|
|
but damage already split is not reassigned to you. You can affect one creature at a time with this ability. An unwilling target of this ability
|
|
can attempt a Will save to negate the effect.
|
|
*/
|
|
|
|
#include "bnd_inc_bndfunc"
|
|
|
|
void DispelMonitor(object oBinder, object oTarget, int nSpellID, int nBinderLevel);
|
|
|
|
void main()
|
|
{
|
|
object oBinder = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nDC = GetBinderDC(oBinder, VESTIGE_DAHLVERNAR);
|
|
int nSpellID = GetSpellId();
|
|
int nBinderLevel = GetBinderLevel(oBinder, VESTIGE_DAHLVERNAR);
|
|
|
|
effect eDurPos = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE);
|
|
effect eDurNeg = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
|
|
|
|
// Let the AI know
|
|
PRCSignalSpellEvent(oTarget, TRUE, nSpellID, oBinder);
|
|
|
|
// Save - Fortitude negates, or it's an ally
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE) || GetIsFriend(oBinder, oTarget))
|
|
{
|
|
// Get the OnHitCast: Unique on the manifester's armor / hide
|
|
ExecuteScript("prc_keep_onhit_a", oBinder);
|
|
|
|
// Hook eventscript
|
|
AddEventScript(oBinder, EVENT_ONHIT, "psi_pow_shrpnaux", TRUE, FALSE);
|
|
|
|
// Store the target for use in the damage script
|
|
SetLocalObject(oBinder, "PRC_Power_SharePain_Target", oTarget);
|
|
|
|
// Do VFX for the monitor to look for
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDurNeg, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDurPos, oBinder);
|
|
|
|
// Start effect end monitor
|
|
DelayCommand(6.0f, DispelMonitor(oBinder, oTarget, nSpellID, nBinderLevel));
|
|
}
|
|
}
|
|
|
|
void DispelMonitor(object oBinder, object oTarget, int nSpellID, int nBinderLevel)
|
|
{
|
|
// The conditions that can end the effect
|
|
if(GetIsDead(oTarget) ||
|
|
GetDistanceBetween(oBinder, oTarget) > FeetToMeters(10.0 * nBinderLevel))
|
|
{
|
|
if(DEBUG) DoDebug("bnd_vest_dahlsh: Effect expired, clearing");
|
|
// Clear the target local
|
|
DeleteLocalObject(oBinder, "PRC_Power_SharePain_Target");
|
|
// Remove the eventscript
|
|
RemoveEventScript(oBinder, EVENT_ONHIT, "psi_pow_shrpnaux", TRUE, FALSE);
|
|
|
|
// Remove remaining effects
|
|
PRCRemoveSpellEffects(nSpellID, oBinder, oTarget);
|
|
PRCRemoveSpellEffects(nSpellID, oBinder, oBinder);
|
|
}
|
|
else
|
|
DelayCommand(6.0f, DispelMonitor(oBinder, oTarget, nSpellID, nBinderLevel));
|
|
} |