PRC8_fork/nwn/nwnprc/trunk/smp/smp_s_burninghnd.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

92 lines
3.1 KiB
Plaintext

/*:://////////////////////////////////////////////
//:: Spell Name Burning Hands
//:: Spell FileName SMP_S_BurningHnd
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
Evocation [Fire]
Level: Fire 1, Sor/Wiz 1
Components: V, S
Casting Time: 1 standard action
Range: 5M.
Area: Cone-shaped burst
Duration: Instantaneous
Saving Throw: Reflex half
Spell Resistance: Yes
A cone of searing flame shoots from your fingertips. Any creature in the
area of the flames takes 1d4 points of fire damage per caster level
(maximum 5d4).
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
Minus flammable materials things.
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "SMP_INC_SPELLS"
void main()
{
SpeakString("Burning hands start");
// Spell hook check.
if(!SMP_SpellHookCheck()) return;
SpeakString("Burning hands after hook");
// Declare Major Variables
object oCaster = OBJECT_SELF;
object oTarget;
location lTarget = GetSpellTargetLocation();
int nCasterLevel = SMP_GetCasterLevel();
int nSpellSaveDC = SMP_GetSpellSaveDC();
int nMetaMagic = SMP_GetMetaMagicFeat();
int nDamage;
int nDice = SMP_LimitInteger(nCasterLevel, 5);
float fDelay;
// Declare effects
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
// Get all in a 5M (at the widest radius) cone
oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 5.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
while(GetIsObjectValid(oTarget))
{
SpeakString("Burning hands loop: " + GetName(oTarget));
// Reaction type PvP check.
if(!GetIsReactionTypeFriendly(oTarget) &&
// Make sure they are not immune to spells
!SMP_TotalSpellImmunity(oTarget))
{
// Signal Spell cast at event.
SMP_SignalSpellCastAt(oTarget, SMP_SPELL_BURNING_HANDS);
// Get delay
fDelay = GetDistanceBetween(oCaster, oTarget)/20;
// Spell Resistance and immunity check
if(!SMP_SpellResistanceCheck(oCaster, oTarget, fDelay))
{
// Damage
nDamage = SMP_MaximizeOrEmpower(4, nDice, nMetaMagic);
// Reflex save
nDamage = SMP_GetAdjustedDamage(SAVING_THROW_REFLEX, nDamage, oTarget, nSpellSaveDC, SAVING_THROW_TYPE_FIRE, oCaster);
// Check if any damage
if(nDamage > 0)
{
// Apply effects to the currently selected target.
DelayCommand(fDelay, SMP_ApplyDamageVFXToObject(oTarget, eVis, nDamage, DAMAGE_TYPE_FIRE));
}
}
}
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 5.0, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
SpeakString("Burning hands end");
}