Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
59 lines
2.9 KiB
Plaintext
59 lines
2.9 KiB
Plaintext
/*
|
||
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 soulmeld’s 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);
|
||
}
|