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.
		
			
				
	
	
		
			112 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Sleep
 | |
| //:: NW_S0_Sleep
 | |
| //:: Copyright (c) 2001 Bioware Corp.
 | |
| //:://////////////////////////////////////////////
 | |
| /*
 | |
|     Goes through the area and sleeps the lowest 4+d4
 | |
|     HD of creatures first.
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Preston Watamaniuk
 | |
| //:: Created On: March 7 , 2001
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Last Updated By: Preston Watamaniuk, On: April 11, 2001
 | |
| //:: VFX Pass By: Preston W, On: June 25, 2001
 | |
| 
 | |
| //:: modified by mr_bumpkin  Dec 4, 2003
 | |
| #include "prc_inc_spells"
 | |
| #include "prc_alterations"
 | |
| #include "inv_inc_invfunc"
 | |
| #include "inv_invokehook"
 | |
| 
 | |
| void DoSleepCheck(object oTarget, int nSleepCheck, object oCaster)
 | |
| {
 | |
|     if(nSleepCheck != GetLocalInt(oTarget, "nSleepCheck"))
 | |
|         return;
 | |
| 
 | |
|     int nDC = GetInvocationSaveDC(oTarget, oCaster);
 | |
| 
 | |
|     if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (nDC), SAVING_THROW_TYPE_MIND_SPELLS))
 | |
|     {
 | |
|         DelayCommand(HoursToSeconds(24), DoSleepCheck(oTarget, nSleepCheck, oCaster));
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         DeleteLocalInt(oTarget, "PainfulSleep");
 | |
|         PRCRemoveSpellEffects(INVOKE_PAINFUL_SLUMBER_OF_AGES, oCaster, oTarget);
 | |
|     }
 | |
| }
 | |
| 
 | |
| void DoDamageCheck(object oTarget, int nSleepCheck)
 | |
| {
 | |
|     if(nSleepCheck != GetLocalInt(oTarget, "nSleepCheck"))
 | |
|         return;
 | |
| 
 | |
|     if(!PRCGetHasEffect(EFFECT_TYPE_SLEEP, oTarget))
 | |
|     {
 | |
|         if(DEBUG) DoDebug("inv_painslumber: Target awakened unnaturally");
 | |
|         effect eSleepDam = EffectDamage(GetLocalInt(oTarget, "PainfulSleep"), DAMAGE_TYPE_MAGICAL);
 | |
|         ApplyEffectToObject(DURATION_TYPE_INSTANT, eSleepDam, oTarget);
 | |
|         DeleteLocalInt(oTarget, "PainfulSleep");
 | |
|     }
 | |
|     else
 | |
|         DelayCommand(3.0, DoDamageCheck(oTarget, nSleepCheck));
 | |
| }
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     if (!PreInvocationCastCode()) return;
 | |
| 
 | |
|     //Declare major variables
 | |
|     object oTarget = PRCGetSpellTargetObject();
 | |
|     effect eImpact = EffectVisualEffect(VFX_FNF_LOS_NORMAL_20);
 | |
|     effect eSleep =  EffectSleep();
 | |
|     effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE);
 | |
|     effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
 | |
|     effect eVis = EffectVisualEffect(VFX_IMP_SLEEP);
 | |
| 
 | |
|     effect eLink = EffectLinkEffects(eSleep, eMind);
 | |
|     eLink = EffectLinkEffects(eLink, eDur);
 | |
| 
 | |
|      // * Moved the linking for the ZZZZs into the later code
 | |
|      // * so that they won't appear if creature immune
 | |
| 
 | |
|     int CasterLvl = GetInvokerLevel(OBJECT_SELF, GetInvokingClass());
 | |
| 
 | |
|     int nPenetr = CasterLvl + SPGetPenetr();
 | |
| 
 | |
|     ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eImpact, PRCGetSpellTargetLocation());
 | |
|     string sSpellLocal = "BIOWARE_SPELL_LOCAL_SLEEP_" + ObjectToString(OBJECT_SELF);
 | |
| 
 | |
|     //Get the first target in the spell area
 | |
|     SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, INVOKE_PAINFUL_SLUMBER_OF_AGES));
 | |
|     //Make SR check
 | |
|     if (!PRCDoResistSpell(OBJECT_SELF, oTarget, nPenetr))
 | |
|     {
 | |
|         int nDC = GetInvocationSaveDC(oTarget,OBJECT_SELF);
 | |
|         //Make Will save
 | |
|         if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, (nDC), SAVING_THROW_TYPE_MIND_SPELLS))
 | |
|         {
 | |
|             if (GetIsImmune(oTarget, IMMUNITY_TYPE_SLEEP) == FALSE)
 | |
|             {
 | |
|                 effect eLink2 = EffectLinkEffects(eLink, eVis);
 | |
|                 SPApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink2, oTarget, 0.0,TRUE,-1,CasterLvl);
 | |
|                 SetLocalInt(oTarget, "PainfulSleep", CasterLvl);
 | |
|                 //set up the 24 hour saving throws
 | |
|                 int nSleepCheck = GetLocalInt(oTarget, "nSleepCheck");
 | |
|                 if(nSleepCheck > 30) nSleepCheck = 1;
 | |
|                 DelayCommand(3.0, DoDamageCheck(oTarget, nSleepCheck));
 | |
|                 SetLocalInt(oTarget, "nSleepCheck", nSleepCheck);
 | |
|                 DelayCommand(HoursToSeconds(24), DoSleepCheck(oTarget, nSleepCheck, OBJECT_SELF));
 | |
|             }
 | |
|             else
 | |
|             // * even though I am immune apply just the sleep effect for the immunity message
 | |
|             {
 | |
|                     SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eSleep, oTarget, 6.0,TRUE,-1,CasterLvl);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |