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

	<entry>
		<id>https://datoolset.net/mw/index.php?title=GFF_editor&amp;diff=12798</id>
		<title>GFF editor</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=GFF_editor&amp;diff=12798"/>
				<updated>2010-03-28T06:02:50Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:GFF editor.png|thumb]]&lt;br /&gt;
&lt;br /&gt;
The GFF editor is a tool for opening and editing [[GFF]] files, such as savegames. See [[GFF]] for information about the GFF file format.&lt;br /&gt;
&lt;br /&gt;
== Out of memory error ==&lt;br /&gt;
&lt;br /&gt;
The GFF editor that comes with the toolset is not very efficiently programmed, unfortunately. When opening GFF files as small as 7 megabytes or so (which savegames can easily reach) the editor's memory usage can skyrocket above 3 gigabytes and potentially cause the editor to crash.&lt;br /&gt;
&lt;br /&gt;
While the memory usage itself can't be worked around presently (it's an inherent flaw in the editor), it is possible to make the editor less prone to crashing when it reaches such large memory sizes using a trick developed by Krayzie_3334.[http://social.bioware.com/11689/blog/707/]&lt;br /&gt;
&lt;br /&gt;
# Download [http://www.ntcore.com/ CFF Explorer],&lt;br /&gt;
# Open Dragonagetoolset.exe with CFF (make a backup first)&lt;br /&gt;
# In the Left-Hand Pane, Left Click ( Highlight ) &amp;quot;File Header&amp;quot; &lt;br /&gt;
# In the Right-Hand Pane Click on the &amp;quot;Click here&amp;quot; box.&lt;br /&gt;
# In the &amp;quot;Characteristics Window&amp;quot; Check the &amp;quot;App can handle &amp;gt;2GB address space&amp;quot; box.&lt;br /&gt;
# Click OK&lt;br /&gt;
# File -&amp;gt; Save &amp;amp; Exit.&lt;br /&gt;
&lt;br /&gt;
Please note that the above workaround requires that you have at least 4 gigabytes of RAM.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12796</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12796"/>
				<updated>2010-03-28T04:04:19Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: moved '''Decrypting DLC For Import/Editing With Toolset''' to Decrypting DLC For Import/Editing With Toolset&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;br /&gt;
&lt;br /&gt;
It would be highly desirable if all DLC ( both current and planned ) where decrypted and designer resources where made available for DLC items, in order to facilitate modding/player-created content.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12795</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12795"/>
				<updated>2010-03-28T04:03:47Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;br /&gt;
&lt;br /&gt;
It would be highly desirable if all DLC ( both current and planned ) where decrypted and designer resources where made available for DLC items, in order to facilitate modding/player-created content.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12793</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12793"/>
				<updated>2010-03-28T04:01:58Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: moved == Decrypting DLC For Import/Editing With Toolset== to '''Decrypting DLC For Import/Editing With Toolset'''&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;br /&gt;
&lt;br /&gt;
It would be highly desirable if all DLC ( both current and planned ) where decrypted and designer resources where made available for DLC items, in order to facilitate player-created customization.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12792</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12792"/>
				<updated>2010-03-28T04:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;br /&gt;
&lt;br /&gt;
It would be highly desirable if all DLC ( both current and planned ) where decrypted and designer resources where made available for DLC items, in order to facilitate player-created customization.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12790</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12790"/>
				<updated>2010-03-28T03:59:35Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: moved Category talk:Feature requests to == Decrypting DLC For Import/Editing With Toolset==&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Category_talk:Feature_requests&amp;diff=12791</id>
		<title>Category talk:Feature requests</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Category_talk:Feature_requests&amp;diff=12791"/>
				<updated>2010-03-28T03:59:35Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: moved Category talk:Feature requests to == Decrypting DLC For Import/Editing With Toolset==&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[== Decrypting DLC For Import/Editing With Toolset==]]&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12789</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12789"/>
				<updated>2010-03-28T03:57:35Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* Decrypting DLC For Import/Editing With Toolset */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12788</id>
		<title>Feature request: Unencrypted DLC resources</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Feature_request:_Unencrypted_DLC_resources&amp;diff=12788"/>
				<updated>2010-03-28T03:55:50Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: Created page with 'Category:Feature requests  == Decrypting DLC For Import/Editing With Toolset==  It would be highly desirable if all DLC ( both current and planned ) where decrypted and desig...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Feature requests]]&lt;br /&gt;
&lt;br /&gt;
== Decrypting DLC For Import/Editing With Toolset==&lt;br /&gt;
&lt;br /&gt;
It would be highly desirable if all DLC ( both current and planned ) where decrypted and designer resources where made available for DLC items, in order to facilitate player-created customization.&lt;/div&gt;</summary>
		<author><name>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8849</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8849"/>
				<updated>2009-12-15T09:31:36Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* New class starter kit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  '''''You will need some version of Microsoft Excel to edit the relevant .xls files in this tutorial!'''''&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 copying 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 default_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;
=== 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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8848</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8848"/>
				<updated>2009-12-15T09:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* open up ALShaman_default.xls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  ''You will need some version of Microsoft Excel to edit the relevant .xls files in this tutorial!''&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 copying 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 default_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;
=== 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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8847</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8847"/>
				<updated>2009-12-15T09:29:34Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* open up abi_base.xls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  ''You will need some version of Microsoft Excel to edit the relevant .xls files in this tutorial!''&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 copying 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 default_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;
=== 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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8846</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8846"/>
				<updated>2009-12-15T09:19:29Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* New class starter kit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  ''You will need some version of Microsoft Excel to edit the relevant .xls files in this tutorial!''&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 copying 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 default_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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8845</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8845"/>
				<updated>2009-12-15T09:16:40Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* Open up background.xls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  You will ''need'' some version of Microsoft Excel to edit the relevant .xls files in this tutorial!&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 copying 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 default_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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8844</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8844"/>
				<updated>2009-12-15T09:16:13Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* Open up background.xls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  You will ''need'' some version of Microsoft Excel to edit the relevant .xls files in this tutorial!&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 default_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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8843</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8843"/>
				<updated>2009-12-15T09:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* open up 2da_base.xls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  You will ''need'' some version of Microsoft Excel to edit the relevant .xls files in this tutorial!&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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8842</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8842"/>
				<updated>2009-12-15T09:12:33Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* New class starter kit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT:'''  You will ''need'' some version of Microsoft Excel to edit the relevant .xls files in this tutorial!&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>Darkmage187</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8841</id>
		<title>Add A New Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Add_A_New_Class_Tutorial&amp;diff=8841"/>
				<updated>2009-12-15T09:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;Darkmage187: /* New class starter kit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[zh:建立新職業]]&lt;br /&gt;
== New class starter kit ==&lt;br /&gt;
&lt;br /&gt;
IMPORTANT! You will NEED some version of Microsoft Excel to edit the relevant .xls files in this tutorial!&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>Darkmage187</name></author>	</entry>

	</feed>