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.
67 lines
2.7 KiB
Plaintext
67 lines
2.7 KiB
Plaintext
/*
|
|
03/02/21 by Stratovarius
|
|
|
|
Amon, the Void Before the Altar
|
|
|
|
Fire Breath: You can vomit forth a line of fire as a standard
|
|
action. The line extends 10 feet per effective binder level
|
|
(maximum 50 feet) and deals 1d6 points of fire damage per
|
|
binder level to every creature in its area. A successful Reflex
|
|
save halves this damage. Once you have used this ability, you
|
|
cannot do so again for 5 rounds.
|
|
*/
|
|
|
|
#include "bnd_inc_bndfunc"
|
|
|
|
void main()
|
|
{
|
|
object oBinder = OBJECT_SELF;
|
|
if(!BindAbilCooldown(oBinder, GetSpellId(), VESTIGE_AMON)) return;
|
|
|
|
//Set the lightning stream to start at the caster's hands
|
|
effect eLightning = EffectBeam(VFX_BEAM_FIRE, oBinder, BODY_NODE_CHEST);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_FLAME_S);
|
|
effect eDamage;
|
|
location lTarget = PRCGetSpellTargetLocation();
|
|
int nBinderLvl = GetBinderLevel(oBinder, VESTIGE_AMON);
|
|
int nDC = GetBinderDC(oBinder, VESTIGE_AMON);
|
|
float fDelay;
|
|
float fDist = 10.0 + (10.0 * nBinderLvl);
|
|
if (fDist > 50.0) fDist = 50.0;
|
|
int nDamage;
|
|
|
|
//Get first target in the area
|
|
object oTarget = MyFirstObjectInShape(SHAPE_SPELLCYLINDER, FeetToMeters(fDist), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oBinder));
|
|
while (GetIsObjectValid(oTarget))
|
|
{
|
|
//Exclude the caster from the damage effects
|
|
if (oTarget != oBinder)
|
|
{
|
|
if (spellsIsTarget(oTarget, SPELL_TARGET_STANDARDHOSTILE, oBinder))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(oBinder, SPELL_LIGHTNING_BOLT));
|
|
//Roll damage
|
|
nDamage = d6(nBinderLvl);
|
|
|
|
//Adjust damage based on Reflex Save, Evasion and Improved Evasion
|
|
nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, SAVING_THROW_TYPE_FIRE);
|
|
if(nDamage > 0)
|
|
{
|
|
eDamage = PRCEffectDamage(oTarget, nDamage, DAMAGE_TYPE_FIRE);
|
|
fDelay = PRCGetSpellEffectDelay(GetLocation(oTarget), oTarget);
|
|
//Apply VFX impcat, damage effect and lightning effect
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget));
|
|
DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
}
|
|
|
|
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLightning, oTarget, 1.0, FALSE);
|
|
}
|
|
}
|
|
//Get the next object in the lightning cylinder
|
|
oTarget = MyNextObjectInShape(SHAPE_SPELLCYLINDER, FeetToMeters(fDist), lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oBinder));
|
|
}
|
|
}
|
|
|
|
|