<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://datoolset.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DeadlyGrim</id>
		<title>Dragon Age Toolset Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://datoolset.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DeadlyGrim"/>
		<link rel="alternate" type="text/html" href="https://datoolset.net/wiki/Special:Contributions/DeadlyGrim"/>
		<updated>2026-04-21T19:30:43Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.6</generator>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:Add_A_New_Class_Tutorial&amp;diff=15847</id>
		<title>Talk:Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:Add_A_New_Class_Tutorial&amp;diff=15847"/>
				<updated>2011-02-22T22:38:03Z</updated>
		
		<summary type="html">&lt;p&gt;DeadlyGrim: /* Help */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial edit ==&lt;br /&gt;
I have started to edit this page at the author's request to try and fix up some of the formatting. It was prety much a cut and paste from the forum. I think it has a way to go yet. I would recommend replacing all the capitalised text with appropriate markup such as '''bold'''. Also the structure could perhaps be improved and some of the content organised better in sentences rather than point form. Please help out if you have the time and incliniation. [[User:Stuntpope|Stuntpope]]&lt;br /&gt;
&lt;br /&gt;
=== edit ===&lt;br /&gt;
Embedded all images and added dascript tages&lt;br /&gt;
&lt;br /&gt;
--[[User:Rigortauri|Rigortauri]] 13:12, 2 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
did some table formating&lt;br /&gt;
&lt;br /&gt;
--[[User:Apolyon6k|Apolyon6k]] 09:14, 2 January 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Errors ==&lt;br /&gt;
&lt;br /&gt;
The following section is incorrect:&lt;br /&gt;
&lt;br /&gt;
Next goto  &amp;quot;// Undo Class and Race selection&amp;quot; and add the 4th CharGen_ClearAbilityList&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            // Note: This wipes the ability list clear&lt;br /&gt;
            CharGen_ClearAbilityList(oChar,1);&lt;br /&gt;
            CharGen_ClearAbilityList(oChar,2);&lt;br /&gt;
            CharGen_ClearAbilityList(oChar,3);&lt;br /&gt;
            CharGen_ClearAbilityList(oChar,4);&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next goto &amp;quot;// enabling proper tactics presets&amp;quot; and add the ValidForClass4 parts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            nForClass1 = GetM2DAInt(TABLE_TACTICS_USER_PRESETS, &amp;quot;ValidForClass1&amp;quot;, nCurrentRow);&lt;br /&gt;
            nForClass2 = GetM2DAInt(TABLE_TACTICS_USER_PRESETS, &amp;quot;ValidForClass2&amp;quot;, nCurrentRow);&lt;br /&gt;
            nForClass3 = GetM2DAInt(TABLE_TACTICS_USER_PRESETS, &amp;quot;ValidForClass3&amp;quot;, nCurrentRow);&lt;br /&gt;
            nForClass4 = GetM2DAInt(TABLE_TACTICS_USER_PRESETS, &amp;quot;ValidForClass4&amp;quot;, nCurrentRow);&lt;br /&gt;
            if(nCoreClass == nForClass1 || nCoreClass == nForClass2 || nCoreClass == nForClass3 || nCoreClass == nForClass4)&lt;br /&gt;
                AddTacticPresetID(oCreature, nCurrentRow);&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The author has misunderstood the purpose of these methods. There is no need to modify the first of these. The int parameter in CharGen_ClearAbilityList is actually the ability type - not a class id. In the second part there is no point modifying this unless you also modify user tactics 2da table. The three columns allow up to three classes to be listed and since the third column is not used already there is really no need to add a fourth column anyway.&lt;br /&gt;
&lt;br /&gt;
I considered removing this but it really needs to be replaced with the correct approach. I suspect that there are other aspects of AI that need to be dealt with too. [[User:Stuntpope|Stuntpope]] 13:13, 7 December 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: I went ahead and deleted it, as those should really be part of an advanced tutorial, rather than a basic one; I also went ahead and added some new data that I've been testing that eliminates the need to provide files in packages\core\override. [[User:Ladydesire|Ladydesire]] 21:48, 29 January 2010 (UTC)&lt;br /&gt;
===&amp;quot;Cleaning up&amp;quot; errors?===&lt;br /&gt;
I'm not sure but there seems to be an error in the section about cleaning up. If you delete all files you also delete your edited core files (2ds_constants_h and chargen_h). Without those files the new class wouldn't work. It should be mentioned after the export section that those files are needed and that they should be moved to module/core/override.[[User:Apolyon6k|Apolyon6k]] 03:46, 11 December 2010 (UTC)&lt;br /&gt;
:: Those files aren't needed by the module; the only thing needed are the compiled scripts (*.ncs) and any plots created for the module. [[User:Ladydesire|Ladydesire]] 23:33, 24 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== String IDs above 8.3 million don't work? ==&lt;br /&gt;
&lt;br /&gt;
There is a discrepancy between the current tutorial and the actual functionality of the toolset with regards to the string table entries; it is no longer necessary to manually set a range for the string tables, as ExcelProcessor now handles up to at least 650,000,000. [[User:Ladydesire|Ladydesire]] 20:18, 16 January 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Heh. I just spent a bit of time asking around the office about this bug too, the line's been in the tutorial since November. And then I posted here on the talk page without reading it completely first, is my face red. I'm going to provisionally remove the line from the &amp;quot;creating a module&amp;quot; section and store it here:&lt;br /&gt;
&lt;br /&gt;
::Make sure your string sets go from in between 8,000,000 - 8,300,000, if it goes above that range the strings will not work. BioWare has already posted about this SQL problem.&lt;br /&gt;
&lt;br /&gt;
:I'm pretty sure this has been fixed now, unless this is a separate bug that we weren't aware of. [[User:BryanDerksen|BryanDerksen]] 23:28, 2 February 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: I've been using a class built with string tables as I indicated in my comment, so I'd say it's safe to remove it. [[User:Ladydesire|Ladydesire]] 22:22, 3 February 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Will there be an advanced class tutorial? ==&lt;br /&gt;
&lt;br /&gt;
This is a basic tutorial for quickly creating new classes, but those classes are rather basic themselves. They use standard spells, talents and abilities but those are not really the right ones for costum classes. In the forum there were questions about custom spells and such, wouldn't it be nice to have a page here that combined or even linked to all the tutorials required to create a full customized class? [[User:Apolyon6k|Apolyon6k]] 03:59, 11 December 2010 (UTC)&lt;br /&gt;
:: I've been planning to do a much more extensive class and specialization creation tutorial by editing the existing tutorial, but since I'm working on two mods at the moment, time to create one is rather scarce. [[User:Ladydesire|Ladydesire]] 23:35, 24 December 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Help ==&lt;br /&gt;
&lt;br /&gt;
i have followed this tutorial step by step but I have run into a problem in that my command prompt gives me an error message when I input the command excelprocessor.exe New_Class.xls -outdir &amp;quot;&amp;lt;My Documents path&amp;gt;\Bioware\Dragon Age\AddIns\New_Class\module\override&amp;quot; &lt;br /&gt;
&lt;br /&gt;
the error message is: &lt;br /&gt;
ERROR: Unknown command line parameter -outdir&lt;br /&gt;
Press any key to terminate...&lt;br /&gt;
&lt;br /&gt;
i have done everything else, but my class is not showing up in the character creation. I am guessing that this error is throwing it off.&lt;br /&gt;
&lt;br /&gt;
: I would suggest creating a separate folder to make your gda files and them move or copy them into the addin folder manually. [[User:Ladydesire|Ladydesire]] 01:38, 16 January 2011 (UTC)&lt;br /&gt;
::Thanks. That worked. I can select my class in character creation, but when i actually play it, it becomes either a rogue or warrior. I am guessing there is a problem with one of my worksheets, but i have gone over them carefully and cannot find anything wrong. [[User:Dragoteine||Dragoteine]] 13:19, 16 January 2011&lt;br /&gt;
: The excelprocessor requires the -outdir parameter to use an equal sign, as in -outdir=&amp;quot;&amp;lt;My Documents path&amp;gt;\Bioware\Dragon Age\AddIns\New_Class\module\override&amp;quot;. I changed the article to reflect this. [[User:DeadlyGrim|DeadlyGrim]] 22:38, 22 February 2011 (UTC)&lt;/div&gt;</summary>
		<author><name>DeadlyGrim</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=15846</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=15846"/>
				<updated>2011-02-22T22:32:08Z</updated>
		
		<summary type="html">&lt;p&gt;DeadlyGrim: /* Generate the .GDA file */  Added in '='&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Creating a new class in Dragon Age is a fairly complicated process, compounded by the fact that currently there are bugs in the 2DA handling which we must work around till they are fixed by Bioware.&lt;br /&gt;
&lt;br /&gt;
Before going in and editing the files, make sure you know at least the following details for your class&lt;br /&gt;
* Class Name&lt;br /&gt;
* Will it be a magic- or a stamina-based character?&lt;br /&gt;
* Will the new class reuse existing abilities/spells or new ones?&lt;br /&gt;
* What backgrounds will be available for this new class?&lt;br /&gt;
&lt;br /&gt;
For the purpose of the basic tutorial, we will create a new class called Shaman that will be a copy of the Mage and will be available for the Noble origins.&lt;br /&gt;
&lt;br /&gt;
== Create the module ==&lt;br /&gt;
Fire up the toolset and create a new module. Let's call it New_Class for this tutorial. Since we want to test this class in the single player campaign, make sure that '''Single Player''' is selected in the Extended Module drop-down under Module Properties and the Module Hierarchy includes '''Single Player''' as well.&lt;br /&gt;
&lt;br /&gt;
Go to Tools -&amp;gt; String Editor and create the following strings:&lt;br /&gt;
(for the purposes of this tutorial, I am using stringIDs starting at 15000000. Use whatever stringID is generated in your module)&lt;br /&gt;
{| rules=&amp;quot;all&amp;quot; style=&amp;quot;border: 1pt solid black&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''String ID'''  ||'''Text'''  ||'''Description'''&lt;br /&gt;
|-&lt;br /&gt;
|15000000 || Shaman || Class Name (Singular)&lt;br /&gt;
|-&lt;br /&gt;
|15000001 || Shamans || Class Name (Plural)&lt;br /&gt;
|-&lt;br /&gt;
|15000002 || Shaman is a new class || Class Description&lt;br /&gt;
|-&lt;br /&gt;
|15000003 || Shaman || Class Tooltip&lt;br /&gt;
|-&lt;br /&gt;
|15000004 || JohnD || Default first name for male character (dwarf)&lt;br /&gt;
|-&lt;br /&gt;
|15000005 || JaneD || Default first name for female character (dwarf)&lt;br /&gt;
|-&lt;br /&gt;
|15000006 || JohnH || Default first name for male character (human)&lt;br /&gt;
|-&lt;br /&gt;
|15000007 || JaneH || Default first name for female character (human)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{TutorialRef|String editor}}&lt;br /&gt;
&lt;br /&gt;
== Editing 2das ==&lt;br /&gt;
NOTE: '''DO NOT''' edit the .xls files present under &amp;lt;Dragon Age install&amp;gt;\tools\source\2DA directly and generate the GDA. Bioware has given us the power of M2DA precisely for this purpose.&lt;br /&gt;
&lt;br /&gt;
* Create a new empty workbook or copy or rename one of the workbooks from the 2DA folder and delete the existing worksheets. Lets call this New_Class.xls&lt;br /&gt;
* Copy the following worksheets into the the new workbook. Rename all worksheets!!&lt;br /&gt;
  CLA_base.xls\CLA_data                 -&amp;gt;   New_Class.xls\CLA_data_nc&lt;br /&gt;
  2da_base.xls\M2DA_base                -&amp;gt;   New_Class.xls\M2DA_base_nc&lt;br /&gt;
  background.xls\Backgrounds            -&amp;gt;   New_Class.xls\Backgrounds_nc&lt;br /&gt;
  background.xls\background_defaults    -&amp;gt;   New_Class.xls\background_defaults_nc&lt;br /&gt;
  background.xls\chargen_preload        -&amp;gt;   New_Class.xls\chargen_preload_nc&lt;br /&gt;
  ALWizard_default.xls\ALWizard_default -&amp;gt;   New_Class.xls\ALShaman_default&lt;br /&gt;
  Achievements.xls\Achievements         -&amp;gt;   New_Class.xls\Achievements_nc&lt;br /&gt;
* Save the workbook New_Class.xls&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Edit CLA_data_nc ====&lt;br /&gt;
In the New_Class.xls workbook, navigate to the CLA_data_nc worksheet.&lt;br /&gt;
 NOTE: The procedure below has to be done because this 2DA is read sequentially and &lt;br /&gt;
 adding a class at the end (ID:26 using standard resources) does not generate a unique &lt;br /&gt;
 background ID. This section will be modified when Bioware fixes these bugs.&lt;br /&gt;
Copy line #4 (Wizard Class with ID:2) and paste it below the Rogue class, moving the subsequent lines one down. Te &lt;br /&gt;
The important columns to change are:&lt;br /&gt;
* '''Label''': Shaman&lt;br /&gt;
* '''NameStrref''': 15000000 (''String ID referencing the class name'')&lt;br /&gt;
* '''PluralStrref''': 15000001 (''String ID referencing the class in plural'')&lt;br /&gt;
* '''DescStrref''': 15000002 (''String ID referencing the class description'')&lt;br /&gt;
* '''TooltipStrref''': 15000003 (''String ID referencing the class description'')&lt;br /&gt;
* '''Icon''': classico_spirithealer (''You can create a new icon and put that icon's name in here too. For this tutorial, we are reusing the Spirithealer specialization icon'')&lt;br /&gt;
* '''Constant''': CLASS_Shaman&lt;br /&gt;
* '''StartingAbility1''': ID of the ability assigned during chargen. We will keep this the same as Mage for now (4023).&lt;br /&gt;
* '''CharGenLabel''': Shaman&lt;br /&gt;
&lt;br /&gt;
{{TutorialRef||CLA base.xls}}&lt;br /&gt;
&lt;br /&gt;
==== Edit M2DA_base_nc ====&lt;br /&gt;
In the New_Class.xls workbook, navigate to the M2DA_base_nc worksheet.&amp;lt;br/&amp;gt;&lt;br /&gt;
Remove all lines except the first 2 lines.&amp;lt;br/&amp;gt;&lt;br /&gt;
Add the following:&lt;br /&gt;
{| rules=&amp;quot;all&amp;quot; cellpadding=&amp;quot;2&amp;quot;  style=&amp;quot;border: 1pt solid black&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|ID above 1000000  ||ALShaman_default  ||ALShaman_default &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Edit backgrounds_nc ====&lt;br /&gt;
In the New_Class.xls workbook, navigate to the backgrounds_nc worksheet.&amp;lt;br/&amp;gt;&lt;br /&gt;
Insert a new column after the Mage column and name it Shaman. Since we want to use this class for the Noble Origins, put a '''1''' against the Noble row. Refer the image below.&lt;br /&gt;
[[File:Backgrounds.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;The current design of the backgrounds tab makes it difficult to assign different classes to different races for the Mage and Noble origins. Independent modules can override this backgrounds worksheet completely though they would still have to work within the current GUI limitation of 6 backgrounds.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Edit background_defaults_nc ====&lt;br /&gt;
In the New_Class.xls workbook, navigate to the background_defaults_nc worksheet.&amp;lt;br/&amp;gt;&lt;br /&gt;
The ID column in this worksheet is populated according to the following formula:&lt;br /&gt;
 (1000 * Race ID) + (100 * Class ID) + Background ID&lt;br /&gt;
&lt;br /&gt;
 Currently, this formula has also been reported to Bioware since this allows for 99 backgrounds &lt;br /&gt;
 and requires the Class ID to be in multiples of 100 to yield unique results.&lt;br /&gt;
In this tutorial,&lt;br /&gt;
* Dwarf Noble Shaman = (1000 * 1) + (100 * 4) + 5 = 1405&lt;br /&gt;
* Human Noble Shaman = (1000 * 3) + (100 * 4) + 5 = 3405&lt;br /&gt;
&lt;br /&gt;
Change the DefaultNameMale and DefaultNameFemale stringID references to the strings created earlier. The result should look like the image below. We will create the default_shaman.utc and the Ability referenced by the ID 5000000 later in the tutorial.&lt;br /&gt;
[[File:Background_defaults_nc.jpg]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
==== Edit chargen_preload_nc ====&lt;br /&gt;
&lt;br /&gt;
In the New_Class.xls workbook, navigate to the chargen_preload_nc worksheet.&amp;lt;br/&amp;gt;&lt;br /&gt;
This sheet lists the character templates to load before the chargen so that the model corresponding to the race/class/origin is shown.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Copy the ID and Template for the new character templates from the background_defaults_nc worksheet.&lt;br /&gt;
{| rules=&amp;quot;all&amp;quot; style=&amp;quot;border: 1pt solid black&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|'''ID'''  ||'''Template'''&lt;br /&gt;
|-&lt;br /&gt;
|1405|| default_shaman.utc&lt;br /&gt;
|-&lt;br /&gt;
|3405 || default_shaman.utc&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Generate the .GDA file ==&lt;br /&gt;
&lt;br /&gt;
Open a command prompt and navigate to the &amp;lt;Dragon Age install directory&amp;gt;\tools\ResourceBuild\Processors&lt;br /&gt;
Execute the following command: '''excelprocessor.exe New_Class.xls -outdir=&amp;quot;&amp;lt;My Documents path&amp;gt;\Bioware\Dragon Age\AddIns\New_Class\module\override&amp;quot;'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
find the 2da_constants_h file under Core scripts&lt;br /&gt;
&lt;br /&gt;
right click on 2DA_CONSTANTS_H, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following sections and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_DUELIST = 4030;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_RANGER = 4029;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_REAVER = 4019;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_ROGUE = 4020;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_SHALE = 4033;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_TEMPLAR = 4021;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_WARRIOR = 4022;&lt;br /&gt;
const int ABILITY_TALENT_HIDDEN_SHAMAN = 5000;&lt;br /&gt;
const int ABILITY_TALENT_HURLOCK_PROPERTIES = 90080;&lt;br /&gt;
const int ABILITY_TALENT_INDOMITABLE = 28;&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
//Class Constants&lt;br /&gt;
const int CLASS_WARRIOR = 1;&lt;br /&gt;
const int CLASS_WIZARD = 2;&lt;br /&gt;
const int CLASS_ROGUE = 3;&lt;br /&gt;
const int CLASS_SHAMAN = 4;&lt;br /&gt;
const int CLASS_SHAPESHIFTER = 30;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 31;&lt;br /&gt;
const int CLASS_CHAMPION = 32;&lt;br /&gt;
const int CLASS_TEMPLAR = 33;&lt;br /&gt;
const int CLASS_BERSERKER = 34;&lt;br /&gt;
const int CLASS_REAVER = 35;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 36;&lt;br /&gt;
const int CLASS_ASSASSIN = 37;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 38;&lt;br /&gt;
const int CLASS_BARD = 39;&lt;br /&gt;
const int CLASS_RANGER = 40;&lt;br /&gt;
const int CLASS_DUELIST = 41;&lt;br /&gt;
const int CLASS_SHALE = 17;&lt;br /&gt;
const int CLASS_DOG = 18;&lt;br /&gt;
const int CLASS_MONSTER_ANIMAL = 19;&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that the constants for the specializations have been changed; this will require editing of the Achievements gda via an M2DA to correct the displayed data when unlocking specializations. You may also have to recompile one or more of the plot scripts, but I have not been able to test this personally.&lt;br /&gt;
&lt;br /&gt;
Afterwards on top select SAVE then CHECK IN&lt;br /&gt;
&lt;br /&gt;
Now at the top and click &amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Edit the sys_chargen_h file ===&lt;br /&gt;
Find the sys_chargen_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_chargen_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the starting skills section and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
    // -------------------------------------------------------------------------&lt;br /&gt;
    // Starting Skills&lt;br /&gt;
    // -------------------------------------------------------------------------&lt;br /&gt;
    if (nClass == CLASS_WARRIOR)&lt;br /&gt;
    {&lt;br /&gt;
        _AddAbility(oChar, 100100);&lt;br /&gt;
    }&lt;br /&gt;
    else if (nClass == CLASS_ROGUE)&lt;br /&gt;
    {&lt;br /&gt;
        _AddAbility(oChar, ABILITY_SKILL_POISON_1);&lt;br /&gt;
    }&lt;br /&gt;
    else if (nClass == CLASS_WIZARD)&lt;br /&gt;
    {&lt;br /&gt;
        _AddAbility(oChar, ABILITY_SKILL_HERBALISM_1);&lt;br /&gt;
    }&lt;br /&gt;
    else if (nClass == CLASS_SHAMAN)&lt;br /&gt;
    {&lt;br /&gt;
        _AddAbility(oChar, ABILITY_SKILL_HERBALISM_1);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next goto starting ability&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
        // ---------------------------------------------------------------------&lt;br /&gt;
        // Load the starting ability for the background&lt;br /&gt;
        // ---------------------------------------------------------------------&lt;br /&gt;
        int nAbility = GetM2DAInt(TABLE_STARTING_EQUIPMENT,&amp;quot;Ability&amp;quot;, nIdx);&lt;br /&gt;
        _AddAbility(oCreature, nAbility);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        string sTemplate = &amp;quot;default_player.utc&amp;quot;;&lt;br /&gt;
        switch (nClass)&lt;br /&gt;
        {&lt;br /&gt;
            case CLASS_WARRIOR: sTemplate = &amp;quot;default_warrior.utc&amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case CLASS_ROGUE:   sTemplate = &amp;quot;default_rogue.utc&amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case CLASS_WIZARD:  sTemplate = &amp;quot;default_wizard.utc&amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case CLASS_SHAMAN:  sTemplate = &amp;quot;default_shaman.utc&amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
        LoadItemsFromTemplate(oCreature, sTemplate, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Afterwards on top select SAVE then CHECK IN&lt;br /&gt;
&lt;br /&gt;
Now at the top and click &amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
=== Edit the sys_chargen file ===&lt;br /&gt;
Find the sys_chargen ==&amp;gt; under _Systems&lt;br /&gt;
&lt;br /&gt;
right click on sys_chargen, select Duplicate; name the file something like wd_sys_chargen.&lt;br /&gt;
&lt;br /&gt;
Change this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int MAX_CLASS_INDEX = 4; // Last index of available base classes in cla_base.&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
This value does not have to be limited to the minimum number of base classes in the file; it simply has to be higher than the default value of 3.&lt;br /&gt;
&lt;br /&gt;
Go down to the following section and either comment it out as I show it, or delete it; if it is left in place without being commented out, it will cause your class to provide double the attribute points at character creation or level up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
        // ---------------------------------------------------------------------&lt;br /&gt;
        // This fires whenever the player presses + or - on an attribute to spend&lt;br /&gt;
        // points on the attribute screen of character generation&lt;br /&gt;
        //&lt;br /&gt;
        // int(0) - Constant PROPERTY_* integer&lt;br /&gt;
        // int(1) - # of points spent&lt;br /&gt;
        // ---------------------------------------------------------------------&lt;br /&gt;
        /*case EVENT_TYPE_CHARGEN_ASSIGN_ATTRIBUTES:&lt;br /&gt;
        {&lt;br /&gt;
            int nAttribute = GetEventInteger(ev,0);&lt;br /&gt;
            int nPoints    = GetEventInteger(ev,1);&lt;br /&gt;
&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            // Subtract from available points to spend&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_SIMPLE_ATTRIBUTE_POINTS, IntToFloat(nPoints*-1));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            // Spend it.&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            Chargen_SpendAttributePoints(oChar,nAttribute,nPoints,FALSE);&lt;br /&gt;
            break;&lt;br /&gt;
        }*/&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go down to the special handling section and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
// special handling for aluvian&lt;br /&gt;
                if (nQuickStart == 0 )&lt;br /&gt;
                {&lt;br /&gt;
                    Log_Trace(LOG_CHANNEL_CHARACTER,&amp;quot;sys_chargen&amp;quot;,&amp;quot;Setting default values for player character&amp;quot;);&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
                    if(nRandClass == CLASS_ROGUE || nRandClass == CLASS_WARRIOR || nRandClass == CLASS_SHAMAN)&lt;br /&gt;
                    {&lt;br /&gt;
                        _RunChargen(RACE_HUMAN, nRandClass, oChar, BACKGROUND_NOBLE );&lt;br /&gt;
                        WR_SetPlotFlag(PLT_GEN00PT_BACKGROUNDS, GEN_BACK_HUMAN_NOBLE, TRUE);&lt;br /&gt;
                    }&lt;br /&gt;
                    else // mage&lt;br /&gt;
                    {&lt;br /&gt;
                        _RunChargen(RACE_HUMAN, nRandClass, oChar, BACKGROUND_MAGI );&lt;br /&gt;
                        WR_SetPlotFlag(PLT_GEN00PT_BACKGROUNDS, GEN_BACK_CIRCLE, TRUE);&lt;br /&gt;
                    }&lt;br /&gt;
                    Chargen_SetNumTactics(oChar);&lt;br /&gt;
                    SetCanLevelUp(oChar,Chargen_HasPointsToSpend(oChar));&lt;br /&gt;
&lt;br /&gt;
                    SendEventModuleChargenDone(&amp;quot;&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
next go down to the tactics sections and add the following:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
                // associate some tactics preset table&lt;br /&gt;
                int nPresetTable;&lt;br /&gt;
                if(GetCreatureCoreClass(oChar) == CLASS_WARRIOR)&lt;br /&gt;
                    nPresetTable = 1; // tank&lt;br /&gt;
                else if(GetCreatureCoreClass(oChar) == CLASS_ROGUE)&lt;br /&gt;
                    nPresetTable = 2; // damage dealer&lt;br /&gt;
                else if(GetCreatureCoreClass(oChar) == CLASS_SHAMAN)&lt;br /&gt;
                    nPresetTable = 1; // damage dealer&lt;br /&gt;
                else // mage&lt;br /&gt;
                    nPresetTable = 5; // nuker&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Afterwards on top select SAVE then CHECK IN&lt;br /&gt;
&lt;br /&gt;
Now at the top and click &amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Create the module script ===&lt;br /&gt;
Create a new script and give it a descriptive name like &amp;quot;loadscript&amp;quot;. This script will intercept the Chargen events and redirect them to the custom version of the sys_chargen script you just created. It can also be used to intercept other events if you want to alter other things or add items to a newly created character's inventory. This is a good example of how to use it to add custom items and redirect the chargen to the custom script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
   event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    Log_Events(&amp;quot;&amp;quot;, ev);&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        ////////////////////////////////////////////////////////////////////////&lt;br /&gt;
        // Sent by: The engine&lt;br /&gt;
        // When: The module loads from a save game, or for the first time. This event can fire more than&lt;br /&gt;
        //       once for a single module or game instance.&lt;br /&gt;
        ////////////////////////////////////////////////////////////////////////&lt;br /&gt;
        case EVENT_TYPE_MODULE_LOAD:&lt;br /&gt;
        {&lt;br /&gt;
           //Nothing is needed here, unless you are doing other things with your module.&lt;br /&gt;
        }&lt;br /&gt;
        default:&lt;br /&gt;
        {&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            // Handle character generation events sent by the engine.&lt;br /&gt;
            // -----------------------------------------------------------------&lt;br /&gt;
            if ((nEvent &amp;gt;= EVENT_TYPE_CHARGEN_START &amp;amp;&amp;amp; nEvent &amp;lt;= EVENT_TYPE_CHARGEN_END) || nEvent == EVENT_TYPE_PLAYERLEVELUP )&lt;br /&gt;
            {&lt;br /&gt;
                HandleEvent(ev, R&amp;quot;ld_sys_chargen.ncs&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                Log_Trace(LOG_CHANNEL_EVENTS, GetCurrentScriptName(), Log_GetEventNameById(nEvent) + &amp;quot; (&amp;quot; + ToString(nEvent) + &amp;quot;) *** Unhandled event ***&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Afterwards on top select SAVE then CHECK IN&lt;br /&gt;
&lt;br /&gt;
Now at the top and click &amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
{{TutorialRef|Script}}&lt;br /&gt;
&lt;br /&gt;
== Creating the UTC template file==&lt;br /&gt;
Back in the toolset we need to do the following:&lt;br /&gt;
&lt;br /&gt;
Click on the &amp;quot;creature tab&amp;quot; (red head icon)&lt;br /&gt;
&lt;br /&gt;
Right click on default_player ==&amp;gt; duplicate&lt;br /&gt;
Do like the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut dfs1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now we need to edit the values and give them some armor and weapons, like so:&lt;br /&gt;
&lt;br /&gt;
Class: Shaman (from dropdown)&lt;br /&gt;
Name: Default Male Shaman&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut dfs2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, you need to make one for each race and origin that you wish for the class to be available to (this is how Bioware does it, if you look carefully at the various entries in the backgrounds.xls worksheets); name each one with the following abbreviations for race or origin: hm_noble, hm_mage, dw_comm, dw_noble, elf_city, elf_mage, or elf_dalish (gender is handled automatically by the game, based on race). Making different versions of the template allows each version to have different armor and weapons available to them, which helps them blend into the base game (if you are using it in a module that extends Single Player). Be sure to use the proper names in each location in the backgrounds.xls worksheets or the template will not be displayed when you select the background in the game.&lt;br /&gt;
&lt;br /&gt;
Now at the top and click SAVE ==&amp;gt; CHECK IN for each template.&lt;br /&gt;
&lt;br /&gt;
Now at the top and click &amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot; for each template.&lt;br /&gt;
{{TutorialRef|Designer Resources#Creating new resources|Creature|Exporting a module}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
Up on top ON THE EXPORT TAB &lt;br /&gt;
&lt;br /&gt;
&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;GENERATE MODULE XML&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;GENERATE MANIFEST XML&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;EXPORT TALK TABLE&amp;quot;&lt;br /&gt;
{{TutorialRef|Exporting a module}}&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
Delete all files in the name/mydocuments/bioware/dragonage/packages/core/override/toolset; these are not needed.&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
Start up your game (It may take a min) and start a new game.&lt;br /&gt;
&lt;br /&gt;
*WARNING* IF ANYTHING HAS GONE WRONG HERE YOUR GAME WILL BE SEVERELY DAMAGED&lt;br /&gt;
&lt;br /&gt;
Select MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI&lt;br /&gt;
&lt;br /&gt;
YOU SHOULD SEE YOUR NEW CHARACTER&lt;br /&gt;
&lt;br /&gt;
IF SOMETHING HAPPENED QUIT AND DOUBLE CHECK YOUR STEPS&lt;br /&gt;
&lt;br /&gt;
Make sure you did not miss ANY &amp;quot;;&amp;quot; or &amp;quot;{ }&amp;quot; as a single one of these missed can destroy the game.&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
MY SPELLS ARE NOT SHOWING UP IN THE CREATION SCREEN, HELP!!&lt;br /&gt;
&lt;br /&gt;
* You may not have sort your ability file back to ID.  It has to be sorted by ID in order to show up.&lt;br /&gt;
* You may not have assigned the new abilities to your new class &amp;quot;5000&amp;quot; in the prereqability column&lt;br /&gt;
&lt;br /&gt;
MY MODEL IS NOT SHOWING UP WHEN I GOTO MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI&lt;br /&gt;
&lt;br /&gt;
* It is very likely you did not EXPORT your default_shaman.utc model&lt;br /&gt;
* Double check the background file to make sure you are using default_shaman.utc for the template&lt;br /&gt;
* Try rebooting your computer.&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>DeadlyGrim</name></author>	</entry>

	</feed>