Professional Documents
Culture Documents
Toolset Guide
A step by step guide to using the Aurora Toolset provided with Neverwinter Nights
By: Bret Wardle
Neverwinter Nights
Toolset Guide
Table of Contents
Preface................................................................................................................................. 3
Playing the Game ................................................................................................................ 4
Install and Setup .............................................................................................................. 4
Launch and Play.............................................................................................................. 4
Conclusion ...................................................................................................................... 5
Creating, saving, storing modules ....................................................................................... 6
Starting a project ............................................................................................................. 6
Area Wizard .................................................................................................................... 6
Saving and Storing your mod ......................................................................................... 7
Conclusion ...................................................................................................................... 8
Basic Functions of the Toolset ............................................................................................ 9
Terrain Editing ................................................................................................................ 9
Linking Areas................................................................................................................ 10
Conclusion .................................................................................................................... 11
Plantables .......................................................................................................................... 12
Using Plantables............................................................................................................ 12
Painting Doors .............................................................................................................. 14
Conclusion .................................................................................................................... 15
People and Dialog ............................................................................................................. 16
NPCs ............................................................................................................................ 16
Conversation Editor ...................................................................................................... 17
Conclusion .................................................................................................................... 18
Blueprints and Triggers..................................................................................................... 19
Blueprint Basics ............................................................................................................ 19
Enemy Blueprints and Encounters ................................................................................ 20
Triggers ......................................................................................................................... 22
Conclusion .................................................................................................................... 24
Scripting ............................................................................................................................ 25
Script Placement ........................................................................................................... 25
________________________________________________________________________
www.BretWardle.com
1
Neverwinter Nights
Toolset Guide
________________________________________________________________________
www.BretWardle.com
2
Neverwinter Nights
Toolset Guide
Preface
Neverwinter Nights is an RPG game released by Bioware in 2002. It was shipped
with a very rich editor called the Aurora Toolset. Since release this editor has
undergone many updates and additions. The community of modders for Neverwinter
Nights is as large as any other modding community, with thousands of Mods
available for download and play all over the internet.
This guide was written for the most current patch of the Aurora Toolset, version 1.69.
Instructions on installing this patch are located in the guide. This Guide takes you
from game installation to Mod distribution, with each chapter adding to the last. You
will continue each chapter where you left off utilizing the skills from the chapter
before. When it is all done you will have the skills to start your very own mod from
scratch.
I, Bret Wardle, am a game designer in the Salt Lake City area. I am also an instructor
with ITT Technical Institute on their Murray Utah campus. I instruct many classes
there, of which my favorite is Level Design. For that class the students learn the
Aurora Toolset, and I would like to pass that knowledge onto anyone else who desires
it. I have greatly enjoyed using this toolset, and have made a few Mods myself in the
editor. You can find them on my website: www.BretWardle.com.
I hope you enjoy the toolset as much as I have, and feel free to send me any Mods
you create, as Id love to play them!
Enjoy!
________________________________________________________________________
www.BretWardle.com
3
Neverwinter Nights
Toolset Guide
6.
7.
8.
9.
________________________________________________________________________
www.BretWardle.com
4
Neverwinter Nights
Toolset Guide
7. Look through the list, read the descriptions, choose a Mod that sounds
interesting to you.
8. Select it, then select Play.
9. Choose Create Character, follow the steps.
a. Character Creation is a huge part of NWN The players of these
mods enjoy making a character and keeping him/her for the long haul.
You need to know what goes into this process.
10. After the long process of character creation you will start the Mod.
11. One thing I like to do right after creating a new character is save the character
out so that I can choose it to play any other Mod I want, to do this press ESC
and along the top row select Save Character.
a. Here you can also save the progress in the game if you have to leave
for whatever reason.
b. By saving the character, you can now select them as a pre-made
character when starting any other Mod You can also resave the
character after they have earned a bit of experience. Many players do
this so that they can play hundreds of mods with their own personal
character.
12. Now play through the Mod, Pay specific attention to the game play and notice
what does and doesnt work well for this style of game. Some things to pay
attention to are:
a. Dialog Structure
b. Gameplay Pace
c. Character Development
d. Quest Tracking
e. Map Layout
f. Enemy Placement
g. Ambient Creatures/People/Objects
Conclusion
Before you start any game project you need to understand limitations. By playing
Neverwinter Nights you can start to see what may or may not be possible. You can
also see what the game/engine strong and weak points are. The things that really
make this toolset shine are the Dialog trees, and strong storytelling elements.
Incorporating these into a Mod will fit both the engine, and the demographic of the
NWN Mod playing community.
________________________________________________________________________
www.BretWardle.com
5
Neverwinter Nights
Toolset Guide
Area Wizard
1. The name you give your area right now will be used as the ResRef for the
area, and cannot be changed once entered!
a. If doing projects that involve importing and exporting areas all of these
will need a unique name. I suggest establishing a naming convention to
avoid overwriting areas (ie BW_SolomonsTomb).
b. You can later change the Name of the area as it appears in game, but
this ResRef that is created now cannot We will discuss what a ResRef
is when we talk about Scripting.
2. After typing a name, select a tile set you would like to use for this area and
click next.
c. These tile sets all have different terrain and prop features Areas are limited
to one tile set choice, but the Module can contain different tile sets for
different areas You do not have to stick to one tile set throughout.
________________________________________________________________________
www.BretWardle.com
6
Neverwinter Nights
Toolset Guide
________________________________________________________________________
www.BretWardle.com
7
Neverwinter Nights
Toolset Guide
Conclusion
Creating a Mod in the Aurora Toolset is pretty straight forward it is the filling in
that Mod that makes it great. The important thing to remember is where these Mods
are stored You can only Open, Edit, and Play your Module if it is in the Modules
folder. Remember this for distribution, and you need to make sure that if you are
transporting it between multiple computers for editing you are grabbing the latest
iteration each time or else you risk losing your work.
________________________________________________________________________
www.BretWardle.com
8
Neverwinter Nights
Toolset Guide
Terrain Editing
1. Once you have your area open you can begin editing the terrain for the area
each tile set has different options for editing terrain but the Paint Terrain is the
green Cliff icon on the top of the right panel.
2. This tool will bring up three sections in the toolset panel list (Features,
Groups, Terrain), each of these sections have different elements you can
place.
3. You can move around your area with the mouse and Ctrl button. It takes a
second to get used to, but once accustom to it you can move around quickly.
________________________________________________________________________
www.BretWardle.com
9
Neverwinter Nights
Toolset Guide
4. Browse through
your possibilities
and place a few
objects or
boundaries. In the
toolset, if the icon is
red you cannot
place the selected
object, if it is green
you can the size
of the icon also
reflects the size of
the item you wish to
place.
5. You can right click
in the area to rotate
the direction of the
item you wish to place; this allows you to change direction of doors, rooms,
stairs, etc.
6. Continue editing terrain until you like the feel of your area.
7. To mark the starting location for your Module click the Blue Circle/Red
Arrow icon toward the top of the right panel, and click where you want the
start to be.
8. There can only be one starting location for a Module.
9. After saving, you can now quickly enter the game and begin playing by
pressing F9 Do so.
10. This will open the Neverwinter Nights game, Walk around your newly created
world and enjoy the surroundings, when finished press ESC and exit the
game.
11. Back in the Toolset, create a second area using the Area Wizard, your module
will now have two areas.
12. You can switch between the two areas by double clicking them in the left
panel of the toolset.
Linking Areas
1. On the edge of both of your areas use the Paint Terrain tool to create exits.
2. The name of these vary per tile set, but it should be something like Corridor
Stairs or Exit.
3. You will know it is an exit because it creates a blue wall, and an arrow, this
symbolizes an exit in the Aurora Toolset. These are how you link two areas
together.
4. Once created deselect the Paint Terrain tool, and you can right click the blue
wall. Do so, and select Properties.
5. The important tabs in this window are: Basic and Area Transition.
________________________________________________________________________
www.BretWardle.com
10
Neverwinter Nights
Toolset Guide
6. In the basic tab you need to set the Tag of the door you are editing, it must
be unique to the project or you will get an error when you play the game and
try to use it.
7. I suggest using a naming convention similar to KingsRoom2Courtyard and
then the other door you will link to would in turn be tagged
Courtyard2KingsRoom these tags ARE case sensitive.
a. Basically, a Tag is the way Neverwinter Nights knows what any
item is. All the items in your mod need to have a unique tag, and you
need to know that tag to be able to reference it in scripts or anything
else. Start your own tagging convention early, and use it for everything
you create. This will keep the Mod neat and organized.
b. Tags are the foundation of EVERYTHING in Neverwinter Nights, it
is the basis for calling items in scripts, setting up transitions, calling
blueprinted creatures, etc. You need to have a firm grasp on the
concept of tags to do anything in the toolset.
8. After setting this tag,
go to the Area
Transition tab, this is
where you determine
where this door will
lead to. In the radio
buttons select Door,
and in the Destination
Tag box type the Tag
of the door you want it
to lead to.
9. Now open the other
area you created an exit in and edit the properties of that door.
10. You will basically just swap the Tags you typed in the first one.
11. Place a starting location near one of the doors, save your progress, and press
F9 to test it.
12. You should now be able to navigate back and forth between your two areas in
game.
Conclusion
You now have the basic building blocks for a module, you can start to create your
maps, and link them together. Start to think about the scope of your final project and
how large you would like it to be. Just remember that for each area you link together
you need at least one objective to happen or else it is just a boring walk around.
All good Mods start with this step. You can then fill in all of the areas with the
people, triggers, enemies, and Stuff that make them come alive. Before you do that
make sure you can walk from the beginning of your mod to the end (and all places in
between), and all the way back again. Only after you have completed that should you
move on.
________________________________________________________________________
www.BretWardle.com
11
Neverwinter Nights
Toolset Guide
Plantables
Using Plantables
1. Open the Aurora Toolset and your module in particular. Load any of the areas
of your project you plan on filling in with NPCs or plantable items (weapon
racks, treasure, dead bodies, etc.).
2. The right panel of the toolset is the key to
placing items in your level, Scroll over
the row of icons at the top and notice
what they read (from left to right):
a. Paint Creature: Just as you would
expect, this is for placing people and creatures into your area.
b. Paint Doors: Placing doors in your level, more on that later.
c. Paint Encounters: This is for placing scripted encounters of enemies, we
will discuss it in another chapter.
d. Paint Items: Placing things like weapons, armor, and general "stuff" in the
level, more on this later.
e. Paint Merchants: This is used very little by most designers, there is a much
easier way to set up a merchant than this button that we will discuss later.
f. Paint Placeable Objects: This is for ambiance items like bodies, signs,
switches, etc. It is also for placing treasure chests, and other containers.
g. Paint Sounds: self explanatory, we wont discuss this in detail but play
with them and you can create some pretty neat effects.
h. Paint Triggers: These are used to call events, we will discuss them in
another chapter.
i. Paint Waypoints: These are basically placeholder location markers. They
are used for NPC paths, and scripting (i.e. - Make a secret chest appear at
Waypoint001).
3. First lets try painting some generic items into our level, click the Paint
Creatures button, and open a few of the lists that appear below.
4. Now select a creature or NPC from the list that you would like to place in the
level, any one will do for now.
5. Simply click in the area to place that item.
a. If you shift click you can place multiple copies of the same item without
having to re-select it in the list.
6. Placing things is as simple as that; these rules apply for creatures, items,
placeable objects, sounds, and waypoints (doors, encounters, merchants, and
triggers function a little different).
7. Select the Paint Items button, pull down the lists, and lay down a couple of
these things in your level.
8. Now do the same with the Paint Placeable Objects button.
________________________________________________________________________
www.BretWardle.com
12
Neverwinter Nights
Toolset Guide
9. Once you have these items placed, notice the buttons toward the bottom of the
toolset, the collection of arrows... These can be used to rotate the orientation
of any of the placed objects from above.
10. The last three buttons on this set are used for that purpose; try them now by
selecting an item and pressing a rotate button (the other arrows are for
navigation around the area, which really is much easier using the mouse and
CTRL button).
11. You can also delete an item by selecting it and pressing the delete key.
12. The next thing to realize with plantables is the ability to edit their properties...
this is the key to making them act the way you want.
13. Try right clicking one of the Painted Items (armor, weapons, etc) and select
properties.
14. Here you can edit all kinds of stuff about the object including its name (how it
displays in game), tag (what the game knows it as), appearance, traits,
properties, etc.
15. Mess with this properties window and get a feel for what can be done.
16. If you didnt already, place a treasure chest in your area (Under Placeable
Objects > Treasure).
17. Now right click it and select properties. You will notice that right under its
picture is an "Inventory..." button. Click it.
18. This is where you can edit what the player will find in the chest when they
open it; this applies to all things under that "Treasure" category.
a. Many other things have the same inventory button. Including people and
creatures.
19. The chests have a built in script attached to them than generates random other
treasure as well, the level of the goods found is based on the High, Low,
Medium, Unique groups within the Treasure section.
a. You can remove this script if you want to manually control everything that
is in the chest.
b. You could also create your own custom script for determining what is
inside.
20. You are going to create a new custom item for this exercise; we will learn a
bit more about this in another chapter, but for now click the "New..." button
towards the bottom.
21. In the list of Item Types select "Key" and click Next. Now name the new
key whatever you want and click "Next".
22. In the palette selection choose Special > Custom 1 and click "Next".
23. In the finish window check the "Launch Item Properties" box and select
finish; this will automatically take you to the Item Properties for that item.
24. In the item properties you can change appearance and many other things, but
the one thing you need to change in particular is the tag... change the key's tag
to: TestKey.
25. After you select "OK" to exit the properties window you go back to the chests
inventory window.
________________________________________________________________________
www.BretWardle.com
13
Neverwinter Nights
Toolset Guide
26. Now navigate to the newly created key in the right panel (Custom 1) and drag
it into the contents of the chest and then select "OK".
27. Now select "OK" again to close out of the chests Item Properties. Now the
chest you created contains a key that we will use in a second but first we
need something for that key to open.
Painting Doors
1. Painting doors is a little different than the other plantable objects. Doors can
only be placed in specific spots. These spots include entrances to buildings or
rooms, and inside of the "Doorway" designation in the terrain editor. If you do
not have either of these objects in your current area make one of them using
the terrain editing functions.
2. Now select the Paint Door tool, and select any one of the doors (preferably
one that matches the area aesthetically). You will see that in the area editor it
is spinning around. When the door is spinning it cannot be placed at the
current location, if it stops then it may be placed (It will snap to the object it
can be attached to).
3. Place your door somewhere in your level and then open its properties window
(right click).
4. Doors have some properties that other objects do not, for instance the ability
to be locked/unlocked and open/shut.
5. In the "Basic" tab mark your door as a "Plot" Item... this means that a player
cannot bash it down with force... they must open it with a key (or you can
open it via scripting).
6. In the Lock tab
check the "Locked"
button, and the "Key
required..." button.
In the "Key Tag"
field type the name
of the key we made
earlier (TestKey).
7. This makes the door
remain locked until
the user has obtained
the key we created
earlier.
8. If you want, you can set up the "Area Transition" tab just like you did last
chapter, this will make your door actually lead somewhere once opened.
9. Now save and press F9 to play the level.
10. Without getting the key, walk over to your locked door and try opening it, you
should not be able to... also try right clicking and using the radial menu to
"Bash" and "Unlock" the door... Neither of these should work either.
11. Now, go open the chest you created and get your magical key... go back to the
door and it should now open for you!
________________________________________________________________________
www.BretWardle.com
14
Neverwinter Nights
Toolset Guide
Conclusion
Although a level can be built with the default settings for items, the true modification
within this system is the use of the properties windows for these items. This allows you to
change the items to fit your particular purpose. It also allows for the creation of puzzles
and many other inventory based events. These add to your story be creating interactive
fiction elements.
Giving your items these details, back-story, and thought make your world seem alive and
inhabited by people like you and me.
________________________________________________________________________
www.BretWardle.com
15
Neverwinter Nights
Toolset Guide
6. After editing whichever properties you would like, click the "OK" button to
exit back to the area.
a. Just like we mentioned giving the items in your Mod character, the
NPCs and creatures need the same. The more attention you give this
aspect of your Mod the more immersive it will be.
7. A very quick way to give the NPCs a little life in your level is to give them
path nodes to walk around when they are not doing anything (as opposed to
standing still).
________________________________________________________________________
www.BretWardle.com
16
Neverwinter Nights
Toolset Guide
8. To do this simply click the character you want to walk around and with them
highlighted right click anywhere in the area to add a waypoint. These
Waypoints are automatically named in order to create a walking path for the
NPC.
a. The NPC will walk these waypoints in a circle, basically going from 1
to 2 to 3 etc. once the last one is reached they will head directly to
the first.
9. This can create a lot of life with very little effort, and is recommended for any
NPC that does not need to stay completely stationary.
10. If you have an NPC created that you would like to make a merchant it can be
easily done by right clicking again and selecting "Setup Store"... This brings
up the Merchant Wizard.
11. The first window is for setting up the base conversation that happens when the
player clicks the NPC... You will notice that there are also spots for you to
name the Conversation file and Script that will be automatically created
(Remember to use a logical naming convention or else import/export will be
impossible).
12. After filling in the fields press "Next".
13. This is where you choose the base store to use for the shop, these templates
have pricing and wares already setup and are a great way to provide the player
with a basic way to stock up on items before a quest... Select a template and
click "Next".
14. The next window is for editing the creatures faction. Factions are what
Neverwinter Nights uses to determine whether a person/creature is a friend or
a foe. For the time being just make the merchant you are editing part of the
"Merchant" faction and click finish.
15. Save your Mod and press F9 to test your new merchant.
16. Go back into your mod and notice that the Merchant Wizard created a little
flag icon where your NPC is standing... this is the actual Merchant item. By
right clicking this you can select Properties and then edit what wares the
merchant is actually holding (Use the "Inventory..." button just like chests).
You can also edit many of the stores other properties.
17. Make any adjustments you would like and exit out of the Merchant Properties
window.
18. You will also notice that on your left panel you now have both Conversation
and a Script file (as opposed to just the areas that were there before). The
Script will be discussed in another chapter, but if you double click the
conversation you will bring up the Conversation Editor
Conversation Editor
1. In the Conversation Editor you will see the dialog you created earlier. You can
expand and collapse the conversation by using the plus/minus button next to
each line.
________________________________________________________________________
www.BretWardle.com
17
Neverwinter Nights
2.
3.
4.
5.
6.
7.
Toolset Guide
Conclusion
Giving each NPC in your mod a path, a conversation, and a sense of belonging in the
world is imperative to making a player buy into your story. Without these things the
world will seem full of lifeless robots that have no purpose but to be filler to a town.
Dialog trees can become really complex, really fast. The key to keeping track of the
responses is to map it out on paper first. You can copy/paste whole branches in the
Conversation editor, but if you do not properly plan for it, you can easily make more of a
mess than good.
________________________________________________________________________
www.BretWardle.com
18
Neverwinter Nights
Toolset Guide
Neverwinter Nights
Toolset Guide
20. A series of popup windows appear asking various questions along the lines of
This area, or all areas? and Inside of containers or not? Read each of
these windows carefully to make sure you understand what they are asking
and click the appropriate answer.
21. You can now check the properties window for the placed items and see that
they have updated.
22. That is the basics to creating blueprints; this can be done with items, placeable
objects, sounds, creatures, encounters, and pretty much everything else in the
Aurora Toolset.
________________________________________________________________________
www.BretWardle.com
20
Neverwinter Nights
Toolset Guide
14. In the Palette selection screen you are just choosing which category you want
the custom item to appear in this choice is all yours and depends on how
you would like to organize your blueprints. After you select one click Next.
15. The next window (Creature List) is where you are choosing which possible
creatures can be spawned by walking through the trigger you are about to
create.
16. In this list switch over to the Custom tab and add both of your custom
creatures to this list.
17. In the list you will see the objects Challenge Rating, Name, Tag, ResRef, and
a Unique flag. This Unique flag tells the encounter whether only one of these
objects can be spawned per encounter.
a. An example would be if you want to create a goblin encounter, but you
only want the possibility of there being one goblin shaman in that
group, you would make your shaman Unique in this list.
18. Make one of your creatures Unique and click Next, select a name for your
new blueprint (make it descriptive like HardSpiders or GoblinRangers). Also
check the Launch Properties button.
19. In the properties window that comes up you can tweak the way your new
encounter functions. The most important sections of this window are as
follows:
a. Min/Max creatures determines how many creatures will be spawned
this will be within the range you set, but the players level will increase
the likelihood of more creatures
b. Spawn Option determines whether the trigger created will fire once, or
continue to fire multiple times
c. On the Creature List tab you can modify the creatures available to
spawn
________________________________________________________________________
www.BretWardle.com
21
Neverwinter Nights
Toolset Guide
Triggers
1. Now we are going to look at another kind of trigger event triggers. These
are used to call a scripted event, in the same fashion as calling an enemy
encounter.
2. These are used for all kinds of things like: Making an NPC walk over and talk
to you when you enter, playing a sound or effect upon entering, Make a door
swing shut upon entering, etc. The possibilities are endless (by endless I mean
within the limits of the toolset ) .
________________________________________________________________________
www.BretWardle.com
22
Neverwinter Nights
Toolset Guide
3. Select the Paint Triggers tool, and in the drop down list select Generic > New
Generic. You can now paint the trigger just like you did for the encounter, do
so now.
4. After placing it right click on the trigger and select Properties. In this
window change the name and the tag so that you can easily select it later.
5. The important part of these trigger properties is the Scripts tab, here is where
you attach what these triggers actually do. The names of the events are pretty
self explanatory (See the Scripting Cheat Sheet in the appendix for an
explanation), we are going to use the onEnter event for this example.
a. The onEnter event triggers the desired script when the player walks
into the trigger
6. Click the Edit button next to the onEnter event, this will open the Script
Editor.
7. We will learn more about scripting in the next chapter, but for now you are
going to create a basic debug script to make sure your trigger is firing
properly it will simply display simple text above the players head.
8. Your script will contain the following:
void main()
{
object oPC=GetFirstPC();
FloatingTextStringOnCreature("Test Trigger 1", oPC);
}
9. We will cover more fully next chapter how this script breaks down, but for
now look at it this way:
a. The object statement is simply setting a variable type of object, and
setting it to the players character.
b. The FloatingText statement just tells the system what to display,
and over whose head to display it.
10. After typing in the commands above save and compile your script (Top Left
of the scripting window remember to name it efficiently). You will see a
message in the bottom window telling you whether or not your script
compiled properly.
11. You can then click the Exit button to go back to the trigger properties
window, you will see that your script has been automatically attached.
12. That is the basics of event triggers you will now see the script you created
in your assets list and can edit it from there when you want to make it do what
you originally intended.
13. Save your Mod, and press F9.
14. Walk around your world and make your way through the encounter trigger
you created. Also walk through the debug trigger you made also (You should
see the text appear).
________________________________________________________________________
www.BretWardle.com
23
Neverwinter Nights
Toolset Guide
Conclusion
Blueprints are the key to saving tons of
time and headaches in the Aurora
Toolset. By using these early and often
you can make your work down the road
very very easy. Imagine if once you get
to balance testing your mod you realize
that the goblins are a bit too easy
(happens ALL the time). Now imagine
changing the spells, stats, armor, etc on
every one of the 150 goblins
individually Now drop that thought
because you were smart and made the
goblins a Blueprint, you only have to
change it once!
Debug scripts, like the one you just made, are good for determining whether your
trigger is working properly in the first place in your Mods. It is also great to use as a
place holder Script. You can make a whole bunch of these with different Text,
place them all where they need to be linked, and then when you are ready simply edit
the script file and you are set! Building your Mod in iterative chunks like this is by far
the most effective and cleanest way to go.
________________________________________________________________________
www.BretWardle.com
24
Neverwinter Nights
Toolset Guide
Scripting
Script Placement
15. Open the Aurora toolset and open your Mod in particular.
16. You should still have your test script from the last chapter in your mod (The
one that places Test Trigger 1 above the player); we are going to start by
attaching that script to a couple of different calls to see how else it could
work.
17. First, place a starting location near one of the area transitions in your level.
18. Then open the area properties for that area and go to the Events tab.
19. Here you will see all the different ways you can attach a script to an area in
your level (See the Scripting Cheat Sheet in the Appendix for explanations).
20. Attach your test script to
the onEnter call of the
area by typing in the
name of the script; press
OK to exit back to the
editor Save and press
F9 to play.
21. Exit the door you should be nearby, and then re-enter the area as you enter
the area you should see the pop-up text appear.
22. Exit the game and go back to the editor.
23. Remove the script from the onEnter call, and add it to the onHeartbeat call.
a. This call will run whatever script is placed here every 6 seconds. Most
scriptable items in the game have this call.
24. Save the mod and press F9 to
play You should see the text
pop-up every six seconds. This
persists wherever you go in the
mod.
a. For this reason you need
to be very careful when
using onHeartbeat
scripts. They will run
every six seconds,
whether you are near the
item/area or not. This can
become very taxing on
lower line computers.
25. Exit the game and go back to the
tool set. Remove the test script
from the onHeartbeat call.
________________________________________________________________________
www.BretWardle.com
25
Neverwinter Nights
Toolset Guide
26. Now open up your module properties window and go to the Events Tab this
is a much larger list. Place the test script in the onAquireItem call.
a. This call fires each time you pick up an item in game as you will soon
see.
27. Move your starting location next to an item you have on the ground
somewhere in your level (if you do not have one, simply place a temporary
item on the ground).
28. Save the Mod and press F9 to test it. When in game pick up the item by the
player you will see the text appear. Now open your inventory (Press I)
and try dropping and picking up items. Each time you pick up an item you
will see the text.
29. Exit the game and go back to the toolset. Open the Module properties again
and add the script to the onPlayerEquipItem, onUnAquireItem, and
onPlayerUnEquipItem calls Go back into game and you will see that this
does just what you would expect (the text appears whenever to acquire, drop,
equip, or un-equip an item).
30. Go back to the toolset and remove all the calls to the test script.
31. Place a temporary enemy near the starting location you have, and open the
enemies properties go to the Scripts tab and admire the many many choices
you have (again, see the Scripting Cheat Sheet in the Appendix).
32. Place the test script on the onPhysicalAttack call. Now save and go back into
the game and you will see that as you attack the enemy the text will pop-up.
33. Exit the game and go back to the tool set.
34. As you can see, there are many places to attach a script in the Aurora
toolset But we want to do more than just show a text string over the players
head, right?
Scripting Primer
1. Before you can really start scripting you need to know some basics with the
Aurora Script syntax. For this guide I have assumed that you have a very basic
knowledge of some basic programming concepts including: variables,
operators, and functions If you do not understand these concepts search
them out on the Internet or on NWN Lexicon. The scripting Cheat Sheet in the
Appendix of this guide is also very helpful.
2. The language the Aurora Toolset uses is called NW Script, it is similar to C
based languages or Java.
3. NW Script can store 5 types of variables:
a. Objects: These are actual objects in the game stored as a variable
(Very handy!).
b. Location: These are location coordinates stored as its own variable
(Again, very handy).
c. Int: Your standard Integer variable any whole number.
d. Float: your standard floating decimal number variable any number
using a decimal point.
________________________________________________________________________
www.BretWardle.com
26
Neverwinter Nights
4.
5.
6.
7.
Toolset Guide
void main()
{
int intHealth = 50;
}
8. As it stands however, that value does nothing since there is nothing else in our
script And even more so, It can only be referenced in THAT script, no
others within our Mod.
9. To use variables throughout different scripts, and to put these variable to use
we have to use function calls.
10. NW Script has thousands of built in functions, these calls are what actually do
stuff in NWN. There are a couple of great resources to check out to see a list
of what all of these are, and how to use them:
a. www.NWNLexicon.com: This online guide has searchable and sorting
functions to find what you need regarding any of the functions in NW
Script. It is the go to place
for any information on NW
Script.
b. The Aurora Toolset Scripting
tool itself has a built in
search function on the right
side. This allows you to
search for functions. It will
then give you the syntax for
the function (bottom of the
window), and you can also
double click it to add it to
your current script at the
cursor location.
11. There are so many functions to use, and we do not have the time to go over
them all that research is up to you!
________________________________________________________________________
www.BretWardle.com
27
Neverwinter Nights
Toolset Guide
12. One concept we want to look at is storing variables locally so that they may be
used across multiple scripts.
13. To do this we need to use the SetLocal and GetLocal functions these
functions exist for all five variable types. Take the following script for
example:
void main()
{
SetLocalInt(GetFirstPC(), intHealth, 50);
}
14. This script sets the same intHealth variable as before, but it stores it on the
Player Character, thus we can retrieve it in any other script we see fit.
15. We can then retrieve the value using a GetLocalInt call in the same fashion.
Say for instance we wanted to get its current value, and subtract 5:
void main()
{
int intHealth = GetLocalInt(GetFirstPC(), intHealth);
intHealth = intHealth - 5;
SetLocalInt(GetFirstPC(), intHealth, intHealth);
}
16. If we retrieve the variable and edit it in some way all we need to do is use the
SetLocalInt variable again to reestablish the changed value again as shown
above.
17. You now understand the basic building blocks of scripting, as well as all the
various places you can attach scripts. Unfortunately there are just way to
many possibilities to cover in this guide. The next section will look a little
more into script writing using some very simple examples.
18. Another great tool for NW Scripting is the Script Generator by Lilac Soul. It
uses a very simple interface of buttons and drop downs to write scripts for
you. If you are new to programming or just need some help with syntax it is a
fantastic tool. The download link can be found in the appendix of this guide.
Script Writing
1. In the Aurora Toolset, create a new script by right clicking the Script section
in the left column of the toolset.
2. Re-create the following script in the toolset:
void main()
{
object oTarget = GetObjectByTag("TestNPC");
object oPC = GetFirstPC();
AssignCommand(oTarget, ActionMoveAwayFromObject(oPC, TRUE, 100.0));
________________________________________________________________________
www.BretWardle.com
28
Neverwinter Nights
Toolset Guide
}
3. This script simply makes an NPC run from the player when called.
a. The first line and bracket on line two simply opens the script, you can
see the script is then closed on the last line.
b. The two object calls simply set two variables of type object one is
set to the player character (oPC), and the other is set to the NPC
(oTarget).
c. The Assign Command line will assign the Action Move Away From
Object command to the NPC it also indicates that the object to
move away from is the PC.
4. Delete the temporary enemy from the level and replace it with a generic NPC,
open that NPCs properties and change its tag to TestNPC (as was used in
the script above).
5. Now attach the new script to that NPCs onHeartbeat call, thus making the
NPC run from the player constantly.
6. Save the Mod and go into game to test this out.
7. Exit the game and go back to the toolset, open the new script and change the
object call in the AssignCommand line from oTarget to OBJECT_SELF.
8. This is a built in variable call in the Aurora Toolset that automatically selects
the object the script is tied to. For this reason you would now only be able to
attach this script to a creature.
9. Now quickly create a blueprint of the NPC you created and place 10 or so of
them right by the other (by creating this blueprint they should all have the
script attached to them automatically, and by changing the call to
OBJECT_SELF the script will automatically force the action to the object its
attached to).
10. After placing the NPCs save the Mod and press F9 to play it. Walk toward
the crowd of people and watch them flee in the terror of your ominous glory.
Conclusion
Scripting is the lifeblood of the Aurora Toolset It is how you make anything in
game behave the way you want. Great Mods have great scripting. It is what makes a
mod unique. If all you do is make the engine take over every little thing in the World
it will feel very pre packaged and boring. Using scripts you can customize the
behavior and actions of almost anything in your game world.
________________________________________________________________________
www.BretWardle.com
29
Neverwinter Nights
Toolset Guide
Dialog Trees
Dialog Editor
1. Open the Aurora toolset and open your Mod in particular.
2. You are going to create journal entries, tie them to a dialog, create dialog
scripts, and ultimately design a simple fetch and return quest with dynamic
conversations and a compelling battle Seems like a lot, but with the Aurora
toolset, it is fairly easy.
3. To begin this, lets take a look at the Journal editor. Select Tools > Journal
Editor. This editor works somewhat similar to the Conversation Editor in the
fact that you add nodes to a root, and then add branches to that node. Basically
what the system does is adds these lines to the players Quest Journal in game
so that they can track what quests they have accepted and/or completed.
4. Add a new Node by highlighting the Root and clicking the Add button on
the left side. This is your base node and will be displayed as the topic in the
journal.
5. Change the Name to Retrieve the Gem.
6. Change the Tag to RetGem.
7. The other
information is not
important to this
exercise.
8. With your base node
selected, click the
Add button three
times to add three
entries to your
journal.
9. Make Entry001s
Text read: I have
accepted the task of
retrieving a gem for a civilian, a beast down the trail apparently stole the
gem.
10. Make Entry002s Text read: I have killed the beast and retrieved the gem. I
must now return to the civilian.
11. Make Entry003s Text read: I have returned the gem to the civilian and
received my reward.
12. Also make Entry003 have the Finish Category box checked this is what
makes the quest go from Accepted to Completed in game.
13. That is the basic idea of creating journal entries in game this is the key way
to convey information regarding tasks and information to your players (this
transcends most game genres, and is a useful system in some form in almost
all games).
________________________________________________________________________
www.BretWardle.com
30
Neverwinter Nights
Toolset Guide
14. Make sure you click the Apply button in the Journal Editor OR YOUR
WORK WILL BE LOST then click OK.
15. Place a generic NPC near your starting point, and change its properties how
you see fit make sure that your Faction is set to Commoner and change the
tag to GemQuestGiver make the Name something that looks interesting
because it will show up in the game.
16. If you have been following along in the chapters you should have already
created a blueprint for a Gem Make another one! Make the Tag read
QuestGem and make the ResRef read questgem.
17. Now open the Conversation Editor. Since you know how to use this tool I will
not explain it, but make the speaker tag for the conversation read
GemQuestGiver (the generic NPC you created), and then re-create the
following conversation:
18. You will notice the use of tokens (the <Class> calls). What these do is
dynamically change to make them fit the player of your game. You can place
these in any conversation by simply right clicking in the text box and selecting
the desired token from the list.
19. Now we are going to tie some aspects of the Journal to this conversation.
Because it is used so often there is a distinct tab for doing this in the
Conversation Editor.
20. Select the You may call me line and go to the Other Actions tab in the
conversation editor. Here can control the Journal Entries given by various
________________________________________________________________________
www.BretWardle.com
31
Neverwinter Nights
Toolset Guide
dialog. Select Retrieve the Gem from the Journal drop down list and make
sure it reads 1 in the entry value.
21. Now go to the Yes, I have line and do the same thing, but make the
journal entry read 3 (this will make these lines give, and complete the
journal respectively).
Dialog Scripting
1. You may have
noticed that
this dialog has
two starting
points
How does
the game
determine
which one to
use? you
may be asking
yourselves.
Well, you are about to utilize the Text Appears When tab.
2. Highlight the Hello Again line and go to this tab, and press the Edit
button. You only want this text sequence to appear if the player has accepted
the quest. Therefore you are going to write a simple script that makes this
check. It will read as follows:
int StartingConditional()
{
object oPC = GetPCSpeaker();
int nInt;
nInt=GetLocalInt(oPC, "NW_JOURNAL_ENTRYRetGem");
if (nInt < 1)
return FALSE;
return TRUE;
}
3. This script just checks if the player has gotten to a certain point in the quest
and will display the text if this evaluates to true.
4. Now highlight the Yes, I have line and click the fancy Wizard Hat icon.
Select the Item in Inventory checkbox and click next then enter the
QuestGem tag and add it to the list. Then click next and name your script.
5. This makes the Yes, I have line only appear if they actually have the gem in
their inventory (which we will script to happen shortly).
6. Now highlight the Here is your reward and select the Actions Taken
tab you are going to create a script that gives the player some gold and
XP To do this click the Magical Wizard hat again.
________________________________________________________________________
www.BretWardle.com
32
Neverwinter Nights
Toolset Guide
7. Select the Give Rewards check box and press next, and then enter 500 in the
gold text box and 1000 in the XP text box. Click next and name your script.
8. That is all that needs to be done with the Journal and Conversation editor
Open up your NPC properties, and make sure the conversation you just made
is the default conversation. Now lets script the dangerous beast you have read
so much about.
9. Navigate a ways down from the NPC you created and place some sort of
enemy. Open the properties window and adjust the statistics, name, etc as you
wish. The major thing we are going to deal with here is the onDeath script
go to the scripts tab and click the Edit button next to this script.
10. You need to add the following chunk to the end of this script (before the close
brackets:
object oPC = GetFirstPC( );
// This simple while statement makes the script reflect on the PC if the creature is
// killed by any party members
while (GetIsObjectValid(GetMaster(oPC)))
{
oPC=GetMaster(oPC);
}
if (!GetIsPC(oPC)) return;
AddJournalQuestEntry("RetGem", 2, oPC, TRUE, FALSE);
CreateItemOnObject("questgem", oPC);
11. This script updates the players journal, as well as places the gem in their
inventory automatically.
12. Save the Mod and press F9 to play.
13. Test your new scenario, paying special attention to your Journal (Press the J
Button). Also try the dynamic dialog tree. If it does not work try debugging it.
Conclusion
As you can see it doesnt take much to create a fairly simple side quest (or even a
main quest for that matter). Using the power of Conversations, Journal Entries, and
Scripting in conjunction with one another is the true power of the Aurora Toolset.
Little details like this make a good Mod, great! Filling the world with people who are
alive and talk, and maybe even have these kinds of favors to ask of you make the
world believable, and enjoyable.
________________________________________________________________________
www.BretWardle.com
33
Neverwinter Nights
Toolset Guide
Cutscenes
What is Cutscene Mode
1. Cutscene Mode in the Aurora toolset is a way for you to turn off the Heads Up
Display (HUD), and controls in the game.
2. This allows you to control everything via scripting and tell a story without the
player possibly missing or breaking it.
3. This mode is turned on and off via scripting, but because there is a full loss of
control in game you have to script every single thing that will happen.
4. Also, If your call to turn the Cutscene Mode off never gets reached (script
error, or bad syntax) then the user will be stuck without controls and needs to
quit the game via CTRL+ALT+DEL (very very bad).
5. This mode also has built in calls for fading to black, and other neat camera
controls which we will look at right now
________________________________________________________________________
www.BretWardle.com
34
Neverwinter Nights
Toolset Guide
Conclusion
Adding cut scenes to your Mod can add depth, and allow you to tell a story without
player control. By doing this you can focus on said storytelling and not be bothered
with HUD or the player simply walking away from the story. This power is a very
fine line however, players want to play they do not want to be stuck watching a
movie. Use cut scenes for imperative information only, dont get in the habit of
making long scenes with tons of information.
________________________________________________________________________
www.BretWardle.com
35
Neverwinter Nights
Toolset Guide
________________________________________________________________________
www.BretWardle.com
36
Neverwinter Nights
Toolset Guide
________________________________________________________________________
www.BretWardle.com
37
Neverwinter Nights
Toolset Guide
5. The next step is saving your Final Version of the Mod and then compressing it
to a .zip file.
a. Because Mod files are just a bunch of references they actually zip up
really well They end up around 25% of the total size after zipping.
This is important because when you distribute on the web, size
matters.
6. Some people like to include a ReadMe.txt file in their zip this is your call. I
have seen some that advertise other Mods, or ask for donations Some
people just duplicate the Mod Description we talked about early. Whether or
not you include this file is up to you.
7. After you have this file it is time to upload it to the web where you do this
and how you advertise it is totally up to you.
8. I would start in the Bioware forums for suggestions and discussion channels,
but there is not too much more insight I can give.
Conclusion
Congratulations on creating a Mod in Neverwinter Nights! The community around
this game is large, and finding people to play your game is easy if you look in the
right places. After you have gone through this guide, take some extra time on your
next mod an plan everything out. Now that you more wholly understand what the
toolset is capable of, it will allow you to brainstorm and work more efficiently.
Building Mods takes practice, and the more you work with the toolset the easier it
will become. Keep making Mods and they will increase in quality with each one!
________________________________________________________________________
www.BretWardle.com
38
Neverwinter Nights
Toolset Guide
Appendix
NWN Printable Scripting Cheat Sheet
________________________________________________________________________
www.BretWardle.com
39
Neverwinter Nights
Toolset Guide
This script runs every time the player puts an item in their inventory. Usually uses an evaluation statement to
determine what item was acquired
onClientEnter
onClientLeave
onCutsceneAbort
onHeartbeat
Runs every 6 seconds (Be very careful with using these in excess)
onModuleLoad
onPlayerDeath
onPlayerLevelUp
onPlayerRespawn
Ran when the player respawns after dying (as opposed to reload from save point)
onPlayerRest
Ran when the player enters the area (will run every time unless otherwise specified)
onExit
onHeartbeat
Runs every 6 seconds (Be very careful with using these in excess)
Trigger Scripts
onClick
Ran when the user clicks on the trigger (the trigger must be marked as clickable in its properties)
onEnter
onExit
onHeartbeat
Runs every 6 seconds (Be very careful with using these in excess)
This is a unique type of script that is ran before a dialogue line is displayed if it evaluates to TRUE then
the line is displayed, if FALSE the line is not displayed
Actions Taken
This script is ran when the line of dialogue it is attached to is ran (In the case of a response from the player, it
is when the text is selected, not displayed as a choice)
Ran each time a combat round ends (This works a lot like onHeartbeat, but only in combat scenarios)
onConversation
onDamage
onDeath
onDisturbed
Ran when an NPC is targeted for an attack, conversation, or any other obtrusive behavior
onHeartbeat
Runs every 6 seconds (Be very careful with using these in excess)
onPerception
Ran when the player enters the creatures perception range (this range is set in the properties)
onPhysicalAttacked
Ran when the creature is attacked by physical means (not status effects like poison)
onRested
onSpawn
Ran when the creature is first spawned (this never happens if the creature is pre-placed in the level)
onSpellCastAt
________________________________________________________________________
www.BretWardle.com
40
Neverwinter Nights
Toolset Guide
Variable Declaration
object, location, int, float,
When creating a variable that will be used in the current script alone you can declare it with this
string
SetLocalInt( )
or
int iHealth = 50
or
To set a variable that will be accessed from another script, and possibly even another area you must
store it on an object (usually the player character). To do this you declare it with this script and
pass it the object to store it on:
SetLocalInt(oPC, DeathCount, 0)
In the above example oPC is the object where the Integer is stored, DeathCount is the variable
name and 0 is the initial value. This functions for variables of all types, just change the call
GetLocalInt ( )
To retrieve a variable stored on an object you can used this call in conjunction with the object on
which the variable is stored, as well as its name:
GetLocalInt(oPC, DeathCount)
I can then utilize/manipulate the variable as needed within the current script. to save it back to the
object I must then use the SetLocalInt( ) call. This functions for variables of all types, just change
the call.
When calling an action from a trigger or conversation (rather than a creature itself), you must put
the action inside of this call or else it will try to run the action on the trigger
ActionPlayAnimation( ) and
These will play a specific animation on the specified item. By adding the Action to the start of
PlayAnimation( )
the call you will add it to the cue otherwise it will force the animation right then.
ActionLockObject( ) and
Used to lock/unlock doors and chests. Usually paired with the GetObjectByTag( ) call:
ActionUnlockObject( )
ActionLockObject(GetObjectByTag(TestDoor))
ActionStartConversation( )
This forces the start of a conversation by passing it a person to talk TO, and a conversation file
this will almost always need an AssignCommand():
AssignCommand(oTalker, ActionStartConversation(oTalkee, Conversation1))
ActionMoveToObject( ) and
ActionMoveAwayFromObject()
ClearAllActions(TRUE)
This is needed when calling any action after a battle; otherwise your cool down will prevent you
from doing the action required If your Mod displays You are too excited to talk it means you
need to make this call beforehand
ChangeToStandardFaction( )
This changes the target creature to one of the four standard factions upon call the four standard
factions are as follows: 1:Hostile, 2:Commoner, 3:Merchant, 4:Defender
CreateObject( )
This spawns an object by passing a ResRef, a location, and a new tag for the object:
CreateObject(ResRefString, oLocationVariable, NewObjectsTag)
FloatingTextOnCreature( )
GetItemActivatedTarget( )
GiveXPToCreature( ) and
Simply gives XP or gold to the creature, you just pass it the creature and the amount:
GiveGoldToCreature( )
GiveXPToCreature(oPC, 1000)
GetObjectByTag( ) and
Returns an object value or location value for whichever item has the tag specified:
GetWaypointByTag( )
GetObjectByTag(TestTag)
AddHenchman( ) or
Adds an NPC to the players party by passing the master and the henchman:
RemoveHenchman( )
AddHenchman(oMaster, OBJECT_SELF)
________________________________________________________________________
www.BretWardle.com
41
Neverwinter Nights
Toolset Guide
Resources
www.NWNLexicon.com The go to source for all things scripting in the Aurora
toolset. Includes the syntax and examples for every function in the toolset.
nwn.Bioware.com/forums The Bioware Neverwinter Nights forums. Great place
to advertise your Mod, as well as ask for help with any issue you may be having.
nwvault.ign.com/fms/Download.php?id=68700 This is a handy script writing
tool I use fairly often. It takes care of some of the syntax issues you may be having.
http://files.bioware.com/neverwinternights/updates/windows/english/NWNEnglis
h1.69HotUUpdate.exe This is the address for the 1.69 Update to the NWN Game.
There are a lot of great additions to the toolset with this update Highly
recommended!
________________________________________________________________________
www.BretWardle.com
42