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

  1. //::///////////////////////////////////////////////
  2. //:: Pulse: Poison
  3. //:: NW_S1_PulsPois
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     A wave of energy emanates from the creature which affects
  8.     all within 10ft.  All who make a reflex save are not
  9.     poisoned.
  10. */
  11. //:://////////////////////////////////////////////
  12. //:: Created By: Preston Watamaniuk
  13. //:: Created On: May 23, 2000
  14. //:://////////////////////////////////////////////
  15.  
  16. void main()
  17. {
  18.     //Declare major variables
  19.     int nDamage = d6(GetHitDice(OBJECT_SELF));
  20.     int nRacial = GetRacialType(OBJECT_SELF);
  21.     int nHD = GetHitDice(OBJECT_SELF);
  22.     int nPoison;
  23.     float fDelay;
  24.     effect ePoison;
  25.  
  26.     //Determine the poison type based on the Racial Type and HD
  27.     switch (nRacial)
  28.     {
  29.         case RACIAL_TYPE_OUTSIDER:
  30.             if (nHD <= 9)
  31.             {
  32.                 nPoison = POISON_QUASIT_VENOM;
  33.             }
  34.             else if (nHD > 9  && nHD < 13)
  35.             {
  36.                 nPoison = POISON_BEBILITH_VENOM;
  37.             }
  38.             else if (nHD >= 13)
  39.             {
  40.                 nPoison = POISON_PIT_FIEND_ICHOR;
  41.             }
  42.         break;
  43.         case RACIAL_TYPE_VERMIN:
  44.             if (nHD < 3)
  45.             {
  46.                 nPoison = POISON_TINY_SPIDER_VENOM;
  47.             }
  48.             else if (nHD <= 3 && nHD < 6)
  49.             {
  50.                 nPoison = POISON_SMALL_SPIDER_VENOM;
  51.             }
  52.             else if (nHD <= 6 && nHD < 9)
  53.             {
  54.                 nPoison = POISON_MEDIUM_SPIDER_VENOM;
  55.             }
  56.             else if (nHD <= 9 && nHD < 12)
  57.             {
  58.                 nPoison =  POISON_LARGE_SPIDER_VENOM;
  59.             }
  60.             else if (nHD <= 12 && nHD < 15)
  61.             {
  62.                 nPoison = POISON_HUGE_SPIDER_VENOM;
  63.             }
  64.             else if (nHD <= 15 && nHD < 18)
  65.             {
  66.                 nPoison = POISON_GARGANTUAN_SPIDER_VENOM;
  67.             }
  68.             else if (nHD >= 18)
  69.             {
  70.                 nPoison = POISON_COLOSSAL_SPIDER_VENOM;
  71.             }
  72.         break;
  73.         default:
  74.             if (nHD < 3)
  75.             {
  76.                 nPoison = POISON_NIGHTSHADE;
  77.             }
  78.             else if (nHD <= 3 && nHD < 6)
  79.             {
  80.                 nPoison = POISON_BLADE_BANE;
  81.             }
  82.             else if (nHD <= 6 && nHD < 9)
  83.             {
  84.                 nPoison = POISON_BLOODROOT;
  85.             }
  86.             else if (nHD <= 9 && nHD < 12)
  87.             {
  88.                 nPoison =  POISON_LARGE_SPIDER_VENOM;
  89.             }
  90.             else if (nHD <= 12 && nHD < 15)
  91.             {
  92.                 nPoison = POISON_LICH_DUST;
  93.             }
  94.             else if (nHD <= 15 && nHD < 18)
  95.             {
  96.                 nPoison = POISON_DARK_REAVER_POWDER;
  97.             }
  98.             else if (nHD >= 18 )
  99.             {
  100.                 nPoison = POISON_BLACK_LOTUS_EXTRACT;
  101.             }
  102.         break;
  103.     }
  104.     effect eImpact = EffectVisualEffect(VFX_IMP_PULSE_NATURE);
  105.     ApplyEffectToObject(DURATION_TYPE_INSTANT, eImpact, OBJECT_SELF);
  106.     //Get first target in spell area
  107.     object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
  108.     while(GetIsObjectValid(oTarget))
  109.     {
  110.         if(oTarget != OBJECT_SELF)
  111.         {
  112.             if(!GetIsReactionTypeFriendly(oTarget))
  113.             {
  114.                 //Fire cast spell at event for the specified target
  115.                 SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELLABILITY_PULSE_POISON));
  116.                 //Determine effect delay
  117.                 fDelay = GetDistanceBetween(OBJECT_SELF, oTarget)/20;
  118.                 ePoison = EffectPoison(nPoison);
  119.                 //Apply the VFX impact and effects
  120.                 DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_PERMANENT, ePoison, oTarget));
  121.             }
  122.         }
  123.         //Get next target in spell area
  124.         oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF));
  125.     }
  126. }
  127.  
  128.  
  129.