//Spell script for reserve feat ranged touch attacks //prc_reservrng //by ebonfowl //Dedicated to Edgar, the real Ebonfowl #include "prc_inc_sp_tch" #include "prc_add_spell_dc" #include "prc_inc_spells" void DoRanged(effect eVis, int nSaveType, int nDamage, int nDamageType, int nSpellID = -1) { object oTarget = PRCGetSpellTargetObject(); int nAtk = PRCDoRangedTouchAttack(oTarget, TRUE, OBJECT_SELF); if(nAtk) { effect eMissile = EffectVisualEffect(VFX_IMP_MIRV); if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF)) { //Fire cast spell at event for the specified target PRCSignalSpellEvent(oTarget, TRUE, nSpellID); // Apply the damage and the damage visible effect to the target. ApplyTouchAttackDamage(OBJECT_SELF, oTarget, nAtk, nDamage, nDamageType); PRCBonusDamage(oTarget); SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); /*if(PRCGetIsAliveCreature(oTarget)) { // If the target failed it's save then apply the failed save effect as well for 1 round. if (!PRCMySavingThrow(nSaveType, oTarget, PRCGetSaveDC(oTarget, OBJECT_SELF))) { SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eFailSave, oTarget, RoundsToSeconds(1),TRUE,-1,nCasterLvl); } }*/ } } PRCSetSchool(); } void main() { int nSpellID = PRCGetSpellId(); int nDice, nDamage; effect eVis, eVisFail; if (!GetLocalInt(OBJECT_SELF, "AcidicSplatterBonus")) { FloatingTextStringOnCreature("You do not have a spell available of adequate level or type", OBJECT_SELF, FALSE); return; } switch (nSpellID) { case SPELL_ACIDIC_SPLATTER: { nDamage = d6(GetLocalInt(OBJECT_SELF, "AcidicSplatterBonus")); eVis = EffectVisualEffect(VFX_IMP_ACID_S); eVisFail = EffectVisualEffect(VFX_IMP_STUN); DoRanged(eVis, SAVING_THROW_TYPE_ACID, nDamage, DAMAGE_TYPE_ACID); } } }