Updated to PRC8. Further function integration. Fixed NPC onDeath script. Full compile. Updated release archive.
		
			
				
	
	
		
			111 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Name      Chaav's Laugh
 | |
| //:: FileName  sp_chaavs_lgh.nss
 | |
| //:://////////////////////////////////////////////
 | |
| /**@file Chaav's Laugh
 | |
| Enchantment (Compulsion)[Good, Mind-Affecting]
 | |
| Level: Cleric 5, Joy 5
 | |
| Components: V
 | |
| Casting Time: 1 standard action
 | |
| Range: 40ft
 | |
| Area: 40-ft-radius spread centered on you
 | |
| Duration: 1 minute/level
 | |
| Saving Throw: Will negates
 | |
| Spell Resistance: Yes
 | |
| 
 | |
| You release a joyous, boistrous laugh that 
 | |
| strengthens the resolve of good creatures and
 | |
| weakens the resolve of evil creatures.
 | |
| 
 | |
| Good creatures within the spell's area gain the
 | |
| following benefits for the duration of the spell:
 | |
| a +2 morale bonus on attack rolls an saves against
 | |
| fear effects. plus temporary hit points equal to
 | |
| 1d8 + caster level(to a maximum of 1d8 +20 at level
 | |
| 20).  
 | |
| 
 | |
| Evil creatures within the spell's are that fail a 
 | |
| Will save take a -2 morale penalty on attack rolls
 | |
| and saves against fear effects for the duration of
 | |
| the spell.  
 | |
| 
 | |
| Creatures must beable to hear the laugh to be
 | |
| affected by the spell. Creatures that are neither 
 | |
| good nor evil are anaffected by Chaav's Laugh.
 | |
| 
 | |
| Author:    Tenjac
 | |
| Created:   7/10/06
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_inc_spells"
 | |
| #include "prc_add_spell_dc"
 | |
| 
 | |
| void main()
 | |
| {
 | |
| 	if(!X2PreSpellCastCode()) return;
 | |
| 	
 | |
| 	PRCSetSchool(SPELL_SCHOOL_ENCHANTMENT);
 | |
| 	
 | |
| 	object oPC = OBJECT_SELF;
 | |
| 	location lLoc = GetLocation(oPC);
 | |
| 	object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); 
 | |
| 	int nCasterLvl = PRCGetCasterLevel(oPC);
 | |
| 	int nDC;
 | |
| 	int nAlign;
 | |
| 	int nMetaMagic = PRCGetMetaMagicFeat();
 | |
| 	int nModify = 2;
 | |
| 	float fDur = (60.0f * nCasterLvl);
 | |
| 	
 | |
| 	if(nMetaMagic & METAMAGIC_EMPOWER)
 | |
| 	{
 | |
| 		nModify = 3;
 | |
| 	}
 | |
| 	
 | |
| 	if(nMetaMagic & METAMAGIC_EXTEND)
 | |
| 	{
 | |
| 		fDur += fDur;
 | |
| 	}
 | |
| 	
 | |
| 	effect eVilLink = EffectLinkEffects(EffectAttackDecrease(nModify, ATTACK_BONUS_MISC), EffectSavingThrowDecrease(SAVING_THROW_ALL, nModify, SAVING_THROW_TYPE_FEAR));
 | |
| 	effect eGoodLink = EffectLinkEffects(EffectAttackIncrease(nModify, ATTACK_BONUS_MISC), EffectSavingThrowIncrease(SAVING_THROW_ALL, nModify, SAVING_THROW_TYPE_FEAR));
 | |
| 	       eGoodLink = EffectLinkEffects(eGoodLink, EffectTemporaryHitpoints(d8(1) + min(40, nCasterLvl)));
 | |
| 	       
 | |
| 	while(GetIsObjectValid(oTarget))
 | |
| 	{
 | |
| 		nAlign = GetAlignmentGoodEvil(oTarget);
 | |
| 		nDC = PRCGetSaveDC(oTarget, oPC);
 | |
| 		
 | |
| 		if(!PRCGetHasEffect(EFFECT_TYPE_DEAF, oTarget))
 | |
| 		{
 | |
| 			
 | |
| 			if (nAlign == ALIGNMENT_EVIL)
 | |
| 			{
 | |
| 				//SR
 | |
| 				if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr()))
 | |
| 				{
 | |
| 					//Save
 | |
| 					if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS))
 | |
| 					{
 | |
| 						SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVilLink, oTarget, fDur);				
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			
 | |
| 			if(nAlign == ALIGNMENT_GOOD)
 | |
| 			{
 | |
| 				SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eGoodLink, oTarget, fDur);
 | |
| 			}
 | |
| 		}
 | |
| 		oTarget = MyNextObjectInShape(SHAPE_SPHERE, 12.19f, lLoc, TRUE, OBJECT_TYPE_CREATURE); 
 | |
| 	}			
 | |
| 	//SPGoodShift(oPC);
 | |
| 	PRCSetSchool();
 | |
| }
 | |
| 				
 | |
| 		
 | |
| 		
 | |
| 		
 | |
| 	
 | |
| 	 |