About this mod
Dynamic Magic Modification Framework (DMMF) is a commonlib NG SKSE plugin that enables dynamically altering spell properties at the moment of casting. Those using the framework can change the charge time, casting cost, casting resource, magnitude, and more dynamically based on a wide array of conditions.
- Requirements
- Permissions and credits
- Changelogs
Dynamic Magic Modification Framework (DMMF) is a commonlib NG SKSE plugin that enables dynamically altering spell properties at the moment of casting. Those using the framework can change the charge time, casting cost, casting resource, magnitude, and more dynamically based on a wide array of conditions.
Requirements
SKSE
Address Library for SKSE
PO3 Tweaks
SkyUI
MCM Helper
Updates:
I just uploaded hotfix
You still need the main file (v1.0.1). Download and install the update file and allow it to overwrite the original.
Mods Using DMMF
Controlled Casting (as of v3.0.0)
Skill Based Charge Time
Dual Casting Effects Charge Time
Magic Casting Utilities (support is planned but not yet implemented)
Blood Magic Costs Health
Compatibility:
The mod is made with commonlib NG so it should work for all game versions (including VR). However, I have only tested on 1.6.1170.
The mod is compatible with all mod added spells.
The only true incompatibility is if another mod is hooking the same functions as me. I have fully replaced the implementation of the following functions:
- ActorMagicCaster::Update
- ActorMagicCaster::SpellCast
- ActorMagicCaster::InterruptCastImpl
- ActorMagicCaster::CheckCast
The mod is a framework that other mods rely on. If you are here because another mod requires it, simply install the mod using your preferred mod manager. Be sure to install all requirements.
You can very easily create your own configuration file to utilize this mod yourself too. If you are interested in that, please read the section below for mod authors.
For Mod Authors
There are two main way to utilize the framework: JSON configuration files and your own SKSE plugin.
Configuration Files:
The easiest way to utilize DMMF is to create a configuration file. It must be a JSON file using proper JSON formatting and must end in "_DMMF".
Please place your configuration file into the "SKSE/Plugins/DynamicMagicModificationFramework/" folder.
Example_DMMF.json is included with the mod download and can serve as a starting template.
Currently the following parameters can be modified:
- Charge Time
- Spell Cost
- Spell Magnitude (experimental)
- Casting Resource
- The actual spell cast
To control when these modification take effect, conditions can be defined.
Conditions allow the dynamic nature of the modifications to truly flourish. A wide variety of condition options are available and I plan to add more in the future. When a condition is added to a modification, that modification will only take effect when the condition is met. Multiple conditions can be defined to allow for many, many different situations.
Current condition options include:
- Spell type (spell vs staff vs scroll)
- Casting type (FF vs Concentration)
- Caster (player vs NPC or individual actor)
- Casting slot (left hand vs right hand)
- Perk Ownership
- Keywords
- Spell School
- Specific Form (equipped spell)
- Skill Level
- Spell Difficulty
- Global Variable
- Is Dual Casting
- Is Sneaking
- Has Active Effect - not fully tested
Please view the full documentation on the DMMF Github page.
Take a look at some other mods that utilize DMMF to see examples.
SKSE Plugins:
By utilizing the available DMMF_API.h header in your mod, you can modify the same parameters as configuration files. However, you can utilize any conditions or calculations you see fit to implement in your plugin.
For an example of how this can be done, please see the source for Controlled Casting.
Again, please view the full documentation on the DMMF Github page.
Source
Github
Credits
Ryan - CommonLib
CharmedBayron - CommonLib NG
Alandtse - for the fork of NG that I am using
And all other who contributed to commonlib
shad0wshayd3 - REing many ActorMagicCaster functions I've used
Fenix - for RE work and youtube tutorials
Asrak - for help and support
Everyone in the xSE RE discord for general help