Skyrim Special Edition

File information

Last updated

Original upload

Created by

_kmatt_

Uploaded by

AlchemicaMateria

Virus scan

Safe to use

Tags for this mod

About this mod

A highly customizable charge time overhaul implemented via a Clib NG plugin! Control how long spells, scrolls, and staves take to cast. Use the MCM to set multipliers, modifiers, and overrides to charge times. You can add a broad multiplier to all spells, or set individual modifiers based on school and rank. Effect both player and NPCs separately!

Requirements
Permissions and credits
Changelogs
Donations
Hello! Please check out my Patreon for general updates about my mods as well as sneak peaks of future projects (it's free)! 

Overview:


A highly customizable charge time overhaul implemented via a commonlib NG SKSE plugin! Control how long spells take to cast. Use the MCM to set multipliers, modifiers, and overrides to charge times. You can add a broad multiplier to all spells, or set individual modifiers based on school and rank. NPCs are also included! You can alter concentration spells and fire and forget spells independently. By mixing and matching different modifiers, and by utilizing the new JSON system, you can finely tune how long each spell takes to cast.

Compatible with all spells!

Do you feel like enemy mages spam you with fireballs? Worry no more, you can make them take longer to cast. 

Do you wish you truly had unlimited power? Cast Lightning Storm instantly!

Unlimited Power:

Default Lightning Storm:


After embracing the Dark Side of the Force:


Requirements:


  • SkyUI (Required for MCM)
  • SKSE (make sure you have the correct version)
  • Address Library (make sure you have the correct version)
  • PO3 Tweaks
  • As of v2.0.0, Spell Extender is no longer needed (is required for earlier versions)
  • MCM Helper (for v2.0.0 and above)

Important Updates:

  • v2.1.0 has been released! Added scroll and staff support! Reduced/eliminated some crashes. Mihail's golem mods should work without issue now.
  • If using v2.0.0, please install the update file! Fixes some issues with other mods that caused a crash.
  • If experiencing crashes due to a specific spell (for example the golem cloak from Mihail's golem mods) please download v2.0.2 update file and follow the instructions below.
  • V2.0.0 has been released! This is a completely re-written version of the mod and runs entirely via an SKSE plugin. The included .esp is only for the global variables and the MCM. The only Papyrus script is for the MCM.
  • Spells can now be customized individually using an included .json configuration file.
  • No longer requires Spell Extender or SPID
  • Older version are still available, but will no longer be supported
  • MCM Helper is now required. When updating from earlier versions, please complete a clean uninstall of the mod and ideally clean your save with ReSaver to prevent issues with the new MCM script
  • You will need to reconfigure your MCM after upgrading

Fix for Mihail's Golems:

This should no longer be an issue for v2.1.0 and above. If using an older version, please see spoiler below.

Spoiler:  
Show


By default, Controlled Casting is incompatible with all Mihail Golem mods. A particular spell on the golems is causing crashes. 

This can be solved by installing the new v2.0.2 update file.

In addition, you must also add this to your ControlledCasting.json:

{
"editorID": "mihailstormgolemcloak",
"excluded": true
}

This example solves the problem for the storm golem. Repeat this process for the ice golem. I can't look up what the editorID of its cloak spell is as the mod is hidden. 

If you experience a crash that occurs due to a specific spell, you can exclude that spell in the same way shown above. You just need to find that spell's editorID.

Installation:


  • Make sure all dependencies are installed. 
  • Install with your mod manager of choice

If updating from a previous version, there may be issues with the MCM menu. Please clean your save after removing the mod to remove any scripts that may remain. Also please delete your ControlledCasting.ini from the Data/MCM/Settings folder and re-configure your MCM to prevent MCM issues. 

Mod Details:

Fire and Forget:

Default 0.5s Charge Time:


Instant (0s) Charge Time with Mod:



There are overrides and multipliers.

Overrides set the base charge time to whatever you set the override value to. For example, you can make it so all master level spells take 1.5 seconds to cast. This will be further modified by any multipliers you have set.

Multipliers do as their name suggests - they multiply the charge time. There are overarching multipliers for all spells and then school and difficulty specific multipliers. These all stack. So if you have a 2x multiple for destruction and a 1.5x multiplier for adept. An adept destruction spell will take 3x longer to cast. 

Concentration:

Default 0s Charge Time:


Now has a short charge time:


There are overrides and modifiers.


Overrides function the same as for Fire and Forget spells.

For example, you could set the override for Master or Ritual Concentration spells  to 0 and casts spells like Lightning storm instantly (as demonstrated above). This pairs well with a mod like Mysticism which makes these master spells one handed.

Modifiers add the set time to the charge time. There is a broad modifier which adds time to all spells. There are also individual modifiers for schools and difficulties.  Similar to multipliers, these values stack as well.

NPC Support:

Default NPC charge time:


Modified charge time:


NPCs are supported natively. You can control the multipliers, modifiers, and overrides for NPCs separately from the player.

Theoretically this shouldn't cause issues, but keep in mind that some scripted spells may or may not be effect by this mod and if they are effected, very long or very short charge times could pose a problem. I have not encountered any such problem, but keep it in mind. If you do run into issues, just set the spell back to its default for the duration of the scripted event and then you can return the settings to normal.


Scrolls and Staves:

Scrolls and staves are now supported. You may set global multipliers and modifiers for staves and scrolls independently. You may also set global overrides. For now, you may only set a global multiplier/modifier/override for scrolls and staves and do not have the same degree of control as you do with spells (such as school or difficulty specific settings). However, there is an option in the MCM to treat scrolls and staves as regular spells, allowing you to customize them according to other spells.

This is an area I am open to expanding further if there is desire.



Skill Scaling (Depreciated): 
No longer available as of v2.0.0 – I have plans to make a better version of this and release as a separate mod or as an addon to this mod.

Spoiler:  
Show

You can toggle on skill scaling. This will increase charge time at low skills and decrease charge times as you increase your skill level. It is

proportional to both the spell difficulty and your skill rank.

The formula is: SkillScaleMultiplier = sqrt((Rank + 15)/Skill Level) for novice
spells

and SkillScaleMultiplier = sqrt(Rank/Skill Level) for all other spells.

So a master spell at skill level 15 would take ~2.6 times longer where as a
novice spell at skill level 100 would be cast ~2.6 times faster. Spells at
their equivalent level (eg. Master at 100) would take their normal time to
cast. 

These times stack with and can be modified by the other MCM settings. This is a
very customizable system.


Individual Spell Customization Via JSON:

Now in v2.0.0 and above, individual spells can either be excluded from being affected by Controlled Casting and will always have their
original charge time or can be assigned a custom charge time. This custom charge time will still be affected by multipliers or modifiers unless also excluded. The following explains how to set up the JSON file. This is also included as a Readme file in the download. Also in the download is an example JSON. By default, the mod includes an empty JSON file that you can modify. My hope is that eventually, mod authors can create their own JSON files that they can upload for others to use. For example, if you wanted to use Mysticism but didn’t like the changes to charge times, someone could upload a Mysticism JSON file that would change the charge times of all Mysticism spells without causing incompatibilities with any other mod altering spells. 
 
The file should be set up as follows:
Spoiler:  
Show

**Note: Your JSON file should have NO comments**
 
{
"Spells":[
//This spell will be excluded

{
"editorID":"Healing", //Editor ID of the spell you wish to configure
"excluded": true, //Whether or not the spell should be excluded 
"override": false, //Whether or not the base charge time should be overridden by "value"
"value":0 //Replaces base charge time of the spell if "override" is set to true

},

//This spell will have its base charge time overridden and set to 0.7 seconds

{

"editorID":"Flames",
"excluded": false,
"override": true,

"value":0.7

},

{

"editorID": "Sparks", //You don't need to include all options
"excluded": true

},

{

"editorID": "Frostbite", //This is also valid

"override": true,

"value":0.7

},
//If both excluded and override are true, the charge time will be set to the override value and not be effected by multipliers or modifiers
{

"editorID": "Firebolt",

"excluded": true,

"override": true,

"value":0.25

},
//Invalid since EditorID is missing. Mod will skip over this array member and go to the next.

{

"excluded": true

},
//"override" is not present and will default to false, so the "value" 0.7 will have no effect

{

"editorID": "Flames",

"value": 0.7
}

  ]
}


Issues Solved in v2.0.0 and above:


  • Previously, if you and an NPC both have the same spell equipped (or a spell that uses the same magic effects) whoever most recently equipped the spell will take modifier priority. 
  • Now, the charge time is changed via hooking the charge time calculation function and will happen on a spell-cast by spell-cast basis, so this issue is non-existent

Compatibility:

  • Theoretically should be compatible with everything as it hooks the games function that calculates charge time
  • All spells, mod added or otherwise, will be supported out of the box
  • Mods that utilize the Papyrus functions akSpell.GetCastTime() or akEffect.GetCastTime() will return the original charge time of the spell (not modified by controlled casting). Depending on what that mod is trying to do, this may or may not cause issues.
  • I’ve included a native papyrus function GetChargeTime(Spell akSpell) that will return the charge time as modified by Controlled Casting 
  • For example, I am using the new GetChargeTime() function in a patch for my mod Unattuned: Immersive Spell Failure
  • As of v2.1.0, Unattuned is not currently supported. It will function, but the timing of failures may be off. A future update to Unattuned will resolve this issue.
 
Troubleshooting:

If you experience a crash upon startup, the most likely culprit is an invalid ControlledCasting.json. Double check that you have a valid json and that all editorIDs are correct. Check ControlledCasting.log for more details.

If the mod isn't working or charge times are modified in an unexpected way, try resetting your MCM options. This likely would only be an issue if upgrading from an earlier version.

In general, make sure you have the proper version of SKSE and Address Library for your game version before posting any bugs.


Recommended:

Unattuned -Immersive Spell Failure: This is one of my other mods which introduces a spell failure system. A future update will solve some current incompatibilities.

Casting Bar: This synergizes very well with Controlled Casting allowing you to visualize the
change in charge time. Helpful when you increase the charge time significantly.

My other mods:

Unattuned - Immersive Spell Failure
Spell Extender
Adjustable Attacks of Opportunities

Source:
  • Github
  • See included .psc files 

Thanks and Credits:

Ryan - CommonLib
CharmedBayron - CommonLib NG
Underthesky - Original Speed Casting mod that served as inspiration
DukeTheDropKicker - Speed Casting Remake that served as a reference
Fenix - For Different Casting Time mod and Configurable Charge Time github repo that made me aware of better functions to hook
NightfallStorm - For help with figuring out how to make the hook
Styxx - For testing and general help and support
z4x - For help with ensuring compatibility with Casting Bar