88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| //::///////////////////////////////////////////////
 | |
| //:: Blade Barrier: On Enter
 | |
| //:: NW_S0_BladeBarA.nss
 | |
| //:: Copyright (c) 2001 Bioware Corp.
 | |
| //:://////////////////////////////////////////////
 | |
| /*
 | |
|     Creates a wall 10m long and 2m thick of whirling
 | |
|     blades that hack and slice anything moving into
 | |
|     them.  Anything caught in the blades takes
 | |
|     2d6 per caster level.
 | |
| */
 | |
| //:://////////////////////////////////////////////
 | |
| //:: Created By: Preston Watamaniuk
 | |
| //:: Created On: July 20, 2001
 | |
| //:://////////////////////////////////////////////
 | |
| 
 | |
| 
 | |
| #include "ke_spell_factor"
 | |
| 
 | |
| #include "X0_I0_SPELLS"
 | |
| #include "x2_inc_spellhook"
 | |
| 
 | |
| void main()
 | |
| {
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     //Declare major variables
 | |
|     object oTarget = GetEnteringObject();
 | |
|     effect eDam;
 | |
|     effect eVis = EffectVisualEffect(VFX_COM_BLOOD_LRG_RED);
 | |
|     int nMetaMagic = GetMetaMagicFeat();
 | |
|     int nLevel = GetCasterLevel(GetAreaOfEffectCreator());
 | |
|     nLevel = 12;
 | |
| 
 | |
|     //Make level check
 | |
|     if (nLevel > 20)
 | |
|     {
 | |
|         nLevel = 20;
 | |
|     }
 | |
|     if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator()))
 | |
|     {
 | |
|         //Fire spell cast at event
 | |
|         SignalEvent(oTarget, EventSpellCastAt(GetAreaOfEffectCreator(), SPELL_BLADE_BARRIER));
 | |
|         //Roll Damage
 | |
|         int nDamage = ((d12(nLevel))+60)/2;
 | |
|         //Enter Metamagic conditions
 | |
|         if (nMetaMagic == METAMAGIC_MAXIMIZE)
 | |
|         {
 | |
|             nDamage = ((12*(nLevel))+60)/2;//Damage is at max
 | |
|         }
 | |
|         else if (nMetaMagic == METAMAGIC_EMPOWER)
 | |
|         {
 | |
|             nDamage = nDamage + (nDamage/2);
 | |
|         }
 | |
|         //Make SR Check
 | |
|         if (!MyResistSpell(GetAreaOfEffectCreator(), oTarget) )
 | |
|         {
 | |
|             //Adjust damage according to Reflex Save, Evasion or Improved Evasion
 | |
|             // nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC());
 | |
| 
 | |
|             //starting the grand circus of importing and converting back and forth //
 | |
| 
 | |
|                 float fDamage = IntToFloat(nDamage);
 | |
| 
 | |
|                 // multiplaying damage with fFactor //
 | |
| 
 | |
|                 float fFactor = CalculateFactor();
 | |
| 
 | |
|                 fDamage = fDamage * fFactor;
 | |
| 
 | |
|                 // converting the float damage back to INT damage so we can use it again //
 | |
| 
 | |
|                 int nDamage2 = FloatToInt(fDamage);
 | |
| 
 | |
|                // Done and remember to change nDamage with nDamage2 below :) //
 | |
| 
 | |
|             //Set damage effect
 | |
|             eDam = EffectDamage(nDamage2, DAMAGE_TYPE_SLASHING);
 | |
|             //Apply damage and VFX
 | |
|             ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
 | |
|             ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 |