Effects are the various modifications to game objects (usually creatures) that do not directly come from an item property of an equipped item. They often represent the results of a character's interaction with the game, particularly the results of spells, spell-like abilities, and activated magic items. The specific effects available range from the purely visual to conditions like diseases. They include both the beneficial (e.g. healing and resurrection) and the debilitating (e.g. damage and death); the instantaneous and the long-lasting.

Effects come in three subtypes — magical, extraordinary, and supernatural — indicating how an effect might be removed other than its duration expiring. The first two of these are removed by resting, with magical effects also possibly being removed by dispelling. Supernatural effects are removed by neither of these means. Generally, magical effects are intended for spells, extraordinary effects for non-spell class special abilities, and supernatural effects for module-specific needs. However, this is only a guideline and exceptions abound.

See also[]


In NWScript, effects are represented by variables of the type effect. Variables of this type are instances of effects, with the (unintuitive to some) consequence that two effect variables are only equal if both refer to the same instance of an effect; it is not sufficient for both variables to refer to the same kind of effect. Thus, for example, it is possible for two effect variables to both be assigned a charmed effect, yet not have the variables be equal. Generally, two effect variables are only equal if they were assigned the return value of the same, single function call. For example, the following script will cause the caller to say "The effects are not equal." and "The third equals the second."

void main()
    effect eCharm1 = EffectCharmed();
    effect eCharm2 = EffectCharmed();
    effect eCharm3 = eCharm2;

    // Compare same kind of effect, but different sources.
    if ( eCharm1 == eCharm2 )
        SpeakString("Charmed is charmed.");
        SpeakString("The effects are not equal.");

    // Compare effects from the same source.
    if ( eCharm2 == eCharm3 )
        SpeakString("The third equals the second.");
        SpeakString("The third charm was tried.");