PRC8/nwn/nwnprc/trunk/scripts/prc_reservrng.nss
Jaysyn904 6ec137a24e Updated AMS marker feats
Updated AMS marker feats.  Removed arcane & divine marker feats.  Updated Dread Necromancer for epic progression. Updated weapon baseitem models.  Updated new weapons for crafting & npc equip.
 Updated prefix.  Updated release archive.
2024-02-11 14:01:05 -05:00

68 lines
2.1 KiB
Plaintext

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