i have spent the last, i kid you not, nine hours staring at the dragon age origins toolset and trying to make a single, stupid script that will give me two items at the end of the human noble origin. and i can't get it to work. i feel unbelievably stupid. someone, rescue me.
adding the script under a readmore just in case someone actually knows the dao toolset and does indeed rescue me.
# include "utility_h"
# include "plt_tam_cousrings"
# include "PLT_BHN000PT_MAIN"
//i would remove the space between include and the hashtag
//in which plt_tam_cousrings is the plot file that i would set
//to true once the items have been given so that i don't keep
//getting the items once the script has run
void main()
{
if (WR_GetPlotFlag (plt_tam_cousrings, cousrings_check_flag) ==TRUE)
return;
if (WR_GetPlotFlag(PLT_BHN000PT_MAIN, BHN_MAIN_CUTSCENE_FAMILY_FAREWELL)==TRUE
&&
WR_GetPlotFlag(PLT_TAM_COUSRINGS, COUSRINGS_CHECK_FLAG)==FALSE)
//in which plt_bhn000pt_main and its flag bhn_main_cutscene_family_farewell
//is the end of the human noble origin. i'm checking to see that this ran
//so that no other origin gets the items.
//if plt_tam_cousrings is false, items have not been given
{
UT_AddItemToInventory(R"tam_cousring1.uti"); // Bryce's wedding ring
UT_AddItemToInventory(R"tam_cousring2.uti"); // Eleanor's wedding ring
// this adds the two items to my inventory. WR_SetPlotFlag(PLT_TAM_COUSRINGS, COUSRINGS_GIVEN, TRUE);
//this sets the plot flag to true, so that the game knows i've already
//received the items and will not give them to me again }
}
ALL THE SYNTAX MAKES SENSE TO ME AND YET I KEEP GETTING ERRORS!!! THE TOOLSET WILL NOT LET ME COMPILE! I have tried over and over again, for nine hours, with different ways to try and tell the toolset "this is only for human nobles after their origin" and I keep getting errors!
I get:
Variable defined without type (while compiling var_constants_h.nss)
Unknown state in compiler
No right bracket in expression (WHEN I KNOW FULL WELL I CLOSED ALL THE EXPRESSIONS)
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality✓ Free Actions
Free to watch • No registration required • HD streaming
Beware, she has an Alistair, and she won't hesitate to use him!
Wait... that sounds wrong.
I'll be honest here, I can't remember any more what the thought process behind this was. I made it in the DAO Toolset years ago, for some reason, and never actually posted it.
There was originally going to be an apprentice in the Circle mage origin practicing his shielding, and whom you were encouraged to toss fireballs at. His name was Stanley.
The robbed elf father in Lothering is named Hale.
An epilogue version of Duncan is present in the endgame coronation area. He is a wisp, and out-of-bounds.
Isabela's background is listed as "Fereldan" in her character file.
Loghain was at one point going to be recruitable early enough to be a party member during "Broken Circle". His nightmare would have involved Maric and a child version of Cailan.
Arl Howe's soundset dialog has his name as "Condon". Typo or original name, IDK, but I always read it as "Condom".
There are many unused soundset lines that were recorded before they settled on the current system. Among them is a "bored" line, and they're sometimes pretty amusing and/or random. Examples:
"So a darkspawn, an abomination and a pony walk into a bar… stop me if you've heard this one." - Daveth
"It's so hard not to fidget." - Harrowmont
"Oh, let's summon more demons! We could have a party! I'll bring the cookies!" - Demon Uldred
"It's too quiet today. Something bad is bound to happen soon." - Cyrion
"So… do you think Andraste was a virgin? She was the Maker's bride… what do you think that means?" - Cullen
"I'm just going to take this time to stare blankly into space…" - Gorim
"I saw a kitty…" - Sandal
"A day in the life of a golem trapped in the Deep Roads. Exciting, isn't it?" - Caridin
"Isn't there something better we could be doing? Killing things, perhaps?" - "violent" PC
"What is that smell? Did someone overfeed the wyrmlings?" - Kolgrim
*10-15 seconds of whistling or humming* - Leliana
There are two scullions in the Arl of Denerim's estate. One is named Estan, has a cute, girly head morph, and is listed as a female human in her character file, despite using the boy body model (I'd guess she's a reference to a dev's kid or something).
The other is a boy called Baedon, and his headmorph...well....
There is an unused alternate version of the Fade Beast encountered during "Asunder", a revenant named Reth'maznik.
There are some elven soldiers in Ferelden's army….or at least the creature files for them. 3 appear only in cutscenes, one appears dead (2x) during the prelude battle near the Tower of Ishal, and the last is unused entirely.
The trigger near the Tower of Ishal where you & Alistair are joined by the nameless guard/soldier/mage is called "redshirts_join".
I realize that this is very niche, but I've discovered that while you cannot make new waypoints with scripting, you can move and rename existing waypoints.
This is going to make scripting-in new area transitions so much easier.
Tools needed:
DAO Toolset (sorry, I doubt there's a way around this)
Audacity with the TrimExtend plugin
FsbExtractor (optional)
GDApp
If you haven't already, you might want to look at the Toolset tutorial page on importing audio; we'll be doing all of that plus a little extra. ;)
Due to the toolset automatically assigning string IDs, it's a good idea to make a new module to work in, so you can customize the number these IDs start at. Otherwise, you'll likely get conflicts with other mods that also worked in the Single Player module.
First, open up the toolset, and find the soundset templates. They're under Conversations -> _Core Soundsets.
Choose the one that best fits your project. 'Party' soundsets have the most entries, followed by 'Player', then 'NPC', 'Minor NPC', 'Combat', and 'CombatOnly'.
If you're not sure, choose a fuller template - you can leave provided entries empty, but you can't easily add missing entries.
You also might find it helpful to open up an existing soundset similar to the one you're building, to see which entries are actually used, and about how many lines there are for each.
(bit of syntax: I'll be using 'entry' to refer to the soundset line type - e.g. "Combat Attack", "Combat Taunt" - and 'line' to refer to the actual spoken lines under an entry - "Attack!", "Cowards!", etc)
For instance, you'll see that despite the template having multiple types of "Explore Select", the PC soundsets only have "Explore Select Neutral".
You'll need more lines for "Combat Attack" and "Combat Battle Cry" than anything else, but only one or two for things like "Hello", "Cheer", "Cuss", "Explore Stealth", or "Explore Trap Detected".
And even though they're listed in PC and Party soundsets, some entries aren't actually used by the game at all:
"Poisoned"
"Gift Not Want"
"Bored"
"Goodbye"
"Thank You"
"Good Idea"
"Fighting Without a Weapon"
Pretty much everything from "Hello" down (with the exception of "Warcry") is only used in the Character Creator, or very rarely by NPCs.
There are a couple mods that restore/utilize these entries, but if you only care about what the vanilla game will use, you can skip all these if you want. ;)
Duplicate the template you've chosen, and name it using Bioware's convention ("ss_[name]" for NPCs/followers, or "ss_pc_[unique identifier]" for PC).
Alternatively, you can duplicate an existing soundset, but then you have to be careful to replace/remove all existing lines.
I'm going to assume you already have a set of sound files you plan on using, because that's not something I can help you with.
For my forays into soundset creation, I ported from Dragon Age: Inquisition. If you'd like to do the same, various soundset files can be found in: DA3/DesignContent/Conversations/Global/Soundsets
DA3/DesignContent/Conversations/Multiplayer/Soundsets
DA3/DesignContent/Sound/Assets/Exertions
Go through your sound files, and transcribe them to fill in the template.
You may also want to change the default facial expressions. You can do this under the 'Cinematics' tab, with the 'Emotions' drop-down.
As you go, rename each sound file to "[stringID]_m". Unfortunately, there's no easy way to just copy/paste this number. -_-
For non-verbal lines, like grunts and screams, you can either leave it blank or write a description using [desc][/desc] tags (with carets instead of brackets).
Once you've figured out all your lines, you now need to edit them so that the toolset can process them.
If you're going to do a lot of work for DAO in Audacity, you might want to change the default settings by going to Edit, Preferences. In the 'Quality' section, change the default sample rate to 24000Hz (you'll have to choose 'other' and manually type it in), and the default sample format to 16-bit. You also may want to change the default open and export directories in the 'Directories' section.
Open a line in Audacity, and trim the silence by selecting the audio wave, and hitting the 'trim audio outside selection button' (or Ctrl+T).
(The toolset does require a bit of silence before and after the audio for facial expression processing, but I find it better to trim it and then later add a consistent amount of silence to each.)
Now select the silent part(s) and click the scissors to remove them.
Do any other editing you want now as well, like splicing or volume adjusting.
The last steps are to add silence before and after, and then to export it as a .wav.
I usually do this as a macro:
To do it manually, select your audio using the little Select button in the blue panel left of the wave, and then go to Effect, Trim Extend, and then add 0.5 seconds before and after.
(the toolset wiki recommends 1 full second before and after, but 0.5 seconds seems to work fine for me, at least for soundsets)
Before we export, make sure the Project Rate in the bottom left is set to 24000 Hz. If it's not, change to it 24000 (it's not one of the default options; you'll have to type it in manually).
Now export it by going to File, Export, Export as WAV. In the bottom center, change the Encoding to 'Signed 16-bit PCM', if it's not already set to that.
Repeat these steps for all your lines.
If there are any template lines you didn't use, delete the blue 'CONTINUE' line above it to remove that branch completely.
If there are entries you don't have any lines for, DON'T delete that entry (it can mess up the exporter). Delete all the blue 'CONTINUE' lines under the entry, and leave the entry there.
Once you have all your lines entered into your soundset template, and all the audio files named & converted, move the audio files to the module toolsetexport folder.
If you're working in a new module, put them in
'\Documents\BioWare\Dragon Age\AddIns\[moduleUID]\module\override\toolsetexport'
If you're working in the Single Player module, put them in
'\Documents\BioWare\Dragon Age\modules\Single Player\override\toolsetexport'
Go back to the toolset and select the Root node of your soundset. Then do Tools, Generate VO, Generate VO Local.
The toolset will take a minute to process, and you may see a command window for the FMOD processor pop up. If all went well, the log window at the bottom of the toolset should read something like this:
(unfortunately, it'll also show this if all your lines are missing and were replaced with RoboBrad)
If you were missing some lines, but not all (for me, that usually means I mistyped the string ID), the error will show like this:
(the lines "renamed" were missing and replaced with RoboBrad)
If any of your lines are the incorrect format, it'll show something like this:
If it processed successfully (with or without RoboBrad), you'll get an .fev and .fsb file in your module's core/override folder.
Windows Media Player used to be able to play .fsb files, but newer versions don't seem to be able to. So, if you want to check the .fsb for errors, you'll have to find a media player that will play .fsb files, or use FsbExtractor to open it up and check the lines one-by-one.
Back in the toolset, make sure the Root node is still selected, and do Tools, Generate FaceFX, Generate FaceFX Local.
You'll be able to watch the log as it processes each line.
You should end up with an .fxe and .fxm for each line, in your module's core/override folder (same place as the .fev & .fsb).
Finally, export the soundset either by right-clicking on the tab in the toolset or clicking Tools, Export, Export without dependent resources. This will generate two GDAs in your module's toolsetexport folder (next to your .wav files).
These GDAs are what the game actually reads when looking for a line to say. sse_ss_*****.gda lists all the lines for each entry type by stringID, and sst_ss_****.gda lists how many lines you have per entry type.
These GDAs can only be opened by the toolset, not GDApp, since they for some reason use the older GDA format.
You're almost done! You can keep the files where they are now if you want, or move them all to the main override folder. ('\Documents\BioWare\Dragon Age\packages\core\override')
If you're making a soundset for a companion or NPC, you're pretty much done.
You can either find that character's character file (.chr), change the soundset to your new one, and export the .utc; or open up an already-exported .utc with the toolset or TlkEdit, and change the soundset there.
The soundset for a character isn't actually specified in their toolset creature file. When you export the creature file as a .utc, it pulls the soundset from the associated character file (.chr).
If you're making a player soundset, you probably want to make it appear in the CharGen. To do that, you'll need to open up playersoundsets.gda with GDApp.
If you don't already have it extracted, it's located in 'C:\Program Files (x86)\Dragon Age\packages\core\data\2da.erf'. You can extract it with either the toolset or pyGFF.
Find a line of the same race/gender you want, and delete the rest. If you want your soundset available for multiple race/gender combos, keep a line for each.
Change the ID to a unique number for each, rename the label to whatever you want to show in the CharGen, and remove the number in StrIDName. Also change the soundset to yours. ;)
Save the gda, but append something unique, like 'playersoundsets_myvoice.gda'. This tells DAO that this is an extension of the original GDA, not a replacement. The length of the GDA name shouldn't be more than 27 characters (not including ".gda").
Put your new GDA in your main override folder.
Fire up DAO, and make a new character to test your soundset!
If you don't want to add your soundset to the CharGen, you can instead change an existing PC's voice by editing the save game. Follow whuffie's tutorial.
Alternatively, if you know a bit of scripting, you can make a console command using the SetSoundSet function.
If you plan on releasing your soundset to others, you only need to include the soundset GDAs, the .fev, .fsb, & .fxe files, and playersoundsets_****.gda.
The .fxm files are metadata and not needed, and the .wav files have been compressed into the .fsb.
Common problems:
--No sound at all: make sure all the info in your GDA is correct.
Alternatively, the game may not be finding your .fsb or soundset .gdas. Try moving them to the main override.
--Robot voice: the toolset couldn't find your .wav files when you did the VO processing. Make sure they were in the right toolsetexport folder, or try a different one.
--Missing from the CharGen: your GDA is probably missing, or the GDA name may be too long.
There's also a limit on how many voice options appear, so if you have other mods that add new voices, there might not be room for yours.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality✓ Free Actions
Free to watch • No registration required • HD streaming
Ohhhh trying to get the DAO toolset to work is an the most sisyphian effort I’ve ever encountered, every new success has immediate failure ahead of it, I never want to hear the word ‘sql server’ again in my WHOLE life.Â