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.
55 lines
1.9 KiB
Plaintext
55 lines
1.9 KiB
Plaintext
//:://////////////////////////////////////////////
|
|
//:: FileName: "run_all_martyr"
|
|
/* Purpose: For "Allied Martyr" spell - This is the actual functional body of
|
|
the spell, but needs to be called seperately due to the need of a
|
|
player's permission.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Boneshank
|
|
//:: Last Updated On: March 12, 2004
|
|
//:://////////////////////////////////////////////
|
|
|
|
#include "prc_alterations"
|
|
#include "inc_dispel"
|
|
|
|
void RunMyMartyrdom(object oAlly, int nDuration, object oMartyr = OBJECT_SELF);
|
|
|
|
void main()
|
|
{
|
|
// Who is my ally that I am helping?
|
|
object oAlly = GetLocalObject(OBJECT_SELF, "oAllyForMyMartyrdom");
|
|
// How long do I have to do this for?
|
|
int nDuration = GetLocalInt(OBJECT_SELF,
|
|
"nTimeForMartyrdomFor");
|
|
// Begin the martyrdom.
|
|
RunMyMartyrdom(oAlly, nDuration, OBJECT_SELF);
|
|
}
|
|
|
|
void RunMyMartyrdom(object oAlly, int nDuration, object oMartyr = OBJECT_SELF)
|
|
{
|
|
int nAllyCurrentHP = GetCurrentHitPoints(oAlly);
|
|
int nAllyMaxHP = GetMaxHitPoints(oAlly);
|
|
int nMyHP = GetCurrentHitPoints(OBJECT_SELF);
|
|
int nTransfer = nAllyMaxHP - nAllyCurrentHP;
|
|
effect eVisDown = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
|
|
effect eVisUp = EffectVisualEffect(VFX_IMP_HEALING_L);
|
|
effect eHPLoss = EffectDamage(nTransfer);
|
|
effect eHPGain = EffectHeal(nTransfer);
|
|
effect eLink1 = EffectLinkEffects(eVisDown, eHPLoss);
|
|
effect eLink2 = EffectLinkEffects(eVisUp, eHPGain);
|
|
// If the spell's duration has not expired yet.
|
|
if (!GetIsDead(OBJECT_SELF) &&
|
|
!GetIsDead(oAlly) &&
|
|
GetIsObjectValid(oAlly) &&
|
|
nTransfer > 0 )
|
|
{
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink1, OBJECT_SELF);
|
|
SPApplyEffectToObject(DURATION_TYPE_INSTANT, eLink2, oAlly);
|
|
}
|
|
if (nDuration > 0)
|
|
{
|
|
nDuration -= 1;
|
|
DelayCommand(3.0, RunMyMartyrdom(oAlly, nDuration, OBJECT_SELF));
|
|
}
|
|
}
|