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.
		
			
				
	
	
		
			88 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Perform Spelldance
 | |
| //:: prc_spldnc_dnc.nss
 | |
| //::///////////////////////////////////////////////
 | |
| /*
 | |
|     Does the dancing and storing of metamagics
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Stratovarius
 | |
| //:: Created On: 27.2.2006
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_inc_spells"
 | |
| 
 | |
| void SpelldanceEnd(object oPC, int nMax, int nExt, int nEmp, int nRounds)
 | |
| {
 | |
|     SetCommandable(TRUE, oPC);
 | |
|     int nMeta;
 | |
|     if (nMax)
 | |
|         nMeta |= METAMAGIC_MAXIMIZE;
 | |
|     if (nExt)
 | |
|         nMeta |= METAMAGIC_EXTEND;
 | |
|     if (nEmp)
 | |
|         nMeta |= METAMAGIC_EMPOWER;
 | |
|     
 | |
|     SetLocalInt(oPC, "Spelldance", nMeta);    
 | |
|     
 | |
|     FloatingTextStringOnCreature("You have one round to cast a spelldanced spell", oPC, FALSE);
 | |
|     DelayCommand(9.0, DeleteLocalInt(oPC, "Spelldance"));
 | |
|     
 | |
|     nRounds += GetLocalInt(oPC, "SpelldanceRounds");  
 | |
|     int nDance = GetLevelByClass(CLASS_TYPE_SPELLDANCER, oPC) + GetAbilityModifier(ABILITY_CONSTITUTION, oPC);
 | |
|     
 | |
|     FloatingTextStringOnCreature("You have spelldanced for "+IntToString(nRounds)+" rounds today", oPC, FALSE);
 | |
|     if (nDance >= nRounds) FloatingTextStringOnCreature("You have "+IntToString(nDance - nRounds)+" rounds remaining before you must save or be fatigued", oPC, FALSE);
 | |
|     else //Danced more rounds than you can
 | |
|     {
 | |
|         if (!PRCMySavingThrow(SAVING_THROW_FORT, oPC, 10+nRounds, SAVING_THROW_TYPE_NONE))
 | |
|         {
 | |
|             if (GetLocalInt(oPC, "SpelldanceFatigue"))
 | |
|             {
 | |
|                 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectExhausted()), oPC, HoursToSeconds(24)); //Until you rest
 | |
|                 ApplyAbilityDamage(oPC, ABILITY_CONSTITUTION, 2, DURATION_TYPE_TEMPORARY, TRUE, HoursToSeconds(24));
 | |
|                 FloatingTextStringOnCreature("You are exhausted and cannot spelldance", oPC, FALSE);
 | |
|                 SetLocalInt(oPC, "SpelldanceExhaust", TRUE);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectFatigue()), oPC, HoursToSeconds(24)); //Until you rest
 | |
|                 FloatingTextStringOnCreature("You are fatigued", oPC, FALSE);
 | |
|                 ApplyAbilityDamage(oPC, ABILITY_CONSTITUTION, 2, DURATION_TYPE_TEMPORARY, TRUE, HoursToSeconds(24));
 | |
|                 SetLocalInt(oPC, "SpelldanceFatigue", TRUE);
 | |
|             }            
 | |
|         }            
 | |
|     }
 | |
|     SetLocalInt(oPC, "SpelldanceRounds", nRounds);  
 | |
| }
 | |
| 
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     object oPC = OBJECT_SELF;
 | |
|     if (GetLocalInt(oPC, "SpelldanceExhaust"))
 | |
|     {
 | |
|         FloatingTextStringOnCreature("You are exhausted and cannot spelldance", oPC, FALSE);
 | |
|         return;
 | |
|     }    
 | |
| 
 | |
|     string sMsg;
 | |
|     int nMax = GetLocalInt(oPC, "SpelldanceMaximize");
 | |
|     int nExt = GetLocalInt(oPC, "SpelldanceExtend");
 | |
|     int nEmp = GetLocalInt(oPC, "SpelldanceEmpower");
 | |
|     int nRounds;
 | |
| 
 | |
|     if (nMax)
 | |
|         nRounds += 3;    
 | |
|     if (nExt)
 | |
|         nRounds += 1;
 | |
|     if (nEmp)
 | |
|         nRounds += 2;        
 | |
|        
 | |
|     FloatingTextStringOnCreature("Spelldancing for "+IntToString(nRounds)+" rounds", oPC, FALSE);
 | |
|     float fDur = RoundsToSeconds(nRounds);
 | |
|     SetCommandable(FALSE, oPC);
 | |
|     AssignCommand(oPC, ClearAllActions(TRUE));
 | |
|     AssignCommand(oPC, ActionPlayAnimation(ANIMATION_LOOPING_WORSHIP, 1.0, fDur));
 | |
|     DelayCommand(fDur, SpelldanceEnd(oPC, nMax, nExt, nEmp, nRounds));
 | |
| } |