Updated to PRC8. Further function integration. Fixed NPC onDeath script. Full compile. Updated release archive.
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | ||
| //:: Name      Mass Fire Shield
 | ||
| //:: FileName  sp_mass_frshld.nss
 | ||
| //:://////////////////////////////////////////////
 | ||
| /**@file Mass Fire Shield
 | ||
| Evocation [Fire or Cold]
 | ||
| Level: Sorcerer/wizard 5, warmage 5
 | ||
| Components: V, S, M
 | ||
| Casting Time: 1 standard action
 | ||
| Range: Close (25 ft. + 5 ft./2 levels)
 | ||
| Targets: One or more allied creatures, no two of which
 | ||
| can be more than 30 ft. apart
 | ||
| Duration: 1 round/level (D)
 | ||
| Save: Will negates (harmless)
 | ||
| Spell Resistance: Yes (harmless)
 | ||
| 
 | ||
| This spell functions like fire shield (see
 | ||
| page 230 of the Player’s Handbook),
 | ||
| except as noted above.
 | ||
| 
 | ||
| Author:    Tenjac
 | ||
| Created:   7/6/07
 | ||
| */
 | ||
| //:://////////////////////////////////////////////
 | ||
| //:://////////////////////////////////////////////
 | ||
| 
 | ||
| #include "prc_inc_spells"
 | ||
| 
 | ||
| void main()
 | ||
| {
 | ||
|   PRCSetSchool(SPELL_SCHOOL_EVOCATION);
 | ||
| 
 | ||
|   if(!X2PreSpellCastCode()) return;
 | ||
| 
 | ||
|   object oPC = OBJECT_SELF;
 | ||
|   int nCasterLvl = PRCGetCasterLevel(oPC);
 | ||
|   location lLoc = PRCGetSpellTargetLocation();
 | ||
|   int nMetaMagic = PRCGetMetaMagicFeat();
 | ||
|   int nDam = min(40,nCasterLvl);
 | ||
|   float fDur = RoundsToSeconds(nCasterLvl);
 | ||
|   effect eVis, eShield, eReduce;
 | ||
|   int nSpell = GetSpellId();
 | ||
|   float fRadius = FeetToMeters(15.0);
 | ||
| 
 | ||
|   //Extend
 | ||
|   if(nMetaMagic & METAMAGIC_EXTEND) fDur += fDur;
 | ||
| 
 | ||
|   if(nSpell == SPELL_MASS_FIRE_SHIELD_RED)
 | ||
|   {
 | ||
|       eVis = EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD);
 | ||
|       eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_FIRE));
 | ||
|       eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_COLD, 50);
 | ||
|   }
 | ||
|   else if (nSpell == SPELL_MASS_FIRE_SHIELD_BLUE)
 | ||
|   {
 | ||
|       eVis = EffectVisualEffect(VFX_DUR_CHILL_SHIELD);
 | ||
|       eShield = EffectDamageShield(nDam, DAMAGE_BONUS_1d6, ChangedElementalDamage(oPC, DAMAGE_TYPE_COLD));
 | ||
|       eReduce = EffectDamageImmunityIncrease(DAMAGE_TYPE_FIRE, 50);
 | ||
|   }
 | ||
|   effect eLink = EffectLinkEffects(eShield, eVis);
 | ||
|          eLink = EffectLinkEffects(eLink, eReduce);
 | ||
| 
 | ||
|   object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc, FALSE, OBJECT_TYPE_CREATURE);
 | ||
|   while(GetIsObjectValid(oTarget))
 | ||
|   {
 | ||
|     if(GetIsFriend(oTarget, oPC))
 | ||
|     {
 | ||
|       SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, fDur, TRUE, nSpell, nCasterLvl);
 | ||
|     }
 | ||
|     oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc, FALSE, OBJECT_TYPE_CREATURE);
 | ||
|   }
 | ||
|   PRCSetSchool();
 | ||
| }
 | ||
| 
 |