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

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8586</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8586"/>
				<updated>2009-12-06T10:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8585</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8585"/>
				<updated>2009-12-06T10:28:52Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[zh:建立新職業]]&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8584</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8584"/>
				<updated>2009-12-06T10:28:31Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[zh:建立新職業]]&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8583</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8583"/>
				<updated>2009-12-06T10:28:09Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[zh:建立新職業]&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8582</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8582"/>
				<updated>2009-12-06T10:27:08Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
*[http://social.bioware.com/wiki/datoolset/index.php/zh:建立新職業 建立新職業]&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8581</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8581"/>
				<updated>2009-12-06T10:14:32Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[zh:建立新職業]]&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8580</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8580"/>
				<updated>2009-12-06T10:13:49Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[zh:建立新職業]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8579</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8579"/>
				<updated>2009-12-06T10:12:35Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
{{H-langs&lt;br /&gt;
|en=&lt;br /&gt;
|zh=zh:建立新職業&lt;br /&gt;
|template=H-langs:Interwiki linking&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8578</id>
		<title>Add A New Class Tutorial/zh</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8578"/>
				<updated>2009-12-06T09:58:15Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: /* 將2DA檔轉成GDA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
&lt;br /&gt;
== 新職業開始套件 ==&lt;br /&gt;
&lt;br /&gt;
你需要一個套件內含.xls的電子表格，這樣才能製作新職業。點擊下面網址可以下載已製作完成得套件。&lt;br /&gt;
（譯者注 原作者給的檔案和教學不符  建議完全照教學作）&lt;br /&gt;
關於.xls的製作、轉換以及GDA等，此篇教學都有講到，只要你跟者我的腳步。&lt;br /&gt;
&lt;br /&gt;
你仍然需要在toolkit裡編輯腳本並且建立UTC模型。&lt;br /&gt;
&lt;br /&gt;
你仍然需要為你的模組建立GDA檔案。&lt;br /&gt;
&lt;br /&gt;
前往 我的文件/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
將GDA檔放於 我的文件/bioware/dragonage/addins/modulename/core/override 資料夾裡&lt;br /&gt;
&lt;br /&gt;
你可以在此網站下載 [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (你需要註冊)&lt;br /&gt;
&lt;br /&gt;
== 編輯2da檔 ==&lt;br /&gt;
你要編輯的2DA檔案。&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (例  ALshaman_default.xls) 複製自 ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== 開啟 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
切換頁面為M2DA_base（可以使用TAB鍵切換）&lt;br /&gt;
在最下面空白處添加&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
保存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟guitypes.xls ===&lt;br /&gt;
在底部添加：&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
保存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟CLA_base.xls ===&lt;br /&gt;
將以下資料一一填入ID為3的下一列（即ID為3的下一列統統往下移動一列，中間空出的一列放資訊）&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
儲存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟background.xls ===&lt;br /&gt;
在 backgrounds 頁面: 你必須要在Mage和Skill 1間插入一個區塊，如圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在background_defaults頁面裡有多個區域要追加，請看圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
ID是如何工作？ 1 = dwarf， 4 = shaman，5 = noble，設定是很簡單的。&lt;br /&gt;
&lt;br /&gt;
在第12,15,17,19列你要照圖追加我推薦你直接複製然後修改。&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
關於template string裡的deault_shaman.utc，是稍後要在toolset裡製作的基本模型。 &lt;br /&gt;
至於Ability的int是遊戲裡的職業預設能力，以我為例是直接用沒有被使用過的數字。&lt;br /&gt;
&lt;br /&gt;
在chargen_preload頁面，你必須加入一些區塊如圖：&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
注意 ID的數值必須必須和background_defaults頁面的數值一樣，否則會使遊戲崩潰。 &lt;br /&gt;
&lt;br /&gt;
儲存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟 abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
在ABI_Base頁面 將以下內容添加到底部&lt;br /&gt;
&lt;br /&gt;
有多行是重要的東西必須要瞭解&lt;br /&gt;
abilitytype - 定義能力類型。 近戰，法術，技能等等---&amp;gt; 是直接連結到abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability – 定義有此能力的必須條件。要建立新職業就必須修改已存在的職業。&lt;br /&gt;
&lt;br /&gt;
guitypes - 職業的參考 ---&amp;gt; 連接到guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在第119列的下一列 ==&amp;gt; 4034 HIDDEN_DOG下方插入新列並個別輸入以下資訊&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
將以下內容一一複製到頁面底部（總共要製作四個新列）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
接下來是棘手的問題，請確保接下來都遵從教學，否則你就要和你的模組說再見。&lt;br /&gt;
&lt;br /&gt;
選擇第三列到最後一列（即第三列到最後一列反白）&lt;br /&gt;
&lt;br /&gt;
到 DATA（資料） --&amp;gt; SORT BY COLUMN S (guitypes)（行排序依照guitypes 以我為例是依欄位S作排序）。現在應該是依照guitype排序完畢。&lt;br /&gt;
&lt;br /&gt;
現在我們要將mage的法術自我們新職業的法術裡分開。&lt;br /&gt;
&lt;br /&gt;
在guitype 裡數值介在1～4的，看相對映的 prereqability數值，若為0就改成4023&lt;br /&gt;
從現在開始特殊能力只有在職業為mage時出現。 (這也就意謂者我們要為新職業製作獨立的技能。)&lt;br /&gt;
現在已經確保不同職業，技能不會重複。&lt;br /&gt;
&lt;br /&gt;
選擇第三列到最後一列（即第三列到最後一列反白）&lt;br /&gt;
&lt;br /&gt;
到 DATA（資料） --&amp;gt; SORT BY COLUMN S (ID)（行排序依照ID 以我為例是依欄位A作排序）。&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
現在到 passive_abilities頁面&lt;br /&gt;
&lt;br /&gt;
在最下方的新列一一填入&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
儲存你的檔案 :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 開啟 ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
改成如圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== 將2DA檔轉成GDA ==&lt;br /&gt;
&lt;br /&gt;
在C:下建立一個叫做2DA的資料夾，在裡面建立一個叫做override的資料夾。&lt;br /&gt;
&lt;br /&gt;
在你的C:\2da 把以下檔案放進去:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
去你的toolset資料夾將 ExcelProcessor.exe也放進去 我們是靠 ExcelProcessor作轉換&lt;br /&gt;
（以我為例是在遊戲目錄裡的\tools\ResourceBuild\Processors）&lt;br /&gt;
&lt;br /&gt;
然後我們製作簡單的批次檔來轉換。&lt;br /&gt;
開啟記事本，將以下代碼複製貼上去，存檔 檔名取為convert.bat 並執行convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
注意：若系統為Vista或是Windows 7，請以管理者執行convert.bat（即RUN AS ADMINISTRATOR）&lt;br /&gt;
&lt;br /&gt;
現在你為你的模組製作好GDA檔了。&lt;br /&gt;
&lt;br /&gt;
== 建立模組 ==&lt;br /&gt;
現在我們要在Toolset裡編輯資料&lt;br /&gt;
&lt;br /&gt;
建立新模組如圖&lt;br /&gt;
&lt;br /&gt;
'''請確認你的STRING數值&lt;br /&gt;
是介於8,000,000 ～ 8,300,000&lt;br /&gt;
如果不在此範圍，STRING就不會工作&lt;br /&gt;
BIOWARE聲明這是SQL的問題 '''&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
模組建立後，開啟模組選擇heirarchy並檢查single player是否有打勾。&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
模組建立完畢，現在要將GDA放在適當override區域。&lt;br /&gt;
&lt;br /&gt;
開啟我的文件/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
將GDA檔放在我的文件/bioware/dragonage/addins/modulename/core/override資料夾裡面&lt;br /&gt;
&lt;br /&gt;
== 編輯腳本== &lt;br /&gt;
你現在必須要編輯一些腳本。&lt;br /&gt;
&lt;br /&gt;
=== 編輯2da_constants_h檔案 ===&lt;br /&gt;
&lt;br /&gt;
在核心（Core）腳本裡找到2da_constants_h檔案&lt;br /&gt;
&lt;br /&gt;
對2DA_CONSTANTS_H按滑鼠右鍵，選擇CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，依照下方代碼尋找區域並修改成一樣：&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_WARRIOR = 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;
和&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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯 gen00pt_class_race_gend 檔案 ===&lt;br /&gt;
在 _Global ==&amp;gt; plot scripts 找到gen00pt_class_race_gend檔案。 &lt;br /&gt;
&lt;br /&gt;
對gen00pt_class_race_gend按滑鼠右鍵，點擊CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，找到區塊並依照下列代碼修改: &lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯 sys_chargen_h ===&lt;br /&gt;
找出sys_chargen_h檔案，位在_Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
對sys_chargen_h按滑鼠右鍵，選CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，找到Starting skills區塊修改成下: &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;
然後到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;
    }&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;
&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;
到&amp;quot;// Undo Class and Race selection&amp;quot; 區域建第四個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;
到 &amp;quot;// enabling proper tactics presets&amp;quot; 添加ValidForClass4部份&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯sys_rewards_h ===&lt;br /&gt;
找出 sys_rewards_h檔案，在 _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
對sys_rewards_h按滑鼠右鍵選擇CHECK OUT&lt;br /&gt;
&lt;br /&gt;
開啟並在代碼500附近依下方代碼修改: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯sys_chargen檔案 ===&lt;br /&gt;
找出sys_chargen檔案，在_Systems裡&lt;br /&gt;
&lt;br /&gt;
對sys_chargen按滑鼠右鍵選CHECK OUT&lt;br /&gt;
&lt;br /&gt;
開啟，改變這一行:&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;
&lt;br /&gt;
到special handling區塊並修改如下: &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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
到tactics區域依下方代碼添加: &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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 製作 UTC 模板(TEMPLATE)檔案 ==&lt;br /&gt;
返回Toolset請跟者下方教學：&lt;br /&gt;
&lt;br /&gt;
點擊 &amp;quot;creature&amp;quot;標籤 (紅頭圖標)（就在右方的Palette Window）&lt;br /&gt;
&lt;br /&gt;
展開_Core_Creatures&lt;br /&gt;
在展開_Do NOT TOUCH&lt;br /&gt;
對default_mage按右鍵選擇duplicate 如圖製作: &lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut dfs1.jpg]]&lt;br /&gt;
&lt;br /&gt;
現在要編輯數值並給予基本武器和裝甲如圖：&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 建立一些字串 ==&lt;br /&gt;
&lt;br /&gt;
開啟String editor然後按右鍵選擇insert&lt;br /&gt;
&lt;br /&gt;
你要設成如下&lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
完成後就關閉String editor&lt;br /&gt;
&lt;br /&gt;
== 全部放在一起 ==&lt;br /&gt;
&lt;br /&gt;
點擊上方功能列的Tool-&amp;gt;EXPORT &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;
&lt;br /&gt;
== 清除垃圾資料 ==&lt;br /&gt;
&lt;br /&gt;
不要忽略此部份&lt;br /&gt;
&lt;br /&gt;
到我的文件/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
將此資料夾內的東西複製到&lt;br /&gt;
&lt;br /&gt;
我的文件/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
應該會有以下檔案：&lt;br /&gt;
2da_constant_h.nss&lt;br /&gt;
gen00pt_class_race_gend.nss&lt;br /&gt;
sys_chargen_h.nss&lt;br /&gt;
sys_rewards_h.nss &lt;br /&gt;
sys_chargen.nss&lt;br /&gt;
sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
將我的文件/bioware/dragonage/packages/core/override/toolset裡的東西全部殺掉&lt;br /&gt;
&lt;br /&gt;
== 嘗試結果 ==&lt;br /&gt;
&lt;br /&gt;
開啟你的遊戲並選擇新遊戲&lt;br /&gt;
&lt;br /&gt;
*小心*如果出現任何錯誤訊息都將會損害遊戲本體&lt;br /&gt;
&lt;br /&gt;
點選 MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI&lt;br /&gt;
&lt;br /&gt;
你可以看到你的新人物&lt;br /&gt;
&lt;br /&gt;
如果有任何意外發生請從頭依教學檢查是否有錯誤&lt;br /&gt;
&lt;br /&gt;
請確保你沒有遺漏 &amp;quot;;&amp;quot; 或 &amp;quot;{ }&amp;quot;，如果缺少會摧毀遊戲。&lt;br /&gt;
&lt;br /&gt;
== 危險焦點 ==&lt;br /&gt;
&lt;br /&gt;
我的法術沒有出現在創造人物的視窗裡，求助！！&lt;br /&gt;
&lt;br /&gt;
* 你沒有排序你修改過得ability檔案裡的ID行。如果ID有排序就會出現。&lt;br /&gt;
* 你可能沒有賦予新能力給你的新職業 &amp;quot;5000&amp;quot; 在prereqability行裡面&lt;br /&gt;
&lt;br /&gt;
當我要點選MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI 時，我的新職業沒有出現&lt;br /&gt;
&lt;br /&gt;
* 很顯然你沒有輸出你的default_shaman.utc模型&lt;br /&gt;
* 檢查background檔案，確保 template是使用default_shaman.utc&lt;br /&gt;
* 嘗試重新啟動你的電腦&lt;br /&gt;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8577</id>
		<title>Add A New Class Tutorial/zh</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8577"/>
				<updated>2009-12-06T09:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
&lt;br /&gt;
== 新職業開始套件 ==&lt;br /&gt;
&lt;br /&gt;
你需要一個套件內含.xls的電子表格，這樣才能製作新職業。點擊下面網址可以下載已製作完成得套件。&lt;br /&gt;
（譯者注 原作者給的檔案和教學不符  建議完全照教學作）&lt;br /&gt;
關於.xls的製作、轉換以及GDA等，此篇教學都有講到，只要你跟者我的腳步。&lt;br /&gt;
&lt;br /&gt;
你仍然需要在toolkit裡編輯腳本並且建立UTC模型。&lt;br /&gt;
&lt;br /&gt;
你仍然需要為你的模組建立GDA檔案。&lt;br /&gt;
&lt;br /&gt;
前往 我的文件/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
將GDA檔放於 我的文件/bioware/dragonage/addins/modulename/core/override 資料夾裡&lt;br /&gt;
&lt;br /&gt;
你可以在此網站下載 [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (你需要註冊)&lt;br /&gt;
&lt;br /&gt;
== 編輯2da檔 ==&lt;br /&gt;
你要編輯的2DA檔案。&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (例  ALshaman_default.xls) 複製自 ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== 開啟 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
切換頁面為M2DA_base（可以使用TAB鍵切換）&lt;br /&gt;
在最下面空白處添加&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
保存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟guitypes.xls ===&lt;br /&gt;
在底部添加：&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
保存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟CLA_base.xls ===&lt;br /&gt;
將以下資料一一填入ID為3的下一列（即ID為3的下一列統統往下移動一列，中間空出的一列放資訊）&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
儲存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟background.xls ===&lt;br /&gt;
在 backgrounds 頁面: 你必須要在Mage和Skill 1間插入一個區塊，如圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在background_defaults頁面裡有多個區域要追加，請看圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
ID是如何工作？ 1 = dwarf， 4 = shaman，5 = noble，設定是很簡單的。&lt;br /&gt;
&lt;br /&gt;
在第12,15,17,19列你要照圖追加我推薦你直接複製然後修改。&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
關於template string裡的deault_shaman.utc，是稍後要在toolset裡製作的基本模型。 &lt;br /&gt;
至於Ability的int是遊戲裡的職業預設能力，以我為例是直接用沒有被使用過的數字。&lt;br /&gt;
&lt;br /&gt;
在chargen_preload頁面，你必須加入一些區塊如圖：&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
注意 ID的數值必須必須和background_defaults頁面的數值一樣，否則會使遊戲崩潰。 &lt;br /&gt;
&lt;br /&gt;
儲存你的檔案&lt;br /&gt;
&lt;br /&gt;
=== 開啟 abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
在ABI_Base頁面 將以下內容添加到底部&lt;br /&gt;
&lt;br /&gt;
有多行是重要的東西必須要瞭解&lt;br /&gt;
abilitytype - 定義能力類型。 近戰，法術，技能等等---&amp;gt; 是直接連結到abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability – 定義有此能力的必須條件。要建立新職業就必須修改已存在的職業。&lt;br /&gt;
&lt;br /&gt;
guitypes - 職業的參考 ---&amp;gt; 連接到guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
在第119列的下一列 ==&amp;gt; 4034 HIDDEN_DOG下方插入新列並個別輸入以下資訊&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
將以下內容一一複製到頁面底部（總共要製作四個新列）&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
接下來是棘手的問題，請確保接下來都遵從教學，否則你就要和你的模組說再見。&lt;br /&gt;
&lt;br /&gt;
選擇第三列到最後一列（即第三列到最後一列反白）&lt;br /&gt;
&lt;br /&gt;
到 DATA（資料） --&amp;gt; SORT BY COLUMN S (guitypes)（行排序依照guitypes 以我為例是依欄位S作排序）。現在應該是依照guitype排序完畢。&lt;br /&gt;
&lt;br /&gt;
現在我們要將mage的法術自我們新職業的法術裡分開。&lt;br /&gt;
&lt;br /&gt;
在guitype 裡數值介在1～4的，看相對映的 prereqability數值，若為0就改成4023&lt;br /&gt;
從現在開始特殊能力只有在職業為mage時出現。 (這也就意謂者我們要為新職業製作獨立的技能。)&lt;br /&gt;
現在已經確保不同職業，技能不會重複。&lt;br /&gt;
&lt;br /&gt;
選擇第三列到最後一列（即第三列到最後一列反白）&lt;br /&gt;
&lt;br /&gt;
到 DATA（資料） --&amp;gt; SORT BY COLUMN S (ID)（行排序依照ID 以我為例是依欄位A作排序）。&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
現在到 passive_abilities頁面&lt;br /&gt;
&lt;br /&gt;
在最下方的新列一一填入&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
儲存你的檔案 :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 開啟 ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
改成如圖&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== 將2DA檔轉成GDA ==&lt;br /&gt;
&lt;br /&gt;
在C:下建立一個叫做2DA的資料夾，在裡面建立一個叫做override的資料夾。&lt;br /&gt;
&lt;br /&gt;
在你的C:\2da 把以下檔案放進入:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
去你的toolset資料夾將 ExcelProcessor.exe也放進去 我們是靠 ExcelProcessor作轉換&lt;br /&gt;
（以我為例是在遊戲目錄裡的\tools\ResourceBuild\Processors）&lt;br /&gt;
&lt;br /&gt;
然後我們製作簡單的批次檔來轉換。&lt;br /&gt;
開啟記事本，將以下代碼複製貼上去，存檔 檔名取為convert.bat 並執行convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
注意：若系統為Vista或是Windows 7，請以管理者執行convert.bat（即RUN AS ADMINISTRATOR）&lt;br /&gt;
&lt;br /&gt;
現在你為你的模組製作好GDA檔了。&lt;br /&gt;
&lt;br /&gt;
== 建立模組 ==&lt;br /&gt;
現在我們要在Toolset裡編輯資料&lt;br /&gt;
&lt;br /&gt;
建立新模組如圖&lt;br /&gt;
&lt;br /&gt;
'''請確認你的STRING數值&lt;br /&gt;
是介於8,000,000 ～ 8,300,000&lt;br /&gt;
如果不在此範圍，STRING就不會工作&lt;br /&gt;
BIOWARE聲明這是SQL的問題 '''&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
模組建立後，開啟模組選擇heirarchy並檢查single player是否有打勾。&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
模組建立完畢，現在要將GDA放在適當override區域。&lt;br /&gt;
&lt;br /&gt;
開啟我的文件/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
將GDA檔放在我的文件/bioware/dragonage/addins/modulename/core/override資料夾裡面&lt;br /&gt;
&lt;br /&gt;
== 編輯腳本== &lt;br /&gt;
你現在必須要編輯一些腳本。&lt;br /&gt;
&lt;br /&gt;
=== 編輯2da_constants_h檔案 ===&lt;br /&gt;
&lt;br /&gt;
在核心（Core）腳本裡找到2da_constants_h檔案&lt;br /&gt;
&lt;br /&gt;
對2DA_CONSTANTS_H按滑鼠右鍵，選擇CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，依照下方代碼尋找區域並修改成一樣：&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_WARRIOR = 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;
和&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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯 gen00pt_class_race_gend 檔案 ===&lt;br /&gt;
在 _Global ==&amp;gt; plot scripts 找到gen00pt_class_race_gend檔案。 &lt;br /&gt;
&lt;br /&gt;
對gen00pt_class_race_gend按滑鼠右鍵，點擊CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，找到區塊並依照下列代碼修改: &lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯 sys_chargen_h ===&lt;br /&gt;
找出sys_chargen_h檔案，位在_Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
對sys_chargen_h按滑鼠右鍵，選CHECK OUT&lt;br /&gt;
&lt;br /&gt;
打開，找到Starting skills區塊修改成下: &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;
然後到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;
    }&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;
&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;
到&amp;quot;// Undo Class and Race selection&amp;quot; 區域建第四個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;
到 &amp;quot;// enabling proper tactics presets&amp;quot; 添加ValidForClass4部份&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯sys_rewards_h ===&lt;br /&gt;
找出 sys_rewards_h檔案，在 _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
對sys_rewards_h按滑鼠右鍵選擇CHECK OUT&lt;br /&gt;
&lt;br /&gt;
開啟並在代碼500附近依下方代碼修改: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 編輯sys_chargen檔案 ===&lt;br /&gt;
找出sys_chargen檔案，在_Systems裡&lt;br /&gt;
&lt;br /&gt;
對sys_chargen按滑鼠右鍵選CHECK OUT&lt;br /&gt;
&lt;br /&gt;
開啟，改變這一行:&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;
&lt;br /&gt;
到special handling區塊並修改如下: &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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
到tactics區域依下方代碼添加: &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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 製作 UTC 模板(TEMPLATE)檔案 ==&lt;br /&gt;
返回Toolset請跟者下方教學：&lt;br /&gt;
&lt;br /&gt;
點擊 &amp;quot;creature&amp;quot;標籤 (紅頭圖標)（就在右方的Palette Window）&lt;br /&gt;
&lt;br /&gt;
展開_Core_Creatures&lt;br /&gt;
在展開_Do NOT TOUCH&lt;br /&gt;
對default_mage按右鍵選擇duplicate 如圖製作: &lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut dfs1.jpg]]&lt;br /&gt;
&lt;br /&gt;
現在要編輯數值並給予基本武器和裝甲如圖：&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;
編輯完畢就在頂端按滑鼠右鍵選SAVE然後點選CHECK IN&lt;br /&gt;
&lt;br /&gt;
然後在頂端點擊&amp;quot;EXPORT WITHOUT DEPENDENT RESOURCES&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 建立一些字串 ==&lt;br /&gt;
&lt;br /&gt;
開啟String editor然後按右鍵選擇insert&lt;br /&gt;
&lt;br /&gt;
你要設成如下&lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
完成後就關閉String editor&lt;br /&gt;
&lt;br /&gt;
== 全部放在一起 ==&lt;br /&gt;
&lt;br /&gt;
點擊上方功能列的Tool-&amp;gt;EXPORT &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;
&lt;br /&gt;
== 清除垃圾資料 ==&lt;br /&gt;
&lt;br /&gt;
不要忽略此部份&lt;br /&gt;
&lt;br /&gt;
到我的文件/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
將此資料夾內的東西複製到&lt;br /&gt;
&lt;br /&gt;
我的文件/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
應該會有以下檔案：&lt;br /&gt;
2da_constant_h.nss&lt;br /&gt;
gen00pt_class_race_gend.nss&lt;br /&gt;
sys_chargen_h.nss&lt;br /&gt;
sys_rewards_h.nss &lt;br /&gt;
sys_chargen.nss&lt;br /&gt;
sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
將我的文件/bioware/dragonage/packages/core/override/toolset裡的東西全部殺掉&lt;br /&gt;
&lt;br /&gt;
== 嘗試結果 ==&lt;br /&gt;
&lt;br /&gt;
開啟你的遊戲並選擇新遊戲&lt;br /&gt;
&lt;br /&gt;
*小心*如果出現任何錯誤訊息都將會損害遊戲本體&lt;br /&gt;
&lt;br /&gt;
點選 MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI&lt;br /&gt;
&lt;br /&gt;
你可以看到你的新人物&lt;br /&gt;
&lt;br /&gt;
如果有任何意外發生請從頭依教學檢查是否有錯誤&lt;br /&gt;
&lt;br /&gt;
請確保你沒有遺漏 &amp;quot;;&amp;quot; 或 &amp;quot;{ }&amp;quot;，如果缺少會摧毀遊戲。&lt;br /&gt;
&lt;br /&gt;
== 危險焦點 ==&lt;br /&gt;
&lt;br /&gt;
我的法術沒有出現在創造人物的視窗裡，求助！！&lt;br /&gt;
&lt;br /&gt;
* 你沒有排序你修改過得ability檔案裡的ID行。如果ID有排序就會出現。&lt;br /&gt;
* 你可能沒有賦予新能力給你的新職業 &amp;quot;5000&amp;quot; 在prereqability行裡面&lt;br /&gt;
&lt;br /&gt;
當我要點選MALE ==&amp;gt; HUMAN ==&amp;gt; SHAMAN ==&amp;gt; MAGI 時，我的新職業沒有出現&lt;br /&gt;
&lt;br /&gt;
* 很顯然你沒有輸出你的default_shaman.utc模型&lt;br /&gt;
* 檢查background檔案，確保 template是使用default_shaman.utc&lt;br /&gt;
* 嘗試重新啟動你的電腦&lt;br /&gt;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8576</id>
		<title>Add A New Class Tutorial/zh</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial/zh&amp;diff=8576"/>
				<updated>2009-12-06T09:30:26Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: Created page with 'zh:建立新職業  == New class starter kit ==  This kit has all the .xls spreadsheets you need to add a new class.  These have been pre-programmed to follow the tutorial I ...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8575</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8575"/>
				<updated>2009-12-06T09:30:01Z</updated>
		
		<summary type="html">&lt;p&gt;Knighthsuyucheng: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
This kit has all the .xls spreadsheets you need to add a new class.&lt;br /&gt;
&lt;br /&gt;
These have been pre-programmed to follow the tutorial I wrote so you can see how it is done.  It also contains the converter and the GDA as well.&lt;br /&gt;
&lt;br /&gt;
You still need to edit the scripts in the toolkit and add the UTC model.&lt;br /&gt;
&lt;br /&gt;
YOU STILL NEED TO ADD THESE GDA TO YOUR MODULE&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
You can download the starter kit [http://www.damods.com/forums/index.php?action=downloads;sa=view;down=131 here] (you will need to register)&lt;br /&gt;
&lt;br /&gt;
== Editing the 2das ==&lt;br /&gt;
You will need to edit the following 2DA's.&lt;br /&gt;
*[[2da_base.xls]]&lt;br /&gt;
*[[abi_base.xls]]&lt;br /&gt;
*[[ALclassname_default.xls]]  (ex  ALshaman_default.xls) Copy from ALWizard_default.xls&lt;br /&gt;
*[[background.xls]]&lt;br /&gt;
*[[cla_base.xls]]&lt;br /&gt;
*[[guitypes.xls]]&lt;br /&gt;
&lt;br /&gt;
=== open up 2da_base.xls ===&lt;br /&gt;
&lt;br /&gt;
Add the following to the end of M2DA_base TAB&lt;br /&gt;
&lt;br /&gt;
ID above 100000  ALShaman_default  ALShaman_default &lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up guitypes.xls ===&lt;br /&gt;
At bottom of list paste this:&lt;br /&gt;
&lt;br /&gt;
ID	Label		StringId	Ability	ProgressBar	CombatTraining	SpecialGraphic	TintColor	Orphanage	Flags	BlendTree&lt;br /&gt;
500	Class: Shaman	8000000		5000	0		0		1		0x9B0F00	0		0	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up CLA_base.xls ===&lt;br /&gt;
Paste this AFTER line 3: (Move all down 1)&lt;br /&gt;
&lt;br /&gt;
4	Shaman	8000000	8000001	****	8000002	8000003	classico_spirithealer	CLASS_Shaman	2	95	1	100	5	2	2	2	2	2	0	0	0	55	50	1	5	1	3	0.3	4035	****	1	Shaman	****&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== Open up background.xls ===&lt;br /&gt;
On backgrounds tab:  You need to insert a section between mage and skill 1, see screenshot&lt;br /&gt;
&lt;br /&gt;
[[Image:Background.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On background_defaults there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut bgdef.jpg]]&lt;br /&gt;
&lt;br /&gt;
How the ID's work, 1 = dwarf, 4 = shaman, 5 = noble, the rest of the pattern is easy.&lt;br /&gt;
&lt;br /&gt;
On lines 12,15,17,19 you need to add these in.  What I recommend is just coping these lines&lt;br /&gt;
&lt;br /&gt;
:10 ==&amp;gt; 12&lt;br /&gt;
:13 ==&amp;gt; 15&lt;br /&gt;
:16 ==&amp;gt; 17&lt;br /&gt;
:18 ==&amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
The template string is the deault_shaman.utc you will need to create in the toolset later on for these to have a base model&lt;br /&gt;
The Ability is the starting ability tied to this class, in my case it just references a different one then what you will have&lt;br /&gt;
&lt;br /&gt;
On chargen_preload there are several section you need to note here regarding the screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut chardef.jpg]]&lt;br /&gt;
&lt;br /&gt;
These ID's must match what is on the background_defaults otherwise the game WILL crash.&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file&lt;br /&gt;
&lt;br /&gt;
=== open up abi_base.xls ===&lt;br /&gt;
&lt;br /&gt;
in the ABI_Base tab add the following to the bottom of the list&lt;br /&gt;
&lt;br /&gt;
There are several columns that very are important&lt;br /&gt;
&lt;br /&gt;
abilitytype - define what type of ability. melee, spell, skill etc..---&amp;gt; links with abilitytype.xls&lt;br /&gt;
&lt;br /&gt;
prereqability - defines what is needed to have this ability.  To add a new class these need to be changed on existing classes.&lt;br /&gt;
&lt;br /&gt;
guitypes - referenced what class this links too ---&amp;gt; links with guitypes.xls&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AFTER LINE 119 ==&amp;gt; 4034 HIDDEN_DOG insert a new row and put in the following&lt;br /&gt;
&lt;br /&gt;
 5000	HIDDEN_SHAMAN	0	0	380405	330716	hidden			2	0	0	0	0	0	0	0	1	0	0	12	0	0	0	0	3		1.5			0		0	0	0	0	0	0	0	0	0	0		0	0	0	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the bottom paste these&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 300000	HEROIC_OFFENSE2	380003	379523	367458	379231	spl_ico_heroic_offense	2	1	0	0	0	20	0	5000	0	0	0	500	3	0	3	1	4	spell_singletarget.ncs	5	90215		244	247	0	0	2	0	0	0	0	0		0	90109	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300001	HEROIC_AURA2	380000	379520	367458	379214	spl_ico_heroic_aura	2	1	0	0	0	30	0	300000	0	4	15	500	3	0	3	1	4	spell_singletarget.ncs	5	90213		244	247	0	0	0	0	0	0	0	0		0	90110	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300002	HEROIC_DEFENSE2	380001	379521	367458	379256	spl_ico_heroic_defense	2	1	0	0	0	40	0	300001	0	4	20	500	3	0	3	1	4	spell_singletarget.ncs	10	90214		244	247	0	0	2	0	0	0	0	0		0	90111	128	1	7	0	2	33	0	0	0	0&lt;br /&gt;
&lt;br /&gt;
 300003	HASTE2		380005	379525	398957	379229	spl_ico_agility		2	0	0	0	0	0	60	300002	0	4	30	500	1	1	18	1	2	spell_modal.ncs	30		90216		244	247	0	0	2	0	0	0	0	0		0	90112	192	1	7	0	2	33	0	0	0	10&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOW HERE IS THE TRICKY PART, MAKE SURE YOU DO THIS RIGHT OR KISS YOUR MODULE GOODBYE&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN S (guitypes)  Now they should all be sorted by guitype&lt;br /&gt;
&lt;br /&gt;
Now we need to seperate the mage spells from our new shaman spells.&lt;br /&gt;
&lt;br /&gt;
For guitype spells 1-4, you need to look at the prereqability section for these spells, for those that have 0, replace with 4023&lt;br /&gt;
This will make these appear only on the mage from now on. (Which means we need to make seperate skills for our new class)&lt;br /&gt;
Ok this will now prevent duplicate of skills&lt;br /&gt;
&lt;br /&gt;
HIGHLIGHT LINE 3 ALL THE WAY DOWN TO 558 (BOTTOM OF THE WORKSHEET)&lt;br /&gt;
&lt;br /&gt;
NOW GOTO DATA --&amp;gt; SORT BY COLUMN A (ID)  Now we are back to normal&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
Now goto passive_abilities&lt;br /&gt;
&lt;br /&gt;
Paste the following at the bottom of the list&lt;br /&gt;
&lt;br /&gt;
 9000	HIDDEN_SHAMAN	1	2	4	2	6	1		str +2,mag +2,con +1&lt;br /&gt;
&lt;br /&gt;
Now SAVE your file :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== open up ALShaman_default.xls ===&lt;br /&gt;
&lt;br /&gt;
Should look like this&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut alshaman.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Converting the files from 2DA to GDA ==&lt;br /&gt;
&lt;br /&gt;
Create a directory called '''2DA''' on C:, inside that dir create one called override.&lt;br /&gt;
&lt;br /&gt;
In your C:\2da put the following files:&lt;br /&gt;
&lt;br /&gt;
* [[2da_base.xls]]&lt;br /&gt;
* [[abi_base.xls]]&lt;br /&gt;
* [[background.xls]]&lt;br /&gt;
* [[cla_base.xls]]&lt;br /&gt;
* [[guitypes.xls]]&lt;br /&gt;
* [[ALShaman_default.xls]]&lt;br /&gt;
&lt;br /&gt;
Also: ExcelProcessor.exe from the tool converter in your toolset section.&lt;br /&gt;
&lt;br /&gt;
Next you need to make a batch file to run to convert these.&lt;br /&gt;
Simply open notepad, copy and paste below and save as convert.bat&lt;br /&gt;
&lt;br /&gt;
:C:\2DA\ExcelProcessor.exe 2DA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe background.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe CLA_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ALShaman_Default.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe guitypes.xls -outdir=C:\2DA\override\ &lt;br /&gt;
:C:\2DA\ExcelProcessor.exe ABI_base.xls -outdir=C:\2DA\override\ &lt;br /&gt;
&lt;br /&gt;
NOTE: YOU MAY NEED TO &amp;quot;RUN AS ADMINISTRATOR&amp;quot; CONVERT.BAT IN VISTA / W7&lt;br /&gt;
&lt;br /&gt;
VOILA YOU NOW HAVE YOUR GDA FILES FOR THE MODULE&lt;br /&gt;
&lt;br /&gt;
== Creating a module ==&lt;br /&gt;
Now we begin editing inside the toolset&lt;br /&gt;
&lt;br /&gt;
Create a new module, similiar to the picture below&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;
[[Image:Class tut module1.jpg]]&lt;br /&gt;
&lt;br /&gt;
After making it go back to the module screen and select heirarchy and make sure single player is checked&lt;br /&gt;
&lt;br /&gt;
[[Image:Class tut hier.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now that your module is created we need to add the appropriate GDA to the override section.&lt;br /&gt;
&lt;br /&gt;
look in name/mydocuments/bioware/dragonage/addins/modulename&lt;br /&gt;
&lt;br /&gt;
Put these GDA files in: name/mydocuments/bioware/dragonage/addins/modulename/core/override directory&lt;br /&gt;
&lt;br /&gt;
== Editing the scripts== &lt;br /&gt;
You now need to edit some scripts.&lt;br /&gt;
&lt;br /&gt;
=== Edit the 2da_constants_h file ===&lt;br /&gt;
&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_WARRIOR = 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 = 5;&lt;br /&gt;
const int CLASS_SPIRITHEALER = 6;&lt;br /&gt;
const int CLASS_CHAMPION = 7;&lt;br /&gt;
const int CLASS_TEMPLAR = 8;&lt;br /&gt;
const int CLASS_BERSERKER = 9;&lt;br /&gt;
const int CLASS_REAVER = 10;&lt;br /&gt;
const int CLASS_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int CLASS_ASSASSIN = 12;&lt;br /&gt;
const int CLASS_BLOOD_MAGE = 13;&lt;br /&gt;
const int CLASS_BARD = 14;&lt;br /&gt;
const int CLASS_RANGER = 15;&lt;br /&gt;
const int CLASS_DUELIST = 16;&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;
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 gen00pt_class_race_gend file ===&lt;br /&gt;
under _Global ==&amp;gt; plot scripts find the gen00pt_class_race_gend file. &lt;br /&gt;
&lt;br /&gt;
right click on gen00pt_class_race_gend, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down and you'll see the following and edit it like below:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
            case GEN_CLASS_MAGE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WIZARD );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_WARRIOR:&lt;br /&gt;
            {&lt;br /&gt;
                // DEBUG START&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_WARRIOR );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_ROGUE:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_ROGUE );&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            case GEN_CLASS_SHAMAN:&lt;br /&gt;
            {&lt;br /&gt;
                nResult =   ( GetCreatureCoreClass(oListener) == CLASS_SHAMAN );&lt;br /&gt;
                break;&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;
&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;
    }&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;
&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;
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;
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_rewards_h file ===&lt;br /&gt;
Find the sys_rewards_h file under _Systems ==&amp;gt; _Includes&lt;br /&gt;
&lt;br /&gt;
right click on sys_rewards_h, select CHECK OUT&lt;br /&gt;
&lt;br /&gt;
Go down to the following section (~line 500) and edit it like below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
const int SPEC_WIZARD_SHAPESHIFTER = 5;&lt;br /&gt;
const int SPEC_WIZARD_SPIRITHEALER = 6;&lt;br /&gt;
const int SPEC_WIZARD_ARCANE_WARRIOR = 11;&lt;br /&gt;
const int SPEC_WIZARD_BLOOD_MAGE     = 13;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_WARRIOR_CHAMPION = 7;&lt;br /&gt;
const int SPEC_WARRIOR_TEMPLAR = 8;&lt;br /&gt;
const int SPEC_WARRIOR_BERSERKER = 9;&lt;br /&gt;
const int SPEC_WARRIOR_REAVER = 10;&lt;br /&gt;
&lt;br /&gt;
const int SPEC_ROGUE_ASSASSIN = 12;&lt;br /&gt;
const int SPEC_ROGUE_BARD = 14;&lt;br /&gt;
const int SPEC_ROGUE_RANGER   = 15;&lt;br /&gt;
const int SPEC_ROGUE_DUELIST  = 16;&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;
=== 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 CHECK OUT&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;
&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;
&lt;br /&gt;
                    int nRandClass = abs((GetLowResTimer()%3)+1);&lt;br /&gt;
&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;
&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;
                }&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;
== 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_mage ==&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 at the top and click SAVE ==&amp;gt; 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;
== Creating some strings ==&lt;br /&gt;
&lt;br /&gt;
Start the String editor and right click and insert.&lt;br /&gt;
&lt;br /&gt;
You will be setting up like this &lt;br /&gt;
&lt;br /&gt;
:Table = module talk base&lt;br /&gt;
:Owner = module name&lt;br /&gt;
:TYPE = GUI&lt;br /&gt;
&lt;br /&gt;
:8000000 - Shaman&lt;br /&gt;
:8000001 - Shamans&lt;br /&gt;
:8000002 - Shamans commune with spirits to get thier other worldly powers.&lt;br /&gt;
:8000004 - Shaman&lt;br /&gt;
:8000005 - Shaman Male Name&lt;br /&gt;
:8000006 - Shaman Female Name&lt;br /&gt;
&lt;br /&gt;
When all is said close string editor&lt;br /&gt;
&lt;br /&gt;
== Putting it all together ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Cleaning up ==&lt;br /&gt;
&lt;br /&gt;
DON'T SKIP THIS PART&lt;br /&gt;
&lt;br /&gt;
goto name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
COPY THE FOLLOWING FILES OVER TO YOUR &lt;br /&gt;
&lt;br /&gt;
name/mydocuments/bioware/dragonage/addins/modulename/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
:2da_constant_h.nss&lt;br /&gt;
:gen00pt_class_race_gend.nss&lt;br /&gt;
:sys_chargen_h.nss&lt;br /&gt;
:sys_rewards_h.nss &lt;br /&gt;
:sys_chargen.nss&lt;br /&gt;
:sys_chargen.ncs&lt;br /&gt;
&lt;br /&gt;
Delete the rest in the name/mydocuments/bioware/dragonage/packages/core/override/toolset&lt;br /&gt;
&lt;br /&gt;
== Trying it out ==&lt;br /&gt;
&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;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&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;
&lt;br /&gt;
[[Category:Character generation]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Knighthsuyucheng</name></author>	</entry>

	</feed>