Updated PRC8 Manual
Removed much outdated material.
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
@@ -0,0 +1,305 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Item Crafting :: System</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Item Crafting :: System ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<center><b><big><big>PRC Crafting System v2.0</big></big></b><br><br>
|
||||
by CRV<52>ADER//KY<br>
|
||||
v1.0 by RabbitHail<br></center>
|
||||
<br><div align="justify">
|
||||
|
||||
<a href="#intro">Introduction</a><br>
|
||||
<a href="#reqs">Requirements</a><br>
|
||||
<a href="#setup">Setup</a><br>
|
||||
<a href="#recipes">Writing Recipes</a><br>
|
||||
<a href="#script">SCRIPT and SCRIPTOR ReqTypes and scripted RESULT</a><br>
|
||||
<a href="#faq">FAQ</a><br>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<a name="intro"><b>Introduction</b></a><br>
|
||||
<br>
|
||||
The PRC Crafting System is a highly configurable engine for item creation. Out of the box, it gives the caster classes the ability to create magic items from recipe scrolls, books, or any item with the proper TAG. It also allows users to create recipes from already existing items. This allows modules and persistent worlds to have full control over what items the users can have and create. If you want to introduce a dynamic economy, don't let magic items drop from monster kills or crates. Only allow kills to drop money, gems and crafting components. Have merchants only sell recipe scrolls - or keep very high prices - and then your magic users will have to spend gold and XP to create magic items. For every crafted item, the system requires 1/2 of its market value in GP and 1/25 of it in XP. This creates a money and XP sink, which will help your PW from having an inflationary economy. The fighters will have to pay the wizards and clerics to make magical items. The wizards will use spells, feats, money and XP to make items. This will push the wizards to work with the fighters in order to get the XP and spells they need to make the items they need to advance to higher levels. This also helps separate the reward system from your areas (in many cases I have seen new areas always giving away better stuff, just to attract players to that area).<br>
|
||||
<br>
|
||||
Use the "Examine item or recipe" feat on any inventory item. If the item is listed in the item_to_ireq.2da file, a recipe scroll will be created. Use the "Craft Item" feat on the scroll to start the item creation process. "Examine item or recipe" can be used on a recipe scroll to display what item will be created and the requirements needed to make that item. Some recipes for very powerful items may require a level 20 wizard or cleric! <br>
|
||||
<br>
|
||||
Creating custom recipes, or modifying the existing ones, is very straightforward and offers nearly unlimited possibilities: you may separate the crafting process into semi-processed items, i.e. iron bars or wooden sticks. You may create recipes for very powerful items that don't require an exceedingly amount of money, but require an ingredient that can only be found in a very dangerous area. For example, a Red Dragon Scalemail could require Red Dragon Scales, which usually dragons don't give away willingly. You may require that the player uses a mystical anvil that can only be found at the end of a particular dungeon, or require very high skill checks (i.e. DC40 for a plate mail) and then give the players a +20 bonus to the appropriate skill when they're near an anvil - this will prevent PCs from crafting broadswords in the middle of a wood. You may also use this system for artifacts that must be assembled from separated parts and that can be later empowered by other components, just like in Baldur's Gate II. As you can see, what you can do is (almost) only limited by your fantasy.<br>
|
||||
<br>
|
||||
For those who don't want to write recipes, however, there are nearly 700 pre-made recipes for various magical items. The Crafting System can also be used in the single player Official Campaign, too: you'll just have to use "Examine item or recipe" on any of those 700 objects and a recipe will be immediately created.<br>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<a name="reqs"><b>Requirements</b></a>
|
||||
<ul>
|
||||
<li>None, but activating the PRC 2DA Caching System will greatly improve performance.</li>
|
||||
</ul>
|
||||
<br>
|
||||
|
||||
<a name="setup"><b>Setup</b></a><br>
|
||||
<br>
|
||||
The PRC Crafting System v2.0 is controlled by the following module variables:<br>
|
||||
<br>
|
||||
<table border="1" style="color: #c0c0c0">
|
||||
<tr>
|
||||
<td><b>Name</b></td>
|
||||
<td><b>Type</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRC_DISABLE_CRAFT</td>
|
||||
<td>int</td>
|
||||
<td align="justify">Completely disable the PRC Crafting System. (default: enabled)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRC_CraftTimerMultiplier</td>
|
||||
<td>float</td>
|
||||
<td align="justify">Multiply the delay (in seconds) after the creation of an item in which a PC can't craft anything. Normally, it's set to the market price of the item. Set it to less than 1 to reduce it instead. (default: 1.0).<td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRC_CraftTimerMax</td>
|
||||
<td>int</td>
|
||||
<td align="justify">Absolute maximum delay (in seconds) where crafting is disabled for a PC, regardless of the item's market price. By default it's 0 (meaning that there's no delay at all).</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>PRC_CraftTimerMin</td>
|
||||
<td>int</td>
|
||||
<td align="justify">Absolute minimum delay (in seconds) in which crafting is disabled, regardless of the item's market price. (default: 0)</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
The following variables were used by the PRC Crafting System v1.0 and are now obsolete:<pre>
|
||||
nICHoursInDayCycle
|
||||
fICMinDays
|
||||
fICMaxDays</pre>
|
||||
<br>
|
||||
|
||||
<a name="recipes"><b>Writing Recipes</b></a><br>
|
||||
<br>
|
||||
Recipes are contained within the <b>prc_craft2das.hak</b> file. Each recipe corresponds to a 2DA file, similar to those used for prestige classes requisites:
|
||||
<pre>
|
||||
2DA V2.0
|
||||
|
||||
LABEL ReqType ReqParam1 ReqParam2
|
||||
0 row_title TYPE PARAM1 PARAM2
|
||||
1 row_title TYPE PARAM1 PARAM2
|
||||
</pre>
|
||||
ReqParam2 must be replaced by **** if not existing.<br>
|
||||
The fields shall not contain any spaces or tabs.<br>
|
||||
<br>
|
||||
These are all the supported ReqTypes. "AND" means that you absolutely need that component, or the creation process will fail; "OR" means that you just need to have at least one of the requirements <i>of the same type.</i><br>
|
||||
<br>
|
||||
<table border=1 style="color: #c0c0c0">
|
||||
<tr>
|
||||
<td><b>ReqType</b></td>
|
||||
<td><b>ReqParam1</b></td>
|
||||
<td><b>ReqParam2</b></td>
|
||||
<td><b>AND/OR</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr><tr>
|
||||
<td>RESULT</td>
|
||||
<td>ResRef<hr>script name</td>
|
||||
<td>stack size<hr>arguments</td>
|
||||
<td>-</td>
|
||||
<td align="justify">Creation result. For every recipe there must be <b>one and only one</b> result. ReqParam1 may be the ResRef of any item, placeable or creature, or the name of a script (see section <a href="#script"><i>SCRIPT and SCRIPTOR ReqTypes and scripted RESULT</i></a>). ReqParam2 (if any) must be the number of objects to create (note that it will work for stackable items only; default is 1, NOT the default item stack size) or the argument of the script.<br><b>NOTE:</b> if the RESULT is not an item, it will have zero GP and XP cost. You should set EXTRAGOLD and EXTRAXP accordingly.</td>
|
||||
</tr><tr>
|
||||
<td>CASTERLVL</td>
|
||||
<td>n</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Minimum caster level (any).</td>
|
||||
</tr><tr>
|
||||
<td>ARCCASTERLVL</td>
|
||||
<td>n</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Minimum caster level (arcane).</td>
|
||||
</tr><tr>
|
||||
<td>DIVCASTERLVL</td>
|
||||
<td>n</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Minimum caster level (divine).</td>
|
||||
</tr><tr>
|
||||
<td>PSICASTERLVL</td>
|
||||
<td>n</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Minimum caster level (psionic).</td>
|
||||
</tr><tr>
|
||||
<td>EXTRAGOLD</td>
|
||||
<td>GP</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Additional GP required for creation.<br>It will <b>not</b> increase the XP cost as well.</td>
|
||||
</tr><tr>
|
||||
<td>EXTRAXP</td>
|
||||
<td>XP</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td>Additional XP required for creation.</td>
|
||||
</tr><tr>
|
||||
<td>FEAT<br>FEATOR</td>
|
||||
<td>ID</td>
|
||||
<td>****</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td>Required feat. ID is the corresponding row in feat.2da.<br></td>
|
||||
</tr><tr>
|
||||
<td>SPELL<br>SPELLOR</td>
|
||||
<td>ID</td>
|
||||
<td>****</td>
|
||||
<td>AND</td>
|
||||
<td align="justify">Spell needed. ID is the corresponding row in spells.2da. It can either be a prepared spell (it will be consumed) or a spell that has been previously cast on the recipe.<br>Note that all SPELL requirements will be consumed, while only the first SPELLOR one will.</td>
|
||||
</tr><tr>
|
||||
<td>ITEM<br>ITEMOR</td>
|
||||
<td>ResRef</td>
|
||||
<td>stack size</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td align="justify">Required item(s). Half of their market price will be detracted from the GP creation cost (while the XP cost will remain unchanged); the item cost cannot drop below 0. The stack size can be used for non-stackable items, too (**** means 1).<br>Using ITEMOR you should note that, for example, if you require 5x ItemA or 20x ItemB, every ItemA will be worth 4 ItemB (i.e. 3x ItemA + 8x ItemB will be enough).</td>
|
||||
</tr><tr>
|
||||
<td>SKILL<br>SKILLOR</td>
|
||||
<td>ID</td>
|
||||
<td>score</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td>Minimum skill requirement. ID is the corresponding row in skills.2da.</td>
|
||||
</tr><tr>
|
||||
<td>SKILLDC</td>
|
||||
<td>ID</td>
|
||||
<td>DC</td>
|
||||
<td>AND</td>
|
||||
<td>Skill check. All components (GP, XP, items and scripted requirements) will be lost in case of failure. ID is the corresponding row in skills.2da.</td>
|
||||
</tr><tr>
|
||||
<td>LEVEL<br>LEVELOR</td>
|
||||
<td>class ID</td>
|
||||
<td>level</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td>Minimum level in a given class. ID is the corresponding row in classes.2da.</td>
|
||||
</tr><tr>
|
||||
<td>HELPER<br>HELPEROR</td>
|
||||
<td>TAG</td>
|
||||
<td>distance</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td align="justify">TAG of an object (of any type) that must be near the PC or in the PC's inventory (it will not be consumed). If not specified, the maximum distance is 5.0.</td>
|
||||
</tr><tr>
|
||||
<td>SCRIPT<br>SCRIPTOR</td>
|
||||
<td>ResRef</td>
|
||||
<td>arguments</td>
|
||||
<td>AND<br>OR</td>
|
||||
<td align="justify">User-defined script. ReqParam2 will be passed to it as is. Read the <a href="#script">dedicated help section</a> for further details.</td>
|
||||
</tr><tr>
|
||||
<td>RACE</td>
|
||||
<td>ID</td>
|
||||
<td>subrace</td>
|
||||
<td>OR</td>
|
||||
<td>PC's race. ID is the corresponding row in racialtypes.2da. If ReqParam2 is left ****, subrace will be ignored.</td>
|
||||
</tr><tr>
|
||||
<td>ALIGN</td>
|
||||
<td>alignement</td>
|
||||
<td>****</td>
|
||||
<td>OR</td>
|
||||
<td>LG, LN, LE, NG, N, NE, CG, CN or CE.</td>
|
||||
</tr><tr>
|
||||
<td>AREA</td>
|
||||
<td>partial tag</td>
|
||||
<td>reference tag</td>
|
||||
<td>OR</td>
|
||||
<td align="justify">TAG substring, or the whole TAG, of the area in which the PC must be.<br>ReqParam2 is the complete TAG of an area to use to display the area name.</td>
|
||||
</tr><tr>
|
||||
<td>DEITY</td>
|
||||
<td>name</td>
|
||||
<td>****</td>
|
||||
<td>OR</td>
|
||||
<td>Name of the PC's deity.</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
For example, this is the recipe for "White Robe of the Archmagi". We will call it "<b>ireq_robearcw.2da</b>":<br><pre>
|
||||
2DA V2.0
|
||||
|
||||
LABEL ReqType ReqParam1 ReqParam2
|
||||
0 Robe_of_the_Archmagi_White RESULT nw_mcloth002 ****
|
||||
1 CasterLevel14th CASTERLVL 14 ****
|
||||
2 Craft_Wondrous_Item_Feat FEAT 2925 ****
|
||||
3 Mage_Armor SPELL 102 ****
|
||||
4 Bless SPELL 6 ****
|
||||
5 Spell_Resistance SPELL 168 ****
|
||||
6 Lawful_Good ALIGN LG ****
|
||||
7 Neutral_Good ALIGN NG ****
|
||||
8 Chaotic_Good ALIGN CG ****
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
The <b>item_to_ireq.2da</b> file is "the glue that binds". This file is used to do a reverse binding between a magic item and a recipe. If the recipe and the item exist you can place both anywhere into this file, so the users of the Crafting System can use "Examine item or recipe" on the item to make a recipe. This allows users in single player modules to make recipes for items they come across. This can also be used by a dynamic machine that could create a dialog with all the items in the file and the user would get a recipe from the selection.<br>
|
||||
<b>item_to_ireq.2da</b> is used by the 2DA Caching System, too, so it's very important that there's an entry in it for every recipe you write.<br>
|
||||
<br>
|
||||
For example, this is the entry for "White Robe of the Archmagi":<pre>
|
||||
2DA V2.0
|
||||
|
||||
LABEL L_RESREF RECIPE_TAG
|
||||
...
|
||||
...
|
||||
133 Robe_of_the_Archmagi_White nw_mcloth002 IREQ_ROBEARCW
|
||||
</pre>
|
||||
<br>
|
||||
|
||||
<a name="script"><b>SCRIPT and SCRIPTOR ReqTypes and scripted RESULT</b></a><br>
|
||||
<br>
|
||||
You may write custom requirement scripts for some items. Also, you may not want to create an object as the result of the crafting process, but call a script instead.<br>
|
||||
OBJECT_SELF is the PC that is trying to craft the item.<br>
|
||||
These are the functions you should use to interface with the PRC Crafting System:<br>
|
||||
|
||||
<pre><span style="color: green;">#include "prc_inc_craft"</span>
|
||||
|
||||
<span style="color: grey;">//Set the requirement caption that will be displayed.
|
||||
//For RESULT ReqType, set the name of the recipe final result.</span>
|
||||
<span style="color: red;">void</span> PRCCraft_SetCaption(<span style="color: red;">string</span> sText);
|
||||
|
||||
<span style="color: grey;">//Return TRUE (success) or FALSE (requirement missing) (SCRIPT and SCRIPTOR only).</span>
|
||||
<span style="color: red;">void</span> PRCCraft_SetReturnValue(<span style="color: red;">int</span> nValue);
|
||||
|
||||
<span style="color: grey;">//Get ReqParam2 from the recipe, if any.</span>
|
||||
<span style="color: red;">string</span> PRCCraft_GetArguments();
|
||||
|
||||
<span style="color: grey;">//Check if the script should consume whatever's needed (if any) / create the result
|
||||
//or is just checking for requirements / name.</span>
|
||||
<span style="color: red;">int</span> PRCCraft_GetConsume();
|
||||
</pre>
|
||||
<br>
|
||||
Here's a sample script:<br>
|
||||
<pre><span style="color: grey;">//check if the Sandy Resque Quest has been completed</span>
|
||||
<span style="color: green;">#include "prc_inc_craft"</span>
|
||||
|
||||
<span style="color: red;">void</span> main()
|
||||
{
|
||||
PRCCraft_SetCaption(<span style="color: purple;">"Sandy's been resqued"</span>);
|
||||
<span style="color: red;">int</span> resqued = GetLocalInt(GetModule(), <span style="color: purple;">"SandyResqued"</span>);
|
||||
PRCCraft_SetReturnValue(resqued);
|
||||
}</pre>
|
||||
|
||||
<br>
|
||||
|
||||
<a name="faq"><b>FAQ</b></a><br>
|
||||
<br>
|
||||
<b>Q)</b> I'm not the administrator of a dedicated server. Should I care about this?<br>
|
||||
<b>A)</b> Yes. You can use the crafting system in any module, also single player, that supports PRC. You don't have to worry about setting any module variable or writing custom recipes or scripts, though. It will just work, out of the box. Note that, however, many items don't have a recipe so you won't be able to replicate them.<br>
|
||||
<br>
|
||||
|
||||
<b>Q)</b> Is it compatible with the SoU and HotU crafting systems?<br>
|
||||
<b>A)</b> Yes, it is, since the three systems are completely indipendent.<br>
|
||||
<br>
|
||||
|
||||
<b>Q)</b> Should I enable the PRC 2DA Caching System only for this?<br>
|
||||
<b>A)</b> That depends on how many players you've got. Without cache, your server will freeze for about half a second every time someone uses the crafting feats, while with cache it will be a matter of milliseconds. So if you've got more than 3-4 players you should really do it.<br>
|
||||
<br>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,84 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: Modifying Scripts ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
Many builders will find it necissary to change some of the scripts in
|
||||
the PRC to their liking. This is especially true for the spell
|
||||
scripts,
|
||||
including epic spells. Moreover, to make changes to certain parts of
|
||||
the epic spell system (for example, to disable certain spells or make
|
||||
them harder to cast,) the script "inc_epicspells" must be changed.
|
||||
<br><br>
|
||||
The Aurora toolset has problems with the sheer enormity of our scripts,
|
||||
but there is an easy and ideal way to make changes outside of the
|
||||
toolset.
|
||||
<br><br>
|
||||
First, you need to go to your NWN directory. There should be a
|
||||
subfolder called utils. There are two programs which are useful here:
|
||||
nwhak.exe and clcompile.exe.
|
||||
<br><br>
|
||||
First, create some folders anywhere on your computer, depending on what
|
||||
you intend to change: one for epicspellscripts if you intend to change
|
||||
epic spells, one for racescripts if you intend to change races, and one
|
||||
for everything else. I'll refer to these as "epicspellscripts",
|
||||
"racescripts", and "scripts" respectively. You'll want to copy
|
||||
clcompile.exe from the utils directory into each working directory you
|
||||
make.
|
||||
<br><br>
|
||||
Open nwhak.exe. Go to File, then Open... browse to the hak subfolder
|
||||
under your NWN directory. Open up "prc_scripts", "prc_epicspells", or
|
||||
"prc_race", depending on what you want to change.
|
||||
<br><br>
|
||||
When it opens, go to the Resource menu, and select Export All. Select
|
||||
the appropriate folder you created, and click "OK". Wait awhile,
|
||||
there's no progress bar, so you'll only know it's done if you wait for
|
||||
awhile.
|
||||
<br><br>
|
||||
Go to that folder, and open up the script you want to edit with your
|
||||
text editor. Make the changes you want. TextPad is good for this,
|
||||
especially if you download the TextPad NWScript viewer from Bioware.
|
||||
That way you'll have syntax highlighted properly.
|
||||
<br><br>
|
||||
Now, you'll need to compile the script. This can be tricky because it
|
||||
requires the use of the command line. Go to the Start menu, and click
|
||||
on "Run..." Windows 98/Me users, type "command" and hit OK. Windows
|
||||
2000/XP users, type "cmd" and hit ok. You'll be at the DOS prompt.
|
||||
Make sure you're on the drive your working folders reside on. If not,
|
||||
type the letter of the drive followed by a colon (example: C: )
|
||||
<br><br>
|
||||
You need to navigate to your directory using the "cd" command. If your
|
||||
folder was in c:\nwn\scripts, then you'd type "cd \nwn\scripts".
|
||||
<br><br>
|
||||
Once you're in the directory, type "clcompile.exe [name of the script
|
||||
you edited]". If everything is right, your code will compile with no
|
||||
errors (and it will tell you such.) If you have errors, you need to
|
||||
debug them much like you would in the Aurora toolset.
|
||||
<br><br>
|
||||
Once you have the file compiled, open up nwhak.exe again, but this time
|
||||
make sure you go to File/New. Go to "Resource", then "Add", and find
|
||||
your working directory. Select the [name of script].ncs file then
|
||||
click OK. Click File/Save As, and save it into your NWN hak directory
|
||||
as whatever you choose. Don't overwrite anything!
|
||||
<br><br>
|
||||
Finally, in the Aurora toolset, you'll need to go to Edit/Module
|
||||
Properties. Under the "Custom Content" tab, you can add your hak. Use
|
||||
the "Move Up" button to make sure it's on top.
|
||||
<br><br>
|
||||
Click OK, and presto, your changes are in! You can safely abort the
|
||||
rebuild process.
|
||||
<br><br>
|
||||
Keep in mind that future changes and additions can be made to your new
|
||||
hak. Just "add" the resources to it instead of a fresh new hak. You
|
||||
won't have to open the toolset again if you continue to use that hak.
|
||||
<br><br>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,472 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Item Crafting :: System</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Item Crafting :: System ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<center><b><big><big>PRC New Crafting System</big></big></b><br><br>
|
||||
by Flaming_Sword<br></center>
|
||||
<br><div align="justify">
|
||||
<p>
|
||||
<a href="#intro">Introduction</a><p>
|
||||
<a name="top"></a><b>For Players</b><p>
|
||||
<a href="#featuse">Feat Use</a><br>
|
||||
<a href="#nonmagic">Crafting Non-Magical Items</a><br>
|
||||
<a href="#magic">Crafting Magic Items</a>
|
||||
<ul>
|
||||
<li><a href="#name">Change Name</a></li>
|
||||
<li><a href="#appearance">Change Appearance</a></li>
|
||||
<li><a href="#special">Craft Magic Arms and Armour: Adding a special ability</a></li>
|
||||
<li><a href="#wondrous">Ring/Wondrous Item Crafting</a></li>
|
||||
<li><a href="#staff">Staff Crafting</a></li><p>
|
||||
</ul>
|
||||
<a href="#dc">Crafting DC Information</a><br>
|
||||
<a href="#cost">Crafting Cost Information</a><br>
|
||||
<a href="#playerarb">Arbitrary (non-PnP) Crafting</a><p>
|
||||
<b>For Builders</b><p>
|
||||
<a href="#npc">Crafting Facilities</a><br>
|
||||
<a href="#switch">Switches</a><br>
|
||||
<a href="#2da">2DAs</a><br>
|
||||
<a href="#script">Scripting - Adding New Items/Special Abilities</a><br>
|
||||
<p>
|
||||
<p><hr><p>
|
||||
<a name="intro"><b>Introduction</b></a><p>
|
||||
This is a guide to the new crafting system, implementing PnP crafting. Feedback on errors/missing information/style/possible improvements is appreciated.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="featuse"><b>Feat Use</b></a><p>
|
||||
On the class radial of one of the base classes there should be a read recipe feat with a purple icon. This should open a subradial with 2 subfeats. The first is the original recipe based crafting system feat, used exactly like before. The second should be named "Craft Item" and is the subfeat used for the new system. It is recommended that you craft items in a distraction-free environment. Otherwise you risk disrupting the crafting conversation or ruining the magic item you are attempting to craft.<p>
|
||||
If there is a problem that prematurely aborts the conversation (eg. TMI) using the feat again should reset all the variables, as well as display a recovery message. Use the feat one more time to start again.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="nonmagic"><b>Crafting Non-Magical Items</b></a><p>
|
||||
To craft non-magical items, target yourself with the subfeat. Note that you will make skill checks with either the craft weapon or craft armour skills to craft your items. You must wait as a list of base items is created, after which "*Done*" will appear above the character's head and in the log. Choose "Continue" and you should see a list of weapons and shields, as well as armour, sorted alphabetically.<p>
|
||||
If you have chosen either a longbow or a shortbow, you will then see a list of Mighty values to add to the bow, representing the crafting of a composite bow. You may choose zero if you do not want to craft a composite bow.<p>
|
||||
If you have chosen to craft armour, a list of armour types (base AC 0-8) will be displayed, allowing you to choose the type of armour to craft.<p>
|
||||
You will then see a list of options, allowing you to choose to make a normal item, a masterwork item, or an item made of an applicable material (darkwood for wooden items, adamantine or mithral for metallic items, etc.). Staffs, rings and wondrous items can only use the "normal" option. Armour with base AC 0 (robes) can be crafted as wondrous items if the normal option is chosen, and enchanted like armour if the masterwork option is chosen. Cloaks will have their colours randomised. Note that some materials cannot be implemented in NWN (cold steel, alchemical silver, adamantine for weapons).<p>
|
||||
Afterwards you will be presented with a description of the desired item, along with a cost in gp. You will be able to choose "Confirm" if you have the required gp.<p>
|
||||
You will then make a skill check based on the item you have selected (and another one if the item is masterwork). If you succeed, the item you have chosen to craft will appear in your inventory. The crafting cost in gp will be deducted regardless of whether you succeed or not.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="magic"><b>Crafting Magic Items</b></a><p>
|
||||
To craft magical arms and armour, you will need either a masterwork item, or an existing magical item. For other items, you will need the blank item created through non-magical crafting (see above). You must also have the required feat to craft the particular item.<p>
|
||||
Target the item to be crafted using the subfeat. You must wait as a list is created. As with non-magical crafting, "*Done*" will appear when the list is finished.<p>
|
||||
At this time, rod crafting is unavailabe, because rods as written in the SRD have been impossible to do without extra scripting.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="name"><b>Change Name</b></a><p>
|
||||
If you choose "Change Name" you will have about 30 seconds in which to use chat to state the exact name of your item. A visual effect will appear to indicate success.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="appearance"><b>Change Appearance</b></a><p>
|
||||
If you choose "Change Appearance" you will be given a series of numbers separated by dashes (appearance code). This code represents the appearance of your item. This is given for your information in case you make a mistake and wish to change you item's appearance to what it was when you started (it also allows you write down the appearance of an item that you really like so you can reproduce it later). To change the appearance, choose "Set new appearance code". A listener will spawn, allowing you to shout a new appearance code (in the same format) for your item (similar to changing names). Substituting an asterisk will leave a value unchanged.<p>
|
||||
ModelType:<ul><li>0 - simple appearance, eg. rings, amulets<ul><li>Format: single number - icon</li></ul></li><li>1 - simple appearance + colours, helmet/cloak<ul><li>Format: x-x-x-x-x-x-x (7 values, 1 model, 6 colour)<ul><li>model</li><li>leather1</li><li>leather2</li><li>cloth1</li><li>cloth2</li><li>metal1</li><li>metal2</li></ul></li></ul></li><li>2 - weapons/boots<ul><li>Format: x-x-x-x-x-x (6 values, 3 colour, 3 model)<ul><li>bottom colour</li><li>middle colour</li><li>top colour</li><li>bottom model</li><li>middle model</li><li>top model</li></ul></li></ul></li><li>3 - armour (25 values, 19 model, 6 colour)<ul><li>Format: x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x<ul><li>right foot</li><li>left foot</li><li>right shin</li><li>left shin</li><li>left thigh</li><li>right thigh</li><li>pelvis</li><li>torso</li><li>belt</li><li>neck</li><li>right forearm</li><li>left forearm</li><li>right bicep</li><li>left bicep</li><li>right shoulder</li><li>left shoulder</li><li>right hand</li><li>left hand</li><li>robe</li><li>leather1</li><li>leather2</li><li>cloth1</li><li>cloth2</li><li>metal1</li><li>metal2</li></ul></li></ul></li></ul>
|
||||
Model numbers are numbers corresponding to the relevant .mdl files (will work with additional models added through haks). Colour numbers are numbers corresponding to different colours on the palette.<p>
|
||||
At this time (NWN patch 1.68), attempting to change the model of a cloak will instead destroy it (CopyItemAndModify() doesn't work for cloak models yet)<p>
|
||||
Admittedly, this system is powerful, yet hard to use. However, in the future, appearance changes through conversation (providing a front-end for the underlying code) may be implemented.<p>
|
||||
One way to get the exact appearance you want is to first make the item in the toolset and save it. Then use a program (eg. Leto's advanced editor, nwnexplorer, etc.) to open the saved blueprint in the temp directory used by the toolset. For most items (except weapons and boots) model/colour numbers will be shown in the order given above. Weapons and boots are shown in a similar order (bottom, middle, top) as digits, with the last digit being the colour and first (one or more) being the model.<p>
|
||||
As much as I would like to implement it, there is currently no way to change the description of the item. It will likely work in the same way as changing the name if I ever get it to work.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="special"><b>Craft Magic Arms and Armour: Adding a special ability</b></a><p>
|
||||
If the item you are crafting is a weapon, armour or shield, you will be given the option of adding enhancement or special abilities. Enhancement or special abilities added will replace similar types, and downgrading is not possible.<p>
|
||||
If you have chosen to add Bane or Dread to a weapon, you must wait as a list of available races is created. You will then be able to choose which race is affected by the bane property. The Bane/Dread properties also depend on the current level of enhancment, so it is recommended that it be added after any changes to the enhancement.<p>
|
||||
If you have chosen a property to add to your item, A description of the property will appear, along with the crafting cost in gp, xp and time (if applicable). If you have the gp and xp required (you are not allowed to spend enough xp to lose a level) you will be able to choose the "Confirm" option.<p>
|
||||
If the time delay scale is set to instantaneous, your item will be upgraded and the costs deducted, as well as any required spell uses decreased. Otherwise, there will be a delay, with floating text messages indicating the number of rounds left. You must not do anything strenuous such as fighting, casting spells or anything else that disrupts concentration. Otherwise, you will have to begin the crafting process again. At the end of the delay, your item will be upgraded and the costs deducted, as well as required spell uses decreased.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="wondrous"><b>Ring/Wondrous Item Crafting</b></a><p>
|
||||
Unlike magic weapons/armour/shields, you may only craft specific items. A list of items will appear if you are crafting with a blank item (created through non-magical crafting, see above), otherwise you will only see the name and appearance changing options. In all other respects it is the same as crafting weapons/armour/shields.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="staff"><b>Staff Crafting</b></a><p>
|
||||
Staff crafting works like wand crafting, where you cast a spell on the base item (obtainable through non-magical crafting, see above). However, unlike wand crafting, you may add multiple spells to the staff by casting more spells on it (up to 8), provided you can meet the gp/xp cost. Since real epic staffs are not possible (unless level 10+ spell slots are added to the game), metamagic can only be applied to staffs if the caster possesses the Craft Epic Staff feat (an artificial limitation).<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="dc"><b>Crafting DC</b></a><p>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="1" class="table_contenttable">
|
||||
<tr>
|
||||
<td><b>Item</b></td>
|
||||
<td><b>DC</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Armour/Weapons/Shields</b></td>
|
||||
<td><b>10 + Base AC</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Crossbows</b></td>
|
||||
<td><b>15</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Bows</b></td>
|
||||
<td><b>12</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Composite Bows</b></td>
|
||||
<td><b>15 + 2 x Mighty value</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Simple melee weapons</b></td>
|
||||
<td><b>12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Martial melee weapons</b></td>
|
||||
<td><b>15</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Exotic melee weapons</b></td>
|
||||
<td><b>18</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Masterwork</b></td>
|
||||
<td><b>20 (separate roll)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
</table>
|
||||
<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="cost"><b>Crafting Cost</b></a><p>
|
||||
Costs in gp (market price) unless noted.<p>
|
||||
<b>Non-Magical</b><p>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="1" class="table_contenttable">
|
||||
<tr>
|
||||
<td><b>Type</b></td>
|
||||
<td><b>Light Armour</b></td>
|
||||
<td><b>Medium Armour</b></td>
|
||||
<td><b>Heavy Armour</b></td>
|
||||
<td><b>Shields</b></td>
|
||||
<td><b>Weapons</b></td>
|
||||
<td><b>Ammunition (99 units)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Masterwork</b></td>
|
||||
<td><b>150</b></td>
|
||||
<td><b>150</b></td>
|
||||
<td><b>150</b></td>
|
||||
<td><b>150</b></td>
|
||||
<td><b>300</b></td>
|
||||
<td><b>594</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Adamantine</b></td>
|
||||
<td><b>5,000</b></td>
|
||||
<td><b>10,000</b></td>
|
||||
<td><b>15,000</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Darkwood</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td colspan="2"><b>10/lb of weight</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Dragonhide</b></td>
|
||||
<td colspan="4"><b>Double total cost (base + masterwork)</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Mithral</b></td>
|
||||
<td><b>1,000</b></td>
|
||||
<td><b>4,000</b></td>
|
||||
<td><b>9,000</b></td>
|
||||
<td><b>1,000</b></td>
|
||||
<td><b>500/lb of weight</b></td>
|
||||
<td><b>N/A</b></td>
|
||||
</tr>
|
||||
</table>
|
||||
Crafting cost is 1/3 market price.<p>
|
||||
<b>Magical</b><p>
|
||||
Market Price = (Non-Magical Price) + (Enhancement Cost) + (Additional Cost)<p>
|
||||
Non-Magical Price is price from previous section.<p>
|
||||
Enhancement Cost = (Base Enhancement Cost) x (Effective Enhancement)<sup>2</sup><p>
|
||||
Additional Cost from properties adds linearly.<p>
|
||||
Base Enhancement Cost is 1,000gp for armour/shields, 2,000gp for weapons<p>
|
||||
Effective Enhancement = Enhancement + Enhancement values on properties (eg. +5 for vorpal weapons)<p>
|
||||
For epic items, the enhancement cost is x10 what it is for non-epic items, eg. non-epic, +5 vorpal sword is 2000x(10)<sup>2</sup> (+5, +5 for vorpal) = 200,000gp, epic, +10 sword is 2000x(10)<sup>2</sup>x10 (for being epic) = 2,000,000gp<p>
|
||||
Crafting cost is 1/2 market price in gp, 1/25 market price in xp if non-epic, 10,000 + 1/100 market price if epic. Upgrading items costs the difference in cost of the old and the new item according to the rules presented here.<p>
|
||||
Time cost is 1 game hour/1,000gp market price by default.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="playerarb"><b>Arbitrary (non-PnP) Crafting</b></a><p>
|
||||
If a particular switch is set (see switches below), Most of the information above relating to magic item crafting may be ignored. Instead of choosing special abilites or making specific items, you instead choose particular itemproperties.<p>
|
||||
You will be presented with a list of itemproperty types to choose from. If applicable, you will then be able to choose the subtype, costtablevalue and param1value. Cost will be the difference in cost between the old and the new item according to NWN, with gp/xp/time costs calculated according to the rules in the section above.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="npc"><b>Crafting Facilities</b></a><p>
|
||||
You can provide facilities to player for crafting, either through a npc or placeable. To create a facility, find the item named "PRC_CRAFT_TOKEN" and put it in the inventory of the npc or placeable, taking care to make sure the object is plot, the item cannot be pickpocketed, the placeable is locked, etc.<p>
|
||||
Players within 10m of the object will be able to craft without the normal restrictions, for market price in gp and zero xp.<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="switch"><b>Switches</b></a><p>
|
||||
These are all "int" type switches<p>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="1" class="table_contenttable">
|
||||
<tr>
|
||||
<td><b>Switch</b></td>
|
||||
<td><b>Description</b></td>
|
||||
<td><b>Default</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_DISABLE_CRAFT</b></td>
|
||||
<td><b>Disables the crafting system altogether</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_DISABLE_CRAFT_EPIC</b></td>
|
||||
<td><b>Disables epic crafting</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_AREA_DISABLE_CRAFTING</b></td>
|
||||
<td><b>Set in area, disables crafting in that area.</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_AREA_DISABLE_CRAFTING_INVERT</b></td>
|
||||
<td><b>Inverts the behavior of previous switch. Will disable crafting on all areas BUT ones with the PRC_AREA_DISABLE_CRAFTING switch set.</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFT_TIMER_MULTIPLIER</b></td>
|
||||
<td><b>Scales the time cost for crafting by this value/100</b></td>
|
||||
<td><b>100</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFT_STAFF_CASTER_LEVEL</b></td>
|
||||
<td><b>Crafted staffs have the casterlevel of the creator.</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>X2_CI_CRAFTSTAFF_COSTMODIFIER</b></td>
|
||||
<td><b>Cost modifier of spells crafted into staffs</b></td>
|
||||
<td><b>750</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFTING_ARBITRARY</b></td>
|
||||
<td><b>Disables PnP crafting and instead allows all NWN itemproperties (subject to cost)</b></td>
|
||||
<td><b>FALSE</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFTING_COST_SCALE</b></td>
|
||||
<td><b>Scales the gp cost for crafting by this value/100</b></td>
|
||||
<td><b>100</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFTING_MUNDANE_COST_SCALE</b></td>
|
||||
<td><b>Scales the gp cost for non-magical crafting by this value/100</b></td>
|
||||
<td><b>100</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PRC_CRAFTING_TIME_SCALE</b></td>
|
||||
<td><b>Sets crafting time per 1000gp in market price:
|
||||
<ol>
|
||||
<li>off, no time required</li>
|
||||
<li>round</li>
|
||||
<li>turn</li>
|
||||
<li>game hour</li>
|
||||
<li>game day</li>
|
||||
</ol></b></td>
|
||||
<td><b>4</b></td>
|
||||
</tr>
|
||||
</table><p>
|
||||
To disable a specific item/special ability in PnP crafting, set a switch with this name:<p>
|
||||
<b>PRC_CRAFT_DISABLE_<name of crafting 2da file>_<line number of property></b>
|
||||
where the 2da files are named craft_* (lower case) or itempropdef in the case of arbitrary crafting
|
||||
<p>
|
||||
eg. <b>PRC_CRAFT_DISABLE_itempropdef_15</b>
|
||||
<p>
|
||||
disables all castspell properties in arbitrary crafting mode
|
||||
<p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="2da"><b>2DAs</b></a><p>
|
||||
When adding lines to 2das used, modify SetDefaultFileEnds() within prc_inc_switch.nss to allow the scripts to read the required number of lines. Code will be in the form:<p>
|
||||
<tt>
|
||||
SetPRCSwitch("PRC_FILE_END_<file name>", <number>);<p>
|
||||
</tt>
|
||||
The file name will be in alphabetical order and in lower case.<p>
|
||||
<b>craft_*.2da</b><p>
|
||||
Used to store items/special abilities and their prerequisites<p>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="1" class="table_contenttable">
|
||||
<tr>
|
||||
<td><b>Column Name</b></td>
|
||||
<td><b>Description</b></td>
|
||||
<td><b>Format</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Name</b></td>
|
||||
<td><b>Name</b></td>
|
||||
<td><b>TLK entry</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Label</b></td>
|
||||
<td><b>Just a label</b></td>
|
||||
<td><b>String</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PropertyType</b></td>
|
||||
<td><b>Crafting type, "M" for magic, "P" for psionic (not implemented yet), blank for any</b></td>
|
||||
<td><b>Character</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Level</b></td>
|
||||
<td><b>Level (caster, manifester, etc.) prerequisite</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>PrereqMisc</b></td>
|
||||
<td><b>Underscore delimited string with 5 values:<p>
|
||||
Format:<br>
|
||||
<Race>_<Feat>_<AlignGE>_<AlignLC>_<Class><p>
|
||||
Use a single asterisk (*) for blank, or four asterisks (****) for all blank<p>
|
||||
<ul>
|
||||
<li>Race - Race prerequisite, line in racialtypes.2da (evaluated using MyPRCGetRacialType())</li>
|
||||
<li>Feat - Feat prerequisite, line in feat.2da</li>
|
||||
<li>AlignGE - Alignment prerequisite, "G" for good, "E" for evil, "N" for neutral, blank for any</li>
|
||||
<li>AlignLC - Alignment prerequisite, "L" for lawful, "C" for chaotic, "N" for neutral, blank for any</li>
|
||||
<li>Class - Class prerequisite, line in classes.2da</li>
|
||||
</ul>
|
||||
</b></td>
|
||||
<td><b>String (Underscore delimited, contains Integers)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Skill</b></td>
|
||||
<td><b>Skill prerequisite, line in skills.2da</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>SkillRanks</b></td>
|
||||
<td><b>Number of ranks for skill prerequiste</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Spells</b></td>
|
||||
<td><b>Underscore delimited string with 5 values:<p>
|
||||
Format:<br>
|
||||
<Spell1>_<Spell2>_<Spell3>_<SpellOR1>_<SpellOR2><p>
|
||||
Use a single asterisk (*) for blank, or four asterisks (****) for all blank<p>
|
||||
<ul>
|
||||
<li>Spell1 - Spell prerequisite, line in spells.2da</li>
|
||||
<li>Spell2 - Spell prerequisite, line in spells.2da</li>
|
||||
<li>Spell3 - Spell prerequisite, line in spells.2da</li>
|
||||
<li>SpellOR1 - Spell prerequisite, crafter must have one of SpellOR1 or SpellOR2, line in spells.2da</li>
|
||||
<li>SpellOR2 - Spell prerequisite, crafter must have one of SpellOR1 or SpellOR2, line in spells.2da. If SpellOR2 is blank crafter must have SpellOR1</li>
|
||||
</ul>
|
||||
</b></td>
|
||||
<td><b>String (Underscore delimited, contains Integers)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Enhancement</b></td>
|
||||
<td><b>Enhancement value for cost calculations</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>AdditionalCost</b></td>
|
||||
<td><b>Additional cost for cost calculations</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>ReplaceLast</b></td>
|
||||
<td><b>Property will disable this number of the preceding lines, for weapon/armour/shield crafting</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>BaseItem</b></td>
|
||||
<td><b>Base item filter for wondrous item crafting, line in baseitems.2da, ignored for craft_ring.2da</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>IPN</b></td>
|
||||
<td><b>Underscore delimited string with 4 values, Nth itemproperty to add (up to 6):<p>
|
||||
Format:<br>
|
||||
<Type>_<SubType>_<CostTableValue>_<Param1Value><p>
|
||||
Use a single asterisk (*) for blank, or four asterisks (****) for all blank<p>
|
||||
<ul>
|
||||
<li>Type - Type of the Nth itemproperty to add</li>
|
||||
<li>SubType - SubType of the Nth itemproperty to add</li>
|
||||
<li>CostTableValue - CostTableValue of the Nth itemproperty to add</li>
|
||||
<li>Param1Value - Param1Value of the Nth itemproperty to add</li>
|
||||
</ul>
|
||||
</b></td>
|
||||
<td><b>String (Underscore delimited, contains Integers)</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Epic</b></td>
|
||||
<td><b>Epic prerequisite, whether the creator needs the epic crafting feat</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Special</b></td>
|
||||
<td><b>Determines whether the property needs special handling by the scripts</b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
</table><p>
|
||||
<b>prc_craft_get_it.2da</b><p>
|
||||
Used for non-magical crafting, lines must match baseitems.2da<p>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="1" class="table_contenttable">
|
||||
<tr>
|
||||
<td><b>Column Name</b></td>
|
||||
<td><b>Description</b></td>
|
||||
<td><b>Format</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Name</b></td>
|
||||
<td><b>Name of base item</b></td>
|
||||
<td><b>TLK entry</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>label</b></td>
|
||||
<td><b>A label</b></td>
|
||||
<td><b>String</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Blueprint</b></td>
|
||||
<td><b>Resref of blank/generic item to create when crafting</b></td>
|
||||
<td><b>String</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Type</b></td>
|
||||
<td><b>Identifies the type of base item for the crafting scripts:
|
||||
<ol>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_WEAPON</li>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_ARMOUR</li>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_SHIELD</li>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_AMMO</li>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_MISC</li>
|
||||
<li>PRC_CRAFT_ITEM_TYPE_CASTSPELL</li>
|
||||
</ol></b></td>
|
||||
<td><b>Integer</b></td>
|
||||
</tr>
|
||||
</table><p>
|
||||
<a href="#top">Back to Top</a><p><hr><p>
|
||||
<a name="script"><b>Scripting - Adding New Items/Special Abilities</b></a><p>
|
||||
To add properties, add lines to the relevant crafting 2das, then add code to the functions below (in prc_craft_inc.nss), using existing code as a guide. You must be proficient in 2da editing and NWScript.<p>
|
||||
<b>Get2DALineFromItemprop()</b><p>
|
||||
Weapon/armour/shield crafting, uses an itemproperty to find what special abilities have been added to an item. Hardcoded to avoid having to search through the 2das for every itemproperty on an item.<p>
|
||||
<b>DisallowType()</b><p>
|
||||
Weapon/armour/shield crafting, disallows special abilities that are similar to existing properties (for items being upgraded that were not created using this system).<p>
|
||||
<b>PrereqSpecialHandling()</b><p>
|
||||
Extra rules for handling prerequisites.<p>
|
||||
<b>CheckCraftingSpells()</b><p>
|
||||
Section handles unusual spell prerequisites.<p>
|
||||
<b>GetItemVars()</b><p>
|
||||
A portion of this function disables some special abilities for ranged weapons, listed here.<p>
|
||||
<blockquote>
|
||||
<tt>
|
||||
if(bArmsArmour)<br>
|
||||
{<br>
|
||||
int nBase = GetBaseItemType(oItem);<br>
|
||||
int bRangedType = StringToInt(Get2DACache("baseitems", "RangedWeapon", nBase));<br>
|
||||
if(bRangedType && (bRangedType != nBase))<br>
|
||||
{ //disallowed because ranged weapons can't have onhit<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 22, 0);<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 24, 0);<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 26, 0);<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 34, 0);<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 40, 0);<br>
|
||||
array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 42, 0);<br>
|
||||
}<br>
|
||||
}
|
||||
</tt></blockquote><p>
|
||||
<a href="#top">Back to Top</a><p><hr>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,86 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: Overriden Files</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: Overriden Files ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<div><h2>prc_2das.hak:</h2></div><br>
|
||||
<ul>
|
||||
<li>baseitems</li>
|
||||
<li>classes</li>
|
||||
<li>cls_feat_asasin</li>
|
||||
<li>cls_feat_barb</li>
|
||||
<li>cls_feat_bard</li>
|
||||
<li>cls_feat_cler</li>
|
||||
<li>cls_feat_druid</li>
|
||||
<li>cls_feat_fight</li>
|
||||
<li>cls_feat_monk</li>
|
||||
<li>cls_feat_pal</li>
|
||||
<li>cls_feat_rang</li>
|
||||
<li>cls_feat_rog</li>
|
||||
<li>cls_feat_shadow</li>
|
||||
<li>cls_feat_sorc</li>
|
||||
<li>cls_feat_wiz</li>
|
||||
<li>cls_skill_archer</li>
|
||||
<li>cls_skill_asasin</li>
|
||||
<li>cls_skill_barb</li>
|
||||
<li>cls_skill_bard</li>
|
||||
<li>cls_skill_blkgrd</li>
|
||||
<li>cls_skill_cler</li>
|
||||
<li>cls_skill_divcha</li>
|
||||
<li>cls_skill_dradis</li>
|
||||
<li>cls_skill_dru</li>
|
||||
<li>cls_skill_dwdef</li>
|
||||
<li>cls_skill_fight</li>
|
||||
<li>cls_skill_kensei (though bioware doesn't use this)</li>
|
||||
<li>cls_skill_monk</li>
|
||||
<li>cls_skill_pal</li>
|
||||
<li>cls_skill_palema</li>
|
||||
<li>cls_skill_rang</li>
|
||||
<li>cls_skill_rog</li>
|
||||
<li>cls_skill_shadow</li>
|
||||
<li>cls_skill_shiftr</li>
|
||||
<li>cls_skill_sorc</li>
|
||||
<li>cls_skill_wiz</li>
|
||||
<li>cls_skill_wm</li>
|
||||
<li>feat</li>
|
||||
<li>iprp_feats</li>
|
||||
<li>iprp_monstocst</li>
|
||||
<li>iprp_neg5cost</li>
|
||||
<li>iprp_onhitcost</li>
|
||||
<li>iprp_onhitdur</li>
|
||||
<li>iprp_spellcost</li>
|
||||
<li>iprp_spells</li>
|
||||
<li>iprp_srcost</li>
|
||||
<li>itemprops</li>
|
||||
<li>masterfeats</li>
|
||||
<li>polymorph</li>
|
||||
<li>skills</li>
|
||||
<li>spells</li>
|
||||
<li>vfx_persistent</li>
|
||||
<li>visualeffects</li>
|
||||
</ul>
|
||||
<br>
|
||||
NOTE: The CEP also includes baseitems.2da and changes the same line as PRC. This is for the claws. I am not sure why CEP needs to change this item, but I suggest using our change as it is required by a few PRC's
|
||||
<br><br>
|
||||
<div><h2>prc_scripts.hak:</h2></div><br>
|
||||
<ul>
|
||||
<li>nw_i0_spells </li>
|
||||
<li>x0_i0spells </li>
|
||||
<li>x2_inc_spellhook </li>
|
||||
<li>x2_inc_switches</li>
|
||||
<li>x2_mod_def_equ</li>
|
||||
<li>x2_mod_def_unequ</li>
|
||||
</ul>
|
||||
<br>
|
||||
NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified.
|
||||
<br><br>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,15 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: PrC Enablers</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<div><h1>:: Module Building :: PrC Enablers ::</h1></div>
|
||||
<div class="div_paddedcontent">
|
||||
|
||||
Variables can be set on PCs to prevent them taking levels in different classes. Refer to file prc_allow_const.nss in prc_include.hak or the class prerequisite files (cls_pres_*) themselves for an up-to-date list.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: PRC NPCs</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: PRC NPCs ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
This is a brief guide to getting NPCs to begin to work with the new PRC classes.
|
||||
The PRC has added some scripts you need to hook into NPC scripts in order to have the
|
||||
PRC passive abilities work. Simply add ExecuteScript("NAME_OF_SCRIPT", OBJECT_SELF);
|
||||
somewhere in the AI script for each event, just below void main() { is probably a good
|
||||
place. Most of these scripts do not do anything at the moment, but they might do more in
|
||||
future versions for example, if things need to be triggered from these events.
|
||||
<br>
|
||||
<table cellpadding="0" cellspacing="0" align="center" border="0" class="table_contenttable">
|
||||
<tr><td>OnBlocked</td> <td>prc_npc_blocked</td> </tr>
|
||||
<tr><td>OnCombatRoundEnd</td> <td>prc_npc_combat</td> </tr>
|
||||
<tr><td>OnConversation</td> <td>prc_npc_conv</td> </tr>
|
||||
<tr><td>OnDamaged</td> <td>prc_npc_damaged</td> </tr>
|
||||
<tr><td>OnDeath</td> <td>prc_npc_death</td> </tr>
|
||||
<tr><td>OnDisturbed</td> <td>prc_npc_disturb</td> </tr>
|
||||
<tr><td>OnHeartbeat</td> <td>prc_npc_hb</td> </tr>
|
||||
<tr><td>OnPerception</td> <td>prc_npc_percep</td> </tr>
|
||||
<tr><td>OnPhysicalAttacked</td> <td>prc_npc_physatt</td> </tr>
|
||||
<tr><td>OnRested</td> <td>prc_npc_rested</td> </tr>
|
||||
<tr><td>OnSpawn</td> <td>prc_npc_spawn</td> </tr>
|
||||
<tr><td>OnSpellCastAt</td> <td>prc_npc_spellat</td> </tr>
|
||||
<tr><td>OnUserdefined</td> <td>prc_npc_userdef</td> </tr>
|
||||
</table>
|
||||
<br>This will only allow the passive abilities, such as skill bonuses, to work. The AI
|
||||
will probably not actively use any of the PRC content (such as the new Power Attack).
|
||||
<br>There is one exception, the PRC NPC scripts do contain a basic wrapper AI for using the
|
||||
new epic spells. If you want epic spellcasters to have specific epic spells, assign them
|
||||
directly. Otherwise epic spellcasters will have a random selection of epic spells. Also,
|
||||
since some epic spells use up XP when cast, you can give NPCs virtual XP by setting a local
|
||||
int called "NPC_XP" on them. This is treated the same as a PCs XP score, so it cannot go
|
||||
lower than the minimum for their level. If the local int is not set, NPCs will be randomly
|
||||
given enough XP to be between 25% and 75% of the way to the next level.
|
||||
<br>
|
||||
<br>Another thing to note when making PRC NPCs; the toolset will throw up errors whenever
|
||||
the LevelUp or Character Wizards are used with the certain classes. We are not sure why
|
||||
it does it, and it only does it with certain classes. The best way around the problem
|
||||
is to hand make all the NPCs, which is probably a good idea anyway since biowares feat
|
||||
assignments are not always that smart.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,29 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: Respawning Doors</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: Respawning Doors ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<br>There is a very simple respawning door system included in PRC v3.1 or higher. It consists of two scripts,
|
||||
door_destroyed and door_ud. Simply put the door_ud script in a doors OnUserDefinedEvents script
|
||||
slot, and put door_destroyed in OnDeath slot. See the picture below as an example
|
||||
<br>
|
||||
<br><center><img src="door2.jpg"></center>
|
||||
<br>
|
||||
<br>If you want the door to respawn after a certain time, enter the number of minutes into the
|
||||
will save throw. Then once that time has elapsed, the door will respawn.
|
||||
<br>If you want to manually controll the door respawning, leave the will saving throw at zero.
|
||||
Then when you want the door to respawn, use the SignalEvent command to send a User Defined event
|
||||
number 500 to the door. You may want to refer to the lexicon for information about these commands.
|
||||
<br><br>
|
||||
Note: if the door is trapped and or locked the trap/lock will not respawn with the door.
|
||||
You can use the CreateTrapOnObject() function to add a trap, and SetLocked() to lock the door.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,96 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: Respawning Traps</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: Respawning Traps ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<br>
|
||||
<br>Note: This system was written and implemented before NWN 1.67 added the function for creating
|
||||
traps though scripting. If you wish to, this can be incorporated into normal traps by setting the trigger
|
||||
script to "prgt_trap_fire" and set a trap struct (defined in prgt_inc_trap) as a local named "TrapSettings".
|
||||
<br>
|
||||
<br>PRC v3.0 includes a novel spawning ground trap system. This system has several unique attributes:
|
||||
<ul><li>Does not require any toolset placed objects.</li>
|
||||
<li>Vast selection of trap types.</li>
|
||||
<li>Can have a random trap type.</li>
|
||||
<li>Ability to create new trap types purely from scripting.</li>
|
||||
<li>Easily award XP (or other rewards) from the trap, either from the PRC XP system or via custom scripting.</li>
|
||||
<li>Spell-casting traps any arbitrary caster level.</li>
|
||||
<li>Can be hooked up to NPC events so they can lay traps too.</li>
|
||||
<li>Can be set to automatically respawn after a period of time.</li></ul>
|
||||
<br>The way the system works internally is fairly complex, but the outline is this:
|
||||
<ul><li>Two invisible auras are created, one as a trigger, and one as a detection area.</li>
|
||||
<li>This auras have certain attributes set on them when created such as detection and disarm DCs.</li>
|
||||
<li>Every 6 seconds a creature is in the detection trigger in detect mode, there is a chance to reveal the trap.</li>
|
||||
<li>When the trap is detected, a grid of invisible placeables are spawned inside the trigger aura.</li>
|
||||
<li>Each of these invisible placeables are trapped, this gives off a red glow to display where the trap is.</li>
|
||||
<li>If detected or not, the trap goes off when a creature enters the trigger aura. The exception to this
|
||||
is if the creature is moving to disarm, flag, or recover one of the trapped invisible placeables.</li>
|
||||
<li>If a creature is inside the trigger aura and not disarming, flagging, or recovering, the trap goes off.</li>
|
||||
<li>When the trap is triggered, there are several things that can happed.
|
||||
<ul><li>If there is a custom script assigned to the trap, it will be run.</li>
|
||||
<li>If there is a spell assigned to the trap, it will be cast.</li>
|
||||
<li>Otherwise, the trap will do its pre-set damage, VFX, etc.</li></ul></li>
|
||||
<li>After a trap has triggered, again several things could happen.
|
||||
<ul><li>The trap could be destroyed entirely, for a one-shot trap.</li>
|
||||
<li>The trap may stay around untill disarmed.</li>
|
||||
<li>The trap may be destroyed for a time and respawn later.</li></ul></li></ul>
|
||||
<br>
|
||||
<div><h1>Examples</h1></div>
|
||||
<br>The simplest way for a builder to implement respawning ground traps is to create
|
||||
a set of invisible object placeables that replace themselves with traps in-game. This
|
||||
can either be done with a range of pre-fixed difficulties or dynamically integrated into
|
||||
a spawn system.
|
||||
<br>Below is an example of a pre-set difficulty script that will spawn a random trap.
|
||||
This is in the PRC as prgt_spawneg. Simply place it in the OnHeartbeat event of an invisible
|
||||
non-static non-plot placeable. This trap will not repsawn and will be a one-shot trap
|
||||
<pre>//An example OnHB script for an invisible placeable to spawn a ground trap
|
||||
#include "prc_alterations"
|
||||
#include "prgt_inc"
|
||||
void main()
|
||||
{
|
||||
struct trap tTrap;
|
||||
//this will use 5 as the CR for the trap
|
||||
tTrap = CreateRandomTrap(5);
|
||||
//add code in here to change things if you want to
|
||||
//for example, to set the detect DC to be 25 use:
|
||||
//tTrap.nDetectDC = 25;
|
||||
CreateTrap(GetLocation(OBJECT_SELF), tTrap);
|
||||
DestroyObject(OBJECT_SELF);
|
||||
}</pre>
|
||||
<br>If you want to have a respawning trap, you need to set nRespawnSeconds to be greater
|
||||
than zero, as shown in the script below. Also, this script will recreate the random
|
||||
trap each time it respawns.
|
||||
<pre>//An example OnHB script for an invisible placeable to spawn a ground trap
|
||||
#include "prc_alterations"
|
||||
#include "prgt_inc"
|
||||
void main()
|
||||
{
|
||||
struct trap tTrap;
|
||||
//this will use 5 as the CR for the trap
|
||||
tTrap = CreateRandomTrap(5);
|
||||
//add code in here to change things if you want to
|
||||
//for example, to set the detect DC to be 25 use:
|
||||
//tTrap.nDetectDC = 25;
|
||||
tTrap.nRespawnSeconds = 600; //will respawn after 10 minutes
|
||||
tTrap.nRespawnCR = 5; //will rerandomize the trap each time its respawned
|
||||
CreateTrap(GetLocation(OBJECT_SELF), tTrap);
|
||||
DestroyObject(OBJECT_SELF);
|
||||
}</pre>
|
||||
<br>
|
||||
<br>The full details of the variables in a trap are detailed in prgt_inc. The main
|
||||
upshot is that you can either have it cast a spell, complete with specified level, DC,
|
||||
and metamgic, or you can apply direct damage along with radius damage and almost any
|
||||
visual effect you can think of. All of the information on a trap is stored in the
|
||||
trap struct and can be accessed using the . operator (dot).
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
|
||||
<html>
|
||||
<head>
|
||||
<title>Player Resource Consortium :: Manual :: Module Building :: Script Hooks</title>
|
||||
<link type="text/css" href="../../../styles/manual_common.css" rel="stylesheet">
|
||||
<link type="text/css" href="../../../styles/manual_content_common.css" rel="stylesheet">
|
||||
</head>
|
||||
<body scroll="auto">
|
||||
<br>
|
||||
<div><h1>:: Module Building :: Script Hooks ::</h1></div>
|
||||
<br>
|
||||
<div class="div_paddedcontent">
|
||||
<br>To enable builders to integrate the PRC into their modules better, a series of
|
||||
common scripts that the PRC overrides have had additional scripts added via
|
||||
ExecuteScript. These are:
|
||||
<br>
|
||||
<br>nw_c2_default7 (NPC OnDeath) runs a script named "prc_pwondeath" This is designed
|
||||
for custom XP use and all the normal OnDeath functions will work as usual.
|
||||
<br>
|
||||
<br>nw_s0_raisdead (spell script for raise dead) runs a script named "prc_pw_raisedead"
|
||||
This is designed for persistent death scripts. You can get the raised creature with
|
||||
GetSpellTargetObject().
|
||||
<br>
|
||||
<br>nw_s0_ressurec (spell script for ressurection) runs a script named
|
||||
"prc_pw_ressurection" This is designed for persistent death scripts. You can get the
|
||||
resurrected creature with GetSpellTargetObject().
|
||||
<br>
|
||||
<br>ss_ep_cont_resur (spell script for contingent ressurection) runs a script named
|
||||
"prc_pw_contress" This is designed for persistent death scripts. You can get the raised
|
||||
creature with OBJECT_SELF.
|
||||
<br>
|
||||
<br>ss_ep_armyunfall (spell script for army unfallen) runs a script named
|
||||
"prc_pw_armyunfall" This is designed for persistent death scripts. You can get the
|
||||
raised creature with OBJECT_SELF.
|
||||
<br>
|
||||
<br>psi_inc_psifunc AstralSeedRespawn() (function for astral seed psionic power ondeath)
|
||||
runs a script named "prc_pw_astralseed" This is designed for persistent death scripts.
|
||||
You can get the raised creature with OBJECT_SELF.
|
||||
<br>
|
||||
<br>x0_i0_spells (spell include for many things including petrification) runs a script
|
||||
named "prc_pw_petrific" This is designed for persistent death scripts. You can get the
|
||||
petrified creature with OBJECT_SELF. Note: this will only be run if on hard core rules or very difficult, since on other settings petrification is temporary.
|
||||
<br>
|
||||
<br>x0_s0_stoflesh (spell script for stone to flesh) runs a script named
|
||||
"prc_pw_unpetrif" This is designed for persistent death scripts. You can get the
|
||||
unpetrified creature with OBJECT_SELF. Note: this will only be run if on hard core rules or very difficult, since on other settings petrification is temporary.
|
||||
<br>
|
||||
<br>Remember however that the PRC has added code switches for some of the common PW scripts
|
||||
including persistant death tracking.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user