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.
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Animate Dead
 | |
| //:: NW_S0_AnimDead.nss
 | |
| //:: Copyright (c) 2001 Bioware Corp.
 | |
| //:://////////////////////////////////////////////
 | |
| /*
 | |
|     Summons a powerful skeleton or zombie depending
 | |
|     on caster level.
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Preston Watamaniuk
 | |
| //:: Created On: April 11, 2001
 | |
| //:://////////////////////////////////////////////
 | |
| //:: modified by mr_bumpkin Dec 4, 2003
 | |
| 
 | |
| #include "prc_inc_spells"
 | |
| #include "prc_inc_template"
 | |
| 
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     if(!X2PreSpellCastCode()) return;
 | |
| 
 | |
|     PRCSetSchool(SPELL_SCHOOL_NECROMANCY);
 | |
| 
 | |
|     //Declare major variables
 | |
|     object oCaster = OBJECT_SELF;
 | |
| 	int nLichHD = GetHitDice(oCaster);
 | |
|     location lTarget = PRCGetSpellTargetLocation();
 | |
|     int nCasterLevel = PRCGetCasterLevel(oCaster);
 | |
|     int nMetaMagic = PRCGetMetaMagicFeat();
 | |
|     float fDuration = HoursToSeconds(24);
 | |
|     //Metamagic extension if needed
 | |
|     if(nMetaMagic & METAMAGIC_EXTEND)
 | |
|         fDuration *= 2;  //Duration is +100%
 | |
| 
 | |
|     string sResRef;
 | |
|     int nHD;
 | |
| 
 | |
|     //Summon the appropriate creature based on the summoner level
 | |
|     if (nCasterLevel <= 5)
 | |
|     {
 | |
|         //Tyrant Fog Zombie
 | |
|         sResRef = "NW_S_ZOMBTYRANT";
 | |
|         nHD = 4;
 | |
|     }
 | |
|     else if ((nCasterLevel >= 6) && (nCasterLevel <= 9))
 | |
|     {
 | |
|         //Skeleton Warrior
 | |
|         sResRef = "NW_S_SKELWARR";
 | |
|         nHD = 6;
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|         //Skeleton Chieftain
 | |
|         sResRef = "NW_S_SKELCHIEF";
 | |
|         nHD = 7;
 | |
|     }
 | |
| 
 | |
|     effect eSummon = EffectSummonCreature(sResRef, VFX_FNF_SUMMON_UNDEAD);
 | |
| 
 | |
|     MultisummonPreSummon();
 | |
| 
 | |
|     if(GetPRCSwitch(PRC_PNP_ANIMATE_DEAD))
 | |
|     {
 | |
|         int nMaxHD = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCaster) >= 8 ?
 | |
|                      nCasterLevel * (4 + GetAbilityModifier(ABILITY_CHARISMA, oCaster)) : nCasterLevel * 4;
 | |
|                      
 | |
|         if(GetHasSpellEffect(SPELL_DES_20) || GetHasSpellEffect(SPELL_DES_100) || GetHasSpellEffect(SPELL_DESECRATE))
 | |
|         	nMaxHD *= 2;
 | |
| 	
 | |
| 		if(GetHasTemplate(TEMPLATE_ARCHLICH, oCaster)) //: Archlich
 | |
| 			nMaxHD = nLichHD;
 | |
| 			
 | |
|         int nTotalHD = GetControlledUndeadTotalHD();
 | |
|         
 | |
|         int nGold = GetGold(oCaster);
 | |
|         int nCost = nHD * 25;
 | |
|         if((nTotalHD+nHD) <= nMaxHD)
 | |
|         {
 | |
|             if(nCost > nGold)
 | |
|             {
 | |
|                 FloatingTextStringOnCreature("You have insufficient gold to animate this creature", oCaster, FALSE);
 | |
|                 return;
 | |
|             }     
 | |
|             else
 | |
|             {
 | |
|                 TakeGoldFromCreature(nCost, oCaster, TRUE);
 | |
|                 eSummon = SupernaturalEffect(eSummon);
 | |
|                 ApplyEffectAtLocation(DURATION_TYPE_PERMANENT, eSummon, lTarget);
 | |
|                 FloatingTextStringOnCreature("Currently have "+IntToString(nTotalHD+nHD)+"HD out of "+IntToString(nMaxHD)+"HD.", oCaster);
 | |
|             }    
 | |
|         }
 | |
|         else
 | |
|             FloatingTextStringOnCreature("You cannot create more undead at this time.", oCaster);
 | |
|     }
 | |
|     else
 | |
|         ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, lTarget, fDuration);
 | |
| 
 | |
|     PRCSetSchool();
 | |
| }
 |