Further file organization
Further file organization
This commit is contained in:
95
nwn/nwnprc/trunk/smp/xxx_s_waveofexal.nss
Normal file
95
nwn/nwnprc/trunk/smp/xxx_s_waveofexal.nss
Normal file
@@ -0,0 +1,95 @@
|
||||
/*:://////////////////////////////////////////////
|
||||
//:: Spell Name Wave Of Exaltation
|
||||
//:: Spell FileName XXX_S_WaveOfExal
|
||||
//:://////////////////////////////////////////////
|
||||
//:: In Game Spell desctiption
|
||||
//:://////////////////////////////////////////////
|
||||
Transmutation
|
||||
Also known as: Elhiria<69>s Wave Of Exaltation
|
||||
Level: Brd 2, Sor/Wiz 2
|
||||
Components: V, S
|
||||
Casting Time: 1 standard action
|
||||
Range: 6.67M (20ft.)
|
||||
Area: Caster and 1 creature/level, in a 6.67M. burst (20ft.) centered on
|
||||
the caster
|
||||
Duration: 1 minute/level (D)
|
||||
Saving Throw: Fortitude Negates (Harmless)
|
||||
Spell Resistance: Yes (Harmless)
|
||||
Source: Various (VolkorTheRed)
|
||||
|
||||
A wave starts at the point of origin of the spell and spreads out te envelop
|
||||
all affected allied creatures in a mantle of positive feelings and resolvement.
|
||||
|
||||
The transmuted creatures<65> skin becomes harder to penetrate by enemy weapons.
|
||||
The creatures receive DR 1/Epic and get an +1 morale bonus on all saving
|
||||
throws.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Spell Effects Applied / Notes
|
||||
//:://////////////////////////////////////////////
|
||||
As the spell says - DR 1/Epic, and +1 bonus on saving throws.
|
||||
|
||||
Changed to +1 on saves, Saving Grace still has some potency then.
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Jasperre
|
||||
//::////////////////////////////////////////////*/
|
||||
|
||||
#include "SMP_INC_SPELLS"
|
||||
|
||||
void main()
|
||||
{
|
||||
// Spell hook check.
|
||||
if(!SMP_SpellHookCheck(SMP_SPELL_WAVE_OF_EXALTATION)) return;
|
||||
|
||||
//Declare major variables
|
||||
object oCaster = OBJECT_SELF;
|
||||
object oTarget;
|
||||
object oTargetDiamond;
|
||||
// 1 creature/level.
|
||||
int nCasterLevel = SMP_GetCasterLevel();
|
||||
int nMetaMagic = SMP_GetMetaMagicFeat();
|
||||
int nCnt;
|
||||
|
||||
// Note: This does increase by 1 if caster is affected
|
||||
int nDoneCreatures = 0;
|
||||
|
||||
// 1 round/level duration
|
||||
float fDuration = SMP_GetDuration(SMP_ROUNDS, nCasterLevel, nMetaMagic);
|
||||
|
||||
// Delcare effects
|
||||
effect eDR = EffectDamageReduction(1, DAMAGE_POWER_PLUS_TWENTY);
|
||||
effect eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, 1, SAVING_THROW_TYPE_ALL);
|
||||
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
|
||||
effect eVis = EffectVisualEffect(VFX_IMP_HEAD_MIND);
|
||||
|
||||
// Link effects
|
||||
effect eLink = EffectLinkEffects(eDR, eDur);
|
||||
eLink = EffectLinkEffects(eLink, eSave);
|
||||
|
||||
// Loop all targets without effect nearby. Start with the caster!
|
||||
oTarget = oCaster;
|
||||
// Loop for 6.67M or 20ft
|
||||
while(GetIsObjectValid(oTarget) && nDoneCreatures < nCasterLevel &&
|
||||
GetDistanceToObject(oTarget) <= RADIUS_SIZE_FEET_20)
|
||||
{
|
||||
// Make sure they are in our LOS, are a friend too.
|
||||
if((LineOfSightObject(oCaster, oTarget) &&
|
||||
(GetIsFriend(oTarget) || GetFactionEqual(oTarget))) ||
|
||||
(oTarget == oCaster))
|
||||
{
|
||||
// Add one to nDoneCreatures
|
||||
nDoneCreatures++;
|
||||
|
||||
// Signal spell cast at event
|
||||
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_WAVE_OF_EXALTATION, FALSE);
|
||||
|
||||
// Remove previous castings
|
||||
SMP_RemoveSpellEffectsFromTarget(SMP_SPELL_WAVE_OF_EXALTATION, oTarget);
|
||||
|
||||
// Apply effects
|
||||
SMP_ApplyDurationAndVFX(oTarget, eVis, eDur, fDuration);
|
||||
}
|
||||
// Get next nearest target
|
||||
nCnt++;
|
||||
oTarget = GetNearestObject(OBJECT_TYPE_CREATURE, oCaster, nCnt);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user