Alangara_PRC8/_removed/NW_S0_AURAVITAL.nss
Jaysyn904 86feb9ca6f Initial commit
Initial commit.
2024-06-05 21:21:06 -04:00

95 lines
2.9 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Aura of Vitality
//:: NW_S0_AuraVital
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Modified by Tarashon for the "Alangara - New Dawn" server
All allies within the AOE gain +4 Str, Con, Dex and regenerate +3.
Also duration is now hours instead of rounds.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 29, 2001
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
/*
Spellcast Hook Code
Added 2003-06-23 by GeorgZ
If you want to make changes to all spells,
check x2_inc_spellhook.nss to find out more
*/
if (!X2PreSpellCastCode())
{
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
return;
}
// End of Spell Cast Hook
//Declare major variables
object oTarget;
effect eStr = EffectAbilityIncrease(ABILITY_STRENGTH,4);
effect eDex = EffectAbilityIncrease(ABILITY_DEXTERITY,4);
effect eCon = EffectAbilityIncrease(ABILITY_CONSTITUTION,4);
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
// *** Defining the regeneration +3 function - Tarashon *** //
int nHP;
nHP = 3;
effect eRegen = EffectRegenerate(nHP,6.0);
// *** End of regen function - Tarashon *** //
effect eLink = EffectLinkEffects(eStr, eDex);
eLink = EffectLinkEffects(eLink, eCon);
eLink = EffectLinkEffects(eLink, eDur);
// *** Inserting the actual regeneration function - Tarashon *** //
eLink = EffectLinkEffects(eLink, eRegen);
// *** Done inserting regeneration - Tarashon *** //
effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_30);
int nDuration = GetCasterLevel(OBJECT_SELF);
float fDelay;
int nMetaMagic = GetMetaMagicFeat();
//Enter Metamagic conditions
if (nMetaMagic == METAMAGIC_EXTEND)
{
nDuration *= 2; //Duration is +100%
}
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, GetSpellTargetLocation());
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if(GetFactionEqual(oTarget) || GetIsReactionTypeFriendly(oTarget))
{
fDelay = GetRandomDelay(0.4, 1.1);
//Signal the spell cast at event
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_AURA_OF_VITALITY, FALSE));
//Apply effects and VFX to target
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nDuration)));
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
}