PRC8/nwn/nwnprc/trunk/newspellbook/inv_miasmicclda.nss
Jaysyn904 2caeb8941c 2025/05/13 Update
Updated TF Shadowlord's prereq 2da.
Fixed CW Samurai's TWF levelup issue.
Added CW Samurai's skill 2DA back in.
Cleaned up ECL 2DA.
Fixed prereq bug with Imp Crit Eagle Claw.
Added Ability Focus feats for all Shapes, Essences & Invocations with DCs.
Fixed bug with 6th slot of crafting spells prereqs.
Added Reth Dekala HD to Initiator total.
Removed Dark Sun race files.
Updated all racial outsiders, monstrous humanoids, aberrations, giants, humanoids and fey to have the correct weapon & armor profs.
2025-05-13 23:05:31 -04:00

69 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);
if (GetHasFeat(FEAT_ABFOC_MIASMIC_CLOUD, oCaster)) nDC += 2;
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));
}