Creature objects can be either Players or more general NPC Creatures. Since a creature has a very expansive set of options these will be likely broken into different subpages.
Creature blueprints are UTC files.
Limitations of Creatures versus Players
There are some limitations on creature NPCs compared to Player objects;
- No spellbooks as such, all spells are pre-set as slots memorised for use - check it by possessing a creature as a DM (not full powers)
- Toolset limits (which may potentially be overcome by GFF editing):
- No access to Clerical domains (although the feats can be added which are mostly equivalent)
- No access to Wizard Spell Schools (they all are generalists) although this primarily affects amount of spell slots and spell restrictions
- No way to alter an animal companion/familiar choice, or name (defaults to 0 and a blank name)
- No levelup data, no XP, etc. (see below for Levelling Up a Creature info
Apart from NWNX altering the base statistics, feats, spells or other things after spawning is hard (item properties for feats for instance) or impossible (changing spells known dynamically).
NPCs on the other hand have these benefits:
- No limit on amount of feats known, or feat choices, and allows special creature-only feats (eg; Blindsense)
- No real limit on the creatures alignment or feats/levels for prestige classes (although the levelup wizard tries to enforce it). Note LevelUpHenchman may fail though.
- Monster classes can be used (and can go up to 60)
- Monster abilities can be used, and monster spells (given a maximum caster level of 15)
- Arbitrary HP, and stats, assignments even natural AC can be added
Creating a Creature
A creature is loaded from a UTC with CreateObject, or is loaded in the game from an altered blueprint in a .GIT information file when placed in an Area. Or you can copy an existing one using CopyObject by which essentially clones it (even a Player can be cloned although it loses it's player-like bits).
Each of these goes through a validation stage where the creatures spells and abilities are truncated to match a legal limit (eg; a wizard can't have 40 castings of Ray of Frost prepared). Note the toolset does very light validation of this (only on clerics?), and creature abilities and spell abilities are ignored more or less from these checks.
The creature usually runs it's OnSpawn event at inception to setup variables and other useful things. Obviously if one is set using SetEventScript it won't fire it since it only does it once (although you can simulate it with ExecuteScript).
Levelling Up a Creature
A created creature can be levelled up, which refreshes the spells and abilities in use, using LevelUpHenchman (it can be used on anything). A valid level up package is needed which in itself needs a valid creature to level (eg; if the package or class requires a certain feat be taken or even the right alignment, it being wrong will cause the process to fail). Usually non-player races just get increased BAB, Saves and HP, while player ones get appropriate feats, and some spells.
The process essentially causes the level up screen to run through hitting "Recommend" on the package selected.
The function also raises the CR by 1 each time it is used (and is successful).
Removing levels from a Creature
There is no level up information stored on a creatures file, and none is added using LevelUpHenchman, therefore de-levelling an NPC is usually impossible (it won't know what to remove).
To simulate a creature being de-levelled (eg; a NPC companion) you could create the base henchman again, and LevelUpHenchman to the point it needs to be, copying over variables and items as needed.