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

  1. //::///////////////////////////////////////////////
  2. //:: Acid Fog: Heartbeat
  3. //:: NW_S0_AcidFogC.nss
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     All creatures within the AoE take 2d6 acid damage
  8.     per round and upon entering if they fail a Fort Save
  9.     their movement is halved.
  10. */
  11. //:://////////////////////////////////////////////
  12. //:: Created By: Preston Watamaniuk
  13. //:: Created On: May 17, 2001
  14. //:://////////////////////////////////////////////
  15.  
  16. #include "NW_I0_SPELLS"    
  17. void main()
  18. {
  19.     //Declare major variables
  20.     int nMetaMagic = GetMetaMagicFeat();
  21.     int nDamage = d6(2);
  22.     effect eDam;
  23.     effect eVis = EffectVisualEffect(VFX_IMP_ACID_S);
  24.     object oTarget;
  25.     float fDelay;
  26.  
  27.         //Enter Metamagic conditions
  28.         if (nMetaMagic == METAMAGIC_MAXIMIZE)
  29.         {
  30.             nDamage = 12;//Damage is at max
  31.         }
  32.         if (nMetaMagic == METAMAGIC_EMPOWER)
  33.         {
  34.             nDamage = nDamage + (nDamage/2); //Damage/Healing is +50%
  35.         }
  36.     //Set the damage effect
  37.     eDam = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
  38.     //Start cycling through the AOE Object for viable targets including doors and placable objects.
  39.     oTarget = GetFirstInPersistentObject(OBJECT_SELF);
  40.     while(GetIsObjectValid(oTarget))
  41.     {
  42.         if(!GetIsReactionTypeFriendly(oTarget, GetAreaOfEffectCreator()))
  43.         {
  44.             if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_ACID, GetAreaOfEffectCreator(), fDelay))
  45.             {
  46.                  nDamage = d6();
  47.             }
  48.             fDelay = GetRandomDelay(0.4, 1.2);
  49.             //Fire cast spell at event for the affected target
  50.             SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_ACID_FOG));
  51.             //Spell resistance check
  52.             if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget, fDelay))
  53.             {
  54.                //Apply damage and visuals
  55.                 DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
  56.                 DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
  57.             }
  58.         }
  59.         //Get next target.
  60.         oTarget = GetNextInPersistentObject(OBJECT_SELF);
  61.     }
  62. }
  63.