Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
78 lines
2.1 KiB
Plaintext
78 lines
2.1 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: 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));
|
|
}
|
|
} |