Skyrim Special Edition

File information

Last updated

Original upload

Created by

KeeperOfTheLag

Uploaded by

Ciki12

Virus scan

Safe to use

About this mod

Reduce the shouting timer using Health/Magicka/Stamina

Requirements
Permissions and credits
HMS Shouts

Normally shouts just have a timer. You use them for free and wait a bit until they are available again.
With this mod I added three lesser powers (usable at will, known since game start) that when used subtract one second from the timer for each point of Health/Magicka/Stamina (each power use one attribute). This way the player can shout more often if he wishes, at the cost of damaging himself. The normal timer and shout reduction still work as before, it is up to the player if and when use the powers.





In the video I loaded my "vanilla" character, and you can see the initialization script kick in and teach the powers to the player.
For demonstration purpose, I unlock the Storm Call shout (the one with the longest cooldown), and equip the magicka power (blue) and stamina power (green).
As you can see I have little magicka, so the magicka bar get completely emptied but the timer reset only partially. There are messages that tells you how many seconds remain on the timer and how much the attribute was damaged.
On the other side I have a lot of stamina, so the timer was reset to 0, but if I keep shouting and resetting, eventually even the stamina will drop to 0 and I must wait longer to use it again.
As last I tried Health, technically you may die when the timer is equal to the health, but since it regenerates it is very difficult to proc it at that specific time, but if enemies are damaging you it is easy to die if not careful.

The mod contain one initialization script (should run only once) and three other the powers. Below the code:

Scriptname HMSScriptQuest extends Quest  
spell property HMSShoutSpellHealth auto
spell property HMSShoutSpellMagicka auto
spell property HMSShoutSpellStamina auto
EVENT onInit()
actor sPlayer = game.getplayer()
sPlayer.Addspell(HMSShoutSpellHealth)
sPlayer.AddSpell(HMSShoutSpellMagicka)
sPlayer.AddSpell(HMSShoutSpellStamina)
Reset()
endEVENT
Scriptname HMSScriptHealth extends activemagiceffect  
{hms health}
Event OnEffectStart (actor akTarget, actor akCaster)
string sAttribute = "Health"
float fDamage = 0.0
float fTimer =akCaster.GetVoiceRecoveryTime()
float fAttribute = akCaster.GetAV(sAttribute)
; if the timer is strictly smaller than the attribute, damage the attribute by the timer and reset the timer; this should be the most frequent scenario, so I put it first 
if fTimer <  fAttribute
akCaster.SetVoiceRecoveryTime(0.0)
akCaster.DamageActorValue(sAttribute, fTimer)
Debug.Notification(sAttribute + " damaged by " + fTimer as int)
Debug.Notification("Shout Timer set to 0")
else
; if the timer is bigger or equal to the attribute, subtract the attribute to the timer and damage the attribute
fDamage = fTimer-fAttribute
akCaster.SetVoiceRecoveryTime(fDamage)
akCaster.DamageActorValue(sAttribute, fAttribute)
Debug.Notification(sAttribute + " damaged by " + fAttribute as int)
Debug.Notification("Shout Timer set to " + fDamage as Int)
endif
endevent
The Magicka and Stamina scripts are the same, only with a different sAttribute.