Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
		
			
				
	
	
		
			124 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*:://////////////////////////////////////////////
 | |
| //:: Spell Name Calm Emotions
 | |
| //:: Spell FileName SMP_S_CalmEmot
 | |
| //:://////////////////////////////////////////////
 | |
| //:: In Game Spell desctiption
 | |
| //:://////////////////////////////////////////////
 | |
|     Calm Emotions
 | |
|     Enchantment (Compulsion) [Mind-Affecting]
 | |
|     Level: Brd 2, Clr 2, Law 2
 | |
|     Components: V, S, DF
 | |
|     Casting Time: 1 standard action
 | |
|     Range: Medium (20M)
 | |
|     Area: All Creatures in a 6.67-M.-radius spread
 | |
|     Duration: Concentration, up to 1 round/level (D)
 | |
|     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
 | |
|     or do anything destructive, and act as if dazed by sudden calmness. Any
 | |
|     aggressive action against or damage dealt to a calmed creature immediately
 | |
|     breaks the spell on all calmed creatures.
 | |
| 
 | |
|     This spell automatically suppresses any fear or confusion condition on all
 | |
|     targets. While the spell lasts, a suppressed spell or effect has no effect.
 | |
|     When the calm emotions spell ends, the original spell or effect takes hold
 | |
|     of the creature again, provided that its duration has not expired in the
 | |
|     meantime.
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Spell Effects Applied / Notes
 | |
| //:://////////////////////////////////////////////
 | |
|     NOTE: Concentration not tested!
 | |
| 
 | |
|     Uses a Dazed effect.
 | |
| 
 | |
|     Confusion is NOT removed, nor is Fear.
 | |
| 
 | |
|     This uses new calm functions to make sure the targets are not attacked (and
 | |
|     if are, the spell effects are removed).
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Jasperre
 | |
| //::////////////////////////////////////////////*/
 | |
| 
 | |
| #include "SMP_INC_CONCENTR"
 | |
| #include "SMP_INC_CALM"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     // If we are concentrating, and cast at the same spot, we set the integer
 | |
|     // for the hypnotic pattern up by one.
 | |
|     object oCaster = OBJECT_SELF;
 | |
|     location lTarget = GetSpellTargetLocation();
 | |
| 
 | |
|     // Check the function
 | |
|     if(SMP_ConcentatingContinueCheck(SMP_SPELL_CALM_EMOTIONS, lTarget, SMP_AOE_TAG_PER_CALM_EMOTIONS, 18.0, oCaster)) return;
 | |
| 
 | |
|     // Else, new spell!
 | |
| 
 | |
|     // Spell Hook Check.
 | |
|     if(!SMP_SpellHookCheck()) return;
 | |
| 
 | |
|     // Declare major variables
 | |
|     object oTarget;
 | |
|     int nCasterLevel = SMP_GetCasterLevel();
 | |
|     int nSpellSaveDC = SMP_GetSpellSaveDC();
 | |
|     int nMetaMagic = SMP_GetMetaMagicFeat();
 | |
|     float fDelay, fDistance;
 | |
| 
 | |
|     // We set the "Concentration" thing to 18 seconds
 | |
|     // This also returns the array we set people affected to, and does the new
 | |
|     // action.
 | |
|     string sArrayLocal = SMP_ConcentatingStart(SMP_SPELL_CALM_EMOTIONS, nCasterLevel, lTarget, SMP_AOE_PER_CALM_EMOTIONS);
 | |
|     int nArrayCount;
 | |
| 
 | |
|     // Note on duration: We apply it permamently, however, it will definatly
 | |
|     // be removed by the AOE.
 | |
| 
 | |
|     // Declare Effects
 | |
|     effect eVis = EffectVisualEffect(VFX_IMP_DAZED_S);
 | |
|     effect eDaze = EffectDazed();
 | |
|     effect eDazeDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED);
 | |
|     effect eCessate = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | |
| 
 | |
|     // Link effects
 | |
|     effect eLink = EffectLinkEffects(eDaze, eDazeDur);
 | |
|     eLink = EffectLinkEffects(eLink, eCessate);
 | |
| 
 | |
|     // Get the first target in the spell area
 | |
|     oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 6.67, lTarget, TRUE);
 | |
|     while(GetIsObjectValid(oTarget))
 | |
|     {
 | |
|         // Make faction check to ignore allies
 | |
|         if(!GetIsReactionTypeFriendly(oTarget) &&
 | |
|         // Make sure they are not immune to spells
 | |
|            !SMP_TotalSpellImmunity(oTarget))
 | |
|         {
 | |
|             // Fire cast spell at event for the specified target
 | |
|             SMP_SignalSpellCastAt(oTarget, SMP_SPELL_CALM_EMOTIONS);
 | |
| 
 | |
|             // Make SR check
 | |
|             if(!SMP_SpellResistanceCheck(oCaster, oTarget, fDelay) &&
 | |
|                !SMP_ImmunityCheck(oTarget, IMMUNITY_TYPE_DAZED, fDelay) &&
 | |
|                !SMP_ImmunityCheck(oTarget, IMMUNITY_TYPE_MIND_SPELLS, fDelay))
 | |
|             {
 | |
|                 // Will saving throw
 | |
|                 if(!SMP_SavingThrow(SAVING_THROW_WILL, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_MIND_SPELLS, oCaster, fDelay))
 | |
|                 {
 | |
|                     // Add to the array
 | |
|                     nArrayCount++;
 | |
|                     SetLocalObject(oCaster, sArrayLocal + IntToString(nArrayCount), oTarget);
 | |
| 
 | |
|                     // Apply effects
 | |
|                     SMP_SetCalm(oTarget);
 | |
|                     SMP_ApplyPermanentAndVFX(oTarget, eVis, eLink);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         oTarget = GetNextObjectInShape(SHAPE_SPHERE, 6.67, lTarget, TRUE);
 | |
|     }
 | |
|     // Set the max people in the array
 | |
|     SetLocalInt(oCaster, sArrayLocal, nArrayCount);
 | |
| }
 |