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.
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Heal
 | |
| //:: [NW_S0_Heal.nss]
 | |
| //:: Copyright (c) 2000 Bioware Corp.
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Heals the target to full unless they are undead.
 | |
| //:: If undead they reduced to 1d4 HP.
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Preston Watamaniuk
 | |
| //:: Created On: Jan 12, 2001
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Update Pass By: Preston W, On: Aug 1, 2001
 | |
| 
 | |
| //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff
 | |
| 
 | |
| //::Added code to maximize for Faith Healing and Blast Infidel
 | |
| //::Aaon Graywolf - Jan 7, 2004
 | |
| 
 | |
| #include "prc_inc_clsfunc"
 | |
| 
 | |
| void main()
 | |
| {
 | |
| 
 | |
| 
 | |
|   //Declare major variables
 | |
|   object oTarget = OBJECT_SELF;
 | |
|   effect eHeal;
 | |
|   int  nHeal;
 | |
|   effect eSun = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
 | |
|   effect eHealVis = EffectVisualEffect(VFX_IMP_HEALING_S);
 | |
| 
 | |
|   effect eRegen = EffectRegenerate(3, 6.0);
 | |
|   effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE);
 | |
|   effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
 | |
|   effect eLink = EffectLinkEffects(eRegen, eDur);
 | |
|          eLink = EffectLinkEffects(eLink, eVis);
 | |
| 
 | |
| 
 | |
|   if (!GetHasFeat(FEAT_DRAGONSONG_STRENGTH, OBJECT_SELF))
 | |
|   {
 | |
|         FloatingTextStringOnCreature("This ability is tied to your dragons song ability, which has no more uses for today.",OBJECT_SELF); // no more bardsong uses left
 | |
|         return;
 | |
|   }
 | |
| 
 | |
|   if (PRCGetHasEffect(EFFECT_TYPE_SILENCE,OBJECT_SELF))
 | |
|   {
 | |
|        FloatingTextStrRefOnCreature(85764,OBJECT_SELF); // not useable when silenced
 | |
|        return;
 | |
|   }
 | |
| 
 | |
|   if (PRCGetHasEffect(EFFECT_TYPE_DEAF,OBJECT_SELF) && d100(1) <= 20)
 | |
|   {
 | |
|       FloatingTextStringOnCreature("Your deafness has caused you to fail.",OBJECT_SELF);
 | |
|       DecrementRemainingFeatUses(OBJECT_SELF, FEAT_DRAGONSONG_STRENGTH);
 | |
|       return;
 | |
|   }
 | |
| 
 | |
|   effect eFNF = EffectVisualEffect(VFX_FNF_LOS_NORMAL_30);
 | |
|   ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eFNF, GetLocation(OBJECT_SELF));
 | |
| 
 | |
|   RemoveOldSongEffects(OBJECT_SELF,SPELL_DSL_SONG_HEALING);
 | |
|   RemoveOldSongs(OBJECT_SELF);
 | |
| 
 | |
|   int nEpic = GetHasFeat(FEAT_EPIC_DRAGONSONG_HEALING) ? TRUE:FALSE;
 | |
|   //Fire cast spell at event for the specified target
 | |
|   SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HEAL, FALSE));
 | |
| 
 | |
|     int nLevel = GetLevelByClass(CLASS_TYPE_DRAGONSONG_LYRIST);
 | |
| 
 | |
|     //Determine spell duration as an integer for later conversion to Rounds, Turns or Hours.
 | |
|     int nDuration = 10*nLevel;
 | |
| 
 | |
|         //Check to see if the caster has Lasting Impression and increase duration.
 | |
|     if(GetHasFeat(870))
 | |
|     {
 | |
|         nDuration *= 10;
 | |
|     }
 | |
| 
 | |
|     // lingering song
 | |
|     if(GetHasFeat(424)) // lingering song
 | |
|     {
 | |
|         nDuration += 5;
 | |
|     }
 | |
| 
 | |
|   //Get first target in shape
 | |
|   oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation());
 | |
|   while (GetIsObjectValid(oTarget))
 | |
|   {
 | |
| 
 | |
|      if(GetIsReactionTypeFriendly(oTarget)|| GetFactionEqual(oTarget))
 | |
|      {
 | |
|         //Figure out how much to heal
 | |
|         nHeal = (nEpic) ? (d8(4) + 2 * nLevel) : (d8(2) + 2 * nLevel); // cure moderate or cure critical (epic)
 | |
| 
 | |
|         //Set the heal effect
 | |
|         eHeal = EffectHeal(nHeal);
 | |
|         //Apply the heal effect and the VFX impact
 | |
|         SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHealVis, oTarget);
 | |
|         SPApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
 | |
| 
 | |
|         if (nEpic)
 | |
|         {
 | |
|             SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, SupernaturalEffect(eLink), oTarget, RoundsToSeconds(nDuration),FALSE);
 | |
|             StoreSongRecipient(oTarget, OBJECT_SELF, GetSpellId(), nDuration);
 | |
|          }
 | |
|         // Code for FB to remove damage that would be caused at end of Frenzy
 | |
|         SetLocalInt(oTarget, "PC_Damage", 0);
 | |
|      }
 | |
|      //Get next target in the shape
 | |
|      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_HUGE, PRCGetSpellTargetLocation());
 | |
|   }
 | |
| 
 | |
|   DecrementRemainingFeatUses(OBJECT_SELF, FEAT_DRAGONSONG_STRENGTH);
 | |
| 
 | |
| }
 |