Jump to content

Recommended Posts

Hi. This tutorial is endorsed by myself, H.M. Murdoch, Templeton Peck, John Smith and Mr. T. If you have any issues with it, take it up with the A-Team and... best of luck.

Adding Custom dragon shouts by script.


I wanted to make a custom dragon shout but could find very little about how to do it. The only tutorial I found gave me a good idea but missed a couple of crucial steps and a fair bit of detail. I now have a working custom voiced shout, so here's a guide to save you a bit of time (or an enormous amount, if you're as slow as me). My shout is basically Kyne's Peace, but with the strength and cooldown period adjusted, so I needed no new voice files. For new words, the principles are exactly the same but you will need good voice actors to record the 4 parts of the shout. (Yes, no typo, there are 4, not 3). I shall use the word 'Kaan' (translation Kyne) in my examples.

Basic steps.

1) Menu path: Magic\Spell\Word Of Power.
Create 3 new words of power.
ID: format 'Prefix' + "word" + 'my shout word'. My example: MBWBwordKaan
Name: the word used in your shout. The guide I read stated it must be all capital letters. Not so. You do need numbers for the double vowel sounds, as given below. My example: K1n
Special sounds: Numbers 1 to 9 map to aa, e1, ii, ah, uu, ur, ir, oo and ey, respectively. So the 1 in my example is 'aa', making K1n, read as 'kaan' in dragon letters. This lets the game choose the right
dragon letters to display when you learn the word.
Translation: As it sounds, the translation of your word into the common tongue. Kaan translates as 'Kyne', so my example: Kyne. (This is what shows up on screen when you learn the word.

2) Menu path: magic\Magic Effect
Here is where you make the effects used in your voice power. You can simply use vanilla effects as I did, if you just want to adjust the magnitude, cooldown etcetera, or you can adapt vanilla effects,
for example if I'd wanted Vahlok's tranquility to affect draugr as well as animals, here's the place to do it. Failing that make your own effect. there are plenty of guides on this, so I won't cover it here.

3) Menu path: Magic\Spell\voice power.

You need to make 3 of these, one for each of the 3 words of the shout.
ID: format 'Prefix' + "voice" + 'my shout name'. My examples: MBWBvoiceVahloksTranquility1, ...tranquility2, ...Tranquility3.
If your shout is similar to a vanilla shout, i.e. it does fire damage, then it's easiest to duplicate the vanilla voice power form. Otherwise you'll have to make a new form and fill in all the fields appropriate to the
kind of spell you are going to use in the shout.
Name: The name of your shout. My Example: Vahlok's Tranquility.
Type: Voice Power
Casting: Fire and forget. Set by magic effect.
Delivery: Appropriate to spell, eg unrelenting force is 'aimed', whereas Kyne's Peace is 'self'. Set by magic effect.
Menu Display Object: magic hat marker, normally although you don't have to. 'Ice Form' uses 'MAGINViceSpellArt'.
Equip Type: unsure on this one. You'd think it would always be 'voice', but vanilla shouts use 'voice', 'both hands', 'either hand' etc. Maybe it doesn't matter?
Casting Perk: None. No vanilla shout requires a perk. if you want to try adding one, experiment!
Range: Appropriate to spell, eg 'Call Hero' requires a range to be set, presumably so you can't cower in Whiterun and call your hero to defeat enemies out on the plains. (Useful to thwart the milk-drinkers who

play Skyrim but really shouldn't)
School: Appropriate to spell, for instance Kyne's Peace requires 'Area effect ignores LOS', so that the creatures that glow 'peacefully' can be seen beyond walls etc.
Auto calculate: Some vanilla spells use this but most don't. I can't see that it's valid since all shouts are governed by learning the words and the cooldown we will set later. Make it un-checked.
Effects: go ahead and adapt vanilla effects or use your own.

4) Menu path: Magic\Shout.
No prizes for guessing this is where you make your shout. At last! Praise be to the divines!... "Hey, fool! We're not finished by a long chalk!"... Damn! Let's press on, then.
ID: format 'Prefix' + 'my shout name' + "Shout". My example: MBWBvahloksTranquilityShout

The rest is pretty straightforward. You have 3 boxes for each of the 3 words. Fill the 2 fields in each box with the stuff we just did, so the words of power and voice powers that we made.

My example word 1: MBWBwordKaan and MBWBvoiceVahloksTranquility1. Word 2 would be MBWBwordDrem and MBWBvoiceVahloksTranquility2... you get the picture.

Add a short description of your shout, set the cooldown times (seconds, real time), a menu display object and Bob's your uncle!

5) "I told you we weren't finished, Cumbrianlad! You're a fool, bro!"... oh, shut up, crazy voice in my head. On to step 5. let's have fun and make a new global variable, for use in learning the words.
Menu path: Miscellaneous\Global
ID: format 'Prefix' + "WW" + 'My shout name'. My example: MBWBWWvahloksTranquility
Type: short
Value: 0
Constant: dont check this box, or it will not be altered to keep track of how many words the player has learned ! Very important.

6) "Don't tell me to shut up, dude, or I'll kick your..."...'Click!'... " ".... that's better I've turned off the voice. Step 6, Form Lists.
Menu path: Miscellaneous\Formlist
You need to edit 2 vanilla formlists. if you don't, your shout will work but the voice files won't!

These are the 2 you need to edit: 'ShoutsFormlist' and 'WIcastDragonBornShouts'

open these up and drag and drop all three of your voice powers into each of them, so MBWBvoiceVahloksTranquility1, 2 and 3 into both form lists.

7) Make a quest for your dialogue.
Menu path: Character\Quest

Quest Data Tab.
ID. Keep this short! if you don't, later steps get more cumbersome. I just called mine MBshout.
Quest name: whatever you like... it's not used for anything important.
Priority 5 and 'start game enabled'. If you don't like 'start game enabled' quests start it by the usual trigger boxes etc.
Quest dialogue conditions: if the shout is only for the player, set this as 'S', 'GetIsVoiceType', 'FormList Voices Player', ==, 1.00, AND
If your shout is to be used by other NPCs, leave this condition blank... you'll need to set conditions individually later.

Combat Tab.
Priority 50. 'Has Lip File' is always checked. Set up 4 topics, VoicePowerStartShort, VoicePowerStartLong, VoicePowerEndShort and VoicePowerEndLong.

The vanilla topics are Shout01a, Shout01b, Shout02 and Shout03. You can't use these as they are already in use. I just used the prefix MB, so MBshout01a etcetera.
Topic text for these is ShoutStartShort, ShoutStartLong, ShoutEndShort and PushRoDa. Don't know if this is crucial but it's how the vanilla topic texts are and can be used.
Make an info for each of your topics. My example: VoicePowerStartShort is 'Kaan!', the next is 'Kaan...', the third is 'Drem!' and for VoicePowerEndLong it's 'Drem Ov!'. (See, I said there were 4!)

Edit each of the infos you just made. Response Texts are all Neutral(100).
Add this condition, Format: S, GetEquippedShout, Shout: 'MBWBvahloksTranquilityShout', ==, 1.00, AND
After this you may need to add further voice conditions if more than the player uses the shout. You will also have to duplicate the infos for each of the different voice types that use the shout. This is when you

Can't set up the quest dialogue condition stated earlier.

:cool: (Only for start game enabled quests). Open up SSEedit, select your esp, let it load, then right-click the esp header. Choose 'Other' and then 'Generate SEQ file'. Close SSEedit.
Well, look at that I've just discovered 8 + ) makes a smiley! Great! "Fool!"... I thought I'd knocked you off, nasty imaginary critic? "Nope, I was only waiting for a moment to strike!"

9) Voice files. Here you've got options. If you are using your own voice files, they'll need to be in .fuz format, so once your voice actors have delivered the wav files, you'll need to add .lip files and use unfuzer or a similar
programme to convert them into the right format. Again, I'll not cover that here. If you're using vanilla words like I did, you can get them into your quest with a bit of effort. This is where short names come in handy.

If, like me, vanilla words are fine, find the infos for each word you need in the vanilla quest 'VoicePowers'. Open each info and look at the voice file name and then the path to each of the voice types (These are
accessed by double clicking the response text after double clicking the info to open the 'Topic Info' dialog box).*

You'll notice that the paths all follow the same format. For the voice file name VoicePowers_Shout01a_00013E03_1, VoicePowers_Shout01b_00013E03_1 etc.
For the paths it's Data\Sound\Voice\Skyrim.esm\'Voice type'\'Voice Filename'.wav

This is useful because it helps with the next bit.

Before we extract the voice files we need, (or add our own custom ones) we need to look at our own voice powers quest. Follow the procedure above and you will see that CK has created a voice filename and a set
of paths for each of our words. These follow the format above, but with our own quest name and esp name, so for example, my typical voice file name: MBshout\MBshout01a\'alpha-numerical string'_1
My example path: Data\Sound\Voice\MBWBshout.esp\'voice type'\'alpha-numerical string'_1.wav. You need to record these names, too. (This is why you keep the quest and topic names short.. I f not, the paths and

filenames get unwieldy.)

We're getting there, honestly! "No we aren't you danged madman! You jus' annoying the hell outta me! Me an' my bro's in the A-Team gonna sort your sorry...". Click!, pull plug. He's gone for good, him and all
his jangly jewellery. I used to like Mr T.

Windows Explorer: Navigate to your Skyrim SE data file\Sound\voice. Make a new folder with the name of your mod. Within that create folders for each of the voice types your shout can use. You're done with
Explorer for now.

All you need to note down are the voice types that are used and the voice filename. You can then generate the full paths for every voice file you need to find.
Once you have all of the paths, both the vanilla paths and your own, open BAE or a similar archive extractor. Use this to open Skyrim Special edition\Data\Skyrim _ Voices _ en0.bsa
In BAE use 'Select None' and then open up the branches, following the paths you found before. For each voice type, find the exact file (It will be .fuz, not .wav as you noted down from the previous step. Don't
worry about that). Check each of the files you need and extract them to the appropriate folder you just created. These are .fuz files, as will be every file you made if using your own voice actors. This is fine and cuts
the size of your mod down. I have no clue as to why the paths ending in .wav read .fuz files but trust me, they do. adding lip and wav files is just a waste of data storage space.

Now you need explorer again. Open up each of your folders with the .fuz files in and re-name them to match the paths you noted down from your own quest. Leave the file extension as .fuz

* Tip: You won't be able to see the full name of the voice file path and you need it all. Move the scroll bar as far to the right as it will go and then hover the cursor over the right end of the 'Path' title above.
You'll get the icon to drag this to expand it and see the full path.

You're done with the voice files at last.

10) Getting the shout in-game via script.

First off you need a script. Here's mine... free... "What' you thinkin' 'bout, you sorry foo'? This stuff is priceless! Get them lazy modder types to give you cash, man!"... I'm a benevolent, albeit not entirely sane, fan

of the freedom of the Nexus forums, Mr. T. This is the 21st century and I don't drive a big van and wear too much gold. Take your sad monetary values elsewhere onto forums that are not so virtuous as this one!

Scriptname MBShoutScript extends ObjectReference
{Teaches and unlocks all 3 words of a shout. Only runs once.}

WordOfPower Property KAAN Auto
WordOfPower Property DREM Auto
WordOfPower Property OV Auto
GlobalVariable Property MBWWvahloksTranquility auto
Shout Property VahloksTranquility Auto
Bool DoOnce


Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)

if !DoOnce
if akNewContainer == Game.GetPlayer()

Debug.Trace("I just got put in the player's inventory!")

Game.Getplayer().Addshout(VahloksTranquility)
Game.TeachWord(KAAN)
Game.UnlockWord(KAAN)
MBWWvahloksTranquility.SetValue(MBWWvahloksTranquility.GetValue() + 1)

Game.TeachWord(DREM)
Game.UnlockWord(DREM)
MBWWvahloksTranquility.SetValue(MBWWvahloksTranquility.GetValue() + 1)

Game.TeachWord(OV)
Game.UnlockWord(OV)
MBWWvahloksTranquility.SetValue(MBWWvahloksTranquility.GetValue() + 1)

endIf
DoOnce = True
EndIf

endEvent

 

Basically, this teaches and unlocks every word of the shout, plays the on-screen display and increments our global each time so that the game knows which words the player can use. I used a Boolean to ensure

that the game doesn't try to teach the words each time the object is picked up by the player, but you could use states. I don't want to get into arguments as to which is better. Both will work.

 

You can use different events and only teach one word at a time. Just cut out the relevant lines in your script and adjust the properties to suit.

 

I've not covered word walls, but you will need to do most of the steps above and remember to alter each of the markers and trigger boxes to suit your shout, once you've duplicated and copied the vanilla word wall set-up.

 

I stuck the script on a book and put it into a container because it suited me. You can do it when entering a trigger box and playing an animation, or whatever.

 

 

We're done! Hurray. Go forth and shout loudly! Fus Ro Wallop!

 

Thanks to Mr. T for helping me to work this out and write it all down for you. I'm not crazy after working this out, just a little shell-shocked. My psychiatrist says that with plenty of rest, avoiding watching old episodes of the A-Team and drinking plenty of beer, I'll be just fine. Then again, he was taught by John "Hannibal" Smith, or was that Dr. Hannibal Lecter?... I forget.

 

Enjoy.

 

All questions welcomed (all answers may or may not be available, depending on my current grasp of reality, knowledge of the CK, how inebriated I am, following Dr. Hannibal's medical advice, etc).

 

:sleep: I need a rest...

Link to comment
Share on other sites

  • 11 months later...

Thats a really awesome tutorial for making your own shouts. But what about replacing existing ones? I would like to replace the sound files for Dragonrend without changing the shout itself. Simply so my character doesn't shout "Joor-Zah-Ful", but instead something else I picked for myself. But as the Dragonrend shout.

 

I've found only one tutorial for that so far, and that one is from 2012. I've followed this tutorial, but using Yakitori Audio Converter. My custom fuz files contain the right sounds. But when I install them into my game, my character doesn't use them. Instead he still uses the vanilla "Joor-Zah-Ful". Not sure what I've done wrong here.

Link to comment
Share on other sites

  • 3 months later...
  • 4 months later...

Thats a really awesome tutorial for making your own shouts. But what about replacing existing ones? I would like to replace the sound files for Dragonrend without changing the shout itself. Simply so my character doesn't shout "Joor-Zah-Ful", but instead something else I picked for myself. But as the Dragonrend shout.

 

I've found only one tutorial for that so far, and that one is from 2012. I've followed this tutorial, but using Yakitori Audio Converter. My custom fuz files contain the right sounds. But when I install them into my game, my character doesn't use them. Instead he still uses the vanilla "Joor-Zah-Ful". Not sure what I've done wrong here.

I have the same problem, except the character wouldn't say the vanilla words now, he just stays silent instead of saying the replaced part of the shout.

Link to comment
Share on other sites

  • 1 month later...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...