//:://///////////////////////////////////////////// //:: Incendiary Cloud //:: NW_S0_IncCloud.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Person within the AoE take 4d6 fire damage per round. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: May 17, 2001 //::////////////////////////////////////////////// //:: March 2003: Removed movement speed penalty #include "ke_spell_factor" #include "X0_I0_SPELLS" void main() { //Declare major variables int nMetaMagic = GetMetaMagicFeat(); int nCasterLvl = 16; int nDamage; effect eDam; object oTarget; //Declare and assign personal impact visual effect. effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S); // effect eSpeed = EffectMovementSpeedDecrease(50); effect eVis2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); effect eLink = eVis2; //EffectLinkEffects(eSpeed, eVis2); float fDelay; //Capture the first target object in the shape. oTarget = GetEnteringObject(); //Declare the spell shape, size and the location. if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, GetAreaOfEffectCreator())) { //Fire cast spell at event for the specified target SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_INCENDIARY_CLOUD)); //Make SR check, and appropriate saving throw(s). if(!MyResistSpell(GetAreaOfEffectCreator(), oTarget, fDelay)) { fDelay = GetRandomDelay(0.5, 2.0); //Roll damage. nDamage = (((d10(nCasterLvl))*2)+100); //Enter Metamagic conditions if (nMetaMagic == METAMAGIC_MAXIMIZE) { nDamage = (((10*(nCasterLvl))*2)+100);//Damage is at max } if (nMetaMagic == METAMAGIC_EMPOWER) { nDamage = nDamage + (nDamage/2); //Damage/Healing is +50% } //Adjust damage for Reflex Save, Evasion and Improved Evasion nDamage = GetReflexAdjustedDamage(nDamage, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_FIRE, GetAreaOfEffectCreator()); //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 :) // // Apply effects to the currently selected target. eDam = EffectDamage(nDamage2, DAMAGE_TYPE_FIRE); if(nDamage > 0) { DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget)); DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget)); } } // ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSpeed, oTarget); } }