home *** CD-ROM | disk | FTP | other *** search
/ PC Zone 125 / DPPCZ0203B.7z / DPPCZ0203B.ISO / Demos / Neverwinter / data1.cab / override / nw_s2_layonhand.nss < prev    next >
Text File  |  2002-09-10  |  2KB  |  68 lines

  1. //::///////////////////////////////////////////////
  2. //:: Lay_On_Hands
  3. //:: NW_S2_LayOnHand.nss
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     The Paladin is able to heal his Chr Bonus times
  8.     his level.
  9. */
  10. //:://////////////////////////////////////////////
  11. //:: Created By: Preston Watamaniuk
  12. //:: Created On: Aug 15, 2001
  13. //:://////////////////////////////////////////////
  14.  
  15. #include "NW_I0_SPELLS"    
  16. void main()
  17. {
  18.     //Declare major variables
  19.     object oTarget = GetSpellTargetObject();
  20.     int nChr = GetAbilityModifier(ABILITY_CHARISMA);
  21.     if (nChr < 0)
  22.     {
  23.         nChr = 0;
  24.     }
  25.     int nLevel = GetLevelByClass(CLASS_TYPE_PALADIN);
  26.     //Caluclate the amount to heal
  27.     int nHeal = nLevel * nChr;
  28.     if(nHeal <= 0)
  29.     {
  30.         nHeal = 1;
  31.     }
  32.     effect eHeal = EffectHeal(nHeal);
  33.     effect eVis = EffectVisualEffect(VFX_IMP_HEALING_M);
  34.     effect eVis2 = EffectVisualEffect(VFX_IMP_SUNSTRIKE);
  35.     effect eDam;
  36.     int nTouch;
  37.     //Check if the target is an undead
  38.     if(GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
  39.     {
  40.         //Fire cast spell at event for the specified target
  41.         SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS));
  42.         //Make a ranged touch attack
  43.         nTouch = TouchAttackMelee(oTarget);
  44.         if(nTouch > 0)
  45.         {
  46.             if(nTouch == 2)
  47.             {
  48.                 nHeal *= 2;
  49.             }
  50.             SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS));
  51.             eDam = EffectDamage(nHeal, DAMAGE_TYPE_DIVINE);
  52.             //Apply the VFX impact and effects
  53.             ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
  54.             ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oTarget);
  55.         }
  56.     }
  57.     else
  58.     {
  59.         //Fire cast spell at event for the specified target
  60.         SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_LAY_ON_HANDS, FALSE));
  61.         //Apply the VFX impact and effects
  62.         ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
  63.         ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
  64.     }
  65.  
  66. }
  67.  
  68.