
#include "prc_inc_sp_tch"
//#include "prc_inc_combat"
//#include "prc_inc_spells"

void DoLesserOrb(effect eVis, int nDamageType, int nSpellID = -1)
{
     PRCSetSchool(SPELL_SCHOOL_CONJURATION);

     object oCaster = OBJECT_SELF;
     object oTarget = PRCGetSpellTargetObject();
     int nCasterLvl = PRCGetCasterLevel(oCaster);
     int nMetaMagic = PRCGetMetaMagicFeat();

     int nDice = (nCasterLvl + 1)/2;
     if (nDice > 5) nDice = 5;

     // Get the spell ID if it was not given.
     if(-1 == nSpellID) nSpellID = PRCGetSpellId();

     // Adjust the damage type of necessary.
     nDamageType = PRCGetElementalDamageType(nDamageType, oCaster);

     if(spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oCaster))
     {
          // Fire cast spell at event for the specified target
          PRCSignalSpellEvent(oTarget, TRUE, nSpellID);

          // Note that this spell has no spell resistance intentionally in the WotC Miniatures
          // Handbook, bit powerful but that's how it is in the PnP book.

          // Make touch attack, saving result for possible critical
          int nTouchAttack = PRCDoRangedTouchAttack(oTarget);
          if (nTouchAttack > 0)
          {
               // Roll the damage, doing double damage on a crit.
               int nDamage = PRCGetMetaMagicDamage(nDamageType, 1 == nTouchAttack ? nDice : (nDice * 2), 8);
               nDamage += SpellSneakAttackDamage(OBJECT_SELF, oTarget);
                // Acid Sheath adds +1 damage per die to acid descriptor spells
                if (GetHasDescriptor(GetSpellId(), DESCRIPTOR_ACID) && GetHasSpellEffect(SPELL_MESTILS_ACID_SHEATH, OBJECT_SELF))
                	nDamage += nDice;  
				nDamage += SpellDamagePerDice(OBJECT_SELF, nDice);	
               // Apply the damage and the damage visible effect to the target.
               SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectDamage(oTarget, nDamage, nDamageType), oTarget);
               PRCBonusDamage(oTarget);
               SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
          }
     }

     PRCSetSchool();
}

// Test main
//void main(){}
