Show / Hide Table of Contents

Namespace DaggerfallWorkshop.Game.MagicAndEffects

Classes

BaseEntityEffect

Base implementation of an entity effect. Entity effects are like "actions" for spells, potions, items, advantages, diseases, etc. They generally perform work against one or more entities (e.g. damage or restore health). Some effects perform highly custom operations unique to player (e.g. anchor/teleport UI). Magic effects are scripted in C# so they have full access to engine and UI as required. Classic magic effects are included in build for cross-platform compatibility. Custom effects can be added later using mod system (todo:).

EntityEffectBroker

Enumerates available magic effects and coordinates their instantiation. Also coordinates "magic rounds" at 5-second intervals for all entity EntityEffectManager components active in scene.

EntityEffectBundle

Stores effect settings for transport to an entity.

EntityEffectManager

Peered with a DaggerfallEntityBehaviour for magic and effect handling related to that entity. Manages list of active effects currently operating on peered entity. Used by player and enemies to send and receive magic effects from various sources. NOTE: Under active development and subject to frequent change.

LiveEffectBundle

Stores an instanced effect bundle for executing effects.

MagicCandleBehaviour

PotionRecipe

Implements a potion recipe to support equality comparison, hashing, and string output. Internally the recipe is just an array of item template IDs abstracted to an Ingredient type. A recipe can be constructed from any Ingredient[] array or int[] array of item template IDs.

ReflectiveEnumerator

Find all subclasses of type and create instance.

Structs

CustomEnchantment

Defines a custom enchantment for items. Classic enchantments use a type/param number pair in DaggerfallEnchantment. Custom enchantments use a key/param string pair in CustomEnchantment.

DiseaseData

Settings for a basic disease effect.

EffectBundleSettings

Settings for an entity effect bundle.

EffectCosts

Allows tuning of cost per setting.

EffectEntry

For storing effect in bundle settings.

EffectProperties

Defines properties intrinsic to an effect.

EffectSettings

Duration, Chance, Magnitude settings for an effect.

EnchantmentParam

Flexible enchantment parameter for either a classic effect or a custom effect. This is stored with EffectEntry for enchantment bundles and assigned to live effect instance. Formalising this to a data structure allows for expanding custom enchantment params later.

EnchantmentSettings

Settings for a single enchantment on item.

EntityEffectBroker.CustomSpellBundleOffer

A custom spell bundle offer.

EntityEffectManager.EffectBundleSaveData_v1

EntityEffectManager.EffectSaveData_v1

ForcedEnchantment

Defines a single forced enchantment effect with param.

ForcedEnchantmentSet

Contains a set of forced effects keyed to a valid mobile type.

LegacyEffectEntry

Stores an effect group / subgroup pair as read from classic save. This is only used when importing character spellbook from classic. During startup any legacy spells will be migrated to Daggerfall Unity spells provided all classic group / subgroup pairs can be resolved to a known effect key.

PayloadCallbackResults

Optional information returned to framework by enchantment payload callbacks.

PotionProperties

Defines properties intrinsic to a potion. Note: Under early development. Subject to change.

PotionRecipe.Ingredient

Abstracts an item ID into an ingredient.

SpellIcon

Reference a spell icon within an icon pack. A null, empty, or invalid key value will fallback to a classic icon.

SpellReference

References either a classic or custom spell bundle. Always considered to reference a custom spell bundle when CustomKey is not null or empty.

Interfaces

IEntityEffect

Interface to an entity effect.

Enums

AssignBundleFlags

Flags to modify behaviour of assigning effect bundles.

BaseEntityEffect.ClassicEffectFamily

BundleRuntimeFlags

Special bundle flags to control additional runtime behaviours.

BundleTypes

Supported bundle types. This helps determine lifetime and usage of a bundle.

ChanceFunction

Determines how effect chance will function. OnCast: is checked at cast time by EntityEffectManager receiving effect - effect is rejected on failure. Custom: is always allowed by EntityEffectManager, but still generates ChanceSuccess flag on Start(). This allows custom chance handling elsewhere by either by the effect itself or elsewhere in effect back-end. A Custom chance effect can then decide to check for ChanceSuccess at any time, even do something else entirely.

Diseases

Diseases the player can catch. (msgs 100-116)

ElementTypes

How effect bundle manifests for cast animations, billboard effects, resist checks, etc. Can be used as flags by effect system to declare supported elements.

EnchantmentPayloadFlags

Flags to inform magic framework when enchantment effect should receive callbacks to execute its payload. As Daggerfall Unity supports custom effects there is more granularity to payload execution than classic. Note these are distinct from "cast when used", "cast when held", etc. Rather, the CastWhenUsed and CastWhenHeld effects will deliver their payload from callbacks related to these flags.

EntityEffectBroker.CustomSpellBundleOfferUsage

Usage flags for custom spell bundle offer. Informs other systems if they can use this spell.

ItemMakerFlags

Defines flags for additional feature support at item maker.

MagicCraftingStations

Flags defining which magic crafting stations can serve this effect. What constitutes a magic crafting station is likely to expand over time. For example, custom character creator is potentially a type of crafting station for advantages/disadvantages. Just leaving as main three stations (spellmaker, potionmaker, itemmaker) for now.

TargetTypes

How an effect bundle targets entities in world space. Can be used as flags by effect system to declare supported targets.

Delegates

EntityEffectBroker.OnEndSyntheticTimeIncreaseEventHandler

EntityEffectBroker.OnNewMagicRoundEventHandler

EntityEffectBroker.OnRegisterCustomEffectsEventHandler

EntityEffectManager.OnAddIncumbentStateEventHandler

EntityEffectManager.OnAssignBundleEventHandler

EntityEffectManager.OnCastReadySpellEventHandler

EntityEffectManager.OnNewReadySpellEventHandler

EntityEffectManager.OnRemoveBundleEventHandler

In This Article
Back to top Generated by DocFX