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.
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //:://////////////////////////////////////////////
 | |
| //:: Change Shape use
 | |
| //:: prc_chngshp_lern
 | |
| //:://////////////////////////////////////////////
 | |
| /** @file
 | |
|     Targets some creature to have it be stored
 | |
|     as a known template and attempts to shift
 | |
|     into it.
 | |
| 
 | |
| 
 | |
|     @author Shane Hennessy
 | |
|     @date   Modified - 2006.10.08 - rewritten by Ornedan - modified by Fox
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| #include "prc_inc_shifting"
 | |
| #include "prc_inc_spells"
 | |
| #include "inv_inc_invfunc"
 | |
| #include "inv_invokehook"
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     if (!PreInvocationCastCode())
 | |
|     {
 | |
|     // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
 | |
|         return;
 | |
|     }
 | |
|     
 | |
|     object oPC     = OBJECT_SELF;
 | |
|     object oTarget = PRCGetSpellTargetObject();
 | |
|     int nSpellID   = GetSpellId();
 | |
|     int nShiftType = SHIFTER_TYPE_DISGUISE_SELF;
 | |
|     int nCasterLvl = GetInvokerLevel(oPC, GetInvokingClass());
 | |
|     
 | |
|     SetLocalInt(oPC, "MaskOfFleshInvocation", nCasterLvl);
 | |
|     
 | |
|     if(nSpellID == INVOKE_MASK_OF_FLESH_HOSTILE)
 | |
|     {
 | |
|         
 | |
| 	    PRCSignalSpellEvent(oTarget, TRUE, INVOKE_MASK_OF_FLESH_HOSTILE, oPC);
 | |
| 	    
 | |
|         //save
 | |
| 		if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, GetInvocationSaveDC(oTarget, oPC), SAVING_THROW_TYPE_SPELL))
 | |
| 		{
 | |
| 			effect eCha = EffectAbilityDecrease(ABILITY_CHARISMA, d6());
 | |
|             effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
 | |
| 			
 | |
| 			SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eCha, oTarget, HoursToSeconds(nCasterLvl),TRUE,-1,nCasterLvl);
 | |
| 			SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
 | |
| 		}
 | |
| 		else
 | |
| 		    return;
 | |
|     }
 | |
| 
 | |
|     // Store the PC's current appearance as true appearance
 | |
|     /// @note This may be a bad idea, we have no way of knowing if the current appearance really is the "true appearance" - Ornedan
 | |
|     StoreCurrentAppearanceAsTrueAppearance(oPC, TRUE);
 | |
| 
 | |
|     // See if the creature is shiftable to. If so, store it as a template and shift
 | |
|     if(GetCanShiftIntoCreature(oPC, nShiftType, oTarget))
 | |
|     {
 | |
|         // Start shifting. If this fails immediately, refund the shifting use
 | |
|         if(!ShiftIntoCreature(oPC, nShiftType, oTarget))
 | |
|         {
 | |
|             DeleteLocalInt(oPC, "MaskOfFleshInvocation");
 | |
|         }
 | |
|     }
 | |
|     
 | |
| }
 |