PRC8/nwn/nwnprc/trunk/newspellbook/moi_mld_bldwrft.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

59 lines
2.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
31/12/19 by Stratovarius
Bloodwar Gauntlets Bind (Arms)
Your bloodwar gauntlets bind themselves to your wrists and forearms. Instead of separate rings of metal extending up your arms, they now
form a solid sheath of completely unreflective metal in which fiendish visages manifest and subside, always contorted with rage and pain.
You can use a standard action to release the soulmelds violent energy in a tumultuous blast, unshaping the soulmeld in the process.
The blast deals 3d6 points of damage for every point of essentia invested to all creatures within a 20-foot radius burst, excluding you.
A successful Fortitude save halves this damage.
*/
#include "moi_inc_moifunc"
void main()
{
object oMeldshaper = OBJECT_SELF;
int nMeldshaperLevel = GetMeldshaperLevel(oMeldshaper, CLASS_TYPE_INCARNATE, MELD_BLOODWAR_GAUNTLETS);
int nDice = GetEssentiaInvested(oMeldshaper, MELD_BLOODWAR_GAUNTLETS) * 3;
int nDC = GetMeldshaperDC(oMeldshaper, CLASS_TYPE_INCARNATE, MELD_BLOODWAR_GAUNTLETS);
location lTarget = PRCGetSpellTargetLocation();
int nDamage;
float fDelay;
effect eExplode = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_M);
effect eDam;
//Apply the fireball explosion at the location captured above.
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eExplode, lTarget);
//Declare the spell shape, size and the location. Capture the first target object in the shape.
object oTarget = MyFirstObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
//Cycle through the targets within the spell shape until an invalid object is captured.
while (GetIsObjectValid(oTarget))
{
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, OBJECT_SELF) && oMeldshaper != oTarget)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(oMeldshaper, MELD_BLOODWAR_GAUNTLETS));
//Get the distance between the explosion and the target to calculate delay
fDelay = GetDistanceBetweenLocations(lTarget, GetLocation(oTarget))/20;
if (!PRCDoResistSpell(oMeldshaper, oTarget, nMeldshaperLevel, fDelay))
{
nDamage = d6(nDice);
if(PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_NONE))
nDamage /= 2;
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(nDamage, DAMAGE_TYPE_FIRE), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
}
}
//Select the next target within the spell shape.
oTarget = MyNextObjectInShape(SHAPE_SPHERE, FeetToMeters(20.0), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
}
// Using this ability ends the meld until tomorrow.
PRCRemoveSpellEffects(MELD_BLOODWAR_GAUNTLETS, oMeldshaper, oMeldshaper);
}