From NWN Lexicon
Jump to: navigation, search

Create a Silence effect


This constructor returns a new silence effect.

Silence means spells with the speaking or Verbal component (V) cannot be cast.

The target this effect is applied to must be a creature for it to work. This effect should not be applied instantly, only temporarily or permanently.

Of course, this effect will not stack - there are no possible things it does which will stack.


Some spells, with only Stomatic (moving) components (S) can still be cast - such as SPELL_LESSER_DISPEL.

This effect is dangerous for mages without the Silent Spell feat. Silenced Spells or Auto-silenced spells can still be cast normally.

You get the feedback "You cannot speak and may not cast spells with verbal components." when selecting a spell which has a verbal component. If partially casting one when silence is applied the effect will not take place and the casting will be cancelled (although animations may carry on for a bit).

Items with spells can still be used, and it has no effect on actual speaking with SpeakString, or a PC typing (which is a shame but understandable).

You can become immune to silence with direct immunity via Immunity: Silence.

Effect Breakdown

There are no parameters set for GetEffectInteger or similar. There is a On Hit: Silence effect which applies this effect, combined with a visual VFX_DUR_CESSATE_NEGATIVE.

The main effect is that it sets ~AISTATE_CREATURE_USE_MOUTH, similar to some other functions, which triggers verbal spells to need to be silenced or cannot be cast.

It also affects hearing perception checks. By default if you're seen then you're also heard, but when you are only heard, eg; by basic invisibility effect, which doesn't usually stop your footsteps, it will be unable to be seen or heard if silenced. You can check this with GetObjectHeard.

It also affects the Talent functions the AI uses, which then don't retrieve verbal spells. Sadly GetHasSpell and other basic functions are not affected.




// Sample code for applying silence to a target
void main()
    // This is the Object to apply the effect to.
    object oTarget = OBJECT_SELF;
    // Create the effect to apply
    effect eSilence = EffectSilence();
    // Create the visual portion of the effect. This is instantly
    // applied and not persistent with whether or not we have the
    // above effect.
    effect eVis = EffectVisualEffect(VFX_IMP_SILENCE);
    // Apply the visual effect to the target
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
    // Apply the effect to the object
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSilence, oTarget);

See Also

 author: Michael Nork, editors: Jasperre, Mistress additional contributors: Jasperre