//:://///////////////////////////////////////////// //:: 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); } } }