PRC8/nwn/nwnprc/trunk/spells/sp_throw_ep.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

57 lines
2.2 KiB
Plaintext

//////////////////////////////////////////////////
// Throw energized potion
// sp_throw_ep.nss
//////////////////////////////////////////////////
#include "prc_inc_spells"
void main()
{
object oGrenade = PRCGetSpellCastItem();
int nDamType = GetLocalInt(oGrenade, "PRC_GrenadeDamageType");
int nStrength = GetLocalInt(oGrenade, "PRC_GrenadeLevel");
int nSaveType = GetLocalInt(oGrenade, "PRC_EnergizedPotionSave");
int nDC = GetLocalInt(oGrenade, "PRC_EnPotSaveDC");
int nDam;
location lLoc = PRCGetSpellTargetLocation();
// do some vfx to apply to hit targets
int nVFX;
switch (nDamType)
{
case DAMAGE_TYPE_ACID:
nVFX = VFX_IMP_ACID_L;
break;
case DAMAGE_TYPE_COLD:
nVFX = VFX_IMP_FROST_S;
break;
case DAMAGE_TYPE_ELECTRICAL:
nVFX = VFX_IMP_LIGHTNING_S;
break;
case DAMAGE_TYPE_FIRE:
nVFX = VFX_IMP_FLAME_M;
break;
case DAMAGE_TYPE_SONIC:
nVFX = VFX_IMP_SONIC;
break;
}
effect eVis = EffectVisualEffect(nVFX);
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while(GetIsObjectValid(oTarget))
{
if(spellsIsTarget(oTarget,SPELL_TARGET_STANDARDHOSTILE,OBJECT_SELF))
{
//Fire cast spell at event for the specified target
PRCSignalSpellEvent(oTarget);
nDam = d6(nStrength);
nDam = PRCGetReflexAdjustedDamage(nDam, oTarget, nDC, nSaveType);
if(nDam > 0)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDam, nDamType), oTarget);
// vfx on object
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(10.0), lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
}