<?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=JJM152</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=JJM152"/>
		<link rel="alternate" type="text/html" href="https://datoolset.net/wiki/Special:Contributions/JJM152"/>
		<updated>2026-04-12T20:04:51Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.6</generator>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:Tutorials&amp;diff=9112</id>
		<title>Talk:Tutorials</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:Tutorials&amp;diff=9112"/>
				<updated>2009-12-30T02:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Restructure ==&lt;br /&gt;
I have moved some things around and created some extra categories. First off I reverted the placeable tutorial to its original place in the list. It seems to me that creating an area should take precedence, and you don't need custom placeables in order to do that. I moved the level tutorial down into the more advanced section as that first list was meant to be very introductory. I also split up the other category into different sections. [[User:Stuntpope|Stuntpope]] 01:37, 28 November 2009 (UTC)&lt;br /&gt;
:Actually when I moved the level tutorial I assumed it was the old one. I notice the new one is much more introductory, so maybe it could go at the beginning, but I'm still not sure if it isn't too steep a learning curve to start with that. [[User:Stuntpope|Stuntpope]] 03:21, 28 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I think it could benfit the Layout of the Page if the Video tutorials could be somehow made seperated from the other external tutorials, but i am not sure if its necessary. opinions? --[[User:Alexspeed|Alexspeed]] 09:08, 28 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
People need to be careful about editing links.  I had to undo [[User:Darder006|Darder006]]'s edit because he renamed a tutorial link that displeased him and didn't bother to rename the page it pointed to (or copy the content into the new link and orphan the original page). --[[User:JJM152|JJM152]] 02:12, 30 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Tutorials&amp;diff=9111</id>
		<title>Tutorials</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Tutorials&amp;diff=9111"/>
				<updated>2009-12-30T02:08:44Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: Undo revision 9084 by Darder006 (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introductory tutorials ==&lt;br /&gt;
&lt;br /&gt;
In the course of these tutorials we'll go through all the steps needed to create a basic adventure.&lt;br /&gt;
&lt;br /&gt;
{{sidebox|&lt;br /&gt;
*Boxes like this contain a checklist of important steps.&lt;br /&gt;
*They're intended as a reminder and as a navigational aid.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
*[[Introductory tutorial]] - An overview of the toolset as a whole&lt;br /&gt;
*[[Module tutorial]] - how to create a module to work in.&lt;br /&gt;
&lt;br /&gt;
This set of tutorials forms a series, each building on or filling in omissions by the last:&lt;br /&gt;
*[[Area tutorial]]&lt;br /&gt;
*[[Placeable tutorial]]&lt;br /&gt;
*[[Item tutorial]]&lt;br /&gt;
*[[Creature tutorial]]&lt;br /&gt;
*[[Conversation tutorial]]&lt;br /&gt;
&lt;br /&gt;
Once you've become familiar with the basics introduced on those tutorials you might have a better grounding for:&lt;br /&gt;
*[[Cutscene tutorial]]&lt;br /&gt;
*[[Map tutorial]] (which also introduces you to [[2DA]] editing)&lt;br /&gt;
*[[Level Editor Tutorial]]&lt;br /&gt;
*[[Scripting tutorial]]&lt;br /&gt;
&lt;br /&gt;
== Demo module ==&lt;br /&gt;
&lt;br /&gt;
The toolset currently ships with a simple demo module pre-loaded into its database.&lt;br /&gt;
&lt;br /&gt;
*[[Demo module]] - how to export and run the demo module.&lt;br /&gt;
&lt;br /&gt;
== Custom content tutorials == &lt;br /&gt;
*[[Tutorial: idiots guide to adding custom items to singleplayer]]&lt;br /&gt;
*[[Tutorial: Adding a Custom Model to Toolset]]&lt;br /&gt;
*[[Tutorial: Creating a custom placeable from a model]]&lt;br /&gt;
*[[Tutorial: Reskinning an Item]]&lt;br /&gt;
*[[Adding a New Spell Tutorial]]&lt;br /&gt;
&lt;br /&gt;
== Character generation tutorials ==&lt;br /&gt;
*[[Backgrounds tutorial]]&lt;br /&gt;
*[[Add A New Class Tutorial]]&lt;br /&gt;
&lt;br /&gt;
== Other Tutorials ==&lt;br /&gt;
*[[ToolSet: Area Layouts]]&lt;br /&gt;
*[[Adding a Location to the Single Player Campaign Tutorial]]&lt;br /&gt;
&lt;br /&gt;
== External Tutorials ==&lt;br /&gt;
*[http://lerlek.se/Video+Tutorials Lerlek Dragon Age Origins Toolset Video Tutorials Collection] has collected many in-depth video tutorials.&lt;br /&gt;
*[http://dragonagemodding.wordpress.com Beyond Ferelden] has many in-depth tutorials by jwvanderbeck.&lt;br /&gt;
*[http://www.youtube.com/watch?v=TwQNRBFLhrE Playable Area and Conversation] video tutorial by [http://social.bioware.com/64020/ st4rdog].&lt;br /&gt;
*[http://www.youtube.com/watch?v=CaHldJcUTz8 Simple Conversation Cameras] video tutorial by [http://social.bioware.com/64020/ st4rdog].&lt;br /&gt;
*[http://www.youtube.com/watch?v=QOQJ2heQto4 Cutscene and Trigger] video tutorial by [http://social.bioware.com/64020/ st4rdog].&lt;br /&gt;
*[http://www.youtube.com/watch?v=szWKgj2ZuXo Custom Level and Room Building] video tutorial by [http://social.bioware.com/64020/ st4rdog].&lt;br /&gt;
*[http://www.youtube.com/watch?v=DKJ7F14n8o8 Downloading and Installing the Toolset] video tutorial by [http://social.bioware.com/74287/ DragonAge22].&lt;br /&gt;
*[http://www.youtube.com/watch?v=iMPBsulv9xI Creating a Room] video tutorial by [http://social.bioware.com/74287/ DragonAge22].&lt;br /&gt;
*[http://www.youtube.com/watch?v=g3kx2CaarHo How to Make an Interior Level with Lighting] video tutorial by [http://social.bioware.com/group/60/ Darkworld Development Team].&lt;br /&gt;
*[http://www.youtube.com/watch?v=O6TeZeE1Lc8 Making a Room] video tutorial by BigDrip681.&lt;br /&gt;
*[http://social.bioware.com/5339/blog/576/ Custom Player Items In Single Player] by [http://social.bioware.com/5339/ weriK].&lt;br /&gt;
*[http://social.bioware.com/5339/blog/651/ The Secret Behind Item Statistics] by [http://social.bioware.com/5339/ weriK].&lt;br /&gt;
*[http://social.bioware.com/project/923/ Guide for installing/uninstalling/updating Mods] Beginner Guide to get started with using Mods by [http://social.bioware.com/237411/ Alexspeed].&lt;br /&gt;
*[http://www.jezelf.co.uk/tutorials.htm Photoshop Map making tutorials] Credits to Jason Elford, brought to DAT wiki by [http://social.bioware.com/48156/ Arixsus]&lt;br /&gt;
*[http://social.bioware.com/project/527/ Video Tutorials by SilentCid] Multiple in-depth video tutorials of the DA Toolset&lt;br /&gt;
*[http://www.youtube.com/view_play_list?p=EF29DD1AACEBA92A Qkrch's Video Tutorials] Toolset tutorial complete series for the experienced builder (Spanish &amp;amp; English)&lt;br /&gt;
[[Category:Tutorials| ]]&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:How-tos&amp;diff=8957</id>
		<title>Talk:How-tos</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:How-tos&amp;diff=8957"/>
				<updated>2009-12-23T12:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: /* Scripting Methods... */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the SetCommandable function cite under the &amp;quot;possum&amp;quot; head does not seem to exist. If it does exist, we should provide header for it. -- georage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-to's that might be nice to add ==&lt;br /&gt;
&lt;br /&gt;
Add a custom area to the main campaign world map (like how DLC locations are added)&lt;br /&gt;
&lt;br /&gt;
Equip the player with a custom item in the main campaign (see [http://social.bioware.com/5339/blog/576/ http://social.bioware.com/5339/blog/576/] )&lt;br /&gt;
&lt;br /&gt;
[[User:Avantoreon|Avantoreon]] 18:23, 10 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deleting modules from toolset/database ==&lt;br /&gt;
&lt;br /&gt;
Okay, maybe it's just me and however my SQL Server Management Studio Express is set up (default settings), but I found ripping module info out of it nowhere near as easy as the how-to made it sound.  I had one module (Demo_1) with two areas; an area transition door/waypoint combo in both areas, a start waypoint and a firepit/sound object in one of the areas.&lt;br /&gt;
&lt;br /&gt;
Followed the instructions to open the Modules table (called dbo.t_Module for me), found the row with Demo_1 on, selected it and pressed delete...wham!  Error message effectively saying 'can't delete this, another table refers to it'.&lt;br /&gt;
&lt;br /&gt;
Ookay...so off I go to find that table (dbo.t_ModuleResRef).  Sure enough, there's a few rows at the bottom with Demo_1's ID number in the ModuleID column.  Fine; select the bottom-most row, pressed delete...wham - again!  This row &amp;lt;i&amp;gt;also&amp;lt;/i&amp;gt; has another table referring to it.&lt;br /&gt;
&lt;br /&gt;
Off I go again, this time to table dbo.t_ModuleResRefVersion  Once more there's a handful of rows at the bottom with Demo_1's ID number in the ModuleID and matching ResRefIDs for the rows in the table before that I'd just tried to delete.  By this point I'm actually considering praying before selecting a row and hitting delete...  Maybe I should have.  Yep, you guessed it - off to find another table.&lt;br /&gt;
&lt;br /&gt;
So this time the table is dbo.t_Placeable, which gives me some hope that maybe, just maybe, this is the end of the reference chain (I prayed, just to be on the safe side!).  Not as easy to find what I was looking for, the rows here I had to cross-reference with the ModuleResRefVersion IDs from the previous table - no simple module IDs to help here.  Find a row that matches, select, (pray), delete...  Success!&lt;br /&gt;
&lt;br /&gt;
Up the table I go, carefully checking ModuleResRefVersion IDs and deleting the rows associated with the module I'm exterminating.  Once they're all gone, it's back to the ModuleResRefVersion table itself.  Select the row that wouldn't let me delete it before, aaand... another 'can't delete this, another table refers to it' error...&lt;br /&gt;
&lt;br /&gt;
So, in the epically long dbo.t_StringVersion table, seek and destroy all the relevant rows with ModuleResRefVersion IDs that I no longer want...only to find, yep, need to weed them out of dbo.t_StringText first.  dbo.t_StringText weeded successfully, I go back to dbo.t_StringVersion and breathe a sigh of relief when that now lets the rows be removed.  Take 2 for the ModuleResRefVersion table.&lt;br /&gt;
&lt;br /&gt;
And this time that works as well...to a point.  That point being (if you have resource names you can identify easily) where I'd managed to delete all the placeable information and tried to delete the area information.  Unsurprisingly (by this point), this sent me off to dbo.t_Area which sent me to dbo.t_AreaInstanceAssociations - I only had one entry in this table, possibly because I'd only created the one module at this point.  Back to dbo.t_Area, only to find that I needed to edit dbo.t_AreaWaypoint (3 rows corresponding to each of my 3 waypoints), and then dbo.t_AreaObject which sent me to dbo.t_AreaObjectVariable (4 rows; two for each area transition door).  Finally back to dbo.t_Area again aaand, off to dbo.t_AreaSound (the firepit's sound object) - another table with just the one row.&lt;br /&gt;
&lt;br /&gt;
Fiiinally, dbo.t_Area is free of ModuleResRefVersion IDs for my Demo(n) module!  Back to the ModuleResRefVersion table and delete the last references in there.  Back to the ModuleResRef table and delete all the appropriate module references in there.  And finally, finally, back to the table that started it all, the Module table, and delete the module reference in there.&lt;br /&gt;
&lt;br /&gt;
All that, just to delete a basic module consisting of 2 Areas, 2 (transition) Doors, 3 Waypoints, 1 Firepit and 1 Sound Object.  Why oh why could there not be a simple 'delete' option for modules within the toolset itself? [[User:ZGold|ZGold]] 10:53, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Just to add; I'd already deleted the resources (placeables, areas etc.) from the module in the toolset before I went rooting around in the SQL. [[User:ZGold|ZGold]] 10:55, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Hmm oddish.  Worked fine for me and I didn't even bother to delete anything.  I'll poke around some more.  Might be a moot point as I am working on a Stored Procedure to remove all the references. [[User:Languard|Languard]] 14:33, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: like I said, it could be something in the default setup of the SQL manager *shrugs* - a couple of additional notes; I found the string editor in the toolset was still refering to a talk table for my deleted module, I had to go back into the SQL and delete the appropriate reference from the dbo.t_String and dbo.t_StringTable tables; also, after the first round of deleting things from the SQL tables when I tried to load the editor it threw up a series of errors - whether that had anything to do with the module I deleted having been the last open (and thus 'open by default') module, or not, I'm not sure, but after agreeing that the toolset could open the default module (single player) and trying to run the editor again, it ran fine.  Thought I'd mention that just in case anyone has the same thing happen and panics :P [[User:ZGold|ZGold]] 17:19, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:: You guys are scaring me.  There has to be a better way, doesn't there? --[[User:Adaram|Adaram]] 17:37, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I think (hope!) Languard is working on said better way, but I must admit, I'm very surprised that bioware didn't add a utility for automatically doing this sort of thing.  Another thing to watch out for; as I'd exported my demo module there was a 'toolset export' folder (or some similar name) in my override folder that broke the automatic addition of NPCs (Morrigan/Alistair/Dog etc) to my party (in the OC) until I deleted said folder. [[User:ZGold|ZGold]] 10:52, 23 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Scripting Methods... ==&lt;br /&gt;
Modified the first script example. It was using IsPlayer() instead of IsHero() method call.&lt;br /&gt;
--[[User:JJM152|JJM152]] 12:17, 23 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:How-tos&amp;diff=8956</id>
		<title>Talk:How-tos</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:How-tos&amp;diff=8956"/>
				<updated>2009-12-23T12:16:04Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: /* Scripting Methods... */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;the SetCommandable function cite under the &amp;quot;possum&amp;quot; head does not seem to exist. If it does exist, we should provide header for it. -- georage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-to's that might be nice to add ==&lt;br /&gt;
&lt;br /&gt;
Add a custom area to the main campaign world map (like how DLC locations are added)&lt;br /&gt;
&lt;br /&gt;
Equip the player with a custom item in the main campaign (see [http://social.bioware.com/5339/blog/576/ http://social.bioware.com/5339/blog/576/] )&lt;br /&gt;
&lt;br /&gt;
[[User:Avantoreon|Avantoreon]] 18:23, 10 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Deleting modules from toolset/database ==&lt;br /&gt;
&lt;br /&gt;
Okay, maybe it's just me and however my SQL Server Management Studio Express is set up (default settings), but I found ripping module info out of it nowhere near as easy as the how-to made it sound.  I had one module (Demo_1) with two areas; an area transition door/waypoint combo in both areas, a start waypoint and a firepit/sound object in one of the areas.&lt;br /&gt;
&lt;br /&gt;
Followed the instructions to open the Modules table (called dbo.t_Module for me), found the row with Demo_1 on, selected it and pressed delete...wham!  Error message effectively saying 'can't delete this, another table refers to it'.&lt;br /&gt;
&lt;br /&gt;
Ookay...so off I go to find that table (dbo.t_ModuleResRef).  Sure enough, there's a few rows at the bottom with Demo_1's ID number in the ModuleID column.  Fine; select the bottom-most row, pressed delete...wham - again!  This row &amp;lt;i&amp;gt;also&amp;lt;/i&amp;gt; has another table referring to it.&lt;br /&gt;
&lt;br /&gt;
Off I go again, this time to table dbo.t_ModuleResRefVersion  Once more there's a handful of rows at the bottom with Demo_1's ID number in the ModuleID and matching ResRefIDs for the rows in the table before that I'd just tried to delete.  By this point I'm actually considering praying before selecting a row and hitting delete...  Maybe I should have.  Yep, you guessed it - off to find another table.&lt;br /&gt;
&lt;br /&gt;
So this time the table is dbo.t_Placeable, which gives me some hope that maybe, just maybe, this is the end of the reference chain (I prayed, just to be on the safe side!).  Not as easy to find what I was looking for, the rows here I had to cross-reference with the ModuleResRefVersion IDs from the previous table - no simple module IDs to help here.  Find a row that matches, select, (pray), delete...  Success!&lt;br /&gt;
&lt;br /&gt;
Up the table I go, carefully checking ModuleResRefVersion IDs and deleting the rows associated with the module I'm exterminating.  Once they're all gone, it's back to the ModuleResRefVersion table itself.  Select the row that wouldn't let me delete it before, aaand... another 'can't delete this, another table refers to it' error...&lt;br /&gt;
&lt;br /&gt;
So, in the epically long dbo.t_StringVersion table, seek and destroy all the relevant rows with ModuleResRefVersion IDs that I no longer want...only to find, yep, need to weed them out of dbo.t_StringText first.  dbo.t_StringText weeded successfully, I go back to dbo.t_StringVersion and breathe a sigh of relief when that now lets the rows be removed.  Take 2 for the ModuleResRefVersion table.&lt;br /&gt;
&lt;br /&gt;
And this time that works as well...to a point.  That point being (if you have resource names you can identify easily) where I'd managed to delete all the placeable information and tried to delete the area information.  Unsurprisingly (by this point), this sent me off to dbo.t_Area which sent me to dbo.t_AreaInstanceAssociations - I only had one entry in this table, possibly because I'd only created the one module at this point.  Back to dbo.t_Area, only to find that I needed to edit dbo.t_AreaWaypoint (3 rows corresponding to each of my 3 waypoints), and then dbo.t_AreaObject which sent me to dbo.t_AreaObjectVariable (4 rows; two for each area transition door).  Finally back to dbo.t_Area again aaand, off to dbo.t_AreaSound (the firepit's sound object) - another table with just the one row.&lt;br /&gt;
&lt;br /&gt;
Fiiinally, dbo.t_Area is free of ModuleResRefVersion IDs for my Demo(n) module!  Back to the ModuleResRefVersion table and delete the last references in there.  Back to the ModuleResRef table and delete all the appropriate module references in there.  And finally, finally, back to the table that started it all, the Module table, and delete the module reference in there.&lt;br /&gt;
&lt;br /&gt;
All that, just to delete a basic module consisting of 2 Areas, 2 (transition) Doors, 3 Waypoints, 1 Firepit and 1 Sound Object.  Why oh why could there not be a simple 'delete' option for modules within the toolset itself? [[User:ZGold|ZGold]] 10:53, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Just to add; I'd already deleted the resources (placeables, areas etc.) from the module in the toolset before I went rooting around in the SQL. [[User:ZGold|ZGold]] 10:55, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Hmm oddish.  Worked fine for me and I didn't even bother to delete anything.  I'll poke around some more.  Might be a moot point as I am working on a Stored Procedure to remove all the references. [[User:Languard|Languard]] 14:33, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: like I said, it could be something in the default setup of the SQL manager *shrugs* - a couple of additional notes; I found the string editor in the toolset was still refering to a talk table for my deleted module, I had to go back into the SQL and delete the appropriate reference from the dbo.t_String and dbo.t_StringTable tables; also, after the first round of deleting things from the SQL tables when I tried to load the editor it threw up a series of errors - whether that had anything to do with the module I deleted having been the last open (and thus 'open by default') module, or not, I'm not sure, but after agreeing that the toolset could open the default module (single player) and trying to run the editor again, it ran fine.  Thought I'd mention that just in case anyone has the same thing happen and panics :P [[User:ZGold|ZGold]] 17:19, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:: You guys are scaring me.  There has to be a better way, doesn't there? --[[User:Adaram|Adaram]] 17:37, 20 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: I think (hope!) Languard is working on said better way, but I must admit, I'm very surprised that bioware didn't add a utility for automatically doing this sort of thing.  Another thing to watch out for; as I'd exported my demo module there was a 'toolset export' folder (or some similar name) in my override folder that broke the automatic addition of NPCs (Morrigan/Alistair/Dog etc) to my party (in the OC) until I deleted said folder. [[User:ZGold|ZGold]] 10:52, 23 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Scripting Methods... ==&lt;br /&gt;
&lt;br /&gt;
Someone might want to verify that the code samples on this page actually work. I fixed one already that called a non-existent function :)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=How-tos&amp;diff=8955</id>
		<title>How-tos</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=How-tos&amp;diff=8955"/>
				<updated>2009-12-23T12:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: /* Run a cutscene from a trigger */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists how to accomplish tasks that are relatively simple and commonly needed, but that touch on multiple areas of the toolset or are difficult to figure out intuitively how to do.&lt;br /&gt;
&lt;br /&gt;
Just collecting ideas at the moment, add headers if you think a how-to is needed on a particular subject.&lt;br /&gt;
&lt;br /&gt;
*[[3D control]]&lt;br /&gt;
&lt;br /&gt;
== Run a cutscene from a trigger ==&lt;br /&gt;
&lt;br /&gt;
!!compile fails in test database due to bad core libraries, so this hasn't been tested!!&lt;br /&gt;
&lt;br /&gt;
Create a script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
#include &amp;quot;global_objects_h&amp;quot;&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void main ()&lt;br /&gt;
{&lt;br /&gt;
    event ev = GetCurrentEvent();&lt;br /&gt;
    int nEventType = GetEventType(ev);&lt;br /&gt;
    int nEventHandled = FALSE;&lt;br /&gt;
    switch (nEventType)&lt;br /&gt;
    {&lt;br /&gt;
    case EVENT_TYPE_ENTER:&lt;br /&gt;
         {&lt;br /&gt;
         object oCreature = GetEventCreator(ev);&lt;br /&gt;
         if(IsHero(oCreature)) { &lt;br /&gt;
              resource rCutscene = R&amp;quot;my_cutscene.cut&amp;quot;;&lt;br /&gt;
              CS_LoadCutscene(rCutscene);&lt;br /&gt;
              DestroyObject(OBJECT_SELF, 0);&lt;br /&gt;
         }&lt;br /&gt;
         break;&lt;br /&gt;
    }&lt;br /&gt;
    if (!nEventHandled) //If this event wasn't handled by this script, let the core script try&lt;br /&gt;
    {&lt;br /&gt;
        HandleEvent(ev, RESOURCE_SCRIPT_TRIGGER_CORE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And set it as the event script for the trigger that you want to have run the cutscene.&lt;br /&gt;
&lt;br /&gt;
== Add a follower to the player's party ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
if(IsPlayer(oCreature)) {&lt;br /&gt;
  object oFollower = GetObjectByTag(&amp;quot;myfollower&amp;quot;);&lt;br /&gt;
  UT_HireFollower(oCreature, oFollower);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that with Toolset v1.0.982.0, calling UT_HireFollower() will result in a follower who's unable to gain xp. This happens due to the call of&lt;br /&gt;
  WR_SetFollowerState(oFollower, FOLLOWER_STATE_ACTIVE, TRUE, 0, '''TRUE''');&lt;br /&gt;
to the function&lt;br /&gt;
  void WR_SetFollowerState(object oCreature, int nState, int nSendEvent = TRUE, int nMinLevel = 0, '''int bPreventLevelup''' = FALSE)&lt;br /&gt;
To enable the xp gain, the flag CREATURE_REWARD_FLAGS needs to be cleared from the follower after the hired event was processed (there the flag is set). Alternatively, the relevant contents of UT_HireFollower() are to be called directly using bPreventLevelup = FALSE.&lt;br /&gt;
&lt;br /&gt;
== Have an enemy play possum and then get up to fight ==&lt;br /&gt;
&lt;br /&gt;
Set the creature's CREATURE_SPAWN_DEAD variable to 2.&lt;br /&gt;
&lt;br /&gt;
When it's time for the creature to rise and attack, execute the following script commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
WR_SetObjectActive(oCreature, TRUE);&lt;br /&gt;
SetCommandable(oCreature, TRUE);&lt;br /&gt;
// Make sure to set this flag back to 0 to avoid problems with savegames.&lt;br /&gt;
SetLocalInt(oCreature, CREATURE_SPAWN_DEAD, 0);&lt;br /&gt;
UT_CombatStart(oCreature, oPC);&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Insert content into an existing area ==&lt;br /&gt;
&lt;br /&gt;
If you want to add new content on to an existing area (for example, putting a new character or area transition door into an area that exists in the single-player campaign) there are two different ways to do it. One is to override the existing area with a new area of your own design that duplicates the original with the exception of your additions. This is straightforward to do but can interact poorly with other add-ons - you can only have one version of an area active at a time.&lt;br /&gt;
&lt;br /&gt;
A more elegant and extensible approach is to use a [[PRCSCR]]_-prefixed M2DA. The PRCSCR M2DA has a very simple structure and a simple but profound effect:&lt;br /&gt;
&lt;br /&gt;
*ID - a unique integer identifier for each row&lt;br /&gt;
*AreaListName - a string that identifies a specific area list, or the special keyword &amp;quot;any&amp;quot;.&lt;br /&gt;
*Script - the name of a script file.&lt;br /&gt;
&lt;br /&gt;
Whenever a player enters an area in an area list in this M2DA the associated script will be run. A modder can therefore include a script with his mod that will be run when the player enters an existing area that he didn't create. This script can freely add or remove placeables and creatures and perform whatever other modifications to the area that a script is capable of doing.&lt;br /&gt;
&lt;br /&gt;
Note that the script will be run every time the player enters the area, so you'll want to have an associated plot flag to ensure that the changes are only made once.&lt;br /&gt;
&lt;br /&gt;
The following example is a script that adds a new character from an add-on module to an existing area in the main game:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    //Check whether we've added Joblo already.&lt;br /&gt;
    if (WR_GetPlotFlag(&amp;quot;joblos_quest&amp;quot;, JOBLO_ADDED_TO_TOWN) == FALSE)&lt;br /&gt;
    {&lt;br /&gt;
        object oTown = GetObjectByTag(&amp;quot;lot100ar_lothering&amp;quot;); //An area's tag is the same as its resource name&lt;br /&gt;
        vector vJobloLocation = Vector(126.745f,120.724f,0.460568f); // See below for how to get these coordinates&lt;br /&gt;
&lt;br /&gt;
        CreateObject(&lt;br /&gt;
            OBJECT_TYPE_CREATURE,&lt;br /&gt;
            R&amp;quot;joblo.utc&amp;quot;,&lt;br /&gt;
            Location(oTown, vJobloLocation, 180.0f) //See below for how to get the value for orientation&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        WR_SetPlotFlag(&amp;quot;joblos_quest&amp;quot;, JOBLO_ADDED_TO_TOWN, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since you can't add [[waypoint]]s to an existing area you'll need to enter the position and orientation values for the target location manually. You can find them by creating a local copy of the area in question and temporarily adding a waypoint to copy down the coordinates and orientation you'll need.&lt;br /&gt;
&lt;br /&gt;
== Add new music ==&lt;br /&gt;
&lt;br /&gt;
Open up [[FMOD]]&lt;br /&gt;
&lt;br /&gt;
It creates a project - set the build directory to your DA override directory - with project highlighted, it is over on the top right about half way down the project settings. You can set a default resource directory but that will just set where the file browser defaults to so it is optional. I'd also define a name in those parameters while you are there.&lt;br /&gt;
&lt;br /&gt;
From there, you need a new event !!(not sure whether a blank default is generated or whether you have to right click and make a default blank event)!!. After you have an event, highlight it and change to the event tab (2nd tab). Here you need to import your file to link to that event.&lt;br /&gt;
&lt;br /&gt;
On that tab I think it creates a empty row for your new event - right click and add wavetable or something like that - I think I use the top option. (Again, might be wrong but the basic goal is getting a audio file in that screen that plays when you hit the play button at the top)&lt;br /&gt;
&lt;br /&gt;
Browse to your wav file or whatever you have.&lt;br /&gt;
&lt;br /&gt;
From there you should be able to play the sound both in the pop-up box and (once that is closed) back in the event tab. You'll see the name of the wave in that once empty row (IIRC).&lt;br /&gt;
&lt;br /&gt;
If you want, you can add layers of sounds to this event using the same process over and over, but keeping it simple; we'll just move along.&lt;br /&gt;
&lt;br /&gt;
Now you have a project and an event. You can set various parameters on the first tab that alter pitch etc on the first tab. (When you import the sound, you set whether it is a one shot or looping).&lt;br /&gt;
&lt;br /&gt;
Once you have that done, go to the top drop down and find build. Build the files and you should see extra files in your override directory.&lt;br /&gt;
&lt;br /&gt;
From there, just open up the toolset (or hit refresh from within the toolset) and your project and event sounds should show up in the listing of sounds.&lt;br /&gt;
&lt;br /&gt;
You can then drag and drop them into the game or cutscene and they will play.&lt;br /&gt;
&lt;br /&gt;
== Adding music to cutscenes ==&lt;br /&gt;
&lt;br /&gt;
The way we have been doing the music changes is via placed sound objects.  These sound objects are generally created in [[FMOD]], and in FMOD you can say if the music will persist after the cutscene or end when the cutscene ends.&lt;br /&gt;
&lt;br /&gt;
We are just using other sounds to switch music tracks. Designers can add music switch parameter to any sound in Fmod Designer, usually this is just VO line to change music track, for example:&lt;br /&gt;
&lt;br /&gt;
[[Image:FMOD music switch.jpg]]&lt;br /&gt;
&lt;br /&gt;
If there are no other sounds, designers can create empty sound event and add #music parameter there and place this sound on cutscene timeline.&lt;br /&gt;
Music track has to be defined in the same group as music in current area in “music.fdp” to work.&lt;br /&gt;
&lt;br /&gt;
[[Image:FMOD music switch 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #music:name,1 – non looping, for stingers&lt;br /&gt;
 #music:name – for looping music&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete resources ==&lt;br /&gt;
&lt;br /&gt;
Resource deletion can sometimes be a bit complicated. Check the following:&lt;br /&gt;
&lt;br /&gt;
*Resources must be checked in when deleted. This is so that the toolset can be sure that all dependencies have been properly resolved.&lt;br /&gt;
*If other resources reference the resource it can't be deleted. This means that sometimes you'll need to delete resources in a specific order. For example, you can't delete a creature that's being used in an area, but you could delete the area and then delete the creature. Occasionally there may be circular references that you'll need to break by editing the resources before deleting them. For example:&lt;br /&gt;
**A stage can reference an area, which can then reference the stage.&lt;br /&gt;
**A plot file can have an associated event script, which will almost certainly include the plot file.&lt;br /&gt;
**A stage can reference a creature, which references a dialogue, which references the original stage.&lt;br /&gt;
&lt;br /&gt;
== Removing Modules ==&lt;br /&gt;
&lt;br /&gt;
Deleting a Module from the Toolset&lt;br /&gt;
Setup:&lt;br /&gt;
I created a module called Meep with a unique id of rcfMeep, added in one area with a waypoint, configured the starting area/waypoint info, and exported it with dependencies.  And now I want to strip it out.&lt;br /&gt;
&lt;br /&gt;
Step 1: Removing it from the game&lt;br /&gt;
&lt;br /&gt;
* Navigate to My Documents\Bioware\AddIns&lt;br /&gt;
* Delete the folder called rcfMeep&lt;br /&gt;
* Done&lt;br /&gt;
&lt;br /&gt;
Removing from the game is fairly easy.  The toolset?  Not so much.  The reason for this is that the information is stored in the SQL Database.  Now if you just want to remove the module from the Manage Modules list, that is easy.&lt;br /&gt;
&lt;br /&gt;
* Open Sql Server Management Studio Express.  I'm not sure if the default installation installs this or not.  If not, it can be downloaded from Microsoft.&lt;br /&gt;
* Connect to the BWDATOOLSET server, assuming that you kept the default options.&lt;br /&gt;
* Expand Databases&lt;br /&gt;
* Expand bw_dragonage_content&lt;br /&gt;
* Expand Tables&lt;br /&gt;
* Right click and select open on the dbo.Modules table&lt;br /&gt;
* This will bring up an excell-like window.  Find your module, right-click on the row, and select delete.  Say ok to the confirmation.&lt;br /&gt;
* Module is now PERMANENTLY removed.  Absolutely no way of recovering it.&lt;br /&gt;
&lt;br /&gt;
Now depending on the size of the Module, you just orphaned a bunch of resources.  Areas, placables, conversations, they all get placed into the database.  And once you remove the module ID, you just lost your ability to remove these resources.  Now do keep in mind that 95% of this junk is just text, so it hardly takes up any room.  It's not really a major issue.  However if you [[How-tos#Delete resources|delete out the resources]] within the toolset before you remove the module reference you should avoid this.&lt;br /&gt;
&lt;br /&gt;
== Override Events (e.g. those in player_core) ==&lt;br /&gt;
Look here: [[Event override]]&lt;br /&gt;
&lt;br /&gt;
== Create a lootable placeable that vanishes when looted ==&lt;br /&gt;
&lt;br /&gt;
For a player-usable placeable, use the following event script to make it give its contents to the player and then vanish when clicked on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
event ev = GetCurrentEvent();&lt;br /&gt;
int nEventType = GetEventType(ev);&lt;br /&gt;
    switch (nEventType)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_USE:&lt;br /&gt;
        {&lt;br /&gt;
        //MoveAllItems(OBJECT_SELF, GetHero());&lt;br /&gt;
        AddCreatureMoney (1000000, GetHero(), TRUE);&lt;br /&gt;
        Safe_Destroy_Object(OBJECT_SELF);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you wanted to use standard resources you could achieve the same thing (though not destroying the placeable) simply by adding &amp;quot;_autoloot&amp;quot; to the end of the placeable's tag.&lt;br /&gt;
&lt;br /&gt;
== Move the player to a new area after a cutscene plays ==&lt;br /&gt;
&lt;br /&gt;
Stand-alone cutscenes have an &amp;quot;end script&amp;quot; parameter that sets a script to run once the cutscene ends. Use a script such as the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
   DoAreaTransition(&amp;quot;destination_area_tag&amp;quot;, &amp;quot;destination_waypoint_tag&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:Treasure_system&amp;diff=8934</id>
		<title>Talk:Treasure system</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:Treasure_system&amp;diff=8934"/>
				<updated>2009-12-20T05:00:35Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: Created page with 'I modified the table in regards to &amp;quot;TS_OVERRIDE_EQUIPMENT_CHANCE&amp;quot;. This value is actually a percent chance of any particular piece of equipped gear dropping. Furthermore, if you ...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I modified the table in regards to &amp;quot;TS_OVERRIDE_EQUIPMENT_CHANCE&amp;quot;. This value is actually a percent chance of any particular piece of equipped gear dropping. Furthermore, if you leave it at 0.0, then the stupid treasure system pulls a default value out of the AUTOSCALE table.&lt;br /&gt;
--[[User:JJM152|JJM152]] 05:00, 20 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Treasure_system&amp;diff=8933</id>
		<title>Treasure system</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Treasure_system&amp;diff=8933"/>
				<updated>2009-12-20T04:58:31Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: /* Overrides */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Treasure System only works on creatures and placeable containers (not bags). Creatures will fire the Treasure System when they die, and placeables will fire it when they spawn.&lt;br /&gt;
&lt;br /&gt;
There are 2 specific pieces of information that the Treasure System uses to determine what treasure an object drops. The first piece of information is the combat Rank of the object. Placeables are never involved in combat, but will have to have something entered in the field for the system to work. A Lieutenant-ranked chest will drop treasure equivalent to a Lieutenant-ranked creature. Rank determines the quantity and quality of the treasure dropped. The second piece of information is the Treasure Category of the object. This determines what set of treasure tables the system will look at for this object.&lt;br /&gt;
&lt;br /&gt;
If either the Rank or Treasure Category is set to Invalid (value 0), the Treasure System will not drop anything. Items placed manually on the object will appear normally.&lt;br /&gt;
&lt;br /&gt;
If there doesn't seem to be a treasure table that applies to a specific object, contact the designer in charge of the system to get a new table added.&lt;br /&gt;
&lt;br /&gt;
== Overrides ==&lt;br /&gt;
&lt;br /&gt;
There are a number of override variables on objects that will change the way the Treasure System functions. For each of these variables, a value less than 0 turns off that part of the system, a value of 0 ignores the override, and a value greater than 0 uses that value instead of the one on the creature. Each variable has a short explanation of what overriding does.&lt;br /&gt;
&lt;br /&gt;
{{variable table start}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_CATEGORY |int|0| A value here directly relates to ID values in the TS_Category 2DA.}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_EQUIPMENT |float|0| A value here determines the chance of any particular piece of equipped items dropping. Set this to a negative number to prevent the treasure system from using the default value from the auto scaling table.}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_HIGH|float|0| high chance }}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_ITEM|float|0| item chance }}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_MONEY |int|0| A value here overrides the TS_MoneyValue value in the autoscale 2DA.}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_RANK |int|0| A value here directly relates to ID values in the autoscale 2DA.}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_REACTIVE|float|0|Reactive chance, only present in the creature variable table{{undocumented}} }}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_SCALING |int|0| A value here has no additional effect. This is currently only useful to turn off scaling.}}&lt;br /&gt;
{{variable table row|TS_OVERRIDE_STEALING |int|0| A value here directly relates to ID values in the TS_Stealing 2DA.}}&lt;br /&gt;
{{variable table end}}&lt;br /&gt;
&lt;br /&gt;
== Stealing ==&lt;br /&gt;
&lt;br /&gt;
Stealing from a creature functions the same as a normal treasure drop, except the loot is only ever a single Minor Item. No Money or Major Items will be dropped.&lt;br /&gt;
&lt;br /&gt;
The TS_OVERRIDE_STEALING variable allows special functionality to be added when a creature is stolen from. A value placed in the override is actually an ID lookup in the TS_Stealing 2DA. When that creature is stolen from (and a creature can normally only be successfully stolen from once), it gets the item resource referenced by that ID and adds it to the treasure gained from stealing.&lt;br /&gt;
&lt;br /&gt;
Stealing from creatures is mostly handled by systems, so there are only a couple places a designer can interact with it. First it will be useful to describe exactly what happens when the Stealing skill is used.&lt;br /&gt;
&lt;br /&gt;
When a character tries to use Stealing on another creature, it checks a variety of factors on the character and the target to determine success. If the target has already been stolen from, the character neither succeeds nor fails. If the character fails, the [[EVENT_TYPE_STEALING_FAILURE]] event is fired on the current area. If the character succeeds, the [[EVENT_TYPE_STEALING_SUCCESS]] event is fired on the current area and the FLAG_STOLEN_FROM variable on the target is set to TRUE. Additionally, a successful use of the Stealing skill causes the Treasure System to generate a single Minor Item on the character using the skill. This requires the target to be properly set up for the Treasure System.&lt;br /&gt;
&lt;br /&gt;
The [[EVENT_TYPE_STEALING_FAILURE]] and [[EVENT_TYPE_STEALING_SUCCESS]] events are intended for use in the Infamy system and will be used in the Stealing Reactivity pass.&lt;br /&gt;
&lt;br /&gt;
The FLAG_STOLEN_FROM variable can be set on a creature manually to allow them to be immune to stealing attempts. This can be used to shield plot characters from the skill, though Stealing won't actually remove any items from their inventory. Additionally, you can set the flag to FALSE through scripting to allow the player to steal from a target more than once. Creatures with this flag set will not fire [[EVENT_TYPE_STEALING_FAILURE]] or [[EVENT_TYPE_STEALING_SUCCESS]] events, so they won't interact with the Infamy system.&lt;br /&gt;
&lt;br /&gt;
=== Specific Items ===&lt;br /&gt;
&lt;br /&gt;
The Treasure System has functionality added to allow you to get specific items when stealing from a character. The TS_OVERRIDE_STEALING variable on creatures allows you to set associate a creature with a specific ID value in the TS_Stealing 2DA. Each ID value references a specific item resource name. When a character with this variable set is stolen from, that specific item resource will be added to the treasure the player receives.&lt;br /&gt;
&lt;br /&gt;
The target does not have to have a valid Rank or Treasure Category for this item to drop. This is so you can drop only the specific item and nothing else.&lt;br /&gt;
&lt;br /&gt;
== TS_System.xls and related 2das ==&lt;br /&gt;
&lt;br /&gt;
See [[TS_System.xls]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Creatures]]&lt;br /&gt;
[[Category:Placeables]]&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=User:JJM152&amp;diff=8811</id>
		<title>User:JJM152</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=User:JJM152&amp;diff=8811"/>
				<updated>2009-12-14T15:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: Created page with 'Hi there. I promise to put something interesting here when I get a chance!  --~~~~'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi there. I promise to put something interesting here when I get a chance!&lt;br /&gt;
&lt;br /&gt;
--[[User:JJM152|JJM152]] 15:03, 14 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:Item_properties&amp;diff=8806</id>
		<title>Talk:Item properties</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:Item_properties&amp;diff=8806"/>
				<updated>2009-12-14T03:04:39Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I broke this out of the main [[Item]] page because it probably deserves to have a little bit more elaboration. &lt;br /&gt;
&lt;br /&gt;
I've gone ahead and enumerated the contents of the itemprps 2da with a little clarification from Craig Graff, but hopefully either Mr. Graff or someone else with more knowledge than I will come along and verify everything.&lt;br /&gt;
&lt;br /&gt;
Also, I think an explanation of how itemprps.xls, effects.xls and properties.xls link together is warranted here.&lt;br /&gt;
&lt;br /&gt;
--[[User:JJM152|JJM152]] 03:04, 14 December 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Talk:Item_properties&amp;diff=8805</id>
		<title>Talk:Item properties</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Talk:Item_properties&amp;diff=8805"/>
				<updated>2009-12-14T03:04:22Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: Created page with 'I broke this out of the main Item page because it probably deserves to have a little bit more elaboration.   I've gone ahead and enumerated the contents of the itemprps 2da w...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I broke this out of the main [[Item]] page because it probably deserves to have a little bit more elaboration. &lt;br /&gt;
&lt;br /&gt;
I've gone ahead and enumerated the contents of the itemprps 2da with a little clarification from Craig Graff, but hopefully either Mr. Graff or someone else with more knowledge than I will come along and verify everything.&lt;br /&gt;
&lt;br /&gt;
Also, I think an explanation of how itemprps.xls, effects.xls and properties.xls link together is warranted here.&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Item&amp;diff=8804</id>
		<title>Item</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Item&amp;diff=8804"/>
				<updated>2009-12-14T02:59:53Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: /* Item Properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An item is a game object that can be picked up or equipped by a creature. Dragon Age will have many items. As the player gains levels he or she will encounter progressively more powerful items. Through the use of material types (unique models and/or color variation) we will scale our items so that we have a greater range of item diversity than in our previous games.&lt;br /&gt;
&lt;br /&gt;
Items are grouped into types called &amp;quot;Base Item Types&amp;quot;.  The item's base type determines how it can be used and what its basic properties are.&lt;br /&gt;
&lt;br /&gt;
Some examples of base item types are:&lt;br /&gt;
* Sword&lt;br /&gt;
* Bow&lt;br /&gt;
* Arrows&lt;br /&gt;
* Helmet&lt;br /&gt;
* Potion&lt;br /&gt;
&lt;br /&gt;
Weapon and armour items get their basic ratings from their base item type.  This is further modified by the material type of the item (i.e., high steel sword vs. low steel sword) and other item properties on them.&lt;br /&gt;
&lt;br /&gt;
Unlike in Neverwinter Nights, items can't be placed on the floor. They can only be stored in an inventory of some kind.&lt;br /&gt;
&lt;br /&gt;
==== Item Attributes ====&lt;br /&gt;
&lt;br /&gt;
Item's attributes are determined in part by their base type and can be customized further in the toolset.  They can be further modified in the game by applying item properties.&lt;br /&gt;
&lt;br /&gt;
==== Appearance ====&lt;br /&gt;
&lt;br /&gt;
An item's appearance will be determined by their base type and an appearance field.  A base item 2da and an item appearances 2da controls the different appearances for each base type.  The number of appearance variations for each base type will vary.  Visual effect item properties can be applied later to further modify the appearance of the item (flame effects, etc…)&lt;br /&gt;
&lt;br /&gt;
==== Icons ====&lt;br /&gt;
&lt;br /&gt;
Each item's icon has a width and height.  This size corresponds roughly to the size of the item in the world, so small potions will have a small icon and large suits of armour will take up more space.&lt;br /&gt;
&lt;br /&gt;
We don't track the weight of items because of the shared party inventory.  Some items will have properties on them that will require the creature to have certain minimum attributes to equip them though.  This will simulate particularly heavy armour or weapons.&lt;br /&gt;
&lt;br /&gt;
==== Stacks ====&lt;br /&gt;
&lt;br /&gt;
Each item can have a stack size on them.  This means that the item actually represents a pile of identical items.  Stacks can be split into new items or merged to destroy old ones.  Only items that have identical types and properties can be merged into stacks.&lt;br /&gt;
&lt;br /&gt;
==== Cost ====&lt;br /&gt;
&lt;br /&gt;
An item's cost will be set in a field by either the toolset or the scripting language. There won't be any automatic cost calculation done.&lt;br /&gt;
&lt;br /&gt;
==== Plot Items ====&lt;br /&gt;
&lt;br /&gt;
Some items will be flagged as &amp;quot;plot&amp;quot; items.  This means the item is important to some plot in the game and should be treated differently.  When the player picks up one of these items they will appear on a special plot page in their inventory.  Plot items can’t be sold in stores or destroyed through normal game-play.  &lt;br /&gt;
&lt;br /&gt;
==== Indestructible items ====&lt;br /&gt;
&lt;br /&gt;
These are items that are needed for the plot, but can still be used or equipped by the player. The use of this flag is very restricted and it should be used only when no other solution will work. Items with this flag can not be destroyed, sold or given to another character to equip.&lt;br /&gt;
&lt;br /&gt;
==== Item Scripts ====&lt;br /&gt;
&lt;br /&gt;
Items will have AI scripts associated with them like any other game object (the script is attached to the item).  They will receive and process events in much the same way (acquire, lose, equip, unequip, etc…)&lt;br /&gt;
&lt;br /&gt;
==== Item Equipping ====&lt;br /&gt;
&lt;br /&gt;
All base item types are limited by attribute Strength (except wands which are Magic limited). An item cannot be equipped unless its base item attribute requirements are met. The reasons why an item cannot be equipped will be clearly indicated by the GUI. &lt;br /&gt;
Almost all items can be equipped and unequipped by a player during combat. The only exception is armor. Armor cannot be equipped or unequipped if the character is within sight of an enemy creature. &lt;br /&gt;
&lt;br /&gt;
==== Dropping Items ====&lt;br /&gt;
&lt;br /&gt;
* Players will not be allowed to drop items into the world or into containers by default. Specific containers can be set to accept items.&lt;br /&gt;
* If a creature dies the items are dropped into a bodybag&lt;br /&gt;
&lt;br /&gt;
==== Item Scaling ====&lt;br /&gt;
&lt;br /&gt;
The item system needs to be very robust, allowing for a wide diversity of item types, item appearances within a type, and rules scaling. Material types are the primary mechanism for item scaling... i.e., we won't randomize the type of item in many cases (flaming sword) but we will randomize its material type (low steel flaming sword vs. high steel flaming sword)&lt;br /&gt;
&lt;br /&gt;
==== Activated Items ====&lt;br /&gt;
&lt;br /&gt;
Each item can have a single default action. This is entered by picking an ability of type &amp;quot;Item Ability&amp;quot; from the abilities table which defines its icon, script, description and targetting behaviour. Items that can be used go into a special equip slot. All other item types (weapons, armor, et cetera) cannot have a custom item use.&lt;br /&gt;
The number of uses for this ability will be decided by the script which will destroy the item when appropriate. &lt;br /&gt;
* there are no uses per day type items. All items only have &amp;quot;number of uses&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Descriptions ====&lt;br /&gt;
&lt;br /&gt;
Item descriptions will be primarily autogenerated with stat information.&lt;br /&gt;
There will also be a text description but few items will have descriptions written for them. A subset list of all the items (the really powerful ones, crafting items, and plot items) will be the only ones with descriptions.&lt;br /&gt;
&lt;br /&gt;
==== Further Details ====&lt;br /&gt;
&lt;br /&gt;
* Equippable Items&lt;br /&gt;
** Melee Weapons&lt;br /&gt;
*** Some weapons are one handed, can be used with a shield&lt;br /&gt;
*** Some weapons are two handed&lt;br /&gt;
*** Daggers and Longswords can be dual wielded&lt;br /&gt;
** Ranged Weapons&lt;br /&gt;
*** Can use special ammunition, if you have it. Otherwise they can fire a &amp;quot;default&amp;quot; ammo type.&lt;br /&gt;
** Shields&lt;br /&gt;
** Paperdoll items (i.e., helmets, gloves, et cetera)&lt;br /&gt;
* Unequipped items&lt;br /&gt;
** There are a large variety of items that cannot be equipped on the ingame avatar. Some of these can be placed on the quickbar (i.e., potions) if they have activated item abilities&lt;br /&gt;
* Items can be upgraded (i.e., adding fire damage to a sword).&lt;br /&gt;
* Items can be crafted from other item parts&lt;br /&gt;
* Items can have Item properties&lt;br /&gt;
&lt;br /&gt;
==== Tools ==== &lt;br /&gt;
&lt;br /&gt;
Items are created in the Designer Toolset using the Object Inspector Editor.  Once created, item can be given as inventory to creatures and placeables.  Once placed, both the creature/placeable and the item must be exported in order to be viewed in the game.  Exporting happens automatically or can be done manually by the designer during testing.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Inventory slots ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Slot ||  Item type ||  Visible on avatar?&lt;br /&gt;
|-&lt;br /&gt;
|  Right Hand ||  Weapons ||  Yes &lt;br /&gt;
|-&lt;br /&gt;
|  Left Hand ||  Weapons, Shields ||  Yes &lt;br /&gt;
|-&lt;br /&gt;
|  Head ||  Helmet ||  Yes &lt;br /&gt;
|-&lt;br /&gt;
|  Chest ||  Armor, Clothing ||  Yes &lt;br /&gt;
|-&lt;br /&gt;
|  Waist || Belt, Girdle ||  No &lt;br /&gt;
|-&lt;br /&gt;
|  Quick Items ||  Useable Items ||  No &lt;br /&gt;
|-&lt;br /&gt;
|  Right Fingers || Ring ||  No &lt;br /&gt;
|-&lt;br /&gt;
|  Left Fingers || Ring ||  No &lt;br /&gt;
|-&lt;br /&gt;
|  Feet || Boots ||  Yes  &lt;br /&gt;
|-&lt;br /&gt;
|  Neck || Amulets ||  No  &lt;br /&gt;
|-&lt;br /&gt;
|  Hands ||  Gloves ||  Yes &lt;br /&gt;
|-&lt;br /&gt;
|  Inventory - Normal ||  Backpack Items ||  No &lt;br /&gt;
|-&lt;br /&gt;
|  Inventory - Plot ||  Plot Items ||  No &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Item Properties ==&lt;br /&gt;
&lt;br /&gt;
See [[Item properties]] for more information.&lt;br /&gt;
&lt;br /&gt;
== Item Abilities ==&lt;br /&gt;
&lt;br /&gt;
Item Abilities are activated abilities on items (for example, a potion with the activated ability Healing is a Potion of Healing). An item can only have one item ability. This item ability is assigned in the toolset.&lt;br /&gt;
They are not item properties.&lt;br /&gt;
&lt;br /&gt;
=== Detailed Description ===&lt;br /&gt;
&lt;br /&gt;
Item abilities cannot be placed on equippable items.&lt;br /&gt;
&lt;br /&gt;
Item abilities are activated by right-clicking or double-clicking the item or from using the item from the quickbar&lt;br /&gt;
&lt;br /&gt;
== Variables ==&lt;br /&gt;
&lt;br /&gt;
{{variable table start}}&lt;br /&gt;
{{variable table row|APP_ITEM_MOTIVATION | int |0| }}&lt;br /&gt;
{{variable table row|ITEM_CODEX_FLAG | int |-1| when != -1, this will be the codex plot flag to set for this item when acquired. The plot name is the tag of the item}}&lt;br /&gt;
{{variable table row|ITEM_COUNTER_1 to 2 | int |0| }}&lt;br /&gt;
{{variable table row|ITEM_CRUST | int |0| }}&lt;br /&gt;
{{variable table row|ITEM_DO_ONCE_A and B | int |0| }}&lt;br /&gt;
{{variable table row|ITEM_SEND_ACQUIRED_EVENT | int |0| when true, [[EVENT_TYPE_CAMPAIGN_ITEM_ACQUIRED]] is sent to the module's event script when the item is aquired. }}&lt;br /&gt;
{{variable table row|ITEM_SET | int |-1| Certain items will give a bonus when equipped with other members of the same set (as identified by this integer).}}&lt;br /&gt;
{{variable table row|ITEM_SPECIALIZATION_FLAG| int|0|}}&lt;br /&gt;
{{variable table row|ITEM_SEND_LOST_EVENT| int| 0 | }}&lt;br /&gt;
{{variable table row|PROJECTILE_OVERRIDE|int|0|}}&lt;br /&gt;
{{variable table row|ITEM_RUNE_ENABLED|int|0|}}&lt;br /&gt;
{{variable table end}}&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
&lt;br /&gt;
{{inspector start}}&lt;br /&gt;
{{inspector section|General}}&lt;br /&gt;
{{inspector row|Activated Ability| Action happening on a specific event related to the item (hit with weapon, being hit on armor, etc.)}}&lt;br /&gt;
{{inspector row|Base Item Type| The inventory type of the item. Also gives the base appearance type for the item. }}&lt;br /&gt;
{{inspector row|Comments| General information about the item }}&lt;br /&gt;
{{inspector row|Crafting Recipe Type| The type of recipe this is. From recipes 2da. }}&lt;br /&gt;
{{inspector row|Description|  }}&lt;br /&gt;
{{inspector row|DescriptionRequiresReTranslation|  }}&lt;br /&gt;
{{inspector row|Heraldry|  }}&lt;br /&gt;
{{inspector row|Icon|  }}&lt;br /&gt;
{{inspector row|Item Variation| An appearance variation based on the base item type. }}&lt;br /&gt;
{{inspector row|MaterialProgression|  }}&lt;br /&gt;
{{inspector row|MaterialType|  }}&lt;br /&gt;
{{inspector row|Name|  }}&lt;br /&gt;
{{inspector row|NameRequiresReTranslation|  }}&lt;br /&gt;
{{inspector row|Resource Name| A unique string identifier the toolset and the game both use to refer to this resource}}&lt;br /&gt;
{{inspector row|Tag| A non-unique string identifier used mostly by scripts and other resources to refer to this resource. }}&lt;br /&gt;
{{inspector row|Tint Override|  }}&lt;br /&gt;
&lt;br /&gt;
{{inspector section|Attributes}}&lt;br /&gt;
{{inspector row|Body Tint| Affects the appearance of item wearer. Typically used to customize the Dog's warpaint. }}&lt;br /&gt;
{{inspector row|Body Tint Mask| Affects the appearance of item wearer. Typically used to customize the Dog's warpaint. }}&lt;br /&gt;
{{inspector row|Cost| Base money value of the item. }}&lt;br /&gt;
{{inspector row|Damaged|  }}&lt;br /&gt;
{{inspector row|Item Properties| Allows selecting one or more item properties for the item. Item Properties are any special power, effects, or stat variations beyond the basic item attributes. Properties also includes restrictions by class, race, etc. }}&lt;br /&gt;
{{inspector row|OnHit Effect|  }}&lt;br /&gt;
{{inspector row|OnHit Power|  }}&lt;br /&gt;
{{inspector row|Plot Item| A plot item can not be destroyed or removed from inventory by the player once the player has acquired it. Plot items can only be removed via scripts written by the designer.}}&lt;br /&gt;
{{inspector row|Script| Event script assigned to the resource }}&lt;br /&gt;
{{inspector row|Unique|  }}&lt;br /&gt;
{{inspector row|Variable 2da| 2da file containing a variable table. Only the values in the table can be set and retrieved by scripting. }}&lt;br /&gt;
{{inspector row|Variables| Opens the variable table for editing, allows the initial values of the variables to be defined.}}&lt;br /&gt;
&lt;br /&gt;
{{inspector section|Model Appearance (R/O)}}&lt;br /&gt;
{{inspector row|Model Appearance|  }}&lt;br /&gt;
{{inspector row|Model Gender|  }}&lt;br /&gt;
{{inspector end}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Items]]&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Item_properties&amp;diff=8803</id>
		<title>Item properties</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Item_properties&amp;diff=8803"/>
				<updated>2009-12-14T02:58:03Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: Created page with '== Item Properties ==  An item property is a modifier on an item similar to an effect.  These modifiers affect either the item itself or the item's wielder.  Item properties (i.e...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Item Properties ==&lt;br /&gt;
&lt;br /&gt;
An item property is a modifier on an item similar to an effect.  These modifiers affect either the item itself or the item's wielder.&lt;br /&gt;
&lt;br /&gt;
Item properties (i.e., fire damage) are assignable in the toolset and via scripting&lt;br /&gt;
* Scripting functions to add properties&lt;br /&gt;
* Scripting functions to remove properties&lt;br /&gt;
* Toolset can add/remove properties&lt;br /&gt;
* Item Abilities are not item properties&lt;br /&gt;
&lt;br /&gt;
MAKE is an item property. Because Dragon Age is a low magical world we cannot flood the player with magical items. However item progression is important to a RPG. We have decided to use an item progression system whereby items get better depending on the materials and processes used in their construction. In Dragon Age each weapon, armor, and shield progresses through several levels of quality. The highest quality items are more powerful and harder to obtain. These quality levels are called makes (they used to be called material types). &lt;br /&gt;
&lt;br /&gt;
As MAKE improves, it: &lt;br /&gt;
*increases the base statistics for a particular item (attack rating, damage and armor penetration for weapons, armor rating for armor, defense rating for shields). &lt;br /&gt;
*changes the physical appearance of an item. Generally this change should be a model change though for expansion purposes we may also insert additional makes that are merely color changes. &lt;br /&gt;
*Determines the number of upgrade/enchantment slots that are available on the item&lt;br /&gt;
&lt;br /&gt;
The values in the 2DA MaterialTypes.2da influence the initial damage, attack bonus, armor penetration, defense and armor of an item. There are several upgrade stages for each equipped item. All items follow the same progression, but the labels used to refer to this progression changes based on the item type. The item's progression dictates the number of enchantment rune upgrades it can support.&lt;br /&gt;
&lt;br /&gt;
Each base item type has its own list of material types, with different numbers. However many base items do share material types, so we can group them into Melee Weapons, Ranged Weapons, Wands, Armor, Shields, Helmets, etc.&lt;br /&gt;
&lt;br /&gt;
The item properties allowed to be assigned to an item are based on the item's base types (i.e., a longsword has different properties allowable than a suit of armor)&lt;br /&gt;
&lt;br /&gt;
When an item is equipped or un-equipped, a call-back function is run for each property on it. These usually apply or remove some package of effects with the duration type &amp;quot;Equipped&amp;quot;. These are used to create items that grant bonuses when used.&lt;br /&gt;
&lt;br /&gt;
=== List of Item Properties ===&lt;br /&gt;
&lt;br /&gt;
Item Properties can be added either directly to an item through the tool builder interface, or assigned via scripting through the [[AddItemProperty]] method.&lt;br /&gt;
&lt;br /&gt;
{{2da start&lt;br /&gt;
|name=itemprps.xls}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= LABEL&lt;br /&gt;
|type= string&lt;br /&gt;
|description= Name of the property&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= NameStrId&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Reference to the Name String for the property.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= IPType&lt;br /&gt;
|type= int&lt;br /&gt;
|description= The Type of the property. 1 = effect, 2 = onhit, 3 = restriction, 4 = special.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= effect&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Reference to the effect this property invokes. See effects.xls (1012 references: EFFECT_TYPE_MODIFY_PROPERTY)&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= int0&lt;br /&gt;
|type= int&lt;br /&gt;
|description= A possible argument passed to the effect. For EFFECT_TYPE_MODIFY_PROPERTY this points to an ID row inside properties.xls&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= int1&lt;br /&gt;
|type= int&lt;br /&gt;
|description= A possible argument passed to the effect.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= float0&lt;br /&gt;
|type= float&lt;br /&gt;
|description= A possible argument passed to the effect. For EFFECT_TYPE_MODIFY_PROPERTY this is the amount of effect to apply per point of power.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= float1&lt;br /&gt;
|type= float&lt;br /&gt;
|description= A possible argument passed to the effect.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= ConditionScript&lt;br /&gt;
|type= float&lt;br /&gt;
|description= A script reference. Used to restrict equipping items when IPType is set to 3. (See \_Global\Item Scripts\ in the single player campaign for examples of the scripts).&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= VFX&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Visual Effect to apply when equipping item.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= ScalingVector&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Unknown at this time.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= VFX&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Visual Effect to apply when equipping item.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= Comment&lt;br /&gt;
|type= comment&lt;br /&gt;
|description= A comment. Not compiled into the resulting .2da file.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= BaseCost&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Value added to item per point of power of this property.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= IsNegative&lt;br /&gt;
|type= int&lt;br /&gt;
|description= If this property has a negative effect.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= BaseDuration&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Assumed to be duration of effect in seconds. Unconfirmed.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= ProjectileCrust&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Visual Effect to apply to projectiles fired from this item.&lt;br /&gt;
}}&lt;br /&gt;
{{2da column&lt;br /&gt;
|name= AbilityID&lt;br /&gt;
|type= int&lt;br /&gt;
|description= Ability to use for onhit (IPType = 2) effects.&lt;br /&gt;
}}&lt;br /&gt;
{{2da end}}&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	<entry>
		<id>https://datoolset.net/mw/index.php?title=Scripting_overview&amp;diff=8745</id>
		<title>Scripting overview</title>
		<link rel="alternate" type="text/html" href="https://datoolset.net/mw/index.php?title=Scripting_overview&amp;diff=8745"/>
				<updated>2009-12-13T06:37:03Z</updated>
		
		<summary type="html">&lt;p&gt;JJM152: I added a few tables on the operators that the scripting language supports (arithmetic, logical, comparison, etc).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scripting is used whenever the designers need control over the game's behaviour. The syntax for DA scripts is very similar to the C programming language. &lt;br /&gt;
&lt;br /&gt;
Detailed documentation for the scripting language can be found in the &amp;quot;dascript.chm&amp;quot; file, available in your &amp;quot;Dragon Age\packages\core&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
The main uses for it are to: &lt;br /&gt;
&lt;br /&gt;
*Trigger plot events &lt;br /&gt;
*Script conversation &lt;br /&gt;
*Handle creature and party member [[AI]]&lt;br /&gt;
*Script abilities - skills, talents, and spells &lt;br /&gt;
&lt;br /&gt;
DA also has a client-side scripting language whose primary responsibility is automated testing of the game. See [[client script]]s for more details.&lt;br /&gt;
&lt;br /&gt;
AI Scripts are event based. Objects will have only one event-handling script assigned to them that will be run whenever they receive a game event. This script will receive the event type as a parameter and will need to determine the appropriate response for itself.&lt;br /&gt;
&lt;br /&gt;
There are several file extensions associated with scripts:&lt;br /&gt;
* NSS - script source file&lt;br /&gt;
* NCS - compiled script&lt;br /&gt;
* NDB - debug information file (required for using the script debugger to trace through this file)&lt;br /&gt;
&lt;br /&gt;
== Script editor ==&lt;br /&gt;
&lt;br /&gt;
Scripts are created in the Designer Toolset using the Script Editor. Once created, scripts must be assigned to such things as Creatures before they can be used. Once assigned, both the referencing object and the script must be exported in order to be viewed in the game. Exporting happens automatically or can be done manually by the designer during testing. &lt;br /&gt;
&lt;br /&gt;
The script editor supports the following features: &lt;br /&gt;
&lt;br /&gt;
*Undo and redo &lt;br /&gt;
*Find and replace &lt;br /&gt;
*Bookmarking: View -&amp;gt; Other Windows -&amp;gt; Bookmarks&lt;br /&gt;
*Function, variable, constant, and template browser (visible on the right-hand side of the screen).&lt;br /&gt;
*Auto-complete when typing function and variable names &lt;br /&gt;
*Syntax highlighting &lt;br /&gt;
*Auto-indention &lt;br /&gt;
*Brace matching/highlighting &lt;br /&gt;
*Ability to test compile a script &lt;br /&gt;
*Jump to definition&lt;br /&gt;
&lt;br /&gt;
To the right of the script editor is a sidebar with a browser that can display all currently-defined functions, variables, or constants, or a set of 'template' scripts that can serve as a starting point when writing a script from scratch. The browser also has a filter field where you can type in a partial string and have the list automatically exclude everything that doesn't include it in the name.&lt;br /&gt;
&lt;br /&gt;
This is the constant browser:&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting constant browser.png]]&lt;br /&gt;
&lt;br /&gt;
Here it is with &amp;quot;team&amp;quot; typed into the filter field, displaying only constants with names that contain the substring &amp;quot;team&amp;quot; (not case sensitive):&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting constant browser filtered.png]]&lt;br /&gt;
&lt;br /&gt;
The templates that come with Dragon Age include frameworks for the most common event scripts found in the game. You can add your own templates quite easily, just create a text file with the template code in it and place it in the Dragon Age\Toolset\scripttemplates directory with the others.&lt;br /&gt;
&lt;br /&gt;
[[Image:scripting template browser.png]]&lt;br /&gt;
&lt;br /&gt;
Dragon Age's toolset supports Doxygen-style comments. If you double-click on a function name a help window will pop open to display its documentation. You can also jump to a function's definition (provided it isn't an engine-defined function in script.ldf) by right-clicking on it and selecting &amp;quot;go to definition&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Scripting help window.png]]&lt;br /&gt;
&lt;br /&gt;
== Writing scripts ==&lt;br /&gt;
&lt;br /&gt;
For a script to compile, it needs a body:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
The parameters on this can't be changed or the script won't compile.&lt;br /&gt;
&lt;br /&gt;
Scripts associated with a dialog node take this alternate form:&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
int StartingConditional()&lt;br /&gt;
{&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Including files ===&lt;br /&gt;
Other script files can be included by using the #include directive. &lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;rules&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    DoSomethingOrOther();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
The included file is inserted into the main file before the script is compiled. Any number of files can be included.&lt;br /&gt;
&lt;br /&gt;
No other C-style preprocessor commands are supported.&lt;br /&gt;
&lt;br /&gt;
=== Operators ===&lt;br /&gt;
&lt;br /&gt;
The scripting language supports the following operators:&lt;br /&gt;
&lt;br /&gt;
====Arithmetic Operators====&lt;br /&gt;
{|style=&amp;quot;width:100%;border:solid 1px black;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:25%;background-color:#ffffcc;&amp;quot; | Operator Name&lt;br /&gt;
! style=&amp;quot;width:75%;background-color:#ffffcc;&amp;quot; | Example&lt;br /&gt;
|-&lt;br /&gt;
| Prefix Increment&lt;br /&gt;
| &amp;lt;dascript&amp;gt;while ( ++a &amp;lt; 10) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Postfix Increment&lt;br /&gt;
| &amp;lt;dascript&amp;gt; for (i = 0; i &amp;lt; 10; i++) { } &amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Assignment by addition&lt;br /&gt;
| &amp;lt;dascript&amp;gt;a += b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Subtraction (difference)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;x = a - b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Addition (sum)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;x = a + b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Prefix decrement&lt;br /&gt;
| &amp;lt;dascript&amp;gt;while (--a &amp;gt; 10) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Postfix decrement&lt;br /&gt;
| &amp;lt;dascript&amp;gt;while (a-- &amp;gt; 10) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Assignment by subtraction&lt;br /&gt;
| &amp;lt;dascript&amp;gt;a -= b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Multiplication (product)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;x = a * b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Division (quotient)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;x = a / b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Modulo (remainder)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a % b == 1) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Comparison Operators====&lt;br /&gt;
{|style=&amp;quot;width:100%;border:solid 1px black;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:25%;background-color:#ffffcc;&amp;quot; | Operator Name&lt;br /&gt;
! style=&amp;quot;width:75%;background-color:#ffffcc;&amp;quot; | Example&lt;br /&gt;
|-&lt;br /&gt;
| Less than&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a &amp;lt; b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Less than or equal to&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a &amp;lt;= b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Greater than&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a &amp;gt; b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Greater than or equal to&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a &amp;gt;= b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Not Equal to&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a != b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Equal to&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a == b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Logical Operators====&lt;br /&gt;
{|style=&amp;quot;width:100%;border:solid 1px black;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:25%;background-color:#ffffcc;&amp;quot; | Operator Name&lt;br /&gt;
! style=&amp;quot;width:75%;background-color:#ffffcc;&amp;quot; | Example&lt;br /&gt;
|-&lt;br /&gt;
| Logical negation (NOT)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (!a) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Logical AND&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a &amp;amp;&amp;amp; b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Logical OR&lt;br /&gt;
| &amp;lt;dascript&amp;gt;if (a || b) { }&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Other Operators====&lt;br /&gt;
{|style=&amp;quot;width:100%;border:solid 1px black;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:25%;background-color:#ffffcc;&amp;quot; | Operator Name&lt;br /&gt;
! style=&amp;quot;width:75%;background-color:#ffffcc;&amp;quot; | Example&lt;br /&gt;
|-&lt;br /&gt;
| Basic assignment&lt;br /&gt;
| &amp;lt;dascript&amp;gt;a = b;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Function call&lt;br /&gt;
| &amp;lt;dascript&amp;gt;a();&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Array subscript&lt;br /&gt;
| &amp;lt;dascript&amp;gt;array[0] = 1;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Member (on structures)&lt;br /&gt;
| &amp;lt;dascript&amp;gt;structure.member = 0;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Ternary conditional&lt;br /&gt;
| &amp;lt;dascript&amp;gt;return a &amp;lt; b ? c : d;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=== Types &amp;amp; Variable  ===&lt;br /&gt;
&lt;br /&gt;
The scripting language natively supports:&lt;br /&gt;
* [[float]] - floating-point numbers. &amp;lt;dascript&amp;gt;float fFloat = 0.1234f;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
* [[int]] - integer numbers. &amp;lt;dascript&amp;gt;int nInteger = 1234;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
* [[object]] -game object files. &amp;lt;dascript&amp;gt;object oObject = GetObjectByTag(&amp;quot;monster_001&amp;quot;);&amp;lt;/dascript&amp;gt;&lt;br /&gt;
* [[resource]] - game resource files. &amp;lt;dascript&amp;gt;resource rGameIntroCutscene = R&amp;quot;game_intro_.cut&amp;quot;;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
* [[string]] - text strings. &amp;lt;dascript&amp;gt;string sString = &amp;quot;Hello World!&amp;quot;;&amp;lt;/dascript&amp;gt;&lt;br /&gt;
* [[vector]] - positions or directions. &amp;lt;dascript&amp;gt;vector vVector = Vector(0.0, 1.1, 2.2);&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The server language has been expanded to support these engine defined structures:&lt;br /&gt;
* [[event]] - events are signals that are sent to scripts by other scripts or by the world engine.&lt;br /&gt;
* [[location]]&lt;br /&gt;
* [[command]] - a command for a creature or object to do something. Commands are constructed using functions that return them, and then are added to a target's command queue with the AddCommand function.&lt;br /&gt;
* [[effect]]&lt;br /&gt;
* [[itemproperty]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
&lt;br /&gt;
All of these types are always passed by value, which means a new copy is made whenever they are passed into a function or copied to another variable.&lt;br /&gt;
&lt;br /&gt;
This means that most functions that are supposed to modify a structure in some way need to return the modified one:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    effect e1 = Effect(100);&lt;br /&gt;
    effect e2 = SetEffectType(e1, 101); // e1 != e2&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Structures ====&lt;br /&gt;
&lt;br /&gt;
Users can define their own structures using the [[struct]] keyword:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
// user-defined type&lt;br /&gt;
struct quaternion&lt;br /&gt;
{&lt;br /&gt;
    float w, x, y, z;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// constructor&lt;br /&gt;
struct quaternion Quaternion(float fW, float fX, float fY, float fZ)&lt;br /&gt;
{&lt;br /&gt;
    struct quaternion q;&lt;br /&gt;
&lt;br /&gt;
    q.w = fW;&lt;br /&gt;
    q.x = fX;&lt;br /&gt;
    q.y = fY;&lt;br /&gt;
    q.z = fZ;&lt;br /&gt;
&lt;br /&gt;
    return q;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    struct quaternion q = Quaternion(0.0, 0.0, 0.0, 0.0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Arrays ====&lt;br /&gt;
Variables can be declared as arrays for any type except user-defined structs. Designers can create their own arrays of any major data type (int, string, object). Many functions will also return arrays (for example, creatures in an area will be returned as an array, and the action queue will be returned as an array).&lt;br /&gt;
&lt;br /&gt;
These are different from C-style arrays in that they can be resized like STL vectors, and their notation is slightly different.&lt;br /&gt;
&lt;br /&gt;
Arrays also behave differently from other objects in the scripting language because they are passed by reference.  If an array is passed into a function and modified:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    int[] i;                 // new array of integers with a size of zero &lt;br /&gt;
    i[0] = 5;                // value of array position 0 is now 5&lt;br /&gt;
    i[1] = -1;               // value of array position 1 is now -1&lt;br /&gt;
&lt;br /&gt;
    int[] j = i;             // i and j point to the same array&lt;br /&gt;
    j[1] = 12;               // value of array position 1 for both i and j is now 12!&lt;br /&gt;
&lt;br /&gt;
    SortArrayDescending(i);  // i and j are both sorted now, this function has no return value&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GetArraySize]] returns the size of an array.&lt;br /&gt;
&lt;br /&gt;
==== Local Variables ====&lt;br /&gt;
&lt;br /&gt;
In Neverwinter Nights, variables for various objects could be created and set with functions such as SetLocalInt(). Dragon Age does not have analogous functions. Instead, all of the variables that a given object is able to have values assigned to must be defined ahead of time in a 2DA. This more restrictive approach is intended to improve performance and reduce the opportunity for errors (for example, making a typo in the name of a variable and losing track of it as a result).&lt;br /&gt;
&lt;br /&gt;
=== Functions ===&lt;br /&gt;
&lt;br /&gt;
There are two ways to discover a function and what it does.&lt;br /&gt;
&lt;br /&gt;
If you type in the name of a function that's been defined and then an opening bracket, a tooltip will pop up showing the function's parameter types and return type.&lt;br /&gt;
&lt;br /&gt;
Alternately, if you have the help window open (View -&amp;gt; Other Windows -&amp;gt; Help Window), then whenever you select a function in the function browser a help page describing the function will be displayed.&lt;br /&gt;
&lt;br /&gt;
=== Passing parameters to scripts ===&lt;br /&gt;
&lt;br /&gt;
To pass parameters to scripts they must be called with the 'runscript' command. This can be useful for writing debug scripts or changing actions based on input. To accept parameters simply add this line to your script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
string sParams = GetLocalString(GetModule(),&amp;quot;RUNSCRIPT_VAR&amp;quot;);&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then type 'runscript scriptname parameter1 parameter2 ... paramaterN' to pass parameters.&lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Debug script: heals the object with the given tag. If tag is invalid, nothing happens&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
    string sTag = GetLocalString(GetModule(),&amp;quot;RUNSCRIPT_VAR&amp;quot;);    &lt;br /&gt;
    object oCreature = GetObjectByTag(sTag);&lt;br /&gt;
    effect   eHeal = EffectHeal(25.0f)&lt;br /&gt;
    //ApplyEffect...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Debug script: applies the visual effect passed in as parameter to the player&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
 &lt;br /&gt;
    string sEffect = GetLocalString(GetModule(),&amp;quot;RUNSCRIPT_VAR&amp;quot;);    &lt;br /&gt;
    int    nEffect = StringToInt(sEffect);&lt;br /&gt;
    effect eVfx = EffectVisualEffect(nEffect);&lt;br /&gt;
    //ApplyEffect...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error messages and logging ===&lt;br /&gt;
&lt;br /&gt;
See [[Script error]] for details of how to correct errors in scripts.&lt;br /&gt;
&lt;br /&gt;
To enable script logging, edit or create &amp;lt;DragonAgeInstallDirectory&amp;gt;\bin_ship\[[ECLog.ini]] and set Script=1 in the [LogTypes] section.&lt;br /&gt;
&lt;br /&gt;
== Timing ==&lt;br /&gt;
&lt;br /&gt;
Commands, delayed events and object destruction all take place after the current script is finished running. Plot flags set in script are set in-line but the triggered plot script runs before the flag is actually set (this is clarified a bit in the plot script template).&lt;br /&gt;
&lt;br /&gt;
Given that ExecuteScript is deprecated, HandleEvent should be used when you want the script to run in-line and DelayEvent should be used when you want to delay execution.&lt;br /&gt;
&lt;br /&gt;
To delay execution when dealing with creatures, custom AI and (safe) command complete are nice tools. DelayEvent should be used whenever you know how long you want to wait before the event fires. (It can also be used in quite small time increments to give the illusion of smoothly sliding placeables with SetPosition or interpolate between two different atmosphere/lighting settings, but the overhead of this is noticeable if overused).&lt;br /&gt;
&lt;br /&gt;
[[Category:Scripts]]&lt;/div&gt;</summary>
		<author><name>JJM152</name></author>	</entry>

	</feed>