Further file organization
Further file organization
This commit is contained in:
78
nwn/nwnprc/trunk/spells/sp_calm_emotions.nss
Normal file
78
nwn/nwnprc/trunk/spells/sp_calm_emotions.nss
Normal file
@@ -0,0 +1,78 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name Calm Emotions
|
||||
//:: FileName sp_calm_emotions.nss
|
||||
//:://////////////////////////////////////////////2
|
||||
/** @file Calm Emotions
|
||||
Enchantment (Compulsion) [Mind-Affecting]
|
||||
Level: Brd 2, Clr 2, Law 2
|
||||
Components: V, S, DF
|
||||
Casting Time: 1 standard action
|
||||
Range: Medium (100 ft. + 10 ft./level)
|
||||
Area: Creatures in a 20-ft.-radius spread
|
||||
Duration: 1 round/level
|
||||
Saving Throw: Will negates
|
||||
Spell Resistance: Yes
|
||||
|
||||
This spell calms agitated creatures. You have no
|
||||
control over the affected creatures, but calm emotions
|
||||
can stop raging creatures from fighting or joyous ones
|
||||
from reveling. Creatures so affected cannot take
|
||||
violent actions (although they can defend themselves)
|
||||
or do anything destructive.
|
||||
|
||||
|
||||
**/
|
||||
//////////////////////////////////////////////////////
|
||||
// Author: Tenjac
|
||||
// Date: 8.10.06
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
void DoConcLoop(object oPC, float fDur, int nCounter);
|
||||
|
||||
#include "prc_alterations"
|
||||
#include "prc_inc_spells"
|
||||
#include "prc_add_spell_dc"
|
||||
|
||||
void main()
|
||||
{
|
||||
if(!X2PreSpellCastCode()) return;
|
||||
|
||||
PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT);
|
||||
|
||||
effect eAoE = EffectAreaOfEffect(AOE_PER_CALM_EMOTIONS);
|
||||
int nCasterLvl = PRCGetCasterLevel();
|
||||
float fDur = RoundsToSeconds(nCasterLvl);
|
||||
int nMetaMagic = PRCGetMetaMagicFeat();
|
||||
|
||||
if(nMetaMagic & METAMAGIC_EXTEND)
|
||||
{
|
||||
fDur += fDur;
|
||||
}
|
||||
|
||||
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eAoE, OBJECT_SELF, fDur);
|
||||
|
||||
object oAoE = GetAreaOfEffectObject(GetLocation(OBJECT_SELF), "AOE_PER_CALM_EMOTIONS");
|
||||
SetAllAoEInts(SPELL_CALM_EMOTIONS, oAoE, PRCGetSpellSaveDC(SPELL_CALM_EMOTIONS, SPELL_SCHOOL_ENCHANTMENT), 0, nCasterLvl);
|
||||
|
||||
//Get the number of rounds
|
||||
int nCounter = (FloatToInt(fDur) / 6);
|
||||
|
||||
//Start conc monitor
|
||||
DelayCommand(6.0f, DoConcLoop(OBJECT_SELF, fDur, nCounter));
|
||||
|
||||
PRCSetSchool();
|
||||
}
|
||||
|
||||
void DoConcLoop(object oPC, float fDur, int nCounter)
|
||||
{
|
||||
if((nCounter == 0) || GetBreakConcentrationCheck(oPC) > 0)
|
||||
{
|
||||
PRCRemoveSpellEffects(SPELL_CALM_EMOTIONS, oPC, oPC);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
nCounter--;
|
||||
DelayCommand(6.0f, DoConcLoop(oPC, fDur, nCounter));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user