Further file organization
Further file organization
This commit is contained in:
54
nwn/nwnprc/trunk/epicspellscripts/run_all_martyr.nss
Normal file
54
nwn/nwnprc/trunk/epicspellscripts/run_all_martyr.nss
Normal file
@@ -0,0 +1,54 @@
|
||||
//:://////////////////////////////////////////////
|
||||
//:: 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));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user