Neverwinter Nights

Wherein some of the mysteries of developing wondrous objects
for Neverwinter Nights are revealed.
Eligio Sacateca
[email protected]
http://home.cogeco.ca/~eligio/
Table of Contents
Introduction ...................................................................................................................................... 4
The Tools......................................................................................................................................... 5
3D Modeling ................................................................................................................................. 8
Weapons........................................................................................................................................ 10
Part 1: Understanding How NWN Represents Weapons .......................................................... 10
Part 2: A Rose by Any Other Name ........................................................................................... 11
Part 3: Creating the 3D Model ................................................................................................... 16
Part 4: Creating the 2D Weapon Icon ........................................................................................ 21
Part 5: Using a Hakpak .............................................................................................................. 24
Part 6: The Weapon Resource File............................................................................................ 28
Part 7: The Weapon Blueprint.................................................................................................... 36
Part 8: Special Touches ............................................................................................................. 37
Part 9: Models that bend............................................................................................................ 39
Character Portraits......................................................................................................................... 40
Part 1: Understanding How NWN Represents Portraits ............................................................ 40
Part 2: Creating Your Portrait Files ............................................................................................ 40
Part 3: Using Your Portrait for a PC........................................................................................... 42
Part 4: Using Your Portrait for a NPC ........................................................................................ 43
Custom Voicesets.......................................................................................................................... 48
Part 1: Understanding How NWN Represents Voices............................................................... 48
Part 2: A Rose by any other Name ............................................................................................ 52
Part 3: Updating Sound Files ..................................................................................................... 55
Part 4: Creating a New Voiceset................................................................................................ 56
Items without Models ..................................................................................................................... 60
Part 1: Understanding How NWN Represents Items................................................................. 60
Part 2: New Icons for Existing Items .......................................................................................... 61
Part 3: New Item Resources ...................................................................................................... 63
Part 4: Other Items..................................................................................................................... 66
Spells ............................................................................................................................................. 67
Part 1: The Spell Icons............................................................................................................... 67
Part 2: The Spell Resource........................................................................................................ 68
Part 3: The Item Property Spells Resource ............................................................................... 75
Part 4: The Spell Script .............................................................................................................. 76
Part 5: Packaging it all up .......................................................................................................... 80
Custom Armor and Clothing .......................................................................................................... 81
Part 1: Understanding How NWN Represents Armor................................................................ 81
Part 2: That Rose Thing Again................................................................................................... 83
Part 3: Finding the Armor Model and Texture............................................................................ 86
Part 4: Creating a New Texture ................................................................................................. 89
Part 5: The Armor Resource Files ............................................................................................. 91
Part 6: NWNArmory ................................................................................................................... 92
Part 7: Additional Notes ............................................................................................................. 93
Part 8: A note on clothing........................................................................................................... 94
Part 9: Notes on heads and helmets ......................................................................................... 94
Creatures ....................................................................................................................................... 96
Part 1: Understanding How NWN Represents Creatures.......................................................... 96
Part 2: The Creature Resource File ........................................................................................... 98
Part 3: Creating the 2D Portrait................................................................................................ 103
Part 4: Creating the 3D Model ................................................................................................. 105
Part 5: Animation...................................................................................................................... 109
Part 6: Soundsets..................................................................................................................... 125
Part 7: The Creature Blueprint ................................................................................................. 126
Part 8: Danglymesh ................................................................................................................. 127
Part 9: Skin and Bones ............................................................................................................ 128
Custom Races ............................................................................................................................. 133
Part 1: Custom Race Resource Files....................................................................................... 133
Part 2: The Dynamic Character Model .................................................................................... 136
Visual Effects ............................................................................................................................... 142
Part 1: The Model File.............................................................................................................. 142
Part 2: Emitters ........................................................................................................................ 143
Part 3: The Visual Effects Resource File ................................................................................. 151
Other Tutorials ............................................................................................................................. 154
Ambient Music (BMU files)....................................................................................................... 154
Area Load Screens .................................................................................................................. 155
Doors........................................................................................................................................ 155
Introductory Movies.................................................................................................................. 155
Placeable Items........................................................................................................................ 155
Placeable Sounds (WAV files) ................................................................................................. 156
Texturing .................................................................................................................................. 156
Tilesets..................................................................................................................................... 156
Tilesets by Retexturing ............................................................................................................ 157
Other Content and Modeling Tutorials ..................................................................................... 157
Notes on Other .2da Files............................................................................................................ 158
Feats.2da ................................................................................................................................. 158
Tools Guide ................................................................................................................................. 162
Zoligato's NWN Viewer ............................................................................................................ 162
Bioware's Hakpak Editor .......................................................................................................... 162
Modeling Tools......................................................................................................................... 165
Bioware’s DDS Compression Tool........................................................................................... 166
DDSTools................................................................................................................................. 167
Tlkedit....................................................................................................................................... 168
Special Effects Reference ........................................................................................................... 170
Spell Audio Effects ................................................................................................................... 171
Spell Visual Effects .................................................................................................................. 180
Scripting – Visual Effects ......................................................................................................... 191
Change History ............................................................................................................................ 207
The Aurora Toolset for Neverwinter Nights (NWN) provides the building blocks for your custom
modules – from tilesets to create your dungeons to creature templates for designing your
encounters. The toolset is both flexible and limiting at the same time. Flexible - because you
assemble the building blocks in whatever fashion you desire to create your world. Limiting because the blocks are not as varied as your imagination.
However, with the right add-on tools, those outer limits can be pushed as far as your time and
imagination will take you. Creating custom content for Neverwinter Nights can seem like a
daunting task but the rewards are great. And it is not as complex as it sounds – not after you
understand how all the bits and pieces of the toolset fit together.
This tutorial attempts to show you how some of the pieces of the puzzle fit together. It does not
cover all types of custom content; there are already some good tutorials available that I reference
near the end of this document.
Notes: This tutorial is still under construction. I will cover additional tools and details for different
types of custom content in future versions. Any notes or quirks or bugs in the toolset that I
mention in this document exist at least as of version 1.29 of the NWN game.
" #
This tutorial and what I have been able to piece together about developing custom content builds
upon what others have done: it is compiled from various sources on the Neverwinter boards, bits
and pieces of tutorials, and personal experimentation. Sources are varied and there are too many
to name them all. However, let me acknowledge now some of the key contributors:
•
Danmar, primarily for information on weapon modeling
•
Conjumen, for information on custom portraits
•
Ddraigcymraeg, for information on voicesets
•
Zoligato and his wondrous NWN Viewer.
•
Kaine, for detailed information about spells.
•
SamJones and Lisa, for explaining PLT files.
•
Haelix and Jupp for explaining creature creation and animation.
I will confess up front to having used portions of tutorials and sound bites from these people to as
a starting point and then sought to clarify and expand them for my own use and the general NWN
public. And there are more whose ideas and posts have influenced this tutorial. Forgive me in
advance for not being able to include all of you. Thanks to Jay Wataniumak and Bioware for filling
in some of the holes in previous versions of the document.
$
Please note that these tutorials are provided as-is, with no guarantees that they will be
particularly useful for what you wanted to accomplish. Also, the author(s) cannot be held
responsible for damages done to your computer, applications and/or game installation by
following these instructions. Caveat emptor.
!
%
%
%
If you wish to create custom content you will need a few tools in addition to the Aurora toolset.
'
( ) *
This viewer (http://nwvault.ign.com/Files/other/data/1026158289673.shtml) lets you
browse the NWN resource files (all of the model, textures, pictures, text, etc.) that make up
the content of the game. It also allows you to extract these files so that you can modify
them or use them as a base for making your own custom content.
+
( , #- #
A hakpak is a file (with the extension .hak) where
you add custom content files to either supplement
or override standard Bioware content. For
example, you can use a hakpak to make
Neverwinter’s standard goblin a different color
(overriding standard content) or to add a new
monster such as an Owlbear (adding new
content). To use your hakpak you must add it as a
resource to your module. For instructions on how
to do this, refer to the Hakpak Editor section at the
end of this guide.
Warning
•
Another way to override Bioware
content is to drop a file into the
/override folder of your game
directory. However, you should not do
this.
•
Hakpaks are much cleaner – they can
group many overridden files into one
package and, more importantly, they
are specific to a module.
•
Putting a file into the /override
directory will override it for all modules
you play on that computer which may
have unintended consequences on
other people’s games.
•
In general, don’t use the /override
directory. The only valid use of the
/override directory that I would
recommend is for temporarily and
quickly testing your content without
having to go through the process of
updating a hakpak, saving it, etc. Once
you have finished testing, don’t forget
to load the new content into a hakpak
and take it out of the /override
directory.
Anybody who plays your module will need a copy
of your hakpak so be sure to distribute it along with
your module itself.
.
%
The complexity and expense of the modeling tools
you use is completely up to you and what kind of
custom content you want to build. You have many
options:
a) Simple copying and retexturing. If all you want
is the ability to copy models, rename them and
retexture them, there is a simple utility you can
use. NWN can read either binary or ASCII
versions of the model files (most of the NWN
files are compiled into a binary format). The reason for turning them into ASCII files is
that you can edit the ASCII model file with a text editor and change simple things like
the texture file used and the model name
(make sure you change all instances).
•
NWNMdlComp
(http://www.torlack.com/index.html?topics=
nwnmdlcomp_readme) will take a binary
model file and turn it into an ASCII model
file and vice-versa.
&
Notes
•
I no longer reference c-tools because
NWNMdlComp is a more up-to-date
version of what the original program
could do.
%
b) If you want to try modeling work without an expensive modeling tool, try gmax
(http://www.discreet.com/products/gmax/). It is a subset of 3ds max for noncommercial game designers and it is available free. To use it for NWN you also need
to pick up the Wayland’s GMax MDL import/export script
(http://nwvault.ign.com/Files/other/data/1029721132840.shtml) and NWNMdlComp
(above). Gmax and its tools do not support creation of emitters (an advanced topic for
NWN modeling so you may not care since most models do not use emitters).
c) There are low cost modeling tools available on the net. Milkshape 3D
(http://www.swissquake.ch/chumbalum-soft/) is a low polygon 3D modeler originally
made
for
Half
Life.
Milkshape
import/export
scripts
(http://www.augustweb.com/~anim8r/html/closet_tools.htm) are available to support
NWN and a host of other formats. I have read that the import/export plug-ins for
Milkshape3d appear to have been made for the beta toolset before the game was
released. They rotate body parts 90 degrees counter-clockwise so you have to either
rotate 90 degrees clockwise before exporting - that is rotate the model not the view or else import/export your model a total of 4 times to return it to original position.
Beggars can’t be choosers.
d) Professional modeling. Buy 3ds max (http://www.discreet.com/products/3dsmax/).
Pawn your car. Mortgage your house. Sell
the rights to your firstborn child. Once you
Warning
have done that and have the 3ds software,
• Bioware has only released the export
scripts - no import scripts. This means
you need a set of MAX Scripts to export
you cannot load their existing content
and/or import model files. The MDL Plug-in
from a Bioware MDL file. You can only
Suite 1.0
export a model you create from scratch.
(http://www.bricksbuilder.com/nwn/utils/) by
I believe most modellers make heavy
scooterpb is the utility of choice here. This is
use of scooterpb’s suite and more
a set of tools developed by the community
limited use of Bioware’s scripts.
that will let you import Bioware’s models into
3ds max 4 or 5, manipulate them, and export
them as ASCII mdl files. Bioware has also released their Export Scripts for 3ds max
(http://nwn.bioware.com/downloads/max_script.html). Grab them and Bioware’s
Export Scripts Documentation
(http://nwn.bioware.com/downloads/max_docs.html).
e) More professional modeling. Buy Lightwave 3D (http://www.lightwave3d.com/).
Joviex has released Import/Export scripts for Lightwave
(http://www.onarom.com/Plugins/nwnmdl.asp).
f)
ObsidianSS
(http://nwvault.ign.com/Files/other/data/1030
162054010.shtml) is a tool for scaling and
skinning existing models (it does nothing that
cannot be done with gmax or the other
modeling tools but some people find it a
good tool if they just want to scale and skin
existing models without learning gmax). If
you are interested in ObsidianSS, here is a
tutorial on re-skinning an existing model
(http://nwvault.ign.com/dm/modeling/tutorials/
lllSnakeeyeslll/BlackBalorTutorial.htm) using
ObsidianSS.
Notes
•
Note that ObsidianSS does not scale
animations properly – creatures no
longer attack where they should. Small
ones swing in front of the target and
large ones well behind it.
•
I suspect this is because the motions
scale down or up but the game engine
does not know to change attack
distance between the creature and the
target. This may be fixable with
parameters in the appearance.2da file
(like HITDIST) but needs to be tested.
%
There are other 3D modeling tools but import/export scripts for these currently do not exist.
A number of people ask about Maya because there are free/low-cost educational versions
available and it is reportedly better at animation than 3ds max or gmax. However, there
are no import/export scripts for Maya directly from and to NWN. They could be written for
the professional version if somebody has the inclination – the SDK exists for the full
version although the educational versions do not accept plug-ins and use a proprietary file
format so you are out of luck there.
%
The complexity and expense of the image editing tools you use is also completely up to
you and what kind of custom content you want to build. You have many options:
a) Picture Publisher from Micrografx (now a Corel product). Moderately advanced
image editing, this is one of many packages bundled with common hardware like
scanners (that’s how I got mine).
b) Photoshop (http://www.adobe.com/products/photoshop/main.html) from Adobe. Did
you sell your firstborn to get 3ds max? Put the second child up on the auction block
too. You won’t get as much for the little rascal as you did for the first one but it should
be enough to get a copy of Photoshop.
c) Paint Shop Pro (http://www.jasc.com/products/psp/) from JASC. The poor-man’s
Photoshop. You should be able to get it for the price of your dog.
d) GIMP (http://www.gimp.org/) is a freely distributed piece of software suitable for such
tasks as photo retouching, image composition and image authoring (open source,
natch). Contrary to popular belief, it runs on Mac and Windows in addition to Linux. If
you really are attached to your children and your pets, this is the way to go.
e) MSPaint from Microsoft. Wait, did I say that? Actually, MSPaint does not support the
Targa bitmap format so it will not work for NWN.
f)
$$ %
Your choice of 15,237 other image-editing programs.
+
0 $$
-
%
Either DDSTools (http://downloads.neverwinternights.de/tools/ddstools.zip) or Bioware’s
DDS Compression Tool (http://nwn.bioware.com/builders/texturetutorial.html) can be
used to compress your textures into DDS format for faster rendition on higher end 3d
video cards. While not absolutely necessary, it will give your objects that extra level of
professional shine. It allows your hardware to switch between very hi-res textures when
viewing an object close up while using low-res textures for the same object viewed at a
distance. These are only necessary if you create custom textures for your models.
) "
1
(http://nwvault.ign.com/Files/other/data/1053910703210.shtml) is used to duplicate armor
pieces when you are creating new armor for all the different PC races or creating new PC
races.
/
%
+
0
- 3% 4(http://nwdownloads.bioware.com/neverwinternights/misc/photoshop_plt_plugin.zip) is for
people who use Photoshop to edit their image files. This tool will allow you to export them
as PLT texture files for use in armor and head models.
3
0 (http://www.lordemil.com/NWN/pltcon.exe) is used if you don’t have Photoshop because it
changes PLT texture files into editable bitmaps and back again.
$
1
(
5
6 57
(http://nwvault.ign.com/Files/other/data/1027785116370.shtml) is used to create or edit
NWN .ssf voiceset files. There are some bugs with this utility that may cause problems
although it is generally stable.
#
(http://www.chilliweb.co.uk/chilliskinner/) is used to unwrap an object for texturing in 3ds
Max or gmax. Apparently 3ds max version 5 does not really require Chilliskinner; many of
the capabilities of that tool are building into the advanced unwrapping features of v5.
ChilliSkinner is really a set of Maxscripts.
% 4(http://www.texporter.com/) is used to unwrap an already textured object into a bitmap for
painting (after you have run ChilliSkinner, for example). This is not strictly necessary when
texturing because you can always do a printscreen when unwrapping objects and use the
printscreen as a template for your texture (which is good because Texporter is a plug-in
and can only run in 3ds max – it does not work on Gmax).
8$ 0
(http://codicc.city-of-doors.com/) is used to generate custom races.
$.
This guide is not a 3d modeling course. Nor will it teach you in the ins and outs of texturing. If you
already know how to model, you have won half the battle. Pick up a copy of your favorite
modeling tool and dive right into this tutorial. If you don’t, Discreet’s gmax is a good place to start
and it includes lots of tutorials.
If you don’t know what a mesh is and need help with the real basics, there are other resources
that can help you:
•
/ is a site for game modeling (Quake, UnReal, HalfLife, etc.).
•
http://www.quake3world.com/ubb/Forum11/HTML/001100.html (the
.
•
http://www.3DTotal.com/ has a lot of tutorials, and a lot of samples. Check out the fancy
swords in the Models section under the Medieval/Historical section (unfortunately, they are too
high-poly to use directly in NWN). As another example, you can find a tutorial to model Joan of
Arc’s sword (http://www.3dtotal.com/ffa/tutorials/max/joanofarc/sword1.asp) here.
•
http://www.computerarts.co.uk/tutorials/3d/ also has tutorials on basic modeling and animating.
2
%
•
http://www.cgtalk.com/ is a very active forum on modeling. There is a great tutorial on texturing
and others on general 3d modeling.
•
comp.graphics.packages.3dstudio – the 3dstudio newsgroup. Tips, tricks, FAQs and
flamefests. What more could you ask for?
•
http://www.3dlinks.com/ includes discussion forums and other information that you may find
useful.
•
http://www.3dark.com/ was recommended in another post but I found the practical content to
be fairly low (unless you want to join the 3d animation industry).
•
http://www.3dcafe.com/ is, unfortunately, a subscription site. It does have a section with free
models that you may be able to use as a starting point.
•
http://mojo.gmaxsupport.com/Sections/MaxScripts.html has scripts that can be used with both
3ds max and gmax.
•
http://supadetail.gmaxsupport.com/ has gmax tutorials.
•
http://tdp.nu/cgi-bin/plugsearch_r4.pl?search=gmax has plug-ins and scripts for both 3ds Max
and gmax.
•
http://www.scriptspot.com/start.htm also has plug-ins and scripts for both 3ds Max and gmax.
•
http://maxres.cgworks.com/scripts/ has scripts for 3ds Max.
•
http://max3d.3dluvr.com/plugins.php has plug-ins for 3ds Max. This site also has some good
tutorials on subjects like animation.
•
http://www.maxplugins.de/ has more plug-ins for 3ds Max.
•
http://www.melax.com/polychop/plugin/index.html has polychop. This is a plug-in that reduces
the number of polys in your mesh (in case you got a little too excited making the ultimate hiresolution model and can’t find a PC fast enough to run it)
•
Paul Steed (Quake II/III fame) apparently has a book called "Modeling a character in 3DS
Max". I have not used it myself but I am told it is a very good book that explains how to model
and skin a one piece character mesh for export to any game/application. It is 500-odd pages,
about USD $45.
I would recommend you get started by doing some of the basic tutorials that come with your
modeling package. Then move on to looking at the existing NWN models. Review them, modify
them, understand them, and finally make your own.
9
)
)
-
-
Let’s start by modeling a new weapon. I want to be able to create Wave, the trident from S2 –
White Plume Mountain. We will start by creating a simple trident head and test it out. Then, after
we have it working, we will tweak the content to add additional features.
Where do we begin? Well, it usually helps to start with something that at least vaguely resembles
the final product you want to create – at least until you have done a few of these. We would start
with an existing Bioware model but NWN does not include a trident as a standard weapon. But
wait, a spear is similar to a trident (a pointy thing on the end of a long stick) and you attack with it
in a similar motion (by jabbing the sharp end at your opponent). So we will start with a spear as
our base model.
:;
,
)
< -
)
-
Let’s look at how NWN represents the different components of a weapon by actually building an
existing one in the Aurora Toolset. Try this exercise:
1. Open up the Aurora Toolset.
2. Create a new Module (we will call it Weapon Tutorial for lack of a better name). Use the
Area Wizard to create at least one Area. Use the defaults to set up the area and choose
something simple like a Castle Interior.
3. Select Wizards | Item Wizard.
4. For Item Type select a Spear (we will talk about the standard weapon types later in this
section).
5. Click Next.
6. Enter a name (Trident).
7. Click Next.
8. Add to the Weapons, Polearms category (we will talk about the standard categories later in
this section).
9. Click Next.
10. Check the Launch Item Properties checkbox.
11. Click Finish.
12. Select the Appearances Tab.
You can now modify the appearance of the item. The options you choose correspond to the
different Model Ids and Position Codes.
Take a closer look at the Appearance tab. Note that there is both a 3D model (used in the game
engine to render a character actually wielding the weapon) and a 2D icon (used in the game
engine for the inventory functions).
)
-
The 3D
model
The 2D icon
•
What you don’t see directly is that each of these models is actually made up of three distinct
pieces (top, middle, and bottom). By mixing and matching these pieces, you can create a lot of
unique weapons with the basic items included in the game. In our example, the basic spear
consists of the spearhead (top), the shaft (middle), and an end cap (bottom). A sword consists of
the blade (top), the guard (middle) and the hilt (bottom).
While we are here, play with the Model and Color values. By changing the Model values, you can
change the shape of each component. By changing the Color values, the shape of each part
does not change but you can change the color of each component.
Now that you understand the different parts of a weapon model, let’s get started.
:" <
=1 " 1 8
…would not work in NWN.
We are going to model our trident on the existing short spear weapon. Remember, it is generally
easier to start from something you know and build your content from there. Where do I get the
standard weapon models used in NWN? What about NWVault? Sorry. While you will find a few
models on the vault that are NWN-ready, most are in other model formats. So, while they may
look nice, they don’t work directly in the game.
So where do I go? That’s what NWN Viewer is for. The content is already stored in the NWN
game, you just have to learn how to access it. Open up NWN Viewer and select File | BIF |
Neverwinter Nigths (sic). What you get is a listing of all of the core content files for NWN. Each
BIF file (not sure what BIF stands for – maybe Binary Information File) is a packed file like the
hakpaks we talked about earlier. They contain standard NWN content.
If you look through these you will find that the core NWN models are stored in two files:
)
data/models_01.bif – contains the character
and creature models
Hint
•
Check your /override directory and
patch.bif first – they contain official
updates from Bioware (NWN Viewer
gets its data directly from the original
BIF files – which may be out of date).
•
Only if Bioware has not updated these
files should you export a new version
from the original game installation. If
you don't follow these simple rules, you
risk undoing Bioware's bug fixes when
you distribute your custom content.
•
NWNViewer can’t open patch.bif
directly. To have it recognize
patch.bif, rename the file
chitin.key to original.key.
Rename patch.key to chitin.key.
Now you can open it directly in the
viewer. To open the original BIF files,
reverse this process.
data/models_02.bif – contains the armor/model
pieces, placeable items,
and weapon models
We will use data/models_02.bif because we want
the weapon models.
.
%1-
Scroll down, way down. What you want are the models
that start with w.
Weapon models are named using the format:
wxxyy_z_nnn. The prefix represents the model type for
a weapon. The remainder of the name represents the
weapon class and name for the model.
•
)
!
-
After the w, the next four characters (wxxyy) describe the class and name of the weapon:
xx
yy
Model class
Model name abbreviation
-
)
For example, wplss_t_011 equates to:
w for weapon
pl for polearm
ss for short spear
We’ll get to the _t_011 part in a moment. First, here are the standard weapon resources for
data/models_02.bif:
Type
W
Class
Name
AM
AR
BO
BU
DT
AX
BT
GR
HN
BB
QS
BD
QS
BI
MI
BL
CL
FH
FL
HL
HW
ML
MS
BW
LC
LN
SC
SL
SH
XH
XL
XR
DB
AX
MA
QS
SW
MG
RD
ST
WN
Maps to
Weapon
Ammo
Arrow
Bolt
Bullet
Dart (I don’t think this is really valid because
it does not appear in the baseitems.2da file).
Axe
Battle Axe (two-handed)
Great Axe
Hand Axe (one-handed)
?
?
?
?
?
?
Bludgeoning Weapons
Club
Flail, Heavy
Flail, Light
Hammer, Light
Hammer, War
Mace, Light
Morningstar
Bow
Longbow, Composite
Longbow
Shortbow, Composite
Sling
Shortbow
Crossbow, Heavy
Crossbow, Light
Crossbow, Repeating
Double-handed
Double Axe
Dire Mace
Quarterstaff
Two-bladed Sword
Magic
Rod
Staff
Wand
-
)
PL
HB
SC
SS
SP
GA
KA
KA
NN
SC
SP
SW
BS
DG
GS
KA
LS
RA
SC
SS
TH
AX
DT
SH
WB
LC
-
Polearm
Halberd
Scythe
Short Spear
Special
Gauntlet? (I don’t think this is really valid
because it does not appear in the
baseitems.2da file).
Kama
Kukri
Nunchuka (I don’t think this is really valid
because it does not appear in the
baseitems.2da file).
Sickle
? (I don’t think this is really valid because it
does not appear in the baseitems.2da file).
Sword
Bastard Sword
Dagger
Great Sword
Katana
Longsword
Rapier
Scimitar
Shortsword
Throwing
Throwing Axe
Dart
Shuriken
?
?
Okay, sounds easy enough so far. But what are all those other numbers and letters I see in
data/models_02.bif (the _t_011 stuff)?
We have already looked at how NWN represents the different components of a model by looking
at the item properties under Appearance for a custom-created item. The options you choose
correspond to the different model types in the data/models_02.bif file.
First is the position code. We know there are three position codes for each weapon:
t
m
b
top
middle
bottom
So in the earlier example, wplss_t_011 equates to the top piece (the head) of the short spear.
.
$
There is a specific format for the id as well: nnz. There are two characteristics:
nn
Model (although I’ve not seen the first character anything other than
zero and I have had trouble getting past 09)
!
)
z
-
Color/Texture (right now the ones typically supported are 1 = metal, 2
= brass, 3 = wood) but you can add your own
So in the earlier example, wplss_t_011 equates to the first model # and the initial color (usually
metal, followed by bronze/brass/gold, followed by wood) of the top piece of the short spear.
-
.
Now you understand the weapon models and their naming conventions. Well, almost. What about
some of those other models with names like waxbt_fxacid? There are special purpose models
for special effects:
_mb
_fxacid,
etc.
_blur
_000
The motion blur model
special effects (acid, etc.) – shows the game
engine where to render the colored mist or
flames that envelop different models
Ignore this model type. This looks like it is
another type of motion blur model but it is not. It
is not used for anything and is a vestigial model
left from earlier game development days
Ignore this model type as well. It looks like a
normal weapon model but it is not valid. It is a
vestigial model left from earlier game
development days as well
So waxbt_fxacid shows the model for a weapon, an axe, in fact a battle axe, corresponding to
the effect you would get if that battle axe were magically enchanted to drip acid.
There are a few weapons (e.g., the bullet) that do not have the full 3 parts. These are represented
with a format of wxxyy_nnn. Just exclude the Position Code.
&
)
:
$.
So with all of that in mind, I am going to create my models for a
trident. If I look at the spear models, the first thing I see is that
the standard shaft (m as in middle) and end (b as in bottom)
models for a spear work just fine for a trident. So I’m just going
to create a new model for the head of the spear (t as in top).
Here are the basic steps using gmax. Directions may vary
according to your software.
1. Open the NWN Viewer.
Hint
•
Start with a model you know works.
There are models for swords, spears,
even a flail with a chain linking head to
handle. Use this model to understand
how big to make your objects and
where to place them.
•
Complex models with lots of polygons
will slow down combat considerably.
How many is too many? Well, it varies.
I created Wave with 157 vertices. This
is pushing the high end of what you
want. Many of the standard NWN
models have less than 50 vertices. I
would aim for 30-40 per model file. The
CEP puts a ceiling of 300 polys for the
entire weapon (all three parts).
•
If you would like your object to have a
chrome finish, you do not have to
texture it. Otherwise, figure out UVW
mapping and do your own texturing.
•
The default weapon texture is
w_metal_tex.tga. The texture image
is comprised of blocks of textures,
some alpha masked, some not. If you
use an alpha mask texture on a
weapon then where it is transparent the
underlying shiny value will show
through.
•
The gmax and 3ds max export scripts
are a bit funky working directly with a
blocked texture file like
w_metal_tex.tga. You need a single
texture file for the entire object or you
need to do a proper UVW map.
•
If the NWN MDL Tool pane does not
come up and you can’t find the scripts
to load, you probably don’t have the
scripts installed. See the link at the end
of this document to get a copy. Put the
.ms files in your
gmax\scripts\startup folder.
•
You can only export editable mesh
objects. So if you model with shapes or
nurbs you must convert to an editable
mesh before exporting.
2. Select data/models_02.bif.
3. Scroll down and select the model wplss_t_031.
4. Right click on the row and select Extract file(s) to.
5. Save the file to a new directory. This is a binary model file.
You cannot easily open or read it in binary format.
6. Open a command prompt window.
7. Run NWNMdlComp –d wplss_t_031 on the binary
model file to convert it to an ASCII model file (it should
have the name wplss_t_031.mdl.ascii).
•
-
"
#
#
#
$
% #
8. Open gmax. The NWN MDL Tool pane should
automatically open on the left side. If it does not, load it
manually using Maxscripts | Run Script…
9. Load the spear model into gmax by opening the Import
MDL sub-menu in this pane (not the File | Import…
function) and using the Browse pushbutton to select the
ASCII file you created in step 6.
)
-
Hint
•
•
& '
Collapse your objects to editable
meshes before applying any NWN
modifiers.
# (
10. You can minimize the MDL window after you open the file. Take a close look at the model you
loaded. Note the relative size and position of the model. This is important because the relative
orientation and offset of your model now will be used when the game engine renders your
weapon in three pieces. The reason your spearhead is not centered at the origin (0, 0, 0) of the
gmax space is because it must be far enough out to rest comfortably on the tip of the spear’s
shaft model (the middle piece). You must keep it there; otherwise it will not appear to be
attached to the rest of the weapon when the game engine assembles the three models later.
11. Note the base item. This is used by the import/export scripts to link special attributes to models
(animations, etc.). The spearhead is a child mesh of the base. Don’t change the name of the
model for now, or of the base (this is important for now – we will change it for later models).
The spearhead model has a name of wplss_t_031.
12. Now modify the standard spearhead or replace it with your trident model (read the tutorials for
gmax to see how to actually create 3D models).
/
)
•
)
%
-
# (
13. If you created a new model, be sure to link it to the base item as a child object.
14. Open the Export MDL sub-menu of the NWN MDL
Tools pane. Select Export MDL.
Hint
•
Size matters.
15. Wait? Where is my exported file? It didn’t even ask for a
filename. The gmax import/export utility does not have
the ability to write files. What it does is dump an ASCII
version of your model to the MAXScript Listener. What
you need to do is open MAXScript | Listener… and
then copy and paste the listing into a text file. Save it as
wplss_t_031.mdl and you are done.
•
1cm in game = 1 max unit. If this is too
confusing you can import another
model that is properly scaled.
•
Because NWN uses a tiny scale, the
import export tool lets you import at a
magnified scale of 100X magnification.
It will then export at -100X to get it back
to original size.
2
)
•
*
+,
-
# (
(
-
#
16. Copy your wplss_t_031.mdl file to the /override directory of your game installation. If
you used a .tga file as a texture, put it in the same
Hint
directory.
•
This cutting and pasting thing from the
listener is a bit annoying. You can get a
utility from NWVault <STB: insert link
here> that does this for you
automagically.
•
You must close and re-open the Aurora
toolset whenever you add something to
the /override directory. The game
and toolset only look at and load files
from the /override directory once,
upon start-up. If you do not re-open the
toolset, it will not recognize any new
resources.
17. Open up the Aurora Toolset. If it was still open from
before, save and close the module and toolset first then
re-open it.
18. Open your Weapon Tutorial module.
19. Select the Area you created, and then the Item icon on
the right toolbar (it looks like a sword).
20. Choose the Custom tab.
21. Your original spear should be under the Weapons,
Polearms category.
22. Right click Trident and then select Edit from the pop-up menu.
23. Select the Appearance Tab.
24. Select Top model 3 if it was not already selected. I also chose the Bottom model 4 (one of the
default models) because I like the bladed end better than the rounded model #1. And I made
the shaft gold (color 2).
25. Click OK and then save your module.
9
)
•
-
.
This is what you get when you look at your spear. It is starting to shape up. There are a couple of
problems with this model that say we aren’t done.
•
Note the picture on the right side – it still looks like a spear with a default spearhead! Where is
our trident? We need to create a 2D weapon icon to fix this.
•
Now all basic spears using model 3 will look like tridents because we have overridden the
default spear model. We need to change a few more things to fix this problem as well.
•
Our trident is actually a spear. It will work fine this way but we may want to actually add an
entirely new weapon, a trident, rather than piggy-backing on the spear forever.
Note on ResetXforms:
Have you ever opened up one of your creations in NWN and found it does not look like what you
saw in your modeling tool? Too big? Too small? Parts blown out of proportion or disappearing?
Sounds like you have a problem with advanced transforms. This subject is so frequently
discussed and so problematic I thought I would pull it out into its own flagged section. Let me start
by discussing why you need to care about resetting transforms.
Gmax and 3ds Max can hold information about your object (whether or not parts of it are
mirrored, which directions normals really point, how it is scaled and rotated, etc.) that is not
exported with your model in a way that NWN can understand or use. What this means is that
what you see in Max may not be the same as what you see in NWN.
For example, objects can be transformed (scaled, rotated or moved) either in world space or in
sub-object space. Transforms in sub-object space take place when you transform vertices,
edges, faces, polys or elements of an object (or all of them at the same time). Transforms in
world space take place by selecting your object at the highest level and transforming it.
What this means is that if you rotate an object in world space, it will not be rotated when you
export it to the game. Or moved (transformed).Let me repeat that in different words because this
part is key: Bioware's NWN engine does not read world space transforms!
)
-
As you can imagine, this might be a huge problem. One way to fix this problem is to do all of your
transforms at the sub-object level. However, this is only a partial solution because the same
problem occurs with other operations as well (for example, mirroring objects often inverts the
direction of their normals or faces).
The good news is that there is a way around it. In Gmax or 3dsMax you can do a ResetXform
operation on all the pieces of your model and then collapse each of these modifiers onto your
editable mesh. By doing this, you are turning this complex transformation information into
something simpler that NWN can understand. In practical terms it means what you see in Max
and what you see in NWN are more likely to be the same.
ResetXform can be found on the Utilities panel. Use the ResetXform utility to push object
Rotation and Scale values onto the Modifier Stack display and align object pivot points and
bounding boxes with the World coordinate system. Reset Transform removes all Rotation and
Scale values from selected objects and places those transforms in an XForm modifier (no, really,
it will). You can then collapse the modifier into your object and away you go.
Some notes on ResetXform:
•
Sometimes after you do a ResetXform you may need to clean up parts of your model. For
example, often on mirrored objects doing a ResetXform will expose the fact that your
normals are really inverted. You will need to flip the normals on the mirrored part after
you are done. These aren't things that ResetXforms breaks - they are things that would
have been wonky in the game and it is showing them to you early.
•
You can also reset the transforms on the Pivot block of the Hierarchy panel. It will convert
your world space transform into a sub-object space level transform. However, it will not
fix problems like reversed normals so the Utility panel is generally the way to go.
•
You must do all of these things before linking your object to other objects (like the
Aurabase). Why? Because the ResetXform modifier affects child objects as well the
parent. If your objects are linked together they will inherit transforms and scaling. By
resetting you are only really resetting them relative to the parent objects.
So let me summarize: if your object appears differently in the game than it did in 3dsmax or
gmax you probably forgot to reset the transforms on it. Make sure your object is unlinked
and then use ResetXforms on the Utility Panel to clean it up before proceeding.
!:
$)
-
Let’s start by fixing that picture. NWN 2D icons must be 32-bit Targa Bitmap (.tga) files (with an
alpha mask channel). Once you understand how the 3D weapon models are named, the 2D icons
are easy. Just add an i to the beginning of the 3D name. For example, iwplss_t_011 equates
to the 2D icon of the model # 1 and color # 1 (usually metal, followed by #2 bronze/brass/gold,
and #3 wood) of the top piece of the short spear.
There are two game files that contain all of the textures:
data/textures_01.bif
data/textures_02.bif
You may need to use both. Use data/textures_02.bif for axe and short sword icons. The
rest of the icons are in data/textures_01.bif.
)
•
-
/
How big do I make the icon file? Note that in this example the icon for the spear top is 32 x 128
pixels. But the different icons can be different sizes, just make sure they are a multiple of 32 and
that all the pieces for a specific weapon are the same size. In the case of our spear, we will use
the same 32 x 128. Why do we need to do this? We do it for the inventory management system of
NWN. Each box on the inventory grid is 32 pixels x 32 pixels. Our models have to align with this
grid perfectly. Again, I suggest using an existing model to start.
%
I use the same basic process to create the 2D icon as I did for the 3D model:
1. Open the NWN Viewer.
2. Select data/textures_01.bif.
3. Scroll down and select the file iwplss_t_011.
4. Right click on the row and select Extract file(s) to.
5. Save the file to the directory with your 3D model.
6. Open the .tga file with an image manipulation program. I use Micrografx Picture Publisher
because it came with my scanner and does most of what I need. Modify the standard
spearhead or replace it with your trident model. Keep the name the same (this is still important
)
-
for now). Don’t use any of that black space below the model – when the game overlays the
middle and bottom pieces it will use that space. I chose to do a screen print of my 3D model as
it shows in the Aurora Toolset, shrink it down, paste it over top of the sample file I extracted
using NWN Viewer, and then tweak the image to get it to look cleaner and brighter.
•
0 '
7. Now, to do the overlays of the 3 model pieces, NWN uses a mask channel to know which
portions of the bitmap to lay down. What you need to do is create this mask channel for it
before you save your image. Details on how to do this will vary depending on the software you
use. Using Picture Publisher, it has a magic
Hint
wand for creating a mask. I start by creating the
• If you see the icon in the toolset but not
mask of the black space surrounding the image
in-game then the dimensions are
(magic wands work best if given a single color to
probably wrong. In baseitems.2da
encapsulate). Then invert the mask so that it is a
there is an icon height and width - this
mask of the trident head instead of one excluding
is measured in squares on your
it. I could have done a mask directly of the trident
inventory screen in-game. Your icons
but it has many colors and I would probably have
need to be (32 x height) x (32 x width)
.tga files. If they aren't they still display
needed to zoom in and select the mask area
in the toolset (it is just a .tga, after all)
manually.
8. Now save your image as a Targa Bitmap. Again,
be careful. I needed to select Options first and
explicitly tell Picture Publisher to save the mask
channel. Otherwise it just saves the image as a
24-bit Targa file instead of a 32-bit one with
mask.
but when the game engine tries to cram
your icon into the inventory squares
where it should fit it cannot and gives
up.
•
Since we are using the spear entry, we
are okay by copying the spear icon and
keeping its dimensions.
9. Close and re-open your saved file in your image program. If the mask is still there you got it
right. If not, try again.
10. Copy the new iwplss_t_011.tga file into your /override directory.
11. Open up the Aurora Toolset. If it was still open from before, save and close your module first,
then close and re-open the toolset.
12. Open your Weapon Tutorial module.
13. Select the Area you created, and then the Item icon on the right toolbar (it looks like a sword).
14. Choose the Custom tab.
15. Your spear should be under the Weapons, Polearms category.
16. Right click Trident and then select Edit from the pop-up menu.
)
-
17. Select the Appearance Tab.
18. Your trident should now have a 3D model and a 2D icon. If you only have the head of your
trident in the 2D icon, your mask was probably not done properly and NWN is overlaying the
other two components with your entire image file. Check the mask again and repeat these
steps.
•
&:;
1 '
, #- #
Up until now we have been using the /override directory to load our new model and icon. This
overrides the standard spear model 3 for any module you play. There are two shortcomings to
this approach:
•
Using the /override directory is the wrong
way to override content (except as a quick way to
test your changes).
•
You are replacing an existing model. This is a
common way of adding new custom content
(select an existing object that you do not plan to
use in your module and replace it with your
content). But it does not allow you to use the
overridden item in that module. And your new
model must behave exactly the same as what
you are replacing (same damage dice, etc.)
We will examine more sophisticated ways of adding new
weapons. We are going to introduce two new concepts
here:
!
Hint
•
Why didn’t we do this from the
beginning instead of first replacing the
03 spear model? We could have but I
wanted to show you both methods –
replace or adding custom content is
applicable to many different types of
content, not just weapons.
•
The /override directory can be faster for
testing models (without having to
update hakpaks all the time) although
personally I find the effort of starting
and stopping the toolset all the time
when you use the /override directory if
you do to be time-consuming itself.
)
-
•
Using a hakpak to load the content into NWN for a specific module (instead of using
/override which affects all modules you play on your machine)
•
Adding a new spear model (instead of replacing an existing model).
Start by moving your files out of the /override directory. Don’t forget this step! This is one of
the reasons I strongly recommend against using the /override directory – it is too easy to
forget and leave things in it. A month from now you will be wondering why one of your spears
looks like a trident in spite of everything you do to change it.
1. Move wplss_t_031.mdl and iwplss_t_031.tga from the
/override directory. We will put them in a hakpak
instead.
Hint
•
Important: you must have both the 3D
model file (.mdl) and the corresponding
2D icon (.tga) in your hakpak. If you
only have one or the other, NWN will
not recognize the available model.
•
3. Go back and resave your model file as
wplss_t_051.mdl. You should change the internal
model name to be wplss_t_051 as well. You can do
that either from within gmax (change the name of the
model from WPlSs_t_031). Or, open the .mdl file with
a text editor and changing all instances of wplss_t_031
to wplss_t_051.
Select the highest existing model
number for the weapon you are using
as a template (in this case the highest
spear model is 4) and add 1 to it for
your model.
•
The game works fine even if you do not
have all 3 colors or even the same # of
models for all parts of the weapon (e.g.,
it is okay to have 5 spear head models
and only 4 shafts and ends).
4. Create a new hakpak (see appendix for instructions).
•
Having said that, you should provide all
three colors (otherwise it is too easy to
mis-select a model/color pair and
accidentally end up with characters
running around in-game with only twothirds of a weapon).
2. Rename the icon file we just created as
iwplss_t_051.tga (don’t put it in the /override
directory!). That way they will not override model 3.
5. Add your model wplss_t_051.mdl and icon
iwplss_t_051.tga. If you used a .tga file as a
texture, add it as well (if you used the standard
w_metal_tex.tga, you do not need to include it again
because it is already in the game).
&
)
•
2 3
3
%
-
#
6. Save your hakpak.
7. Open up the Aurora Toolset. If it was still open from before, save and close the module and
toolset then re-open the toolset.
8. Open your ‘Weapon Tutorial’ module.
9. Select Edit | Module Properties… and click on the Custom Content tab.
)
-
Hint
•
+
3
3
•
You can add more than one hakpak to
a module. If you do this, take care how
you order them – the contents of the
higher priority hakpaks override the
lower priority ones. So, for example, if
you put two longswords with the same
weapon ID in two hakpaks, the topmost
one would be the one you get to play
with in the game.
•
Sometimes the Aurora toolset gets
confused about hakpaks. I have found
the best way to load or reload a hakpak
is to close and re-open your module.
•
So, to add a new hakpak to a module,
save and reload your module after
adding the hakpak in the Advanced
tab.
•
If you have modified a hakpak and want
to use the modifications, save and
reload your module again.
•
If all else fails, close and re-open the
toolset.
•
If that still doesn’t work, check the
contents of your hakpak again for
completeness (remember, for a
weapon you need both the 3d model
and 2d image).
•
Remember that if you use a Hakpak in
your module, players must place the
same Hakpak in their 'hak' directory to
play the module – be sure to bundle the
Hakpak with your module when offering
it for download!
#
10. From the drop-down for the Hak file, add your hakpak. If
it does not appear in the drop-down, your hakpak is
probably not in the /hak folder of your game directory.
11. Save and close the module and then reload it.
12. Select the Area you created, and then the Item icon on
the right toolbar (it looks like a sword).
13. Choose the Custom tab.
14. Your spear should be in the Weapons, Polearms category.
15. Right click Trident and then select Edit from the pop-up menu.
16. Select the Appearances Tab.
17. Switch the top model type to 5 and you are done. It should look the same as it did before. Now
I can use all four original spear models and the trident.
/
)
:%
)
-
<
5
There is one major problem outstanding: our trident is actually
a spear. It looks like a trident. You fight with it like a trident.
But in its heart-of-hearts, it is a spear. We can fix that, too –
sort of.
What we have to do is add a new weapon resource in the
baseitems.2da file (2da stands for ‘2 Dimensional Array’
because each .2da file is a matrix of rows and columns).
This will allow us to define an entirely new type of weapon.
This is a similar procedure we will use for other custom
content as well.
I would suggest you open up Zoligato’s NWN Viewer and
select the baseitems.2da file from the data/2da.bif file.
But don’t do it. Bioware has made changes to the .2da files as
part of their patching process. Your best bet is to always get
2da files from \source\2dasource.zip. So, instead,
1. Copy
the
new
baseitems.2da
file
from
\source\2dasource.zip to the directory with your
model and icons.
2. Open baseitems.2da using a text editor (Notepad
works fine although some people use Helios Software
Solutions' TextPad (http://www.textpad.com/). Turn
wrapping off so everything aligns nicely.
Hint
•
In the last section I showed you can
add new weapon models to an existing
weapon (in that example, a spear) as
long as you provide both a 3D model
and a 2D image for it.
•
This is somewhat unique because
many other model types (for example,
see the section in this tutorial on NPC
portraits) require a resource declaration
as well (by modifying the .2da file as we
describe here).
•
You only need to create a new weapon
declaration if you are adding an entirely
new weapon type. If this is another
spear, another sword, etc., the existing
declarations will do you just fine and
you can satisfy yourself with just adding
a 3d model and 2D image.
Hint
•
When changing these entries, try not to
misalign the columns. Use spaces
where necessary to replace
unnecessary characters. For example,
when replacing the name shortspear
with trident, I actually replaced it with
trident<space><space><space>. This
may not be strictly necessary but better
safe than sorry. Spaces not tabs.
•
To test that you didn’t break anything,
use the NWN Viewer to open your
modified .2da file and check that the
columns load properly.
•
Don’t modify any of the other lines or
else those items may no longer work.
•
Thanks to Erzengel-des-lichtes and
Kinarr Greycloak for help on some of
the 2da entries.
3. Go ahead and take a look at it. Scroll down until you get
to the shortspear entry. You should see this:
57
58
59
1551
1552
1553
towershield
shortspear
shuriken
-
2...
1...
1...
1. These different entries describe the many items in the
game. I don’t show all of the columns here because
there are too many.
4. Copy the shortspear entry and paste it at the bottom.
5. Modify the entries as appropriate for your new weapon.
Column
Description
Values
ID
An integer ID# identifying the
weapon internally.
I chose 2001. When choosing an ID
for a .2da file, make it much greater
than the highest id # in file so that if
Bioware adds a new resource later,
they do not overwrite yours.
Name
A string reference to dialog.tlk
My first thought is that this should be
**** (should tell the game engine to
2
)
Column
-
Description
Values
containing the name for your
weapon.
use the label for a name). However,
this does not work. Instead, I went for
a jog through dialog.tlk (it is a
big file) and found that some forwardthinking individual at Bioware actually
included many of the unused weapon
names so I chose 67251 (Trident). If
you can’t find the right name for your
weapon, re-use one of the other
weapon names. This will give it the
same name as that item in the Item
Wizard (more on this issue at the
end of this section).
Label
The internal label for your weapon.
I chose Trident. Use ‘_’ underscore
instead of spaces if necessary.
InvSlotWidth
Inventory slot width and height.
Make sure it matches the size of the
icon you created earlier (in our case
1 x 4 because our icon is 32 x 128).
EquipableSlots
Identifies which slots you can equip
the item into. This is a hexadecimal
value. You must identify all of the
appropriate slots, add together the
values, and enter the corresponding
hex value into this column.
CanRotateIcon
Whether or not the icon in the
inventory can be rotated to fit if there
is not enough room otherwise (I
think).
0x00000 – Not equipable
0x00001 – Helmet
0x00002 – Armor
0x00004 – Boots
0x00008 – Gloves
0x00010 – Expendable Weapon
(shuriken, etc.)
0x00020 – Shield or other
offhand non-weapon
0x00030 – Missile weapon
(bow, sling, etc.)
0x00040 – Cloak
0x00180 – Ring
0x00200 – Amulet
0x00400 – Belt
0x00800 – Arrow
0x01000 – Bullet
0x02000 – Bolt
0x1C000 – Creature Weapon
0x1C010 – Two-handed Weapon
0x1C030 – One-handed Weapon
0x20000 – Creature Armor
0 if no
1 if yes
ModelType
The type of model.
0 – normal item
1 – helmet
2 – weapon
3 – armor
ItemClass
Name of the new model you have
created (without the _t_001
extension).
I used WPlTr to create a new class.
Refer to your naming standards for
the basics.
InvSlotHeight
9
)
-
Column
Description
Values
GenderSpecific
Are there gender specific versions of
this item? No for everything except
armor. I can’t for the life of me
explain why arrows are gender
specific, the one exception to this
rule. Female characters get a
different kind of arrow? That just
seems… politically incorrect.
0 if no
1 if yes
Part1EnvMap
Part2EnvMap
Part3EnvMap
Defines how the environment map is
applied to the alpha channel in the
model's textures.
1 will apply the environment map,
giving you reflective surfaces. This is
used for metal surfaces.
There is one map for each of the
three weapon parts:
Part 1 – bottom
Part 2 – middle
Part 3 – top
0 will not apply the environment map.
This is for wood-like textures and is
typically used on the handle of a
mace, etc.
'****' not applicable. This is used for
items that do not have 3 pieces or
that do not have an actual model.
Default Model
The default model for when the item
is laying on the ground.
Typically it_bag.
Default Icon
Does not appear to be used for
anything
****
Container
Is the item a container?
0 if no
1 if yes
This only true for one item, the ‘large
box’. This same item is also used to
create ‘large bag’ items like the
magic bags of holding. Go figure.
WeaponWield
Identifies the animations a character
uses to wield the item.
1
Non-wieldable/wearable
4
Two-handed items (e.g.
halberd)
5
Bows
6
Crossbows
7
Shields
8
Double-headed weapons
9
Creature weapons
10
Dart and sling
11
Shuriken and throwing axe
****
Standard weapons
WeaponType
The type of weapon and type of
damage it does.
1
2
3
4
Piercing
Bludgeoning
Slashing
Slashing and Piercing
WeaponSize
Size of the weapon.
1
2
3
4
Tiny
Small
Medium
Large
)
-
Column
Description
Values
RangedWeapon
Index to the type of ammunition used
by a ranged weapon.
This can point to either another item
(for items that are projectile weapons
- e.g., 20 for an arrow) or to the item
itself (for items that are thrown – e.g.,
59 for a shuriken).
Note: it does not appear to be
possible, at least as of v1.29, to
create a new ranged weapon. It is
possible to replace an existing
ranged weapon with a new one.
**** if this is not a ranged weapon.
PrefAttackDist
The preferred distance for attacking
with this weapon.
Not sure how this is used. It could be
how far away the character stands in
combat or something.
MinRange
The minimum number of weapon
models of this type.
The actual value to put in here is the
range you want x 10. It is hard to
check what this actually does
because it probably only allocates
space in an internal stack for weapon
models.
MaxRange
The maximum allowed number of
weapon models of this type. Most
weapons have a limit of 10 models
(and 3 colors). The game will ignore
any models higher numbered than
this figure unless you change this
value.
For weapons, the actual value to put
in here is the range you want x 10.
So it is 100 for most weapons. If you
want 11 longswords instead of 10,
make it 110.
For other items this field is not
multiplied by 10. Go figure.
This field appears to have a limit of
255 (i.e., it is a one-byte integer) so
you cannot have more than 25
weapons of one type. Or 255 of other
items.
NumDice
DieToRole
Number of dice to roll of type…
E.g., for damage of 2d6 you would
put 2 in NumDice and 6 in DieToRole
CritThreat
Chance out of 20 that you will get a
critical hit:
20 only 1
19-20 2
18-20 3, etc.
CritHitMult
Damage multiplier if you get a critical
hit.
I chose 2 (if you look in the PHB, a
spear has a critical hit multiplier of 3
but a trident is only 2)
Category
I haven’t quite figured this one out. It
appears to be related to the
Category definition in other tables
(like spells.2da) where it defines
what the item is used for. This is
used for the AI engine to allow NPCs
to properly use the item if equipped
with it.
BaseCost
Basic cost in gold pieces for a nonmagical, standard item. For weapons
it maps back to the cost in the PHB.
As soon as you start adding magical
See ItemMultiplier for additional
information.
)
Column
Description
-
Values
properties to weapons, the cost goes
up accordingly. That is what the cost
line items in the item property
definition tables account for.
Stacking
Number of identical items that can be
stacked together in your inventory
(this is why you get 99 arrows in a
bundle, 10 potions, etc.)
ItemMultiplier
Multiplies the BaseCost to give the
actual item cost.
If you look at the BaseCost field for a
shortsword, for example, it is set to
10. The ItemMultiplier for shortsword
is set to 2. The in-game cost for
shortsword is 20.
Set the ItemMultiplier to 3, and the
shortsword costs 30 in-game. (tested
by Zimero)
Description
String reference to dialog.tlk for
a description of this item.
Use 0 (this leaves the description
blank because there is no entry for a
trident description in dialog.tlk). In the
next section I will show you how to
use a blueprint to overcome this
problem in a different manner.
InvSoundType
The sound made when clunking
items around in your inventory.
Refer to inventorysnds.2da for
detailed values.
MaxProps
MinProps
The maximum and minimum number
of spell properties that an item can
have. This can be seen in the item
properties page where scrolls,
wands, etc. can cast 1 spell and
most other items are able to hold up
to 8. Other properties are not
included in that max, only cast spells.
For some items, the min/max values
are 1/1, implying they must have one
property (like a scroll). For most
others it ranges from 0 to 8.
I don't know what would happen if
you tried to set something to have
more than 8 since there is only room
for that many around the radial menu
without have sub-menus.
PropColumn
This column determines what
properties can be assigned to a
given item.
Refer to itemprops.2da. However,
this is not an index to the row in that
table, it is an index to the column. For
example, melee weapons at column
0 can have almost any property
assigned to them, but torches at
column 20 can only have light.
StorePanel
The panel of the merchant inventory
that this item shows up in.
0 – Armor and clothing
1 – Weapon
2 – Potions and Scrolls
3 – Wands and Magic items
4 - Miscellaneous
ReqFeat0 to
ReqFeat4
The feats required to use this
weapon.
44
45
46
Exotic
Martial
Simple
)
Column
Description
-
Values
48
49
50
51
Druid
Monk
Rogue
Wizard
AC_Enchant
The type of AC bonus this item
provides.
0
1
2
3
4
Dodge
Natural
Armor
Shield
Deflection
BaseAC
The standard or base AC bonus that
this item imparts.
AC1
AC2
AC3
(e.g., Small Shield)
(e.g., Large Shield)
(e.g., Tower Shield)
ArmorCheckPen
The penalty to your skills that
equipping this item makes (refer to
skills.2da; skills affected are those
with a 1 in the column
ArmorCheckPenalty).
This is actually the penalty on a d20
roll. E.g., a 1 is a 5% penalty. 2 is a
10%, 10 is a 50%, etc.
BaseItemStatRef
String reference to dialog.tlk for
a description of the statistics of this
item (e.g., required feats, critical hits,
etc.) in text form. This goes below
the weapon in the inventory when
you identify the item.
I use 59 (this leaves the description
blank because there is no entry for a
trident’s statistics in dialog.tlk). If we
left in the description for a spear we
would be close (but no cigar). In the
next section I will show you how to
use a blueprint to overcome this
problem in a different manner. You
could also try 0 like we did for the
Description field but this causes a
problem in-game because the engine
interprets 0 in this field as an
erroneous reference.
ChargesStarting
Starting # of charges
0 for most items. 50 for wands, etc.
RotateOnGround
An indicator that tells you how to
rotate the model so it lays flat on the
ground (e.g., you don’t want a sword
standing on its edge when you lay it
down).
0 Do not rotate (this is used for most
items without models)
1 Rotate 90 deg. about y axis (this is
used for most weapons)
2 Rotate 90 deg. about x axis (this is
used for crossbows and potions)
WeaponMatType
Type of material the weapon is made
out of – used to define the sound the
weapon makes against different
types of armor.
Refer to weaponsounds.2da for
detailed listings of the different items.
AmmunitionType
Type of ammunition the weapon
uses.
I think this should map to
ammunitiontypes.2da but
everything seems offset by +1.
1 – arrow (0 in ammunitiontypes.2da)
2 – bolt (1)
3 – bullet (2)
4 – dart (3)
5 – shuriken (4)
)
Column
Description
-
Values
6 – throwing axe (5)
QBBehaviour
No idea.
ArcaneSpellFailure
Increased chance this item will cause
a spell failure.
Only values are used for shields.
TenthLBS
Weight of the item in tenths of
pounds (take the weight from the
PHB and multiple by 10).
There is a bug with this field: 255 is
the maximum value for this field (a
weight of 25.5 lbs). Anything over
that becomes mod 255 (i.e., resets
back to 0 at 256 and goes up again).
It appears that this is only a one byte
integer value whose max value is FF
hex = 255 decimal.
An alternate solution, if you really
must have a heavier item, is to add
the Base Item Weight Increase
property in the toolset (depending on
the item you may have to open this
option up by adding the flag in
itemprops.2da).
%AnimSlashL
%AnimSlashR
%AnimSlashS
% of the time that your character will
use this animation type when
wielding this weapon.
StorePanelSort
Not sure. Looks like sorting order for
the merchant panels.
ILRStackSize
No idea. It looks like a repeat of the
Stacking column. ILR typically refers
to Item Level Restriction but I don’t
know how this applies here.
Left, Right or Straight. For a piercing
weapon, set L and R to zero. For a
slashing or bludgeoning weapon, set
S to zero. For a slashing/piercing
weapon use a combination.
6. Back through the same routine. Save the .2da file, load it into your hakpak.
7. Rename the WPlSs_t_051 model to WPlTr_t_011 (WPlTr, remember, is the new ID for our
trident) and change all the internal references.
8. Wait, where are the rest of the WPlTr_x_nnz models and icons? Good point. We only have a
model for the trident’s head. That worked fine when we are attaching the trident head onto a
spear’s body but now we are creating a new weapon and it needs all three components. Now,
remember that the spear shaft and end worked fine for us? Copy the WPlSs_m_011 and
WPlSs_b_011 files to make trident files as well (named WPlTr_m_011 and WPlTr_b_011
respectively) and change those internal references as well. Now it is starting to look better.
9. Do the same for your icon files.
10. Load all of these into your hakpak. You should have, at a minimum, the following:
!
)
-
Hint
•
-
%
#
3
•
.2da files load in sequence. If you add
new entries to a .2da file, add them
after the last entry you used. If you add
them before, it will mess with the
internal references to items in your
modules.
•
The same applies if you need to delete
a reference. So, instead of physically
deleting a reference, simply set
everything after the ID to 0’s and ****’s.
3
11. Load up your module in the Aurora Toolset.
12. Now you can create a new trident using the Item Wizard.
13. If you follow these steps exactly, you don’t get a lot of options for spear components to choose
from. Duplicate some of the color versions as well (_012, _013, etc.) and/or the other shaft
and end models so that you have a nice selection of components. You can make multiple
copies of the trident head as well, with different colors or shapes, if you desire.
For some weapons you won’t find an entry in dialog.tlk. Chose another appropriate
name (I used Custom #1 for some items). This is annoying in the Aurora Toolset because
you need to remember that Custom #1 in the Item Wizard is your new weapon. But there
is a workaround for this that avoids the problem in game. In the next section we will talk
about creating a Weapon Blueprint. Once you have a blueprint, you will not need to
remember that Custom #1 is actually your new weapon because you can create new
items directly from the blueprint.
In the early days of content creation, people felt compelled to update the dialog.tlk file to
provide names for new objects (otherwise their item names had to re-use existing names – so
you could not have a trident because there is no entry for ‘Trident’ in dialog.tlk). As part of
their resolution to this problem, Bioware’s latest fixes are starting to allow you to use **** in the
.2da files for the dialog.tlk name references. When it sees ****, the game engine will use
your custom label or another field instead of looking for the text in dialog.tlk. This now works
for some objects. Unfortunately, they haven’t come through for the baseitems.2da file. Maybe
Bioware will get this fixed soon so stay tuned. Regardless, DON”T USE dialog.tlk.
&
)
/:%
)
-
+
-
The last thing you need to understand is how to create a
custom blueprint. A blue print goes into a specific
module. Take the spear we created earlier. Change its
name and tag on the General tab to Wave if you did not
already do so. Under the Properties tab, give Wave a +3
bonus, and whatever other characteristics you think are
appropriate. In this case, I will allow Wave to cast the
spell Elemental Shield to simulate the Cube of Force
effect it should have (maybe at some point I will
incorporate the cube of force script Solias wrote). I will
grant “On Hit, Wounding” as a special property to
simulate the dehydration property.
•
& 4
-
Hint
•
The toolset does not have a
customizable “On Hit” event for
weapons. Without that ability, it will be
difficult to implement some of Wave’s
features. All is not lost though. Sekhmet
has come up with an elegant hak that
provides OnHit events for weapons.
You can find it on NWVault by
searching for OnHit in the Haks section.
I may add information on it to a later
version of this tutorial.
$
Add a description to be used when the item has not been
identified and another when it has. Now save Wave by
exporting it as an .erf file (Exported Resource File). It can
now be packaged together with your hakpak and
distributed to others to use (do not load it into your hakpak
– a .erf file is imported into the NWN Toolset separately
using File | Import…)
By setting the item description you will find another way to
overcome that nasty dialog.tlk problem I mentioned earlier.
When you create a blueprint like this, you can override the
item name and the default descriptions with appropriate
Hint
•
Be careful with blueprints. As long as
people use your hakpak intact, .erf files
are a great way to create blueprints
easily using your weapons. However, if
you mix and match 2da files, don’t
import old .erf files into your modules
and expect them to work. The internal
references get mixed up.
)
-
fields for your weapon. This way, as long as module builders load in your .erf file, they won’t have
to worry about what dialog.tlk thinks your file should be called because they can build right off the
blueprint instead.
You cannot override the BaseItemStatRef this way but you can do something just as good.
Remember where we put 59 in the BaseItemStatRef of baseitems.2da? This blanks out the item
statistics description – a good first step. But now we are missing the stats. How do we get them
in? Put them at the end of the regular Description in the blueprint – at the very end. This works in
the game engine because it always displays the item description followed by its statistics. Now
the inventory will look just like it does for any other weapon: a description, then the statistics, and
then any special items or properties. You’ve tricked the game engine into looking the same as it
does if you had a real BaseItemStatRef entry.
2: -
%
When we created the resource declaration for our model, we separated our trident forevermore
from thinking it was some sort of poor third cousin of a spear. Unfortunately, it loses something in
the translation. We need to add back in some of the special
effects that a spear enjoys but are missing from our trident.
Note
Pictured below is the Frost effect:
• Bioware’s DDS Compression Tool
will not uncompress a DDS file into a
bitmap. It is one way only (.tga to .dds).
To uncompress a bitmap, use
DDSTools and then discard all but the
highest resolution bitmap.
•
•
DDSTools flips your image vertically
when creating the DDS from the bitmap
(which will usually mess up how it maps
to your model although you may not
notice it if it is a random pattern). Use
Bioware’s DDS Compression Tool
instead (which does not flip) or
manually flip your bitmap first. Also,
DDSTools will not work with 32-bit .tga
files (i.e., files with an alpha channel)
although Bioware’s will.
•
There. I will bet you were wondering
why I included both in the
recommended toolset. Now you know
Bioware’s tool is better but is only oneway.
•
DDS is a lossy compression algorithm
but does a good job in most cases and
the file sizes are much smaller and they
run faster.
•
If you absolutely must have one texture
extremely high resolution, put just the
.tga in your hakpak for that file.
)
There are seven magic effects that you need to account for:
_fxacid
Acid
_fxelect
Electric
_fxfire
Fire
_fxfrost
Frost
_fxholy
Holy
_fxneg
Negative
_fxsonic
Sonic
/
)
-
Each of these is a special emitter, generally placed somewhere along the blade of the weapon.
To recreate these, the simplest approach is to load in an existing model of this type and then
move the emitter to the appropriate spot for your models (remember, the positions of the different
components of the weapon models should be the same for a given weapon). For our trident, we
will just copy the spear effects models. We can even leave the emitters in the same place
because the tines of the spear are roughly in the same place as the head of the spear. If we
wanted, we could duplicate the emitters, one for each tine, but I don’t think this adds anything to
the effect so I chose not to do this.
To test out the effect, create a weapon in the Aurora Toolset. Select the Properties tab and give
it a Damage Bonus, frost. Press Edit Property and then change the damage bonus to 5 (you
need to choose a damage value > 1 otherwise the toolset does not apply the effect). When you
close that pop-up, you will see the special effect from the emitter. If it is not in the right place you
may need to move the position of the emitter in the standard model. There is also a motion blur
model (_mb). This shows the standard arc of the weapon when being wielded in the game. Again,
because the spear is so similar to the trident we have built, I will not adjust the motion blur model.
We will just copy the spear model and rename it.
Notes
•
% 4
If it is going to have transparency your
texture will need an alpha channel and
should be saved as a 32-bit tga. There
are some more rules to follow when it
comes to textures: no bump-mapping,
no procedural textures, nothing but
your basic image channel and opacity
map (the alpha channel).
Let me start with a word about textures. If you include
no textures your model will take on a uniform chromed
finish. Textures are bitmaps (Targa bitmaps, 24-bit or
32-bit, RGB Color, uncompressed) used to introduce
things like the special gold and wood-grained models in
the game. The default weapon texture that almost all of
the Bioware weapon models use is w_metal_tex.tga
(it can be found in the data\templates.bif file using NWN viewer). This file is a matrix of
squares with different textures on it. If you use this texture you can get a good selection of metals
(plain, gold and bronze) plus wood, a few colors for
gems, etc. You do not need to include this file in your
Untested Note (from Revinor)
hakpak – it is already available in the game.
• Try doubling the size of your .tga file
If you are going to include a custom texture, include a
high resolution one (512 x 512 or at least 256 x 256)
and pick up Bioware’s DDS Compression Tool or
DDSTools to run against your .tga file. Include both the
.dds and a lower resolution version of your .tga file into
your hakpak (say, 64 x 64). Higher-performance
graphics cards will use the dds for high detailing. Older
machines will use the .tga file with slower graphics
cards. If you leave out the .tga file, machines with lower
end graphic cards will see your models in plain white.
Not pretty.
before compressing it to avoid
pixelization. You will convert every pixel
to 2x2 pixels (smooth it if you like);
THEN convert it to DDS - quality should
be better (and file size of course will be
bigger).
•
DDS compression works on 4x4 blocks
of pixels. If you have more than 2
distinct colors in the same 4x4 block,
you will have some pixelization (every
4x4 block is defined by 2 colors plus
transitions between them). For most
textures, it is really acceptable - you
can show smooth transitions (4 levels
of transition for 4 pixel space - ideal)
and you can show hard edges.
While you are at it, you may want to turn your 2D icon
files into DDS files as well. I’m not sure what this does,
exactly, but you will find DDS files for all of the icons in
the \texturepacks\GUI_32bit.erf directory, so it probably
makes sense to have them. My experience so far has been that the game works fine without
them but that may not be true for some hardware.
Faces (3d model faces, not your character’s face) in NWN are two-dimensional. If viewed from
the backside (or inside), they have no ‘existence’ and do not render. A normal is a unit vector that
is used to define which way a face is pointing. The direction in which the normal points indicates
2
)
-
the front of the face (more specifically, the normal points out from the front of the face). This is the
side of the surface that is normally displayed with its texture in the game.
This is important because you will sometimes find your polys don’t render properly (some are
see-through, for example). You must manually flip or unify face normals to fix these types of
errors (they are typically caused by activities like mirroring objects). To do this, enable Face,
Polygon or Element sub-object mode on your editable mesh, and then use the buttons on the
Surface Properties rollout to change the directions in which normals point. Flip Normals will
reverse the direction of a normal vector. Unify Normals makes all of the selected normals point in
a consistent direction (if an object has normals that are inconsistent - some point outward and
others inward - it will appear to have holes in its surface).
Sometimes objects will look fine in the modeling tool but will not display correctly in the game or
the Aurora toolset. If this happens it may be necessary to ResetXforms and flip normals to fix this
issue (refer to part 3 of this Weapons tutorial for detail on ResetXforms).
Smoothing groups define whether a surface is rendered with sharp edges or smooth surfaces.
You create smoothing groups by assigning group numbers to the faces of an object. If two faces
share an edge and share the same smoothing group, they render as a smooth surface. If they
don’t share the same smoothing group, the edge between them renders as a corner.
Smoothing does not affect geometry. It affects only the way geometry is colored when rendered;
it blends colors at the edges between faces to produce the appearance of a smooth curved
surface. You can control how smoothing is applied to a surface so your objects can have both
smooth surfaces and sharp faceted edges where you wish.
When Wayland’s and Scooterpb’s scripts import NWN models, they automatically assign all faces
to the same smoothing group. To improve the way that they render in NWN, you should review
these objects and reassign smoothing groups as necessary to get the right mix of corners and
smoothed transitions.
9:.
=
When I started to make a Nunchaku model, I was faced with an interesting problem: Nunchak’s
bend in the middle. How do we make this work? The answer lies in looking at the Morning Star,
Heavy Flail and Light Flail models. They use a special technique that we can emulate.
Take a look at the heavy flail model. Like other weapons, the flail is made up of several parts. The
bottom two parts are what you would expect: g_WBlFh_b_011 and g_WBlFh_m_011. But the top
is actually four different parts: g_WBlFh_t_011a, g_WBlFh_t_011b, g_WBlFh_t_011c, and
g_WBlFh_t_011d. The first three parts are links in a chain. The last is the flail head itself. At the
point where the chain links to the head there is an Fx_Node. The bottom two models work as you
would expect. The game engine has been built to treat the top four differently. It will string these
models together into a flexible chain, ending at the Fx_Node. This is what gives the Flail its
unusual behavior in melee.
To create my Nunchaku I built a similar model with the lower parts named according to what you
would expect (g_WBlNn_b_011 and g_WBlNn_m_011). For the upper parts I had to keep the
same names as the heavy flail (the g_WBlFh… names) although I used Nn again on the Aurora
base item. I was even able to put two more links in the chain so that it looked more realistic. The
key is that the Aurora base links to the ‘a’ model, the ‘a’ model links to the ‘b’ model, the ‘b’ model
to the ‘c’ model, etc. The final node in the top piece links to the Fx_Node. You could probably use
this approach to create a hooked chain, Manriki-Gusari or other flexible weapon (this is left as an
exercise to the reader).
9
This section covers the subject of portrait conversion and how
you add portraits for a Player Character (PC) and a NonPlayer Character (NPC) into NWN. Some of this material (at
least the basics on PC Portraits) can be found on Bioware’s
site (http://nwn.bioware.com/builders/portraits.html).
:;
,
)
Notes
•
I have started with the introductory text
from version 1.0 of The Neverwinter
Night’s NPC Portraits Tutorial by
Conjumen and clarified, updated, and
added relevant screenshots and detail
that I felt were lacking.
•
Any omissions or errors are mine and
not Conjumen’s.
< -
Start with the best resolution portrait you have. You will need
to make several versions of this image in different sizes. An image retains much better detail
when scaling down than you can get when trying to enlarge an image.
You are going to have to make some changes to your base image to make sure that it meets the
standards for NWN. It will have to be converted to an uncompressed, 24-bit, Targa Bitmap
(TGA) file if it is not already in that format. Also, you will need images of the correct sizes.
There are a total of 5 different portrait sizes.
Size
Huge
Suffix
_h
Required Image
Dimensions
(width x height)
256X512 pixel
Used Image
Dimensions
(width x height)
256X400 pixel
Large
Medium
Small
_l
_m
_s
128X256 pixel
64X128 pixel
32X64 pixel
128X200 pixel
64X100 pixel
32X50 pixel
Tiny
_t
16X32 pixel
16X25 pixel
Note the difference between “Required Image Dimensions”
and “Used Image Dimensions”. The game requires that the
image file have certain exact dimensions. However, it doesn’t
actually use all of that pixel space. The unused space needs
to be at the bottom of the image.
:
>
Displayed on...
During character creation on the
selection screen
Character sheet
Your portrait on the main screen
Other party members on main
game screen
Pop-up dialogue screen
Hints
•
If you choose to scan in your image,
please learn how to use your image
program’s tone balancing features to
brighten the colors – I have seen too
many dull, lifeless scans that could
have been easily fixed with a little
attention.
•
Also, after scanning, use a sharpening
filter or mask to tighten the images up
before you save them. Don’t do this on
the original image, do it on each of the
resized images before saving (sharpen
works best as the last step because
image resizing will often re-blur edges).
•
What to do with that blank space at the
bottom? If it is original art, you can sign
and date it there. It won’t show up ingame but it will always be there for
future vanity sessions.
5
Even though the game will only use 256X400 pixels instead
of the full 256X512 (it simply ignores the remaining 112 height
pixels), it is still important that you adhere to these 5 portrait
sizes. It is important to know that the game uses 256X400
pixels when you are cropping a portrait or picture.
I will use Micrografx Picture Publisher to resize my portrait.
There are lots of freeware and shareware image manipulation
programs available (see the listing at the beginning of this
document).
Here is the starting image (actually, this is a jpeg compressed
image to conserve space in this tutorial – I’ll do that with all
!
the photos I show here).
Big Warning!
•
* '
#
5
•
If custom portraits aren't saved in the
correct uncompressed tga format, the
game will crash when you try to save it
(this also occurs when the game autosaves – for example, at the end of a
level).
•
If you are using custom portraits and
have this problem, it is because some
applications indicate that the tga is
being saved as uncompressed, but the
format isn't quite right (e.g. InfraView
indicates tga files are uncompressed
but goes ahead and compresses them).
•
Try either removing the custom
portraits to be able to save/load again,
or try saving the portraits again in
another application as an
uncompressed, 24-bit, Targa Bitmap
(TGA).
$
Now, this image is too large (it is 400X492) for any of the portraits. We are going to resize it. It is
also not in the right aspect ratio (400X492 is not proportional to 256X400, for example). We
cannot fix this by resizing. We must crop as well. If we simply resize the picture to 256X400 in
one step, it will be distorted. Not pretty. People’s faces get stretched or compressed and the
resulting portrait looks very awkward.
We start by resizing and then cropping again (to get the dimensions right). We will do this once
for each image size, starting with the largest. There are many ways to do this – you won’t use the
entire image and you can be creative about which pieces you keep. How much do I resize by? I
want to keep as much of the face in this photo as possible because it is already cropped so
tightly. So I will resize the image to get the height to 400 pixels for the huge image (not 512
pixels – that is the final file size) while keeping the aspect ratio constant so there are no size
distortions. In Micrografx Picture Publisher I use Image | Size to do this and make sure that
Allow Size Distortion is not checked.
Why did I choose the height and not resize to get the width to 256 pixels first? If I resized to the
width first with no size distortions, my picture would only be 315 pixels high. This would be too
short for NWN. However, depending on the original dimensions of your portrait, you may need to
do the width first.
After I resized the height, I crop the width down to 256 pixels, giving me an even tighter crop on
the face. Now I add the extra 112 pixels to the bottom of the file. It does not matter what color this
extra data is. In Micrografx Picture Publisher I use Image | Expand to do this. I did not use Image
| Size like I did before because that will stretch the whole image.
!
Hint
•
•
. '
#
6
5
If you use GIMP, check out
http://NWNBuilders.com/. SamJones
has created a script that automatically
takes a portrait file and produces the
five file sizes you need for portraits.
(
Save the file with the _h.tga suffix. And then do it again for each of the different sizes (if you
want to use these as NPC portraits, you might want to read the next section about more detailed
naming standards first, to save yourself trouble going back and doing it later).
Be creative. The smaller images do not need to show the entire portrait. You might choose to
crop differently as you move to the smaller image sizes, having a fuller figure portrait or headand-chest shot for the larger sizes but cropping down to a tight image of the face for the smaller
pictures. I would do this so you retain some detail in the smaller photos instead of cutting them
down to nothing more than an unrecognizable, tiny stick figure. I don’t show that technique here
because my image is such a close crop on the face already.
:;
>
?
Now that you have created your portraits, if you want to use them for a PC, just drop them into
your /portraits subfolder of your NWN game directory. Note: for other people in a multiplayer
game to see your character as you see it, they will also need a copy of your portrait files. Zip
them up and mail them off to the other players. I would suggest using at least some of the naming
standards that are applicable for an NPC below.
!
!:;
>
?
It is a little more complicated to use the new portraits for an NPC. You need to set them up as
resources available to your game. To do that, you need to follow certain naming standards. You
must declare your portraits as available resources to the game. You do that in a 2da file just like
we did for our trident in the previous tutorial. Then it is time to go back to the hakpak editor to
bring all of the pieces together.
"<
Hints
=1 " 1 8
…would not work for NPC Portraits either.
You need to change your portrait filenames to meet the NWN
standard. This is necessary because there are strict
requirements in the portraits.2da file for NPC portraits.
If you extract a portrait from one of the data files in your NWN
folder, you will see the NWN naming system. You should take
advantage of this system, although some variation is allowed.
The following is a description of this system.
The default or generic human male portrait in NWN is named
po_hu_m_99_X.tga. The components stand for:
po_
hu_
m_
99_
X
•
It is a good idea to keep the portrait
name under 10 characters.
•
Some add a portrait title in the file
name of their portrait like so:
po_hu_m_TITLE_X.tga. You can use
this naming system too, though it is
recommended that you keep the
characters to a maximum of 10.
•
Never add portraits to the /override
folder, in fact never add anything to
your /override folder.
•
You must keep the po_ and the _X
(where X is the size of the portrait)
extensions, when naming your portrait
file(s). Otherwise your portrait will not
work in NWN.
Portrait
Human
male (_f for female)
Id number
Image size identifier
(h, l, m, s, or t)
You must keep at least two of these abbreviations: namely po_ and X. Say you have a portrait
called halfelf.tga and it was divided into the 5 different Bioware standard portrait sizes in the
previous step:
Hints
1. Halfelfmale_h.tga
•
4. Halfelfmale_s.tga, and
It is very important that the filenames
are absolutely correct. Also, the names
are CASE SENSITIVE. To make things
a lot easier, make portraits with no
capital letters.
5. Halfelfmale_t.tga.
JemyM
2. Halfelfmale_l.tga
3. Halfelfmale_m.tga
They could be named like this:
1. po_ha_m_37_h.tga
2. po_ha_m_37_l.tga
3. po_ha_m_37_m.tga
4. po_ha_m_37_s.tga
5. po_ha_m_37_t.tga
!
%
<
5
The resource file is where we indicate to NWN that our new portraits exist. Like we discussed in
the weapon tutorial, I would suggest you open up Zoligato’s NWN Viewer and select the
2da.bif file - but don’t do it. Use the portraits.2da file in your \source\2dasource.zip
(remember that note earlier about Bioware patches?). Go ahead and take a look at it. You should
see this:
2DA V2.0
0
1
2
3
4
BaseResRef
****
dw_f_01_
dw_f_02_
dw_f_03_
dw_f_04_
Sex
4
1
1
1
1
Race
****
0
0
0
0
InanimateType
****
****
****
****
****
Plot
****
0
0
0
0
LowGore
****
****
****
****
****
These different entries are the resources available to the game as portraits. Every resource has
several columns attached to it. Check below to find out what the different columns represent:
Column
Description
Values
An integer ID# identifying the portrait
internally.
When choosing an ID for a .2da file,
use one of the User999 rows.
BaseResRef
Refers to the base resource for the
model that this portrait represents.
Refer to Appearance.2da. They
are used in the Aurora Toolset filter
when adding a portrait file to an NPC.
Sex
Gender, actually.
The number comes from the first
column in the 2da file gender.2da
from the 2da.bif file (you can view
the contents of this file using the
NWN Viewer as well).
0
1
2
3
4
Race
This number is used for the toolset
filter when selecting a portrait for
your NPC.
Male
Female
Both
Other
None
The number comes from the first
column in the 2da file
racialtypes.2da from the 2da.bif
file (you can view the contents of this
file using the NWN Viewer).
0
Dwarf
1
Elf
2
Gnome
3
Halfling
4
Half-Elf
5
Half-Orc
6
Human
Etc.
****
if it is a placeable and not a
creature
!!
Column
Description
Values
InanimateType
The type of placeable.
Refers to placeabletypes.2da
0 Battlefield
1 Containers
2 Military
3 Misc
4 Misc_Interior
5 Parks_Nature
6 Penants_Signs
7 Trades_Academic
8 Visual_Effects
**** if it is a creature and not a
placeable
Plot
Is this a plot portrait? Generally no.
0
if no
1
if yes
****
if it is really a placeable
anyway
(1 equates to TRUE if you know C or
C++)
LowGore
>
5
The portrait to use in place of this
one if the game is set to low gore
mode. If you create a really messy
portrait, find or create a substitute,
low gore, portrait here.
Portrait name (generally **** for
creatures).
<
Begin editing the portraits.2da and adding a new
resource, so your portrait can be recognized by the game.
I have created an elven female portrait with the file names
‘po_el_f_50_X.tga’, where X represents the size of the
portrait.
Hints
•
The reason that the number is 572 in
the PL entry is because in v1.26 or so,
Bioware added some reserved spots
for user portrait updates. Use them.
Add the last line you see below, under the resource ID 571
(the first User999 space)
570
571
572
kobb_
koba_
el_f_50_
4
4
1
15
15
1
****
****
****
As you can see I’ve omitted the po_ and the X (where X is
the size of the portrait) in the resource entry. This is why,
earlier, we told you that you had to start and end your
portraits with that prefix and suffix. Also the extension .tga is
not necessary either. The game already knows that the prefix
it should use is po_, the suffix is h, l, m, s or t, and the
extension required for all portraits is .tga.
So to conclude, you do not need to add po_ and _X (where X
is the size of the portrait) to the resource entry.
!&
0
0
0
****
****
****
Hints
•
It is a good idea to copy a line similar to
the one you want to add and use it as a
starting point. As an example if you
want to add a new female elf, the
resource ID you would copy would be
entry number 30.
•
The reason for the extension _50_ in
the example above is that the last elven
female portrait number (that you can
use) is 14, so a new portrait would have
to start at > 14. I chose 50 for the same
reason we use 2001 in the 2da file.
>
67
%
%
Now that you have created your portrait TGA files in the standard formats and edited the
portraits.2da file, it is time to add them to a hakpak. Refer to the appendix for detailed instructions
on using the hakpak editor.
Open the hakpak utility. Now that it is opened, choose Resource | Add. Now you add your
modified portraits.2da file and your new portraits (with all its 5 sizes) to the hakpak. All the files
should now be displayed in the hakpak window. If you’ve only added one portrait, there should be
a total of 6 files in the hakpak now.
Add a title to your hakpak, and a description of the contents. Save the hakpak.
•
/ +
3
3
Hint
1. Open up the Aurora Toolset. If it was still open from
before, save and close the module and toolset then reopen the toolset.
2. Create a new module or open an existing one.
3. Select Edit | Module Properties…
•
Sometimes the Aurora toolset gets
confused about hakpaks. The best way
to load or reload a hakpak is to close
and re-open your module.
•
To add a new hakpak to a module,
save and reload your module after
adding the hakpak.
•
If you have modified a hakpak and want
to use the modifications, save and
reload your module again.
•
Sometimes you need to close the
Aurora toolset entirely and restart it.
4. Click on the Advanced tab.
!
5. From the drop-down for the Hak file, add your hakpak. If it does not appear in the drop-down,
your hakpak is probably not in the /hak folder of your game directory.
6. Save and close the module and then reload it.
7. Select the Area you created.
8. Create a new NPC using the Creature Wizard.
9. Select Next.
10. Select Elf and Next.
11. Select a Class and Next.
12. Select Female, and then press the Select Portrait button.
•
0 "
%
78
Done.
!/
*
*
This tutorial covers creating a custom voiceset for NWN. A
voiceset is a package of standard voices that can be emitted
by PCs, NPCs, henchmen, and monsters. All of the different
voiceset types are similar but the number of expressions is
different for each. You will see these referred to in some
places as soundsets. The meaning is generally the same – in
fact, Bioware seems to use the terms interchangeably. I will
use voiceset because it more clearly represents what these
are.
Before you delve too deeply into this, you may want to think
first about where you will get your voices. I can suggest two
sources:
Notes
•
I have started with the introductory text
from Custom Soundsets by
Ddraigcymraeg and clarified, updated,
and added relevant screenshots and
detail that I felt were lacking.
•
Voicesets are specific to voices. NWN
includes other sound types (ambient
and environment sounds) as well. You
don’t need to package these other
sounds into a voiceset to use them.
•
If you simply want to trigger a unique
sound for one of your characters from a
script, you do not need a soundset (see
the section on placeable sounds). Just
add the .wav file to your module and
trigger it from a script.
•
I have seen some people load the soundtrack for a
movie/show onto their PC. Then use an audio mixing
program to select and edit out brief snippets from one of
the main characters.
•
Alternately, and more creatively, record your own. Does
your voice sound too thin and reedy in a straight
recording? If you have a good soundcard with editing
tools, you would be surprised at the types of filters that
are available for voices these days (male to female, low
to high, echo, etc.) that can take you and turn you into
somebody else. If you are going this route, pre-script all
of the phrases you want (they don’t have to be the same
words as the ones in the official module as long as they
convey the same meaning).
•
The original tutorial expressed some
confusion over whether or not to use
hakpak’s for sounds – I have tried to
clean up this confusion as best I can (in
short, use them).
•
Any omissions or errors are mine and
not Ddraigcymraeg’s.
:;
*
,
)
< -
Let’s look at how NWN uses current voicesets in the Aurora Toolset. Try this exercise:
1. Open up the Aurora Toolset.
2. Create a new Module (we will call it Voice Tutorial for lack of a better name). Use the
Area Wizard to create at least one Area. Use the defaults to set up the area and choose
something simple like a Castle Interior.
3. Select Wizards | Creature Wizard.
4. For Monster Type select a half-Elf (we will talk about the standard weapon types later in
this section).
5. Click Next.
6. Enter a class or two.
7. Click Next.
!2
*
8. Verify that this is a male, half-elf. Select a portrait.
9. Click Next.
10. Choose a faction.
11. Click Next.
12. Choose a name.
13. Click Next.
14. Assign to the NPCs, Half-Elves category.
15. Click Next. Click Next.
16. Check the Launch Item Properties checkbox.
17. Click Finish.
18. Select the Advanced tab.
•
1 8
# 6
78
19. Now you can select a Sound Set (lower right side). Press …
20. Use the filter to choose an NPC, male voiceset.
!9
*
•
9
What does this do, exactly? By assigning a voiceset to this NPC, the game engine will
automatically emit appropriate sounds from this set based on triggers within the game (for
example, the NPC will make one of several noises when attacking). I don’t need to program this
individually for each NPC – the game engine already knows which sounds to play when.
You can use also use wav files to play sounds during a character’s dialog. This is an example of
using a wav file that does not have to be part of a voiceset. To do this, create a new conversation.
Add a line of text. Select the line of text. Find the Other Actions tab at the bottom right hand
corner of the conversation editor.
Type in the name of the wav file you created or page down on the list and select it. Now, when
that dialog is triggered, the sound file will accompany the text in the game.
•
'
9
&
*
5
6
7
What you should see from all of this is that there are different levels of granularity in the way
NWN represents voices. The basic sound file has a .wav extension.
Where can I find the official sound files from Bioware? Through NWN Viewer, of course.
1. Open the NWN Viewer.
Notes
2. Select data/voicesets.bif (you can also find some in
data/sounds.bif and in data/convo.bif).
3. Scroll down and select VS_nAribetF_atk1.wav. Press
the Play button to listen to the sound Aribeth makes when
attacking. This is actually a proprietary mp3 sound file but
PCM wav files work as well.
*
6 ?
7
At the next level up is a voiceset file that defines what sound
files make up a complete group. This file includes a header and
a series of standard sounds (0 through 48). For each standard
sound there is a sound file name and corresponding string
reference (STRREF) values (pointing to dialog.tlk).
1. Open the NWN Viewer.
•
I have seen different claims as to what
format works for a sound file and what
doesn’t. I did a quick test on my own
using the sound recorder in Windows.
•
8KHz, 8bit mono PCM wav files work
(but the sound quality is poor)
•
48KHz, 16 bit mono PCM wav files
work.
•
I would recommend something like a
44KHz, 16 bit mono wav file.
•
Stereo wav files do not work. This
intuitively makes sense because the
voice comes from a single source at a
single location (you can use stereo
sources for ambient sounds).
•
Interestingly, the .wav files that come
with NWN are actually proprietary mp3
files. It is not clear how to edit or work
with them though – you cannot use
mp3 files directly as sound files (you
can’t use BMU files either – check the
Ambient Sound tutorial from Bioware if
you don’t know what a BMU is).
•
Don’t get too caught up in that though –
it is probably easier for you to work with
.wav files anyway. The only real
advantage that mp3 files have is that
they are compressed; therefore
smaller.
2. Select data/sounds.bif (you can also find some in
data/sounds.bif).
3. Scroll down and select VS_nAribetF. I don’t know about
you but my copy of NWN Viewer coughs at this point. Not
good. Play around with it, you can probably extract an SSF
file and look at it outside of NWN Viewer (try turning autopreview off).
4. If that didn’t work, open up an SSF directly. Use File | SSF
| Open instead (good luck finding one; they have been
moved to patch.bif now). Open one of them up to see
what it looks like:
•
+
:
Note that the last column, TLKREF, does not appear directly in the voiceset file. Instead, there is
a String Reference number (STRREF) number. NWN takes this STRREF in the voiceset file and
&
*
does a lookup of the text in the dialog.tlk. Why does NWN have the STRREF in the soundset
file? These STRREF entries point to the custom text strings that appear above the character’s
head when the sound fires off (a SpeakString). Not all sounds have a SpeakString (they are
optional). No SpeakString, no text above the character’s head.
Voiceset files are always 1,216 bytes long. The resource names can refer to the names of any
wav in data\voicesets.bif, data\sounds.bif, the /override directory or in a hakpak.
(Need I say what I think about using the /override directory?)
:" <
=1
1
…works for voicesets. Almost.
There are up to 49 sounds in a voiceset. The order in which the sound name occurs in the
voiceset file defines what NWN expects the sound to be. For example, the first sound in the
voiceset file will always refer to a .wav that is fired off when your PC orders a familiar or
henchman to attack the nearest creature.
We should be experts at using the NWN Viewer by now. Let’s take a look at the different voiceset
files.
1. Open the NWN Viewer.
2. Select data/soundsets.bif.
3. Scroll down and you can see all the sound
VS_nAribetF_attk.wav, c_goblinK_bat1.wav.
files.
They have
names
like
The suffixes like '_attk' are just labels to help you quickly identify what type of the 49 potential
sounds it is. You could give it any name you want but using these standard labels will make your
voiceset much easier for others to understand.
Oh-oh. Sounds like I’m heading back to those pesky naming standards. You’re right.
*
%1-
The prefix helps to identify what type of voiceset it is. Use NWN Viewer to looking at the
soundsettypes.2da file. This shows you the 5 different types of voicesets. I have included in
the chart below the standard prefix, and the number of sounds typically in one of the voiceset
types.
Type
Target
Standard
Prefix
# of
Sounds
0
Player Character
VS_f
49
1
Henchman
VS_h
29
2
NPC Full
VS_f
49
3
NPC Partial
VS_n
21
4
Monster
C_
11
Notes
•
The official module in NWN only uses
the Player, NPC Partial and Monster
type codes. For example, if you look for
the henchman voices in the official
module they have the names
VS_FAVHEN1F, VS_FAVHEN2F,
VS_FAVHEN1M through
VS_FAVHEN4M. But they are of type 3
(NPC Partial), not henchman. Weird,
eh?
%1There are potentially a total of 49 sounds in a voiceset. The order in which the sound name
occurs in the voiceset file defines what the sound is in NWN. The first sound in the voiceset file
&
*
will always refer to a .wav that is fired off when your PC orders familiars/Henchman to attack
nearest creature.
The order of the sounds in the ssf files are:
PC
1
Hench
man
2
NPC
Full
3
NPC
Partial
√
√
√
√
√
√
√
√
√
Battle Cry 2
√
√
√
√
√
*_bat3
Battle Cry 3
√
√
√
√
√
4
*_heal
Heal Me
√
√
√
√
5
*_help
Help
√
√
√
√
6
*_enmy
Enemies Spotted
√
7
*_flee
Flee
√
8
*_tant
Taunt
√
√
9
*_gard
Guard Me
√
√
10
*_hold
Hold Position
√
√
11
*_atk1
Attack 1
√
√
√
√
√
12
*_atk2
Attack 2
√
√
√
√
√
13
*_atk3
Attack 3
√
√
√
√
√
14
*_hit1
Hit 1
√
√
√
√
√
15
*_hit2
Hit 2
√
√
√
√
√
16
*_hit3
Hit 3
√
√
√
√
√
17
*_dyin
Dyin
√
18
*_dead
Dead
√
√
√
√
√
19
*_sick
Sick
√
√
√
20
*_spel
Spell Failure
√
√
√
21
*_inff
Weapon Ineffective
√
√
√
22
*_foll
Follow Me
√
√
23
*_look
Look Here
√
√
24
*_grup
Group Together
√
√
25
*_move
Move Out Of Way
√
√
26
*_pick
Pick Door/Trap
√
√
27
*_srch
Search Here
√
√
28
*_hide
Hide
√
√
ID
Extension
0
*_attk
Order to Attack
1
*_bat1
Battle Cry 1
2
*_bat2
3
0
Phrase
&
4
Monster
√
√
√
√
*
29
*_can
Can
√
√
√
30
*_cant
Cant
√
√
√
31
*_done
Done
√
32
*_encm
Encumbered
√
√
√
33
*_slct
Selected
√
√
√
34
*_hi
Hi
√
√
√
√
35
*_yes
Yes
√
√
√
√
36
*_no
No
√
√
√
√
37
*_stop
Stop
√
√
38
*_rest
Lets Rest
√
√
39
*_bore
Bored
√
√
40
*_bye
Goodbye
√
41
*_thnk
Thanks
√
42
*_haha
Laugh
√
43
*_cuss
Cuss
√
44
*_vict
Victory
√
√
√
√
45
*_say
Say
√
√
√
√
46
*_good
Good Idea
√
√
47
*_bad
Bad Idea
√
√
48
*_warn
Warn
√
It does not really matter if you don’t have all sound files in a
voiceset for it to work. However, if a sound file is blank, it will
not get fired off in the game scripts (at least it won’t crash the
game). You can also re-use sound files (e.g., make row 12 and
13 refer to the same _atk1.wav file as you can find in row
11).
Also, look around in the voiceset.bif file. You will find that
Aribeth has more sound files than you can account for from
this list (e.g., VS_nAribetF_468.wav) . This is because you
also don’t have to limit your sound files to the list in a voiceset.
These other sound files for Aribeth are triggered by the
playsound() script command and other events in the game
engine including the Other Actions tab in the dialogue editor.
&!
√
√
√
√
√
√
√
√
√
√
√
√
√
Notes
•
I don’t have any examples of
Henchman or NPC Partial soundsets
so I cannot vouch for the contents as
indicated above (these definitions are
from the original tutorial by
Ddraigcymraeg).
•
The full name of your .wav file (minus
the .wav) must be 16 characters or
less.
•
Combat sounds like _atk1, _atk2, _hit1,
_hit2 etc… do not display text in NWN
so you do not need a STRREF for
them.
*
:; -
5
Like the weapon tutorial, the easiest way to introduce your own voiceset into NWN is to replace
existing content. This does not require any real changes and just asks that you rename your wav
files to override existing content. We will look at more advanced techniques after this.
Let’s find a voiceset to replace.
1. Open the NWN Viewer.
2. Select data/2da.bif.
3. Scroll down and select the file soundset.2da. This file identifies all of the different voicesets
in the game.
4. Locate a voiceset you will probably not use in your campaign. AribetF – Aribeth – seems to
be a popular choice. If you want to replace a male’s voice, try DestheM (Desther).
5. The column you need to have is the one titled RESREF. This is the voiceset identifier. In this
case, VS_nAribetF.
6. Name all your wav files VS_nAribetF_<suffix>.wav. For example, VS_nAribetF_atk1.wav,
VS_nAribetF_atk2.wav, etc.
7. Load these files into a hakpak. Remember, the VS_n prefix tells NWN that this is an NPC
Partial voiceset so you will need 21 wavs to fully replace the set.
8. Now when you open your module, associate the Aribeth voiceset with your NPC and you can
use your new sounds for this character.
This method only replaces an existing voiceset and it does have some shortcomings:
a) You cannot mix and match different voiceset sounds unless you want to copy the wav files
multiple times. So you could not mix one character’s attack voice with another’s greeting.
b) The text that is displayed over a character’s head when she talks still uses the strings from the
original voiceset.
If what you really wanted was a PC voiceset, stop here and use the technique I just showed you.
Replace a voiceset that you won’t use. In the next section I will show you how to add an entirely
new voiceset. However, the next method does not work for PC voicesets unless you use the
/override directory. And by now you know how I feel about the /override directory. I’ll
explain more at the end of that section as to why it doesn’t work.
&&
*
!:
*
Let’s address the concern with not being able to mix and match voiceset sounds. A better way to
define a voiceset is to give it a resource definition of its own. This is similar to the process we
used to give a weapon its own resource definition. What we want to do is define a new voiceset
resource and create a new voiceset file (.ssf) to go with it. Let me show you the relationship
between the different files we discussed earlier:
File: gender.2da
Location: data\2da.bif
File: soundsettype.2da
Location: data\2da.bif
File: soundset.2da
Location: data\2da.bif
File: <voiceset>.ssf
Location: sounds.bif
File: <voice>.wav
Location: sounds.bif or
voicesets.bif
Let’s start with the definition of the new resource. We are going to edit the soundset.2da file to
define a new resource. Here is what the first few lines of the file look like:
2DA V2.0
0
1
2
LABEL
Aasimar
Archhound
Archlant
RESREF
c_aasimar
c_archhond
c_archlant
STRREF
8291
53091
53092
GENDER
0
0
0
TYPE
4
4
4
Copy a line similar to the one we are going to add. In this case, let’s create an NPC voiceset.
Copy the second last NPC voiceset definition (currently line 241) and paste it into the first User99
slot.
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
GendM
ffightf_PCV
fkiller_PCV
fseductf_pCV
fthugf_pcv
Kobold
KoboldChf
KoboldWiz
Rat
DireRat
Reserved01
Reserved02
Reserved03
Reserved04
Reserved05
McAul
User02
VS_nGENDM
VS_ffightf
VS_fkillerf
VS_fseductf
VS_fthugf
c_kobold
c_koboldchf
c_koboldwiz
c_rat
c_direrat
****
****
****
****
****
VS_fMcAulM
****
53061
68489
68490
68491
68492
2928
2929
2930
3022
3023
****
****
****
****
****
68492
****
Here is what the fields mean:
&
0
1
1
1
1
0
0
0
0
0
****
****
****
****
****
0
****
3
0
0
0
0
4
4
4
4
4
4
4
4
4
4
3
4
*
Column
Description
Values
An integer ID# identifying the portrait
internally.
When choosing an ID for a .2da file,
use one of the User99 rows.
LABEL
The internal label for the voiceset.
RESREF
Refers to the base voiceset name.
STRREF
A reference to dialog.tlk giving the
name of this voiceset.
This is the name that will show up in
the Aurora toolset or the character
creation screen.
GENDER
Uhm. Should be self-explanatory.
This is used in the filter screens
when selecting the voiceset (if you
choose a female character, you only
get female voices).
The number comes from the first
column in the 2da file gender.2da
from the 2da.bif file (you can view
the contents of this file using the
NWN Viewer as well).
0
1
2
3
4
TYPE
The voiceset type that we described
earlier. Again, this is important
because it is used in the filters in
NWN when displaying the voiceset
selection screens. For example,
unless you have a voiceset type of
PC, you cannot select this voiceset
for one of your characters in the
character creation screens.
Change the LABEL to McAul (our character’s name,
who is male).
Change the RESREF to VS_nMcAulM according to our
naming standards earlier for the .wav files.
Male
Female
Both
Other
None
0 to 4.
Notes
•
Leave 68492 in the STRREF.
Use 3 for the voiceset type because this is an NPC
Partial voiceset.
We would like to use **** for the
RESREF to force the game engine to
use the LABEL when displaying the
new voiceset in the Aurora Toolset. But
this does not work yet for
soundset.2da.
Well, that was easy enough. Now we have to create a VS_nMcAulM.ssf voiceset file.
1. Open the ssfEditor.
2. Type McAulMx into the Base Name field. This should be the name of the custom voiceset
RESREF minus the sound set type prefix (i.e. minus VS_n or C_). SsfEditor wants you to use
a 7 character name (NWN does not enforce this but go with the flow for now by adding an x at
the end).
3. Select NPC (vs_n) in the Soundset Type dropdown.
&/
*
4. Press New. ssfEditor enforces naming conventions for the NWN game engine by creating all
49 rows in the ssf file and appending the appropriate prefix and suffix to create each .wav file
definition.
5. Leaving the STRREF field blank for no SpeakString text. You can only update a row by
pressing Update Sound.
6. When you are finished, press Save. The name of the saved .ssf file MUST refer to the correct
RESREF you added to the soundset.2da earlier (VS_nMcAulM.ssf, without the additional
x).
•
&
;
7. Create or rename your 49
VS_fMcAulMx_<suffix>.wav.
.wav
files
to
Notes
•
When you close your module and
reload it to bring up the new hakpak
(remember we talked about this being
the most reliable way of reloading a
hakpak?), you won’t find your new
soundset. Why not? For some reason
the Aurora Toolset does not seem to
reload the soundset.2da in this
situation. You have to completely shut
down the toolset and restart it.
•
Apparently a bug very similar to this
was fixed for baseitems.2da in version
1.26 but the same error seems to
persist for soundset.2da.
8. Put your new soundsets.2da, VS_fMcAulM.ssf,
and .wav files into a hakpak.
9. Load the hakpak into your module.
10. Create a new NPC in that module. Your new voiceset
should be available as the voice for your character.
Your voiceset will have the title of Female,
Brutish Thug in the Aurora Toolset because of the
STRREF you used earlier. Not that it is a female’s
voice, just that this is what the STRREF points to in
dialog.tlk.
This new voiceset still isn’t perfect. In the example above, we do not have any SpeakStrings tied
to any of our sounds. Personally, I don’t find this a huge problem (if you look at the original game
&2
*
module closely, you will see that many NPCs use strings close to but not exactly the same as
what they say). But if you want appropriate SpeakString text, look through the other voicesets and
duplicate the STRREF entries there in your .ssf file. There are nearly 69,000 strings in dialog.tlk
so at least one might come close.
You may be tempted to add your own SpeakStrings in the dialog.tlk file. Don’t do it! You are
better off using a string similar to your dialog (even if not exactly the same) rather than distributing
a modified dialog.tlk.
Okay, I promised you an explanation as to why this doesn’t quite work for PC voicesets. The
problem is that in the character creation screen NWN has not loaded the module yet. Until it loads
the module, NWN does not load any hakpaks from the module – including your soundset.2da
file. Which means it does not know about the nifty new voiceset you added. Without this
information, you cannot select the new voice from the character creation screen. Erk.
Currently, the only way to get a brand new voiceset into the character creation screen is to put
the soundset.2da file in the /override directory. I really don’t like this method. I heartily
recommend the previous method where you replace an existing voiceset.
An alternate method is coming soon: Half-Elf has developed an independent Character Creator
that builds character files outside of NWN. This allows you to do many things, including using new
voice files for your PC.
&9
.
.
In the first section of this tutorial we looked at adding a specific type of item: a weapon. NWN
represents a wide variety of items with models, not just weapons. And it allows you to add new
miscellaneous items, not just modeled items. This mostly requires skills with 2d images to create
the icons that show up in your inventory. For example, take a look at the new FRCS gem icons
(http://nwvault.ign.com/Files/hakpacks/data/1037972170390.shtml) that Shade Shadowbane
created to replace the ones in the main game.
:;
,
)
< -
Let’s look at how NWN represents an item like a gem, and how it is different than a weapon, by
actually building an existing one in the Aurora Toolset. Try this exercise:
1. Open up the Aurora Toolset.
2. Create a new Module (we will call it Item Tutorial for lack of a better name). Use the Area
Wizard to create at least one Area. Use the defaults to set up the area and choose something
simple like a Castle Interior.
3. Select Wizards | Item Wizard.
4. For Item Type select a Gem (we will talk about the standard types later in this section).
5. Click Next.
6. Enter a name (Soldier’s Eye).
7. Click Next.
8. Add to the Miscellaneous, Gems category.
9. Click Next.
10. Check the Launch Item Properties checkbox.
11. Click Finish.
12. Select the Appearances Tab.
You can now modify the appearance of the item by
selecting the appropriate icon. Notice the names of the
icons – yes, Virginia, naming standards do matter for these
items as well. In this case, all of the gem icon names have
the format iit_gem_001, iit_gem_002, etc.
Notes
•
Take a closer look at the Appearance
tab – where did that 3D model come
from? Isn’t the title of this section Items
without Models? Well, what I really
meant is that you do not need a unique
3D model for many items because the
game engine only has to render the
model if it is laying somewhere on the
floor, just waiting to be picked up. Most
of these items default to the it_bag
default model or the it_potion_000
model.
.
The default
3D model
The 2D icon
•
) < #
!
Now, my 2D icons probably don’t look the same as yours. I’m using Shade Shadowbane’s hak in
this example.
Now that you understand the different parts of a basic item, let’s get started.
:
?
4
Probably the best place to start to understand all the different models you can add is through
baseitems.2da. So fire up NWNViewer and take a look. There are a series of items with
ItemClass = it_<whatever>. If you look in the models01.bif and models02.bif files, you
will not find item models with these names. Scroll a little to the right of baseitems.2da. You will
find another column named DefaultModel. Some of these items have a default model of
it_potion_000 or it_trap_001 but most are it_bag. These are the default models used
when the item is laying around in a scene.
The basics of adding new icons to an existing item type are very similar to the process for
creating a new weapon, without worrying about the model. Let’s add an icon for a new ring. Find
the item in baseitems.2da (in the case of the ring, it is the item with ID # 52). Get the
ItemClass value (it_ring). The icon name will be this ItemClass value with a prefix of i and a
suffix of _0nn.tga where nn goes from 01 to 50 (existing ring icons have the names
iit_ring_001.tga to iit_ring_035.tga).
.
Look at the InvSlotWidth and InvSlotHeight values for this item. Remember from the weapon
section of this guide that icons must be InvSlotWidth x 32 pixels wide and InvSlotHeight x 32
pixels high. Sure enough, if we use NWNViewer to open the
Textures01.bif file we will see that an iit_ring_nnn.tga
Notes
• Some items (for example, gems)
item is, in fact, a 32 x 32 pixel tga file. If you want, you can
appear to have a hard-coded limit on
use an existing icon as a starting point.
Create your new icons using this naming standard and size.
If you want to replace existing icons with your new ones, use
the exact same name. If you want to add new selectable
icons, add them after the highest existing icon number (e.g.,
starting at iit_gem_016 for gems because the highest
existing value is iit_gem_015).
I am going to create a 3-stoned ring. Once I have done that,
ring and stones, and save it. Now I put them in a new
module that includes this hakpak:
how many unique items you can have
in the game (it is 50 for gems although
this number is higher for other items
because there are already 73 small,
miscellaneous items).
I put a mask around the
hakpak and create a
13. Bundle up your new icons in a hakpak (refer to the section on hakpaks for details on how to do
this if you haven’t picked up on it yet).
14. Open up the Aurora Toolset.
15. Create a new Module (we will call it Item Tutorial for lack of a better name). Use the Area
Wizard to create at least one Area. Use the defaults to set up the area and choose something
simple like a Castle Interior.
16. Set the module to point to your new hakpak in Edit | Module Properties | Advanced. Save,
close and re-open your module to load the hakpak.
17. Select Wizards | Item Wizard.
18. For Item Type select your particular item. Click Next.
19. Enter a name. Click Next.
20. Add to an appropriate category. Click Next.
21. Check the Launch Item Properties checkbox. Click Finish.
22. Select the Appearances Tab.
23. Your new icons should now be available in the 2D icon view.
.
•
:
*
5
#
=
=1 *
<
You can also add brand new items through baseitems.2da. Before we do that, let’s talk about
your alternatives. There are already miscellaneous items in baseitems.2da. You can create a
small item (1 x 1 inventory squares), a mid-sized one (2 x 2), a large one (2 x 3), or a thin one (1
x 2). My first suggestion would be to use these resources and only create a brand new item if you
these don’t meet your needs. To do that, use one of the
existing icons or add a new one using the process I just
Notes
described.
• Why use the existing miscellaneous
Now, let’s assume we really need to create a new item – in
our case, we really want an item type for a musical
instrument for our bards. Lutes. Harps. Bagpipes. Tubas
(tubi?) You name it. The problem with the miscellaneous
items is that the weight and cost is all wrong for musical
instruments. So we are going to create our own entry in
baseitems.2da.
items where I can instead of creating
my own? Generally because it is easier
(and causes less trouble when Bioware
updates their game) if you do not have
to add new resources to a .2da file.
Get a copy of baseitems.2da out of \source\2dasource.zip. Copy an existing line item
similar to the one you are creating. I have several choices. If I wanted to create models for my
instruments and then have the character actually wield the model, I might use something like a
Magic Rod as a template (you cannot equip a rod but it does have a model and is used briefly
when activated). This animation probably does not fit a lute or harp well though, and I said this
section was for items without models, so I will use a book instead. Books only show up in your
inventory. We’ll start by making a copy of the book line and adding it in at the bottom. My new
item is not going to be like a book, but a book is a good item to start with when modifying this file
because it shares the same characteristics that we want.
1. Copy the new baseitems.2da file to the directory with your model and icons.
2. Open baseitems.2da using a text editor (Notepad works fine although some people use Helios
Software Solutions' TextPad). Turn wrapping off so everything aligns nicely.
.
3. Go ahead and take a look at it. Scroll down until you get to the necklace entry. You should see
this:
74
75
76
531
532
535
book
spellscroll
gold
2
1
2
2
1
2
4. Copy the book entry and paste it at the bottom.
5. Modify the entries as appropriate for your new item. I won’t go through all of the different
options (refer to the weapons tutorial for more detail) but here are the key ones:
Column
Values
ID
2006
Name
Same issues as for a weapon. This should be **** (should tell the game
engine to use the label for a name). However, this does not work. I could not
find the text Instrument in dialog.tlk. I’m going to use 1592 which is
simply ‘Miscellaneous’ for now.
Label
Use ‘_’ underscore if you want spaces in the label.
InvSlotWidth
Inventory slot width and height. Make sure it matches the size of the icon
you created earlier (in our case 2 x 4 because our icon is going to be 64 x
128).
InvSlotHeight
EquipableSlots
ItemClass
I probably want to leave this as 0x00000 (not equipable) because I don’t
want it going into one of the pre-figured slots. For details, refer to the
weapons section where I explain the different types.
it_musicin (add a new item type). The icons will be iit_musicin_001 to
_050.
WeaponType
Leave the weapon columns alone
Stacking
Number of identical items that can be stacked together in your inventory
(this is why you get 99 arrows in a bundle, 10 potions, etc.)
Description
1592 (this makes the description ‘Miscellaneous’ as well because there is no
entry for an instrument description in dialog.tlk).
6. Back through the same routine. Save the .2da file, load it into your hakpak.
7. Make sure your icon files have the right names.
8. Load all of these into your hakpak. You should have, at a minimum, the following:
!
.
•
. -
%
#
3
3
9. Load up your module in the Aurora Toolset.
10. Now you can create a new instrument using the Item Wizard. You will find the template under
“Miscellaneous” in the selection list.
•
/ 4
#
11. Modify the Description of your new instrument to reflect the type of instrument it is.
&
.
!:8
With the technique we have covered here, and in the section on weapons, you should have the
skills and tools to handle just about any other kind of item there is. Some are multi-part like
weapons (potions, keys, boots to name a few). And some are singular (rings, amulets, etc.). The
steps are simple:
1. Use the Item Wizard in the Aurora toolset to create a basic template and understand how it
goes together.
2. You can usually also get the naming standard from the Aurora toolset. If not, look in
baseitems.2da for the default and other model names.
3. Go to the source using NWNViewer to find the models and the textures.
4. Create!
With this basic set of tools I will cover only a few more types of item specifically in this tutorial
because their complexity begs separate treatment (I am referring to the armor models in the next
section).
-
Let’s see what else we can do with .2da files. Maybe I want to create a new spell effect. I’d like to
create the necromantic spell, Chill Touch. I get a huge combination of effects to build my new
spell from. I can add new icons similar to what we did for the weapons and other items. The only
real tricky part will be coding the effects I need.
To create a new spell, these are four basic steps:
1. Create two icons, one for the spell and one for the spell as a scroll.
2. Create a spell resource in spells.2da.
3. Create a spells item property resource in iprp_spells.2da.
4. Create a script that delivers the effect that you want for your spell.
:%
-
Create one icon for the spell and another for it as a scroll. You could use the same icon for both
but Bioware uses a black, white and purple theme for the spell icon and a brown and white theme
for the scroll icon. The image on each is similar. I won’t go into detail on the icons because we
have done so many already. They are 24 bit, 32 x 32 pixel Targa bitmaps (.tga files). The naming
standard is not critical for spell and scroll icons but if you want to follow the Bioware standard it is:
is_<name>.tga for spell icons
iss_<name>.tga for spell scroll icons
Where <name> is a maximum of 11 characters. You can find these using NWNViewer in
Textures02.bif. Use one as a sample of how to do it. Unlike the weapon icons, there is no
mask or other complication on these files.
Here are my two new spell icons. I used the Ghoul Touch icons as a template and did some
editing to make them more reminiscent of a shivering, cold hand. I actually put the spell name on
the spell icon. Why? With the current limitations on changing dialog.tlk, there is really no way to
get my new spell name into your spell book. So I want to make it explicit which spell you are
dealing with. This is not necessary for the scroll because, as an item, I can put whatever text
labels and descriptions I want on it in the Aurora Toolset.
•
0
•
1
=
>
=
>
/
-
:%
-
<
The spell resource file - spells.2da – defines each of the spells (and spell-like abilities), how it
is cast, who can cast it, and a variety of other details. There are eight main parts to a spells.2da
record.
1. General information (spell name, school, range, etc.)
2. What classes can use the spell and what level it is
3. The Conjuration group which stores the sounds and animations that are played when the spell
is being cast. Refer to the spell effects reference near the end of this tutorial for details on
effects you can use.
4. The Cast group which stores the sounds and animations that are executed when the caster is
done chanting and the spell takes effect. This is not the effect on the recipient -- that is handled
in the ImpactScript -- but is, for example, the animation for the cone of frost between the caster
and target in a cone of cold spell. Cast effects take place after Conjuration effects. Refer to the
spell effects reference near the end of this tutorial for
details on effects you can use.
Notes
5. The Projectile group. This one designates any type of
model that moves between the caster and the target.
An example would be the ball of the fireball spell that
travels from the caster’s hand to the target and then
explodes.
6. A list of immunities.
7. Linked spells. This is where you can designate a spell
to have more than one type of end effect, similar to a
Polymorph spell where you can pick from several
options. Linked effects are used for radial menus.
•
This section builds on information first
posted to the NWN forums by Kaine.
•
Something to think about when making
these spells up. High-level spells
should be grand and animation packed,
while low-level spells should be fairly
simple. If you make your level 0 spell
loaded with all sorts of cool effects your
player won't be very impressed with the
meagre or similar effects on the
earthshaking level 9 spells.
8. Miscellaneous information.
The following are the columns from spells.2da:
Column
Label
Description
Values
The ID number
Start at 414, after Bioware’s last
spell. Normally I would tell you to
start much higher but currently In
order for spells to be used as scrolls,
they have to start at 414 and
continue. They also have to appear
in order after the last real spell in
spells.2DA
The name of the spell
Any spaces should be replaced with
underscores '_'. I’m not sure if it will
ever be possible to put **** in the
Name column for spells – Bioware
has indicated that they don’t really
consider rules changes (spells, feats,
2
-
Column
Description
Values
etc.) to be in the field of customizable
content.
Name
The strref to the name of the spell in
dialog.tlk.
The same limitations apply that you
should be used to be now. The label
will not show up in the game engine.
I chose 4692 which points to a string
called “Devil Chills”. Close enough to
imply Chill Touch for now. I don’t
want to use dialog.tlk.
IconResRef
Name of the .tga file that will
represent the spell icon.
You can create your own icons and
put them in the hakpak. This is the
recommended method because
people want to be able to tell spells
apart visually.
Alternately, you can use generic
icons for the different spell school
classes:
Abjuration = is_abjure
Conjuration = is_conjure
Divination = is_divine
Enchantment = is_enchant
Evocation = is_evoke
Illusion = is_illusion
Necromancy = is_necromancy
Transmutation = is_transmut
School
School of magic
A = Abjuration
C = Conjuration
D = Divination
E = Enchantment
I = Illusion
N = Necromancy
T = Transmutation
V = Evocation
Range
Range of the spell
P = Personal (affects only the caster)
T = Touch (affects the person
touched)
S = Short (25 ft + 5 ft/2 levels,
according to standard 3e rules)
M = Medium (100 ft + 10 ft/level)
9
-
Column
Description
Values
L = Long (400 ft + 40 ft/level)
VS
Verbal and somatic components of
the spell.
V = Verbal only (cannot cast this
spell if silenced)
S = Somatic (Spell suffers arcane
spell failure from armor)
VS = both
- = neither
Metamagic
Defines which metamagic feats can
be used on the spell. The number is
a bit flag setting and must be in
hexadecimal format.
0x01 = 1 = Empower
The numbers need to be added
together to get the final set of flags
for the spell.
0x08 = 8 = Quicken
0x10 = 16 = Silent
Example:
0x20 = 32 = Still
0x02 = 2 = Extend
0x04 = 4 = Maximize
I want a spell that can be Quickened,
Silent, Still, and Maximized. I would
have 8(Quicken) + 16(Silent) +
32(Still) + 4(Maximize) = 60 total.
Once you get the number you need
to convert it into hex format. The
easiest way if you use Windows is to
use the calculator.
Open up the Calculator program in
Windows and under the View menu
switch to scientific mode. Make sure
the round radio button is checked for
Dec. Enter in your number and then
change it from Dec to Hex; this is
your hexadecimal number. Enter this
number along with a 0x (just
programmer’s notation that a number
is in hexadecimal format) to the
column. That is a 'zero' and not the
letter Oh. So our example would be
0x3c.
TargetType
This is the type of target the spell
requires. Like the MetaMagic value,
this is actually a binary flag system.
You must enter the hex code after
adding up the values for all the
targets you want to be able to affect.
0x01 = 1 = Self
0x02 = 2 = Creature
0x04 = 4 = Area/Ground
0x08 = 8 = Items
0x10 = 16 = Doors
0x20 = 32 = Placeables
0x40 = 64 = Trap triggers (only when
detected) and area transition triggers
/
-
Column
Description
Values
(this does not work very well - the
cursor is active on the area transition,
but when clicking the PC is left
hanging before casting the spell and
the script doesn't fire). This value is
not currently used by Bioware.
ImpactScript
The script that runs against the
target of the spell
Bard,
Cleric,
Druid,
Paladin,
Ranger,
Wiz_Sorc,
Innate
The level of the spell for each class,
if it can't be used by that class then it
is commented out with ****
ConjTime
Innate is for creatures that have it as
a spell like ability. A lot of creature
abilities are implemented as "innate
spells".
Conjuration is the process of
invoking the spell. The conjuration
time in milliseconds.
For spells it is 1500 with only 1
exception - Phantasmal Killer - which
is at 900
Note: the Conjuration effects are
executed before the Cast effects.
ConjAnim
This is for the character or creature
invoking the spell and calls the
appropriate animation so that the
caster goes through the right
motions.
The three possible values are:
hand = Casters hands are in front of
him.
head = Casters hands reach up to
above face level.
**** = No hand movement
ConjHeadVisual
This is to add a visual effect over the
head of the caster when invoking the
spell.
Some sample head visuals and the
spells they are used on are:
Ice_Storm vco_mehancold03
Resurrection vco_mehanelec01
Premonition vco_mehanelec03
Meteor_Swarm vco_mehanevil03
There are a lot more. I have included
the visual effects reference at the
end of this tutorial.
ConjHandVisual
This adds an effect to - or between the caster's hands when invoking the
spell.
Refer to the visual effects list.
ConjGrndVisual
This adds an effect to the ground
around the caster when invoking the
spell.
Refer to the visual effects list.
ConjSoundVFX
This is the sound effect that plays
when invoking the spell. It is not the
caster's voice but the energy
Refer to the visual effects list.
/
-
Column
Description
Values
crackles, moaning, etc. that plays in
the background
ConjSoundMale
ConjSoundFemale
These are the sound effects for the
chanting that the caster does while
invoking the spell
Refer to the visual effects list.
CastAnim
The caster's pose after finishing the
spell conjuration.
Possibilities are
Note: the Cast animations and
effects occur after the Conjuration
ones.
CastTime
This seems to be how long in
milliseconds the caster stays in the
CastAnim pose
Area
out
self
touch
up
****
There seem to be 2 settings
1000 = most spells
1700 = spells with ray or cone
shaped effects
CastHeadVisual
Not currently used for any spells
CastHandVisual
These effects happen to the caster
after the conjuration effects take
place. An example would be the
force rings that radiate from the
casters hand after a magic missile
spell or the cone of frost from a cone
of cold spell
CastGrndVisual
Not currently used for any spells
CastSound
The sound played after the
Conjuration
Proj
Is there a projectile model that
moves between the caster and the
target in the spell
ProjModel
ProjType
The model that moves between the
caster and the target
The physics of the projectile
1 for yes
0 for no
The currently used ones are:
vpr_aroacid
vpr_ectoacid01
vpr_ectocold01
vpr_ectoevil01
vpr_ectofire01
vpr_ectomind01
vpr_ectonatr01
vpr_ectoodd01
vpr_ectosonc01
vpr_fireball
vpr_ringsmal
vpr_wraith
accelerating
homing
linked
/
-
Column
Description
Values
ProjSpwnPoint
Where the projectile starts at from
the caster
hand
head
ProjSound
The sound of the projectile
ProjOrientation
Which direction to orient the
projectile in
Set to path if there is a projectile
ImmunityType
Type of immunity needed to ignore
the effects of this spell.
Note there are three Mind Affecting
immunities and two Positive
immunities, I'm not sure if this a typo
or not - looks like one
Acid
Cold
Death
Disease
Divine
Electricity
Fear
Fire
Mind_Affecting
Mind_Effecting (Typo?)
Mind-Affecting (Typo?)
Negative
Poison
Positive
Postive (Typo?)
Sonic
ItemImmunity
Are items immune to being affected
by this spell?
1 for yes
0 for no
SubRadSpell1 - 5
These are for spells that have
multiple ways of casting them. The
values in these columns are the
index value of "sub" spells that will
come up in another radial menu.
Spells like Polymorph Self or
Shapechange where you can pick a
type of creature to turn into or
Shadow Conjuration where you can
pick the spell to emulate. The
maximum number of choices you
have for a spell will be 5. The people
who are planning on implementing
radical new Polymorph spells where
you can turn into all sorts of animals
may want to look at this.
It has been reported that radials only
work if the new spells use ID
numbers directly consecutive to
those already in use.
Category
These are equal to the various
TALENT_CATEGORY_* constants in
nwscript.nss.
The Category is related to the
categories.2da file in 2da.bif.
Here are the reported values:
These are used in various AI scripts
to select appropriate abilities for
(AoE = Area of Effect)
/
1 = Harmful AoE Discriminant (i.e.,
-
Column
Description
Values
creatures or NPCs to use.
only affects enemies)
2 = Harmful Ranged
3 = Harmful Touch
4 = Beneficial Healing AoE
5 = Beneficial Healing Touch
6 = Beneficial Conditional AoE (e.g.,
See Invisible)
7 = Beneficial Conditional Single
8 = Beneficial Enhancement AoE
9 = Beneficial Enhancement Single
10 = Beneficial Enhancement Self
11 = Harmful AoE Indiscriminant
(affects all within AoE)
12 = Talent Beneficial Protection Self
13 = Talent Beneficial Protection
Single
14 = Talent Beneficial Protection AoE
15 = Talent Beneficial Summon
16 = Auras and Rages
17 = Special Monk Feat
19 = Dragon Attacks
Master
Used in conjunction with the
SubRadSpell columns. For a sub
spell this is the parent spell that
called it.
The actual effect of this seems to be
that the uses-per-day of the master
spell is reduced by one when cast
instead of this spell's uses-per-day.
Generally all sub-spells will want this
and no others will.
UserType
Always 1 for spells
1 = Spells
2 = Creature Power
3 = Feat
4 = Item Power
SpellDesc
The strref for the description of the
spell in dialog.tlk
Here we go again. I use 59 which is a
blank string. It leaves the description
blank.
UseConcentration
Determines if a Concentration check
is needed to successfully cast the
spell if interrupted (e.g., if hit during
1 for yes
/!
-
Column
Description
Values
combat)
0 for no
For spells always 1. The only records
which have a 0 are uninterruptible
ones like constant creature powers
SpontaneouslyCast
This is for the Clerics spontaneously
casting. Only Cure/Cause wounds
should have this
AltMessage
This is the strref for the message in
dialog.tlk that is displayed to people
other than the caster, for example
"SoAndSo smites evil".
HostileSetting
Will a NPC consider this an attack if
they are affected by the spell
1 for yes
0 for no
1 for yes
0 for no
This actually is used in the
SignalEvent call. If it is 1, then it will
be a hostile act when the target gets
the event signaled to them.
FeatID
The ID of the feat. There are a few
feats that are activated like spells,
and call scripts in a similar manner.
These use the FeatID to determine
when they show up, and what they
do.
:%
-
1 -
380 Battle_Mastery_Spell (...) 306
381 Divine_Strength (...) 307
382 Divine_Protection (...) 308
383 Negative_Plane_Avatar (...) 310
<
Technically, you only need a reference in iprp_spells.2da if you want an item to be able to
cast this spell. How does this work? Well, there is a list of item properties in itempropdef.2da
and these are the properties you can assign to items in the Aurora Toolset. Within each property
is the property sub-type. For spells, this sub-type points you to iprp_spells.2da. By adding a
resource in this 2da file, you can then tie your spell to an object like a scroll or another magic
item.
Column
Description
Values
The ID number
Start at 336, after the last spell
Label
The name of the spell
Any spaces should be replaced with
underscores '_'. Some day it should
be possible to put **** in the Name
column and the game will use this
field to refer to your spell.
Name
The strref to the name of the spell in
dialog.tlk.
One more instance where I can’t get
it to do what I want. Hopefully this
will be fixed soon.
/&
-
Column
Description
Values
CasterLvl
The level at which the spell is cast
from this item.
1 to 20
InnateLvl
Not sure. Need to investigate.
1 to 20
Cost
Appears to be the cost increment
added to the minimum level required
for the item to be used. If you add too
many powers to an item, it becomes
unusable because it exceeds the
maximum character level of 20.
SpellIndex
Reference back to the spell ID in
spells.2da
Use the ID you added for your spell
in spells.2da
PotionUse
Can this item be used as a potion?
1 for yes
0 for no
Wanduse
Can this item be used as a wand?
1 for yes
0 for no
GeneralUse
Can this item be used for general
items?
Icon
Icon to be used for this item as a
scroll
1 for yes
0 for no
It needs to be a typical 32 x 32 pixel
tga file. You can select one of the
existing icons with the format
iss_<name> where <name> is no
longer than 8 characters. They are
found in textures02.bif. Or you
can create your own, use a similar
naming standard.
The other 2da files – iprp_spelllvlimm.2da (spell level limit), iprp_spelllvcost.2da
(spell level cost), iprp_spellshl.2da (spell school) – do not need to be adjusted. I am not
sure what iprp_spellcost.2da is for.
!:%
-
-
Let’s take a look at the new script for Chill Touch. This is not a scripting tutorial, but I’ll try to give
you a basic flavor of how these work. You can look at existing scripts by opening up
scripts.bif using NWNViewer or from within the Aurora toolset (there is a radio button on the
File Open dialog that allows you to open any existing script file). The spells are all named
nw_s0_<spellname>.nss. The .ncs files are compiled spell files so you can’t read them
directly.
Here is my new Chill Touch script.
//::///////////////////////////////////////////////
//:: [Chill Touch]
//:: [ES_S0_ChillTch.nss]
//:://////////////////////////////////////////////
//:: Causes 1d6 damage on each successful touch
//:: attack (1 attack per level). Reduces strength
/
-
//:: by one if target fails Fortitude save
//:: (duration of one minute / level).
//::
//:: If the target is undead it is not damaged but
//:: must save vs. Will or flee as if panicked for
//:: 1d4 rounds + 1 round per level.
//::
//:: NOTES: does not properly implement 1 attack
//:: per level and does not consider that undead
//:: are immune to mind affecting spells
//:://////////////////////////////////////////////
//:: Created By: Eligio Sacateca
//:: Created On: December 21, 2002
//:://////////////////////////////////////////////
#include "NW_I0_SPELLS"
void main()
{
//Declare major variables
//the object you were targetting
object oTarget = GetSpellTargetObject();
//check if you are using any Meta Magic feats
int nMetaMagic = GetMetaMagicFeat();
//check for a successful 'touch attack' on target
int nTouch = TouchAttackMelee(oTarget);
//if successful touch attack on a target that is not friendly
if (nTouch && !GetIsReactionTypeFriendly(oTarget))
{
//if the target is undead, use fear effect
if (GetRacialType(oTarget) == RACIAL_TYPE_UNDEAD)
{
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_FEAR));
//Make SR Check
if(!MyResistSpell(OBJECT_SELF, oTarget))
{
//calculation duration
int nDuration = GetCasterLevel(OBJECT_SELF) + d4(1);
float fDuration = RoundsToSeconds(nDuration);
//check metamagic
if (nMetaMagic == METAMAGIC_EXTEND)
{
fDuration = fDuration * 2.0; //Duration is +100%
}
//calculate and apply effects
//target is frightened
effect eFear = EffectFrightened();
//use fear visual effect
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR);
//until impact expires
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
//Link the fear and mind effects
effect eLink = EffectLinkEffects(eFear, eMind);
//Link the fear and mind effects to the duration
eLink = EffectLinkEffects(eLink, eDur);
//Make a will save
if(!MySavingThrow(SAVING_THROW_WILL, oTarget, GetSpellSaveDC(),
SAVING_THROW_TYPE_FEAR, OBJECT_SELF))
{
//Apply the linked effects
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink,
oTarget, fDuration));
}
}
}
else //target is not undead so apply damage and strength reduction
{
//
-
//Fire cast spell at event for the specified target
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_HARM));
//Make SR Check
if (!MyResistSpell(OBJECT_SELF, oTarget))
{
//Start with the 1d6 damage
//Calculate damage
int nDamage;
//Check Metamagic
if (nMetaMagic == METAMAGIC_MAXIMIZE)
{
nDamage = 6; // damage is maximum
} else
{
nDamage = d6(1);
}
// set the visual effect to show the character taking damage
effect eVis = EffectVisualEffect(VFX_IMP_HARM);
// implement the effect so the character takes damage
effect eDam = EffectDamage(nDamage,DAMAGE_TYPE_NEGATIVE);
//Apply the VFX impact and effects
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam,
oTarget));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
//Now apply the strength reduction
//Make a fortitude save
if(!MySavingThrow(SAVING_THROW_FORT, oTarget, GetSpellSaveDC(),
SAVING_THROW_TYPE_NEGATIVE))
{
//calculate duration
int nCasterLevel = GetCasterLevel(OBJECT_SELF);
float fDuration = IntToFloat(nCasterLevel) * 60; // 60 seconds per
level
//Check for metamagic extend
if (nMetaMagic == METAMAGIC_EXTEND)
{
fDuration = fDuration * 2.0; //Duration is +100%
}
//calculate effects
//target is weakened
effect eFeeb = EffectAbilityDecrease(ABILITY_STRENGTH, 1);
//use ability reduction visual effect
effect eVis = EffectVisualEffect(VFX_IMP_REDUCE_ABILITY_SCORE);
//until impact expires
effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE);
//Set ability damage effect
effect eLink = EffectLinkEffects(eFeeb, eDur);
//Apply the ability effect and VFX impact
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget,
fDuration);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oTarget);
}
}
}
}
}
I won’t attempt to explain each line of this script but here is the overall outline:
1. First, we find out who you were targeting.
2. Next, before applying any effects, we check to make sure this is not a friendly target, and that
you can make a successful melee attack against the target.
/2
-
3. Assuming that succeeds, we check if the target is undead. If it is, we apply an entirely different
effect – frighten – to what we would do if the target were alive – damage and strength
reduction.
4. Assuming the target is undead, we notify them that
they are the target of a fear spell and then do a
spell resistance check (they will be notified that they
are a target even if they are successful at resisting
the spell). The notification will typically make them
counterattack if they were not planning on doing
that already. The spell resistance check takes into
account natural resistance as well as items like
cloaks, rings, etc.
5. We calculate the duration of the spell (doubling it if
the caster was using Metamagic) and then
calculate the actual effects. The effects are linked
together until the spell expires. This is how NWN
maintains integrity between the visual effect (the
icon you would get in the top right of your screen
plus the 3d effect of the whirling skulls) and the
actual effects (fear).
Notes
•
Note that I did not implement Chill
Touch exactly as specified by the
books – in my version you only get one
touch attack, not one per level. I need
to work on this because it is a serious
limitation.
•
There is one other problem with this
script: the undead are immune to mindaffecting spells. What this means is that
they are essentially immune to the fear
effect as I have implemented it here.
More work is required to fix that as well.
•
I leave both of these as an exercise for
the reader (hey! I never said I was a
good scripter!)
6. We give the undead creature one last chance at a Will saving throw. If they fail that, whammo,
all those effects are applied.
7. Now, what if the target was not undead? We actually go through similar steps. Again, we
notify the target they are the target of a spell (this time a harmful spell), and give them a spell
resistance check.
8. If the target fails that, we calculate the amount of damage they will take (1d6 or a full 6 if the
caster had maximized the spell), and apply it. Note we don’t have to link any effects together
this time. That is because the duration is instant (you take the damage right away, the visual
effect fires and then we can forget about it).
9. We also give them a fortitude-save. If they fail that, they suffer a –1 penalty to strength. The
spell description in PHB does not specify for how long but I did a quick check and ray of
enfeeblement lasts for 1 minute/level so I will assume the same (I have not checked for errata
on the subject). The strength penalty is applied in a similar fashion to the fear effect although it
differs slightly in that the duration and effects are not linked together? Why not? Beats me. I
borrowed the code for the fear effect from nw_s0_fear and the code for the strength effect
from nw_s0_rayenfeeb and they were done slightly differently. I think either method does
the same thing.
I have seen it recommended that you add an entry in nwscript.nss for the integer
CONSTANT of your spell name. I would not recommend this. When you look through the scripts to
see where these constants are used, it is generally only in the
SignalEvent(EventSpellCastAt()) line. Unless you want to do more coding and code a
reaction for your specific spells in those events, it is not necessary to have your own CONSTANT
for your new spell.
/9
-
&:
#
-
Once you have done all of that, tidy it up and put your two spell icons and your two new .2da files
into a hakpak. What do you do with the script file? Compile it into your module, of course. If you
want to package your spell to send out for others to use, export your scripts as .erf files first.
There are currently some limitations with this approach, most having to do with labels. Let me
describe the spell process and I will point them out as I go.
1. Fire up the Aurora Toolset. Open your module.
2. Add a new item using the Item Wizard. Make a scroll.
3. Launch the Item Properties. On the Properties tab, I can add my new spell effect on the
scroll. Because of the dialog.tlk limitation, it will use whatever STRREF you put into
iprp_spells.2da so look for it there. This is not a huge limitation because you can rename your
scroll to be whatever you want. In this case I rename it ‘Chill Touch’ and I add a description to
explain what the new spell does.
4. Drop a couple of copies of this blueprint into your module somewhere.
5. Save your module. Fire up the game.
6. As your character, fetch the scrolls you created. Now I can identify each scroll to see what is
on them. Works fine.
7. Use one of the scrolls to learn this new spell (assuming you are the right class and level, of
course). If you go to your spell book you will see the spell there using your new icon. Again,
because of the 2da limitation, you will find that the name in your spell book corresponds to the
STRREF you chose (in my case, Devil Chills). Click on the description. Again, it will
correspond to the STRREF for SpellDesc (in my case, blank).
8. Put the spell in one of your spell slots. Rest.
9. Now go track down a monster (you did put a monster in your module, didn’t you?).
10. Fire the spell off at your new monster. Observe its beauteous effects. Makes you feel good,
eh?
11. Use the other scroll to fire off at your monster again. This is what it means to customize the
game.
Even if you find the naming limitation too annoying in-game, there are still uses for custom spells.
Put them on items as special properties (just not in scrolls). That way characters can use them for
as item powers but they can’t learn them as spells for their characters. Better yet, give the spells
to enemy spell casters. They won’t care that the spell uses funny names and all your players will
see is the effect of that nifty new spell which they cannot learn. Is that unfair, or what? Ah, the joy
of being a DM.
2
"
"
Neverwinter nights provides a very customizable process for building armor for PCs and NPCs in
the Aurora toolset. If you find even this dizzying array of choices is not enough for you, this
tutorial will walk through the steps necessary to create armor more to your liking.
We will introduce one new skill to complete this tutorial: using .plt files. The bulk of the effort to
build custom armor is a variation of what you have already learned for custom weapons and other
items.
I have already created an oriental weapon pack. I want to create Samurai-style armor to go along
with this pack to give my module an Eastern flavour. In this tutorial we will start by creating a new
chest plate to test it out. We will take this tutorial in two steps. First, we will override an existing
model to make it look like a new type of armor. Then we will modify the models themselves and
the .2da files that stand behind them to create an entirely new piece of armor.
:;
,
)
< -
"
Let’s look at how NWN represents the different components of a weapon by actually building an
existing one in the Aurora Toolset. Try this exercise:
1. Open up the Aurora Toolset.
2. Create a new Module (we will call it Armor Tutorial for lack of a better name). Use the Area
Wizard to create at least one Area. Use the defaults to set up the area and choose something
simple like a Castle Interior.
3. Select Wizards | Item Wizard.
4. For Item Type select Armor. Click Next.
5. Enter a name (Yoroi). Click Next.
6. Add to the Armor, Heavy category. Click Next.
7. Check the Launch Item Properties checkbox.
8. Click Finish.
9. Select the Appearances Tab.
You can now modify the appearance of the item. The options you choose correspond to the
different Model Ids. Figure 27 is the closest I could get to Samurai armor without doing my own
customization. It will need some work.
Take a closer look at the Appearance tab. Note that there is both a 3D model (used in the game
engine to render a character wearing the armor) and a 2D icon (used in the game engine for the
inventory functions). There are some other unique features as well.
2
"
The 3D
model
The 2D icon
•
+ #
A suit of armor in NWN is made up of eighteen (yes, 18 – there are duplicate pieces for thighs,
shins and feet as well) distinct pieces from Neck down to Feet. It does not include the
head/helmet – that is a separate item in the game. By mixing and matching the other 18 pieces,
you can create a vast array of unique armors with the
basic items included in the game.
While we are here, note the two other options:
Male/Female and Color… Try changing these values. By
toggling back and forth between Male and Female you
get the same set of armor modeled for a male or female
character. Using the Color button, you can change the
basic color of the cloth, leather and metal components of
the armor (there are two types of each so you have a lot
of room to mix and match your wardrobe) – this is what
the .plt files do for you.
Notes
•
Harliquinn_Whiteshadow points out that
while the standard pallets show you 56
colors, there are actually 64. If you
draw your mouse down below the last
row of boxes on the regular palette in
the game or toolset, you can actually
access a hidden row of colors including
metallics, pure black and pure white.
Now that you understand the different parts of an armor
model, let’s compare those to a typical set of Japanese Yoroi armor. There are seven major
pieces to a typical Yoroi armor. Before you bother to write in to me and tell me how you have
been studying Japanese armor since the age of 3, how there are actual 43 different major pieces,
how armor styles have evolved over the last 800 years, and that I have no idea what I’m talking
about, let me say one thing. You’re probably right. Having said that, I want armor that reflects the
style. I want a reasonable model – something neither too fantastical nor something that is so
th
rd
historically accurate as to correctly include to the placement of the 11 stitch on the 3 plate of
the Do in the period between 1494 and 1527A.D.
So with that behind us, we’ll talk about those seven major pieces.
2
"
Kabuto (Helmet)
Menpo (face)
Sode (Shoulders)
Do (Torso
and Pelvis)
Kote (Biceps
and Forearms)
Haidate (Thighs)
Suneate (Shins)
•
?
+ #
4
!
These pieces correspond closely to some of the major parts of the Bioware model. The Kabuto
and Menpo are part of the helmet so we won’t cover them in this section.
:%
<
%
"
We are going to base our armor pieces on existing models - fire up NWNViewer and select
data/models_02.bif which contains the armor pieces.
.
%1-
Scroll down, way down. What you want are the models that start with p. P represents player
model pieces.
The files that NWN uses for all player pieces follow a strict naming scheme. These items are
named pxyn_<type><id>. For example, the torso piece we will be working with is called
pmh0_chest004.
<
@
1-
After the p, the next three characters represent the race, gender and phenotype of the model.
The values of these characters are as follows:
2
"
x
Male (m) or female (f)
y
Race
a=Halfling
d=Dwarf
e=Elf
g=Gnome
h=Human and half Elf
o=Half-Orc
n
"
$
Phenotype of the model
0 is normal
2 is large
-
.
$
After these characters, the remainder of the name describes where the piece fits and its ID.
<type>
Is the description of the piece
<id>
Model #. All pieces use a three digit number.
For example, pmh0_chest004 equates to:
p for player
m for male
h for human
0 for regular size
chest for the torso piece
004 for the fourth torso piece
Here are the standard <type>’s and the piece they correspond to in the Aurora toolset we looked
at earlier.
neck
Type
Maps to
Neck
chest
Torso
belt
Belt
pelvis
Pelvis
shor
Right Shoulder
shol
Left Shoulder
bicepr
Right Bicep
bicepl
Left Bicep
forer
Right Forearm
forel
Left Forearm
handr
Right Hand
handl
Left Hand
2!
"
legr
legl
Thighs
shinr
shinl
Shins
footr
footl
Feet
If you look closely at NWNViewer you will notice a head model as well using this same naming
standard. It is not part of the armor models though
Hints
because it is chosen once, at the beginning of the game,
• Be innovative! Some folks have come
and not changed later. The only way to change the head
up with really novel ways to massage
model is to equip a helmet. I will talk more about making
the basic armor parts to get what they
new heads and helmets at the end of this section.
You might also ask at this point why the Aurora Toolset
gives you the choice of having different armor types for
the left and right arms and shoulders but not the thighs,
shins or feet. The answer is expediency. It would be rare
to see somebody with mismatched legs. But if you look
at historical armor it is not so rare a thing to see different
arm and shoulder plates. Samurai, for example, often
had different plates on the right side to allow them to fire
a bow without getting the string caught in the rivets and
ties of their armor. European jousting armor is similarly
asymmetrical.
want. Here are a few examples.
•
There are no cloaks in the game and
no inventory slot to put on a cloak.
What is a person to do? Kinarr
Greycloak created a cloak model that
attaches to the neck node of your
armor. Others have started to do this
with things like hats, etc.
•
Bioware did not include robes because
of clipping issues (on animation the
legs of your character fly right through
the material). Lisa included invisible
body parts to add to her robes and
dresses hak. You select the robe as
part of the armor, make the feet and
legs invisible so they don’t clip, and
away you go.
The final observation to make would be that a simple
calculation tells you that you need an astounding 24
models just to make one new armor piece. That would
be 2 for gender x 6 for race x 2 for phenotype. To make
a completely new set of armor, multiply that by the 18
different pieces in one set. That is a lot of work! The
good news is that a program now exists to help you
create all of these extra parts – look for NWNArmory on the vault at
http://nwvault.ign.com/Files/other/data/1053910703210.shtml. This program will cut down on the
amount of work you need to do considerably.
If you are making a new armor piece for playercharacters, I would suggest not scrimping on the 24
pieces you will need. The last thing you want is armor
that does not work for some characters because you did
not include their phenotype, race, or gender
combination. However, if you are making an armor piece
for an NPC, you can focus just on the models you need
for your NPC race and exclude the rest.
-
Hints
•
I built NWNArmory to address this
exact problem of having to duplicate all
of the armor parts for all of the races.
Refer to the section at the end of this
tutorial for details on how to use this
program.
.
There is only one special model type. It has the simple format pxyn. There is one for each
gender, race and phenotype armor model but it does not vary according to the armor pieces.
What is this model for? It is the template for how you assemble a PC from these component
parts. It contains one node for each of the PC parts we have described here. By replacing this
node with the corresponding armor piece you can build up a complete character. I will discuss
this more in the section of this tutorial on Custom Races.
2&
"
8
5
In addition to the model files there are five other armor-specific files you will need for each armor
piece.
There is one texture file per gender for each armor part (but only one for both phenotypes and all
races). These two files have the same naming standard as the model for the default-sized,
human male and female models. This is not a .tga texture file. It is a PLT.
There is also one 2D icon file per gender for some of the armor parts. These are only needed for
the upper body armor parts. These two files have an abbreviated naming standard which is
ipx_<type><id>.plt.
i
Icon
p
Player
x
Male (m) or female (f)
Finally, there is an item resource definition (.2da file) for each type of part. The .2da that needs to
be edited is parts_<type>.2da.
:5
"
.
% 4
Back to our tutorial – we want to create a banded Do for our armor. Some of you may be jumping
ahead. You’ve already exported the model piece (pmh0_chest042 from the diagram above for
my Yoroi), you fire up your modeling tool, import the model and… what the? It is the wrong piece.
To model the piece I’ve shown, you actually need to open pmh0_chest052. Unlike the weapons
where the model #’s in the Aurora Toolset GUI mapped directly back to the model #’s in the BIF
files, armor does not follow the niceties of this convention.
How do I get the right model file then? Here is a trick from Harliquinn_Whiteshadow. In the Aurora
toolset, create a set of armor using the piece or pieces that you want to take as a starting point for
your new armor. Then export the erf file. The erf file tells you the proper model #’s. Here are the
steps:
1. Open up the Aurora Toolset.
2. Open the Armor Tutorial module we created earlier.
3. Select Wizards | Item Wizard.
4. For Item Type select Armor. Click Next.
5. Enter a name (test). Click Next.
6. Add to the Armor, Heavy category. Click Next.
7. Check the Launch Item Properties checkbox.
8. Click Finish.
9. Select the Appearances tab.
10. Using the drop-downs, modify the armor pieces that you want to use as a base for your
creation. In my case, all I care about is the Torso piece # 042 (refer to Figure 29).
2
"
11. Click OK to save the updated armor.
12. Right click on your new Template_Armor. Select Export.
13. Save the resource file (the .erf) as Template_Armor.erf.
14. Now close the Aurora toolset.
15. Open NWNViewer (I find you cannot use all of the features in NWNViewer when the Aurora
toolset is open – I think it is because they share some common functions).
16. Select File | MOD HAK ERF. Navigate to your Template_Armor.erf file and open it.
17. There are two lines in the left pane: ExportInfo.GFF and a UTI file which is your actual
exported item. Select the UTI file. In the right pane, scroll down until you see the line
corresponding to your armor part (s). In this case I have circled the line I want in red pen.
•
"
%
#
#
From this you can see that if I want to use my chosen model as a starting point I need chest052,
not chest042.
Fire up NWNViewer again; from within the data\textures02 directory look for the 24 instances
of p***_chest052.mdl files and extract them. These are the model files you need.
You also need the PLT files. As previously discussed, there are only two of them:
pmh0_chest052.plt and pfh0_chest052.plt. You will find them in
data\textures02.bif - sort of. The problem is that these are small files - very small. How
does Bioware get so much texture into your model from such small texture file?
The answer is that they don’t. NWN is designed to scale the size and complexity of its textures to
what your PC (your Personal Computer, not your Player Character) can handle. The detailed
textures can be found outside of the usual bif files.
1. Open up NWN Viewer.
2. Use File | MOD HAK ERF and navigate to the \texturepaks sub directory.
2/
"
3. Figure 34 - Texture Packs
4. Select Textures_Tpa.erf (the largest, highest resolution textures).
5. Jackpot. Now you can navigate to your PLT files.
6. Figure 35 - Torso PLT File for human, female, # 52
7. Extract it. Do not use the Export (BMP) feature. Right click on the PLT files and extract them.
8. Now you are ready to make changes.
22
"
!:
% 4
Taking a close look at the torso model files you may notice that the 52 armor pieces in
NWNViewer are, in fact, only about a dozen unique models combined with different textures. We
will take a similar approach – I don’t need a new chest model for my Do. What I really need is a
new texture to make it looked like banded mail. For now, we will replace the existing chest model
piece 052. This means for now I do not need to actually change the 24 model files. I only need to
change the two PLT files. In the next section I will show you how to add my Do as a new armor in
its own right, including the model files.
The general process for each PLT will be to:
1. Convert the PLT to a bitmap. Use pltcon for this.
2. Edit the bitmap with your preferred image program. It must be a program that supports color
channels.
3. Convert the bitmap back to a PLT. Again, use pltcon.
+
-
I mentioned that you needed an image program that handles color channels. After you have used
pltcon to extract the bitmap, load it into your image-editing program. It will be a mixture of odd
colors.
Notes
•
•
* '
7 -'
A refresher on basic color theory. The
color you see in a 24-bit color image is
made up of three channels: Red, Green
and Blue (RGB). Each pixel has 3 bytes
of color information: a byte depicting
the intensity of the color Red with a
value between 0 (no red) and 255
(bright red), Green between 0 and 255,
and Blue between 0 and 255. By
combining these three ‘channels’ into a
single pixel you see a single color in the
spectrum.
$ #
Convert the bitmap into its component Red, Green, and Blue color channels. Using Picture
Publisher I do this with Image | Channels | Split RGB. You will get three grayscale images:
29
"
Metal2
Leather2
Note the areas of pure white and pure black. These are the keys to understanding which parts of
the PLT correspond to the different texture types in the
Notes
game engine. For example, there is a pure white patch in
• A bit more of a refresher. A 256-bit
the same section of the R and G images – this
greyscale image has a value between 0
represents Leather 2. There is a pure black section only
(pure black) and 255 (pure white) in
in the Blue image – this represents Metal2.
Why do we do it this way? Because it is much easier to
edit the grayscale channels and mask off the sections we
don’t need for each texture type than it would be to try
and do this work in color and maintain the color
separation we need.
each pixel. What your image edit
program does to get these three
separations is take the RGB color
image and break each channel into a
separate image. The pure black
through pure white value in the
greyscale image comes from the
intensity of the corresponding color in
the original channel.
We will start with this base and edit our image from here.
Once we have created the texture we want, we map the
final image to the different textures we want for each
section. To do that, block out the color channels with
pure black (0) or pure white (255) according to the following chart:
Channel
Notes
Texture
RED
GREEN
BLUE
Cloth1
255
Active
Greyscale
Cloth2
Active
255
Greyscale
Leather1
Greyscale
Active
255
Leather2
255
255
Active
Tattoo 1
255
Active
255
Tattoo 2
Active
255
255
Metal1
Active
0
Greyscale
Metal2
Active
Greyscale
0
Hair
0
Active
Greyscale
Skin
Active
Greyscale
Greyscale
9
•
This wonderful chart comes from
SamJones & Lisa at
http://nwnbuilders.com/
"
For example, to get Leather2, put pure white (255) in both the Red channel and the Green
channel. Put the edited image in the Blue channel (what I have shown as Active).
To get Metal1, put pure black (0) in the Green channel. Put the edited image in the Red channel
(what I have shown as Active). The Blue channel (what I have shown as Greyscale) can be
anything except pure white or pure black (the Bioware images seem to put a copy of the Red
channel in the Blue but this is not strictly necessary).
To get Skin, put the edited image in the Red channel. Again, Bioware tends to copy this same
image into the Green and Blue channels as well and this is fine. As long as they are not pure
white or pure black it should be fine.
Note when I indicate a greyscale image, I mean a value between 1 and 254.
When you have done all of this masking on each channel, recombine the greyscale images into a
color image. With Picture Publisher, you can do this using Image | Channels | Recombine. Then
use pltcon to turn the bitmap image back into a PLT file.
You don’t have to start with a Bioware PLT file. You could also begin with your own texture.
Convert it to greyscale and make three copies. Mask out the areas I have indicated above with
white or pure black by hand and then recombine the images into a single color image.
$
0 5
Let’s not forget to update our 2D icon files as well. Again, you only need a male and female
version of these. They share a scaled-down version of the full model naming standard:
ipx_<type><id>.plt.
i
Icon
p
Player
x
Male (m) or female (f)
Note the .plt extension. These are not Targa bitmaps like other icons. By making them PLT files,
the game engine can automatically apply your color selections to the icon as well as the model
itself. In our example the names of the icon files we need are ipf_chest052.plt and
ipm_chest052.plt. Note that you do not need icons for all pieces. They are only required for
belt, chest, pelvis, and left and right shoulder pieces (take a close look at a piece of armor in your
inventory – it does not show the entire suit).
Extract your 2d icons. Convert them to bitmaps using pltcon. Separate the channels and edit
them. Recombine them. And finally convert them back to PLT files.
That is all there is too changing the texture of your armor (well, okay, I admit it is fairly complex).
Now all you need to do is load your new PLT’s into a hakpak and import them into a module.
Done.
&:%
"
<
5
Like our first example of creating a new weapon, the process I walked you through has some
limitations. The biggest one is that you have replaced an existing model. What if I want to add my
armor piece as a new model? There are a couple of steps I did not talk about. You need to edit
the model files themselves and the armor 2da files. Let me take you through an example of
turning the armor we just created into a separate item.
Crack open those pxyz_chest052 model files.
9
"
8-
:
=1 ,
I can actually get away without using a modeling tool if I do the editing by hand. I’m going to
assume that I don’t need to change the actual shape of the armor.
1. Use NWNMDLComp to decompile the binary model files into ASCII files (see the section on
Weapons for more detail on how to do this).
2. Edit each model file by hand. Change any instances of chest052 to chest054 (the next highest
model #). For the chest piece there are typically three places where you need to do this. If you
have a utility like BK ReplaceEm, this is a simple process.
8-
:.
Notes
•
If you actually want to change the shape of the armor (adding
big nasty spikes, or a peacock-plumed tail, etc.) fire up your
modeling tool and go wild. Save the results of all 24 changes
as p<xyz>_chest054.mdl and don’t forget to change those
internal references.
Rename your 2 PLT icons and your 2 PLT texture files as well.
Extract and open up the 2da file as well. In our example it is
parts_chest.2da:
Column
The only parts_<name>.2da file that
affects your armor’s AC bonus is
parts_chest.2da. The other files
have an AC Bonus column but it does
not appear to be used. It may have
been part of a scheme to allow other
armor pieces to impact the total AC
value of the final product that was
abandoned because the method was
too complicated.
Description
Values
The ID number
Start at 54, after Bioware’s last piece.
I would normally tell you to start
much higher but this figure must
match to the armor ID number and
we want it to be consecutive.
CostModifier
Change to the cost figures for this
part.
Leave it as zero.
ACBonus
The AC bonus you get for wearing
this armor.
Because Yoroi is like banded mail
(not a solid plate), I used 6.00.
The last few lines of my new 2da file now read:
52
53
54
0
0
0
Notes
7.00
8.00
6.00
•
If you import your new model into the
existing module we created earlier, you
will get a better feel for why the
numbering scheme between the Aurora
toolset and your model number is
different. By adding this new model it
does not go at the end of the existing
list, it goes somewhere in the middle (#
38 to be precise)! Everything after it
gets pushed out by one.
•
Why? Because we gave it an AC
Bonus of 6. The toolset sorts armor
pieces by AC first and then model
second. So it puts our banded mail in
the list ahead of the original half plate.
Confusing? A bit. But it makes things
easier for a module creator because
they know the lower value armors are
the lower AC ones.
That is it. Now package up your armor pieces, your 2da files,
and your textures and put them in a hakpak. Load everything
into your module and give it a try.
: ) "
1
NWN Armory is a tool that performs renaming, scaling and
rotating on NWN PC model parts to generate other model
parts. Why would you ever want to do this? It is intended for
two main reasons although there may be other applications for
it as well
9
"
1. Creating all race models from a human template. Let's say you create this new chest piece
for our Yoroi. You need to model it for a human male and create another version for a human
female. There are also two phenotypes (phenotype = body size, standard and large) so you
need to create these as well. That part you need to do as I’ve just shown. Now there are five
more race models (halfing, gnome, elf, dwarf and half-orc). You would need to make twenty
more of those armour pieces just to be able to have one for all the elves, halflings, etc.
NWNArmory will do most of that work for you based on your four starting models.
2. Creating all armour models for a new race. Let's say you want to create a brand new race.
Maybe it will be slightly taller and skinnier than an elf (a githerzai, say). There are hundreds of
model pieces out there if you want your new race to be able to wear all available types of
armor. But you can tell NWN Armory how your new race differs from one of the standard races
(say an elf) and it will transform those hundreds of pieces for you.
How do you make it work? We’ll talk about the first scenario above, creating all race models from
a human template. In the section of this tutorial on Custom Races we’ll discuss the second
scenario.
1. Download NWNArmory.
2. Install it by unpacking all the files in the .zip into a single directory.
3. The NWNArmory.ini file contains the standard transforms when you first install the program
(the transforms were graciously provided by BearThing). This is the default although if you
have modified it you will need to copy standard.ini in place of NWNArmory.ini. I probably
should make a wizard to do this. Maybe next version.
4. Fire up NWN Armory and tell it which models to use as base models. These models must
follow the standard NWN naming conventions (e.g., pfh0_belt009.mdl). They must also be
ASCII model files. If they are not ASCII model files, use NWNMdlComp to make them into
ASCII model files if they are binary.
5. Tell NWN Armory which directory to put the transformed models into.
6. Go. What this program will do is compare each input file against the standard list of transform
groups. Where there is a match, it will rename the model and apply the racial transforms and
save the resulting model in the output directory.
7. Done.
/:"
There are a couple of other 2da files that you may be interested in. The first is Armor.2da. This
file describes, by AC Bonus value, the characteristics of each set of armor. In general, you would
not need to edit this file unless you wanted to change some of the basic considerations for each
AC class. Why? Because the existing file already covers the 9 basic AC types. This table is not a
reference by piece or by armor type.
Column
Description
Values
The ID number
ACBonus
The AC bonus you get for wearing
9
This is not actually used to identify
the AC bonus for the armor – the AC
"
Column
Description
Values
this armor.
bonus value appears to come from
the parts_chest.2da file. This file,
armor.2da is used to identify the
other statistics of a piece of armor
with that AC.
DEXBonus
The maximum dexterity bonus for
wearing this armor.
ACCheck
The penalty to using some of your
skills when wearing this armor (e.g.,
Moving Silently in full plate).
Applied as a negative to your skill
success roll.
ArcaneFailure%
The chance that a spell cast when
wearing the armor fails.
Rolled on a d20.
Weight
Weight of the armor in pounds.
Cost
Base cost of the armor.
Descriptions
The STRREF for this type of armor in
dialog.tlk.
BaseItemStatRef
The STRREF for the statistics of this
armor in dialog.tlk.
Armorparts.2da and armortypes.2da are the other two files although I have to admit I don’t
know what the values in these files means. Armortypes, for example, only includes 42 different
types. I’m not sure what these relate to.
2:"
There is no difference between armor and clothing. Clothing in NWN is simply armor with an AC
of 0 (zero). The same applies to actual body parts (a bare arm, leg, etc.) The models work the
same way and follow the same standards. The biggest difference is in the modeling: clothing
typically includes a Flex modifier so that it moves somewhat independently of the wearer. I will
talk more about Flex modifiers in the Creatures section.
9:
Earlier I mentioned that heads share the same naming standard as other armor components. In
most respects, heads and helmets are the same as other armor pieces. There are multiple head
models, for each race and phenotype. They use PLTs instead of .tga texture files. And so on.
There is one significant difference though: recall that armor models for the different races and
phenotypes all share one PLT file (based on the pmh0_ or pfh0_ PLT file). Head pieces are
different for each race (so there is one PLT file for the pma0 version, another for the pmh0
version, etc.) This is how NWN minimizes space with armor files but gives a wide array of unique
appearances for the different race types. The same PLT texture is stretched across the different
armor pieces but we get unique textures for heads and helmets to ensure that elf heads do not
look like skinny half-orc heads.
Let me talk for a moment about helmets as well to discuss some limitations with the NWN game
engine. When you don a helmet you replace your character’s head model. NWN does not support
layering of multiple head models. This is why all of the NWN helmets are closed-face: it does not
matter which character head you have chosen, you get the same helmet plopped down on your
9!
"
character’s shoulders when you choose to wear a helmet. The helmet does not sit on top of your
character’s head model – instead, it completely replaces your character’s head model.
Not surprisingly, this is annoying for people who play mages, monks, etc. It would be nice to have
a mage who can take advantage of the properties of special headgear while, at the same time,
not look like (s)he is wearing an upturned bucked over her/his head. There have been requests
for non-replacing headgear (for example, a headband that does not show up in-game at all but
can be placed in your character’s helmet slot and can be given special powers). Don’t hold your
breath waiting – this does not seem to be a high priority request with Bioware.
Some modelers have tried innovative approaches to getting the same effect - including helmets
with partial face veils – with varying degrees of success. One possible solution is to produce a
helmet model specific to each character head model but without GetAppearance() and
SetAppearance() to ensure the right model is put in place when your character dons a helmet,
these cannot be implemented today. And, to be honest, they are quite kludgy.
9&
Okay, here we go. This is what you have all been waiting for: creating new monsters. This is an
advanced tutorial. It requires you to understand almost everything we have done so far:
•
NWN Viewer
•
Hakpaks
•
3D Modeling
•
2D portraits
•
2da files
•
Voicesets
I want to build a giant crab. I’ve done Wave, Whelm and Blackrazor for S3 – White Plume
Mountain. I can find a gynosphinx and scorpions on NW Vault. But I don’t have a crab. The
modules I have seen so far fake it with other creatures. I want a real giant crab.
Where do we begin? Well, let’s find something that at least vaguely resembles the final product.
Crabs and spiders share a lot of features. There are a lot of spider models so I am going to use
one of them.
:;
,
)
< -
Let’s look at how NWN represents a creature by actually building an existing one in the Aurora
Toolset. Try this exercise:
1. Open up the Aurora Toolset.
2. Create a new Module (we will call it Creature Tutorial for lack of a better name). Use the Area
Wizard to create at least one Area. Use the defaults to set up the area and choose something
simple like a Dungeon.
3. Select Wizards | Creature Wizard.
4. Click Next.
5. For Monster Type select Vermin.
6. Click Next.
7. Do not add any special classes.
8. Click Next.
9. Go with the default Gender, Appearance and Portrait.
10. Click Next.
11. Faction can be Hostile.
12. Click Next.
9
13. Enter a name (Crab Wannabe).
14. Click Next.
15. Add to the Special, Custom1 category.
16. Click Next.
17. Check the Launch Creature Properties checkbox.
18. Click Finish.
The 3D
model
The 2D icon
The Voiceset
•
.
#
9
When you create a custom monster you can use whatever model you choose but you are limited,
of course, to models in the game. You can also choose your own Portrait and Voiceset. Check
out the Appearance tab. For a simple model like this you do not have the ability to change any of
the model pieces that make it up.
So there is our crab. The only problem is, it looks like a spider. But now that you have seen the
different parts of a creature model we will need to look at, let’s get started on turning that spider
into a real crab.
9/
:%
<
5
I’ll bet you thought you knew how this worked by now and that the section after I showed you the
toolset would talk about naming standards. Well it isn’t. The basic naming standards for creatures
are pretty arbitrary because you use the appearance.2da file to identify your new creature and
specify its model. Inside each model there are some naming standards and we will get to them –
but we will do that later because they relate more to animation
than any specifics in the game itself.
Notes
•
I’m going to step out of the usual flow I normally give you and
start with the resource file. I will show you how you can take an
existing creature, create a new version of it, texture that new
version and use it as a new model. In this case, we will make a
crab that looks just like a spider but is orange. Kind of a sorrylooking crab but don’t’ worry, it is just a starting point.
What we have to do is add a new creature resource in the
appearance.2da file. Again, we will get the
appearance.2da file from \source\2dasource.zip
(Bioware had to change it to add their Kobolds, Rats and Gnolls).
When they added the new monsters,
Bioware created a lot of new lines in
the appearance.2da file for Reserved
and User slots. They did this to keep
from totally breaking any newly created
creatures. To update your 2da file, you
can simply put your new creatures into
the ‘user’ slots in the same slots where
they were before.
1. Copy the new appearances.2da file to the directory for your model and icons.
2. Open appearance.2da.
3. Go ahead and take a look at it. Scroll down until you get to the giant spider entry. You should
see this:
158
159
160
Spider_Dire
Spider_Giant
Spider_Phase
2128
2129
2130
4. These different entries describe the many creatures in
the game. I don’t show all of the columns here because
there are too many.
Spider_Giant...
Spider_Giant...
Spider_Giant...
Notes
•
The appearance.2da file layout is
derived from a compilation by Kinarr
Greycloak.
5. Copy the Spider_Giant entry and paste it at the bottom.
6. Modify the entries as appropriate for your new creature.
Column
Description
Values
The first column is the creature’s ID
LABEL
The name of the model as it appears
in the toolset list.
If you put it in quotes you can have
spaces and commas. Example: "Cat,
Domestic"
STRING_REF
Name of the model referenced in
dialog.tlk.
If you put **** in this space it should
use your Label in place of the string
reference in dialog.tlk.
NAME
The internal label for your creature.
Use an underscore ‘_’ instead of
92
Column
Description
Values
spaces.
If this is for a custom character (i.e., a
real PC model), this needs to have
the value ‘Character_model’.
RACE
ENVMAP
The file name of the model without
the extension.
That's the environment map applied
to the alpha channel in the model's
textures.
Example: c_crab
If this is for a custom, dynamic
character (i.e., a real PC model), this
needs to be a single character
corresponding to the race identifier
(e.g., h for human, ‘e’ for elf, etc.).
That's the environment map applied
to the alpha channel in the model's
textures. ‘Default' is for PCs and any
other creature with reflective armor.
'evmap_irrid' is only used by Stag
Beetle and Umber Hulk and gives
them a rainbow hue effect.
'****' no map, this will give you
transparency on your model - black in
the alpha channel will be completely
transparent.
BLOODCOLR
Color of the blood the creature spills
when hit.
R – Red
W – White
G – Green
N-?
Y – Yellow
MODELTYPE
The type of the model for determining
which animations to use.
P = player animation type
F = full animation (humanoid models,
generally). They use the same
animations as PCs like 'run' and
'walk'. They have a supermodel that's
an a_ba variant just like PCs.
Example: Succubus
S = simple animations (most animals
have this, meaning they really only
have their taunt animation plus
attacks). These models use only
creature animations like 'crun' and
'cwalk'. 'S' models cannot equip
weapons. Example: Wolf
L = large creature animations (Balor,
Giants, etc.). They use the same
animations as 'S' models (crun and
cwalk, etc.) but they CAN equip
weapons. These are for 'humanoid
monsters' but are not necessarily
large creatures. Dragons, for
99
Column
Description
Values
example, are 'S' type because they
don't wield weapons.
WEAPONSCALE
Amount to scale weapons so that they
are appropriately sized for use by this
model.
Human = 1 on all scaling -- adjust as
necessary for creature size
WING_TAIL_SCALE
Amount to scale wings and tail so that
they are appropriately sized for this
model.
Human = 1. Model needs to have a
wings or tail node to use this.
HELMET_SCALE_M
Helmet scaling for male.
Human = 1
HELMET_SCALE_F
Helmet scaling for female.
Human = 1
MOVERATE
Movement rate of the creature
Defined in creaturespeed.2da
(NORM, FAST, etc.)
WALKDIST
I am not sure on what values to use
for these two but I think they set the
speed of the walk and run animations.
RUNDIST
PERSPACE
Personal space: How much space the
model will allow around it.
CREPERSPACE
I think this is Combat ready personal
space: Amount of space around the
model in combat.
HEIGHT
HITDIST
PREFATCKDIST
TARGETHEIGHT
1 is the only value Bioware uses.
These next two values determine the
spacing between models during an
attack and maybe which animation is
used.
This model's impact point. This tells
characters where to aim at the model.
ABORTONPARRY
H – high
L – low
Not sure what this means but most
animals are 0, everything else 1
RACIALTYPE
This is the race of the model as
shown in the creature properties.
Appears to be from racialtypes.2da
but the order is wrong.
HASLEGS
Does the model have legs?
0 for no
1 for yes
HASARMS
Does the model have arms?
0 for no
1 for yes
PORTRAIT
The portrait reference of the model.
Refer to the NPC portrait tutorial
above.
SIZECATEGORY
The size of the model.
References creaturesize.2da
PERCEPTIONDIST
The creature’s perception range.
FOOTSTEPTYPE
Which sounds to use for footsteps.
References footstepsounds.2da
SOUNDAPPTYPE
Some specific creature type sounds.
References appearancesndset.2da
HEADTRACK
Does the model’s head follow the
0 for no
Column
Description
Values
current speaker?
1 for yes
HEAD_ARC_H
Horizontal range of head tracking
In degrees.
HEAD_ARC_V
Vertical range of head tracking
In degrees.
HEAD_NAME
The name of the head node used in
the model.
Example: head_g (for PCs)
BODY_BAG
What gets left on the ground after the
creature dies.
References bodybag.2da
TARGETABLE
Can you target the creature for attack
or interact with it?
0 for no
1 for yes
7. Now, extract the model
data\models_01.bif.
for
the giant spider
(c_spidgiant.mdl).
It is
in
8. Use NWNMdlComp to decompile the binary model file (see the directions in the Weapons
section of this tutorial). Rename the file ASCII model file to c_crab.mdl.
9. You need to rename the Aurora base item from c_spidgiant to c_crab. While you are at it,
rename the internal model reference for the texture that it uses from c_spidgiant to
c_crab. We will create a new texture in a moment. You can do this either by editing the ASCII
model file directly or by opening the model in your modeling tool and doing it there. This is not
a tutorial on modeling, per se, so I leave that as an exercise to the reader (we’ll have lots of
opportunities to look at the model file later when we start to turn the spider into a real crab).
The simplest way is to open the .mdl file in a text editor and do a global rename.
10. Now, extract the texture file for the giant spider (c_spidgiant.tga). It is in
data\textures_01.bif.
11. Rename it to c_crab.tga.
12. Open it in your image program (Picture Publisher for me).
13. It is made up of variations of black and green. While it is too early to start repainting it to a crab
shell, lets at least make it orangish so that it does not look like a lime green, nuclear, glowing
crab. I did this by making it greyscale, turning it back into an RGB image, and then shifting the
hue of the greyscale image to orange/red. This is what it looks like. Still makes a pretty sad
looking crab but be patient.
•
/ 8
$
(
14. Back through the same routine. Load the new 2da file, model, and texture into your hakpak.
15. Load up your module in the Aurora Toolset.
16. Point it at your hakpak. Save, close and reopen your module.
17. Now you can create a new crab using the Creature Wizard. You no longer have to create a
vermin.
It looks a bit like a horseshoe crab now although it still has a spider’s portrait. We will tackle the
portrait next and then we will get to actually turning our orange spider into a crab.
:
$
Let’s make the creature portrait. There really isn’t anything new to show you here. The format for
creature portraits is the same format as PC and NPC portraits. Go back and review that section if
you cannot remember it. Even the naming standards are the same. In our case, our portrait files
are po_crab_<size flag> where <size flag> is h, l, m, s and t.
I am not a big graphic artist with 2D images. But I can use Picture Publisher fairly well. Here is a
trick you might find useful (at least if you are modeling real-life animals). Find a photo that works
well for you. Rotate, crop and resize it as I showed you earlier to the Huge size. Don’t forget to
leave the blank space at the bottom (the Huge portrait is 256 x 400 with another 112 pixels at the
bottom). Now, the problem is, the standard Bioware portraits are drawings. A photograph looks
out of place. But all is not lost. Many good drawing programs have filters. I applied a watercolor
filter to my photograph, play with the controls a bit, and it gives me something that looks like a
drawing. Here is mine:
•
0 8
$ 7
2
!
Now create 4 more versions of this in different sizes. Edit portraits.2da to make the new
portrait available and appearance.2da (the PORTRAIT column I indicate above) to tie it to your
new creature. Then add all six files to your hakpak and bring it up in your module. Now you can
change the portrait for your creature to this one.
•
&1
8
$
Seems like a lot of work just so I can call an orange spider a crab (don’t make me have to tell you
to be patient again).
So why did I go through and show you all of this as a starting point? Because the steps I have
just gone through are what you need to do to retexture an existing model. Using this process, I
can create variations on the existing Orc, Kobold or Minotaur models to make Saruman’s Orcs of
the White Hand, to make Kobolds dressed in princely garments, or Minotaurs with chain mail.
With good 2D texturing skills, you can make some very unique monsters without having to know
3D modeling. Maybe not the best approach for making a crab but it works well to create variations
on an existing monster.
!
!:
Notes
$.
While you can create a lot of different models with the basic
steps in Parts 2 and 3 of this tutorial, this isn’t enough if you
want an entirely new creature that does not have the same
shape as an existing creature. I want a real crab, not an
orange spider. So now we have to tackle our model. To do
this, you need to know the basics of 3D modeling, including
a basic understanding of animation. If you don’t have that
yet, go get it – I’ll explain what NWN needs in terms of
animation and nodes but you won’t learn the details of how
to do animation, keyframes, or Inverse Kinematics here.
%
•
If you reskin a creature, be sure to
remove its animations and set the
supermodel to the parent (original
creature model). More on this in the
section on animating but for now do
this:
•
In max or gmax, set the supermodel
parent on the base object and delete all
of the existing animations.
•
If you are editing the ASCII model file
by hand, delete all of the “newanim”
lines and insert the following:
supermodel <child> <parent>. In
our case <child> would be c_crab and
<parent> would be c_spidgiant.
.
Creature models for NWN are meshes, like other NWN
models. However, they are segmented:
1. Load the crab model into gmax by opening the Import MDL sub-menu in the NWN MDL Tool
pane (not the File | Import… function) and using the Browse pushbutton to select the ASCII
file you created in Part 2.
Notes
Watch those polycounts (this is low-poly
modelling, remember?) The CEP
recommends the polygon limits be
assessed by the type of creature:
•
&
'
# (
2. You can minimize the MDL window after you open
the file. Take a close look at the model you loaded.
&
•
Herd/Swarm Creatures: 700
polygons
A herd/swarm creature is any creature
that will typically be deployed in
numbers greater than 12. Examples Kolbolds, Giant Rats, Goblins
•
Group Creatures - 1200 polygons
A group creature that will appear in
numbers greater than 4 but less than
12. Examples: Orcs, Ogres, Dire Bears
•
Single Creatures - 1500 polygons
A single creature is any creature that
will typically be deployed in numbers
less than 4. Examples: Elementals, Iron
Golems
•
Uniques/Rares - 3000 polygons
A unique creature is any creature that
will typically be deployed alone with
zero to very few attendant creatures.
Examples (figurative): a daemon
prince, a greater celestial, an ancient
dragon
Note the base object – this is used to link attributes to models (animations, etc.). The crab is a
child mesh of the base. If you completed Part 2 already, the name of the base should already be
c_crab. You will see that the model has one mesh object for each leg section (24 in all), one for
the main body, one for the thorax, etc. Anywhere you want a creature to be able to bend or move
independently, you need a separate mesh.
If you select these parts you will find their naming standards are not specific to the model. This is
how NWN re-uses animations. Parent animations refer
Notes
to part-names. In this case, the spider’s legs are
This description of rigid, parts-based
Capsule01, Capsule02, etc. If we leave those names
models is not 100% correct – you can also
alone, we could use some of the spider animations for
do models based on a skin and bones –
our crab without having to duplicate them ourselves.
more on that in sub-section Part 9: Skin
Unfortunately, we will find after playing with the spider
and Bones.
animations that they are a little awkward to use for our
crab. But we will use them as a base for some of our
animations. More on this later.
So with that background, put those modeling skills that you learned elsewhere to use:
•
Shorten and fatten up those legs. You may find it easier to do just one set on one side and
clone them for the opposite side. It makes modeling and skinning go faster.
•
Clone and add an extra set of legs (crabs have 8 legs and 2 arms, spiders have 6+2).
•
Squash the bulbous body into a crab shell. Again, you may just want to do half the shell (make
sure you can cut it exactly in half on a plane straight through the body) and then clone/mirror it
to make the other half. This cuts down on texture space and on the actual work you have to
do.
•
Model a set of pincers for the front legs. Even though I made them different sizes, I used the
mirror/clone trick to duplicate them again.
When we are done it should look something like this:
•
&
%
$
# (
Now, before you proceed, I can guarantee you have a lot of world transforms in your model.
These don’t export to NWN. So select your entire model, and break apart all of the pieces (unlink
). Then, with all of the sections still selected, reset the transforms and collapse the
them
new transform onto the stack for each of the pieces. This way you will not have messy problems
with your parts being exported in stretched shapes or partial rotations (if your creature ‘explodes’
when you export it and then import it into the game, you probably didn’t ResetXforms properly).
Don’t reset transforms on the Aurabase object! This will mess up your animation’s scaling when
you export your creature. For more information on ResetXforms, refer to the tutorial on Weapons.
At this point if you are using 3ds Max, it is a good idea to do an "STL Check" (sorry, this is not
available for Gmax). This will do a simple sanity check on your objects and faces and look for
things like unclosed edges, duplicate polys, or inverted polys, etc. This helps especially to track
down problems that show up only in the game.
% 4
Texturing and animation are actually more difficult than the 3d modeling itself (well, I find it to be
true although admittedly my 2d texturing skills are limited). If you have made it this far you are
less than one third done so don’t get too excited by all the praise they will shower on you on the
Custom Content forum for your model at this stage. The process for texturing is the same as it is
for other models. Try to maximize your use of the space on the texture file. Try to avoid
/
unnecessary work and unnecessary space in your texture file by mirroring parts of your creature,
etc. In my example, since the crab is almost
Notes
completely symmetrical, the texture only includes:
•
half the top shell
•
half the abdomen
•
one leg segment, top and bottom
•
one antenna
•
one eye stalk
•
one pincer
•
one main claw
•
I would suggest a 24-bit .tga file in
512x512 pixels.
•
You can create a DDS file from it when
you are done and a lower-resolution
.tga file for older video cards.
•
You should put all of the body parts into
one texture file although really large
and/or unique models (like the dragon)
actually use 2 or 3 texture files of this
size.
•
Not that using the alpha channel for
transparency only works sporadically
on creatures – it appears to be a bug in
the game engine. Every 13th creature
of the same type in one area works.
Weird, eh?
•
However, you can set an alpha
transparency on any or all
objects/nodes within a model. In the
ASCII model file it looks like:
Alpha 1 # full opacity
Alpha 0 # full transparency
Alpha 0.5 # half transparency
•
2
Check the shadow creature for an
example. This does not allow for the
detail that an alpha mapped texture
would provide, but it will work for a
simple transparency/ghost-like
presence.
&:"
Now it is time to animate our crab. Let me start by describing how animation works and then how
animation in NWN maps back to animation in 3dsMax and gmax (collectively, “Max”), the two
most common tools for this. This is not a tutorial on Max animation (use the references at the
beginning of this tutorial to build your knowledge in that area). What I will try to do is link common
animation concepts back to NWN as part of this background discussion. This should help you
map what you know to what you need to do in NWN.
"
Think of an animated film of a crab raising one of its legs. Not an exciting film, but a film
nonetheless. It would consist of a series of ‘still pictures’ where the crab moves its leg a small bit
in each successive picture until the leg is raised up into the air. Each picture is a frame. If you run
the frames back in quick succession, your eyes will
perceive a moving picture.
Hint
•
A 1?
The best way to get a good feel for how
this all comes together is to import an
existing model and play around with it
until you get a feel for how the
animations are tied together.
Most 3D tools (including the Max tools) support a single
animation sequence made up of keyframes. Keyframes
are similar to, but not quite the same, as the frames in this
animated film. Think of keyframes this way: to have your
crab raise its leg again with keyframes, create an initial
keyframe with the leg down and a second with the leg raised. Max knows how to interpolate all of
the points of motion between A and B to create the actual frames you need (the one you had to
do by hand in the previous paragraph). This is called ‘tweening’. So using keyframes is similar to but more efficient than - drawing every single animation frame in sequence – you only need to
worry about the start and ending points.
Now, when you animate a scene in Max (this is what your creature - sitting there like a lump - is:
a scene), you are creating a single sequence of keyframes. As Max runs through your animation
sequence, it runs as a single, continuous animation or movie.
NWN is different: it supports a series of animation sets and does not want a continuous movie.
There are a limited number of sets available (about 154 for PCs and Full creatures and 42 for
Simple and Large creatures). You don't usually have to tell the game to use one set or another
(like run, walk, etc.) it will call the appropriate animation set on its own based on what is
happening in the game. Some are user-controllable through scripting (like greeting) so you can
force the animation to occur when you want it to (too bad they all weren't scriptable). What this
means is that to animate a creature in Max, you need to create the standard set of 42 or 154
animations depending on the type of creature.
So how do we reconcile Max’s movie with NWN sets? What we do is allocate a different block (or
range of keyframes) of the continuous Max movie to each of the NWN animation sets.
9
“Rest” keyframes
Max
NWN
Run
Space
Walk
Space
Greeting
The import scripts do this translation: they load the NWN animations into the one big animation in
Max and put spacers of 10 frames between each adjacent set or block. Then they create a list of
the animations and tie it to the Aurabase object. This cross reference gives the NWN title of each
set, plus starting and ending keyframes for each set. Think of it as a big array of pointers into the
single Max animation. When you click on the Aurabase you will see this array in the Edit tab.
You can modify the Max animation independently of the Aurabase array. For example, you can
delete all of the array entries from the Aurabase. The Max keyframes will still be there, but they
would not get exported any longer because the export scripts don’t know about them. But you
could still view them in Max. Vice-versa, you could delete the keyframes. The animation sets
would get exported but they would be empty so your creature would be motionless.
A final point before we move on: one frame before and after each animation set the import scripts
put a 'static' keyframe (the 'rest' position of the creature). This is to keep the last and next
animation set from impacting this one (Max interpolates animations assuming a transition from
the last populated keyframe to this one. Without these static keyframes you would have all sorts
of interesting little transition motions carried over from the last animation set).
+
A
Before we reconnect the pieces of our crab and animate it, I want to talk about kinematics.
Kinematics and animation are not the same things. We’ve talked about animation as the process
of generating frames/keyframes for your model so that it performs the actions you want it to
perform. You don’t have to pose your character for every frame like they used to do in the golden
age of cartoons – NWN can interpolate many of the intermediate frames from a reduced set
(hence the name key frames). But you need to set enough to firmly define the motion you want
your model to reproduce.
If that is animation, what is kinematics? Kinematics refers to the techniques you use to move the
parts of your model around to create the keyframe poses. There are two main types of
kinematics: Forward Kinematics (FK) and Inverse Kinematics (IK). You will typically use both FK
and IK when animating a model so you need to understand both.
Let me try an analogy: if you pick up your lunch box (you know, the Star Wars one with the
picture of Natalie Portman on it?) in your left hand and run down the street, what does your lunch
box do? Provided you don’t drop it, it should follow you down the street. Why? Your lunch box is
attached to your hand, which is attached to your arm, which is attached to your body, which is
running down the street. That is FK – you move the parent object (your body) and the chain of
relationships moves the lunch box (the child object) with it.
Now set your lunch box down and grab the door handle of
that passing car (you’re still out on the street, aren’t you?)
What happens? In this case, the car moves your hand
along with it. This stretches out your arm, pulls your
shoulder forward, and eventually drags your body along
with it. At least until you smarten up enough to let go (don’t
try this at home – this test was conducted by professional
Notes
•
The Transform Controllers also need to
be set for each object before you start
to animate:
Position: Linear Position
Rotation: Linear Rotation (Smooth
should work too)
Scale: You don’t really need this since
scaling is not supported in the game
engine
•
If you don’t do this you get strange
behaviour like 360 degree rotations
even if you only move a body part a
small bit.
stunt people). That is IK – you move the child object (your hand) and it moves its parent and so
on up the chain to try to accommodate that motion (until your entire body moves if necessary).
That is how kinematics works. IK and FK are two sides of the same coin.
5
A
By joining the pieces of our model together we create an FK setup automatically. To do this
properly, the pieces must be linked together in a specific order (from parent to child). In our case,
what FK does is allow us to move one of the main pieces (a parent object) - like the crab’s body and have the other pieces move with it.
First, set the pivot points of each piece to represent where the joint of the piece sits, and where
you'd like the piece to angle from. You do this from the centre out (so the pivot points for the legs
are at the top of the leg, not the bottom). Also, don’t forget to overlap adjoining limbs a bit so that
when they move you don't create gaps between them.
First, focus on the main body parts. Ignore the other nodes (like hand, hand_conjure, etc.) for
now – more on those in a bit. Let’s start by linking all of the main body parts together into chains
to the base object from the extremities (in this case the crab’s legs inward to its abdomen). The
tip of one leg is linked to the middle piece. That middle piece is linked to the top, and the top
piece to the abdomen.
Test it by selecting the abdomen only and transforming it (rotate or move). The legs, claws, shell,
everything except the nodes should move with it. Note that this inheritance is only one-way; if you
select one of the tips of the claws you will find that it detaches and moves freely without affecting
its parent. That is because we have not turned IK on yet.
Before we turn on IK, let’s talk about those other nodes (e.g., head, and head_conjure). The
nodes are not actual geometry – they are used to indicate to the game where to place certain
items or visual effects. Different types of creatures have different nodes. Here is an example if
you were modeling a humanoid shape. The parts that contain actual geometry have a _g after
them. The parts that are used as place nodes (e.g., where to put a sword in a model’s hand) do
not have _g. You should be familiar with the geometry list from the tutorial on armor modeling:
headconjure
(node)
head (node)
head_g
neck_g
rbicep_g
torso_g
impact
lbicep_g
rforearm_g
rootdummy
lforearm_g
lforearm
(node)
rhand_g
rhand
(node)
Pelvis_g
lhand_g
rhand
(node)
rthigh_g
lthigh_g
rshin_g
lshin_g
rfoot_g
lfoot_g
How does the hierarchy work in this case?
Just as with our crab, the extremities must be linked upwards toward the parent – which in this
case is the torso_g (for our crab it was the abdomen, GeoSphere01). To finish the linking, this
parent must be is linked to the rootdummy. For
example, the hand is linked to the forearm, the forearm
Hints
to the bicep, the bicep to the torso, the torso to the root
• How do I know where to start when
dummy.
building my hierarchy? There are two
principle you should follow:
The head node is parented to head_g. The
headconjure node is parented to the model base. So
is the handconjure node.
The lforearm node is used for placing a shield. It is
parented to lforearm_g.
The lhand and rhand nodes are for weapons. Simple
monsters do not have hand nodes and cannot wield
weapons. Large monsters do not have a lhand node
and as a result cannot dual wield (the rhand node works
fine though). These nodes are parented to lhand_g and
rhand_g respectively.
The impact node is for animations of being struck and
doing damage. It is parented to torso_g.
•
1.
Follow a logical progression from
parent to child (e.g., torso to arm,
to forearm to hand, not torso to
hand to arm to forearm).
2.
Arrange so that parent objects
typically move less than their
children. In this example, the
torso makes a better root object
than the hand.
As a final note, if you want to inherit
animation from another model (more
on this later), you must have the same
linking hierarchy as that model.
Rootdummy is parented directly to the model base.
As I mentioned, not all models have all of these nodes. Here is the list:
Name
Description
Player
Full
Simple
Large
headconjure
Used for casting animation
√
√
√
√
head
Used for casting animation
√
√
√
√
Name
Description
Player
Full
Simple
Large
handconjure
Used for casting animation
√
√
√
√
impact
Combat animations/ damage
√
√
√
√
rootdummy
Controls height/movement
relative to the ground. By
moving rootdummy up and
down, you will make your
creature move up and down
appropriately.
√
√
√
√
rhand
Holding weapon
√
√
lhand
Holding weapon
√
√
lforearm
Holding shield
√
√
√
Make sure you have the appropriate nodes for your model and parent them accordingly.
A
Now let us turn our attention to IK. Inverse kinematics
(IK) is not absolutely necessary when animating but it
makes life a lot easier. It does the opposite of FK by
having child objects affect their parents. It allows you to
move an end body part and have it move the attached
parts back up the chain. For example, if you want to
raise a humanoid creature’s hand into a salute with FK,
you would need to rotate the humanoid’s shoulder into
position, then the forearm, then the hand. With IK active
and the right constraints you can just drag the hand into
position and the rest of the arm will follow. In our
example, you can move the tip of one of the crab’s legs
and it will bend and move the other leg segments to
make a realistic pose.
IK helps when animating the creature because it makes
posing much simpler. You will need to experiment with it
a bit – while it may seem challenging to figure it out, I
would not recommend working without it. IK and
associated constraints are beyond the scope of this
tutorial (it is more general modeling stuff). But if you want
to use IK, now is a good time to set it up. Here is a good
tutorial on IK
(http://www.computerarts.co.uk/tutorials/type/tutorial.asp
?id=21544).
There are two ways to use IK in a modeling tool like
3dsmax: interactive IK or by using IK solvers. Interactive
IK is the most basic form and with it you use IK to move
body parts around as you go through the key frames of
your animation sequence – hence the term interactive.
After you have set up your FK chain (linked your objects)
and set constraints on the joints, you can start Interactive
IK from the IK button on the Hierarchy tab. This allows
Notes
•
Sorry, Gmax doesn’t do full IK. It does
include a limb-solver IK but you can
only link two objects together with it
(e.g., thigh and shin). You’ll have to
make do with this and FK.
•
If you are going to inherit your model’s
animations from a supermodel, IK is not
required at all (more on inheritance in a
few paragraphs).
•
If you do set up IK, you can turn it on
and off (use the “Interactive IK” button)
to achieve the desired result.
•
Don't attempt to change the inheritance
settings of your geometry - they will
animate in max fine but won't export
(skewing them completely in-game).
•
Each part in a model has a specific
name. To use a supermodel’s
animations, you must use the naming
scheme of the parent. The animations
are not attached to parts of the model;
they are attached to the name of that
part.
•
A common mistake you will see with
creature hakpaks is incorrect or
duplicate usage of the animation
supermodel.
•
Some people don’t use a supermodel
and include the same animations in
each variation of a creature (e.g.,
different horse models from Shetland
ponies to Draft horses can use the
same animation set with only a few
differences). This dramatically
increases the size of your models
because the animations are typically
70-80% of the bytes in a creature
model.
you to move your pieces around using the IK mechanics. To use FK, I generally turn Interactive
IK off.
The alternate to Interactive IK is using IK solvers. With IK solvers you set the start position and
the goal and let the IK solver figure out how to move the scene objects from start to finish. It is
much more complicated to set up but it can be much easier to use when done properly. Look for
a good tutorial on bones and IK solvers for details.
Bioware used the Inverse Kinematics in 3dsMax version 3.1 to perform their animation. The v3.1
animation capabilities (also available in 4.x) can still be found in Gmax and higher versions of 3ds
max. This is limited to Interactive IK.
This technique is not as ‘good’ as the HI-IK Solvers of 4.x+. By good I mean HI-IK solvers are
easy to use and produce natural results when set up properly (do not underestimate the work
required to set them up). However, the NWN engine only reads key frames while HI-IK solvers
minimize the number of keyframes in a scene. Consequently HI-IK solvers do not work directly
with the NWN engine. The HI-IK Solvers can be used but they require 'baking' the object to
calculate and embed the keyframes. Scooterpb’s tool has the ability to do this now (although it
requires some tweaking after export to make it really look good).
The simplest way to animate your creature is not to animate it at all (or to animate as few actions
as possible). What do I mean by that? NWN has the ability to inherit animations from a parent
object. If you construct your model with the same objects as a standard model, with the same
pivot points and object names, the same size and approximate shape, you can set that standard
model to be the supermodel for your creature (you set this feature on the base model object).
When you do this, NWN will use the supermodel’s pre-existing animations to control your model.
There are two main families of model type that define their allowed animations: Player (which
includes the “Full” type from appearance.2da) and Simple (which includes Large).
Player animations cover the full range from spell casting and weapon animations to non-combat
animation. There are 154 animations in a player model. Player animations are generally used for
humanoid creatures (refer to the description of appearance.2da which defines Model Types).
Simple animations are for creatures and they cover a much smaller range. Most are combat,
walking and running animations. There are 42 animations in a simple model. The basic models
are arranged in a hierarchy that looks like this:
a_ba_casts
a_ba_med_weap
a_ba_non_combat
a_ba
a_fa
Player types
Full types
Simple types
!
Large types
•
&) + #
2
%
What does this hierarchy show me? The NWN inheritance model means each creature model
can have a superset that defines some or all of its basic animations. That superset can, in turn,
have its own superset that defines some or all of its basic animations. And so on.
The Player (P) model types are generally used for player characters. They have as a superset a
basic humanoid model (a_ba) that only defines special weapon animations (like 2-handed or 2weapon animations). This model, in turn, inherits
Notes
non-combat animations such as drinking and
• Some people point their model at a
saluting from another model (a_ba_non_combat).
supermodel but forget to take their
Which inherits additional weapon and combat
animations out. To remove the
animations from a third model (a_ba_med_weap).
animations from a model you need to
This in turn inherits spell casting animations from the
remove the animations pointers from
final model (a_ba_casts).
the model base object (you delete
these by selecting the model base and
going to the rollup in the edit tab) and
you should delete the actual animation
keys (by selecting all objects in the
scene and deleting all the keys at the
bottom of the screen).
A variation on the Player model type is the Full (F)
model type. This is generally used for humanoid
creatures such as the dryad, etc. They have their
own basic model that defines special weapon
animations (a_fa) but this file inherits the same noncombat, medium weapon, and casting animations as
the player types.
Simple (S) types (e.g., cats) define their own unique set of 42 animations (there is no base
animation because they are too unique). Some Simple types inherit from another Simple model
although this is typically only found in families of creatures (e.g., the Lion inherits from the Dire
Cat).
Large (L) types are special as well (these are monsters like demons that have Simple animations
but can wield weapons). Like Simple types they usually define their own unique animations
although they, too, can do limited inheritance. But Large types can wield weapons? How does
that work? If you look at the table below there are no weapon animations specific to Large types.
The answer lies in a special rhand node you will find in these models. Armed Large type models
simply attach a weapon to that node and then go ahead and use the same combat animations as
a non-equipped character. So your Frost Giant attacks in the same way regardless of whether he
is using his fists, a club, a spear or a toothpick.
There are exceptions to this hierarchy. Some Full model types override some of the inherited
animations (e.g., the Dryad changes some of her animations from the normal human type). There
are a few other base models including a_da that are used for special models (a_da is used for the
dwarves because the human animations do not scale so well to such a small size).
Below is a table that includes the labels of all of the allowed animations and whether or not they
are applicable to certain model types. It also includes the flag which can be used to invoke this
animation as a scripted event.
Name
Description
A_ba_casts
Player
Full
√
√
conjure1
Conjuration
√
√
conjure2
Conjuration
√
√
castout
Cast out, beginning
√
√
Simple Large Flag
&
Name
Description
Player
Full
castoutlp
Simple Large Flag
Cast out, looping
√
√
castself
Cast on self, beginning
√
√
castselflp
Cast on self, looping
√
√
castup
Cast up, beginning
√
√
castuplp
Cast up, looping
√
√
castarea
Cast area effect, beginning
√
√
castarealp
Cast area effect, looping
√
√
victoryfr
Victory
√
√
ANIMATION_FIREFORGET_VICTORY1
victorymg
Victory
√
√
ANIMATION_FIREFORGET_VICTORY2
victoryth
Victory
√
√
ANIMATION_FIREFORGET_VICTORY3
castpoint
Cast by pointing,
beginning
√
√
castpointlp
Cast by pointing, looping
√
√
appear
Drop from above
√
√
disappear
Leap upward, beginning
√
√
disappearlp
Leap upward, looping
√
√
a_ba_med_weap
√
√
1hreadyr
1-handed ready, right
√
√
1hreadyl
1-handed ready, left
√
√
2wreadyr
2-weapon ready, right
√
√
2wreadyl
2-weapon ready, left
√
√
nwreadyl
No weapon ready, left
√
√
nwreadyr
No weapon ready, right
√
√
1hslashl
1-handed slash, left
√
√
1hslashr
1-handed slash, right
√
√
1hstab
1-handed stab
√
√
1hcloseh
1-handed close, high
√
√
1hclosel
1-handed close, low
√
√
1hreach
1-handed reach for target
√
√
1hparryr
1-handed parry, right
√
√
1hparryl
1-handed parry, left
√
√
dodgelr
Dodge, lower or duck
√
√
dodges
Dodge, sidestep
√
√
damages
Hit, from stab
√
√
Name
Description
Player
Full
cwalkf
Combat walk, forward
√
√
cwalkb
Combat walk, backward
√
√
cwalkl
Combat walk, left
√
√
cwalkr
Combat walk, right
√
√
2wslashl
2-weapon slash, left
√
√
2wslashr
2-weapon slash, right
√
√
2wstab
2-weapon stab
√
√
2wcloseh
2-weapon close, high
√
√
2wclosel
2-weapon close, low
√
√
2wreach
2-weapon reach for target
√
√
nwslashl
No weapon slash, left
√
√
nwstab
No Weapon stab
√
√
throwr
Throw, right hand
√
√
2wparryl
2-weapon parry, left
√
√
2wparryr
2-weapon parry, right
√
√
shieldl
Shield block, low
√
√
kdbck
Knockdown back,
beginning
√
√
kdbckps
Knockdown back, looping
√
√
kdbckdmg
Knockdown back, hit
√
√
kdbckdie
Knockdown back, die
√
√
gutokdb
Get up, to knockdown
back
√
√
gustandb
Get up, from gutokdb
√
√
kdfnt
Knockdown forward,
beginning
√
√
kdfntps
Knockdown forward,
looping
√
√
kdfntdmg
Knockdown forward, hit
√
√
kdfntdie
Knockdown forward, die
√
√
gutokdf
Get up, to knockdown
forward
√
√
gustandf
Get up, from gutokdf
√
√
damagel
Hit, from left
√
√
damager
Hit, from right
√
√
nwcloseh
No weapon close, high
√
√
Simple Large Flag
/
Name
Description
Player
Full
nwclosel
Simple Large Flag
No weapon close, low
(kick)
√
√
spasm
Spasm
√
√
deadfnt
Dead, forward, looping
√
√
deadbck
Dead, back, looping
√
√
nwreach
No weapon, reach
√
√
nwkickl
No weapon, kick left
√
√
nwkickr
No weapon, kick right
√
√
nwslashr
No weapon, slash right
√
√
nwkicks
No weapon, kick stab
√
√
bowrdy
Hold bow at ready
√
√
xbowrdy
Hold crossbow at ready
√
√
bowshot
Shoot bow
√
√
xbowshot
Shoot crossbow
√
√
2wslasho
2-weapon slash, only
upper body
√
√
nwslasho
No weapon slash, only
upper body
√
√
1hslasho
1-weapon slash, only
upper body
√
√
2hslasho
2-handed slash, only
upper body
√
√
cturnr
Combat turn, right
√
√
damageb
Hit, back
√
√
a_ba_non_combat
√
√
walk
Walk
√
√
pause1
Pause, looping
√
√
ANIMATION_LOOPING_PAUSE
hturnl
Head turn, left
√
√
ANIMATION_FIREFORGET_HEAD_TURN_LEFT
hturnr
Head turn, right
√
√
ANIMATION_FIREFORGET_HEAD_TURN_RIGHT
pausesh
Pause, scratch head
√
√
ANIMATION_FIREFORGET_PAUSE_SCRATCH_
HEAD
pausebrd
Pause, bored
√
√
ANIMATION_FIREFORGET_PAUSE_BORED
pausetrd
Pause, tired
√
√
ANIMATION_LOOPING_PAUSE_TIRED
pausepsn
Pause, poisoned or drunk
√
√
ANIMATION_LOOPING_PAUSE_DRUNK
listen
Listen, looping
√
√
ANIMATION_LOOPING_LISTEN
salute
Salute
√
√
ANIMATION_FIREFORGET_SALUTE
bow
Bow
√
√
ANIMATION_FIREFORGET_BOW
2
Name
Description
Player
Full
drink
Simple Large Flag
Drink
√
√
ANIMATION_FIREFORGET_DRINK
read
Read
√
√
ANIMATION_FIREFORGET_READ
tlknorm
Talk, normal
√
√
ANIMATION_LOOPING_TALK_NORMAL
tlkplead
Talk, Pleading
√
√
ANIMATION_LOOPING_TALK_PLEADING
tlkforce
Talk, forceful
√
√
ANIMATION_LOOPING_TALK_FORCEFUL
tlklaugh
Talk, laughing
√
√
ANIMATION_LOOPING_TALK_LAUGHING
greeting
Greeting
√
√
ANIMATION_FIREFORGET_GREETING
run
Run
√
√
getlow
Get low, beginning
√
√
getmid
Get middle, beginning
√
√
torchl
Lift torch
√
√
sitdown
Sit down, beginning
√
√
walkdead
Walk as if dead
√
√
kneel
Kneel
√
√
meditate
Meditate, looping
√
√
ANIMATION_LOOPING_MEDITATE
worship
Worship, looping
√
√
ANIMATION_LOOPING_WORSHIP
walkinj
Walk with injured leg
√
√
pause2
Pause, looping
√
√
ANIMATION_LOOPING_PAUSE2
getmidlp
Get middle, looping
√
√
ANIMATION_LOOPING_GET_MID
getlowlp
Get low, looping
√
√
ANIMATION_LOOPING_GET_LOW
lookfar
Look far away
√
√
ANIMATION_LOOPING_LOOK_FAR
sit
Sit in chair, looping
√
√
ANIMATION_LOOPING_SIT_CHAIR
sitcross
Sit crosslegged, beginning
√
√
sitcrossps
Sit crosslegged, looping
√
√
drwright
Draw weapon, right hand
√
√
drwleft
Draw weapon, left hand
√
√
taunt
Taunt
√
√
ANIMATION_FIREFORGET_TAUNT
steal
Steal
√
√
ANIMATION_FIREFORGET_STEAL
pauseturn
Pause and turn in place
√
√
pausewalkl
Pause and walk left
√
√
pausewalkr
Pause and walk right
√
√
xbowr
Hold crossbow at rest
√
√
pausewalkfl
Pause and walk forward
left
√
√
ANIMATION_LOOPING_SIT_CROSS
9
Name
Description
Player
Full
pausewalkfr
Pause and walk forward
right
√
√
runfl
Pause and run forward left
√
√
runfr
Pause and run forward
right
√
√
plpause1
Hold polearm at rest
√
√
√
√
a_ba and a_fa
2hreadyr
2-handed ready, right
√
√
2hreadyl
2-handed ready, left
√
√
plreadyr
Polearm ready, right
√
√
plreadyl
Polearm ready, left
√
√
2hslashl
2-handed slash, left
√
√
2hslashr
2-handed slash, right
√
√
2hstab
2-handed stab
√
√
2hcloseh
2-handed close, high
√
√
2hclosel
2-handed close, low
√
√
2hreach
2-handed reach for target
√
√
2hparryl
2-handed parry, left
√
√
2hparryr
2-handed parry, right
√
√
plslashl
Polearm slash, left
√
√
plslashr
Polearm slash, right
√
√
plstab
Polearm stab
√
√
plcloseh
Polearm close, high
√
√
plclosel
Polearm close, low
√
√
plreach
Polearm reach for target
√
√
plparryl
Polearm parry, left
√
√
plparryr
Polearm parry, right
√
√
plslasho
Polearm slash, only upper
body
√
Simple Large Flag
Simple and Large
√
√
creadyr
Ready, right
√
√
creadyl
Ready, left
√
√
cdamagel
Hit, from left
√
√
cdamager
Hit, from right
√
√
cdamages
Hit, stabbed
√
√
Name
Description
Player
Full
Simple Large Flag
cpause1
Pause, looping
√
√
ca1slashl
Creature attack, slash left
√
√
cwalk
Walk
√
√
cclosel
Attack close, low
√
√
ca1slashr
Creature attack, slash right
√
√
ca1stab
Creature attack, stab
√
√
ccloseh
Attack close, high
√
√
creach
Attach reach for target
√
√
cparryr
Parry, right
√
√
cparryl
Parry, left
√
√
cdodgelr
Dodge, lower or duck
√
√
cdodges
Dodge, sidestep
√
√
ckdbck
Knockdown back,
beginning
√
√
ckdbckps
Knockdown back, looping
√
√
ckdbckdmg
Knockdown back, hit
√
√
ckdbckdie
Knockdown back, die
√
√
cdead
Dead, looping
√
√
cguptokdb
Get up, to knockdown
back
√
√
cgustandb
Get up, from gutokdb
√
√
ccwalkf
Combat walk, forward
√
√
ccwalkb
Combat walk, backward
√
√
ccwalkl
Combat walk, left
√
√
ccwalkr
Combat walk, right
√
√
cgetmid
Get middle, beginning
√
√
chturnl
Head turn, left
√
√
chturnr
Head turn, right
√
√
ctaunt
Taunt
√
√
cconjure1
Conjuration
√
√
ccastoutlp
Cast out, looping
√
√
cappear
Drop from above
√
√
cdisappear
Leap upward, beginning
√
√
ccastout
Cast out, beginning
√
√
Name
Description
Player
Full
Simple Large Flag
cgetmidlp
Get middle, looping
√
√
cspasm
Spasm
√
√
crun
Run
√
√
ccturnr
Combat turn, right
√
√
cdisappearlp
Leap upward, looping
√
√
Note one more exception: the a_fa model does not include a plslasho animation. I assume this is
an oversight.
You can accompany each animation with a list of events. These typically trigger sounds or other
effects to make the animation livelier.
Event
Description
snd_footstep
Footsteps (depends on tile surface)
hit
Hit (depends on weapon type and armor hit)
cast
Spell activates (depends on spell)
snd_hitground
Creature knocked down
blur_start
Start of attack, motion blur (may depend on the blur effect of the
weapon model)
blur_end
End of attack, motion blur (may depend on the blur effect of the weapon
model)
draw_arrow
Sound of arrow drawn
draw_weapon
Sound of weapon drawn
parry
Parry (depends on weapon types)
%-
+
Those are the basics that you need to know about how NWN requires you to handle animations. I
don’t cover animation in detail (walk cycles, etc.) What I will do is include a few hints and tips
(most of these come from Jupp who does a lot of work on the City of Doors Initiative and Haelix).
When choosing whether to use inheritance or to model from scratch, you really need to look at
the model and how well it maps to an existing model. If it is close (e.g., a humanoid), then you are
best to start with a supermodel and customize only those animations that truly lend a unique look
and feel to the creature. If it is not close, it still helps to see if you can map animations to specific
parts of your model. For example, scooterpb’s 3ds Max plugin has facilities to load animations
from a second model file and attach them to parts of your model.
Alternately, you can import the creature whose animations you want to use in gmax alongside
your model. Then copy the base object over to your object. You now have a list of all of the
animations you need and starting timeframes.
As a third option, start with a blank slate. Import the creature whose animations you want to use.
Then import your customized model along side it. Attach the parts of your model to the
corresponding parts of the base creature. Delete the base creature’s parts and you will have your
new model with the full animations intact to use as a starting point.
Once you have worked out your starting point, it is time to animate. Select the base helper object.
Select the edit tab and it should show the animation rollout. In that rollout you will see a list of all
the relative animations. This should be your starting point.
The basic pattern for animating a specific animation sequence is this:
1. Double click to select the animation sequence you want to work with. The times will be
advanced to the start and end of the animation sequence.
2. Copy the at-rest keyframe to the beginning of the
animation sequence. This is the keyframe of the
model in the default, at-rest position.
3. Copy the at-rest keyframe to the end of the animation
sequence. By putting the same keyframe in the first
and last positions your creature will animate smoothly
from rest, go through the motions, and then come to
rest in the same place again. All of this without jerky
transitions.
Notes
•
Using the at-rest key for the start and
end of the sequence does not work for
some instances (generally looping
animations) such as walk and run
animations where you don’t’ want them
to start from rest. Similarly, the
knockdown animation starts with the
creature in one pose and ends with it
on its back.
•
Be sure to use non-deforming
animation (no skins or bones other than
basic FK and IK systems unless you
can strip the data out and be left with
basic geometry and keyframes before
exporting).
•
Don’t forget to add events to your
animations (or use the ones in the base
animation you are borrowing from).
4. Move out to the first keyframe you want to animate.
5. Turn on the ‘Animate’ button and move all the needed
parts to position the creature for that keyframe.
6. Go to the next key and repeat 5 until you are satisfied.
7. Go back to the start and play this sequence. If there
are anomalies in the movement correct them one
keyframe at a time
It helps if you take another model from NWN and import it
into your scene together with yours – put them side-byside (obviously, choose a model that comes as close to
yours as possible in shape and movement). Now you can
watch the animations together to get an impression of what
each sequence is like.
Here are a few tips on creating clean, small animation files.
Check these after you have finished animating your
creature and delete invalid keys:
•
Notes
•
Control objects can make your creature
easier to pose. Under the Create tab
select Helpers and then the appropriate
type:
•
The Point helper is usually used to
create levers to pose your creature’s
limbs. Create one of these objects,
place it near the end object of a limb
(say a hand or foot), and then make the
limb its parent. This gives you an extra
degree of freedom when moving using
IK.
•
The Dummy helper I use as a visual
reminder to create pegs to help me
ensure parts of my model aren’t moving
when I don’t want them to (e.g.,
keeping your creature’s feet from
sliding around on you).
Some objects should have no animation keys
attached to them. These are:
•
The aura base object
•
Headconjure node
•
Handconjure node
•
Head node
•
Impact node
•
Any control objects you have created that are not part of the geometry
•
The other nodes (rhand, lhand, and lforearm) can rotate independently of the hands and
forearm if necessary to keep the attached weapon oriented properly.
•
Only certain key types are valid:
•
Rotation keys are valid and most objects use them (except for the previous list)
•
Movement keys are usually only valid for rootdummy. Since it is the parent of all of the
other objects, move rootdummy around to move your entire creature. Everything else is a
rotation around rootdummy. If you have a ‘shrinking-expanding’ object that moves like an
accordion (well, only angry battle-attack accordions move on their own but you know what
I mean - where segments stretch and contract) you may be able to violate this rule (may
be able to – I haven’t tested this).
•
Scale keys are invalid. The game engine does not use them.
!
:
Now that we have our monster moving, it is time to get it talking. Review the section on voicesets.
Creature voicesets use the monster template and follow all of the rules in that tutorial. By adding
a custom voiceset we can create the clicking of the crab’s claws in anger, distress, etc.
Before we close out on this section, let me make a distinction between creature ‘appearance
soundsets’ and ‘voicesets’. We talked about ‘voicesets’ earlier in this tutorial and that information
applies to creatures as well. ‘Appearance soundsets’ are another beast entirely. They reflect the
ambient sounds a creature makes – an example would be the sound a creature makes if you hit it
with a sword. For the sake of completeness, here is appearancesndset.2da. You only need to
modify this file if you want to add a new type of sounds to accompany a creature. Otherwise, pick
an appropriate row and use it for your creature in appearance.2da.
Column
Description
Values
The first column is the set ID
LABEL
The label for the sound set.
ArmorType
Material that the armor is made of,
reflecting the sound it makes when
struck.
WeapTypeL
Left hand weapon sound.
References weaponsounds.2da.
WeapTypeR
Right hand weapon sound.
References weaponsounds.2da.
WeapTypeS
Slashing weapon sound.
References weaponsounds.2da.
WeapTypeClSLW
Claw (not sure which attack).
References weaponsounds.2da.
WeapTypeClSH
Claw (not sure which attack type).
References weaponsounds.2da.
WeapTypeRch
Reaching weapon sound.
References weaponsounds.2da.
MissIndex
Sound of weapon missing.
References weaponsounds.2da.
Looping
A looping sound that plays when the
creature is near.
If you point to an entry with a looping
sound you will get this sound
regardless of what other parameters
you set in the Aurora toolset. This is
mostly used for spooks.
FallFwd
Sound that plays when the creature
falls forward.
FallBck
Sound that plays when the creature
falls backward.
&
/:%
+
-
To give your creature appropriate statistics, skills, feats and special abilities, you need to
understand how to create a custom blueprint. A blue print goes into a specific module. Take our
crab and all of the files we created (2da files, portraits,
etc.) and put them in a hakpak. Attach the hakpak to your
Hint
module. Create an instance of your creature in the
• Be careful with blueprints. As long as
Aurora toolset (like we did in Part 1).
people use your hakpak intact,
From here you can set the portrait (from Part 3), the
voiceset (from Part 6), the description, and the attributes
of the creature. Now save our crab by exporting it as an
.erf file (Exported Resource File). It can now be
packaged together with your hakpak and distributed to
others to use (do not load it into your hakpak – a .erf file
is imported into the NWN Toolset separately using File |
Import…)
blueprints are a great way to create
blueprints easily using your weapons.
However, if you mix and match
hakpaks, don’t import old .erf files into
your modules and expect them to work.
The internal references get mixed up.
2:$
1
Danglymesh is used to create neat effects like hair that sways when you move and flags that
blow in the wind (and Aribeth’s jigglyness but we won’t talk about that here. Much.) You achieve it
by adding a Flex modifier to your editable mesh in 3dsMax or Gmax. Once you have added it,
select the Flex modifier. With it highlighted, you can adjust the flex parameters:
1. Period – how quickly the object moves and how fast it comes to rest.
2. Tightness – how much ‘tension’ there is in the object restricting movement.
3. Displacement – how far the object moves. This value corresponds to the Flex parameter in
Max. It represents the amount of the flexed animation that is used (the amount of motion and
factors like tightness determine the extent of the flexed animation. A setting of 1 causes the
flexed animation to occur unmodified; higher settings cause unnaturally high amounts of
stretching, and lower settings cause diminished stretching.
The next step is to paint the weights of the vertices of your mesh to indicate how much each
vertex is affected by these jiggly parameters. Drop down the detailed parameters of your Flex
modifier and choose the first one. Each of the vertices will appear in a different color. Red
vertices are not affected by the Flex modifier much if at all. Yellow vertices are strongly affected
and orange is somewhere in between. In the rollout menu you will see an option to paint the
weights to change these colors.
At this point there should be no weights associated with any part of the mesh so each vertex
painted should appear as pure red. Set the following in the Weight Properties section:
1. Paint Str: -0.1 - all vertices you paint will be start to turn orange or yellow
2. Radius: select a radius that is small enough for you to see the entire brush
3. Feather: 0
Now paint the vertices you want to move with the Flex modifier. Generally, vertices close to a
stationary object (say at the base of a ponytail) would be closer to red than those farther away
(say at the tip of a ponytail).
You have to export your model and import it into NWN to test these values. I would suggest
editing the ASCII model file directly when testing instead of continually going back into Max to
adjust and export. You can test danglymesh in the Aurora toolset (grab and shake the object to
see how much it responds to movement).
/
9: #
+
Most of the NWN animations follow the simple rigid animation techniques we talked about in this
section. However, NWN also supports a skin and bone system. The difference between a skin
and bone system and rigid animation is simple: with rigid animation, we simply transform and
rotate the rigid mesh objects that make up our creature. With a skin and bone system, we move
the ‘bones’ (a series of connected, invisible objects) and the bones actually stretch and deform
the connected skinmesh to reflect the movement. In the
Note
case of rigid animation, all of the vertices in an object
• Do not confuse skinmesh with
rotate around the pivot point of that object. In the case of a
danglymesh. Danglymeshes do cast
skin and bone system, the vertices of the skin rotate
shadows. Skinmeshes do not. You get
around the bones that they are attached to instead.
a danglymesh by adding a Flex
modifier to an object. I covered
danglymesh in section 8.
Skin and bones systems are much more realistic – if set up
properly – but they are also more complex to produce,
more taxing on the performance of the game engine, and
skinmesh objects do not cast shadows in the game.
Scooterpb’s export scripts for 3dsmax support bones and skin for your mesh models (sorry,
Gmax does not). Here is some sage advice from Scooterpb on using them properly:
You have to be careful to connect them to your model in a way that's going to be friendly to the
NWN game engine. Scooterpb has fixed bugs with skin object import and export in every version
of the plug-ins that released, and expect there to still be some set-ups that use skins that may not
export properly.
If you want to use bones, here are a few rules to follow:
1. Be sure you need bones. You can attach an HI-IK Solver directly to the component parts in
your model - so if you're not dealing with skins, you probably don't need bones (i.e., animate
the rigid parts of your model). Having said that, bones do behave slightly differently in the UI
than parented meshes do, so you might want them to be able to use some of the more
advanced properties (e.g., doing a full two-way character rigging with independently moveable
joints and controllers).
2. Do not use a skin to attach a bone to a mesh if the mesh is going to behave like a rigid-body
object. In other words, if it is not behaving like a skin (with multiple weights for different
vertices), don't make it a skin. If you just want to have the mesh match the movement of your
bones, parent the mesh directly to the bone.
3. Link the root bone of your hierarchy to the model helper object, just like any other part.
Otherwise, the bones in the chain won't export.
4. If you are using skins, parent them to the model
helper object ONLY. Don't parent them to any other
part in the hierarchy. Doing so can crash the model
viewer and probably will not work in the game either.
Warning
•
HI-IK-exported animations often look
totally wrong in the model viewer. The
reasons have to do with the math that
is used to represent rotation angles in
the viewer. In any case, it looks right in
the toolset and in the game.
5. Pay careful attention to how you set up the hierarchy
for your model if you use bones. If you set up a
completely different hierarchy for your model because
of your bone structure, the game engine will find it difficult to match up a supermodel to your
model. This means you will not be able to parent your model to existing animations. Probably
not a big deal for entirely new creatures because they often need their own animations.
2
However, if you are creating a PC or Full type creature, those 150+ animations will be timeconsuming if you have to do them from scratch. If you are careful about how you match
invisible bones to your supermodel’s animations, you may be able to get away with re-using
the supermodel. Think it through beforehand.
6. If you make your creature from a skinmesh it will not cast shadows in and of itself. However,
you can add non-rendering geometry to the model that will cast their own shadows (although
they won’t typically be animated and they won’t match the skinmesh directly).
+
0
Here are Batinthehat’s notes on using skinmesh in NWN. Bat claims the information is by no
means definitive, but I’ve yet to see anybody do better or improve on it much.
1. Modeling the skinmesh
The sort of blending you are going to use for the skinmesh should affect the way you
model: If you are using Rigid vertices (vertices move with only one bone, looks less fluid
but less of an impact on CPU performance) then you need to define each skinmesh
'segment' clearly or it will lose its shape when it deforms. In an arm for example the bicep
should not sit straight on top of the forearm, you need some polygonal padding between
the two sections. This will do all the deforming, and the overall shape of the bicep and
forearm will be retained.
NWN also supports four bones per vertex blending - this takes more out of the CPU but
looks much more naturalistic - you can also be a little less stringent about modeling the
joints correctly). So far I've not noticed any real slowdown when comparing rigidly
weighted models with blended ones.
2. Chopping it all up
If the skinmesh part is going to be influenced by more than 10 bones split it up into
several chunks. I bisected the manticore at the waist and made the head, tail and wings
separate parts as well. I haven't been able to get Scooters plug to export a skinmesh with
15+ skin bones without errors, so I generally play safe and stick to around 10 bones per
part. Scooters plug probably supports more that this but I've not checked it out fully.
With the Bio scripts you have more leeway - larger, more complex skinmeshes with up to
17 bones are possible. Chopping the model up is still a good habit to get into however,
especially if you are creating variants. You don't want to spend ages re-weighting the
entire thing if you are just going to be altering the head.
3. How does max determine where on the skinmesh the bone pulls?
The size and shape of the bone is actually not that important - it only really affects the
way Max draws the initial envelopes of influence.
Hint
Basically any vertices on a skinmesh that are
• You can temporarily turn off the
attached or weighted to a bone transform around the
skinmesh/bone link by turning off the
bones pivot point rather than the pivot of the
‘Always Deform’ option in the Advanced
skinmesh. If the vertices of the skinmesh are
Rollout of the skin. This allows you to
weighted to several bones they'll sort of average out
shift the bones around or change the
their rotations/movements etc between the bones
vertices in the skin without changing
pivots, based on how heavily they are weighted to
your entire model.
each individual bone.
Think of the envelope as determining the "loyalty" of
9
the skin mesh to the bone’s movements. If you increase the concentration of the
envelope past the actual bone, it will move as if the bone where longer/wider than it really
is (depending on the concentration and the presence of other bones).
4. Prepping the mesh
Center the pivots. Each part that you'll apply skinmesh to should be ResetXformed.
Collapse the stacks on each skinmesh part & fix the direction of the normals. Everything
needs to pass an STL check so drop the STL modifier on top of each part and cap all
holes, make sure there are no loose vertices etc.
Once everything passes an STL check you should collapse and link each part to the
model base (or to another object that is ultimately linked to the base). Make sure that
each skinmesh part has an individual name, or it won't render properly in-game.
5. Apply Skin
Apply the Skin modifier to one of your skinmesh parts. Select Add Bone and add the
relevant mesh parts as bones. For a simple lower body robe this would be the legs,
shins, feet, pelvis. I usually add the nearest neighboring bones as well, i.e. the torso and
let it influence the edges of the skinmesh; it
makes the transition between individual parts
Hints
more seamless.
• The colors are different in different Max
versions, but the closer to red the color
is the more influence the bone has. So
for example:
6. Weighting the mesh
There are two ways of weighting the skinmesh
- you can either alter the position, scale, falloff,
etc. of the envelopes to approximate each
bones influence or you can collapse the
envelopes entirely and paint the vertex
weights by hand. For low-poly NWN models I
find it easier to paint by hand – it is a bit more
time consuming but it causes less problems
with blending. It also offers more control over
the way the mesh deforms.
•
A red vertex means that it moves only
with the selected bone.
•
An orange vertex means that it is about
50% influenced by the selected bone.
•
A blue vertex means that it is only
barely influenced by the selected bone.
•
A vertex with no color means that the
bone has no influence over it.
Expand the Skin modifier and select
Envelopes. Clicking on one of the greyed out bones in the viewport or in the rollout will
display the envelope of influence. On an
unmodified model these will probably be
Hints
overlapping. If you switch your viewport to a
• Okay now export the model to override
and check it in-game, not just the
solid view and turn on edged faces you'll see
toolset. Some common problems:
that each vertex within the envelope is given a
color. The color of a vertex is a visual
• Problem: Some vertices remain in the
representation of the amount of influence the
same position as the objects pivot-point
selected bone has over it.
and do not deform with the bones
7. Collapse the envelopes
First thing to do is collapse the envelopes.
Click on one of the circular radius control
handles and either move it to the centre of the
bone or type 0 in the radius part of envelope
properties. Do this for the other envelope
radius and for all the other bones.
Solution: Could be several things but
most likely the skinmesh part has too
many controlling bones, try reducing it
to 10.
•
Problem: Skinmesh parts are all black,
but when a texture is added they
vanish.
Solution: one or more skinmesh parts
have the same name. Give them
unique names.
8. Painting weights - first pass
Select one of the bones and click on the Paint Weights button in the skin rollout. For the
first pass of the weighting process it is a good idea to block the model out with rigid
vertices (each vertex tied to only one bone) and check if it works without error in NWN.
Sometimes rigid weights are all that is needed, though you might need to blend the
weights if the model demands it or deforms badly.
At the moment there should be no weights associated with any part of the mesh so any
vertex painted will appear as pure red. But just to make sure for the next bone set the
following in the Weight Properties section:
a. Paint Str: 1.0 - all vertices you paint will be turned red
b. Radius: whatever is appropriate
c.
Feather: 0
Now paint any vertices you want to move with the selected bone.
Select the next bone and repeat the process. If you're using a model with existing
animations you've got the luxury of checking out how the skinmesh deforms. The dusty
was based on the a_ba_non_combat super and needed quite a lot of edge turning under
the skin modifier before it looked alright.
Once you've done the same with any other skinmesh parts check it in-game.
9. Blending weights - second pass
Select a skinmesh part you've blocked out with rigid vertices, select Envelopes and in the
Weight Properties section:
•
Paint Str: 0.1
•
Radius: whatever is appropriate
•
Feather: 0
Now it is just a matter of over-painting neighboring vertices until the mesh deforms in the
way you want. Something to bear in mind with blended skins in NWN is that only 4 bone
weights per individual vertex are supported.
So tread carefully or horrible things will happen.
Finally, let me add my own observations about skinmesh:
10. PC Skinmesh
Refer to the tutorial on PC creatures for details on how to set up a PC model. If you want
to use a skinmesh as part of a PC model, there are some rules you must follow:
•
Parent the skinmesh(es) directly to the Aurabase object. The bones must follow the
usual hierarchy so that they animate properly but the skinmesh ties directly to the
Aurabase. This is because the skinmesh is not transformed directly by the animations
– it is transformed by its dependency on how the bones move.
•
Any bones weighted into the skinmesh must appear before the PC nodes in the
model hierarchy (more specifically, before the geometry-based PC nodes – it is okay if
the bones appear after pure nodes like headconjure, handconjure, and
rootdummy). Because of this, you cannot use a skinmesh in place of a PC
component piece – it must be part of the main model pfx0 or pmx0. The hierarchy
that works best for me is:
Base object
- Headconjure
- Handconjure
- Skinmesh(es)
- Rootdummy
- Bones
- PC model nodes
If you break this rule, you will get strange behavior where some nodes of the
skinmesh get caught up in your geometry nodes and stretch out of proportion.
How did I discover this? Blind luck. I happened to do my first model in this order
so it worked. I did my second in a different order and it did not work. It took some
detective work to figure out why. Here is the Wemic hierarchy chart:
<
<
First let me define what I mean by a custom race: a custom race refers to a creature that you can
play as a PC or use as an NPC. Custom races were not really possible until recently. To be more
specific: you could create unique Non-Player Characters but not real custom races for Player
Characters.
For example, it has always been possible to create a custom monster model and use that model
in a module as an NPC. The problem occurs when you try to use that model for a PC. The issue
is that many of the features of the game engine’s character creation screens are hard-coded and
not accessible to the end user. Some people have worked around this problem by using the
SetAppearance() command from the counsole but this is kludgy at best.
Halfelf and CODI have now released the NWN Character Creator (CC)
(http://nwvault.ign.com/Files/other/data/1050041596353.shtml), a program that solves this
problem. This is a terrific utility that essentially duplicates the functions of NWN character creator
but it is fully driven by .2da files and features are not hard-coded. This allows you to add your own
races with their own special feats and abilities and their own model files.
:
<
<
5
I won’t talk about how to use the Character Creator
any more than I discuss how to use the Aurora Toolset
– you can find those details in the CC documentation
that Papermonk has written. But I will talk about the
files you need to make it work.
Warning
•
You need to change dialog.tlk. I know this is a bad thing™. But there is no
alternative until Bioware comes up with
a way to add new text strings into the
game some other way.
•
Sometimes you get odd behaviour in
the character selection screen if you
are using custom races in multiplayer
mode. This is an inconvenience but
does not affect the way the creature
works in-game.
You can create custom races in several ways:
•
Races that use existing models (like a Drow elf
using the standard elf model),
•
Races that use entirely new models (like a
Wemic).
Start by defining your race in appearance.2da if it isn’t
already there. All of the rules I discussed for creatures
in the previous section still apply. In our example, we are going to set up the giant crab as a
playable PC. I mean, c’mon, everybody has dreamed of playing as a giant crab, haven’t they?
<
1-
Next we set up the racialtypes.2da file to properly define our new race.
Column
Description
Values
The first column is the set ID
This must be sequential; CC gets
upset if you skip numbers.
LABEL
The label for the creature.
Typically set to the creature’s name.
Abrev
This is a 2 letter abbreviation of the
name. It should be unique.
Name
This refers to the proper name of the
creature (start with an uppercase
This is a dialog.tlk reference number.
<
Column
Description
Values
letter). In our case Crab.
ConverName
This is the conversation-name; how
would you refer to the race if
something was made by them? Turn
the name into an adjective. This
would be Dwarven if it was a dwarf.
But in the case of our crab, it remains
Crab (Crabbbish? Crabby? Crabben?
Crabilish?). It starts with an
uppercase letter.
This is a dialog.tlk reference number.
ConverNameLower
This is an entirely lowercase version
of the previous.
This is a dialog.tlk reference number.
NamePlural
What do you call a group of your
creatures? In this case, Crabs. It
starts with an uppercase letter.
This is a dialog.tlk reference number.
Description
This is a description for the race. It
should describe what the race is like,
its feats and abilities.
This is a dialog.tlk reference number.
Appearance
This refers to the line of their
appearance resource entry in
appearance.2da. This can refer to an
existing model or to a new one.
StrAdjust
DexAdjust
IntAdjust
ChaAdjust
WisAdjust
ConAdjust
These lines all define the statistic
modifications.
These can be positive, negative or
zero for no adjustment.
Endurance
Racial endurance value.
Medium critters get a base of 30,
small (e.g. Halflings) have 20.
Favored
This is the favored class. I think most
crabs are closet monks.
This is an index into the classes.2da
resource file.
Feats Table
This refers to the feats table for the
race.
You need to create a custom feats
table. The naming standard should be
RACE_FEAT_<a short abbreviation
for your race of 4-6 characters>. For
example, RACE_FEAT_WEMIC.
Biography
This is a short blurb about why the
character left home to be an
adventurer, etc.
This is a dialog.tlk reference number.
PlayerRace
Is this a player (PC) race.
0 for no
1 for yes
Constant
This refers to the constant used in the
nwscript.nss file.
Format is typically
RACIAL_TYPE_<short abbreviation
of your race>
Age
This is the starting age for the
In years.
!
<
Column
Description
Values
character.
ToolsetDefaultClass
$
This is the default class when you hit
Recommended for a character’s
class.
Interestingly in the default
racialtypes.2da, Bioware has set all
the races to fighter (value 4). In
CODI’s version (the one that comes
with CODI’s pcpack.hak, they make
this the same as the Favored Class).
#
Now that you have set up racialtypes.2da, go and create the corresponding entries in dialog.tlk
using a tlk editor. Yes, I know. Nasty business, that.
<
5
The next table you may need to set up is to specify any racial feats your character may have. You
can either re-use an existing table (for example, most elven sub-races have the same feats as a
standard elf) or create a new one. This is the Drow racial feats table:
0
1
2
3
4
5
6
FeatLabel
immunitysleep
hardinessenchantment
skillaffinitylisten
skillaffinitysearch
skillaffinityspot
keensense
darkvision
FeatIndex
235
236
237
238
239
240
228
The one difference between the Drow and the standard elven races is that the Drow has
darkvision in place of low light vision. This is a new 2da file that you must create if you can’t reuse an existing one. The naming standard for these tables comes from the racialtypes.2da
file, the Feats Table column. There are three columns:
Column
Description
Values
The first column is the set ID
This must be sequential; CC gets
upset if you skip numbers.
FeatLabel
The label for the feat.
Typically set to the feat label from
feats.2da although sometimes it is
different. It does not seem to matter.
FeatIndex
The ID of the feat.
From feats.2da.
To create this table, map the feats of your new race to the ones available in feats.2da. In some
cases the corresponding feat will not exist because it has not been implemented in the game
engine and you will have to do without. In other cases you may need to compromise and find a
similar feat.
<
-
"=
The last table represents special racial abilities. This allows your Drow to actually cast darkness
or your half-dragon to use a dragon’s breath weapon. Again, it is a new 2da file. The naming
&
<
standard for this file is the same as the racial feats file with spec in place of feat:
race_spec_<short name for race>.2da. Again, here is the Drow:
SpecLabel
Darkness
FaerieFire
0
1
SpellNumber
36
415
SpellFlags
1
1
SpellLevel
3
1
There are five columns:
Column
Description
Values
The first column is the set ID
This must be sequential; CC gets
upset if you skip numbers.
SpecLabel
The label for the special ability.
Typically set to the spell label from
spells.2da.
SpellNumber
The ID of the spell.
From spells.2da.
SpellFlags
If true, the spell is automatically
enabled for the character on spawn. If
set to false, the character must rest
first.
0 for false
Effective level at which the spell is
cast.
Must be 0 for creature abilities.
Otherwise set it to the caster level at
which you want the spell to be cast.
SpellLevel
1 for true
To have a special ability that can be used multiple times before rest, add multiple entries to this
table. To create this table, map the special abilities of your new race to the ones available in
spells.2da. In some cases the corresponding spell will not exist because it has not been
implemented in the game engine and you will have to do without (or create it using the techniques
in this tutorial). In other cases you may need to compromise and find a similar spell.
??
3
6 37
Refer to the Character Creator documentation for other information on specializing your race
including setting ECL, custom skins, etc.
:%
$1
.
Now that we have defined our crab as a custom race, let’s talk briefly about a special kind of
model: dynamic character models. A dynamic model is one where you can drop new armor,
helmets, and other items into the correct slots of a character’s inventory and (s)he will
automatically don them. Contrast this to a ‘static’ creature, like our crab, that cannot wear armour
at all. The crab’s appearance does not change in the game.
Suppose I want to create a dynamic creature – like a Wemic. Not everybody is happy playing as
a crab (personally I don’t know why not!) What is different about a dynamic model? Let’s start
with an experiment. Create an elven NPC using the Aurora toolset. Edit her properties and open
her inventory. Now change her armor by assigning a new set of clothes into the armor slot. Close
the inventory screen and notice her appearance has changed.
Now create an NPC using the Aribeth model in the Aurora toolset. Change her armor on the NPC
inventory screen. Notice that this time the armor does not change in her appearance.
<
•
&
'
9
78
7 8 !5
#
#
@
Why do they behave differently? Let’s open the model files directly and you will see why. Extract
aribeth.mdl using NWNViewer. Open it up and take a look. Aribeth is a creature like any other
creature (our crab, a demon, etc.). Some of the NPCs are created as static models (including
Aribeth and Sethos) while others use the PC model base.
So what is special about the PC model base?
Extract pmh0.mdl using NWNViewer. Open it up and take a look. It consists of a series of
dummy nodes, one for each armor piece (head, neck, torso, left bicep, right bicep, etc.). There is
no geometry in this file!
/
<
Note
•
There actually is geometry in the
female human model pfh0.mdl. For
some reason the rootdummy node is
not a node but a small cube with a
texture and everything. I think this is an
oversight. But it still works the same.
In the Creatures section we talked about creatures as a hierarchy of linked objects that are
animated to build our final model. That is how Aribeth was built. However, in the section on
armor, we talked about PC’s as individual parts (remember pmh0_chest001, etc.?). How do PC
models work when you contrast all of these individual parts with the single, linked model that
makes up a creature?
The answer is that they are one and the same. When NWN is building your character it takes the
nodes in the PC model file and substitutes in the armor
Warning
parts (corresponding to the type of armor you are
• You have to put a copy of your base
wearing). The nodes tell NWN where to put each part by
PC model in your /override directory.
aligning the pivot point of your armor part with the origin
There is currently a bug in NWN (as of
of the corresponding node. The nodes are linked into a
v1.29).
If you don’t do this, the game
hierarchy just like the objects in a normal creature
will freeze whenever you save and then
model.
try to reload a game using a custom
race.
Think of these PC models as roadmaps that tell NWN
how to tie all of the PC model parts together into a single
creature - a template for where each piece must go. That
template has the name (oh-oh, here we go with naming standards again) pxy0.mdl where
x = m (male) or f (female),
y is the abbreviation for the race (e.g., h for human), and
0 represents the phenotype (standard). You don’t need to create a 2 version (large phenotype)
because the game uses the same template for standard and large.
.
B
Now for the fun part: you actually can put geometry in this file. I created a Wemic as a PC model
by deleting the lower leg nodes (pelvis, thighs, shins and feet) and then substituting into the
template the actual geometry for a lion’s body (minus the lion’s neck and head) and then linking
all of the parts together. When you change the Wemic’s armor it only changes the appearance of
2
<
the upper body (the part where I left the nodes in place). In fact, the Aurora toolset is smart
enough to realize that there are no leg nodes so it does not even give you the option of changing
these.
•
&& '
#
78 #
In the case of the Wemic, this is a little tricky: the Wemic uses a skinmesh and skinmesh models
are special when it comes to working in the game. The key is that the skinmesh bones must
appear in your model’s hierarchy before any PC nodes – refer to the notes about skinmesh
models in the previous section for more on this. Also, it does not seem to be possible to use a
skinmesh as a dynamic part – by definition a dynamic part is one of the PC nodes so your
skinmesh cannot satisfy that condition. In any case, the outcome when you break this rule is
clear: the skin becomes distorted and pulled around an inappropriate node in the model when
viewed in-game. You will know it when you see it.
+
Here is the process for building a dynamic model (a Wemic):
1. Create the model
In this example, start with the basic Lion model (cat_lion.mdl) and the individual parts for
a static human NPC model (in other words, create a static model – either from scratch or
from existing models). Follow all the instructions in the Creatures tutorial to develop the
model, animations and textures on this base.
2. Make the model dynamic
Next make the model dynamic by swapping in the PC half-orc nodes for the model’s
upper body. This may seem counter-intuitive: the human and half-orc models are
interchangeable? They are! The biggest difference is that the the proportions are slightly
off but remember from the Creatures section that most of the animation keys are
rotations so the proportions of the model don’t count. The one exception to this is
9
<
rootdummy which includes translations. However, as long as the lion’s lower body does
not change, the rootdummy translations continue to work fine. I switched to a half-orc
because the Wemic’s lower body looked too big for the human. Save the PC model as
pmw0.mdl.
3. Create the armor components
Now you have a dynamic model but no armor parts to swap in and out for it. What to do?
Copy the half-orc armor parts. There are hundreds of them. I copied them and used the
NWN Tileset renaming utility but now you can use NWNArmory to rename them internally
and externally from pfo0_<partname>.mdl and pmo0_<partname>.mdl to
pfw0_<partname>.mdl and pmw0_<partname>.mdl. Normally you would make
these for the large phenotype as well. I chose not to do this though because the large
phenotype looked really wacked on the Wemic body.
You must create armor parts corresponding to each of the standard models – if you don’t
and somebody drops unsupported armor into the inventory of your new character, your
character’s body parts will disappear.
4. Make the female version
When you have the male working, create a female version of the base PC model. In the
case of the Wemic, the primary difference is that the female’s nodes are closer together,
the lower body is smaller and of course it has a different tail. I used the female half-orc
PC model as a starting point for this again because it has all the nodes in the right place.
That is all that you have to do. You do not need new textures for each armor part (I only used one
new texture and that is for the lower body) because all of the armor pieces use the human,
standard phenotype PLTs as discussed in the section on armor.
A couple of final notes:
•
If you are creating a dynamic character model, you need to set “NAME” to “Custom_model”
and “RACE” to the single digit character of the race in your PC model name as it is set up in
appearance.2da (e.g., ‘h’ for human, ‘w’ for the Wemic).
•
If your model does not match the dimensions of one of the existing characters, you will need to
create entirely new models for the hundreds of armor parts. In some cases you can do this by
scaling existing armour parts (say, lengthening the elf model parts along the z-axis to make a
githerzai). I’ve developed a scaling utility (NWNArmory) that automates much of this process.
If your model does not match an existing race at all (say a PC spider with customizable armor),
you will need to match the node names to the standard PC names as best you can (it is okay
to leave some out) and then provide custom armor parts for each of the standard armor
pieces. A tremendous amount of work. The good news is that many of the current armor parts
are not unique – they are based on a common set of models with new PLTs. So instead of
having to do 1,000 new pieces, you may get away with only 200 new pieces (what, doesn’t
having to do only 200 new models make you feel better?). Or something along those lines.
) "
1
In the section of this tutorial on armor I talked about my new tool, NWNArmory. This tool can be
used to take an armor piece for one race and create all of the other racial versions. Even better if
you want to create a PC race, it can take all of the standard Bioware models and create the
pieces you need for a new race.
Let's say you want to create a brand new race. Maybe it will be slightly taller and skinnier than an
elf (a githerzai, say). There are hundreds of model pieces out there if you want your new race to
be able to wear all available types of armor. But you can tell NWN Armory how your new race
!
<
differs from one of the standard races (say an elf) and it will transform those hundreds of pieces
for you.
How do you make it work?
1. First, you need to decide how your new race will differ from an existing race. In the case of the
githerzai, extract all of the standard elf parts. Now choose the unclothed parts (the ‘001’
models). Using your modeling tool, decide how much to stretch these parts across the x, y and
z axes to create your githerzai’s dimensions. Write those transforms down.
2. Now create a transform initialization (.ini) file and copy this into NWNArmory.ini. The .ini file
consists of a series of transform groups. Each group consists of a match string (you tell NWN
Armory which models this group applies to), a substitute string (you tell NWN Armory how to
rename the model based on the original name), and the definition of the transform for that
group. In the transform you essentially tell NWN Armory how to scale the original model (x, y
and z-axis scaling factors) and how to rotate it (about the x, y, and z-axis respectively). Refer to
the help file of NWNArmory for details on how to do this.
3. Then you fire up NWN Armory and tell it to use all of the elf part models as base models (you
may want to do this in several passes because there are lots of them).
4. Tell NWN Armory where to put the transformed models.
5. Go. What this program will do is compare each input file against the list of transform groups
you gave it. Where there is a match, it will rename the model and apply the transforms you
specify, and save the resulting model in the output directory.
!
*
*
??
??
So you want to create your own visual effects? I talked about innovative ways to get NWN to do
things it was never designed to do. Visual effects can be used to great success in this area. They
have already been used to give creatures wings, to provide a sort of horse-riding feature, and
other ideas. So let’s talk about how we create visual effects.
Let me start by describing what a visual effect is. It is, like many other things in the game, a 3D
model. The interesting part is that it can be any type of 3D model. Many visual effects are
emitters – representing a particle system in NWN. Emitters can be used to produce clouds,
smoke, fire, lighting and other special effects. Visual effects models can also be normally
rendered 3D models. This is what makes them so versatile.
You invoke a visual effect in the game in different ways.
•
You can place a visual effect directly in your module (used to create a dust plume, for
example).
•
Some are tied to spells (remember the audio and visual effects we discussed in
spells.2da?)
•
You can also call up visual effects through scripting, tying them to creatures or objects.
There are two main types of effects to keep in mind:
•
Duration Effects – these last for a specified length of time (you specify the duration).
•
Fire and Forget Effects – these are fired off, they run through their animation, and they go
away automatically (duration is specified in the model file).
So we want to create a new effect. It is going to be a waving seaweedy thing similar to the wavy
pseudopod namesake of Evard’s Black Tentacles. There are really two things we need:
1. a visual effect model file
2. an updated visualeffects.2da file to tell the game about the new effect
Where do we start? With something similar to what we already want, of course!
:%
.
5
There are, of course, naming standards for visual effects. These aren’t strict naming standards
but some effects look like this:
Duration Effects
•
VFX_DUR_*
(Duration)
•
VFX_BEAM_*
(Beam)
Fire and Forget Effects
•
VFX_COM_*
(Combat)
•
VFX_FNF_*
(Fire and Forget)
•
VFX_IMP_*
(Impact)
!
*
??
There are other naming standards for special effects tied to spells. Browse through the special
effects reference guide at the end of this tutorial for details on those.
Like most other models, the name of a VFX model should not have more than 16 characters. You
can find the Bioware VFX models in models01.bif. Open up NWNViewer and export the model
for Evard’s Black Tentacles (VPS_TENTACLE.mdl). Now open the model in gmax.
Note that VFX models have 3 – and only 3 – animations:
•
impact (plays at start of effect)
•
duration (looping)
•
cessation (plays at end)
They can have any of the components or features of a regular model (multiple parts, etc.) When
you create the Aurabase object, set the classification on the edit rollout to “Effect”.
:
In the case of our seaweedy thing, our model has a series
of emitters. However, emitters cannot be used directly in
Gmax – Wayland’s scripts don’t import or export emitters.
This is why the VPS_TENTACLES.mdl file looks pretty
empty.
Note
•
Much of this information on Emitters
was compiled by Danmar.
However, there is a workaround for this and it is important to understand emitters because so
many visual effects use them. The key observation to make is that emitters are just custom
nodes. They are nodes in 3ds Max that have custom-defined attributes tied to them – nothing
more, nothing less. The reason you cannot use them in Gmax is simply that Wayland’s scripts
were not written to import or export them. The 3ds max scripts can read and write emitter files.
However, because emitters are just custom nodes, you cannot actually view the effect in 3DS
Max. All you can do is change the parameters.
So let’s open up the file in 3ds max. It looks like this:
If you select one of the arrows you will see that it is an emitter. The edit rollout looks like this:
!
*
•
&) '
#
#
!!
??
*
??
If you wanted to add a new emitter in 3DS Max you would go to Helpers, change the dropdown to
MDL Suite and select Emitter. On the edit rollout you can change the detailed characteristics of
the emitter. These are the characteristics that you can modify:
Attribute
–
Meaning
Values
Styles
Update
(update, update_sel)
How the emitter is updated with
new particles.
Fountain - a constant flow of
particles based on the other
settings. This is used for smoke,
flames, water and etc.
Explosion - occurs when an
animation has a detonate event set
on a frame. This is used mainly to
'blow something up – to blow it up
real good'. An explosion emitter
generates one pulse of particles
based on the other settings every
time the detonate event occurs. To
add a detonate event skip over to
where you want it to occur in your
animation. Under the animation
settings on the model base, add an
event on the frame where you want
the pulse to happen. Use 'detonate
(not sure if CaSe matters but lower
works).
Single - creates a single particle at
the center of emitter instead of
spouting out multiple particles over
time.
Lightning - (assumption) generates
a lightning effect with the particles.
!&
*
Render
How to render the emitter.
(render, render_sel)
Determines how the particles are
sent into the world.
??
Normal - a simple render of the
emitter effects.
Linked - rotates particle so the end
of each particle will touch the start
of previous particle. This can be
used for rope-like effects – a very
good example of this is one of the
spells distributed with model
viewer, with dusty pit surrounded
by a few vines.
Billboard - means that the particles
are aligned with 'something'.
Usually in 3D animation this is
used so that you can get a good
effect without a lot of polygons.
Example rather than creating a
model for a particle, you map a
bitmap to a flat plane and set it to
always face the camera. You can
get the same effect as a modeled
particled but it saves on polys and
you don't have to worry about it
turning sideways and revealing its
2D status.
Aligned - I assume does what it
says, makes sure the particles
don't rotate or come out in the
same way. It is possible to use this
for something like a dart trap VFX
because you would want all the
darts to come out the same way.
Blend
(blend, blend_sel)
Describes how to blend the
particles with the rest of the
scene.
Normal – does no blending.
Lighten - used with alpha masked
particles such as smoke or flame. If
you just put them as normal they
would appear like big, obvious
particles. Lighten takes the particle
and uses its colors and alpha to
XOR with the objects between it
and the camera and generally give
you a more realistic, ephemeral
effect.
Rule of thumb use Normal for
'chunk' emitters and Lighten for
smoke, mist, fog, water.
Spawn Type
(spawnType)
–
Icon Size
Describes how the particles are
spawned.
Parameters
Affects the display size of the
!
Normal – does no blending.
Trail – Presumably spawns with a
trail following the effect.
*
??
emitter helper object. This has no
impact in-game.
Emitter Size
Yields the size of the area that
generates the particles.
(xsize, ysize)
Inherit properties
(inherit, inherit_local,
inherit_part, inheritvel)
Miscellaneous
This tells the particles to inherit or
assume certain properties of the
emitter.
If you check inherit, the particle
emitter should move with whatever
object it is parented to.
If you check velocity, if the particle
emitter is moving the particles will
inherit that velocity and add it to
their own velocity. This can be
used to create a trail of particles
left behind by something moving.
Note that for this to work it requires
a huge number of particles or you
get individual 'puffs' of particles.
No idea.
(deadspace, threshold,
combinetime,
renderorder)
–
Particles
Color
(colorStart and
colorEnd)
The color the particle starts out
as and ends as.
For example, to build a smoke
effect, you would set the Color from
white to gray, the alpha to start
high and go to 0, size to start low
and go high. This would have the
smoke come off the fire white and
small and as the particle aged it
would get darker, more transparent
and larger to simulate the cooling
off of the smoke and it being
spread out.
The RGB colour values of the
effect are decimal values in the
model file so divide each of the
RGB values by 256.
Alpha
(alphaStart and
alphaEnd)
Size
(sizeStart, sizeEnd,
sizeStart_y and
sizeEnd_y)
Birthrate
(birthrate)
Life expectancy
How transparent the particle is at
start and end.
How big the particle is at start
and end.
How many particles are born in X
units of time.
How long the particle lasts in X
!/
*
??
(lifeExp)
units of time.
Mass
Does it fall down and how fast.
If the mass is positive gravity will
pull the particles down. If it is
negative they flow upwards.
How far do the particles spread
or what's the range of their angle
of departure.
An angle of 10 means a very thin
cone. An angle of 180 means all
directions.
Does the particle rotate as it
leaves and how much.
A high number for a chunky emitter
would have the chunks flipping end
over end.
(mass)
Spread
(spread)
Particle Rotation
(particleRot)
Velocity
How fast does the particle leave
the emitter.
(velocity)
Random velocity
(randvel)
Bounce Coefficient
(bounce_co)
Blur length
What is the variation range based
on the velocity.
A velocity of .5 and a random
velocity of .2 yields a particle that
will have a velocity of .3 to .7 when
it leaves the emitter.
How much does the particle
bounce. You wouldn't want your
smoke to bounce but a fountain
of superballs should bounce
rather well.
How much motion blur is created
for the particles.
(blurlength)
Loop
Not sure
(loop)
Bounce
Makes particles bounce
(bounce)
Tinted
Particles that are texture mapped
will be tinted the start and end
colors. Much like you change the
color of skin or armor. The
underlying texture will remain but
it will be shifted towards the start
end colors.
(m_isTinted)
Splat
Not sure, at a guess means the
particle doesn't bounce period.
(Splat)
Affected by wind
(affectedbyWind)
–
Texture
(texture)
Two-Sided
The particles will inherit velocity
from wind speed in areas that
have wind.
Texture and Chunk
What texture is mapped to the
particle or what model is used
instead?
This would avoid the particle from
disappearing when it rotated
!2
A standard 32-bit tga file.
*
(twosidedtex)
because there was nothing on
the back side. It allows you to
keep the particles simple.
Animation – Grid Width
and Grid Height
The animation settings let you
create a texture image consisting
of a grid of multiple, equally-sized
frames. The width and height
numbers tell the emitter how the
grid is laid out.
(xgrid, ygrid)
Animation – Speed
(fps)
Animation – First
Frame, Last Frame
(frameStart
and frameEnd)
Animation – Random
Playback
(random)
Chunk
These have interesting effects on
the particles and how they're
generated. For example, playing
around with this you can get a
circular whirlpool effect.
During a particle's lifetime, it will
animate through the frames of
the animation. The Speed setting
tells the emitter how quickly to
animate them.
Tells the emitter which frame to
start and end on during the
animation cycle.
Will cause the emitter to choose
random frames during playback
instead of cycling through them in
order.
The model or chunk that's used
for the particle rather than a flat
poly.
(chunk)
–
??
Advanced
Lightning properties
No idea.
(lightningDelay,
lightningRadius
,
lightningScale)
Blast properties
No idea.
(blastRadius,
blastScale)
P2P properties
No idea.
(p2p, p2p_sel,
p2p_type,
p2p_bezier2,
p2p_bezier3,
drag, grav)
You can animate some of these properties so that they change during the course of the animation
playing (e.g., birthrate). You’ll have to play around with them to test which ones can be animated
and which cannot.
So what is the magic workaround I promised for Gmax users? It is this:
!9
*
??
1. Open your model in Gmax.
2. Insert a simple node where you want the emitter to be (in the Create tab, select the Helpers
button and create a dummy node). Give it a unique name.
3. Make sure you have an Aurabase object. Link the dummy node to it or to an object that is
linked to the Aurabase (otherwise it will not export in the next step).
4. Save your model.
5. Select the Aurabase object and export the model.
6. Now open the resulting model file. Look for a line like this:
node dummy <whatever you called your dummy node>
parent vps_tentacle
position 0 0 -0.065378
orientation 0 1 0 -3.14159
wirecolor 0.425781 0.425781 0.425781
endnode
7. Replace the first line with:
node emitter <whatever you called your dummy node>
8. Insert the following text right before the endnode line:
colorStart 0 0 0
colorEnd 0 0 0
alphaStart 1
alphaEnd 1
sizeStart 0.1
sizeEnd 0.01
sizeStart_y 0
sizeEnd_y 0
frameStart 0
frameEnd 0
birthrate 0
spawnType 0
lifeExp 1
mass 0.1
spread 0
particleRot 0
velocity 3
randvel 0
fps 0
random 0
inherit 0
inherit_local 1
inherit_part 0
inheritvel 0
xsize 0
ysize 0
bounce 0
bounce_co 0
loop 0
&
*
??
update Fountain
render Linked
Blend Normal
update_sel 1
render_sel 2
blend_sel 1
deadspace 0
opacity 0.5
blurlength 10
lightningDelay 0
lightningRadius 0
lightningScale 0
blastRadius 0
blastLength 0
twosidedtex 0
p2p 1
p2p_sel 2
p2p_type Gravity
p2p_bezier2 0
p2p_bezier3 0
combinetime 0
drag 0.8
grav 3
threshold 0
texture fxpa_vine2
xgrid 1
ygrid 1
affectedByWind 0
m_isTinted 0
renderorder 0
Splat 0
9. Use the descriptions above and this template to set your own emitter values.
10. Save and close your model.
11. Keep your fingers crossed that you did it right.
For my example I’m going to turn the emitter upside down and then change the texture to be
more like seaweed than a black tentacle. I’m going to use this base and attach it to the upper
body of a dryad to make a Kelpie. More on that in the next version of this tutorial.
:%
*
??
<
5
Now that we have created an emitter, we need to get NWN to recognize it. Like other custom
content we do that with a resource file (.2da). VisualEffects.2da describes which visual
effects are available. This is a breakdown of all the column headings for visualeffects.2da.
Column
Description
Values
The first column is the ID of this entry
Label
The internal name of the effect.
Type_FD
The type of effect.
F = Fire and forget
&
*
Column
Description
??
Values
D = Duration
OrientWithGround
Orient the effect with the ground
plane
All Bioware effects are set to 0.
0 = False
1 = True
Imp_HeadCon_Node
Imp_Impact_Node
Name of the effect model that will be
animated at the appropriate node.
Imp_Root_S_Node
Imp_Root_M_Node
Imp_Root_L_Node
Imp_Root_H_Node
ProgFX_Impact
A number referencing an internal
programmed effect upon impact of
the spell with the creature. These are
effects for which there is no model
and they are used to create special
effects such as invisible, ethereal,
stoneskin, etc.
SoundImpact
A sound file played at start of effect.
ProgFX_Duration
Duration for which the programmed
effect plays.
SoundDuration
A (usually different) sound file that
plays throughout the duration of the
effect.
ProgFX_Cessation
Programmed effect that is applied at
the end of the effect.
SoundCessastion
(sic)
A third sound file that plays at the end
of the effect.
&
These effects will play respectively at
the Head node (just at the top of the
head on most models), the Impact
node (near the center of body in
front), or the rootdummy node for
different sizes of creatures. Bioware
does not use S but these are for
Small, Medium, Large, and Huge
models respectively.
From the soundset.2da file.
From the soundset.2da file.
From the soundset.2da file.
*
??
Column
Description
Values
Ces_HeadCon_Node
These appear to be effects that would
be played at the end (cessation) of
the effect. However, Bioware doesn't
use them and nothing appears to
happen when tested.
****
ShakeType
Should the effect shake the screen?
0 = No
1 = A quick bump
2 = A timed effect using the next 3
parameters.
ShakeDelay
Delay in seconds before start of the
screen shake
ShakeDuration
Duration of the screen shake in
seconds.
LowViolence
A programmed effect number is used
instead of the combat blood models
for Low Gore video settings.
These are only used by Bioware for
the combat blood spattering (all
colors).
LowQuality
An alternate, less detailed effect
model for low quality video settings.
These are typically used for lower
quality explosions and other fancy,
CPU-intensive effects.
Ces_Impact_Node
Ces_Root_S_Node
Ces_Root_M_Node
Ces_Root_L_Node
Ces_Root_H_Node
Now open up nwscript.nss. This is where the predefined constants are. Add a new constant for
your new visual effect by finding the list of effects and add your entry. For example, it typically
looks like this:
int VFX_DUR_DARKNESS = 1;
Just list the name and your entry number from visualeffects.2da.
&
8
8
%
%
The goal of this custom content guide is not to be a definitive reference for every conceivable
item and object that you might create in NWN. What I have attempted to do is address the objects
that were not covered in other tutorials, or were outdated or unclear in the ones I could find. In
other words, the objects that I struggled to understand. With that in mind, what I am including
here are references and links to tutorials that I think do quite a good job of explaining certain
mysteries of content creation. But don’t take my word for it – explore them yourself.
" =
.
6+. ; ?
7
Ambient music applies to an entire Area of a Module. To add ambient music you must set up a
BMU (Bioware Music Unit) file and place it in the /music directory of your game installation.
Similar to a PC Portrait, you cannot put an ambient music file in a hakpak. Follow the instructions
on Bioware’s community site (http://nwn.bioware.com/builders/sounds_bmu.html).
Interestingly, you still need to update ambientmusic.2da so you still need to distribute at least
one file in a hakpak.
As of version 1.26 of NWN, Bioware added a new column to ambientmusic.2da –
DisplayName. If the Description column contains ****, then the Toolset will use the text in
DisplayName for the name of the file. This is how labels in .2da files should work!
There is a utility for changing an MP3 file to a BMU
(http://nwvault.ign.com/Files/other/data/1032456985150.shtml) file on NWVault (it simply changes
the first 8 bites of the file). Drop the executable in a directory and double click on it. Use … to set
the folder for your source mp3 files or .bmu files, and then select the files to convert. You can
convert them in either direction.
•
&*
7
: "
9
If you are looking for information on how to score and record your own music, I am told that you
will need the following:
•
A good general midi keyboard/sampler and library of digital instruments
•
Protools on Mac (LE is free) or Acid Studio Pro on PC (for a cheaper alternative try
FruityLoops for the PC)
•
Sound Forge to fine tune your sound files when done (if you want a cheaper alternative
try CoolEdit).
&!
8
%
If you don't want to actually create your own sounds and want to just mix in music to create
something new then look for sound loops (sonicfoundry.com). You may find a lot of the unsigned
artists on www.mp3.com receptive to the idea of their music being used in a video game (don’t
use their work without permission). On mp3.com there are a series of genres
(http://genres.mp3.com/music/genres.html) that you may want to look at (try medieval or Celtic
themes for example).
"
3
If you want to update the load screens between Areas of a module, try Pasus Naruan’s Area
Load Screen Creation Kit (http://nwvault.ign.com/Files/other/data/1031186858936.shtml). It
includes templates and a tutorial.
$
Here is a tutorial on creating custom doors
(http://nwvault.ign.com/modules/tutorials/MrX/door_tutorial_new.shtml). It explains the types of
animations you need, how to create DWK meshes (door walk meshes), and pretty much
everything you need to know. This is an advanced tutorial: it assumes you already know the
basics of modeling, animation, and texturing.
1.
A starting movie can really set the tone and feel for a module. To add an introductory movie to
your module, follow the instructions on Bioware’s community site
(http://nwn.bioware.com/builders/movie_tutorial.html).
The tutorial requires several different software packages than have been described in this
document:
1. Microsoft Powerpoint or another program that can display slideshows.
2. A screen capture program that can create .avi files.
3. A tool to convert .avi files to .bik files.
=
This is a tutorial on Creating Simple Placeables
(http://nwvault.ign.com/Files/other/data/10328418
67324.shtml) that builds a tree model and explains
shadows, PWK meshes (placeable walk meshes
that keep people from walking through your
placeable like it doesn’t exist) and other concepts.
Warning
•
This tutorial does not talk about animating a
placeable. Now that we have done animation for a
creature, placeable animations are a breeze.
There are 7 placeable animations:
If you put an alpha texture on a
placeable, the texture itself will not cast
shadows. To get the placeable to cast
shadows, create an object (typically
with a simpler geometry corresponding
to the shadow you want), set it nonrenderable, and plunk it down over top
of your regular object.
Animation Name
Description
Damage
Plays when the object is struck and damaged. For most objects it
is a simple shiver.
Default
The animation that occurs all the time unless turned off in the
toolset or through a script command. Normally there is nothing in
&&
8
%
the default animation (reduces load on the CPU).
Dead
Plays when the object is destroyed. Usually it is dropped below
ground level to get it out of sight while, at the same time, an
emitter throws chunks of stuff into the area and creates
explosions.
On
Animation that plays when the object is ‘on’
Off
Animation that plays when the object is ‘off’
On2Off
Animation that plays when the object switches form on to off. For
example, levers go through this state when switching from on to
off.
Off2On
Reverse of On2Off
Note that placeables do not usually move. What if you want a placeable that can (say, a cart)? It
is quite easy - you don't need any animations in the file at all. Take your cart and rename it as a
creature (c_cart). If it is a compiled model file you can just rename the file. Otherwise you will
need to change the internal model names as well. Edit the appearance.2da file to add the cart
as a creature (refer to the tutorial on creatures for details). Set the movement column to 0 (no
movement) or else the creature will jump around during combat when attacked.
=
6) "* ?
7
A placeable sound is one you add to an area in your module. It can be set up so that it is only
noticeable within a certain range or it can apply to the entire area. To add a .wav file to your
module, follow these instructions on Bioware’s community site
(http://nwn.bioware.com/builders/sounds_wav.html).
It is not necessary to update ambientsound.2da file in NWN for your placeable sounds
because NWN lets you add sounds directly from a hakpak. I believe .mp3 files work for placeable
sounds as well although I have not tested them myself.
% 4
While I did say this is a tutorial on NWN content and not a general guide to modeling or texturing,
here are a few useful links on texturing. This first is from Martin E and is written specifically for
NWN. It consists of a series of tutorials that take you from basic information about image files
through to the details of Alpha channels and textures:
http://www.i.nation.btinternet.co.uk/tutorials/tutorial_00.htm
Here is a tutorial on texturing hair
(http://www.planetquake.com/polycount/cottages/bladekiller/hairtut.htm) from PlanetQuake
Qbranch (http://www.planetquake.com/polycount/cottages/qbranch/) is also from PlanetQuake
and has tutorials on texturing and making cloth, metal, etc.
%
Bioware’s has recently released the Neverwinter Tileset Construction Tutorial
(http://nwn.bioware.com/downloads/max_tileset.html). This gives detailed examples on tileset
creation. There is also a good tutorial on Creating Custom Tilesets From Scratch
(http://nwvault.ign.com/Files/other/data/1034000197879.shtml). Be forewarned: it is a long and
&
8
%
arduous process to create an entirely new tileset. Most people have been content with adding a
few new tiles to an existing tileset.
Tilesets have a different set of animations (again, since we did creature animation in a tutorial,
this small number of animations should be a breeze):
Animation Name
Description
Animloop01
One of two animations you can trigger through scripting. This is
used for smoke and swaying signs a lot.
Animloop02
Same
Day
Night
Animation that plays during the day or night, respectively
Day2Night
Animation that plays when day turns to night. This is often used in
buildings to move a plane with a lit window into place so that it
looks like somebody inside has turned on a light.
Night2Day
Reverse of above.
Tiledefault
The default animation. Typically only used for waterfalls, fountains,
etc.
Not covered in this tutorial but in Bioware’s tileset documentation (see below) you can find
information on .txi files which provide for environment mapping. However, if you are trying to get
an environment map on a placeable, it will not work. This seams to be another bug in the Aurora
engine. If you want to see Bioware's failure to get environment mapping to work on a placeable
look at their treasure placeable (the pile of coins). They specified that this placeable should use
an environment map in its texture's .txi file, but in the game it renders transparent.
There are some workarounds depending on what you want to do. For example, if you are looking
for a reflectivity environmental map, rtrifts suggests make the object a creature. It can have its
animation speed set to SLOW (Read Zero), or have its 2da set so that it is noninteractive and
does not move its head to track players. “Creaturizing” placeables is also a way to make sliding
crates, moving boulders and all sort of interactive scenery.
%
=1 <
4
There is also Tileset Retexturing for Dummies
(http://nwvault.ign.com/Files/other/data/1030966672399.shtml) and Tileset Retexturing for
Dummies 2 (http://nwvault.ign.com/Files/other/data/1031166293059.shtml). Another tileset
resource can be found with this Tileset Retexturing Tutorial
(http://www.hypercubed.com/games/nwn).
8
.
%
Danmar’s modeling tutorials
(http://nwvault.ign.com/Files/movies/categories/Modeling%20Tutorials2.shtml) cover custom
content for NWN. In my opinion, the best ones are on using the ChilliSkinner tool for texturing
(http://www.chilliweb.co.uk/chilliskinner/).
&/
5
8
5
I am including in this section notes on the contents of other .2da files that may be of value to
custom content creators. These may fit into a currently-unwritten tutorial section to be addressed
later. Or not. These are generally untested (by me, anyway).
5
The Feats.2da file is used to define new feats, their
requirements and how they show up in the game. Note
that this file does not actually include code for the new
feat.
There are three types of feats in NWN (I am classifying
them based on the way you activate the feats in NWN):
Hint
•
This is from a compilation by Roesone
and thallionstellani. I have not tested
feats myself.
•
The expansion, Shadows of Undretide,
may fix the radial feats problem. Keep
your fingers crossed.
1. Automatic feats or what I call “Combat” feats because
they are active all the time and take effect when
appropriate (like Improved Critical xxx feats)
2. Special ability feats or Radial-type feats which appear in the radial menus (like Cleave)
3. Spell-like feats
You can only really add spell-like feats and even they will only be selectable or automatically
granted at level up but they don’t show up in the GUI during the game. So players cannot use
them easily. So we need a workaround: create a custom item that has:
ActionUseFeat(<ID of your feat in feats.2da>);
as its OnActivate script.
You cannot add new combat feats because the combat engine is hidden from us in the internals
of the game. You cannot add new buttons to radial menus so those feats are not available either.
Column
Description
Values
The first column is the ID of the feat
LABEL
The internal name of the feat.
FEAT
STR_REF to the name of the feat
referenced in dialog.tlk.
DESCRIPTION
STR_REF to the name of the feat
referenced in dialog.tlk.
ICON
The icon you see in the game for the
feat.
MINATTACKBONUS
The minimum attack bonus needed
to qualify for the feat,
MINSTR
MINDEX
Minimum strength, dexterity,
intelligence or wisdom needed to
&2
If you put **** in this space it should
use your Label in place of the string
reference in dialog.tlk (but does not,
yet).
5
Column
Description
Values
MININT
MINWIS
qualify for the feat.
MINSPELLLVL
Minimum spell caster level needed
to qualify for the feat.
PREREQFEAT1
PREREQFEAT2
Prerequisite feats needed to qualify
for the feat (references back to
column 0, the ID)
GAINMULTIPLE
Can the feat be gained multiple
times?
0 for no
1 for yes
EFFECTSSTACK
Do the effects of the feat stack with
other feats?
0 for no
1 for yes
ALLCLASSESCANUSE
Can all classes use this feat? If yes,
it is not necessary to put this feat in
the cls_feat_<class>.2da tables.
0 for no
1 for yes
CATEGORY
This is the type of feat for use by the
AI (refer to spells) so that NPCs and
monsters use it properly.
MAXCR
Not sure.
SPELLID
Points to spells.2da (column 0, the
ID) for the spell characteristics and
script used to implement this feat. All
of your custom-created feats will
typically have this reference (it is the
only way you can implement a feat).
SUCCESSOR
What feat comes next in the feat
progression (mainly used for class
abilities that were made into feats,
like Barb Rage/Bard Song, etc.)
CRValue
I believe this is used to determine
the CR value of a creature when you
add this feat to the creature, part of
the behind the scenes work when
creating monsters
USESPERDAY
How many times the feat can be
used between rests.
MASTERFEAT
TARGETSELF
Does the feat work on only the
person using it? (bardsong no, most
others yes)
**** for no
1 for yes
OrReqFeat0
OrReqFeat1
OrReqFeat2
OrReqFeat3
OrReqFeat4
Feats needed as prerequisites(?)
Uses column 0, the feat ID
REQSKILL
Skills needed for the feat
Uses column 0, the skill ID, from
&9
5
Column
Description
Values
skills.2da.
Constant
The constant the feat uses in the
scripting language (especially
nwscript.nss)
TOOLSCATEGORIES
Represents the ‘Type’ column in the
Aurora toolset, categorizing feats
when creating NPCs.
1
2
3
4
5
6
HostileFeat
Is the feat used on a hostile creature
(Called Shot is an example).
**** for no
1 for yes
Combat Feats
Active Combat Feats
Defensive Feats
Magical Feats
Other Feats
Class/Racial Feats
There are two other 2da files you will need to know about.
Cls_Feat_<classname>.2da describes the feats that are allocated to a class and at what level.
You only need to put feats in this table if they are not available to all classes (see
ALLCLASSESCANUSE in feats.2da above).
Column
Description
Values
The first column is the ID of this entry
FeatLabel
The internal name of the feat.
FeatIndex
A reference back to column 0, the ID,
of feat.2da
List
Which list of feat types the feat
appears in.
0 : means that the feat will have to be
selected at creation or level up.
1 : this is a pure guess, but a
reasonable one I think, this value is
only used for wizards and fighter to
specify the class related feats they
can get as bonus feats every two
(correct me if I'm wrong) levels.
2 : I won't even try to guess what that
one does: suffice to say it is only used
for the ranger favored enemy feats
(I.e. against dragon, against undead
etc), and for the high level rogues'
feats (crippling strike). So this would
be the "automatically granted but that
you still need to choose category".
3 : the feat will be automatically
granted for this class, at the level
specified in the GrantedOn column
GrantedOnLevel
Defines which Level the Feat will be
automatically granted at.
-1 Only used if List does not have a
value of 3.
>= 1 is only used if List does have a
value of 3
5
Race_Feat_<racename>.2da describes which feats are automatically allocated to a particular
race.
Column
Description
Values
The first column is the ID of this entry
FeatLabel
The internal name of the feat.
FeatIndex
A reference to feat.2da indicating
which feats the race gets
automatically.
A reference back to column 0, the ID,
of feat.2da
If you want to check for the existence of a feat in a script, you will need to assign a CONSTANT
to it. Remember adding FEAT_<featname> to the CONSTANT column in feats.2da? Well now we
use it. Add to your script file the following line:
int FEAT_<featname> = <nnn>; //put the actual value from feats.2da in place of nnn
Make sure you use underscores "_" instead of spaces in name.
%
%
This section provides a more detailed look at the available tools.
'
( )
*
This viewer
(http://nwvault.ign.com/Files/other/data/1026158289673.shtml)
lets you browse the NWN resource files (all of the models,
textures, pictures, text, etc. that makes up the content of the
game) and to extract them so that you can modify the files or
use them as a base for making your own custom content.
Notes
•
WIP – need to explain how this works
and where to go to get at the bif files.
•
Explain what each bif contains.
NWN Viewer does not come with an installer so unzip the files into a directory (maintaining the
sub-directories in the zip file) and drop a shortcut to it on your desktop or into your NWN menu.
+
( , #- #
A hakpak (a file with the extension .hak) is a package where you add custom files to either
supplement or override standard Bioware content. Anybody who plays your module will need a
copy of your hakpak so be sure to distribute it along with your
module itself. You can use a hakpak to make Neverwinter’s
Notes
standard goblin a different color (overriding standard content)
• In release 1.28, Bioware added the
or to add a new monster such as an Owlbear (adding new
ability to specify multiple hakpaks for a
module. It will be interesting to see
content).
Let me try to outline a few of the controversies surrounding
hakpaks and their use in customizing NWN content.
what conventions arise around using
multiple hakpaks.
First, let me note that hakpaks are the official Bioware
method for distributing custom content. They are not free from issues or special considerations
but they are the best way of getting your content out to the gaming public. People have come up
with workarounds and lots of contradictory and nonsensical advice on what to do and what not to
do with hakpaks. Let’s talk about a few of the issues.
1. The /override directory. First, you can also override Bioware content by dropping a file into
the /override folder of your game directory. However, this approach is not recommended.
Hakpaks are much cleaner – they can group many overridden files into one package and,
more importantly, they are specific to a module. Putting a file into the /override directory will
override it for all modules you play on that computer which may have unintended
consequences on other people’s games. Don’t do it. If you put custom content into the
/override directory of your computer and wonder why other people’s modules don’t work on
your machine, you probably have created the problem yourself.
Also, putting things in the /override directory like new .2da files will break the ability of
the automatic installer to update your game to the latest release. To fix this you will need
to restore the old version to the /override directory. You can find the old versions of
these files in the /source directory of your game.
One .2da file per module is all that you are allowed. This means if you want to combine
resources from multiple hakpaks it becomes tricky when you put similar content together
from multiple sources because some of the model id’s and 2da files may overlap.
%
For example, you will need to re-edit and combine some of the files manually (specifically
the .2da file). Also, Because of a very strict naming scheme that you have to fulfill to
have the game recognize items and display them properly, there will never be a 'clean'
solution. For details on how to combine hakpaks, refer to this tutorial on combining
hakpaks: http://nwvault.ign.com/modules/tutorials/CombiningHakPaks.shtml. It is no
longer strictly necessary to combine the paks physically because NWN allows multiple
haks. However, the section on combining 2da files is still valid and required.
To give you an example, assume I create a bastard sword. I create it to fill the number 8
position. Not only do I have to name each file according to a set naming scheme I also
have to ensure that the internal references to that object match the name. It is not even
as simple as renaming the files. Internally there are references to my number 8 sword
that have to be changed in roughly 5 places in at least three files. Nine files if you've
include all three parts for all three colors. So roughly 45 to 54 internal references.
So say Poly creates a bastard sword. He has no idea I've done so and he picks the next
available number which is 8 and builds his as the 8th piece. To use his and mine in one
hakpak, one of us has to go back and change those references.
2. Official expansions may overlap with custom content. Similar to the issue above, if Bioware
creates a patch that includes additional content, there is a risk that it will interfere with your
content. This problem becomes even more insidious because your module may work fine
under version 1.22 and be broken under version 1.25. At least when merging other people’s
content into your hakpaks you can test for incompatibilities. When it happens as an official
update, anybody who has an old version of your module on their machine will be at risk. This is
why I recommend setting ID numbers in .2da files to be much higher than the official ID
numbers.
Expect even more of these issues when Bioware chooses to release expansion packs.
Again, the best way to avoid these issues is to stay well above the range of ID numbers
that Bioware uses or use the User ranges they set aside.
3. Official patches will not be in custom content released before the patch. To override some of
the files, like the .2da files, you take a copy of the entire file and add your own modifications to
it. There is a risk if Bioware issues an updated version of that file in a patch that you will not
have those updates in your file. For example, I dutifully used NWN Viewer to export the
baseitems.2da file to add a new weapon. But my game installation has a more recent copy
of baseitems.2da in the new patch.bif file already. I'm on v1.28 of the game.
If I run a diff between the patch.bif version and the version I exported from NWN
Viewer, there were two small changes (to the Heavy Crossbow and the Trapkit). Not
good. Not surprising, in retrospect, but not good anyway. Why does this happen?
Bioware has originally used the /override directory for its official version updates. As
of version 1.28 it moved most of that content to patch.bif. NWN Viewer gets its data
directly from the appropriate BIF files. It does not look in these other locations first. When
I distribute an older version of a .2da file in a hakpak, Bioware’s changes disappear
because my hakpak version takes precedence.
Practically speaking what this means is that when you are going to modify a current NWN
file (e.g., a .2da file), look in \source\2dasource.zip first, before you go and export a
file you want from NWN Viewer. Only if Bioware hasn't updated that file recently would
you use NWN Viewer to export a new version from the original game installation.
If you don't follow these simple rules, you risk undoing Bioware's bug fixes when you
distribute custom content. This same issue exists if Bioware distributes an update after
you distribute your content but we let's not exacerbate the problem.
%
4. The dialog.tlk file cannot be put in a hakpak. See more in the section below on this file. In a
nutshell, Bioware has been making changes to overcome this issue by making it less and less
necessary to customize the dialog.tlk file. They have no intention of making it hakpak aware.
Get over it and stop using dialog.tlk for kludgy changes to custom content.
5. Renumbering .2da entries. If you delete rows from a .2da file in a hakpak, or even if you renumber them, it will mess up an existing module that used the previous version of your
hakpak. The toolset put the entries into numerical order for you, but if you have used the hak in
that module before and delete an entry, everything after that entry will be one appearance off.
This is why you will notice entries in the standard .2da files that are not actually deleted, they
are just blanked out using ‘****’ and other meaningless values. Use the same method if you
are modifying a hakpak in the middle of developing your module. This also occurs quite
frequently when combining hakpaks. And it creates problems if you load a saved .erf file that
referenced a previous version of your hakpak. The only real solution other than leaving in
blank entries is to recreate your module from scratch or change all of your model entries by
hand.
Having said all of that, hakpaks are still the best way to manage custom content. The only way to
better manage some of these issues would be to create a central registry for ‘reserving’ Ids, item
numbers, etc. to ensure that nobody ever created another item that overlapped with yours. Even
then the central registry would only be as good as the people maintaining it and registering their
changes with it.
So with that behind you, let me touch on the basics of how to install your content into a hakpak
and load that into a module. To create or modify a hakpak, launch the supplied nwhak.exe
program (it can be found in the /utils subdirectory where you installed NWN).
6. Select File | New to create a new hakpak. Enter the name and other information on the main
window (or use File | Open and choose the hakpak you want to modify).
7. To add files select Resource | Add or simply drag the file into the list below.
8. To remove a resource from the hakpak, right click on it and select remove (you can multi select
to remove several at one time by holding down <shift> or <ctrl>).
9. Select File | Save to save your hakpak. Save it into the /hak subdirectory where you installed
NWN.
To use your hakpak you must add it as a resource to your module:
10. Launch the Aurora Toolset.
11. Open your module or create a new module.
12. Select Edit | Module Properties to modify the basic characteristics of your module.
13. Select the tab labeled Custom Content.
14. Using the drop-down combo box select your hakpak (if it does not appear in the combo box
you probably have not placed it in the /hak subdirectory where you installed NWN). You can
add multiple hakpaks this way with the topmost haks having higher priority (i.e., duplicate files
in the higher haks override those in lower haks).
!
%
•+
3
3
15. Save, close and re-open the module. There seems to be a bug (at least in Release 1.26 of
NWN) where it does not always load a new hakpak properly while a module is open. The only
workaround I have been able to find for this is to close the module and then re-open it. This
properly loads the updated hakpak data for most content (but not all).
.
%
If you really want to do modeling, go and download yourself a
copy of gmax (http://www.discreet.com/products/gmax/) from
Discreet Software. It is a subset of 3ds max for noncommercial game designers and it is free. You also need to
pick up the GMax MDL import/export
(http://nwvault.ign.com/Files/other/data/1029721132840.shtml)
script to use it for NWN content and Torlack’s NWNMdlComp
(http://www.torlack.com/index.html?topics=nwnmdlcomp_read
me) model compiler/decompiler if you want to edit existing
models.
Warning
•
Remember to do low polygon
modelling. For example,
weapons 150
placeables 200-300
tiles 350
walkmeshes 100
The installation instructions are fairly simple:
1. Download and install gmax.
2. Download and unzip the import/export script.
3. Drop the nwn_mdl_v<version#>.ms script from the zip file into the /scripts/startup
directory of your gmax installation (not of your NWN installation).
&
%
4. Unzip the NWNMdlComp executable. Drop a copy in your C:\WINDOWS or C:\WINNT directory
(or put it in a directory and set your computer’s pathname to point to it).
5. If you have an existing model file to work with, run NWNMdlComp –d <modelfile> to
decompile the binary model file from NWN. Don’t use the .mdl suffix. The output file will be
named .mdl.ascii.
6. Start gmax. The NWN MDL Tools pane should start automatically.
7. Enter a filename and select Import. This should load the model.
8. Edit it to your heart’s content.
9. Select the base object.
10. Select Export from the NWN MDL Tools pane.
11. Select MAXScripts | Listener to show the listener dialog.
12. Copy and paste the decompile ASCII model into a text file. Gmax will only copy 10KB at a time
so you may need to copy and paste multiple times.
13. You’re done!
+
0 $$
-
%
NWN uses a scalable texture system to increase system performance, known as the DirectDraw
Surface (DDS) format. DDS files contain multiple versions of the same texture at different
resolutions, called mipmaps. Mipmapping is a technique that improves image quality and reduces
texture memory bandwidth by providing pre-filtered versions of the texture image at multiple
resolutions. DDS files are also compressed.
What does all of this gibberish mean? It means DDS files are smaller and render faster on highend 3d video cards. While not absolutely necessary, DDS files will give your objects that extra
level of professional shine. It allows your hardware to switch between very hi-res textures when
viewing an object close up while using low-res textures for faster rendering of the same object
viewed at a distance. Computers with a graphics card that cannot handle DDS files require a
copy of the .tga file instead (usually of a lower resolution so that they do not slow performance
significantly). So if you use DDS files, include one at a lower resolution like 64 x 64.
Bioware has tool called ProcessTextures.exe
(http://nwn.bioware.com/builders/texturetutorial.html). It is a free, unsupported Windows utility but
it will not work on all computers. It is dependant on your video card and drivers supporting the
required compression. Most DirectX 8 drivers should work – it has been tested it on a GeForce3
and Radeon 8500, which worked fine, however the Matrox G550 cards do not work.
Bioware’s DDS Compression Tool will not uncompress a DDS file into a bitmap. It is one way only
(.tga to .dds). To uncompress a bitmap, use DDSTools (described in the next section) and then
discard all but the highest resolution bitmap.
A few things to be aware of:
•
Bioware uses a slightly modified version of the DDS standard so you cannot use standard
tools like Nvidia’s Photoshop plug-in to create them. You must use the Bioware tool (or
DDSTools although I don’t recommend that program).
%
•
DDS is a lossy compression algorithm but does a good job in most cases and the file sizes are
much smaller and they run faster so don’t let that stop you from running them.
•
If you absolutely must have one texture of extremely high resolution, put just the .tga in your
hakpak for that file. This is generally not recommended though because those large .tga files
really slow down even high end machines.
•
Try doubling the size of your .tga file before compressing it to avoid pixelization. You will
convert every pixel to 2x2 pixels (smooth it if you like); THEN convert it to DDS - quality should
be better (although file size of course will be bigger).
•
DDS compression works on 4x4 blocks of pixels. If you have more than 2 distinct colors in the
same 4x4 block, you will have some pixelization (every 4x4 block is defined by 2 colors plus
transitions between them). For most textures, it is really acceptable - you can show smooth
transitions (4 level of transition for 4 pixel space - ideal) and you can show hard edges.
•
All textures should be a power of two: 2X2, 4X4, 8X8, 16X16, 32X32, 64X64, 128X128,
256X256, 512X512 (the practical maximum that makes a difference).
•
For really large models you may want to include several .tga and DDS files as textures (e.g.,
the Bioware dragon models use 3).
To use this tool:
1. Download the DDS Compression Tool (.zip, 262 KB), save it to a location where you can find
it, and unzip it (using a tool like WinZip).
2. After unzipping the tool, you will find 2 files in the 'dds' folder (processtextures.exe and
runme.bat) along with 2 directories labelled 'in' and 'out'.
3. Place the .tga you wish to compress into the 'in' folder.
4. Double-click the 'runme.bat' in the 'dds' folder. This will convert the texture from .tga format to
the compressed .dds format that is needed for the game. You will find the converted texture in
the 'out' folder. It will have the same filename as the original, but with the .dds file extension.
$$ %
DDSTools (http://downloads.neverwinternights.de/tools/ddstools.zip) is a freeware utility that will
also compress and uncompress a DDS format file into a series of .tga files.
Bioware’s DDS Compression Tool will not uncompress a DDS file into a bitmap. It is one way only
(.tga to .dds). To uncompress a bitmap, use DDSTools and then discard all but the highest
resolution bitmap.
DDSTools flips your image vertically when creating the DDS from the bitmap (which will usually
mess up how it maps to your model although you may not notice it if it is a random pattern). Use
Bioware’s DDS Compression Tool instead (which does not flip) or manually flip your bitmap first.
Also, Desoto’s will not work with 32-bit .tga files (i.e., files with an alpha channel) although
Bioware’s will.
What all of this means is you need both if you want to use Bioware’s textures as a starting point
for any of your models.
/
%
%#
Neverwinter Nights includes a data file called dialog.tlk. This
file contains a huge list of thousands of text resources: all of
the names of all of the objects in the dialog from the game.
This is a common technique used to make it easier to
internationalize a game – with all of the text strings in one
place, translation to multiple languages is much easier.
Warning
•
Each resource in dialog.tlk has a number assigned to it called
the String Reference. Unfortunately, editing dialog.tlk is
fraught with issues:
Usually you can avoid editing the
dialog.tlk file for your custom content.
There are different techniques for doing
this:
a)
For some .2da files you can put
‘****’ in the string reference
column and it will use the
adjacent text column instead
(e.g., appearance.2da for
creatures).
b)
For many objects, you can simply
override the object name in the
Aurora toolset. When you do this
the person who uses your
module will never notice (e.g.,
baseitems.2da).
5. It is a huge file (7 MB+) which makes for a big download.
6. It is not something you can override through a hakpak. So
for each module that you play with a new dialog.tlk file,
you have to manually swap in the new dialog.tlk before
loading the game.
7. If you update NWN through the automatic updater, it will
not work if you have changed dialog.tlk. You will have to
restore the old version first, then update the game. Of
course, any changes that Bioware makes to dialog.tlk for
an update will break your version.
•
Right now the only two sections of this
tutorial that require dialog.tlk editing are
for custom spells (which can be
avoided as long as they are NPC
spells) and custom races (using CODI’s
Character Creator).
These examples make changes to dialog.tlk very difficult. Most
• This warning bears repeating. Do not
users do not like messing around with their game installation
edit dialog.tlk if you can avoid it.
to run a module and will refuse to download modules with
modified dialog.tlk files. Many users have only a basic
understanding of computers and find issues like manually swapping dialog.tlk files back and forth
to be challenging.
Bioware is aware of this issue. Patch v1.25 of the game removed the need to modify dialog.tlk for
some objects. For example, in appearance.2da if you now leave the String Reference field blank
the toolset will use your label as the title for the object. This is a huge improvement and we
continue to lobby the Live Team to make more patches like this.
The summary message of this section is this: Modify dialog.tlk at your own risk. It will certainly
turn many people off from using your custom content. It is only necessary in a few circumstances
so ask yourself if it is worth it before producing custom content that requires these changes. Here
is my opinion on the subject, by section:
1. Weapons - it is unnecessary to modify dialog.tlk. You can edit the item name and description
and stats in the Aurora toolset and distribute custom .erf files.
2. Portraits – not required.
3. Voicesets – not required.
4. Items without Models - it is unnecessary to modify dialog.tlk. You can edit the item name and
description and stats in the Aurora toolset and distribute custom .erf files.
5. Armor and Clothing – not required.
6. Spells – required. Unless you want to use them only for NPCs. Again, if you are a module
builder, ask yourself whether those custom spells are really critical to your game.
2
%
7. Creatures – made unnecessary with patch v1.25 of the game.
8. Custom Races – required. It is currently unavoidable for custom races. My only caution here if
you are a module builder is that I would evaluate whether or not a custom race is really critical
to the module before doing it. For the City of Doors Initiative (a Planescape mod) it is. For
many other modules it is probably not and it will limit your target audience.
9. Visual effects – not required.
9
-
-
??
??
< ?
This section is a reference for the different spell and other effects available when creating your
own spells or scripting your own modules. This material was originally compiled by John Belinda
(Harlequin).
This reference covers three types of effects
•
Spell Audio Effects
•
Spell Visual Effects
•
Scriptable Visual Effects
The spell effect labels and categories make more sense when you understand the difference
between conjuration and casting. Conjuration is the term Bioware gives to the actual process of
invoking the spell. Casting is the term used to describe when the effects of the spell manifest
themselves. So conjuration is when the characters are waving their hands and saying mystical
things. Casting occurs after conjuration when the spell suddenly takes effect.
/
-
-
"
??
??
These are the sound effects that are used in the spells.2da file for specifying the sounds
played when a spell is cast by a character or NPC. There are three types of sounds:
1. Conjuration voice sounds (the verbal sound of actual doing the spell conjuration)
2. Spell conjuration sounds (the sound the magic makes as the conjuration is taking place)
3. Spell casting sound effects (the sound the magic makes as a result of – i.e., after – the spell is
cast)
B
.
: -
B
VS_
*
? .
Voice Set
CHANT_
Chanting used during spell casting
<SCHOOL>_
School of magic most associated with the sounds
HM
Hi-Fi Male Sound
LM
Low-Fi Male Sound
VOICE SOUND NAME
DESCRIPTION
VS_CHANT_CONJ_HM
Hi-Fi
Conjuration
Obidaal Nabora Sesma
Echoing voice
VS_CHANT_CONJ_LM
Low-Fi
Conjuration
Obidie Midua Balkat
Echoing voice
VS_CHANT_ENCH_HM
Hi-Fi
Enchantment
Meeyo Tetrak Glash
Vibrating voice
VS_CHANT_ENCH_LM
Low-Fi
Enchantment
Gorak Vu Mokay
Vibrating voice
VS_CHANT_EVOC_HM
Hi-Fi
Evocation
Ebool Solayno Salatka
Forceful
Crescendo voice
VS_CHANT_EVOC_LM
Low-Fi
Evocation
Ortano Fordigyama
Forceful
Crescendo voice
VS_CHANT_ILLU_HM
Hi-Fi
Illusion
Kil Kufeem Safeem
Reverberating
voice
VS_CHANT_ILLU_LM
Low-Fi
Illusion
Faytas Vaydal Eska
Reverberating
voice
VS_CHANT_NECR_HM
Hi-Fi
Necromancy
Kral Sestu Bokor
Deep Throaty
voice
VS_CHANT_NECR_LM
Low-Fi
Necromancy
Naykul Matrak Aygola
Deep Throaty
voice
/
-
B
5
: -
B
VS_
*
??
? 5
Voice Set
CHANT_
Chanting used during spell casting
<SCHOOL>_
School of magic most associated with the sounds
HF
Hi-Fi Female Sound
LF
Low-Fi Female Sound
VOICE SOUND NAME
DESCRIPTION
VS_CHANT_CONJ_HF
Hi-Fi
Conjuration
Obidaal Nabora Sesma
Echoing voice
VS_CHANT_CONJ_LF
Low-Fi
Conjuration
Obidie Midua Balkat
Echoing voice
VS_CHANT_ENCH_HF
Hi-Fi
Enchantment
Meeyo Tetrak Glash
Vibrating voice
VS_CHANT_ENCH_LF
Low-Fi
Enchantment
Gorak Vu Mokay
Vibrating voice
VS_CHANT_EVOC_HF
Hi-Fi
Evocation
Ebool Solayno Salatka
Forceful
Crescendo voice
VS_CHANT_EVOC_LF
Low-Fi
Evocation
Ortano Fordigyama
Forceful
Crescendo voice
VS_CHANT_ILLU _HF
Hi-Fi
Illusion
Kil Kufeem Safeem
Reverberating
voice
VS_CHANT_ILLU _LF
Low-Fi
Illusion
Faytas Vaydal Eska
Reverberating
voice
VS_CHANT_NECR_HF
Hi-Fi
Necromancy
Kral Sestu Bokor
Deep Throaty
voice
VS_CHANT_NECR_LF
Low-Fi
Necromancy
Naykul Matrak Aygola
Deep Throaty
voice
/
-
B
*5C: -
B
??
SCO_
Sound played while conjuring a spell
GAZE
Gaze Effect appropriate conjuration sounds
LGRIN
Large Ring Effect appropriate conjuration sounds
LGSPR
Large Spiral Effect appropriate conjuration sounds
LGUP
Large Upwards Effect appropriate conjuration sounds
MEBAL
Medium Globe Effect appropriate conjuration sounds
MEGRD
Ground Effect appropriate conjuration sounds
MEHED
Medium Head Effect appropriate conjuration sounds
MEHAN
Medium Hands Effect appropriate conjuration sounds
<EFFECT>
##
??
Effect Category for the sound
Index number of the sound for similar names
GAZE SOUND NAME
DESCRIPTION
SCO_GAZEEVIL
Gaze
Evil
Groaning howl emanating out
SCO_GAZEMIND
Gaze
Mind
Reverberating sound emanating out
SCO_GAZEODD
Gaze
Odd
Deep howling sound emanating out
RING SOUND NAME
DESCRIPTION
SCO_LGRINELEC01
Ring
Large
Electrical
Electric charges surrounding
SCO_LGRINEVIL01
Ring
Large
Evil
Groaning howl surrounding
SCO_LGRINFIRE01
Ring
Large
Fire
Crackling fire surrounding
SCO_LGRINHEAL01
Ring
Large
Heal
High pitched `ahh' surrounding
SCO_LGRINHOLY01
Ring
Large
Holy
Soothing hum with chimes
surrounding
SCO_LGRINMIND01
Ring
Large
Mind
Whistling wind surrounding
SCO_LGRINODD01
Ring
Large
Odd
Howling wind surrounding
SPIRAL SOUND NAME
Description
SCO_LGSPRELEC01
Spiral
Large
Electrical
Electric charges circling around
SCO_LGSPREVIL01
Spiral
Large
Evil
Groaning howl circling around
SCO_LGSPRFIRE01
Spiral
Large
Fire
Crackling fire circling around
SCO_LGSPRHOLY01
Spiral
Large
Holy
Soothing hum with chimes circling
/
-
??
around
SCO_LGSPRMIND01
Spiral
Large
Mind
Whistling wind circling around
SCO_LGSPRNATR01
Spiral
Large
Nature
Bird whistles circling around
SCO_LGSPRODD01
Spiral
Large
Odd
Howling wind circling around
UPWARD SOUND NAME
DESCRIPTION
SCO_LGUPELEC01
Pillar
Large
Electrical
Electric charges shooting upwards
SCO_LGUPEVIL01
Pillar
Large
Evil
Groaning howl shooting upwards
SCO_LGUPFIRE01
Pillar
Large
Fire
Crackling fire shooting upwards
SCO_LGUPHOLY01
Pillar
Large
Holy
Soothing hum with chimes shooting
upwards
SCO_LGUPMIND01
Pillar
Large
Mind
Whistling wind shooting upwards
SCO_LGUPNATR01
Pillar
Large
Nature
Bird whistles shooting upwards
SCO_LGUPODD01
Pillar
Large
Odd
Hollow howl shooting upwards
SCO_LGUPSONIC01
Pillar
Large
Sonic
Strong wind shooting upwards
GLOBE SOUND NAME
DESCRIPTION
SCO_MEBALACID01
Ball
Medium
Acid
Howling sizzle expanding out
SCO_MEBALELEC01
Ball
Medium
Electrical
Electric charges expanding out
SCO_MEBALFIRE01
Ball
Medium
Fire
Crackling fire expanding out
SCO_MEBALODD01
Ball
Medium
Odd
Sharp whistling expanding out
SCO_MEBALSONC01
Ball
Medium
Sonic
Howling wind expanding out
OTHER SOUND NAME
DESCRIPTION
SCO_POSITIVE
Positive Energy
High pitched chime sound
SCO_SWAR3BLUE
Blue
Sizzling sound
SCO_WRAITH
Wraith
Undead howling sound
GROUND SOUND NAME
DESCRIPTION
SCO_GRNDSKUL
Ground
Skull
SCO_MEGRDEVIL01
Ground
Medium
Evil
Swirling groaning howl
SCO_MEGRDFIRE01
Ground
Medium
Fire
Swirling crackling fire
SCO_MEGRDHOLY01
Ground
Medium
Holy
Swirling soothing hum
SCO_MEGRDMIND01
Ground
Medium
Mind
Swirling whistling wind
SCO_MEGRDNATR01
Ground
Medium
Nature
Swirling bird whistles
Swirling ghostly howl
/!
SCO_MEGRDODD01
Ground
Medium
Oddl
??
Swirling metal howl
HEAD SOUND NAME
DESCRIPTION
SCO_MEHEDELEC01
Head
Medium
Electrical
Electric charge rising and falling
SCO_MEHEDEVIL01
Head
Medium
Evil
Groaning howl rising and falling
SCO_MEHEDHOLY01
Head
Medium
Holy
Soothing hum rising and falling
SCO_MEHEDODD01
Head
Medium
Odd
Hollow howl rising and falling
SCO_MEHEDSONC01
Head
Medium
Sonic
Strong wind rising and falling
HAND SOUND NAME
DESCRIPTION
SCO_MEHANACID03
Hand
Medium
Acid
3 High pitched sizzling
SCO_MEHANCOLD03
Hand
Medium
Cold
3 Chill wind with chimes
SCO_MEHANELEC01
Hand
Medium
Electrical
1 Electric charge fading out
SCO_MEHANELEC02
Hand
Medium
Electrical
2 Electric charge abruptly ends
SCO_MEHANELEC03
Hand
Medium
Electrical
3 Electric charge constant volume
SCO_MEHANEVIL01
Hand
Medium
Evil
1 Groaning howl fading out
SCO_MEHANEVIL02
Hand
Medium
Evil
2 Groaning howl fading out
SCO_MEHANEVIL03
Hand
Medium
Evil
3 Groaning howling fading out with
scream
SCO_MEHANFIRE01
Hand
Medium
Fire
1 Crackling fire fading out
SCO_MEHANFIRE03
Hand
Medium
Fire
3 Crackling fire fading out with wind
SCO_MEHANHEAL02
Hand
Medium
Heal
2 Hymn sound with static charge
fading out
SCO_MEHANHEAL03
Hand
Medium
Heal
3 Hymn sound with wind fading out
SCO_MEHANHOLY01
Hand
Medium
Holy
1 Soothing hum with wind fading
out
SCO_MEHANHOLY02
Hand
Medium
Holy
2 Soothing hum with static charge
fading out
SCO_MEHANHOLY03
Hand
Medium
Holy
3 Soothing hum fading out
SCO_MEHANMIND01
Hand
Medium
Mind
1 Vibrating wind fading out
SCO_MEHANMIND02
Hand
Medium
Mind
2 Vibrating wind with static charge
fading out
SCO_MEHANMIND03
Hand
Medium
Mind
3 Vibrating wind fading out
SCO_MEHANNATR01
Hand
Medium
Nature
1 Constant howling sound
SCO_MEHANNATR02
Hand
Medium
Nature
2 Constant howling sound with
birds
SCO_MEHANNATR03
Hand
Medium
Nature
3 Constant chiming sound with
birds
/&
-
??
SCO_MEHANODD01
Hand
Medium
Odd
1 Whistling wind fading out
SCO_MEHANODD02
Hand
Medium
Odd
2 Whistling wind with static charge
fading out
SCO_MEHANODD03
Hand
Medium
Odd
3 Hollow wind fading out
SCO_MEHANSONC01
Hand
Medium
Sonic
1 Strong wind fading out
SCO_MEHANSONC02
Hand
Medium
Sonic
2 Strong wind with static charge
fading out
SCO_MEHANSONC03
Hand
Medium
Sonic
3 Strong whistling wind fading out
/
-
: -
??
??
SAR_
Area sound played after conjuring a spell
SCA_
Casting sound played after conjuring a spell
SCE_
Energy casting sound played after conjuring a spell
SDR_
CONE
Cone Effect appropriate casting sounds
OUT
Outward Cast Effect appropriate casting sounds
<EFFECT>
Effect Category for the sound
##
Index number of the sound for similar names
CONE SOUND
NAME
DESCRIPTION
SAR_CONEACID01
Area
Cone
Acid
Sizzling wind expanding
SAR_CONECOLD
Area
Cone
Cold
Freezing Ice wind expanding
SAR_CONEDISEA
Area
Cone
Disease
Flying insect wind expanding
SCA_CONEFIRE
Area
Cone
Fire
Crackling fire wind expanding
SAR_CONEFIRE
Area
Cone
Fire
Crackling fire wind expanding
SAR_CONEPOIS
Area
Cone
Poison
Sizzling/Dripping wind expanding
SAR_CONEPRIS
Area
Cone
Prismatic
Chime wind expanding
SCA_CONESONC01
Area
Cone
Sonic
Vibrating wind expanding
SAR_CONESPAR
Area
Cone
Sparkles
Whistling wind chime expanding
DRAGON SOUND
NAME
DESCRIPTION
SCA_DRAGACID
Dragon Breath
Acid
Dragon roar breathing burning
sizzle
SCA_DRAGCOLD
Dragon Breath
Cold
Dragon roar breathing crackling
ice
SCA_DRAGELEC
Dragon Breath
Electricity
Dragon roar breathing static
charge
SCA_DRAGFIRE
Dragon Breath
Fire
Dragon roar breathing roaring fire
SCA_DRAGGAS
Dragon Breath
Gas
Dragon roar breathing howling
wind
SCA_DRAGMIND
Dragon Breath
Mind
Dragon roar breathing whistling
wind
SCA_DRAGODD
Dragon Breath
Odd
Dragon roar breathing
//
-
??
reverberating wind
OUTWARD SOUND
NAME
DESCRIPTION
SCA_OUTHOLY01
Casting
Outward
Holy
Rush of wind with hymn sound
SCA_OUTMIND01
Casting
Outward
Mind
Rush of wind with whistle sound
SCA_OUTNATR01
Casting
Outward
Nature
Rush of wind with bird sound
SCA_OUTNEG
Casting
Outward
Evil
Rush of wind with scream sound
SCA_OUTSONIC
Casting
Outward
Sonic
Rush of wind with hollow wind
sound
ENERGY SOUND
NAME
DESCRIPTION
SCE_NEGATIVE
Energy
Negative
Rush of wind with deep chime
SCE_NEUTRAL
Energy
Neutral
Rush of wind with tinkling chimes
SCE_POSITIVE
Energy
Positive
Rush of wind with high pitched
chime
EFFECTS SOUND NAME
DESCRIPTION
SDR_BARDSONG
Bardsong
Lute strings playing
SDR_BLACKOUT
Blackout
Quick burst snuffed out
SDR_BLUR Blur
Vibrating force field
SDR_DARKNESS
Darkness Deep fading wind
SDR_ELESHIELD
Elemental Shield
Fire burning quickly fading
SDR_ELESHIELDLP
Elemental Shield (Long Play)
Fire burning longer
SDR_ENTANGLE
Entangle
Rustling leaves
SDR_ETHEREAL
Ethereal
Wispy wind with chimes
SDR_FREEMOVE
Freedom of Movement
Vibration
SDR_GHOSTLY
Ghostly
Ghostly howling wind
SDR_GLOBEMAX
Globe Maximum
Hollow sound expanding
SDR_GLOBEMAXLP
Globe Maximum (Long Play)
Hollow sound constant
SDR_INVISIBLE
Invisible
Swirling wind fading
SDR_MAGRESIST
Magic Resist
Shimmering force field
SDR_MAGSEE
Magic Seeing
Tinkling glass
SDR_MINDHELP
Mind Helpful
Whistling wind with flutter
SDR_MINDHIT
Mind Hit
1 Swirling high pitched wind
SDR_MINDHIT02
Mind Hit
2 Echoing wind
SDR_MINDHIT03
Mind Hit
3 High pitched chimes wind
/2
-
??
SDR_MINDHIT04
Mind Hit
4 Deep growling wind
SDR_MOVPARAL
Movement Paralysis
Quick sound burst snuffed out
SDR_MOVPARALLP
Movement Paralysis (Long
Play)
Hollow constant sound
SDR_PARALYZED
Paralyzed
Limbs locking up
SDR_PREMO
Premonition
Chimes playing in the wind
SDR_PROTELEM
Protection from Elements
High pitched bells and chimes
SDR_PROTEVIL02
Protection from Evil
High pitched chimes
SDR_PROTGOOD02
Protection from Good
Low pitched chimes
SDR_SANCTUARY
Sanctuary
Vibrating ray sound
SDR_SPELLTURN
Spell Turning
Short shock
SDR_SPELLTURNLP
Spell Turning (Long Play)
Crackling energy
SDR_WEB
Web
Crackling strands
/9
-
-
*
??
??
These are the visual effects that are used in the spells.2da file for identifying the special
effects used when a spell is cast by a character.
B,
*
: -
B
*
??
=
These effects take place while invoking the spell.
VCO_
Visual effect displayed while conjuring a spell
MEHED
Medium Head Effect appropriate conjuration visual
GAZE
Gaze Effect appropriate conjuration visual
<EFFECT>
School of magic most associated with the visuals
##
Index number of the visual effect for similar names
HEAD VISUAL NAME
DESCRIPTION
VCO_MEHEDACID01
Head
Medium
Acid
Single Green/White Light
VCO_MEHEDCOLD01
Head
Medium
Cold
Single Light Blue/White Light
VCO_MEHEDELEC01
Head
Medium
Electricity
Single White Light
VCO_MEHEDEVIL01
Head
Medium
Evil
Single Red Light
VCO_MEHEDFIRE01
Head
Medium
Fire
Single Orange Light
VCO_MEHEDHEAL01
Head
Medium
Heal
Single Yellow Light
VCO_MEHEDHOLY01
Head
Medium
Holy
Single Yellow Light
VCO_MEHEDMIND01
Head
Medium
Mind
Single Blue/Purple Light
VCO_MEHEDNATR01
Head
Medium
Nature
Single Green Light
VCO_MEHEDODD01
Head
Medium
Odd
Single Purple Light
VCO_MEHEDSONC01
Head
Medium
Sonic
Single White Light
GAZE VISUAL NAME
DESCRIPTION
VCO_GAZEEVIL
Gaze
Evil
Radiating Red Spiral Cone with White Lights
VCO_GAZEHOLY
Gaze
Holy
Radiating Yellow Spiral Cone with White Lights
VCO_GAZEMIND
Gaze
Mind
Radiating Blue/Purple Spiral Cone with White Lights
VCO_GAZEODD
Gaze
Odd
Radiating Purple Spiral Cone with White Lights
VCO_GAZESONC
Gaze
Sonic
Radiating White Spiral Cone with White Lights
VCO_GAZEEVIL
Gaze
Evil
Radiating Red Spiral Cone with White Lights
VCO_GAZEHOLY
Gaze
Holy
Radiating Yellow Spiral Cone with White Lights
VCO_GAZEMIND
Gaze
Mind
Radiating Blue/Purple Spiral Cone with White Lights
VCO_GAZEODD
Gaze
Odd
Radiating Purple Spiral Cone with White Lights
2
-
??
VCO_GAZESONC
Gaze
Sonic
Radiating White Spiral Cone with White Lights
VCO_GAZEEVIL
Gaze
Evil
Radiating Red Spiral Cone with White Lights
VCO_GAZEHOLY
Gaze
Holy
Radiating Yellow Spiral Cone with White Lights
2
-
B,
*
: -
B
*
??
(,
These effects take place while invoking the spell.
VCO_
Visual effect displayed while conjuring a spell
MEHAN
Medium Hand Effect appropriate conjuration visual
SMHAN
Small Hand Effect appropriate conjuration visual
<EFFECT>
School of magic most associated with the visuals
##
Index number of the visual effect for similar names
HAND VISUAL NAME
DESCRIPTION
VCO_MEHANACID01
Hand
Medium
Acid Green/White Light with Outer Spiral
VCO_MEHANACID02
Hand
Medium
Acid Green/White Light with Tendrils
VCO_MEHANACID03
Hand
Medium
Acid Cloud of Tiny Green Lights
VCO_MEHANCOLD01
Hand
Medium
Cold Light Blue/White with Outer Spiral
VCO_MEHANCOLD02
Hand
Medium
Cold Light Blue/White Light with Tendrils
VCO_MEHANCOLD03
Hand
Medium
Cold Cloud of Tiny Light Blue Lights
VCO_MEHANELEC01
Hand
Medium
Electricity White Light with Outer Spiral
VCO_MEHANELEC02
Hand
Medium
Electricity White Light with Tendrils
VCO_MEHANELEC03
Hand
Medium
Electricity Cloud of Tiny White Lights
VCO_MEHANEVIL01
Hand
Medium
Evil Red Light with Outer Spiral
VCO_MEHANEVIL02
Hand
Medium
Evil Red Light with Tendrils
VCO_MEHANEVIL03
Hand
Medium
Evil Cloud of Tiny Red Lights
VCO_MEHANFIRE01
Hand
Medium
Fire Orange Light with Outer Spiral
VCO_MEHANFIRE02
Hand
Medium
Fire Orange Light with Tendrils
VCO_MEHANFIRE03
Hand
Medium
Fire Cloud of Tiny Orange Lights
VCO_MEHANHEAL01
Hand
Medium
Heal Yellow/Teal Light with Outer Spiral
VCO_MEHANHEAL02
Hand
Medium
Heal Yellow/Teal Light with Tendrils
VCO_MEHANHEAL03
Hand
Medium
Heal Cloud of Tiny Yellow/Teal Lights
VCO_MEHANHOLY01
Hand
Medium
Holy Yellow Light with Outer Spiral
VCO_MEHANHOLY02
Hand
Medium
Holy Yellow Light with Tendrils
VCO_MEHANHOLY03
Hand
Medium
Holy Cloud of Tiny Yellow Lights
VCO_MEHANMIND01
Hand
Medium
Mind Blue Light with Outer Spiral
VCO_MEHANMIND02
Hand
Medium
Mind Blue/Purple Light with Tendrils
VCO_MEHANMIND03
Hand
Medium
Mind Cloud of Tiny Blue/Purple Lights
VCO_MEHANNATR01
Hand
Medium
Nature Green/Yellow Light with Outer Spiral
VCO_MEHANNATR02
Hand
Medium
Nature Green/Yellow Light with Tendrils
2
??
VCO_MEHANNATR03
Hand
Medium
Nature Cloud of Tiny Green/Yellow Lights
VCO_MEHANODD01
Hand
Medium
Odd Purple Light with Outer Spiral
VCO_MEHANODD02
Hand
Medium
Odd Purple Light with Tendrils
VCO_MEHANODD03
Hand
Medium
Odd Cloud of Tiny Purple Lights
VCO_MEHANSONC01
Hand
Medium
Sonic White Light with Outer Spiral
VCO_MEHANSONC02
Hand
Medium
Sonic White Light with Tendrils
VCO_MEHANSONC03
Hand
Medium
Sonic Cloud of Tiny White Lights
VCO_SMHANACID01
Hand
Small
Acid Small Green/White Light
VCO_SMHANCOLD01
Hand
Small
Cold Small Light Blue/White Light
VCO_SMHANELEC01
Hand
Small
Electricity Small White Light
VCO_SMHANEVIL01
Hand
Small
Evil Small Red Light
VCO_SMHANFIRE01
Hand
Small
Fire Small Orange Light
VCO_SMHANHEAL01
Hand
Small
Heal Small Yellow/Teal Light
VCO_SMHANHOLY01
Hand
Small
Holy Small Yellow Light
VCO_SMHANMIND01
Hand
Small
Mind Small Blue/Purple Light
VCO_SMHANNATR01
Hand
Small
Nature Small Green/Yellow Light
VCO_SMHANODD01
Hand
Small
Odd Small Purple Light
VCO_SMHANSONC01
Hand
Small
Sonic Small White Light
2
??
-
B
*
: -
B
*
??
These effects take place while invoking the spell.
VCO_
Visual effect displayed while conjuring a spell
ATO
Particle Effect appropriate conjuration visual
GRND
Ground Effect appropriate conjuration visual
LGRIN
Large Ring Effect appropriate conjuration sounds
LGSPR
Large Spiral Effect appropriate conjuration sounds
LGUP
Large Upwards Effect appropriate conjuration sounds
MEBAL
Medium Globe Effect appropriate conjuration sounds
MEGRD
Medium Ground Effect appropriate conjuration visual
<EFFECT>
##
School of magic most associated with the visuals
Index number of the visual effect for similar names
PARTICLE VISUAL NAME
DESCRIPTION
VCO_ATO2BLUE
Particle
Blue Billowy Blue Cloud
VCO_ATO2GREEN
Particle
Green Billowy Green Cloud
VCO_ATO2PURP
Particle
Purple Billowy Purple Cloud
VCO_ATO2RED
Particle
Red Billowy Red Cloud
VCO_ATO2YELO
Particle
Yellow Billowy Yellow Cloud
VCO_ATO3BLUE
Particle
Blue Cloud of Small Blue Lights
VCO_ATO3ORANGE
Particle
Orange Cloud of Small Orange Lights
VCO_ATOMBLUE
Particle
Blue Flicking Blue Light
VCO_ATOMGREN
Particle
Green Flicking Green Light
VCO_ATOMPURP
Particle
Purple Flicking Purple Light
VCO_ATOMRED
Particle
Red Flicking Red Light
VCO_ATOMYELO
Particle
Yellow Flicking Yellow Light
GROUND VISUAL NAME
DESCRIPTION
VCO_GRNDBLUE
Ground
Blue
Blue Circle with White Lights
VCO_GRNDGREN
Ground
Green
Green Circle with White Lights
VCO_GRNDLEAF
Ground
Leaf
Floating Brown/Orange Leaves
VCO_GRNDPURP
Ground
Purple
Purple Circle with White Lights
VCO_GRNDRED
Ground
Red
Red Circle with White Lights
VCO_GRNDSKUL
Ground
Skulls
Floating White Skulls
VCO_GRNDYELO
Ground
Yellow
Yellow Circle with White Lights
2!
??
-
??
VCO_MEGRDACID01
Ground
Medium
Acid
Ring of Green Fog with White Specks
VCO_MEGRDCOLD01
Ground
Medium
Cold
Ring of Light Blue/White Fog
VCO_MEGRDELEC01
Ground
Medium
Electricity
Ring of White/Blue Fog
VCO_MEGRDEVIL01
Ground
Medium
Evil
Ring of Red Fog
VCO_MEGRDFIRE01
Ground
Medium
Fire
Ring of Orange Fog
VCO_MEGRDHEAL01
Ground
Medium
Heal
Ring of Yellow/Teal Sparkles
VCO_MEGRDHOLY01
Ground
Medium
Holy
Ring of Yellow Fog
VCO_MEGRDMIND01
Ground
Medium
Mind
Ring of Blue Fog
VCO_MEGRDNATR01
Ground
Medium
Nature
Ring of Brown Fog with Leaves
VCO_MEGRDODD01
Ground
Medium
Odd
Ring of Purple Fog
VCO_MEGRDSONC01
Ground
Medium
Sonic
Ring of White Fog
OTHER VISUAL NAME
DESCRIPTION
VCO_SWAR3BLUE
Visual
Blue
Dense Blue fog
VCO_SWAR3YELO
Visual
Yellow
Dense Yellow Fog
VCO_WRAITH
Visual
Wraith
Gray Wraith Figure
RING VISUAL NAME
DESCRIPTION
VCO_LGRINACID01
Ring
Acid
Ring of Green/White Light; Green Center
VCO_LGRINCOLD01
Ring
Cold
Ring of Light Blue/White Lights; Blue
Center
VCO_LGRINELEC01
Ring
Electricity
Ring of White Lights; Blue Center
VCO_LGRINEVIL01
Ring
Evil
Ring of Red Lights; Red Center
VCO_LGRINFIRE01
Ring
Fire
Ring of Orange Flames; Orange Center
VCO_LGRINHEAL01
Ring
Heal
Ring of Yellow/Teal Lights; Yellow Center
VCO_LGRINHOLY01
Ring
Holy
Ring of Yellow/White Lights; Yellow Center
VCO_LGRINMIND01
Ring
Mind
Ring of Blue/Purple Lights; Blue Center
VCO_LGRINNATR01
Ring
Nature
Ring of Yellow Leaves; Green Center
VCO_LGRINODD01
Ring
Odd
Ring of Purple/White Lights; Purple Center
VCO_LGRINSONC01
Ring
Sonic
Ring of White Lights; White Center
2&
-
??
SPIRAL VISUAL NAME
DESCRIPTION
VCO_LGSPRACID01
Spiral
Acid
Green
Spirals with White Lights
VCO_LGSPRCOLD01
Spiral
Cold Light
Blue
Spirals with White Lights
VCO_LGSPRELEC01
Spiral
Electricity
White
Spirals with White Lights
VCO_LGSPREVIL01
Spiral
Evil Red
Spirals with White Lights
VCO_LGSPRFIRE01
Spiral
Fire
Orange
Spirals with Orange Lights
VCO_LGSPRHEAL01
Spiral
Heal
Yellow/
Teal
Spirals with Yellow Lights
VCO_LGSPRHOLY01
Spiral
Holy
Yellow
Spirals with Yellow Lights
VCO_LGSPRMIND01
Spiral
Mind Blue
Spirals with Blue Lights
VCO_LGSPRNATR01
Spiral
Nature
Green
Spirals with Yellow Lights
VCO_LGSPRODD01
Spiral
Odd
Purple
Spirals with White Lights
VCO_LGSPRSONC01
Spiral
Sonic
White
Spirals with White Lights
UPWARDS VISUAL NAME
DESCRIPTION
VCO_LGUPELEC01
Pillar
Electricity
Pillar of White/Blue Centers with White
Center
VCO_LGUPEVIL01
Pillar
Evil
Pillar of Red Centers with White Center
VCO_LGUPFIRE01
Pillar
Fire
Pillar of Orange Centers with White Center
VCO_LGUPHOLY01
Pillar
Holy
Pillar of Yellow Centers with White Center
VCO_LGUPMIND01
Pillar
Mind
Pillar of Blue Centers with White Center
VCO_LGUPNATR01
Pillar
Nature
Pillar of Green Centers with White Center
VCO_LGUPODD01
Pillar
Odd
Pillar of Purple Centers with White Center
VCO_LGUPSONC01
Pillar
Sonic
Pillar of White Centers with White Center
GLOBE VISUAL NAME
DESCRIPTION
VCO_MEBALACID01
Ball
Acid
Ball of Swirling Green/White Trails
VCO_MEBALCOLD01
Ball
Cold
Ball of Swirling Light Blue/White Trails
VCO_MEBALELEC01
Ball
Electricity
Ball of Swirling White/Blue Trails
VCO_MEBALEVIL01
Ball
Evil
Ball of Swirling Red Trails
2
VCO_MEBALFIRE01
Ball
Fire
Ball of Swirling Orange Trails
VCO_MEBALHEAL01
Ball
Heal
Ball of Swirling Yellow/Teal Trails
VCO_MEBALHOLY01
Ball
Holy
Ball of Swirling Yellow Trails
VCO_MEBALMIND01
Ball
Mind
Ball of Swirling Blue/Purple Trails
VCO_MEBALNATR01
Ball
Nature
Ball of Swirling Green/Yellow Trails
VCO_MEBALODD01
Ball
Odd
Ball of Swirling Purple Trails
VCO_MEBALSONC01
Ball
Sonic
Ball of Swirling White Trails
2/
??
-
,
*
: -
*
??
=
VCA_
Casting Visual effect displayed after conjuring a spell
VAR_
Area Visual effect displayed after conjuring a spell
DRAG
Dragon Breath Effect appropriate casting visual
<EFFECT>
School of magic most associated with the visuals
DRAGON VISUAL NAME
DESCRIPTION
VCA_DRAGACID
Dragon Breath
Acid Downward Green Breath Cone
VAR_DRAGCOLD
Dragon Breath
Cold Downward Light Blue Breath Cone
VCA_DRAGELEC
Dragon Breath
Electricity Downward Grey Breath Cone
VCA_DRAGFIRE
Dragon Breath
Fire Downward Orange Breath Cone
VCA_DRAGGAS
Dragon Breath
Gas Downward Dull Green Breath Cone
VCA_DRAGMIND
Dragon Breath
Mind Downward Blue Breath Cone
VCA_DRAGODD
Dragon Breath
Odd Downward Purple Breath Cone
VCA_DRAGFIRE
Dragon Breath
Fire Downward Orange Breath Cone
22
??
-
,
*
: -
*
??
(,
VCA_
Casting Visual Effect displayed after conjuring a spell
VAR_
Area Visual Effect displayed after conjuring a spell
CONE
Cone Shaped Effect appropriate casting visual
OUT
Outward Shaped Effect appropriate casting visual
<EFFECT>
School of magic most associated with the visuals
##
??
Index number of the visual effect for similar names
CONE VISUAL NAME
DESCRIPTION
VCA_CONEACID01
Area
Cone
Acid Green Cone Cloud
VAR_CONECOLD
Area
Cone
Cold Light Blue/White Cone Cloud
VAR_CONEDISEASE
Area
Cone
Disease Dull Green Cone Cloud with Green
Specks
VCA_CONEEVIL01
Area
Cone
Evil Red Cone Cloud
VAR_CONEFIRE
Area
Cone
Fire Orange Cone Cloud
VCA_CONENATR01
Area
Cone
Nature Purple Cone Cloud
VAR_CONEPOISON
Area
Cone
Poison Green/Black Cone Cloud
VAR_CONEPRIS
Area
Cone
Prismatic Rainbow Cone Sparkles
VCA_CONESONC01
Area
Cone
Sonic White Cone Cloud
VAR_CONESPAR
Area
Cone
Sparkles Rainbow Cone Cloud
OUTWARD VISUAL
NAME
DESCRIPTION
VCA_OUTACID01
Outward
Acid Green/White Cloud Burst
VCA_OUTCOLD01
Outward
Cold Light Blue Cloud Burst
VCA_OUTELEC01
Outward
Electricity White Cloud Burst
VCA_OUTEVIL01
Outward
Evil Red Cloud Burst
VCA_OUTFIRE01
Outward
Fire Orange Cloud Burst
VCA_OUTHEAL01
Outward
Heal Yellow/Teal Cloud Burst
VCA_OUTHOLY01
Outward
Holy Yellow Cloud Burst
VCA_OUTMIND01
Outward
Mind Blue/Purple Cloud Burst
VCA_OUTNATR01
Outward
Nature Green Sparkles
VCA_OUTNEG
Outward
Negative Dark Purple/Black Cloud
VCA_OUTPOS
Outward
Positive White Cloud Burst
VCA_OUTSONIC
Outward
Sonic White Burst and Concentric White Rings
29
-
*
: -
*
??
VCA_
Casting Visual Effect displayed after conjuring a spell
VAR_
Area Visual Effect displayed after conjuring a spell
VCE_
Energy Effect displayed after conjuring a spell
CONE
Cone Shaped Effect appropriate casting visual
OUT
Outward Shaped Effect appropriate casting visual
<EFFECT>
School of magic most associated with the visuals
##
Index number of the visual effect for similar names
UPWARD VISUAL
NAME
DESCRIPTION
VCA_UPHEXACID01
Pillar
Acid
Shaft of Green/White Light
VCA_UPHEXCOLD01
Pillar
Cold
Shaft of Light Blue/White Light
VCA_UPHEXELEC01
Pillar
Electricity
Shaft of White Light
VCA_UPHEXEVIL01
Pillar
Evil
Shaft of Red/White Light
VCA_UPHEXFIRE01
Pillar
Fire
Shaft of Orange/White Light
VCA_UPHEXHEAL01
Pillar
Heal
Shaft of Yellow/Teal/White Light
VCA_UPHEXHOLY01
Pillar
Holy
Shaft of Yellow/White Light
VCA_UPHEXMIND01
Pillar
Mind
Shaft of Blue/Purple/White Light
VCA_UPHEXNATR01
Pillar
Nature
Shaft of Green/Yellow/White Light
9
??
-
-
D*
??
??
These are the visual effects that may be used in scripts to provide special effects for spell casting
and other actions. These are typically used with the EffectVisualEffect() or EffectBeam()
functions.
+
??
:*
??
+
VFX_
=
%
8 =B
Visual Special Effect
BEAM_
Beam Effect
<EFFECT>
Effect Category for the visual effect
BEAM VISUAL NAME
DESCRIPTION
VFX_BEAM_COLD
Light Blue Light Beam with crackling White Streaks around it
VFX_BEAM_EVIL
Red Light Beam with crackling White Streaks around it
VFX_BEAM_FIRE
Orange Light Beam with crackling White Streaks around it
VFX_BEAM_FIRE_LASH
Two (2) Orange Fiery Whips that strike the Target
VFX_BEAM_HOLY
Yellow Light Beam with crackling White Streaks around it
VFX_BEAM_LIGHTNING
Three (3) White/Blue Lightning Streaks that strike the Target
VFX_BEAM_MIND
Blue Light Beam with crackling White Streaks around it
VFX_BEAM_ODD
Purple Light Beam with crackling White Streaks around it
=
??
:*
VFX_
COM_
??
? $
Visual Special Effect
Combat Effect
BLOOD_
Blood Spray effect
CHUNK_
Body Chunk effect
HIT_
On Hit effect
SPECIAL_
Special Purpose effect
<EFFECT>
Effect Category for the visual effect
COMBAT VISUAL NAME
DESCRIPTION
VFX_COM_
SPARKS_PARRY
UNLOAD_MODEL
9
=
-
VFX_COM_BLOOD_
CRT_GREEN
CRT_RED
CRT_WIMP
CRT_YELLOW
LRG_GREEN
LRG _RED
LRG _WIMP
LRG _YELLOW
REG_GREEN
REG _RED
REG _WIMP
REG _YELLOW
SPARK_LARGE
SPARK_MEDIUM
SPARK_SMALL
VFX_COM_CHUNK_
BONE_MEDIUM
GREEN_MEDIUM
GREEN_SMALL
RED_LARGE
RED_MEDIUM
RED_SMALL
YELLOW_MEDIUM
YELLOW_SMALL
VFX_COM_HIT_
ACID
DIVINE
ELECTRICAL
FIRE
FROST
NEGATIVE
SONIC
VFX_COM_SPECIAL_
BLUE_RED
9
??
-
PINK_ORANGE
RED_ORANGE
RED_WHITE
WHITE_BLUE
WHITE_ORANGE
9
??
-
$
??
:*
??
=
$
VFX_
Visual Special Effect
DUR_
Duration Effect
AURA_
Aura effect
LIGHT_
Illumination effect
MIND_AFFECTING_
PROT_
PROTECTION_
<EFFECT>
COMBAT VISUAL NAME
Mind Affecting effect
Protective effects that Cover the Target
Protection effects
Effect Category for the visual effect
DESCRIPTION
VFX_DUR_
ANTI_LIGHT_10
BARD_SONG
White Notes Floating Up
BLACKOUT
BLIND
BLINDVISION
BLUR
CESSATE_NEGATIVE
CESSATE_NEUTRAL
CESSATE_POSITIVE
DARKNESS
DARKVISION
ELEMENTAL_SHIELD
Ring of Outward Radiating Orange Flames on Ground
ENTANGLE
ETHEREAL_VISAGE
Covers Object in Purple Glow
FREEDOM_OF_MOVEMENT
Green Light on Ground Surrounded by Green Light Dots
GHOSTLY_PULSE
GHOSTLY_VISAGE Covers
Object in Blue Glow
GLOBE_INVULNERABILITY
Transparent Purple and Green Dense Smoky Globe
GLOBE_MINOR
Transparent Purple Sparse Smoky Globe
INVISIBILITY
Turns Object Transparent
LIGHT
LOWLIGHTVISION
9!
??
-
MAGIC_RESISTANCE
??
Five (5) Teal Spinning Angled Rune Circles
MAGICAL_SIGHT
MIRV_ACID
PARALYZE_HOLD
Four (4) Swirling Trails of White Lights moving in Opposite
Directions
PARALYZED
Object is Covered by a White and Red Glow
SANCTUARY
Two (2) Spirals of Blue Lights
SPELLTURNING
Ring of Outward Radiating Blue Flames on Ground
ULTRAVISION
Floating Light Blue and Purple Eyes that Appear and Disappear
WEB
White Web Strands Attach to the Object
WEB_MASS
VFX_DUR_AURA_
COLD
DISEASE
DRAGON_FEAR
FIRE
ODD
POISON
SILENCE
VFX_DUR_LIGHT_
BLUE_10
BLUE_15
BLUE_20
BLUE_5
GREY_10
GREY _15
GREY _20
GREY _5
ORANGE_10
ORANGE _15
ORANGE _20
ORANGE _5
PURPLE_10
PURPLE _15
PURPLE _20
PURPLE _5
9&
-
??
RED_10
RED _15
RED _20
RED _5
WHITE_10
WHITE _15
WHITE _20
WHITE _5
YELLOW_10
YELLOW _15
YELLOW _20
YELLOW _5
BLUE_10
BLUE_15
BLUE_20
BLUE_5
GREY_10
GREY _15
GREY _20
GREY _5
VFX_DUR_MIND_AFFECTING_
DISABLED
DOMINATED
Spinning Crown of Stacked White/Blue/Purple Lights
FEAR
Floating Black Skulls surrounded by Orange Flames
NEGATIVE
Cloud of Light Blue and White Spiraling Lights
POSITIVE
Spinning Crown of Blue Streaks and White Lights
VFX_DUR_PROT_
BARKSKIN
Object is Covered by Brown Bark Pattern
GREATER_STONESKIN
Object is Covered by Gray Stone Pattern
PREMONITION
Globe of Light Blue Swirling Fog with Floating Blinking Eyes
SHADOW_ARMOR
Object is Covered by Black Cloudy Pattern
STONESKIN
Object is Covered by Gray Stone Pattern
VFX_DUR_PROTECTION_
ELEMENTS
Orange Streaks and White Lights Floating up from the Ground
EVIL_MAJOR
Pillar of Red Streaks Floating up from the Ground
9
-
EVIL_MINOR
Small Cloud of Red Lights Floating Up
GOOD_MAJOR
Pillar of Yellow Streaks Floating up from the Ground
GOOD_MINOR
Small Cloud of Yellow Lights Floating up
9/
??
-
5
5
??
:*
??
54
VFX_
Visual Special Effect
FNF_
Fire and Forget Effect
GAS_EXPLOSION_
HOWL_
LOS_
<EFFECT>
COMBAT VISUAL NAME
??
%
Gas Explosion effect
Howling effect
Line of Sight effect
Effect Category for the visual effect
DESCRIPTION
VFX_FNF_
BLINDDEAF
Large White Light Flash and Smaller Light Blue Light Flashes
DISPEL
Outward Spiraling White Cloudy Strands
DISJUNCTION
Dense Outward Spiraling Light Blue Cloudy Strands
DISPEL_GREATER
Dense Outward Radiating White Fog
FIREBALL
FIRESTORM
Large Rain of Fire with Orange Fire Clouds on the Ground
HORRID_WILTING
Dull Green Cloud with White Sparkles and Gas Spores
Spawning on Ground
ICESTORM
Light Blue Icicles dropping from the Sky with Explosive
Impacst
IMPLOSION
Spinning Yellow Fog Rings Converge on the Target, ending
with Black Smoke
MASS_HEAL
MASS_MIND_AFFECTING
METEOR_SWARM
Black Rocks dropping from the Sky amidst Fire Clouds and
Explosive Impacts
NATURES_BALANCE
Green Rune Disk on Ground with Green Streaks moving up
and Blue Lights moving down
PWKILL
Red Rune Disk on Ground with Four (4) Lightning Bolts in
Pyramid Shape
PWSTUN
Cloud of White Lights and Purple Streaks
SCREEN_BUMP
SCREEN_SHAKE
SMOKE_PUFF
SOUND_BURST
Concentric White Circles moving down to Ground and
Emanating Outwards
STORM
Black Shadows on Ground with Green Rain Falling
92
-
??
STRIKE_HOLY
Pillar of Yellow Light from the Sky
SUMMON_CELESTIAL
Brown Fog with Three (3) Crystal Claw Pillars that Rise from
Ground
SUMMON_GATE
Brown Fog with Three (3) Stone Claw Pillars that Rise from
Ground
SUMMON_MONSTER_1
Grey Fog Cloud with White Explosive Burst
SUMMON_MONSTER_2
White Rune Disk with White Cloud and White Ribbon Lights
SUMMON_MONSTER_3
White Rune Ring with Yellow/Teal Flame Clouds around Edge
SUMMON_UNDEAD
Ghostly White Fountain of Light Clouds
SUNBEAM
Angled Orange Pillar of Flames from the Sky
TIME_STOP
Teal Rune Disk on Ground with Angled White Rune Circles in
Air above Caster
WAIL_O_BANSHEES
White Clouds with Large Clear Blue Ghoul that Spawns in
Shafts of White Light
WEIRD
Black Shadows with Large Two-Headed Tentacle Horror that
Spawns on Ground
WORD
VFX_FNF_GAS_EXPLOSION_
ACID
Small Explosive Green Sparks and Green Puff of Smoke
EVIL
Small Explosive Red Sparks and Green Puff of Smoke
FIRE
Small Explosive Orange Sparks and Green Puff of Smoke
GREASE
Small Explosive Black Sparks and Black Puff of Smoke
MIND
Small Explosive Blue Sparks and Blue Puff of Smoke
NATURE
Small Explosive Brown Sparks and Brown Puff of Smoke
ACID
Small Explosive Green Sparks and Green Puff of Smoke
VFX_FNF_HOWL_
MIND
ODD
WAR_CRY
WAR_CRY_FEMALE
VFX_FNF_LOS_
EVIL_10
EVIL_20
EVIL_30
HOLY_10
HOLY_20
HOLY_30
NORMAL_10
99
NORMAL_20
NORMAL_30
??
-
-
??
:*
??
?
VFX_
Visual Special Effect
IMP_
Impact Effect
AURA_
Aura effect
HEAD_
Hovering Head effect
PULSE_
<EFFECT>
COMBAT VISUAL NAME
-
??
??
Pulsing effect
Effect Category for the visual effect
DESCRIPTION
VFX_IMP_
AC_BONUS
Three (3) Stacked White Rings Form Around the Target (SFX:
Power Up)
ACID_L
Large Green/Yellow Explosive Burst (SFX: Acid Sizzle)
ACID_S
Small Green/Yellow Explosive Flash (SFX: Acid Sizzle)
BLIND_DEAF_M
Thick White Ring Forms Around top of Target (SFX: Tinkling
Chimes)
BREACH
White Cloud with Large White Sparkles
CHARM
Cloud of Purple/Blue Lights
CONFUSION_S
Small White Explosive Flash (SFX: Tinkling Glass)
DAZED_S
Two (2) Spinning White Interwoven Rings with White Lights
DEATH
White Flash of Light and Ghostly White Vapors Floating Up
DEATH_L
White Flash of Light in a Red Cloud
DEATH_WARD
Hollow Pillar of Swirling Purple Vapors
DESTRUCTION
Purple Streaks Converge into Purple Cloud (SFX: Funneling
Wind)
DISEASE_S
Small Brown Explosive Cloud with Black Insects (SFX: Insect
Sounds)
DISPEL
Light Blue Cloud with Large White Sparkles
DISPEL_DISJUNCTION
DIVINE_STRIKE_FIRE
Orange Pillar of Flame from Sky that Explodes on Strike
DIVINE_STRIKE_HOLY
Yellow Pillar of Flame from Sky that Explodes on Strike
DOMINATE_S
Four (4) Spinning White Interwoven Rings (SFX: Low
Vibration)
DOOM
Black Cloud with Three (3) Lightning Strikes (SFX:
Thunder/Lightning)
ELEMENTAL_PROTECTION
Green and Orange Flame Cloud
EVIL_HELP
Red Rune Ring that Flies up from Ground to the Sky
-
??
FEAR_S
FLAME_M
Medium Orange and Black Explosive Burst (SFX: Fireburst)
FLAME_S
Small Orange Explosive Flash (SFX: Fireburst)
FORTITUDE_SAVING_THROW
_USE
FROST_L
Large Light Blue Explosive Burst (SFX: Crackling Ice)
FROST_S
Small Light Blue Explosive Flash (SFX: Crackling Ice)
GLOBE_USE
Transparent White Globe that Flashes Once
GOOD_HELP
Yellow Rune Ring that Falls down from Sky to the Ground
GREASE
Small Purple Circle with Spikes on Ground
HARM
Pillar of Red Light from Sky Strikes Target (SFX: Searing)
HASTE
Small Blue Circle with Spikes on Ground (SFX: Power Up)
HEALING_G
Short Pillar of Yellow/Teal/White Vertical Streaks around
Target
HEALING_L
Teal/White Sparkles Spiral Up around Target
HEALING_M
Yellow Cloud Pours down into Yellow/Teal Cloud of Lights
HEALING_S
Two (2) Teal / White Sparkle Trails Rotate around Target
HEALING_X
Pillar of Teal Light from Sky Strikes Target
HOLY_AID
White and Yellow Streaks Converge into White Cloud
IMPROVE_ABILITY_SCORE
Purple and Yellow Lights Spiral around Target
KNOCK
Light Blue Streaks Converge into White Cloud (SFX:
Lockpicks)
LIGHTNING_M
Medium White Explosive Burst (SFX: Static Charge)
LIGHTNING_S
Small White Explosive Burst (SFX: Static Charge)
MAGBLUE
Blue/White Explosive Burst (SFX: Sizzle)
MAGIC_PROTECTION
Blue Lights Floating Up to Form Cloud that Dissipates Toward
Ground (SFX: Wind)
MAGIC_RESISTANCE_USE
MAGICAL_VISION
Blue/White Smoke Spirals with Floating Eyes
MIRV
Wobbly Blue Cloud that Moves to Target (SFX: Accelerating
Wind)
MIRV_FLAME
Flame Tipped Arrow
NEGATIVE_ENERGY
Red/White Explosive Burst (SFX: Howling Sizzle)
POISON_L
POISON_S
POLYMORPH
Pillar of Green Angled Shafts of Light Strike into White Cloud
RAISE_DEAD
REDUCE_ABILITY_SCORE
Red Streaks Converge into Black Cloud
-
??
REFLEX_SAVE_THROW_USE
REMOVE_CONDITION
Cloud of Yellow/Teal Sparkles
RESTORATION
Three (3) Large Yellow and Teal Light Globes Dissolve into
Sparkles
RESTORATION_GREATER
Cloud of Yellow/Teal Lights Spiral around Target
RESTORATION_LESSER
Four (4) Small Yellow and Teal Light Globes around Target
SILENCE
Three (3) White Concentric Ring Patterns on Ground (SFX:
Wobble)
SLEEP
White Z's Floating up (SFX: Snoring)
SLOW
Small Purple Circle with Spikes on Ground (SFX: Power
Down)
SONIC
Small White Explosive Flash with Two (2) White Rings (SFX:
Whistling)
SPELL_MANTLE_USE
SPIKE_TRAP
STUN
Medium White Explosive Burst
SUNSTRIKE
Yellow/White Explosive Flash
SUPERHEROISM
Creature turns into Large Skull Armored Warrior with Flaming
Sword
UNSUMMON
Red Rune Ring Expands on Ground with Red Streaks
Shooting Up
WILL_SAVING_THROW_USE
VFX_IMP_AURA_
FEAR
HOLY
NEGATIVE_ENERGY
UNEARTHLY
VFX_IMP_HEAD_
ACID
Four (4) Green/White Streaks Meet to form Green Sphere
COLD
ELECTRICITY
EVIL
FIRE
HEAL
Two (2) Teal and Two (2) Yellow Streaks Meet to form White
Sphere
HOLY
Yellow Expanding Cloud
MIND
NATURE
Four (4) Yellow Streaks Meet to form Green Sphere
ODD
Purple Explosive Cloud
SONIC
Four (4) White Streaks Meet to form White Sphere
VFX_IMP_PULSE_
COLD
FIRE
HOLY
NATURE
NEGATIVE
WATER
WIND
!
??
-
"
? ??
??
:*
??
-1
VFX_
Visual Special Effect
AOE_
Area of Effect
MOB_
Mobile effect
PER_
Persistent effect
<EFFECT>
COMBAT VISUAL NAME
"
? ??
Effect Category for the visual effect
DESCRIPTION
VFX_AOE_MOB_
BLINDING
CIRCCHAOS
CIRCEVIL
Circle of Purple Lights on Ground Rotating in Opposite
Directions
CIRCGOOD
Circle of Yellow Lights on Ground Rotating in Opposite
Directions
CIRCLAW
DRAGON_FEAR
ELECTRICAL
FEAR
FIRE
FROST
INVISIBILITY_PURGE
MENACE
PROTECTION
SILENCE
Circle of White Lights on Ground Rotating in Opposite
Directions
STUN
TYRANT_FOG
UNEARTHLY
UNNATURAL
VFX_AOE_PER_
CREEPING_DOOM
Swarm of Small Black Insect Dots
DARKNESS
Large Inky Black Cloud
DELAY_BLAST_FIREBALL
Orange Sparkling Lights on Ground
ENTANGLE
Random Patches of Brown Clouds with Brown Tendrils
&
??
-
??
Reaching Out
EVARDS_BLACK_TENTACLES
Random Patches of Black Smoke with Black Tendrils
Reaching Out
FOGACID
Large Green Cloudy Patches on Ground
FOGFIRE
Large Orange Fiery Cloud Patches on Ground
FOGGHOUL
Large Brown Cloudy Patches on Ground
FOGKILL
Large Red Cloudy Patches on Ground
FOGMIND
Large Blue Cloudy Patches on Ground
FOGSTINK
Large Greenish Yellow Cloudy Patches on Ground
GREASE
Large Black Cloudy Patches on Ground
INVIS_SPHERE
STORM
WALLBLADE
Line of Brown Cloud Patches with Sharp Blades Shooting
from Ground
WALLFIRE
Line of Orange Fiery Clouds
WALLWIND
WEB
White Overlapping Web Pattern on the Ground
,
,
1
1
Primary changes to create version 3.0 include:
•
All new information on animation, bones, skins and meshes in the Creatures section.
•
All new section on Custom Races.
•
Added new sections on Visual Effects and a reference on Spell Effects
•
Updated the procedures for adding multiple hakpaks.
•
Updated the section on dialog.tlk.
•
Updates to baseitems.2da and iprp_spells.2da.
•
Added a section on Normals and on Smoothing Groups to the Weapons tutorial.
Primary changes to create version 2.01 include:
•
No content changes.
•
Turned all hyperlinks into clickable URLs (I am now using PDF995 instead of PDFCreator to
generate the PDF file).
•
Added bookmarks.
Primary changes to create version 2 include:
•
Added notes about the new patch.bif file in section 1.
•
Added more notes about DDS files in the weapons section.
•
Updated the section on voicesets, especially with regard to PC voicesets.
•
Added a full description of portraits.2da and soundset.2da.
•
Added a tutorial on Creatures.
•
Added Feats.2da.
•
Updated the tools section at the end of this tutorial with newer information.
Primary changes to create version 1.1 include:
•
Removed references to OpenFX. There do not seem to be import/export scripts for this
modeling tool anyway. Added a reference to Milkshape 3D instead.
•
Added a few more tools including pltcon.
•
Minor changes/additions to the Weapons tutorial, including info about textures, etc. Added a
pointer to the OnHit hak by Sekhmet. Greatly expanded the section on baseitems.2da. Added
notes on weapons that bend (like flails).
•
Few or no changes to Portraits or Sounds.
•
Added a new section on Items without Models
•
Added a new section on Armor
•
Added a new section on Spells
•
Reorganized and added material to the Other Tutorials section
•
Added a section on Appearance.2da to at least give the impression I’m thinking about working
on creatures next. :-)
/
,
2
1