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

66 lines
2.1 KiB
Plaintext

/*
----------------
Fog from the Void, Fog Cloud Enter
true_utr_fogvoid
----------------
1/9/06 by Stratovarius
*/ /** @file
Fog from the Void
Level: Perfected Map 1
Range: 100 feet
Area: 20' Radius
Duration: 1 Minute
Spell Resistance: No
Save: None
Metautterances: Extend
At your words, moisture in the air and ground condenses into a thick mist.
You create a thick, roiling cloud of fog like the fog cloud spell.
If you add 10 to the DC of your Truespeak check, you can create a solid fog, as the spell.
*/
#include "prc_alterations"
#include "inv_inc_invfunc"
#include "inv_invokehook"
void main()
{
SetAllAoEInts(INVOKE_AOE_MIASMIC_CLOUD,OBJECT_SELF, GetSpellSaveDC());
//Declare major variables
object oTarget = GetEnteringObject();
object oCaster = GetAreaOfEffectCreator();
int nCasterLvl = GetInvokerLevel(oCaster, CLASS_TYPE_WARLOCK);
int nDC = GetInvocationSaveDC(oTarget, oCaster, INVOKE_MIASMIC_CLOUD);
effect eConceal = EffectConcealment(20);
effect eDex = EffectAbilityDecrease(ABILITY_DEXTERITY, 2);
effect eStr = EffectAbilityDecrease(ABILITY_STRENGTH, 2);
// Link
effect eLink = EffectLinkEffects(eConceal, eDex);
eLink = EffectLinkEffects(eConceal, eStr);
//Fire cast spell at event for the target
SignalEvent(oTarget, EventSpellCastAt(oCaster, INVOKE_MIASMIC_CLOUD));
if(oTarget != oCaster)
{
if(!PRCDoResistSpell(oCaster, oTarget, SPGetPenetrAOE(GetAreaOfEffectCreator(), nCasterLvl)))
{
//save
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL))
{
// Maximum time possible. If its less, its simply cleaned up when the utterance ends.
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(20));
}
else
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eConceal, oTarget, RoundsToSeconds(20));
}
}
else
SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eConceal, oTarget, RoundsToSeconds(20));
}