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.