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

  1. //::///////////////////////////////////////////////
  2. //:: Greater Planar Binding
  3. //:: NW_S0_GrPlanar.nss
  4. //:: Copyright (c) 2001 Bioware Corp.
  5. //:://////////////////////////////////////////////
  6. /*
  7.     Summons an outsider dependant on alignment, or
  8.     holds an outsider if the creature fails a save.
  9. */
  10. //:://////////////////////////////////////////////
  11. //:: Created By: Preston Watamaniuk
  12. //:: Created On: April 12, 2001
  13. //:://////////////////////////////////////////////
  14. #include "NW_I0_SPELLS"
  15. void main()
  16. {
  17.     //Declare major variables
  18.     int nMetaMagic = GetMetaMagicFeat();
  19.     int nCasterLevel = GetCasterLevel(OBJECT_SELF);
  20.     int nDuration = GetCasterLevel(OBJECT_SELF);
  21.     effect eSummon;
  22.     effect eGate;
  23.     effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
  24.     effect eDur2 = EffectVisualEffect(VFX_DUR_PARALYZED);
  25.     effect eDur3 = EffectVisualEffect(VFX_DUR_PARALYZE_HOLD);
  26.  
  27.     effect eLink = EffectLinkEffects(eDur, EffectParalyze());
  28.     eLink = EffectLinkEffects(eLink, eDur2);
  29.     eLink = EffectLinkEffects(eLink, eDur3);
  30.     
  31.     object oTarget = GetSpellTargetObject();
  32.     int nRacial = GetRacialType(oTarget);
  33.     //Check for metamagic extend
  34.     if (nMetaMagic == METAMAGIC_EXTEND)
  35.     {
  36.         nDuration = nDuration *2;    //Duration is +100%
  37.     }
  38.     //Check to see if a valid target has been chosen
  39.     if (GetIsObjectValid(oTarget))
  40.     {
  41.         if(!GetIsReactionTypeFriendly(oTarget))
  42.         {
  43.             //Fire cast spell at event for the specified target
  44.             SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_GREATER_PLANAR_BINDING));
  45.             //Check for racial type
  46.             if(nRacial == RACIAL_TYPE_OUTSIDER)
  47.             {
  48.                 //Allow will save to negate hold effect
  49.                 if(!MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC()+5))
  50.                 {
  51.                     //Apply the hold effect
  52.                     ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration/2));
  53.                 }
  54.             }
  55.         }
  56.     }
  57.     else
  58.     {
  59.         //If the ground was clicked on summon an outsider based on alignment
  60.         int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
  61.         float fDelay = 3.0;
  62.         switch (nAlign)
  63.         {
  64.             case ALIGNMENT_EVIL:
  65.                 eSummon = EffectSummonCreature("NW_S_VROCK", VFX_FNF_SUMMON_GATE, 3.0);
  66.                 //eGate = EffectVisualEffect(VFX_FNF_SUMMON_GATE);
  67.             break;
  68.             case ALIGNMENT_GOOD:
  69.                 eSummon = EffectSummonCreature("NW_S_CTRUMPET", VFX_FNF_SUMMON_CELESTIAL, 3.0);
  70.                 //eGate = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL);
  71.             break;
  72.             case ALIGNMENT_NEUTRAL:
  73.                 eSummon = EffectSummonCreature("NW_S_SLAADDETH", VFX_FNF_SUMMON_MONSTER_3, 1.0);
  74.                 //eGate = EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3);
  75.                 fDelay = 1.0;
  76.             break;
  77.         }
  78.         //Apply the VFX impact and summon effect
  79.         //ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eGate, GetSpellTargetLocation());
  80.         //DelayCommand(fDelay, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), HoursToSeconds(nDuration)));
  81.         ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, GetSpellTargetLocation(), RoundsToSeconds(nDuration));
  82.     }
  83. }
  84.  
  85.