<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.alandfaraway.info/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arianna</id>
		<title>ALFA - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.alandfaraway.info/Wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Arianna"/>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/wiki/Special:Contributions/Arianna"/>
		<updated>2026-04-10T18:34:10Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Stormlord&amp;diff=4060</id>
		<title>Stormlord</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Stormlord&amp;diff=4060"/>
				<updated>2025-10-19T20:24:55Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Classes]]&lt;br /&gt;
[[Category:Prestige Classes]]&lt;br /&gt;
{{Class&lt;br /&gt;
| Image = [[Image:stormlord.jpg|256px|Stormlord]]&lt;br /&gt;
| Name = Stormlord&lt;br /&gt;
| HitDie = d8&lt;br /&gt;
| Skills = 2&lt;br /&gt;
| Proficiencies = ''None''&lt;br /&gt;
| ClassSkills = [[Concentration]], [[Disguise]], [[Gather Information]], [[Intimidate]], [[Knowledge: Nature]], [[Knowledge: Relgion]], [[Survival]], [[Swim]]&lt;br /&gt;
| Requirements = Yes&lt;br /&gt;
| ReqFeats = [[Great Fortitude]], [[Toughness]], [[Weapon Focus]] in a Stormlord weapon ([[Spear]], [[Throwing axe]], [[Dart]], or [[Shuriken]])&lt;br /&gt;
| ReqOther = [[Saving Throws]]: [[Fortitude]] +4, Able to cast 3rd-level divine spells.    Diety is Talos or Auril.&lt;br /&gt;
| Source = [[Complete Divine]]&lt;br /&gt;
}}&lt;br /&gt;
{{ExternalSource_d20srd|http://www.d20srd.org/srd/classes/}}&lt;br /&gt;
{{ExternalSource_nwn2wiki|http://nwn2.wikia.com/wiki/Stormlord}}&lt;br /&gt;
{{ExternalSource_realmshelps|http://www.realmshelps.net/charbuild/classes/prestige/realms/stormlord.shtml}}&lt;br /&gt;
{{ExternalSource_frwiki|http://forgottenrealms.wikia.com/wiki/Stormlord}}&lt;br /&gt;
&lt;br /&gt;
: ''&amp;quot;Talos the Destroyer embodies the uncaring and destructive forces of nature that may strike at any time. Stormlords are the chief agents of the Destroyer's wrath, inflicting destructive rampages wherever they wander in order to spread word of his endless fury. Talos cares only that they call up a storm or engage in a spectacular act of violence every tenday or so.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
Most stormlords are clerics, druids, or cleric/sorcerers, although other class combinations, particularly those including fighter or even barbarian, are not unknown. Wizards have their own means of destroying things, and bards rarely can generate enough force with their spells to be considered worthy by the Destroyer.&lt;br /&gt;
&lt;br /&gt;
Stormlords often live as brigands, indulging their personal desires for wealth, food, luxury items, and wanton behavior as they crave random, spectacular acts of violence. They often pose as lunatics, in order to spread the word of Talos, and otherwise adopt disguises in order to scout out rich prizes to strike at.&lt;br /&gt;
&lt;br /&gt;
Stormlords wield thunder and lightning like a warrior wields his sword. Because of their command of one of the most destructive aspects of nature, Stormlords are viewed with awe and fear by lesser folk, regardless of their motivation.&lt;br /&gt;
&lt;br /&gt;
A Stormlord is a kind of battle cleric. The character continues to develop her divine spellcasting without any loss of spell levels or spells per day, gains several nice bonuses to certain weapons, and exceptional resistance to electrical damage. The weapon bonuses apply only to Stormlord weapons, meaning the Spear, Throwing axe, Dart, and Shuriken. Clerics tend to make the best Stormlords, but most any divine spellcasting character will be able to unlock the class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Class Features ==&lt;br /&gt;
{{ClassProgression&lt;br /&gt;
| MaxLevel = 10&lt;br /&gt;
| BAB = Medium&lt;br /&gt;
| Fortitude = High&lt;br /&gt;
| Reflex = Low&lt;br /&gt;
| Will = High&lt;br /&gt;
| Special1 = +1 divine spellcasting level, [[Enhanced Weapons]] +1, [[Electricity Resistance]] 5/&lt;br /&gt;
| Special2 = +1 divine spellcasting level, [[Shock Weapon]]&lt;br /&gt;
| Special3 = +1 divine spellcasting level &lt;br /&gt;
| Special4 = +1 divine spellcasting level, [[Electricity Resistance]] 10/&lt;br /&gt;
| Special5 = +1 divine spellcasting level, [[Shocking Burst Weapon]]&lt;br /&gt;
| Special6 = +1 divine spellcasting level, [[Enhanced Weapons]] +2&lt;br /&gt;
| Special7 = +1 divine spellcasting level, [[Electricity Resistance]] 15/&lt;br /&gt;
| Special8 = +1 divine spellcasting level, [[Shocking Burst and Sonic Weapon]]&lt;br /&gt;
| Special9 = +1 divine spellcasting level, [[Enhanced Weapons]] +3, [[Electricity Immunity]]&lt;br /&gt;
| Special10 = +1 divine spellcasting level, [[Extended Storm Avatar]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Spells Per Day/Spells Known:''' When a new Stormlord level is gained, the character gains new spells per day as though he had gained a level in whatever divine spellcasting class gave him access to 3rd-level divine spells. If the character has more than one applicable divine spellcasting class, he must pick one to improve.&lt;br /&gt;
&lt;br /&gt;
'''Electricity Resistance'''&lt;br /&gt;
&lt;br /&gt;
Stormlords are granted resistance to Electrical Damage 5/- at 1st level, 10/- at 4th level, and 15/- at 7th level.&lt;br /&gt;
&lt;br /&gt;
'''Enhanced Weapons'''&lt;br /&gt;
&lt;br /&gt;
Stormlord weapons (Spear, Throwing axe, Dart, or Shuriken) get +1 a enhancement bonus at 1st level, +2 at 6th level, and +3 at 9th level. This enhancement bonus ''stacks'' with any enhancement bonus on the weapon, so if you have a Spear +5 you'll actually get a +8 enhancement at level 9.&lt;br /&gt;
&lt;br /&gt;
'''Shock Weapon'''&lt;br /&gt;
&lt;br /&gt;
At the 2nd level, a Stormlord may add 1d8 Electricity damage to their weapon for 20 rounds (if they are wielding a Stormlord weapon: Spear, Throwing Axe, Dart, or Shuriken).&lt;br /&gt;
&lt;br /&gt;
''Notes: this ability sometimes does not affect your weapon if it already has elemental damage on it, such as +1d6 fire damage or +2 magical damage.''&lt;br /&gt;
&lt;br /&gt;
''The damage bonus actually gets temporarily applied to your weapon and will show up in its description when you examine it.''&lt;br /&gt;
&lt;br /&gt;
''This ability has no limit on uses per day.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Shocking Burst Weapon'''&lt;br /&gt;
&lt;br /&gt;
At the 5th level, Shock Weapon adds 1d8 Electrical plus an extra 2d8 on critical hits for 20 rounds.&lt;br /&gt;
&lt;br /&gt;
'''Shocking Burst and Sonic Weapon'''&lt;br /&gt;
&lt;br /&gt;
Same as Shocking Burst, with an added 1d8 Sonic Damage (for a total of 2d8, plus 2d8 on critical hits). Gained at 8th level.&lt;br /&gt;
&lt;br /&gt;
'''Electricity Immunity'''&lt;br /&gt;
&lt;br /&gt;
At the 9th level, a Stormlord is fully Immune to Electrical Damage.&lt;br /&gt;
&lt;br /&gt;
'''Extended Storm Avatar'''&lt;br /&gt;
&lt;br /&gt;
At the 10th level, a Stormlord may cast Storm Avatar as though Druid with caster level equal to character level with Extend Spell, once per day. This provides an increased movement speed, immunity to ranged attacks and Knockdown, +3d6 bonus electrical damage on attacks with melee weapons, and will last 1 round per character level (not class or caster level).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Classes}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4059</id>
		<title>Virtual Machine Setup</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4059"/>
				<updated>2025-09-28T20:56:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* NWNX4 Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This document describes in rough detail the recommended checklist for setting up a new game server host VM in the standard configuration.  This configuration is suitable for running nwn2server.exe as a limited user account.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
.NET 3.5 and the DirectX End-User Runtime are optional unless the toolset will be run locally on the game server host machine.&lt;br /&gt;
&lt;br /&gt;
* If running the toolset on the host is desired (optional), enable .NET 3.5 in Add/Remove Windows Features before installing DirectX&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX End-User Runtime]  (required only if the toolset will be used to stage content on the game server)&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=17851 Microsoft .NET Framework 4]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
# Install Windows Server (or Windows 10)&lt;br /&gt;
# Copy standard tools over:&lt;br /&gt;
## [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty]&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create user &amp;quot;NWN2Server&amp;quot;&lt;br /&gt;
## Add to &amp;quot;NWN2 Servers&amp;quot; SG (if using Windows Server)&lt;br /&gt;
# Create C:\NWN2, xcopy NWN2 install over (or just install NWN2)&lt;br /&gt;
## Grant &amp;quot;NWN2 Servers&amp;quot; create files, create folders to &amp;quot;This folder only&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant &amp;quot;NWN2 Admins&amp;quot; modify to folder, subfolders, and files (if using Windows Server)&lt;br /&gt;
## Import NWN2.reg (only if not installing NWN2)&lt;br /&gt;
# Create C:\NWN2User&lt;br /&gt;
## Grant full control to &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Run this in a command window: &amp;lt;code&amp;gt;Runas /profile /user:NWN2Server cmd.exe&amp;lt;/code&amp;gt; (or log in as the NWN2Server user and open up a command window)&lt;br /&gt;
## &amp;lt;code&amp;gt;cd /d &amp;quot;%userprofile%\Documents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;mklink /j &amp;quot;Neverwinter Nights 2&amp;quot; C:\NWN2User&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;putty -ssh alfa@sql.alandfaraway.info&amp;lt;/code&amp;gt;&lt;br /&gt;
### Confirm and accept central server public key for vault tunnel to work&lt;br /&gt;
# Create C:\NWNX4, xcopy NWNX4 installation over (or just simply install it)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Servers&amp;quot; for: (if using Windows Server)&lt;br /&gt;
### AuroraServerNWScript.log&lt;br /&gt;
### AuroraServerVault.log&lt;br /&gt;
### nwnx.txt&lt;br /&gt;
### nwnx_controller.txt&lt;br /&gt;
### StandardQueryLog.txt&lt;br /&gt;
### xp_mysql.txt&lt;br /&gt;
### xp_bugfix.txt&lt;br /&gt;
### xp_objectattributes.txt&lt;br /&gt;
### xp_srvadmin.txt&lt;br /&gt;
### xp_system.txt&lt;br /&gt;
### xp_time.txt&lt;br /&gt;
# Create C:\Users\Public\Desktop\Credentials.txt&lt;br /&gt;
# Copy standard links to C:\Users\Public\Desktop&lt;br /&gt;
# Copy standard links to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Tools&lt;br /&gt;
# Copy standard scripts to C:\Scripts&lt;br /&gt;
# Copy standard NWN2 tools to C:\Tools&lt;br /&gt;
# Copy NWNServerConsole to C:\NWN2\Console&lt;br /&gt;
# Fix PowerShell signing&lt;br /&gt;
## Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Install [http://git-scm.com/ Git]    Both GitHub and Git Extensions, You need this to get module updates&lt;br /&gt;
# Install [https://filezilla-project.org/ FileZilla] ( Optional depending on your needs)&lt;br /&gt;
# Install [http://msdn.microsoft.com/en-us/windows/apps/br229516 Win8 Performance Toolkit] or [https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ Windows 10 Performance Toolkit] (Optional depending on your needs) &lt;br /&gt;
# Install [http://www.7-zip.org/ 7-zip]    You need this to be able to unpack the haks when they are downloaded to the server for updates&lt;br /&gt;
# Install [http://gvim.en.softonic.com/ gvim] ( Optional depending on your needs)&lt;br /&gt;
# Install WinDbg for [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 7] or [http://msdn.microsoft.com/en-US/windows/desktop/bg162891 Windows 8.1] or [https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Windows 10]. ( Optional depending on your needs)&lt;br /&gt;
# Set &amp;lt;code&amp;gt;_NT_SYMBOL_PATH&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&amp;lt;/code&amp;gt; ( Optional depending on your needs)&lt;br /&gt;
&lt;br /&gt;
== NWNX4 Installation ==&lt;br /&gt;
# nwnx4_controller.exe -installservice&lt;br /&gt;
# Configure NWNX4-1 service to run as the &amp;quot;NWN2Server&amp;quot; user:&lt;br /&gt;
## If using a Microsoft account (user@email) for the server user, use Computername\Username where Username is the value that %USERNAME% shows from &amp;quot;echo %USERNAME%&amp;quot; in cmd.exe and Computername is the value that %COMPUTERNAME% shows from &amp;quot;echo %COMPUTERNAME%&amp;quot; in cmd.exe.  Also, in this case, you have to manually grant this user &amp;quot;Log on as a service&amp;quot; rights by going to Local Security Policy, Local Policies, User Rights Assignment, Log on as a service, and adding Computername\Username to the list.  This only applies to accounts set up as a Microsoft account initially, not to local accounts that a Microsoft account was connected to afterwards.&lt;br /&gt;
# Get SID for NWN2Server user with PowerShell:  (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;([wmi]&amp;quot;win32_Group.Domain='$env:ComputerName',Name='NWN2 Admins'&amp;quot;).sid&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set SD on nwnx4-1 service to allow NWN2 Admins to start/stop: (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;sc sdset nwnx4-1 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWP;;;&amp;lt;NWN2 Admins SID from above command&amp;gt;)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install SSH private key to C:\NWNX4\sshfs.ppk&lt;br /&gt;
# Add SSH public key to alfa@sql.alandfaraway.info:~/.ssh/authorized_keys&lt;br /&gt;
# Set configuration in C:\NWNX4\nwnx.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerNWScript.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\xp_mysql.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\DatabaseConnector.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerVault.ini&lt;br /&gt;
&lt;br /&gt;
== Module preparation ==&lt;br /&gt;
# If the module is being cloned directly from source control or copied from a very old backup, it may be necessary to recompile the module against a current alfa2_acr.hak to ensure that the database connection (and self-update) work at module startup.  If the module never loads acr_databaseconnector in AuroraServerNWScript.log and no &amp;quot;DatabaseConnector&amp;quot; log messages in nwserverLog1.txt are seen before the ACR_OnModuleLoad: log line then this may be the problem (but also check for errors in AuroraServerNWScript.log that might indicate a misconfigured NWScript Accelerator installation).&lt;br /&gt;
# Make sure that alfa2_acr.hak is recent.  An extremely old build predating the DatabaseConnector integration may not be able to self-update the rest of the ACR.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Fixes for some problems encountered during server deployment are listed here.&lt;br /&gt;
# Module didn't load or server doesn't start up?&lt;br /&gt;
## Look at the server log file and C:\NWNX4\AuroraServerNWScript.log for errors/exceptions for next troubleshooting steps.&lt;br /&gt;
# Database doesn't connect, or many exceptions in server log about the database, or PCs (but not DM's) are booted at log on?&lt;br /&gt;
## Make sure that plink.exe was run once as the user that the NWNX4-1 service runs as in order to accept the SSH key of the central server.&lt;br /&gt;
# Monitor Server Uptime script closes immediately?&lt;br /&gt;
## Make sure that the following command was run from an administrator privileged PowerShell session: Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Game server starts with NWNX4_GUI.exe but not as a service?&lt;br /&gt;
## Make sure that the service is running as the right user.  Go to services.msc and configure it to run as the user whose %userprofile%\Documents\Neverwinter Nights 2 has the module, server vault, etc. present.&lt;br /&gt;
# Toolset doesn't start/work properly?&lt;br /&gt;
## Make sure that .NET Framework v3.5 (sometimes called .NET Framework v2.0) is installed, and then the DirectX End-User Runtime is installed.  If the DirectX End-User Runtime was installed first, it's installer has to be re-run after installing .NET Framework v3.5.&lt;br /&gt;
# Database or scripts don't work, or NWNX4 plugins didn't load?&lt;br /&gt;
## Make sure that all Visual C++ and .NET runtime dependencies were installed.&lt;br /&gt;
## Make sure that NWNScriptJIT.dll, NWNScriptJITIntrinsics.dll are installed in the NWN2 installation directory (not necessarily the NWNX4 installation directory).&lt;br /&gt;
## Make sure that plink.exe was run once as the service user (see above).&lt;br /&gt;
# Using a Microsoft account for the service account and the service fails to start with &amp;quot;The service dependency failed to start.&amp;quot;?&lt;br /&gt;
## Configure the service to log on using Computername\Username and ensure that from Local Security Policy, Local Policies, User Rights Assignment, that Computername\Username was granted &amp;quot;Log on as a service&amp;quot; rights.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4058</id>
		<title>The Silver Marches (Server)</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4058"/>
				<updated>2025-09-23T07:02:31Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Welcome to the Silver Marches! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Servers]]&lt;br /&gt;
[[Category:Live Servers]]&lt;br /&gt;
{{Server&lt;br /&gt;
| ID = 3&lt;br /&gt;
| Name = The Silver Marches&lt;br /&gt;
| HDM = {{TSM HDM}}&lt;br /&gt;
| EADM = {{TSM EADM}}&lt;br /&gt;
| DirectConnect = tsm.alandfaraway.info:5122&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== '''Welcome to the Silver Marches!''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''&amp;quot;This is a land like no other in Faerun.  Home to a diverse population of folk dedicated to carving prosperity and order from the forbidding wilderness, the area remains a little-explored and largely unconquered territory inhabited by war-hungry orc hordes, hostile giants, and an array of bloodthirsty monsters.&amp;quot;''''' –From &amp;quot;''Silver Marches''&amp;quot; by Ed Greenwood and Jason Carl&lt;br /&gt;
&lt;br /&gt;
ALFA's Silver Marches server (&amp;quot;TSM&amp;quot;) includes the city of Silverymoon, the dwarven stronghold of Citadel Felbarr, the City of Sundabar, and a number of towns and villages along the Rauvin River and the surrounding lands. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Starting Locations:'''===&lt;br /&gt;
&lt;br /&gt;
Characters created on TSM have three options for where they will begin their adventures: Rivermoot, Silverymoon, and Citadel Felbarr.&lt;br /&gt;
&lt;br /&gt;
'''Rivermoot''' is a small village at the confluence of the Rauvin and Surbrin Rivers.  At the edge of the wilderness, it is surrounded by a wooden palisade, built in the hope of fending off the goblins, orcs, and other foes in the area.  There are many opportunities for an adventurer in Rivermoot – speak to the townsfolk.  Paths lead eastward along the Rauvin towards Silverymoon, and northward into the hills towards the wilds.  All characters have the option to begin their adventures here.&lt;br /&gt;
&lt;br /&gt;
'''Silverymoon''' is a large walled city at the center of  the Marches.  Called &amp;quot;the Gem of the North&amp;quot; by many, Silvy is a center of civilization and culture in the midst of wilderness.  Humans, elves, halflings, gnomes, and dwarves all live together here in peace.  The arts, learning, craftsmanship, and hospitality are valued here.  Magic is especially valued in Silvy – the city itself is protected by magical wards; the river that divides it is spanned by the Moonbridge, an arch of pure magical force; and the  Ladies College is the foremost school of arcane learning in the North.  Opportunities abound here for adventurers.  Characters of all sorts may start in Silverymoon.&lt;br /&gt;
&lt;br /&gt;
'''Citadel Felbarr''' is a dwarven fortress perched in the snowy foothills of the Nether Mountains.  Felbarr was wrestled from the control of orcish hordes by dwarves fighting under the banner of Emerus Warcrown.  While the market areas of Felbarr are usually open to all visitors, but the deeper chambers are only open to dwarves, gnomes, or those who have proven themselves to be true friends.  Gnome and dwarf characters may choose Citadel Felbarr as their starting point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Servers}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4057</id>
		<title>The Silver Marches (Server)</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4057"/>
				<updated>2025-09-23T06:37:41Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Servers]]&lt;br /&gt;
[[Category:Live Servers]]&lt;br /&gt;
{{Server&lt;br /&gt;
| ID = 3&lt;br /&gt;
| Name = The Silver Marches&lt;br /&gt;
| HDM = {{TSM HDM}}&lt;br /&gt;
| EADM = {{TSM EADM}}&lt;br /&gt;
| DirectConnect = tsm.alandfaraway.info:5122&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== '''Welcome to the Silver Marches!''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''&amp;quot;This is a land like no other in Faerun.  Home to a diverse population of folk dedicated to carving prosperity and order from the forbidding wilderness, the area remains a little-explored and largely unconquered territory inhabited by war-hungry orc hordes, hostile giants, and an array of bloodthirsty monsters.&amp;quot;''''' –From &amp;quot;''Silver Marches''&amp;quot; by Ed Greenwood and Jason Carl&lt;br /&gt;
&lt;br /&gt;
ALFA's Silver Marches server (&amp;quot;TSM&amp;quot;) includes the city of Silverymoon, the dwarven stronghold of Citadel Felbarr, and a number of towns and villages along the Rauvin River and the surrounding lands. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Starting Locations:'''===&lt;br /&gt;
&lt;br /&gt;
Characters created on TSM have three options for where they will begin their adventures: Rivermoot, Silverymoon, and Citadel Felbarr.&lt;br /&gt;
&lt;br /&gt;
'''Rivermoot''' is a small village at the confluence of the Rauvin and Surbrin Rivers.  At the edge of the wilderness, it is surrounded by a wooden palisade, built in the hope of fending off the goblins, orcs, and other foes in the area.  There are many opportunities for an adventurer in Rivermoot – speak to the townsfolk.  Paths lead eastward along the Rauvin towards Silverymoon, and northward into the hills towards the wilds.  All characters have the option to begin their adventures here.&lt;br /&gt;
&lt;br /&gt;
'''Silverymoon''' is a large walled city at the center of  the Marches.  Called &amp;quot;the Gem of the North&amp;quot; by many, Silvy is a center of civilization and culture in the midst of wilderness.  Humans, elves, halflings, gnomes, and dwarves all live together here in peace.  The arts, learning, craftsmanship, and hospitality are valued here.  Magic is especially valued in Silvy – the city itself is protected by magical wards; the river that divides it is spanned by the Moonbridge, an arch of pure magical force; and the  Ladies College is the foremost school of arcane learning in the North.  Opportunities abound here for adventurers.  Characters of all sorts may start in Silverymoon.&lt;br /&gt;
&lt;br /&gt;
'''Citadel Felbarr''' is a dwarven fortress perched in the snowy foothills of the Nether Mountains.  Felbarr was wrestled from the control of orcish hordes by dwarves fighting under the banner of Emerus Warcrown.  While the market areas of Felbarr are usually open to all visitors, but the deeper chambers are only open to dwarves, gnomes, or those who have proven themselves to be true friends.  Gnome and dwarf characters may choose Citadel Felbarr as their starting point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Servers}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4056</id>
		<title>The Silver Marches (Server)</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4056"/>
				<updated>2025-09-23T05:40:41Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Servers]]&lt;br /&gt;
[[Category:Live Servers]]&lt;br /&gt;
{{Server&lt;br /&gt;
| ID = 3&lt;br /&gt;
| Name = The Silver Marches&lt;br /&gt;
| HDM = {{TSM HDM}}&lt;br /&gt;
| EADM = {{TSM EADM}}&lt;br /&gt;
| DirectConnect = tsm.alandfaraway.info:5121&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== '''Welcome to the Silver Marches!''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''&amp;quot;This is a land like no other in Faerun.  Home to a diverse population of folk dedicated to carving prosperity and order from the forbidding wilderness, the area remains a little-explored and largely unconquered territory inhabited by war-hungry orc hordes, hostile giants, and an array of bloodthirsty monsters.&amp;quot;''''' –From &amp;quot;''Silver Marches''&amp;quot; by Ed Greenwood and Jason Carl&lt;br /&gt;
&lt;br /&gt;
ALFA's Silver Marches server (&amp;quot;TSM&amp;quot;) includes the city of Silverymoon, the dwarven stronghold of Citadel Felbarr, and a number of towns and villages along the Rauvin River and the surrounding lands. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Starting Locations:'''===&lt;br /&gt;
&lt;br /&gt;
Characters created on TSM have three options for where they will begin their adventures: Rivermoot, Silverymoon, and Citadel Felbarr.&lt;br /&gt;
&lt;br /&gt;
'''Rivermoot''' is a small village at the confluence of the Rauvin and Surbrin Rivers.  At the edge of the wilderness, it is surrounded by a wooden palisade, built in the hope of fending off the goblins, orcs, and other foes in the area.  There are many opportunities for an adventurer in Rivermoot – speak to the townsfolk.  Paths lead eastward along the Rauvin towards Silverymoon, and northward into the hills towards the wilds.  All characters have the option to begin their adventures here.&lt;br /&gt;
&lt;br /&gt;
'''Silverymoon''' is a large walled city at the center of  the Marches.  Called &amp;quot;the Gem of the North&amp;quot; by many, Silvy is a center of civilization and culture in the midst of wilderness.  Humans, elves, halflings, gnomes, and dwarves all live together here in peace.  The arts, learning, craftsmanship, and hospitality are valued here.  Magic is especially valued in Silvy – the city itself is protected by magical wards; the river that divides it is spanned by the Moonbridge, an arch of pure magical force; and the  Ladies College is the foremost school of arcane learning in the North.  Opportunities abound here for adventurers.  Characters of all sorts may start in Silverymoon.&lt;br /&gt;
&lt;br /&gt;
'''Citadel Felbarr''' is a dwarven fortress perched in the snowy foothills of the Nether Mountains.  Felbarr was wrestled from the control of orcish hordes by dwarves fighting under the banner of Emerus Warcrown.  While the market areas of Felbarr are usually open to all visitors, but the deeper chambers are only open to dwarves, gnomes, or those who have proven themselves to be true friends.  Gnome and dwarf characters may choose Citadel Felbarr as their starting point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Servers}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4055</id>
		<title>The Silver Marches (Server)</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=The_Silver_Marches_(Server)&amp;diff=4055"/>
				<updated>2025-09-23T03:38:16Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Servers]]&lt;br /&gt;
[[Category:Live Servers]]&lt;br /&gt;
{{Server&lt;br /&gt;
| ID = 3&lt;br /&gt;
| Name = The Silver Marches&lt;br /&gt;
| HDM = {{TSM HDM}}&lt;br /&gt;
| EADM = {{TSM EADM}}&lt;br /&gt;
| DirectConnect = tsm.alandfaraway.info:5122&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== '''Welcome to the Silver Marches!''' ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''&amp;quot;This is a land like no other in Faerun.  Home to a diverse population of folk dedicated to carving prosperity and order from the forbidding wilderness, the area remains a little-explored and largely unconquered territory inhabited by war-hungry orc hordes, hostile giants, and an array of bloodthirsty monsters.&amp;quot;''''' –From &amp;quot;''Silver Marches''&amp;quot; by Ed Greenwood and Jason Carl&lt;br /&gt;
&lt;br /&gt;
ALFA's Silver Marches server (&amp;quot;TSM&amp;quot;) includes the city of Silverymoon, the dwarven stronghold of Citadel Felbarr, and a number of towns and villages along the Rauvin River and the surrounding lands. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Starting Locations:'''===&lt;br /&gt;
&lt;br /&gt;
Characters created on TSM have three options for where they will begin their adventures: Rivermoot, Silverymoon, and Citadel Felbarr.&lt;br /&gt;
&lt;br /&gt;
'''Rivermoot''' is a small village at the confluence of the Rauvin and Surbrin Rivers.  At the edge of the wilderness, it is surrounded by a wooden palisade, built in the hope of fending off the goblins, orcs, and other foes in the area.  There are many opportunities for an adventurer in Rivermoot – speak to the townsfolk.  Paths lead eastward along the Rauvin towards Silverymoon, and northward into the hills towards the wilds.  All characters have the option to begin their adventures here.&lt;br /&gt;
&lt;br /&gt;
'''Silverymoon''' is a large walled city at the center of  the Marches.  Called &amp;quot;the Gem of the North&amp;quot; by many, Silvy is a center of civilization and culture in the midst of wilderness.  Humans, elves, halflings, gnomes, and dwarves all live together here in peace.  The arts, learning, craftsmanship, and hospitality are valued here.  Magic is especially valued in Silvy – the city itself is protected by magical wards; the river that divides it is spanned by the Moonbridge, an arch of pure magical force; and the  Ladies College is the foremost school of arcane learning in the North.  Opportunities abound here for adventurers.  Characters of all sorts may start in Silverymoon.&lt;br /&gt;
&lt;br /&gt;
'''Citadel Felbarr''' is a dwarven fortress perched in the snowy foothills of the Nether Mountains.  Felbarr was wrestled from the control of orcish hordes by dwarves fighting under the banner of Emerus Warcrown.  While the market areas of Felbarr are usually open to all visitors, but the deeper chambers are only open to dwarves, gnomes, or those who have proven themselves to be true friends.  Gnome and dwarf characters may choose Citadel Felbarr as their starting point.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Servers}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4054</id>
		<title>Virtual Machine Setup</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4054"/>
				<updated>2025-09-16T04:53:45Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This document describes in rough detail the recommended checklist for setting up a new game server host VM in the standard configuration.  This configuration is suitable for running nwn2server.exe as a limited user account.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
.NET 3.5 and the DirectX End-User Runtime are optional unless the toolset will be run locally on the game server host machine.&lt;br /&gt;
&lt;br /&gt;
* If running the toolset on the host is desired (optional), enable .NET 3.5 in Add/Remove Windows Features before installing DirectX&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX End-User Runtime]  (required only if the toolset will be used to stage content on the game server)&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=17851 Microsoft .NET Framework 4]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
# Install Windows Server (or Windows 10)&lt;br /&gt;
# Copy standard tools over:&lt;br /&gt;
## [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty]&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create user &amp;quot;NWN2Server&amp;quot;&lt;br /&gt;
## Add to &amp;quot;NWN2 Servers&amp;quot; SG (if using Windows Server)&lt;br /&gt;
# Create C:\NWN2, xcopy NWN2 install over (or just install NWN2)&lt;br /&gt;
## Grant &amp;quot;NWN2 Servers&amp;quot; create files, create folders to &amp;quot;This folder only&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant &amp;quot;NWN2 Admins&amp;quot; modify to folder, subfolders, and files (if using Windows Server)&lt;br /&gt;
## Import NWN2.reg (only if not installing NWN2)&lt;br /&gt;
# Create C:\NWN2User&lt;br /&gt;
## Grant full control to &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Run this in a command window: &amp;lt;code&amp;gt;Runas /profile /user:NWN2Server cmd.exe&amp;lt;/code&amp;gt; (or log in as the NWN2Server user and open up a command window)&lt;br /&gt;
## &amp;lt;code&amp;gt;cd /d &amp;quot;%userprofile%\Documents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;mklink /j &amp;quot;Neverwinter Nights 2&amp;quot; C:\NWN2User&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;putty -ssh alfa@sql.alandfaraway.info&amp;lt;/code&amp;gt;&lt;br /&gt;
### Confirm and accept central server public key for vault tunnel to work&lt;br /&gt;
# Create C:\NWNX4, xcopy NWNX4 installation over (or just simply install it)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Servers&amp;quot; for: (if using Windows Server)&lt;br /&gt;
### AuroraServerNWScript.log&lt;br /&gt;
### AuroraServerVault.log&lt;br /&gt;
### nwnx.txt&lt;br /&gt;
### nwnx_controller.txt&lt;br /&gt;
### StandardQueryLog.txt&lt;br /&gt;
### xp_mysql.txt&lt;br /&gt;
### xp_bugfix.txt&lt;br /&gt;
### xp_objectattributes.txt&lt;br /&gt;
### xp_srvadmin.txt&lt;br /&gt;
### xp_system.txt&lt;br /&gt;
### xp_time.txt&lt;br /&gt;
# Create C:\Users\Public\Desktop\Credentials.txt&lt;br /&gt;
# Copy standard links to C:\Users\Public\Desktop&lt;br /&gt;
# Copy standard links to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Tools&lt;br /&gt;
# Copy standard scripts to C:\Scripts&lt;br /&gt;
# Copy standard NWN2 tools to C:\Tools&lt;br /&gt;
# Copy NWNServerConsole to C:\NWN2\Console&lt;br /&gt;
# Fix PowerShell signing&lt;br /&gt;
## Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Install [http://git-scm.com/ Git]    Both GitHub and Git Extensions, You need this to get module updates&lt;br /&gt;
# Install [https://filezilla-project.org/ FileZilla] ( Optional depending on your needs)&lt;br /&gt;
# Install [http://msdn.microsoft.com/en-us/windows/apps/br229516 Win8 Performance Toolkit] or [https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ Windows 10 Performance Toolkit] (Optional depending on your needs) &lt;br /&gt;
# Install [http://www.7-zip.org/ 7-zip]    You need this to be able to unpack the haks when they are downloaded to the server for updates&lt;br /&gt;
# Install [http://gvim.en.softonic.com/ gvim] ( Optional depending on your needs)&lt;br /&gt;
# Install WinDbg for [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 7] or [http://msdn.microsoft.com/en-US/windows/desktop/bg162891 Windows 8.1] or [https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Windows 10]. ( Optional depending on your needs)&lt;br /&gt;
# Set &amp;lt;code&amp;gt;_NT_SYMBOL_PATH&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&amp;lt;/code&amp;gt; ( Optional depending on your needs)&lt;br /&gt;
&lt;br /&gt;
== NWNX4 Installation ==&lt;br /&gt;
# nwnx4_controller.exe -installservice&lt;br /&gt;
# Configure NWNX4-1 service to run as the &amp;quot;NWN2Server&amp;quot; user:&lt;br /&gt;
## If using a Microsoft account (user@email) for the server user, use Computername\Username where Username is the value that %USERNAME% shows from &amp;quot;echo %USERNAME%&amp;quot; in cmd.exe and Computername is the value that %COMPUTERNAME% shows from &amp;quot;echo %COMPUTERNAME%&amp;quot; in cmd.exe.  Also, in this case, you have to manually grant this user &amp;quot;Log on as a service&amp;quot; rights by going to Local Security Policy, Local Policies, User Rights Assignment, Log on as a service, and adding Computername\Username to the list.  This only applies to accounts set up as a Microsoft account initially, not to local accounts that a Microsoft account was connected to afterwards.&lt;br /&gt;
# Get SID for NWN2Server user with PowerShell:  (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;([wmi]&amp;quot;win32_Group.Domain='$env:ComputerName',Name='NWN2 Admins'&amp;quot;).sid&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set SD on nwnx4-1 service to allow NWN2 Admins to start/stop: (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;sc sdset nwnx4-1 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWP;;;&amp;lt;NWN2 Admins SID from above command&amp;gt;)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install SSH private key to C:\NWNX4\sshfs.ppk&lt;br /&gt;
# Add SSH public key to alfa@sql.alandfaraway.org:~/.ssh/authorized_keys&lt;br /&gt;
# Set configuration in C:\NWNX4\nwnx.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerNWScript.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\xp_mysql.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\DatabaseConnector.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerVault.ini&lt;br /&gt;
&lt;br /&gt;
== Module preparation ==&lt;br /&gt;
# If the module is being cloned directly from source control or copied from a very old backup, it may be necessary to recompile the module against a current alfa2_acr.hak to ensure that the database connection (and self-update) work at module startup.  If the module never loads acr_databaseconnector in AuroraServerNWScript.log and no &amp;quot;DatabaseConnector&amp;quot; log messages in nwserverLog1.txt are seen before the ACR_OnModuleLoad: log line then this may be the problem (but also check for errors in AuroraServerNWScript.log that might indicate a misconfigured NWScript Accelerator installation).&lt;br /&gt;
# Make sure that alfa2_acr.hak is recent.  An extremely old build predating the DatabaseConnector integration may not be able to self-update the rest of the ACR.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Fixes for some problems encountered during server deployment are listed here.&lt;br /&gt;
# Module didn't load or server doesn't start up?&lt;br /&gt;
## Look at the server log file and C:\NWNX4\AuroraServerNWScript.log for errors/exceptions for next troubleshooting steps.&lt;br /&gt;
# Database doesn't connect, or many exceptions in server log about the database, or PCs (but not DM's) are booted at log on?&lt;br /&gt;
## Make sure that plink.exe was run once as the user that the NWNX4-1 service runs as in order to accept the SSH key of the central server.&lt;br /&gt;
# Monitor Server Uptime script closes immediately?&lt;br /&gt;
## Make sure that the following command was run from an administrator privileged PowerShell session: Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Game server starts with NWNX4_GUI.exe but not as a service?&lt;br /&gt;
## Make sure that the service is running as the right user.  Go to services.msc and configure it to run as the user whose %userprofile%\Documents\Neverwinter Nights 2 has the module, server vault, etc. present.&lt;br /&gt;
# Toolset doesn't start/work properly?&lt;br /&gt;
## Make sure that .NET Framework v3.5 (sometimes called .NET Framework v2.0) is installed, and then the DirectX End-User Runtime is installed.  If the DirectX End-User Runtime was installed first, it's installer has to be re-run after installing .NET Framework v3.5.&lt;br /&gt;
# Database or scripts don't work, or NWNX4 plugins didn't load?&lt;br /&gt;
## Make sure that all Visual C++ and .NET runtime dependencies were installed.&lt;br /&gt;
## Make sure that NWNScriptJIT.dll, NWNScriptJITIntrinsics.dll are installed in the NWN2 installation directory (not necessarily the NWNX4 installation directory).&lt;br /&gt;
## Make sure that plink.exe was run once as the service user (see above).&lt;br /&gt;
# Using a Microsoft account for the service account and the service fails to start with &amp;quot;The service dependency failed to start.&amp;quot;?&lt;br /&gt;
## Configure the service to log on using Computername\Username and ensure that from Local Security Policy, Local Policies, User Rights Assignment, that Computername\Username was granted &amp;quot;Log on as a service&amp;quot; rights.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Client_Extension&amp;diff=4053</id>
		<title>Client Extension</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Client_Extension&amp;diff=4053"/>
				<updated>2025-09-15T19:19:18Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Third Party Tools]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
This article covers Skywing's [https://neverwintervault.org/project/nwn2/other/nwn2-client-extension Client Extension].&lt;br /&gt;
&lt;br /&gt;
Documentation found here is copied from the official readme. Additionally, it defines suggested uses on ''[[A Land Far Away]]''.&lt;br /&gt;
&lt;br /&gt;
Welcome to the Client Extension!&lt;br /&gt;
&lt;br /&gt;
This program acts as a client plug-in (and, for DMs, optionally a completely&lt;br /&gt;
independent standalone client) whose purpose is to improve the multi-player&lt;br /&gt;
experience of Neverwinter Nights 2.  It fixes several client crash bugs, and&lt;br /&gt;
adds some useful new features.&lt;br /&gt;
&lt;br /&gt;
See the &amp;quot;Quick Start &amp;amp; Overview&amp;quot; section for using the client extension as an&lt;br /&gt;
add-on to the game (recommended for most users).  See the &amp;quot;DM Standalone&lt;br /&gt;
Client&amp;quot; section for details on using the client extension to log on to your&lt;br /&gt;
server as a DM, without starting the game (advanced usage for PW admins).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick Start &amp;amp; Overview&lt;br /&gt;
----------------------&lt;br /&gt;
&lt;br /&gt;
The Client Extension can either plug-in to the player or DM client, or it can&lt;br /&gt;
operate as an independent DM client.  To get started with using the Client&lt;br /&gt;
Extension as a player or a DM, use one of the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(a) Start the game with the included NWLauncher program (recommended).&lt;br /&gt;
&lt;br /&gt;
1)  Run NWLauncher.exe and the game will start with the client extension&lt;br /&gt;
    already active.  You need to keep NWLauncher.exe and ClientExtension.hdl&lt;br /&gt;
    in the same place for the launcher to work correctly.&lt;br /&gt;
    &lt;br /&gt;
    It is recommended that you use the game in windowed mode to get the most&lt;br /&gt;
    out of the client extension.&lt;br /&gt;
                &lt;br /&gt;
    You may pass command line arguments to the game by providing them to&lt;br /&gt;
    NWLauncher.exe, e.g. by creating a shortcut.  This is useful for launching&lt;br /&gt;
    the game in DM mode with the -dmc option.  You can also directly connect to&lt;br /&gt;
    a game server at startup by using the +connect &amp;lt;server&amp;gt; argument.  See the&lt;br /&gt;
    &amp;quot;Features&amp;quot; section for more details on how to create a shortcut to connect&lt;br /&gt;
    to a game server automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2)  Log on to your server as normal and play the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                    - or -&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(b) Apply the client extension after starting the game.&lt;br /&gt;
&lt;br /&gt;
1)  (First time only.)  Double-click hdlinstall.reg to install support for .hdl&lt;br /&gt;
     files.  You only need to perform this step once per computer.&lt;br /&gt;
     &lt;br /&gt;
2)  Start Neverwinter Nights 2 in normal or DM client mode, and go to the main&lt;br /&gt;
    menu.  It is recommended that you use Neverwinter Nights 2 in windowed mode&lt;br /&gt;
    but this is not strictly required.&lt;br /&gt;
     &lt;br /&gt;
3)  Navigate to where you have placed ClientExtension.hdl in Explorer,&lt;br /&gt;
    right-click the ClientExtension.hdl file, and choose the 'Apply' option&lt;br /&gt;
    from the menu that appears.&lt;br /&gt;
    &lt;br /&gt;
4)  Log on to your server as normal.  You must follow steps 3-5 again each time&lt;br /&gt;
    you exit Neverwinter Nights 2.  Be sure to apply the extension -before- you&lt;br /&gt;
    log on to your server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The AMDXP version of Neverwinter Nights 2 is not supported.  Only very old AMD&lt;br /&gt;
machines use the AMDXP version; recent AMD machines do not.  You will receive&lt;br /&gt;
an error message if you attempt to use the AMDXP version of the client.&lt;br /&gt;
&lt;br /&gt;
In order to get the most out of the Client Extension, it is highly recommended&lt;br /&gt;
that you read the remainder of the document.  Players should read the&lt;br /&gt;
&amp;quot;Features&amp;quot; section; DMs are encouraged to read the entire document for details&lt;br /&gt;
on how to best use DM-specific features.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Avoid running Neverwinter Nights 2 in a compatibility mode (i.e. Windows XP&lt;br /&gt;
compatibility mode) if you plan on using the Client Extension.  It is not&lt;br /&gt;
necessary to run the game in compatibility mode, and doing so may prevent the&lt;br /&gt;
Client Extension from loading in some circumstances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modes of Operation&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
There are two basic modes of operation for the Client Extension:&lt;br /&gt;
&lt;br /&gt;
- Client Extension mode, which can be used in conjuction with the game client&lt;br /&gt;
  as a normal player.  To use the Client Extension, simply start the game&lt;br /&gt;
  client as normal, then right-click ClientExtension.hdl in Explorer and choose&lt;br /&gt;
  the 'Apply' option.  The Client Extension is only active for a single game&lt;br /&gt;
  session; you must re-apply the Client Extension each time you wish to use it.&lt;br /&gt;
  &lt;br /&gt;
  The Client Extension may also be used when you are logged on as a DM, with&lt;br /&gt;
  the DM client.  In this mode of operation, the Client Extension can act as an&lt;br /&gt;
  aid to your dungeon sessions by providing a more-detailed area map.  Several&lt;br /&gt;
  DM-specific commands and features are also available.  See the &amp;quot;DM Features&amp;quot;&lt;br /&gt;
  section for more details.&lt;br /&gt;
  &lt;br /&gt;
- DM Standalone Client mode, which operates as a wholly independent client for&lt;br /&gt;
  DMs to log on to their servers and interact with the game world to a limited&lt;br /&gt;
  extent.  The usage of the DM Standalone Client is somewhat different, and is&lt;br /&gt;
  explained later.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
Features&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
The Client Extension includes a number of new features and bug fixes that are&lt;br /&gt;
designed to improve your multiplayer experience:&lt;br /&gt;
&lt;br /&gt;
- A replacement for the Internet Server Browser functionality, formerly&lt;br /&gt;
  provided by GameSpy (official support has since been discontinued).  This&lt;br /&gt;
  enables players to locate other servers to join, as prior to the&lt;br /&gt;
  discontinuation of matchmaking services by GameSpy.&lt;br /&gt;
&lt;br /&gt;
- An option to directly connect to a multiplayer game server from the command&lt;br /&gt;
  line.  Simply run NWLauncher.exe +connect &amp;lt;server&amp;gt; [+password &amp;lt;pw&amp;gt;] to start&lt;br /&gt;
  the game and directly connect to a server.  This can be used to create a&lt;br /&gt;
  shortcut to launch the game and connect to a particular server.  Here are&lt;br /&gt;
  some example command line:&lt;br /&gt;
&lt;br /&gt;
  NWLauncher.exe +connect mynwn2pw.example.com&lt;br /&gt;
  NWLauncher.exe +connect mynwn2privatepw.example.com +password playerpassword&lt;br /&gt;
  NWLauncher.exe -dmc +connect mynwn2pw.example.com +password dmpassword&lt;br /&gt;
&lt;br /&gt;
- Command history is now available for the client!  The client extension has a&lt;br /&gt;
  separate text-entry user interface which allows a history of all chat text&lt;br /&gt;
  that you send to be accessed.  Even text you enter in to the normal game chat&lt;br /&gt;
  interface is added to the command history, but you may only access the&lt;br /&gt;
  command history from the new text-entry user interface.  The new text-input&lt;br /&gt;
  user interface is described in the &amp;quot;Text-input User Interface&amp;quot; section.&lt;br /&gt;
  &lt;br /&gt;
- Larger chat messages can now be sent (up to approximately 4,096 characters).&lt;br /&gt;
  Please use this feature appropriately.  Long text messages do not cause any&lt;br /&gt;
  problems for normal clients or servers, but sending an overly long message&lt;br /&gt;
  may produce results that are difficult to read.  Large text messages are only&lt;br /&gt;
  available through the new text-input user interface.&lt;br /&gt;
  &lt;br /&gt;
  Tip:  You can also paste directly into the separate text-entry user interface&lt;br /&gt;
        as an option to paste chat into the game.&lt;br /&gt;
  &lt;br /&gt;
- A properly functioning reply command (/re) is now available.  This command&lt;br /&gt;
  supersedes the built-in reply function.  It has the following improved&lt;br /&gt;
  properties:&lt;br /&gt;
  &lt;br /&gt;
  - Only senders of tells (not other chat messages) are set to the reply&lt;br /&gt;
    target.&lt;br /&gt;
    &lt;br /&gt;
  - Sending a tell no longer sets the reply target to yourself.&lt;br /&gt;
  &lt;br /&gt;
  The /re command can be used in both the normal game interface and the&lt;br /&gt;
  separate text-entry user interface.&lt;br /&gt;
  &lt;br /&gt;
  When using the separate text-entry user interface, you may use /r as a&lt;br /&gt;
  shorthand for /re.  However, using /r in the normal game interface will&lt;br /&gt;
  access the old reply function that ships with the game.&lt;br /&gt;
  &lt;br /&gt;
- A re-tell function (/rt) is now available.  This command sends a tell to the&lt;br /&gt;
  last player you have sent a tell to.  Like all other new slash-commands, this&lt;br /&gt;
  command is available both through the normal game interface and through the&lt;br /&gt;
  separate text-entry user interface.&lt;br /&gt;
  &lt;br /&gt;
- An /invertrun function is now available.  This command switches the behavior&lt;br /&gt;
  for point-and-click movement, so that by default, you will walk unless you&lt;br /&gt;
  hold down SHIFT.  WASD movement in the game still runs unless you use SHIFT.&lt;br /&gt;
  &lt;br /&gt;
  Tip:  You can use /invertrun instead of activating Tracking Mode if you would&lt;br /&gt;
        like to walk by default.  You still have easy access to run mode&lt;br /&gt;
        without having to toggle a mode button when using /invertrun, as you&lt;br /&gt;
        just need to use WASD or hold down SHIFT.&lt;br /&gt;
&lt;br /&gt;
- Rotating chat and combat logs are now automatically written by the Client&lt;br /&gt;
  Extension.  Logs are rotated once per day and named by character, with&lt;br /&gt;
  entries individually timestamped.  Chat and combat logs are stored under the&lt;br /&gt;
  &amp;quot;Logs&amp;quot; directory of your NWN2 home path, i.e.&lt;br /&gt;
  &amp;quot;Documents\Neverwinter Nights 2\Logs&amp;quot;.  Currently, only server notices are&lt;br /&gt;
  written to the combat log; full combat text display is not yet available.&lt;br /&gt;
  &lt;br /&gt;
- A new area minimap is available.  You can click on a point in the new area&lt;br /&gt;
  minimap (not the in-game automap) in order to move to that point.  This is&lt;br /&gt;
  often useful if you need to cross a very large area without having to click&lt;br /&gt;
  many different times.  Note that if your pathing orders are too complicated,&lt;br /&gt;
  the game engine will discard them.  The map is further described in the&lt;br /&gt;
  &amp;quot;Area Map&amp;quot; section.&lt;br /&gt;
  &lt;br /&gt;
- A new form of macro-enabled hotbar buttons are available.  Macro-enabled&lt;br /&gt;
  hotbar buttons are created with the /setmacro command (see the documentation&lt;br /&gt;
  in this file for details).  Macro-enabled hotbar buttons can perfrom many&lt;br /&gt;
  actions per hotbar press, such as enqueuing up many buff spells all at one&lt;br /&gt;
  time.&lt;br /&gt;
  &lt;br /&gt;
  More details on hotbar macros are available in the &amp;quot;Custom Hotbar Macros&amp;quot;&lt;br /&gt;
  section.&lt;br /&gt;
  &lt;br /&gt;
- An appending log file with your chat history is available.  The log file is&lt;br /&gt;
  named &amp;quot;nwn2reportlog.log&amp;quot; and is written to your Neverwinter Nights 2&lt;br /&gt;
  installation directory.  (Windows Vista and Windows 7 users may need to click&lt;br /&gt;
  the &amp;quot;Show compatibility fixes&amp;quot; option in Explorer to see it.)&lt;br /&gt;
  &lt;br /&gt;
- A console interface for displaying in-game chat is now available.  This is&lt;br /&gt;
  often useful if you would like to minimize the game, but still keep tabs on&lt;br /&gt;
  what's going on (such as if you are waiting for someone to log on or send you&lt;br /&gt;
  a tell) without wasting a large amount of screen real-estate.  This function&lt;br /&gt;
  is further described in the &amp;quot;Console Interface&amp;quot; section.&lt;br /&gt;
  &lt;br /&gt;
  Tip:  You can also copy text from the console window if you enable &amp;quot;Quick&lt;br /&gt;
        Edit&amp;quot; in the console properties.  (Right-click the console icon and&lt;br /&gt;
        go to the &amp;quot;Properties&amp;quot; menu item.)  This is often useful if you want to&lt;br /&gt;
        copy and paste chat from the game.&lt;br /&gt;
  &lt;br /&gt;
- A crash in a third party library used for autodownloader support is avoided.&lt;br /&gt;
  This crash may have occured when attempting to download news information at&lt;br /&gt;
  the logon screen.  (The crash only occurs sporadically.)&lt;br /&gt;
  &lt;br /&gt;
- Wizards with metamagic spells on their hotbars should no longer periodically&lt;br /&gt;
  crash during area transitions.&lt;br /&gt;
  &lt;br /&gt;
- The client should no longer crash when the loading initial area after the&lt;br /&gt;
  character selection screen, when the initial area has creatures with certain&lt;br /&gt;
  VFX or animation parameters updating.&lt;br /&gt;
&lt;br /&gt;
- Hotbar buttons should no longer occasionally flicker and fail to persist&lt;br /&gt;
  changes when editing them.&lt;br /&gt;
  &lt;br /&gt;
- The client now properly displays Darkvision when transitioning to a new area.&lt;br /&gt;
&lt;br /&gt;
- Animations (particularly terrain scrolling while walking) no longer begin to&lt;br /&gt;
  stutter or &amp;quot;chunk up&amp;quot; in NWN2 after the computer has been running for several&lt;br /&gt;
  days since its last reboot.&lt;br /&gt;
&lt;br /&gt;
- The networking code responsible for sequencing and reliability over UDP in&lt;br /&gt;
  the game client is replaced with more reliable code (if you apply the&lt;br /&gt;
  extension before logging on to a game server).  This works around several&lt;br /&gt;
  data corruption and data loss problems that result in some transition crashes&lt;br /&gt;
  during a zone transfer.&lt;br /&gt;
  &lt;br /&gt;
  Note that not all transition crashes are caused by these issues.  Also,&lt;br /&gt;
  because the same bugs exist in the server-end of connection, some transition&lt;br /&gt;
  problems will not be completely fixed unless the server is also using a&lt;br /&gt;
  rewritten networking subsystem.&lt;br /&gt;
  &lt;br /&gt;
  The networking subsystem rewrite does not impact compatibility with clients&lt;br /&gt;
  or servers that do not use the more reliable networking code, however, these&lt;br /&gt;
  clients and servers will not be protected from their own bugs.&lt;br /&gt;
&lt;br /&gt;
- Point and click movement in the game world no longer waits for a response&lt;br /&gt;
  from the server before beginning to animate movement.  In some cases where&lt;br /&gt;
  there are dynamic path obstructions, this might result in minor path&lt;br /&gt;
  &amp;quot;glitching&amp;quot;.  You may disable this feature by using the /mpredict command.&lt;br /&gt;
&lt;br /&gt;
  Movement prediction only applies for point and click in the rendered game&lt;br /&gt;
  window and not point and click in the area map.  This feature improves&lt;br /&gt;
  perceived responsiveness with respect to movement on laggy servers.&lt;br /&gt;
  &lt;br /&gt;
- Right-clicking a name in the game's chat history and choosing the send tell&lt;br /&gt;
  option will now work for characters with no last name.&lt;br /&gt;
&lt;br /&gt;
- You may use the /tilegrid command to toggle display of the area tile grid on&lt;br /&gt;
  the area map.  This is generally only useful for builders.&lt;br /&gt;
  &lt;br /&gt;
- You may use the /rendertiles command to toggle rendering of tile tints on the&lt;br /&gt;
  area map.  This is generally only useful for builders.&lt;br /&gt;
  &lt;br /&gt;
- DMs have additional graphical interfaces for controlling the game world, and&lt;br /&gt;
  are highly encouraged to read the entire readme document for details.&lt;br /&gt;
&lt;br /&gt;
- Improved GUI debugging is available with the new /guidebug and /guitracing&lt;br /&gt;
  commands, that log detailed information about what XML GUI events are being&lt;br /&gt;
  raised (and with what parameters).  These two commands toggle GUI debugging&lt;br /&gt;
  output to the Client Extension console; enable both for maximum output, or&lt;br /&gt;
  just enable /guidebug for basic debug output.&lt;br /&gt;
&lt;br /&gt;
  When /guitracing mode is enabled, the console will include lines similar to&lt;br /&gt;
  the following:&lt;br /&gt;
&lt;br /&gt;
  FilterClientCallbackSetEventType: Executing NWN2_UIEVENT_DROP - self:UIData&lt;br /&gt;
  (int:1, int:1, int:1, int:0, objectid:0x8000039b, objectid:0x8000039b),&lt;br /&gt;
  callbackparams: (&amp;quot;self:&amp;quot;, &amp;quot;objectid&amp;quot;, 0, &amp;quot;local:100&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
  The self:UIData () section lists the data that can be retrieved for this&lt;br /&gt;
  event using UIObject_Misc_ExtractData().  In this example, there are four&lt;br /&gt;
  ints available at int indexes 0, 1, 2, 3, and two objectids available at&lt;br /&gt;
  objectid indexes 0 and 1.&lt;br /&gt;
&lt;br /&gt;
  The callbackparams: () section lists the arguments to the GUI XML function&lt;br /&gt;
  that this event is configured to run.  In this case, there was a call to the&lt;br /&gt;
  UIObject_Misc_ExtractData function with the four arguments listed.&lt;br /&gt;
&lt;br /&gt;
Text-input User Interface&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
The program will create a free-floating text input box (called &amp;quot;Send message&amp;quot;)&lt;br /&gt;
at startup time.  You can use this text input box to enter in commands or chat&lt;br /&gt;
like you would through the normal game interface.&lt;br /&gt;
&lt;br /&gt;
You can enter in long messages (up to approximately 4,096 characters) through&lt;br /&gt;
the text input box, past the normal limit in-game.&lt;br /&gt;
&lt;br /&gt;
The text input box adds a command history function that keeps track of all chat&lt;br /&gt;
text and commands that you send in-game or through the text input box itself.&lt;br /&gt;
&lt;br /&gt;
To access this command history, hold down the CONTROL key, and press the UP or&lt;br /&gt;
DOWN arrow keys while the text input box is the active window.  This feature is&lt;br /&gt;
particularly useful if you have typed a long message, but the person you had&lt;br /&gt;
sent it to disconnected before they could read it.&lt;br /&gt;
&lt;br /&gt;
Once you move the cursor to the start or end of the current message, UP/DOWN&lt;br /&gt;
arrow keys will also switch to the previous or next command, respectively.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Area Map&lt;br /&gt;
--------&lt;br /&gt;
&lt;br /&gt;
One of the first screens that you'll notice when using the client extension is&lt;br /&gt;
the map window.  This window provides your view into the game world, rendered&lt;br /&gt;
as a top-down, 2D flat board.  Each object in the game is represented by a&lt;br /&gt;
small block of pixels.  Hovering the mouse over an object will display a short&lt;br /&gt;
description of that object.  Some description details are only available if you&lt;br /&gt;
are logged on with the DM client.&lt;br /&gt;
&lt;br /&gt;
To view information about an object that is moving, simply hover the mouse over&lt;br /&gt;
the object and leave the cursor still.  The tool tip will display in a moment&lt;br /&gt;
without you needing to follow the object with the mouse each step of the way.&lt;br /&gt;
&lt;br /&gt;
A color coding scheme is used to draw each object, so here's the legend you'll&lt;br /&gt;
need to understand what you are seeing:&lt;br /&gt;
&lt;br /&gt;
Dark blue                             - Closed door.&lt;br /&gt;
Dark blue and magenta hatched         - Open or destroyed* door.&lt;br /&gt;
Bright green                          - Map pin with description.&lt;br /&gt;
Vermillion                            - Your current position.&lt;br /&gt;
Purple                                - Your current target.&lt;br /&gt;
Faint green                           - Placeable object.&lt;br /&gt;
Faint blue-green                      - Item.&lt;br /&gt;
Faint green and faint yellow hatched  - Usable* placeable object.&lt;br /&gt;
Faint blue                            - Environmental object.&lt;br /&gt;
Bright red                            - Detected hostile creature&lt;br /&gt;
Faint red                             - Hostile creature* (not detected)&lt;br /&gt;
Bright yellow                         - Detected neutral creature&lt;br /&gt;
Faint yellow                          - Neutral creature* (not detected)&lt;br /&gt;
Bright turquoise                      - Detected friendly creature&lt;br /&gt;
Faint turqouise                       - Friendly creature* (not detected)&lt;br /&gt;
Bright white                          - Player+ (other than yourself)&lt;br /&gt;
Faint white                           - Player* (not detected)&lt;br /&gt;
Pink                                  - Your currently selected player*.&lt;br /&gt;
&lt;br /&gt;
*: Feature only available if you are using the DM client.&lt;br /&gt;
+: Only party members are shown unless you are using the DM client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Detection criteria for non-DM players is based on the tracking skill only in&lt;br /&gt;
this release; only creatures that you can track on the in-game minimap will be&lt;br /&gt;
visible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally, certain objects are drawn as simple polygon shapes:&lt;br /&gt;
&lt;br /&gt;
Blue polygon with dotted white line   - Transition trigger.&lt;br /&gt;
Red polygon with dotted white line    - Hostile trap (detected).&lt;br /&gt;
Green polygon with dotted white line  - Friendly trap.&lt;br /&gt;
Yellow polygon with dotted white line - Script* trigger.&lt;br /&gt;
&lt;br /&gt;
*: Feature only available if you are using the DM client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The client extension also supports showing where objects are pathing to.&lt;br /&gt;
Object pathing orders are drawn as a series of line segments, which correspond&lt;br /&gt;
to the current movement orders assigned to that object.  Note that only a few&lt;br /&gt;
steps ahead are pre-planned, so the final line segment may appear to cross&lt;br /&gt;
regions that are not walkable.  Pathing orders are reevaluated automatically at&lt;br /&gt;
each step of the way.&lt;br /&gt;
&lt;br /&gt;
Pathing (movement) orders are drawn according to the following legend:&lt;br /&gt;
&lt;br /&gt;
Bright red line dotted with white      - Hostile creature* pathing orders.&lt;br /&gt;
Faint red line dotted with white       - Hostile creature* (not detected) path.&lt;br /&gt;
Bright yellow line with dotted white   - Neutral creature* pathing orders.&lt;br /&gt;
Faint yellow line with dotted white    - Neutral creature* (not detected) path.&lt;br /&gt;
Turquoise line with dotted white       - Friendly creature* pathing orders.&lt;br /&gt;
Faint turqouise line with dotted white - Friendly creature* (undetected) path.&lt;br /&gt;
Solid bright white line                - Player+ pathing orders.&lt;br /&gt;
Faint bright white line                - Player* (not detected) pathing orders.&lt;br /&gt;
Vermillion line dotted with white      - Your pathing orders.&lt;br /&gt;
Pink with dotted white line            - Your currently selected player*.&lt;br /&gt;
Purple line dotted with white          - Your target.&lt;br /&gt;
&lt;br /&gt;
*: Feature only available if you are using the DM client.&lt;br /&gt;
+: Only party members are shown unless you are using the DM client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some servers may not allow display of doors, placeables, or other objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The map allows you to change what objects are displayed if you only want to see&lt;br /&gt;
objects of a certain type.  To cycle through the drawing levels on the map, you&lt;br /&gt;
may press the L key while the map is the active window.  Doing so moves the&lt;br /&gt;
drawing level down by one, or starts over at the top if you reach the last&lt;br /&gt;
drawing level.  The drawing levels that are supported are:&lt;br /&gt;
&lt;br /&gt;
- Self only&lt;br /&gt;
- Creatures* and players*&lt;br /&gt;
- Map pins&lt;br /&gt;
- Doors&lt;br /&gt;
- Environmental objects and placeables&lt;br /&gt;
- Transition triggers, traps, and script triggers&lt;br /&gt;
- Pathing orders&lt;br /&gt;
- Wireframe models (default drawing layer)&lt;br /&gt;
- Collision meshes&lt;br /&gt;
- Bones (including for creature objects -- slow!)&lt;br /&gt;
&lt;br /&gt;
*: DMs automatically discover all creatures and players in the current area.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The map also allows you to choose the level of terrain drawn.  To cycle between&lt;br /&gt;
terrain drawing levels on the map, you may press the T key while the map is the&lt;br /&gt;
active window.  The terrain drawing layers that are supported are:&lt;br /&gt;
&lt;br /&gt;
- None (black background)&lt;br /&gt;
- Walkable (black for walkable, light gray for non-walkable)&lt;br /&gt;
- Walkmesh (walkmesh outlines and filled walkable regions)&lt;br /&gt;
- Full terrain display&lt;br /&gt;
- Full terrain display with cross-hatched walkable region overlay&lt;br /&gt;
- Full terrain display with walkmesh and cross-hatched walkable region overlay&lt;br /&gt;
&lt;br /&gt;
The default drawing layer is full terrain display with walkable region overlay.&lt;br /&gt;
&lt;br /&gt;
If tile tint rendering is enabled with /rendertiles, then tiles are drawn with&lt;br /&gt;
the terrain drawing step.&lt;br /&gt;
&lt;br /&gt;
Tip:  Resizing the map window works much quicker in &amp;quot;None&amp;quot; or &amp;quot;Walkable&amp;quot;&lt;br /&gt;
      terrain mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The map supports displaying a position grid; press the G key while the map is&lt;br /&gt;
the active window to toggle grid drawing.&lt;br /&gt;
&lt;br /&gt;
You can press P to toggle display the pathing tile grid.  Fine-grained pathing&lt;br /&gt;
data in a baked walkmesh is calculated for each point relative to each other&lt;br /&gt;
point only within a pathing tile; intertile pathing uses coarse-grained path&lt;br /&gt;
calculations which are then stitched together to form straight lines when&lt;br /&gt;
possible.&lt;br /&gt;
&lt;br /&gt;
You can press I to toggle directional light rendering based on the current sun&lt;br /&gt;
or moon position.  Directional lighting is enabled by default.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can left-click an object or point on the map to interact with that object,&lt;br /&gt;
or move to that point.  The following interaction behaviors are supported:&lt;br /&gt;
&lt;br /&gt;
Non-hostile creature                 - Initiate NPC dialog*.&lt;br /&gt;
Hostile creature                     - Attack creature.&lt;br /&gt;
Player                               - Follow player.&lt;br /&gt;
Locked door                          - Unlock door.&lt;br /&gt;
Closed door                          - Open door.&lt;br /&gt;
Open, non-transition door            - Close door.&lt;br /&gt;
Open, transition door                - Use transition.&lt;br /&gt;
Transition trigger                   - Use transition.&lt;br /&gt;
Usable placeable                     - Use placeable.&lt;br /&gt;
&amp;lt;Other objects or empty point&amp;gt;       - Move to this location.&lt;br /&gt;
&lt;br /&gt;
*: Feature only available if you are using the DM client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can SHIFT-left-click to walk instead of run when performing one of the&lt;br /&gt;
above operations.&lt;br /&gt;
&lt;br /&gt;
You can ALT-left-click an object on the map to request a description for that&lt;br /&gt;
object should you be using the DM client.  This feature is only available in DM&lt;br /&gt;
mode.&lt;br /&gt;
&lt;br /&gt;
In standalone DM client mode, you can hover the mouse over an object on the map&lt;br /&gt;
to request a description for that object should you be using the DM client.&lt;br /&gt;
The object description is shown on in the object tool tip.  Automatic examine&lt;br /&gt;
on mouse hover is only performed in standalone mode in order to avoid causing&lt;br /&gt;
unexpected examine GUI pop-ups in the Neverwinter Nights 2 game client.&lt;br /&gt;
&lt;br /&gt;
Holding down CTRL will show you what path the server will send you on from your&lt;br /&gt;
current location to the location that you leave the mouse over.  A green line&lt;br /&gt;
is drawn from your current position to mouse along the path, should there be a&lt;br /&gt;
legal path between those two points.  A straight red line is drawn if there is&lt;br /&gt;
no valid path.  This is useful for debugging AI pathing issues with your module&lt;br /&gt;
as it allows you to see how a creature would attempt to move to any other point&lt;br /&gt;
if it were standing where you were.  Only static collisions are calculated for&lt;br /&gt;
the proposed path (that is, the path does not consider any blocking creatures&lt;br /&gt;
or other dynamically created path blockers).&lt;br /&gt;
&lt;br /&gt;
Proposed path display is modified by the /smoothpath option, which allows you&lt;br /&gt;
to see toggle display of the raw walkmesh path before optimization into&lt;br /&gt;
straight lines.&lt;br /&gt;
&lt;br /&gt;
The path smoother generates the same rounding errors with respect to straight&lt;br /&gt;
line visibility as the server in order to accurately show you how your path&lt;br /&gt;
will be computed by the server.&lt;br /&gt;
&lt;br /&gt;
Holding down X displays whether a clear line of sight (taking only base&lt;br /&gt;
terrain into account) exists between your position and a target position.&lt;br /&gt;
&lt;br /&gt;
You can CTRL-left-click a point on the map to walk to that point even if there&lt;br /&gt;
is an object nearby that you would normally interact with.  If you are logged&lt;br /&gt;
on as a DM, CTRL-left-click will teleport you to the desired point instead of&lt;br /&gt;
walking.  (You must regular left-click once more to use a transition.)&lt;br /&gt;
&lt;br /&gt;
You can right-click a point on the map to target that object, if it is an&lt;br /&gt;
object that may be targetted.&lt;br /&gt;
&lt;br /&gt;
You can CTRL-right-click a creature object to take control of it if you have DM&lt;br /&gt;
privileges.  Simply use CTRL-right-click on an empty map region to return&lt;br /&gt;
control to the DM PC.&lt;br /&gt;
&lt;br /&gt;
You can left click and drag the mouse to create a selection rectangle.  Release&lt;br /&gt;
the mouse to select all actable creature objects in the selection rectangle.&lt;br /&gt;
Should you hold down SHIFT while creating the drag selection, all encompassed&lt;br /&gt;
objects are appended to your existing selection instead of replacing the prior&lt;br /&gt;
selection entirely.  (The selection rectangle is outlined in bright green.)&lt;br /&gt;
&lt;br /&gt;
You can define selection groups in the map window by holding CTRL down and&lt;br /&gt;
pressing a number key (0-9).  Press the same number key without CTRL held to&lt;br /&gt;
recall a previously set selection group, selecting it in-game.&lt;br /&gt;
&lt;br /&gt;
If you are logged on as a DM, a shorthand function is provided to allow you to&lt;br /&gt;
quickly position creatures in your game field.  You may middle-click a point on&lt;br /&gt;
the map to move your targetted creature to that point without having to possess&lt;br /&gt;
and unpossess the creature in separate steps.  The creature will walk or run&lt;br /&gt;
based on on your walk/run setting as with left-clicking.&lt;br /&gt;
&lt;br /&gt;
Similarly, if you are logged on as a DM, you may CTRL-middle-click to teleport&lt;br /&gt;
your selection to an area.  This can even be used to teleport objects that&lt;br /&gt;
resided within a different area to a specific point in your current area.&lt;br /&gt;
&lt;br /&gt;
When using CTRL-middle-click, if you have no selected objects, then the list&lt;br /&gt;
of selected players in the player list window is assumed.  This is useful if&lt;br /&gt;
you wish to jump multiple PCs to a new area at a specific point via point and&lt;br /&gt;
click on the map; you would jump to the new area, make a selection in the&lt;br /&gt;
player list window (multiple players may be selected), and then use the&lt;br /&gt;
CTRL-middle-click function to pull those players into your area.&lt;br /&gt;
&lt;br /&gt;
If you are logged on as a DM, you can ALT-middle-click to force your current&lt;br /&gt;
selection to attack another creature.  This can be combined with multiple&lt;br /&gt;
selection to force many creatures to attack another creature (i.e. a player in&lt;br /&gt;
a battle scenario).&lt;br /&gt;
&lt;br /&gt;
You may CTRL-right-click an object to possess it if you are logged on as a DM.&lt;br /&gt;
Similarly, you may then CTRL-right-click on empty ground to unpossess your&lt;br /&gt;
possessed object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While the map is the active window, you can also move using the WASD keys.&lt;br /&gt;
It is generally recommended to use point-and-click movement instead.  The WASD&lt;br /&gt;
movement keys are:&lt;br /&gt;
&lt;br /&gt;
W - Move forwards.  The distance moved depends on your movement rate.&lt;br /&gt;
S - Move backwards.  The distance moved depends on your movement rate.&lt;br /&gt;
A - Turn left by 18 degrees.&lt;br /&gt;
D - Turn right by 18 degrees.&lt;br /&gt;
&lt;br /&gt;
There is no direct indication as to your current heading, although it is&lt;br /&gt;
remembered.&lt;br /&gt;
&lt;br /&gt;
You may hold down SHIFT to walk instead of run when using WASD mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The map is unable to display what regions are walkable or not.  You will need&lt;br /&gt;
to know this based on the objects displayed and your knowledge of the area's&lt;br /&gt;
layout.  Attempting to move to a non-walkable location will result in your&lt;br /&gt;
movement order being canceled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You may press the escape key (ESC) to cancel all orders in your order queue&lt;br /&gt;
while the map window is active.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Objects are drawn as updating along their current paths smoothly based on their&lt;br /&gt;
walk or run characteristics.  This can be disabled with the /clientpath text&lt;br /&gt;
command.  Disabling smooth client pathing significantly reduces CPU consumption&lt;br /&gt;
spent redrawing the map window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Area Map Camera Modes and Camera Control&lt;br /&gt;
----------------------------------------&lt;br /&gt;
&lt;br /&gt;
The area map supports multiple camera types, which may be cycled through via&lt;br /&gt;
the use of the 'C' key while the map window is active.  The following camera&lt;br /&gt;
modes are available:&lt;br /&gt;
&lt;br /&gt;
- 2D top-down mode (the default), which is most like a traditional minimap.&lt;br /&gt;
  All object control functions are available in 2D top-down mode.&lt;br /&gt;
- 3D tactical mode, which renders the game world in a 3D perspective view, with&lt;br /&gt;
  a camera under full control of the user.  Currently, group selections are not&lt;br /&gt;
  available in 3D tactical mode.  By default, the camera in 3D tactical mode is&lt;br /&gt;
  positioned looking down on the area.&lt;br /&gt;
- 3D chase mode, which is a 3D perspective view that follows your character in&lt;br /&gt;
  a third person view.&lt;br /&gt;
  &lt;br /&gt;
3D camera modes are experimental and are not intended for performance operation&lt;br /&gt;
at this time.&lt;br /&gt;
&lt;br /&gt;
While in a 3D camera mode, pressing 'R' once resets the camera to its default&lt;br /&gt;
parameters.  In 3D tactical mode, pressing 'R' a second time will set the&lt;br /&gt;
camera so that is roughly located at your character's location, looking in&lt;br /&gt;
the direction of your character's facing.&lt;br /&gt;
&lt;br /&gt;
In 3D camera modes, the following control functions area available to orient&lt;br /&gt;
and move the camera:&lt;br /&gt;
&lt;br /&gt;
- Scrolling the mouse wheel zooms the camera with respect to its look-at axis.&lt;br /&gt;
- Holding the right mouse button down and moving the mouse will rotate (turn)&lt;br /&gt;
  the camera.&lt;br /&gt;
- Holding the right mouse button down and scrolling the mouse wheel will roll&lt;br /&gt;
  the camera.&lt;br /&gt;
&lt;br /&gt;
The map window is rendered entirely in software via GDI, without any hardware&lt;br /&gt;
assistance.  As a result, 3D camera modes are intended for static viewing and&lt;br /&gt;
not a general purpose, real-time updated interactive 3D display.&lt;br /&gt;
&lt;br /&gt;
A diagnostics readout at the top left of the map window displays the current&lt;br /&gt;
camera parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Area Teleport Chooser Window&lt;br /&gt;
-------------------------------&lt;br /&gt;
&lt;br /&gt;
If you are logged on as a DM, a &amp;quot;DM Area Teleport Chooser&amp;quot; window will be&lt;br /&gt;
displayed.  The area chooser window is similar to the map window, but it lets&lt;br /&gt;
you choose which area is rendered.&lt;br /&gt;
&lt;br /&gt;
The area chooser window has a drop-down box at the bottom which lets you choose&lt;br /&gt;
the name of the area you would like to view.  You must have previously visited&lt;br /&gt;
an area to display it; this is a technical limitation of the game protocol.&lt;br /&gt;
&lt;br /&gt;
Unlike the map window, the area chooser window only allows you one possible&lt;br /&gt;
action, which is to left-click a point on the map.  Left-clicking teleports&lt;br /&gt;
your current selection (which may include multiple creatures or players, or may&lt;br /&gt;
even include yourself) to the point you clicked.  This is useful for precision&lt;br /&gt;
group teleports to another area, without having to zone to that area first.&lt;br /&gt;
&lt;br /&gt;
If you left-click a point on the map and you have no selection, your character&lt;br /&gt;
is teleported alone.  This is useful as a flexible area teleport jump across&lt;br /&gt;
your game world, as an adjunct to the existing DM Chooser jump functionality.&lt;br /&gt;
&lt;br /&gt;
Creatures are, by default, not shown on the area chooser window, and the area&lt;br /&gt;
chooser window does not update in real time for performance reasons.&lt;br /&gt;
&lt;br /&gt;
You can add two scripts to your server to allow the DM Area Teleport Chooser&lt;br /&gt;
window to show creatures (including players) in the area chooser window, when&lt;br /&gt;
viewing areas other than your current area.  This feature lets you keep tabs on&lt;br /&gt;
what's happening in your PW, without leaving your current area.&lt;br /&gt;
&lt;br /&gt;
Sample scripts to support the DM Area Teleport Chooser's creature viewing&lt;br /&gt;
functionality are included (gui_scliext_dm_pollarea, gui_scliext_identify).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Console Interface&lt;br /&gt;
-----------------&lt;br /&gt;
&lt;br /&gt;
The program creates a console (text-mode) window for displaying output text to&lt;br /&gt;
you outside of the normal rendered game scene.  This window can be observed&lt;br /&gt;
even if you minimize the normal game window; it may also be resized or moved&lt;br /&gt;
at will.&lt;br /&gt;
&lt;br /&gt;
You cannot enter text directly into the console window; instead, you must use&lt;br /&gt;
the normal game interface or the separate text-entry interface.&lt;br /&gt;
&lt;br /&gt;
Player chat and player join/leave events are displayed to the console window,&lt;br /&gt;
along with various status miscellaneous pieces of information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Player List Window&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
If you are logged on as a DM, a &amp;quot;Player List Scry&amp;quot; window will be shown.  This&lt;br /&gt;
window lists which players are logged on to the server and whether they are&lt;br /&gt;
present in the same area as you or not.&lt;br /&gt;
&lt;br /&gt;
There are several columns in the player list window:&lt;br /&gt;
&lt;br /&gt;
Column   Description&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Name&amp;quot;   Indicates the player's character name.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Area&amp;quot;   Indicates the area tag of the player, if known.  This information is&lt;br /&gt;
         not always available.  If the area tag is truncated due to being too&lt;br /&gt;
         long, then the full area tag name can be seen in the player details&lt;br /&gt;
         box by clicking on the player's list box entry &lt;br /&gt;
&lt;br /&gt;
&amp;quot;cHP&amp;quot;    Indicates the current hit points of the player.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;mHP&amp;quot;    Indicates the maximum hit points of the player.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Lv&amp;quot;     Indicates the player's character level, if known.  This information is&lt;br /&gt;
         not always available.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;AC&amp;quot;     Indicates the player's armor class, if known.  This information is not&lt;br /&gt;
         always available.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;A&amp;quot;      Indicates whether the player is in the current area or not.  If the&lt;br /&gt;
         player is in the current area, the row reads &amp;quot;A&amp;quot;.  This feature works&lt;br /&gt;
         similar to how a player is shown as in the current area or not in the&lt;br /&gt;
         full Neverwinter Nights 2 client player list screen.&lt;br /&gt;
         &lt;br /&gt;
&amp;quot;DM&amp;quot;     Indicates if the player is logged on as a DM.  If so, then the text&lt;br /&gt;
         &amp;quot;DM&amp;quot; appears in the row.&lt;br /&gt;
         &lt;br /&gt;
         &lt;br /&gt;
     &lt;br /&gt;
You may select a player in the player list to display additional debugging&lt;br /&gt;
interface about that player.  This debugging information is usually only useful&lt;br /&gt;
for script debugging.  (The player's account name is also displayed in the&lt;br /&gt;
extra information section.)&lt;br /&gt;
&lt;br /&gt;
Selecting a player in the player list highlights the player as pink in the area&lt;br /&gt;
map window.  This selection is separate from your in-game selection.&lt;br /&gt;
&lt;br /&gt;
Double-clicking a player in the player list will pull up an Examine dialog in&lt;br /&gt;
the game for that player.  This will also select that player in-game for the&lt;br /&gt;
next operation, such as /export.&lt;br /&gt;
&lt;br /&gt;
Control-double-clicking a player in the player list will prepopulate the text&lt;br /&gt;
input window with a tell command for that player and set the keyboard focus to&lt;br /&gt;
the text input window.&lt;br /&gt;
&lt;br /&gt;
By default, the player list window will automatically update.  You may turn&lt;br /&gt;
this function off with the &amp;quot;/scry off&amp;quot; command.  Disabling automatic scry&lt;br /&gt;
updates is recommended if your server has not yet upgraded to xp_bugfix&lt;br /&gt;
1.0.5 or later with ReplaceNetLayer = 1 set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Features&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
When you apply the extension in DM client mode, additional features that are&lt;br /&gt;
designed to improve your ability to act as a dungeon master are activated.&lt;br /&gt;
&lt;br /&gt;
Operating in DM mode greatly increases the amount of information that is&lt;br /&gt;
displayed to you in the area map window.  The &amp;quot;Area Map&amp;quot; section covers this&lt;br /&gt;
information.&lt;br /&gt;
&lt;br /&gt;
DMs have access to the DM Scry window described above, as well as the DM Area&lt;br /&gt;
Teleport Chooser window, also as described above.&lt;br /&gt;
&lt;br /&gt;
While in DM mode, several new command are available for your use.  These&lt;br /&gt;
commands may be accessed from either the in-game interface, or the standalone&lt;br /&gt;
text-input interface:&lt;br /&gt;
&lt;br /&gt;
/export            - Exports the currently selected creature object to your&lt;br /&gt;
                     local vault.  This may be used on other players, or even&lt;br /&gt;
                     on non-player creatures.&lt;br /&gt;
                     &lt;br /&gt;
/saverules         - This command is used to prepare for the DM Standalone&lt;br /&gt;
                     Client; its usage is described in the&lt;br /&gt;
                     &amp;quot;DM Standalone Client&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
                     Note that /saverules is generally not needed unless you do&lt;br /&gt;
                     not have a full game install.&lt;br /&gt;
                     &lt;br /&gt;
&lt;br /&gt;
DM Standalone Client&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
The DM Standalone Client is a completely separate, standalone client for&lt;br /&gt;
Neverwinter Nights 2.  It can be used instead of the conventional DM client,&lt;br /&gt;
for purposes of aiding your work as a dungeon master.  With the DM Standalone&lt;br /&gt;
Client, all of the functionality that the Client Extension exposes in DM mode&lt;br /&gt;
is you to use; that is, you may walk around and interact with doors,&lt;br /&gt;
placeables, transitions, as well as enter chat commands and receive chat from&lt;br /&gt;
players.&lt;br /&gt;
&lt;br /&gt;
To use the DM Standalone Client, you need to install the Visual C++ runtime&lt;br /&gt;
update as described in step (b)(2) of the &amp;quot;Quick Start &amp;amp; Overview&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other DM functionality is only available when using the DM client itself.  The&lt;br /&gt;
DM Standalone Client is intended as a lightweight replacement client which does&lt;br /&gt;
not have the system requirements of the conventional DM client.  In fact, you&lt;br /&gt;
could even log on two sessions, one with the player client, and one with the DM&lt;br /&gt;
Assistant Client simultaneously to the same server; however, both sessions will&lt;br /&gt;
need unique accounts and legal CD-Keys.&lt;br /&gt;
&lt;br /&gt;
If you have scriptable DM functionality available via chat commands or creature&lt;br /&gt;
dialogs, this functionality can be accessed from the DM Standalone Client.&lt;br /&gt;
&lt;br /&gt;
Like the conventional DM client, the DM Standalone Client still requires that&lt;br /&gt;
you have a valid Neverwinter Nights 2 CD-Key.  The system will consider your&lt;br /&gt;
CD-Keys in use for the duration of your session, regardless of whether you are&lt;br /&gt;
logged on with the player client, DM client, or DM Standalone Client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Standalone Client Setup (Game Installation Present)&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
If the computer that you are running the DM Standalone Client on already has a&lt;br /&gt;
game installation with all expansions installed, then you need take no further&lt;br /&gt;
steps.  Simply launch NWStandaloneClient.exe and you should be ready to go.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;DM Standalone Client - Logging On&amp;quot; section describes next steps to log on&lt;br /&gt;
to your game world.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Standalone Client Setup (Game Not Installed)&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
NOTE:  If you have a full install of the game on your computer, then you do not&lt;br /&gt;
need to follow these steps.&lt;br /&gt;
&lt;br /&gt;
Because the DM Standalone Client operates in a completely independent fashion&lt;br /&gt;
from the conventional client, it requires an additonal preparatory step in&lt;br /&gt;
order to assess which client data files are needed in order to connect to your&lt;br /&gt;
server.&lt;br /&gt;
&lt;br /&gt;
To perform this one-time preparatory step, you must launch the DM client, apply&lt;br /&gt;
the Client Extension in DM mode, and log in to your server as a DM.  Then, use&lt;br /&gt;
the &amp;quot;/saverules&amp;quot; command to save a limited set of client data files that are&lt;br /&gt;
required to connect to your server.  This command saves the required data to&lt;br /&gt;
your &amp;lt;Documents&amp;gt;\Neverwinter Nights 2\ModuleRules\&amp;lt;Module Resource Name&amp;gt; path&lt;br /&gt;
for the current module.&lt;br /&gt;
&lt;br /&gt;
This step need only be performed once, unless you make a change to the&lt;br /&gt;
visualeffects.2da or baseitems.2da files, or if you create additional classes&lt;br /&gt;
or skills.  In such a case, you must re-run the preparatory &amp;quot;/saverule&amp;quot; step&lt;br /&gt;
once more in order to capture the current data files contents.  Otherwise, you&lt;br /&gt;
may experience erratic behavior with the DM Standalone Client.&lt;br /&gt;
&lt;br /&gt;
The DM Standalone Client uses the walkmesh files (*.trx) downloaded from the&lt;br /&gt;
client's autodownloader to display the area map.  However, the DM Standalone&lt;br /&gt;
Client cannot download updated file automatically, so you will need to download&lt;br /&gt;
them by logging in to the game with the full Neverwinter Nights 2 client.  The&lt;br /&gt;
DM Standalone Client will automatically use the walkmesh files once the&lt;br /&gt;
autodownloader in the full Neverwinter Nights 2 client has updated them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The DM Standalone Client will attempt to use your installation CD-Keys and your&lt;br /&gt;
saved community account credentials.  If either your installation CD-Keys or&lt;br /&gt;
saved community account credentials cannot be automatically discovered, then&lt;br /&gt;
you will have to set them manually.  See the &amp;quot;DM Standalone Client Commands&amp;quot;&lt;br /&gt;
section for more information on how to manually configure your credentials.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Standalone Client - Logging On&lt;br /&gt;
---------------------------------&lt;br /&gt;
&lt;br /&gt;
After you have performed the initial set-up steps for the DM Standalone Client,&lt;br /&gt;
you're ready to log on.  To begin, simply run the &amp;quot;NWStandaloneClient.exe&amp;quot; file&lt;br /&gt;
in Explorer (double-clicking it will suffice).  This will bring up an interface&lt;br /&gt;
similar to that which you would see when using the Client Extension in DM mode,&lt;br /&gt;
however, it does not plug-in to the normal game client.  Instead, it acts as a&lt;br /&gt;
seperate client, operating entirely on its own (with minimal memory usage).&lt;br /&gt;
&lt;br /&gt;
To connect to a server, use the /connectpw &amp;lt;hostname[:port]&amp;gt; &amp;lt;DM password&amp;gt;&lt;br /&gt;
command.  If your server's DM password has a space in it, you should instead &lt;br /&gt;
use the /setserverpassword &amp;lt;DM password&amp;gt; command, followed by the&lt;br /&gt;
/connect &amp;lt;hostname[:port]&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
You can also use /connectsrv &amp;lt;server display name&amp;gt; to connect to a server by&lt;br /&gt;
its name in the online server list supplied by the master server tracker.&lt;br /&gt;
&lt;br /&gt;
An error message will appear in the console screen if there was an error when&lt;br /&gt;
connecting.  Otherwise, you should be presented with a character selection&lt;br /&gt;
prompt in the console; use the /pickcharfile &amp;lt;DM Vault Character .BIC File&amp;gt;&lt;br /&gt;
command to select a character to log on with.  For example, you might use&lt;br /&gt;
/pickcharfile char.bic.  (You may also supply a full path name if the character&lt;br /&gt;
file is located somewhere else besides your DM vault.)&lt;br /&gt;
&lt;br /&gt;
Tip:  You can save time by putting connection commands like the /connectpw&lt;br /&gt;
or /logoncharfile commands in the autorun command file; see the section&lt;br /&gt;
&amp;quot;Automatic Command Sending&amp;quot; for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DM Standalone Client Commands&lt;br /&gt;
-----------------------------&lt;br /&gt;
&lt;br /&gt;
The following command are available in the DM Standalone Client:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/connectpw &amp;lt;hostname[:port]&amp;gt; &amp;lt;DM password&amp;gt;     - Connects to a server, possibly&lt;br /&gt;
                                                 disconnecting from the current&lt;br /&gt;
                                                 server.  The supplied DM&lt;br /&gt;
                                                 password must not contain&lt;br /&gt;
                                                 spaces.  The hostname may&lt;br /&gt;
                                                 optionally include a port&lt;br /&gt;
                                                 number for the server data&lt;br /&gt;
                                                 port if the default of 5121 is&lt;br /&gt;
                                                 not in use.&lt;br /&gt;
&lt;br /&gt;
/connectsrv &amp;lt;&amp;quot;server name&amp;quot;&amp;gt; &amp;lt;category&amp;gt; [DM-pw] - Connects to a server, possibly&lt;br /&gt;
                                                 disconnecting from the current&lt;br /&gt;
                                                 server.  The supplied DM&lt;br /&gt;
                                                 password must not contain&lt;br /&gt;
                                                 spaces.  The server name is&lt;br /&gt;
                                                 looked up from the online&lt;br /&gt;
                                                 server list as a&lt;br /&gt;
                                                 case-insensitive exact match.&lt;br /&gt;
                                                 The server name must be quoted&lt;br /&gt;
                                                 if it contains spaces.  The&lt;br /&gt;
                                                 category designates the game&lt;br /&gt;
                                                 type of the server.  It can be&lt;br /&gt;
                                                 one of the following values:&lt;br /&gt;
&lt;br /&gt;
                                                 action&lt;br /&gt;
                                                 story&lt;br /&gt;
                                                 storylite&lt;br /&gt;
                                                 roleplay&lt;br /&gt;
                                                 teamnvsn&lt;br /&gt;
                                                 melee1vsn&lt;br /&gt;
                                                 arena1vsn&lt;br /&gt;
                                                 social&lt;br /&gt;
                                                 alternative&lt;br /&gt;
                                                 pwaction&lt;br /&gt;
                                                 pwstory&lt;br /&gt;
                                                 solo&lt;br /&gt;
                                                 techsupport&lt;br /&gt;
&lt;br /&gt;
/connect &amp;lt;hostname[:port]&amp;gt;                     - Operates as /connectpw, but&lt;br /&gt;
                                                 with the server password set&lt;br /&gt;
                                                 via the /setserverpassword&lt;br /&gt;
                                                 command.&lt;br /&gt;
                                                 &lt;br /&gt;
/setserverpassword &amp;lt;DM password&amp;gt;               - Sets the server DM password to&lt;br /&gt;
                                                 use with /connect; spaces are&lt;br /&gt;
                                                 permitted.&lt;br /&gt;
&lt;br /&gt;
/setaccountname &amp;lt;community account name&amp;gt;       - Sets your community account&lt;br /&gt;
                                                 name, only required if the&lt;br /&gt;
                                                 DM Standalone Client could not&lt;br /&gt;
                                                 automatically detect your&lt;br /&gt;
                                                 account information from your&lt;br /&gt;
                                                 nwn2player.ini file.&lt;br /&gt;
                                                 &lt;br /&gt;
/setaccountpassword &amp;lt;account passworrd&amp;gt;        - Sets your community account&lt;br /&gt;
                                                 password, only required if the&lt;br /&gt;
                                                 DM Standalone Client could not&lt;br /&gt;
                                                 automatically detect your&lt;br /&gt;
                                                 account information from your&lt;br /&gt;
                                                 nwn2player.ini file.&lt;br /&gt;
                                                 &lt;br /&gt;
/addcdkey &amp;lt;CD-Key&amp;gt;                             - Adds a CD-Key to the list of&lt;br /&gt;
                                                 CD-Keys to authenticate.  One&lt;br /&gt;
                                                 key is required per expansion&lt;br /&gt;
                                                 pack that your server uses.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 The first invocation sets the&lt;br /&gt;
                                                 original game's CD-Key, the&lt;br /&gt;
                                                 next sets the XP1 CD-Key, and&lt;br /&gt;
                                                 so-forth.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 The CD-Key must be given in&lt;br /&gt;
                                                 EXACTLY the same format as it&lt;br /&gt;
                                                 resides in nwncdkey.ini.&lt;br /&gt;
                                                 &lt;br /&gt;
/setexpansions &amp;lt;expansion bitmask&amp;gt;             - Sets the bitmask of present&lt;br /&gt;
                                                 expansion packs.  0 for none,&lt;br /&gt;
                                                 or 0x1 for XP1, 0x2 for XP2,&lt;br /&gt;
                                                 0x3 for XP1 and XP2, etc.&lt;br /&gt;
                                                 Defaults to 0x3 (XP1 + XP2).&lt;br /&gt;
                                                 &lt;br /&gt;
/nocdkeys                                      - Clears any existing, partially&lt;br /&gt;
                                                 entered CD-Key data that was&lt;br /&gt;
                                                 set via the /addcdkey command.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 You must enter in the&lt;br /&gt;
                                                 appropriate CD-Keys before the&lt;br /&gt;
                                                 connection attempt will work.&lt;br /&gt;
                                                 &lt;br /&gt;
/readini                                       - Attempts to discover your&lt;br /&gt;
                                                 CD-Keys and community account&lt;br /&gt;
                                                 credentials from the game's&lt;br /&gt;
                                                 INI files.  You generally do&lt;br /&gt;
                                                 not need to use this command&lt;br /&gt;
                                                 as this step is automatically&lt;br /&gt;
                                                 attempted at startup time.&lt;br /&gt;
                                                 &lt;br /&gt;
/logoncharfile &amp;lt;DM Vault Character .BIC File&amp;gt;  - Supplies the file name for a&lt;br /&gt;
                                                 character present in your DM&lt;br /&gt;
                                                 vault that you would like to&lt;br /&gt;
                                                 log on to the game iwth.&lt;br /&gt;
                                                 &lt;br /&gt;
/pickcharfile &amp;lt;Full .BIC File Path&amp;gt;            - Chooses a character file to&lt;br /&gt;
                                                 log on with manually at the&lt;br /&gt;
                                                 appropriate step in the log in&lt;br /&gt;
                                                 process, versus automatically&lt;br /&gt;
                                                 logging in.  Use this command&lt;br /&gt;
                                                 only if prompted to do so by&lt;br /&gt;
                                                 the DM Standalone Client.&lt;br /&gt;
                                                 &lt;br /&gt;
/export                                        - Exports the currently selected&lt;br /&gt;
                                                 player's character file.  You&lt;br /&gt;
                                                 must double click a player in&lt;br /&gt;
                                                 the player list first before&lt;br /&gt;
                                                 using this command.&lt;br /&gt;
&lt;br /&gt;
/dialog &amp;lt;Dialog Choice Number&amp;gt;                 - Chooses a response from an&lt;br /&gt;
                                                 active dialog; the response&lt;br /&gt;
                                                 number must be the same as&lt;br /&gt;
                                                 shown in the response list.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 This is an experimental&lt;br /&gt;
                                                 command, use with caution.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 You may also use the command&lt;br /&gt;
                                                 &amp;quot;/dialog escape&amp;quot; to exit the&lt;br /&gt;
                                                 dialog with the default escape&lt;br /&gt;
                                                 action.&lt;br /&gt;
                                                 &lt;br /&gt;
/combatlog                                     - Toggles display of combat-&lt;br /&gt;
                                                 related events to the console.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 By default, these events are&lt;br /&gt;
                                                 displayed.&lt;br /&gt;
                                                 &lt;br /&gt;
/reconnect                                     - Reconnects to the server that&lt;br /&gt;
                                                 you had last connected to.&lt;br /&gt;
                                                 &lt;br /&gt;
/autoreconnect                                 - Toggles automatic reconnect&lt;br /&gt;
                                                 for connection timeouts or the&lt;br /&gt;
                                                 server shutting down.  The&lt;br /&gt;
                                                 standalone client will try to&lt;br /&gt;
                                                 reconnect every 10 seconds&lt;br /&gt;
                                                 when this mode is enabled.&lt;br /&gt;
&lt;br /&gt;
/disconnect                                    - Disconnects from the current&lt;br /&gt;
                                                 server.&lt;br /&gt;
                                                 &lt;br /&gt;
/item                                          - Lists the items that you have&lt;br /&gt;
                                                 on your person.&lt;br /&gt;
                                                 &lt;br /&gt;
/item &amp;lt;Item Name or Hex Item Object ID&amp;gt;        - Uses a 'Unique Power' item on&lt;br /&gt;
                                                 your current selection, else&lt;br /&gt;
                                                 yourself for 'self-only'&lt;br /&gt;
                                                 'Unique Powers'.&lt;br /&gt;
&lt;br /&gt;
/equip &amp;lt;Item Name or Hex Item Object ID&amp;gt;       - Equips an item on your person.&lt;br /&gt;
&lt;br /&gt;
/cast &amp;quot;Spell Name&amp;quot; [Metamagic1[,Metamagic2]    - Casts a spell, optionally with&lt;br /&gt;
                                                 a list of metamagic names,&lt;br /&gt;
                                                 such as &amp;quot;extend&amp;quot;, &amp;quot;maximize&amp;quot;,&lt;br /&gt;
                                                 and so forth.  The spell name&lt;br /&gt;
                                                 must be enclosed in quotes if&lt;br /&gt;
                                                 metamagic is in use; otherwise&lt;br /&gt;
                                                 quotes are optional.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 If specifying a combination of&lt;br /&gt;
                                                 metamagic types, separate the&lt;br /&gt;
                                                 types with commas.&lt;br /&gt;
                                                 &lt;br /&gt;
                                                 For more details, see the&lt;br /&gt;
                                                 &amp;quot;Casting Spells from Macros&amp;quot;&lt;br /&gt;
                                                 section.&lt;br /&gt;
 &lt;br /&gt;
/memorize &amp;lt;Slot&amp;gt; &amp;quot;Spell&amp;quot; [Metamagic][|Class]   - Memorizes a spell at a given&lt;br /&gt;
                                                 spell slot (the spell level is&lt;br /&gt;
                                                 computed automatically based&lt;br /&gt;
                                                 on the spell given and the&lt;br /&gt;
                                                 metamagic applied).  Specify&lt;br /&gt;
                                                 metamagic(s) in the same way&lt;br /&gt;
                                                 as with the /cast command.&lt;br /&gt;
&lt;br /&gt;
                                                 Optionally, a class name can&lt;br /&gt;
                                                 be specified.  This is useful&lt;br /&gt;
                                                 should multiple classes in a&lt;br /&gt;
                                                 multiclass character can cast&lt;br /&gt;
                                                 and memorize the same spell.&lt;br /&gt;
&lt;br /&gt;
                                                 If no class name is given,&lt;br /&gt;
                                                 then the first class that&lt;br /&gt;
                                                 meets the requirements for the&lt;br /&gt;
                                                 given spell is used for the&lt;br /&gt;
                                                 memorization.&lt;br /&gt;
&lt;br /&gt;
                                                 Spell slots are numbered from&lt;br /&gt;
                                                 0 (the top and leftmost slot&lt;br /&gt;
                                                 for a given spell level).&lt;br /&gt;
&lt;br /&gt;
/spells                                        - Prints information about known&lt;br /&gt;
                                                 and memorized spells.&lt;br /&gt;
&lt;br /&gt;
/feats                                         - Prints information about&lt;br /&gt;
                                                 feats.&lt;br /&gt;
&lt;br /&gt;
/talent &amp;lt;Talent Name&amp;gt;                          - Uses a talent (spell-like&lt;br /&gt;
                                                 ability).  This command is&lt;br /&gt;
                                                 generally only useful for&lt;br /&gt;
                                                 DMs that are possessing a&lt;br /&gt;
                                                 creature.&lt;br /&gt;
&lt;br /&gt;
/feat &amp;lt;Feat Name&amp;gt;                              - Uses an activateable feat.&lt;br /&gt;
                                                 This command is useful for&lt;br /&gt;
                                                 activating feats via macros.&lt;br /&gt;
&lt;br /&gt;
                                                 The currently selected target&lt;br /&gt;
                                                 is used if the feat requires&lt;br /&gt;
                                                 an explicit target object.&lt;br /&gt;
&lt;br /&gt;
/hotbar &amp;lt;Button Number&amp;gt;                        - Activates a hotbar button on&lt;br /&gt;
                                                 your current selection.&lt;br /&gt;
                                                 Button 1  = row 1, button 1&lt;br /&gt;
                                                 Button 13 = row 2, button 1,&lt;br /&gt;
                                                 etc.&lt;br /&gt;
                                                 &lt;br /&gt;
/setmacro &amp;lt;Button Number&amp;gt; &amp;lt;Commands&amp;gt;           - Define a custom macro command&lt;br /&gt;
                                                 set to run when you press a&lt;br /&gt;
                                                 hotbar button.  More than one&lt;br /&gt;
                                                 command may be supplied,&lt;br /&gt;
                                                 delimited by semicolon&lt;br /&gt;
                                                 characters.  You may use the&lt;br /&gt;
                                                 /hotbar command, or any other&lt;br /&gt;
                                                 text commands (or even just&lt;br /&gt;
                                                 plain chat) from the macro&lt;br /&gt;
                                                 command list.&lt;br /&gt;
&lt;br /&gt;
/mspells &amp;lt;Button Number&amp;gt;                       - Create a custom macro command&lt;br /&gt;
                                                 to memorize all your currently&lt;br /&gt;
                                                 memorized spells when you use&lt;br /&gt;
                                                 the designated button.  NOTE:&lt;br /&gt;
                                                 this will clear your spell&lt;br /&gt;
                                                 usages when used if any spells&lt;br /&gt;
                                                 were replaced.&lt;br /&gt;
&lt;br /&gt;
/cancelpolymorph                               - Cancels an active polymorph.&lt;br /&gt;
&lt;br /&gt;
/rest                                          - Activates the rest function.&lt;br /&gt;
&lt;br /&gt;
/areas                                         - List all known areas (only&lt;br /&gt;
                                                 static template areas are&lt;br /&gt;
                                                 listed).&lt;br /&gt;
                                                 &lt;br /&gt;
/dmjump &amp;lt;Area&amp;gt;                                 - Jumps the control object to an&lt;br /&gt;
                                                 area (by name, tag, or raw hex&lt;br /&gt;
                                                 object id).&lt;br /&gt;
                                                 &lt;br /&gt;
/dmjumpplayer &amp;lt;Account name&amp;gt;                   - Jumps to a location nearby a&lt;br /&gt;
                                                 player given their account&lt;br /&gt;
                                                 name.&lt;br /&gt;
                                                 &lt;br /&gt;
/dmjumpsel &amp;lt;Area&amp;gt;                              - Jumps all selected creatures&lt;br /&gt;
                                                 to an area (by name, tag, or&lt;br /&gt;
                                                 raw hex object id).  The&lt;br /&gt;
                                                 objects arrive at (0, 0).&lt;br /&gt;
                                                 &lt;br /&gt;
/dmjumpall &amp;lt;Area&amp;gt;                              - Jumps all players to an area&lt;br /&gt;
                                                 (by name, tag, or raw hex&lt;br /&gt;
                                                 object id).  The objects&lt;br /&gt;
                                                 arrive at (0, 0).&lt;br /&gt;
&lt;br /&gt;
/t &amp;quot;Character Name&amp;quot; Message                    - Send a tell.&lt;br /&gt;
&lt;br /&gt;
/tp &amp;quot;Player Name&amp;quot; Message                      - Send a tell (by account name).&lt;br /&gt;
&lt;br /&gt;
/o &amp;quot;Character First Name&amp;quot; Message              - Send a tell (by first name of&lt;br /&gt;
                                                 a character).&lt;br /&gt;
                                                 &lt;br /&gt;
/r Message    -or-    /re Message              - Reply to a previous tell.&lt;br /&gt;
&lt;br /&gt;
/rt Message                                    - Send a tell to the last person&lt;br /&gt;
                                                 that you sent a tell to.  This&lt;br /&gt;
                                                 is useful if several persons&lt;br /&gt;
                                                 send you a tell while you are&lt;br /&gt;
                                                 holding a conversation.&lt;br /&gt;
                                                 &lt;br /&gt;
/s Message                                     - Shout a 'message'.&lt;br /&gt;
&lt;br /&gt;
/l Message                                     - Send 'message' as a normal&lt;br /&gt;
                                                 volume talk.&lt;br /&gt;
                                                 &lt;br /&gt;
/w Message                                     - Send 'message' as a whisper.&lt;br /&gt;
&lt;br /&gt;
/p Message                                     - Send 'message' to your party&lt;br /&gt;
                                                 members, and all DMs.&lt;br /&gt;
                                                 &lt;br /&gt;
/dm Message                                    - Send 'message' to all DMs.&lt;br /&gt;
&lt;br /&gt;
/invertrun                                     - Changes the behavior for point&lt;br /&gt;
                                                 and click movement to walk by&lt;br /&gt;
                                                 default unless SHIFT is held.&lt;br /&gt;
                                                 &lt;br /&gt;
/modes                                         - List your active modes, such&lt;br /&gt;
                                                 as stealth or detect.&lt;br /&gt;
                                                 &lt;br /&gt;
/stealth                                       - Toggles the stealth mode, if&lt;br /&gt;
                                                 it is supported for your&lt;br /&gt;
                                                 character.&lt;br /&gt;
&lt;br /&gt;
/resname &amp;lt;Module Resource Name&amp;gt;                - Overrides the default module&lt;br /&gt;
                                                 resource name.  This command&lt;br /&gt;
                                                 is generally only useful when&lt;br /&gt;
                                                 attaching the client extension&lt;br /&gt;
                                                 to an already running game&lt;br /&gt;
                                                 client instance without&lt;br /&gt;
                                                 logging out first.&lt;br /&gt;
                                                 &lt;br /&gt;
/replyinvite &amp;lt;accept|reject|ignore&amp;gt;            - Responds to a prior party&lt;br /&gt;
                                                 invitation.&lt;br /&gt;
                                                 &lt;br /&gt;
/invite &amp;lt;Character Name&amp;gt;                       - Invites a character to join&lt;br /&gt;
                                                 the party.&lt;br /&gt;
                                                 &lt;br /&gt;
/leaveparty                                    - Depart the current party.&lt;br /&gt;
                                                 &lt;br /&gt;
/partyleader &amp;lt;Character Name&amp;gt;                  - Make another player the party&lt;br /&gt;
                                                 leader.&lt;br /&gt;
&lt;br /&gt;
/removeparty &amp;lt;Character Name&amp;gt;                  - Remove a party member.&lt;br /&gt;
&lt;br /&gt;
/scry [on|off]                                 - Refreshes the player list scry&lt;br /&gt;
                                                 window with current area data,&lt;br /&gt;
                                                 or disables or re-enables&lt;br /&gt;
                                                 automatic updating of area&lt;br /&gt;
                                                 data.  It is recommended that&lt;br /&gt;
                                                 automatic area updates only be&lt;br /&gt;
                                                 used on servers with the&lt;br /&gt;
                                                 xp_bugfix ReplaceNetLayer = 1&lt;br /&gt;
                                                 fix enabled due to the data&lt;br /&gt;
                                                 volume sent.&lt;br /&gt;
                                                 &lt;br /&gt;
/clientpath                                    - Toggles client-side pathing&lt;br /&gt;
                                                 prediction on or off for game&lt;br /&gt;
                                                 world objects.  Disabling the&lt;br /&gt;
                                                 client-side path predictor&lt;br /&gt;
                                                 will cause objects to only&lt;br /&gt;
                                                 update positions in the map&lt;br /&gt;
                                                 when new pathing orders are&lt;br /&gt;
                                                 recalculated.&lt;br /&gt;
&lt;br /&gt;
/smoothpath                                    - Toggles smooth pathing for&lt;br /&gt;
                                                 proposed paths (when you hold&lt;br /&gt;
                                                 control down in the map window&lt;br /&gt;
                                                 and see a path line).&lt;br /&gt;
                                                 &lt;br /&gt;
/windowstats                                   - Displays internal networking&lt;br /&gt;
                                                 counters and statistics.&lt;br /&gt;
&lt;br /&gt;
/tilegrid                                      - Toggles display of the map&lt;br /&gt;
                                                 tile grid.&lt;br /&gt;
&lt;br /&gt;
/rendertiles                                   - Toggles rendering of tile tint&lt;br /&gt;
                                                 contents for indoor areas.&lt;br /&gt;
&lt;br /&gt;
/polydraw &amp;lt;x1 y1 x2 y2 ... xN yN&amp;gt;              - Draws a series of line&lt;br /&gt;
                                                 segments on the map window.&lt;br /&gt;
                                                 Coordinates are expressed in&lt;br /&gt;
                                                 game units.&lt;br /&gt;
&lt;br /&gt;
/raydraw &amp;lt;o.x o.y o.z d.x d.y d.z&amp;gt;             - Draws a portion of a ray,&lt;br /&gt;
                                                 given an origin and a ray&lt;br /&gt;
                                                 direction (in game units).&lt;br /&gt;
                                                 This is primarily used to&lt;br /&gt;
                                                 debug the rendering system.&lt;br /&gt;
&lt;br /&gt;
/moveto &amp;lt;x&amp;gt; &amp;lt;y&amp;gt;                                - Attempts to walk to a specific&lt;br /&gt;
                                                 coordinate set.&lt;br /&gt;
&lt;br /&gt;
/calcpath &amp;lt;x1&amp;gt; &amp;lt;y1&amp;gt; &amp;lt;x2&amp;gt; &amp;lt;y2&amp;gt;                  - Calculates a path between two&lt;br /&gt;
                                                 points and prints the result&lt;br /&gt;
                                                 to the console.&lt;br /&gt;
&lt;br /&gt;
/pathto &amp;lt;x&amp;gt; &amp;lt;y&amp;gt;                                - Calculates a path between your&lt;br /&gt;
                                                 current position and another&lt;br /&gt;
                                                 point in the same area.&lt;br /&gt;
&lt;br /&gt;
/time                                          - Displays the current game&lt;br /&gt;
                                                 world time.&lt;br /&gt;
&lt;br /&gt;
/settime &amp;lt;hour&amp;gt; [minute] [second] [millisec]   - Advances server time as per&lt;br /&gt;
                                                 the behavior of the SetTime&lt;br /&gt;
                                                 nwscript function (no server&lt;br /&gt;
                                                 scripts are required).  If you&lt;br /&gt;
                                                 omit any arguments after hour,&lt;br /&gt;
                                                 they are defaulted to zero.&lt;br /&gt;
&lt;br /&gt;
/showui                                        - Re-opens all client extension&lt;br /&gt;
                                                 UI windows that you've closed,&lt;br /&gt;
                                                 such as the map window.&lt;br /&gt;
&lt;br /&gt;
/kill                                          - Uses DM powers to kill your&lt;br /&gt;
                                                 current selection.&lt;br /&gt;
&lt;br /&gt;
/heal                                          - Uses DM powers to heal and&lt;br /&gt;
                                                 resurrect your current&lt;br /&gt;
                                                 selection.&lt;br /&gt;
&lt;br /&gt;
/getres &amp;lt;restype&amp;gt; &amp;lt;resref&amp;gt;                     - Unpacks a module resource from&lt;br /&gt;
                                                 the module or its HAK files.&lt;br /&gt;
&lt;br /&gt;
/help [command]                                - Provides online help about a&lt;br /&gt;
                                                 text command or lists all text&lt;br /&gt;
                                                 commands if no arguments were&lt;br /&gt;
                                                 supplied.&lt;br /&gt;
&lt;br /&gt;
/pickupitem                                    - Picks up an item from the&lt;br /&gt;
                                                 ground were it the selected&lt;br /&gt;
                                                 item.&lt;br /&gt;
&lt;br /&gt;
/lootitem &amp;lt;item name&amp;gt;                          - Loots an item from the open&lt;br /&gt;
                                                 item container.&lt;br /&gt;
&lt;br /&gt;
/lootall                                       - Loots all items from the open&lt;br /&gt;
                                                 item container.&lt;br /&gt;
&lt;br /&gt;
/takeitem                                      - Moves an item directly to your&lt;br /&gt;
                                                 repository using DM powers.&lt;br /&gt;
                                                 The selected item is used.&lt;br /&gt;
&lt;br /&gt;
/dumpobject                                    - Use DM powers to display&lt;br /&gt;
                                                 various trivia about an&lt;br /&gt;
                                                 object.&lt;br /&gt;
&lt;br /&gt;
/direct2d                                      - Toggles Direct2D acceleration&lt;br /&gt;
                                                 on or off (requires Vista+).&lt;br /&gt;
&lt;br /&gt;
/nomodels                                      - Enables or disables model&lt;br /&gt;
                                                 loading (speeds area loading,&lt;br /&gt;
                                                 but disables wireframe view in&lt;br /&gt;
                                                 the area map).&lt;br /&gt;
&lt;br /&gt;
/perftrace                                     - Enables logging of client&lt;br /&gt;
                                                 message processing performance&lt;br /&gt;
                                                 characteristics.  This tracing&lt;br /&gt;
                                                 only functions in Client&lt;br /&gt;
                                                 Extension mode, and only when&lt;br /&gt;
                                                 using the replacement network&lt;br /&gt;
                                                 layer (which is the default).&lt;br /&gt;
&lt;br /&gt;
/showfps                                       - Toggles display of nwn2main's&lt;br /&gt;
                                                 FPS counter (no DM privileges&lt;br /&gt;
                                                 are required).&lt;br /&gt;
&lt;br /&gt;
/logfps                                        - Toggles timestamped logging of&lt;br /&gt;
                                                 nwn2main's FPS counter to the&lt;br /&gt;
                                                 Client Extension log file.&lt;br /&gt;
&lt;br /&gt;
/fswindow                                      - Toggles fullscreen windowed&lt;br /&gt;
                                                 mode, which covers the monitor&lt;br /&gt;
                                                 but does not engage fullscreen&lt;br /&gt;
                                                 input capture.&lt;br /&gt;
&lt;br /&gt;
/tts                                           - Toggles text to speech support&lt;br /&gt;
                                                 for logon and logoff events,&lt;br /&gt;
                                                 and in-game chatter.&lt;br /&gt;
&lt;br /&gt;
/ttsfilter [.NET regular expression match]     - Set a .NET regular expression&lt;br /&gt;
                                                 filter that voice events must&lt;br /&gt;
                                                 match in text to speech mode&lt;br /&gt;
                                                 for voice playback to be sent.&lt;br /&gt;
&lt;br /&gt;
                                                 If used without arguments, any&lt;br /&gt;
                                                 filter is removed.&lt;br /&gt;
&lt;br /&gt;
/testregex [text]                              - Tests a regex match assigned&lt;br /&gt;
                                                 by /ttsfilter against a text&lt;br /&gt;
                                                 string.&lt;br /&gt;
&lt;br /&gt;
/away [response message]                       - Sets away mode, or toggles it&lt;br /&gt;
                                                 off if no argument is supplied&lt;br /&gt;
                                                 and away mode is already on.&lt;br /&gt;
&lt;br /&gt;
                                                 When enabled, an automatic&lt;br /&gt;
                                                 tell (&amp;quot;response message&amp;quot;) is&lt;br /&gt;
                                                 sent to any incoming tell, one&lt;br /&gt;
                                                 time per sender.  Away mode is&lt;br /&gt;
                                                 automatically cancelled when a&lt;br /&gt;
                                                 message is sent or the player&lt;br /&gt;
                                                 moves.&lt;br /&gt;
&lt;br /&gt;
                                                 A summary of received tells&lt;br /&gt;
                                                 during away mode is shown when&lt;br /&gt;
                                                 away mode ends.&lt;br /&gt;
&lt;br /&gt;
/camerapitch [degrees]                         - Sets a new default maximum&lt;br /&gt;
                                                 camera pitch for the&lt;br /&gt;
                                                 Exploration Mode camera view.&lt;br /&gt;
                                                 90 degrees is the game default&lt;br /&gt;
                                                 and 179 degrees is the default&lt;br /&gt;
                                                 for Character Mode.  The &lt;br /&gt;
                                                 Client Extension default is&lt;br /&gt;
                                                 179 degrees.  Valid values&lt;br /&gt;
                                                 must be between [90, 179].&lt;br /&gt;
&lt;br /&gt;
/freecam                                       - Enables free camera mode, for&lt;br /&gt;
                                                 DM privileged users.  Switch&lt;br /&gt;
                                                 to another camera mode to&lt;br /&gt;
                                                 cancel free camera mode.  Use&lt;br /&gt;
                                                 the arrow keys and scroll&lt;br /&gt;
                                                 wheel to navigate in free&lt;br /&gt;
                                                 camera mode.&lt;br /&gt;
&lt;br /&gt;
/fadeobjects                                   - Toggles object fade for all&lt;br /&gt;
                                                 camera modes.  The setting is&lt;br /&gt;
                                                 not persisted to disk.  Use&lt;br /&gt;
                                                 /fadeobjects again to return&lt;br /&gt;
                                                 to the configured settings for&lt;br /&gt;
                                                 the active camera mode.&lt;br /&gt;
&lt;br /&gt;
/console &amp;lt;console-cmd&amp;gt; [console-cmd-params]    - Runs a server-side console&lt;br /&gt;
                                                 command.&lt;br /&gt;
&lt;br /&gt;
/effectfade                                    - Toggles floating text&lt;br /&gt;
                                                 announcements when effect&lt;br /&gt;
                                                 icons (i.e., for buff spells)&lt;br /&gt;
                                                 fade on your character.&lt;br /&gt;
&lt;br /&gt;
/selectitem [item name]                        - Selects an item by name.  This&lt;br /&gt;
                                                 command is useful for hotbar&lt;br /&gt;
                                                 macros that cast spells, such&lt;br /&gt;
                                                 as Magic Weapon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If a text line does not begin with a /, then it is sent as a normal volume talk&lt;br /&gt;
message.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Regular Expressions&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
.NET regular expressions are used for the text to speech filter.  Documentation&lt;br /&gt;
for the regular expression language can be found at the following Microsoft web&lt;br /&gt;
site:&lt;br /&gt;
&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Automatic Command Sending&lt;br /&gt;
-------------------------&lt;br /&gt;
&lt;br /&gt;
Although the DM Standalone Client does not have a dedicated configuration file,&lt;br /&gt;
it will read commands (one per line) from two files on the disk at certain&lt;br /&gt;
points in time.  These command can configure the DM Standalone Client's&lt;br /&gt;
settings, such as the default DM logon character file.&lt;br /&gt;
&lt;br /&gt;
The DM Standalone Client will read the&lt;br /&gt;
&amp;lt;Documents&amp;gt;\Neverwinter Nights 2\autocmds.txt file at startup time (where the&lt;br /&gt;
&amp;lt;Documents&amp;gt; variable indicates your My Documents (or Documents on Windows Vista&lt;br /&gt;
or later) folder.  Once the DM Standalone Client has joined the game world, it&lt;br /&gt;
will read the &amp;lt;Documents&amp;gt;\Neverwinter Nights 2\autocmds_ingame.txt file.  Both&lt;br /&gt;
files have identical formats.&lt;br /&gt;
&lt;br /&gt;
Should a particular autorun command file not exist, the autorun phase is&lt;br /&gt;
simply silently skipped.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Saved Window Positions&lt;br /&gt;
----------------------&lt;br /&gt;
&lt;br /&gt;
The client extension remembers how you positioned its windows for the next time&lt;br /&gt;
that you log on.  There is one set of settings used in client extension mode,&lt;br /&gt;
and another used if you log on with the DM Standalone Client.&lt;br /&gt;
&lt;br /&gt;
Window settings are recorded in the registry at the following location:&lt;br /&gt;
&lt;br /&gt;
HKEY_CURRENT_USER\SOFTWARE\Valhalla Legends\ClientExtension\Settings&lt;br /&gt;
&lt;br /&gt;
There is generally no need to directly edit the saved settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Casting Spells from Macros&lt;br /&gt;
--------------------------&lt;br /&gt;
&lt;br /&gt;
The /cast command (usable both outside and inside of macros) allows you to cast&lt;br /&gt;
a spell by name.&lt;br /&gt;
&lt;br /&gt;
When naming a spell, you should use the spell's full display name.  For spells&lt;br /&gt;
with sub-spells (for example, Protection from Alignment), it is usually best to&lt;br /&gt;
cast the specific sub-spell you want.  (Many such spells will either do nothing&lt;br /&gt;
or take a default behavior that you might not like when casting the main spell&lt;br /&gt;
directly.)&lt;br /&gt;
&lt;br /&gt;
For example, if you wanted to cast Protection from Alignment's Protectiom from&lt;br /&gt;
Evil sub-spell, you could use the following command:&lt;br /&gt;
&lt;br /&gt;
/cast Protection from Evil&lt;br /&gt;
&lt;br /&gt;
Spells can also be given metamagic modifiers as a comma-separated list.  The&lt;br /&gt;
following are the metamagic modifier names that are accepted:&lt;br /&gt;
&lt;br /&gt;
empower&lt;br /&gt;
extend&lt;br /&gt;
maximize&lt;br /&gt;
quicken&lt;br /&gt;
silent&lt;br /&gt;
still&lt;br /&gt;
persistent&lt;br /&gt;
permanent&lt;br /&gt;
&lt;br /&gt;
You must have the appropriate feats and spell levels or readied spell&lt;br /&gt;
memorizations available to successfully cast a spell.  Otherwise, the spell&lt;br /&gt;
casting attempt fails.&lt;br /&gt;
&lt;br /&gt;
The /cast command always uses your current target, unless the spell in question&lt;br /&gt;
can only be cast on yourself, in which cast your character is automatically&lt;br /&gt;
used as the target.&lt;br /&gt;
&lt;br /&gt;
It is currently not possible to cast spells on the ground with /cast.&lt;br /&gt;
&lt;br /&gt;
Similarly to spells, the /feat &amp;lt;Feat-Name&amp;gt; command can be used to invoke a feat&lt;br /&gt;
from a macro.  Only feats that are activateable may be referenced via this&lt;br /&gt;
command.  For example, to activate the Racial Spell (Light) feat, one might use&lt;br /&gt;
the following command:&lt;br /&gt;
&lt;br /&gt;
/feat Racial Spell (Light)&lt;br /&gt;
&lt;br /&gt;
Subradial feat selection is not currently supported.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Custom Hotbar Macros&lt;br /&gt;
--------------------&lt;br /&gt;
&lt;br /&gt;
Custom macro hotbar buttons are a new feature that the Client Extension adds to&lt;br /&gt;
the game.  Macros allow you to assign a set of text commands that run when you&lt;br /&gt;
press a hotbar button.  The tooltip for a macro hotbar button lists all of the&lt;br /&gt;
commands that are run when you activate that button.&lt;br /&gt;
&lt;br /&gt;
This feature is particularly useful when you have a large number of repetitive&lt;br /&gt;
actions that you would like to consolidate into just one keypress.  For a&lt;br /&gt;
familiar example, you could create a single hotbar button that, when pressed,&lt;br /&gt;
would activate all of a Cleric's, or Wizard's buff spells.&lt;br /&gt;
&lt;br /&gt;
To create a hotbar macro button, use the /setmacro command as follows:&lt;br /&gt;
&lt;br /&gt;
/setmacro &amp;lt;hotbar button number&amp;gt; &amp;lt;command1&amp;gt;[;command2;commandN]&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Hotbar button number&amp;quot; indicates the hotbar button which will be turned into a&lt;br /&gt;
macro-enabled hotbar button.  Button 1 is the first hotbar button, on row 1.&lt;br /&gt;
Button 13 is the first hotbar button on row 2, and buttom 15 is the third&lt;br /&gt;
hotbar button on row 2, and so on.&lt;br /&gt;
&lt;br /&gt;
After the hotbar button number, you may provide a list of text commands that&lt;br /&gt;
are processed when the hotbar button is pressed.  If you would like to run more&lt;br /&gt;
than one text command, separate the commands with a semicolon.&lt;br /&gt;
&lt;br /&gt;
Any Client Extension text command, and any text command supported by the game&lt;br /&gt;
client itself may be used in a macro.  You may also macro up simple chat text,&lt;br /&gt;
if desired.&lt;br /&gt;
&lt;br /&gt;
The most common use of macro hotbar buttons is to cast several spells in&lt;br /&gt;
succession.  There are two ways to do this: by spell name, and by referencing a&lt;br /&gt;
different hotbar button.&lt;br /&gt;
&lt;br /&gt;
You can create a macro hotbar button to memorize all your currently memorized&lt;br /&gt;
spells.  This is useful in scenarios where your character might polymorph or&lt;br /&gt;
otherwise equip and un-equip items that alter their spellcasting stats.  The&lt;br /&gt;
/mspells &amp;lt;hotbutton number&amp;gt; command will create such a macro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorial: Creating a hotbar button to cast several buffs at once via casting&lt;br /&gt;
          spells by name.&lt;br /&gt;
----------------------------------------------------------------------------&lt;br /&gt;
          &lt;br /&gt;
Let's say that you want to have a single hotbar button which casts several&lt;br /&gt;
offensive spells, all in one go.  (The spells would be enqueued up to be cast&lt;br /&gt;
one after another, just as if you hit two hotbar buttons separately.)&lt;br /&gt;
&lt;br /&gt;
For this example, we will create a hotbar button which casts a quickened&lt;br /&gt;
version of Isaac's Lesser Missle Storm, followed by Flame Arrow.&lt;br /&gt;
&lt;br /&gt;
This task can be easily automated by creating a hotbar button that casts both&lt;br /&gt;
of these spells.  We will use the /cast macro command, which looks up a spell&lt;br /&gt;
by name, and casts it on your current target.&lt;br /&gt;
&lt;br /&gt;
We can construct a sequence of /cast commands that will cast the spells that we&lt;br /&gt;
want as follows:&lt;br /&gt;
&lt;br /&gt;
/cast &amp;quot;Isaac's Lesser Missile Storm&amp;quot; quicken&lt;br /&gt;
/cast Flame Arrow&lt;br /&gt;
&lt;br /&gt;
The first spell casts the lesser missle storm spell, with the &amp;quot;quicken&amp;quot;&lt;br /&gt;
metamagic property.  If you wanted to add other metamagic properties to a&lt;br /&gt;
spell, you could specify them in a comma-separated list.&lt;br /&gt;
&lt;br /&gt;
For instance, to cast a silent and still Magic Missle spell, you would use the&lt;br /&gt;
following command:&lt;br /&gt;
&lt;br /&gt;
/cast &amp;quot;Magic Missile&amp;quot; still, silent&lt;br /&gt;
&lt;br /&gt;
Now, back to our example.  We can create a hotbar button that will run both of&lt;br /&gt;
the above macro commands with the /setmacro command.  Here, we will assign the&lt;br /&gt;
macro to hotbar button 1, which is the first button on the first hotbar row.&lt;br /&gt;
&lt;br /&gt;
/setmacro 1 /cast &amp;quot;Isaac's Lesser Missile Storm&amp;quot; quicken ; /cast Flame Arrow&lt;br /&gt;
&lt;br /&gt;
That's all there is to it.  Now, the next time you press that hotbar button,&lt;br /&gt;
all of the spells you have listed in the macro will be cast.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tutorial: Creating a hotbar button to cast several buffs at once via hotbar&lt;br /&gt;
          buttons.&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Let's consider that you want to cast several buff spells with one hotbar&lt;br /&gt;
button.  This task can be easily accomplished with the /setmacro command.&lt;br /&gt;
&lt;br /&gt;
First, you must place the spells that you would like to cast on their own&lt;br /&gt;
hotbar slots.  We'll use hotbar buttons 2, 3, and 4 for this example, so drag&lt;br /&gt;
the spells that you would like to cast onto those buttons (first hotbar row).&lt;br /&gt;
&lt;br /&gt;
Now, for this example, we will turn the first hotbar button into a macro-&lt;br /&gt;
enabled button which will use buttons 2, 3, and 4.  After you have set up those&lt;br /&gt;
three hotbar buttons, type the following command:&lt;br /&gt;
&lt;br /&gt;
/setmacro 1 /hotbar 2 ; /hotbar 3 ; /hotbar 4&lt;br /&gt;
&lt;br /&gt;
If everything worked out, you should see a couple of messages written to your&lt;br /&gt;
combat log, along the lines of &amp;quot;Configuring macro command: /hotbar 2&amp;quot;.  You&lt;br /&gt;
should also have a new hotbar button which has a &amp;quot;2D Missing Texture&amp;quot; icon in&lt;br /&gt;
the button 1 slot.  (Don't worry about the missing texture; the button will&lt;br /&gt;
still work fine.)&lt;br /&gt;
&lt;br /&gt;
That's it; you're done!  Now, the next time you press the first hotbar button&lt;br /&gt;
on row 1, the actions that you have assigned to buttons 2-4 will be carried&lt;br /&gt;
out.&lt;br /&gt;
&lt;br /&gt;
Tip:  If you have buff spells that can buff an ally, select that ally before&lt;br /&gt;
      you push the macro-enabled hotbar button.  Macros will use your currently&lt;br /&gt;
      selected target for their spell targets, for spells that may target a&lt;br /&gt;
      creature other than yourself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Accessing possessed creature abilities as a Dungeon Master&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
You can use special abilities of possessed creatures with the /talent command.&lt;br /&gt;
&lt;br /&gt;
This command only works for intrinsic creature special abilities, such as&lt;br /&gt;
Dragon Breath.&lt;br /&gt;
&lt;br /&gt;
When you possess a creature, your hotbar will be populated with grayed spell&lt;br /&gt;
buttons for each creature special ability.  While you cannot use the grayed&lt;br /&gt;
buttons directly, you may hover the mouse over them to discover the ability&lt;br /&gt;
names.  The ability name can then be used with /talent.&lt;br /&gt;
&lt;br /&gt;
For example this command:&lt;br /&gt;
&lt;br /&gt;
/talent Dragon Breath, Fire&lt;br /&gt;
&lt;br /&gt;
...will use the fire-breathing ability of a Red Dragon.&lt;br /&gt;
&lt;br /&gt;
You may use /talent in hotbar macro buttons, or you may simply type it out on&lt;br /&gt;
the text input line directly if you prefer.  The same targetting rule as for&lt;br /&gt;
/cast apply to /talent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Launching the Client Extension from the Toolset (Advanced)&lt;br /&gt;
----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
You can configure the toolset to launch the game with the Client Extension and&lt;br /&gt;
not the standard game client.  This step is only recommended for advanced users&lt;br /&gt;
that are comfortable with changing their game install.&lt;br /&gt;
&lt;br /&gt;
1) Go to the game installation directory and rename nwn2main.exe to&lt;br /&gt;
   nwn2main_override.exe.&lt;br /&gt;
&lt;br /&gt;
2) Copy NWLauncher.exe into the game installation directory, and rename it to&lt;br /&gt;
   nwn2main.exe.&lt;br /&gt;
&lt;br /&gt;
To undo this setting, you will have to manually rename back the original&lt;br /&gt;
version of nwn2main.exe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Online Services&lt;br /&gt;
---------------&lt;br /&gt;
&lt;br /&gt;
This release of the Client Extension includes connectivity to a third-party&lt;br /&gt;
online service operated by the creator of the Client Extension program,&lt;br /&gt;
Skywing.  The following describes the online service functionality and any data&lt;br /&gt;
collected.&lt;br /&gt;
&lt;br /&gt;
* Master Server Listing:  A master server listing of known NWN2 game servers is&lt;br /&gt;
  queried by the Client Extension via a web service API.  This powers the&lt;br /&gt;
  Internet Server Browser functionality in the game, now that GameSpy support&lt;br /&gt;
  has been discontinued.&lt;br /&gt;
&lt;br /&gt;
* Master Server Population:  When connecting to a server not known to the&lt;br /&gt;
  master server listing, the Client Extension requests that the master server&lt;br /&gt;
  infrastructure add the server in question to the master list, so that other&lt;br /&gt;
  players may join the server.  This broadens coverage of known servers in the&lt;br /&gt;
  Internet Server Browser, as not all servers have been upgraded to participate&lt;br /&gt;
  in the master server infrastructure project.  The only information passed to&lt;br /&gt;
  the online services functionality is the IP address and port number of the&lt;br /&gt;
  game server to add to the master server listing.  This functionality is not&lt;br /&gt;
  used to correlate or track activity by Client Extension users.  A server that&lt;br /&gt;
  has been listed by this mechanism will be visible to other Client Extension&lt;br /&gt;
  users, and other clients of the online services API, but no information about&lt;br /&gt;
  the user that requested the listing is retained; this information is purely&lt;br /&gt;
  used for public server listing and matchmaking purposes.&lt;br /&gt;
&lt;br /&gt;
* Auto Update Functionality:  When started, the Client Extension will attempt&lt;br /&gt;
  to discover whether new software updates for the NWN2 Client Extension&lt;br /&gt;
  software are available.  If an update is available, the user is prompted to&lt;br /&gt;
  decide whether to install the update or continue without installing the&lt;br /&gt;
  update.  All software updates are digitally signed.  In addition, the auto&lt;br /&gt;
  update functionality provides a description of the update to the user, and&lt;br /&gt;
  can provide a &amp;quot;Message of the Day&amp;quot; to the user used to provide notification&lt;br /&gt;
  of important community news.  All auto update functionality notifications&lt;br /&gt;
  take the form of a clearly marked message box at the main screen in the game&lt;br /&gt;
  client, and the user is never required to install an update if they elect not&lt;br /&gt;
  to.&lt;br /&gt;
&lt;br /&gt;
* Diagnostics Statistics:  Aggregate counters of selected events, listed below,&lt;br /&gt;
  are recorded by means of the online services connectivity.  These counters&lt;br /&gt;
  are used only to diagnose and identify problems with software updates and are&lt;br /&gt;
  not used to track or identify users.  Information about the individual user&lt;br /&gt;
  that incremented a diagnostics counter is not retained; only an aggregate&lt;br /&gt;
  numeric counter value of events across all Client Extension users is&lt;br /&gt;
  maintained.&lt;br /&gt;
&lt;br /&gt;
  Counters:  Failed Software Update, Successful Software Update, Manual&lt;br /&gt;
             Installed Software Update.&lt;br /&gt;
&lt;br /&gt;
* Data Collection and Privacy Policy:  No personally identifying information is&lt;br /&gt;
  retained by any of the third party online services hosted by Skywing that the&lt;br /&gt;
  Client Extension maintains connectivity to.  IP addresses may be temporarily&lt;br /&gt;
  retained in the form of standard web server request logs, but these are not&lt;br /&gt;
  used to attempt to identify, contact, or track the activity of Client&lt;br /&gt;
  Extension users.  Web server request logs are not shared with external&lt;br /&gt;
  parties.&lt;br /&gt;
&lt;br /&gt;
* Online Services Source Code:  The source code for the online services&lt;br /&gt;
  functionality used by the Client Extension can be located at the following&lt;br /&gt;
  web URL:  https://github.com/SkywingvL/nwn2dev-public&lt;br /&gt;
&lt;br /&gt;
* Online Services Communication Endpoint:  The online services functionality&lt;br /&gt;
  supported by the NWN2 Client Extension involves an HTTP connection to&lt;br /&gt;
  api.mst.valhallalegends.com and the exchange of standard SOAP messages.  The&lt;br /&gt;
  source code for the online services functionality is available at the above&lt;br /&gt;
  URL.&lt;br /&gt;
&lt;br /&gt;
Acknowledgements&lt;br /&gt;
----------------&lt;br /&gt;
&lt;br /&gt;
Grinning Fool, for assistance with area decoding and portions of the game&lt;br /&gt;
object update message decoding.&lt;br /&gt;
&lt;br /&gt;
Obsidian, for working to provide debug symbols for the Neverwinter Nights 2&lt;br /&gt;
client and server.  This has proven by far the most positive interaction with&lt;br /&gt;
a game developer that I've had to date, something that should be considered a&lt;br /&gt;
model for other game developers to emulate.&lt;br /&gt;
&lt;br /&gt;
Brian Meyer, for bearing with several test builds and providing extensive&lt;br /&gt;
test work and valuable feedback.&lt;br /&gt;
&lt;br /&gt;
Tero Kivinen &amp;lt;kivinen@iki.fi&amp;gt;, for decoding portions of the walkmesh on-disk&lt;br /&gt;
format.&lt;br /&gt;
&lt;br /&gt;
KEMO, for bearing with me for extensive testing of DM cross-area creature&lt;br /&gt;
viewing and other assistance with debugging the server-side GUI scripts&lt;br /&gt;
involved.&lt;br /&gt;
&lt;br /&gt;
tazpn, for releasing the source code to his Neverwinter Nights 2 model import&lt;br /&gt;
and export tool, from which information on the game's bone system was derived.&lt;br /&gt;
&lt;br /&gt;
Numerous beta testers for providing feedback, catching issues, and suggesting&lt;br /&gt;
new features.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Sel%C3%BBne&amp;diff=4052</id>
		<title>Selûne</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Sel%C3%BBne&amp;diff=4052"/>
				<updated>2025-08-12T00:40:01Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Deities]]&lt;br /&gt;
[[Category:Chaotic Deities]]&lt;br /&gt;
[[Category:Good Deities]]&lt;br /&gt;
[[Category:Chaotic Good Deities]]&lt;br /&gt;
[[Category:Good Domain Deities]]&lt;br /&gt;
[[Category:Chaos Domain Deities]]&lt;br /&gt;
[[Category:Moon Domain Deities]]&lt;br /&gt;
[[Category:Protection Domain Deities]]&lt;br /&gt;
[[Category:Travel Domain Deities]]&lt;br /&gt;
{{Deity&lt;br /&gt;
| Image = [[Image:Deity_Selune.jpg|250px|Selûne]]&lt;br /&gt;
| Name = Selûne&lt;br /&gt;
| Titles = Our Lady of Silver, The Moonmaiden&lt;br /&gt;
| Symbol = Pair of female eyes surrounded by seven silver stars&lt;br /&gt;
| Home Plane = Gates of the Moon&lt;br /&gt;
| Alignment = Chaotic Good&lt;br /&gt;
| Portfolio = Non-evil lycanthropes, Navigation, Questers, Stars, Wanderers&lt;br /&gt;
| Worshipers = Female spellcasters, good and neutral lycanthropes, navigators, Sun Soul monks, and sailors&lt;br /&gt;
| Domains = [[Chaos (Domain)|Chaos]], [[Good (Domain)|Good]], [[Moon (Domain)|Moon]], [[Protection (Domain)|Protection]], [[Travel (Domain)|Travel]]&lt;br /&gt;
| Favored Weapon = Morning Star&lt;br /&gt;
}}&lt;br /&gt;
{{ExternalSource_nwn2wiki|http://nwn2.wikia.com/wiki/Selune}}&lt;br /&gt;
{{ExternalSource_frwiki|http://forgottenrealms.wikia.com/wiki/Selûne}}&lt;br /&gt;
Selûne (pronounced seh-LOON-ay), also known as Our Lady of Silver and the Moonmaiden, is the goddess of the moon. She is also venerated in Faerûn as a goddess of light, stars, navigation, navigators, wanderers, questers, and goodly lycanthropes.&lt;br /&gt;
&lt;br /&gt;
== Clergy and Temples ==&lt;br /&gt;
Selûne's clerics were a very diverse group, including sailors, non-evil lycanthropes, mystics, and female spellcasters. Her church's main objective was to fight evil lycanthropes and summon the Shards, blue-haired female planetar servants of Selûne, to battle the minions of her archnemesis and twin, Shar. The temple also performed fortune-telling, healing, and practiced self-reliance and humility.[citation needed]&lt;br /&gt;
&lt;br /&gt;
One order of fanatic Selûnites was known as the Swords of the Lady, who were often referred to colloquially as the &amp;quot;Lunatics&amp;quot;. Its members were led by a few Selûnite crusaders who tended to act rapidly in response to threats from Shar and her priesthood, although their behavior was often viewed as bizarre by the public at large.&lt;br /&gt;
 &lt;br /&gt;
The Oracles of the Moon was a group of female diviners who worshiped the Night White Lady. They performed fortune-telling rituals and were some of the highest bards and priests in the faith.&lt;br /&gt;
&lt;br /&gt;
Operating mainly in the north, especially Icewind Dale, the priests and priestesses known as Silverstars were dedicated to protecting the vulnerable. Gifted Silverstars were normally gifted with a Moonblade, which had special properties to harm those who are evil.&lt;br /&gt;
&lt;br /&gt;
A large temple to Selûne was raised in the small state of [[Ruqel]] along the Sword coast.&lt;br /&gt;
&lt;br /&gt;
== Dogma ==&lt;br /&gt;
Let all on whom Selune’s light falls be welcome if they desire. As the silver moon waxes and wanes, so too does life. Trust in Selune’s radiance, and know that all love alive under her light shall know her blessing. Turn to the moon, and she will be your true guide. Promote acceptance and tolerance. See all other beings as equals. Aid fellow Selunites as if they were your dearest friends. &lt;br /&gt;
&lt;br /&gt;
{{Deities}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Waukeen&amp;diff=4051</id>
		<title>Waukeen</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Waukeen&amp;diff=4051"/>
				<updated>2025-08-11T18:39:15Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Dogma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Deities]]&lt;br /&gt;
[[Category:True Neutral Deities]]&lt;br /&gt;
[[Category:Knowledge Domain Deities]]&lt;br /&gt;
[[Category:Protection Domain Deities]]&lt;br /&gt;
[[Category:Travel Domain Deities]]&lt;br /&gt;
{{Deity&lt;br /&gt;
| Image = [[Image:Deity_Waukeen.jpg|250px|Waukeen]]&lt;br /&gt;
| Name = Waukeen&lt;br /&gt;
| Titles = Liberty's Maiden, the Golden Lady, Merchants friend, Merchants' Friend, Merchant's Friend&lt;br /&gt;
| Symbol = Gold coin with Waukeen's profile facing left&lt;br /&gt;
| Home Plane = Brightwater&lt;br /&gt;
| Alignment = True Neutral&lt;br /&gt;
| Portfolio = Trade, money, wealth&lt;br /&gt;
| Worshipers = Merchants, the wealthy, traders, rogues&lt;br /&gt;
| Domains = [[Knowledge (Domain)|Knowledge]], [[Protection (Domain)|Protection]], [[Travel (Domain)|Travel]]&lt;br /&gt;
| Favored Weapon = [[Club]]&lt;br /&gt;
}}&lt;br /&gt;
{{ExternalSource_nwn2wiki|http://nwn2.wikia.com/wiki/Waukeen}}&lt;br /&gt;
{{ExternalSource_frwiki|http://forgottenrealms.wikia.com/wiki/Waukeen}}&lt;br /&gt;
&lt;br /&gt;
Waukeen (pronounced wau-KEEN or wah-KEEN) is a lesser deity of the Faerûnian pantheon known as the Merchant's Friend, Liberty's Maiden, and the Golden Lady. Her portfolio includes everything related to commerce and the accumulation of wealth through free and fair trade, as well as the beneficial use of wealth to improve civilization. Those that venerated and appeased her included merchants from lowly peddlers to the wealthy owners of trading companies, investors, accountants, entrepreneurs, caravan guides, warehouse owners, philanthropists, deal-makers, moneylenders, and so on.  Waukeen was also the goddess of illicit trade and the patron of many smugglers, fences, black marketeers, and &amp;quot;businessmen&amp;quot; on the shady side of commerce. Collectively, her worshipers were known as Waukeenar.&lt;br /&gt;
&lt;br /&gt;
== Dogma ==&lt;br /&gt;
Mercantile trade is the best road to enrichment. Increasing the general prosperity buys ever greater civilization and happiness for intelligent folk worldwide, bringing people closer to the golden age that lies ahead. Destroy no trade goods, raise no restrictions to trade, and propagate no malicious rumors that could harm someone's commerce. Challenge and refute unproven rumors that could negatively impact trade when heard. Give money freely to beggars and businesses, for the more coin everyone has, the greater the urge to spend and trade rather than hoard. To worship Waukeen is to know wealth. To guard your funds is to venerate her, and to share them well seeds your future success. Call on her in trade, and she will guide you in wise commerce. The bold find gold, the careful keep it, and the timid yield it up.&lt;br /&gt;
&lt;br /&gt;
== Clergy and Temples ==&lt;br /&gt;
Ornate temples to the glory of the Golden Lady were usually found in centers of commerce from Tashalar in the south, up through Amn, all around the Sea of Fallen Stars (Chessenta, Cormyr, Sembia, the Vast, Impiltur) and over to Thesk on the Golden Way.  Her clerics and other worshipers traveled the trade routes aiding merchants and caravans or worked in the opulent temples as hosts for wealthy donors, moneylenders, currency exchangers, venture capitalists, warehousers, fences (covertly, of course) and, most importantly, security guards&lt;br /&gt;
&lt;br /&gt;
{{Deities}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4050</id>
		<title>Building Creatures</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4050"/>
				<updated>2025-06-13T06:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Other Considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
First, make sure you need to build it! The [[ALFA Base Resources]] and [[ALFA Campaign Folder]] projects come with many creatures NWN2 has a visual representation for, so in most cases you don't need to build anything. The [[ALFA Spawn System]] also includes functions for setting the name of spawned creatures, so there is often times no reason to create a creature on your own. The fewer creatures in your mod, the smaller and less bloated it will be.&lt;br /&gt;
&lt;br /&gt;
Assuming the creature does need to be created, go ahead and do so as you normally would in the toolset. A few things are different in ALFA, however. Most of this just applies to creatures which are statically spawned, but its probably a good read for any builder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Guidelines ==&lt;br /&gt;
Creatures are expected to follow canon specifications as closely as the toolset allows. If you must deviate on the basis of game mechanics, play-testing should be used to make sure the altered creature's CR is set properly. Always post any deviations from canon specifications on our NWN2 tech forums so that others may comment or follow them for consistency's sake. When setting clerical domains and alignment, be sure to base things off of the most popular deity for the creature type. When setting spells and equipment, be sure and follow FR's lore and canon if at all possible. Our first priority is game balance, and then following FR lore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
The following conventions will need to be used in naming creature blueprints to avoid any conflicts with other blueprints and to ensure that all content works properly with scripts:&lt;br /&gt;
&lt;br /&gt;
=== Localized Name ===&lt;br /&gt;
Uncommon, Creature names should not be revealed to players in-game, unless a sufficiently unique creature or equipment model does not exist for the creature being created. In such cases, choose a one or two word descriptive name, but be sure you reveal as little of the meta information about the creature as possible. Size based descriptive words are not necessary since creatues can be scaled in NWN2 to properly reflect their size.  However, common creatures goblins, kobolds, skeletons etc most PCs would know what these are anyway so its ok to use their base name.  We never got any scripting done to reveal a creatures true designation so they cannot make a skill check and have the name revealed.&lt;br /&gt;
&lt;br /&gt;
Putting creature names inside &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; will make them visible only to builders. However, make sure you put the bracketed part behind a Descriptive name or DMs cannot see these in game. This will help builders distinguish between multiple blueprints of the same type and convey important reference information at a glance without revealing any of the information to players in the game. Generally, a creatures name or race, social role or class, gender (if applicable), and challenge rating are useful characteristics to record within {}.  Make sure however that you do not start the name with the bracketed info, doing so will make it so the DM cannot read the creature in creation menu or find them in the area.&lt;br /&gt;
&lt;br /&gt;
: 'Example: &amp;lt;code&amp;gt;Larger Kobold {Chieftain CR1}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Male Human {Barbarian CR3}&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Template, ResRef, and Tag ===&lt;br /&gt;
: ''See also: [[ResRef]], [[Tag]], and [[Template]]''&lt;br /&gt;
The primary purpose of tag and resref naming conventions is to prevent any naming conflicts. A secondary purpose is to describe the creature in some way. All global creature blueprints must begin with the &amp;quot;abr_cr&amp;quot; prefix to designate them as global blueprints. Server specific blueprints should begin with a 3 digit server number in place of the &amp;quot;abr&amp;quot;, so &amp;quot;001_cr&amp;quot; for example. For every subcategory, add a two letter acronym delimited with underscores followed lastly by a descriptive name for the creature itself. This helps to quickly locate blueprints when all we have is its resref. To illustrate, here are a few examples:&lt;br /&gt;
&lt;br /&gt;
: ''Example: A global humanoid creature blueprint: &amp;lt;code&amp;gt;abr_cr_hu_koboldchieftain&amp;lt;/code&amp;gt;''  These are typically any creature you make that could be used on another mod&lt;br /&gt;
: ''Example: A server NPC blueprint on server 01: &amp;lt;code&amp;gt;001_cr_np_zhents_fzoul&amp;lt;/code&amp;gt;''  These are typically Commoners, guards, merchants, leaders and DM NPCs specific to a single server&lt;br /&gt;
&lt;br /&gt;
=== Descriptions ===&lt;br /&gt;
A creature's description should be the PHYSICAL description in the creature's sourcebook entry, plus anything important a PC should notice specifically about the creature that isn't obvious by looking at it in-game. It should not flat-out identify what the creature's textbook name is, however.&lt;br /&gt;
: ''Good example: &amp;quot;This tall, thin humanoid is defined by sleek, alien features. Its gray skin smells of decay.&amp;quot;''&lt;br /&gt;
: ''Bad example: &amp;quot;A [[Bodak]], looking around for prey.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Comment ===&lt;br /&gt;
To identify and track blueprint versions, it's best to write your name and the date you modified the blueprint in the comments area. &lt;br /&gt;
: ''Example: Created By: John Doe, Date Modified: 2006-12-20''&lt;br /&gt;
&lt;br /&gt;
For global blueprints, you should also include a link to this wiki page so builders that are unfamiliar with conventions or configuration options can easily find them.&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
The default basemod creatures should already have these handlers in place, so if you are copying an existing blueprint, you probably don't need to do anything here. To start off with, make sure the creature's event scripts are all set correctly. The default scripts are:&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onphysicallyattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_oninventorydisturbed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onendcombatround&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onblocked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onperception&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onrested&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspawnin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the lower-level creatures of a given race are always vastly more numerous than their higher-level bretheren. Make more versions of them, especially the level 1 warriors, with different sorts of appearances and equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior ==&lt;br /&gt;
Behavioral information for each creature should be present on the creature in the form of a non-droppable, non-pickpocketable blank scroll named after the creature or its race/organization. The tag and resref of the item should be &amp;lt;code&amp;gt;abr_it_cd_'''&amp;lt;description&amp;gt;'''&amp;lt;/code&amp;gt;. Put as much information here as you can stand, but it should all come from canon sources. You'd typically only need one information scroll per race or organization (only one for [[Goblin | goblins]], one for [[Kobold | kobolds]], one for [[Zhentarim]], etc.), unless the creature is unique.&lt;br /&gt;
&lt;br /&gt;
=== Behavior Types ===&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
If the creature is expected to fight at any point, determining how we expect the creature to behave in a fight is also important. Create a local string on the creature named &amp;lt;code&amp;gt;'''ACR_CREATURE_BEHAVIOR'''&amp;lt;/code&amp;gt;, and set the value of that string to one of the following values.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_TANK'''&amp;lt;/code&amp;gt; if you wish your creature to move to the front line and try to hold it. In narrow passages, tanks will attempt to clog the passage. In open fields, tanks will fan out to try to keep as many enemies as possible &amp;quot;covered&amp;quot; as evenly as possible.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_FLANK'''&amp;lt;/code&amp;gt; if you wish your creature to actively seek people who are fighting others, and to strike them in melee from behind.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SHOCK'''&amp;lt;/code&amp;gt; if you wish your creature to run in past the front line with reckless abandon, prioritizing &amp;quot;soft&amp;quot; enemy targets.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_BUFFS'''&amp;lt;/code&amp;gt; if you wish your creature to focus on support magic for allies. Or, opportunistically, healing.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MEDIC'''&amp;lt;/code&amp;gt; if you wish your creature to focus on healing magic for allies. Or, opportunistically, support magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SKIRMISH'''&amp;lt;/code&amp;gt; if you wish your creature to fight at range until enemies close, and then switching to melee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ARCHER'''&amp;lt;/code&amp;gt; if you wish your creature to only fight at range.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_CONTROL'''&amp;lt;/code&amp;gt; if you wish your creature to focus on special powers that alter the battlefield, attempting to use things like grease, entangle, and summon monster to stop enemies from getting around.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_NUKE'''&amp;lt;/code&amp;gt; if you wish your creature to use its strongest magical abilities to repeatedly hit the strongest enemy it can find.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MINDLESS'''&amp;lt;/code&amp;gt; if your creature is mindless, and fights fearlessly without strategy or concern for personal safety.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ANIMAL'''&amp;lt;/code&amp;gt; if your creature is an animal, and fights without strategy (but still doesn't want to die).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_COWARD'''&amp;lt;/code&amp;gt; if your creature is a coward, and runs away from conflict.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
A few things should be kept in mind when creating a creature's equipment. The first thing is, what drops? Generally its best if a creature drops all of its non-armor equipment, for realism's sake if nothing else. However, in many cases its best not to drop armor with a creature, especially if that creature is going to be used as a static spawn. Armor is heavy and expensive, so it presents stronger PCs with ways of gaining income while preventing weaker PCs from doing so, creating a wealth gap. Furthermore, its price means it sometimes adds significantly to the wealth of a spawns drop, possibly making the spawn drop more wealth than it should. Also, its rather logical that killing a creature will damage its armor reasonably often. Finally, removing armor from a corpse would be a time-consuming afair, and carrying it would not be easy. This would not be something done often (unless the armor is especially valuable or magical, which it shouldn't be anyway in the case of a static spawn).&lt;br /&gt;
&lt;br /&gt;
Now, about spawn drops. The good news is in most circumstances, you don't have to add loot to a creature for static spawns! If the value of the equipment the creature uses is reasonable, you probably don't have to think about loot at all. Loot is created automatically with scripts, based on many variables in an attempt to match up believable loot (if any) to your creature. The value of the loot is based off of the value of the creature's dropped equipment and its CR, so setting the CR correctly is vital. If the creature is a static spawn, please try to use this built-in loot system unless there is very good reason not to. If a spawn does not use this loot system, it may need to be updated if ALFA's wealth standards for static spawns change in the future.&lt;br /&gt;
&lt;br /&gt;
To disable the loot system, set the &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; local integer variable on the creature to a value of 1. If you want to modify the amount of loot droped, set the &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; local float variable to the desired value. This alters the creature's CR for the purposes of calculating loot drops (whether it is positive or negative). Setting it to 1.0 would produce loot as if the creature had a CR of 1 higher than it does, and setting it to -1.0 would produce the opposite effect, loot as if the creature was 1 CR point lower.&lt;br /&gt;
&lt;br /&gt;
Always set &amp;quot;Leave Lootable Corpse&amp;quot; to true, and &amp;quot;No Permanent Death&amp;quot; to true. Set the corpse decay time to 7200000.&lt;br /&gt;
&lt;br /&gt;
Note that regardless of these settings, all creatures always drop the items in their inventory which are flagged droppable. The loot system never actually removes items from any creature.&lt;br /&gt;
&lt;br /&gt;
Note that if the amount of wealth a creature drops (as set by the builder) exceeds the amount a static spawn of its CR should drop, a warning is printed out in the server's log file. Naturally if the creature isn't a static spawn, this can be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Challenge Rating ==&lt;br /&gt;
: ''See also: [[Challenge Rating]]''&lt;br /&gt;
Also known as &amp;quot;CR&amp;quot;, this is vital. Fortunately NWN2 usually gets a creature's CR close to what it should be on its own. Sometimes it doesn't however, so be sure to understand the concept of CR before proceding further.&lt;br /&gt;
&lt;br /&gt;
A creature's of a certain CR should roughly be as powerful as other creatures of the same CR included in ALFA's base creatures. Even if the creature is not spawned statically, the CR must be set correctly for DMs to be able to tell its relatively balance in a fight, and for XP to be awarded properly. If the creature is spawned statically, its loot will be generated based on its CR. If you don't think you know what a creatures CR should be, do some testing for yourself, or ask someone! A good way to test is to use some of your PCs (either controlled by their players or by yourself with their character files locally on your machine).&lt;br /&gt;
&lt;br /&gt;
Do NOT lower a creatures CR because you want to prevent farming abuse, or to lower a PC's rewards for slaying it. If PCs are gaining too much from a spawn of some sort which has its CR set correctly, the problem is in the way the spawn is set up and not the creature itself. Artificially lowered CRs are not only a good way to under-reward PCs for risking their lives, but sometimes lead to accidental PC deaths if the DM spawning the creatures doesn't know the true strength of the creature (until his PCs are face down in their own blood).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perception Range ==&lt;br /&gt;
If the creature's perception range is less than the PC's (ie less than &amp;quot;long&amp;quot;) by any meaningful margin, the exploitability of the spawn increases dramatically. For this reason, its generally best to set a creature's percept range to &amp;quot;long&amp;quot;. The &amp;quot;long&amp;quot; range has been adjusted to be slightly less than a PC's, allowing the PC to react to the monster without the computer having an advantage in reaction time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Scripting ==&lt;br /&gt;
Most people can skip this. If you're not using the standard AI scripts ALFA uses on creatures, you'll need to make sure you include ALFA's code into your scripts. You do this by including the file &amp;lt;code&amp;gt;'''[[acr_cre_events_i.nss]]'''&amp;lt;/code&amp;gt;, and calling a different function for each event type. These functions are:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpawn()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpellCastAt()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePhysicalAttacked()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDamaged()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDeath()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureBlockedByDoor()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureCombatRoundEnd()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureConversation()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDisturbed()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureHeartBeat()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureRested()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePerception()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureUserDefined()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its absolutely vital to the functioning of ALFA that these scripts are called on each of their events! So make sure they are in there.&lt;br /&gt;
&lt;br /&gt;
== Configuration Options ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
These are the additional configuration options allowed by the ACR. They are edited by changing local variables on the creature's blueprint.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is not given any loot drops by the loot system at all. If unset, it is.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; (float) This value modifies the creatures CR for the purposes of calculating the amount of loot dropped. If positive, it adds to the CR and increases the value of the loot dropped. If negative, it subtracts from the CR.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ABILITIES'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized ability scores. The blueprint is treated as the &amp;quot;average&amp;quot; for the resulting scores.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ALIGNMENT'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized alignment. The blueprint is treated as the &amp;quot;average&amp;quot; for this, and alignment will never differ from the blueprint by more than one step.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_ISUNDEAD'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, this creature will be considered undead for all scripting purposes. It will still need undead creature properties assigned.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_SPAWN_DAMAGED'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will not heal to full health upon spawn-in. This variable allows you to equip your monsters with creature items/equipment that provides health bonuses without them spawning harmed.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CREATURE_AQUATIC'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will be able to breath in or out of water, and be made to assume that its land speed is also its swim speed&lt;br /&gt;
&lt;br /&gt;
These options are available in NWN2 by default:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPECIAL_COMBAT_AI_SCRIPT'''&amp;lt;/code&amp;gt; (string) See the &amp;quot;x2_ai_demo&amp;quot; module for details.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPELL_RANDOM'''&amp;lt;/code&amp;gt; (integer) Setting this variable on a spellcaster creature will make its spelluse a bit more random, but their spell selection may not always be appropriate to the situation anymore.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_STEALTH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate stealth mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_SEARCH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate detect mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play mobile ambient animations after spawn. Use this if you want your creature to roam around the area attempting to use other objects. This simulates random movement.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT_IMMOBILE'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play immobile ambient animations after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X1_L_IMMUNE_TO_DISPEL'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature immune to dispel magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_IS_INCORPOREAL'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 on a creature to make it walk through other creatures.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_NUMBER_OF_ATTACKS'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_MAGIC'''&amp;lt;/code&amp;gt; (integer) The value of this variable is added to the chance that a creature will use magic in combat. Set to 100 for always, 0 for never.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_OFFENSE'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will use offensive abilities in combat. Set to 0 to make them flee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_COMPASSION'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will aid friendly creatures in combat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Considerations ==&lt;br /&gt;
* Set the creature's [[Challenge Rating | CR]] accurately.&lt;br /&gt;
* Unless there is a very good reason to, don't create static spawns with &amp;quot;save or die&amp;quot; spells or abilities. The most obvious of these are instant death spells or petrifications, but holdings, sleep spells, fear and confusion often qualify as well. ALFA has much slower advancement than the d20 rules were meant for, and with a 5% chance to fail any saving throw, &amp;quot;save or die&amp;quot; abilities can too-easily kill even powerful PCs with weak creatures.&lt;br /&gt;
* The above isn't so critical if static spawns with &amp;quot;save or die&amp;quot; abilities are avoidable. For example, basilisks can turn a creature to stone with a failed fort save. But they are also slow, lazy creatures, so often times anyone approaching within range of the basilisk's petrification attack is asking for it, and deserves no mercy.&lt;br /&gt;
* Unless there is good reason to, try not to make creatures who's power deviates too significantly from creatures of the same type in ALFA's standard pallet. Not only does this harm the believability and immersion in the world, but it causes some disgruntled PC deaths (&amp;quot;looked like a normal [[Kobold]] to me, but it had an [[Attack Bonus]] of +12?&amp;quot;).&lt;br /&gt;
* If you do make creatures with a significantly different power level from others of their type, make sure they have some visual difference from their kin so as to not surprise that party of PC1s with those nasty +12 AB kobolds.&lt;br /&gt;
* If you make a Fey, Elemental or Incorporeal Undead Creature, Check the ''''''Spirit Override'''''' box in the properties tab.  This allows the 'Chastise Spirits' ability to function properly.&lt;br /&gt;
* If you are trying to get a creature that has the ability to wear armor, but it doesn't show, to use one of its Armor appearance choices,  you will need to check the 'never show armor' box for it to appear while wearing an armor item.&lt;br /&gt;
* If you are making a creature that uses a vfx solely to show what it is like a Willowisp, use the Willowwisp appearance and set the vfx accordingly.  Do not use the Invisible Man appearance as it will not render the vfx ingame.&lt;br /&gt;
* If you are making a creature that is just armor or held weapons, use the invisible man appearance and equip the items you wish to have seen.&lt;br /&gt;
* If you want a creature to use its special abilities or a caster to use its spells only, you will want to set the variables of /X2_L_BEH_MAGIC = 100 /  X2_L_BEH_OFFENSE = between 1-5 / X2_SPELL_RANDOM =75.  This will get you a creature that uses its spells or abilites almost exclusively.  Adjust the X2_L_BEH_MAGIC down if you want the creature to only use its ability every few rounds and adjust the X2_L_BEH_OFFENSE up to use melee in between.&lt;br /&gt;
* Did I mention the CR must be set correctly?&lt;br /&gt;
* When in doubt, play test your creations! Its really all about play balance, and keeping the ALFA experience as consistent as possible between all our different builders with their own assumptions about how to build.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=vbv5e7Yr3Yo Video Tutorial]: Recorded live stream Q&amp;amp;A and creature creation process.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4049</id>
		<title>Building Creatures</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4049"/>
				<updated>2025-05-17T21:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
First, make sure you need to build it! The [[ALFA Base Resources]] and [[ALFA Campaign Folder]] projects come with many creatures NWN2 has a visual representation for, so in most cases you don't need to build anything. The [[ALFA Spawn System]] also includes functions for setting the name of spawned creatures, so there is often times no reason to create a creature on your own. The fewer creatures in your mod, the smaller and less bloated it will be.&lt;br /&gt;
&lt;br /&gt;
Assuming the creature does need to be created, go ahead and do so as you normally would in the toolset. A few things are different in ALFA, however. Most of this just applies to creatures which are statically spawned, but its probably a good read for any builder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Guidelines ==&lt;br /&gt;
Creatures are expected to follow canon specifications as closely as the toolset allows. If you must deviate on the basis of game mechanics, play-testing should be used to make sure the altered creature's CR is set properly. Always post any deviations from canon specifications on our NWN2 tech forums so that others may comment or follow them for consistency's sake. When setting clerical domains and alignment, be sure to base things off of the most popular deity for the creature type. When setting spells and equipment, be sure and follow FR's lore and canon if at all possible. Our first priority is game balance, and then following FR lore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
The following conventions will need to be used in naming creature blueprints to avoid any conflicts with other blueprints and to ensure that all content works properly with scripts:&lt;br /&gt;
&lt;br /&gt;
=== Localized Name ===&lt;br /&gt;
Uncommon, Creature names should not be revealed to players in-game, unless a sufficiently unique creature or equipment model does not exist for the creature being created. In such cases, choose a one or two word descriptive name, but be sure you reveal as little of the meta information about the creature as possible. Size based descriptive words are not necessary since creatues can be scaled in NWN2 to properly reflect their size.  However, common creatures goblins, kobolds, skeletons etc most PCs would know what these are anyway so its ok to use their base name.  We never got any scripting done to reveal a creatures true designation so they cannot make a skill check and have the name revealed.&lt;br /&gt;
&lt;br /&gt;
Putting creature names inside &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; will make them visible only to builders. However, make sure you put the bracketed part behind a Descriptive name or DMs cannot see these in game. This will help builders distinguish between multiple blueprints of the same type and convey important reference information at a glance without revealing any of the information to players in the game. Generally, a creatures name or race, social role or class, gender (if applicable), and challenge rating are useful characteristics to record within {}.  Make sure however that you do not start the name with the bracketed info, doing so will make it so the DM cannot read the creature in creation menu or find them in the area.&lt;br /&gt;
&lt;br /&gt;
: 'Example: &amp;lt;code&amp;gt;Larger Kobold {Chieftain CR1}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Male Human {Barbarian CR3}&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Template, ResRef, and Tag ===&lt;br /&gt;
: ''See also: [[ResRef]], [[Tag]], and [[Template]]''&lt;br /&gt;
The primary purpose of tag and resref naming conventions is to prevent any naming conflicts. A secondary purpose is to describe the creature in some way. All global creature blueprints must begin with the &amp;quot;abr_cr&amp;quot; prefix to designate them as global blueprints. Server specific blueprints should begin with a 3 digit server number in place of the &amp;quot;abr&amp;quot;, so &amp;quot;001_cr&amp;quot; for example. For every subcategory, add a two letter acronym delimited with underscores followed lastly by a descriptive name for the creature itself. This helps to quickly locate blueprints when all we have is its resref. To illustrate, here are a few examples:&lt;br /&gt;
&lt;br /&gt;
: ''Example: A global humanoid creature blueprint: &amp;lt;code&amp;gt;abr_cr_hu_koboldchieftain&amp;lt;/code&amp;gt;''  These are typically any creature you make that could be used on another mod&lt;br /&gt;
: ''Example: A server NPC blueprint on server 01: &amp;lt;code&amp;gt;001_cr_np_zhents_fzoul&amp;lt;/code&amp;gt;''  These are typically Commoners, guards, merchants, leaders and DM NPCs specific to a single server&lt;br /&gt;
&lt;br /&gt;
=== Descriptions ===&lt;br /&gt;
A creature's description should be the PHYSICAL description in the creature's sourcebook entry, plus anything important a PC should notice specifically about the creature that isn't obvious by looking at it in-game. It should not flat-out identify what the creature's textbook name is, however.&lt;br /&gt;
: ''Good example: &amp;quot;This tall, thin humanoid is defined by sleek, alien features. Its gray skin smells of decay.&amp;quot;''&lt;br /&gt;
: ''Bad example: &amp;quot;A [[Bodak]], looking around for prey.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Comment ===&lt;br /&gt;
To identify and track blueprint versions, it's best to write your name and the date you modified the blueprint in the comments area. &lt;br /&gt;
: ''Example: Created By: John Doe, Date Modified: 2006-12-20''&lt;br /&gt;
&lt;br /&gt;
For global blueprints, you should also include a link to this wiki page so builders that are unfamiliar with conventions or configuration options can easily find them.&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
The default basemod creatures should already have these handlers in place, so if you are copying an existing blueprint, you probably don't need to do anything here. To start off with, make sure the creature's event scripts are all set correctly. The default scripts are:&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onphysicallyattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_oninventorydisturbed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onendcombatround&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onblocked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onperception&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onrested&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspawnin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the lower-level creatures of a given race are always vastly more numerous than their higher-level bretheren. Make more versions of them, especially the level 1 warriors, with different sorts of appearances and equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior ==&lt;br /&gt;
Behavioral information for each creature should be present on the creature in the form of a non-droppable, non-pickpocketable blank scroll named after the creature or its race/organization. The tag and resref of the item should be &amp;lt;code&amp;gt;abr_it_cd_'''&amp;lt;description&amp;gt;'''&amp;lt;/code&amp;gt;. Put as much information here as you can stand, but it should all come from canon sources. You'd typically only need one information scroll per race or organization (only one for [[Goblin | goblins]], one for [[Kobold | kobolds]], one for [[Zhentarim]], etc.), unless the creature is unique.&lt;br /&gt;
&lt;br /&gt;
=== Behavior Types ===&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
If the creature is expected to fight at any point, determining how we expect the creature to behave in a fight is also important. Create a local string on the creature named &amp;lt;code&amp;gt;'''ACR_CREATURE_BEHAVIOR'''&amp;lt;/code&amp;gt;, and set the value of that string to one of the following values.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_TANK'''&amp;lt;/code&amp;gt; if you wish your creature to move to the front line and try to hold it. In narrow passages, tanks will attempt to clog the passage. In open fields, tanks will fan out to try to keep as many enemies as possible &amp;quot;covered&amp;quot; as evenly as possible.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_FLANK'''&amp;lt;/code&amp;gt; if you wish your creature to actively seek people who are fighting others, and to strike them in melee from behind.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SHOCK'''&amp;lt;/code&amp;gt; if you wish your creature to run in past the front line with reckless abandon, prioritizing &amp;quot;soft&amp;quot; enemy targets.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_BUFFS'''&amp;lt;/code&amp;gt; if you wish your creature to focus on support magic for allies. Or, opportunistically, healing.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MEDIC'''&amp;lt;/code&amp;gt; if you wish your creature to focus on healing magic for allies. Or, opportunistically, support magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SKIRMISH'''&amp;lt;/code&amp;gt; if you wish your creature to fight at range until enemies close, and then switching to melee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ARCHER'''&amp;lt;/code&amp;gt; if you wish your creature to only fight at range.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_CONTROL'''&amp;lt;/code&amp;gt; if you wish your creature to focus on special powers that alter the battlefield, attempting to use things like grease, entangle, and summon monster to stop enemies from getting around.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_NUKE'''&amp;lt;/code&amp;gt; if you wish your creature to use its strongest magical abilities to repeatedly hit the strongest enemy it can find.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MINDLESS'''&amp;lt;/code&amp;gt; if your creature is mindless, and fights fearlessly without strategy or concern for personal safety.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ANIMAL'''&amp;lt;/code&amp;gt; if your creature is an animal, and fights without strategy (but still doesn't want to die).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_COWARD'''&amp;lt;/code&amp;gt; if your creature is a coward, and runs away from conflict.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
A few things should be kept in mind when creating a creature's equipment. The first thing is, what drops? Generally its best if a creature drops all of its non-armor equipment, for realism's sake if nothing else. However, in many cases its best not to drop armor with a creature, especially if that creature is going to be used as a static spawn. Armor is heavy and expensive, so it presents stronger PCs with ways of gaining income while preventing weaker PCs from doing so, creating a wealth gap. Furthermore, its price means it sometimes adds significantly to the wealth of a spawns drop, possibly making the spawn drop more wealth than it should. Also, its rather logical that killing a creature will damage its armor reasonably often. Finally, removing armor from a corpse would be a time-consuming afair, and carrying it would not be easy. This would not be something done often (unless the armor is especially valuable or magical, which it shouldn't be anyway in the case of a static spawn).&lt;br /&gt;
&lt;br /&gt;
Now, about spawn drops. The good news is in most circumstances, you don't have to add loot to a creature for static spawns! If the value of the equipment the creature uses is reasonable, you probably don't have to think about loot at all. Loot is created automatically with scripts, based on many variables in an attempt to match up believable loot (if any) to your creature. The value of the loot is based off of the value of the creature's dropped equipment and its CR, so setting the CR correctly is vital. If the creature is a static spawn, please try to use this built-in loot system unless there is very good reason not to. If a spawn does not use this loot system, it may need to be updated if ALFA's wealth standards for static spawns change in the future.&lt;br /&gt;
&lt;br /&gt;
To disable the loot system, set the &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; local integer variable on the creature to a value of 1. If you want to modify the amount of loot droped, set the &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; local float variable to the desired value. This alters the creature's CR for the purposes of calculating loot drops (whether it is positive or negative). Setting it to 1.0 would produce loot as if the creature had a CR of 1 higher than it does, and setting it to -1.0 would produce the opposite effect, loot as if the creature was 1 CR point lower.&lt;br /&gt;
&lt;br /&gt;
Always set &amp;quot;Leave Lootable Corpse&amp;quot; to true, and &amp;quot;No Permanent Death&amp;quot; to true. Set the corpse decay time to 7200000.&lt;br /&gt;
&lt;br /&gt;
Note that regardless of these settings, all creatures always drop the items in their inventory which are flagged droppable. The loot system never actually removes items from any creature.&lt;br /&gt;
&lt;br /&gt;
Note that if the amount of wealth a creature drops (as set by the builder) exceeds the amount a static spawn of its CR should drop, a warning is printed out in the server's log file. Naturally if the creature isn't a static spawn, this can be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Challenge Rating ==&lt;br /&gt;
: ''See also: [[Challenge Rating]]''&lt;br /&gt;
Also known as &amp;quot;CR&amp;quot;, this is vital. Fortunately NWN2 usually gets a creature's CR close to what it should be on its own. Sometimes it doesn't however, so be sure to understand the concept of CR before proceding further.&lt;br /&gt;
&lt;br /&gt;
A creature's of a certain CR should roughly be as powerful as other creatures of the same CR included in ALFA's base creatures. Even if the creature is not spawned statically, the CR must be set correctly for DMs to be able to tell its relatively balance in a fight, and for XP to be awarded properly. If the creature is spawned statically, its loot will be generated based on its CR. If you don't think you know what a creatures CR should be, do some testing for yourself, or ask someone! A good way to test is to use some of your PCs (either controlled by their players or by yourself with their character files locally on your machine).&lt;br /&gt;
&lt;br /&gt;
Do NOT lower a creatures CR because you want to prevent farming abuse, or to lower a PC's rewards for slaying it. If PCs are gaining too much from a spawn of some sort which has its CR set correctly, the problem is in the way the spawn is set up and not the creature itself. Artificially lowered CRs are not only a good way to under-reward PCs for risking their lives, but sometimes lead to accidental PC deaths if the DM spawning the creatures doesn't know the true strength of the creature (until his PCs are face down in their own blood).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perception Range ==&lt;br /&gt;
If the creature's perception range is less than the PC's (ie less than &amp;quot;long&amp;quot;) by any meaningful margin, the exploitability of the spawn increases dramatically. For this reason, its generally best to set a creature's percept range to &amp;quot;long&amp;quot;. The &amp;quot;long&amp;quot; range has been adjusted to be slightly less than a PC's, allowing the PC to react to the monster without the computer having an advantage in reaction time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Scripting ==&lt;br /&gt;
Most people can skip this. If you're not using the standard AI scripts ALFA uses on creatures, you'll need to make sure you include ALFA's code into your scripts. You do this by including the file &amp;lt;code&amp;gt;'''[[acr_cre_events_i.nss]]'''&amp;lt;/code&amp;gt;, and calling a different function for each event type. These functions are:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpawn()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpellCastAt()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePhysicalAttacked()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDamaged()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDeath()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureBlockedByDoor()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureCombatRoundEnd()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureConversation()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDisturbed()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureHeartBeat()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureRested()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePerception()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureUserDefined()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its absolutely vital to the functioning of ALFA that these scripts are called on each of their events! So make sure they are in there.&lt;br /&gt;
&lt;br /&gt;
== Configuration Options ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
These are the additional configuration options allowed by the ACR. They are edited by changing local variables on the creature's blueprint.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is not given any loot drops by the loot system at all. If unset, it is.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; (float) This value modifies the creatures CR for the purposes of calculating the amount of loot dropped. If positive, it adds to the CR and increases the value of the loot dropped. If negative, it subtracts from the CR.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ABILITIES'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized ability scores. The blueprint is treated as the &amp;quot;average&amp;quot; for the resulting scores.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ALIGNMENT'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized alignment. The blueprint is treated as the &amp;quot;average&amp;quot; for this, and alignment will never differ from the blueprint by more than one step.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_ISUNDEAD'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, this creature will be considered undead for all scripting purposes. It will still need undead creature properties assigned.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_SPAWN_DAMAGED'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will not heal to full health upon spawn-in. This variable allows you to equip your monsters with creature items/equipment that provides health bonuses without them spawning harmed.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CREATURE_AQUATIC'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will be able to breath in or out of water, and be made to assume that its land speed is also its swim speed&lt;br /&gt;
&lt;br /&gt;
These options are available in NWN2 by default:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPECIAL_COMBAT_AI_SCRIPT'''&amp;lt;/code&amp;gt; (string) See the &amp;quot;x2_ai_demo&amp;quot; module for details.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPELL_RANDOM'''&amp;lt;/code&amp;gt; (integer) Setting this variable on a spellcaster creature will make its spelluse a bit more random, but their spell selection may not always be appropriate to the situation anymore.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_STEALTH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate stealth mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_SEARCH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate detect mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play mobile ambient animations after spawn. Use this if you want your creature to roam around the area attempting to use other objects. This simulates random movement.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT_IMMOBILE'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play immobile ambient animations after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X1_L_IMMUNE_TO_DISPEL'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature immune to dispel magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_IS_INCORPOREAL'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 on a creature to make it walk through other creatures.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_NUMBER_OF_ATTACKS'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_MAGIC'''&amp;lt;/code&amp;gt; (integer) The value of this variable is added to the chance that a creature will use magic in combat. Set to 100 for always, 0 for never.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_OFFENSE'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will use offensive abilities in combat. Set to 0 to make them flee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_COMPASSION'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will aid friendly creatures in combat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Considerations ==&lt;br /&gt;
* Set the creature's [[Challenge Rating | CR]] accurately.&lt;br /&gt;
* Unless there is a very good reason to, don't create static spawns with &amp;quot;save or die&amp;quot; spells or abilities. The most obvious of these are instant death spells or petrifications, but holdings, sleep spells, fear and confusion often qualify as well. ALFA has much slower advancement than the d20 rules were meant for, and with a 5% chance to fail any saving throw, &amp;quot;save or die&amp;quot; abilities can too-easily kill even powerful PCs with weak creatures.&lt;br /&gt;
* The above isn't so critical if static spawns with &amp;quot;save or die&amp;quot; abilities are avoidable. For example, basilisks can turn a creature to stone with a failed fort save. But they are also slow, lazy creatures, so often times anyone approaching within range of the basilisk's petrification attack is asking for it, and deserves no mercy.&lt;br /&gt;
* Unless there is good reason to, try not to make creatures who's power deviates too significantly from creatures of the same type in ALFA's standard pallet. Not only does this harm the believability and immersion in the world, but it causes some disgruntled PC deaths (&amp;quot;looked like a normal [[Kobold]] to me, but it had an [[Attack Bonus]] of +12?&amp;quot;).&lt;br /&gt;
* If you do make creatures with a significantly different power level from others of their type, make sure they have some visual difference from their kin so as to not surprise that party of PC1s with those nasty +12 AB kobolds.&lt;br /&gt;
* If you make a Fey, Elemental or Incorporeal Undead Creature, Check the ''''''Spirit Override'''''' box in the properties tab.  This allows the 'Chastise Spirits' ability to function properly.&lt;br /&gt;
* If you are making a creature that uses a vfx solely to show what it is like a Willowisp, use the Willowwisp appearance and set the vfx accordingly.  Do not use the Invisible Man appearance as it will not render the vfx ingame.&lt;br /&gt;
* If you are making a creature that is just armor or held weapons, use the invisible man appearance and equip the items you wish to have seen.&lt;br /&gt;
* If you want a creature to use its special abilities or a caster to use its spells only, you will want to set the variables of /X2_L_BEH_MAGIC = 100 /  X2_L_BEH_OFFENSE = between 1-5 / X2_SPELL_RANDOM =75.  This will get you a creature that uses its spells or abilites almost exclusively.  Adjust the X2_L_BEH_MAGIC down if you want the creature to only use its ability every few rounds and adjust the X2_L_BEH_OFFENSE up to use melee in between.&lt;br /&gt;
* Did I mention the CR must be set correctly?&lt;br /&gt;
* When in doubt, play test your creations! Its really all about play balance, and keeping the ALFA experience as consistent as possible between all our different builders with their own assumptions about how to build.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=vbv5e7Yr3Yo Video Tutorial]: Recorded live stream Q&amp;amp;A and creature creation process.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master&amp;diff=4033</id>
		<title>Dungeon Master</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master&amp;diff=4033"/>
				<updated>2025-01-18T23:39:26Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Baldur's Gate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ALFA Community Positions]]&lt;br /&gt;
== Active DMs ==&lt;br /&gt;
=== Baldur's Gate ===&lt;br /&gt;
[[Baldur's Gate (Server)|Baldur's Gate]]'s HDM is currently {{MS HDM}}, with EADM {{BG EADM}}.&lt;br /&gt;
{{BG DM List}}&lt;br /&gt;
&lt;br /&gt;
=== The Silver Marches ===&lt;br /&gt;
[[The Silver Marches (Server)|The Silver Marches]]' HDM is currently {{TSM HDM}}, with EADM {{TSM EADM}}.&lt;br /&gt;
{{TSM DM List}}&lt;br /&gt;
&lt;br /&gt;
=== Moonshae Isles ===&lt;br /&gt;
The [[Moonshae Isles (Server)|Moonshae Isles]]' HDM is currently {{MS HDM}}, with EADM {{MS EADM}}.&lt;br /&gt;
{{MS DM List}}&lt;br /&gt;
&lt;br /&gt;
=== Western Heartlands [NO LONGER ACTIVE] ===&lt;br /&gt;
The [[Western Heartlands (Server)|Western Heartland's]] HDM is currently {{MS HDM}}.&lt;br /&gt;
&lt;br /&gt;
== Organization ==&lt;br /&gt;
ALFA has a four-tiered structure for Dungeon Masters.&lt;br /&gt;
&lt;br /&gt;
=== Head Dungeon Master (HDM) ===&lt;br /&gt;
HDMs are the stewards of servers, entrusted by ALFA with the responsibility for their administration. Ultimately, HDM have the ability to shape servers in their own image, while operating within the broader context of ALFA; they have either discretion or influence over their team members and server design and content. This is a demanding and rewarding role, for HDMs will find that a significant amount of their time is spent on matters of management, be it supervising plot developments, overseeing DM training, or resolving disputes. HDMs are entitled to vote in all Administrator elections. HDMs also have a special responsibility for approving exceptional PCs, for upholding the principles of the ALFA Charter, and scrutinizing any proposed changes. The DM Administrator, to whom they are accountable for their server and DM team, appoints HDMs. &lt;br /&gt;
&lt;br /&gt;
=== Executive Assistant DM (EADM) ===&lt;br /&gt;
An EADM is a server's second in command, selected by the server HDM to assist in server maintenance and to make decisions when the HDM is unavailable. The extent of an EADM's responsibilities is up to the HDM/EADM team. EADMs serve at the HDM's pleasure.&lt;br /&gt;
&lt;br /&gt;
=== Dungeon Master (DM) ===&lt;br /&gt;
DMs make up the bulk of ALFA’s DM corps. DMs have full authority to develop and run their own sessions and plots, reward PCs, manage Prestige Classes, and generally go about the time-honored business of a DM, subject only to the supervision of their HDM and any particular requirements laid down by the DM Administrator. DMs are also enfranchised to vote for the Lead, Technical, and DM Administrators, allowing them to help shape the direction taken by the DM corps, and ALFA as a whole. &lt;br /&gt;
&lt;br /&gt;
=== Provisional Dungeon Master (PDM) ===&lt;br /&gt;
A Provisional DM is a DM who is new to the NWN2 DM Client or to the ranks of ALFA DMing. PDMs will be considered as DMs-In-Training and will be limited in what they are allowed to do without the immediate supervision of a full ALFA DM. PDMs may not spawn creatures or mobs greater than Challenge Rating 3 (CR3). They may not assist PCs in making alterations on their characters without HDM pre-approval (i.e., Diety or alignment changes, level rollbacks, etc.) They must show they understand the use of the ALFA DM XP widget before they can award Session XP. No GP or item awards over 500gp are permitted. All session XP and GP awards must be documented in the PDM's appropriate Journal thread in the server DM forum. They may bring only mundane items (non-magical) into the game on their avatars, and must submit copies of all item blueprints brought in to a mod to the HDM, EADM, or Server Maintainer before doing so. The server HDM is responsible for overseeing the training of all PDMs, including training in the mechanics of the DM Client, server lore, and current plots, and in the knowledge of ALFA Standards. When the server HDM feels a PDM is ready to take on the full responsibilties of an ALFA DM, she will so inform the DMA of the readiness of the candidate, and upon the DMA's approval, the PDM will be promoted to Full ALFA DM status. There is no time limit on how long training may take. PDMs are not eligible to vote in DMA, IA, or TA elections.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master&amp;diff=4032</id>
		<title>Dungeon Master</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master&amp;diff=4032"/>
				<updated>2025-01-18T23:38:19Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Western Heartlands [NO LONGER ACTIVE] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ALFA Community Positions]]&lt;br /&gt;
== Active DMs ==&lt;br /&gt;
=== Baldur's Gate ===&lt;br /&gt;
[[Baldur's Gate (Server)|Baldur's Gate]]'s HDM is currently {{BG HDM}}, with EADM {{BG EADM}}.&lt;br /&gt;
{{BG DM List}}&lt;br /&gt;
&lt;br /&gt;
=== The Silver Marches ===&lt;br /&gt;
[[The Silver Marches (Server)|The Silver Marches]]' HDM is currently {{TSM HDM}}, with EADM {{TSM EADM}}.&lt;br /&gt;
{{TSM DM List}}&lt;br /&gt;
&lt;br /&gt;
=== Moonshae Isles ===&lt;br /&gt;
The [[Moonshae Isles (Server)|Moonshae Isles]]' HDM is currently {{MS HDM}}, with EADM {{MS EADM}}.&lt;br /&gt;
{{MS DM List}}&lt;br /&gt;
&lt;br /&gt;
=== Western Heartlands [NO LONGER ACTIVE] ===&lt;br /&gt;
The [[Western Heartlands (Server)|Western Heartland's]] HDM is currently {{MS HDM}}.&lt;br /&gt;
&lt;br /&gt;
== Organization ==&lt;br /&gt;
ALFA has a four-tiered structure for Dungeon Masters.&lt;br /&gt;
&lt;br /&gt;
=== Head Dungeon Master (HDM) ===&lt;br /&gt;
HDMs are the stewards of servers, entrusted by ALFA with the responsibility for their administration. Ultimately, HDM have the ability to shape servers in their own image, while operating within the broader context of ALFA; they have either discretion or influence over their team members and server design and content. This is a demanding and rewarding role, for HDMs will find that a significant amount of their time is spent on matters of management, be it supervising plot developments, overseeing DM training, or resolving disputes. HDMs are entitled to vote in all Administrator elections. HDMs also have a special responsibility for approving exceptional PCs, for upholding the principles of the ALFA Charter, and scrutinizing any proposed changes. The DM Administrator, to whom they are accountable for their server and DM team, appoints HDMs. &lt;br /&gt;
&lt;br /&gt;
=== Executive Assistant DM (EADM) ===&lt;br /&gt;
An EADM is a server's second in command, selected by the server HDM to assist in server maintenance and to make decisions when the HDM is unavailable. The extent of an EADM's responsibilities is up to the HDM/EADM team. EADMs serve at the HDM's pleasure.&lt;br /&gt;
&lt;br /&gt;
=== Dungeon Master (DM) ===&lt;br /&gt;
DMs make up the bulk of ALFA’s DM corps. DMs have full authority to develop and run their own sessions and plots, reward PCs, manage Prestige Classes, and generally go about the time-honored business of a DM, subject only to the supervision of their HDM and any particular requirements laid down by the DM Administrator. DMs are also enfranchised to vote for the Lead, Technical, and DM Administrators, allowing them to help shape the direction taken by the DM corps, and ALFA as a whole. &lt;br /&gt;
&lt;br /&gt;
=== Provisional Dungeon Master (PDM) ===&lt;br /&gt;
A Provisional DM is a DM who is new to the NWN2 DM Client or to the ranks of ALFA DMing. PDMs will be considered as DMs-In-Training and will be limited in what they are allowed to do without the immediate supervision of a full ALFA DM. PDMs may not spawn creatures or mobs greater than Challenge Rating 3 (CR3). They may not assist PCs in making alterations on their characters without HDM pre-approval (i.e., Diety or alignment changes, level rollbacks, etc.) They must show they understand the use of the ALFA DM XP widget before they can award Session XP. No GP or item awards over 500gp are permitted. All session XP and GP awards must be documented in the PDM's appropriate Journal thread in the server DM forum. They may bring only mundane items (non-magical) into the game on their avatars, and must submit copies of all item blueprints brought in to a mod to the HDM, EADM, or Server Maintainer before doing so. The server HDM is responsible for overseeing the training of all PDMs, including training in the mechanics of the DM Client, server lore, and current plots, and in the knowledge of ALFA Standards. When the server HDM feels a PDM is ready to take on the full responsibilties of an ALFA DM, she will so inform the DMA of the readiness of the candidate, and upon the DMA's approval, the PDM will be promoted to Full ALFA DM status. There is no time limit on how long training may take. PDMs are not eligible to vote in DMA, IA, or TA elections.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=ACR_Encounter&amp;diff=4027</id>
		<title>ACR Encounter</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=ACR_Encounter&amp;diff=4027"/>
				<updated>2024-11-11T01:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Technical Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ALFA Encounter System provides an easy means for builders to add terrain specific random encounters to module areas. The system is a collection of creatures, scripts, and waypoints, built on top of the [[ACR Spawn]] System, that allows a builder to easily add terrain appropriate random spawns. It is intended to be trivial to implement, and to decrease predictability for spawn groups in a given area.&lt;br /&gt;
&lt;br /&gt;
The lowest logical unit is a creature. This is typically a single generic creature from an approved source such as Monsters of Faerun or the Monster Manual. You can spawn them individually in the DM Chooser for live play, but it is not recommended to use them within the toolset directly.&lt;br /&gt;
&lt;br /&gt;
Above the creature is a creature group. A group is typically either a specific number of homogenous creatures, like a Kobold Gang EL 1 (1d6 + 3 kobolds), or a group of mixed creatures like an Orc Patrol EL 7 (1d4+4 orcs, 1d2 2nd level orc barbarians, and a 4th level orc leader). You can use these groups directly in your modules, but they can be predictable and subject to farming if the same group always spawns in the same place.&lt;br /&gt;
&lt;br /&gt;
Above the creature group is a terrain group. A terrain group is a collection of creatures groups and single creatures appropriate for a given area. So for the Temperate Clear group, you might have a 10% chance of neutral animals, 10% militia patrol, 5% bandits, and so forth.&lt;br /&gt;
&lt;br /&gt;
With a basic knowledge of scripting you can also use the predefined creature groups or terrain groups for your own custom areas, and you can modify or customize the scripts specifically for your server.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
You will need to acquire the latest version of the [[ALFA Campaign Folder]], or from a maintainer of the content. Within the campaign folder is a full set of ALFA compliant creatures, along with a set of scripts and waypoints to spawn then in intelligent groups.&lt;br /&gt;
&lt;br /&gt;
You will need to associate the ALFA-Campaign folder with your module from within the Campaign Editor plugin, then save, then reload to associate them with your module.&lt;br /&gt;
&lt;br /&gt;
First, choose an area and terrain in your module to populate. Most areas conform to a loose climate zone; three examples might be temperate plains, southern mountains, or dungeon. Pick a terrain and difficulty that makes sense to you (for instance, you might choose ALFA_Groups-&amp;gt;Dungeon-&amp;gt;Dungeon EL 1-3 or Dungeon 4-6 for the upper and lower layers of a low level cave). Builders often place lesser dangerous areas close to major roads and towns, where more difficult areas would be in more remote areas. A good mix also ensures there are areas for PC parties of various levels.&lt;br /&gt;
&lt;br /&gt;
Next, decide how frequent you want the creatures to be. A general guideline is a small area should have 1 active, a medium 2, and a large area 4, but you can increase or decrease if you like. By default, each individual spawn waypoint is active 50% of the time, but this can be changed by editing the placed waypoint ACR_SPAWN_CHANCE variable. You may want to keep the PCs guessing by dropping a number of waypoints to sum to your desired probability (1x50% spawn is active half of the time, whereas 3x33% chances would mean one would be active on average at a given time, or 8x25% would mean 2 would be active on average, etc). The spawn waypoints will reroll a chance to be active every 3 hours or so, and if destroyed will delay between 1 and 3 real life hours before having a chance to reactivate.&lt;br /&gt;
&lt;br /&gt;
Finally, place the waypoints. In the Blueprints section, navigate to ALFA_Groups, then pick from Environment or Hostile or Defender spawns. For example, a Temperate Clear area would be ALFA_Groups-&amp;gt;Environment-&amp;gt;Temperate-&amp;gt;Clear EL 1-5. Drop your waypoints away from ATs in sensible locations, and adjust the probability for your spawn waypoints with the ACR_SPAWN_CHANCE as desired. When you restart the server, you should see your creatures start to spawn.&lt;br /&gt;
&lt;br /&gt;
== Current Groups ==&lt;br /&gt;
Each terrain type has a default difficulty range. The Encounter Level (EL) of a spawn is generally appropriate for a party of 4 PCs of that level, so an EL 5 would be appropriate for a group of 4 5th level PCs. For above ground terrains, the difficulty is often higher at night.&lt;br /&gt;
* ALFA_Groups-&amp;gt;Defender (adventurers, dwarven or elven teams, halfling scouts, merchants, etc)&lt;br /&gt;
* ALFA_Groups-&amp;gt;Dungeon-&amp;gt; Dungeon - EL 1-3&lt;br /&gt;
* ALFA_Groups-&amp;gt;Temperate&amp;gt;Temperate Clear (EL1-5)&lt;br /&gt;
* ALFA_Groups-&amp;gt;Temperate&amp;gt;Temperate Hills (EL 2-9)&lt;br /&gt;
* ALFA_Groups-&amp;gt;Hostile (Animals, constructs, humanoids, lycanthropes, etc)&lt;br /&gt;
&lt;br /&gt;
== Technical Notes ==&lt;br /&gt;
* Click on any waypoint and see the description field to determine the number and type of creatures spawned for that waypoint&lt;br /&gt;
* The waypoints use scripts defined in as_group_&amp;lt;name&amp;gt;. Examine the scripts to see how they are made&lt;br /&gt;
* To create your own encounters, you can copy a waypoint, and edit the ACR_SPAWN_GROUP_1 variable to point to your custom script. Then, copy any existing group script and save it with the name as_group_&amp;lt;new group&amp;gt;. You can then call other groups with any probability, or add your own creatures into the mix.&lt;br /&gt;
* Important note - these spawn groups will spawn as soon as a PC enters the area and if close enough spawns will head toward the PCs.  If you want a more robust encounter that does not spawn/ move until the PCs enter a specific PART of an area you will have to use the normal encounter trigger.&lt;br /&gt;
&lt;br /&gt;
{{ALFA Core Rules}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=4026</id>
		<title>Building Doors</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=4026"/>
				<updated>2024-11-11T01:09:36Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: gave  bioware 'size catagory' and examples of creatures&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
While the basemod contains every door listed in the DMG with appropriate settings, builders may wish to create their own doors. ALFA has scripts which provide a number of mechanics not ordinarily found in NWN, and every door has an extra set of options because of this.&lt;br /&gt;
&lt;br /&gt;
As with creating new creatures, items, and so forth, the easiest way to make a new door is to copy/edit an existing one. For information on editing the settings of an existing door, skip the next section.&lt;br /&gt;
&lt;br /&gt;
== Creating a New Door ==&lt;br /&gt;
If you aren't editing an existing door, you will have to configure a number of options. To start off with, you'll need to make sure all of the door's event scripts are set correctly. ALFA's event scripts for doors are as follows: // Update for longer NWN2 file names&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclosed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondisarm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onmeleeattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onopen&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ontraptriggered&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onunlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onused&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclick&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onfailtoopen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add custom event scripts to your doors, you can of course do so. Just make sure each event script includes the file [[acr_door_i.nss]], and calls the appropriate function for that event, listed here.&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClosed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnConversation()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDamaged()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDeath()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDisarm()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnHeartbeat()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnLock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnMeleeAttacked()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnSpellCastAt()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnTrapTriggered()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUnlock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUsed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUserDefined()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClick()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnFailToOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, the easiest way to do this is to edit an existing acr_door_* file and save it under a different name. Failure to properly call ALFA's door scripts can break multiple systems of the ACR. So make sure you've got them in there.&lt;br /&gt;
&lt;br /&gt;
= Editing Door Settings =&lt;br /&gt;
: ''See also: [[Using Local Variables]]&lt;br /&gt;
Aside from the standard NWN options of doors, we've provided a few more to give PCs and builders more options. These options can be accessed by editing the door's local variables.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_DELAY'''&amp;lt;/code&amp;gt; (float) The number of seconds a door will stay open before automatically closing itself. If set to zero or less than zero, the door will not close itself automatically.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_NEAR_PCS'''&amp;lt;/code&amp;gt; (integer) If set to 1, the door will auto-close regardless of any nearby PCs. If set to 0 (the default), the door will wait until PCs are out of visual range before closing itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_STUCK_DC'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door is considered &amp;quot;stuck&amp;quot;, and therefore cannot be opened unless forced. The value defined is the strength-check DC to &amp;quot;un-stick&amp;quot; the door. If someone tries to force a locked and stuck door open, the strength DC used is the higher of this value and &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt;. The default value is 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt; (integer) The DC to break open this door, as per DMG rules. Breaking open a door does not destroy it like doing damage to it would in NWN, but it does keep the door from being able to be locked again. If this value is zero, the door cannot be forced open. Valid values are from 0 to 255.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_FAIL_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This is a custom message sent to PCs who try to open the door and fail. This can be used in conjunction with * &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; to setup doors that require a spoken password to access (even useful for door riddles).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This message is &amp;quot;spoken&amp;quot; by the door when it is opened. It is usually used to give the PCs a description of the area beyond an AT, if any.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door unlocks itself. Generally used for shops and things which are only open during certain hours of the day. It will only unlock once, so if something else locks it afterwards, it will remain locked until either another creature unlocks it, or its next unlock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door locks itself. Generally used for shops and things which are only open during certain hours of the day. It will only lock once, so if something else unlocks it afterwards, it will remain unlocked until either another creature locks it, or its next lock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_SPELLID'''&amp;lt;/code&amp;gt; (int) This is the Spell ID for doors that require a specific spell to unlock. This will only work for spell IDs greater than 0. Be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; (string) This is what a player must speak to gain access to a password protected door. Leave this empty to require no password. Otherwise, be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_AUTO_LOCK'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door will automatically lock itself each time it is shut.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LISTEN_DC_MOD'''&amp;lt;/code&amp;gt; (integer) This modifier is applied to creatures trying to listen to conversations occuring behind a closed doors. The DMG lists this a +5 for every door, but some customization is allowed for different door types. If undefined or set to 0, the door cannot be listened through.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_KNOCK_IMMUNE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this door is immune to the spell knock. If zero, it is not immune.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNMOVABLE'''&amp;lt;/code&amp;gt; (integer) If nonzero, the door cannot be opened or closed by a non-DM creature, even if unlocked. Scripts can still open or close it, however. This setting is often used to represent large doors which a PC could not realistically close on their own even if they were unlocked, like the huge gates on castles and other fortifications.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_AT_SIZE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this setting specifies the maximum sized creature which can fit through this doorway. Anything large will be given a message saying it is too large to fit inside. Valid values are as follows:&lt;br /&gt;
*# Fine............(n/a)&lt;br /&gt;
*# Diminutive...(n/a)&lt;br /&gt;
*# Tiny...........[1](bats, weasel, sylph, rats, etc}&lt;br /&gt;
*# Small.........[2](gnomes, halflings, pixie, direrat, mephits,)&lt;br /&gt;
*# Medium.....[3](dwarves, elves, humans, half-orcs, orcs, halfelves, horses, etc)    &lt;br /&gt;
*# Large.......[4](Brown Bear, ogre-magi, direwolf, direbear, etc)&lt;br /&gt;
*# Huge.........[5](adult dragons, giants, giant snake,etc)&lt;br /&gt;
*# Gargantuan.(n/a)&lt;br /&gt;
*# Colossal.... (n/a)&lt;br /&gt;
&lt;br /&gt;
Note that currently, NWN2 does not support creature sizes of fine, diminutive, gargantuan or colossal. These values are provided here for future compatibility.&lt;br /&gt;
&lt;br /&gt;
Note that if none of these variables are defined, they default to zero. So a door without them would never close or lock itself, wouldn't be stuck or barred at all, would not be able to be forced open, and wouldn't have any sort of a custom message printed if a PC failed to open it.&lt;br /&gt;
&lt;br /&gt;
= Detect Magic =&lt;br /&gt;
These are advanced options for doors to register as magical to Detect Magic. A door with these variables will report to the caster if the caster passes spellcraft checks based on the power of the spell.  For instance: &amp;quot;Abjuration Dorm has a Faint aura of Transmutation.&amp;quot;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the  [https://www.alandfaraway.info/wiki/Detect_Magic#SpellSchool_Variables Detect Magic: SpellSchool Variables] page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the Detect Magic page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
&lt;br /&gt;
=Tips/Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
*  If your doorway does not seem to function properly:&lt;br /&gt;
*- make sure the doorway is within a walkmesh area&lt;br /&gt;
*- make sure the '''''Interruptible''''' box is checked&lt;br /&gt;
*- Doors must be the same type / relative size on each side of the AT. If you have a big Double Door on the outside and a small single door on the inside PCs may experience random crashing errors.&lt;br /&gt;
*- make sure there is no open doorway behind it, as in a tileset doorway vs a placeable doorway&lt;br /&gt;
*- a door must have current hit points &amp;gt;0 for it to function&lt;br /&gt;
*- If your static door looks fine in the toolset but does not fill the doorway ingame, the door model defaults in static mode.  Instead do not make door static and set it to locked, requires key to open to get it to look right ingame. This is especially true when you have changed the size of the door to fit the doorway. Some models work better than others.  There are now placeable doors also available in the toolset.&lt;br /&gt;
*- If a Half-orc cannot got through your AT  make sure the receiving end is not set to position lock. Also make sure there is plenty of cleared space around the receiving door.  Too little space will keep orcs and half-orcs from being able to traverse the doorway.&lt;br /&gt;
* When resizing doors scales 1st and 2nd should be the same size.  Otherwise your door will be a weird size when it opens.  This how ever might be a useful trick when you want to emulate a door folding up or to the side.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=4025</id>
		<title>Building Doors</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=4025"/>
				<updated>2024-11-11T00:31:17Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Tips/Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
While the basemod contains every door listed in the DMG with appropriate settings, builders may wish to create their own doors. ALFA has scripts which provide a number of mechanics not ordinarily found in NWN, and every door has an extra set of options because of this.&lt;br /&gt;
&lt;br /&gt;
As with creating new creatures, items, and so forth, the easiest way to make a new door is to copy/edit an existing one. For information on editing the settings of an existing door, skip the next section.&lt;br /&gt;
&lt;br /&gt;
== Creating a New Door ==&lt;br /&gt;
If you aren't editing an existing door, you will have to configure a number of options. To start off with, you'll need to make sure all of the door's event scripts are set correctly. ALFA's event scripts for doors are as follows: // Update for longer NWN2 file names&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclosed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondisarm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onmeleeattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onopen&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ontraptriggered&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onunlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onused&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclick&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onfailtoopen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add custom event scripts to your doors, you can of course do so. Just make sure each event script includes the file [[acr_door_i.nss]], and calls the appropriate function for that event, listed here.&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClosed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnConversation()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDamaged()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDeath()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDisarm()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnHeartbeat()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnLock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnMeleeAttacked()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnSpellCastAt()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnTrapTriggered()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUnlock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUsed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUserDefined()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClick()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnFailToOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, the easiest way to do this is to edit an existing acr_door_* file and save it under a different name. Failure to properly call ALFA's door scripts can break multiple systems of the ACR. So make sure you've got them in there.&lt;br /&gt;
&lt;br /&gt;
= Editing Door Settings =&lt;br /&gt;
: ''See also: [[Using Local Variables]]&lt;br /&gt;
Aside from the standard NWN options of doors, we've provided a few more to give PCs and builders more options. These options can be accessed by editing the door's local variables.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_DELAY'''&amp;lt;/code&amp;gt; (float) The number of seconds a door will stay open before automatically closing itself. If set to zero or less than zero, the door will not close itself automatically.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_NEAR_PCS'''&amp;lt;/code&amp;gt; (integer) If set to 1, the door will auto-close regardless of any nearby PCs. If set to 0 (the default), the door will wait until PCs are out of visual range before closing itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_STUCK_DC'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door is considered &amp;quot;stuck&amp;quot;, and therefore cannot be opened unless forced. The value defined is the strength-check DC to &amp;quot;un-stick&amp;quot; the door. If someone tries to force a locked and stuck door open, the strength DC used is the higher of this value and &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt;. The default value is 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt; (integer) The DC to break open this door, as per DMG rules. Breaking open a door does not destroy it like doing damage to it would in NWN, but it does keep the door from being able to be locked again. If this value is zero, the door cannot be forced open. Valid values are from 0 to 255.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_FAIL_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This is a custom message sent to PCs who try to open the door and fail. This can be used in conjunction with * &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; to setup doors that require a spoken password to access (even useful for door riddles).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This message is &amp;quot;spoken&amp;quot; by the door when it is opened. It is usually used to give the PCs a description of the area beyond an AT, if any.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door unlocks itself. Generally used for shops and things which are only open during certain hours of the day. It will only unlock once, so if something else locks it afterwards, it will remain locked until either another creature unlocks it, or its next unlock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door locks itself. Generally used for shops and things which are only open during certain hours of the day. It will only lock once, so if something else unlocks it afterwards, it will remain unlocked until either another creature locks it, or its next lock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_SPELLID'''&amp;lt;/code&amp;gt; (int) This is the Spell ID for doors that require a specific spell to unlock. This will only work for spell IDs greater than 0. Be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; (string) This is what a player must speak to gain access to a password protected door. Leave this empty to require no password. Otherwise, be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_AUTO_LOCK'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door will automatically lock itself each time it is shut.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LISTEN_DC_MOD'''&amp;lt;/code&amp;gt; (integer) This modifier is applied to creatures trying to listen to conversations occuring behind a closed doors. The DMG lists this a +5 for every door, but some customization is allowed for different door types. If undefined or set to 0, the door cannot be listened through.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_KNOCK_IMMUNE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this door is immune to the spell knock. If zero, it is not immune.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNMOVABLE'''&amp;lt;/code&amp;gt; (integer) If nonzero, the door cannot be opened or closed by a non-DM creature, even if unlocked. Scripts can still open or close it, however. This setting is often used to represent large doors which a PC could not realistically close on their own even if they were unlocked, like the huge gates on castles and other fortifications.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_AT_SIZE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this setting specifies the maximum sized creature which can fit through this doorway. Anything large will be given a message saying it is too large to fit inside. Valid values are as follows:&lt;br /&gt;
*# Fine&lt;br /&gt;
*# Diminutive&lt;br /&gt;
*# Tiny&lt;br /&gt;
*# Small&lt;br /&gt;
*# Medium&lt;br /&gt;
*# Large&lt;br /&gt;
*# Huge&lt;br /&gt;
*# Gargantuan&lt;br /&gt;
*# Colossal&lt;br /&gt;
&lt;br /&gt;
Note that currently, NWN2 does not support creature sizes of fine, diminutive, gargantuan or colossal. These values are provided here for future compatibility.&lt;br /&gt;
&lt;br /&gt;
Note that if none of these variables are defined, they default to zero. So a door without them would never close or lock itself, wouldn't be stuck or barred at all, would not be able to be forced open, and wouldn't have any sort of a custom message printed if a PC failed to open it.&lt;br /&gt;
&lt;br /&gt;
= Detect Magic =&lt;br /&gt;
These are advanced options for doors to register as magical to Detect Magic. A door with these variables will report to the caster if the caster passes spellcraft checks based on the power of the spell.  For instance: &amp;quot;Abjuration Dorm has a Faint aura of Transmutation.&amp;quot;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the  [https://www.alandfaraway.info/wiki/Detect_Magic#SpellSchool_Variables Detect Magic: SpellSchool Variables] page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the Detect Magic page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
&lt;br /&gt;
=Tips/Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
*  If your doorway does not seem to function properly:&lt;br /&gt;
*- make sure the doorway is within a walkmesh area&lt;br /&gt;
*- make sure the '''''Interruptible''''' box is checked&lt;br /&gt;
*- Doors must be the same type / relative size on each side of the AT. If you have a big Double Door on the outside and a small single door on the inside PCs may experience random crashing errors.&lt;br /&gt;
*- make sure there is no open doorway behind it, as in a tileset doorway vs a placeable doorway&lt;br /&gt;
*- a door must have current hit points &amp;gt;0 for it to function&lt;br /&gt;
*- If your static door looks fine in the toolset but does not fill the doorway ingame, the door model defaults in static mode.  Instead do not make door static and set it to locked, requires key to open to get it to look right ingame. This is especially true when you have changed the size of the door to fit the doorway. Some models work better than others.  There are now placeable doors also available in the toolset.&lt;br /&gt;
*- If a Half-orc cannot got through your AT  make sure the receiving end is not set to position lock. Also make sure there is plenty of cleared space around the receiving door.  Too little space will keep orcs and half-orcs from being able to traverse the doorway.&lt;br /&gt;
* When resizing doors scales 1st and 2nd should be the same size.  Otherwise your door will be a weird size when it opens.  This how ever might be a useful trick when you want to emulate a door folding up or to the side.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Trade_Way&amp;diff=4024</id>
		<title>Trade Way</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Trade_Way&amp;diff=4024"/>
				<updated>2024-11-07T05:07:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: Created page with &amp;quot;The Trade Way started at Calimport in the south and traveled along the coast line all the way north to Waterdeep. The section of road between Baldur's Gate and Tethyr was also...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Trade Way started at Calimport in the south and traveled along the coast line all the way north to Waterdeep. The section of road between Baldur's Gate and Tethyr was also known as the Coast Way on some maps.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master_Administrator&amp;diff=4023</id>
		<title>Dungeon Master Administrator</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Dungeon_Master_Administrator&amp;diff=4023"/>
				<updated>2024-11-01T19:45:17Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ALFA Community Positions]]&lt;br /&gt;
The Dungeon Master Administrator is in charge of the oversight of DMs and Servers. This includes item compliance, global plots and quests, and DM approval/discipline, among others duties.&lt;br /&gt;
&lt;br /&gt;
The current DM Administrator is {{DM Admin}}, with elections held every October.&lt;br /&gt;
The DM admin position is currently rolled in with the Technical admin position due to lack of candidates for the position&lt;br /&gt;
&lt;br /&gt;
Some other specifications:&lt;br /&gt;
* All HDMs are responsible for providing monthly back-up copies of their servers to the DM Administrator.&lt;br /&gt;
* Oversight of HDMs, including the addition of new HDMs and the removal of existing ones, is the purview of the DM Administrator. &lt;br /&gt;
* Oversight of DMs is the purview of the DM Administrator.&lt;br /&gt;
* The DM Administrator is in charge of section 8 of the ALFA [[Rulebook]]. Chapters 1 and 9 may only be changed by a joint decision by the DM Admin, Infra Admin and Player Admin.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Charter]]&lt;br /&gt;
* [[Dungeon Master]]&lt;br /&gt;
* [[Standard]]s&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Template:DM_Admin&amp;diff=4020</id>
		<title>Template:DM Admin</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Template:DM_Admin&amp;diff=4020"/>
				<updated>2024-11-01T19:37:38Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Templates]][[Category:Community Position Templates]]&amp;lt;/noinclude&amp;gt;[[User:arianna|arianna]]&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Template:DM_Admin&amp;diff=4017</id>
		<title>Template:DM Admin</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Template:DM_Admin&amp;diff=4017"/>
				<updated>2024-11-01T19:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;[[Category:Templates]][[Category:Community Position Templates]]&amp;lt;/noinclude&amp;gt;[[User:Arianna|Arianna]]&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4010</id>
		<title>Virtual Machine Setup</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4010"/>
				<updated>2024-10-20T17:24:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This document describes in rough detail the recommended checklist for setting up a new game server host VM in the standard configuration.  This configuration is suitable for running nwn2server.exe as a limited user account.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
.NET 3.5 and the DirectX End-User Runtime are optional unless the toolset will be run locally on the game server host machine.&lt;br /&gt;
&lt;br /&gt;
* If running the toolset on the host is desired (optional), enable .NET 3.5 in Add/Remove Windows Features before installing DirectX&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX End-User Runtime]  (required only if the toolset will be used to stage content on the game server)&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=17851 Microsoft .NET Framework 4]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
# Install Windows Server (or Windows 10)&lt;br /&gt;
# Copy standard tools over:&lt;br /&gt;
## [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty]&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create user &amp;quot;NWN2Server&amp;quot;&lt;br /&gt;
## Add to &amp;quot;NWN2 Servers&amp;quot; SG (if using Windows Server)&lt;br /&gt;
# Create C:\NWN2, xcopy NWN2 install over (or just install NWN2)&lt;br /&gt;
## Grant &amp;quot;NWN2 Servers&amp;quot; create files, create folders to &amp;quot;This folder only&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant &amp;quot;NWN2 Admins&amp;quot; modify to folder, subfolders, and files (if using Windows Server)&lt;br /&gt;
## Import NWN2.reg (only if not installing NWN2)&lt;br /&gt;
# Create C:\NWN2User&lt;br /&gt;
## Grant full control to &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Run this in a command window: &amp;lt;code&amp;gt;Runas /profile /user:NWN2Server cmd.exe&amp;lt;/code&amp;gt; (or log in as the NWN2Server user and open up a command window)&lt;br /&gt;
## &amp;lt;code&amp;gt;cd /d &amp;quot;%userprofile%\Documents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;mklink /j &amp;quot;Neverwinter Nights 2&amp;quot; C:\NWN2User&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;putty -ssh alfa@sql.alandfaraway.info&amp;lt;/code&amp;gt;&lt;br /&gt;
### Confirm and accept central server public key for vault tunnel to work&lt;br /&gt;
# Create C:\NWNX4, xcopy NWNX4 installation over (or just simply install it)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Servers&amp;quot; for: (if using Windows Server)&lt;br /&gt;
### AuroraServerNWScript.log&lt;br /&gt;
### AuroraServerVault.log&lt;br /&gt;
### nwnx.txt&lt;br /&gt;
### nwnx_controller.txt&lt;br /&gt;
### StandardQueryLog.txt&lt;br /&gt;
### xp_mysql.txt&lt;br /&gt;
### xp_bugfix.txt&lt;br /&gt;
### xp_objectattributes.txt&lt;br /&gt;
### xp_srvadmin.txt&lt;br /&gt;
### xp_system.txt&lt;br /&gt;
### xp_time.txt&lt;br /&gt;
# Create C:\Users\Public\Desktop\Credentials.txt&lt;br /&gt;
# Copy standard links to C:\Users\Public\Desktop&lt;br /&gt;
# Copy standard links to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Tools&lt;br /&gt;
# Copy standard scripts to C:\Scripts&lt;br /&gt;
# Copy standard NWN2 tools to C:\Tools&lt;br /&gt;
# Copy NWNServerConsole to C:\NWN2\Console&lt;br /&gt;
# Fix PowerShell signing&lt;br /&gt;
## Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Install [http://git-scm.com/ Git]    You need this to get module updates&lt;br /&gt;
# Install [https://filezilla-project.org/ FileZilla] ( Optional depending on your needs)&lt;br /&gt;
# Install [http://msdn.microsoft.com/en-us/windows/apps/br229516 Win8 Performance Toolkit] or [https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ Windows 10 Performance Toolkit] (Optional depending on your needs) &lt;br /&gt;
# Install [http://www.7-zip.org/ 7-zip]    You need this to be able to unpack the haks when they are downloaded to the server for updates&lt;br /&gt;
# Install [http://gvim.en.softonic.com/ gvim] ( Optional depending on your needs)&lt;br /&gt;
# Install WinDbg for [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 7] or [http://msdn.microsoft.com/en-US/windows/desktop/bg162891 Windows 8.1] or [https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Windows 10]. ( Optional depending on your needs)&lt;br /&gt;
# Set &amp;lt;code&amp;gt;_NT_SYMBOL_PATH&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&amp;lt;/code&amp;gt; ( Optional depending on your needs)&lt;br /&gt;
&lt;br /&gt;
== NWNX4 Installation ==&lt;br /&gt;
# nwnx4_controller.exe -installservice&lt;br /&gt;
# Configure NWNX4-1 service to run as the &amp;quot;NWN2Server&amp;quot; user:&lt;br /&gt;
## If using a Microsoft account (user@email) for the server user, use Computername\Username where Username is the value that %USERNAME% shows from &amp;quot;echo %USERNAME%&amp;quot; in cmd.exe and Computername is the value that %COMPUTERNAME% shows from &amp;quot;echo %COMPUTERNAME%&amp;quot; in cmd.exe.  Also, in this case, you have to manually grant this user &amp;quot;Log on as a service&amp;quot; rights by going to Local Security Policy, Local Policies, User Rights Assignment, Log on as a service, and adding Computername\Username to the list.  This only applies to accounts set up as a Microsoft account initially, not to local accounts that a Microsoft account was connected to afterwards.&lt;br /&gt;
# Get SID for NWN2Server user with PowerShell:  (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;([wmi]&amp;quot;win32_Group.Domain='$env:ComputerName',Name='NWN2 Admins'&amp;quot;).sid&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set SD on nwnx4-1 service to allow NWN2 Admins to start/stop: (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;sc sdset nwnx4-1 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWP;;;&amp;lt;NWN2 Admins SID from above command&amp;gt;)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install SSH private key to C:\NWNX4\sshfs.ppk&lt;br /&gt;
# Add SSH public key to alfa@sql.alandfaraway.org:~/.ssh/authorized_keys&lt;br /&gt;
# Set configuration in C:\NWNX4\nwnx.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerNWScript.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\xp_mysql.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\DatabaseConnector.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerVault.ini&lt;br /&gt;
&lt;br /&gt;
== Module preparation ==&lt;br /&gt;
# If the module is being cloned directly from source control or copied from a very old backup, it may be necessary to recompile the module against a current alfa2_acr.hak to ensure that the database connection (and self-update) work at module startup.  If the module never loads acr_databaseconnector in AuroraServerNWScript.log and no &amp;quot;DatabaseConnector&amp;quot; log messages in nwserverLog1.txt are seen before the ACR_OnModuleLoad: log line then this may be the problem (but also check for errors in AuroraServerNWScript.log that might indicate a misconfigured NWScript Accelerator installation).&lt;br /&gt;
# Make sure that alfa2_acr.hak is recent.  An extremely old build predating the DatabaseConnector integration may not be able to self-update the rest of the ACR.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Fixes for some problems encountered during server deployment are listed here.&lt;br /&gt;
# Module didn't load or server doesn't start up?&lt;br /&gt;
## Look at the server log file and C:\NWNX4\AuroraServerNWScript.log for errors/exceptions for next troubleshooting steps.&lt;br /&gt;
# Database doesn't connect, or many exceptions in server log about the database, or PCs (but not DM's) are booted at log on?&lt;br /&gt;
## Make sure that plink.exe was run once as the user that the NWNX4-1 service runs as in order to accept the SSH key of the central server.&lt;br /&gt;
# Monitor Server Uptime script closes immediately?&lt;br /&gt;
## Make sure that the following command was run from an administrator privileged PowerShell session: Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Game server starts with NWNX4_GUI.exe but not as a service?&lt;br /&gt;
## Make sure that the service is running as the right user.  Go to services.msc and configure it to run as the user whose %userprofile%\Documents\Neverwinter Nights 2 has the module, server vault, etc. present.&lt;br /&gt;
# Toolset doesn't start/work properly?&lt;br /&gt;
## Make sure that .NET Framework v3.5 (sometimes called .NET Framework v2.0) is installed, and then the DirectX End-User Runtime is installed.  If the DirectX End-User Runtime was installed first, it's installer has to be re-run after installing .NET Framework v3.5.&lt;br /&gt;
# Database or scripts don't work, or NWNX4 plugins didn't load?&lt;br /&gt;
## Make sure that all Visual C++ and .NET runtime dependencies were installed.&lt;br /&gt;
## Make sure that NWNScriptJIT.dll, NWNScriptJITIntrinsics.dll are installed in the NWN2 installation directory (not necessarily the NWNX4 installation directory).&lt;br /&gt;
## Make sure that plink.exe was run once as the service user (see above).&lt;br /&gt;
# Using a Microsoft account for the service account and the service fails to start with &amp;quot;The service dependency failed to start.&amp;quot;?&lt;br /&gt;
## Configure the service to log on using Computername\Username and ensure that from Local Security Policy, Local Policies, User Rights Assignment, that Computername\Username was granted &amp;quot;Log on as a service&amp;quot; rights.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4009</id>
		<title>Basic Host Requirements</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4009"/>
				<updated>2024-10-20T01:49:59Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
ALFA strongly recommends that all game servers run a 64-bit OS for the operating system that runs nwn2server. A 32-bit OS does not provide enough address space for many modules to function reliably when hosted by nwn2server.&lt;br /&gt;
&lt;br /&gt;
If nwn2server is hosted in a virtual machine, ALFA recommends that either [http://www.vmware.com/ VMware] or [http://www.microsoft.com/hyper-v/‎ Hyper-V] be used for the virtualization infrastructure. Both of these products have both been validated and are functional in production use for live servers. [This is probably outdated unless using a really old machine]&lt;br /&gt;
&lt;br /&gt;
Specifically noted, VirtualBox should not be used or the game will not function properly, on account of bugs in VirtualBox's timer handling (often manifests as perception not working over time or other time-based systems in the game malfunctioning).&lt;br /&gt;
&lt;br /&gt;
It is preferred that the Windows version (Windows 8.1 or Windows Server 2012 R2 or higher are recommended) used to host the game server be a version that supports acting as a Remote Desktop Protocol (RDP) host, typically Professional (or higher) editions. Server editions also include Remote Desktop Protocol host functionality. RDP provides a superior remote administration experience as compared to VNC. [We know this works on Windows 22 Server at this point 10/2024]&lt;br /&gt;
&lt;br /&gt;
The recommended memory size to allocate to a game server instance is 4GB. This may be adjusted based on the actual memory consumption of a module, but 2GB provides plenty of headroom for most of our servers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)] - This will not show up as a service pack on install anymore.  Make sure you choose the (x86) version&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ Redistributable Packages for Visual Studio 2013]&lt;br /&gt;
* [http://support.microsoft.com/kb/968929/en-us Windows Management Framework Core] -- For operating systems older than Windows 7. Only need Windows PowerShell 2.0.&lt;br /&gt;
&lt;br /&gt;
= NWNx4 =&lt;br /&gt;
ALFA uses [https://neverwintervault.org/project/nwn2/other/nwnx4-v109 NWNx4] to host all of its live servers.&lt;br /&gt;
&lt;br /&gt;
While this document cannot replace the documentation provided with NWNx4, a brief explanation can be offered: NWNx4 is an application which runs alongside the nwn2server application, communicating with, running processes for, and altering the data within to achieve functionality which cannot be created without such means.&lt;br /&gt;
&lt;br /&gt;
The NWNx4 application works with a number of community-generated plugins-- libraries of functions and hooks, which are either called from the NWN scripting language or which intercept standard functions or functionality to correct bugs-- which are required for the proper function of [[ALFA Core Rules | ALFA's core ruleset]].&lt;br /&gt;
&lt;br /&gt;
== ACR plugin downloads ==&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwn2server%20directory nwn2server directory] -- These files go in the same folder as nwn2server.exe.&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwnx4%20directory nwnx4 directory] -- These files go into your NWNx4 folder.&lt;br /&gt;
&lt;br /&gt;
NWNx4 is configured through the nwnx.ini file, which is plain text and contains help text to describe the function of each setting, which is installed to the NWNx4 install directory. Once configured, a server is run through NWNx4 by running one of the NWNx4 executables. The started application will also start nwn2server.&lt;br /&gt;
&lt;br /&gt;
== Currently Used Plugins ==&lt;br /&gt;
=== Server Folder Files ===&lt;br /&gt;
* '''NWNScriptJIT.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''NWNScriptJITIntrinsics.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''AuroraServerNetLayer.dll''' -- bug fixes&lt;br /&gt;
* '''NWNScriptCompiler.exe''' -- The script compiler should be somewhere in %PATH%, but it can be placed in the server install directory too.  Needed for the content patcher to automatically recompile modules on updates (required, or else the module could break after a content patch).&lt;br /&gt;
&lt;br /&gt;
=== NWNx4 Folder Files ===&lt;br /&gt;
* '''NWNx4_Hook.dll''' -- Allows script hooking in the first place.&lt;br /&gt;
* '''NWNScriptCompiler.exe -- Required to allow the content patcher to recompile a module. Take from AdvancedScriptCompiler\NWNScriptCompiler.exe on the ACR repository.&lt;br /&gt;
* '''xp_AuroraServerNWScript.dll''' -- Script improvements, C# support, allows workarounds of engine limitations.&lt;br /&gt;
* '''xp_bugfix.dll''' -- Bug fixes&lt;br /&gt;
* '''xp_craft.dll''' -- Customization of items during live play&lt;br /&gt;
* '''xp_mysql.dll''' -- Allows communication with SQL databases&lt;br /&gt;
* '''xp_objectattributes.dll''' -- Allows the modification of creatures during live play&lt;br /&gt;
* '''xp_ServerVault.dll''' -- Allows vault reads / writes to occur without stopping the main server process&lt;br /&gt;
* '''xp_srvadmin.dll''' -- Allows scripts to carry out server administration actions.&lt;br /&gt;
* '''xp_system.dll''' -- &lt;br /&gt;
* '''xp_time.dll''' --  &lt;br /&gt;
* '''MySql.Data.dll''' -- MySQL client library for CLR scripts.&lt;br /&gt;
* '''madChook.dll''' -- [this is outdated and no longer used for newer setups]&lt;br /&gt;
* '''xp_fastboot.dll''' --&lt;br /&gt;
* '''xp_profiler_Hialmar.dll''' --  [This is outdated and no longer used for newer setups]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As MySql.Data.dll is sometimes regarded as a remote assembly by Windows, you newer versions of windows may need to unblock the assembly. To do this, right click, pick properties, and then on the General tab, look for an Unblock button. If there is one, click it; if there is not, it's not being so regarded.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* AuroraServerNWScript.ini&lt;br /&gt;
*: &amp;lt;code&amp;gt;AllowManagedScripts=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* xp_craft.ini&lt;br /&gt;
** Set the database directory to proper location of the Campaign Database on the machine&lt;br /&gt;
* AuroraServerVault.ini&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, players will be unable to see their vaults.&lt;br /&gt;
** Typical configuration is to set LocalServerVaultPath=C:\NWN2User\servervault , RemoteServerVaultPath=C:\NWN2User\remotevault , SpoolPath=C:\NWN2User\servervaultspool. All three of these can be anywhere, so long as it is clear to anyone doing maintenance what they are (&amp;quot;remote vault&amp;quot; is where bics will be downloaded to for verification, &amp;quot;spool&amp;quot; is where saved bics will be staged for upload, and &amp;quot;local server vault&amp;quot; is the directory from which characters will be played).&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, the server will default to inappropriate settings (such as PvP, download server, or custom GUIs) or requiring the module to be started manually after nwn2server.exe stops.&lt;br /&gt;
** Remember to ensure that the directories specified in the config file exist!  They have to be created manually (except for the LocalServerVaultPath which is automatically created by nwn2server.exe, though it can be manually created safely).  If the directories don't all exist, the vault won't work correctly and players will not be able to log in.&lt;br /&gt;
* nwnx.ini&lt;br /&gt;
** The ACR requires a temporary directory to run. It can be anywhere that the user who runs the NWNx4 process can write to. It is set in nwn2temp&lt;br /&gt;
* DatabaseConnector.ini&lt;br /&gt;
** DatabaseConnector has only one setting in it, which should look something like:&lt;br /&gt;
*** CommandLine=-batch -L 3306:127.0.0.1:3306 -x -a -T -2 -noagent -N -i C:\NWNX4\ssh.ppk alfa@sql.alandfaraway.info&lt;br /&gt;
*** C:\NWNX4\ is where to find the private key, ''ssh.ppk'' is the private key that you're specified for this server.&lt;br /&gt;
**** To create a key pair, use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuttyGen] to create a new key with all of the default settings.&lt;br /&gt;
**** Save the private key to your NWNx4 directory, and specify that location in the command line&lt;br /&gt;
**** Use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTy] to connect to alfa@sql.alandfaraway.info (as an HDM, you should have credentials for this) and edit (pico is the Linux command) .\alfa\.ssh\authorized_keys to add the public key to the bottom. Then, run (Windows+R) &amp;quot;&amp;lt;file location of putty&amp;gt; alfa@sql.alandfaraway.info -i &amp;lt;file location of your public key&amp;gt;&amp;quot; -- you will be prompted asking if you want to cache the public key from the server you're connecting to. Pick &amp;quot;yes&amp;quot; and close the connection.&lt;br /&gt;
* xp_mysql.ini&lt;br /&gt;
** Set the database credentials up as per standard for the central server.  TA, IA, or tech team can help provide credentials.  Use StandardQueryLog.txt (formerly xp_mysql.txt) to troubleshoot database connectivity or query problems. Yes it is suppose to be set to SQLoff, it runs in conjunction with the DatabaseConnector to connect to the vault currently.&lt;br /&gt;
** Set server = localhost to use the DatabaseConnector managed tunnel (all servers should generally use this).  If a Linux sshfs VM is in use instead, set server = linuxhost where linuxhost is the address of the Linux VM (this method is deprecated).&lt;br /&gt;
&lt;br /&gt;
If running multiple servers on one machine, the above configs need to change slightly. In DatabaseConnector.ini, change &amp;quot;3306:127.0.0.1:3306&amp;quot; to &amp;quot;3307:127.0.0.1:3306&amp;quot; and in xp_mysql.ini change &amp;quot;localhost&amp;quot; to &amp;quot;localhost;port=3307&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Installation checklist =&lt;br /&gt;
See [[Virtual Machine Setup]] for an end to end checklist for configuring a game server from scratch, using this guide for reference.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4008</id>
		<title>Basic Host Requirements</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4008"/>
				<updated>2024-10-20T01:38:18Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* NWNx4 Folder Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
ALFA strongly recommends that all game servers run a 64-bit OS for the operating system that runs nwn2server. A 32-bit OS does not provide enough address space for many modules to function reliably when hosted by nwn2server.&lt;br /&gt;
&lt;br /&gt;
If nwn2server is hosted in a virtual machine, ALFA recommends that either [http://www.vmware.com/ VMware] or [http://www.microsoft.com/hyper-v/‎ Hyper-V] be used for the virtualization infrastructure. Both of these products have both been validated and are functional in production use for live servers. [This is probably outdated unless using a really old machine]&lt;br /&gt;
&lt;br /&gt;
Specifically noted, VirtualBox should not be used or the game will not function properly, on account of bugs in VirtualBox's timer handling (often manifests as perception not working over time or other time-based systems in the game malfunctioning).&lt;br /&gt;
&lt;br /&gt;
It is preferred that the Windows version (Windows 8.1 or Windows Server 2012 R2 or higher are recommended) used to host the game server be a version that supports acting as a Remote Desktop Protocol (RDP) host, typically Professional (or higher) editions. Server editions also include Remote Desktop Protocol host functionality. RDP provides a superior remote administration experience as compared to VNC. [We know this works on Windows 22 Server at this point 10/2024]&lt;br /&gt;
&lt;br /&gt;
The recommended memory size to allocate to a game server instance is 4GB. This may be adjusted based on the actual memory consumption of a module, but 2GB provides plenty of headroom for most of our servers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)] - This will not show up as a service pack on install anymore.  Make sure you choose the (x86) version&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ Redistributable Packages for Visual Studio 2013]&lt;br /&gt;
* [http://support.microsoft.com/kb/968929/en-us Windows Management Framework Core] -- For operating systems older than Windows 7. Only need Windows PowerShell 2.0.&lt;br /&gt;
&lt;br /&gt;
= NWNx4 =&lt;br /&gt;
ALFA uses [https://neverwintervault.org/project/nwn2/other/nwnx4-v109 NWNx4] to host all of its live servers.&lt;br /&gt;
&lt;br /&gt;
While this document cannot replace the documentation provided with NWNx4, a brief explanation can be offered: NWNx4 is an application which runs alongside the nwn2server application, communicating with, running processes for, and altering the data within to achieve functionality which cannot be created without such means.&lt;br /&gt;
&lt;br /&gt;
The NWNx4 application works with a number of community-generated plugins-- libraries of functions and hooks, which are either called from the NWN scripting language or which intercept standard functions or functionality to correct bugs-- which are required for the proper function of [[ALFA Core Rules | ALFA's core ruleset]].&lt;br /&gt;
&lt;br /&gt;
== ACR plugin downloads ==&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwn2server%20directory nwn2server directory] -- These files go in the same folder as nwn2server.exe.&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwnx4%20directory nwnx4 directory] -- These files go into your NWNx4 folder.&lt;br /&gt;
&lt;br /&gt;
NWNx4 is configured through the nwnx.ini file, which is plain text and contains help text to describe the function of each setting, which is installed to the NWNx4 install directory. Once configured, a server is run through NWNx4 by running one of the NWNx4 executables. The started application will also start nwn2server.&lt;br /&gt;
&lt;br /&gt;
== Currently Used Plugins ==&lt;br /&gt;
=== Server Folder Files ===&lt;br /&gt;
* '''NWNScriptJIT.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''NWNScriptJITIntrinsics.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''AuroraServerNetLayer.dll''' -- bug fixes&lt;br /&gt;
* '''NWNScriptCompiler.exe''' -- The script compiler should be somewhere in %PATH%, but it can be placed in the server install directory too.  Needed for the content patcher to automatically recompile modules on updates (required, or else the module could break after a content patch).&lt;br /&gt;
&lt;br /&gt;
=== NWNx4 Folder Files ===&lt;br /&gt;
* '''NWNx4_Hook.dll''' -- Allows script hooking in the first place.&lt;br /&gt;
* '''NWNScriptCompiler.exe -- Required to allow the content patcher to recompile a module. Take from AdvancedScriptCompiler\NWNScriptCompiler.exe on the ACR repository.&lt;br /&gt;
* '''xp_AuroraServerNWScript.dll''' -- Script improvements, C# support, allows workarounds of engine limitations.&lt;br /&gt;
* '''xp_bugfix.dll''' -- Bug fixes&lt;br /&gt;
* '''xp_craft.dll''' -- Customization of items during live play&lt;br /&gt;
* '''xp_mysql.dll''' -- Allows communication with SQL databases&lt;br /&gt;
* '''xp_objectattributes.dll''' -- Allows the modification of creatures during live play&lt;br /&gt;
* '''xp_ServerVault.dll''' -- Allows vault reads / writes to occur without stopping the main server process&lt;br /&gt;
* '''xp_srvadmin.dll''' -- Allows scripts to carry out server administration actions.&lt;br /&gt;
* '''xp_system.dll''' -- &lt;br /&gt;
* '''xp_time.dll''' --  &lt;br /&gt;
* '''MySql.Data.dll''' -- MySQL client library for CLR scripts.&lt;br /&gt;
* '''madChook.dll''' -- [this is outdated and no longer used for newer setups]&lt;br /&gt;
* '''xp_fastboot.dll''' --&lt;br /&gt;
* '''xp_profiler_Hialmar.dll''' --  [This is outdated and no longer used for newer setups]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As MySql.Data.dll is sometimes regarded as a remote assembly by Windows, you newer versions of windows may need to unblock the assembly. To do this, right click, pick properties, and then on the General tab, look for an Unblock button. If there is one, click it; if there is not, it's not being so regarded.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* AuroraServerNWScript.ini&lt;br /&gt;
*: &amp;lt;code&amp;gt;AllowManagedScripts=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* xp_craft.ini&lt;br /&gt;
** Set the database directory to proper location of the Campaign Database on the machine&lt;br /&gt;
* AuroraServerVault.ini&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, players will be unable to see their vaults.&lt;br /&gt;
** Typical configuration is to set LocalServerVaultPath=C:\NWN2User\servervault , RemoteServerVaultPath=C:\NWN2User\remotevault , SpoolPath=C:\NWN2User\servervaultspool. All three of these can be anywhere, so long as it is clear to anyone doing maintenance what they are (&amp;quot;remote vault&amp;quot; is where bics will be downloaded to for verification, &amp;quot;spool&amp;quot; is where saved bics will be staged for upload, and &amp;quot;local server vault&amp;quot; is the directory from which characters will be played).&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, the server will default to inappropriate settings (such as PvP, download server, or custom GUIs) or requiring the module to be started manually after nwn2server.exe stops.&lt;br /&gt;
** Remember to ensure that the directories specified in the config file exist!  They have to be created manually (except for the LocalServerVaultPath which is automatically created by nwn2server.exe, though it can be manually created safely).  If the directories don't all exist, the vault won't work correctly and players will not be able to log in.&lt;br /&gt;
* nwnx.ini&lt;br /&gt;
** The ACR requires a temporary directory to run. It can be anywhere that the user who runs the NWNx4 process can write to. It is set in nwn2temp&lt;br /&gt;
* DatabaseConnector.ini&lt;br /&gt;
** DatabaseConnector has only one setting in it, which should look something like:&lt;br /&gt;
*** CommandLine=-batch -L 3306:127.0.0.1:3306 -x -a -T -2 -noagent -N -i C:\NWNX4\ssh.ppk alfa@sql.alandfaraway.info&lt;br /&gt;
*** C:\NWNX4\ssh.ppk is the private key that you're specified for this server.&lt;br /&gt;
**** To create a key pair, use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuttyGen] to create a new key with all of the default settings.&lt;br /&gt;
**** Save the private key to your NWNx4 directory, and specify that location in the command line&lt;br /&gt;
**** Use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTy] to connect to alfa@sql.alandfaraway.info (as an HDM, you should have credentials for this) and edit (pico is the Linux command) .\alfa\.ssh\authorized_keys to add the public key to the bottom. Then, run (Windows+R) &amp;quot;&amp;lt;file location of putty&amp;gt; alfa@sql.alandfaraway.info -i &amp;lt;file location of your public key&amp;gt;&amp;quot; -- you will be prompted asking if you want to cache the public key from the server you're connecting to. Pick &amp;quot;yes&amp;quot; and close the connection.&lt;br /&gt;
* xp_mysql.ini&lt;br /&gt;
** Set the database credentials up as per standard for the central server.  TA, IA, or tech team can help provide credentials.  Use StandardQueryLog.txt (formerly xp_mysql.txt) to troubleshoot database connectivity or query problems.&lt;br /&gt;
** Set server = localhost to use the DatabaseConnector managed tunnel (all servers should generally use this).  If a Linux sshfs VM is in use instead, set server = linuxhost where linuxhost is the address of the Linux VM (this method is deprecated).&lt;br /&gt;
&lt;br /&gt;
If running multiple servers on one machine, the above configs need to change slightly. In DatabaseConnector.ini, change &amp;quot;3306:127.0.0.1:3306&amp;quot; to &amp;quot;3307:127.0.0.1:3306&amp;quot; and in xp_mysql.ini change &amp;quot;localhost&amp;quot; to &amp;quot;localhost;port=3307&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Installation checklist =&lt;br /&gt;
See [[Virtual Machine Setup]] for an end to end checklist for configuring a game server from scratch, using this guide for reference.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4007</id>
		<title>Basic Host Requirements</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4007"/>
				<updated>2024-10-20T01:35:36Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
ALFA strongly recommends that all game servers run a 64-bit OS for the operating system that runs nwn2server. A 32-bit OS does not provide enough address space for many modules to function reliably when hosted by nwn2server.&lt;br /&gt;
&lt;br /&gt;
If nwn2server is hosted in a virtual machine, ALFA recommends that either [http://www.vmware.com/ VMware] or [http://www.microsoft.com/hyper-v/‎ Hyper-V] be used for the virtualization infrastructure. Both of these products have both been validated and are functional in production use for live servers. [This is probably outdated unless using a really old machine]&lt;br /&gt;
&lt;br /&gt;
Specifically noted, VirtualBox should not be used or the game will not function properly, on account of bugs in VirtualBox's timer handling (often manifests as perception not working over time or other time-based systems in the game malfunctioning).&lt;br /&gt;
&lt;br /&gt;
It is preferred that the Windows version (Windows 8.1 or Windows Server 2012 R2 or higher are recommended) used to host the game server be a version that supports acting as a Remote Desktop Protocol (RDP) host, typically Professional (or higher) editions. Server editions also include Remote Desktop Protocol host functionality. RDP provides a superior remote administration experience as compared to VNC. [We know this works on Windows 22 Server at this point 10/2024]&lt;br /&gt;
&lt;br /&gt;
The recommended memory size to allocate to a game server instance is 4GB. This may be adjusted based on the actual memory consumption of a module, but 2GB provides plenty of headroom for most of our servers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)] - This will not show up as a service pack on install anymore.  Make sure you choose the (x86) version&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ Redistributable Packages for Visual Studio 2013]&lt;br /&gt;
* [http://support.microsoft.com/kb/968929/en-us Windows Management Framework Core] -- For operating systems older than Windows 7. Only need Windows PowerShell 2.0.&lt;br /&gt;
&lt;br /&gt;
= NWNx4 =&lt;br /&gt;
ALFA uses [https://neverwintervault.org/project/nwn2/other/nwnx4-v109 NWNx4] to host all of its live servers.&lt;br /&gt;
&lt;br /&gt;
While this document cannot replace the documentation provided with NWNx4, a brief explanation can be offered: NWNx4 is an application which runs alongside the nwn2server application, communicating with, running processes for, and altering the data within to achieve functionality which cannot be created without such means.&lt;br /&gt;
&lt;br /&gt;
The NWNx4 application works with a number of community-generated plugins-- libraries of functions and hooks, which are either called from the NWN scripting language or which intercept standard functions or functionality to correct bugs-- which are required for the proper function of [[ALFA Core Rules | ALFA's core ruleset]].&lt;br /&gt;
&lt;br /&gt;
== ACR plugin downloads ==&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwn2server%20directory nwn2server directory] -- These files go in the same folder as nwn2server.exe.&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwnx4%20directory nwnx4 directory] -- These files go into your NWNx4 folder.&lt;br /&gt;
&lt;br /&gt;
NWNx4 is configured through the nwnx.ini file, which is plain text and contains help text to describe the function of each setting, which is installed to the NWNx4 install directory. Once configured, a server is run through NWNx4 by running one of the NWNx4 executables. The started application will also start nwn2server.&lt;br /&gt;
&lt;br /&gt;
== Currently Used Plugins ==&lt;br /&gt;
=== Server Folder Files ===&lt;br /&gt;
* '''NWNScriptJIT.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''NWNScriptJITIntrinsics.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''AuroraServerNetLayer.dll''' -- bug fixes&lt;br /&gt;
* '''NWNScriptCompiler.exe''' -- The script compiler should be somewhere in %PATH%, but it can be placed in the server install directory too.  Needed for the content patcher to automatically recompile modules on updates (required, or else the module could break after a content patch).&lt;br /&gt;
&lt;br /&gt;
=== NWNx4 Folder Files ===&lt;br /&gt;
* '''NWNx4_Hook.dll''' -- Allows script hooking in the first place.&lt;br /&gt;
* '''NWNScriptCompiler.exe -- Required to allow the content patcher to recompile a module. Take from AdvancedScriptCompiler\NWNScriptCompiler.exe on the ACR repository.&lt;br /&gt;
* '''xp_AuroraServerNWScript.dll''' -- Script improvements, C# support, allows workarounds of engine limitations.&lt;br /&gt;
* '''xp_bugfix.dll''' -- Bug fixes&lt;br /&gt;
* '''xp_craft.dll''' -- Customization of items during live play&lt;br /&gt;
* '''xp_mysql.dll''' -- Allows communication with SQL databases&lt;br /&gt;
* '''xp_objectattributes.dll''' -- Allows the modification of creatures during live play&lt;br /&gt;
* '''xp_ServerVault.dll''' -- Allows vault reads / writes to occur without stopping the main server process&lt;br /&gt;
* '''xp_srvadmin.dll''' -- Allows scripts to carry out server administration actions.&lt;br /&gt;
* '''xp_system.dll''' -- &lt;br /&gt;
* '''xp_time.dll''' --  &lt;br /&gt;
* '''MySql.Data.dll''' -- MySQL client library for CLR scripts.&lt;br /&gt;
* '''madChook.dll''' --&lt;br /&gt;
* '''xp_fastboot.dll''' --&lt;br /&gt;
* '''xp_profiler_Hialmar.dll''' --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As MySql.Data.dll is sometimes regarded as a remote assembly by Windows, you newer versions of windows may need to unblock the assembly. To do this, right click, pick properties, and then on the General tab, look for an Unblock button. If there is one, click it; if there is not, it's not being so regarded.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* AuroraServerNWScript.ini&lt;br /&gt;
*: &amp;lt;code&amp;gt;AllowManagedScripts=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* xp_craft.ini&lt;br /&gt;
** Set the database directory to proper location of the Campaign Database on the machine&lt;br /&gt;
* AuroraServerVault.ini&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, players will be unable to see their vaults.&lt;br /&gt;
** Typical configuration is to set LocalServerVaultPath=C:\NWN2User\servervault , RemoteServerVaultPath=C:\NWN2User\remotevault , SpoolPath=C:\NWN2User\servervaultspool. All three of these can be anywhere, so long as it is clear to anyone doing maintenance what they are (&amp;quot;remote vault&amp;quot; is where bics will be downloaded to for verification, &amp;quot;spool&amp;quot; is where saved bics will be staged for upload, and &amp;quot;local server vault&amp;quot; is the directory from which characters will be played).&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, the server will default to inappropriate settings (such as PvP, download server, or custom GUIs) or requiring the module to be started manually after nwn2server.exe stops.&lt;br /&gt;
** Remember to ensure that the directories specified in the config file exist!  They have to be created manually (except for the LocalServerVaultPath which is automatically created by nwn2server.exe, though it can be manually created safely).  If the directories don't all exist, the vault won't work correctly and players will not be able to log in.&lt;br /&gt;
* nwnx.ini&lt;br /&gt;
** The ACR requires a temporary directory to run. It can be anywhere that the user who runs the NWNx4 process can write to. It is set in nwn2temp&lt;br /&gt;
* DatabaseConnector.ini&lt;br /&gt;
** DatabaseConnector has only one setting in it, which should look something like:&lt;br /&gt;
*** CommandLine=-batch -L 3306:127.0.0.1:3306 -x -a -T -2 -noagent -N -i C:\NWNX4\ssh.ppk alfa@sql.alandfaraway.info&lt;br /&gt;
*** C:\NWNX4\ssh.ppk is the private key that you're specified for this server.&lt;br /&gt;
**** To create a key pair, use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuttyGen] to create a new key with all of the default settings.&lt;br /&gt;
**** Save the private key to your NWNx4 directory, and specify that location in the command line&lt;br /&gt;
**** Use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTy] to connect to alfa@sql.alandfaraway.info (as an HDM, you should have credentials for this) and edit (pico is the Linux command) .\alfa\.ssh\authorized_keys to add the public key to the bottom. Then, run (Windows+R) &amp;quot;&amp;lt;file location of putty&amp;gt; alfa@sql.alandfaraway.info -i &amp;lt;file location of your public key&amp;gt;&amp;quot; -- you will be prompted asking if you want to cache the public key from the server you're connecting to. Pick &amp;quot;yes&amp;quot; and close the connection.&lt;br /&gt;
* xp_mysql.ini&lt;br /&gt;
** Set the database credentials up as per standard for the central server.  TA, IA, or tech team can help provide credentials.  Use StandardQueryLog.txt (formerly xp_mysql.txt) to troubleshoot database connectivity or query problems.&lt;br /&gt;
** Set server = localhost to use the DatabaseConnector managed tunnel (all servers should generally use this).  If a Linux sshfs VM is in use instead, set server = linuxhost where linuxhost is the address of the Linux VM (this method is deprecated).&lt;br /&gt;
&lt;br /&gt;
If running multiple servers on one machine, the above configs need to change slightly. In DatabaseConnector.ini, change &amp;quot;3306:127.0.0.1:3306&amp;quot; to &amp;quot;3307:127.0.0.1:3306&amp;quot; and in xp_mysql.ini change &amp;quot;localhost&amp;quot; to &amp;quot;localhost;port=3307&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Installation checklist =&lt;br /&gt;
See [[Virtual Machine Setup]] for an end to end checklist for configuring a game server from scratch, using this guide for reference.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4006</id>
		<title>Basic Host Requirements</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4006"/>
				<updated>2024-10-20T01:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
ALFA strongly recommends that all game servers run a 64-bit OS for the operating system that runs nwn2server. A 32-bit OS does not provide enough address space for many modules to function reliably when hosted by nwn2server.&lt;br /&gt;
&lt;br /&gt;
If nwn2server is hosted in a virtual machine, ALFA recommends that either [http://www.vmware.com/ VMware] or [http://www.microsoft.com/hyper-v/‎ Hyper-V] be used for the virtualization infrastructure. Both of these products have both been validated and are functional in production use for live servers.&lt;br /&gt;
&lt;br /&gt;
Specifically noted, VirtualBox should not be used or the game will not function properly, on account of bugs in VirtualBox's timer handling (often manifests as perception not working over time or other time-based systems in the game malfunctioning).&lt;br /&gt;
&lt;br /&gt;
It is preferred that the Windows version (Windows 8.1 or Windows Server 2012 R2 or higher are recommended) used to host the game server be a version that supports acting as a Remote Desktop Protocol (RDP) host, typically Professional (or higher) editions. Server editions also include Remote Desktop Protocol host functionality. RDP provides a superior remote administration experience as compared to VNC.&lt;br /&gt;
&lt;br /&gt;
The recommended memory size to allocate to a game server instance is 4GB. This may be adjusted based on the actual memory consumption of a module, but 2GB provides plenty of headroom for most of our servers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)] - This will not show up as a service pack on install anymore.  Make sure you choose the (x86) version&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ Redistributable Packages for Visual Studio 2013]&lt;br /&gt;
* [http://support.microsoft.com/kb/968929/en-us Windows Management Framework Core] -- For operating systems older than Windows 7. Only need Windows PowerShell 2.0.&lt;br /&gt;
&lt;br /&gt;
= NWNx4 =&lt;br /&gt;
ALFA uses [https://neverwintervault.org/project/nwn2/other/nwnx4-v109 NWNx4] to host all of its live servers.&lt;br /&gt;
&lt;br /&gt;
While this document cannot replace the documentation provided with NWNx4, a brief explanation can be offered: NWNx4 is an application which runs alongside the nwn2server application, communicating with, running processes for, and altering the data within to achieve functionality which cannot be created without such means.&lt;br /&gt;
&lt;br /&gt;
The NWNx4 application works with a number of community-generated plugins-- libraries of functions and hooks, which are either called from the NWN scripting language or which intercept standard functions or functionality to correct bugs-- which are required for the proper function of [[ALFA Core Rules | ALFA's core ruleset]].&lt;br /&gt;
&lt;br /&gt;
== ACR plugin downloads ==&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwn2server%20directory nwn2server directory] -- These files go in the same folder as nwn2server.exe.&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwnx4%20directory nwnx4 directory] -- These files go into your NWNx4 folder.&lt;br /&gt;
&lt;br /&gt;
NWNx4 is configured through the nwnx.ini file, which is plain text and contains help text to describe the function of each setting, which is installed to the NWNx4 install directory. Once configured, a server is run through NWNx4 by running one of the NWNx4 executables. The started application will also start nwn2server.&lt;br /&gt;
&lt;br /&gt;
== Currently Used Plugins ==&lt;br /&gt;
=== Server Folder Files ===&lt;br /&gt;
* '''NWNScriptJIT.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''NWNScriptJITIntrinsics.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''AuroraServerNetLayer.dll''' -- bug fixes&lt;br /&gt;
* '''NWNScriptCompiler.exe''' -- The script compiler should be somewhere in %PATH%, but it can be placed in the server install directory too.  Needed for the content patcher to automatically recompile modules on updates (required, or else the module could break after a content patch).&lt;br /&gt;
&lt;br /&gt;
=== NWNx4 Folder Files ===&lt;br /&gt;
* '''NWNx4_Hook.dll''' -- Allows script hooking in the first place.&lt;br /&gt;
* '''NWNScriptCompiler.exe -- Required to allow the content patcher to recompile a module. Take from AdvancedScriptCompiler\NWNScriptCompiler.exe on the ACR repository.&lt;br /&gt;
* '''xp_AuroraServerNWScript.dll''' -- Script improvements, C# support, allows workarounds of engine limitations.&lt;br /&gt;
* '''xp_bugfix.dll''' -- Bug fixes&lt;br /&gt;
* '''xp_craft.dll''' -- Customization of items during live play&lt;br /&gt;
* '''xp_mysql.dll''' -- Allows communication with SQL databases&lt;br /&gt;
* '''xp_objectattributes.dll''' -- Allows the modification of creatures during live play&lt;br /&gt;
* '''xp_ServerVault.dll''' -- Allows vault reads / writes to occur without stopping the main server process&lt;br /&gt;
* '''xp_srvadmin.dll''' -- Allows scripts to carry out server administration actions.&lt;br /&gt;
* '''xp_system.dll''' -- &lt;br /&gt;
* '''xp_time.dll''' --  &lt;br /&gt;
* '''MySql.Data.dll''' -- MySQL client library for CLR scripts.&lt;br /&gt;
* '''madChook.dll''' --&lt;br /&gt;
* '''xp_fastboot.dll''' --&lt;br /&gt;
* '''xp_profiler_Hialmar.dll''' --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As MySql.Data.dll is sometimes regarded as a remote assembly by Windows, you newer versions of windows may need to unblock the assembly. To do this, right click, pick properties, and then on the General tab, look for an Unblock button. If there is one, click it; if there is not, it's not being so regarded.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* AuroraServerNWScript.ini&lt;br /&gt;
*: &amp;lt;code&amp;gt;AllowManagedScripts=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* xp_craft.ini&lt;br /&gt;
** Set the database directory to proper location of the Campaign Database on the machine&lt;br /&gt;
* AuroraServerVault.ini&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, players will be unable to see their vaults.&lt;br /&gt;
** Typical configuration is to set LocalServerVaultPath=C:\NWN2User\servervault , RemoteServerVaultPath=C:\NWN2User\remotevault , SpoolPath=C:\NWN2User\servervaultspool. All three of these can be anywhere, so long as it is clear to anyone doing maintenance what they are (&amp;quot;remote vault&amp;quot; is where bics will be downloaded to for verification, &amp;quot;spool&amp;quot; is where saved bics will be staged for upload, and &amp;quot;local server vault&amp;quot; is the directory from which characters will be played).&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, the server will default to inappropriate settings (such as PvP, download server, or custom GUIs) or requiring the module to be started manually after nwn2server.exe stops.&lt;br /&gt;
** Remember to ensure that the directories specified in the config file exist!  They have to be created manually (except for the LocalServerVaultPath which is automatically created by nwn2server.exe, though it can be manually created safely).  If the directories don't all exist, the vault won't work correctly and players will not be able to log in.&lt;br /&gt;
* nwnx.ini&lt;br /&gt;
** The ACR requires a temporary directory to run. It can be anywhere that the user who runs the NWNx4 process can write to. It is set in nwn2temp&lt;br /&gt;
* DatabaseConnector.ini&lt;br /&gt;
** DatabaseConnector has only one setting in it, which should look something like:&lt;br /&gt;
*** CommandLine=-batch -L 3306:127.0.0.1:3306 -x -a -T -2 -noagent -N -i C:\NWNX4\ssh.ppk alfa@sql.alandfaraway.info&lt;br /&gt;
*** C:\NWNX4\ssh.ppk is the private key that you're specified for this server.&lt;br /&gt;
**** To create a key pair, use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuttyGen] to create a new key with all of the default settings.&lt;br /&gt;
**** Save the private key to your NWNx4 directory, and specify that location in the command line&lt;br /&gt;
**** Use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTy] to connect to alfa@sql.alandfaraway.info (as an HDM, you should have credentials for this) and edit (pico is the Linux command) .\alfa\.ssh\authorized_keys to add the public key to the bottom. Then, run (Windows+R) &amp;quot;&amp;lt;file location of putty&amp;gt; alfa@sql.alandfaraway.info -i &amp;lt;file location of your public key&amp;gt;&amp;quot; -- you will be prompted asking if you want to cache the public key from the server you're connecting to. Pick &amp;quot;yes&amp;quot; and close the connection.&lt;br /&gt;
* xp_mysql.ini&lt;br /&gt;
** Set the database credentials up as per standard for the central server.  TA, IA, or tech team can help provide credentials.  Use StandardQueryLog.txt (formerly xp_mysql.txt) to troubleshoot database connectivity or query problems.&lt;br /&gt;
** Set server = localhost to use the DatabaseConnector managed tunnel (all servers should generally use this).  If a Linux sshfs VM is in use instead, set server = linuxhost where linuxhost is the address of the Linux VM (this method is deprecated).&lt;br /&gt;
&lt;br /&gt;
If running multiple servers on one machine, the above configs need to change slightly. In DatabaseConnector.ini, change &amp;quot;3306:127.0.0.1:3306&amp;quot; to &amp;quot;3307:127.0.0.1:3306&amp;quot; and in xp_mysql.ini change &amp;quot;localhost&amp;quot; to &amp;quot;localhost;port=3307&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Installation checklist =&lt;br /&gt;
See [[Virtual Machine Setup]] for an end to end checklist for configuring a game server from scratch, using this guide for reference.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4005</id>
		<title>Basic Host Requirements</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Basic_Host_Requirements&amp;diff=4005"/>
				<updated>2024-10-20T01:30:48Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
ALFA strongly recommends that all game servers run a 64-bit OS for the operating system that runs nwn2server. A 32-bit OS does not provide enough address space for many modules to function reliably when hosted by nwn2server.&lt;br /&gt;
&lt;br /&gt;
If nwn2server is hosted in a virtual machine, ALFA recommends that either [http://www.vmware.com/ VMware] or [http://www.microsoft.com/hyper-v/‎ Hyper-V] be used for the virtualization infrastructure. Both of these products have both been validated and are functional in production use for live servers.&lt;br /&gt;
&lt;br /&gt;
Specifically noted, VirtualBox should not be used or the game will not function properly, on account of bugs in VirtualBox's timer handling (often manifests as perception not working over time or other time-based systems in the game malfunctioning).&lt;br /&gt;
&lt;br /&gt;
It is preferred that the Windows version (Windows 8.1 or Windows Server 2012 R2 or higher are recommended) used to host the game server be a version that supports acting as a Remote Desktop Protocol (RDP) host, typically Professional (or higher) editions. Server editions also include Remote Desktop Protocol host functionality. RDP provides a superior remote administration experience as compared to VNC.&lt;br /&gt;
&lt;br /&gt;
The recommended memory size to allocate to a game server instance is 4GB. This may be adjusted based on the actual memory consumption of a module, but 2GB provides plenty of headroom for most of our servers.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)] - This will not show up as a service pack on install anymore&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=40784 Microsoft Visual C++ Redistributable Packages for Visual Studio 2013]&lt;br /&gt;
* [http://support.microsoft.com/kb/968929/en-us Windows Management Framework Core] -- For operating systems older than Windows 7. Only need Windows PowerShell 2.0.&lt;br /&gt;
&lt;br /&gt;
= NWNx4 =&lt;br /&gt;
ALFA uses [https://neverwintervault.org/project/nwn2/other/nwnx4-v109 NWNx4] to host all of its live servers.&lt;br /&gt;
&lt;br /&gt;
While this document cannot replace the documentation provided with NWNx4, a brief explanation can be offered: NWNx4 is an application which runs alongside the nwn2server application, communicating with, running processes for, and altering the data within to achieve functionality which cannot be created without such means.&lt;br /&gt;
&lt;br /&gt;
The NWNx4 application works with a number of community-generated plugins-- libraries of functions and hooks, which are either called from the NWN scripting language or which intercept standard functions or functionality to correct bugs-- which are required for the proper function of [[ALFA Core Rules | ALFA's core ruleset]].&lt;br /&gt;
&lt;br /&gt;
== ACR plugin downloads ==&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwn2server%20directory nwn2server directory] -- These files go in the same folder as nwn2server.exe.&lt;br /&gt;
* [https://github.com/ALandFarAway/ALFA-Base-Resources/tree/master/Server_Files/nwnx4%20directory nwnx4 directory] -- These files go into your NWNx4 folder.&lt;br /&gt;
&lt;br /&gt;
NWNx4 is configured through the nwnx.ini file, which is plain text and contains help text to describe the function of each setting, which is installed to the NWNx4 install directory. Once configured, a server is run through NWNx4 by running one of the NWNx4 executables. The started application will also start nwn2server.&lt;br /&gt;
&lt;br /&gt;
== Currently Used Plugins ==&lt;br /&gt;
=== Server Folder Files ===&lt;br /&gt;
* '''NWNScriptJIT.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''NWNScriptJITIntrinsics.dll''' -- NWScript JIT support, C# script support&lt;br /&gt;
* '''AuroraServerNetLayer.dll''' -- bug fixes&lt;br /&gt;
* '''NWNScriptCompiler.exe''' -- The script compiler should be somewhere in %PATH%, but it can be placed in the server install directory too.  Needed for the content patcher to automatically recompile modules on updates (required, or else the module could break after a content patch).&lt;br /&gt;
&lt;br /&gt;
=== NWNx4 Folder Files ===&lt;br /&gt;
* '''NWNx4_Hook.dll''' -- Allows script hooking in the first place.&lt;br /&gt;
* '''NWNScriptCompiler.exe -- Required to allow the content patcher to recompile a module. Take from AdvancedScriptCompiler\NWNScriptCompiler.exe on the ACR repository.&lt;br /&gt;
* '''xp_AuroraServerNWScript.dll''' -- Script improvements, C# support, allows workarounds of engine limitations.&lt;br /&gt;
* '''xp_bugfix.dll''' -- Bug fixes&lt;br /&gt;
* '''xp_craft.dll''' -- Customization of items during live play&lt;br /&gt;
* '''xp_mysql.dll''' -- Allows communication with SQL databases&lt;br /&gt;
* '''xp_objectattributes.dll''' -- Allows the modification of creatures during live play&lt;br /&gt;
* '''xp_ServerVault.dll''' -- Allows vault reads / writes to occur without stopping the main server process&lt;br /&gt;
* '''xp_srvadmin.dll''' -- Allows scripts to carry out server administration actions.&lt;br /&gt;
* '''xp_system.dll''' -- &lt;br /&gt;
* '''xp_time.dll''' --  &lt;br /&gt;
* '''MySql.Data.dll''' -- MySQL client library for CLR scripts.&lt;br /&gt;
* '''madChook.dll''' --&lt;br /&gt;
* '''xp_fastboot.dll''' --&lt;br /&gt;
* '''xp_profiler_Hialmar.dll''' --&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As MySql.Data.dll is sometimes regarded as a remote assembly by Windows, you newer versions of windows may need to unblock the assembly. To do this, right click, pick properties, and then on the General tab, look for an Unblock button. If there is one, click it; if there is not, it's not being so regarded.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
* AuroraServerNWScript.ini&lt;br /&gt;
*: &amp;lt;code&amp;gt;AllowManagedScripts=1&amp;lt;/code&amp;gt;&lt;br /&gt;
* xp_craft.ini&lt;br /&gt;
** Set the database directory to proper location of the Campaign Database on the machine&lt;br /&gt;
* AuroraServerVault.ini&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, players will be unable to see their vaults.&lt;br /&gt;
** Typical configuration is to set LocalServerVaultPath=C:\NWN2User\servervault , RemoteServerVaultPath=C:\NWN2User\remotevault , SpoolPath=C:\NWN2User\servervaultspool. All three of these can be anywhere, so long as it is clear to anyone doing maintenance what they are (&amp;quot;remote vault&amp;quot; is where bics will be downloaded to for verification, &amp;quot;spool&amp;quot; is where saved bics will be staged for upload, and &amp;quot;local server vault&amp;quot; is the directory from which characters will be played).&lt;br /&gt;
** The text within the configuration file explains how to configure the plugin. If this configuration fails, the server will default to inappropriate settings (such as PvP, download server, or custom GUIs) or requiring the module to be started manually after nwn2server.exe stops.&lt;br /&gt;
** Remember to ensure that the directories specified in the config file exist!  They have to be created manually (except for the LocalServerVaultPath which is automatically created by nwn2server.exe, though it can be manually created safely).  If the directories don't all exist, the vault won't work correctly and players will not be able to log in.&lt;br /&gt;
* nwnx.ini&lt;br /&gt;
** The ACR requires a temporary directory to run. It can be anywhere that the user who runs the NWNx4 process can write to. It is set in nwn2temp&lt;br /&gt;
* DatabaseConnector.ini&lt;br /&gt;
** DatabaseConnector has only one setting in it, which should look something like:&lt;br /&gt;
*** CommandLine=-batch -L 3306:127.0.0.1:3306 -x -a -T -2 -noagent -N -i C:\NWNX4\ssh.ppk alfa@sql.alandfaraway.info&lt;br /&gt;
*** C:\NWNX4\ssh.ppk is the private key that you're specified for this server.&lt;br /&gt;
**** To create a key pair, use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuttyGen] to create a new key with all of the default settings.&lt;br /&gt;
**** Save the private key to your NWNx4 directory, and specify that location in the command line&lt;br /&gt;
**** Use [http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html PuTTy] to connect to alfa@sql.alandfaraway.info (as an HDM, you should have credentials for this) and edit (pico is the Linux command) .\alfa\.ssh\authorized_keys to add the public key to the bottom. Then, run (Windows+R) &amp;quot;&amp;lt;file location of putty&amp;gt; alfa@sql.alandfaraway.info -i &amp;lt;file location of your public key&amp;gt;&amp;quot; -- you will be prompted asking if you want to cache the public key from the server you're connecting to. Pick &amp;quot;yes&amp;quot; and close the connection.&lt;br /&gt;
* xp_mysql.ini&lt;br /&gt;
** Set the database credentials up as per standard for the central server.  TA, IA, or tech team can help provide credentials.  Use StandardQueryLog.txt (formerly xp_mysql.txt) to troubleshoot database connectivity or query problems.&lt;br /&gt;
** Set server = localhost to use the DatabaseConnector managed tunnel (all servers should generally use this).  If a Linux sshfs VM is in use instead, set server = linuxhost where linuxhost is the address of the Linux VM (this method is deprecated).&lt;br /&gt;
&lt;br /&gt;
If running multiple servers on one machine, the above configs need to change slightly. In DatabaseConnector.ini, change &amp;quot;3306:127.0.0.1:3306&amp;quot; to &amp;quot;3307:127.0.0.1:3306&amp;quot; and in xp_mysql.ini change &amp;quot;localhost&amp;quot; to &amp;quot;localhost;port=3307&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Installation checklist =&lt;br /&gt;
See [[Virtual Machine Setup]] for an end to end checklist for configuring a game server from scratch, using this guide for reference.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4004</id>
		<title>Virtual Machine Setup</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4004"/>
				<updated>2024-10-11T19:53:23Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: clarifing the meaning of SG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This document describes in rough detail the recommended checklist for setting up a new game server host VM in the standard configuration.  This configuration is suitable for running nwn2server.exe as a limited user account.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
.NET 3.5 and the DirectX End-User Runtime are optional unless the toolset will be run locally on the game server host machine.&lt;br /&gt;
&lt;br /&gt;
* If running the toolset on the host is desired (optional), enable .NET 3.5 in Add/Remove Windows Features before installing DirectX&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX End-User Runtime]  (required only if the toolset will be used to stage content on the game server)&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=17851 Microsoft .NET Framework 4]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
# Install Windows Server (or Windows 10)&lt;br /&gt;
# Copy standard tools over:&lt;br /&gt;
## [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty]&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create Security Group &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create user &amp;quot;NWN2Server&amp;quot;&lt;br /&gt;
## Add to &amp;quot;NWN2 Servers&amp;quot; SG (if using Windows Server)&lt;br /&gt;
# Create C:\NWN2, xcopy NWN2 install over (or just install NWN2)&lt;br /&gt;
## Grant &amp;quot;NWN2 Servers&amp;quot; create files, create folders to &amp;quot;This folder only&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant &amp;quot;NWN2 Admins&amp;quot; modify to folder, subfolders, and files (if using Windows Server)&lt;br /&gt;
## Import NWN2.reg (only if not installing NWN2)&lt;br /&gt;
# Create C:\NWN2User&lt;br /&gt;
## Grant full control to &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Run this in a command window: &amp;lt;code&amp;gt;Runas /profile /user:NWN2Server cmd.exe&amp;lt;/code&amp;gt; (or log in as the NWN2Server user and open up a command window)&lt;br /&gt;
## &amp;lt;code&amp;gt;cd /d &amp;quot;%userprofile%\Documents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;mklink /j &amp;quot;Neverwinter Nights 2&amp;quot; C:\NWN2User&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;putty -ssh alfa@sql.alandfaraway.info&amp;lt;/code&amp;gt;&lt;br /&gt;
### Confirm and accept central server public key for vault tunnel to work&lt;br /&gt;
# Create C:\NWNX4, xcopy NWNX4 installation over (or just simply install it)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Servers&amp;quot; for: (if using Windows Server)&lt;br /&gt;
### AuroraServerNWScript.log&lt;br /&gt;
### AuroraServerVault.log&lt;br /&gt;
### nwnx.txt&lt;br /&gt;
### nwnx_controller.txt&lt;br /&gt;
### StandardQueryLog.txt&lt;br /&gt;
### xp_mysql.txt&lt;br /&gt;
### xp_bugfix.txt&lt;br /&gt;
### xp_objectattributes.txt&lt;br /&gt;
### xp_srvadmin.txt&lt;br /&gt;
### xp_system.txt&lt;br /&gt;
### xp_time.txt&lt;br /&gt;
# Create C:\Users\Public\Desktop\Credentials.txt&lt;br /&gt;
# Copy standard links to C:\Users\Public\Desktop&lt;br /&gt;
# Copy standard links to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Tools&lt;br /&gt;
# Copy standard scripts to C:\Scripts&lt;br /&gt;
# Copy standard NWN2 tools to C:\Tools&lt;br /&gt;
# Copy NWNServerConsole to C:\NWN2\Console&lt;br /&gt;
# Fix PowerShell signing&lt;br /&gt;
## Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Install [http://git-scm.com/ Git]    You need this to get module updates&lt;br /&gt;
# Install [https://filezilla-project.org/ FileZilla]&lt;br /&gt;
# Install [http://msdn.microsoft.com/en-us/windows/apps/br229516 Win8 Performance Toolkit] or [https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ Windows 10 Performance Toolkit]&lt;br /&gt;
# Install [http://www.7-zip.org/ 7-zip]    You need this to be able to unpack the haks when they are downloaded to the server for updates&lt;br /&gt;
# Install [http://gvim.en.softonic.com/ gvim]&lt;br /&gt;
# Install WinDbg for [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 7] or [http://msdn.microsoft.com/en-US/windows/desktop/bg162891 Windows 8.1] or [https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Windows 10].&lt;br /&gt;
# Set &amp;lt;code&amp;gt;_NT_SYMBOL_PATH&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NWNX4 Installation ==&lt;br /&gt;
# nwnx4_controller.exe -installservice&lt;br /&gt;
# Configure NWNX4-1 service to run as the &amp;quot;NWN2Server&amp;quot; user:&lt;br /&gt;
## If using a Microsoft account (user@email) for the server user, use Computername\Username where Username is the value that %USERNAME% shows from &amp;quot;echo %USERNAME%&amp;quot; in cmd.exe and Computername is the value that %COMPUTERNAME% shows from &amp;quot;echo %COMPUTERNAME%&amp;quot; in cmd.exe.  Also, in this case, you have to manually grant this user &amp;quot;Log on as a service&amp;quot; rights by going to Local Security Policy, Local Policies, User Rights Assignment, Log on as a service, and adding Computername\Username to the list.  This only applies to accounts set up as a Microsoft account initially, not to local accounts that a Microsoft account was connected to afterwards.&lt;br /&gt;
# Get SID for NWN2Server user with PowerShell:  (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;([wmi]&amp;quot;win32_Group.Domain='$env:ComputerName',Name='NWN2 Admins'&amp;quot;).sid&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set SD on nwnx4-1 service to allow NWN2 Admins to start/stop: (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;sc sdset nwnx4-1 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWP;;;&amp;lt;NWN2 Admins SID from above command&amp;gt;)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install SSH private key to C:\NWNX4\sshfs.ppk&lt;br /&gt;
# Add SSH public key to alfa@sql.alandfaraway.org:~/.ssh/authorized_keys&lt;br /&gt;
# Set configuration in C:\NWNX4\nwnx.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerNWScript.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\xp_mysql.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\DatabaseConnector.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerVault.ini&lt;br /&gt;
&lt;br /&gt;
== Module preparation ==&lt;br /&gt;
# If the module is being cloned directly from source control or copied from a very old backup, it may be necessary to recompile the module against a current alfa2_acr.hak to ensure that the database connection (and self-update) work at module startup.  If the module never loads acr_databaseconnector in AuroraServerNWScript.log and no &amp;quot;DatabaseConnector&amp;quot; log messages in nwserverLog1.txt are seen before the ACR_OnModuleLoad: log line then this may be the problem (but also check for errors in AuroraServerNWScript.log that might indicate a misconfigured NWScript Accelerator installation).&lt;br /&gt;
# Make sure that alfa2_acr.hak is recent.  An extremely old build predating the DatabaseConnector integration may not be able to self-update the rest of the ACR.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Fixes for some problems encountered during server deployment are listed here.&lt;br /&gt;
# Module didn't load or server doesn't start up?&lt;br /&gt;
## Look at the server log file and C:\NWNX4\AuroraServerNWScript.log for errors/exceptions for next troubleshooting steps.&lt;br /&gt;
# Database doesn't connect, or many exceptions in server log about the database, or PCs (but not DM's) are booted at log on?&lt;br /&gt;
## Make sure that plink.exe was run once as the user that the NWNX4-1 service runs as in order to accept the SSH key of the central server.&lt;br /&gt;
# Monitor Server Uptime script closes immediately?&lt;br /&gt;
## Make sure that the following command was run from an administrator privileged PowerShell session: Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Game server starts with NWNX4_GUI.exe but not as a service?&lt;br /&gt;
## Make sure that the service is running as the right user.  Go to services.msc and configure it to run as the user whose %userprofile%\Documents\Neverwinter Nights 2 has the module, server vault, etc. present.&lt;br /&gt;
# Toolset doesn't start/work properly?&lt;br /&gt;
## Make sure that .NET Framework v3.5 (sometimes called .NET Framework v2.0) is installed, and then the DirectX End-User Runtime is installed.  If the DirectX End-User Runtime was installed first, it's installer has to be re-run after installing .NET Framework v3.5.&lt;br /&gt;
# Database or scripts don't work, or NWNX4 plugins didn't load?&lt;br /&gt;
## Make sure that all Visual C++ and .NET runtime dependencies were installed.&lt;br /&gt;
## Make sure that NWNScriptJIT.dll, NWNScriptJITIntrinsics.dll are installed in the NWN2 installation directory (not necessarily the NWNX4 installation directory).&lt;br /&gt;
## Make sure that plink.exe was run once as the service user (see above).&lt;br /&gt;
# Using a Microsoft account for the service account and the service fails to start with &amp;quot;The service dependency failed to start.&amp;quot;?&lt;br /&gt;
## Configure the service to log on using Computername\Username and ensure that from Local Security Policy, Local Policies, User Rights Assignment, that Computername\Username was granted &amp;quot;Log on as a service&amp;quot; rights.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4003</id>
		<title>Virtual Machine Setup</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Virtual_Machine_Setup&amp;diff=4003"/>
				<updated>2024-09-24T01:39:40Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Process */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This document describes in rough detail the recommended checklist for setting up a new game server host VM in the standard configuration.  This configuration is suitable for running nwn2server.exe as a limited user account.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
.NET 3.5 and the DirectX End-User Runtime are optional unless the toolset will be run locally on the game server host machine.&lt;br /&gt;
&lt;br /&gt;
* If running the toolset on the host is desired (optional), enable .NET 3.5 in Add/Remove Windows Features before installing DirectX&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=35 DirectX End-User Runtime]  (required only if the toolset will be used to stage content on the game server)&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=17851 Microsoft .NET Framework 4]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26347 Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
* [http://www.microsoft.com/en-us/download/details.aspx?id=26999 Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
# Install Windows Server (or Windows 10)&lt;br /&gt;
# Copy standard tools over:&lt;br /&gt;
## [https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html putty]&lt;br /&gt;
# Create SG &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create SG &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Create user &amp;quot;NWN2Server&amp;quot;&lt;br /&gt;
## Add to &amp;quot;NWN2 Servers&amp;quot; SG (if using Windows Server)&lt;br /&gt;
# Create C:\NWN2, xcopy NWN2 install over (or just install NWN2)&lt;br /&gt;
## Grant &amp;quot;NWN2 Servers&amp;quot; create files, create folders to &amp;quot;This folder only&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant &amp;quot;NWN2 Admins&amp;quot; modify to folder, subfolders, and files (if using Windows Server)&lt;br /&gt;
## Import NWN2.reg (only if not installing NWN2)&lt;br /&gt;
# Create C:\NWN2User&lt;br /&gt;
## Grant full control to &amp;quot;NWN2 Servers&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
# Run this in a command window: &amp;lt;code&amp;gt;Runas /profile /user:NWN2Server cmd.exe&amp;lt;/code&amp;gt; (or log in as the NWN2Server user and open up a command window)&lt;br /&gt;
## &amp;lt;code&amp;gt;cd /d &amp;quot;%userprofile%\Documents&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;mklink /j &amp;quot;Neverwinter Nights 2&amp;quot; C:\NWN2User&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;putty -ssh alfa@sql.alandfaraway.info&amp;lt;/code&amp;gt;&lt;br /&gt;
### Confirm and accept central server public key for vault tunnel to work&lt;br /&gt;
# Create C:\NWNX4, xcopy NWNX4 installation over (or just simply install it)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Admins&amp;quot; (if using Windows Server)&lt;br /&gt;
## Grant modify/execute/list/read/write to &amp;quot;NWN2 Servers&amp;quot; for: (if using Windows Server)&lt;br /&gt;
### AuroraServerNWScript.log&lt;br /&gt;
### AuroraServerVault.log&lt;br /&gt;
### nwnx.txt&lt;br /&gt;
### nwnx_controller.txt&lt;br /&gt;
### StandardQueryLog.txt&lt;br /&gt;
### xp_mysql.txt&lt;br /&gt;
### xp_bugfix.txt&lt;br /&gt;
### xp_objectattributes.txt&lt;br /&gt;
### xp_srvadmin.txt&lt;br /&gt;
### xp_system.txt&lt;br /&gt;
### xp_time.txt&lt;br /&gt;
# Create C:\Users\Public\Desktop\Credentials.txt&lt;br /&gt;
# Copy standard links to C:\Users\Public\Desktop&lt;br /&gt;
# Copy standard links to C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Tools&lt;br /&gt;
# Copy standard scripts to C:\Scripts&lt;br /&gt;
# Copy standard NWN2 tools to C:\Tools&lt;br /&gt;
# Copy NWNServerConsole to C:\NWN2\Console&lt;br /&gt;
# Fix PowerShell signing&lt;br /&gt;
## Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Install [http://git-scm.com/ Git]    You need this to get module updates&lt;br /&gt;
# Install [https://filezilla-project.org/ FileZilla]&lt;br /&gt;
# Install [http://msdn.microsoft.com/en-us/windows/apps/br229516 Win8 Performance Toolkit] or [https://docs.microsoft.com/en-us/windows-hardware/test/wpt/ Windows 10 Performance Toolkit]&lt;br /&gt;
# Install [http://www.7-zip.org/ 7-zip]    You need this to be able to unpack the haks when they are downloaded to the server for updates&lt;br /&gt;
# Install [http://gvim.en.softonic.com/ gvim]&lt;br /&gt;
# Install WinDbg for [http://www.microsoft.com/en-us/download/details.aspx?id=8279 Windows 7] or [http://msdn.microsoft.com/en-US/windows/desktop/bg162891 Windows 8.1] or [https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Windows 10].&lt;br /&gt;
# Set &amp;lt;code&amp;gt;_NT_SYMBOL_PATH&amp;lt;/code&amp;gt; environment variable to &amp;lt;code&amp;gt;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NWNX4 Installation ==&lt;br /&gt;
# nwnx4_controller.exe -installservice&lt;br /&gt;
# Configure NWNX4-1 service to run as the &amp;quot;NWN2Server&amp;quot; user:&lt;br /&gt;
## If using a Microsoft account (user@email) for the server user, use Computername\Username where Username is the value that %USERNAME% shows from &amp;quot;echo %USERNAME%&amp;quot; in cmd.exe and Computername is the value that %COMPUTERNAME% shows from &amp;quot;echo %COMPUTERNAME%&amp;quot; in cmd.exe.  Also, in this case, you have to manually grant this user &amp;quot;Log on as a service&amp;quot; rights by going to Local Security Policy, Local Policies, User Rights Assignment, Log on as a service, and adding Computername\Username to the list.  This only applies to accounts set up as a Microsoft account initially, not to local accounts that a Microsoft account was connected to afterwards.&lt;br /&gt;
# Get SID for NWN2Server user with PowerShell:  (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;([wmi]&amp;quot;win32_Group.Domain='$env:ComputerName',Name='NWN2 Admins'&amp;quot;).sid&amp;lt;/code&amp;gt;&lt;br /&gt;
# Set SD on nwnx4-1 service to allow NWN2 Admins to start/stop: (if using Windows Server)&lt;br /&gt;
::: &amp;lt;code&amp;gt;sc sdset nwnx4-1 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWP;;;&amp;lt;NWN2 Admins SID from above command&amp;gt;)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)&amp;lt;/code&amp;gt;&lt;br /&gt;
# Install SSH private key to C:\NWNX4\sshfs.ppk&lt;br /&gt;
# Add SSH public key to alfa@sql.alandfaraway.org:~/.ssh/authorized_keys&lt;br /&gt;
# Set configuration in C:\NWNX4\nwnx.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerNWScript.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\xp_mysql.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\DatabaseConnector.ini&lt;br /&gt;
# Set configuration in C:\NWNX4\AuroraServerVault.ini&lt;br /&gt;
&lt;br /&gt;
== Module preparation ==&lt;br /&gt;
# If the module is being cloned directly from source control or copied from a very old backup, it may be necessary to recompile the module against a current alfa2_acr.hak to ensure that the database connection (and self-update) work at module startup.  If the module never loads acr_databaseconnector in AuroraServerNWScript.log and no &amp;quot;DatabaseConnector&amp;quot; log messages in nwserverLog1.txt are seen before the ACR_OnModuleLoad: log line then this may be the problem (but also check for errors in AuroraServerNWScript.log that might indicate a misconfigured NWScript Accelerator installation).&lt;br /&gt;
# Make sure that alfa2_acr.hak is recent.  An extremely old build predating the DatabaseConnector integration may not be able to self-update the rest of the ACR.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
Fixes for some problems encountered during server deployment are listed here.&lt;br /&gt;
# Module didn't load or server doesn't start up?&lt;br /&gt;
## Look at the server log file and C:\NWNX4\AuroraServerNWScript.log for errors/exceptions for next troubleshooting steps.&lt;br /&gt;
# Database doesn't connect, or many exceptions in server log about the database, or PCs (but not DM's) are booted at log on?&lt;br /&gt;
## Make sure that plink.exe was run once as the user that the NWNX4-1 service runs as in order to accept the SSH key of the central server.&lt;br /&gt;
# Monitor Server Uptime script closes immediately?&lt;br /&gt;
## Make sure that the following command was run from an administrator privileged PowerShell session: Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Unrestricted -Force&lt;br /&gt;
# Game server starts with NWNX4_GUI.exe but not as a service?&lt;br /&gt;
## Make sure that the service is running as the right user.  Go to services.msc and configure it to run as the user whose %userprofile%\Documents\Neverwinter Nights 2 has the module, server vault, etc. present.&lt;br /&gt;
# Toolset doesn't start/work properly?&lt;br /&gt;
## Make sure that .NET Framework v3.5 (sometimes called .NET Framework v2.0) is installed, and then the DirectX End-User Runtime is installed.  If the DirectX End-User Runtime was installed first, it's installer has to be re-run after installing .NET Framework v3.5.&lt;br /&gt;
# Database or scripts don't work, or NWNX4 plugins didn't load?&lt;br /&gt;
## Make sure that all Visual C++ and .NET runtime dependencies were installed.&lt;br /&gt;
## Make sure that NWNScriptJIT.dll, NWNScriptJITIntrinsics.dll are installed in the NWN2 installation directory (not necessarily the NWNX4 installation directory).&lt;br /&gt;
## Make sure that plink.exe was run once as the service user (see above).&lt;br /&gt;
# Using a Microsoft account for the service account and the service fails to start with &amp;quot;The service dependency failed to start.&amp;quot;?&lt;br /&gt;
## Configure the service to log on using Computername\Username and ensure that from Local Security Policy, Local Policies, User Rights Assignment, that Computername\Username was granted &amp;quot;Log on as a service&amp;quot; rights.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4001</id>
		<title>Building Creatures</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=4001"/>
				<updated>2023-10-29T20:05:12Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Localized Name */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
First, make sure you need to build it! The [[ALFA Base Resources]] and [[ALFA Campaign Folder]] projects come with many creatures NWN2 has a visual representation for, so in most cases you don't need to build anything. The [[ALFA Spawn System]] also includes functions for setting the name of spawned creatures, so there is often times no reason to create a creature on your own. The fewer creatures in your mod, the smaller and less bloated it will be.&lt;br /&gt;
&lt;br /&gt;
Assuming the creature does need to be created, go ahead and do so as you normally would in the toolset. A few things are different in ALFA, however. Most of this just applies to creatures which are statically spawned, but its probably a good read for any builder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Guidelines ==&lt;br /&gt;
Creatures are expected to follow canon specifications as closely as the toolset allows. If you must deviate on the basis of game mechanics, play-testing should be used to make sure the altered creature's CR is set properly. Always post any deviations from canon specifications on our NWN2 tech forums so that others may comment or follow them for consistency's sake. When setting clerical domains and alignment, be sure to base things off of the most popular deity for the creature type. When setting spells and equipment, be sure and follow FR's lore and canon if at all possible. Our first priority is game balance, and then following FR lore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
The following conventions will need to be used in naming creature blueprints to avoid any conflicts with other blueprints and to ensure that all content works properly with scripts:&lt;br /&gt;
&lt;br /&gt;
=== Localized Name ===&lt;br /&gt;
Uncommon, Creature names should not be revealed to players in-game, unless a sufficiently unique creature or equipment model does not exist for the creature being created. In such cases, choose a one or two word descriptive name, but be sure you reveal as little of the meta information about the creature as possible. Size based descriptive words are not necessary since creatues can be scaled in NWN2 to properly reflect their size.  However, common creatures goblins, kobolds, skeletons etc most PCs would know what these are anyway so its ok to use their base name.  We never got any scripting done to reveal a creatures true designation so they cannot make a skill check and have the name revealed.&lt;br /&gt;
&lt;br /&gt;
Putting creature names inside &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; will make them visible only to builders. However, make sure you put the bracketed part behind a Descriptive name or DMs cannot see these in game. This will help builders distinguish between multiple blueprints of the same type and convey important reference information at a glance without revealing any of the information to players in the game. Generally, a creatures name or race, social role or class, gender (if applicable), and challenge rating are useful characteristics to record within {}.  Make sure however that you do not start the name with the bracketed info, doing so will make it so the DM cannot read the creature in creation menu or find them in the area.&lt;br /&gt;
&lt;br /&gt;
: 'Example: &amp;lt;code&amp;gt;Larger Kobold {Chieftain CR1}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Male Human {Barbarian CR3}&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Template, ResRef, and Tag ===&lt;br /&gt;
: ''See also: [[ResRef]], [[Tag]], and [[Template]]''&lt;br /&gt;
The primary purpose of tag and resref naming conventions is to prevent any naming conflicts. A secondary purpose is to describe the creature in some way. All global creature blueprints must begin with the &amp;quot;abr_cr&amp;quot; prefix to designate them as global blueprints. Server specific blueprints should begin with a 3 digit server number in place of the &amp;quot;abr&amp;quot;, so &amp;quot;001_cr&amp;quot; for example. For every subcategory, add a two letter acronym delimited with underscores followed lastly by a descriptive name for the creature itself. This helps to quickly locate blueprints when all we have is its resref. To illustrate, here are a few examples:&lt;br /&gt;
&lt;br /&gt;
: ''Example: A global humanoid creature blueprint: &amp;lt;code&amp;gt;abr_cr_hu_koboldchieftain&amp;lt;/code&amp;gt;''&lt;br /&gt;
: ''Example: A server NPC blueprint on server 01: &amp;lt;code&amp;gt;001_cr_np_zhents_fzoul&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Descriptions ===&lt;br /&gt;
A creature's description should be the PHYSICAL description in the creature's sourcebook entry, plus anything important a PC should notice specifically about the creature that isn't obvious by looking at it in-game. It should not flat-out identify what the creature's textbook name is, however.&lt;br /&gt;
: ''Good example: &amp;quot;This tall, thin humanoid is defined by sleek, alien features. Its gray skin smells of decay.&amp;quot;''&lt;br /&gt;
: ''Bad example: &amp;quot;A [[Bodak]], looking around for prey.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Comment ===&lt;br /&gt;
To identify and track blueprint versions, it's best to write your name and the date you modified the blueprint in the comments area. &lt;br /&gt;
: ''Example: Created By: John Doe, Date Modified: 2006-12-20''&lt;br /&gt;
&lt;br /&gt;
For global blueprints, you should also include a link to this wiki page so builders that are unfamiliar with conventions or configuration options can easily find them.&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
The default basemod creatures should already have these handlers in place, so if you are copying an existing blueprint, you probably don't need to do anything here. To start off with, make sure the creature's event scripts are all set correctly. The default scripts are:&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onphysicallyattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_oninventorydisturbed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onendcombatround&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onblocked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onperception&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onrested&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspawnin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the lower-level creatures of a given race are always vastly more numerous than their higher-level bretheren. Make more versions of them, especially the level 1 warriors, with different sorts of appearances and equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior ==&lt;br /&gt;
Behavioral information for each creature should be present on the creature in the form of a non-droppable, non-pickpocketable blank scroll named after the creature or its race/organization. The tag and resref of the item should be &amp;lt;code&amp;gt;abr_it_cd_'''&amp;lt;description&amp;gt;'''&amp;lt;/code&amp;gt;. Put as much information here as you can stand, but it should all come from canon sources. You'd typically only need one information scroll per race or organization (only one for [[Goblin | goblins]], one for [[Kobold | kobolds]], one for [[Zhentarim]], etc.), unless the creature is unique.&lt;br /&gt;
&lt;br /&gt;
=== Behavior Types ===&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
If the creature is expected to fight at any point, determining how we expect the creature to behave in a fight is also important. Create a local string on the creature named &amp;lt;code&amp;gt;'''ACR_CREATURE_BEHAVIOR'''&amp;lt;/code&amp;gt;, and set the value of that string to one of the following values.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_TANK'''&amp;lt;/code&amp;gt; if you wish your creature to move to the front line and try to hold it. In narrow passages, tanks will attempt to clog the passage. In open fields, tanks will fan out to try to keep as many enemies as possible &amp;quot;covered&amp;quot; as evenly as possible.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_FLANK'''&amp;lt;/code&amp;gt; if you wish your creature to actively seek people who are fighting others, and to strike them in melee from behind.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SHOCK'''&amp;lt;/code&amp;gt; if you wish your creature to run in past the front line with reckless abandon, prioritizing &amp;quot;soft&amp;quot; enemy targets.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_BUFFS'''&amp;lt;/code&amp;gt; if you wish your creature to focus on support magic for allies. Or, opportunistically, healing.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MEDIC'''&amp;lt;/code&amp;gt; if you wish your creature to focus on healing magic for allies. Or, opportunistically, support magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SKIRMISH'''&amp;lt;/code&amp;gt; if you wish your creature to fight at range until enemies close, and then switching to melee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ARCHER'''&amp;lt;/code&amp;gt; if you wish your creature to only fight at range.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_CONTROL'''&amp;lt;/code&amp;gt; if you wish your creature to focus on special powers that alter the battlefield, attempting to use things like grease, entangle, and summon monster to stop enemies from getting around.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_NUKE'''&amp;lt;/code&amp;gt; if you wish your creature to use its strongest magical abilities to repeatedly hit the strongest enemy it can find.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MINDLESS'''&amp;lt;/code&amp;gt; if your creature is mindless, and fights fearlessly without strategy or concern for personal safety.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ANIMAL'''&amp;lt;/code&amp;gt; if your creature is an animal, and fights without strategy (but still doesn't want to die).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_COWARD'''&amp;lt;/code&amp;gt; if your creature is a coward, and runs away from conflict.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
A few things should be kept in mind when creating a creature's equipment. The first thing is, what drops? Generally its best if a creature drops all of its non-armor equipment, for realism's sake if nothing else. However, in many cases its best not to drop armor with a creature, especially if that creature is going to be used as a static spawn. Armor is heavy and expensive, so it presents stronger PCs with ways of gaining income while preventing weaker PCs from doing so, creating a wealth gap. Furthermore, its price means it sometimes adds significantly to the wealth of a spawns drop, possibly making the spawn drop more wealth than it should. Also, its rather logical that killing a creature will damage its armor reasonably often. Finally, removing armor from a corpse would be a time-consuming afair, and carrying it would not be easy. This would not be something done often (unless the armor is especially valuable or magical, which it shouldn't be anyway in the case of a static spawn).&lt;br /&gt;
&lt;br /&gt;
Now, about spawn drops. The good news is in most circumstances, you don't have to add loot to a creature for static spawns! If the value of the equipment the creature uses is reasonable, you probably don't have to think about loot at all. Loot is created automatically with scripts, based on many variables in an attempt to match up believable loot (if any) to your creature. The value of the loot is based off of the value of the creature's dropped equipment and its CR, so setting the CR correctly is vital. If the creature is a static spawn, please try to use this built-in loot system unless there is very good reason not to. If a spawn does not use this loot system, it may need to be updated if ALFA's wealth standards for static spawns change in the future.&lt;br /&gt;
&lt;br /&gt;
To disable the loot system, set the &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; local integer variable on the creature to a value of 1. If you want to modify the amount of loot droped, set the &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; local float variable to the desired value. This alters the creature's CR for the purposes of calculating loot drops (whether it is positive or negative). Setting it to 1.0 would produce loot as if the creature had a CR of 1 higher than it does, and setting it to -1.0 would produce the opposite effect, loot as if the creature was 1 CR point lower.&lt;br /&gt;
&lt;br /&gt;
Always set &amp;quot;Leave Lootable Corpse&amp;quot; to true, and &amp;quot;No Permanent Death&amp;quot; to true. Set the corpse decay time to 7200000.&lt;br /&gt;
&lt;br /&gt;
Note that regardless of these settings, all creatures always drop the items in their inventory which are flagged droppable. The loot system never actually removes items from any creature.&lt;br /&gt;
&lt;br /&gt;
Note that if the amount of wealth a creature drops (as set by the builder) exceeds the amount a static spawn of its CR should drop, a warning is printed out in the server's log file. Naturally if the creature isn't a static spawn, this can be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Challenge Rating ==&lt;br /&gt;
: ''See also: [[Challenge Rating]]''&lt;br /&gt;
Also known as &amp;quot;CR&amp;quot;, this is vital. Fortunately NWN2 usually gets a creature's CR close to what it should be on its own. Sometimes it doesn't however, so be sure to understand the concept of CR before proceding further.&lt;br /&gt;
&lt;br /&gt;
A creature's of a certain CR should roughly be as powerful as other creatures of the same CR included in ALFA's base creatures. Even if the creature is not spawned statically, the CR must be set correctly for DMs to be able to tell its relatively balance in a fight, and for XP to be awarded properly. If the creature is spawned statically, its loot will be generated based on its CR. If you don't think you know what a creatures CR should be, do some testing for yourself, or ask someone! A good way to test is to use some of your PCs (either controlled by their players or by yourself with their character files locally on your machine).&lt;br /&gt;
&lt;br /&gt;
Do NOT lower a creatures CR because you want to prevent farming abuse, or to lower a PC's rewards for slaying it. If PCs are gaining too much from a spawn of some sort which has its CR set correctly, the problem is in the way the spawn is set up and not the creature itself. Artificially lowered CRs are not only a good way to under-reward PCs for risking their lives, but sometimes lead to accidental PC deaths if the DM spawning the creatures doesn't know the true strength of the creature (until his PCs are face down in their own blood).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perception Range ==&lt;br /&gt;
If the creature's perception range is less than the PC's (ie less than &amp;quot;long&amp;quot;) by any meaningful margin, the exploitability of the spawn increases dramatically. For this reason, its generally best to set a creature's percept range to &amp;quot;long&amp;quot;. The &amp;quot;long&amp;quot; range has been adjusted to be slightly less than a PC's, allowing the PC to react to the monster without the computer having an advantage in reaction time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Scripting ==&lt;br /&gt;
Most people can skip this. If you're not using the standard AI scripts ALFA uses on creatures, you'll need to make sure you include ALFA's code into your scripts. You do this by including the file &amp;lt;code&amp;gt;'''[[acr_cre_events_i.nss]]'''&amp;lt;/code&amp;gt;, and calling a different function for each event type. These functions are:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpawn()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpellCastAt()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePhysicalAttacked()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDamaged()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDeath()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureBlockedByDoor()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureCombatRoundEnd()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureConversation()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDisturbed()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureHeartBeat()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureRested()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePerception()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureUserDefined()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its absolutely vital to the functioning of ALFA that these scripts are called on each of their events! So make sure they are in there.&lt;br /&gt;
&lt;br /&gt;
== Configuration Options ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
These are the additional configuration options allowed by the ACR. They are edited by changing local variables on the creature's blueprint.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is not given any loot drops by the loot system at all. If unset, it is.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; (float) This value modifies the creatures CR for the purposes of calculating the amount of loot dropped. If positive, it adds to the CR and increases the value of the loot dropped. If negative, it subtracts from the CR.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ABILITIES'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized ability scores. The blueprint is treated as the &amp;quot;average&amp;quot; for the resulting scores.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ALIGNMENT'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized alignment. The blueprint is treated as the &amp;quot;average&amp;quot; for this, and alignment will never differ from the blueprint by more than one step.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_ISUNDEAD'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, this creature will be considered undead for all scripting purposes. It will still need undead creature properties assigned.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_SPAWN_DAMAGED'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will not heal to full health upon spawn-in. This variable allows you to equip your monsters with creature items/equipment that provides health bonuses without them spawning harmed.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CREATURE_AQUATIC'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will be able to breath in or out of water, and be made to assume that its land speed is also its swim speed&lt;br /&gt;
&lt;br /&gt;
These options are available in NWN2 by default:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPECIAL_COMBAT_AI_SCRIPT'''&amp;lt;/code&amp;gt; (string) See the &amp;quot;x2_ai_demo&amp;quot; module for details.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPELL_RANDOM'''&amp;lt;/code&amp;gt; (integer) Setting this variable on a spellcaster creature will make its spelluse a bit more random, but their spell selection may not always be appropriate to the situation anymore.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_STEALTH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate stealth mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_SEARCH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate detect mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play mobile ambient animations after spawn. Use this if you want your creature to roam around the area attempting to use other objects. This simulates random movement.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT_IMMOBILE'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play immobile ambient animations after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X1_L_IMMUNE_TO_DISPEL'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature immune to dispel magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_IS_INCORPOREAL'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 on a creature to make it walk through other creatures.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_NUMBER_OF_ATTACKS'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_MAGIC'''&amp;lt;/code&amp;gt; (integer) The value of this variable is added to the chance that a creature will use magic in combat. Set to 100 for always, 0 for never.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_OFFENSE'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will use offensive abilities in combat. Set to 0 to make them flee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_COMPASSION'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will aid friendly creatures in combat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Considerations ==&lt;br /&gt;
* Set the creature's [[Challenge Rating | CR]] accurately.&lt;br /&gt;
* Unless there is a very good reason to, don't create static spawns with &amp;quot;save or die&amp;quot; spells or abilities. The most obvious of these are instant death spells or petrifications, but holdings, sleep spells, fear and confusion often qualify as well. ALFA has much slower advancement than the d20 rules were meant for, and with a 5% chance to fail any saving throw, &amp;quot;save or die&amp;quot; abilities can too-easily kill even powerful PCs with weak creatures.&lt;br /&gt;
* The above isn't so critical if static spawns with &amp;quot;save or die&amp;quot; abilities are avoidable. For example, basilisks can turn a creature to stone with a failed fort save. But they are also slow, lazy creatures, so often times anyone approaching within range of the basilisk's petrification attack is asking for it, and deserves no mercy.&lt;br /&gt;
* Unless there is good reason to, try not to make creatures who's power deviates too significantly from creatures of the same type in ALFA's standard pallet. Not only does this harm the believability and immersion in the world, but it causes some disgruntled PC deaths (&amp;quot;looked like a normal [[Kobold]] to me, but it had an [[Attack Bonus]] of +12?&amp;quot;).&lt;br /&gt;
* If you do make creatures with a significantly different power level from others of their type, make sure they have some visual difference from their kin so as to not surprise that party of PC1s with those nasty +12 AB kobolds.&lt;br /&gt;
* If you make a Fey, Elemental or Incorporeal Undead Creature, Check the ''''''Spirit Override'''''' box in the properties tab.  This allows the 'Chastise Spirits' ability to function properly.&lt;br /&gt;
* If you are making a creature that uses a vfx solely to show what it is like a Willowisp, use the Willowwisp appearance and set the vfx accordingly.  Do not use the Invisible Man appearance as it will not render the vfx ingame.&lt;br /&gt;
* If you are making a creature that is just armor or held weapons, use the invisible man appearance and equip the items you wish to have seen.&lt;br /&gt;
* If you want a creature to use its special abilities or a caster to use its spells only, you will want to set the variables of /X2_L_BEH_MAGIC = 100 /  X2_L_BEH_OFFENSE = between 1-5 / X2_SPELL_RANDOM =75.  This will get you a creature that uses its spells or abilites almost exclusively.  Adjust the X2_L_BEH_MAGIC down if you want the creature to only use its ability every few rounds and adjust the X2_L_BEH_OFFENSE up to use melee in between.&lt;br /&gt;
* Did I mention the CR must be set correctly?&lt;br /&gt;
* When in doubt, play test your creations! Its really all about play balance, and keeping the ALFA experience as consistent as possible between all our different builders with their own assumptions about how to build.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=vbv5e7Yr3Yo Video Tutorial]: Recorded live stream Q&amp;amp;A and creature creation process.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Favored_Soul&amp;diff=4000</id>
		<title>Favored Soul</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Favored_Soul&amp;diff=4000"/>
				<updated>2023-10-21T17:09:03Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Classes]]&lt;br /&gt;
[[Category:Base Classes]]&lt;br /&gt;
{{MessageBox&lt;br /&gt;
| Type = Notice&lt;br /&gt;
| Title = [[Exceptional Character]] Class&lt;br /&gt;
| Message = Players must gain [[Head Dungeon Master]] approval prior to creation.  Must be taken at initial creation and any later multi-classing must also be approved by the [[Head Dungeon Master]].&lt;br /&gt;
}}&lt;br /&gt;
{{Class&lt;br /&gt;
| Image = [[Image:Class_FavoredSoul.jpg|256px|Favored Soul]]&lt;br /&gt;
| Name = Favored Soul&lt;br /&gt;
| HitDie = d8&lt;br /&gt;
| Skills = 2&lt;br /&gt;
| Proficiencies = [[Simple Weapons]], [[Deity]]'s [[Favored Weapon]], [[Light Armor]], [[Medium Armor]], [[Shield]]&lt;br /&gt;
| ClassSkills = [[Concentration]], [[Craft]], [[Diplomacy]], [[Heal (Skill) | Heal]], [[Jump (Skill) | Jump]], [[Knowledge]] (Arcana), [[Profession]], [[Sense Motive]], [[Spellcraft]]&lt;br /&gt;
| Source = [[Complete Divine]]&lt;br /&gt;
| SourcePage = 6-10&lt;br /&gt;
}}&lt;br /&gt;
{{ExternalSource_nwn2wiki|http://nwn2.wikia.com/wiki/Favored_Soul}}&lt;br /&gt;
{{ExternalSource_frwiki|http://forgottenrealms.wikia.com/wiki/Invoker}}&lt;br /&gt;
&lt;br /&gt;
: ''&amp;quot;The favored soul follows the path of the cleric but is able to channel divine power with surprising ease. She is able to perform the same tasks as her fellow divine spellcasters but with virtually no study; to her, it comes naturally. Scholars wonder if favored souls have traces of outsider blood from unions, holy or unholy, centuries ago and generations removed. Others suggest that divine training of the proper type awakens the ability, or that favored souls are simply imbued with their gifts by their gods when they begin the cleric's path. In any case, favored souls cast their spells naturally, as much through force of personality as through study. Though this gives them extraordinary divine abilities no normal person could ever match, they see their gift as a call to action, and so in some ways may lag behind their more studious colleagues.&amp;quot;'' -- [[Complete Divine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Class Features ==&lt;br /&gt;
{{ClassProgression&lt;br /&gt;
| BAB = Medium&lt;br /&gt;
| Fortitude = High&lt;br /&gt;
| Reflex = High&lt;br /&gt;
| Will = High&lt;br /&gt;
| Special1 = [[Weapon Proficiency]] (Deity's Favored Weapon)&lt;br /&gt;
| Special3 = [[Weapon Focus]] (Deity's Favored Weapon)&lt;br /&gt;
| Special5 = [[Energy Resistance]] (10/-)&lt;br /&gt;
| Special10 = Energy Resistance (10/-)&lt;br /&gt;
| Special12 = [[Weapon Specialization]] (Deity's Favored Weapon)&lt;br /&gt;
| Special15 = Energy Resistance (10/-)&lt;br /&gt;
| Special20 = [[Damage Reduction]] (10/[[Alchemical Silver]] or 10/[[Cold Iron]])&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Spellcasting ===&lt;br /&gt;
: ''See also: [[:Category:Cleric Spells | Favored Soul Spells]].''&lt;br /&gt;
A Favored Soul casts divine spells (the same type of spells available to clerics), which are drawn from the cleric spell list. She can cast any spell she knows without preparing it ahead of time the way a cleric must.&lt;br /&gt;
&lt;br /&gt;
To cast a spell, a Favored Soul must have a Charisma score of 10 + the spell's level (Cha 10 for 0-level spells, Cha 11 for 1st-level spells, and so forth). The Difficulty Class for a saving throw against a favored soul's spell is 10 + the spell's level + the favored soul's Wisdom modifier. Like other spellcasters, a favored soul can cast only a certain number of spells of each spell level per day. Her base daily spell allotment is given in the table below. In addition, she receives bonus spells for a high Charisma.&lt;br /&gt;
&lt;br /&gt;
A favored soul begins play knowing five 0-level orisons and three 1st-level spells of your choice. At each new favored soul level, she gains one or more new spells. The number of spells known increases at each new favored soul level according to the favored soul spell progression. It is not affected by the character's charisma score. These new spells are drawn from the cleric/favored soul spell list.&lt;br /&gt;
&lt;br /&gt;
Starting at their 6th class level, and every two levels after, favored souls can replace one known spell with a new spell of the same level. The spell that can be replaced must be two spell levels below (or lower) what the favored soul can currently cast (1st level spell at 6, 1st or 2nd level spell at 8, 1st or 2nd or 3rd level spell at 10, and so forth).&lt;br /&gt;
&lt;br /&gt;
A favored soul need not prepare her spells in advance. She can cast any spell he knows at any time, assuming she has not yet used up her spells per day for that spell level. She does not have to decide ahead of time which spells she’ll cast. Favored souls can also use metamagic feats instantly when choosing spells to cast. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Spell Progression&lt;br /&gt;
| Spell Levels = 10&lt;br /&gt;
| Spells per Day = TRUE&lt;br /&gt;
| Spells Known = TRUE&lt;br /&gt;
| SL0 = [[:Category:0th Level Favored Soul Spells|0]]&lt;br /&gt;
| SL1 = [[:Category:1st Level Favored Soul Spells|1st]]&lt;br /&gt;
| SL2 = [[:Category:2nd Level Favored Soul Spells|2nd]]&lt;br /&gt;
| SL3 = [[:Category:3rd Level Favored Soul Spells|3rd]]&lt;br /&gt;
| SL4 = [[:Category:4th Level Favored Soul Spells|4th]]&lt;br /&gt;
| SL5 = [[:Category:5th Level Favored Soul Spells|5th]]&lt;br /&gt;
| SL6 = [[:Category:6th Level Favored Soul Spells|6th]]&lt;br /&gt;
| SL7 = [[:Category:7th Level Favored Soul Spells|7th]]&lt;br /&gt;
| SL8 = [[:Category:8th Level Favored Soul Spells|8th]]&lt;br /&gt;
| SL9 = [[:Category:9th Level Favored Soul Spells|9th]]&lt;br /&gt;
| Level 1 =  {{Spell Progression Level|  1 | 5 | 3 | - | - | - | - | - | - | - | - | - | 4 | 3 | - | - | - | - | - | - | - | - }}&lt;br /&gt;
| Level 2 =  {{Spell Progression Level|  2 | 6 | 4 | - | - | - | - | - | - | - | - | - | 5 | 3 | - | - | - | - | - | - | - | - }}&lt;br /&gt;
| Level 3 =  {{Spell Progression Level|  3 | 6 | 5 | - | - | - | - | - | - | - | - | - | 5 | 4 | - | - | - | - | - | - | - | - }}&lt;br /&gt;
| Level 4 =  {{Spell Progression Level|  4 | 6 | 6 | 3 | - | - | - | - | - | - | - | - | 6 | 4 | 3 | - | - | - | - | - | - | - }}&lt;br /&gt;
| Level 5 =  {{Spell Progression Level|  5 | 6 | 6 | 4 | - | - | - | - | - | - | - | - | 6 | 5 | 3 | - | - | - | - | - | - | - }}&lt;br /&gt;
| Level 6 =  {{Spell Progression Level|  6 | 6 | 6 | 5 | 3 | - | - | - | - | - | - | - | 7 | 5 | 4 | 3 | - | - | - | - | - | - }}&lt;br /&gt;
| Level 7 =  {{Spell Progression Level|  7 | 6 | 6 | 6 | 4 | - | - | - | - | - | - | - | 7 | 6 | 4 | 3 | - | - | - | - | - | - }}&lt;br /&gt;
| Level 8 =  {{Spell Progression Level|  8 | 6 | 6 | 6 | 5 | 3 | - | - | - | - | - | - | 8 | 6 | 5 | 4 | 3 | - | - | - | - | - }}&lt;br /&gt;
| Level 9 =  {{Spell Progression Level|  9 | 6 | 6 | 6 | 6 | 4 | - | - | - | - | - | - | 8 | 6 | 5 | 4 | 3 | - | - | - | - | - }}&lt;br /&gt;
| Level 10 = {{Spell Progression Level| 10 | 6 | 6 | 6 | 6 | 5 | 3 | - | - | - | - | - | 9 | 6 | 6 | 5 | 4 | 3 | - | - | - | - }}&lt;br /&gt;
| Level 11 = {{Spell Progression Level| 11 | 6 | 6 | 6 | 6 | 6 | 4 | - | - | - | - | - | 9 | 6 | 6 | 5 | 4 | 3 | - | - | - | - }}&lt;br /&gt;
| Level 12 = {{Spell Progression Level| 12 | 6 | 6 | 6 | 6 | 6 | 5 | 3 | - | - | - | - | 9 | 6 | 6 | 6 | 5 | 4 | 3 | - | - | - }}&lt;br /&gt;
| Level 13 = {{Spell Progression Level| 13 | 6 | 6 | 6 | 6 | 6 | 6 | 4 | - | - | - | - | 9 | 6 | 6 | 6 | 5 | 4 | 3 | - | - | - }}&lt;br /&gt;
| Level 14 = {{Spell Progression Level| 14 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 3 | - | - | - | 9 | 6 | 6 | 6 | 6 | 5 | 4 | 3 | - | - }}&lt;br /&gt;
| Level 15 = {{Spell Progression Level| 15 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 4 | - | - | - | 9 | 6 | 6 | 6 | 6 | 5 | 4 | 3 | - | - }}&lt;br /&gt;
| Level 16 = {{Spell Progression Level| 16 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 3 | - | 9 | 6 | 6 | 6 | 6 | 6 | 5 | 4 | 3 | - }}&lt;br /&gt;
| Level 17 = {{Spell Progression Level| 17 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 4 | - | 9 | 6 | 6 | 6 | 6 | 6 | 5 | 4 | 3 | - }}&lt;br /&gt;
| Level 18 = {{Spell Progression Level| 18 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 3 | 9 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 4 | 3 }}&lt;br /&gt;
| Level 19 = {{Spell Progression Level| 19 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 4 | 9 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 4 | 3 }}&lt;br /&gt;
| Level 20 = {{Spell Progression Level| 20 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 9 | 6 | 6 | 6 | 6 | 6 | 6 | 6 | 5 | 4 }}&lt;br /&gt;
}} &lt;br /&gt;
{{Classes}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Items&amp;diff=3999</id>
		<title>Building Items</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Items&amp;diff=3999"/>
				<updated>2023-08-05T20:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Item Tips */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
=Nomenclature=&lt;br /&gt;
All items should be priced according to 3.5 edition canon (Player's Hand Book, Dungeon Master's Guide, etc), and to the ALFA specific exceptions set forth by ALFA [[Standards]]. '''Do not make items worth less than 1gp yet!''' Our currency system for silver and copper pieces is not yet ready, and we may not know how it will work until we have the client in our hands.&lt;br /&gt;
&lt;br /&gt;
'''Premise''': An item should be identifiable from it's tag/resref.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;prefix&amp;gt;_it_&amp;lt;type&amp;gt;_&amp;lt;description&amp;gt;_&amp;lt;ID&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;prefix&amp;gt;''' is either &amp;quot;abr&amp;quot; (minus the quotes) for default ALFA items, or a three digit code of the server.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;type&amp;gt;''' is a three-letter abbreviation describing the slot occupied by the item.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;description&amp;gt;''' is the number of fields necessary to describe any additional properties on the item.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;ID&amp;gt;''' is an optional two-digit number used to distinguish items with identical properties. Leave the &amp;lt;ID&amp;gt; off of tags - it goes on resrefs only.&lt;br /&gt;
&lt;br /&gt;
Item tags should NEVER be longer than 28 characters. The game allows 32, so don't use them all.&lt;br /&gt;
&lt;br /&gt;
'''Scripting''': For information on how to script items, go here.&lt;br /&gt;
&lt;br /&gt;
'''Examples''': A standard longsword would be, '''Tag''': abr_it_wpn_longsword '''ResRef''': abr_it_wpn_longword_01&lt;br /&gt;
&lt;br /&gt;
=Materials=&lt;br /&gt;
* Abyssal Bloodiron ay&lt;br /&gt;
* Adamantine ad&lt;br /&gt;
* Alchemical Silver sa&lt;br /&gt;
* Arandur aa&lt;br /&gt;
* Astral Driftmetal as&lt;br /&gt;
* Aurorum au&lt;br /&gt;
* Bluewood bw&lt;br /&gt;
* Cold Iron ci&lt;br /&gt;
* Copper co&lt;br /&gt;
* Darksteel dk&lt;br /&gt;
* Darkwood (Zalantar) za&lt;br /&gt;
* Dlarun dl&lt;br /&gt;
* Dragonbone db&lt;br /&gt;
* Dragonfang df&lt;br /&gt;
* Dragonhide dh&lt;br /&gt;
* Dragonscale ds&lt;br /&gt;
* Duskwood du&lt;br /&gt;
* Fever Iron fr&lt;br /&gt;
* Fiendbone fb&lt;br /&gt;
* Frystalline fy&lt;br /&gt;
* Gold go&lt;br /&gt;
* Hide hi&lt;br /&gt;
* Hizagkuur hz&lt;br /&gt;
* Laminated Steel ls&lt;br /&gt;
* Living Metal lm&lt;br /&gt;
* Mithral mi&lt;br /&gt;
* Obsidian ob&lt;br /&gt;
* Pandemonic Silver ps&lt;br /&gt;
* Platinum pt&lt;br /&gt;
* Serren se&lt;br /&gt;
* Silver sv&lt;br /&gt;
* Solarian Truesteel tr&lt;br /&gt;
* Sondarr so&lt;br /&gt;
* Suzailian Chainweave ch&lt;br /&gt;
* Weirwood ww&lt;br /&gt;
* Ysgardian Heartwire ys&lt;br /&gt;
&lt;br /&gt;
=Quality=&lt;br /&gt;
* Arcane Spell Failure -10% asf1&lt;br /&gt;
* Drowcraft dc&lt;br /&gt;
* Masterwork mw&lt;br /&gt;
* Plus one e1&lt;br /&gt;
* Poor po&lt;br /&gt;
* Armour Class +1 ac1&lt;br /&gt;
* Bonus Spell, Level 0 sb0&lt;br /&gt;
* Bonus Spell, Levels 0, 1, 2 sb012&lt;br /&gt;
* Damage Resistance 1 dr1&lt;br /&gt;
* Damage Resistance 5/magic dr5m&lt;br /&gt;
* Damage Resistance Fire 5 drf5&lt;br /&gt;
* Feat: Alertness fale&lt;br /&gt;
* Feat: Ambidexterity famb&lt;br /&gt;
* Feat: Combat Casting fcca&lt;br /&gt;
* Feat: Darkvision fdar&lt;br /&gt;
* Feat: Dodge fdod&lt;br /&gt;
* Feat: Extra Turning fext&lt;br /&gt;
* Feat: Mobility fmob&lt;br /&gt;
* Feat: Spell Focus (One) fsf1&lt;br /&gt;
* Feat: Spell Penetration fpen&lt;br /&gt;
* Feat: Two Weapon Fighting ftwf&lt;br /&gt;
* Feat: Weapon Finesse fwfi&lt;br /&gt;
* Spell Immunity, Level 0 si0&lt;br /&gt;
* Spell Resistance 12 sr12&lt;br /&gt;
* Freedom of Movement fom&lt;br /&gt;
* Immunity: Death Magic ide&lt;br /&gt;
* Immunity: Disease idi&lt;br /&gt;
* Immunity: Drain idr&lt;br /&gt;
* Immunity: Fear ife&lt;br /&gt;
* Immunity: Gas iga&lt;br /&gt;
* Immunity: Magic Missle imm&lt;br /&gt;
* Immunity: Paralysis ipa&lt;br /&gt;
* Immunity: Poison ipo&lt;br /&gt;
* Save, Acid +1 sac1&lt;br /&gt;
* Save, Cold +1 sco1&lt;br /&gt;
* Save, Death +1 sde1&lt;br /&gt;
* Save, Disease +1 sds1&lt;br /&gt;
* Save, Fear +1 sfe1&lt;br /&gt;
* Save, Fire +1 sfi1&lt;br /&gt;
* Save, Fort +1 sfo1&lt;br /&gt;
* Save, Mind +1 smi1&lt;br /&gt;
* Save, Negative +1 sne1&lt;br /&gt;
* Save, Poison +1 spo1&lt;br /&gt;
* Save, Reflex +1 sre1&lt;br /&gt;
* Save, Sonic +1 sso1&lt;br /&gt;
* Save, Universal +1 sa1&lt;br /&gt;
* Save, Will +1 swi1&lt;br /&gt;
* Hide +1 hi1&lt;br /&gt;
* Damage, Acid +1 da1&lt;br /&gt;
* Damage, Bludgeoning +1 db1&lt;br /&gt;
* Damage, Cold +1 dc1&lt;br /&gt;
* Damage, Divine +1 dd1&lt;br /&gt;
* Damage, Fire +1 df1&lt;br /&gt;
* Damage, Magic +1 dm1&lt;br /&gt;
* Damage, Negative +1 dn1&lt;br /&gt;
* Damage, Piercing +1 dp1&lt;br /&gt;
* Damage, Slashing +1 ds1&lt;br /&gt;
* Damage, Sonic +1 do1&lt;br /&gt;
* Feat: Cleave fcle&lt;br /&gt;
* Feat: Disarm fdis&lt;br /&gt;
* Feat: Improved Critical ficr&lt;br /&gt;
* Feat: Point Blank Shot fpbs&lt;br /&gt;
* Feat: Rapid Shot frap&lt;br /&gt;
* Feat: Weapon Specialisation fwsp&lt;br /&gt;
* Keen ke&lt;br /&gt;
* Massive Criticals +1 mc1&lt;br /&gt;
* Mighty +1 m1&lt;br /&gt;
* Sure Striking sst&lt;br /&gt;
* Vampiric +1 dv1&lt;br /&gt;
* Wounding +1 dw1&lt;br /&gt;
&lt;br /&gt;
This is added in the toolset with a string separated by the '|' character for each category. The HDMs of every server are free to make their own rules as too where items should be placed, but be aware the DM client cannot see more than one step &amp;quot;deep&amp;quot; into the category tree.&lt;br /&gt;
&lt;br /&gt;
= Detect Magic =&lt;br /&gt;
Most magical items will automatically register to Detect Magic correctly. The spell looks at the item's properties and cross-references spell effects and enhancements against 2DA information to assign the proper school and spell power.&lt;br /&gt;
The following are advanced options for items without properties or for which you want to register an aura in addition to what Detect Magic cross-references from item properties.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL'''&amp;lt;/code&amp;gt; (integer) If the item should register an aura not automatically determined by item properties to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the https://www.alandfaraway.info/wiki/Detect_Magic#SpellSchool_Variables page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER'''&amp;lt;/code&amp;gt; (integer) If the trigger should register an aura not automatically determined by item properties to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL2'''&amp;lt;/code&amp;gt; (integer) If the trigger should register a second aura not automatically determined by item properties to  Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the Detect Magic page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER2'''&amp;lt;/code&amp;gt; (integer) If the trigger should register a second aura not automatically determined by item properties to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
&lt;br /&gt;
For items that use an i_tag_eventsuffix script to be called on a Cast Spell: Unique Power event, the automatic report to the caster will read only &amp;quot;Something has an aura too complex to be unravel.&amp;quot; If you want the item to register a spell aura in addition to that message, you must place the above variables.&lt;br /&gt;
&lt;br /&gt;
For instance, for a uniquely scripted Hairbrush using the i_tag_ac that fires on activate to perform a uniquely scripted buff to CHA that simulates a casting of Eagle's Splendor as well as actions or effects you couldn't get by just adding Cast Spell: Eagle's Splendor to the Hairbrush, you would set ACR_SPELLSCHOOL to 8 and ACR_SPELLPOWER to 2. &lt;br /&gt;
&lt;br /&gt;
If the caster passes a spellcraft check, in addition to the &amp;quot;Too Complex&amp;quot; message generated by the fact of the unique power event, if the item was loose on the floor this would return a message that reads &amp;quot;Hairbrush has a Faint aura of Transmutation&amp;quot;, or &amp;quot;Something in the Cabinet's inventory (or Princess Penelope Prettygirl's inventory) has a Faint aura of Transmutation&amp;quot; if the hairbrush is in something/somebody's inventory. &lt;br /&gt;
&lt;br /&gt;
If the caster does not pass the spellcraft check, s/he doesn't get the school of magic. The item returns only &amp;quot;Hairbrush has a Faint aura&amp;quot; or &amp;quot;Something in X's inventory has a Faint aura.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Item Tips =&lt;br /&gt;
* When creating Creature items, make sure the item is checked as identified, otherwise the creature cannot equip or use the item.&lt;br /&gt;
* If you do not want your item to be visually changed by the player, place   XC_NOT_CRAFTABLE = 1 [integer] in the variables&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Writing_ACR_Quests&amp;diff=3998</id>
		<title>Writing ACR Quests</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Writing_ACR_Quests&amp;diff=3998"/>
				<updated>2023-05-15T19:47:50Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
Static quests are a common strategy to provide less-complex and less-rewarding entertainment for players while there are no DMs online. Ideally, these quests should facilitate role playing by presenting players with a goal that they can pursue for some period of time.&lt;br /&gt;
&lt;br /&gt;
This tutorial will try not to assume and pre-existing knowledge, but will also attempt to link away to other pages to provide definitions that more-proficient users are likely to find cumbersome or extraneous, with this page providing the broadest outline, and links which can be used to view greater detail on the individual parts.&lt;br /&gt;
&lt;br /&gt;
== Quest Basics ==&lt;br /&gt;
Writing a quest generally begins by defining your task. Take a moment to write, as a paragraph or so, what you want characters to have to do in this quest. It can be vague or open-ended, but projects are vulnerable to scope creep if they don't have a goal when they begin.&lt;br /&gt;
&lt;br /&gt;
Once this is done, it comes time to divide your quest into its requisite parts:&lt;br /&gt;
*  '''The Hook''': represents the introduction of the quest to the players involved; something is done to inform the PCs that they have a task to accomplish.&lt;br /&gt;
* '''The Challenge''': represents the actions that the players have to take to consider the quest done.&lt;br /&gt;
* '''The Turnin''': represents how the players are rewarded for completing the chosen task.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Take, as the simplest example, a courier quest:&lt;br /&gt;
* [[Writing ACR Quests/The Hook | The Hook]]: When the players present to whoever is offering courier work.&lt;br /&gt;
* [[Writing ACR Quests/The Challenge | The Challenge]]: The travel to and from the recipient of the package.&lt;br /&gt;
* [[Writing ACR Quests/The Turnin | The Turnin]]: Speaking to the employer for payment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, these quests can be infinitely recursive. Take, for example, a quest to catch a bothersome and powerful criminal entrenched in a city:&lt;br /&gt;
* Players seek work for the city, and are provided with a series of lower-risk tasks, which uncover something far bigger and more siniser afoot:&lt;br /&gt;
** Primary Hook: Evidence speaks of bad guys who need busting up.&lt;br /&gt;
*** Players recover low value contraband from the bad neighborhood&lt;br /&gt;
**** Hook: Present to Commanding Officer&lt;br /&gt;
**** Challenge: Fight or intimidate street thugs to give up the goods&lt;br /&gt;
**** Turnin: Bring the contraband back to the C.O.&lt;br /&gt;
*** Players carry a message to a guardsman on duty&lt;br /&gt;
**** Hook: Present to C.O.&lt;br /&gt;
**** Challenge: Find guardsman and present message&lt;br /&gt;
***** Hook: Guard has gone missing! Bloody hell!&lt;br /&gt;
***** Challenge: Skulk through the sewers to follow the guardsman's still-warm trail&lt;br /&gt;
***** Turnin: Find unconscious guardsman and revive. Present message&lt;br /&gt;
**** Turnin: Return to C.O.&lt;br /&gt;
*** Players Seek Investigation&lt;br /&gt;
**** Hook: Present to C.O.&lt;br /&gt;
**** Challenge: Return to the missing guardsman's trail to investigate circumstances. Find evidence of organization&lt;br /&gt;
**** Turnin: Bring evidence back to C.O.&lt;br /&gt;
** Primary Challenge: Bust up some Bad Guys&lt;br /&gt;
*** Players find guardsmen who may have seen activity&lt;br /&gt;
**** Hook: Talk to three guardsman to be directed to the most-troubled parts&lt;br /&gt;
**** Challenge: Speak to all of the guards in the troubled area to get hints into the sorts of criminal activities done.&lt;br /&gt;
**** Turnin: Return to C.O.&lt;br /&gt;
*** Players bust up three operations:&lt;br /&gt;
**** Operaton 1: Street dealer&lt;br /&gt;
***** Challenge: find out where a dealer of whatever bad stuff (above) is working. Track and capture him.&lt;br /&gt;
***** Turnin: Bad guy -&amp;gt; Jail&lt;br /&gt;
**** Operation 2: Ships&lt;br /&gt;
***** Challenge: correctly identify and search a ship full of whatever the bad stuff is.&lt;br /&gt;
***** Turnin: Bad stuff -&amp;gt; C.O.&lt;br /&gt;
**** Operation 3: Storage&lt;br /&gt;
***** Challenge: find the avenues being used to move the bad stuff around the city.&lt;br /&gt;
***** Turnin: Bring information back to C.O.&lt;br /&gt;
*** Information gained from three operations directs to a likely location for a center of bad stuff in the city. Players bust in and bust things up, probably dealing with heavy resistance and hazardous settings.&lt;br /&gt;
** Primary Turnin: Return to the C.O. and get money or a promotion or something.&lt;br /&gt;
&lt;br /&gt;
== Recap ==&lt;br /&gt;
And there is demonstration there that you can have quests within quests within quests: using one's quest's completion as prerequisite to the advancement of another arc-like quest, or how you can have sequences of checks or actions (potentially unrelated actions) be required to progress the quest to its next step: and those quests can themselves be complex, if the circumstances require. Ultimately, though, it does need to be boiled down into nests or sequences of simple things before it can be built.&lt;br /&gt;
&lt;br /&gt;
== Advanced skill challenges ==&lt;br /&gt;
But why stop there Zelknolf goes on to show us how to create even more dynamic quests.&lt;br /&gt;
&lt;br /&gt;
[[Writing ACR Quests/More Challenges | Advanced Challenges]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Special circumstances==&lt;br /&gt;
* Quests that fetch a wearable item:&lt;br /&gt;
** If you are creating a quest that has the PC fetch a wearable item like a hat for instance.  To prevent exploits, you will need to add ''ga_unequip_by_tag''  to a line previous to the line where the reward and take/destroy item occurs. Otherwise the quest will complete without the item being removed from the players inventory if they are wearing the item when they turn in the quest.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Writing_ACR_Quests&amp;diff=3997</id>
		<title>Writing ACR Quests</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Writing_ACR_Quests&amp;diff=3997"/>
				<updated>2023-05-15T19:46:42Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
Static quests are a common strategy to provide less-complex and less-rewarding entertainment for players while there are no DMs online. Ideally, these quests should facilitate role playing by presenting players with a goal that they can pursue for some period of time.&lt;br /&gt;
&lt;br /&gt;
This tutorial will try not to assume and pre-existing knowledge, but will also attempt to link away to other pages to provide definitions that more-proficient users are likely to find cumbersome or extraneous, with this page providing the broadest outline, and links which can be used to view greater detail on the individual parts.&lt;br /&gt;
&lt;br /&gt;
== Quest Basics ==&lt;br /&gt;
Writing a quest generally begins by defining your task. Take a moment to write, as a paragraph or so, what you want characters to have to do in this quest. It can be vague or open-ended, but projects are vulnerable to scope creep if they don't have a goal when they begin.&lt;br /&gt;
&lt;br /&gt;
Once this is done, it comes time to divide your quest into its requisite parts:&lt;br /&gt;
*  '''The Hook''': represents the introduction of the quest to the players involved; something is done to inform the PCs that they have a task to accomplish.&lt;br /&gt;
* '''The Challenge''': represents the actions that the players have to take to consider the quest done.&lt;br /&gt;
* '''The Turnin''': represents how the players are rewarded for completing the chosen task.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
Take, as the simplest example, a courier quest:&lt;br /&gt;
* [[Writing ACR Quests/The Hook | The Hook]]: When the players present to whoever is offering courier work.&lt;br /&gt;
* [[Writing ACR Quests/The Challenge | The Challenge]]: The travel to and from the recipient of the package.&lt;br /&gt;
* [[Writing ACR Quests/The Turnin | The Turnin]]: Speaking to the employer for payment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
However, these quests can be infinitely recursive. Take, for example, a quest to catch a bothersome and powerful criminal entrenched in a city:&lt;br /&gt;
* Players seek work for the city, and are provided with a series of lower-risk tasks, which uncover something far bigger and more siniser afoot:&lt;br /&gt;
** Primary Hook: Evidence speaks of bad guys who need busting up.&lt;br /&gt;
*** Players recover low value contraband from the bad neighborhood&lt;br /&gt;
**** Hook: Present to Commanding Officer&lt;br /&gt;
**** Challenge: Fight or intimidate street thugs to give up the goods&lt;br /&gt;
**** Turnin: Bring the contraband back to the C.O.&lt;br /&gt;
*** Players carry a message to a guardsman on duty&lt;br /&gt;
**** Hook: Present to C.O.&lt;br /&gt;
**** Challenge: Find guardsman and present message&lt;br /&gt;
***** Hook: Guard has gone missing! Bloody hell!&lt;br /&gt;
***** Challenge: Skulk through the sewers to follow the guardsman's still-warm trail&lt;br /&gt;
***** Turnin: Find unconscious guardsman and revive. Present message&lt;br /&gt;
**** Turnin: Return to C.O.&lt;br /&gt;
*** Players Seek Investigation&lt;br /&gt;
**** Hook: Present to C.O.&lt;br /&gt;
**** Challenge: Return to the missing guardsman's trail to investigate circumstances. Find evidence of organization&lt;br /&gt;
**** Turnin: Bring evidence back to C.O.&lt;br /&gt;
** Primary Challenge: Bust up some Bad Guys&lt;br /&gt;
*** Players find guardsmen who may have seen activity&lt;br /&gt;
**** Hook: Talk to three guardsman to be directed to the most-troubled parts&lt;br /&gt;
**** Challenge: Speak to all of the guards in the troubled area to get hints into the sorts of criminal activities done.&lt;br /&gt;
**** Turnin: Return to C.O.&lt;br /&gt;
*** Players bust up three operations:&lt;br /&gt;
**** Operaton 1: Street dealer&lt;br /&gt;
***** Challenge: find out where a dealer of whatever bad stuff (above) is working. Track and capture him.&lt;br /&gt;
***** Turnin: Bad guy -&amp;gt; Jail&lt;br /&gt;
**** Operation 2: Ships&lt;br /&gt;
***** Challenge: correctly identify and search a ship full of whatever the bad stuff is.&lt;br /&gt;
***** Turnin: Bad stuff -&amp;gt; C.O.&lt;br /&gt;
**** Operation 3: Storage&lt;br /&gt;
***** Challenge: find the avenues being used to move the bad stuff around the city.&lt;br /&gt;
***** Turnin: Bring information back to C.O.&lt;br /&gt;
*** Information gained from three operations directs to a likely location for a center of bad stuff in the city. Players bust in and bust things up, probably dealing with heavy resistance and hazardous settings.&lt;br /&gt;
** Primary Turnin: Return to the C.O. and get money or a promotion or something.&lt;br /&gt;
&lt;br /&gt;
== Recap ==&lt;br /&gt;
And there is demonstration there that you can have quests within quests within quests: using one's quest's completion as prerequisite to the advancement of another arc-like quest, or how you can have sequences of checks or actions (potentially unrelated actions) be required to progress the quest to its next step: and those quests can themselves be complex, if the circumstances require. Ultimately, though, it does need to be boiled down into nests or sequences of simple things before it can be built.&lt;br /&gt;
&lt;br /&gt;
== Advanced skill challenges ==&lt;br /&gt;
But why stop there Zelknolf goes on to show us how to create even more dynamic quests.&lt;br /&gt;
&lt;br /&gt;
[[Writing ACR Quests/More Challenges | Advanced Challenges]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Special circumstances==&lt;br /&gt;
* Quests that fetch a wearable item:&lt;br /&gt;
** If you are creating a quest that has the PC fetch a wearable item like a hat for instance.  To prevent exploits, you will need to add ''ga_unequip_by_tag''  to a line previous to the line where the reward and take/destroy item occurs. Otherwise the quest will complete without the item being removed from the players inventory.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=3993</id>
		<title>Building Doors</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=3993"/>
				<updated>2023-03-02T04:30:23Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
While the basemod contains every door listed in the DMG with appropriate settings, builders may wish to create their own doors. ALFA has scripts which provide a number of mechanics not ordinarily found in NWN, and every door has an extra set of options because of this.&lt;br /&gt;
&lt;br /&gt;
As with creating new creatures, items, and so forth, the easiest way to make a new door is to copy/edit an existing one. For information on editing the settings of an existing door, skip the next section.&lt;br /&gt;
&lt;br /&gt;
== Creating a New Door ==&lt;br /&gt;
If you aren't editing an existing door, you will have to configure a number of options. To start off with, you'll need to make sure all of the door's event scripts are set correctly. ALFA's event scripts for doors are as follows: // Update for longer NWN2 file names&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclosed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondisarm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onmeleeattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onopen&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ontraptriggered&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onunlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onused&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclick&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onfailtoopen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add custom event scripts to your doors, you can of course do so. Just make sure each event script includes the file [[acr_door_i.nss]], and calls the appropriate function for that event, listed here.&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClosed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnConversation()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDamaged()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDeath()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDisarm()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnHeartbeat()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnLock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnMeleeAttacked()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnSpellCastAt()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnTrapTriggered()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUnlock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUsed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUserDefined()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClick()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnFailToOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, the easiest way to do this is to edit an existing acr_door_* file and save it under a different name. Failure to properly call ALFA's door scripts can break multiple systems of the ACR. So make sure you've got them in there.&lt;br /&gt;
&lt;br /&gt;
= Editing Door Settings =&lt;br /&gt;
: ''See also: [[Using Local Variables]]&lt;br /&gt;
Aside from the standard NWN options of doors, we've provided a few more to give PCs and builders more options. These options can be accessed by editing the door's local variables.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_DELAY'''&amp;lt;/code&amp;gt; (float) The number of seconds a door will stay open before automatically closing itself. If set to zero or less than zero, the door will not close itself automatically.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_NEAR_PCS'''&amp;lt;/code&amp;gt; (integer) If set to 1, the door will auto-close regardless of any nearby PCs. If set to 0 (the default), the door will wait until PCs are out of visual range before closing itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_STUCK_DC'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door is considered &amp;quot;stuck&amp;quot;, and therefore cannot be opened unless forced. The value defined is the strength-check DC to &amp;quot;un-stick&amp;quot; the door. If someone tries to force a locked and stuck door open, the strength DC used is the higher of this value and &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt;. The default value is 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt; (integer) The DC to break open this door, as per DMG rules. Breaking open a door does not destroy it like doing damage to it would in NWN, but it does keep the door from being able to be locked again. If this value is zero, the door cannot be forced open. Valid values are from 0 to 255.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_FAIL_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This is a custom message sent to PCs who try to open the door and fail. This can be used in conjunction with * &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; to setup doors that require a spoken password to access (even useful for door riddles).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This message is &amp;quot;spoken&amp;quot; by the door when it is opened. It is usually used to give the PCs a description of the area beyond an AT, if any.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door unlocks itself. Generally used for shops and things which are only open during certain hours of the day. It will only unlock once, so if something else locks it afterwards, it will remain locked until either another creature unlocks it, or its next unlock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door locks itself. Generally used for shops and things which are only open during certain hours of the day. It will only lock once, so if something else unlocks it afterwards, it will remain unlocked until either another creature locks it, or its next lock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_SPELLID'''&amp;lt;/code&amp;gt; (int) This is the Spell ID for doors that require a specific spell to unlock. This will only work for spell IDs greater than 0. Be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; (string) This is what a player must speak to gain access to a password protected door. Leave this empty to require no password. Otherwise, be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_AUTO_LOCK'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door will automatically lock itself each time it is shut.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LISTEN_DC_MOD'''&amp;lt;/code&amp;gt; (integer) This modifier is applied to creatures trying to listen to conversations occuring behind a closed doors. The DMG lists this a +5 for every door, but some customization is allowed for different door types. If undefined or set to 0, the door cannot be listened through.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_KNOCK_IMMUNE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this door is immune to the spell knock. If zero, it is not immune.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNMOVABLE'''&amp;lt;/code&amp;gt; (integer) If nonzero, the door cannot be opened or closed by a non-DM creature, even if unlocked. Scripts can still open or close it, however. This setting is often used to represent large doors which a PC could not realistically close on their own even if they were unlocked, like the huge gates on castles and other fortifications.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_AT_SIZE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this setting specifies the maximum sized creature which can fit through this doorway. Anything large will be given a message saying it is too large to fit inside. Valid values are as follows:&lt;br /&gt;
*# Fine&lt;br /&gt;
*# Diminutive&lt;br /&gt;
*# Tiny&lt;br /&gt;
*# Small&lt;br /&gt;
*# Medium&lt;br /&gt;
*# Large&lt;br /&gt;
*# Huge&lt;br /&gt;
*# Gargantuan&lt;br /&gt;
*# Colossal&lt;br /&gt;
&lt;br /&gt;
Note that currently, NWN2 does not support creature sizes of fine, diminutive, gargantuan or colossal. These values are provided here for future compatibility.&lt;br /&gt;
&lt;br /&gt;
Note that if none of these variables are defined, they default to zero. So a door without them would never close or lock itself, wouldn't be stuck or barred at all, would not be able to be forced open, and wouldn't have any sort of a custom message printed if a PC failed to open it.&lt;br /&gt;
&lt;br /&gt;
= Detect Magic =&lt;br /&gt;
These are advanced options for doors to register as magical to Detect Magic. A door with these variables will report to the caster if the caster passes spellcraft checks based on the power of the spell.  For instance: &amp;quot;Abjuration Dorm has a Faint aura of Transmutation.&amp;quot;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the  [https://www.alandfaraway.info/wiki/Detect_Magic#SpellSchool_Variables Detect Magic: SpellSchool Variables] page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER'''&amp;lt;/code&amp;gt; (integer) If the door should register to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLSCHOOL2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the school of magic of the aura. See the Detect Magic page for which integer calls which school of magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_SPELLPOWER2'''&amp;lt;/code&amp;gt; (integer) If the door should register a second aura to Detect Magic, use integer 1 - 9 for the spell level of the aura. See the Detect Magic page for more information.&lt;br /&gt;
&lt;br /&gt;
=Tips/Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
*  If your doorway does not seem to function properly:&lt;br /&gt;
*- make sure the doorway is within a walkmesh area&lt;br /&gt;
*- make sure the '''''Interruptible''''' box is checked&lt;br /&gt;
*- make sure there is no open doorway behind it, as in a tileset doorway vs a placeable doorway&lt;br /&gt;
*- a door must have current hit points &amp;gt;0 for it to function&lt;br /&gt;
*- If your static door looks fine in the toolset but does not fill the doorway ingame, the door model defaults in static mode.  Instead do not make door static and set it to locked, requires key to open to get it to look right ingame. This is especially true when you have changed the size of the door to fit the doorway. Some models work better than others.  There are now placeable doors also available in the toolset.&lt;br /&gt;
*- If a Half-orc cannot got through your AT  make sure the receiving end is not set to position lock. Also make sure there is plenty of cleared space around the receiving door.  Too little space will keep orcs and half-orcs from being able to traverse the doorway.&lt;br /&gt;
* When resizing doors scales 1st and 2nd should be the same size.  Otherwise your door will be a weird size when it opens.  This how ever might be a useful trick when you want to emulate a door folding up or to the side.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=HAKS_-_Adding_New_Content&amp;diff=3991</id>
		<title>HAKS - Adding New Content</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=HAKS_-_Adding_New_Content&amp;diff=3991"/>
				<updated>2023-02-18T21:39:59Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:HAKS - Adding New Content]]&lt;br /&gt;
[[Category:HAKS UPDATING]]&lt;br /&gt;
[[Category:Technical Manuals]]&lt;br /&gt;
&lt;br /&gt;
                   '''ADDING NEW CONTENT TO THE ALFA NWN2 HAKS&lt;br /&gt;
                               9/2020 by ARRI'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''STEP 1''' - '''YOU WILL NEED THE FOLLOWING TOOLS:'''&lt;br /&gt;
&lt;br /&gt;
A COPY OF ''GIT EXTENSIONS'' http://gitextensions.github.io/   FOR MANAGING UPLOADS/DOWNLOADS TO THE MASTER ABR ON GITHUB.  &lt;br /&gt;
&lt;br /&gt;
A COPY OF ''WinSCP''  https://winscp.net/eng/download.php FOR MANAGING THE HAK LZMAS. &lt;br /&gt;
 &lt;br /&gt;
IF YOU ARE THE TA  YOU WILL ALSO NEED A COPY OF ''MYSQL WORKBENCH'' https://www.mysql.com/products/workbench/ &lt;br /&gt;
 &lt;br /&gt;
AND&lt;br /&gt;
 &lt;br /&gt;
AZURE STORAGE EXPLORER  https://azure.microsoft.com/en-us/features/storage-explorer/.  &lt;br /&gt;
   &lt;br /&gt;
YOU WILL ALSO NEED  '''MICROSOFT  VISUAL'''  https://visualstudio.microsoft.com/downloads/&lt;br /&gt;
&lt;br /&gt;
''NWN2packer'' FOR OPENING HAKS /ERFS   https://neverwintervault.org/project/nwn2/other/tool/nwn2packer-v19&lt;br /&gt;
&lt;br /&gt;
''TlkEdit2'' FOR EDITING  THE TLK AND 2DA FILES  https://neverwintervault.org/project/nwn1/other/tool/tlkedit2-2datlkgfferf-editor&lt;br /&gt;
&lt;br /&gt;
I RECOMMEND ''SUBLIME TEXT'' FOR BASIC 2DA EDITING   https://www.sublimetext.com/3     YOU CAN ALSO GET A PLUG IN FOR IT THAT ALLOWS YOU TO  COMPILE SCRIPTS FOR NWN2  https://neverwintervault.org/project/nwn2/other/tool/sublimetext-neverwinterscript  THIS WORKS WELL IN CONJUNCTION WITH THE TlkEditor2 WHICH  I USE TO DOUBLE CHECK THE INTEGRITY OF MY 2DA.&lt;br /&gt;
&lt;br /&gt;
'''OPTIONAL TOOLS DEPENDING ON YOUR TECH LEVEL AND ABILITY TO MODIFY THINGS:'''&lt;br /&gt;
&lt;br /&gt;
https://neverwintervault.org/project/nwn2/other/tool/mdb-cloner   FOR RENAMING MODELS WITH THEIR ATTACHED TEXTURES WHEN IT WOULD OTHERWISE OVERRIDE AN EXISTING  MODEL.   VERY IMPORTANT IF YOU ARE ADDING CLOTHING/ARMOR BECAUSE  RARELY DO THESE COME NUMBERED IN A WAY COMPATIBLE WITH OUR LIST.&lt;br /&gt;
&lt;br /&gt;
https://neverwintervault.org/project/nwn2/other/tool/mdb-model-viewer  THIS ALLOWS YOU TO VIEW A MODEL EASILY.  ESPECIALLY HELPFUL WHEN REVIEWING  ITEMS.&lt;br /&gt;
&lt;br /&gt;
https://www.gimp.org/downloads/    GIMP  WITH A DDS PLUG IN  https://code.google.com/archive/p/gimp-dds/downloads   USEFUL IF YOU WANT TO ADD A TINT FILE TO A MODEL IN CONJUNCTION WITH THE MDB CLONER.&lt;br /&gt;
&lt;br /&gt;
'''STEP 2''' - IF YOU DO NOT ALREADY HAVE ONE, DOWNLOAD THE ABR FOLDER FROM OUR GITHUB RESOURCE PAGE AT https://github.com/ALandFarAway/ALFA-Base-Resources .  THIS WILL LIVE IN YOUR  NWN2 FOLDER IN THE DOCUMENTS FOLDER .  IF YOU HAVE THE SPACE KEEP A ZIPPED BACK UP COPY SOMEWHERE IN CASE OF A SCREW UP.   THE ABR FOLDER HAS A FOLDER WITH THE CONTENTS OF EACH HAK   AS WELL AS A NUMBER OF OTHER SCRIPTS AND THINGS USED FOR ALFA MODS.&lt;br /&gt;
&lt;br /&gt;
'''STEP 3'''- DOWN LOAD THE DESIRED CONTENT FROM NWNVAULT OR NEXUS  OR WHAT EVER SITE YOU FIND TO GET IT FROM.  I SUGGEST  HAVING A SPECIAL FOLDER SOMEWHERE DEDICATED TO YOUR HAK CONTENT DOWNLOADS.  I ORGANIZED MINE BY TYPE AS WELL. &lt;br /&gt;
&lt;br /&gt;
'''STEP 4''' - UNZIP YOUR SELECTED CONTENT INTO A LABELED WORKING FOLDER.  CONTENT USUALLY COMES IN ONE OF TWO WAYS   EITHER A  HAK OR A OVERRIDE FOLDER. &lt;br /&gt;
  &lt;br /&gt;
'''STEP 5'''- CHECK THE CONTENTS OF THE LAST HAK FOR THE TYPE OF CONTENT YOU WANT TO ADD.  FOR INSTANCE YOU WANT TO ADD SOME NEW PLACEABLES . . .  OPEN THE  HIGHEST NUMBERED PLACEABLES HAK AND SELECT ALL, TO FIND OUT THE SIZE OF THE FOLDER CONTENTS.  IF ITS AT OR GREATER THAN 1.5gb OF STUFF  OR HAS MORE THAN 15000 FILES  . . . START A NEW HAK.   IF ITS GOT SPACE  TAKE A COPY OF THE FOLDER AND MOVE IT TO YOUR WORKING FOLDER FOR USE DURING TESTING.  I CANNOT STRESS ENOUGH NOT TO USE THE  ACTUAL ABR FILES UNTIL EVERYTHING IS TESTED.  GRAB COPIES OF ANY 2DAS YOU WILL NEED TO BE ALTERING AS WELL FOR YOUR OVERRIDE FOLDER. &lt;br /&gt;
&lt;br /&gt;
'''STEP 6'''- EVERYTHING BUT ITEMS, AND MOST FX FILES HAS A 2DA FILE ASSOCIATED WITH IT.  MOST ANY HAK CONTENT YOU DOWNLOAD SHOULD ALSO INCLUDE THE 2DA FOR THOSE OBJECTS.  YOU ARE ONLY ALLOWED A SINGLE 2DA FOR EACH SET, SO YOU WILL HAVE TO COMBINE THE LINES FROM THE NEW CONTENT INTO OUR 2DA FOR THAT CONTENT.   WHEN POSSIBLE FIND THE LINES IN OUR 2DA THAT CORRESPOND TO THE LINES OF THE NEW CONTENT, IF THOSE LINES ARE EMPTY PLACE THE NEW ONES THERE. [THE NWN2 COMMUNITY HAS STANDARDIZED HOW 2DAS ARE LAID OUT WITH PARTICULAR NUMBERS ASSIGNED TO PARTICULAR CREATORS.  BECAUSE ALFA  2DA'S ARE SO OLD THIS DOES NOT ALWAYS WORK OUT FOR US.]  IF THE CORRESPONDING LINES ARE ALREADY FILLED IN OUR 2DA, THEN YOU WILL HAVE TO PASTE THEM TO ANOTHER SET OF LINES AND RENUMBER THEM TO FIT OUR NUMBERS.   IF NUMBERS ARE OUT OF ORDER NOTHING BEYOND THAT POINT WILL WORK.&lt;br /&gt;
&lt;br /&gt;
'''STEP 7'''-   CLOTHING TYPE ITEMS WILL BE SHOWN AS  SOMETHING LIKE  P_HHM_MP_Body50  THIS SHOWS THAT IT IS FOR  P=PC / HHM= HUMAN MALE / MP = WHAT CATEGORY IT IS LISTED UNDER IN THE armorvisualdata.2DA  / Body50 = WHAT NUMBER -1 THAT IT SHOWS UP IN THE ARMORSET TAB IN THE TOOLSET.  THIS WOULD SHOWS AS OUTFIT 49 IN THE DARARMOR CATEGORY.    IF WE WANT TO ALTER THIS BECAUSE IT CONFLICTS WITH AN ITEM # WE ALREADY HAVE  YOU WILL USE MDB CLONER TO CHANGE THE NUMBER PORTION AND PERHAPS CHANGE THE  MP TO  CL OR THE APPROPRIATE ARMOR CATEGORY.   KEEP IN MIND THAT  EACH CATEGORY TYPE CAN ONLY HOLD  FROM 0-256 ITEMS FOR EACH RACE/GENDER.    ALSO  IF YOU DO NOT HAVE A CORRESPONDING HUMAN MALE ITEM MODEL, FOR ANYTHING THAT IS FEMALE IT WILL NOT SHOW UP IN THE ARMORSET TAB, THOUGH IT CAN BE MANUALLY INSERTED.  THIS CAN EVEN BE A BLANK  ITEM MODEL THAT HAS NOTHING THAT GOES WITH IT.    WHEN CHANGING MODEL NUMBERS  TRY TO FIND A  SPOT IN THE CATEGORY THAT  HAS A BLANK SPOT +1 FOR IT.   IF WE WANTED TO MAKE A SECOND CLOTHING CATEGORY BECAUSE THE FIRST ONE IS FILLED THEN WE WOULD HAVE TO ALSO ALTER THE  armorvisualdata.2DA FILE.   IF YOU DO NOT CHANGE THE BODY#  IT WILL EITHER NOT SHOW UP OR IT WILL OVERRIDE THE PREVIOUS  ITEM OF THAT BODY#.  ALSO ANY CLOTHING THAT COMES FOR THE HUMAN MALE CAN BE CLONED TO HAVE AN EQUIVALENT FOR THE ELVEN MALE, SAME FOR FEMALE ITEMS. &lt;br /&gt;
 &lt;br /&gt;
'''STEP 8'''-  ONCE YOU HAVE  ANY ITEMS AND/OR CREATURES , PLACEABLES ETC  PLACED IN YOUR OVERRIDE FOLDER AND ALTERED ANY 2DA'S FOR THOSE OBJECTS OR FIXED THE BODY#'S FOR CLOTHING, YOU WILL THEN USE THE NWN2PACKER TO MAKE A  NEW  2DA TEST HAK .  OPEN THE PACKER CLICK ON NEW AND THEN DRAG THE ALTERED 2DA FILES FROM YOUR OVERRIDE FILE INTO THE PACKER AND SAVE AS A NEW HAK  IN THE  GOG HAK FILE.  YOU WILL THEN ADD THAT HAK INTO YOUR  TEST MOD AT THE VERY TOP OF THE LISTS FOR THE HAKS SO THAT IT WILL OVERRIDE THE HAK BELOW IT.  SAVE THE MOD AND RELOAD.&lt;br /&gt;
&lt;br /&gt;
'''STEP 9'''- OPEN YOUR TEST MODULE AND MAKE SEPARATE AREAS TO CHECK EACH AND EVERY OBJECT YOUR PLANNING TO ADD.   IF YOUR USING THE FOOL'S PLUGIN YOU WILL BE ABLE TO GO TO IT AND SCAN THROUGH IT TO FIND YOUR NEW CONTENT.  CREATE EACH ONE  FOR YOUR  TEST MOD.   &lt;br /&gt;
  ''CLOTHING'' IN YOUR OVERRIDE WILL SHOW UP IN THE ARMORSET TAB, YOU CAN SIMPLY PAINT THE ARTICLE ON THE NPC  OR YOU CAN MAKE AN ITEM AND EQUIP IT ON A NPC TO CHECK.     OCCASIONALLY ITEMS ARE NOT DESIGNED FOR OUR BODY MODELS AND LOOK WONKY.   HERE YOU CAN TEST IF YOU CAN COLOR IT OR NOT, IF NOT YOU MAY WANT TO MAKE A TINT MAP FOR IT TO INCREASE THE VERSATILITY OF THE ITEM. &lt;br /&gt;
&lt;br /&gt;
  ''CREATURES'' IN YOUR OVERRIDE WILL NEED TO BE CREATED   USE THE BASE NPC AND CHANGE THE APPEARANCE TO THE NEW ONE.  IF YOUR EFFICIENT ,  FIND THE STATS AND OTHER INFO FOR THE CREATURE VIA THE SRD OR MONSTER MANUALS.  GIVING IT APPROPRIATE RESREF AND TAGS  [SEE BUILDING CREATURES].  CHECK TO SEE IF IT HAS ANY ALTERNATE LOOKS ON THE ARMORTAB.  MAKE SURE EVERYTHING LOOKS CORRECT FOR IT AND MAKE A BLUEPRINT.   SEE IF IT HAS THE ABILITY TO BE TINTED.  IF NOT YOU MAY WANT TO MAKE A TINT MAP FOR IT.   SOMETIMES CREATURES  HAVE TAILS OR WINGS THAT NEED TO BE ADDED TO THE APPROPRIATE 2DA SO THEY CAN BE ADDED.&lt;br /&gt;
&lt;br /&gt;
 ''PLACEABLES'' IN YOUR OVERRIDE WILL NEED TO BE CREATED AND SORTED.  CHECK TO MAKE SURE THEY LOOK RIGHT. ( I HAVE FOUND A FEW THAT THE TEXTURES WERE ON BACKWARDS)  CAN THEY BE TINTED?   IF NOT SEE IF YOU CAN MAKE A TINT MAP FOR IT.  IF YOUR REALLY EFFICIENT, YOU CAN MAKE A BLUEPRINT AND SORT THEM INTO APPROPRIATE CATEGORIES FOR YOUR OWN BP FOLDER IN YOUR OVERRIDE. &lt;br /&gt;
&lt;br /&gt;
 ''TILESETS'' WILL HAVE SEVERAL 2DAS THAT WILL NEED COPIED OVER TO OURS.    CHECK ALL THESE OUT,  OFTEN THEY INCLUDE LINES FOR TILES THEY HAVE NOT YET MADE THESE WILL READ AS A 0 (ZERO).   &lt;br /&gt;
&lt;br /&gt;
 ''TEXTURES AND GRASSES''  WILL NEED TO BE ADDED TO THEIR CORRESPONDING 2DA.  IN ADDITION THEY SHOULD COME WITH  .BMP FILES THAT WILL NEED TO BE ADDED INTO EVERY BUILDERS,  NWN2TOOLSET  FOLDER IN THE MAIN GAME FOR  GRASSES OR TERRAIN.  &lt;br /&gt;
&lt;br /&gt;
 ''FX'S'' USUALLY JUST NEED TO BE ADDED INTO THE APPROPRIATE FOLDERS , UNLESS THEY ARE PART OF A SPELL OR EFFECT THAT IS DRAWN UPON VIA SCRIPT THEN THEY NEED TO BE ADDED TO THE  VFX_PERSISTENT.2DA.&lt;br /&gt;
&lt;br /&gt;
'''STEP 10'''- ONCE YOU HAVE EVERYTHING YOUR PLANNING ON ADDING FOR THIS ROUND OF UPDATES, VERIFIED, AND ALTERED IF NEEDED, THEN ADD ALL THE FILES INTO THE APPROPRIATE ABR FOLDERS.   THIS ASSUMES YOU HAVE ALREADY CHECKED THEM FOR SPACE.  REMEMBER TO MOVE ANY ALTERED 2DA FILES AS WELL.  THEN RUN THE  HAKING PROCESS OUTLINED IN  THE 'UPDATING HAKS'  INFORMATION.    IF YOU HAVE HAD TO MAKE A NEW HAK  THIS WILL HAVE TO BE ADDED INTO THE  dirs FILE IN THE ABR  FILE FOLDER SO IT KNOWS IT EXISTS.&lt;br /&gt;
&lt;br /&gt;
'''STEP 11'''- ONCE YOU HAVE YOUR NEW SET OF HAKS  RENAME THE ONES YOUR GOING TO BE UPDATING RENAME THEM WITH A &amp;quot; n-&amp;quot; OR SOMETHING SIMILAR AT THE BEGINNING OF THE HAK NAME.  YOU  WILL MOVE ALL THE FOLDERS WITH THE CONTENT YOU WERE WORKING ON FROM YOUR OVERRIDE TO A SECONDARY FOLDER YOU MAKE  OVERRIDE2 OR SOME SUCH.  MOVE YOUR RENAMED HAKS INTO THE HAK DIRECTORY OF THE NWN2 INSTALL, NOT THE DOCUMENT FOLDER ENTRY.  OPEN YOUR TEST MODULE AND UPDATE THE HAKS WITH THE NEW HAKS LISTED.  ANYTHING THAT IS NOT NEW GO AHEAD AND REGRAB IT.  ONCE THAT IS DONE SAVE YOUR MODULE AND RELOAD IT.  THEN RECHECK ALL YOUR CONTENT AREAS .    THIS WAY YOU CAN DOUBLE CHECK THAT YOU GOT ALL THE DESIRED CONTENT INTO THE HAKS BEFORE YOU  FINALIZE IT.   IF EVERYTHING IS ACCOUNTED FOR  AND NOTHING IS MISSING ITS MODELS/TEXTURES ETC THEN YOU CAN MOVE ON TO THE HAK UPDATING PROCESS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''AS A NOTE  EVERYTHING IN THE PALLETE TAKES UP MODULE DIRECTORY SPACE.  IN GAME THE DM ONLY NEEDS A SMATTERING OF PLACEABLES TO PULL FOR SET UPS.   IDEALLY THE ONLY PLACEABLES ACTUALLY  IN THE PALLETE FOR THE MODULE SHOULD BE ANYTHING THAT IS SPAWNED IN LIKE SECRET DOORS ETC OR THOSE ITEMS DMS NEED TO SET UP ENCOUNTERS LIKE CAMPFIRES, TENTS ETC.  ALL ELSE WILL SHOW IN YOUR PALLETE IF ITS IN A BLUE PRINT FOLDER IN YOUR GAME OVERIDE.&lt;br /&gt;
'''''&lt;br /&gt;
ALSO if you want these items to show up via the tailor, or weapon changers then you will also need to update  ''nwnx_craft_set_constants'' &amp;amp; ''ACR_Items.cs''  scripts&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Template:Servers&amp;diff=3989</id>
		<title>Template:Servers</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Template:Servers&amp;diff=3989"/>
				<updated>2023-02-07T07:11:43Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{| class=&amp;quot;navTable&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Servers&lt;br /&gt;
|-&lt;br /&gt;
| Live&lt;br /&gt;
| &lt;br /&gt;
* [[Baldur's Gate (Server) | Baldur's Gate]] ([[Baldur's Gate (Server)/House Rules|House Rules]])&lt;br /&gt;
* [[Moonshae Isles (Server) | Moonshae Isles]]&lt;br /&gt;
* [[The Silver Marches (Server) | The Silver Marches]]&lt;br /&gt;
|-&lt;br /&gt;
| Beta&lt;br /&gt;
| &lt;br /&gt;
* [[Amn (Server) | Amn]]&lt;br /&gt;
* [[Western Heartlands (Server) | Western Heartlands]]&lt;br /&gt;
* [[Waterdeep (Server) | Waterdeep ]]&lt;br /&gt;
|}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[Category:Templates]]&lt;br /&gt;
[[Category:Navigation Templates]]&lt;br /&gt;
This template displays a list of all servers available in ''[[A Land Far Away]]''.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
To include this template on a page, simply type the following where you want it to display. Navigation templates typically go at the bottom of pages.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{PAGENAME}}&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Preview ==&lt;br /&gt;
{{ {{PAGENAME}} }}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Gwynneth&amp;diff=3988</id>
		<title>Gwynneth</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Gwynneth&amp;diff=3988"/>
				<updated>2023-02-05T22:24:27Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Locations on Moonshae Isles]]&lt;br /&gt;
&lt;br /&gt;
The island of Gwynneth has been held by the druids to lie closest to the heart of the goddess. Moonwells are&lt;br /&gt;
more common here than on any of the other islands, and the clerics of the new gods have made few inroads into the&lt;br /&gt;
traditional goddess-worship of the people.&lt;br /&gt;
&lt;br /&gt;
The island of Gwynneth was the first to be settled by humans, although its population&lt;br /&gt;
fell behind that of the more hospitable island of Alaron.&lt;br /&gt;
&lt;br /&gt;
== Settlements ==&lt;br /&gt;
Occupying all but the very Northern portion, Settlements of the [[Ffolk]] include:&lt;br /&gt;
&lt;br /&gt;
* [[Corwell]]&lt;br /&gt;
* [[Lowhill]]&lt;br /&gt;
* [[Wyngate]]&lt;br /&gt;
* [[Dynnatt]]&lt;br /&gt;
* [[Koart]]&lt;br /&gt;
* [[Kingsbay]]&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3987</id>
		<title>Toolset Guide</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3987"/>
				<updated>2023-02-03T22:35:21Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This guide assumes you read the toolset documentation.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to read Area Walkthroughs first, it is the most detailed about the basic techniques of making a good looking area.&lt;br /&gt;
&lt;br /&gt;
== Land ==&lt;br /&gt;
=== Height ===&lt;br /&gt;
Height adjustment tools should be used in moderation. Don't go dragging around a bunch of land at once, click smaller areas to avoid losing control of your slopes.&lt;br /&gt;
&lt;br /&gt;
A short description of tools:&lt;br /&gt;
* Raise/Lower - Self explanatory&lt;br /&gt;
* Noise - This tool makes little bumps in the terrain, very useful for making realistic eroded terrain.&lt;br /&gt;
* Smooth - This creates slopes. Drag it around between two areas to smooth it out and get a slope. You can also round off any peaks. &lt;br /&gt;
* Walk/Non Walk - For marking walkmeshes.&lt;br /&gt;
* Flatten - This tool is your friend. If you want to create a whole bunch of raised terrain, use the flatten tool. Choose the average height of your raised terrain, make the brush huge and have at it. Once you have this done, you can use the other tools to detail it and make it look good.&lt;br /&gt;
* Color - Allows you to color the ground. This will be discussed more under textures.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Turn on the surface mesh option when adjusting height. This allows you to see the vertexes and more easily determine what kinds of slopes and such you're getting.&lt;br /&gt;
&lt;br /&gt;
Remember that most land is pretty gradually sloped. Don't go crazy with these tools unless the situation calls for it. An area with several gentle rises and valleys looks more natural than one with all sorts of skyfjords and such.&lt;br /&gt;
&lt;br /&gt;
If you need to raise or lower a whole lot of terrain quickly, use the flatten tool. If you use raise or lower you have to wait a while, but with flatten you can simply specify the height you want and get it in a single click. Then you can use smooth, raise, and lower to make it look natural.&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
The color tool allows you to color the ground, which can help tinting textures. Use this tool to make variations in large areas with the same texture, for a more natural feel. You can also buff out any areas of geometrically repeating patterns with this, without using up one of your six textures.&lt;br /&gt;
&lt;br /&gt;
Layer textures for better results. Also experiment with pressures. You can often effectively make a custom texture through layering, pressure variation, and colors. One good technique is to lay down your base texture at full pressure, your blend texture at half, then spray on the base one again at a very low pressure to mix it in.&lt;br /&gt;
&lt;br /&gt;
Textures apply within the vertexes of the mesh, so they will stretch out along cliffs. You can actually use this to your advantage, because the amount they stretch can make them look quite different than they do when flat.&lt;br /&gt;
&lt;br /&gt;
Don't get too absorbed in the names of the textures. There's a tendency to only use cliff textures with cliffs and that sort of thing, but while they are designed for specific functions and look good that way, you can also mix them up to great result.&lt;br /&gt;
&lt;br /&gt;
Each area should have no more than 6 textures allocated to it.  Even though various sections will allow different texture sets.  More than 6 textures in a single map will often cause the area not to open in the toolset.&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
Always make sure the water clips under the land. This is very important, otherwise you will get a gap at the edge which looks terrible.&lt;br /&gt;
&lt;br /&gt;
Each metatile can have a different water level. If you want to have a stream flowing downhill, you'll have to make sure the flat portions of the stream are on different metatiles, and the downhill portions are on edges. You can then use a water placeable to simulate the downhill portion, along with a vfx if you're making a waterfall.&lt;br /&gt;
&lt;br /&gt;
You can do a lot of things with water other than water. The fact that it reflects can be used to great effect on shiny marble floors, for instance. Make an interior and tint it to look like marble, then place a very thin layer of water on the floor, then alter its movement settings so it is completely still.&lt;br /&gt;
&lt;br /&gt;
Among other things you can do with water is color it, to make lava flows and the like. Experiment for great justice.&lt;br /&gt;
&lt;br /&gt;
Remember that you have to lower the land where you're placing water, or raise the water level above the ground, otherwise the land and water will clip together and look terrible.&lt;br /&gt;
&lt;br /&gt;
Watch how deep your water is and remember to remove the walkmesh in deep zones, unless you want PCs to be able to walk around underwater.&lt;br /&gt;
&lt;br /&gt;
== Placeables ==&lt;br /&gt;
: ''See also: [[Building Placeables]]''&lt;br /&gt;
&lt;br /&gt;
''Placeables can now be tilted. Look for the orientation box in the properties. The first number controls left and right, the second forward and back. Use decimals, whole numbers tilt them too far.'' [I don't believe this was ever fully implemented]&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Many placeables, particularly buildings, can be placed inside and attached to one another. In this way you can, for example, stitch together several buildings to make one large one, rather than having to get a new model for it.&lt;br /&gt;
&lt;br /&gt;
=== Buildings ===&lt;br /&gt;
Buildings can be made into rows easily. Simply place down the buildings and move them together so their walls touch. They actually look quite good like this, and you can turn them into prefabs for use later.&lt;br /&gt;
&lt;br /&gt;
Make several prefab rows of buildings, with the buildings shuffled around. That way you can quickly lay down rows of buildings and if you space out your use of the same prefab, along with some single buildings in the gaps, you can make it difficult to see that any building patterns are being repeated.&lt;br /&gt;
&lt;br /&gt;
== Trees ==&lt;br /&gt;
You don't have to use a lot of seeds to break up your forest. Space the trees out and layer them, incorporate one with a radically different size and one with a radically different color than the rest of the trees, and you can break it up enough to look fine while maintaining performance.&lt;br /&gt;
&lt;br /&gt;
Remember that forest floors aren't grassy, they have all sorts of junk lying around. There's a twig texture, and a couple grass textures that can be mixed together to make a good forest floor.&lt;br /&gt;
&lt;br /&gt;
== Critters ==&lt;br /&gt;
: ''See also: [[Building Creatures]]''&lt;br /&gt;
To place multiple VFXes on a creature, you will have to use an OnSpawn script. You can only apply one in its properties.&lt;br /&gt;
&lt;br /&gt;
Don't overlook the “assign class feats” and “assign racial feats” buttons in the feats screen, this makes assigning feats go much more quickly. You can also sort the list using the drop-down box above the list.&lt;br /&gt;
&lt;br /&gt;
Scaling creatures is totally awesome and everyone should make a fifty foot tall flaming goblin at least once.&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
: ''See also: [[Building Items]]''&lt;br /&gt;
You can use the mouse wheel to scroll through models.&lt;br /&gt;
&lt;br /&gt;
To preview a weapon, you can open a second properties window and set it to preview&lt;br /&gt;
&lt;br /&gt;
In windows 10 and up there is a bug that cause the preview not to update correctly.  You can sometimes scroll through your weapon / shield models by placing a NPC in an area with a weapon/shield being held, turn off your ability to select creatures and then you can select the weapon/shield they hold and go through the models in the properties tab. Once you find what you want then transfer those models to the item you want to make.&lt;br /&gt;
&lt;br /&gt;
== Tips and Tricks ==&lt;br /&gt;
When making multi-floor interiors, remember that interior tiles can be laid down on top of old tiles without having to delete. You can simply wipe right over what you have, so an easy way to make multiple floors is to simply copy your ground floor area and go to town. That way, you can lay stairways down right where they should be and ensure the floors are exactly the same size.&lt;br /&gt;
&lt;br /&gt;
=== Making Beaches ===&lt;br /&gt;
Making a beach is a bit complex, as it involves a lot of blending and you have to take into account the way the water refraction will change your textures. Fortunately it's easy to get a hang of.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to create the slope. I'll not go into detail on it since you should know how to do that, if not refer to Section A, Subsection 1 on working with height.&lt;br /&gt;
&lt;br /&gt;
Once you have your slope, you'll need to apply the beach textures. I have selected three that I like for my beach, but you can play around. In general, you will want to have darker textures the further you go out from shore.&lt;br /&gt;
&lt;br /&gt;
Beach example one, without water visible. The textures used are noted.&lt;br /&gt;
&lt;br /&gt;
Now for a detailed look at this. Grass_12 was my shoreline texture, Dirt_03 is sand, and Dirt_30 is deep underwater. I have applied Dirt_03 at 100% pressure along the slope of the beach itself, and for several feet extending both underwater and up the shore. You can extend this as far as you like to make a more sandy shore, here I have kept the beach relatively narrow.&lt;br /&gt;
&lt;br /&gt;
Next, I have applied Dirt_30 at 100% pressure underwater, leaving a gap between it and the edge of the Dirt_03 section. This gap is very important, as you will see momentarily. Next, I sprayed down Dirt_30 at about 80% pressure, filling in the gap. After this, I switched back to Dirt_03 and sprayed it down at about 40% pressure over the Dirt_30 gap, and over the shore on top of the Grass_12. This produces the bands of blended textures, giving a natural progression from one texture to another.&lt;br /&gt;
&lt;br /&gt;
The above doesn't look very good on its own, but let's see it with water and its associated refraction.&lt;br /&gt;
&lt;br /&gt;
Much better, and quite natural, don't you think?&lt;br /&gt;
&lt;br /&gt;
This beach could use improvement on the linearity of the various texture layers—it has formed into bands which are noticeable. This is easily corrected by spraying textures down as described in various formations, in order to break up the outline. You can also add more layers at various pressures to further the blending between the textures. All in all, the techniques are solid and correct for making a beach. If you can replicate this effect, you have the essentials down and can begin the artistic side of the build.&lt;br /&gt;
&lt;br /&gt;
== Area Walkthroughs ==&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
=== Rural River Village ===&lt;br /&gt;
This walkthrough describes the making of a small river and village, somewhere in the wilderness, and goes through all the associated techniques.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is define the shape of the land. I will start with the river, since it's the primary feature in this scenario—the reason the village was built where it was built was because of the river, so the river will be the central build of the area. To make the river, we will use the lower, flatten, and smooth tools.&lt;br /&gt;
&lt;br /&gt;
I have turned on the “Surface mesh” option in order to better see the contours of the terrain as I carve out the river. You can use the flatten tool to make the basic level of the river, then lower and smooth to detail it and make it look natural. Once you have your river, it's time to put in some water.&lt;br /&gt;
&lt;br /&gt;
The important thing to note here is the size of the brush I am using. It is much larger than the river for a good reason. In order to have the water clip properly with the slopes of the riverbanks, the water must go under the land, as illustrated here:&lt;br /&gt;
&lt;br /&gt;
Also, if you decide to widen part of your river later, the water is already there. Now since this is a river, it flows, so we have to work with the water some more to make the appearance of flowing. You must choose the direction it will flow. I have decided to make this river flow generally right to left across the area.&lt;br /&gt;
&lt;br /&gt;
The ripple effects change how rough the water is, as does the smoothness. You shouldn't play with refraction for regular water, the default looks fine. The important controls here are the three water layers. They contain sliders for scroll direction and rate, which is what we manipulate to make the flowing effect. I believe the tool names are self explanatory. Just play with them until the river appears to be flowing the correct direction at the correct speed.&lt;br /&gt;
&lt;br /&gt;
But wait you say! The flow is only happening in one of the metatiles! That's correct little Jimmy, the water options are for a single metatile, the same space in which your textures are counted. After setting it up hit export to save the settings, then you can change the other sections in one of two ways. Either select the metatile and import, or you can use the water brush again, as it will use these settings until you change them. You will probably have to adjust the flow directions some in various tiles unless your river is mostly straight and in a single direction.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Make all stream bends at the edges of the metatiles, so you can adjust the flow directions to look correct without screwing up other parts of the stream.&lt;br /&gt;
&lt;br /&gt;
After you have your water, hide it and head for textures. Your streambed looks like crap with just grass on it, let's fix that.&lt;br /&gt;
&lt;br /&gt;
Here I have selected TT_GG_Grass_35 at 100% pressure. Yes the texture name is grass and yes it looks like rocks, don't worry about that. I'm painting this down all along the streambed and up to the shoreline, though I'm not taking much care to make sure it matches the shoreline. Nature isn't nice and neat about this, so neither should you be. Now if you're thinking of skimping on this step, check out the following image:&lt;br /&gt;
&lt;br /&gt;
This is a comparison between the stream as it was and with the new streambed texture. Looks much better, doesn't it? Textures are important.&lt;br /&gt;
&lt;br /&gt;
After I've laid out this one, I'm going to use a second texture to represent fine silt and to weather the first texture a bit. I've selected TT_GD_Dirt_06 at 50% pressure for this job.&lt;br /&gt;
&lt;br /&gt;
This removes the clean-cut nature of the previous texture. After all, how many streambeds have you seen that were nice and tidy? This looks like it's had sedimentation, which is what we want. Again, don't be too neat on this.&lt;br /&gt;
&lt;br /&gt;
Now for a little '''PROTIP''' for extra realism. Think of how your stream flows when you lay down these textures. Deposits will be thicker where the stream changes directions and pushes more material against a bank, and thinner on the opposite bank of where this occurs. Like so:&lt;br /&gt;
&lt;br /&gt;
As you can see, I've laid down the dirt silt texture heavier on the outside of the curve, which also illustrates a changing water level—stream floods from rain and such. The other side is bare.&lt;br /&gt;
&lt;br /&gt;
From here you can tint your textures a bit with the color tool. Darkening them somewhat around the water's edge will make it look muddy, or just randomly changing the tint can help break up any patterns that have emerged. I am not going to go into this since it's a matter of your own asthetics, and there's no real technique to it. It's just another layer in your texture manipulation.&lt;br /&gt;
&lt;br /&gt;
The river isn't finished—we need some vegetation along its banks and such—but that will wait for later. On to the land!&lt;br /&gt;
&lt;br /&gt;
As we all know, water seeks the lowest point, so your land should all be higher than the level of the river. Basic yes, but keep it in mind. I'm going to make the river in the bottom of a shallow valley, with some gentle hills on each side. Nothing too extreme.&lt;br /&gt;
&lt;br /&gt;
I've chosen raise tool at 50% pressure and a very large brush. This will allow me to make large, gentle hills easily. I'm also going to turn the mesh back on, and bring the camera down to a shallower angle to get a better look at the terrain height as I shape it.&lt;br /&gt;
&lt;br /&gt;
There we go. Nothing too extreme elevation wise, but it looks pretty natural. I'm not going to do any real fine elevation details here, since this looks about the way I want it. You don't have to get crazy with your elevation editing. I would highly suggest just walking around and taking a look at your local land formations, and reading some geology texts online to get a feel for how land is formed. Expertise is by no means needed, but a general sense of rock formations and erosion is helpful. Now let's do some buildings. This is only going to be a small village, so a small number of buildings is in order. I'm going to use the rural building type since it has the character I want in this village, with maybe a few swamp buildings to add variety. I'm going to cluster the buildings around that fork in the river, and put in a few bridges to connect it all together. The bridges will go first, then the buildings, then I'll add in paths.&lt;br /&gt;
&lt;br /&gt;
Being that this is a little backwater of a village, I'm not doing anything fancy for the bridges. You'll note it's slightly underground at the edges, that is intentional. When I put in the dirt texture for those paths, it will look like dirt has gradually been kicked over the edges of the bridge over the years, which gives it a nice weathered effect.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': You noticed that there's a little crease when you change river flow directions. You can place your bridge over that crease and hide it, making the illusion of a seamless river. And remember that you can scale the bridge if it doesn't quite fit.&lt;br /&gt;
&lt;br /&gt;
With the bridges in place I begin to put down buildings. Now, I prefer to do buildings first then add the roads after, some prefer the opposite. It doesn't really matter, it's up to your tastes. I will do it my way because I'm writing the guide, so there.&lt;br /&gt;
&lt;br /&gt;
hay whats going on here&lt;br /&gt;
&lt;br /&gt;
Hills can do that to buildings. Sometimes it's okay, just use alt-drag to put it at the level you want, but here I want it flat. Select the building, go to the terrain tab, use flatten under, and that will flatten your terrain under the building. You'll need to shape this a bit, otherwise it looks very artificial.&lt;br /&gt;
&lt;br /&gt;
Here's our nice little village.&lt;br /&gt;
&lt;br /&gt;
Next step is to put up a wall, and fill in the paths. The wall is just a matter of finding the pieces and putting them together as you wish, and the paths are done with texture sprays. I am using TT_GD_Dirt_30 at 100% pressure for this one.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Pay attention to where light would fall, and consider how that would effect the growth of the grass. Under visible blockages such as decks, you may want to change the grass texture to dirt as thus:&lt;br /&gt;
&lt;br /&gt;
It's a small thing, but adds some good detail. Here's our village now.&lt;br /&gt;
&lt;br /&gt;
There will be a few more paths added, a couple things missed, but this will do for now for the purposes of illustration. Now, the path textures look a little flat. I'm going to layer some gravelly textures along with the dirt in order to make them look more real, and I'm going to very slightly lower the ground along the paths to represent the wear of the ground by all the traffic. TT_GR_Rocky_01 will do for this, at various pressures.&lt;br /&gt;
&lt;br /&gt;
I keep the gravel closer to the middle, as happens to real dirt paths. That looks much better than the flat texture we had before. This may be becoming a pattern too—two textures layered can often produce a very nice effect. The six texture limit is to be watched carefully, but don't be afraid to use your textures.&lt;br /&gt;
&lt;br /&gt;
Now I'm lowering the terrain slightly. The pressure on the brush is only 18%, and I'm only clicking once. The mesh mode is especially helpful here, you can actually see the individual vertexes you're lowering.&lt;br /&gt;
&lt;br /&gt;
The results:&lt;br /&gt;
&lt;br /&gt;
Now that path looks like it's gone through some use. With paths and walls completed, I'm going to do the detail placeables for the town. First I'm going to add a couple wheat fields in the empty area I left near the windmill. The grass tool has wheat, and I'll change the ground texture in the fields to a dark dirt. While I'm there, I'm going to add grass all around the area.&lt;br /&gt;
&lt;br /&gt;
The wheat fields, with paths added. Note that I used texture coloring to darken the dirt texture that I put under the wheat even further, to give the appearance of plowed up dirt. I'm going to use AG_Tall_Grass_01 for the grass itself. For water plants, I'll be using the various reed types.&lt;br /&gt;
&lt;br /&gt;
At this point I start putting up more placeables. Anvils, shovels, plows, et cetera. I'm not going to go through it all since it's too much and it's all a matter of personal taste. I'm sure you know how to detail an area with placeables, it's really not any different than it was in NWN1. I'm also putting some trees in the town, not too many but enough for flavor. We'll discuss tree fun in the wilderness in a bit. Here's where the village is now.&lt;br /&gt;
&lt;br /&gt;
At this point I think the village is about complete. There are a few other things to be done later, but we'll get to that. Right now, we're moving on to the poor neglected wilderness surrounding the village.&lt;br /&gt;
&lt;br /&gt;
Trees! Trees trees. Yes trees, you need trees, trees are your friend. Unless it's a treeless wilderness. Obsidian reccomends no more than five unique trees per area for performance reasons. I've found you can get away with more than that, but we'll stick to five for the purposes of this, and to show how mixing and layering your trees can give the impression you have far more. First, our suspects.&lt;br /&gt;
&lt;br /&gt;
These trees will form our light forest, and the forested horizon.&lt;br /&gt;
&lt;br /&gt;
The actual matter of placing trees isn't much different than NWN. Note that you cannot rotate trees, but you can change the seed value to get a different looking tree. The variety is truly huge, do spend some time looking at different seeds. Each seed value counts as a unique tree, by the way, so if you have five oaks with five different seed values, those are your five trees. Fortunately, every tree of the same speed counts as one tree (don't ask me the specifics, I imagine just because it only has to render the one), so you can have a huge number of them with little impact on performance. So pick your trees and start dropping. I'm going to keep the trees a bit away from the village, figuring that they would have logged out the woods nearby and kept it cut back for defensive purposes.&lt;br /&gt;
&lt;br /&gt;
My method is to place them one tree type at a time, in order to make sure they're mixed up enough to look natural. Remember that you can create prefab clumps to use if you wish. I've stuck with just the walkable area for this, next we'll do the border.&lt;br /&gt;
&lt;br /&gt;
And a closer look:&lt;br /&gt;
&lt;br /&gt;
Now, obviously, if you look at it carefully enough you can tell that the trees are all clones. But the illusion is good enough to look good, and there's really nothing else you can do. For the borders, just grab some patches of your forest and start cutting and pasting them outside. Shuffle them around a bit and it's unlikely it'll be noticed.&lt;br /&gt;
&lt;br /&gt;
At this point you can further decorate, using grasses and such for groundcover, shrub placeables, forest floor textures, et cetera. There's nothing really new in those techniques to show, so I won't bother with it. The final step here is going to be the walkmesh.&lt;br /&gt;
&lt;br /&gt;
Right now, the river is totally walkable. Let's see how that would look if Jimmy the tester decided to cross the streams (I have turned off visible trees for simplicity's sake in these screens).&lt;br /&gt;
&lt;br /&gt;
hay wheres jimmy&lt;br /&gt;
&lt;br /&gt;
o there he is drowning under the stream&lt;br /&gt;
&lt;br /&gt;
Simply, I'm illustrating that this stream is far too deep to reasonably walk across, so we're going to mark it unwalkable. Terrain tools include a walk/non walk brush, which allows you to manipulate the walkmesh. I turn off water to see what I'm doing and start marking the stream non walkable.&lt;br /&gt;
&lt;br /&gt;
Don't worry about being too precise here. I'm just clicking in the middle of the stream, if people can walk into it on the edges that's just fine. Better, in fact.&lt;br /&gt;
&lt;br /&gt;
But wait! How are you going to cross the bridges? Simple my man. Set all the space under the bridge as unwalkable except the edges, make sure the bridge is set to IsWalkable=False (counter-intuitive, yes, but it's the way it works), then bake the area. This will make your bridge work. If you have any parts of the area that PCs can't access, go set them as unwalkable. The less walkable area, the smaller the file size.&lt;br /&gt;
&lt;br /&gt;
And that's it for this walkthrough! We've covered streams, forests, dirt paths, foliage, bridges, and walkmeshes.&lt;br /&gt;
&lt;br /&gt;
=== Interiors ===&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
Interiors pretty much work exactly like they did in NWN. If you've used the interior tilesets like Velmar's, where you have to assemble it one tile at a time, that's how it works. You can mix tiles up freely as well, and add water inside.&lt;br /&gt;
&lt;br /&gt;
... and, uh, that's all. There's really nothing for me to do, it's all tiles and pretty easy. Enjoy.&lt;br /&gt;
&lt;br /&gt;
=== Continuous Areas ===&lt;br /&gt;
In NWN1, continuous areas were made by carefully counting and noting the tiles at each edge, so they could be replicated on the other side. In NWN2 this is no longer possible, but it's actually even easier to make a continuous area now.&lt;br /&gt;
&lt;br /&gt;
''&lt;br /&gt;
'''You can follow the directions below but you can also get the  [[Tanita's TerraCoppa Plugin]] which allows you to move parts of areas to a new one, preserving what ever specifics you want.  You can even rotate the area as needed in case you accidently made it facing the wrong directions.'''''&lt;br /&gt;
&lt;br /&gt;
Let's set up a basic area to demonstrate.&lt;br /&gt;
&lt;br /&gt;
This small 12x12 area has a big ridge and some trees and buildings thrown around randomly. I have indicated the playable area with the black box for ease of viewing. Now what we're going to do is make the area directly south of this one, the same size, and have it match up perfectly.&lt;br /&gt;
&lt;br /&gt;
First we need to duplicate the area.&lt;br /&gt;
&lt;br /&gt;
Open up and rename your duplicate area to whatever it should be. Now what we have to do is shift the map down using the resize tool. To illustrate further (I have changed the ground texture for another reason):&lt;br /&gt;
&lt;br /&gt;
The area within the black box is our current playable area, the rest is the shelf. What we're going to do is shift the map, so the area within the blue box becomes the new plaable area, and the area in the red box (which is playable in the area directly north of our duplicate) is the new shelf of the duplicate. This way the areas match up perfectly, and you can actually see what's in the other area before going there.&lt;br /&gt;
&lt;br /&gt;
Next step is to delete all the placeables north of the new shelf, otherwise they'll shift around and screw everything up. The shelf is two meta tiles wide, so everything north of that goes.&lt;br /&gt;
&lt;br /&gt;
Now for the resizing process. To do this we increase the south size by twelve tiles, and decrease the north by twelve (for this 12x12 area, adjust for the area size of course). Again to illustrate more clearly:&lt;br /&gt;
&lt;br /&gt;
The area will then resize, and this is the result:&lt;br /&gt;
&lt;br /&gt;
Here's our final area. The formerly playable area that has become the new northern shelf is in blue, the former shelf that's in the new playable area is in red, and the playable portion of this area is in black. You'll notice the texture of the new one is back to the default, and naturally the edge of the raised terrain is just a cliff, but it's all there and ready to continue. Perfectly continuous areas.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Main_Page&amp;diff=3773</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Main_Page&amp;diff=3773"/>
				<updated>2022-10-18T01:46:06Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 2.25em; text-align: center; margin: 25px;&amp;quot;&amp;gt;[[Joining ALFA|Join ALFA]] &amp;amp;bull; [[Getting Started|Get Started]] &amp;amp;bull; [[Help Wanted|Contribute]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin: auto; width: 100%;&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px; width: 66%;&amp;quot; | {{homeHeader|A Land Far Away}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 7px;&amp;quot;&amp;gt;''A land far away—a magical term that gives rise to mental images of exotic lands and exciting adventures. A land far away—the setting of countless fairy-tales and myriad bed-time stories. A land far away—that special place that we all go to when we need to escape the pressures and vicissitudes of life.''&lt;br /&gt;
&lt;br /&gt;
Welcome to ''[[A Land Far Away]]'', a persistent world where the vast, wondrous Dungeons &amp;amp; Dragons™ universe takes on a life all of its own. A place where like-minded role-players of all races, cultures and creeds gather to delight in the wonder and joy of a thousand shared imaginations. A place where the raconteur holds others spellbound; a place where every decision has consequences; a place where the games unfold before your eyes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Spotlight}}&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Servers}}&lt;br /&gt;
* [[Baldur's Gate (Server) | NWN2 Baldur's Gate]]&lt;br /&gt;
* [[Moonshae Isles (Server) | NWN2 Moonshae Isles]]&lt;br /&gt;
* [[The Silver Marches (Server) | NWN2 The Silver Marches]]&lt;br /&gt;
* [[NWN1 Waterdeep | NWN1 Waterdeep]]&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|World}}&lt;br /&gt;
* [[Deity|Deities]]&lt;br /&gt;
* [[Event]]s&lt;br /&gt;
* [[Language]]s&lt;br /&gt;
* [[Location]]s&lt;br /&gt;
* [[People]]&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Community}}&lt;br /&gt;
* [http://www.alandfaraway.info/ Website]&lt;br /&gt;
* [http://www.alandfaraway.info/phpBB3 Forums]&lt;br /&gt;
* [https://discord.gg/9pZKj9Y Discord Channel]&lt;br /&gt;
* [[IRC Chat]]&lt;br /&gt;
* [https://www.facebook.com/ALandFarAway Fan] and [https://www.facebook.com/groups/alandfaraway/ Group] pages on Facebook &lt;br /&gt;
* [[ALFA Community Positions]]&lt;br /&gt;
* [[:Category:Player_Group|Player Groups]]&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Mechanics}}&lt;br /&gt;
* [[Class]]es&lt;br /&gt;
* [[Crafting_Guide|Crafting]]&lt;br /&gt;
* [[Feat]]s&lt;br /&gt;
* [[Race]]s&lt;br /&gt;
* [[Skill]]s&lt;br /&gt;
* [[Spell]]s&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Manuals}}&lt;br /&gt;
* [[Player Manual]]&lt;br /&gt;
* [[Dungeon Master Manual]]&lt;br /&gt;
* [[Technical Manual]]&lt;br /&gt;
* [[Frequently Asked Questions]]&lt;br /&gt;
| colspan=&amp;quot;1&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;border: 1px solid #462415; padding: 7px;&amp;quot; | {{homeHeader|Links}}&lt;br /&gt;
* [http://www.gog.com/game/neverwinter_nights_2_complete Buy Neverwinter Nights 2]&lt;br /&gt;
* [http://ce-update.mst.valhallalegends.com/CE/Vault Skywing's Client Extension]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Western_Heartlands_(Server)&amp;diff=3772</id>
		<title>Western Heartlands (Server)</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Western_Heartlands_(Server)&amp;diff=3772"/>
				<updated>2022-10-18T01:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Servers]]&lt;br /&gt;
[[Category:Beta Servers]]&lt;br /&gt;
{{Server&lt;br /&gt;
| ID = 11&lt;br /&gt;
| HDM = N/A&lt;br /&gt;
| EADM = N/A&lt;br /&gt;
| Name = Western Heartlands&lt;br /&gt;
| DirectConnect = N/A&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Please have a read through the following info for how 011 works;&lt;br /&gt;
&lt;br /&gt;
== Server Bounds ==&lt;br /&gt;
The current server bounds are from the Halfway Inn in the West to Hillsedge in the East and from Soubar in the South to Highstar Lake in the North.&lt;br /&gt;
The exterior part of the server is made from Travel Areas which are at 25% scale (named x02, x03, etc). There are no restrictions on where you can move within the areas. Travelling between areas is seamless, so to cross an area boundary walk &amp;quot;through&amp;quot; the edge. Some areas such as towns are cut out of the scaled version, so to enter e.g. Soubar or Dragonspear Castle you need to use the normal ATs. These are marked as map points.&lt;br /&gt;
&lt;br /&gt;
== Encounters ==&lt;br /&gt;
The travel areas have a looping script that can trigger encounters. If an encounter is triggered you and your party will be jumped to another area to resolve the encounter. To exit the encounter area you need to use the AT marked on the minimap. The encounter areas are quite large so you should have time to sneak or buff if required. One thing to note; the encounter system steps through all PCs in the area and checks for an encounter on solo PCs and PARTY LEADERS. If you are not partied up with your current group you may have to face an encounter alone.&lt;br /&gt;
&lt;br /&gt;
== Starting Areas ==&lt;br /&gt;
There are currently 3 choices for where to start for new characters;&lt;br /&gt;
Gnomes may choose to start as part of the mining village of Silverborough.&lt;br /&gt;
Human Barbarians, Druids and Spirit Shamen may choose to start as High Moor tribespeople at their winter gathering place. This is a more risky option as it's a long walk to civilisation. &lt;br /&gt;
All other new characters start in Soubar.&lt;br /&gt;
&lt;br /&gt;
== DM Quests ==&lt;br /&gt;
There are a few built-in quests that can be triggered by being the right person (race/gender/class/deity etc). If you trigger such a quest you will get a Journal entry with a reference number. Please contact a DM and quote the reference number to accept the quest.&lt;br /&gt;
&lt;br /&gt;
== Heartlands Achievements ==&lt;br /&gt;
There are a number of *persistent* encounters to be found that give extra XP and loot when defeated approximated to what you would have received if DMed at the time. Each one is &amp;quot;one-shot&amp;quot; and will notify you by a Journal entry when complete. There are no restrictions to where you can explore, but I have implemented a system where if you are entering an area that is obviously too dangerous for your party you should be warned. Disclaimer: If you feel like exploring holes in the ground and get iced don't complain that the warning system didn't work, k?&lt;br /&gt;
&lt;br /&gt;
== Look Behind You ==&lt;br /&gt;
In a lot of cases the bad guys are set to walk about the place. Don't assume that because you're standing still you're not going to bump into something.&lt;br /&gt;
&lt;br /&gt;
== Skywing Client Extender ==&lt;br /&gt;
Please try and avoid the temptation of using the map function of the client extender. Please. The underground areas are supposed to be mazey, claustrophobic and uncharted. Waltzing straight across them with one click makes most of my work pointless.&lt;br /&gt;
&lt;br /&gt;
== New Character Friendly ==&lt;br /&gt;
As an extension of the old OAS2 WHL has quite a few statics that are aimed at beginning PCs and the few roads are relatively safe for &amp;quot;ducklings&amp;quot;. The wilderness and underground parts of the server are sometimes rather less forgiving.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Servers}}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=3732</id>
		<title>Building Creatures</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=3732"/>
				<updated>2022-03-06T18:32:48Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Naming Conventions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
First, make sure you need to build it! The [[ALFA Base Resources]] and [[ALFA Campaign Folder]] projects come with many creatures NWN2 has a visual representation for, so in most cases you don't need to build anything. The [[ALFA Spawn System]] also includes functions for setting the name of spawned creatures, so there is often times no reason to create a creature on your own. The fewer creatures in your mod, the smaller and less bloated it will be.&lt;br /&gt;
&lt;br /&gt;
Assuming the creature does need to be created, go ahead and do so as you normally would in the toolset. A few things are different in ALFA, however. Most of this just applies to creatures which are statically spawned, but its probably a good read for any builder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Guidelines ==&lt;br /&gt;
Creatures are expected to follow canon specifications as closely as the toolset allows. If you must deviate on the basis of game mechanics, play-testing should be used to make sure the altered creature's CR is set properly. Always post any deviations from canon specifications on our NWN2 tech forums so that others may comment or follow them for consistency's sake. When setting clerical domains and alignment, be sure to base things off of the most popular deity for the creature type. When setting spells and equipment, be sure and follow FR's lore and canon if at all possible. Our first priority is game balance, and then following FR lore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
The following conventions will need to be used in naming creature blueprints to avoid any conflicts with other blueprints and to ensure that all content works properly with scripts:&lt;br /&gt;
&lt;br /&gt;
=== Localized Name ===&lt;br /&gt;
Creature names should not be revealed to players in-game, unless a sufficiently unique creature or equipment model does not exist for the creature being created. In such cases, choose a one or two word descriptive name, but be sure you reveal as little of the meta information about the creature as possible. Size based descriptive words are not necessary since creatues can be scaled in NWN2 to properly reflect their size.&lt;br /&gt;
&lt;br /&gt;
Putting creature names inside &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; will make them visible only to builders. However, make sure you put the bracketed part behind a Discriptive name or DMs cannot see these in game. This will help builders distinguish between multiple blueprints of the same type and convey important reference information at a glance without revealing any of the information to players in the game. Generally, a creatures name or race, social role or class, gender (if applicable), and challenge rating are useful characteristics to record within {}.  Make sure however that you do not start the name with the bracketed info, doing so will make it so the DM cannot read the creature in creation menu or find them in the area.&lt;br /&gt;
&lt;br /&gt;
: 'Example: &amp;lt;code&amp;gt;Larger Kobold {Chieftain CR1}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Male Human {Barbarian CR3}&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Template, ResRef, and Tag ===&lt;br /&gt;
: ''See also: [[ResRef]], [[Tag]], and [[Template]]''&lt;br /&gt;
The primary purpose of tag and resref naming conventions is to prevent any naming conflicts. A secondary purpose is to describe the creature in some way. All global creature blueprints must begin with the &amp;quot;abr_cr&amp;quot; prefix to designate them as global blueprints. Server specific blueprints should begin with a 3 digit server number in place of the &amp;quot;abr&amp;quot;, so &amp;quot;001_cr&amp;quot; for example. For every subcategory, add a two letter acronym delimited with underscores followed lastly by a descriptive name for the creature itself. This helps to quickly locate blueprints when all we have is its resref. To illustrate, here are a few examples:&lt;br /&gt;
&lt;br /&gt;
: ''Example: A global humanoid creature blueprint: &amp;lt;code&amp;gt;abr_cr_hu_koboldchieftain&amp;lt;/code&amp;gt;''&lt;br /&gt;
: ''Example: A server NPC blueprint on server 01: &amp;lt;code&amp;gt;001_cr_np_zhents_fzoul&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Descriptions ===&lt;br /&gt;
A creature's description should be the PHYSICAL description in the creature's sourcebook entry, plus anything important a PC should notice specifically about the creature that isn't obvious by looking at it in-game. It should not flat-out identify what the creature's textbook name is, however.&lt;br /&gt;
: ''Good example: &amp;quot;This tall, thin humanoid is defined by sleek, alien features. Its gray skin smells of decay.&amp;quot;''&lt;br /&gt;
: ''Bad example: &amp;quot;A [[Bodak]], looking around for prey.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Comment ===&lt;br /&gt;
To identify and track blueprint versions, it's best to write your name and the date you modified the blueprint in the comments area. &lt;br /&gt;
: ''Example: Created By: John Doe, Date Modified: 2006-12-20''&lt;br /&gt;
&lt;br /&gt;
For global blueprints, you should also include a link to this wiki page so builders that are unfamiliar with conventions or configuration options can easily find them.&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
The default basemod creatures should already have these handlers in place, so if you are copying an existing blueprint, you probably don't need to do anything here. To start off with, make sure the creature's event scripts are all set correctly. The default scripts are:&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onphysicallyattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_oninventorydisturbed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onendcombatround&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onblocked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onperception&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onrested&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspawnin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the lower-level creatures of a given race are always vastly more numerous than their higher-level bretheren. Make more versions of them, especially the level 1 warriors, with different sorts of appearances and equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior ==&lt;br /&gt;
Behavioral information for each creature should be present on the creature in the form of a non-droppable, non-pickpocketable blank scroll named after the creature or its race/organization. The tag and resref of the item should be &amp;lt;code&amp;gt;abr_it_cd_'''&amp;lt;description&amp;gt;'''&amp;lt;/code&amp;gt;. Put as much information here as you can stand, but it should all come from canon sources. You'd typically only need one information scroll per race or organization (only one for [[Goblin | goblins]], one for [[Kobold | kobolds]], one for [[Zhentarim]], etc.), unless the creature is unique.&lt;br /&gt;
&lt;br /&gt;
=== Behavior Types ===&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
If the creature is expected to fight at any point, determining how we expect the creature to behave in a fight is also important. Create a local string on the creature named &amp;lt;code&amp;gt;'''ACR_CREATURE_BEHAVIOR'''&amp;lt;/code&amp;gt;, and set the value of that string to one of the following values.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_TANK'''&amp;lt;/code&amp;gt; if you wish your creature to move to the front line and try to hold it. In narrow passages, tanks will attempt to clog the passage. In open fields, tanks will fan out to try to keep as many enemies as possible &amp;quot;covered&amp;quot; as evenly as possible.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_FLANK'''&amp;lt;/code&amp;gt; if you wish your creature to actively seek people who are fighting others, and to strike them in melee from behind.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SHOCK'''&amp;lt;/code&amp;gt; if you wish your creature to run in past the front line with reckless abandon, prioritizing &amp;quot;soft&amp;quot; enemy targets.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_BUFFS'''&amp;lt;/code&amp;gt; if you wish your creature to focus on support magic for allies. Or, opportunistically, healing.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MEDIC'''&amp;lt;/code&amp;gt; if you wish your creature to focus on healing magic for allies. Or, opportunistically, support magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SKIRMISH'''&amp;lt;/code&amp;gt; if you wish your creature to fight at range until enemies close, and then switching to melee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ARCHER'''&amp;lt;/code&amp;gt; if you wish your creature to only fight at range.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_CONTROL'''&amp;lt;/code&amp;gt; if you wish your creature to focus on special powers that alter the battlefield, attempting to use things like grease, entangle, and summon monster to stop enemies from getting around.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_NUKE'''&amp;lt;/code&amp;gt; if you wish your creature to use its strongest magical abilities to repeatedly hit the strongest enemy it can find.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MINDLESS'''&amp;lt;/code&amp;gt; if your creature is mindless, and fights fearlessly without strategy or concern for personal safety.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ANIMAL'''&amp;lt;/code&amp;gt; if your creature is an animal, and fights without strategy (but still doesn't want to die).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_COWARD'''&amp;lt;/code&amp;gt; if your creature is a coward, and runs away from conflict.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
A few things should be kept in mind when creating a creature's equipment. The first thing is, what drops? Generally its best if a creature drops all of its non-armor equipment, for realism's sake if nothing else. However, in many cases its best not to drop armor with a creature, especially if that creature is going to be used as a static spawn. Armor is heavy and expensive, so it presents stronger PCs with ways of gaining income while preventing weaker PCs from doing so, creating a wealth gap. Furthermore, its price means it sometimes adds significantly to the wealth of a spawns drop, possibly making the spawn drop more wealth than it should. Also, its rather logical that killing a creature will damage its armor reasonably often. Finally, removing armor from a corpse would be a time-consuming afair, and carrying it would not be easy. This would not be something done often (unless the armor is especially valuable or magical, which it shouldn't be anyway in the case of a static spawn).&lt;br /&gt;
&lt;br /&gt;
Now, about spawn drops. The good news is in most circumstances, you don't have to add loot to a creature for static spawns! If the value of the equipment the creature uses is reasonable, you probably don't have to think about loot at all. Loot is created automatically with scripts, based on many variables in an attempt to match up believable loot (if any) to your creature. The value of the loot is based off of the value of the creature's dropped equipment and its CR, so setting the CR correctly is vital. If the creature is a static spawn, please try to use this built-in loot system unless there is very good reason not to. If a spawn does not use this loot system, it may need to be updated if ALFA's wealth standards for static spawns change in the future.&lt;br /&gt;
&lt;br /&gt;
To disable the loot system, set the &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; local integer variable on the creature to a value of 1. If you want to modify the amount of loot droped, set the &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; local float variable to the desired value. This alters the creature's CR for the purposes of calculating loot drops (whether it is positive or negative). Setting it to 1.0 would produce loot as if the creature had a CR of 1 higher than it does, and setting it to -1.0 would produce the opposite effect, loot as if the creature was 1 CR point lower.&lt;br /&gt;
&lt;br /&gt;
Always set &amp;quot;Leave Lootable Corpse&amp;quot; to true, and &amp;quot;No Permanent Death&amp;quot; to true. Set the corpse decay time to 7200000.&lt;br /&gt;
&lt;br /&gt;
Note that regardless of these settings, all creatures always drop the items in their inventory which are flagged droppable. The loot system never actually removes items from any creature.&lt;br /&gt;
&lt;br /&gt;
Note that if the amount of wealth a creature drops (as set by the builder) exceeds the amount a static spawn of its CR should drop, a warning is printed out in the server's log file. Naturally if the creature isn't a static spawn, this can be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Challenge Rating ==&lt;br /&gt;
: ''See also: [[Challenge Rating]]''&lt;br /&gt;
Also known as &amp;quot;CR&amp;quot;, this is vital. Fortunately NWN2 usually gets a creature's CR close to what it should be on its own. Sometimes it doesn't however, so be sure to understand the concept of CR before proceding further.&lt;br /&gt;
&lt;br /&gt;
A creature's of a certain CR should roughly be as powerful as other creatures of the same CR included in ALFA's base creatures. Even if the creature is not spawned statically, the CR must be set correctly for DMs to be able to tell its relatively balance in a fight, and for XP to be awarded properly. If the creature is spawned statically, its loot will be generated based on its CR. If you don't think you know what a creatures CR should be, do some testing for yourself, or ask someone! A good way to test is to use some of your PCs (either controlled by their players or by yourself with their character files locally on your machine).&lt;br /&gt;
&lt;br /&gt;
Do NOT lower a creatures CR because you want to prevent farming abuse, or to lower a PC's rewards for slaying it. If PCs are gaining too much from a spawn of some sort which has its CR set correctly, the problem is in the way the spawn is set up and not the creature itself. Artificially lowered CRs are not only a good way to under-reward PCs for risking their lives, but sometimes lead to accidental PC deaths if the DM spawning the creatures doesn't know the true strength of the creature (until his PCs are face down in their own blood).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perception Range ==&lt;br /&gt;
If the creature's perception range is less than the PC's (ie less than &amp;quot;long&amp;quot;) by any meaningful margin, the exploitability of the spawn increases dramatically. For this reason, its generally best to set a creature's percept range to &amp;quot;long&amp;quot;. The &amp;quot;long&amp;quot; range has been adjusted to be slightly less than a PC's, allowing the PC to react to the monster without the computer having an advantage in reaction time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Scripting ==&lt;br /&gt;
Most people can skip this. If you're not using the standard AI scripts ALFA uses on creatures, you'll need to make sure you include ALFA's code into your scripts. You do this by including the file &amp;lt;code&amp;gt;'''[[acr_cre_events_i.nss]]'''&amp;lt;/code&amp;gt;, and calling a different function for each event type. These functions are:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpawn()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpellCastAt()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePhysicalAttacked()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDamaged()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDeath()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureBlockedByDoor()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureCombatRoundEnd()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureConversation()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDisturbed()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureHeartBeat()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureRested()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePerception()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureUserDefined()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its absolutely vital to the functioning of ALFA that these scripts are called on each of their events! So make sure they are in there.&lt;br /&gt;
&lt;br /&gt;
== Configuration Options ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
These are the additional configuration options allowed by the ACR. They are edited by changing local variables on the creature's blueprint.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is not given any loot drops by the loot system at all. If unset, it is.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; (float) This value modifies the creatures CR for the purposes of calculating the amount of loot dropped. If positive, it adds to the CR and increases the value of the loot dropped. If negative, it subtracts from the CR.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ABILITIES'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized ability scores. The blueprint is treated as the &amp;quot;average&amp;quot; for the resulting scores.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ALIGNMENT'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized alignment. The blueprint is treated as the &amp;quot;average&amp;quot; for this, and alignment will never differ from the blueprint by more than one step.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_ISUNDEAD'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, this creature will be considered undead for all scripting purposes. It will still need undead creature properties assigned.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_SPAWN_DAMAGED'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will not heal to full health upon spawn-in. This variable allows you to equip your monsters with creature items/equipment that provides health bonuses without them spawning harmed.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CREATURE_AQUATIC'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will be able to breath in or out of water, and be made to assume that its land speed is also its swim speed&lt;br /&gt;
&lt;br /&gt;
These options are available in NWN2 by default:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPECIAL_COMBAT_AI_SCRIPT'''&amp;lt;/code&amp;gt; (string) See the &amp;quot;x2_ai_demo&amp;quot; module for details.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPELL_RANDOM'''&amp;lt;/code&amp;gt; (integer) Setting this variable on a spellcaster creature will make its spelluse a bit more random, but their spell selection may not always be appropriate to the situation anymore.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_STEALTH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate stealth mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_SEARCH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate detect mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play mobile ambient animations after spawn. Use this if you want your creature to roam around the area attempting to use other objects. This simulates random movement.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT_IMMOBILE'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play immobile ambient animations after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X1_L_IMMUNE_TO_DISPEL'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature immune to dispel magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_IS_INCORPOREAL'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 on a creature to make it walk through other creatures.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_NUMBER_OF_ATTACKS'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_MAGIC'''&amp;lt;/code&amp;gt; (integer) The value of this variable is added to the chance that a creature will use magic in combat. Set to 100 for always, 0 for never.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_OFFENSE'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will use offensive abilities in combat. Set to 0 to make them flee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_COMPASSION'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will aid friendly creatures in combat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Considerations ==&lt;br /&gt;
* Set the creature's [[Challenge Rating | CR]] accurately.&lt;br /&gt;
* Unless there is a very good reason to, don't create static spawns with &amp;quot;save or die&amp;quot; spells or abilities. The most obvious of these are instant death spells or petrifications, but holdings, sleep spells, fear and confusion often qualify as well. ALFA has much slower advancement than the d20 rules were meant for, and with a 5% chance to fail any saving throw, &amp;quot;save or die&amp;quot; abilities can too-easily kill even powerful PCs with weak creatures.&lt;br /&gt;
* The above isn't so critical if static spawns with &amp;quot;save or die&amp;quot; abilities are avoidable. For example, basilisks can turn a creature to stone with a failed fort save. But they are also slow, lazy creatures, so often times anyone approaching within range of the basilisk's petrification attack is asking for it, and deserves no mercy.&lt;br /&gt;
* Unless there is good reason to, try not to make creatures who's power deviates too significantly from creatures of the same type in ALFA's standard pallet. Not only does this harm the believability and immersion in the world, but it causes some disgruntled PC deaths (&amp;quot;looked like a normal [[Kobold]] to me, but it had an [[Attack Bonus]] of +12?&amp;quot;).&lt;br /&gt;
* If you do make creatures with a significantly different power level from others of their type, make sure they have some visual difference from their kin so as to not surprise that party of PC1s with those nasty +12 AB kobolds.&lt;br /&gt;
* If you make a Fey, Elemental or Incorporeal Undead Creature, Check the ''''''Spirit Override'''''' box in the properties tab.  This allows the 'Chastise Spirits' ability to function properly.&lt;br /&gt;
* If you are making a creature that uses a vfx solely to show what it is like a Willowisp, use the Willowwisp appearance and set the vfx accordingly.  Do not use the Invisible Man appearance as it will not render the vfx ingame.&lt;br /&gt;
* If you are making a creature that is just armor or held weapons, use the invisible man appearance and equip the items you wish to have seen.&lt;br /&gt;
* If you want a creature to use its special abilities or a caster to use its spells only, you will want to set the variables of /X2_L_BEH_MAGIC = 100 /  X2_L_BEH_OFFENSE = between 1-5 / X2_SPELL_RANDOM =75.  This will get you a creature that uses its spells or abilites almost exclusively.  Adjust the X2_L_BEH_MAGIC down if you want the creature to only use its ability every few rounds and adjust the X2_L_BEH_OFFENSE up to use melee in between.&lt;br /&gt;
* Did I mention the CR must be set correctly?&lt;br /&gt;
* When in doubt, play test your creations! Its really all about play balance, and keeping the ALFA experience as consistent as possible between all our different builders with their own assumptions about how to build.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=vbv5e7Yr3Yo Video Tutorial]: Recorded live stream Q&amp;amp;A and creature creation process.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Items&amp;diff=3731</id>
		<title>Building Items</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Items&amp;diff=3731"/>
				<updated>2022-02-14T20:51:11Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
All items should be priced according to 3.5 edition canon (Player's Hand Book, Dungeon Master's Guide, etc), and to the ALFA specific exceptions set forth by ALFA [[Standards]]. '''Do not make items worth less than 1gp yet!''' Our currency system for silver and copper pieces is not yet ready, and we may not know how it will work until we have the client in our hands.&lt;br /&gt;
&lt;br /&gt;
'''Premise''': An item should be identifiable from it's tag/resref.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;prefix&amp;gt;_it_&amp;lt;type&amp;gt;_&amp;lt;description&amp;gt;_&amp;lt;ID&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;prefix&amp;gt;''' is either &amp;quot;abr&amp;quot; (minus the quotes) for default ALFA items, or a three digit code of the server.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;type&amp;gt;''' is a three-letter abbreviation describing the slot occupied by the item.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;description&amp;gt;''' is the number of fields necessary to describe any additional properties on the item.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;ID&amp;gt;''' is an optional two-digit number used to distinguish items with identical properties. Leave the &amp;lt;ID&amp;gt; off of tags - it goes on resrefs only.&lt;br /&gt;
&lt;br /&gt;
Item tags should NEVER be longer than 28 characters. The game allows 32, so don't use them all.&lt;br /&gt;
&lt;br /&gt;
'''Scripting''': For information on how to script items, go here.&lt;br /&gt;
&lt;br /&gt;
'''Examples''': A standard longsword would be, '''Tag''': abr_it_wpn_longsword '''ResRef''': abr_it_wpn_longword_01&lt;br /&gt;
&lt;br /&gt;
'''Materials'''&lt;br /&gt;
* Abyssal Bloodiron ay&lt;br /&gt;
* Adamantine ad&lt;br /&gt;
* Alchemical Silver sa&lt;br /&gt;
* Arandur aa&lt;br /&gt;
* Astral Driftmetal as&lt;br /&gt;
* Aurorum au&lt;br /&gt;
* Bluewood bw&lt;br /&gt;
* Cold Iron ci&lt;br /&gt;
* Copper co&lt;br /&gt;
* Darksteel dk&lt;br /&gt;
* Darkwood (Zalantar) za&lt;br /&gt;
* Dlarun dl&lt;br /&gt;
* Dragonbone db&lt;br /&gt;
* Dragonfang df&lt;br /&gt;
* Dragonhide dh&lt;br /&gt;
* Dragonscale ds&lt;br /&gt;
* Duskwood du&lt;br /&gt;
* Fever Iron fr&lt;br /&gt;
* Fiendbone fb&lt;br /&gt;
* Frystalline fy&lt;br /&gt;
* Gold go&lt;br /&gt;
* Hide hi&lt;br /&gt;
* Hizagkuur hz&lt;br /&gt;
* Laminated Steel ls&lt;br /&gt;
* Living Metal lm&lt;br /&gt;
* Mithral mi&lt;br /&gt;
* Obsidian ob&lt;br /&gt;
* Pandemonic Silver ps&lt;br /&gt;
* Platinum pt&lt;br /&gt;
* Serren se&lt;br /&gt;
* Silver sv&lt;br /&gt;
* Solarian Truesteel tr&lt;br /&gt;
* Sondarr so&lt;br /&gt;
* Suzailian Chainweave ch&lt;br /&gt;
* Weirwood ww&lt;br /&gt;
* Ysgardian Heartwire ys&lt;br /&gt;
&lt;br /&gt;
'''Quality'''&lt;br /&gt;
* Arcane Spell Failure -10% asf1&lt;br /&gt;
* Drowcraft dc&lt;br /&gt;
* Masterwork mw&lt;br /&gt;
* Plus one e1&lt;br /&gt;
* Poor po&lt;br /&gt;
* Armour Class +1 ac1&lt;br /&gt;
* Bonus Spell, Level 0 sb0&lt;br /&gt;
* Bonus Spell, Levels 0, 1, 2 sb012&lt;br /&gt;
* Damage Resistance 1 dr1&lt;br /&gt;
* Damage Resistance 5/magic dr5m&lt;br /&gt;
* Damage Resistance Fire 5 drf5&lt;br /&gt;
* Feat: Alertness fale&lt;br /&gt;
* Feat: Ambidexterity famb&lt;br /&gt;
* Feat: Combat Casting fcca&lt;br /&gt;
* Feat: Darkvision fdar&lt;br /&gt;
* Feat: Dodge fdod&lt;br /&gt;
* Feat: Extra Turning fext&lt;br /&gt;
* Feat: Mobility fmob&lt;br /&gt;
* Feat: Spell Focus (One) fsf1&lt;br /&gt;
* Feat: Spell Penetration fpen&lt;br /&gt;
* Feat: Two Weapon Fighting ftwf&lt;br /&gt;
* Feat: Weapon Finesse fwfi&lt;br /&gt;
* Spell Immunity, Level 0 si0&lt;br /&gt;
* Spell Resistance 12 sr12&lt;br /&gt;
* Freedom of Movement fom&lt;br /&gt;
* Immunity: Death Magic ide&lt;br /&gt;
* Immunity: Disease idi&lt;br /&gt;
* Immunity: Drain idr&lt;br /&gt;
* Immunity: Fear ife&lt;br /&gt;
* Immunity: Gas iga&lt;br /&gt;
* Immunity: Magic Missle imm&lt;br /&gt;
* Immunity: Paralysis ipa&lt;br /&gt;
* Immunity: Poison ipo&lt;br /&gt;
* Save, Acid +1 sac1&lt;br /&gt;
* Save, Cold +1 sco1&lt;br /&gt;
* Save, Death +1 sde1&lt;br /&gt;
* Save, Disease +1 sds1&lt;br /&gt;
* Save, Fear +1 sfe1&lt;br /&gt;
* Save, Fire +1 sfi1&lt;br /&gt;
* Save, Fort +1 sfo1&lt;br /&gt;
* Save, Mind +1 smi1&lt;br /&gt;
* Save, Negative +1 sne1&lt;br /&gt;
* Save, Poison +1 spo1&lt;br /&gt;
* Save, Reflex +1 sre1&lt;br /&gt;
* Save, Sonic +1 sso1&lt;br /&gt;
* Save, Universal +1 sa1&lt;br /&gt;
* Save, Will +1 swi1&lt;br /&gt;
* Hide +1 hi1&lt;br /&gt;
* Damage, Acid +1 da1&lt;br /&gt;
* Damage, Bludgeoning +1 db1&lt;br /&gt;
* Damage, Cold +1 dc1&lt;br /&gt;
* Damage, Divine +1 dd1&lt;br /&gt;
* Damage, Fire +1 df1&lt;br /&gt;
* Damage, Magic +1 dm1&lt;br /&gt;
* Damage, Negative +1 dn1&lt;br /&gt;
* Damage, Piercing +1 dp1&lt;br /&gt;
* Damage, Slashing +1 ds1&lt;br /&gt;
* Damage, Sonic +1 do1&lt;br /&gt;
* Feat: Cleave fcle&lt;br /&gt;
* Feat: Disarm fdis&lt;br /&gt;
* Feat: Improved Critical ficr&lt;br /&gt;
* Feat: Point Blank Shot fpbs&lt;br /&gt;
* Feat: Rapid Shot frap&lt;br /&gt;
* Feat: Weapon Specialisation fwsp&lt;br /&gt;
* Keen ke&lt;br /&gt;
* Massive Criticals +1 mc1&lt;br /&gt;
* Mighty +1 m1&lt;br /&gt;
* Sure Striking sst&lt;br /&gt;
* Vampiric +1 dv1&lt;br /&gt;
* Wounding +1 dw1&lt;br /&gt;
&lt;br /&gt;
This is added in the toolset with a string seperated by the '|' character for each category. The HDMs of every server are free to make their own rules as too where items should be placed, but be aware the DM client cannot see more than one step &amp;quot;deep&amp;quot; into the category tree.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ITEM TIPS ==&lt;br /&gt;
* When creating Creature items, make sure the item is checked as identified, otherwise the creature cannot equip or use the item.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=3730</id>
		<title>Building Creatures</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Creatures&amp;diff=3730"/>
				<updated>2022-02-11T02:22:30Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
First, make sure you need to build it! The [[ALFA Base Resources]] and [[ALFA Campaign Folder]] projects come with many creatures NWN2 has a visual representation for, so in most cases you don't need to build anything. The [[ALFA Spawn System]] also includes functions for setting the name of spawned creatures, so there is often times no reason to create a creature on your own. The fewer creatures in your mod, the smaller and less bloated it will be.&lt;br /&gt;
&lt;br /&gt;
Assuming the creature does need to be created, go ahead and do so as you normally would in the toolset. A few things are different in ALFA, however. Most of this just applies to creatures which are statically spawned, but its probably a good read for any builder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General Guidelines ==&lt;br /&gt;
Creatures are expected to follow canon specifications as closely as the toolset allows. If you must deviate on the basis of game mechanics, play-testing should be used to make sure the altered creature's CR is set properly. Always post any deviations from canon specifications on our NWN2 tech forums so that others may comment or follow them for consistency's sake. When setting clerical domains and alignment, be sure to base things off of the most popular deity for the creature type. When setting spells and equipment, be sure and follow FR's lore and canon if at all possible. Our first priority is game balance, and then following FR lore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Naming Conventions ==&lt;br /&gt;
The following conventions will need to be used in naming creature blueprints to avoid any conflicts with other blueprints and to ensure that all content works properly with scripts:&lt;br /&gt;
&lt;br /&gt;
=== Localized Name ===&lt;br /&gt;
Creature names should not be revealed to players in-game, unless a sufficiently unique creature or equipment model does not exist for the creature being created. In such cases, choose a one or two word descriptive name, but be sure you reveal as little of the meta information about the creature as possible. Size based descriptive words are not necessary since creatues can be scaled in NWN2 to properly reflect their size.&lt;br /&gt;
&lt;br /&gt;
Putting creature names inside &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; will make them visible only to builders. However, make sure you put the bracketed part behind a Discriptive name or DMs cannot see these in game. This will help builders distinguish between multiple blueprints of the same type and convey important reference information at a glance without revealing any of the information to players in the game. Generally, a creatures name or race, social role or class, gender (if applicable), and challenge rating are useful characteristics to record within {}.&lt;br /&gt;
&lt;br /&gt;
: 'Example: &amp;lt;code&amp;gt;Larger Kobold {Chieftain CR1}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Male Human {Barbarian CR3}&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Template, ResRef, and Tag ===&lt;br /&gt;
: ''See also: [[ResRef]], [[Tag]], and [[Template]]''&lt;br /&gt;
The primary purpose of tag and resref naming conventions is to prevent any naming conflicts. A secondary purpose is to describe the creature in some way. All global creature blueprints must begin with the &amp;quot;abr_cr&amp;quot; prefix to designate them as global blueprints. Server specific blueprints should begin with a 3 digit server number in place of the &amp;quot;abr&amp;quot;, so &amp;quot;001_cr&amp;quot; for example. For every subcategory, add a two letter acronym delimited with underscores followed lastly by a descriptive name for the creature itself. This helps to quickly locate blueprints when all we have is its resref. To illustrate, here are a few examples:&lt;br /&gt;
&lt;br /&gt;
: ''Example: A global humanoid creature blueprint: &amp;lt;code&amp;gt;abr_cr_hu_koboldchieftain&amp;lt;/code&amp;gt;''&lt;br /&gt;
: ''Example: A server NPC blueprint on server 01: &amp;lt;code&amp;gt;001_cr_np_zhents_fzoul&amp;lt;/code&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Descriptions ===&lt;br /&gt;
A creature's description should be the PHYSICAL description in the creature's sourcebook entry, plus anything important a PC should notice specifically about the creature that isn't obvious by looking at it in-game. It should not flat-out identify what the creature's textbook name is, however.&lt;br /&gt;
: ''Good example: &amp;quot;This tall, thin humanoid is defined by sleek, alien features. Its gray skin smells of decay.&amp;quot;''&lt;br /&gt;
: ''Bad example: &amp;quot;A [[Bodak]], looking around for prey.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Comment ===&lt;br /&gt;
To identify and track blueprint versions, it's best to write your name and the date you modified the blueprint in the comments area. &lt;br /&gt;
: ''Example: Created By: John Doe, Date Modified: 2006-12-20''&lt;br /&gt;
&lt;br /&gt;
For global blueprints, you should also include a link to this wiki page so builders that are unfamiliar with conventions or configuration options can easily find them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
The default basemod creatures should already have these handlers in place, so if you are copying an existing blueprint, you probably don't need to do anything here. To start off with, make sure the creature's event scripts are all set correctly. The default scripts are:&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onphysicallyattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_oninventorydisturbed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onendcombatround&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onblocked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onperception&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onrested&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspawnin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_cre_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember the lower-level creatures of a given race are always vastly more numerous than their higher-level bretheren. Make more versions of them, especially the level 1 warriors, with different sorts of appearances and equipment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behavior ==&lt;br /&gt;
Behavioral information for each creature should be present on the creature in the form of a non-droppable, non-pickpocketable blank scroll named after the creature or its race/organization. The tag and resref of the item should be &amp;lt;code&amp;gt;abr_it_cd_'''&amp;lt;description&amp;gt;'''&amp;lt;/code&amp;gt;. Put as much information here as you can stand, but it should all come from canon sources. You'd typically only need one information scroll per race or organization (only one for [[Goblin | goblins]], one for [[Kobold | kobolds]], one for [[Zhentarim]], etc.), unless the creature is unique.&lt;br /&gt;
&lt;br /&gt;
=== Behavior Types ===&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
If the creature is expected to fight at any point, determining how we expect the creature to behave in a fight is also important. Create a local string on the creature named &amp;lt;code&amp;gt;'''ACR_CREATURE_BEHAVIOR'''&amp;lt;/code&amp;gt;, and set the value of that string to one of the following values.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_TANK'''&amp;lt;/code&amp;gt; if you wish your creature to move to the front line and try to hold it. In narrow passages, tanks will attempt to clog the passage. In open fields, tanks will fan out to try to keep as many enemies as possible &amp;quot;covered&amp;quot; as evenly as possible.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_FLANK'''&amp;lt;/code&amp;gt; if you wish your creature to actively seek people who are fighting others, and to strike them in melee from behind.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SHOCK'''&amp;lt;/code&amp;gt; if you wish your creature to run in past the front line with reckless abandon, prioritizing &amp;quot;soft&amp;quot; enemy targets.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_BUFFS'''&amp;lt;/code&amp;gt; if you wish your creature to focus on support magic for allies. Or, opportunistically, healing.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MEDIC'''&amp;lt;/code&amp;gt; if you wish your creature to focus on healing magic for allies. Or, opportunistically, support magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_SKIRMISH'''&amp;lt;/code&amp;gt; if you wish your creature to fight at range until enemies close, and then switching to melee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ARCHER'''&amp;lt;/code&amp;gt; if you wish your creature to only fight at range.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_CONTROL'''&amp;lt;/code&amp;gt; if you wish your creature to focus on special powers that alter the battlefield, attempting to use things like grease, entangle, and summon monster to stop enemies from getting around.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_NUKE'''&amp;lt;/code&amp;gt; if you wish your creature to use its strongest magical abilities to repeatedly hit the strongest enemy it can find.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_MINDLESS'''&amp;lt;/code&amp;gt; if your creature is mindless, and fights fearlessly without strategy or concern for personal safety.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_ANIMAL'''&amp;lt;/code&amp;gt; if your creature is an animal, and fights without strategy (but still doesn't want to die).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''BEHAVIOR_TYPE_COWARD'''&amp;lt;/code&amp;gt; if your creature is a coward, and runs away from conflict.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Equipment ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
A few things should be kept in mind when creating a creature's equipment. The first thing is, what drops? Generally its best if a creature drops all of its non-armor equipment, for realism's sake if nothing else. However, in many cases its best not to drop armor with a creature, especially if that creature is going to be used as a static spawn. Armor is heavy and expensive, so it presents stronger PCs with ways of gaining income while preventing weaker PCs from doing so, creating a wealth gap. Furthermore, its price means it sometimes adds significantly to the wealth of a spawns drop, possibly making the spawn drop more wealth than it should. Also, its rather logical that killing a creature will damage its armor reasonably often. Finally, removing armor from a corpse would be a time-consuming afair, and carrying it would not be easy. This would not be something done often (unless the armor is especially valuable or magical, which it shouldn't be anyway in the case of a static spawn).&lt;br /&gt;
&lt;br /&gt;
Now, about spawn drops. The good news is in most circumstances, you don't have to add loot to a creature for static spawns! If the value of the equipment the creature uses is reasonable, you probably don't have to think about loot at all. Loot is created automatically with scripts, based on many variables in an attempt to match up believable loot (if any) to your creature. The value of the loot is based off of the value of the creature's dropped equipment and its CR, so setting the CR correctly is vital. If the creature is a static spawn, please try to use this built-in loot system unless there is very good reason not to. If a spawn does not use this loot system, it may need to be updated if ALFA's wealth standards for static spawns change in the future.&lt;br /&gt;
&lt;br /&gt;
To disable the loot system, set the &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; local integer variable on the creature to a value of 1. If you want to modify the amount of loot droped, set the &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; local float variable to the desired value. This alters the creature's CR for the purposes of calculating loot drops (whether it is positive or negative). Setting it to 1.0 would produce loot as if the creature had a CR of 1 higher than it does, and setting it to -1.0 would produce the opposite effect, loot as if the creature was 1 CR point lower.&lt;br /&gt;
&lt;br /&gt;
Always set &amp;quot;Leave Lootable Corpse&amp;quot; to true, and &amp;quot;No Permanent Death&amp;quot; to true. Set the corpse decay time to 7200000.&lt;br /&gt;
&lt;br /&gt;
Note that regardless of these settings, all creatures always drop the items in their inventory which are flagged droppable. The loot system never actually removes items from any creature.&lt;br /&gt;
&lt;br /&gt;
Note that if the amount of wealth a creature drops (as set by the builder) exceeds the amount a static spawn of its CR should drop, a warning is printed out in the server's log file. Naturally if the creature isn't a static spawn, this can be ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Challenge Rating ==&lt;br /&gt;
: ''See also: [[Challenge Rating]]''&lt;br /&gt;
Also known as &amp;quot;CR&amp;quot;, this is vital. Fortunately NWN2 usually gets a creature's CR close to what it should be on its own. Sometimes it doesn't however, so be sure to understand the concept of CR before proceding further.&lt;br /&gt;
&lt;br /&gt;
A creature's of a certain CR should roughly be as powerful as other creatures of the same CR included in ALFA's base creatures. Even if the creature is not spawned statically, the CR must be set correctly for DMs to be able to tell its relatively balance in a fight, and for XP to be awarded properly. If the creature is spawned statically, its loot will be generated based on its CR. If you don't think you know what a creatures CR should be, do some testing for yourself, or ask someone! A good way to test is to use some of your PCs (either controlled by their players or by yourself with their character files locally on your machine).&lt;br /&gt;
&lt;br /&gt;
Do NOT lower a creatures CR because you want to prevent farming abuse, or to lower a PC's rewards for slaying it. If PCs are gaining too much from a spawn of some sort which has its CR set correctly, the problem is in the way the spawn is set up and not the creature itself. Artificially lowered CRs are not only a good way to under-reward PCs for risking their lives, but sometimes lead to accidental PC deaths if the DM spawning the creatures doesn't know the true strength of the creature (until his PCs are face down in their own blood).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Perception Range ==&lt;br /&gt;
If the creature's perception range is less than the PC's (ie less than &amp;quot;long&amp;quot;) by any meaningful margin, the exploitability of the spawn increases dramatically. For this reason, its generally best to set a creature's percept range to &amp;quot;long&amp;quot;. The &amp;quot;long&amp;quot; range has been adjusted to be slightly less than a PC's, allowing the PC to react to the monster without the computer having an advantage in reaction time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Custom Scripting ==&lt;br /&gt;
Most people can skip this. If you're not using the standard AI scripts ALFA uses on creatures, you'll need to make sure you include ALFA's code into your scripts. You do this by including the file &amp;lt;code&amp;gt;'''[[acr_cre_events_i.nss]]'''&amp;lt;/code&amp;gt;, and calling a different function for each event type. These functions are:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpawn()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureSpellCastAt()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePhysicalAttacked()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDamaged()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDeath()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureBlockedByDoor()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureCombatRoundEnd()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureConversation()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureDisturbed()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureHeartBeat()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureRested()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreaturePerception()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_OnCreatureUserDefined()'''&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Its absolutely vital to the functioning of ALFA that these scripts are called on each of their events! So make sure they are in there.&lt;br /&gt;
&lt;br /&gt;
== Configuration Options ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]''&lt;br /&gt;
These are the additional configuration options allowed by the ACR. They are edited by changing local variables on the creature's blueprint.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_DISABLE'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is not given any loot drops by the loot system at all. If unset, it is.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_LOOT_CR_MOD'''&amp;lt;/code&amp;gt; (float) This value modifies the creatures CR for the purposes of calculating the amount of loot dropped. If positive, it adds to the CR and increases the value of the loot dropped. If negative, it subtracts from the CR.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ABILITIES'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized ability scores. The blueprint is treated as the &amp;quot;average&amp;quot; for the resulting scores.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_RANDOM_ALIGNMENT'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature is spawned with randomized alignment. The blueprint is treated as the &amp;quot;average&amp;quot; for this, and alignment will never differ from the blueprint by more than one step.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_ISUNDEAD'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, this creature will be considered undead for all scripting purposes. It will still need undead creature properties assigned.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CRE_SPAWN_DAMAGED'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will not heal to full health upon spawn-in. This variable allows you to equip your monsters with creature items/equipment that provides health bonuses without them spawning harmed.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_CREATURE_AQUATIC'''&amp;lt;/code&amp;gt; (integer) If set to a nonzero value, the creature will be able to breath in or out of water, and be made to assume that its land speed is also its swim speed&lt;br /&gt;
&lt;br /&gt;
These options are available in NWN2 by default:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPECIAL_COMBAT_AI_SCRIPT'''&amp;lt;/code&amp;gt; (string) See the &amp;quot;x2_ai_demo&amp;quot; module for details.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_SPELL_RANDOM'''&amp;lt;/code&amp;gt; (integer) Setting this variable on a spellcaster creature will make its spelluse a bit more random, but their spell selection may not always be appropriate to the situation anymore.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_STEALTH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate stealth mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_SEARCH'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature activate detect mode after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play mobile ambient animations after spawn. Use this if you want your creature to roam around the area attempting to use other objects. This simulates random movement.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_SPAWN_USE_AMBIENT_IMMOBILE'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature play immobile ambient animations after spawn.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X1_L_IMMUNE_TO_DISPEL'''&amp;lt;/code&amp;gt; (integer) Set to 1 to make the creature immune to dispel magic.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_IS_INCORPOREAL'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 on a creature to make it walk through other creatures.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_NUMBER_OF_ATTACKS'''&amp;lt;/code&amp;gt; (integer) Set this variable to 1 - 6 to override the number of attacks a creature has based on its BAB.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_MAGIC'''&amp;lt;/code&amp;gt; (integer) The value of this variable is added to the chance that a creature will use magic in combat. Set to 100 for always, 0 for never.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_OFFENSE'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will use offensive abilities in combat. Set to 0 to make them flee.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''X2_L_BEH_COMPASSION'''&amp;lt;/code&amp;gt; (integer) The higher value of this variable, the higher the chance that the creature will aid friendly creatures in combat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Considerations ==&lt;br /&gt;
* Set the creature's [[Challenge Rating | CR]] accurately.&lt;br /&gt;
* Unless there is a very good reason to, don't create static spawns with &amp;quot;save or die&amp;quot; spells or abilities. The most obvious of these are instant death spells or petrifications, but holdings, sleep spells, fear and confusion often qualify as well. ALFA has much slower advancement than the d20 rules were meant for, and with a 5% chance to fail any saving throw, &amp;quot;save or die&amp;quot; abilities can too-easily kill even powerful PCs with weak creatures.&lt;br /&gt;
* The above isn't so critical if static spawns with &amp;quot;save or die&amp;quot; abilities are avoidable. For example, basilisks can turn a creature to stone with a failed fort save. But they are also slow, lazy creatures, so often times anyone approaching within range of the basilisk's petrification attack is asking for it, and deserves no mercy.&lt;br /&gt;
* Unless there is good reason to, try not to make creatures who's power deviates too significantly from creatures of the same type in ALFA's standard pallet. Not only does this harm the believability and immersion in the world, but it causes some disgruntled PC deaths (&amp;quot;looked like a normal [[Kobold]] to me, but it had an [[Attack Bonus]] of +12?&amp;quot;).&lt;br /&gt;
* If you do make creatures with a significantly different power level from others of their type, make sure they have some visual difference from their kin so as to not surprise that party of PC1s with those nasty +12 AB kobolds.&lt;br /&gt;
* If you make a Fey, Elemental or Incorporeal Undead Creature, Check the ''''''Spirit Override'''''' box in the properties tab.  This allows the 'Chastise Spirits' ability to function properly.&lt;br /&gt;
* If you are making a creature that uses a vfx solely to show what it is like a Willowisp, use the Willowwisp appearance and set the vfx accordingly.  Do not use the Invisible Man appearance as it will not render the vfx ingame.&lt;br /&gt;
* If you are making a creature that is just armor or held weapons, use the invisible man appearance and equip the items you wish to have seen.&lt;br /&gt;
* If you want a creature to use its special abilities or a caster to use its spells only, you will want to set the variables of /X2_L_BEH_MAGIC = 100 /  X2_L_BEH_OFFENSE = between 1-5 / X2_SPELL_RANDOM =75.  This will get you a creature that uses its spells or abilites almost exclusively.  Adjust the X2_L_BEH_MAGIC down if you want the creature to only use its ability every few rounds and adjust the X2_L_BEH_OFFENSE up to use melee in between.&lt;br /&gt;
* Did I mention the CR must be set correctly?&lt;br /&gt;
* When in doubt, play test your creations! Its really all about play balance, and keeping the ALFA experience as consistent as possible between all our different builders with their own assumptions about how to build.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://www.youtube.com/watch?v=vbv5e7Yr3Yo Video Tutorial]: Recorded live stream Q&amp;amp;A and creature creation process.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Acr_spells_i.nss&amp;diff=3699</id>
		<title>Acr spells i.nss</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Acr_spells_i.nss&amp;diff=3699"/>
				<updated>2022-01-07T07:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: Created page with &amp;quot;//////////////////////////////////////////////////////////////////////////////// // //  System Name : ALFA Core Rules //     Filename : acr_spells_i.nss //      Version : 0.1...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
//  System Name : ALFA Core Rules&lt;br /&gt;
//     Filename : acr_spells_i.nss&lt;br /&gt;
//      Version : 0.1&lt;br /&gt;
//         Date : 2011-05-26&lt;br /&gt;
//       Author : Ronan&lt;br /&gt;
//&lt;br /&gt;
//  Local Variable Prefix = None&lt;br /&gt;
//&lt;br /&gt;
//&lt;br /&gt;
//  Dependencies external of nwscript: None&lt;br /&gt;
//&lt;br /&gt;
//  Description&lt;br /&gt;
//  Utility functions used by ALFA's modified spells.&lt;br /&gt;
//&lt;br /&gt;
//  Revision History&lt;br /&gt;
//	2011-05-26	Ronan	Initial version.&lt;br /&gt;
//	2012-05-29	Foam	Added ACR_GetSpellDuration.&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
#ifndef ACR_SPELLS_I&lt;br /&gt;
#define ACR_SPELLS_I&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Constants ///////////////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
const float ACR_DURATION_GLOBAL_SCALE = 1.0f;&lt;br /&gt;
const float ACR_DURATION_10M_SCALE = 1.0f;&lt;br /&gt;
const float ACR_DURATION_HOUR_SCALE = 13.0f / 60.0f;&lt;br /&gt;
&lt;br /&gt;
const int ACR_DURATION_TYPE_STATIC = 0;&lt;br /&gt;
const int ACR_DURATION_TYPE_PER_CL = 1;&lt;br /&gt;
&lt;br /&gt;
const float ACR_DURATION_1R = 6.0f;&lt;br /&gt;
const float ACR_DURATION_6S = 6.0f;&lt;br /&gt;
const float ACR_DURATION_60S = 60.0f;&lt;br /&gt;
const float ACR_DURATION_1M = 60.0f;&lt;br /&gt;
const float ACR_DURATION_10M = 600.0f * ACR_DURATION_10M_SCALE;&lt;br /&gt;
const float ACR_DURATION_1H = 3600.0f * ACR_DURATION_HOUR_SCALE;&lt;br /&gt;
const float ACR_DURATION_2H = ACR_DURATION_1H * 2.0f;&lt;br /&gt;
const float ACR_DURATION_24H = ACR_DURATION_1H * 24.0f;&lt;br /&gt;
&lt;br /&gt;
const float ACR_MC_GOLD_SCALE = 0.0f;&lt;br /&gt;
&lt;br /&gt;
const string ACR_SPELL_RESIST_PREFIX = &amp;quot;ACR_SPELL_RESIST_&amp;quot;;&lt;br /&gt;
const string ACR_SPELL_VULNER_PREFIX = &amp;quot;ACR_SPELL_VULNER_&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const string ACR_SPELL_DESCRIPT_VAR_PREFIX = &amp;quot;ACR_SPELL_DESC_&amp;quot;;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_ACID = 0;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_AIR = 1;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_CHAOTIC = 2;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_COLD = 3;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_DARKNESS = 4;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_DEATH = 5;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_EARTH = 6;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_ELECTRICITY = 7;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_EVIL = 8;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_FEAR = 9;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_FIRE = 10;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_FORCE = 11;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_GOOD = 12;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_LANGUAGE_DEP = 13;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_LAWFUL = 14;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_LIGHT = 15;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_MIND_AFFECTING = 16;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_SONIC = 17;&lt;br /&gt;
const int ACR_SPELL_DESCRIPT_WATER = 18;&lt;br /&gt;
&lt;br /&gt;
const string _DM_CASTER_LEVEL = &amp;quot;ACR_SPELLS_DM_CL&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const int ACR_MAX_SPELLID = 3200;&lt;br /&gt;
&lt;br /&gt;
const string DICT_SPELL_NAME = &amp;quot;DICT_SPELL_NAME&amp;quot;;&lt;br /&gt;
const string DICT_SPELL_LVL = &amp;quot;DICT_SPELL_LVL&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Structures //////////////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Global Variables ////////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Function Prototypes /////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
// Precast and post-cast events.&lt;br /&gt;
int ACR_PrecastEvent();&lt;br /&gt;
int ACR_PostcastEvent();&lt;br /&gt;
&lt;br /&gt;
//! Calculates the duration of a spell's effects.&lt;br /&gt;
//!  - oCaster: the spell caster for whom the duration is being calculated&lt;br /&gt;
//!  - nDurationType: the ACR_DURATION_TYPE_ constant to determine if caster&lt;br /&gt;
//!     level is involved in duration calculation&lt;br /&gt;
//!  - nDurationBase: the duration of the spell in seconds, or the number which&lt;br /&gt;
//!     is manipulated by the caster level.&lt;br /&gt;
float ACR_GetSpellDuration( object oCaster, int nDurationType, float nDurationBase );&lt;br /&gt;
&lt;br /&gt;
//! Handle and pay a material component.&lt;br /&gt;
int ACR_PayMaterialComponentCost( object oCaster, string sItemName, int nGold, int bPayGoldIfNoItem = TRUE );&lt;br /&gt;
&lt;br /&gt;
int ACR_GetCorrectCasterLevel(object oCreature, int nClass = -1);&lt;br /&gt;
&lt;br /&gt;
int ACR_SpellResistanceCheck( object oCaster, object oCreature, int nSpellId = -1 );&lt;br /&gt;
&lt;br /&gt;
//! Gets the common/standard spell level for a spell of Id nSpellId.&lt;br /&gt;
int ACR_GetSpellLevel( int nSpellId );&lt;br /&gt;
&lt;br /&gt;
//! Sets if the currently casting spell is a domain spell or not.&lt;br /&gt;
void ACR_SetIsDomainSpell( int nDomain, int bValue );&lt;br /&gt;
&lt;br /&gt;
void WarnWhenSpellExpires(object oCreature, int nSpellId, string sMessage, float fDuration);&lt;br /&gt;
&lt;br /&gt;
void _floatMessageIfHasSpellEffect(object oCreature, int nSpellId, string sMessage, float fDuration);&lt;br /&gt;
&lt;br /&gt;
//! Get spell name from ID&lt;br /&gt;
string ACR_GetSpellName(int nSpellId);&lt;br /&gt;
&lt;br /&gt;
//! Get spell innate level from ID&lt;br /&gt;
int ACR_GetSpellInnateLevel(int nSpellId);&lt;br /&gt;
&lt;br /&gt;
//! ACR's version of nw_i0_spells spellCure function.&lt;br /&gt;
void ACR_SpellCure( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID, int vfxImpactHeal, int vfxImpactHarm );&lt;br /&gt;
&lt;br /&gt;
//! ACR's version of x0_i0_spells spellsInflictTouchAttack function.&lt;br /&gt;
void ACR_SpellsInflictTouchAttack( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID, int vfxImpactHeal, int vfxImpactHarm );&lt;br /&gt;
&lt;br /&gt;
//! ACR's version of nw_i0_spells spellsHealOrHarmTarget function.&lt;br /&gt;
void ACR_SpellsHealOrHarmTarget( object oTarget, int nDamageTotal, int vfx_impactNormalHurt, int vfx_impactUndeadHurt, int vfx_impactHeal, int nSpellID, int bIsHealingSpell=TRUE, int bHarmTouchAttack=TRUE );&lt;br /&gt;
&lt;br /&gt;
//! ACR's version of nw_i0_spells GetCureDamageTotal. Handles changes to our feats.&lt;br /&gt;
int ACR_GetCureDamageTotal( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID );&lt;br /&gt;
&lt;br /&gt;
string _GetDomainVarName( int nDomain );&lt;br /&gt;
&lt;br /&gt;
//! Cache Name/Lvl of Spell 2da for future use&lt;br /&gt;
void ACR_Cache2daSpellListing();&lt;br /&gt;
&lt;br /&gt;
//! Adds a persistant AC bonus effect to oTarget, such as is used in Mage Armor and Shield spells.&lt;br /&gt;
void PersistACBonusFromSpell(object oTarget, int nSpellId, int nACType, int nACBonus, float fDurationRemaining, effect eLinkedEffects);&lt;br /&gt;
&lt;br /&gt;
//!!  Handles caster level check (if needed) for use of a scroll.&lt;br /&gt;
//!!    - oUser - The PC or NPC using the scroll&lt;br /&gt;
//!!    - oScroll - The scroll item&lt;br /&gt;
//!!    - nSpellID - the Spells.2da ID for the spell to be cast.&lt;br /&gt;
//!!    Returns:&lt;br /&gt;
//!!     1 - Scroll works properly&lt;br /&gt;
//!!     2 - Scroll use failed.&lt;br /&gt;
int ACR_ScrollUse(object oUser, object oScroll, int nSpellID);&lt;br /&gt;
&lt;br /&gt;
//! Checks if OBJECT_SELF can carry out a gaze attack on oCreature&lt;br /&gt;
//!  - oCreature: The creature to be gaze attacked&lt;br /&gt;
int ACR_CanGazeAttack(object oCreature);&lt;br /&gt;
&lt;br /&gt;
//! *** PRIVATE FUNCTIONS ***&lt;br /&gt;
&lt;br /&gt;
//! Determines which class a given caster should use to activate a scroll, and whether they succeed.&lt;br /&gt;
int _DetermineScrollAttempt(object oCaster, int nScrollID);&lt;br /&gt;
&lt;br /&gt;
//! Works out how hard the caster level check would be for a given class, level, and spell level&lt;br /&gt;
int _ScrollCastDiff(int nClass, int nUserLevel, int nSpellLevel);&lt;br /&gt;
&lt;br /&gt;
//! Attempts a caster level check, with chance for mishap on failure.&lt;br /&gt;
int _AttemptScrollUse(int nScrollID, int nSpellLevel, object oCaster, int nSpellClass);&lt;br /&gt;
&lt;br /&gt;
//! Handles mishap checks for scroll use.&lt;br /&gt;
int _ScrollMishapCheck(object oCaster, int nScrollID, int nSpellLevel, int nSpellID);&lt;br /&gt;
&lt;br /&gt;
//! Handles actual scroll mishap effects.&lt;br /&gt;
//!  takes the user and the level and identity of the spell into account.&lt;br /&gt;
void _ProcessMishap(object oCaster, int nSpellLevel, int nSpellID);&lt;br /&gt;
&lt;br /&gt;
//! Check if we need to cache the spell 2da list&lt;br /&gt;
int ACR__CheckIsReadySpell2daList();&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Includes ////////////////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;nw_i0_spells&amp;quot;&lt;br /&gt;
#include &amp;quot;x2_inc_spellhook&amp;quot;&lt;br /&gt;
#include &amp;quot;acr_i&amp;quot;&lt;br /&gt;
#include &amp;quot;acr_roll_i&amp;quot;&lt;br /&gt;
#include &amp;quot;acr_creature_i&amp;quot;&lt;br /&gt;
#include &amp;quot;acr_effects_i&amp;quot;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// Function Definitions ////////////////////////////////////////////////////////&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
int ACR_PrecastEvent() {&lt;br /&gt;
	// First call NWN2's precast code.&lt;br /&gt;
	if ( !X2PreSpellCastCode() ) return FALSE;&lt;br /&gt;
	&lt;br /&gt;
	return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_PostcastEvent() {&lt;br /&gt;
	// Delete temp description variables.&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_ACID, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_AIR, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_CHAOTIC, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_COLD, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_DARKNESS, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_DEATH, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_EARTH, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_ELECTRICITY, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_EVIL, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_FEAR, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_FIRE, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_FORCE, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_GOOD, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_LANGUAGE_DEP, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_LAWFUL, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_LIGHT, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_MIND_AFFECTING, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_SONIC, FALSE );&lt;br /&gt;
	ACR_SetIsDomainSpell( ACR_SPELL_DESCRIPT_WATER, FALSE );&lt;br /&gt;
&lt;br /&gt;
	return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
float ACR_GetSpellDuration( object oCaster, int nDurationType, float nDurationBase ) {&lt;br /&gt;
	// Get base duration.&lt;br /&gt;
	float nDuration = nDurationBase;&lt;br /&gt;
	&lt;br /&gt;
	// Adjust to caster level if not static.&lt;br /&gt;
	if ( nDurationType == ACR_DURATION_TYPE_PER_CL ) {&lt;br /&gt;
		nDuration = nDuration * ACR_GetCorrectCasterLevel( oCaster );&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Check for extended metamagic.&lt;br /&gt;
	if ( GetMetaMagicFeat() &amp;amp; METAMAGIC_EXTEND ) {&lt;br /&gt;
		nDuration = nDuration * 2;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Check for persistent metamagic.&lt;br /&gt;
	if ( GetMetaMagicFeat() &amp;amp; METAMAGIC_PERSISTENT ) {&lt;br /&gt;
		nDuration = ACR_DURATION_24H;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Apply global duration scaling.&lt;br /&gt;
	nDuration = nDuration * ACR_DURATION_GLOBAL_SCALE;&lt;br /&gt;
	&lt;br /&gt;
	return nDuration;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Called to determine if a spell touch attack succeeds on a target.&lt;br /&gt;
// Returns TOUCH_ATTACK_RESULT_MISS, TOUCH_ATTACK_RESULT_HIT, or TOUCH_ATTACK_RESULT_CRITICAL.&lt;br /&gt;
int ACR_SpellTouchAttackRanged(object oTarget, int bDisplayFeedback=TRUE, int bCanSneakAttack=FALSE) {&lt;br /&gt;
	return TouchAttackRanged(oTarget, bDisplayFeedback);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetSpellSneakAttackDamage(object oCaster, object oTarget) {&lt;br /&gt;
	// Get damage.&lt;br /&gt;
	int nDamage = ACR_GetSneakAttackDamage( oCaster );&lt;br /&gt;
	if ( nDamage &amp;lt;= 0 ) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Bail if we can't sneak attack the target.&lt;br /&gt;
	if ( !ACR_GetCanSneakAttack( oCaster, oTarget ) ) {&lt;br /&gt;
		return 0;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	FloatingTextStringOnCreature(&amp;quot;&amp;lt;C=gray&amp;gt;*Sneak Attack!*&amp;lt;/C&amp;gt;&amp;quot;, oCaster, FALSE, 1.5f);&lt;br /&gt;
	return nDamage;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_PayMaterialComponentCost( object oCaster, string sItemName, int nGold, int bPayGoldIfNoItem = TRUE ) {&lt;br /&gt;
	// Dealing with an item or gold?&lt;br /&gt;
	if ( sItemName == &amp;quot;&amp;quot; ) {&lt;br /&gt;
		// Scale our gold by our constant.&lt;br /&gt;
		nGold = FloatToInt( IntToFloat( nGold ) * ACR_MC_GOLD_SCALE );&lt;br /&gt;
		if ( nGold &amp;lt;= 0 ) return TRUE;&lt;br /&gt;
		&lt;br /&gt;
		// Return false if we don't have enough gold.&lt;br /&gt;
		if ( GetGold( oCaster ) &amp;lt; nGold ) {&lt;br /&gt;
			return FALSE;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// Remove the gold.&lt;br /&gt;
		AssignCommand( oCaster, TakeGoldFromCreature( nGold, oCaster, TRUE, FALSE ) );&lt;br /&gt;
		SendMessageToPC( oCaster, &amp;quot;You have paid &amp;quot; + IntToString( nGold ) + &amp;quot;gp in material components.&amp;quot; );&lt;br /&gt;
	} else {&lt;br /&gt;
		// We currently don't support item material components.&lt;br /&gt;
		return ACR_PayMaterialComponentCost( oCaster, &amp;quot;&amp;quot;, nGold, TRUE );&lt;br /&gt;
	}&lt;br /&gt;
	return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _GetClassCL(int nClass, int nLevel) {&lt;br /&gt;
&lt;br /&gt;
	if(nLevel &amp;lt; 1) return 0;&lt;br /&gt;
&lt;br /&gt;
	switch(nClass) {&lt;br /&gt;
		case CLASS_TYPE_BARD:&lt;br /&gt;
		case CLASS_TYPE_CLERIC:&lt;br /&gt;
		case CLASS_TYPE_DRUID:&lt;br /&gt;
		case CLASS_TYPE_FAVORED_SOUL:&lt;br /&gt;
		case CLASS_TYPE_SORCERER:&lt;br /&gt;
		case CLASS_TYPE_SPIRIT_SHAMAN:&lt;br /&gt;
		case CLASS_TYPE_WIZARD:&lt;br /&gt;
		case CLASS_LOREMASTER:&lt;br /&gt;
		case CLASS_MYSTICTHEURGE:&lt;br /&gt;
		case CLASS_TYPE_STORMLORD:&lt;br /&gt;
		case CLASS_TYPE_DOOMGUIDE:&lt;br /&gt;
		case CLASS_TYPE_ARCANE_SCHOLAR:&lt;br /&gt;
		case CLASS_TYPE_ARCANETRICKSTER:&lt;br /&gt;
		case CLASS_TYPE_RED_WIZARD:&lt;br /&gt;
			return nLevel;&lt;br /&gt;
		&lt;br /&gt;
		case CLASS_TYPE_PALADIN:&lt;br /&gt;
		case CLASS_TYPE_RANGER:&lt;br /&gt;
			return (nLevel &amp;lt; 4) ? 0 : nLevel / 2;&lt;br /&gt;
		&lt;br /&gt;
		case CLASS_BLADESINGER:&lt;br /&gt;
			return 1 + nLevel / 2;&lt;br /&gt;
		&lt;br /&gt;
		case CLASS_TYPE_WARPRIEST:&lt;br /&gt;
			return nLevel / 2;&lt;br /&gt;
		&lt;br /&gt;
		case CLASS_TYPE_HARPER:&lt;br /&gt;
		case CLASS_TYPE_ELDRITCH_KNIGHT:&lt;br /&gt;
			return nLevel - 1;&lt;br /&gt;
		&lt;br /&gt;
		case CLASS_TYPE_SACREDFIST:&lt;br /&gt;
			return (nLevel + 1) * 3 / 4;&lt;br /&gt;
	}&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _GetClassCLContribution(object oCreature, int nCasterClass, int nClass) {&lt;br /&gt;
	if(nClass == nCasterClass)&lt;br /&gt;
		// This is the same class we're casting from.&lt;br /&gt;
		return _GetClassCL(nClass, GetLevelByClass(nClass, oCreature));&lt;br /&gt;
	else {&lt;br /&gt;
		// This is not the same class we're casting from.&lt;br /&gt;
		// Check to see if its mapped to our class.&lt;br /&gt;
		string sFeatMap2DA = Get2DAString(&amp;quot;classes&amp;quot;, &amp;quot;BonusCasterFeatByClassMap&amp;quot;, nClass);&lt;br /&gt;
		if(sFeatMap2DA == &amp;quot;****&amp;quot; || sFeatMap2DA == &amp;quot;&amp;quot;)&lt;br /&gt;
			return 0;&lt;br /&gt;
		else {&lt;br /&gt;
			int nFeat = StringToInt(Get2DAString(sFeatMap2DA, &amp;quot;SpellcasterFeat&amp;quot;, nCasterClass));&lt;br /&gt;
			// Lets assume nFeat == 0 an error, since feat 0 is alertness.&lt;br /&gt;
			if(!nFeat) nFeat = -1;&lt;br /&gt;
			return GetHasFeat(nFeat, oCreature) * _GetClassCL(nClass, GetLevelByClass(nClass, oCreature));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetCorrectCasterLevel(object oCreature, int nClass = -1) {&lt;br /&gt;
&lt;br /&gt;
	if(GetSpellCastItem() != OBJECT_INVALID) return GetCasterLevel(oCreature);&lt;br /&gt;
&lt;br /&gt;
	// If no class is provided, get the last caster class.&lt;br /&gt;
	if ( nClass == -1 ) nClass = GetLastSpellCastClass();&lt;br /&gt;
	&lt;br /&gt;
	if(GetIsDM(oCreature)) {&lt;br /&gt;
		int nCL = GetLocalInt(oCreature, _DM_CASTER_LEVEL);&lt;br /&gt;
		return nCL ? nCL : 10;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int i = 1;&lt;br /&gt;
	int nCL;&lt;br /&gt;
	for(; i&amp;lt;5; i++) {&lt;br /&gt;
		int nCurClass = GetClassByPosition(i, oCreature);&lt;br /&gt;
		if(nCurClass != CLASS_TYPE_INVALID)&lt;br /&gt;
			nCL += _GetClassCLContribution(oCreature, nClass, nCurClass);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	int nPS = StringToInt(Get2DAString(&amp;quot;classes&amp;quot;, &amp;quot;FEATPracticedSpellcaster&amp;quot;, nClass));&lt;br /&gt;
	if(nPS &amp;amp;&amp;amp; GetHasFeat(nPS, oCreature)) {&lt;br /&gt;
		int nHd = GetHitDice(oCreature);&lt;br /&gt;
		nCL += 4;&lt;br /&gt;
		if(nCL &amp;gt; nHd) nCL = nHd;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return nCL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_SpellResistanceCheck( object oCaster, object oCreature, int nSpellId = -1 ) {&lt;br /&gt;
	if ( nSpellId &amp;lt; 0 ) nSpellId = GetSpellId();&lt;br /&gt;
	&lt;br /&gt;
	// Check for a specific immunity.&lt;br /&gt;
	if ( GetLocalInt( oCreature, ACR_SPELL_RESIST_PREFIX + IntToString( nSpellId ) ) ) return TRUE;&lt;br /&gt;
	&lt;br /&gt;
	// Check for a specific vulnerability.&lt;br /&gt;
	if ( GetLocalInt( oCreature, ACR_SPELL_VULNER_PREFIX + IntToString( nSpellId ) ) ) return FALSE;&lt;br /&gt;
	&lt;br /&gt;
	// Otherwise we just wrap MyResistSpell.&lt;br /&gt;
	return MyResistSpell( oCaster, oCreature );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetSpellLevel( int nSpellId ) {&lt;br /&gt;
    ClearScriptParams();&lt;br /&gt;
    AddScriptParameterObject(OBJECT_INVALID);&lt;br /&gt;
    AddScriptParameterInt(ACR_ITEMS_CSHARP_SPELL_LEVEL);&lt;br /&gt;
    AddScriptParameterInt(nSpellId);&lt;br /&gt;
    return ExecuteScriptEnhanced(&amp;quot;ACR_Items&amp;quot;, OBJECT_SELF, TRUE);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ACR_SetIsDomainSpell( int nDomain, int nValue ) {&lt;br /&gt;
	string sVarName = _GetDomainVarName( nDomain );&lt;br /&gt;
&lt;br /&gt;
	// Are we deleting?&lt;br /&gt;
	if ( nValue = FALSE ) {&lt;br /&gt;
		DeleteLocalInt( OBJECT_SELF, sVarName );&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	SetLocalInt( OBJECT_SELF, sVarName, nValue );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetIsDomainSpell( int nDomain ) {&lt;br /&gt;
	return ( GetLocalInt( OBJECT_SELF, _GetDomainVarName( nDomain ) ) != FALSE );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetHighestCasterLevel(object oCreature) {&lt;br /&gt;
	int nCL;&lt;br /&gt;
	&lt;br /&gt;
	int level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_CLERIC);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_DRUID);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_FAVORED_SOUL);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_SPIRIT_SHAMAN);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_BARD);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_SORCERER);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_WIZARD);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_PALADIN);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	level = ACR_GetCorrectCasterLevel(oCreature, CLASS_TYPE_RANGER);&lt;br /&gt;
	nCL = (level &amp;gt; nCL) ? level : nCL;&lt;br /&gt;
	&lt;br /&gt;
	return nCL;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void WarnWhenSpellExpires(object oCreature, int nSpellId, string sMessage, float fDuration) {&lt;br /&gt;
	DelayCommand(fDuration - 12.0, _floatMessageIfHasSpellEffect(oCreature, nSpellId, sMessage, 12.0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _floatMessageIfHasSpellEffect(object oCreature, int nSpellId, string sMessage, float fDuration) {&lt;br /&gt;
	if(GetHasSpellEffect(nSpellId, oCreature))&lt;br /&gt;
		FloatingTextStringOnCreature(sMessage, oCreature, TRUE, fDuration);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ACR_Cache2daSpellListing()&lt;br /&gt;
{&lt;br /&gt;
	ACR_Cache2daListing(SPELLS_2DA, SPELLS_NAME_COL, DICT_SPELL_NAME, ACR_MAX_SPELLID);&lt;br /&gt;
	ACR_Cache2daListing(SPELLS_2DA, SPELLS_INNATE_LEVEL_COL, DICT_SPELL_LVL, ACR_MAX_SPELLID);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR__CheckIsReadySpell2daList()&lt;br /&gt;
{&lt;br /&gt;
	if (ACR_CheckIsReady2daList(DICT_SPELL_NAME))&lt;br /&gt;
		return 1;&lt;br /&gt;
&lt;br /&gt;
	if (!ACR_CheckIsStarted2daList(DICT_SPELL_NAME))&lt;br /&gt;
		ACR_Cache2daSpellListing();&lt;br /&gt;
&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ACR_GetSpellName(int spell_id)&lt;br /&gt;
{&lt;br /&gt;
	string str, strref;&lt;br /&gt;
&lt;br /&gt;
	str = IntToString(spell_id);&lt;br /&gt;
&lt;br /&gt;
	if (!ACR__CheckIsReadySpell2daList()) {&lt;br /&gt;
		return &amp;quot;error&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	strref  = ACR_DictionaryGet(DICT_SPELL_NAME, str);&lt;br /&gt;
	return GetStringByStrRef(StringToInt(strref));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetSpellInnateLevel(int spell_id)&lt;br /&gt;
{&lt;br /&gt;
	string str;&lt;br /&gt;
&lt;br /&gt;
	str = IntToString(spell_id);&lt;br /&gt;
&lt;br /&gt;
	if (!ACR__CheckIsReadySpell2daList()) {&lt;br /&gt;
		return -1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return StringToInt(ACR_DictionaryGet(DICT_SPELL_LVL, str));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string ACR_GetSpellList(object oCreature, int nMemorized=0)&lt;br /&gt;
{&lt;br /&gt;
	int id, lvl, num, len, old_lvl;&lt;br /&gt;
	string name, str, msg, dict_id = &amp;quot;TMP&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	if (!ACR__CheckIsReadySpell2daList()) {&lt;br /&gt;
		return &amp;quot;Please try again shortly.  Spell list not yet ready.&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Iterate through all possible spells to determine those present&lt;br /&gt;
	for (str = ACR_DictionaryIterateFirst(DICT_SPELL_NAME); str != &amp;quot;&amp;quot;; str = ACR_DictionaryIterateNext(DICT_SPELL_NAME)) {&lt;br /&gt;
		id = StringToInt(str);&lt;br /&gt;
&lt;br /&gt;
		num = (nMemorized ? GetHasSpell(id, oCreature) : GetSpellKnown(oCreature, id));&lt;br /&gt;
&lt;br /&gt;
		if (num) {&lt;br /&gt;
			lvl = ACR_GetSpellInnateLevel(id);&lt;br /&gt;
			name = ACR_GetSpellName(id);&lt;br /&gt;
&lt;br /&gt;
			// Handle sorting (reverse order from highest level spell to lowest)&lt;br /&gt;
			lvl = 10 - lvl;&lt;br /&gt;
&lt;br /&gt;
			if (lvl &amp;lt; 10) {&lt;br /&gt;
				str = &amp;quot;0&amp;quot; + IntToString(lvl);&lt;br /&gt;
			}&lt;br /&gt;
			else&lt;br /&gt;
				str = &amp;quot;10&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
			str += &amp;quot; &amp;quot; + name;&lt;br /&gt;
&lt;br /&gt;
			ACR_DictionarySet(dict_id, str, IntToString(num));&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	old_lvl = -1;&lt;br /&gt;
	msg = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	// Iterate through spells present and format&lt;br /&gt;
	for (str = ACR_DictionaryIterateFirst(dict_id); str != &amp;quot;&amp;quot;; str = ACR_DictionaryIterateNext(dict_id)) {&lt;br /&gt;
		len = GetStringLength(str);&lt;br /&gt;
		name = GetStringRight(str, len-3);&lt;br /&gt;
&lt;br /&gt;
		// Shift level back to correct value&lt;br /&gt;
		lvl = 10-StringToInt(GetStringLeft(str, 2));&lt;br /&gt;
&lt;br /&gt;
		num = StringToInt(ACR_DictionaryGet(dict_id, str));&lt;br /&gt;
&lt;br /&gt;
		// Display spell level if new level&lt;br /&gt;
		if (old_lvl != lvl) {&lt;br /&gt;
&lt;br /&gt;
			// Remove trailing comma&lt;br /&gt;
			len = GetStringLength(msg);&lt;br /&gt;
			msg = GetStringLeft(msg, len-2);&lt;br /&gt;
&lt;br /&gt;
			msg += &amp;quot;\n&amp;lt;b&amp;gt;Level &amp;quot; + IntToString(lvl) + &amp;quot;&amp;lt;/b&amp;gt;: &amp;quot;;&lt;br /&gt;
			old_lvl = lvl;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// Display number if &amp;gt; 1&lt;br /&gt;
		if (num &amp;gt; 1) {&lt;br /&gt;
			msg += IntToString(num) + &amp;quot; &amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		msg += name + &amp;quot;, &amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	ACR_DictionaryClear(dict_id);&lt;br /&gt;
&lt;br /&gt;
	// Remove trailing comma&lt;br /&gt;
	if (old_lvl != -1) {&lt;br /&gt;
		len = GetStringLength(msg);&lt;br /&gt;
		msg = GetStringLeft(msg, len-2);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	return msg;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ACR_SpellCure( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID, int vfxImpactHeal, int vfxImpactHarm ) {&lt;br /&gt;
	int nDamageTotal = ACR_GetCureDamageTotal( oTarget, nDieCount, nDieSides, nMaxExtraDamage, nSpellID );&lt;br /&gt;
 	int bIsHealingSpell = TRUE;&lt;br /&gt;
	int bHarmTouchAttack = TRUE;&lt;br /&gt;
	ACR_SpellsHealOrHarmTarget( oTarget, nDamageTotal, vfxImpactHarm, vfxImpactHarm, vfxImpactHeal, nSpellID, bIsHealingSpell, bHarmTouchAttack );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ACR_SpellsInflictTouchAttack( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID, int vfxImpactHeal, int vfxImpactHarm ) {&lt;br /&gt;
	int nMetaMagic = GetMetaMagicFeat();&lt;br /&gt;
	&lt;br /&gt;
	// Calculate damage.&lt;br /&gt;
	int nDamage = ACR_Roll( nDieCount, nDieSides );&lt;br /&gt;
	&lt;br /&gt;
	// Handle metamagics.&lt;br /&gt;
	if ( nMetaMagic == METAMAGIC_MAXIMIZE ) {&lt;br /&gt;
		nDamage = ( nDieCount * nDieSides );&lt;br /&gt;
	} else if ( nMetaMagic == METAMAGIC_EMPOWER ) {&lt;br /&gt;
		nDamage += ( nDamage / 2 );&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Get caster level bonus damage.&lt;br /&gt;
	int nExtraDamage = GetCasterLevel(OBJECT_SELF);&lt;br /&gt;
	if ( nSpellID == SPELLABILITY_BG_INFLICT_SERIOUS_WOUNDS ) nExtraDamage = GetLevelByClass( CLASS_TYPE_BLACKGUARD );&lt;br /&gt;
	if ( nSpellID == SPELLABILITY_BG_INFLICT_CRITICAL_WOUNDS ) nExtraDamage = GetLevelByClass( CLASS_TYPE_BLACKGUARD );&lt;br /&gt;
	if ( nExtraDamage &amp;gt; nMaxExtraDamage ) nExtraDamage = nMaxExtraDamage;&lt;br /&gt;
	nDamage += nExtraDamage;&lt;br /&gt;
	&lt;br /&gt;
	// Do the harming.&lt;br /&gt;
	int bIsHealingSpell = FALSE;&lt;br /&gt;
	int bHarmTouchAttack = TRUE;&lt;br /&gt;
	ACR_SpellsHealOrHarmTarget( oTarget, nDamage, vfxImpactHarm, vfxImpactHarm, vfxImpactHeal, nSpellID, bIsHealingSpell, bHarmTouchAttack );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void ACR_SpellsHealOrHarmTarget( object oTarget, int nDamageTotal, int vfx_impactNormalHurt, int vfx_impactUndeadHurt, int vfx_impactHeal, int nSpellID, int bIsHealingSpell=TRUE, int bHarmTouchAttack=TRUE ) {&lt;br /&gt;
	int bIsHarmful = FALSE;&lt;br /&gt;
	&lt;br /&gt;
	// Immune to healing effects?&lt;br /&gt;
	if ( GetLocalInt( oTarget, VAR_IMMUNE_TO_HEAL ) == TRUE ) {&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Apply effects.&lt;br /&gt;
	if ( !ACR_GetIsUndead( oTarget ) ) {&lt;br /&gt;
		if ( bIsHealingSpell ) {&lt;br /&gt;
			DoHealing( oTarget, nDamageTotal, vfx_impactHeal );&lt;br /&gt;
		} else {&lt;br /&gt;
			DoHarming( oTarget, nDamageTotal, DAMAGE_TYPE_NEGATIVE, vfx_impactNormalHurt, bHarmTouchAttack );&lt;br /&gt;
			bIsHarmful = TRUE;&lt;br /&gt;
		}&lt;br /&gt;
	} else {&lt;br /&gt;
		if ( bIsHealingSpell ) {&lt;br /&gt;
			DoHarming( oTarget, nDamageTotal, DAMAGE_TYPE_POSITIVE, vfx_impactUndeadHurt, bHarmTouchAttack );&lt;br /&gt;
			bIsHarmful = TRUE;&lt;br /&gt;
		} else {&lt;br /&gt;
			DoHealing( oTarget, nDamageTotal, vfx_impactHeal );&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int ACR_GetCureDamageTotal( object oTarget, int nDieCount, int nDieSides, int nMaxExtraDamage, int nSpellID ) {&lt;br /&gt;
	// Get base data.&lt;br /&gt;
	object oCaster = OBJECT_SELF;&lt;br /&gt;
	int nCasterClass = GetLastSpellCastClass();&lt;br /&gt;
	int nCasterLevel = ACR_GetCorrectCasterLevel( oCaster, nCasterClass );&lt;br /&gt;
	int nMetaMagic = GetMetaMagicFeat();&lt;br /&gt;
	&lt;br /&gt;
	// Cure spells are treated one level higher if we're a healing domain cleric.&lt;br /&gt;
	if ( nCasterClass == CLASS_TYPE_CLERIC &amp;amp;&amp;amp; GetHasFeat( FEAT_HEALING_DOMAIN_POWER, oCaster ) ) {&lt;br /&gt;
		nCasterLevel++;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	// Get the damage.&lt;br /&gt;
	int nDamage = ACR_Roll( nDieCount, nDieSides );&lt;br /&gt;
	&lt;br /&gt;
	// Apply metamagic.&lt;br /&gt;
	if ( nMetaMagic == METAMAGIC_MAXIMIZE ) {&lt;br /&gt;
		nDamage = ( nDieCount * nDieSides );&lt;br /&gt;
	} else if ( nMetaMagic == METAMAGIC_EMPOWER ) {&lt;br /&gt;
		nDamage += ( nDamage / 2 );&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// Add the caster level as bonus, to a maximum.&lt;br /&gt;
	int nExtraDamage = nCasterLevel;&lt;br /&gt;
	if ( nExtraDamage &amp;gt; nMaxExtraDamage ) nExtraDamage = nMaxExtraDamage;&lt;br /&gt;
	nDamage += nExtraDamage;&lt;br /&gt;
	&lt;br /&gt;
	// Handle the Augment Healing feat.&lt;br /&gt;
	if ( GetHasFeat( FEAT_AUGMENT_HEALING ) &amp;amp;&amp;amp; !GetIsObjectValid( GetSpellCastItem() ) ) {&lt;br /&gt;
		int nSpellLvl = GetSpellLevel( nSpellID );&lt;br /&gt;
		nDamage += ( 2 * nSpellLvl );&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	return nDamage;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
string _GetDomainVarName( int nDomain ) {&lt;br /&gt;
	return ACR_SPELL_DESCRIPT_VAR_PREFIX + IntToString( nDomain );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _GetPersistentACBonusTarget(object oTarget, int nACType, int nACBonus) {&lt;br /&gt;
	// Find the base and enhancement AC bonuses.&lt;br /&gt;
	// Base should not stack with the effect.&lt;br /&gt;
	// Enhancement should.&lt;br /&gt;
	int nEnhancement = 0;&lt;br /&gt;
	int nBaseAC = 0;&lt;br /&gt;
	if(nACType == AC_ARMOUR_ENCHANTMENT_BONUS) {&lt;br /&gt;
		object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget);&lt;br /&gt;
		nBaseAC = GetBaseArmorClass(oArmor);&lt;br /&gt;
		nEnhancement = GetACEnhancementBonus(oArmor);&lt;br /&gt;
		/* Not sure what to do with bracers...&lt;br /&gt;
		object oBracers = GetItemInSlot(INVENTORY_SLOT_ARMS, oTarget);&lt;br /&gt;
		if(GetBaseItemType(oBracers) == BASE_ITEM_BRACER) {&lt;br /&gt;
			int nBracersEnhancement = GetACEnhancementBonus(oBracers);&lt;br /&gt;
			if(nBracersEnhancement &amp;gt; nEnhancement) nEnhancement = nBracersEnhancement;&lt;br /&gt;
		}*/&lt;br /&gt;
	} else if(nACType = AC_SHIELD_ENCHANTMENT_BONUS) {&lt;br /&gt;
		object oShield = GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oTarget);&lt;br /&gt;
		int nType = GetBaseItemType(oShield);&lt;br /&gt;
		if(nType == BASE_ITEM_TOWERSHIELD || nType == BASE_ITEM_LARGESHIELD || nType == BASE_ITEM_SMALLSHIELD) {&lt;br /&gt;
			nEnhancement = GetACEnhancementBonus(oShield);&lt;br /&gt;
			nBaseAC = GetBaseArmorClass(oShield);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	int nResult = nACBonus + nEnhancement - nBaseAC;&lt;br /&gt;
	if(nResult &amp;lt; 0) nResult = 0;&lt;br /&gt;
	return nResult;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _AddPersistentACBonusEffects(object oTarget, int nSpellId, int nACType, int nBonus, float fDurationRemaining, effect eLinkedEffects) {	&lt;br /&gt;
&lt;br /&gt;
	if(nBonus &amp;lt;= 0) {&lt;br /&gt;
		// If there's no AC bonus needed, persist this effect as something else so the spell won't be ended.&lt;br /&gt;
		if(GetEffectType(eLinkedEffects) != EFFECT_TYPE_INVALIDEFFECT)&lt;br /&gt;
			ApplyEffectFromSpell(nSpellId, DURATION_TYPE_TEMPORARY, eLinkedEffects, oTarget, fDurationRemaining);&lt;br /&gt;
			else ApplyTrackingEffectFromSpell(nSpellId, DURATION_TYPE_TEMPORARY, oTarget, fDurationRemaining);&lt;br /&gt;
	} else {&lt;br /&gt;
		effect newEffect = EffectACIncrease(nBonus, nACType);&lt;br /&gt;
		SetEffectSpellId(newEffect, nSpellId);&lt;br /&gt;
		if(GetEffectType(eLinkedEffects) != EFFECT_TYPE_INVALIDEFFECT) &lt;br /&gt;
			newEffect = EffectLinkEffects(eLinkedEffects, newEffect);&lt;br /&gt;
			&lt;br /&gt;
		ApplyEffectFromSpell(nSpellId, DURATION_TYPE_TEMPORARY, newEffect, oTarget, fDurationRemaining);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void _PersistACBonusFromSpell(object oTarget, int nSpellId, int nACType, int nACBonus, int nLastACBonus, float fDurationRemaining, effect eLinkedEffects, int bIsPC) {	&lt;br /&gt;
	&lt;br /&gt;
	if(bIsPC &amp;amp;&amp;amp; !GetIsObjectValid(oTarget)) {&lt;br /&gt;
		// If the PC has logged out, skip this heartbeat.&lt;br /&gt;
		DelayCommand(6.0, _PersistACBonusFromSpell(oTarget, nSpellId, nACType, nACBonus, nLastACBonus, fDurationRemaining - 6.0, eLinkedEffects, bIsPC));&lt;br /&gt;
		return;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	int nSource = ACR_EFFECT_SOURCE_SPELL_OFFSET + nSpellId;&lt;br /&gt;
&lt;br /&gt;
	if(CountTrackingEffectsFor(oTarget, nSource)) {&lt;br /&gt;
		// Spell is still active. See if we need to change the AC effects.&lt;br /&gt;
		int nNeededACBonus = _GetPersistentACBonusTarget(oTarget, nACType, nACBonus);&lt;br /&gt;
		if(nNeededACBonus != nLastACBonus) {&lt;br /&gt;
			// Change AC effects.&lt;br /&gt;
			RemoveAllEffectsFromSource(oTarget, nSource);&lt;br /&gt;
			_AddPersistentACBonusEffects(oTarget, nSpellId, nACType, nNeededACBonus, fDurationRemaining, eLinkedEffects);&lt;br /&gt;
		}&lt;br /&gt;
		if(fDurationRemaining &amp;gt; 0.0)&lt;br /&gt;
			DelayCommand(6.0, _PersistACBonusFromSpell(oTarget, nSpellId, nACType, nACBonus, nNeededACBonus, fDurationRemaining - 6.0, eLinkedEffects, bIsPC));&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void PersistACBonusFromSpell(object oTarget, int nSpellId, int nACType, int nACBonus, float fDurationRemaining, effect eLinkedEffects) {&lt;br /&gt;
	SetEffectSpellId(eLinkedEffects, nSpellId);&lt;br /&gt;
	int nTarget = _GetPersistentACBonusTarget(oTarget, nACType, nACBonus);&lt;br /&gt;
	_AddPersistentACBonusEffects(oTarget, nSpellId, nACType, nTarget, fDurationRemaining, eLinkedEffects);&lt;br /&gt;
	DelayCommand(6.0, _PersistACBonusFromSpell(oTarget, nSpellId, nACType, nACBonus, nTarget, fDurationRemaining - 6.0, eLinkedEffects, GetIsPC(oTarget) &amp;amp;&amp;amp; !GetIsDMPossessed(oTarget)));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int ACR_ScrollUse(object oUser, object oScroll, int nSpellID) {&lt;br /&gt;
&lt;br /&gt;
   int nResultType = _DetermineScrollAttempt(oUser, nSpellID);&lt;br /&gt;
   &lt;br /&gt;
   if ( nResultType &amp;lt; 0) {&lt;br /&gt;
       // then there was a mishap. do not run the spell script, the scroll is consumed.&lt;br /&gt;
	   SetModuleOverrideSpellScriptFinished();&lt;br /&gt;
	   return FALSE;&lt;br /&gt;
	&lt;br /&gt;
   } else if (nResultType == 0) {&lt;br /&gt;
   	   // the user failed to activate the scroll, replace it and end.&lt;br /&gt;
       SetPlotFlag(oScroll, TRUE);&lt;br /&gt;
	   DelayCommand(2.0, SetPlotFlag(oScroll, FALSE));&lt;br /&gt;
	   SetModuleOverrideSpellScriptFinished();&lt;br /&gt;
       return FALSE;&lt;br /&gt;
   } &lt;br /&gt;
   // otherwise, scroll use was successful.&lt;br /&gt;
return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int ACR_CanGazeAttack(object oCreature)&lt;br /&gt;
{&lt;br /&gt;
    effect eEffect = GetFirstEffect(oCreature);&lt;br /&gt;
    if(!GetObjectSeen(OBJECT_SELF, oCreature)) return FALSE;&lt;br /&gt;
    if(!GetObjectSeen(oCreature, OBJECT_SELF)) return FALSE;&lt;br /&gt;
    while(GetIsEffectValid(eEffect))&lt;br /&gt;
    {&lt;br /&gt;
        if(GetEffectType(eEffect) == EFFECT_TYPE_BLINDNESS) return FALSE;&lt;br /&gt;
        if(GetEffectSpellId(eEffect) == SPELL_BLINDSIGHT) return FALSE;&lt;br /&gt;
        eEffect = GetNextEffect(oCreature);&lt;br /&gt;
    }&lt;br /&gt;
    return TRUE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
// *** BEGIN PRIVATE FUNCTIONS ***&lt;br /&gt;
////////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
&lt;br /&gt;
int _DetermineScrollAttempt(object oCaster, int nScrollID) {&lt;br /&gt;
   &lt;br /&gt;
    int nSpellClass = 0;&lt;br /&gt;
	int nSpellDiff = 99;&lt;br /&gt;
	int nTestDiff = 99;&lt;br /&gt;
	int nSpellLevel = 99;&lt;br /&gt;
	int nTestSpellLevel = 99;&lt;br /&gt;
	int bAttributeFail = FALSE;&lt;br /&gt;
	int bHasUMD = FALSE;&lt;br /&gt;
	int nUMDRanks = GetSkillRank(SKILL_USE_MAGIC_DEVICE, oCaster);&lt;br /&gt;
	// track how good our class/level combo is: 0 - nothing&lt;br /&gt;
	//   1 - need to use UMD for class /and/ an attribute UMD check&lt;br /&gt;
	//   2 - class is OK, but attribute is too low, UMD check to simulate it&lt;br /&gt;
	//   3 - need to use UMD for class (attribute OK)&lt;br /&gt;
	//   4 - valid caster class and stat&lt;br /&gt;
	int nAttemptLevel = 0;&lt;br /&gt;
	string sTest = &amp;quot;default&amp;quot;;&lt;br /&gt;
	string sClass = &amp;quot;&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
	// need to know if the PC has Use Magic Device skill, so it can be used if needed.&lt;br /&gt;
	if (GetSkillRank(SKILL_USE_MAGIC_DEVICE, oCaster, TRUE) &amp;gt;=1) {&lt;br /&gt;
	    bHasUMD = TRUE;&lt;br /&gt;
	}&lt;br /&gt;
	// start with checking for bard levels&lt;br /&gt;
	int nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_BARD);&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Bard&amp;quot;, nScrollID);&lt;br /&gt;
		// check to see if it is on the bard list&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Bard scroll- level &amp;quot;+sTest);&lt;br /&gt;
			nSpellClass = CLASS_TYPE_BARD;&lt;br /&gt;
			nSpellLevel = nTestSpellLevel;&lt;br /&gt;
			sClass = &amp;quot;Bard&amp;quot;;&lt;br /&gt;
			//SendMessageToPC(oCaster, &amp;quot;Bard scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_CHARISMA) &amp;gt;= (nSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute, calculate difficulty&lt;br /&gt;
				nSpellDiff = _ScrollCastDiff(CLASS_TYPE_BARD, nPCCasterLevel, nSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    // need the UMD check, for this, but stat is OK&lt;br /&gt;
					nAttemptLevel = 3;&lt;br /&gt;
				} else {&lt;br /&gt;
				    nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else {&lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
				if (bHasUMD) {&lt;br /&gt;
				    // if the PC had UMD, the attribute failure isn't final.  Track info.&lt;br /&gt;
					nSpellDiff = _ScrollCastDiff(CLASS_TYPE_BARD, nPCCasterLevel, nSpellLevel);&lt;br /&gt;
				    if (nPCCasterLevel == 0) {&lt;br /&gt;
				        // doesn't qualify by attribute or class&lt;br /&gt;
					    nAttemptLevel = 1;&lt;br /&gt;
					} else {&lt;br /&gt;
					    // has the class, but not the attribute&lt;br /&gt;
					    nAttemptLevel = 2;&lt;br /&gt;
					}						&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// check cleric levels next&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_CLERIC);&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    // is the spell on the cleric spell list?&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Cleric&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Cleric scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_WISDOM) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_CLERIC, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if ((nPCCasterLevel == 0) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
				    if (ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_CLERIC) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) {&lt;br /&gt;
				        nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_CLERIC;&lt;br /&gt;
					    sClass = &amp;quot;Cleric&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;	&lt;br /&gt;
					    nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // cleric levels have a better chance to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_CLERIC;&lt;br /&gt;
					sClass = &amp;quot;Cleric&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_CLERIC;&lt;br /&gt;
					sClass = &amp;quot;Cleric&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_CLERIC;&lt;br /&gt;
					sClass = &amp;quot;Cleric&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
					&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	// next, check for druid levels.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_DRUID);&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Druid&amp;quot;, nScrollID);&lt;br /&gt;
		// spell on the druid list?&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Druid scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_WISDOM) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_DRUID, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if ((nPCCasterLevel == 0) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
				    if (ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_DRUID) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_DRUID;&lt;br /&gt;
					    sClass = &amp;quot;Druid&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // then we're better off using druid levels to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_DRUID;&lt;br /&gt;
					sClass = &amp;quot;Druid&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_DRUID;&lt;br /&gt;
					sClass = &amp;quot;Druid&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_DRUID;&lt;br /&gt;
					sClass = &amp;quot;Druid&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// now checking Paladin levels.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_PALADIN);&lt;br /&gt;
	// Paladins  only cast from 4th onward, but still have CL 0 for scrolls.&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Paladin&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Paladin scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_WISDOM) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_PALADIN, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_PALADIN) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_PALADIN;&lt;br /&gt;
					    sClass = &amp;quot;Paladin&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // then we're better off using paladin levels to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_PALADIN;&lt;br /&gt;
					sClass = &amp;quot;Paladin&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_PALADIN;&lt;br /&gt;
					sClass = &amp;quot;Paladin&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_PALADIN;&lt;br /&gt;
					sClass = &amp;quot;Paladin&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// check for ranger levels.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_RANGER);&lt;br /&gt;
	// Rangers only cast from 4th onward, but still have CL 0 for scrolls.&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Ranger&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Ranger scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_WISDOM) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_RANGER, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_RANGER) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_RANGER;&lt;br /&gt;
					    sClass = &amp;quot;Ranger&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // then we are better off casting as a ranger.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_RANGER;&lt;br /&gt;
					sClass = &amp;quot;Ranger&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
				    nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_RANGER;&lt;br /&gt;
					sClass = &amp;quot;Ranger&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_RANGER;&lt;br /&gt;
					sClass = &amp;quot;Ranger&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// check Wizard levels next&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_WIZARD);&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    // is the spell on the wizard spell list?&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;Spells&amp;quot;, &amp;quot;Wiz_Sorc&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Wizard scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_INTELLIGENCE) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_WIZARD, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_WIZARD) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_WIZARD;&lt;br /&gt;
					    sClass = &amp;quot;Wizard&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // cleric levels have a better chance to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_WIZARD;&lt;br /&gt;
					sClass = &amp;quot;Wizard&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
 					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_WIZARD;&lt;br /&gt;
					sClass = &amp;quot;Wizard&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_WIZARD;&lt;br /&gt;
					sClass = &amp;quot;Wizard&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	// check spirit shaman levels&lt;br /&gt;
	// -Spirit shamans draw from the druid list, using wisdom- so most UMD cases are better&lt;br /&gt;
	//   done via druid class simulation, as it has a faster progression.&lt;br /&gt;
	//   only UMD check I forsee here is a SS using a scroll they don't have the attribute for.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_SPIRIT_SHAMAN);&lt;br /&gt;
	if (nPCCasterLevel &amp;gt; 0) {&lt;br /&gt;
	    // is the spell on the cleric spell list?&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Druid&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Spirit Shaman scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_WISDOM) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_SPIRIT_SHAMAN, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_SPIRIT_SHAMAN) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_SPIRIT_SHAMAN;&lt;br /&gt;
					    sClass = &amp;quot;Spitit Shaman&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // cleric levels have a better chance to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_SPIRIT_SHAMAN;&lt;br /&gt;
					sClass = &amp;quot;Spirit Shaman&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_SPIRIT_SHAMAN;&lt;br /&gt;
					sClass = &amp;quot;Spirit Shaman&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	// check Favored Soul levels next&lt;br /&gt;
	//  Favored Souls draw from the cleric spell list, but by Charisma- so a high CHA, low &lt;br /&gt;
	//   WIS UMD user is almost always going to be be better off emulating a FS.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_FAVORED_SOUL);&lt;br /&gt;
	if ((nPCCasterLevel &amp;gt; 0) || bHasUMD) {&lt;br /&gt;
	    // is the spell on the cleric spell list?&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Cleric&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Favored Soul scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_CHARISMA) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_FAVORED_SOUL, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_FAVORED_SOUL) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4)) {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_FAVORED_SOUL;&lt;br /&gt;
					    sClass = &amp;quot;Favored Soul&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // cleric levels have a better chance to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_FAVORED_SOUL;&lt;br /&gt;
					sClass = &amp;quot;Favored Soul&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_FAVORED_SOUL;&lt;br /&gt;
					sClass = &amp;quot;Favored Soul&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_FAVORED_SOUL;&lt;br /&gt;
					sClass = &amp;quot;Favored Soul&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	// finally, check sorceror levels&lt;br /&gt;
	//  Wiz spell list, but uses CHA as the stat, so higher CHA UMD users will want to test.&lt;br /&gt;
	nPCCasterLevel = ACR_GetCorrectCasterLevel(oCaster, CLASS_TYPE_SORCERER);&lt;br /&gt;
	if (nPCCasterLevel &amp;gt; 0) {&lt;br /&gt;
	    // is the spell on the cleric spell list?&lt;br /&gt;
	    sTest = Get2DAString(&amp;quot;spells&amp;quot;, &amp;quot;Wiz_Sorc&amp;quot;, nScrollID);&lt;br /&gt;
        if (sTest != &amp;quot;&amp;quot;) {	&lt;br /&gt;
	        nTestSpellLevel = StringToInt(sTest);&lt;br /&gt;
		    //SendMessageToPC(oCaster, &amp;quot;Sorceror scroll- level &amp;quot;+sTest);&lt;br /&gt;
		    if (GetAbilityScore(oCaster, ABILITY_CHARISMA) &amp;gt;= (nTestSpellLevel + 10)) {&lt;br /&gt;
		        // caster has high enough attribute&lt;br /&gt;
				// now, need to decide if we are better off using cleric or bard levels.&lt;br /&gt;
				nTestDiff = _ScrollCastDiff(CLASS_TYPE_SORCERER, nPCCasterLevel, nTestSpellLevel);&lt;br /&gt;
				if (nPCCasterLevel == 0) {&lt;br /&gt;
				    if ((ACR_GetMinSpellCL(nTestSpellLevel, CLASS_TYPE_SORCERER) &amp;lt; ACR_GetMinSpellCL(nSpellLevel, nSpellClass)) &amp;amp;&amp;amp; (nAttemptLevel &amp;lt; 4))  {&lt;br /&gt;
					    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				        nSpellClass = CLASS_TYPE_SORCERER;&lt;br /&gt;
					    sClass = &amp;quot;Sorcerer&amp;quot;;&lt;br /&gt;
					    nSpellDiff = nTestDiff;&lt;br /&gt;
					    bAttributeFail = FALSE;&lt;br /&gt;
						nAttemptLevel = 3;&lt;br /&gt;
					}&lt;br /&gt;
				} else if (nTestDiff &amp;lt; nSpellDiff) {&lt;br /&gt;
				    // cleric levels have a better chance to activate.&lt;br /&gt;
				    nSpellLevel = nTestSpellLevel;&lt;br /&gt;
				    nSpellClass = CLASS_TYPE_SORCERER;&lt;br /&gt;
					sClass = &amp;quot;Sorcerer&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = FALSE;&lt;br /&gt;
					nAttemptLevel = 4;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 1) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
			    // if nAttemptLevel is not set yet, or requires both checks, then&lt;br /&gt;
				// we need to consider this class as an alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_SORCERER;&lt;br /&gt;
					sClass = &amp;quot;Sorcerer&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 1;&lt;br /&gt;
				}&lt;br /&gt;
			} else if ((nAttemptLevel &amp;lt;= 2) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
				// The PC has the class, but needs the attribute.  Use this class if it's better than the alternative.&lt;br /&gt;
				if ((nTestSpellLevel &amp;lt; nSpellLevel) &amp;amp;&amp;amp; (nPCCasterLevel == 0)) {&lt;br /&gt;
				    // PC will need a UMD class check, and an attribute check, but this class is more favorable.&lt;br /&gt;
					nSpellLevel = nTestSpellLevel;&lt;br /&gt;
					nSpellClass = CLASS_TYPE_SORCERER;&lt;br /&gt;
					sClass = &amp;quot;Sorcerer&amp;quot;;&lt;br /&gt;
					nSpellDiff = nTestDiff;&lt;br /&gt;
					bAttributeFail = TRUE;&lt;br /&gt;
					nAttemptLevel = 2;&lt;br /&gt;
				}&lt;br /&gt;
			} else if (nAttemptLevel == 0) {&lt;br /&gt;
				//  only count this as an attribute fail if no other class works. &lt;br /&gt;
			    bAttributeFail = TRUE;&lt;br /&gt;
			}&lt;br /&gt;
		}	&lt;br /&gt;
	}&lt;br /&gt;
	if (bAttributeFail) {&lt;br /&gt;
	    if (bHasUMD) {&lt;br /&gt;
		    // PC doesn't qualify to cast the spell by any possessed or simulated classes.&lt;br /&gt;
			//  They are allowed an attempt to simulate the required attribute.&lt;br /&gt;
			int nAttributeDC = 15 + 10 + nSpellLevel;&lt;br /&gt;
			int nRoll = d20(1);&lt;br /&gt;
			if (GetSkillRank(SKILL_SPELLCRAFT, oCaster, TRUE) &amp;gt;= 5) {&lt;br /&gt;
		        // synergy bonus for scroll use&lt;br /&gt;
			    nAttributeDC = nAttributeDC - 2;&lt;br /&gt;
			    SendMessageToPC(oCaster, &amp;quot;Spellcraft Synergy Applied: DC reduced to &amp;quot;+IntToString(nAttributeDC));&lt;br /&gt;
		    }&lt;br /&gt;
			if (GetSkillRank(SKILL_DECIPHER_SCRIPT, oCaster, TRUE) &amp;gt;= 5) {&lt;br /&gt;
		        // synergy bonus for scroll use&lt;br /&gt;
			    nAttributeDC = nAttributeDC - 2;&lt;br /&gt;
			    SendMessageToPC(oCaster, &amp;quot;Decipher Script Synergy Applied: DC reduced to &amp;quot;+IntToString(nAttributeDC));&lt;br /&gt;
		    }&lt;br /&gt;
			if ((nRoll + nUMDRanks) &amp;gt;= nAttributeDC) {&lt;br /&gt;
				// don't return here, even though it's successful- caster level check and/or UMD class check may still be needed.&lt;br /&gt;
			    SendMessageToPC(oCaster, &amp;quot;Use Magic Device Roll to emulate ability score: &amp;quot;+IntToString(nRoll)+&amp;quot;+&amp;quot;+IntToString(nUMDRanks)+&amp;quot;=&amp;quot;+IntToString(nRoll+nUMDRanks)+&amp;quot; vs. DC &amp;quot;+IntToString(nAttributeDC)+&amp;quot;: Success!&amp;quot;);&lt;br /&gt;
				bAttributeFail = FALSE;&lt;br /&gt;
			} else {&lt;br /&gt;
			    SendMessageToPC(oCaster, &amp;quot;Use Magic Device Roll to emulate ability score: &amp;quot;+IntToString(nRoll)+&amp;quot;+&amp;quot;+IntToString(nUMDRanks)+&amp;quot;=&amp;quot;+IntToString(nRoll+nUMDRanks)+&amp;quot; vs. DC &amp;quot;+IntToString(nAttributeDC)+&amp;quot;: Failure!&amp;quot;);&lt;br /&gt;
			    return 0;&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
		    // without UMD, the attempt will fail.&lt;br /&gt;
	        SendMessageToPC(oCaster, &amp;quot;Your attributes are not high enough to activate this scroll.&amp;quot;);&lt;br /&gt;
		    return 0;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	if (nSpellDiff &amp;lt;= 1) {&lt;br /&gt;
	    // the user can activate the scroll without a check, due to level and attributes.&lt;br /&gt;
		return 1;	&lt;br /&gt;
		&lt;br /&gt;
	} else if (nAttemptLevel == 0) {&lt;br /&gt;
	    // no class was found to allow you to activate, fail.&lt;br /&gt;
		SendMessageToPC(oCaster, &amp;quot;You cannot activate this scroll.&amp;quot;);&lt;br /&gt;
		return 0;	&lt;br /&gt;
		&lt;br /&gt;
	} else if ((GetLevelByClass(nSpellClass, oCaster) == 0) &amp;amp;&amp;amp; bHasUMD) {&lt;br /&gt;
	    // caster does not have appropriate levels to attempt the spell, must make UMD check.&lt;br /&gt;
        int nUMDDC = 20 + _ScrollCastDiff(nSpellClass, 0, nSpellLevel) - 1;&lt;br /&gt;
		int nRoll2 = d20(1);&lt;br /&gt;
		SendMessageToPC(oCaster, &amp;quot;Attempting to activate by emulating a &amp;quot;+sClass);&lt;br /&gt;
		if (GetSkillRank(SKILL_SPELLCRAFT, oCaster, TRUE) &amp;gt;= 5) {&lt;br /&gt;
		    // synergy bonus for scroll use&lt;br /&gt;
			nUMDDC = nUMDDC - 2;&lt;br /&gt;
			SendMessageToPC(oCaster, &amp;quot;Spellcraft Synergy Applied: DC reduced to &amp;quot;+IntToString(nUMDDC));&lt;br /&gt;
		}&lt;br /&gt;
		if (GetSkillRank(SKILL_DECIPHER_SCRIPT, oCaster, TRUE) &amp;gt;= 5) {&lt;br /&gt;
		    // synergy bonus for scroll use&lt;br /&gt;
			nUMDDC = nUMDDC - 2;&lt;br /&gt;
			SendMessageToPC(oCaster, &amp;quot;Decipher Script Synergy Applied: DC reduced to &amp;quot;+IntToString(nUMDDC));&lt;br /&gt;
		}&lt;br /&gt;
		if ((nRoll2 + nUMDRanks) &amp;gt;= nUMDDC) {&lt;br /&gt;
		    SendMessageToPC(oCaster, &amp;quot;Use Magic Device Roll to activate scroll: &amp;quot;+IntToString(nRoll2)+&amp;quot;+&amp;quot;+IntToString(nUMDRanks)+&amp;quot;=&amp;quot;+IntToString(nRoll2+nUMDRanks)+&amp;quot; vs. DC &amp;quot;+IntToString(nUMDDC)+&amp;quot;: Success!&amp;quot;);&lt;br /&gt;
			return 1;&lt;br /&gt;
		} else if ((nRoll2+ nUMDRanks) &amp;lt;= (nUMDDC-10)) {&lt;br /&gt;
		    // missed it by a mile, auto-mishap as per PhB p.85&lt;br /&gt;
			SendMessageToPC(oCaster, &amp;quot;Use Magic Device Roll to activate scroll: &amp;quot;+IntToString(nRoll2)+&amp;quot;+&amp;quot;+IntToString(nUMDRanks)+&amp;quot;=&amp;quot;+IntToString(nRoll2+nUMDRanks)+&amp;quot; vs. DC &amp;quot;+IntToString(nUMDDC)+&amp;quot;: Critical Failure!&amp;quot;);&lt;br /&gt;
			_ProcessMishap(oCaster, nSpellLevel, nScrollID);&lt;br /&gt;
			return -1;&lt;br /&gt;
		} else {&lt;br /&gt;
		    SendMessageToPC(oCaster, &amp;quot;Use Magic Device Roll to activate scroll: &amp;quot;+IntToString(nRoll2)+&amp;quot;+&amp;quot;+IntToString(nUMDRanks)+&amp;quot;=&amp;quot;+IntToString(nRoll2+nUMDRanks)+&amp;quot; vs. DC &amp;quot;+IntToString(nUMDDC)+&amp;quot;: Failure!&amp;quot;);&lt;br /&gt;
			if (_ScrollMishapCheck(oCaster, nScrollID, nSpellLevel, nScrollID)) {&lt;br /&gt;
                return -1;&lt;br /&gt;
		    } else { &lt;br /&gt;
		        return 0; &lt;br /&gt;
		    }&lt;br /&gt;
		}&lt;br /&gt;
	} else {&lt;br /&gt;
	    // have to run a caster level check, with chance of failure.&lt;br /&gt;
		SendMessageToPC(oCaster, &amp;quot;Attempting to activate scroll using &amp;quot;+sClass+&amp;quot; level(s).&amp;quot;); &lt;br /&gt;
		return _AttemptScrollUse(nScrollID, nSpellLevel, oCaster, nSpellClass);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _ScrollCastDiff(int nClass, int nUserLevel, int nSpellLevel) {&lt;br /&gt;
&lt;br /&gt;
	if (nSpellLevel == 0) {&lt;br /&gt;
		// special handling for 0th level spells, as they don't work well for the math.&lt;br /&gt;
		if (nUserLevel &amp;gt;= 1) {&lt;br /&gt;
			// Caster has the right class, return &amp;lt;=1&lt;br /&gt;
			return 0;&lt;br /&gt;
		} else {&lt;br /&gt;
			// Caster has no appropriate levels to cast it, return &amp;gt; 1.&lt;br /&gt;
			return 2;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
    if (nClass == CLASS_TYPE_BARD) {&lt;br /&gt;
	    if (nSpellLevel &amp;lt; 3) {&lt;br /&gt;
		    return (nSpellLevel*2 - nUserLevel +1);&lt;br /&gt;
		} else {&lt;br /&gt;
		    return ((nSpellLevel*3 -2) - nUserLevel +1);&lt;br /&gt;
		}&lt;br /&gt;
	&lt;br /&gt;
	// clerics, druids, and wizards all gain spell level access at the same rate	&lt;br /&gt;
	} else if ((nClass == CLASS_TYPE_CLERIC) || (nClass == CLASS_TYPE_DRUID) || (nClass == CLASS_TYPE_WIZARD))  { &lt;br /&gt;
	    return ((nSpellLevel*2 - 1) - nUserLevel +1);&lt;br /&gt;
	&lt;br /&gt;
	// sorcerors, spirit shamans, and favored souls all use a staggered spell level advancement	&lt;br /&gt;
	} else if ((nClass == CLASS_TYPE_SORCERER) || (nClass == CLASS_TYPE_FAVORED_SOUL) || (nClass == CLASS_TYPE_SPIRIT_SHAMAN)) {&lt;br /&gt;
	    if (nSpellLevel &amp;lt; 2) {&lt;br /&gt;
		    return (1 - nUserLevel +1);&lt;br /&gt;
		} else {&lt;br /&gt;
            return (nSpellLevel*2 - nUserLevel);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	// Paladins and Rangers use the same delayed spell level table&lt;br /&gt;
	} else if ((nClass == CLASS_TYPE_PALADIN) || (nClass == CLASS_TYPE_RANGER)) {&lt;br /&gt;
	    if (nUserLevel &amp;lt; 4) { nUserLevel = 0; }&lt;br /&gt;
	    if (nSpellLevel &amp;lt; 3) {&lt;br /&gt;
		    return ((nSpellLevel*4 - nUserLevel+1)/2 +1);&lt;br /&gt;
		} else if (nSpellLevel == 3) {&lt;br /&gt;
		    return ((6 - nUserLevel/2));&lt;br /&gt;
		} else {&lt;br /&gt;
		    // spell is 4th level&lt;br /&gt;
		    return ((7 - nUserLevel/2)+1);&lt;br /&gt;
		} &lt;br /&gt;
	} else {&lt;br /&gt;
	   return 99;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _AttemptScrollUse(int nScrollID, int nSpellLevel, object oCaster, int nSpellClass) {&lt;br /&gt;
&lt;br /&gt;
    int nRoll = d20(1);&lt;br /&gt;
	if (nRoll == 1) {&lt;br /&gt;
	    SendMessageToPC(oCaster, &amp;quot;Caster Level check: Critical failure!&amp;quot;);&lt;br /&gt;
		if (_ScrollMishapCheck(oCaster, nScrollID, nSpellLevel, nScrollID)) {&lt;br /&gt;
            return -1;&lt;br /&gt;
		} else { &lt;br /&gt;
		    return 0; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	int nScrollDC = 1 + ACR_GetMinSpellCL(nSpellLevel, nSpellClass);&lt;br /&gt;
	int nCL = ACR_GetCasterLevel(oCaster, nSpellClass);&lt;br /&gt;
	if (nRoll+nCL &amp;gt;= nScrollDC) {&lt;br /&gt;
        SendMessageToPC(oCaster, &amp;quot;Caster Level check: &amp;quot;+IntToString(nRoll)+&amp;quot;+&amp;quot;+IntToString(nCL)+&amp;quot;=&amp;quot;+IntToString(nCL+nRoll)+&amp;quot; vs. DC &amp;quot;+IntToString(nScrollDC)+&amp;quot;: Success! &amp;quot;); &lt;br /&gt;
		return 1;&lt;br /&gt;
	} else {&lt;br /&gt;
	    SendMessageToPC(oCaster, &amp;quot;Caster Level check: &amp;quot;+IntToString(nRoll)+&amp;quot;+&amp;quot;+IntToString(nCL)+&amp;quot;=&amp;quot;+IntToString(nCL+nRoll)+&amp;quot; vs. DC &amp;quot;+IntToString(nScrollDC)+&amp;quot;: Failure! &amp;quot;);&lt;br /&gt;
		if (_ScrollMishapCheck(oCaster, nScrollID, nSpellLevel, nScrollID)) {&lt;br /&gt;
            return -1;&lt;br /&gt;
		} else { &lt;br /&gt;
		    return 0; &lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int _ScrollMishapCheck(object oCaster, int nScrollID, int nSpellLevel, int nSpellID) {&lt;br /&gt;
	&lt;br /&gt;
    int nCheck = d20(1);&lt;br /&gt;
	int nWisBonus = GetAbilityModifier(ABILITY_WISDOM, oCaster);&lt;br /&gt;
	int nTotal = nCheck + nWisBonus;&lt;br /&gt;
	SendMessageToPC(oCaster, &amp;quot;Rolling to avoid mishap: &amp;quot;+IntToString(nCheck)+&amp;quot;+&amp;quot;+IntToString(nWisBonus)+&amp;quot;= &amp;quot;+IntToString(nTotal)+&amp;quot;, vs. DC 5&amp;quot;);&lt;br /&gt;
	if ((nTotal &amp;lt; 5) || (nCheck == 1)) {&lt;br /&gt;
	    // Scroll mishap!&lt;br /&gt;
        _ProcessMishap(oCaster, nSpellLevel, nSpellID);&lt;br /&gt;
		return TRUE;&lt;br /&gt;
	} else {&lt;br /&gt;
	    SendMessageToPC(oCaster, &amp;quot;Mishap averted!&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
    return FALSE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void _ProcessMishap(object oCaster, int nSpellLevel, int nSpellID) {&lt;br /&gt;
&lt;br /&gt;
		SendMessageToPC(oCaster, &amp;quot;Failure! The spell goes awry...&amp;quot;);&lt;br /&gt;
		int nMishapType = d4(1);&lt;br /&gt;
	    object oTarget = GetSpellTargetObject();&lt;br /&gt;
		effect eMishap;&lt;br /&gt;
		if (nMishapType == 1) {&lt;br /&gt;
		    // raw damage backfire, d6 / spell level magical damage to caster&lt;br /&gt;
		    eMishap = EffectDamage(d6(nSpellLevel), DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL, TRUE);&lt;br /&gt;
			eMishap = EffectLinkEffects(eMishap, EffectVisualEffect(VFX_IMP_MAGBLUE));&lt;br /&gt;
			ApplyEffectToObject(DURATION_TYPE_INSTANT, eMishap, oCaster);&lt;br /&gt;
			&lt;br /&gt;
		} else if (nMishapType == 2) {&lt;br /&gt;
		    // target switch&lt;br /&gt;
			SendMessageToPC(oCaster, &amp;quot;The spell seems to have been misdirected!&amp;quot;);&lt;br /&gt;
			if (oTarget == OBJECT_INVALID) {&lt;br /&gt;
			    // spell is aimed at a location, misdirect it&lt;br /&gt;
				vector vLoc = GetPositionFromLocation(GetSpellTargetLocation());&lt;br /&gt;
				vector vNew = Vector(vLoc.x+(ACR_RandomFloat(-12.0, 12.0)), vLoc.y+(ACR_RandomFloat(-12.0, 12.0)), vLoc.z);&lt;br /&gt;
				location lNew = Location(GetAreaFromLocation(GetSpellTargetLocation()), vNew, 0.0);&lt;br /&gt;
				AssignCommand(oCaster, ActionCastSpellAtLocation(nSpellID, lNew, METAMAGIC_NONE, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));&lt;br /&gt;
			} else {&lt;br /&gt;
			    // spell was aimed at a creature or object- switch target&lt;br /&gt;
				if (GetIsEnemy(oTarget, oCaster)) {&lt;br /&gt;
				    // aiming for an enemy? Redirect to caster&lt;br /&gt;
				    AssignCommand(oCaster, ActionCastSpellAtObject(nSpellID, oCaster, METAMAGIC_NONE, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));&lt;br /&gt;
				} else if (oTarget == oCaster) {&lt;br /&gt;
				    // caster aiming at him/herself?  Aim elsewhere.&lt;br /&gt;
					object oNewTarget = GetNearestCreature(CREATURE_TYPE_IS_ALIVE, CREATURE_ALIVE_BOTH, oCaster, d6(1));&lt;br /&gt;
					AssignCommand(oCaster, ActionCastSpellAtObject(nSpellID, oNewTarget, METAMAGIC_NONE, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));&lt;br /&gt;
				}	&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
	    } else if (nMishapType == 3) {&lt;br /&gt;
		    // delayed effect&lt;br /&gt;
			int nDelay = d12(1);			&lt;br /&gt;
			SendMessageToPC(oCaster, &amp;quot;The spell seems to have no effect... for now.&amp;quot;);&lt;br /&gt;
			DelayCommand(HoursToSeconds(nDelay), AssignCommand(oTarget, ActionCastSpellAtObject(nSpellID, oTarget, METAMAGIC_NONE, TRUE, 0, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)));&lt;br /&gt;
&lt;br /&gt;
		} else if (nMishapType &amp;lt;= 4) {&lt;br /&gt;
		    // innocuous effect, scroll user&lt;br /&gt;
			int nDuration = d10(2);&lt;br /&gt;
			switch (d10(1)) {&lt;br /&gt;
			    case 1:&lt;br /&gt;
			        eMishap = EffectVisualEffect(VFX_DUR_INVOCATION_TENACIOUS_PLAGUE);&lt;br /&gt;
					break;&lt;br /&gt;
				case 2:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_SHINING_SHIELD);&lt;br /&gt;
					break;&lt;br /&gt;
				case 3:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_SOOTHING_LIGHT);	&lt;br /&gt;
					break;&lt;br /&gt;
				case 4:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_SACRED_FLAMES);&lt;br /&gt;
					break;&lt;br /&gt;
				case 5:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_SHADOW_CLOAK);&lt;br /&gt;
					break;&lt;br /&gt;
				case 6:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_STUN);&lt;br /&gt;
					break;&lt;br /&gt;
				case 7:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_FIRE);&lt;br /&gt;
					break;&lt;br /&gt;
				case 8:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_INVOCATION_BRIMSTONE_CHAIN2);&lt;br /&gt;
					break;&lt;br /&gt;
				case 9:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_DUR_BLUR);&lt;br /&gt;
					break;&lt;br /&gt;
				default:&lt;br /&gt;
				    eMishap = EffectVisualEffect(VFX_INVOCATION_ELDRITCH_CHAIN);&lt;br /&gt;
					break;&lt;br /&gt;
			}&lt;br /&gt;
			ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eMishap, oCaster, (IntToFloat(nDuration)*8.57));&lt;br /&gt;
		}	&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Areas&amp;diff=3698</id>
		<title>Building Areas</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Areas&amp;diff=3698"/>
				<updated>2021-12-28T05:50:00Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: /* Overland Travel Areas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
Creating an area under the ACR is little different from creating a normal area under NWN2. There are a few things which need to be done, however.&lt;br /&gt;
&lt;br /&gt;
As with other types of building in the ACR, additional parameters are specified by editing local variables. As such, you should be adept at [[Using Local Variables]].&lt;br /&gt;
&lt;br /&gt;
== Event Scripts ==&lt;br /&gt;
All of the area event scripts must bet set to the following:&lt;br /&gt;
* acf_area_onenter&lt;br /&gt;
* acf_area_oncliententer&lt;br /&gt;
* acr_area_onexit&lt;br /&gt;
* acf_area_onheartbeat&lt;br /&gt;
* acf_area_onuserdefined&lt;br /&gt;
&lt;br /&gt;
== Planes ==&lt;br /&gt;
If your area exists on a plane other than the Prime Material (Toril), you need to define it by setting a local variable on the area. This variable is a local integer, and named &amp;quot;ACR_PLANE_ID&amp;quot;. Make sure to set the plane id correctly. In future ACR updates, plane IDs could be used to enforce the special rules of different planes, and prevent teleportation spells from functioning between them. If your area exists on a pocket plane unique to your server, make sure the planar id is a negative number. [Add list of planes here, with corresponding id numbers for each]&lt;br /&gt;
&lt;br /&gt;
== Overland Travel Areas ==&lt;br /&gt;
(as a general rule ALFA no longer employs the use of Overland travel maps)&lt;br /&gt;
To use an area as an overland travel map, you must set the following local float variable: &amp;quot;ACR_3DT_SCALE&amp;quot;. The scale should be calculated by dividing the size of each tile in terms of its span in Faerun by the actual in-game tile size (which is 10 meters, 32.8 feet or .00621 miles). For example, a scaling of 10 miles per tile would mean ACR_3DT_SCALE should be set to 1610.&lt;br /&gt;
&lt;br /&gt;
Setting the scale correctly ensures travel will be the same speed across ALFA. The scale setting also controls PC-scaling, so players will be able to tell the rough scaling of the map by looking at the size of their PCs.&lt;br /&gt;
&lt;br /&gt;
Always set overland travel areas as no PvP zones. Combat and running are impossible in overland travel areas. DMs, however, are unaffected by them.&lt;br /&gt;
&lt;br /&gt;
== Seamless ATs ==&lt;br /&gt;
Seamless area transitions under the ACR requires three triggers be set up on the edges of areas. Though these triggers are already in the base mod's template area, anyone creating an area from scratch will need to add them.&lt;br /&gt;
&lt;br /&gt;
== Grids ==&lt;br /&gt;
Grid areas should be tagged as follows: SAT_NNNXXXYYYZZZ. SAT_ is a prefix in order to quickly identify a grid area from another area (inside areas mainly).&lt;br /&gt;
&lt;br /&gt;
NNN is the number of the grid starting at 000 and ending at 999. The grid number acts as a priority for overlapping grids. The smaller grids should have small grid numbers.&lt;br /&gt;
&lt;br /&gt;
XXX, YYY and ZZZ are coordinates.  They can be of the form nXX (for -XX when X &amp;lt; -9), n0X (for -0X when 9 &amp;lt;= X &amp;lt; 0), p0X (for +0X when 0 &amp;lt;= X &amp;lt;= 9) and pXX (when X &amp;gt; 9). This means that you can have 99 negative and 100 positive areas in each dimension.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=3697</id>
		<title>Building Doors</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Building_Doors&amp;diff=3697"/>
				<updated>2021-12-27T21:39:14Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
[[Category:Articles Needing Attention]]&lt;br /&gt;
While the basemod contains every door listed in the DMG with appropriate settings, builders may wish to create their own doors. ALFA has scripts which provide a number of mechanics not ordinarily found in NWN, and every door has an extra set of options because of this.&lt;br /&gt;
&lt;br /&gt;
As with creating new creatures, items, and so forth, the easiest way to make a new door is to copy/edit an existing one. For information on editing the settings of an existing door, skip the next section.&lt;br /&gt;
&lt;br /&gt;
== Creating a New Door ==&lt;br /&gt;
If you aren't editing an existing door, you will have to configure a number of options. To start off with, you'll need to make sure all of the door's event scripts are set correctly. ALFA's event scripts for doors are as follows: // Update for longer NWN2 file names&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclosed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onconversation&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondamaged&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondeath&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ondisarm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onheartbeat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onmeleeattacked&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onopen&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onspellcastat&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_ontraptriggered&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onunlock&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onused&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onuserdefined&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onclick&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;acf_door_onfailtoopen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to add custom event scripts to your doors, you can of course do so. Just make sure each event script includes the file [[acr_door_i.nss]], and calls the appropriate function for that event, listed here.&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClosed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnConversation()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDamaged()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDeath()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnDisarm()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnHeartbeat()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnLock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnMeleeAttacked()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnSpellCastAt()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnTrapTriggered()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUnlock()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUsed()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnUserDefined()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnClick()&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;ACR_DoorOnFailToOpen()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, the easiest way to do this is to edit an existing acr_door_* file and save it under a different name. Failure to properly call ALFA's door scripts can break multiple systems of the ACR. So make sure you've got them in there.&lt;br /&gt;
&lt;br /&gt;
== Editing Door Settings ==&lt;br /&gt;
: ''See also: [[Using Local Variables]]&lt;br /&gt;
Aside from the standard NWN options of doors, we've provided a few more to give PCs and builders more options. These options can be accessed by editing the door's local variables.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_DELAY'''&amp;lt;/code&amp;gt; (float) The number of seconds a door will stay open before automatically closing itself. If set to zero or less than zero, the door will not close itself automatically.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_CLOSE_NEAR_PCS'''&amp;lt;/code&amp;gt; (integer) If set to 1, the door will auto-close regardless of any nearby PCs. If set to 0 (the default), the door will wait until PCs are out of visual range before closing itself.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_STUCK_DC'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door is considered &amp;quot;stuck&amp;quot;, and therefore cannot be opened unless forced. The value defined is the strength-check DC to &amp;quot;un-stick&amp;quot; the door. If someone tries to force a locked and stuck door open, the strength DC used is the higher of this value and &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt;. The default value is 0.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_BREAK_DC'''&amp;lt;/code&amp;gt; (integer) The DC to break open this door, as per DMG rules. Breaking open a door does not destroy it like doing damage to it would in NWN, but it does keep the door from being able to be locked again. If this value is zero, the door cannot be forced open. Valid values are from 0 to 255.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_FAIL_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This is a custom message sent to PCs who try to open the door and fail. This can be used in conjunction with * &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; to setup doors that require a spoken password to access (even useful for door riddles).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_OPEN_MESSAGE'''&amp;lt;/code&amp;gt; (string) This message is &amp;quot;spoken&amp;quot; by the door when it is opened. It is usually used to give the PCs a description of the area beyond an AT, if any.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door unlocks itself. Generally used for shops and things which are only open during certain hours of the day. It will only unlock once, so if something else locks it afterwards, it will remain locked until either another creature unlocks it, or its next unlock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LOCK_HOUR'''&amp;lt;/code&amp;gt; (integer) This is the time of day (in hours) the door locks itself. Generally used for shops and things which are only open during certain hours of the day. It will only lock once, so if something else unlocks it afterwards, it will remain unlocked until either another creature locks it, or its next lock time. Valid values are 0 to 23. If you don't wish the door locking or unlocking itself automatically, leave both this variable and &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_HOUR'''&amp;lt;/code&amp;gt; set to 0 (the default value).&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_SPELLID'''&amp;lt;/code&amp;gt; (int) This is the Spell ID for doors that require a specific spell to unlock. This will only work for spell IDs greater than 0. Be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNLOCK_PASSWORD'''&amp;lt;/code&amp;gt; (string) This is what a player must speak to gain access to a password protected door. Leave this empty to require no password. Otherwise, be sure to set the door's default lock status to locked.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_AUTO_LOCK'''&amp;lt;/code&amp;gt; (integer) If non-zero, the door will automatically lock itself each time it is shut.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_LISTEN_DC_MOD'''&amp;lt;/code&amp;gt; (integer) This modifier is applied to creatures trying to listen to conversations occuring behind a closed doors. The DMG lists this a +5 for every door, but some customization is allowed for different door types. If undefined or set to 0, the door cannot be listened through.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_KNOCK_IMMUNE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this door is immune to the spell knock. If zero, it is not immune.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_DOOR_UNMOVABLE'''&amp;lt;/code&amp;gt; (integer) If nonzero, the door cannot be opened or closed by a non-DM creature, even if unlocked. Scripts can still open or close it, however. This setting is often used to represent large doors which a PC could not realistically close on their own even if they were unlocked, like the huge gates on castles and other fortifications.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ACR_AT_SIZE'''&amp;lt;/code&amp;gt; (integer) If nonzero, this setting specifies the maximum sized creature which can fit through this doorway. Anything large will be given a message saying it is too large to fit inside. Valid values are as follows:&lt;br /&gt;
*# Fine&lt;br /&gt;
*# Diminutive&lt;br /&gt;
*# Tiny&lt;br /&gt;
*# Small&lt;br /&gt;
*# Medium&lt;br /&gt;
*# Large&lt;br /&gt;
*# Huge&lt;br /&gt;
*# Gargantuan&lt;br /&gt;
*# Colossal&lt;br /&gt;
&lt;br /&gt;
Note that currently, NWN2 does not support creature sizes of fine, diminutive, gargantuan or colossal. These values are provided here for future compatibility.&lt;br /&gt;
&lt;br /&gt;
Note that if none of these variables are defined, they default to zero. So a door without them would never close or lock itself, wouldn't be stuck or barred at all, would not be able to be forced open, and wouldn't have any sort of a custom message printed if a PC failed to open it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''TIPS/TROUBLESHOOTING'''&lt;br /&gt;
&lt;br /&gt;
*  If your doorway does not seem to function properly:&lt;br /&gt;
*- make sure the doorway is within a walkmesh area&lt;br /&gt;
*- make sure there is no open doorway behind it, as in a tileset doorway vs a placeable doorway&lt;br /&gt;
*- a door must have current hit points &amp;gt;0 for it to function&lt;br /&gt;
*- If your static door looks fine in the toolset but does not fill the doorway ingame, the door model defaults in static mode.  Instead do not make door static and set it to locked, requires key to open to get it to look right ingame. This is especially true when you have changed the size of the door to fit the doorway. Some models work better than others.  There are now placeable doors also available in the toolset.&lt;br /&gt;
*- If a Half-orc cannot got through your AT  make sure the receiving end is not set to position lock. Also make sure there is plenty of cleared space around the receiving door.  Too little space will keep orcs and half-orcs from being able to traverse the doorway.&lt;br /&gt;
* When resizing doors scales 1st and 2nd should be the same size.  Otherwise your door will be a weird size when it opens.  This how ever might be a useful trick when you want to emulate a door folding up or to the side.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3696</id>
		<title>Toolset Guide</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3696"/>
				<updated>2021-12-25T11:48:08Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This guide assumes you read the toolset documentation.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to read Area Walkthroughs first, it is the most detailed about the basic techniques of making a good looking area.&lt;br /&gt;
&lt;br /&gt;
== Land ==&lt;br /&gt;
=== Height ===&lt;br /&gt;
Height adjustment tools should be used in moderation. Don't go dragging around a bunch of land at once, click smaller areas to avoid losing control of your slopes.&lt;br /&gt;
&lt;br /&gt;
A short description of tools:&lt;br /&gt;
* Raise/Lower - Self explanatory&lt;br /&gt;
* Noise - This tool makes little bumps in the terrain, very useful for making realistic eroded terrain.&lt;br /&gt;
* Smooth - This creates slopes. Drag it around between two areas to smooth it out and get a slope. You can also round off any peaks. &lt;br /&gt;
* Walk/Non Walk - For marking walkmeshes.&lt;br /&gt;
* Flatten - This tool is your friend. If you want to create a whole bunch of raised terrain, use the flatten tool. Choose the average height of your raised terrain, make the brush huge and have at it. Once you have this done, you can use the other tools to detail it and make it look good.&lt;br /&gt;
* Color - Allows you to color the ground. This will be discussed more under textures.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Turn on the surface mesh option when adjusting height. This allows you to see the vertexes and more easily determine what kinds of slopes and such you're getting.&lt;br /&gt;
&lt;br /&gt;
Remember that most land is pretty gradually sloped. Don't go crazy with these tools unless the situation calls for it. An area with several gentle rises and valleys looks more natural than one with all sorts of skyfjords and such.&lt;br /&gt;
&lt;br /&gt;
If you need to raise or lower a whole lot of terrain quickly, use the flatten tool. If you use raise or lower you have to wait a while, but with flatten you can simply specify the height you want and get it in a single click. Then you can use smooth, raise, and lower to make it look natural.&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
The color tool allows you to color the ground, which can help tinting textures. Use this tool to make variations in large areas with the same texture, for a more natural feel. You can also buff out any areas of geometrically repeating patterns with this, without using up one of your six textures.&lt;br /&gt;
&lt;br /&gt;
Layer textures for better results. Also experiment with pressures. You can often effectively make a custom texture through layering, pressure variation, and colors. One good technique is to lay down your base texture at full pressure, your blend texture at half, then spray on the base one again at a very low pressure to mix it in.&lt;br /&gt;
&lt;br /&gt;
Textures apply within the vertexes of the mesh, so they will stretch out along cliffs. You can actually use this to your advantage, because the amount they stretch can make them look quite different than they do when flat.&lt;br /&gt;
&lt;br /&gt;
Don't get too absorbed in the names of the textures. There's a tendency to only use cliff textures with cliffs and that sort of thing, but while they are designed for specific functions and look good that way, you can also mix them up to great result.&lt;br /&gt;
&lt;br /&gt;
Each area should have no more than 6 textures allocated to it.  Even though various sections will allow different texture sets.  More than 6 textures in a single map will often cause the area not to open in the toolset.&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
Always make sure the water clips under the land. This is very important, otherwise you will get a gap at the edge which looks terrible.&lt;br /&gt;
&lt;br /&gt;
Each metatile can have a different water level. If you want to have a stream flowing downhill, you'll have to make sure the flat portions of the stream are on different metatiles, and the downhill portions are on edges. You can then use a water placeable to simulate the downhill portion, along with a vfx if you're making a waterfall.&lt;br /&gt;
&lt;br /&gt;
You can do a lot of things with water other than water. The fact that it reflects can be used to great effect on shiny marble floors, for instance. Make an interior and tint it to look like marble, then place a very thin layer of water on the floor, then alter its movement settings so it is completely still.&lt;br /&gt;
&lt;br /&gt;
Among other things you can do with water is color it, to make lava flows and the like. Experiment for great justice.&lt;br /&gt;
&lt;br /&gt;
Remember that you have to lower the land where you're placing water, or raise the water level above the ground, otherwise the land and water will clip together and look terrible.&lt;br /&gt;
&lt;br /&gt;
Watch how deep your water is and remember to remove the walkmesh in deep zones, unless you want PCs to be able to walk around underwater.&lt;br /&gt;
&lt;br /&gt;
== Placeables ==&lt;br /&gt;
: ''See also: [[Building Placeables]]''&lt;br /&gt;
&lt;br /&gt;
''Placeables can now be tilted. Look for the orientation box in the properties. The first number controls left and right, the second forward and back. Use decimals, whole numbers tilt them too far.'' [I don't believe this was ever fully implemented]&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Many placeables, particularly buildings, can be placed inside and attached to one another. In this way you can, for example, stitch together several buildings to make one large one, rather than having to get a new model for it.&lt;br /&gt;
&lt;br /&gt;
=== Buildings ===&lt;br /&gt;
Buildings can be made into rows easily. Simply place down the buildings and move them together so their walls touch. They actually look quite good like this, and you can turn them into prefabs for use later.&lt;br /&gt;
&lt;br /&gt;
Make several prefab rows of buildings, with the buildings shuffled around. That way you can quickly lay down rows of buildings and if you space out your use of the same prefab, along with some single buildings in the gaps, you can make it difficult to see that any building patterns are being repeated.&lt;br /&gt;
&lt;br /&gt;
== Trees ==&lt;br /&gt;
You don't have to use a lot of seeds to break up your forest. Space the trees out and layer them, incorporate one with a radically different size and one with a radically different color than the rest of the trees, and you can break it up enough to look fine while maintaining performance.&lt;br /&gt;
&lt;br /&gt;
Remember that forest floors aren't grassy, they have all sorts of junk lying around. There's a twig texture, and a couple grass textures that can be mixed together to make a good forest floor.&lt;br /&gt;
&lt;br /&gt;
== Critters ==&lt;br /&gt;
: ''See also: [[Building Creatures]]''&lt;br /&gt;
To place multiple VFXes on a creature, you will have to use an OnSpawn script. You can only apply one in its properties.&lt;br /&gt;
&lt;br /&gt;
Don't overlook the “assign class feats” and “assign racial feats” buttons in the feats screen, this makes assigning feats go much more quickly. You can also sort the list using the drop-down box above the list.&lt;br /&gt;
&lt;br /&gt;
Scaling creatures is totally awesome and everyone should make a fifty foot tall flaming goblin at least once.&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
: ''See also: [[Building Items]]''&lt;br /&gt;
You can use the mouse wheel to scroll through models.&lt;br /&gt;
&lt;br /&gt;
To preview a weapon, you can open a second properties window and set it to preview&lt;br /&gt;
&lt;br /&gt;
In windows 10 and up there is a bug that cause the preview not to update correctly.  You can sometimes scroll through your weapon / shield models by placing a NPC in an area with a weapon/shield being held, turn off your ability to select creatures and then you can select the weapon/shield they hold and go through the models in the properties tab. Once you find what you want then transfer those models to the item you want to make.&lt;br /&gt;
&lt;br /&gt;
== Tips and Tricks ==&lt;br /&gt;
When making multi-floor interiors, remember that interior tiles can be laid down on top of old tiles without having to delete. You can simply wipe right over what you have, so an easy way to make multiple floors is to simply copy your ground floor area and go to town. That way, you can lay stairways down right where they should be and ensure the floors are exactly the same size.&lt;br /&gt;
&lt;br /&gt;
=== Making Beaches ===&lt;br /&gt;
Making a beach is a bit complex, as it involves a lot of blending and you have to take into account the way the water refraction will change your textures. Fortunately it's easy to get a hang of.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to create the slope. I'll not go into detail on it since you should know how to do that, if not refer to Section A, Subsection 1 on working with height.&lt;br /&gt;
&lt;br /&gt;
Once you have your slope, you'll need to apply the beach textures. I have selected three that I like for my beach, but you can play around. In general, you will want to have darker textures the further you go out from shore.&lt;br /&gt;
&lt;br /&gt;
Beach example one, without water visible. The textures used are noted.&lt;br /&gt;
&lt;br /&gt;
Now for a detailed look at this. Grass_12 was my shoreline texture, Dirt_03 is sand, and Dirt_30 is deep underwater. I have applied Dirt_03 at 100% pressure along the slope of the beach itself, and for several feet extending both underwater and up the shore. You can extend this as far as you like to make a more sandy shore, here I have kept the beach relatively narrow.&lt;br /&gt;
&lt;br /&gt;
Next, I have applied Dirt_30 at 100% pressure underwater, leaving a gap between it and the edge of the Dirt_03 section. This gap is very important, as you will see momentarily. Next, I sprayed down Dirt_30 at about 80% pressure, filling in the gap. After this, I switched back to Dirt_03 and sprayed it down at about 40% pressure over the Dirt_30 gap, and over the shore on top of the Grass_12. This produces the bands of blended textures, giving a natural progression from one texture to another.&lt;br /&gt;
&lt;br /&gt;
The above doesn't look very good on its own, but let's see it with water and its associated refraction.&lt;br /&gt;
&lt;br /&gt;
Much better, and quite natural, don't you think?&lt;br /&gt;
&lt;br /&gt;
This beach could use improvement on the linearity of the various texture layers—it has formed into bands which are noticeable. This is easily corrected by spraying textures down as described in various formations, in order to break up the outline. You can also add more layers at various pressures to further the blending between the textures. All in all, the techniques are solid and correct for making a beach. If you can replicate this effect, you have the essentials down and can begin the artistic side of the build.&lt;br /&gt;
&lt;br /&gt;
== Area Walkthroughs ==&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
=== Rural River Village ===&lt;br /&gt;
This walkthrough describes the making of a small river and village, somewhere in the wilderness, and goes through all the associated techniques.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is define the shape of the land. I will start with the river, since it's the primary feature in this scenario—the reason the village was built where it was built was because of the river, so the river will be the central build of the area. To make the river, we will use the lower, flatten, and smooth tools.&lt;br /&gt;
&lt;br /&gt;
I have turned on the “Surface mesh” option in order to better see the contours of the terrain as I carve out the river. You can use the flatten tool to make the basic level of the river, then lower and smooth to detail it and make it look natural. Once you have your river, it's time to put in some water.&lt;br /&gt;
&lt;br /&gt;
The important thing to note here is the size of the brush I am using. It is much larger than the river for a good reason. In order to have the water clip properly with the slopes of the riverbanks, the water must go under the land, as illustrated here:&lt;br /&gt;
&lt;br /&gt;
Also, if you decide to widen part of your river later, the water is already there. Now since this is a river, it flows, so we have to work with the water some more to make the appearance of flowing. You must choose the direction it will flow. I have decided to make this river flow generally right to left across the area.&lt;br /&gt;
&lt;br /&gt;
The ripple effects change how rough the water is, as does the smoothness. You shouldn't play with refraction for regular water, the default looks fine. The important controls here are the three water layers. They contain sliders for scroll direction and rate, which is what we manipulate to make the flowing effect. I believe the tool names are self explanatory. Just play with them until the river appears to be flowing the correct direction at the correct speed.&lt;br /&gt;
&lt;br /&gt;
But wait you say! The flow is only happening in one of the metatiles! That's correct little Jimmy, the water options are for a single metatile, the same space in which your textures are counted. After setting it up hit export to save the settings, then you can change the other sections in one of two ways. Either select the metatile and import, or you can use the water brush again, as it will use these settings until you change them. You will probably have to adjust the flow directions some in various tiles unless your river is mostly straight and in a single direction.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Make all stream bends at the edges of the metatiles, so you can adjust the flow directions to look correct without screwing up other parts of the stream.&lt;br /&gt;
&lt;br /&gt;
After you have your water, hide it and head for textures. Your streambed looks like crap with just grass on it, let's fix that.&lt;br /&gt;
&lt;br /&gt;
Here I have selected TT_GG_Grass_35 at 100% pressure. Yes the texture name is grass and yes it looks like rocks, don't worry about that. I'm painting this down all along the streambed and up to the shoreline, though I'm not taking much care to make sure it matches the shoreline. Nature isn't nice and neat about this, so neither should you be. Now if you're thinking of skimping on this step, check out the following image:&lt;br /&gt;
&lt;br /&gt;
This is a comparison between the stream as it was and with the new streambed texture. Looks much better, doesn't it? Textures are important.&lt;br /&gt;
&lt;br /&gt;
After I've laid out this one, I'm going to use a second texture to represent fine silt and to weather the first texture a bit. I've selected TT_GD_Dirt_06 at 50% pressure for this job.&lt;br /&gt;
&lt;br /&gt;
This removes the clean-cut nature of the previous texture. After all, how many streambeds have you seen that were nice and tidy? This looks like it's had sedimentation, which is what we want. Again, don't be too neat on this.&lt;br /&gt;
&lt;br /&gt;
Now for a little '''PROTIP''' for extra realism. Think of how your stream flows when you lay down these textures. Deposits will be thicker where the stream changes directions and pushes more material against a bank, and thinner on the opposite bank of where this occurs. Like so:&lt;br /&gt;
&lt;br /&gt;
As you can see, I've laid down the dirt silt texture heavier on the outside of the curve, which also illustrates a changing water level—stream floods from rain and such. The other side is bare.&lt;br /&gt;
&lt;br /&gt;
From here you can tint your textures a bit with the color tool. Darkening them somewhat around the water's edge will make it look muddy, or just randomly changing the tint can help break up any patterns that have emerged. I am not going to go into this since it's a matter of your own asthetics, and there's no real technique to it. It's just another layer in your texture manipulation.&lt;br /&gt;
&lt;br /&gt;
The river isn't finished—we need some vegetation along its banks and such—but that will wait for later. On to the land!&lt;br /&gt;
&lt;br /&gt;
As we all know, water seeks the lowest point, so your land should all be higher than the level of the river. Basic yes, but keep it in mind. I'm going to make the river in the bottom of a shallow valley, with some gentle hills on each side. Nothing too extreme.&lt;br /&gt;
&lt;br /&gt;
I've chosen raise tool at 50% pressure and a very large brush. This will allow me to make large, gentle hills easily. I'm also going to turn the mesh back on, and bring the camera down to a shallower angle to get a better look at the terrain height as I shape it.&lt;br /&gt;
&lt;br /&gt;
There we go. Nothing too extreme elevation wise, but it looks pretty natural. I'm not going to do any real fine elevation details here, since this looks about the way I want it. You don't have to get crazy with your elevation editing. I would highly suggest just walking around and taking a look at your local land formations, and reading some geology texts online to get a feel for how land is formed. Expertise is by no means needed, but a general sense of rock formations and erosion is helpful. Now let's do some buildings. This is only going to be a small village, so a small number of buildings is in order. I'm going to use the rural building type since it has the character I want in this village, with maybe a few swamp buildings to add variety. I'm going to cluster the buildings around that fork in the river, and put in a few bridges to connect it all together. The bridges will go first, then the buildings, then I'll add in paths.&lt;br /&gt;
&lt;br /&gt;
Being that this is a little backwater of a village, I'm not doing anything fancy for the bridges. You'll note it's slightly underground at the edges, that is intentional. When I put in the dirt texture for those paths, it will look like dirt has gradually been kicked over the edges of the bridge over the years, which gives it a nice weathered effect.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': You noticed that there's a little crease when you change river flow directions. You can place your bridge over that crease and hide it, making the illusion of a seamless river. And remember that you can scale the bridge if it doesn't quite fit.&lt;br /&gt;
&lt;br /&gt;
With the bridges in place I begin to put down buildings. Now, I prefer to do buildings first then add the roads after, some prefer the opposite. It doesn't really matter, it's up to your tastes. I will do it my way because I'm writing the guide, so there.&lt;br /&gt;
&lt;br /&gt;
hay whats going on here&lt;br /&gt;
&lt;br /&gt;
Hills can do that to buildings. Sometimes it's okay, just use alt-drag to put it at the level you want, but here I want it flat. Select the building, go to the terrain tab, use flatten under, and that will flatten your terrain under the building. You'll need to shape this a bit, otherwise it looks very artificial.&lt;br /&gt;
&lt;br /&gt;
Here's our nice little village.&lt;br /&gt;
&lt;br /&gt;
Next step is to put up a wall, and fill in the paths. The wall is just a matter of finding the pieces and putting them together as you wish, and the paths are done with texture sprays. I am using TT_GD_Dirt_30 at 100% pressure for this one.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Pay attention to where light would fall, and consider how that would effect the growth of the grass. Under visible blockages such as decks, you may want to change the grass texture to dirt as thus:&lt;br /&gt;
&lt;br /&gt;
It's a small thing, but adds some good detail. Here's our village now.&lt;br /&gt;
&lt;br /&gt;
There will be a few more paths added, a couple things missed, but this will do for now for the purposes of illustration. Now, the path textures look a little flat. I'm going to layer some gravelly textures along with the dirt in order to make them look more real, and I'm going to very slightly lower the ground along the paths to represent the wear of the ground by all the traffic. TT_GR_Rocky_01 will do for this, at various pressures.&lt;br /&gt;
&lt;br /&gt;
I keep the gravel closer to the middle, as happens to real dirt paths. That looks much better than the flat texture we had before. This may be becoming a pattern too—two textures layered can often produce a very nice effect. The six texture limit is to be watched carefully, but don't be afraid to use your textures.&lt;br /&gt;
&lt;br /&gt;
Now I'm lowering the terrain slightly. The pressure on the brush is only 18%, and I'm only clicking once. The mesh mode is especially helpful here, you can actually see the individual vertexes you're lowering.&lt;br /&gt;
&lt;br /&gt;
The results:&lt;br /&gt;
&lt;br /&gt;
Now that path looks like it's gone through some use. With paths and walls completed, I'm going to do the detail placeables for the town. First I'm going to add a couple wheat fields in the empty area I left near the windmill. The grass tool has wheat, and I'll change the ground texture in the fields to a dark dirt. While I'm there, I'm going to add grass all around the area.&lt;br /&gt;
&lt;br /&gt;
The wheat fields, with paths added. Note that I used texture coloring to darken the dirt texture that I put under the wheat even further, to give the appearance of plowed up dirt. I'm going to use AG_Tall_Grass_01 for the grass itself. For water plants, I'll be using the various reed types.&lt;br /&gt;
&lt;br /&gt;
At this point I start putting up more placeables. Anvils, shovels, plows, et cetera. I'm not going to go through it all since it's too much and it's all a matter of personal taste. I'm sure you know how to detail an area with placeables, it's really not any different than it was in NWN1. I'm also putting some trees in the town, not too many but enough for flavor. We'll discuss tree fun in the wilderness in a bit. Here's where the village is now.&lt;br /&gt;
&lt;br /&gt;
At this point I think the village is about complete. There are a few other things to be done later, but we'll get to that. Right now, we're moving on to the poor neglected wilderness surrounding the village.&lt;br /&gt;
&lt;br /&gt;
Trees! Trees trees. Yes trees, you need trees, trees are your friend. Unless it's a treeless wilderness. Obsidian reccomends no more than five unique trees per area for performance reasons. I've found you can get away with more than that, but we'll stick to five for the purposes of this, and to show how mixing and layering your trees can give the impression you have far more. First, our suspects.&lt;br /&gt;
&lt;br /&gt;
These trees will form our light forest, and the forested horizon.&lt;br /&gt;
&lt;br /&gt;
The actual matter of placing trees isn't much different than NWN. Note that you cannot rotate trees, but you can change the seed value to get a different looking tree. The variety is truly huge, do spend some time looking at different seeds. Each seed value counts as a unique tree, by the way, so if you have five oaks with five different seed values, those are your five trees. Fortunately, every tree of the same speed counts as one tree (don't ask me the specifics, I imagine just because it only has to render the one), so you can have a huge number of them with little impact on performance. So pick your trees and start dropping. I'm going to keep the trees a bit away from the village, figuring that they would have logged out the woods nearby and kept it cut back for defensive purposes.&lt;br /&gt;
&lt;br /&gt;
My method is to place them one tree type at a time, in order to make sure they're mixed up enough to look natural. Remember that you can create prefab clumps to use if you wish. I've stuck with just the walkable area for this, next we'll do the border.&lt;br /&gt;
&lt;br /&gt;
And a closer look:&lt;br /&gt;
&lt;br /&gt;
Now, obviously, if you look at it carefully enough you can tell that the trees are all clones. But the illusion is good enough to look good, and there's really nothing else you can do. For the borders, just grab some patches of your forest and start cutting and pasting them outside. Shuffle them around a bit and it's unlikely it'll be noticed.&lt;br /&gt;
&lt;br /&gt;
At this point you can further decorate, using grasses and such for groundcover, shrub placeables, forest floor textures, et cetera. There's nothing really new in those techniques to show, so I won't bother with it. The final step here is going to be the walkmesh.&lt;br /&gt;
&lt;br /&gt;
Right now, the river is totally walkable. Let's see how that would look if Jimmy the tester decided to cross the streams (I have turned off visible trees for simplicity's sake in these screens).&lt;br /&gt;
&lt;br /&gt;
hay wheres jimmy&lt;br /&gt;
&lt;br /&gt;
o there he is drowning under the stream&lt;br /&gt;
&lt;br /&gt;
Simply, I'm illustrating that this stream is far too deep to reasonably walk across, so we're going to mark it unwalkable. Terrain tools include a walk/non walk brush, which allows you to manipulate the walkmesh. I turn off water to see what I'm doing and start marking the stream non walkable.&lt;br /&gt;
&lt;br /&gt;
Don't worry about being too precise here. I'm just clicking in the middle of the stream, if people can walk into it on the edges that's just fine. Better, in fact.&lt;br /&gt;
&lt;br /&gt;
But wait! How are you going to cross the bridges? Simple my man. Set all the space under the bridge as unwalkable except the edges, make sure the bridge is set to IsWalkable=False (counter-intuitive, yes, but it's the way it works), then bake the area. This will make your bridge work. If you have any parts of the area that PCs can't access, go set them as unwalkable. The less walkable area, the smaller the file size.&lt;br /&gt;
&lt;br /&gt;
And that's it for this walkthrough! We've covered streams, forests, dirt paths, foliage, bridges, and walkmeshes.&lt;br /&gt;
&lt;br /&gt;
=== Interiors ===&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
Interiors pretty much work exactly like they did in NWN. If you've used the interior tilesets like Velmar's, where you have to assemble it one tile at a time, that's how it works. You can mix tiles up freely as well, and add water inside.&lt;br /&gt;
&lt;br /&gt;
... and, uh, that's all. There's really nothing for me to do, it's all tiles and pretty easy. Enjoy.&lt;br /&gt;
&lt;br /&gt;
=== Continuous Areas ===&lt;br /&gt;
In NWN1, continuous areas were made by carefully counting and noting the tiles at each edge, so they could be replicated on the other side. In NWN2 this is no longer possible, but it's actually even easier to make a continuous area now.&lt;br /&gt;
&lt;br /&gt;
Let's set up a basic area to demonstrate.&lt;br /&gt;
&lt;br /&gt;
This small 12x12 area has a big ridge and some trees and buildings thrown around randomly. I have indicated the playable area with the black box for ease of viewing. Now what we're going to do is make the area directly south of this one, the same size, and have it match up perfectly.&lt;br /&gt;
&lt;br /&gt;
First we need to duplicate the area.&lt;br /&gt;
&lt;br /&gt;
Open up and rename your duplicate area to whatever it should be. Now what we have to do is shift the map down using the resize tool. To illustrate further (I have changed the ground texture for another reason):&lt;br /&gt;
&lt;br /&gt;
The area within the black box is our current playable area, the rest is the shelf. What we're going to do is shift the map, so the area within the blue box becomes the new plaable area, and the area in the red box (which is playable in the area directly north of our duplicate) is the new shelf of the duplicate. This way the areas match up perfectly, and you can actually see what's in the other area before going there.&lt;br /&gt;
&lt;br /&gt;
Next step is to delete all the placeables north of the new shelf, otherwise they'll shift around and screw everything up. The shelf is two meta tiles wide, so everything north of that goes.&lt;br /&gt;
&lt;br /&gt;
Now for the resizing process. To do this we increase the south size by twelve tiles, and decrease the north by twelve (for this 12x12 area, adjust for the area size of course). Again to illustrate more clearly:&lt;br /&gt;
&lt;br /&gt;
The area will then resize, and this is the result:&lt;br /&gt;
&lt;br /&gt;
Here's our final area. The formerly playable area that has become the new northern shelf is in blue, the former shelf that's in the new playable area is in red, and the playable portion of this area is in black. You'll notice the texture of the new one is back to the default, and naturally the edge of the raised terrain is just a cliff, but it's all there and ready to continue. Perfectly continuous areas.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3695</id>
		<title>Toolset Guide</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Toolset_Guide&amp;diff=3695"/>
				<updated>2021-12-25T11:40:19Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Technical Manuals]]&lt;br /&gt;
This guide assumes you read the toolset documentation.&lt;br /&gt;
&lt;br /&gt;
It may be helpful to read Area Walkthroughs first, it is the most detailed about the basic techniques of making a good looking area.&lt;br /&gt;
&lt;br /&gt;
== Land ==&lt;br /&gt;
=== Height ===&lt;br /&gt;
Height adjustment tools should be used in moderation. Don't go dragging around a bunch of land at once, click smaller areas to avoid losing control of your slopes.&lt;br /&gt;
&lt;br /&gt;
A short description of tools:&lt;br /&gt;
* Raise/Lower - Self explanatory&lt;br /&gt;
* Noise - This tool makes little bumps in the terrain, very useful for making realistic eroded terrain.&lt;br /&gt;
* Smooth - This creates slopes. Drag it around between two areas to smooth it out and get a slope. You can also round off any peaks. &lt;br /&gt;
* Walk/Non Walk - For marking walkmeshes.&lt;br /&gt;
* Flatten - This tool is your friend. If you want to create a whole bunch of raised terrain, use the flatten tool. Choose the average height of your raised terrain, make the brush huge and have at it. Once you have this done, you can use the other tools to detail it and make it look good.&lt;br /&gt;
* Color - Allows you to color the ground. This will be discussed more under textures.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Turn on the surface mesh option when adjusting height. This allows you to see the vertexes and more easily determine what kinds of slopes and such you're getting.&lt;br /&gt;
&lt;br /&gt;
Remember that most land is pretty gradually sloped. Don't go crazy with these tools unless the situation calls for it. An area with several gentle rises and valleys looks more natural than one with all sorts of skyfjords and such.&lt;br /&gt;
&lt;br /&gt;
If you need to raise or lower a whole lot of terrain quickly, use the flatten tool. If you use raise or lower you have to wait a while, but with flatten you can simply specify the height you want and get it in a single click. Then you can use smooth, raise, and lower to make it look natural.&lt;br /&gt;
&lt;br /&gt;
=== Textures ===&lt;br /&gt;
The color tool allows you to color the ground, which can help tinting textures. Use this tool to make variations in large areas with the same texture, for a more natural feel. You can also buff out any areas of geometrically repeating patterns with this, without using up one of your six textures.&lt;br /&gt;
&lt;br /&gt;
Layer textures for better results. Also experiment with pressures. You can often effectively make a custom texture through layering, pressure variation, and colors. One good technique is to lay down your base texture at full pressure, your blend texture at half, then spray on the base one again at a very low pressure to mix it in.&lt;br /&gt;
&lt;br /&gt;
Textures apply within the vertexes of the mesh, so they will stretch out along cliffs. You can actually use this to your advantage, because the amount they stretch can make them look quite different than they do when flat.&lt;br /&gt;
&lt;br /&gt;
Don't get too absorbed in the names of the textures. There's a tendency to only use cliff textures with cliffs and that sort of thing, but while they are designed for specific functions and look good that way, you can also mix them up to great result.&lt;br /&gt;
&lt;br /&gt;
Each area should have no more than 6 textures allocated to it.  Even though various sections will allow different texture sets.  More than 6 textures in a single map will often cause the area not to open in the toolset.&lt;br /&gt;
&lt;br /&gt;
== Water ==&lt;br /&gt;
Always make sure the water clips under the land. This is very important, otherwise you will get a gap at the edge which looks terrible.&lt;br /&gt;
&lt;br /&gt;
Each metatile can have a different water level. If you want to have a stream flowing downhill, you'll have to make sure the flat portions of the stream are on different metatiles, and the downhill portions are on edges. You can then use a water placeable to simulate the downhill portion, along with a vfx if you're making a waterfall.&lt;br /&gt;
&lt;br /&gt;
You can do a lot of things with water other than water. The fact that it reflects can be used to great effect on shiny marble floors, for instance. Make an interior and tint it to look like marble, then place a very thin layer of water on the floor, then alter its movement settings so it is completely still.&lt;br /&gt;
&lt;br /&gt;
Among other things you can do with water is color it, to make lava flows and the like. Experiment for great justice.&lt;br /&gt;
&lt;br /&gt;
Remember that you have to lower the land where you're placing water, or raise the water level above the ground, otherwise the land and water will clip together and look terrible.&lt;br /&gt;
&lt;br /&gt;
Watch how deep your water is and remember to remove the walkmesh in deep zones, unless you want PCs to be able to walk around underwater.&lt;br /&gt;
&lt;br /&gt;
== Placeables ==&lt;br /&gt;
: ''See also: [[Building Placeables]]''&lt;br /&gt;
&lt;br /&gt;
''Placeables can now be tilted. Look for the orientation box in the properties. The first number controls left and right, the second forward and back. Use decimals, whole numbers tilt them too far.'' [I don't believe this was ever fully implemented]&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Many placeables, particularly buildings, can be placed inside and attached to one another. In this way you can, for example, stitch together several buildings to make one large one, rather than having to get a new model for it.&lt;br /&gt;
&lt;br /&gt;
=== Buildings ===&lt;br /&gt;
Buildings can be made into rows easily. Simply place down the buildings and move them together so their walls touch. They actually look quite good like this, and you can turn them into prefabs for use later.&lt;br /&gt;
&lt;br /&gt;
Make several prefab rows of buildings, with the buildings shuffled around. That way you can quickly lay down rows of buildings and if you space out your use of the same prefab, along with some single buildings in the gaps, you can make it difficult to see that any building patterns are being repeated.&lt;br /&gt;
&lt;br /&gt;
== Trees ==&lt;br /&gt;
You don't have to use a lot of seeds to break up your forest. Space the trees out and layer them, incorporate one with a radically different size and one with a radically different color than the rest of the trees, and you can break it up enough to look fine while maintaining performance.&lt;br /&gt;
&lt;br /&gt;
Remember that forest floors aren't grassy, they have all sorts of junk lying around. There's a twig texture, and a couple grass textures that can be mixed together to make a good forest floor.&lt;br /&gt;
&lt;br /&gt;
== Critters ==&lt;br /&gt;
: ''See also: [[Building Creatures]]''&lt;br /&gt;
To place multiple VFXes on a creature, you will have to use an OnSpawn script. You can only apply one in its properties.&lt;br /&gt;
&lt;br /&gt;
Don't overlook the “assign class feats” and “assign racial feats” buttons in the feats screen, this makes assigning feats go much more quickly. You can also sort the list using the drop-down box above the list.&lt;br /&gt;
&lt;br /&gt;
Scaling creatures is totally awesome and everyone should make a fifty foot tall flaming goblin at least once.&lt;br /&gt;
&lt;br /&gt;
== Items ==&lt;br /&gt;
: ''See also: [[Building Items]]''&lt;br /&gt;
You can use the mouse wheel to scroll through models.&lt;br /&gt;
&lt;br /&gt;
To preview a weapon, you can open a second properties window and set it to preview&lt;br /&gt;
&lt;br /&gt;
== Tips and Tricks ==&lt;br /&gt;
When making multi-floor interiors, remember that interior tiles can be laid down on top of old tiles without having to delete. You can simply wipe right over what you have, so an easy way to make multiple floors is to simply copy your ground floor area and go to town. That way, you can lay stairways down right where they should be and ensure the floors are exactly the same size.&lt;br /&gt;
&lt;br /&gt;
=== Making Beaches ===&lt;br /&gt;
Making a beach is a bit complex, as it involves a lot of blending and you have to take into account the way the water refraction will change your textures. Fortunately it's easy to get a hang of.&lt;br /&gt;
&lt;br /&gt;
First, you'll need to create the slope. I'll not go into detail on it since you should know how to do that, if not refer to Section A, Subsection 1 on working with height.&lt;br /&gt;
&lt;br /&gt;
Once you have your slope, you'll need to apply the beach textures. I have selected three that I like for my beach, but you can play around. In general, you will want to have darker textures the further you go out from shore.&lt;br /&gt;
&lt;br /&gt;
Beach example one, without water visible. The textures used are noted.&lt;br /&gt;
&lt;br /&gt;
Now for a detailed look at this. Grass_12 was my shoreline texture, Dirt_03 is sand, and Dirt_30 is deep underwater. I have applied Dirt_03 at 100% pressure along the slope of the beach itself, and for several feet extending both underwater and up the shore. You can extend this as far as you like to make a more sandy shore, here I have kept the beach relatively narrow.&lt;br /&gt;
&lt;br /&gt;
Next, I have applied Dirt_30 at 100% pressure underwater, leaving a gap between it and the edge of the Dirt_03 section. This gap is very important, as you will see momentarily. Next, I sprayed down Dirt_30 at about 80% pressure, filling in the gap. After this, I switched back to Dirt_03 and sprayed it down at about 40% pressure over the Dirt_30 gap, and over the shore on top of the Grass_12. This produces the bands of blended textures, giving a natural progression from one texture to another.&lt;br /&gt;
&lt;br /&gt;
The above doesn't look very good on its own, but let's see it with water and its associated refraction.&lt;br /&gt;
&lt;br /&gt;
Much better, and quite natural, don't you think?&lt;br /&gt;
&lt;br /&gt;
This beach could use improvement on the linearity of the various texture layers—it has formed into bands which are noticable. This is easily corrected by spraying textures down as described in various formations, in order to break up the outline. You can also add more layers at various pressures to further the blending between the textures. All in all, the techniques are solid and correct for making a beach. If you can replicate this effect, you have the essentials down and can begin the artistic side of the build.&lt;br /&gt;
&lt;br /&gt;
== Area Walkthroughs ==&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
=== Rural River Village ===&lt;br /&gt;
This walkthrough describes the making of a small river and village, somewhere in the wilderness, and goes through all the associated techniques.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is define the shape of the land. I will start with the river, since it's the primary feature in this scenario—the reason the village was built where it was built was because of the river, so the river will be the central build of the area. To make the river, we will use the lower, flatten, and smooth tools.&lt;br /&gt;
&lt;br /&gt;
I have turned on the “Surface mesh” option in order to better see the contours of the terrain as I carve out the river. You can use the flatten tool to make the basic level of the river, then lower and smooth to detail it and make it look natural. Once you have your river, it's time to put in some water.&lt;br /&gt;
&lt;br /&gt;
The important thing to note here is the size of the brush I am using. It is much larger than the river for a good reason. In order to have the water clip properly with the slopes of the riverbanks, the water must go under the land, as illustrated here:&lt;br /&gt;
&lt;br /&gt;
Also, if you decide to widen part of your river later, the water is already there. Now since this is a river, it flows, so we have to work with the water some more to make the appearance of flowing. You must choose the direction it will flow. I have decided to make this river flow generally right to left across the area.&lt;br /&gt;
&lt;br /&gt;
The ripple effects change how rough the water is, as does the smoothness. You shouldn't play with refraction for regular water, the default looks fine. The important controls here are the three water layers. They contain sliders for scroll direction and rate, which is what we manipulate to make the flowing effect. I believe the tool names are self explanatory. Just play with them until the river appears to be flowing the correct direction at the correct speed.&lt;br /&gt;
&lt;br /&gt;
But wait you say! The flow is only happening in one of the metatiles! That's correct little Jimmy, the water options are for a single metatile, the same space in which your textures are counted. After setting it up hit export to save the settings, then you can change the other sections in one of two ways. Either select the metatile and import, or you can use the water brush again, as it will use these settings until you change them. You will probably have to adjust the flow directions some in various tiles unless your river is mostly straight and in a single direction.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Make all stream bends at the edges of the metatiles, so you can adjust the flow directions to look correct without screwing up other parts of the stream.&lt;br /&gt;
&lt;br /&gt;
After you have your water, hide it and head for textures. Your streambed looks like crap with just grass on it, let's fix that.&lt;br /&gt;
&lt;br /&gt;
Here I have selected TT_GG_Grass_35 at 100% pressure. Yes the texture name is grass and yes it looks like rocks, don't worry about that. I'm painting this down all along the streambed and up to the shoreline, though I'm not taking much care to make sure it matches the shoreline. Nature isn't nice and neat about this, so neither should you be. Now if you're thinking of skimping on this step, check out the following image:&lt;br /&gt;
&lt;br /&gt;
This is a comparison between the stream as it was and with the new streambed texture. Looks much better, doesn't it? Textures are important.&lt;br /&gt;
&lt;br /&gt;
After I've laid out this one, I'm going to use a second texture to represent fine silt and to weather the first texture a bit. I've selected TT_GD_Dirt_06 at 50% pressure for this job.&lt;br /&gt;
&lt;br /&gt;
This removes the clean-cut nature of the previous texture. After all, how many streambeds have you seen that were nice and tidy? This looks like it's had sedimentation, which is what we want. Again, don't be too neat on this.&lt;br /&gt;
&lt;br /&gt;
Now for a little '''PROTIP''' for extra realism. Think of how your stream flows when you lay down these textures. Deposits will be thicker where the stream changes directions and pushes more material against a bank, and thinner on the opposite bank of where this occurs. Like so:&lt;br /&gt;
&lt;br /&gt;
As you can see, I've laid down the dirt silt texture heavier on the outside of the curve, which also illustrates a changing water level—stream floods from rain and such. The other side is bare.&lt;br /&gt;
&lt;br /&gt;
From here you can tint your textures a bit with the color tool. Darkening them somewhat around the water's edge will make it look muddy, or just randomly changing the tint can help break up any patterns that have emerged. I am not going to go into this since it's a matter of your own asthetics, and there's no real technique to it. It's just another layer in your texture manipulation.&lt;br /&gt;
&lt;br /&gt;
The river isn't finished—we need some vegetation along its banks and such—but that will wait for later. On to the land!&lt;br /&gt;
&lt;br /&gt;
As we all know, water seeks the lowest point, so your land should all be higher than the level of the river. Basic yes, but keep it in mind. I'm going to make the river in the bottom of a shallow valley, with some gentle hills on each side. Nothing too extreme.&lt;br /&gt;
&lt;br /&gt;
I've chosen raise tool at 50% pressure and a very large brush. This will allow me to make large, gentle hills easily. I'm also going to turn the mesh back on, and bring the camera down to a shallower angle to get a better look at the terrain height as I shape it.&lt;br /&gt;
&lt;br /&gt;
There we go. Nothing too extreme elevation wise, but it looks pretty natural. I'm not going to do any real fine elevation details here, since this looks about the way I want it. You don't have to get crazy with your elevation editing. I would highly suggest just walking around and taking a look at your local land formations, and reading some geology texts online to get a feel for how land is formed. Expertise is by no means needed, but a general sense of rock formations and erosion is helpful. Now let's do some buildings. This is only going to be a small village, so a small number of buildings is in order. I'm going to use the rural building type since it has the character I want in this village, with maybe a few swamp buildings to add variety. I'm going to cluster the buildings around that fork in the river, and put in a few bridges to connect it all together. The bridges will go first, then the buildings, then I'll add in paths.&lt;br /&gt;
&lt;br /&gt;
Being that this is a little backwater of a village, I'm not doing anything fancy for the bridges. You'll note it's slightly underground at the edges, that is intentional. When I put in the dirt texture for those paths, it will look like dirt has gradually been kicked over the edges of the bridge over the years, which gives it a nice weathered effect.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': You noticed that there's a little crease when you change river flow directions. You can place your bridge over that crease and hide it, making the illusion of a seamless river. And remember that you can scale the bridge if it doesn't quite fit.&lt;br /&gt;
&lt;br /&gt;
With the bridges in place I begin to put down buildings. Now, I prefer to do buildings first then add the roads after, some prefer the opposite. It doesn't really matter, it's up to your tastes. I will do it my way because I'm writing the guide, so there.&lt;br /&gt;
&lt;br /&gt;
hay whats going on here&lt;br /&gt;
&lt;br /&gt;
Hills can do that to buildings. Sometimes it's okay, just use alt-drag to put it at the level you want, but here I want it flat. Select the building, go to the terrain tab, use flatten under, and that will flatten your terrain under the building. You'll need to shape this a bit, otherwise it looks very artificial.&lt;br /&gt;
&lt;br /&gt;
Here's our nice little village.&lt;br /&gt;
&lt;br /&gt;
Next step is to put up a wall, and fill in the paths. The wall is just a matter of finding the pieces and putting them together as you wish, and the paths are done with texture sprays. I am using TT_GD_Dirt_30 at 100% pressure for this one.&lt;br /&gt;
&lt;br /&gt;
'''PROTIP''': Pay attention to where light would fall, and consider how that would effect the growth of the grass. Under visible blockages such as decks, you may want to change the grass texture to dirt as thus:&lt;br /&gt;
&lt;br /&gt;
It's a small thing, but adds some good detail. Here's our village now.&lt;br /&gt;
&lt;br /&gt;
There will be a few more paths added, a couple things missed, but this will do for now for the purposes of illustration. Now, the path textures look a little flat. I'm going to layer some gravelly textures along with the dirt in order to make them look more real, and I'm going to very slightly lower the ground along the paths to represent the wear of the ground by all the traffic. TT_GR_Rocky_01 will do for this, at various pressures.&lt;br /&gt;
&lt;br /&gt;
I keep the gravel closer to the middle, as happens to real dirt paths. That looks much better than the flat texture we had before. This may be becoming a pattern too—two textures layered can often produce a very nice effect. The six texture limit is to be watched carefully, but don't be afraid to use your textures.&lt;br /&gt;
&lt;br /&gt;
Now I'm lowering the terrain slightly. The pressure on the brush is only 18%, and I'm only clicking once. The mesh mode is especially helpful here, you can actually see the individual vertexes you're lowering.&lt;br /&gt;
&lt;br /&gt;
The results:&lt;br /&gt;
&lt;br /&gt;
Now that path looks like it's gone through some use. With paths and walls completed, I'm going to do the detail placeables for the town. First I'm going to add a couple wheat fields in the empty area I left near the windmill. The grass tool has wheat, and I'll change the ground texture in the fields to a dark dirt. While I'm there, I'm going to add grass all around the area.&lt;br /&gt;
&lt;br /&gt;
The wheat fields, with paths added. Note that I used texture coloring to darken the dirt texture that I put under the wheat even further, to give the appearance of plowed up dirt. I'm going to use AG_Tall_Grass_01 for the grass itself. For water plants, I'll be using the various reed types.&lt;br /&gt;
&lt;br /&gt;
At this point I start putting up more placeables. Anvils, shovels, plows, et cetera. I'm not going to go through it all since it's too much and it's all a matter of personal taste. I'm sure you know how to detail an area with placeables, it's really not any different than it was in NWN1. I'm also putting some trees in the town, not too many but enough for flavor. We'll discuss tree fun in the wilderness in a bit. Here's where the village is now.&lt;br /&gt;
&lt;br /&gt;
At this point I think the village is about complete. There are a few other things to be done later, but we'll get to that. Right now, we're moving on to the poor neglected wilderness surrounding the village.&lt;br /&gt;
&lt;br /&gt;
Trees! Trees trees. Yes trees, you need trees, trees are your friend. Unless it's a treeless wilderness. Obsidian reccomends no more than five unique trees per area for performance reasons. I've found you can get away with more than that, but we'll stick to five for the purposes of this, and to show how mixing and layering your trees can give the impression you have far more. First, our suspects.&lt;br /&gt;
&lt;br /&gt;
These trees will form our light forest, and the forested horizon.&lt;br /&gt;
&lt;br /&gt;
The actual matter of placing trees isn't much different than NWN. Note that you cannot rotate trees, but you can change the seed value to get a different looking tree. The variety is truly huge, do spend some time looking at different seeds. Each seed value counts as a unique tree, by the way, so if you have five oaks with five different seed values, those are your five trees. Fortunately, every tree of the same speed counts as one tree (don't ask me the specifics, I imagine just because it only has to render the one), so you can have a huge number of them with little impact on performance. So pick your trees and start dropping. I'm going to keep the trees a bit away from the village, figuring that they would have logged out the woods nearby and kept it cut back for defensive purposes.&lt;br /&gt;
&lt;br /&gt;
My method is to place them one tree type at a time, in order to make sure they're mixed up enough to look natural. Remember that you can create prefab clumps to use if you wish. I've stuck with just the walkable area for this, next we'll do the border.&lt;br /&gt;
&lt;br /&gt;
And a closer look:&lt;br /&gt;
&lt;br /&gt;
Now, obviously, if you look at it carefully enough you can tell that the trees are all clones. But the illusion is good enough to look good, and there's really nothing else you can do. For the borders, just grab some patches of your forest and start cutting and pasting them outside. Shuffle them around a bit and it's unlikely it'll be noticed.&lt;br /&gt;
&lt;br /&gt;
At this point you can further decorate, using grasses and such for groundcover, shrub placeables, forest floor textures, et cetera. There's nothing really new in those techniques to show, so I won't bother with it. The final step here is going to be the walkmesh.&lt;br /&gt;
&lt;br /&gt;
Right now, the river is totally walkable. Let's see how that would look if Jimmy the tester decided to cross the streams (I have turned off visible trees for simplicity's sake in these screens).&lt;br /&gt;
&lt;br /&gt;
hay wheres jimmy&lt;br /&gt;
&lt;br /&gt;
o there he is drowning under the stream&lt;br /&gt;
&lt;br /&gt;
Simply, I'm illustrating that this stream is far too deep to reasonably walk across, so we're going to mark it unwalkable. Terrain tools include a walk/non walk brush, which allows you to manipulate the walkmesh. I turn off water to see what I'm doing and start marking the stream non walkable.&lt;br /&gt;
&lt;br /&gt;
Don't worry about being too precise here. I'm just clicking in the middle of the stream, if people can walk into it on the edges that's just fine. Better, in fact.&lt;br /&gt;
&lt;br /&gt;
But wait! How are you going to cross the bridges? Simple my man. Set all the space under the bridge as unwalkable except the edges, make sure the bridge is set to IsWalkable=False (counter-intuitive, yes, but it's the way it works), then bake the area. This will make your bridge work. If you have any parts of the area that PCs can't access, go set them as unwalkable. The less walkable area, the smaller the file size.&lt;br /&gt;
&lt;br /&gt;
And that's it for this walkthrough! We've covered streams, forests, dirt paths, foliage, bridges, and walkmeshes.&lt;br /&gt;
&lt;br /&gt;
=== Interiors ===&lt;br /&gt;
: ''See also: [[Building Areas]]''&lt;br /&gt;
Interiors pretty much work exactly like they did in NWN. If you've used the interior tilesets like Velmar's, where you have to assemble it one tile at a time, that's how it works. You can mix tiles up freely as well, and add water inside.&lt;br /&gt;
&lt;br /&gt;
... and, uh, that's all. There's really nothing for me to do, it's all tiles and pretty easy. Enjoy.&lt;br /&gt;
&lt;br /&gt;
=== Continuous Areas ===&lt;br /&gt;
In NWN1, continuous areas were made by carefully counting and noting the tiles at each edge, so they could be replicated on the other side. In NWN2 this is no longer possible, but it's actually even easier to make a continuous area now.&lt;br /&gt;
&lt;br /&gt;
Let's set up a basic area to demonstrate.&lt;br /&gt;
&lt;br /&gt;
This small 12x12 area has a big ridge and some trees and buildings thrown around randomly. I have indicated the playable area with the black box for ease of viewing. Now what we're going to do is make the area directly south of this one, the same size, and have it match up perfectly.&lt;br /&gt;
&lt;br /&gt;
First we need to duplicate the area.&lt;br /&gt;
&lt;br /&gt;
Open up and rename your duplicate area to whatever it should be. Now what we have to do is shift the map down using the resize tool. To illustrate further (I have changed the ground texture for another reason):&lt;br /&gt;
&lt;br /&gt;
The area within the black box is our current playable area, the rest is the shelf. What we're going to do is shift the map, so the area within the blue box becomes the new plaable area, and the area in the red box (which is playable in the area directly north of our duplicate) is the new shelf of the duplicate. This way the areas match up perfectly, and you can actually see what's in the other area before going there.&lt;br /&gt;
&lt;br /&gt;
Next step is to delete all the placeables north of the new shelf, otherwise they'll shift around and screw everything up. The shelf is two metatiles wide, so everything north of that goes.&lt;br /&gt;
&lt;br /&gt;
Now for the resizing process. To do this we increase the south size by twelve tiles, and decrease the north by twelve (for this 12x12 area, adjust for the area size of course). Again to illustrate more clearly:&lt;br /&gt;
&lt;br /&gt;
The area will then resize, and this is the result:&lt;br /&gt;
&lt;br /&gt;
Here's our final area. The formerly playable area that has become the new northern shelf is in blue, the former shelf that's in the new playable area is in red, and the playable portion of this area is in black. You'll notice the texture of the new one is back to the default, and naturally the edge of the raised terrain is just a cliff, but it's all there and ready to continue. Perfectly continuous areas.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	<entry>
		<id>https://www.alandfaraway.info/Wiki/index.php?title=Diplomacy&amp;diff=3694</id>
		<title>Diplomacy</title>
		<link rel="alternate" type="text/html" href="https://www.alandfaraway.info/Wiki/index.php?title=Diplomacy&amp;diff=3694"/>
				<updated>2021-12-25T11:36:34Z</updated>
		
		<summary type="html">&lt;p&gt;Arianna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diplomacy (Cha)&lt;br /&gt;
&lt;br /&gt;
Check:&lt;br /&gt;
You can change the attitudes of others (nonplayer characters) with a successful Diplomacy check; see the Influencing NPC Attitudes sidebar, below, for basic DCs. In negotiations, participants roll opposed Diplomacy checks, and the winner gains the advantage. Opposed checks also resolve situations when two advocates or diplomats plead opposite cases in a hearing before a third party.&lt;br /&gt;
&lt;br /&gt;
Action:&lt;br /&gt;
Changing others' attitudes with Diplomacy generally takes at least 1 full minute (10 consecutive full-round actions). In some situations, this time requirement may greatly increase. A rushed Diplomacy check can be made as a full-round action, but you take a -10 penalty on the check.&lt;br /&gt;
&lt;br /&gt;
Try Again:&lt;br /&gt;
Optional, but not recommended because retries usually do not work. Even if the initial Diplomacy check succeeds, the other character can be persuaded only so far, and a retry may do more harm than good. If the initial check fails, the other character has probably become more firmly committed to his position, and a retry is futile.&lt;br /&gt;
&lt;br /&gt;
Special:&lt;br /&gt;
A half-elf has a +2 racial bonus on Diplomacy checks.&lt;br /&gt;
&lt;br /&gt;
If you have the Negotiator feat, you get a +2 bonus on Diplomacy checks.&lt;br /&gt;
&lt;br /&gt;
Synergy:&lt;br /&gt;
If you have 5 or more ranks in Bluff, Knowledge (nobility and royalty), or Sense Motive, you get a +2 bonus on Diplomacy checks.&lt;br /&gt;
&lt;br /&gt;
Use the table below to determine the effectiveness of Diplomacy checks (or Charisma checks) made to influence the attitude of a nonplayer character, or wild empathy checks made to influence the attitude of an animal or magical beast.&lt;br /&gt;
&lt;br /&gt;
*Influencing NPC Attitudes:&lt;br /&gt;
*Initial Attitude.....|Hostile..|Unfriendly..|Indifferent..|Friendly..|Helpful&lt;br /&gt;
*Hostile................|&amp;lt; 20 .......|20 .............|25.............|35........|50&lt;br /&gt;
*Unfriendly...........|&amp;lt; 5...........|5...............|15.............|25........|40&lt;br /&gt;
*Indifferent...........|&amp;lt;1............|1...............|15.............|30........|&lt;br /&gt;
*Friendly...............|&amp;lt;1...........|1...............|20&lt;br /&gt;
*Helpful................|&amp;lt;1...........|1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*A successful Diplomacy roll does not mean a NPC can get you things that are not available to them. It also does not mean they are going to go against previous orders from superiors to accommodate you. NPCs will not endanger themselves to help you.&lt;/div&gt;</summary>
		<author><name>Arianna</name></author>	</entry>

	</feed>