PRC8_fork/nwn/nwnprc/trunk/smp/phs_s_eaglessplm.nss

98 lines
3.7 KiB
Plaintext
Raw Permalink Normal View History

/*:://////////////////////////////////////////////
//:: Spell Name Eagle<6C>s Splendor, Mass
//:: Spell FileName PHS_S_EaglesSplM
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Transmutation
Level: Brd 6, Clr 6, Sor/Wiz 6
Components: V, S, M/DF
Casting Time: 1 standard action
Range: Close (8M)
Target: One creature/level, within a 5M radius sphere
Duration: 1 min./level
Saving Throw: Will negates (harmless)
Spell Resistance: Yes
The transmuted creatures becomes more poised, articulate, and personally
forceful. The spell grants a +4 enhancement bonus to Charisma, adding the
usual benefits to Charisma-based skill checks and other uses of the
Charisma modifier. Sorcerers and bards (and other spellcasters who rely on
Charisma) affected by this spell do not gain any additional bonus spells
for the increased Charisma, but the save DCs for spells they cast while
under this spell<6C>s effect do increase.
Arcane Material Component: A few feathers or a pinch of droppings from an
eagle.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
+4 In the stat, Doesn't stack with normal, and can affect up to 1 target/
level. Friends only targeted.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell hook check.
if(!PHS_SpellHookCheck(PHS_SPELL_BULLS_STRENGTH_MASS)) return;
// Declare major variables
object oCaster = OBJECT_SELF;
object oTarget;
location lTarget = GetSpellTargetLocation();
int nCasterLevel = PHS_GetCasterLevel();
int nMetaMagic = PHS_GetMetaMagicFeat();
int nCnt, nFriend;
// Ability to use
int nAbility = ABILITY_CHARISMA;
// Duration - 1 minute/level
float fDuration = PHS_GetDuration(PHS_MINUTES, nCasterLevel, nMetaMagic);
// Delcare Effects
effect eAbility = EffectAbilityIncrease(nAbility, 4);
effect eVis = EffectVisualEffect(VFX_IMP_IMPROVE_ABILITY_SCORE);
effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect eLink = EffectLinkEffects(eAbility, eCessate);
// Loop all allies in a huge sphere
nCnt = 1;
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, lTarget, nCnt);
// 1 target/level, nearest to location within a 5.0M radius
while(GetIsObjectValid(oTarget) && nFriend < nCasterLevel &&
GetDistanceBetweenLocations(lTarget, GetLocation(oTarget)) <= 5.0)
{
// Friendly check
if(oTarget == OBJECT_SELF ||
GetIsFriend(oTarget) ||
GetFactionEqual(oTarget))
{
// Make sure they are not immune to spells
if(!PHS_TotalSpellImmunity(oTarget))
{
// Check if oTarget has better effects already
if(PHS_GetHasAbilityBonusOfPower(oTarget, nAbility, 4) != 2)
{
// Add one to counter
nFriend++;
// Signal the spell cast at event
PHS_SignalSpellCastAt(oTarget, PHS_SPELL_BULLS_STRENGTH_MASS, FALSE);
// Remove these abilities effects
PHS_RemoveAnyAbilityBonuses(oTarget, nAbility);
//Apply effects and VFX to target
PHS_ApplyDurationAndVFX(oTarget, eVis, eLink, fDuration);
}
}
}
// Get next target
oTarget = GetNearestObjectToLocation(OBJECT_TYPE_CREATURE, lTarget, nCnt);
}
}