54 lines
2.7 KiB
Plaintext
54 lines
2.7 KiB
Plaintext
#include "NW_I0_SPELLS"
|
|
|
|
|
|
void main()
|
|
{
|
|
//Declare major variables
|
|
object oTarget;
|
|
effect eDam;
|
|
effect eVis = EffectVisualEffect(VFX_IMP_SONIC);
|
|
effect eVis2 = EffectVisualEffect(VFX_IMP_DEATH);
|
|
effect eWeird = EffectVisualEffect(VFX_FNF_WEIRD);
|
|
effect eAbyss = EffectVisualEffect(VFX_DUR_ANTI_LIGHT_10);
|
|
int nCasterLvl = GetCasterLevel(OBJECT_SELF);
|
|
float fDelay = 0.0; // weird is instant
|
|
|
|
//Apply the FNF VFX impact
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eWeird, GetSpellTargetLocation());
|
|
//Get the first target in the spell area
|
|
oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
|
|
|
|
while (GetIsObjectValid(oTarget)) {
|
|
// make a faction check
|
|
if (!GetIsFriend(oTarget)) {
|
|
// cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_WEIRD));
|
|
|
|
// make an SR Check
|
|
if (!MyResistSpell(OBJECT_SELF, oTarget, fDelay)) {
|
|
|
|
if ((GetHitDice(oTarget) >= 4)
|
|
&& MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_DEATH, OBJECT_SELF, fDelay)) {
|
|
// okay, we're not dead - now apply damage unless we fortsaved too
|
|
if (!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(), SAVING_THROW_TYPE_MIND_SPELLS, OBJECT_SELF, fDelay)) {
|
|
int nDamage = d6(3);
|
|
// no need for metamagic checks since you can't meta a c9 spell
|
|
eDam = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL);
|
|
//Apply VFX Impact and damage effect
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget));
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget));
|
|
}
|
|
} else {
|
|
// apply VFX impact and death effect
|
|
DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget));
|
|
}
|
|
}
|
|
}
|
|
|
|
// get next target in spell area
|
|
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetSpellTargetLocation(), TRUE);
|
|
}
|
|
}
|
|
|
|
|