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

  1. //::///////////////////////////////////////////////
  2. //:: Vampiric Touch
  3. //:: NW_S0_VampTch
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     Caster must make a touch attack to drain 1d6
  8.     HP per 2 caster levels from the target.
  9. */
  10. //:://////////////////////////////////////////////
  11. //:: Created By: Preston Watamaniuk
  12. //:: Created On: Oct 29, 2001
  13. //:://////////////////////////////////////////////
  14.  
  15. #include "NW_I0_SPELLS"    
  16. void main()
  17. {
  18.     //Declare major variables
  19.     object oTarget = GetSpellTargetObject();
  20.     int nDuration = GetCasterLevel(OBJECT_SELF);
  21.     int nMetaMagic = GetMetaMagicFeat();
  22.     int nDamage = d6(nDuration/2);
  23.     if(nDamage == 0)
  24.     {
  25.         nDamage = d6();
  26.     }
  27.     //Enter Metamagic conditions
  28.     if (nMetaMagic == METAMAGIC_MAXIMIZE)
  29.     {
  30.         nDamage = 6 * nDuration;//Damage is at max
  31.     }
  32.     else if (nMetaMagic == METAMAGIC_EMPOWER)
  33.     {
  34.         nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
  35.     }
  36.     else if (nMetaMagic == METAMAGIC_EXTEND)
  37.     {
  38.         nDuration *= 2;
  39.     }
  40.     int nMax = GetCurrentHitPoints(oTarget) + 10;
  41.     //Limit damage to max hp + 10
  42.     if(nMax < nDamage)
  43.     {
  44.         nDamage = nMax;
  45.     }
  46.     //Declare effects
  47.     effect eHeal = EffectTemporaryHitpoints(nDamage);
  48.     effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
  49.     effect eLink = EffectLinkEffects(eHeal, eDur);
  50.  
  51.     effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_NEGATIVE);
  52.     effect eVis = EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY);
  53.     effect eVisHeal = EffectVisualEffect(VFX_IMP_HEALING_M);
  54.     if(GetObjectType(oTarget) == OBJECT_TYPE_CREATURE)
  55.     {
  56.         if(!GetIsReactionTypeFriendly(oTarget) &&
  57.             GetRacialType(oTarget) != RACIAL_TYPE_UNDEAD &&
  58.             GetRacialType(oTarget) != RACIAL_TYPE_CONSTRUCT)
  59.         {
  60.             //Signal spell cast at event
  61.             SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_VAMPIRIC_TOUCH, FALSE));
  62.             SignalEvent(OBJECT_SELF, EventSpellCastAt(oTarget, SPELL_VAMPIRIC_TOUCH, FALSE));
  63.             //Spell resistance
  64.             if(MyResistSpell(OBJECT_SELF, oTarget) == 0)
  65.             {
  66.                 //Apply effects to target and caster
  67.                 ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
  68.                 ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
  69.                 ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisHeal, OBJECT_SELF);
  70.                 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, HoursToSeconds(nDuration));
  71.             }
  72.         }
  73.     }
  74. }
  75.