diff --git a/Notes/Spell Worksheet.xlsx b/Notes/Spell Worksheet.xlsx new file mode 100644 index 00000000..f6cdf179 Binary files /dev/null and b/Notes/Spell Worksheet.xlsx differ diff --git a/Notes/future shaman bonus feats.txt b/Notes/future shaman bonus feats.txt index eb7bb2eb..d7862d51 100644 --- a/Notes/future shaman bonus feats.txt +++ b/Notes/future shaman bonus feats.txt @@ -9,7 +9,7 @@ Improved Trip Superior Expertise = Imp. Combat Expertise Improved Grapple --Should be possible +-Possible Falling Star Strike Freezing the Lifeblood Ki Shout & Great Ki Shout @@ -22,7 +22,7 @@ Defensive Throw Grappling Block Karmic Strike Defensive Strike +Great Throw - Not possible due to engine limitations -Great Throw Combat Reflexes \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/de_index.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/de_index.html deleted file mode 100644 index 59d38ad4..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/de_index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Player Resource Consortium :: Manual - - - - - - - - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/acp_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/acp_installation_instructions.html deleted file mode 100644 index cb04eca8..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/acp_installation_instructions.html +++ /dev/null @@ -1,63 +0,0 @@ - -Player Resource Consortium :: ACP Installation Instructions - - - - - -
-

:: ACP Installation Instructions ::

-
-
-
ACP is the Alternate Combat animations Pack by Ragnarok of DLA. It is avaliable on the NWvault here. -
- -
    -
  1. Extract the ACP haks to your NWN hak dir. -
  2. Open the toolset. -
  3. Load the module you wish to add ACP to. It should already have PRC 2.3 installed via the PRC module updater. You should not have run the module updater to install the ACP on it. -
  4. You should get a dialog box that says: "Warning: This file uses one or more haks". Press Yes. -
  5. Edit -> Module Properties -> Advanced tab -> Variables. -
    You should see a screen like this: -
    -
  6. In the name box, enter "PRC_ACP_MANUAL" -
  7. In the type box, select int -
  8. In the value box, enter "1" -
  9. Press Add. It should be added to the list above. -
  10. Press OK. -
    If you want to save the module at this point, you can do so. If -your having trouble canceling the build, this may be a good idea at -this point. -
  11. Select the Custom Content tab in Module Properties -
  12. From the drop down menu, select "acp_core". Press Add. -
  13. From the drop down menu, select "acp_kensai". Press Add. -
  14. From the drop down menu, select "acp_assassin". Press Add. -
  15. From the drop down menu, select "acp_heavy". Press Add. -
  16. From the drop down menu, select "acp_fencing". Press Add. -
  17. From the drop down menu, select "acp_pheno5_hr". Press Add. -
  18. From the drop down menu, select "acp_pheno6_hr". Press Add. -
  19. From the drop down menu, select "acp_pheno7_hr". Press Add. -
  20. From the drop down menu, select "acp_pheno8_hr". Press Add. -
  21. Make sure you do not add the "acp_2da" hak as it is already integrated into the PRC. -
  22. You will get a warning message. Press Yes. -
  23. It will now start compiling. As soon as the Cancel button -becomes clickable, click on it. This picture should help, this is the -sort of thing you should see when you should click the cancel button: -
    -
    Don't worry if you miss it a few times or it takes a while to -appear. It does depend on the speed of your maching and the size of the -module your adding it to. -
  24. File -> Save As.. and enter a new name -
  25. Start up NWN and Start a New Game and select the module you -just created. You will see the ACP feat on your class radials and can -use it to change combat animations. -
-
Note I: If you want to have PCs automatically change animation -based on class/equipment rather than having to tell it to do so, enter -PRC_ACP_AUTOMATIC instead of PRC_ACP_MANUAL in the module variable -name. -
-
Note II: If you want NPCs using the PRC NPC script wrappers to -change animations, set the PRC_ACP_NPC_AUTOMATIC variable either on the -module or on specific NPCs. -
\ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/cep_merge_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/cep_merge_instructions.html deleted file mode 100644 index ad29b573..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/cep_merge_instructions.html +++ /dev/null @@ -1,37 +0,0 @@ - -Player Resource Consortium :: CEP PRC Merge Instructions - - - - - -
-

:: CEP PRC Merge Instructions ::

-
-
-
-
The PRC can work with CEP, but there are some minor issues. All of -these can be resolved by using a merge hak and tlk file. -The merge hak sits above both PRC and CEP in the module custom content -list and contains the 2da files that both CEP and PRC change. -The merge tlk is used instead of either individual tlk file. -
-
To make a set of merged files, start by creating a new clean module in the toolset. -
Then add all the CEP content as per the CEP instructions. -
Save the module and exit the toolset. Then run the PRC Module Updater on the module. -
This will complain about some conflicts, but should sort most of them out. -
It should produce a new hak and tlk file naed after the module in your hak and tlk -directories. To make it easier for future reference, I would rename those files into something -recognisable, such as CEPxxxPRCxxx. You can also delete the module as it is no longer needed. -
-
At this point, the merge files created will work on a basic level, but will have a few bugs. The main files -that has problems is baseitems.2da so I suggest you extract that from the merge hak and from prc_2das.hak making -sure that they go to different directories so they dont overwrite each other. Then use a plain text editor to copy -the lines 0-112 from the prc version over the same lines in the merge version. After than, put the modified merge -version of the 2da back into the merge hak. -
-
Now your merge hak should be complete and free from any issues. One more think to remember though, when -changing a PRC-enabled modules custom content from the toolset, press cancel as soon as possible -once the toolset starts recompiling. If you dont, the toolset will crash when it tries to recompile the -PRC scripts. -
\ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/faq.htm b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/faq.htm deleted file mode 100644 index 6d34d518..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/faq.htm +++ /dev/null @@ -1,183 +0,0 @@ - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - -
-

:: Installation :: Guide :: FAQ ::

-
-
- -
- Previous Page -
- -
    -
  1. PRC Installer
  2. -
  3. PRC Module Updater
  4. -
  5. java Character Creator
  6. -
  7. General Questions
  8. -
- -

- -

PRC Installer

-
-
- -Q: I get a message that the installer cant find NWN, HotU or -SoU. - -

A: The installer reads your registry entries, so if they are -wrong the installer wont work. The best bet is to uninstall and re-install NWN -and both expansions, that should restore the registry entries as well. - -

Q: I get a message that I need the Microsoft .NET framework - -

A: The installer uses Microsoft .NET which you can get it here - -

Q: I use linux and/or mac and can't use the installer - -

A: You can get the .rar version from the vault and extract it -by hand - -

-

- -

PRC Module Updater

-
-
- -Q: Why cant I update Bioware premium modules? - -

A: Bioware has encrypted these, so the updater cannot read -them. Sorry, but there is nothing the PRC can do about it. - -

Q: Why does the PRC not work with module "X"? - -

A: We cannot guarantee that the PRC is compatible with any -module. In general most modules can cope with the PRC being added with little or -no side effects, in particular we have tried to be as compatible as possible -with the Bioware original campaigns. Some known problems include any module with -Hardcore Rule set, arQon's EMS, Old Man Beards OHS, Spellman Project, as well as -some specific modules, such as Demon. - -

Q: I get a message that I need the Microsoft .NET framework - -

A: The installer uses Microsoft .NET which you can get it here - -

Q: I use linux and/or mac and can't use the module updater - -

A: Unfortunately, you will have to install it by hand into -modules. See the PRC Forums and ask for more information -and assistance. - -

Q: I get an warning message during the merge saying "...." - -

A: Most error messages warn about overridden scripts or 2da -conflicts, but a lot of the time the module will work anyway, even if there may -be one or two minor glitches in specific circumstances. If it is an error -message because of CEP, see the next question. - -

Q: Does the PRC update modules with CEP added? - -

A: Yes, but there is an additional problem. After the module -updater has finished, you need to use the nwhak utility in the utilis folder of -your NWN install to extract a copy of baseitems.2da from the prc_2da.hak file, -and extract baseitems.2da from the merge file. Using a plain text editor (such -as notepad) you need to copy the first 112 lines (starting with "0   -106  shortsword ....." down to "112   83664  craftbase -......" inclusive) from the PRC version over the same lines in the merge hak -version. Then you need to use nwhak to reinsert it into the merge hak. -Alternatively, you could try downloading one of the unofficial merge haks from -the vault and using that instead. - -

Q: This is an excellent utility. Can I use it for my own hak? - -

A: Yes, the .hif files are use to tell it what files to put -where and can be opened with a plain text editor (such as notepad).

-

- -

Java Character Creator

-
- -
Q: It says it cant find the portrait directory. - -

A: You need a folder named "portraits" in your NWN directory, -though it doesn't need any files in it. It it doesn't exist, you'll need to -create it. - -

Q: I am having problems using packages to select feats, -skills, spells etc. - -

A: There are some known bugs involving packages and the CC, -also almost all of the PRC classes do not have any packages. It is better to -hand-pick all your feats etc. - -

Q: None of the new PRC races and/or classes are showing up. - -

A: Make sure you have the .hak files associated correctly in -the "Settings" screen. - -

Q: I get weird lines of text instead of names. - -

A: Make sure you have the .tlk file associates correctly in -the "Settings" screen. - -

Q: I cant see any buttons or anything. - -

A: There have been reports of issues with ATI catalyst drivers -If you them update to 5.7 or later this problem should be fixed. - -

Q: I don't know what head number corresponds to which head. - -

A: Use the toolset to place a creature and change its -appearance to your desire. Then note down the head number from the properties -and use that in the CC. This picture should help clarify it: - -
- -

Q: I want to use CEP for my appearance. - -

A: Add CEP and a CEP & PRC merge to the list of haks in the -"Settings" screen, and set the custom tlk file to a CEP & PRC merged tlk file. - -

Q: I get an error message XYZ -

Q: The java CC disapperes while loading - -

A: Try uninstalling java and WinRAR and following the exact -steps described in this document. If that still doesn't work you could try -making a batch file. To do so open notepad and type: - -

java -Xmx150M -Xms150M -jar CC.jar - -

Then save it as "cc.bat" (including the quote marks) in the -same directory as cc.jar and then run the batch file by double-clicking on it. - -

-

- -

General Questions

-
- -

Q: Why doesn't racial Spell Resistance show on the character sheet? - -

A: Because the PRC has a scripted SR system, to allow for various features. -You should see "X was affected by the spell." or similar messages. - -

Q: Why doesn't X show on the character sheet? - -

A: Because the character sheet is rather buggy. Additional attacks for example, -often do not show. However, the combat logs will be correct, so you can use those numbers to -measure your character against. - -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/jcc.htm b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/jcc.htm deleted file mode 100644 index 96f93e3f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/jcc.htm +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - -
-

:: Installation :: Guide ::

-
-
- -Setup: - -
    -
  1. Download the file and extract the contents in a convenient location
  2. -
  3. If you have not already done so, install the java runtime executables (found here)
  4. -
  5. Check to see if there is a directory named "portraits" in your NWN directory. If one does not exist, create it.
  6. -
  7. Run the batch file in the directory to start the character creator. You should end up with a screen similar to this: -

    - - -

  8. Select "Settings" and you should end up with a screen similar to this: -

    - - -

  9. -
      -
    • Select the correct installation folder for NWN - on windows it will probably find this for you from the registry.
    • -
    • Select the haks as shown. The + key will give you a standard file -browser with multi select (ctrl or shift + click) capability. Order -isn't important.
    • -
    • Select the prc_consortium custom TLK.
    • -
    • Don't change the default TLK.
    • -
    -
  10. -
  11. Click OK and you should be ready to create your first character.
  12. -
- -Using the java character creator: - -
    -
  1. Run the batch file in the directory to start the character creator. You should end up with a screen similar to this: -

    - - -

  2. Select "Create Character" to create a level 1 character -for use in modules with the PRC installed. You should end up with a -screen similar to this: -

    - - -

  3. Go through the different stages like you would when using -the character creator within NWN, though there is a difference at the -portrait stage: -

    - -

    Here there are two checkboxes on the left of the screen. These -restrict which portraits are displayed, based on gender or race. If you -are using a new PRC race, you will have to deselect "Lock to Race" in -order to see any portraits. -

  4. When you get to the appearance stage, and want to know -what all the options look like, open the toolset and edit a creature to -look like what you want, then note the numbers: -

    - - - -

  5. Once you have reached the end of the process, press "Finalize" to create the character.
  6. -
- -You can select your characterin-game by pressing "Use a pre-made character" and selecting it from the list that appears. -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/manual_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/manual_installation_instructions.html deleted file mode 100644 index ef9f849e..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/manual_installation_instructions.html +++ /dev/null @@ -1,94 +0,0 @@ - -Player Resource Consortium :: Manual :: Installation :: Instructions - - - - - -
-

:: Installation :: Manual Installation Instructions ::

-
-
-

Installation Notes

-
-

Manual Installation (RAR)

-
-For those that need/want to do a manual install of the prc pack into a module here are the steps: -
Note: It is assumed you are familiar with basic scripting and the -various file formats involved. Windows users should use the automatic -installer where possible. -

-
    -
  1. If downloading the rar version, place the hak and hif files in the -hak folder, place prc_consortium.erf in the erf folder, -prc_consortium.tlk in the tlk folder, and the module updater wherever -you want (or delete it if you are not running windows).

  2. - -
  3. Import prc_consortium.erf into the module using the toolset or neveredit.

  4. - -
  5. Add the haks to the module using the toolset or neveredit. The haks should be listed in the following order (top to bottom): -
    - -
    prc_include.hak -
    prc_2das.hak -
    prc_scripts.hak -
    prc_spells.hak -
    prc_epicspells.hak -
    prc_race.hak -
    prc_textures.hak -
    prc_misc.hak -
    prc_craft2das.hak -
    prc_psionics.hak -
    prc_newspellbook.hak -

  6. - -
  7. If the module already contains haks then you will need to check to -see if the haks change any of the 2da's in prc_2da's.hak, and if so, -merge the changes into a 3rd hak, placing that hak above the prc haks -in the hak list. If you skip this step then the module may not play -correctly.
  8. -
    -
  9. Add the following scripts to the module events using the toolset or neveredit: -
    -
    OnAcquireItem : prc_onaquire -
    OnActivateItem : prc_onactivate -
    OnClientEnter : prc_onenter -
    OnClientLeave : prc_onleave -
    OnCutsceneAbort : prc_oncutabort -
    OnHeartbeat : prc_onheartbeat -
    OnModuleLoad : prc_onmodload -
    OnPlayerDeath : prc_ondeath -
    OnPlayerDying : prc_ondying -
    OnPlayerEquipItem : prc_equip -
    OnPlayerLevelUp : prc_levelup -
    OnPlayerRest : prc_rest -
    OnPlayerRespawn : prc_onrespawn -
    OnUnaquireItem : prc_onunaquire -
    OnPlayerUnequipItem : prc_unequip -
    OnUserDefined : prc_onuserdef -

  10. - -
  11. If the module already has scripts attached to events (and it -probably does) then you will either need to edit those scripts and add -ExecuteScript("prc_xxx"); at the top of each one or make a new script -that calls ExecuteScript() for both the prc script and the old event -script.

  12. - -
  13. Now you need to add prc_consortium.tlk to the module, in the -toolset this is easy, just set the custom tlk to it. If the module -already contains a custom tlk then you will have to merge the entries -from both tlk files together using your favorite tlk editor into a new -tlk and use that instead. If you are running on the Mac or Linux this -step is more difficult, neveredit currently does not have any -functionality to set the custom tlk for a module. I recommend using -ewald's erf/mod/gff/tlk/2da editor, available on the vault. It's java -based and will run on the mac (not sure about Linux). To set the custom -tlk, open the module, then open the "module.ifo" file and set the -"Mod_CustomTlk" property to "prc_consortium" (no .tlk at the end). -At this point if you have done everything correctly you should be all -set to play the module.
  14. -
-
- -
- \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc.htm b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc.htm deleted file mode 100644 index abbb4981..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc.htm +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - -
-

:: Installation :: Guide ::

-
-
- -You will need: - - - -You may want: - -
- -
-

-EXE Installation Instructions -

Run the executable. This will only work if you are using -windows. Otherwise download the rar version and follow the instructions -below. -

-


-RAR Installation Instructions -

Extract the contents into the correct directories in the directory -in which Neverwinter Nights is installed (the module updater can be put -anywhere): -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ExtensionDirectory
hakhak
hifhak
erferf
tlktlk
cdxdatabase
dbfdatabase
fptdatabase
-

-


- -

-Installing PRC into modules -

Before installation, back up your modules. Something may go -wrong or you may need the originals for patching as is the case for the -Bioware campaigns. -

-Using the module updater: -

- -

- - - - - - - - - - - - - - - - - - - - - -
OptionNotes
PRC PackInstall PRC into a module
prc_ocfixInstalls extra fixes for the Bioware campaigns
PRC OCInstalls both of the above (should only be used for Bioware campaigns)
prcc2Example of a merge hak, installs PRC and CEP
-

These options are contained within the relevant .hif files. You -may also create your own .hif file for installing other content (they -are plain text, see an existing one for an example). -

-Manual installation: - -

    -
  1. Open the module using the toolset (or other software, if not using windows).
  2. - -
  3. -Add these haks (on top of any existing haks): -

    -

      -
    • prc_2das.hak
    • -
    • prc_scripts.hak
    • -
    • prc_newspellbook.hak
    • -
    • prc_spells.hak
    • -
    • prc_epicspells.hak
    • -
    • prc_psionics.hak
    • -
    • prc_race.hak
    • -
    • prc_textures.hak
    • -
    • prc_misc.hak
    • -
    • prc_craft2das.hak
    • -
    -

    If the existing haks contain conflicting content, you must merge the -contents in a new hak using the application of your choice (to be -placed on top of the list). -

    At some point the toolset (if you are using it) will attempt to -build the module. Click cancel as fast as you can, or the toolset may -crash. -

    - - - -

  4. Set the Custom Tlk to prc_consortium.tlk. If there already -is a file there, you must merge the contents in a new tlk using the -application of your choice.
  5. -
  6. Import prc_consortium.erf (and prc_ocfix.erf if this is a Bioware campaign modue)
  7. -
  8. Add the following module event scripts: -

    - - - - - - - - - - - - - - - - - - -
    EventScript
    OnAcquireItemprc_onaquire
    OnActivateItemprc_onactivate
    OnClientEnterprc_onenter
    OnClientLeaveprc_onleave
    OnCutsceneAbortprc_oncutabort
    OnHeartbeatprc_onheartbeat
    OnModuleLoadprc_onmodload
    OnPlayerDeathprc_ondeath
    OnPlayerDyingprc_ondying
    OnPlayerEquipItemprc_equip
    OnPlayerLevelUpprc_levelup
    OnPlayerRestprc_rest
    OnPlayerRespawnprc_onrespawn
    OnUnaquireItemprc_onunaquire
    OnPlayerUnequipItemprc_unequip
    OnUserDefinedprc_onuserdef
    -

    -If the module already has scripts attached to events (and it probably -does) then you will either need to edit those scripts and add -ExecuteScript("prc_xxx"); at the top of each one or make a new script -that calls ExecuteScript() for both the prc script and the old event -script. -

  9. Cache these scripts: -

    -

      -
    • prc_onaquire
    • -
    • prc_onactivate
    • -
    • prc_onenter
    • -
    • prc_onleave
    • -
    • prc_oncutabort
    • -
    • prc_onheartbeat
    • -
    • prc_onmodload
    • -
    • prc_ondeath
    • -
    • prc_ondying
    • -
    • prc_equip
    • -
    • prc_levelup
    • -
    • prc_rest
    • -
    • prc_onrespawn
    • -
    • prc_onunaquire
    • -
    • prc_unequip
    • -
    • prc_onuserdef
    • -
    • prc_hitcast
    • -
    • nw_ch_ac5
    • -
    • nw_ch_ace
    • -
    • nw_ch_ac3
    • -
    • nw_ch_ac4
    • -
    • nw_ch_ac6
    • -
    • nw_ch_ac7
    • -
    • nw_ch_ac8
    • -
    • nw_ch_ac1
    • -
    • nw_ch_ac2
    • -
    • nw_ch_aca
    • -
    • nw_ch_summon_9
    • -
    • nw_ch_acb
    • -
    • nw_ch_acd
    • -
    - -
  10. -
  11. Save the module
  12. -
- -
- \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc_server.htm b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc_server.htm deleted file mode 100644 index b1a92b86..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/prc_server.htm +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -Player Resource Consortium :: Manual :: Installation :: PRC Server Pack - - - - -
-

:: Installation :: PRC Server Pack ::

-
-
- -
-

NOTE: This document pertains to NWN1 v1.69 only, not NWN:Enhanced Edition! Please understand this before continuing.
-

-

The ConvoCC is still a work-in-progress. Please report any bugs and -issues you might have, after first checking that you have followed this -guide, that the issues have not already been fixed, and that it is a -reporoducable bug. Make sure you include as much information as -possible in reports, including at least what OS and database you are -running, where you got the ConvoCC from, what haks you are using, how -you precached the 2das, what character you are building, and exactly -what steps you take to expose the bug. A screenshot of the bug as well -as both the serverlog and NWNX-ODBC log files is also very helpful. -Without reliable feedback and reports, I cannot improve the ConvoCC. -Thank you for your cooperation.

- -
-
This is a step-by-step guide on how to install the PRC Server Pack. -
The PRC Server Pack is needed if you want to do any of the following: - - -
The system is composed of several components. Firstly, there is NWNX2. -This is an application that hooks into memory locations of the NWServer in order to pass information -into and out of the game. It relies on plugins to provide functionallity. -
-
Two plugins are included in the PRC Server Pack: -
One is a database plugin, NWNX-ODBC2, which is used -to access a SQLite database. -
The other is the NWNX-Letoscript plugin build 24. -
-
There is also a prechacher tool build-into prc.jar and a stand-alone SQLite commandline tool. -These are used to insert the 2da files into the database where they can be accessed quicker. -
-
Many servers may already have NWNX setup, possibly already using -NWNX-ODBC2 to provide database functionallity. Some servers use MySQL -instead of SQLite as a database. In these cases, the precacher can be -set to provide MySQL compatible syntax. (NOTE: I know little about -non-SQLite databases, so I dont know how well this works or any details -of it. If you have more information, please contact the PRC team so -this manual can be updated) -
-
-
The first step is to download the PRC Server Pack from -here. -If your using windows, you should get the .exe installer. -
To install the PRC Server Pack, simply run the exe. It should automatically -detect your NWN directory. After it has installed itself, it will offer to precache -the 2das for you straght away. -
-
If you are using another OS there is a .rar version as well, which -should be extracted to your NWN directoy. Then you will need to -manually start the precaching by running the "precache sqlite.bat" file -(NOTE: I dont know anything about non-windows OS, so I dont know if a -batch file applies or not. If you have more information, please contact -the PRC team so this manual can be updated). -
-
If you are looking to add the ConvoCC to an existing server, then -you should use the method above (after making a full backup of course). -If your existing server uses MySQL, then you will have to use the rar -distribution and run "precache mysql.bat" instead. This will produce a -file named "out.sql" which you should then run through your database -tools. A command like "mysql -u USER -p DATABASENAME < out.sql > -out.log" (replace USER and DATABASENAME with the values you use) should -work. You may have to copy the out.sql file to wherever MySQL is -installed. (NOTE: I know little about non-SQLite databases, so I dont -know how well this works or any details of it. If you have more -information, please contact the PRC team so this manual can be updated) -
-
Once the precacher has finished, you should have a ready populated -database with all the 2da information in it. This is needed so that -SQL-queries can be used to retrieve lists of feats etc, rather than -lengthy loops over all the rows in the 2das. -
-
If you need to precache the 2da files again in the future, for -example a new PRC version is released, run the "precache sqlite.bat" -file (or "precache mysql.bat" if using MySQL and then process the -out.sql file as before) in your NWN directory. This will remove the -tables that the precacher previously added, so it should preserve any -other existing data. However, it is probably a good idea to make a -backup before you update, just to be save! -
-
Now that you have a populated database, you can go about setting up the ConvoCC -
This is done mainly through the switch system. The minimum switches that should -be set are: -

- - - - - -
PRC_CONVOCC_ENABLEThis enables the ConvoCC via the OnClientEnter event.
PRC_CONVOCC_USE_XP_FOR_NEW_CHARThis uses zero XP on a character to mark them as new.
PRC_USE_DATABASETurn on database useage.
PRC_DB_SQLLITE or PRC_DB_MYSQLSet it to the correct SQL syntax.
PRC_USE_LETOSCRIPTTurn on Letoscript.
PRC_LETOSCRIPT_NWN_DIRA string pointing to your NWN installation directory.
-
If you want further information on switches, see the prc_inc_switch script. -
-
-

Symptom: Letoscript fails to find the NWN directory.

-
Check the PRC_LETOSCRIPT_NWN_DIR switch. Try different slash options, / // \ \\ as well as having a trailing slash or not. -
Check you are using NWNX-Letoscipt build 24 -
-
-

Symptom: Not all options are displayed on occasion

-
This appears to be lag-related. Try selecting an option and then -responding "no" to the confirmation. This should re-generate the list -with all the options present, though it may take a few attempts. -
-
-

Symptom: No options are present and the conversation cannot be aborted.

-
This is usually the result of a bug, you can use Alt-F4 to quit NWN without using Ctr-Alt-Delete. -
Please report this including what OS and database you are running, -where you got the ConvoCC from, what haks you are using, how you -precached the 2das, what character you are building, and exactly what -steps you take to expose the bug. -
-
-
-
- \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/template.htm b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/template.htm deleted file mode 100644 index b8a46758..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/installation/template.htm +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Installation :: Guide ::

-
-
- -Next Page - -

- -
- - - - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_blank.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_blank.html deleted file mode 100644 index 57bf1284..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Blank - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_epicspell.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_epicspell.html deleted file mode 100644 index b3acab4c..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_epicspell.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - Player Resource Consortium - -Player Resource Consortium :: Manual :: Content :: Epic Spells - - - - - - - -
-

:: Epic Spellcasting ::

-
-
- -Epic characters with spellcasting capabilities are often capable of casting epic spells. You must have over 24 ranks in Spellcraft and Lore and be able to cast 9-th level arcane or divine spells. In order to use the Epic Spellcasting system, one must open up the radial menu (right-click), go to the class icon (any base class) and select the 'PRC options icon'. - -

-A dialog will appear. It has several options, mostly self-explanitory - choose "Manage Epic Spells" option now. Here you can "memorize" epic spells. This will put spells that you know onto the radial, or remove them. Due to a bioware bug, you can only have 6 epic spells ready to cast at any time. You can change spells on the radial at any point, you do not have to rest, and the radial changes instantly. You can also learn Epic Spells by using "Research an Epic Spell" option. - -

-

:: Learning Epic Spells ::

-
-Every epic spell requires several things to learn: -

-
    -
  1. High enough Spellcraft skill to successfully learn it. The DC varies. Range from 25 to 100, approx. Spell focus feats reduce this DC.
  2. -
  3. Excess experience. The XP cost varies. You can not lose a level, so any XP must be above the minimum for that level. The XP is equal to GP divided by 25, so between 9,000 and 36,000.
  4. -
  5. Gold. The price varies. The gold cost is equal to the DC multiplied by 9,000, so between 225,000 and 900,000 GP.
  6. -
  7. Proper seed(s). Some spells also require other epic spells to have been researched first.
  8. -
- -To determine the requirements of an epic spell, you can use the spellbook.i.e. Use the uniqe power ability of the spell book you wish to learn. This will also show you what that spells effect are, and what is required to cast as some spells burn XP and/or cause backlash damage. -

-The seeds are available as spellbooks from the shop in PRC options menu (if it is enabled). These basically teach your character 'secrets' which are needed to learn to spell. For example, an "Seed of Armor" is required to cast "Epic Mage Armor." To acquire the knowledge of a spell seed, simply use the book. This does not cost anything. It has a chance to disintegrate, which is good for controlling the availability of seeds in persistent worlds. -

-Once you have all the required things, learning a spell can be attempted. You simply place the book of the epic spell in the inventory of the container summoned when selecting "Research an Epic Spell" option. You will be automatically successful if you have the components and your Spellcraft skill + 10 is equal to or higher than the required Spellcraft. Otherwise, you will do a skill check to see if learning it succeeds. If you suceed the check, the GP and XP is removed. If you fail, no XP is lost, but you do loose half the GP cost. If you cannot do the research becuase you dont know the right seeds or cant pay the cost, you suffer no penalty. - -

-

:: Casting Epic Spells ::

-
- -Once you've learned an epic spell, it needs to be added to your radial menu. To do this, go back to the "PRC Options" icon on your radial menu. One of the options should be to manage your epic spells. Here you can add/remove spells from your radial menu. There is also a handy, "Identify all items" option. -

-Once you have the spell added to your radial menu, I recommend you add it to the hotbar at the bottom of the screen. This ensures it is easy to access. -

-You have a limit per day of how many epic spells you can cast. You can gain these back if you rest. It is determined by your Lore skill. It is equal to lore/10 and includes skill focus feats. -

-Some epic spells can cost XP/Gold each time you cast them. In order to cast a spell you must again pass a spellcraft check. The "Spellcraft + 10 >= Required Skill" rule still applies, but if your spellcraft isn't that good you might fail and lose your slot and whatever XP/Gold components are required by that spell. - -

-

:: Other Information ::

-
- -This replaces the bioware spells, so they are no longer avaliable as feats. Characters that already have the bioware epic spells may experience bugs. -

-Boneshank put a lot of toggle switches into the scripts, check "inc_epicspells" for details. Here, you can also change costs, DC for any spells, prerequsiites for any spells and attatch research cutscenes. - -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Epic Spell Default DC XP Casting Cost Backlash
Audience of Stone 41
Achilles Heel 54
Allied Martyr 47
All Hope Lost 29
Anarchy's Call 43
Animus Blast 30
Animus Blizzard 58
Army Unfallen 66 d6/per ally
Battle Bounding 41
Celestial Council 27
Champion's Valor 45 200
Contingent Resurrection 52
Contingent Reunion 44
Deadeye Sense 47 400
Dire Winter 99 2000
Dreamscape 29
Dragon Knight 48
Deathmark 59
Dullblades 54 10d6
Dweomer Thief 65
Enslave 60 3500
Epic Mage Armor 46
Epic Repulsion 34
Epic Spell Reflection 52 10000
Epic Warding 68
Eternal Freedom 101 10000
Fiendish Words 27
Fleetness of Foot 32
Gem Cage 48
Godsmite 63 d4/per level
Greater Ruin 59
Greater Spell Resistance 67
Greater Timestop 27
Hellball 70 400 10d6
Hell Send 34
Herculean Alliance 61
Herculean Empowerment 51
Impenetrability 54 10d6
Leech Field 64
Legendary Artisan 78
Life Force Transfer 0
Magma Burst 80
Mass Penguin 35
Momento Mori 78
Mummy Dust 35
Nailed to the Sky 42 1000
Night's Undoing 24
Order Restored 43
Paths Become Known 36
Peerless Penitence 68 1000
Pestilence 44 600
Pious Parley 36
Planar Cell 51
Psionic Salvo 74
Rain of Fire 75 500
Risen Reunited 67
Ruin 29
Singular Sunder 58
Spell Worm 25
Storm Mantle 74
Summon Aberration 42
Superb Dispelling 59 10d6
Symrustar's Spellbinding 0
The Withering 69 300
Tolodine's Killing Wind 91 400
Transcendent Vitality 101 10000
Twinfiend 64
Unholy Disciple 47 300
Unimpinged 54 10d6
Unseen Wanderer 101 10000
Whip of Shar 73
- -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_main.html deleted file mode 100644 index eac7ee77..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/manual_content_main.html +++ /dev/null @@ -1,33 +0,0 @@ - - - -Player Resource Consortium 8:: Manual :: Content :: Main - - - - - -
-
-
-
-

:: PRC8 v4.1.11 ::

-
-
-
Welcome to the Player Resource Consortium 8 manual! -

Introducing support for eight class slots and other modernizations. -

-In this continously supported refresh of the PRC, we've added support for eight class slots, spell targeting silhouettes & several other recent NWN:EE updates like additional Favored Enemies -

-Making an appearance in this update is the long awaited Fochlucan Lyrist prestige class, the Steadfast Determination & Negoiator feats, Force Missiles and eight other new spells and several dozen bug fixes. -

-We hope you enjoy! -

-The PRC is the largest ever custom content release for Neverwinter Nights, with over 235 classes, 1500 feats, 1500 spells, 130 races, Psionics, the Tome of Battle, Magic of Incarnum, Binding, Weapons of Legacy, Truenaming, Shadowcasting, Invocations, Templates, Epic Spellcasting, Crafting and so much more, all taken directly from official Dungeons and Dragons material published by Wizards of the Coast. -
-
If you need further assistance, you may find it on our Discord. -
-
If you want to support the PRC8, we have a Patreon!.
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door1.jpg deleted file mode 100644 index e885e71c..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door2.jpg deleted file mode 100644 index 8c141779..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/door2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_crafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_crafting.html deleted file mode 100644 index a61fb2b7..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_crafting.html +++ /dev/null @@ -1,305 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-
PRC Crafting System v2.0

-by CRV§ADER//KY
-v1.0 by RabbitHail
-
- -Introduction
-Requirements
-Setup
-Writing Recipes
-SCRIPT and SCRIPTOR ReqTypes and scripted RESULT
-FAQ
-
-
- -Introduction
-
-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).
-
-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!
-
-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.
-
-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.
- -
-
-Requirements - -
- -Setup
-
-The PRC Crafting System v2.0 is controlled by the following module variables:
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
PRC_DISABLE_CRAFTintCompletely disable the PRC Crafting System. (default: enabled)
PRC_CraftTimerMultiplierfloatMultiply 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). -
PRC_CraftTimerMaxintAbsolute 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).
PRC_CraftTimerMinintAbsolute minimum delay (in seconds) in which crafting is disabled, regardless of the item's market price. (default: 0)
-
-
-The following variables were used by the PRC Crafting System v1.0 and are now obsolete:
-nICHoursInDayCycle
-fICMinDays
-fICMaxDays
-
- -Writing Recipes
-
-Recipes are contained within the prc_craft2das.hak file. Each recipe corresponds to a 2DA file, similar to those used for prestige classes requisites: -
-2DA V2.0
-
-      LABEL         ReqType     ReqParam1     ReqParam2
-0     row_title     TYPE        PARAM1        PARAM2
-1     row_title     TYPE        PARAM1        PARAM2
-
-ReqParam2 must be replaced by **** if not existing.
-The fields shall not contain any spaces or tabs.
-
-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 of the same type.
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqTypeReqParam1ReqParam2AND/ORDescription
RESULTResRef
script name
stack size
arguments
-Creation result. For every recipe there must be one and only one result. ReqParam1 may be the ResRef of any item, placeable or creature, or the name of a script (see section SCRIPT and SCRIPTOR ReqTypes and scripted RESULT). 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.
NOTE: if the RESULT is not an item, it will have zero GP and XP cost. You should set EXTRAGOLD and EXTRAXP accordingly.
CASTERLVLn****ANDMinimum caster level (any).
ARCCASTERLVLn****ANDMinimum caster level (arcane).
DIVCASTERLVLn****ANDMinimum caster level (divine).
PSICASTERLVLn****ANDMinimum caster level (psionic).
EXTRAGOLDGP****ANDAdditional GP required for creation.
It will not increase the XP cost as well.
EXTRAXPXP****ANDAdditional XP required for creation.
FEAT
FEATOR
ID****AND
OR
Required feat. ID is the corresponding row in feat.2da.
SPELL
SPELLOR
ID****ANDSpell 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.
Note that all SPELL requirements will be consumed, while only the first SPELLOR one will.
ITEM
ITEMOR
ResRefstack sizeAND
OR
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).
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).
SKILL
SKILLOR
IDscoreAND
OR
Minimum skill requirement. ID is the corresponding row in skills.2da.
SKILLDCIDDCANDSkill check. All components (GP, XP, items and scripted requirements) will be lost in case of failure. ID is the corresponding row in skills.2da.
LEVEL
LEVELOR
class IDlevelAND
OR
Minimum level in a given class. ID is the corresponding row in classes.2da.
HELPER
HELPEROR
TAGdistanceAND
OR
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.
SCRIPT
SCRIPTOR
ResRefargumentsAND
OR
User-defined script. ReqParam2 will be passed to it as is. Read the dedicated help section for further details.
RACEIDsubraceORPC's race. ID is the corresponding row in racialtypes.2da. If ReqParam2 is left ****, subrace will be ignored.
ALIGNalignement****ORLG, LN, LE, NG, N, NE, CG, CN or CE.
AREApartial tagreference tagORTAG substring, or the whole TAG, of the area in which the PC must be.
ReqParam2 is the complete TAG of an area to use to display the area name.
DEITYname****ORName of the PC's deity.
-
-
-For example, this is the recipe for "White Robe of the Archmagi". We will call it "ireq_robearcw.2da":
-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                 ****
-
-
- -The item_to_ireq.2da 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.
-item_to_ireq.2da 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.
-
-For example, this is the entry for "White Robe of the Archmagi":
-2DA V2.0
-
-    LABEL                            L_RESREF          RECIPE_TAG
-...
-...
-133 Robe_of_the_Archmagi_White       nw_mcloth002      IREQ_ROBEARCW
-
-
- -SCRIPT and SCRIPTOR ReqTypes and scripted RESULT
-
-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.
-OBJECT_SELF is the PC that is trying to craft the item.
-These are the functions you should use to interface with the PRC Crafting System:
- -
#include "prc_inc_craft"
-
-//Set the requirement caption that will be displayed.
-//For RESULT ReqType, set the name of the recipe final result.
-void PRCCraft_SetCaption(string sText);
-
-//Return TRUE (success) or FALSE (requirement missing) (SCRIPT and SCRIPTOR only).
-void PRCCraft_SetReturnValue(int nValue);
-
-//Get ReqParam2 from the recipe, if any.
-string PRCCraft_GetArguments();
-
-//Check if the script should consume whatever's needed (if any) / create the result
-//or is just checking for requirements / name.
-int PRCCraft_GetConsume();
-
-
-Here's a sample script:
-
//check if the Sandy Resque Quest has been completed
-#include "prc_inc_craft"
-
-void main()
-{
-    PRCCraft_SetCaption("Sandy's been resqued");
-    int resqued = GetLocalInt(GetModule(), "SandyResqued");
-    PRCCraft_SetReturnValue(resqued);
-}
- -
- -FAQ
-
-Q) I'm not the administrator of a dedicated server. Should I care about this?
-A) 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.
-
- -Q) Is it compatible with the SoU and HotU crafting systems?
-A) Yes, it is, since the three systems are completely indipendent.
-
- -Q) Should I enable the PRC 2DA Caching System only for this?
-A) 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.
-
- -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_modifyingscripts.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_modifyingscripts.html deleted file mode 100644 index 60f2659b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_modifyingscripts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts - - - - -
-

:: Module Building :: Modifying Scripts ::

-
-
-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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: ) -

-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". -

-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. -

-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! -

-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. -

-Click OK, and presto, your changes are in! You can safely abort the -rebuild process. -

-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. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_new_crafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_new_crafting.html deleted file mode 100644 index 9293253e..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_new_crafting.html +++ /dev/null @@ -1,472 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-
PRC New Crafting System

-by Flaming_Sword
-
-

-Introduction

-For Players

-Feat Use
-Crafting Non-Magical Items
-Crafting Magic Items -

-Crafting DC Information
-Crafting Cost Information
-Arbitrary (non-PnP) Crafting

-For Builders

-Crafting Facilities
-Switches
-2DAs
-Scripting - Adding New Items/Special Abilities
-

-


-Introduction

-This is a guide to the new crafting system, implementing PnP crafting. Feedback on errors/missing information/style/possible improvements is appreciated.

-Back to Top


-Feat Use

-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.

-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.

-Back to Top


-Crafting Non-Magical Items

-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.

-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.

-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.

-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).

-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.

-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.

-Back to Top


-Crafting Magic Items

-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.

-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.

-At this time, rod crafting is unavailabe, because rods as written in the SRD have been impossible to do without extra scripting.

-Back to Top


-Change Name

-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.

-Back to Top


-Change Appearance

-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.

-ModelType:

  • 0 - simple appearance, eg. rings, amulets
    • Format: single number - icon
  • 1 - simple appearance + colours, helmet/cloak
    • Format: x-x-x-x-x-x-x (7 values, 1 model, 6 colour)
      • model
      • leather1
      • leather2
      • cloth1
      • cloth2
      • metal1
      • metal2
  • 2 - weapons/boots
    • Format: x-x-x-x-x-x (6 values, 3 colour, 3 model)
      • bottom colour
      • middle colour
      • top colour
      • bottom model
      • middle model
      • top model
  • 3 - armour (25 values, 19 model, 6 colour)
    • 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
      • right foot
      • left foot
      • right shin
      • left shin
      • left thigh
      • right thigh
      • pelvis
      • torso
      • belt
      • neck
      • right forearm
      • left forearm
      • right bicep
      • left bicep
      • right shoulder
      • left shoulder
      • right hand
      • left hand
      • robe
      • leather1
      • leather2
      • cloth1
      • cloth2
      • metal1
      • metal2
-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.

-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)

-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.

-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.

-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.

- Back to Top


-Craft Magic Arms and Armour: Adding a special ability

-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.

-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.

-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.

-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.

-Back to Top


-Ring/Wondrous Item Crafting

-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.

-Back to Top


-Staff Crafting

-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).

-Back to Top


-Crafting DC

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ItemDC
Armour/Weapons/Shields10 + Base AC
Crossbows15
Bows12
Composite Bows15 + 2 x Mighty value
Simple melee weapons12
Martial melee weapons15
Exotic melee weapons18
Masterwork20 (separate roll)
-

-Back to Top


-Crafting Cost

-Costs in gp (market price) unless noted.

-Non-Magical

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeLight ArmourMedium ArmourHeavy ArmourShieldsWeaponsAmmunition (99 units)
Masterwork150150150150300594
Adamantine5,00010,00015,000N/AN/AN/A
DarkwoodN/AN/AN/A10/lb of weightN/A
DragonhideDouble total cost (base + masterwork)N/AN/A
Mithral1,0004,0009,0001,000500/lb of weightN/A
-Crafting cost is 1/3 market price.

-Magical

-Market Price = (Non-Magical Price) + (Enhancement Cost) + (Additional Cost)

-Non-Magical Price is price from previous section.

-Enhancement Cost = (Base Enhancement Cost) x (Effective Enhancement)2

-Additional Cost from properties adds linearly.

-Base Enhancement Cost is 1,000gp for armour/shields, 2,000gp for weapons

-Effective Enhancement = Enhancement + Enhancement values on properties (eg. +5 for vorpal weapons)

-For epic items, the enhancement cost is x10 what it is for non-epic items, eg. non-epic, +5 vorpal sword is 2000x(10)2 (+5, +5 for vorpal) = 200,000gp, epic, +10 sword is 2000x(10)2x10 (for being epic) = 2,000,000gp

-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.

-Time cost is 1 game hour/1,000gp market price by default.

-Back to Top


-Arbitrary (non-PnP) Crafting

-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.

-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.

-Back to Top


-Crafting Facilities

-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.

-Players within 10m of the object will be able to craft without the normal restrictions, for market price in gp and zero xp.

-Back to Top


-Switches

-These are all "int" type switches

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SwitchDescriptionDefault
PRC_DISABLE_CRAFTDisables the crafting system altogetherFALSE
PRC_DISABLE_CRAFT_EPICDisables epic craftingFALSE
PRC_AREA_DISABLE_CRAFTINGSet in area, disables crafting in that area.FALSE
PRC_AREA_DISABLE_CRAFTING_INVERTInverts the behavior of previous switch. Will disable crafting on all areas BUT ones with the PRC_AREA_DISABLE_CRAFTING switch set.FALSE
PRC_CRAFT_TIMER_MULTIPLIERScales the time cost for crafting by this value/100100
PRC_CRAFT_STAFF_CASTER_LEVELCrafted staffs have the casterlevel of the creator.FALSE
X2_CI_CRAFTSTAFF_COSTMODIFIERCost modifier of spells crafted into staffs750
PRC_CRAFTING_ARBITRARYDisables PnP crafting and instead allows all NWN itemproperties (subject to cost)FALSE
PRC_CRAFTING_COST_SCALEScales the gp cost for crafting by this value/100100
PRC_CRAFTING_MUNDANE_COST_SCALEScales the gp cost for non-magical crafting by this value/100100
PRC_CRAFTING_TIME_SCALESets crafting time per 1000gp in market price: -
    -
  1. off, no time required
  2. -
  3. round
  4. -
  5. turn
  6. -
  7. game hour
  8. -
  9. game day
  10. -
4

-To disable a specific item/special ability in PnP crafting, set a switch with this name:

-PRC_CRAFT_DISABLE_<name of crafting 2da file>_<line number of property> -where the 2da files are named craft_* (lower case) or itempropdef in the case of arbitrary crafting -

-eg. PRC_CRAFT_DISABLE_itempropdef_15 -

-disables all castspell properties in arbitrary crafting mode -

-Back to Top


-2DAs

-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:

- -    SetPRCSwitch("PRC_FILE_END_<file name>", <number>);

- -The file name will be in alphabetical order and in lower case.

-craft_*.2da

-Used to store items/special abilities and their prerequisites

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column NameDescriptionFormat
NameNameTLK entry
LabelJust a labelString
PropertyTypeCrafting type, "M" for magic, "P" for psionic (not implemented yet), blank for anyCharacter
LevelLevel (caster, manifester, etc.) prerequisiteInteger
PrereqMiscUnderscore delimited string with 5 values:

-Format:
-<Race>_<Feat>_<AlignGE>_<AlignLC>_<Class>

-Use a single asterisk (*) for blank, or four asterisks (****) for all blank

-

    -
  • Race - Race prerequisite, line in racialtypes.2da (evaluated using MyPRCGetRacialType())
  • -
  • Feat - Feat prerequisite, line in feat.2da
  • -
  • AlignGE - Alignment prerequisite, "G" for good, "E" for evil, "N" for neutral, blank for any
  • -
  • AlignLC - Alignment prerequisite, "L" for lawful, "C" for chaotic, "N" for neutral, blank for any
  • -
  • Class - Class prerequisite, line in classes.2da
  • -
-
String (Underscore delimited, contains Integers)
SkillSkill prerequisite, line in skills.2daInteger
SkillRanksNumber of ranks for skill prerequisteInteger
SpellsUnderscore delimited string with 5 values:

-Format:
-<Spell1>_<Spell2>_<Spell3>_<SpellOR1>_<SpellOR2>

-Use a single asterisk (*) for blank, or four asterisks (****) for all blank

-

    -
  • Spell1 - Spell prerequisite, line in spells.2da
  • -
  • Spell2 - Spell prerequisite, line in spells.2da
  • -
  • Spell3 - Spell prerequisite, line in spells.2da
  • -
  • SpellOR1 - Spell prerequisite, crafter must have one of SpellOR1 or SpellOR2, line in spells.2da
  • -
  • SpellOR2 - Spell prerequisite, crafter must have one of SpellOR1 or SpellOR2, line in spells.2da. If SpellOR2 is blank crafter must have SpellOR1
  • -
-
String (Underscore delimited, contains Integers)
EnhancementEnhancement value for cost calculationsInteger
AdditionalCostAdditional cost for cost calculationsInteger
ReplaceLastProperty will disable this number of the preceding lines, for weapon/armour/shield craftingInteger
BaseItemBase item filter for wondrous item crafting, line in baseitems.2da, ignored for craft_ring.2daInteger
IPNUnderscore delimited string with 4 values, Nth itemproperty to add (up to 6):

-Format:
-<Type>_<SubType>_<CostTableValue>_<Param1Value>

-Use a single asterisk (*) for blank, or four asterisks (****) for all blank

-

    -
  • Type - Type of the Nth itemproperty to add
  • -
  • SubType - SubType of the Nth itemproperty to add
  • -
  • CostTableValue - CostTableValue of the Nth itemproperty to add
  • -
  • Param1Value - Param1Value of the Nth itemproperty to add
  • -
-
String (Underscore delimited, contains Integers)
EpicEpic prerequisite, whether the creator needs the epic crafting featInteger
SpecialDetermines whether the property needs special handling by the scriptsInteger

-prc_craft_get_it.2da

-Used for non-magical crafting, lines must match baseitems.2da

- - - - - - - - - - - - - - - - - - - - - - - - - - -
Column NameDescriptionFormat
NameName of base itemTLK entry
labelA labelString
BlueprintResref of blank/generic item to create when craftingString
TypeIdentifies the type of base item for the crafting scripts: -
    -
  1. PRC_CRAFT_ITEM_TYPE_WEAPON
  2. -
  3. PRC_CRAFT_ITEM_TYPE_ARMOUR
  4. -
  5. PRC_CRAFT_ITEM_TYPE_SHIELD
  6. -
  7. PRC_CRAFT_ITEM_TYPE_AMMO
  8. -
  9. PRC_CRAFT_ITEM_TYPE_MISC
  10. -
  11. PRC_CRAFT_ITEM_TYPE_CASTSPELL
  12. -
Integer

-Back to Top


-Scripting - Adding New Items/Special Abilities

-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.

-Get2DALineFromItemprop()

-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.

-DisallowType()

-Weapon/armour/shield crafting, disallows special abilities that are similar to existing properties (for items being upgraded that were not created using this system).

-PrereqSpecialHandling()

-Extra rules for handling prerequisites.

-CheckCraftingSpells()

-Section handles unusual spell prerequisites.

-GetItemVars()

-A portion of this function disables some special abilities for ranged weapons, listed here.

-

- -if(bArmsArmour)
-{
-    int nBase = GetBaseItemType(oItem);
-    int bRangedType = StringToInt(Get2DACache("baseitems", "RangedWeapon", nBase));
-    if(bRangedType && (bRangedType != nBase))
-    {   //disallowed because ranged weapons can't have onhit
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 22, 0);
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 24, 0);
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 26, 0);
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 34, 0);
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 40, 0);
-        array_set_int(oPC, PRC_CRAFT_ITEMPROP_ARRAY, 42, 0);
-    }
-} -

-Back to Top


-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_overridenfiles.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_overridenfiles.html deleted file mode 100644 index 2b578840..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_overridenfiles.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Overriden Files - - - - -
-

:: Module Building :: Overriden Files ::

-
-
-

prc_2das.hak:


-
    -
  • baseitems
  • -
  • classes
  • -
  • cls_feat_asasin
  • -
  • cls_feat_barb
  • -
  • cls_feat_bard
  • -
  • cls_feat_cler
  • -
  • cls_feat_druid
  • -
  • cls_feat_fight
  • -
  • cls_feat_monk
  • -
  • cls_feat_pal
  • -
  • cls_feat_rang
  • -
  • cls_feat_rog
  • -
  • cls_feat_shadow
  • -
  • cls_feat_sorc
  • -
  • cls_feat_wiz
  • -
  • cls_skill_archer
  • -
  • cls_skill_asasin
  • -
  • cls_skill_barb
  • -
  • cls_skill_bard
  • -
  • cls_skill_blkgrd
  • -
  • cls_skill_cler
  • -
  • cls_skill_divcha
  • -
  • cls_skill_dradis
  • -
  • cls_skill_dru
  • -
  • cls_skill_dwdef
  • -
  • cls_skill_fight
  • -
  • cls_skill_kensei (though bioware doesn't use this)
  • -
  • cls_skill_monk
  • -
  • cls_skill_pal
  • -
  • cls_skill_palema
  • -
  • cls_skill_rang
  • -
  • cls_skill_rog
  • -
  • cls_skill_shadow
  • -
  • cls_skill_shiftr
  • -
  • cls_skill_sorc
  • -
  • cls_skill_wiz
  • -
  • cls_skill_wm
  • -
  • feat
  • -
  • iprp_feats
  • -
  • iprp_monstocst
  • -
  • iprp_neg5cost
  • -
  • iprp_onhitcost
  • -
  • iprp_onhitdur
  • -
  • iprp_spellcost
  • -
  • iprp_spells
  • -
  • iprp_srcost
  • -
  • itemprops
  • -
  • masterfeats
  • -
  • polymorph
  • -
  • skills
  • -
  • spells
  • -
  • vfx_persistent
  • -
  • visualeffects
  • -
-
-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 -

-

prc_scripts.hak:


-
    -
  • nw_i0_spells
  • -
  • x0_i0spells
  • -
  • x2_inc_spellhook
  • -
  • x2_inc_switches
  • -
  • x2_mod_def_equ
  • -
  • x2_mod_def_unequ
  • -
-
-NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcenablers.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcenablers.html deleted file mode 100644 index e8b04d88..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcenablers.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - Player Resource Consortium :: Manual :: Module Building :: PrC Enablers - - - - -

:: Module Building :: PrC Enablers ::

-
- - 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. -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcnpcs.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcnpcs.html deleted file mode 100644 index 9b33fad0..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_prcnpcs.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: PRC NPCs - - - - -
-

:: Module Building :: PRC NPCs ::

-
-
-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. -
- - - - - - - - - - - - - - -
OnBlocked prc_npc_blocked
OnCombatRoundEnd prc_npc_combat
OnConversation prc_npc_conv
OnDamaged prc_npc_damaged
OnDeath prc_npc_death
OnDisturbed prc_npc_disturb
OnHeartbeat prc_npc_hb
OnPerception prc_npc_percep
OnPhysicalAttacked prc_npc_physatt
OnRested prc_npc_rested
OnSpawn prc_npc_spawn
OnSpellCastAt prc_npc_spellat
OnUserdefined prc_npc_userdef
-
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). -
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. -
-
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. -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningdoors.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningdoors.html deleted file mode 100644 index 596e377f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningdoors.html +++ /dev/null @@ -1,29 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Respawning Doors - - - - -
-

:: Module Building :: Respawning Doors ::

-
-
-
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 -
-
-
-
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. -
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. -

-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. -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningtraps.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningtraps.html deleted file mode 100644 index 396e19b9..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_respawningtraps.html +++ /dev/null @@ -1,96 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Respawning Traps - - - - -
-

:: Module Building :: Respawning Traps ::

-
-
-
-
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". -
-
PRC v3.0 includes a novel spawning ground trap system. This system has several unique attributes: -
  • Does not require any toolset placed objects.
  • -
  • Vast selection of trap types.
  • -
  • Can have a random trap type.
  • -
  • Ability to create new trap types purely from scripting.
  • -
  • Easily award XP (or other rewards) from the trap, either from the PRC XP system or via custom scripting.
  • -
  • Spell-casting traps any arbitrary caster level.
  • -
  • Can be hooked up to NPC events so they can lay traps too.
  • -
  • Can be set to automatically respawn after a period of time.
-
The way the system works internally is fairly complex, but the outline is this: -
  • Two invisible auras are created, one as a trigger, and one as a detection area.
  • -
  • This auras have certain attributes set on them when created such as detection and disarm DCs.
  • -
  • Every 6 seconds a creature is in the detection trigger in detect mode, there is a chance to reveal the trap.
  • -
  • When the trap is detected, a grid of invisible placeables are spawned inside the trigger aura.
  • -
  • Each of these invisible placeables are trapped, this gives off a red glow to display where the trap is.
  • -
  • 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.
  • -
  • If a creature is inside the trigger aura and not disarming, flagging, or recovering, the trap goes off.
  • -
  • When the trap is triggered, there are several things that can happed. -
    • If there is a custom script assigned to the trap, it will be run.
    • -
    • If there is a spell assigned to the trap, it will be cast.
    • -
    • Otherwise, the trap will do its pre-set damage, VFX, etc.
  • -
  • After a trap has triggered, again several things could happen. -
    • The trap could be destroyed entirely, for a one-shot trap.
    • -
    • The trap may stay around untill disarmed.
    • -
    • The trap may be destroyed for a time and respawn later.
-
-

Examples

-
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. -
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 -
//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);
-}
-
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. -
//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);
-}
-
-
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). -
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_scripthooks.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_scripthooks.html deleted file mode 100644 index 205e03f6..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/modulebuilding/manual_modulebuilding_scripthooks.html +++ /dev/null @@ -1,52 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Script Hooks - - - - -
-

:: Module Building :: Script Hooks ::

-
-
-
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: -
-
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. -
-
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(). -
-
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(). -
-
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. -
-
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. -
-
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. -
-
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. -
-
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. -
-
Remember however that the PRC has added code switches for some of the common PW scripts -including persistant death tracking. -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/poison_docs.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/poison_docs.html deleted file mode 100644 index 6ef07c8a..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/poison_docs.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - Player Resource Consortium :: Manual :: PnP Poison System Documentation - - - - - - - - -
-

PnP Poison System

-
-

Introduction

-

- Once upon a time, there was a player who was messing about with rogue/wizard and was looking for something to add a bit of extra punch against all the damn monsters in the OC. He saw the poisons appliable to weapons that had come along with HotU and went "Oooh, neat!". But all was not well, for he soon noticed that the implementation sucked much goat balls and was about as far from the PnP specifications as one could get. So he went and implemented his own system that works using the poisons defined in poison.2da instead of plain static 1d2 damage to ability X and is hopefully more useful to players (and evil DMs). -

-

- This document contains some info on how the system works and how to use it. Full implementation details are available in the header comments of the poison_*.nss script files. -

- -

Users

-

- According to the Dungeon Master's Guide, poisons are divided into four types: Contact, Ingested, Inhaled, Injury. This distinction has been implemented using a new column in poison.2da, the values of which correspond to rows in poisontypedef.2da. -

-
    -
  • Contact: Can be used to -
      -
    • Poison a weapon so that creatures hit with it are poisoned.
    • -
    • Coat an item with poison so that creatures picking it up or equipping it are poisoned.
    • -
    • Thrown at someone to poison them.
    • -
    -
  • -
  • Ingested: Can be used to poison a food item. This requires effort on the part of a module builder to hook in.
  • -
  • Inhaled: The container can be thrown so that the gasous poison bursts out into 5' radius, affecting everyone in the area.
  • -
  • Injury: Can be used to coat a weapon so that creatures hit with it are poisoned.
  • -
-

- There is an item implementing a vial of poison for almost every poison with specs in (DMG|BoVD|BoED). These items have crafting recipes created for them, available from the recipe merchant in the epic spell lab, so they are accessible from any module. -
- The items are used through a set of item spells implementing the uses in the list above. -

- - -

Builders

- -

Items and recipes

-

- The pre-made "poison vial" items have resrefs of 2dapoisonXXX, where XXX is the poison.2da index of the poison it's meant to be. The pre-made recipes for creating them have resrefs of ireq_poisonXXX. However, these two numberings are not relevant to the poison system.
- The values used by the poison system are the tag of the item and/or a local variable called pois_idx. They indicate the poison.2da index of the poison. The value in the tag is stored in the last 3 characters, with zero-padding if necessary. -

-

- If you add your own poison items, they can have certain Cast Spell abilities, depending on the poison type. A single item may be of only a single poison at a time. -

-
    -
  • Contact -
    - Cast Spell: Poison Item (PnP poisons)
    - Cast Spell: Poison Weapon (PnP poisons)
    - Cast Spell: Throw Poison Vial -
  • -
  • Ingested - Cast Spell: Poison Food (PnP Poisons)
  • -
  • Inhaled - Cast Spell: Throw Poison Vial
  • -
  • Injury - Poison Weapon (PnP poisons)
  • -
- -

Pre-poisoned loot

-

- It is not particularly easy to create pre-poisoned items directly in the toolset. However, it is quite straightforward by using scripting. The items need to have the following 3 local variables set on them: -

-
    -
  • pois_itm_idx - local integer. Specifies poison.2da line.
  • -
  • pois_itm_uses - local integer. Specifies number of times creatures may be poisoned from touching the item before the poison wears off.
  • -
  • pois_item_trap_dc - local integer. Specifies the DC for Spot checks to notice that the item is poisoned and the Disable Traps DC to remove the poison.
  • -
-

- In addition, the must have Cast Spell: Clean Poison Off with unlimited uses and have the following functions called via a script: -

-
-                    object oItem = [the poisoned item];
-                    AddEventScript(oItem, EVENT_ITEM_ONACQUIREITEM,     "poison_onaquire", TRUE, FALSE);
-                    AddEventScript(oItem, EVENT_ITEM_ONPLAYEREQUIPITEM, "poison_onequip",  TRUE, FALSE);
-                
- -

Technical details

-

Poisoned weapons

-

- When a weapon is poisoned (script poison_appl_weap), first the object being poisoned is checked out to make sure it's valid for being poisoned in this manner. Then, the script gets the index of the poison to use, either from the tag of the item being used to poison or from a local integer on it.
- Then, after some more checks on the poison id, the user gets to roll for success in applying the poison.If it fails, the user gets poisoned with whatever was used. Either way, the poison is applied to the weapon.
- Two local integers are set on the weapon. One is the index of the poison used in poison.2da and the other is the number of times the poison can be applied from the weapon before it wears out. An OnHitCastSpell: Unique itemproperty is also applied to the item so that the script poison_wpn_onhit can be eventhooked to it.
- poison_wpn_onhit gets the index of the poison to use from the local integer and applies a corresponding EffectPoison() to the object hit. It then decrements remaining uses and if they reach 0, the local integers are removed from the item and the script is removed from the eventhook. The OnHitCast property is also removed if it wasn't already present when the weapon was poisoned. -

- -

Poisoned items

-

- Poisoning an object first gets the poison to use. Then, it makes some validity checks. First, that the poison is a contact poison and second that the item has not been poisoned in this manner previously.
- The poisoner rolls Set Trap to set DC for Spotting and removing the poison. The number of times the poison applied can affect people is calculated. These values are stored on the item poisoned and eventhook scripts are added to the item for OnEquip (poison_onequip) and OnAcquire (poison_onaquire). An object reference is stored on the item pointing at the poisoner.
- In addition, a Cast Spell: Clean Poison Off itemproperty is added to the item.
-
- The OnEquip script first checks if the equipper knows that the item is poisoned. If it does, either being the original poisoner or someone who has succeeded in a spot check to notice the poison during OnAcquire, it tries to clean the poison off first. The original poisoner is automatically successfull, others roll Disable Trap against the DC set by the poisoner. -

-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg01.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg01.html deleted file mode 100644 index d8efe34c..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg01.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
-
Psionics is a similar system to conventional spellcasting, however there are a number of important points that separate them. - -
Most of the terms that refer to spells have direct equivalents in psionics.
    -
  • A psionic character is one that has a power point reserve.
  • -
  • Psionic spells are called powers.
  • -
  • Metamagic-type abilities are called metapsionics.
  • -
  • A character than can use psionic powers is a manifester and powers are used at a certain manifester level instead of caster level.
  • -
  • Powers are divided into 9 power levels (I to IX) in the same way spells are divided into spell levels. However, there are no psionic cantrips.
  • -
  • Like spells, powers are separated into groups, however, instead of schools they are referred to as disciplines and are:
      -
    • Psychometabolism. A Psion specialising in it is known as an Egoist.
    • -
    • Psychokinesis. A Psion specialising in it is known as a Kineticist.
    • -
    • Psychoportation. A Psion specialising in it is known as a Nomad.
    • -
    • Clairsentience. A Psion specialising in it is known as a Seer.
    • -
    • Metacreativity. A Psion specialising in it is known as a Shaper.
    • -
    • Telepathy. A Psion specialising in it is known as a Telepath.
    • -
  • -
  • Resistance to powers is called power resistance and is interchangeable with spell resistance. Power resistance also resists spells and spell resistance also resists powers. *
  • -
  • As with spells, most offensive powers have a saving throw to avoid or reduce their effects. The DC on the power is normally 10 + relevant ability modifier + power level. Certain other abilities such as feats can alter the DC as well.
  • -
  • The 3 main psionic base classes have approximate equivalent spellcasting classes. Psions are similar to wizards, Wilders are similar to sorcerers, and Psychic Warriors are similar to a combination of bards and paladins/rangers.
  • -
  • As with divine casters, manifesters are not affected by wearing armor or using a shield. However, psions are not proficient with shields or any type of armor, and wilders are only proficient with light armor and shields. Manifesters can use feats or multi-classing to become proficient, as normal.
  • -
  • Many powers function identically to spell equivalents, for example charm, daze, dimension door, dimensional anchor, disintegrate, dismissal, dominate, freedom of movement, keen edge, knock, mind blank, restoration, true seeing, and others. There are other powers that function very similarly to certain spells.
  • -
-

- * The distinction between Power Resistance and Spell Resistance is purely nomenclatural in the version of the ruleset used by the PRC psionics implementation (full transparency). As such, the term only appears in the power descriptions and some feedback text. For example, the actual effect of the power Power Resistance is to grant 12 + manifester level of Spell Resistance. -

-
Next Page
-
-
-
- - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg02.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg02.html deleted file mode 100644 index 00c07c67..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg02.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
- - -
There are some very major differences between spells and powers.
    -
  • Psionics does not use any slots. Instead all powers cost a number of power points which varies depending on the power level. - - - - - - - - - - -
    Level 11 Power Point
    Level 23 Power Points
    Level 35 Power Points
    Level 47 Power Points
    Level 59 Power Points
    Level 611 Power Points
    Level 713 Power Points
    Level 815 Power Points
    Level 917 Power Points
  • -
  • Powers do not scale their effects automatically with manifester level. Instead they must be augmented by spending extra power points. Durations, however, do usually scale with manifester level.
  • -
  • You cannot spend more power points on a single power than your manifester level. So don't expect to be able to use all your day's power points on a single power.
  • -
  • Metapsionics and several other feats require you to expend your psionic focus when using them or will only work as long as you are psionically focused. To become psionically focused, you must use the Psionic Focus feat that all psionic characters have, and pass a concentration check (DC 20). This may provoke attacks of opportunity from nearby enemies.
  • -
  • There is a different set of metapsionics than there are metamagics. You cannot apply metamagic to powers or visa versa. Unlike metamagic in NWN, metapsionics can be stacked; however you must have Epic Psionic Focus to expend your psionic focus on more than one thing at a time. The list is:
      -
    • Empower Power
    • -
    • Extend Power
    • -
    • Maximize Power
    • -
    • Quicken Power
    • -
    • Chain Power
    • -
    • Split Psionic Ray
    • -
    • Twin Power
    • -
    • Widen Power
    • -
  • -
  • Psions (but not wilders or psychic warriors) must select a discipline to specialise in at first level. Unlike spell schools, this does not prevent you selecting powers from other disciplines. Instead, it adds a set of powers specific to your chosen discipline to the list you select from when gaining a level. These powers are by default only available to psions who specialise in that discipline.
  • -
  • Unlike wizards, all manifesters must select what powers that can use when gaining a level and cannot gain more powers from scrolls or other items. This is similar to a bard or sorcerer.
  • -
  • There are no summoning powers, the closest thing is astral construct which is a shaper-only power. However, you can design your own astral constructs for all power levels from I to IX including customizing their special abilities.
  • -
  • There is only one healing power, body adjustment. However, empathic transfer can be used to move your injuries onto your opponents.
  • -
  • Several powers require the manifester to concentrate to maintain them. This means the power will end if you cast spells, manifest powers, or do other strenuous activities. The power will also end if you come under the influence of an effect which prevents you from concentrating, such as charm, dominate, confusion, fear, stun, paralysis, or polymorph.
  • -
-
Previous Page     Next Page
-
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg03.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg03.html deleted file mode 100644 index d5d8588b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg03.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
-
Now that you are familiar with the basic terms of psionics, we can walk through using a psionic character. The first step is to select powers when gaining a level. -
-
Selecting powers is done via a conversation after the normal leveling procedure is complete. If you are using a character created with the Java CC, the conversation will happen when you first take that character into a module. -
-
Initially, you will be presented with a list of the different levels of powers you can learn. -
-
-
-
Once you select a level, you will be given a list of all the powers you can take within that level. -
-
-
-
When you select a power, you will be given a description of that power. This includes duration, effects, saving throws, power resistance, as well as metamagic and augmentation options. You may need to use the scrollbar to see the entire description. -
-
-
-
At the end of the desciption, you can choose whether to accept that power or go back and select another one. Untill you accept a power, you can change between different powers and power levels to look at them freely. -
-
How many powers and which powers you have avaliable varies depending on which manifester class you are. Note that unlike bards and sorcerers, you are not limited to selecting powers of separate levels. You can choose to fill your avaliable powers from any level you have avaliable. While higher level powers may appear to be more effective, remember that lower level powers can be augmented and/or have metapsionics applied to them. -
-
Previous Page     Next Page
-
-
-
- - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg04.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg04.html deleted file mode 100644 index 99ad24be..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg04.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
-
Once you have some powers to use, you need to regain your power points. This is done by resting and once complete you will get a message telling you how many power points you have avaliable. -
-
-
-
All psionic powers appear on the class radial. If you have so many that they wont all fit on the first layer, then the radial will expand indefinately. Powers can be added to the quickbar in the same way that feats can be. -
-
Every time you manifest a power, you will get a message in the combat logs telling you how many power points you have remaining. If you try to manifest a power that costs more power points than you have remaining, you will get a floating message telling you so and the power will not be manifest. -
-
-
-
Previous Page     Next Page
-
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg05.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg05.html deleted file mode 100644 index 2c617026..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg05.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
-
An important part of effectivly using psionics is augmentation. This means that by spending additional power points over and above the base points required by a power you can magnify the power's effects. Most powers can be augmented in only one way, however a few can be augmented to two or more different results. The amount of power points you have to spend for each augmentation varies depending on the power. -
-
Remember, you cannot spend more power points on a single power than your manifester level.
-
-
This includes the additional costs from augmentation and/or metapsionics. However, abilities that increase your manifester level also increase the maximum number of power points you can spend, for example Overchannel. -
-
Augmentation is controlled by a number of profiles. Switching between profiles happens instantly and it effects powers from that moment onwards. On the main augmentation subradial, there are 3 quickslots, "augmentation off", and augmentation options. -
-
-
-
-
The quickslots each have an augmentation profile associated with them. These profiles can be edited through the augmentation options. -
-
"Augmentation off" has a fixed profile associated with it that has zero for all augmentation options. Thus when selected, you will only pay the base point points, plus any metapsionics. -
-
The other 3 augmentation subradials are used to select any of up to 50 pre-planned profiles. There is one subradial for 0-4, another for 5-9, and one for 00-40. The profile that is currently in use is the combined result of these three subradials. -
-
For example, by default you use profile 00. If you then select the "4" subradial, you will switch to profile 04. -
If you then press the "10" subradial, it will combine the "4" with the "10" and switch to profile 14. -
If you next select the "7" subradial, it will replace the "4" with "7" and combine that with the "10" to switch to profile 17. -
-
Previous Page     Next Page
-
-
- -
- - - - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg06.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg06.html deleted file mode 100644 index 073cad4d..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/psionics_pg06.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
-
Setting up and managing augmentation profiles is done via the augmentation options. This starts a conversation through which you can manage the profiles. -
-
-
-
When you are presented with a list of the avaliable profiles, it will look something like this: -
-
-
-
Once you have selected which profile you are going to change, you should have a menu similar to this: -
-
-
-
The next page of that conversation, where you can clear your choices and save the profile, looks like this: -
-
-
-
The options choice from the initial page leads to this screen: -
-
-
-
If you use the simple default option, augmentation profile 1 is set to a value of 1 in the first augmentation option and zero in the others. Augmentation profile 2 is then set to a value if 2 in the first augmentation option and zero in the others. This pattern is then repeated over all 50 slots. This may be a good choice when starting a new psionic character in order to save you customizing each profile individually. These simple defaults overwrite any profiles you may have already set up, but it does not change quickslot augmentations. -
-
-
-
-
Setting how augmentation profiles are treated is a matter of player choice. You can have it set such that the value in the profile for the augmentation is the number of times that augmentation option is applied. The alternative is to have it set such that the value is the total number of points spent on that augmentation option (note that this does not include the base cost of the power). -
-
-
-
For example, consider the power "Mental Disruption" manifested by a 9th level Psion with augmentation profiles set to levels rather than points. -
Augment: You can augment this power in one or both of the following ways. -
1. For every 2 additional power points you spend, this power's save DC increases by 1. -
2. For every 2 additional power points you spend, this power's range and the radius of its area both increase by 5 feet.
As a 9th level manifester, they can spend up to 9 points in a single power. Mental Distruption is a level 2 power, so has a base cost of 3. This means up to 6 remaining points that can be used for augmentation if desired. -
-
One augmentation profile might be to take the first option once and the second option twice. This would have a total cost of (1x2)+(2x2)+3 = 9 power points and would result in a +1 increase in the save DC and a +10 feet increase in the range. -
-
Another augmentation profile might be to augment the first option three times. This would also have a total cost of 9 power points ( (3x2)+(0x2)+3 = 9 ) however, it would have a +3 bonus to save DC but with no additional range. This would be most suited to use against fewer tougher opponents. -
-
If the psion then changed their augmentation profiles to use points rather than levels, that would change what the augmentation does. In that case, the first profile above means that the range is increased by 5 feet and the DC stays the same; the power then costs 5 points overall. This is because 1 point is not enough to augment the first option, and so it is rounded down to zero. The 2 points in the second option is only enough to apply one augmentation, and adds 2 points to the cost. -
-
In cases where there is only one augmentation level avaliable, for example to change the type of creature effected, augmentation is capped at that level. If you try to augment a power that cannot be augmented, or try to use augmentation options that do not apply to that power, then the additional augmentation is not used. In these situations, you dont spend additional power points for no result, nor do you waste time attempting to manifest the power. -
-
Previous Page     
-
-
- -
- - - - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/templates.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/templates.html deleted file mode 100644 index f134e59f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/playerguide/templates.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - -Player Resource Consortium :: Manual :: Installation :: Guide - - - - - - -
-

:: Players Guide :: Psionics ::

-
-
- - - -
-Previous Page -      -Next Page -
- -

- -
- - - - diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_basics.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_basics.html deleted file mode 100644 index ca8edef3..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_basics.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Basics - - - - -
-

:: PrC Making :: Basics ::

-
-
-We have recived several questions on the forums about the 2da's and basic scripting. -I felt I would try and help those new to custom content by providing links to the information. -

-For questions concerning scripting check out the -NWN Lexicon. -

-If you can not find what you are looking for there, -feel free to ask questions on our forums. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_guide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_guide.html deleted file mode 100644 index 1fdcf52a..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/manual_prcmaking_guide.html +++ /dev/null @@ -1,1315 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Guide - - - - - - -
- -

:: PrC Making :: Guide ::

-
-
-
- -
    -
  1. Introduction
  2. -
  3. Prelude
  4. -
  5. Tools of the Trade
  6. -
  7. IRC Information
  8. -
  9. Script Compiler
  10. - - -
  11. CVS Information
  12. -
  13. File Overview
  14. -
  15. Getting Started
  16. -
  17. PRC Rules and General Guidelines
  18. -
  19. Classes.2da
  20. -
  21. Other Required 2da's
  22. -
  23. Feat.2da
  24. -
  25. Spells.2da
  26. -
  27. Creating Active Feats
  28. -
  29. Creating Combat Feats
  30. -
  31. Creating Passive Feats
  32. -
  33. Creating Multi-Function Feats (Sub Radials)
  34. -
- - -

Introduction

-
-
-I have decicided to create a tutorial on how to make a -Prestige Class and how to make it compatible with the Player Resource Consortium. -I hope this allows new custom content builders to help make their content compatible with the PRC. -This will make it easier for them to use both their content and ours, and also make it easier on us -if they would allow us to add their content to our pack. -

- -

Prelude

-
-
-That being said, I would like to reiterate the information in the basic section with the following links. -I cannot stress how useful these two links are when developing. -The 2da coverage from the CCG is very useful when making feats and spells. -The Lexicon has some good tutorials for those new to scripting. -In addition, the Lexicon has a listing of all the functions in the engine with information on -how to use them. -This is very useful if you script outside of the toolset as many of us in the PRC do. - -

- -For information on 2da's, harcoded limitations, etc. Check the - Neverwinter Nights Custom Content Guide. -
-For questions concerning scripting check out the - NWN Lexicon. - -

- -

Tools of the Trade

-
-
-The following is a list of utility programs that are quite handy for making PrC's. - -

- - - - - - - - - - - - - - - - - - - - - - - - -
NotePad A basic text editor... .2da and .nss files are both plain text files, making a plain text editor a definite must.
TextPad Another text editor. Can be found here. -This text editor can mass replace text in many files rather quickly. Excellent when making mass replaces. Syntax highlighting for NWN can be found on the internet.
NwN Toolset Occasionally the toolset is useful. Especially, if you are making summonable critters or dialogues.
CCCH The CODI Custom Content Helper. Has a .tlk editor as well as some pretty decent 2da editing capabilities. Some use it, some do not. Definitely worth mentioning though. It can be found here.
NWN TLK Editor 1.1 My preferred method of modifying the .tlk file. It can be found here.
NwN Explorer A good tool to look through all the standard files of the game. Great for checking out the games icon when you want to modify them to create new ones. It can be found here.
mIRC We use this to communicate, for more information see section below.
-
Back to Top -

- -

IRC Information

-
-
-The PrC members often use IRC (Internet Relay Chat) to communicate with eachother. -For those new to IRC you need to download a program called mIRC. -(There are likely others, though I do not know them.) - -The following steps will allow you to connect to our main channel. - -
    -
  • Download mIRC here.
  • -
  • Go to "Tools" and select "Options"
  • -
  • Open the "Connect" tree and select "Servers"
  • -
  • Click the "Add" button
  • -
  • Fill in Description and Group as "PRC"
  • -
  • Fill in IRC Server as "irc.neverwinterconnections.com"
  • -
  • Click the "Connect to Server" button
  • -
  • Once connected type in "/join #terran"
  • -
- -If you want to automatically connect to the server when you open mIRC you can go back into Tools > Options > Connect > Options. -There should be a checkbox labled "Connect on Startup". Select that option and you will automatically connect to "irc.neverwinterconnections.com". - -

- -Additionally, if you want to automatically join a channel on startup you can again go into Tools > Options > Connect > Options. -
    -
  • Click the "Perform" button.
  • -
  • Check the "Enable Perform on Connect" checkbox.
  • -
  • In the "Perform Commands:" textbox fill in all commands you want to run.
  • -
  • Type in "/join #terran" to connect to our channel.
  • -
- -Feel free to visit us in the IRC channel sometime. - -You can also join #prc-help for help with issues or simply to ask questions about custom content creation. - -

Back to Top -

-

Script Compiler

-
-
- -The PRC team has done some modifications to Torlack's compiler so that we can -compile all of our scripts outside of the compiler. -It was not something we orginally wanted to do, but it seems we hit some kind of hardcoded -limit in the standard compiler and could no longer compile our work. -We decided to release this compiler publicly for developers to use you can get a -link to it in the downloads section of the website. - -

-To make any script changes to the PRC you will need to: - -

-
    -
  • Extract the include files from prc_include.hak into a temporary "include" -folder in the same directory as the compiler.
  • -
  • Run the compiler on your scripts: -
    Usage: -
    nwnnsscomp [-cdegoqx] [-t#] [-v#] [[-i pathspec] ...] infile [outfile] -
    -
    pathspec - semicolon separated list of directories to search for files. -
    infile - name of the input file. -
    outfile - name of the output file. -
    -c - Compile the script (default) -
    -d - Decompile the script (can't be used with -c) -
    -e - Enable non-Bioware extensions -
    -g - Don't produce ndb debug file -
    -i - Add Search Path -
    -o - Optimize the compiled source -
    -q - Silence most messages -
    -x - Extract script from NWN data files -
    -vx.xx - Set the version of the compiler -
    -t1 - Perform a compilation test with BIF scripts -
    -t2 - Perform a compilation test with the given module -
    -t3 - Optimization space saving report with the given module -
    -t4 - Perform a compilation test with the given file or files -
    -
    -i is basically an include folder, -though the system may look for your compile file in there as well if you are elsewhere -
      -
  • -
  • Copy the modified .ncs files into a custom hak and make sure that hak is -on the top of the list in the module properties.
  • -
- -

Back to Top -

-

CVS Information

-
-
-Accessing the PRC Bug Report Tracker:
-
Directions on how to access the PRC CVS:
  • Because several of the important PRC files are .exes, they are known to work fully only on Windows. Sorry, Linux and Mac users.
  • Download and install Tortoise CVS. Follow their install instructions completely.
    - -
  • Right click on your desktop or other folder where you wish to download the PRC CVS. This will take roughly 750 megs, more if you download both the NWN1 and NWN2 repositories.
  • Select CVS, and then Preferences on the opened menu.
  • Under the Advanced tab, change the Network Compression to "6 - Good". Hit ok.
  • Select CVS Checkout
  • Place this line in the CVS Root: ":pserver:anonymous@cvs.nwnprc.berlios.de:/cvsroot/nwnprc"
  • Place either "nwnprc" or "nwn2prc" in the module line.
  • Select ok. It will begin to check out. This will take a long time. Simply wait until it is complete.
  • Open the nwnprc or nwn2prc.
  • Create a text file called config.make (.make is the file extension).
  • Open this file, and type in these three lines for NWN1:
    - -
    Code:
    -
    NWN_DIR = C:\NWN -PRC_VERSION = 31d -PRC_INSTALLVERSION = 3.1d
    -
    Replace the NWN_DIR with where your NWN1 directory is located
  • Open this file, and type in these three lines for NWN2:
    -
    Code:
    -
    NWN_DIR = C:\NWN -PRC_VERSION = 31d -PRC_INSTALLVERSION = 3.1d -MY_DOCS = C:\Documents and Settings\Username\My Documents\Neverwinter Nights 2
    -
    Replace the NWN_DIR with where your NWN1 directory is located (Yes, still NWN1, unfortunately).
    - -Replace MY_DOCS with the location of your NWN2 directory in your My Documents folder.
  • Your installation should now be complete. To test this, double click make.bat. This is the file that will compile the entire PRC. It will only compile files that have been modified, or have had their includes modified, since the last compile.
  • Upon a finished compile, the program will copy all PRC files into your NWN dir's hak, tlk, and erf folder. This will overwrite any existing files, including public release PRC files. Please be aware of this fact.
  • This will have more errors than a standard release. Follow instructions below to report them.
    -
  • Compile all files and test them before submitting to the PRC.
  • Enjoy. If you have any questions, comments, or concerns with this process or with adding content to the PRC, post them in the PRC Custom Content Help forum. Place all bug reports regarding CVS in this same forum. See this thread for bug reporting guidelines.
    -
Directions on Submitting to the PRC:
  • All files and emails should have PRC CVS in the title.
  • Compress the file and email to PRCDev@GMail.com.
  • OR: Use YouSendIt.com
  • OR: Another electronic submission format (RapidShare, providing a download link, etc).
- - - -Some directories within the repository are self explanatory, some are not. They are listed below. - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2das2das go here
Craft2das2da files specifically for the crafting systems
DevNotesDeveloper notes
epicspellscriptsEpic spell scripts
erfFiles that go into the erf
gfxgraphics - icons and the like
includeIncludes go here
newspellbookNewspellbook files
ocfixerfFiles that go into the ocfix erf
othersItem and creature blueprints, some vfx
psionicsPsionics files
race2das2das used by races
scriptsGeneral code
spellsSpell code
tlkTLK files
toolsTools used by the PRC (can be very helpful for other projects)
usersPersonal directories used by PRC members, mostly to store works in progress before merging with the rest of the code
-

- -You will likely notice there are a few directories I did not mention above. -Any directory containing "objs" in its name holds compiled data. -This prevents PrC makers from having to compile every single script whenever they use the Make System. -The tempcpl directory is an empty directory that temporarily stores data while compiling. - -

Back to Top -

-

File Overview

-
-
-There are many files in the PRC pack, so I will label those most important to PrC makers, and what they do. -If you are using the .hak files they have the same name as the directories. -For example, /2das is the same as prc_2das.hak. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Folder / File Description
/2das directory
classes.2da The 2da containing all classes. For more information check out the Custom Content Guide.
feat.2da The 2da for feats... again check the CCG for more info.
spells.2da The 2da for spells.
masterfeats.2da This 2da is for feats like Favored Enemy or Weapon Focus, where it is a single feat, but you have to select a certain version of the feat.
skills.2da The 2da for skills
cls_skill_****.2da These files determine the class and cross-class skills for your PrC. They reference the value in skills.2da.
cls_pres_****.2da These files list requirements for a prestige class.
cls_feat_****.2da These files contain the feats and at which level a PrC gains them.
cls_bfeat_****.2da This file contains bonus feat allocation for the PrC. Bonus feats are those such as fighter feats or rogue bonus feats. Also note that most classes gain bonus feats during epic levels.
   
/include directory
prc_class_const.nss All FEAT_* constants go in here.
prc_feat_const.nss All CLASS_TYPE_* constants go here.
prc_racialtypes_const.nss All RACIAL_TYPE_* constants go here.
prc_spell_const.nss All SPELL_* constants go here.
prc_ipfeat_const.nss All constants dealing with item properties go here.
prc_inc_function.nss This file is not necessarily the most intuitively named. While it does contain a few functions used by several classes, its main use is the heart of the passive feat system. Passive feats are applied by calling a class specific script on multiple events, such as onequip, onload, and onlevel. When a line is added into the EvalPRCFeats function, it will execute the script on all the main events. This saves us from having to put the code in multiple places. If your passive feats are not working, be sure that you added the proper line of code here. It is an easy thing to forget, I know I have done it before.

Another important function in this file is DeletePRCLocalInts. This file is used to delete local integers stored to make sure an ability is or is not updated. For instance, if you have an ability that can upgrade on level up, then you would want to delete the local int so that your code will re-add the bonus. Just make sure you use the SetCompositeBonus function described later in the guide.

While those are the two primary functions, you might find some of the other functions useful.
inc_item_props.nss Another very important file. Here you will find the aforementioned SetCompositeBonus function as well as numerous other functions that deal with creature skins and item properties.
prc_inc_util.nss A new file created for utility functions. Those that could be useful for multiple classes or abilities.
prc_inc_clsfunc.nss A file for all class functions that need to be included in multiple files. This prevents us from having many includes for various classes.
prc_alterations.nss This one is important if you ever need to determine a creatures RACIAL_TYPE_* constant. This file houses the MyPRCGetRacialType function.
inc_combat.nss,
inc_combat2.nss,
prc_inc_combat.nss
inc_combat and inc_combat2 are the original coding used to simulate combat for attacks such as the Arcane Trickster's Impromtu Sneak Attack ability. prc_inc_combat took the data in the previous files and added to it. New coders should use prc_inc_combat, though I thought I would mention all of them so coders do not get confused.
prc_inc_sneak.nss This file contains numerous functions used to simulate sneak attacks and to add sneak attacks to prestige classes. In order to make new classes with sneak attack stack, we add a dummy feat to the player. The code that gives them the sneak attack feat(s) is placed in this file.
prc_inc_unarmed.nss Determines the unarmed "creature weapon" damage of many of the monk PrC's. For those making a monk PrC that has fist damage upgrades, this is the file to look into.
prc_inc_spells.nss Contains many useful functions for determining caster level, mostly. The goal is to consolidate all caster level functions into this file. In the future, all new PrC's that add to caster levels should be added to the GetArcanePRCLevels and GetDivinePRCLevels functions. Very little else should be necessary, except when new casting feats are created.
prcsp_engine.nss Functions that determine spell resistance and if a player resists a spell.
prcsp_spell_adjs.nss Functions that return spell penetration bonuses.
   
/scripts directory
prc_prereq.nss This script allows a PrC builder to add in custom scripts to determine if a player can take a PrC. Bioware's 2da system had a few limitations that prevented us from properly doing some class requirements. A good example would be the Tempest. Tempests need Ambidexterity and Two-Weapon Fighting or Ranger Dual wield. In addition, they need Weapon Focus(any melee weapon) or Weapon Finesse. The 2da files FEATOR required did not allow two or conditions, it ended up working if you had any of the feats. We needed to script in the check for Ranger Dual Wield or Ambidexterity and Two-Weapon Fighting.
prc_enforce_feat.nss This script is used to circimvent some issues in the bioware engine and how feats are granted. There are several things that cannot be done with the 2da files such as race or gender specific feats. In adddition this file is also used to limit bonus feats and the levels they can be gained at. This was required for classes such as the Red Wizard as they are only supposed to take the Limited School feats at certain levels.
   
/race2das directory
race_feat_****.2da This 2da holds all the racial feats for the specific race. Note: This also contains feats for spells associated with a race.
racialtypes.2da This file stores the base information about each race. Contains information that links it to the aforementioned race 2das.
   
/racescripts directory
race_hb.nss Any abiltiies that require a heartbeat to check go in here. Things like Light Blindness/Sensitivity.
race_skin.nss All bonuses that are applies to the skin for a race. Damage Resistance, Natural Armor, etc. Most things a race would need are already implemented, just need to give a race the proper feat.
   
/spells directory
x2_s3_onhitcast.nss Script used for On Hit: Unique Powers. It should not be needed for most classes, but I figured it was worth mentioning.
   
/tlk directory
prc_consortium.tlk The only file in this directory. The tlk file holds the in game text for all the PrC's, feats, spells, etc.
- -

Back to Top -

-

Getting Started

-
-
- -If you plan to make your PrC compatible with the PRC pack, -then it is best to get the most current files from the PRC. -To get those files, you will likely need to contact Stratovarius. -The reason this is important is because you will want to make sure you are using open .tlk, and .2da slots. -If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC. -

- -Free 2da entries can be seen in the 2das in cvs. Free tlk entries can be found using the tlksearch utility in the tools directory. See the header block in the source code (tlksearch.c) for information on how to use the tool. - -The first thing I usually do is make a text file. -I store a main text file for each PrC I make. -In this file I keep all the important things I will need. -The class desription, bab, class skill list, abilities, ability descriptions, etc. -Having all of this in a text file is very convenient since you can copy / paste the information into the .tlk file. -It is also very handy having the PnP ability description in an easy to access location while you are scripting its abilities. -

- -The second thing I do is open up a another text file that has a small template for the spell, feats, and classes.2da. -Doing all the 2da work outside of the 2da's is good because you can copy/paste the data at your leisure. -A few of us PRC members learned how nice it can be, especially when two people are both editing the same 2da file... -One persons change can overwrite anothers, it is always a good idea to have a backup. -

- -Throughout PrC making you have to edit quite a few files. -I suggest using Textpad because you can have a small section of the window list all open files. -This is great for switching from one file to another quickly, and leaving them all close at hand if -you need to edit any of them. Most useful while compiling and debugging scripts. - -

Back to Top -

-

PRC Rules and General Guidelines

-
-
-The following are things that should or must be done for all classes. -It is a short list of guidelines for those interested in making files compatible with the PRC. - -
    -
  • All files MUST be in a 16.3 naming format, no exceptions.
  • -
  • No hex numbers for 2da enteries.
  • -
  • No class abilities on rods or items. They must be integrated with the class.
  • -
  • All permenant stat bonuses must conform to our existing system. -Take a look at the prc_heartwarder for an example.
  • - -
  • Use the appropriate constants instead of integers in scripts:
  • -
      -
    • Add CLASS_TYPE_* constants to prc_class_const.nss.
    • -
    • Add FEAT_* constants to prc_feat_const.nss.
    • -
    • Add SPELL_* constants to prc_spell_const.nss.
    • -
    • Add IP_CONST_* constants to prc_ipfeat_const.nss.
    • -
    • Add RACIAL_TYPE_* constants to prc_racial_const.nss.
    • -
    -
  • Name all class scripts prc_className_abilityName. OR
    -Name all class scripts className_ablityName.
  • -
- -On to the main files you will need to edit! - -

Back to Top -

-

Classes.2da

-
-
- -Naturally, if you want to make a PrC, you are going to have to edit classes.2da. -Upon first opening the file you might say, "What in the nine hells is all this junk?!" -

- -The 2da's are setup much like a database, or spreadsheet, except of course they are only text files. -The first column is the ID column, the number of the row. -

- -I would like to note a few things before moving on. One major thing to note is how the tlk data works. -Bioware has has reserved a ton of spaces so that no custom tlk should ever conflict with their own. -When making classes we often use a custom tlk as you will see in the column descriptions below. -When using a custom tlk we take our actual entry number and add, 16777216, to it. -

- -All tlk entries before 16777216 are read from the standard default.tlk. -Note: 16777217 is for BadStrRef and should not be used. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column About the Column
ID Number The value that the CLASS_TYPE_* constant should equal.
Label Arbitrary column for naming the class. Useful for those looking at the 2da
Name The tlk entry # containing the name of the class.
- For example, custom tlk #50000 = 16827216
Plural The tlk entry # containing the plural name of a class.
Lower The tlk entry # containing the class name in lower case.
Description The tlk entry # containing the class description. This includes information such as the level up table and such.
Icon The name of the icon file.
- This is not case sensitive.
- Files must be 24-bit tga files to show up properly in game.
- File name should be less than 16 characters long.
HitDie The die rolled when the class levels up. (Ex: 4, 6, 8, 10, 12)
AttackBonusTable The name of the attack bonus table used by the class. This is usually one of the following:
- CLS_ATTACK_1 - Fighter BAB, max pre-epic +20.
- CLS_ATTACK_2 - Rogue BAB, max pre-epic +15.
- CLS_ATTACK_3 - Wizard BAB, max pre-epic +10.

- - CLS_ATTACK_4 - A file added by the PRC, gives +0 BAB. -
FeatsTable CLS_FEAT_**** file. The feats your class gets, each class has its own file. You have to make one for your class.
SavingThrowTable CLS_SAVTHR_**** file. You can make your own, though most classes use very similar saving throw tables. You will likely be able to use the same one as another class.
SkillsTable CLS_SKILL_**** file. The file that lists class skills for this class. You have to make one for your class.
BonusFeatsTable CLS_BFEAT_**** file. This file lists any "bonus" feats a class can select (like fighter, wizard, or rogue) at certain levels. You have to make one for your class.
SkillPointBase The base skills per level of the class.
* SpellGainTable
* SpellKnownTable
PlayerClass 1, unless you don't want people to play it.
SpellCaster Can class cast spells? 1 = True, 0 = false.
Str, Dex, Con,
Wis, Int Cha
The classes ideal ability scores, used for recomended and auto-level.
PrimaryAbil The classes primary ability score. Again, used for that recommended button.
AlignRestrict Possible Values: -
0x00 - No restrictions -
0x01 - No Neutral -
0x02 - No Lawful -
0x03 - No Lawful, No Neutral -
0x04 - No Chaotic -
0x05 - No Chaotic, No Neutral -
0x06 - No Chaotic, No Lawful -
0x07 - No Chaotic, No Lawful, No Neutral -
0x08 - No Good -
0x09 - No Good, No Neutral -
0x0A - No Good, No Lawful -
0x0B - No Good, No Lawful, No Neutral -
0x0C - No Good, No Chaotic -
0x0D - No Good, No Chaotic, No Neutral -
0x0E - No Good, No Chaotic, No Lawful -
0x0F - No Good, No Chaotic, No Lawful, No Neutral -
0x10 - No Evil -
0x11 - No Evil, No Neutral -
0x12 - No Evil, No Lawful -
0x13 - No Evil, No Lawful, No Neutral -
0x14 - No Evil, No Chaotic -
0x15 - No Evil, No Chaotic, No Neutral -
0x16 - No Evil, No Chaotic, No Lawful -
0x17 - No Evil, No Chaotic, No Lawful, No Neutral -
0x18 - No Evil, No Good -
0x19 - No Evil, No Good, No Neutral -
0x1A - No Evil, No Good, No Lawful -
0x1B - No Evil, No Good, No Lawful, No Neutral -
0x1C - No Evil, No Good, No Chaotic -
0x1D - No Evil, No Good, No Chaotic, No Neutral -
0x1E - No Evil, No Good, No Chaotic, No Lawful -
0x1F - No Evil, No Good, No Chaotic, No Lawful, No Neutral -
AlignRstrctType Possible Values: -
0x0 None -
0x1 = Law/Chaos -
0x2 = Good/Evil -
0x3 = Both -
InvertRestrict Invert the alignment restriction? True = 1, False = 0.
Constant CLASS_TYPE_* This refers to the constant that the class goes by in scripts.
EffCRLvl01 - EffCRLvl20 1 to 20 respectively... never seen it as anything else.
PreReqTable CLS_PRES_**** file. The prerequisite file for the class. You have to make one for your class.
MaxLevel The classes maximum level possible.
XPPenalty Will this class cause an XP penalty? True = 1, False = 0. For PrC's this should always be 0.
* ArcSpellLvlMod Arcane spell level modifier.
* DivSpellLvlMod Divine spell level modifier.
EpicLevel At what level does the class start being epic.
Package The line number in Packages.2da. This refers to what the class starts with.
-

- -It is often easier to just copy another class row and then modify the values you need to change. - -

Back to Top -

-

Other Required 2da's

-
-
- -As you may have noticed while looking at the classes.2da section, -there are several 2da files that will have to create for your new PrC. -The required files include cls_pres_****.2da, cls_skill_****.2da, cls_feat_****.2da, and cls_bfeat_****.2da. -

- -The **** in those file names should be something short, about 4-6 characters, for your PRC's name. -For example for the Frenzied Berserker I used FREBZK. -It must be different from any other class, and something you can remember later is always a good thing. -

- -It is usually much easier to just copy another file and rename it. -Then modify its contents to suite your needs. -

- -Each of the files has their own data inside of them and their own uses. -Firstly, the cls_pres_****.2da is used to set your PrC's prerequisites. -The first column is index number, I am not sure if it is even required. -It is recommended to make them sequential numbers starting at 0. -The second column is just a text reminder of that the prerequisite is. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqType Description ReqParam1 ReqParam2
FEAT A feat required for the class. feat # in feats.2da ****
FEATOR This feat OR another feat that uses FEATOR. feat # in feats.2da ****
RACE Only races allowed to take this class. race # in racialtypes.2da ****
BAB Minimum BAB required to take class. any # ****
ARCSPELL (Do not use this with PRC) spell level required ****
SKILL Skill points required for class. skill # from skills.2da skill ranks
VAR Variable name that turns this class on or off. 0 = on or 1 = off ****
-

- -You might be wondering why you should not use "ARCSPELL" with the PRC. -It is because we actually have a script set for the Arcane or Divine Spell casting level detection. -This was done because using the 2da's did not work properly, and because there were also other prerequisites -that could not be done using the 2da. Some good examples of "impossible" class requirements include: -gender, deity, cleric domain(s), etc. This information was easily accessible through scripting, so -we chose to use a custom script as a prerequisite. If your PRC needs to do something that the 2da cannot do, then refer to prc_prereq.nss. -

- -All classes should have at least one VAR requirement. -Typically this is PRC_Allow_****. Of course, the ****'s are whatever you want to represent that class with. -This variable can be used by module builders to turn the whole class off if they want too, -it makes it easier for world builders if they feel the PrC causes imbalance in their world. -

- -Some classes will have a second variable. -This is typically associated with the custom prerequisite script. -If a player's character fails to pass a check for the special requirements. -This variable is turned off, causing the player to not have access to the class. -

-

- -The second file is cls_skill_****.2da. Once again the first column is an index number. -This file really only has two important things: the SkillIndex which points to a line in skills.2da, -and the ClassSkill which is either 1 or 0. Any skill that has a 1 in the class skill column is a -class skill. One thing to note is that any class that doesn't a have a skill listed at all, -cannot take the skill at all. For instance, if you don't have Use Magic Device listed, you will not -be able to put any points in it as a cross-class skill. Most classes should not have -Use Magic Device or Animal Empathy in their class list, unless they do in PnP. -

-

- - -The third file is cls_feat_****.2da. This file contains all the feats your PrC will gain upon level up. -It also contains all the bonus feats that the PrC can select, and all the epic feats available to the class. - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column Description
FeatLabel Short name to describe what feat it is. Can be anything really.
FeatIndex feat # in feat.2da
List Possible Values:
- 0 = Selectable on level up
- 1 = Regular feat or bonus feat (Figher/Wizard bonus feats)
- 2 = Bonus feat only
- 3 = Automatically granted feat
GrantedOnLevel The level PrC gains the feat, or -1 for any time.
OnMenu Is shown on class radial menu? Yes = 1, No = 0
- -

-

- -On to the last file, cls_bfeat_****.2da. -This file just has a listing of levels and a 0 or 1. -If the class gets a bonus feat at that level, then put a 1. -If not, then put a 0. -

- -One thing to be careful of when doing this file is to watch your epic level progression. -For example if your PrC has a max level of 30 and starts being epic at level 10, -then you will need to have a bonus feat every X levels starting at level 10. -This is because all classes gain their feats during epic levels as bonus feats! - -

Back to Top -

-

Feat.2da

-
-
- -There is not much I can really say about feat.2da. -It is mostly quite straight forward. -If you run into any questions the best place to look is the CCG. -I even went ahead and got a direct link for you. - Click here for feat.2da information! -

- -Now to make this section helpful, I would like to note that almost all PrC abilities will actually need to -be done using feats. Typically, if a PrC can cast something X times a day, we create a feat with the -proper uses per day, and point it to the correct spell entry in spells.2da. The same principle applies to creating custom -abilties. I will cover this again in better depth in the Creating Active Feats section. - -

Back to Top -

-

Spells.2da

-
-
- -Spells.2da is much more confusing than the feat.2da. I definitely recommend bookmarking this guide, -or the direct link to spells.2da page on the CCG. Speaking of the direct link, - here it is. -

- -Since most active PrC abilities end up being spells, -you will likely find yourself in this file a lot more than you would like. -That is why I recommend bookmarking the guide. -I know I often forget what all the stuff means. -The easiest way to make a new spell/feat is to simply copy a similiar one as a reference, -and change everything you need to. - -

Back to Top -

-

Creating Active Feats

-
-
- -What is an active feat? An active feat is a feat that the player must willingly activate. -Something like Smite, Acrobatic Attack, Mimic, Wildshape, etc. -Creating these feats is a rather straight forward process. -Most of the following steps can be done in any order you prefer, though it sometimes makes more -sense to do them in a certain order. -

- -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required action(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in spells.2da
  10. -
  11. Create an entry in cls_feat_****.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Compile script, test script, debug script
  16. -
  17. Refer to step 8, until it works
  18. -
- -Aside from debugging, I generally do the 2da work last. -This is because you need to put an icon entry in both feat.2da and spells.2da. -In addition, you need to have all the tlk entries and your script name in the 2da. -You can do it in any order you like, but you will need to make sure the entries -in the 2da's match the actual files. -

- -You can also do each part in sections. -Making the tlk entries, and then the 2da entries, then testing if the feat displays up in game. -If it shows up properly, then you can code the script that'll make it work. -There really is no set way to do it, as long as all of those steps get finished eventually. - - -

Back to Top -

-

Creating Combat Feats

-
-
- -A combat feat is a special kind of active feat. -Combat feats are those that are directly linked to an attack of some sort. -Some good examples are the Arcane Trickster's "Impromtu Sneak Attack", -the Foe Hunter's "Death Attack", and the Ravager's "Cruelest Cut". -All of those special abilities do something special when you hit the enemy. -A feat with limited uses a day (usually) that deals special damage through an attack is a combat feat. -

- -If you did not already know, the actual game engine's combat system is hard coded. -You cannot simply write a script that says. -"Add this players cha bonus as divine damage applied to the enemy if they hit -them on the first strike of this attack round." -

- -You are probably thinking right about now... Hey! The PRC has made those feats, it must be possible! ... -Indeed, remember I said you could not "simply" tell the game to do that... -At least not until the PRC created the "Combat Simulation System". -

- -It all started with inc_combat.nss. -While that script was very helpful it was still missing several nice features. -Along came inc_combat2.nss. This file added even more functionality to the previous combat system. -Things like elemental weapons, spell effect calculations, etc. -It made the system much calculate attack bonus and damage more acurately than it did before. -While inc_combat2.nss was being written and upgraded, Oni5115 started to develope prc_inc_combat.nss. -He used the majority of the code from inc_combat.nss and inc_combat2.nss, piled on a bit of new -functionality, documented the code, and made a system that is far more scripter friendly. -

- -Note: You will need numerous PRC files in order to use the Combat Simulation System. -The script is not standalone, though it is not tied to the older combat includes. -The easiest way to find out what files you will need are to simply open "prc_inc_combat.nss" and -take a quick look at the list of included files. -The list is also helpful for scripters so that they do not include the same files multiple times. -

- -Now, on to the good part! Coding a combat script. -

- -A good example of what you might want to do is the Ravager's "Cruelist Cut". -This ability is only usable up to three times per day. -On a successful melee attack, the player deals 1d4 constitution damage to the enemy. -This damage lasts 5 + Ravager level rounds. -

- -First, you'll have to include the line [#include "prc_inc_combat"] without the brackets. -This tells your script to load the include file. -Then the script will have its void main. -Inside the main function it would calculate everything required to perform its action. - -

-Because this script does not deal any extra physical damage, there are a few less function calls required. -written below is the actual script so you can take a look at how it works. - -
-
#include "prc_inc_combat" -
void main() -
{ -
      //Declare major variables -
      object oPC = OBJECT_SELF; -
      object oTarget = GetSpellTargetObject(); -
      object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); -
      int iDur = 5 + GetLevelByClass(CLASS_TYPE_RAVAGER, oPC); -
      int bIsRangedAttack = GetWeaponRanged(oWeap); -
-
      effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, d4(1) ); -
               eCon = SupernaturalEffect(eCon); -
-
      // script now uses combat system to hit and apply effect if appropriate -
      string sSuccess = "*Cruelist Cut Hit*"; -
      string sMiss = "*Cruelist Cut Miss"; -
-
      if (bIsRangedAttack) -
      { -
           SendMessageToPC(oPC,"You must use a melee weapon with this ability!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      // If they are not within 5 ft, they can't do a melee attack. -
      if(!bIsRangedAttack && GetIsInMeleeRange(oTarget, oPC)) -
      { -
           SendMessageToPC(oPC,"You are not close enough to your target to attack!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      PerformAttackRound(oTarget, oPC, eCon, RoundsToSeconds(iDur), 0, 0, 0, FALSE, sSuccess, sMiss); -
} -

- -If you are used to script all of those functions should have been relatively familiar, -except for "PerformAttackRound". That is the primary function in the include that makes -your life as a scripter far, far easier. I reduced my original Impromtu Sneak Attack code from -200 lines down to about 60 lines. And it is also more accurately done, can deal elemental damage, -and is generally much better all thanks to this function. -

- -I'll do a break down of the parameters of this function so that everyone can see how to use it. -

- -
    -
  1. oTarget - GetSpellTargetObject() - the person being smited!
  2. -
  3. oPC - The person attacking, typically the player.
  4. -
  5. eLink - A special effect or effects to apply to the player.
  6. -
  7. eDuration - the duration of the effects applied to the object.
    -
      -
    1. 0.0 - DURATION_TYPE_INSTANT - effect lasts 0.0 seconds
    2. -
    3. >0.0 - DURATION_TYPE_TEMPORARY - Effect lasts for the duration specified
    4. -
    5. <0.0 - DURATION_TYPE_PERMAMENT - Effect lasts until dispelled, not recommended
    6. -
    -
  8. -
  9. iAttackBonusMod - the attack bonus modifer for attack(s)
  10. -
  11. iDamageModifier - damage added to attack -
      -
    1. If bonuses are only on first attack, this can be an int or a DAMAGE_BONUS_* constant.
    2. -
    3. Otherwise, this must be a DAMAGE_BONUS_* constant.
    4. -
    -
  12. -
  13. iDamageType - the DAMAGE_TYPE_* const of the iDamageModifier.
  14. -
  15. bEffectAllAttacks - True or False.
  16. -
      -
    1. True - Effects all attacks.
    2. -
    3. False - Effects only the first attack that round.
    4. -
    -
  17. sMessageSuccess - message to display on a successful hit. (i.e. "*Cruelist Cut Hit*")
  18. -
  19. sMessageFailure - message to display on a failure to hit. (i.e. "*Cruelist Cut Miss*")
  20. -
- -This function redirects itself to many of the other functions within the combat include. -The nice thing is, all you need to deal with is this single function call. -Once it's setup right, your script will run. -

- -Any improvements to the combat script are typically added to that attack automatically, no recoding the feat. -It takes care of the entire attack round, wether it be a ranged attack or a melee attack, two-handed weapon, -two-weapon fighting, unarmed... Pretty much everything, certainly much more than could be scripted that easily. -

- -If you happen to run into a feat that cannot be done with this, you can always open up the script. -I'll warn you, as of the writing of this guide it is over 3,500 lines of code. -However, the code is well organized and you should not have too much difficulty following it. -Many of those "lines" are actually documentation. - -

-Should there be any bugs in the system, please post a report in our forums. -Also feel free to post any additional things that you would find useful while scripting. -Oni5115 is interested in knowing anything the script cannot handle, so he can add it. -

- -If more example scripts would be helpful feel free to check out the following scripts in the scripts directory (or hak). -
    -
  • prc_at_isa.nss - Impromptu Sneak Attack
  • -
  • prc_dj_selwrath.nss - Selvetarm's Wrath
  • -
  • prc_dj_warstrike.nss - War Strike
  • -
- -

Back to Top -

-

Creating Passive Feats

-
-
- -What is a passive feat? A passive feat is any feat that automatically -adjusts something on the character. -Things like Absolute Ambidexterity, Sight of Gruumsh, etc. -Creating these feats is not as straight forward as an active feat, -but it is fairly easy once you get used to it. -

- -Below is a basic list of what must be done to create a passive feat, -notice it is very similiar to an active feat. - -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required player modifications(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in cls_feat_****.2da
  10. -
  11. Create an entry in spells.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Create an entry in prc_inc_function.nss.
  16. -
  17. Compile script, test script, debug script
  18. -
  19. Refer to step 9, until it works
  20. -
- -The single most important file for passive feats is "prc_inc_function.nss". -Hands down this is it. Without this file none of your passive feats will work. -This file is called on all major events (onlevel, onequip, onunequip, etc.) -your passive feat will be called when this script is. - -

-To create an "entry" in prc_inc_function, you will need to check out the -"EvalPRCFeats" function. -Inside the function you should see a bunch of lines like the following: - -

-     if(GetLevelByClass(CLASS_TYPE_DUELIST, oPC) > 0) ExecuteScript("prc_duelist", oPC); - -

-This function executes your passive feat script. -Passive feats do not require a script entry in the 2da column as active feats do. -Intead, they require a script entry here in this file. -Make sure you use the approprate CLASS_TYPE_* constant as stored in "prc_class_const.nss". - -

-Another important function is the "DeletePRCLocalInts" function. -This function removes any local ints stored on a character. -This is quite useful and ensures that your script will reset a new value when fired. -An example line from this section is - -

-     DeleteLocalInt(oSkin,"CannyDefenseBonus"); - -

-Scripting the passive feat beyond that is not all that unlike scriping anything else in NwN. -Here is an example function for a passive ability. - -
-
// Applies the Duelist's reflex bonuses as CompositeBonuses on the object's skin. -
// iLevel = integer reflex save bonus -
void DuelistGrace(object oPC, object oSkin, int iLevel) -
{ -
      if(GetLocalInt(oSkin, "GraceBonus") == iLevel) return; -
      -
      if(iLevel > 0) -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", iLevel, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != TRUE) -
                FloatingTextStringOnCreature("Grace On", oPC); -
           SetLocalInt(oPC, "Grace", TRUE); -
      } -
      else -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", 0, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != FALSE) -
                FloatingTextStringOnCreature("Grace Off", oPC); -
           SetLocalInt(oPC, "Grace", FALSE); -
      } -
} - -

-You might be wondering what the "SetCompositeBonus" function is. -This is another very important function. -This function is responsible for storing and stacking bonuses on a character. -For more information you can check out "inc_item_props.nss". - -

-It should be fairly easy to make most passive feats with this system. -Sometimes however you might also need to dig a little deeper. -For instance, a class might need a passive feat that effects attacks or damage. -While many such feats are typically active, there are some bonuses that end up being passive. -A good example would be the Foe Hunter's Rancor Attack, which deals an additional Xd6 damage -if the enemy is their Hated Enemy. Scripts like this need to go in "x2_s3_onhitcast.nss". -This is in the spells directory (or hak). -In this script you will see a lot of stuff that the PRC needs for one class or another. -There are plenty of examples of what you might need to do in there. - - -

Back to Top -

-

Creating Multi-Function Feats (Sub Radials)

-
-
- -Somtimes you want to create an ability or spell that has multiple possible uses. -Good examples of such an ability is the Orc Warlords Gather Horde ability. -This class can summon an orc, and uses sub-radials to allow the player to -summon several different types of orcs. -The following instructions will help you create feats/spells that can do this as well. - -
    -
  1. Make an entry in masterfeats.2da for you feat/spell.
  2. -
  3. Create an entry in feat.2da for your ability.
    Set the MASTERFEAT entry to the entry number of your entry in masterfeats.2da.
    Set the SPELLID to the line number you plan to use for the master spell in spells.2da
  4. -
  5. Create a master spell entry in spells.2da.
    You can copy an example one. If you have the PRC, copy line 2715 or 2716.
    Set the SubRadSpell 1-5 entries to the appropriest spell entries.
    (Typically I used the lines directly below the master spell).
    Set one SubRadSpell entry per function the spell has.
  6. -
  7. Create the sub-spell entries.
    When making a sub-radial you will want to pick unique numbers over 5000. This are your SubRadialNumbers.
    Set the FeatID to (65536 * SubRadialNumber) + Feat Entry Number. -

    - -For example:
    -(65536 * 5001) + 898 = 327746434
    -(65536 * 5002) + 898 = 327811970
    - -
    898 would be the line for the feat in feat.2da and 5001 and 5002 would be the unique numbers chosen for these two sub-radial items. -
  8. -
- -Once all the entries are done it should be ready for testing. - - -

Back to Top -

-

-
-
- -

-
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/reserve_tlk_2da_slots.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/reserve_tlk_2da_slots.html deleted file mode 100644 index cd42b941..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/content/prcmaking/reserve_tlk_2da_slots.html +++ /dev/null @@ -1,119 +0,0 @@ - - -Player Resource Consortium :: Manual :: PrC Making :: Reserve 2da/tlk Slots - - - - - - - - - - -
-

:: PrC Making :: Reserve 2da/tlk Slots ::

-
-
- -
- - - - - - - - - - - - - - - - - - - - - -
File to reserve slots in: - -
Reserve slots: - to - -
Name: - -
Reason: - -
- -
-
- -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_installation.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_installation.html deleted file mode 100644 index 414ed55d..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_installation.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_itemcrafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_itemcrafting.html deleted file mode 100644 index 33192c09..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_itemcrafting.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Item Crafting - - - - - - - - - - - -
- - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_languages.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_languages.html deleted file mode 100644 index 216e65af..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_languages.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_main.html deleted file mode 100644 index 066c0a1d..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_main.html +++ /dev/null @@ -1,69 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Main - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_modulebuilding.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_modulebuilding.html deleted file mode 100644 index deae3996..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_modulebuilding.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_playerguide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_playerguide.html deleted file mode 100644 index d6777dc2..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_playerguide.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_prcmaking.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_prcmaking.html deleted file mode 100644 index 1aaa55ef..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/english/menus/manual_menus_prcmaking.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: PrC Making - - - - - - - - - - - - -
- - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/fr_index.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/fr_index.html deleted file mode 100644 index 923d4a8c..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/fr_index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Player Resource Consortium :: Manual - - - - - - - - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/installation/manual_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/installation/manual_installation_instructions.html deleted file mode 100644 index ddd35c1f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/installation/manual_installation_instructions.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Installation :: Instructions - - - - -
-

:: Installation :: Instructions ::

-
-
-

Installation Notes

-
-The PRC pack requires both expansions (Shadows of Undrentide and Hordes of the Underdark) be installed. They must be installed using Bioware’s normal installation procedure, they cannot be installed by just copying the files to your hard drive. If you have not installed both expansions then the setup program and the module updater will not run. Before trying to install the PRC pack, you should install both expansions. If the setup program complains that expansions are missing and you have actually installed both expansions using Bioware's setup programs, then most likely your registry entries have become corrupted and you will need to reinstall the expansions. -

-

Automatic Installation (EXE)

-
-To install: -

-
    -
  1. Run setup to install the PRC pack on your PC. It will automatically be installed in the correct location.

  2. -
  3. Run PRC Module Updater, selecting those modules you wish to add the pack to. The installer REQUIRES the .NET Framework 1.1 available either through Windows Update or Here.

  4. -
  5. Enjoy
  6. -
-
-

Manual Installation (RAR)

-
-For those that need/want to do a manual install of the prc pack into a module here are the steps: -

-
    -
  1. If downloading the rar version, place the hak and hif files in the hak folder, place prc_consortium.erf in the erf folder, prc_consortium.tlk in the tlk folder, and the module updater wherever you want (or delete it if you are not running windows).

  2. - -
  3. Import prc_consortium.erf into the module using the toolset or neveredit.

  4. - -
  5. Add the haks to the module using the toolset or neveredit. The haks should be listed in the following order (top to bottom): -
    - -
    prc_include.hak -
    prc_2das.hak -
    prc_scripts.hak -
    prc_spells.hak -
    prc_epicspells.hak -
    prc_race.hak -
    prc_textures.hak -
    prc_misc.hak -
    prc_craft2das.hak -

  6. - -
  7. If the module already contains haks then you will need to check to see if the haks change any of the 2da's in prc_2da's.hak, and if so, merge the changes into a 3rd hak, placing that hak above the prc haks in the hak list. If you skip this step then the module may not play correctly.
  8. - -
  9. Add the following scripts to the module events using the toolset or neveredit: -
    -
    OnAcquireItem : prc_onaquire -
    OnActivateItem : prc_onactivate -
    OnClientEnter : prc_onenter -
    OnClientLeave : prc_onleave -
    OnCutsceneAbort : prc_oncutabort -
    OnHeartbeat : prc_onheartbeat -
    OnModuleLoad : prc_onmodload -
    OnPlayerDeath : prc_ondeath -
    OnPlayerDying : prc_ondying -
    OnPlayerEquipItem : prc_equip -
    OnPlayerLevelUp : prc_levelup -
    OnPlayerRest : prc_rest -
    OnPlayerRespawn : prc_onrespawn -
    OnUnaquireItem : prc_onunaquire -
    OnPlayerUnequipItem : prc_unequip -
    OnUserDefined : prc_onuserdef -

  10. - -
  11. If the module already has scripts attached to events (and it probably does) then you will either need to edit those scripts and add ExecuteScript("prc_xxx"); at the top of each one or make a new script that calls ExecuteScript() for both the prc script and the old event script.

  12. - -
  13. Now you need to add prc_consortium.tlk to the module, in the toolset this is easy, just set the custom tlk to it. If the module already contains a custom tlk then you will have to merge the entries from both tlk files together using your favorite tlk editor into a new tlk and use that instead. If you are running on the Mac or Linux this step is more difficult, neveredit currently does not have any functionality to set the custom tlk for a module. I recommend using ewald's erf/mod/gff/tlk/2da editor, available on the vault. It's java based and will run on the mac (not sure about Linux). To set the custom tlk, open the module, then open the "module.ifo" file and set the "Mod_CustomTlk" property to "prc_consortium" (no .tlk at the end). -At this point if you have done everything correctly you should be all set to play the module.
  14. -
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/itemcrafting/manual_itemcrafting_system.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/itemcrafting/manual_itemcrafting_system.html deleted file mode 100644 index 798d4ca1..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/itemcrafting/manual_itemcrafting_system.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-

Item Creation

-
-Special thanks goes too RabbitHail for making and coding this wonderful system. -

-

Usage

-
-Item crafting gives the caster classes the ability to create magic items from recipe scrolls, books, or any item with the proper TAG. It also allows the user to create recipes from already existing magic items. This allows PWs, and modules to have full control over what magic items the users can have and create. If you want to introduce a near dynamic economy, don’t let magic items “drop” from monster kills. Only allow kills to drop money and spell scrolls. Have merchants only sell recipe scrolls and then your magic users will have to spend gold and exp to create magic items. This creates a money and exp sink, which will help your PW from having an inflationary economy. The fighters will have to pay the mages to make items. The mages will use spells, feats, money and exp to make items. This will push the mages to work with the fighters in order to get the exp 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). -

-Use the read magic cantrip on a magic item. If a magic item is listed in the item_to_ireq.2da file a recipe scroll will be created. Use the proper craft feat on the scroll to start the magic item creation process. Read magic can be used on a recipe scroll to display what item will be created and the required feats need to make that item. Some recipes for very powerful items may require a level 20 mage / level 20 cleric! -

-

Module variables

-
Int nICHoursInDayCycle // sets the number of hours in a day (default is 1) -
Float fICMinDays // sets the minimum number of days an item creation will take (default is .1) -
Float fICMaxDays // sets the maximum number of days an item creation will take (default is .2) -
-
NOTE: To all PWs, the above settings are done so for the single player that has no clue how to set module variables, has no reason to wait around while the item is being crafted, and probably won’t even read this file. To have a truly PnP “experience” with item crafting use these settings: -
-
nICHoursInDayCycle = 24; -
fICMinDays = 1.0; -
fICMaxDays = 1000.0; -

-

Item recipes

-Recipes are contained within the prc_craft2da.hak file. Each recipe is its own 2da file. The 2da files are setup just like prestige class prerequisite files. This is the recipe for making the helm of brilliance: -

-FileName: ireq_helmbril.2da -

- - - - - - - - - - - -
  LABEL ReqType ReqParam1 ReqParam2
0 Helm_of_Brilliance RESULT x0_armhe012 ****
1 CasterLevel13th CASTERLVL 13 ****
2 Craft_Wondrous_Item_Feat FEAT 2925 ****
3 Light SPELL 62 ****
4 Fire Ball SPELL 100 ****
5 Prismatic_Spray SPELL 135 ****
6 Wall_of_Fire SPELL 191 ****
7 Flame_Lash SPELL 60 ****
8 Protection_from_Elements SPELL 137 ****
-
-NOTE: The numbers in the ReqParam1 field are the line numbers that those things exist on in their respective 2da files. The filename is important because that’s what you must set an items TAG to in order to have it be used by the craft feats to make an item. -

- - - - - - - - - - - - - - - - - - - - - - - -
ReqType list: const string
sReqTypeResult = "RESULT"; // min
sReqTypeCasterLevel= "CASTERLVL";// min
sReqTypeExtraXP = "EXTRAXP"; // min
sReqTypeExtraGold = "EXTRAGOLD";// min
Increases XP cost as well
 
sReqTypeFeat = "FEAT"; // and
sReqTypeSpell= "SPELL";// and
sReqTypeItem = "ITEM"; // and
sReqTypeSkill= "SKILL";// and
sReqTypeLevel= "LEVEL";// and
 
sReqTypeRace = "RACE"; // or
sReqTypeAlign= "ALIGN";// or
sReqTypeArea = "AREA"; // or
sReqTypeDeity= "DEITY";// or
 
sReqTypeFeatOR = "FEATOR"; // or
sReqTypeSpellOR= "SPELLOR";// or
sReqTypeItemOR = "ITEMOR"; // or
sReqTypeSkillOR= "SKILLOR";// or
sReqTypeLevelOR= "LEVELOR";// or
-

-The item_to_ireq.2da file “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 magic item exist you can place both anywhere into this file so the users of the craft system can use read magic on a magic it to be able 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. -

- - - -
  LABEL L_RESREF RECIPE_TAG
0 Arvoreens_Amulet_of_Aid x0_it_mneck005 IREQ_AMULARVR
-

-NOTE: This file is NOT required for the system to run, and may not make sense for PWs to have. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_blank.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_blank.html deleted file mode 100644 index 57bf1284..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Blank - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_main.html deleted file mode 100644 index 39cb5047..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/manual_content_main.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Main - - - - - -
-
-
-
-

:: PRC v 2.2c ::

-
-
-Welcome to the Player Resource Consortium manual! -Inside you'll find all the current information about the custom PrC's, feats, races, -spells, epic spells, and modified spells that this release of the PRC includes. - -If you find anything amiss in any of the documentation, please head over to the bug reports -section of the forums and post it in the manual thread. -Otherwise, we hope that these pages can satisfy any questions you may have about -the PRC or any of the content we have produced. - -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_modifyingscripts.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_modifyingscripts.html deleted file mode 100644 index 60f2659b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_modifyingscripts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts - - - - -
-

:: Module Building :: Modifying Scripts ::

-
-
-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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: ) -

-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". -

-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. -

-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! -

-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. -

-Click OK, and presto, your changes are in! You can safely abort the -rebuild process. -

-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. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_overridenfiles.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_overridenfiles.html deleted file mode 100644 index 2b578840..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_overridenfiles.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Overriden Files - - - - -
-

:: Module Building :: Overriden Files ::

-
-
-

prc_2das.hak:


-
    -
  • baseitems
  • -
  • classes
  • -
  • cls_feat_asasin
  • -
  • cls_feat_barb
  • -
  • cls_feat_bard
  • -
  • cls_feat_cler
  • -
  • cls_feat_druid
  • -
  • cls_feat_fight
  • -
  • cls_feat_monk
  • -
  • cls_feat_pal
  • -
  • cls_feat_rang
  • -
  • cls_feat_rog
  • -
  • cls_feat_shadow
  • -
  • cls_feat_sorc
  • -
  • cls_feat_wiz
  • -
  • cls_skill_archer
  • -
  • cls_skill_asasin
  • -
  • cls_skill_barb
  • -
  • cls_skill_bard
  • -
  • cls_skill_blkgrd
  • -
  • cls_skill_cler
  • -
  • cls_skill_divcha
  • -
  • cls_skill_dradis
  • -
  • cls_skill_dru
  • -
  • cls_skill_dwdef
  • -
  • cls_skill_fight
  • -
  • cls_skill_kensei (though bioware doesn't use this)
  • -
  • cls_skill_monk
  • -
  • cls_skill_pal
  • -
  • cls_skill_palema
  • -
  • cls_skill_rang
  • -
  • cls_skill_rog
  • -
  • cls_skill_shadow
  • -
  • cls_skill_shiftr
  • -
  • cls_skill_sorc
  • -
  • cls_skill_wiz
  • -
  • cls_skill_wm
  • -
  • feat
  • -
  • iprp_feats
  • -
  • iprp_monstocst
  • -
  • iprp_neg5cost
  • -
  • iprp_onhitcost
  • -
  • iprp_onhitdur
  • -
  • iprp_spellcost
  • -
  • iprp_spells
  • -
  • iprp_srcost
  • -
  • itemprops
  • -
  • masterfeats
  • -
  • polymorph
  • -
  • skills
  • -
  • spells
  • -
  • vfx_persistent
  • -
  • visualeffects
  • -
-
-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 -

-

prc_scripts.hak:


-
    -
  • nw_i0_spells
  • -
  • x0_i0spells
  • -
  • x2_inc_spellhook
  • -
  • x2_inc_switches
  • -
  • x2_mod_def_equ
  • -
  • x2_mod_def_unequ
  • -
-
-NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_prcenablers.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_prcenablers.html deleted file mode 100644 index ab2d9d81..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/modulebuilding/manual_modulebuilding_prcenablers.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: PrC Enablers - - - - -
-

:: Module Building :: PrC Enablers ::

-
-
-In a future release these variables will be in an onload script for easy access to enabling and disabling. -

-Setting these variables to 1 on a PC will make it so they can't take any levels in that Prestige Class. -

-NOTE: Beware that as of 2.0c, the Champion of Torm and Champion of Bane share the same variable as do the Elemental Savant and Acolyte of the Skin classes. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shadows of Undrentide Variables
X1_AllowAsasin Assassin
X1_AllowArcher Arcane Archer
X1_AllowBlkGrd Black Guard
X1_AllowHarper Harper Scout
X1_AllowShadow Shadow Dancer
   
Hordes of the Underdark Variables
X1_AllowDrDis Dragon Disciple
X1_AllowDwDef Dwarven Defender
X2_AllowDivcha Champion of Torm
X2_AllowPalema Palemaster
X2_AllowShiftr Shifter
X2_AllowWM Weapon Master
   
Player Resource Consortium Pack Variables (v 2.2+)
As of PrC 2.2 all class variables start with PRC_
Player Resource Consortium Pack Variables (v 2.0c - 2.1d)
X2_AllowAcolyte Acolyte of the Skin
PNP_AllowArcTrick Arcane Trickster
PRC_AllowArchmage Archmage
X1_AllowTempus Battleguard Tempus
X1_AllowBRage Battlerager
X1_AllowBonded Bonded Summoner
X2_AllowDivcha Champion of Bane
X2_AllowBaal Disciple of Baalzebul
X2_AllowDiscmep Disciple of Mephistopheles
X2_AllowDuel Duelist
PRC_AllowEldknight Eldrich Knight
X2_AllowAcolyte Elemental Savant
X1_AllowFistRaz Fist of Raziel
X2_AllowFH Foe Hunter
X2_AllowFrebzk Frenzied Beserker
X1_AllowHarperM Harper Mage
X1_AllowHeartW Heartwarder
X2_AllowHiero Heirophant
X1_AllowHosp Hospitaler
X1_AllowIaij Iaijutsu Master
X1_AllowIniDra Initiate of Draconic Mysteries
X2_AllowKnghtCh Knight of the Chalice
X1_AllowLgDr Legendary Dreadnaught
PNP_AllowLich Lich
X2_AllowMageK Mage Killer
mh_AllowMaster Master Harper
X2_AllowShrouds Master of Shrouds
X2_AllowMystic Mystic Theurge
X1_AllowNinja Ninja Spy
X1_AllowOccAd Ocular Adept
PRC_AllowUzi Oozemaster
PNP_AllowPArcher Peerless Archer
X2_AllowRedavng Red Avenger
X2_AllowPNPSfr Shifter (PnP)
X2_AllowSpellS Spellsword
X1_AllowStormL Stormlord
X1_AllowShaLow Telflammar Shadowlord
X2_AllowTempest Tempest
X1_AllowVassal Vassal of Bahamut
codi_allow_warpr Warpriest
-

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_basics.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_basics.html deleted file mode 100644 index 45f81e72..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_basics.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Basics - - - - -
-

:: PrC Making :: Basics ::

-
-
-We have recived several questions on the forums about the 2da's and basic scripting. -I felt I would try and help those new to custom content by providing links to the information. -

-For information on 2da's, harcoded limitations, etc. Check the -Neverwinter Nights Custom Content Guide. -

-For questions concerning scripting check out the -NWN Lexicon. -

-If you can not find what you are looking for there, -feel free to ask questions on the BioWare forums, -or of course our own forums. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_guide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_guide.html deleted file mode 100644 index 64ca6ea2..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/manual_prcmaking_guide.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Guide - - - - - - -
- -

:: PrC Making :: Guide ::

-
-
-
- -
    -
  1. Introduction
  2. -
  3. Prelude
  4. -
  5. Tools of the Trade
  6. -
  7. IRC Information
  8. -
  9. Script Compiler
  10. - - -
  11. Hak Overview
  12. -
  13. File Overview
  14. -
  15. Getting Started
  16. -
  17. PRC Rules and General Guidelines
  18. -
  19. Classes.2da
  20. -
  21. Other Required 2da's
  22. -
  23. Feat.2da
  24. -
  25. Spells.2da
  26. -
  27. Creating Active Feats
  28. -
  29. Creating Combat Feats
  30. -
  31. Creating Passive Feats
  32. -
- - -

Introduction

-
-
-I have decicided to create a tutorial on how to make a -Prestige Class and how to make it compatible with the Player Resource Consortium. -I hope this allows new custom content builders to help make their content compatible with the PRC. -This will make it easier for them to use both their content and ours, and also make it easier on us -if they would allow us to add their content to our pack. -

- -

Prelude

-
-
-That being said, I would like to reiterate the information in the basic section with the following links. -I cannot stress how useful these two links are when developing. -The 2da coverage from the CCG is very useful when making feats and spells. -The Lexicon has some good tutorials for those new to scripting. -In addition, the Lexicon has a listing of all the functions in the engine with information on -how to use them. -This is very useful if you script outside of the toolset as many of us in the PRC do. - -

- -For information on 2da's, harcoded limitations, etc. Check the - Neverwinter Nights Custom Content Guide. -
-For questions concerning scripting check out the - NWN Lexicon. - -

- -

Tools of the Trade

-
-
-The following is a list of utility programs that are quite handy for making PrC's. - -

- - - - - - - - - - - - - - - - - - - - - - - - -
NotePad A basic text editor... .2da and .nss files are both plain text files, making a plain text editor a definite must.
TextPad Another text editor. Can be found here. -This text editor can mass replace text in many files rather quickly. Excellent when making mass replaces. You can also use C++ language highlighting and it is much like using the NwN Toolset when scripting.
NwN Toolset Occasionally the toolset is useful. Especially, if you are making summonable critters or dialogues.
CCCH The CODI Custom Content Helper. Has a .tlk editor as well as some pretty decent 2da editing capabilities. Some use it, some do not. Definitely worth mentioning though. It can be found here.
NWN TLK Editor 1.1 My preferred method of modifying the .tlk file. It can be found here.
NwN Explorer A good tool to look through all the standard files of the game. Great for checking out the games icon when you want to modify them to create new ones. It can be found here.
mIRC We use this to communicate, for more information see section below.
-
Back to Top -

- -

IRC Information

-
-
-The PrC members often use IRC (Internet Relay Chat) to communicate with eachother. -For those new to IRC you need to download a program called mIRC. -(There are likely others, though I do not know them.) - -The following steps will allow you to connect to our main channel. - -
    -
  • Download mIRC here.
  • -
  • Go to "Tools" and select "Options"
  • -
  • Open the "Connect" tree and select "Servers"
  • -
  • Click the "Add" button
  • -
  • Fill in Description and Group as "PRC"
  • -
  • Fill in IRC Server as "irc.neverwinterconnections.com"
  • -
  • Click the "Connect to Server" button
  • -
  • Once connected type in "/join #terran"
  • -
- -If you want to automatically connect to the server when you open mIRC you can go back into Tools > Options > Connect > Options. -There should be a checkbox labled "Connect on Startup". Select that option and you will automatically connect to "irc.neverwinterconnections.com". - -

- -Additionally, if you want to automatically join a channel on startup you can again go into Tools > Options > Connect > Options. -
    -
  • Click the "Perform" button.
  • -
  • Check the "Enable Perform on Connect" checkbox.
  • -
  • In the "Perform Commands:" textbox fill in all commands you want to run.
  • -
  • Type in "/join #terran" to connect to our channel.
  • -
- -Feel free to visit us in the IRC channel sometime. - -

Back to Top -

-

Script Compiler

-
-
- -The PRC team has done some modifications to Torlack's compiler so that we can -compile all of our scripts outside of the compiler. -It was not something we orginally wanted to do, but it seems we hit some kind of hardcoded -limit in the standard compiler and could no longer compile our work. -We decided to release this compiler publicly for developers to use you can get a -link to it in the downloads section of the website. - -

-To make any script changes to the PRC you will need to: - -

-
    -
  • Extract the include files from prc_include.hak into a temporary "include" -folder in the same directory as the compiler.
  • -
  • Run the compiler on your scripts: -
    Usage: -
    nwnnsscomp [-cdegoqx] [-t#] [-v#] [[-i pathspec] ...] infile [outfile] -
    -
    pathspec - semicolon separated list of directories to search for files. -
    infile - name of the input file. -
    outfile - name of the output file. -
    -c - Compile the script (default) -
    -d - Decompile the script (can't be used with -c) -
    -e - Enable non-Bioware extensions -
    -g - Don't produce ndb debug file -
    -i - Add Search Path -
    -o - Optimize the compiled source -
    -q - Silence most messages -
    -x - Extract script from NWN data files -
    -vx.xx - Set the version of the compiler -
    -t1 - Perform a compilation test with BIF scripts -
    -t2 - Perform a compilation test with the given module -
    -t3 - Optimization space saving report with the given module -
    -t4 - Perform a compilation test with the given file or files -
    -
    -i is basically an include folder, -though the system may look for your compile file in there as well if you are elsewhere -
      -
  • -
  • Copy the modified .ncs files into a custom hak and make sure that hak is -on the top of the list in the module properties.
  • -
- -For more compiler information you can check the orginal developer's website: -
http://www.torlack.com/index.html?topics=nwnnsscomp_readme - -

Back to Top -

-

Hak Overview

-
-
- -If you open up your hak folder you should find quite a few hak files. -Here is a brief overview of those haks. -Most of them are rather self explanatory, but we might as well explain them anyways. - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
prc_2dasLocation of almost all 2da files for the PrC.
prc_Craft2das2da files specifically for the crafting system.
prc_epicspellscriptsScripts for the Epic Spell System are in here
prc_miscAll icons, textures, dialogues creature templates, etc go in here.
prc_includeAll include scripts go in here. One of the most important folders.
prc_race2da files and scripts for the race pack.
prc_scriptsCustom scripts for PrC's go in here.
prc_spellsThis directory is for all the official Bioware spell scripts.
-

- -You will likely notice there are a few directories I did not mention above. -Any directory containing "objs" in its name holds compiled data. -This prevents PrC makers from having to compile every single script whenever they use the Make System. -The tempcpl directory is an empty directory that temporarily stores data while compiling. - -

Back to Top -

-

File Overview

-
-
-There are many files in the PRC pack, so I will label those most important to PrC makers, and what they do. -If you are using the .hak files they have the same name as the directories. -For example, /2das is the same as prc_2das.hak. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Folder / File Description
/2das directory
classes.2da The 2da containing all classes. For more information check out the Custom Content Guide.
feat.2da The 2da for feats... again check the CCG for more info.
spells.2da The 2da for spells.
masterfeats.2da This 2da is for feats like Favored Enemy or Weapon Focus, where it is a single feat, but you have to select a certain version of the feat.
skills.2da The 2da for skills
cls_skill_****.2da These files determine the class and cross-class skills for your PrC. They reference the value in skills.2da.
cls_pres_****.2da These files list requirements for a prestige class.
cls_feat_****.2da These files contain the feats and at which level a PrC gains them.
cls_bfeat_****.2da This file contains bonus feat allocation for the PrC. Bonus feats are those such as fighter feats or rogue bonus feats. Also note that most classes gain bonus feats during epic levels.
   
/include directory
prc_class_const.nss All FEAT_* constants go in here.
prc_feat_const.nss All CLASS_TYPE_* constants go here.
prc_racialtypes_const.nss All RACIAL_TYPE_* constants go here.
prc_spell_const.nss All SPELL_* constants go here.
prc_ipfeat_const.nss All constants dealing with item properties go here.
prc_inc_function.nss This file is not necessarily the most intuitively named. While it does contain a few functions used by several classes, its main use is the heart of the passive feat system. Passive feats are applied by calling a class specific script on multiple events, such as onequip, onload, and onlevel. When a line is added into the EvalPRCFeats function, it will execute the script on all the main events. This saves us from having to put the code in multiple places. If your passive feats are not working, be sure that you added the proper line of code here. It is an easy thing to forget, I know I have done it before.

Another important function in this file is DeletePRCLocalInts. This file is used to delete local integers stored to make sure an ability is or is not updated. For instance, if you have an ability that can upgrade on level up, then you would want to delete the local int so that your code will re-add the bonus. Just make sure you use the SetCompositeBonus function described later in the guide.

While those are the two primary functions, you might find some of the other functions useful.
inc_item_props.nss Another very important file. Here you will find the aforementioned SetCompositeBonus function as well as numerous other functions that deal with creature skins and item properties.
prc_inc_util.nss A new file created for utility functions. Those that could be useful for multiple classes or abilities.
prc_inc_clsfunc.nss A file for all class functions that need to be included in multiple files. This prevents us from having many includes for various classes.
prc_alterations.nss This one is important if you ever need to determine a creatures RACIAL_TYPE_* constant. This file houses the MyPRCGetRacialType function.
inc_combat.nss,
inc_combat2.nss,
prc_inc_combat.nss
inc_combat and inc_combat2 are the original coding used to simulate combat for attacks such as the Arcane Trickster's Impromtu Sneak Attack ability. prc_inc_combat took the data in the previous files and added to it. New coders should use prc_inc_combat, though I thought I would mention all of them so coders do not get confused.
prc_inc_sneak.nss This file contains numerous functions used to simulate sneak attacks and to add sneak attacks to prestige classes. In order to make new classes with sneak attack stack, we add a dummy feat to the player. The code that gives them the sneak attack feat(s) is placed in this file.
prc_inc_unarmed.nss Determines the unarmed "creature weapon" damage of many of the monk PrC's. For those making a monk PrC that has fist damage upgrades, this is the file to look into.
prc_inc_spells.nss Contains many useful functions for determining caster level, mostly. The goal is to consolidate all caster level functions into this file. In the future, all new PrC's that add to caster levels should be added to the GetArcanePRCLevels and GetDivinePRCLevels functions. Very little else should be necessary, except when new casting feats are created.
prcsp_engine.nss Functions that determine spell resistance and if a player resists a spell.
prcsp_spell_adjs.nss Functions that return spell penetration bonuses.
   
/scripts directory
prc_prereq.nss This script allows a PrC builder to add in custom scripts to determine if a player can take a PrC. Bioware's 2da system had a few limitations that prevented us from properly doing some class requirements. A good example would be the Tempest. Tempests need Ambidexterity and Two-Weapon Fighting or Ranger Dual wield. In addition, they need Weapon Focus(any melee weapon) or Weapon Finesse. The 2da files FEATOR required did not allow two or conditions, it ended up working if you had any of the feats. We needed to script in the check for Ranger Dual Wield or Ambidexterity and Two-Weapon Fighting.
prc_enforce_feat.nss This script is used to circimvent some issues in the bioware engine and how feats are granted. There are several things that cannot be done with the 2da files such as race or gender specific feats. In adddition this file is also used to limit bonus feats and the levels they can be gained at. This was required for classes such as the Red Wizard as they are only supposed to take the Limited School feats at certain levels.
   
/race2das directory
race_feat_****.2da This 2da holds all the racial feats for the specific race. Note: This also contains feats for spells associated with a race.
racialtypes.2da This file stores the base information about each race. Contains information that links it to the aforementioned race 2das.
   
/racescripts directory
race_hb.nss Any abiltiies that require a heartbeat to check go in here. Things like Light Blindness/Sensitivity.
race_skin.nss All bonuses that are applies to the skin for a race. Damage Resistance, Natural Armor, etc. Most things a race would need are already implemented, just need to give a race the proper feat.
   
/spells directory
x2_s3_onhitcast.nss Script used for On Hit: Unique Powers. It should not be needed for most classes, but I figured it was worth mentioning.
   
/tlk directory
prc_consortium.tlk The only file in this directory. The tlk file holds the in game text for all the PrC's, feats, spells, etc.
- -

Back to Top -

-

Getting Started

-
-
- -If you plan to make your PrC compatible with the PRC pack, -then it is best to get the most current files from the PRC. -To get those files, you will likely need to contact Stratovarius. -The reason this is important is because you will want to make sure you are using open .tlk, and .2da slots. -If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC. -

- -For the most current list of open 2da / tlk slots click here. -[Note: Link requires active internet connection to work] -

- -The first thing I usually do is make a text file. -I store a main text file for each PrC I make. -In this file I keep all the important things I will need. -The class desription, bab, class skill list, abilities, ability descriptions, etc. -Having all of this in a text file is very convenient since you can copy / paste the information into the .tlk file. -It is also very handy having the PnP ability description in an easy to access location while you are scripting its abilities. -

- -The second thing I do is open up a another text file that has a small template for the spell, feats, and classes.2da. -Doing all the 2da work outside of the 2da's is good because you can copy/paste the data at your leisure. -A few of us PRC members learned how nice it can be, especially when two people are both editing the same 2da file... -One persons change can overwrite anothers, it is always a good idea to have a backup. -

- -Throughout PrC making you have to edit quite a few files. -I suggest using Textpad because you can have a small section of the window list all open files. -This is great for switching from one file to another quickly, and leaving them all close at hand if -you need to edit any of them. Most useful while compiling and debugging scripts. - -

Back to Top -

-

PRC Rules and General Guidelines

-
-
-The following are things that should or must be done for all classes. -It is a short list of guidelines for those interested in making files compatible with the PRC. - -
    -
  • All files MUST be in a 16.3 naming format, no exceptions.
  • -
  • No hex numbers for 2da enteries.
  • -
  • No class abilities on rods or items. They must be integrated with the class.
  • -
  • All permenant stat bonuses must conform to our existing system. -Take a look at the prc_heartwarder for an example.
  • - -
  • Use the appropriate constants instead of integers in scripts:
  • -
      -
    • Add CLASS_TYPE_* constants to prc_class_const.nss.
    • -
    • Add FEAT_* constants to prc_feat_const.nss.
    • -
    • Add SPELL_* constants to prc_spell_const.nss.
    • -
    • Add IP_CONST_* constants to prc_ipfeat_const.nss.
    • -
    • Add RACIAL_TYPE_* constants to prc_racial_const.nss.
    • -
    -
  • Name all class scripts prc_className_abilityName. OR
    -Name all class scripts className_ablityName.
  • -
- -On to the main files you will need to edit! - -

Back to Top -

-

Classes.2da

-
-
- -Naturally, if you want to make a PrC, you are going to have to edit classes.2da. -Upon first opening the file you might say, "What in the nine hells is all this junk?!" -

- -The 2da's are setup much like a database, or spreadsheet, except of course they are only text files. -The first column is the ID column, the number of the row. -

- -I would like to note a few things before moving on. One major thing to note is how the tlk data works. -Bioware has has reserved a ton of spaces so that no custom tlk should ever conflict with their own. -When making classes we often use a custom tlk as you will see in the column descriptions below. -When using a custom tlk we take our actual entry number and add, 16777216, to it. -

- -All tlk entries before 16777216 are read from the standard default.tlk. -Note: 16777217 is for BadStrRef and should not be used. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column About the Column
ID Number The value that the CLASS_TYPE_* constant should equal.
Label Arbitrary column for naming the class. Useful for those looking at the 2da
Name The tlk entry # containing the name of the class.
- For example, custom tlk #50000 = 16827216
Plural The tlk entry # containing the plural name of a class.
Lower The tlk entry # containing the class name in lower case.
Description The tlk entry # containing the class description. This includes information such as the level up table and such.
Icon The name of the icon file.
- This is not case sensitive.
- Files must be 24-bit tga files to show up properly in game.
- File name should be less than 16 characters long.
HitDie The die rolled when the class levels up. (Ex: 4, 6, 8, 10, 12)
AttackBonusTable The name of the attack bonus table used by the class. This is usually one of the following:
- CLS_ATTACK_1 - Fighter BAB, max pre-epic +20.
- CLS_ATTACK_2 - Rogue BAB, max pre-epic +15.
- CLS_ATTACK_3 - Wizard BAB, max pre-epic +10.

- - CLS_ATTACK_4 - A file added by the PRC, gives +0 BAB. -
FeatsTable CLS_FEAT_**** file. The feats your class gets, each class has its own file. You have to make one for your class.
SavingThrowTable CLS_SAVTHR_**** file. You can make your own, though most classes use very similar saving throw tables. You will likely be able to use the same one as another class.
SkillsTable CLS_SKILL_**** file. The file that lists class skills for this class. You have to make one for your class.
BonusFeatsTable CLS_BFEAT_**** file. This file lists any "bonus" feats a class can select (like fighter, wizard, or rogue) at certain levels. You have to make one for your class.
SkillPointBase The base skills per level of the class.
* SpellGainTable
* SpellKnownTable
PlayerClass 1, unless you don't want people to play it.
SpellCaster Can class cast spells? 1 = True, 0 = false.
Str, Dex, Con,
Wis, Int Cha
The classes ideal ability scores, used for recomended and auto-level.
PrimaryAbil The classes primary ability score. Again, used for that recommended button.
AlignRestrict Possible Values: -
0x00 - No restrictions -
0x01 - No Neutral -
0x02 - No Lawful -
0x03 - No Lawful, No Neutral -
0x04 - No Chaotic -
0x05 - No Chaotic, No Neutral -
0x06 - No Chaotic, No Lawful -
0x07 - No Chaotic, No Lawful, No Neutral -
0x08 - No Good -
0x09 - No Good, No Neutral -
0x0A - No Good, No Lawful -
0x0B - No Good, No Lawful, No Neutral -
0x0C - No Good, No Chaotic -
0x0D - No Good, No Chaotic, No Neutral -
0x0E - No Good, No Chaotic, No Lawful -
0x0F - No Good, No Chaotic, No Lawful, No Neutral -
0x10 - No Evil -
0x11 - No Evil, No Neutral -
0x12 - No Evil, No Lawful -
0x13 - No Evil, No Lawful, No Neutral -
0x14 - No Evil, No Chaotic -
0x15 - No Evil, No Chaotic, No Neutral -
0x16 - No Evil, No Chaotic, No Lawful -
0x17 - No Evil, No Chaotic, No Lawful, No Neutral -
0x18 - No Evil, No Good -
0x19 - No Evil, No Good, No Neutral -
0x1A - No Evil, No Good, No Lawful -
0x1B - No Evil, No Good, No Lawful, No Neutral -
0x1C - No Evil, No Good, No Chaotic -
0x1D - No Evil, No Good, No Chaotic, No Neutral -
0x1E - No Evil, No Good, No Chaotic, No Lawful -
0x1F - No Evil, No Good, No Chaotic, No Lawful, No Neutral -
AlignRstrctType Possible Values: -
0x0 None -
0x1 = Law/Chaos -
0x2 = Good/Evil -
0x3 = Both -
InvertRestrict Invert the alignment restriction? True = 1, False = 0.
Constant CLASS_TYPE_* This refers to the constant that the class goes by in scripts.
EffCRLvl01 - EffCRLvl20 1 to 20 respectively... never seen it as anything else.
PreReqTable CLS_PRES_**** file. The prerequisite file for the class. You have to make one for your class.
MaxLevel The classes maximum level possible.
XPPenalty Will this class cause an XP penalty? True = 1, False = 0. For PrC's this should always be 0.
* ArcSpellLvlMod Arcane spell level modifier.
* DivSpellLvlMod Divine spell level modifier.
EpicLevel At what level does the class start being epic.
Package The line number in Packages.2da. This refers to what the class starts with.
-

- -It is often easier to just copy another class row and then modify the values you need to change. - -

Back to Top -

-

Other Required 2da's

-
-
- -As you may have noticed while looking at the classes.2da section, -there are several 2da files that will have to create for your new PrC. -The required files include cls_pres_****.2da, cls_skill_****.2da, cls_feat_****.2da, and cls_bfeat_****.2da. -

- -The **** in those file names should be something short, about 4-6 characters, for your PRC's name. -For example for the Frenzied Berserker I used FREBZK. -It must be different from any other class, and something you can remember later is always a good thing. -

- -It is usually much easier to just copy another file and rename it. -Then modify its contents to suite your needs. -

- -Each of the files has their own data inside of them and their own uses. -Firstly, the cls_pres_****.2da is used to set your PrC's prerequisites. -The first column is index number, I am not sure if it is even required. -It is recommended to make them sequential numbers starting at 0. -The second column is just a text reminder of that the prerequisite is. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqType Description ReqParam1 ReqParam2
FEAT A feat required for the class. feat # in feats.2da ****
FEATOR This feat OR another feat that uses FEATOR. feat # in feats.2da ****
RACE Only races allowed to take this class. race # in racialtypes.2da ****
BAB Minimum BAB required to take class. any # ****
ARCSPELL (Do not use this with PRC) spell level required ****
SKILL Skill points required for class. skill # from skills.2da skill ranks
VAR Variable name that turns this class on or off. 0 = on or 1 = off ****
-

- -You might be wondering why you should not use "ARCSPELL" with the PRC. -It is because we actually have a script set for the Arcane or Divine Spell casting level detection. -This was done because using the 2da's did not work properly, and because there were also other prerequisites -that could not be done using the 2da. Some good examples of "impossible" class requirements include: -gender, deity, cleric domain(s), etc. This information was easily accessible through scripting, so -we chose to use a custom script as a prerequisite. If your PRC needs to do something that the 2da cannot do, then refer to prc_prereq.nss. -

- -All classes should have at least one VAR requirement. -Typically this is PRC_Allow_****. Of course, the ****'s are whatever you want to represent that class with. -This variable can be used by module builders to turn the whole class off if they want too, -it makes it easier for world builders if they feel the PrC causes imbalance in their world. -

- -Some classes will have a second variable. -This is typically associated with the custom prerequisite script. -If a player's character fails to pass a check for the special requirements. -This variable is turned off, causing the player to not have access to the class. -

-

- -The second file is cls_skill_****.2da. Once again the first column is an index number. -This file really only has two important things: the SkillIndex which points to a line in skills.2da, -and the ClassSkill which is either 1 or 0. Any skill that has a 1 in the class skill column is a -class skill. One thing to note is that any class that doesn't a have a skill listed at all, -cannot take the skill at all. For instance, if you don't have Use Magic Device listed, you will not -be able to put any points in it as a cross-class skill. Most classes should not have -Use Magic Device or Animal Empathy in their class list, unless they do in PnP. -

-

- - -The third file is cls_feat_****.2da. This file contains all the feats your PrC will gain upon level up. -It also contains all the bonus feats that the PrC can select, and all the epic feats available to the class. - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column Description
FeatLabel Short name to describe what feat it is. Can be anything really.
FeatIndex feat # in feat.2da
List Possible Values:
- 0 = Selectable on level up
- 1 = Regular feat or bonus feat (Figher/Wizard bonus feats)
- 2 = Bonus feat only
- 3 = Automatically granted feat
GrantedOnLevel The level PrC gains the feat, or -1 for any time.
OnMenu Is shown on class radial menu? Yes = 1, No = 0
- -

-

- -On to the last file, cls_bfeat_****.2da. -This file just has a listing of levels and a 0 or 1. -If the class gets a bonus feat at that level, then put a 1. -If not, then put a 0. -

- -One thing to be careful of when doing this file is to watch your epic level progression. -For example if your PrC has a max level of 30 and starts being epic at level 10, -then you will need to have a bonus feat every X levels starting at level 10. -This is because all classes gain their feats during epic levels as bonus feats! - -

Back to Top -

-

Feat.2da

-
-
- -There is not much I can really say about feat.2da. -It is mostly quite straight forward. -If you run into any questions the best place to look is the CCG. -I even went ahead and got a direct link for you. - Click here for feat.2da information! -

- -Now to make this section helpful, I would like to note that almost all PrC abilities will actually need to -be done using feats. Typically, if a PrC can cast something X times a day, we create a feat with the -proper uses per day, and point it to the correct spell entry in spells.2da. The same principle applies to creating custom -abilties. I will cover this again in better depth in the Creating Active Feats section. - -

Back to Top -

-

Spells.2da

-
-
- -Spells.2da is much more confusing than the feat.2da. I definitely recommend bookmarking this guide, -or the direct link to spells.2da page on the CCG. Speaking of the direct link, - here it is. -

- -Since most active PrC abilities end up being spells, -you will likely find yourself in this file a lot more than you would like. -That is why I recommend bookmarking the guide. -I know I often forget what all the stuff means. -The easiest way to make a new spell/feat is to simply copy a similiar one as a reference, -and change everything you need to. - -

Back to Top -

-

Creating Active Feats

-
-
- -What is an active feat? An active feat is a feat that the player must willingly activate. -Something like Smite, Acrobatic Attack, Mimic, Wildshape, etc. -Creating these feats is a rather straight forward process. -Most of the following steps can be done in any order you prefer, though it sometimes makes more -sense to do them in a certain order. -

- -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required action(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in spells.2da
  10. -
  11. Create an entry in cls_feat_****.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Compile script, test script, debug script
  16. -
  17. Refer to step 8, until it works
  18. -
- -Aside from debugging, I generally do the 2da work last. -This is because you need to put an icon entry in both feat.2da and spells.2da. -In addition, you need to have all the tlk entries and your script name in the 2da. -You can do it in any order you like, but you will need to make sure the entries -in the 2da's match the actual files. -

- -You can also do each part in sections. -Making the tlk entries, and then the 2da entries, then testing if the feat displays up in game. -If it shows up properly, then you can code the script that'll make it work. -There really is no set way to do it, as long as all of those steps get finished eventually. - - -

Back to Top -

-

Creating Combat Feats

-
-
- -A combat feat is a special kind of active feat. -Combat feats are those that are directly linked to an attack of some sort. -Some good examples are the Arcane Trickster's "Impromtu Sneak Attack", -the Foe Hunter's "Death Attack", and the Ravager's "Cruelest Cut". -All of those special abilities do something special when you hit the enemy. -A feat with limited uses a day (usually) that deals special damage through an attack is a combat feat. -

- -If you did not already know, the actual game engine's combat system is hard coded. -You cannot simply write a script that says. -"Add this players cha bonus as divine damage applied to the enemy if they hit -them on the first strike of this attack round." -

- -You are probably thinking right about now... Hey! The PRC has made those feats, it must be possible! ... -Indeed, remember I said you could not "simply" tell the game to do that... -At least not until the PRC created the "Combat Simulation System". -

- -It all started with inc_combat.nss. -While that script was very helpful it was still missing several nice features. -Along came inc_combat2.nss. This file added even more functionality to the previous combat system. -Things like elemental weapons, spell effect calculations, etc. -It made the system much calculate attack bonus and damage more acurately than it did before. -While inc_combat2.nss was being written and upgraded, Oni5115 started to develope prc_inc_combat.nss. -He used the majority of the code from inc_combat.nss and inc_combat2.nss, piled on a bit of new -functionality, documented the code, and made a system that is far more scripter friendly. -

- -Note: You will need numerous PRC files in order to use the Combat Simulation System. -The script is not standalone, though it is not tied to the older combat includes. -The easiest way to find out what files you will need are to simply open "prc_inc_combat.nss" and -take a quick look at the list of included files. -The list is also helpful for scripters so that they do not include the same files multiple times. -

- -Now, on to the good part! Coding a combat script. -

- -A good example of what you might want to do is the Ravager's "Cruelist Cut". -This ability is only usable up to three times per day. -On a successful melee attack, the player deals 1d4 constitution damage to the enemy. -This damage lasts 5 + Ravager level rounds. -

- -First, you'll have to include the line [#include "prc_inc_combat"] without the brackets. -This tells your script to load the include file. -Then the script will have its void main. -Inside the main function it would calculate everything required to perform its action. - -

-Because this script does not deal any extra physical damage, there are a few less function calls required. -written below is the actual script so you can take a look at how it works. - -
-
#include "prc_inc_combat" -
void main() -
{ -
      //Declare major variables -
      object oPC = OBJECT_SELF; -
      object oTarget = GetSpellTargetObject(); -
      object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); -
      int iDur = 5 + GetLevelByClass(CLASS_TYPE_RAVAGER, oPC); -
      int bIsRangedAttack = GetWeaponRanged(oWeap); -
-
      effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, d4(1) ); -
               eCon = SupernaturalEffect(eCon); -
-
      // script now uses combat system to hit and apply effect if appropriate -
      string sSuccess = "*Cruelist Cut Hit*"; -
      string sMiss = "*Cruelist Cut Miss"; -
-
      if (bIsRangedAttack) -
      { -
           SendMessageToPC(oPC,"You must use a melee weapon with this ability!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      // If they are not within 5 ft, they can't do a melee attack. -
      if(!bIsRangedAttack && GetIsInMeleeRange(oTarget, oPC)) -
      { -
           SendMessageToPC(oPC,"You are not close enough to your target to attack!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      PerformAttackRound(oTarget, oPC, eCon, RoundsToSeconds(iDur), 0, 0, 0, FALSE, sSuccess, sMiss); -
} -

- -If you are used to script all of those functions should have been relatively familiar, -except for "PerformAttackRound". That is the primary function in the include that makes -your life as a scripter far, far easier. I reduced my original Impromtu Sneak Attack code from -200 lines down to about 60 lines. And it is also more accurately done, can deal elemental damage, -and is generally much better all thanks to this function. -

- -I'll do a break down of the parameters of this function so that everyone can see how to use it. -

- -
    -
  1. oTarget - GetSpellTargetObject() - the person being smited!
  2. -
  3. oPC - The person attacking, typically the player.
  4. -
  5. eLink - A special effect or effects to apply to the player.
  6. -
  7. eDuration - the duration of the effects applied to the object.
    -
      -
    1. 0.0 - DURATION_TYPE_INSTANT - effect lasts 0.0 seconds
    2. -
    3. >0.0 - DURATION_TYPE_TEMPORARY - Effect lasts for the duration specified
    4. -
    5. <0.0 - DURATION_TYPE_PERMAMENT - Effect lasts until dispelled, not recommended
    6. -
    -
  8. -
  9. iAttackBonusMod - the attack bonus modifer for attack(s)
  10. -
  11. iDamageModifier - damage added to attack -
      -
    1. If bonuses are only on first attack, this can be an int or a DAMAGE_BONUS_* constant.
    2. -
    3. Otherwise, this must be a DAMAGE_BONUS_* constant.
    4. -
    -
  12. -
  13. iDamageType - the DAMAGE_TYPE_* const of the iDamageModifier.
  14. -
  15. bEffectAllAttacks - True or False.
  16. -
      -
    1. True - Effects all attacks.
    2. -
    3. False - Effects only the first attack that round.
    4. -
    -
  17. sMessageSuccess - message to display on a successful hit. (i.e. "*Cruelist Cut Hit*")
  18. -
  19. sMessageFailure - message to display on a failure to hit. (i.e. "*Cruelist Cut Miss*")
  20. -
- -This function redirects itself to many of the other functions within the combat include. -The nice thing is, all you need to deal with is this single function call. -Once it's setup right, your script will run. -

- -Any improvements to the combat script are typically added to that attack automatically, no recoding the feat. -It takes care of the entire attack round, wether it be a ranged attack or a melee attack, two-handed weapon, -two-weapon fighting, unarmed... Pretty much everything, certainly much more than could be scripted that easily. -

- -If you happen to run into a feat that cannot be done with this, you can always open up the script. -I'll warn you, as of the writing of this guide it is over 3,500 lines of code. -However, the code is well organized and you should not have too much difficulty following it. -Many of those "lines" are actually documentation. - -

-Should there be any bugs in the system, please post a report in our forums. -Also feel free to post any additional things that you would find useful while scripting. -Oni5115 is interested in knowing anything the script cannot handle, so he can add it. -

- -If more example scripts would be helpful feel free to check out the following scripts in the scripts directory (or hak). -
    -
  • prc_at_isa.nss - Impromptu Sneak Attack
  • -
  • prc_dj_selwrath.nss - Selvetarm's Wrath
  • -
  • prc_dj_warstrike.nss - War Strike
  • -
- -

Back to Top -

-

Creating Passive Feats

-
-
- -What is a passive feat? A passive feat is any feat that automatically -adjusts something on the character. -Things like Absolute Ambidexterity, Sight of Gruumsh, etc. -Creating these feats is not as straight forward as an active feat, -but it is fairly easy once you get used to it. -

- -Below is a basic list of what must be done to create a passive feat, -notice it is very similiar to an active feat. - -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required player modifications(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in cls_feat_****.2da
  10. -
  11. Create an entry in spells.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Create an entry in prc_inc_function.nss.
  16. -
  17. Compile script, test script, debug script
  18. -
  19. Refer to step 9, until it works
  20. -
- -The single most important file for passive feats is "prc_inc_function.nss". -Hands down this is it. Without this file none of your passive feats will work. -This file is called on all major events (onlevel, onequip, onunequip, etc.) -your passive feat will be called when this script is. - -

-To create an "entry" in prc_inc_function, you will need to check out the -"EvalPRCFeats" function. -Inside the function you should see a bunch of lines like the following: - -

-     if(GetLevelByClass(CLASS_TYPE_DUELIST, oPC) > 0) ExecuteScript("prc_duelist", oPC); - -

-This function executes your passive feat script. -Passive feats do not require a script entry in the 2da column as active feats do. -Intead, they require a script entry here in this file. -Make sure you use the approprate CLASS_TYPE_* constant as stored in "prc_class_const.nss". - -

-Another important function is the "DeletePRCLocalInts" function. -This function removes any local ints stored on a character. -This is quite useful and ensures that your script will reset a new value when fired. -An example line from this section is - -

-     DeleteLocalInt(oSkin,"CannyDefenseBonus"); - -

-Scripting the passive feat beyond that is not all that unlike scriping anything else in NwN. -Here is an example function for a passive ability. - -
-
// Applies the Duelist's reflex bonuses as CompositeBonuses on the object's skin. -
// iLevel = integer reflex save bonus -
void DuelistGrace(object oPC, object oSkin, int iLevel) -
{ -
      if(GetLocalInt(oSkin, "GraceBonus") == iLevel) return; -
      -
      if(iLevel > 0) -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", iLevel, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != TRUE) -
                FloatingTextStringOnCreature("Grace On", oPC); -
           SetLocalInt(oPC, "Grace", TRUE); -
      } -
      else -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", 0, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != FALSE) -
                FloatingTextStringOnCreature("Grace Off", oPC); -
           SetLocalInt(oPC, "Grace", FALSE); -
      } -
} - -

-You might be wondering what the "SetCompositeBonus" function is. -This is another very important function. -This function is responsible for storing and stacking bonuses on a character. -For more information you can check out "inc_item_props.nss". - -

-It should be fairly easy to make most passive feats with this system. -Sometimes however you might also need to dig a little deeper. -For instance, a class might need a passive feat that effects attacks or damage. -While many such feats are typically active, there are some bonuses that end up being passive. -A good example would be the Foe Hunter's Rancor Attack, which deals an additional Xd6 damage -if the enemy is their Hated Enemy. Scripts like this need to go in "x2_s3_onhitcast.nss". -This is in the spells directory (or hak). -In this script you will see a lot of stuff that the PRC needs for one class or another. -There are plenty of examples of what you might need to do in there. - -

Back to Top -

-

-
-
- -

-
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/reserve_tlk_2da_slots.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/reserve_tlk_2da_slots.html deleted file mode 100644 index cd42b941..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/content/prcmaking/reserve_tlk_2da_slots.html +++ /dev/null @@ -1,119 +0,0 @@ - - -Player Resource Consortium :: Manual :: PrC Making :: Reserve 2da/tlk Slots - - - - - - - - - - -
-

:: PrC Making :: Reserve 2da/tlk Slots ::

-
-
- -
- - - - - - - - - - - - - - - - - - - - - -
File to reserve slots in: - -
Reserve slots: - to - -
Name: - -
Reason: - -
- -
-
- -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_installation.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_installation.html deleted file mode 100644 index 17e67e78..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_installation.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_itemcrafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_itemcrafting.html deleted file mode 100644 index edab55bd..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_itemcrafting.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Item Crafting - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_languages.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_languages.html deleted file mode 100644 index 216e65af..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_languages.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_main.html deleted file mode 100644 index ff920ba4..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_main.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Main - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -

- - - - - - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_modulebuilding.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_modulebuilding.html deleted file mode 100644 index e0d43e48..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_modulebuilding.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_prcmaking.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_prcmaking.html deleted file mode 100644 index 7c598d8f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/french/menus/manual_menus_prcmaking.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: PrC Making - - - - - - - - - - - - -
- - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/installation/manual_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/installation/manual_installation_instructions.html deleted file mode 100644 index ddd35c1f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/installation/manual_installation_instructions.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Installation :: Instructions - - - - -
-

:: Installation :: Instructions ::

-
-
-

Installation Notes

-
-The PRC pack requires both expansions (Shadows of Undrentide and Hordes of the Underdark) be installed. They must be installed using Bioware’s normal installation procedure, they cannot be installed by just copying the files to your hard drive. If you have not installed both expansions then the setup program and the module updater will not run. Before trying to install the PRC pack, you should install both expansions. If the setup program complains that expansions are missing and you have actually installed both expansions using Bioware's setup programs, then most likely your registry entries have become corrupted and you will need to reinstall the expansions. -

-

Automatic Installation (EXE)

-
-To install: -

-
    -
  1. Run setup to install the PRC pack on your PC. It will automatically be installed in the correct location.

  2. -
  3. Run PRC Module Updater, selecting those modules you wish to add the pack to. The installer REQUIRES the .NET Framework 1.1 available either through Windows Update or Here.

  4. -
  5. Enjoy
  6. -
-
-

Manual Installation (RAR)

-
-For those that need/want to do a manual install of the prc pack into a module here are the steps: -

-
    -
  1. If downloading the rar version, place the hak and hif files in the hak folder, place prc_consortium.erf in the erf folder, prc_consortium.tlk in the tlk folder, and the module updater wherever you want (or delete it if you are not running windows).

  2. - -
  3. Import prc_consortium.erf into the module using the toolset or neveredit.

  4. - -
  5. Add the haks to the module using the toolset or neveredit. The haks should be listed in the following order (top to bottom): -
    - -
    prc_include.hak -
    prc_2das.hak -
    prc_scripts.hak -
    prc_spells.hak -
    prc_epicspells.hak -
    prc_race.hak -
    prc_textures.hak -
    prc_misc.hak -
    prc_craft2das.hak -

  6. - -
  7. If the module already contains haks then you will need to check to see if the haks change any of the 2da's in prc_2da's.hak, and if so, merge the changes into a 3rd hak, placing that hak above the prc haks in the hak list. If you skip this step then the module may not play correctly.
  8. - -
  9. Add the following scripts to the module events using the toolset or neveredit: -
    -
    OnAcquireItem : prc_onaquire -
    OnActivateItem : prc_onactivate -
    OnClientEnter : prc_onenter -
    OnClientLeave : prc_onleave -
    OnCutsceneAbort : prc_oncutabort -
    OnHeartbeat : prc_onheartbeat -
    OnModuleLoad : prc_onmodload -
    OnPlayerDeath : prc_ondeath -
    OnPlayerDying : prc_ondying -
    OnPlayerEquipItem : prc_equip -
    OnPlayerLevelUp : prc_levelup -
    OnPlayerRest : prc_rest -
    OnPlayerRespawn : prc_onrespawn -
    OnUnaquireItem : prc_onunaquire -
    OnPlayerUnequipItem : prc_unequip -
    OnUserDefined : prc_onuserdef -

  10. - -
  11. If the module already has scripts attached to events (and it probably does) then you will either need to edit those scripts and add ExecuteScript("prc_xxx"); at the top of each one or make a new script that calls ExecuteScript() for both the prc script and the old event script.

  12. - -
  13. Now you need to add prc_consortium.tlk to the module, in the toolset this is easy, just set the custom tlk to it. If the module already contains a custom tlk then you will have to merge the entries from both tlk files together using your favorite tlk editor into a new tlk and use that instead. If you are running on the Mac or Linux this step is more difficult, neveredit currently does not have any functionality to set the custom tlk for a module. I recommend using ewald's erf/mod/gff/tlk/2da editor, available on the vault. It's java based and will run on the mac (not sure about Linux). To set the custom tlk, open the module, then open the "module.ifo" file and set the "Mod_CustomTlk" property to "prc_consortium" (no .tlk at the end). -At this point if you have done everything correctly you should be all set to play the module.
  14. -
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/itemcrafting/manual_itemcrafting_system.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/itemcrafting/manual_itemcrafting_system.html deleted file mode 100644 index 798d4ca1..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/itemcrafting/manual_itemcrafting_system.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-

Item Creation

-
-Special thanks goes too RabbitHail for making and coding this wonderful system. -

-

Usage

-
-Item crafting gives the caster classes the ability to create magic items from recipe scrolls, books, or any item with the proper TAG. It also allows the user to create recipes from already existing magic items. This allows PWs, and modules to have full control over what magic items the users can have and create. If you want to introduce a near dynamic economy, don’t let magic items “drop” from monster kills. Only allow kills to drop money and spell scrolls. Have merchants only sell recipe scrolls and then your magic users will have to spend gold and exp to create magic items. This creates a money and exp sink, which will help your PW from having an inflationary economy. The fighters will have to pay the mages to make items. The mages will use spells, feats, money and exp to make items. This will push the mages to work with the fighters in order to get the exp 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). -

-Use the read magic cantrip on a magic item. If a magic item is listed in the item_to_ireq.2da file a recipe scroll will be created. Use the proper craft feat on the scroll to start the magic item creation process. Read magic can be used on a recipe scroll to display what item will be created and the required feats need to make that item. Some recipes for very powerful items may require a level 20 mage / level 20 cleric! -

-

Module variables

-
Int nICHoursInDayCycle // sets the number of hours in a day (default is 1) -
Float fICMinDays // sets the minimum number of days an item creation will take (default is .1) -
Float fICMaxDays // sets the maximum number of days an item creation will take (default is .2) -
-
NOTE: To all PWs, the above settings are done so for the single player that has no clue how to set module variables, has no reason to wait around while the item is being crafted, and probably won’t even read this file. To have a truly PnP “experience” with item crafting use these settings: -
-
nICHoursInDayCycle = 24; -
fICMinDays = 1.0; -
fICMaxDays = 1000.0; -

-

Item recipes

-Recipes are contained within the prc_craft2da.hak file. Each recipe is its own 2da file. The 2da files are setup just like prestige class prerequisite files. This is the recipe for making the helm of brilliance: -

-FileName: ireq_helmbril.2da -

- - - - - - - - - - - -
  LABEL ReqType ReqParam1 ReqParam2
0 Helm_of_Brilliance RESULT x0_armhe012 ****
1 CasterLevel13th CASTERLVL 13 ****
2 Craft_Wondrous_Item_Feat FEAT 2925 ****
3 Light SPELL 62 ****
4 Fire Ball SPELL 100 ****
5 Prismatic_Spray SPELL 135 ****
6 Wall_of_Fire SPELL 191 ****
7 Flame_Lash SPELL 60 ****
8 Protection_from_Elements SPELL 137 ****
-
-NOTE: The numbers in the ReqParam1 field are the line numbers that those things exist on in their respective 2da files. The filename is important because that’s what you must set an items TAG to in order to have it be used by the craft feats to make an item. -

- - - - - - - - - - - - - - - - - - - - - - - -
ReqType list: const string
sReqTypeResult = "RESULT"; // min
sReqTypeCasterLevel= "CASTERLVL";// min
sReqTypeExtraXP = "EXTRAXP"; // min
sReqTypeExtraGold = "EXTRAGOLD";// min
Increases XP cost as well
 
sReqTypeFeat = "FEAT"; // and
sReqTypeSpell= "SPELL";// and
sReqTypeItem = "ITEM"; // and
sReqTypeSkill= "SKILL";// and
sReqTypeLevel= "LEVEL";// and
 
sReqTypeRace = "RACE"; // or
sReqTypeAlign= "ALIGN";// or
sReqTypeArea = "AREA"; // or
sReqTypeDeity= "DEITY";// or
 
sReqTypeFeatOR = "FEATOR"; // or
sReqTypeSpellOR= "SPELLOR";// or
sReqTypeItemOR = "ITEMOR"; // or
sReqTypeSkillOR= "SKILLOR";// or
sReqTypeLevelOR= "LEVELOR";// or
-

-The item_to_ireq.2da file “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 magic item exist you can place both anywhere into this file so the users of the craft system can use read magic on a magic it to be able 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. -

- - - -
  LABEL L_RESREF RECIPE_TAG
0 Arvoreens_Amulet_of_Aid x0_it_mneck005 IREQ_AMULARVR
-

-NOTE: This file is NOT required for the system to run, and may not make sense for PWs to have. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_blank.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_blank.html deleted file mode 100644 index 57bf1284..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Blank - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_main.html deleted file mode 100644 index 39cb5047..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/manual_content_main.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Main - - - - - -
-
-
-
-

:: PRC v 2.2c ::

-
-
-Welcome to the Player Resource Consortium manual! -Inside you'll find all the current information about the custom PrC's, feats, races, -spells, epic spells, and modified spells that this release of the PRC includes. - -If you find anything amiss in any of the documentation, please head over to the bug reports -section of the forums and post it in the manual thread. -Otherwise, we hope that these pages can satisfy any questions you may have about -the PRC or any of the content we have produced. - -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_modifyingscripts.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_modifyingscripts.html deleted file mode 100644 index 60f2659b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_modifyingscripts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts - - - - -
-

:: Module Building :: Modifying Scripts ::

-
-
-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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: ) -

-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". -

-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. -

-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! -

-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. -

-Click OK, and presto, your changes are in! You can safely abort the -rebuild process. -

-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. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_overridenfiles.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_overridenfiles.html deleted file mode 100644 index 2b578840..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_overridenfiles.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Overriden Files - - - - -
-

:: Module Building :: Overriden Files ::

-
-
-

prc_2das.hak:


-
    -
  • baseitems
  • -
  • classes
  • -
  • cls_feat_asasin
  • -
  • cls_feat_barb
  • -
  • cls_feat_bard
  • -
  • cls_feat_cler
  • -
  • cls_feat_druid
  • -
  • cls_feat_fight
  • -
  • cls_feat_monk
  • -
  • cls_feat_pal
  • -
  • cls_feat_rang
  • -
  • cls_feat_rog
  • -
  • cls_feat_shadow
  • -
  • cls_feat_sorc
  • -
  • cls_feat_wiz
  • -
  • cls_skill_archer
  • -
  • cls_skill_asasin
  • -
  • cls_skill_barb
  • -
  • cls_skill_bard
  • -
  • cls_skill_blkgrd
  • -
  • cls_skill_cler
  • -
  • cls_skill_divcha
  • -
  • cls_skill_dradis
  • -
  • cls_skill_dru
  • -
  • cls_skill_dwdef
  • -
  • cls_skill_fight
  • -
  • cls_skill_kensei (though bioware doesn't use this)
  • -
  • cls_skill_monk
  • -
  • cls_skill_pal
  • -
  • cls_skill_palema
  • -
  • cls_skill_rang
  • -
  • cls_skill_rog
  • -
  • cls_skill_shadow
  • -
  • cls_skill_shiftr
  • -
  • cls_skill_sorc
  • -
  • cls_skill_wiz
  • -
  • cls_skill_wm
  • -
  • feat
  • -
  • iprp_feats
  • -
  • iprp_monstocst
  • -
  • iprp_neg5cost
  • -
  • iprp_onhitcost
  • -
  • iprp_onhitdur
  • -
  • iprp_spellcost
  • -
  • iprp_spells
  • -
  • iprp_srcost
  • -
  • itemprops
  • -
  • masterfeats
  • -
  • polymorph
  • -
  • skills
  • -
  • spells
  • -
  • vfx_persistent
  • -
  • visualeffects
  • -
-
-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 -

-

prc_scripts.hak:


-
    -
  • nw_i0_spells
  • -
  • x0_i0spells
  • -
  • x2_inc_spellhook
  • -
  • x2_inc_switches
  • -
  • x2_mod_def_equ
  • -
  • x2_mod_def_unequ
  • -
-
-NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_prcenablers.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_prcenablers.html deleted file mode 100644 index ab2d9d81..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/modulebuilding/manual_modulebuilding_prcenablers.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: PrC Enablers - - - - -
-

:: Module Building :: PrC Enablers ::

-
-
-In a future release these variables will be in an onload script for easy access to enabling and disabling. -

-Setting these variables to 1 on a PC will make it so they can't take any levels in that Prestige Class. -

-NOTE: Beware that as of 2.0c, the Champion of Torm and Champion of Bane share the same variable as do the Elemental Savant and Acolyte of the Skin classes. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shadows of Undrentide Variables
X1_AllowAsasin Assassin
X1_AllowArcher Arcane Archer
X1_AllowBlkGrd Black Guard
X1_AllowHarper Harper Scout
X1_AllowShadow Shadow Dancer
   
Hordes of the Underdark Variables
X1_AllowDrDis Dragon Disciple
X1_AllowDwDef Dwarven Defender
X2_AllowDivcha Champion of Torm
X2_AllowPalema Palemaster
X2_AllowShiftr Shifter
X2_AllowWM Weapon Master
   
Player Resource Consortium Pack Variables (v 2.2+)
As of PrC 2.2 all class variables start with PRC_
Player Resource Consortium Pack Variables (v 2.0c - 2.1d)
X2_AllowAcolyte Acolyte of the Skin
PNP_AllowArcTrick Arcane Trickster
PRC_AllowArchmage Archmage
X1_AllowTempus Battleguard Tempus
X1_AllowBRage Battlerager
X1_AllowBonded Bonded Summoner
X2_AllowDivcha Champion of Bane
X2_AllowBaal Disciple of Baalzebul
X2_AllowDiscmep Disciple of Mephistopheles
X2_AllowDuel Duelist
PRC_AllowEldknight Eldrich Knight
X2_AllowAcolyte Elemental Savant
X1_AllowFistRaz Fist of Raziel
X2_AllowFH Foe Hunter
X2_AllowFrebzk Frenzied Beserker
X1_AllowHarperM Harper Mage
X1_AllowHeartW Heartwarder
X2_AllowHiero Heirophant
X1_AllowHosp Hospitaler
X1_AllowIaij Iaijutsu Master
X1_AllowIniDra Initiate of Draconic Mysteries
X2_AllowKnghtCh Knight of the Chalice
X1_AllowLgDr Legendary Dreadnaught
PNP_AllowLich Lich
X2_AllowMageK Mage Killer
mh_AllowMaster Master Harper
X2_AllowShrouds Master of Shrouds
X2_AllowMystic Mystic Theurge
X1_AllowNinja Ninja Spy
X1_AllowOccAd Ocular Adept
PRC_AllowUzi Oozemaster
PNP_AllowPArcher Peerless Archer
X2_AllowRedavng Red Avenger
X2_AllowPNPSfr Shifter (PnP)
X2_AllowSpellS Spellsword
X1_AllowStormL Stormlord
X1_AllowShaLow Telflammar Shadowlord
X2_AllowTempest Tempest
X1_AllowVassal Vassal of Bahamut
codi_allow_warpr Warpriest
-

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_basics.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_basics.html deleted file mode 100644 index 45f81e72..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_basics.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Basics - - - - -
-

:: PrC Making :: Basics ::

-
-
-We have recived several questions on the forums about the 2da's and basic scripting. -I felt I would try and help those new to custom content by providing links to the information. -

-For information on 2da's, harcoded limitations, etc. Check the -Neverwinter Nights Custom Content Guide. -

-For questions concerning scripting check out the -NWN Lexicon. -

-If you can not find what you are looking for there, -feel free to ask questions on the BioWare forums, -or of course our own forums. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_guide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_guide.html deleted file mode 100644 index 64ca6ea2..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/manual_prcmaking_guide.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Guide - - - - - - -
- -

:: PrC Making :: Guide ::

-
-
-
- -
    -
  1. Introduction
  2. -
  3. Prelude
  4. -
  5. Tools of the Trade
  6. -
  7. IRC Information
  8. -
  9. Script Compiler
  10. - - -
  11. Hak Overview
  12. -
  13. File Overview
  14. -
  15. Getting Started
  16. -
  17. PRC Rules and General Guidelines
  18. -
  19. Classes.2da
  20. -
  21. Other Required 2da's
  22. -
  23. Feat.2da
  24. -
  25. Spells.2da
  26. -
  27. Creating Active Feats
  28. -
  29. Creating Combat Feats
  30. -
  31. Creating Passive Feats
  32. -
- - -

Introduction

-
-
-I have decicided to create a tutorial on how to make a -Prestige Class and how to make it compatible with the Player Resource Consortium. -I hope this allows new custom content builders to help make their content compatible with the PRC. -This will make it easier for them to use both their content and ours, and also make it easier on us -if they would allow us to add their content to our pack. -

- -

Prelude

-
-
-That being said, I would like to reiterate the information in the basic section with the following links. -I cannot stress how useful these two links are when developing. -The 2da coverage from the CCG is very useful when making feats and spells. -The Lexicon has some good tutorials for those new to scripting. -In addition, the Lexicon has a listing of all the functions in the engine with information on -how to use them. -This is very useful if you script outside of the toolset as many of us in the PRC do. - -

- -For information on 2da's, harcoded limitations, etc. Check the - Neverwinter Nights Custom Content Guide. -
-For questions concerning scripting check out the - NWN Lexicon. - -

- -

Tools of the Trade

-
-
-The following is a list of utility programs that are quite handy for making PrC's. - -

- - - - - - - - - - - - - - - - - - - - - - - - -
NotePad A basic text editor... .2da and .nss files are both plain text files, making a plain text editor a definite must.
TextPad Another text editor. Can be found here. -This text editor can mass replace text in many files rather quickly. Excellent when making mass replaces. You can also use C++ language highlighting and it is much like using the NwN Toolset when scripting.
NwN Toolset Occasionally the toolset is useful. Especially, if you are making summonable critters or dialogues.
CCCH The CODI Custom Content Helper. Has a .tlk editor as well as some pretty decent 2da editing capabilities. Some use it, some do not. Definitely worth mentioning though. It can be found here.
NWN TLK Editor 1.1 My preferred method of modifying the .tlk file. It can be found here.
NwN Explorer A good tool to look through all the standard files of the game. Great for checking out the games icon when you want to modify them to create new ones. It can be found here.
mIRC We use this to communicate, for more information see section below.
-
Back to Top -

- -

IRC Information

-
-
-The PrC members often use IRC (Internet Relay Chat) to communicate with eachother. -For those new to IRC you need to download a program called mIRC. -(There are likely others, though I do not know them.) - -The following steps will allow you to connect to our main channel. - -
    -
  • Download mIRC here.
  • -
  • Go to "Tools" and select "Options"
  • -
  • Open the "Connect" tree and select "Servers"
  • -
  • Click the "Add" button
  • -
  • Fill in Description and Group as "PRC"
  • -
  • Fill in IRC Server as "irc.neverwinterconnections.com"
  • -
  • Click the "Connect to Server" button
  • -
  • Once connected type in "/join #terran"
  • -
- -If you want to automatically connect to the server when you open mIRC you can go back into Tools > Options > Connect > Options. -There should be a checkbox labled "Connect on Startup". Select that option and you will automatically connect to "irc.neverwinterconnections.com". - -

- -Additionally, if you want to automatically join a channel on startup you can again go into Tools > Options > Connect > Options. -
    -
  • Click the "Perform" button.
  • -
  • Check the "Enable Perform on Connect" checkbox.
  • -
  • In the "Perform Commands:" textbox fill in all commands you want to run.
  • -
  • Type in "/join #terran" to connect to our channel.
  • -
- -Feel free to visit us in the IRC channel sometime. - -

Back to Top -

-

Script Compiler

-
-
- -The PRC team has done some modifications to Torlack's compiler so that we can -compile all of our scripts outside of the compiler. -It was not something we orginally wanted to do, but it seems we hit some kind of hardcoded -limit in the standard compiler and could no longer compile our work. -We decided to release this compiler publicly for developers to use you can get a -link to it in the downloads section of the website. - -

-To make any script changes to the PRC you will need to: - -

-
    -
  • Extract the include files from prc_include.hak into a temporary "include" -folder in the same directory as the compiler.
  • -
  • Run the compiler on your scripts: -
    Usage: -
    nwnnsscomp [-cdegoqx] [-t#] [-v#] [[-i pathspec] ...] infile [outfile] -
    -
    pathspec - semicolon separated list of directories to search for files. -
    infile - name of the input file. -
    outfile - name of the output file. -
    -c - Compile the script (default) -
    -d - Decompile the script (can't be used with -c) -
    -e - Enable non-Bioware extensions -
    -g - Don't produce ndb debug file -
    -i - Add Search Path -
    -o - Optimize the compiled source -
    -q - Silence most messages -
    -x - Extract script from NWN data files -
    -vx.xx - Set the version of the compiler -
    -t1 - Perform a compilation test with BIF scripts -
    -t2 - Perform a compilation test with the given module -
    -t3 - Optimization space saving report with the given module -
    -t4 - Perform a compilation test with the given file or files -
    -
    -i is basically an include folder, -though the system may look for your compile file in there as well if you are elsewhere -
      -
  • -
  • Copy the modified .ncs files into a custom hak and make sure that hak is -on the top of the list in the module properties.
  • -
- -For more compiler information you can check the orginal developer's website: -
http://www.torlack.com/index.html?topics=nwnnsscomp_readme - -

Back to Top -

-

Hak Overview

-
-
- -If you open up your hak folder you should find quite a few hak files. -Here is a brief overview of those haks. -Most of them are rather self explanatory, but we might as well explain them anyways. - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
prc_2dasLocation of almost all 2da files for the PrC.
prc_Craft2das2da files specifically for the crafting system.
prc_epicspellscriptsScripts for the Epic Spell System are in here
prc_miscAll icons, textures, dialogues creature templates, etc go in here.
prc_includeAll include scripts go in here. One of the most important folders.
prc_race2da files and scripts for the race pack.
prc_scriptsCustom scripts for PrC's go in here.
prc_spellsThis directory is for all the official Bioware spell scripts.
-

- -You will likely notice there are a few directories I did not mention above. -Any directory containing "objs" in its name holds compiled data. -This prevents PrC makers from having to compile every single script whenever they use the Make System. -The tempcpl directory is an empty directory that temporarily stores data while compiling. - -

Back to Top -

-

File Overview

-
-
-There are many files in the PRC pack, so I will label those most important to PrC makers, and what they do. -If you are using the .hak files they have the same name as the directories. -For example, /2das is the same as prc_2das.hak. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Folder / File Description
/2das directory
classes.2da The 2da containing all classes. For more information check out the Custom Content Guide.
feat.2da The 2da for feats... again check the CCG for more info.
spells.2da The 2da for spells.
masterfeats.2da This 2da is for feats like Favored Enemy or Weapon Focus, where it is a single feat, but you have to select a certain version of the feat.
skills.2da The 2da for skills
cls_skill_****.2da These files determine the class and cross-class skills for your PrC. They reference the value in skills.2da.
cls_pres_****.2da These files list requirements for a prestige class.
cls_feat_****.2da These files contain the feats and at which level a PrC gains them.
cls_bfeat_****.2da This file contains bonus feat allocation for the PrC. Bonus feats are those such as fighter feats or rogue bonus feats. Also note that most classes gain bonus feats during epic levels.
   
/include directory
prc_class_const.nss All FEAT_* constants go in here.
prc_feat_const.nss All CLASS_TYPE_* constants go here.
prc_racialtypes_const.nss All RACIAL_TYPE_* constants go here.
prc_spell_const.nss All SPELL_* constants go here.
prc_ipfeat_const.nss All constants dealing with item properties go here.
prc_inc_function.nss This file is not necessarily the most intuitively named. While it does contain a few functions used by several classes, its main use is the heart of the passive feat system. Passive feats are applied by calling a class specific script on multiple events, such as onequip, onload, and onlevel. When a line is added into the EvalPRCFeats function, it will execute the script on all the main events. This saves us from having to put the code in multiple places. If your passive feats are not working, be sure that you added the proper line of code here. It is an easy thing to forget, I know I have done it before.

Another important function in this file is DeletePRCLocalInts. This file is used to delete local integers stored to make sure an ability is or is not updated. For instance, if you have an ability that can upgrade on level up, then you would want to delete the local int so that your code will re-add the bonus. Just make sure you use the SetCompositeBonus function described later in the guide.

While those are the two primary functions, you might find some of the other functions useful.
inc_item_props.nss Another very important file. Here you will find the aforementioned SetCompositeBonus function as well as numerous other functions that deal with creature skins and item properties.
prc_inc_util.nss A new file created for utility functions. Those that could be useful for multiple classes or abilities.
prc_inc_clsfunc.nss A file for all class functions that need to be included in multiple files. This prevents us from having many includes for various classes.
prc_alterations.nss This one is important if you ever need to determine a creatures RACIAL_TYPE_* constant. This file houses the MyPRCGetRacialType function.
inc_combat.nss,
inc_combat2.nss,
prc_inc_combat.nss
inc_combat and inc_combat2 are the original coding used to simulate combat for attacks such as the Arcane Trickster's Impromtu Sneak Attack ability. prc_inc_combat took the data in the previous files and added to it. New coders should use prc_inc_combat, though I thought I would mention all of them so coders do not get confused.
prc_inc_sneak.nss This file contains numerous functions used to simulate sneak attacks and to add sneak attacks to prestige classes. In order to make new classes with sneak attack stack, we add a dummy feat to the player. The code that gives them the sneak attack feat(s) is placed in this file.
prc_inc_unarmed.nss Determines the unarmed "creature weapon" damage of many of the monk PrC's. For those making a monk PrC that has fist damage upgrades, this is the file to look into.
prc_inc_spells.nss Contains many useful functions for determining caster level, mostly. The goal is to consolidate all caster level functions into this file. In the future, all new PrC's that add to caster levels should be added to the GetArcanePRCLevels and GetDivinePRCLevels functions. Very little else should be necessary, except when new casting feats are created.
prcsp_engine.nss Functions that determine spell resistance and if a player resists a spell.
prcsp_spell_adjs.nss Functions that return spell penetration bonuses.
   
/scripts directory
prc_prereq.nss This script allows a PrC builder to add in custom scripts to determine if a player can take a PrC. Bioware's 2da system had a few limitations that prevented us from properly doing some class requirements. A good example would be the Tempest. Tempests need Ambidexterity and Two-Weapon Fighting or Ranger Dual wield. In addition, they need Weapon Focus(any melee weapon) or Weapon Finesse. The 2da files FEATOR required did not allow two or conditions, it ended up working if you had any of the feats. We needed to script in the check for Ranger Dual Wield or Ambidexterity and Two-Weapon Fighting.
prc_enforce_feat.nss This script is used to circimvent some issues in the bioware engine and how feats are granted. There are several things that cannot be done with the 2da files such as race or gender specific feats. In adddition this file is also used to limit bonus feats and the levels they can be gained at. This was required for classes such as the Red Wizard as they are only supposed to take the Limited School feats at certain levels.
   
/race2das directory
race_feat_****.2da This 2da holds all the racial feats for the specific race. Note: This also contains feats for spells associated with a race.
racialtypes.2da This file stores the base information about each race. Contains information that links it to the aforementioned race 2das.
   
/racescripts directory
race_hb.nss Any abiltiies that require a heartbeat to check go in here. Things like Light Blindness/Sensitivity.
race_skin.nss All bonuses that are applies to the skin for a race. Damage Resistance, Natural Armor, etc. Most things a race would need are already implemented, just need to give a race the proper feat.
   
/spells directory
x2_s3_onhitcast.nss Script used for On Hit: Unique Powers. It should not be needed for most classes, but I figured it was worth mentioning.
   
/tlk directory
prc_consortium.tlk The only file in this directory. The tlk file holds the in game text for all the PrC's, feats, spells, etc.
- -

Back to Top -

-

Getting Started

-
-
- -If you plan to make your PrC compatible with the PRC pack, -then it is best to get the most current files from the PRC. -To get those files, you will likely need to contact Stratovarius. -The reason this is important is because you will want to make sure you are using open .tlk, and .2da slots. -If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC. -

- -For the most current list of open 2da / tlk slots click here. -[Note: Link requires active internet connection to work] -

- -The first thing I usually do is make a text file. -I store a main text file for each PrC I make. -In this file I keep all the important things I will need. -The class desription, bab, class skill list, abilities, ability descriptions, etc. -Having all of this in a text file is very convenient since you can copy / paste the information into the .tlk file. -It is also very handy having the PnP ability description in an easy to access location while you are scripting its abilities. -

- -The second thing I do is open up a another text file that has a small template for the spell, feats, and classes.2da. -Doing all the 2da work outside of the 2da's is good because you can copy/paste the data at your leisure. -A few of us PRC members learned how nice it can be, especially when two people are both editing the same 2da file... -One persons change can overwrite anothers, it is always a good idea to have a backup. -

- -Throughout PrC making you have to edit quite a few files. -I suggest using Textpad because you can have a small section of the window list all open files. -This is great for switching from one file to another quickly, and leaving them all close at hand if -you need to edit any of them. Most useful while compiling and debugging scripts. - -

Back to Top -

-

PRC Rules and General Guidelines

-
-
-The following are things that should or must be done for all classes. -It is a short list of guidelines for those interested in making files compatible with the PRC. - -
    -
  • All files MUST be in a 16.3 naming format, no exceptions.
  • -
  • No hex numbers for 2da enteries.
  • -
  • No class abilities on rods or items. They must be integrated with the class.
  • -
  • All permenant stat bonuses must conform to our existing system. -Take a look at the prc_heartwarder for an example.
  • - -
  • Use the appropriate constants instead of integers in scripts:
  • -
      -
    • Add CLASS_TYPE_* constants to prc_class_const.nss.
    • -
    • Add FEAT_* constants to prc_feat_const.nss.
    • -
    • Add SPELL_* constants to prc_spell_const.nss.
    • -
    • Add IP_CONST_* constants to prc_ipfeat_const.nss.
    • -
    • Add RACIAL_TYPE_* constants to prc_racial_const.nss.
    • -
    -
  • Name all class scripts prc_className_abilityName. OR
    -Name all class scripts className_ablityName.
  • -
- -On to the main files you will need to edit! - -

Back to Top -

-

Classes.2da

-
-
- -Naturally, if you want to make a PrC, you are going to have to edit classes.2da. -Upon first opening the file you might say, "What in the nine hells is all this junk?!" -

- -The 2da's are setup much like a database, or spreadsheet, except of course they are only text files. -The first column is the ID column, the number of the row. -

- -I would like to note a few things before moving on. One major thing to note is how the tlk data works. -Bioware has has reserved a ton of spaces so that no custom tlk should ever conflict with their own. -When making classes we often use a custom tlk as you will see in the column descriptions below. -When using a custom tlk we take our actual entry number and add, 16777216, to it. -

- -All tlk entries before 16777216 are read from the standard default.tlk. -Note: 16777217 is for BadStrRef and should not be used. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column About the Column
ID Number The value that the CLASS_TYPE_* constant should equal.
Label Arbitrary column for naming the class. Useful for those looking at the 2da
Name The tlk entry # containing the name of the class.
- For example, custom tlk #50000 = 16827216
Plural The tlk entry # containing the plural name of a class.
Lower The tlk entry # containing the class name in lower case.
Description The tlk entry # containing the class description. This includes information such as the level up table and such.
Icon The name of the icon file.
- This is not case sensitive.
- Files must be 24-bit tga files to show up properly in game.
- File name should be less than 16 characters long.
HitDie The die rolled when the class levels up. (Ex: 4, 6, 8, 10, 12)
AttackBonusTable The name of the attack bonus table used by the class. This is usually one of the following:
- CLS_ATTACK_1 - Fighter BAB, max pre-epic +20.
- CLS_ATTACK_2 - Rogue BAB, max pre-epic +15.
- CLS_ATTACK_3 - Wizard BAB, max pre-epic +10.

- - CLS_ATTACK_4 - A file added by the PRC, gives +0 BAB. -
FeatsTable CLS_FEAT_**** file. The feats your class gets, each class has its own file. You have to make one for your class.
SavingThrowTable CLS_SAVTHR_**** file. You can make your own, though most classes use very similar saving throw tables. You will likely be able to use the same one as another class.
SkillsTable CLS_SKILL_**** file. The file that lists class skills for this class. You have to make one for your class.
BonusFeatsTable CLS_BFEAT_**** file. This file lists any "bonus" feats a class can select (like fighter, wizard, or rogue) at certain levels. You have to make one for your class.
SkillPointBase The base skills per level of the class.
* SpellGainTable
* SpellKnownTable
PlayerClass 1, unless you don't want people to play it.
SpellCaster Can class cast spells? 1 = True, 0 = false.
Str, Dex, Con,
Wis, Int Cha
The classes ideal ability scores, used for recomended and auto-level.
PrimaryAbil The classes primary ability score. Again, used for that recommended button.
AlignRestrict Possible Values: -
0x00 - No restrictions -
0x01 - No Neutral -
0x02 - No Lawful -
0x03 - No Lawful, No Neutral -
0x04 - No Chaotic -
0x05 - No Chaotic, No Neutral -
0x06 - No Chaotic, No Lawful -
0x07 - No Chaotic, No Lawful, No Neutral -
0x08 - No Good -
0x09 - No Good, No Neutral -
0x0A - No Good, No Lawful -
0x0B - No Good, No Lawful, No Neutral -
0x0C - No Good, No Chaotic -
0x0D - No Good, No Chaotic, No Neutral -
0x0E - No Good, No Chaotic, No Lawful -
0x0F - No Good, No Chaotic, No Lawful, No Neutral -
0x10 - No Evil -
0x11 - No Evil, No Neutral -
0x12 - No Evil, No Lawful -
0x13 - No Evil, No Lawful, No Neutral -
0x14 - No Evil, No Chaotic -
0x15 - No Evil, No Chaotic, No Neutral -
0x16 - No Evil, No Chaotic, No Lawful -
0x17 - No Evil, No Chaotic, No Lawful, No Neutral -
0x18 - No Evil, No Good -
0x19 - No Evil, No Good, No Neutral -
0x1A - No Evil, No Good, No Lawful -
0x1B - No Evil, No Good, No Lawful, No Neutral -
0x1C - No Evil, No Good, No Chaotic -
0x1D - No Evil, No Good, No Chaotic, No Neutral -
0x1E - No Evil, No Good, No Chaotic, No Lawful -
0x1F - No Evil, No Good, No Chaotic, No Lawful, No Neutral -
AlignRstrctType Possible Values: -
0x0 None -
0x1 = Law/Chaos -
0x2 = Good/Evil -
0x3 = Both -
InvertRestrict Invert the alignment restriction? True = 1, False = 0.
Constant CLASS_TYPE_* This refers to the constant that the class goes by in scripts.
EffCRLvl01 - EffCRLvl20 1 to 20 respectively... never seen it as anything else.
PreReqTable CLS_PRES_**** file. The prerequisite file for the class. You have to make one for your class.
MaxLevel The classes maximum level possible.
XPPenalty Will this class cause an XP penalty? True = 1, False = 0. For PrC's this should always be 0.
* ArcSpellLvlMod Arcane spell level modifier.
* DivSpellLvlMod Divine spell level modifier.
EpicLevel At what level does the class start being epic.
Package The line number in Packages.2da. This refers to what the class starts with.
-

- -It is often easier to just copy another class row and then modify the values you need to change. - -

Back to Top -

-

Other Required 2da's

-
-
- -As you may have noticed while looking at the classes.2da section, -there are several 2da files that will have to create for your new PrC. -The required files include cls_pres_****.2da, cls_skill_****.2da, cls_feat_****.2da, and cls_bfeat_****.2da. -

- -The **** in those file names should be something short, about 4-6 characters, for your PRC's name. -For example for the Frenzied Berserker I used FREBZK. -It must be different from any other class, and something you can remember later is always a good thing. -

- -It is usually much easier to just copy another file and rename it. -Then modify its contents to suite your needs. -

- -Each of the files has their own data inside of them and their own uses. -Firstly, the cls_pres_****.2da is used to set your PrC's prerequisites. -The first column is index number, I am not sure if it is even required. -It is recommended to make them sequential numbers starting at 0. -The second column is just a text reminder of that the prerequisite is. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqType Description ReqParam1 ReqParam2
FEAT A feat required for the class. feat # in feats.2da ****
FEATOR This feat OR another feat that uses FEATOR. feat # in feats.2da ****
RACE Only races allowed to take this class. race # in racialtypes.2da ****
BAB Minimum BAB required to take class. any # ****
ARCSPELL (Do not use this with PRC) spell level required ****
SKILL Skill points required for class. skill # from skills.2da skill ranks
VAR Variable name that turns this class on or off. 0 = on or 1 = off ****
-

- -You might be wondering why you should not use "ARCSPELL" with the PRC. -It is because we actually have a script set for the Arcane or Divine Spell casting level detection. -This was done because using the 2da's did not work properly, and because there were also other prerequisites -that could not be done using the 2da. Some good examples of "impossible" class requirements include: -gender, deity, cleric domain(s), etc. This information was easily accessible through scripting, so -we chose to use a custom script as a prerequisite. If your PRC needs to do something that the 2da cannot do, then refer to prc_prereq.nss. -

- -All classes should have at least one VAR requirement. -Typically this is PRC_Allow_****. Of course, the ****'s are whatever you want to represent that class with. -This variable can be used by module builders to turn the whole class off if they want too, -it makes it easier for world builders if they feel the PrC causes imbalance in their world. -

- -Some classes will have a second variable. -This is typically associated with the custom prerequisite script. -If a player's character fails to pass a check for the special requirements. -This variable is turned off, causing the player to not have access to the class. -

-

- -The second file is cls_skill_****.2da. Once again the first column is an index number. -This file really only has two important things: the SkillIndex which points to a line in skills.2da, -and the ClassSkill which is either 1 or 0. Any skill that has a 1 in the class skill column is a -class skill. One thing to note is that any class that doesn't a have a skill listed at all, -cannot take the skill at all. For instance, if you don't have Use Magic Device listed, you will not -be able to put any points in it as a cross-class skill. Most classes should not have -Use Magic Device or Animal Empathy in their class list, unless they do in PnP. -

-

- - -The third file is cls_feat_****.2da. This file contains all the feats your PrC will gain upon level up. -It also contains all the bonus feats that the PrC can select, and all the epic feats available to the class. - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column Description
FeatLabel Short name to describe what feat it is. Can be anything really.
FeatIndex feat # in feat.2da
List Possible Values:
- 0 = Selectable on level up
- 1 = Regular feat or bonus feat (Figher/Wizard bonus feats)
- 2 = Bonus feat only
- 3 = Automatically granted feat
GrantedOnLevel The level PrC gains the feat, or -1 for any time.
OnMenu Is shown on class radial menu? Yes = 1, No = 0
- -

-

- -On to the last file, cls_bfeat_****.2da. -This file just has a listing of levels and a 0 or 1. -If the class gets a bonus feat at that level, then put a 1. -If not, then put a 0. -

- -One thing to be careful of when doing this file is to watch your epic level progression. -For example if your PrC has a max level of 30 and starts being epic at level 10, -then you will need to have a bonus feat every X levels starting at level 10. -This is because all classes gain their feats during epic levels as bonus feats! - -

Back to Top -

-

Feat.2da

-
-
- -There is not much I can really say about feat.2da. -It is mostly quite straight forward. -If you run into any questions the best place to look is the CCG. -I even went ahead and got a direct link for you. - Click here for feat.2da information! -

- -Now to make this section helpful, I would like to note that almost all PrC abilities will actually need to -be done using feats. Typically, if a PrC can cast something X times a day, we create a feat with the -proper uses per day, and point it to the correct spell entry in spells.2da. The same principle applies to creating custom -abilties. I will cover this again in better depth in the Creating Active Feats section. - -

Back to Top -

-

Spells.2da

-
-
- -Spells.2da is much more confusing than the feat.2da. I definitely recommend bookmarking this guide, -or the direct link to spells.2da page on the CCG. Speaking of the direct link, - here it is. -

- -Since most active PrC abilities end up being spells, -you will likely find yourself in this file a lot more than you would like. -That is why I recommend bookmarking the guide. -I know I often forget what all the stuff means. -The easiest way to make a new spell/feat is to simply copy a similiar one as a reference, -and change everything you need to. - -

Back to Top -

-

Creating Active Feats

-
-
- -What is an active feat? An active feat is a feat that the player must willingly activate. -Something like Smite, Acrobatic Attack, Mimic, Wildshape, etc. -Creating these feats is a rather straight forward process. -Most of the following steps can be done in any order you prefer, though it sometimes makes more -sense to do them in a certain order. -

- -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required action(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in spells.2da
  10. -
  11. Create an entry in cls_feat_****.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Compile script, test script, debug script
  16. -
  17. Refer to step 8, until it works
  18. -
- -Aside from debugging, I generally do the 2da work last. -This is because you need to put an icon entry in both feat.2da and spells.2da. -In addition, you need to have all the tlk entries and your script name in the 2da. -You can do it in any order you like, but you will need to make sure the entries -in the 2da's match the actual files. -

- -You can also do each part in sections. -Making the tlk entries, and then the 2da entries, then testing if the feat displays up in game. -If it shows up properly, then you can code the script that'll make it work. -There really is no set way to do it, as long as all of those steps get finished eventually. - - -

Back to Top -

-

Creating Combat Feats

-
-
- -A combat feat is a special kind of active feat. -Combat feats are those that are directly linked to an attack of some sort. -Some good examples are the Arcane Trickster's "Impromtu Sneak Attack", -the Foe Hunter's "Death Attack", and the Ravager's "Cruelest Cut". -All of those special abilities do something special when you hit the enemy. -A feat with limited uses a day (usually) that deals special damage through an attack is a combat feat. -

- -If you did not already know, the actual game engine's combat system is hard coded. -You cannot simply write a script that says. -"Add this players cha bonus as divine damage applied to the enemy if they hit -them on the first strike of this attack round." -

- -You are probably thinking right about now... Hey! The PRC has made those feats, it must be possible! ... -Indeed, remember I said you could not "simply" tell the game to do that... -At least not until the PRC created the "Combat Simulation System". -

- -It all started with inc_combat.nss. -While that script was very helpful it was still missing several nice features. -Along came inc_combat2.nss. This file added even more functionality to the previous combat system. -Things like elemental weapons, spell effect calculations, etc. -It made the system much calculate attack bonus and damage more acurately than it did before. -While inc_combat2.nss was being written and upgraded, Oni5115 started to develope prc_inc_combat.nss. -He used the majority of the code from inc_combat.nss and inc_combat2.nss, piled on a bit of new -functionality, documented the code, and made a system that is far more scripter friendly. -

- -Note: You will need numerous PRC files in order to use the Combat Simulation System. -The script is not standalone, though it is not tied to the older combat includes. -The easiest way to find out what files you will need are to simply open "prc_inc_combat.nss" and -take a quick look at the list of included files. -The list is also helpful for scripters so that they do not include the same files multiple times. -

- -Now, on to the good part! Coding a combat script. -

- -A good example of what you might want to do is the Ravager's "Cruelist Cut". -This ability is only usable up to three times per day. -On a successful melee attack, the player deals 1d4 constitution damage to the enemy. -This damage lasts 5 + Ravager level rounds. -

- -First, you'll have to include the line [#include "prc_inc_combat"] without the brackets. -This tells your script to load the include file. -Then the script will have its void main. -Inside the main function it would calculate everything required to perform its action. - -

-Because this script does not deal any extra physical damage, there are a few less function calls required. -written below is the actual script so you can take a look at how it works. - -
-
#include "prc_inc_combat" -
void main() -
{ -
      //Declare major variables -
      object oPC = OBJECT_SELF; -
      object oTarget = GetSpellTargetObject(); -
      object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); -
      int iDur = 5 + GetLevelByClass(CLASS_TYPE_RAVAGER, oPC); -
      int bIsRangedAttack = GetWeaponRanged(oWeap); -
-
      effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, d4(1) ); -
               eCon = SupernaturalEffect(eCon); -
-
      // script now uses combat system to hit and apply effect if appropriate -
      string sSuccess = "*Cruelist Cut Hit*"; -
      string sMiss = "*Cruelist Cut Miss"; -
-
      if (bIsRangedAttack) -
      { -
           SendMessageToPC(oPC,"You must use a melee weapon with this ability!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      // If they are not within 5 ft, they can't do a melee attack. -
      if(!bIsRangedAttack && GetIsInMeleeRange(oTarget, oPC)) -
      { -
           SendMessageToPC(oPC,"You are not close enough to your target to attack!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      PerformAttackRound(oTarget, oPC, eCon, RoundsToSeconds(iDur), 0, 0, 0, FALSE, sSuccess, sMiss); -
} -

- -If you are used to script all of those functions should have been relatively familiar, -except for "PerformAttackRound". That is the primary function in the include that makes -your life as a scripter far, far easier. I reduced my original Impromtu Sneak Attack code from -200 lines down to about 60 lines. And it is also more accurately done, can deal elemental damage, -and is generally much better all thanks to this function. -

- -I'll do a break down of the parameters of this function so that everyone can see how to use it. -

- -
    -
  1. oTarget - GetSpellTargetObject() - the person being smited!
  2. -
  3. oPC - The person attacking, typically the player.
  4. -
  5. eLink - A special effect or effects to apply to the player.
  6. -
  7. eDuration - the duration of the effects applied to the object.
    -
      -
    1. 0.0 - DURATION_TYPE_INSTANT - effect lasts 0.0 seconds
    2. -
    3. >0.0 - DURATION_TYPE_TEMPORARY - Effect lasts for the duration specified
    4. -
    5. <0.0 - DURATION_TYPE_PERMAMENT - Effect lasts until dispelled, not recommended
    6. -
    -
  8. -
  9. iAttackBonusMod - the attack bonus modifer for attack(s)
  10. -
  11. iDamageModifier - damage added to attack -
      -
    1. If bonuses are only on first attack, this can be an int or a DAMAGE_BONUS_* constant.
    2. -
    3. Otherwise, this must be a DAMAGE_BONUS_* constant.
    4. -
    -
  12. -
  13. iDamageType - the DAMAGE_TYPE_* const of the iDamageModifier.
  14. -
  15. bEffectAllAttacks - True or False.
  16. -
      -
    1. True - Effects all attacks.
    2. -
    3. False - Effects only the first attack that round.
    4. -
    -
  17. sMessageSuccess - message to display on a successful hit. (i.e. "*Cruelist Cut Hit*")
  18. -
  19. sMessageFailure - message to display on a failure to hit. (i.e. "*Cruelist Cut Miss*")
  20. -
- -This function redirects itself to many of the other functions within the combat include. -The nice thing is, all you need to deal with is this single function call. -Once it's setup right, your script will run. -

- -Any improvements to the combat script are typically added to that attack automatically, no recoding the feat. -It takes care of the entire attack round, wether it be a ranged attack or a melee attack, two-handed weapon, -two-weapon fighting, unarmed... Pretty much everything, certainly much more than could be scripted that easily. -

- -If you happen to run into a feat that cannot be done with this, you can always open up the script. -I'll warn you, as of the writing of this guide it is over 3,500 lines of code. -However, the code is well organized and you should not have too much difficulty following it. -Many of those "lines" are actually documentation. - -

-Should there be any bugs in the system, please post a report in our forums. -Also feel free to post any additional things that you would find useful while scripting. -Oni5115 is interested in knowing anything the script cannot handle, so he can add it. -

- -If more example scripts would be helpful feel free to check out the following scripts in the scripts directory (or hak). -
    -
  • prc_at_isa.nss - Impromptu Sneak Attack
  • -
  • prc_dj_selwrath.nss - Selvetarm's Wrath
  • -
  • prc_dj_warstrike.nss - War Strike
  • -
- -

Back to Top -

-

Creating Passive Feats

-
-
- -What is a passive feat? A passive feat is any feat that automatically -adjusts something on the character. -Things like Absolute Ambidexterity, Sight of Gruumsh, etc. -Creating these feats is not as straight forward as an active feat, -but it is fairly easy once you get used to it. -

- -Below is a basic list of what must be done to create a passive feat, -notice it is very similiar to an active feat. - -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required player modifications(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in cls_feat_****.2da
  10. -
  11. Create an entry in spells.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Create an entry in prc_inc_function.nss.
  16. -
  17. Compile script, test script, debug script
  18. -
  19. Refer to step 9, until it works
  20. -
- -The single most important file for passive feats is "prc_inc_function.nss". -Hands down this is it. Without this file none of your passive feats will work. -This file is called on all major events (onlevel, onequip, onunequip, etc.) -your passive feat will be called when this script is. - -

-To create an "entry" in prc_inc_function, you will need to check out the -"EvalPRCFeats" function. -Inside the function you should see a bunch of lines like the following: - -

-     if(GetLevelByClass(CLASS_TYPE_DUELIST, oPC) > 0) ExecuteScript("prc_duelist", oPC); - -

-This function executes your passive feat script. -Passive feats do not require a script entry in the 2da column as active feats do. -Intead, they require a script entry here in this file. -Make sure you use the approprate CLASS_TYPE_* constant as stored in "prc_class_const.nss". - -

-Another important function is the "DeletePRCLocalInts" function. -This function removes any local ints stored on a character. -This is quite useful and ensures that your script will reset a new value when fired. -An example line from this section is - -

-     DeleteLocalInt(oSkin,"CannyDefenseBonus"); - -

-Scripting the passive feat beyond that is not all that unlike scriping anything else in NwN. -Here is an example function for a passive ability. - -
-
// Applies the Duelist's reflex bonuses as CompositeBonuses on the object's skin. -
// iLevel = integer reflex save bonus -
void DuelistGrace(object oPC, object oSkin, int iLevel) -
{ -
      if(GetLocalInt(oSkin, "GraceBonus") == iLevel) return; -
      -
      if(iLevel > 0) -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", iLevel, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != TRUE) -
                FloatingTextStringOnCreature("Grace On", oPC); -
           SetLocalInt(oPC, "Grace", TRUE); -
      } -
      else -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", 0, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != FALSE) -
                FloatingTextStringOnCreature("Grace Off", oPC); -
           SetLocalInt(oPC, "Grace", FALSE); -
      } -
} - -

-You might be wondering what the "SetCompositeBonus" function is. -This is another very important function. -This function is responsible for storing and stacking bonuses on a character. -For more information you can check out "inc_item_props.nss". - -

-It should be fairly easy to make most passive feats with this system. -Sometimes however you might also need to dig a little deeper. -For instance, a class might need a passive feat that effects attacks or damage. -While many such feats are typically active, there are some bonuses that end up being passive. -A good example would be the Foe Hunter's Rancor Attack, which deals an additional Xd6 damage -if the enemy is their Hated Enemy. Scripts like this need to go in "x2_s3_onhitcast.nss". -This is in the spells directory (or hak). -In this script you will see a lot of stuff that the PRC needs for one class or another. -There are plenty of examples of what you might need to do in there. - -

Back to Top -

-

-
-
- -

-
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/reserve_tlk_2da_slots.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/reserve_tlk_2da_slots.html deleted file mode 100644 index cd42b941..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/content/prcmaking/reserve_tlk_2da_slots.html +++ /dev/null @@ -1,119 +0,0 @@ - - -Player Resource Consortium :: Manual :: PrC Making :: Reserve 2da/tlk Slots - - - - - - - - - - -
-

:: PrC Making :: Reserve 2da/tlk Slots ::

-
-
- -
- - - - - - - - - - - - - - - - - - - - - -
File to reserve slots in: - -
Reserve slots: - to - -
Name: - -
Reason: - -
- -
-
- -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_installation.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_installation.html deleted file mode 100644 index 17e67e78..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_installation.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_itemcrafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_itemcrafting.html deleted file mode 100644 index edab55bd..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_itemcrafting.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Item Crafting - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_languages.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_languages.html deleted file mode 100644 index 216e65af..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_languages.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_main.html deleted file mode 100644 index ff920ba4..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_main.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Main - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -

- - - - - - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_modulebuilding.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_modulebuilding.html deleted file mode 100644 index e0d43e48..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_modulebuilding.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_prcmaking.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_prcmaking.html deleted file mode 100644 index 7c598d8f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/german/menus/manual_menus_prcmaking.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: PrC Making - - - - - - - - - - - - -
- - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/01 NWN Install.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/01 NWN Install.jpg deleted file mode 100644 index 0936722f..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/01 NWN Install.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/02 NWN Install SoU.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/02 NWN Install SoU.jpg deleted file mode 100644 index f0e079c8..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/02 NWN Install SoU.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/03 NWN Install HotU.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/03 NWN Install HotU.jpg deleted file mode 100644 index 7587ee33..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/03 NWN Install HotU.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 159.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 159.jpg deleted file mode 100644 index c5d37eed..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 159.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 165.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 165.jpg deleted file mode 100644 index 5bcd5b12..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/04 Startup 165.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/05 update.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/05 update.jpg deleted file mode 100644 index 21e543fa..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/05 update.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/06 update2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/06 update2.jpg deleted file mode 100644 index 08daca72..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/06 update2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/07 update3.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/07 update3.jpg deleted file mode 100644 index cf5098f9..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/07 update3.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/08 nwvault main.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/08 nwvault main.jpg deleted file mode 100644 index f76f8ab6..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/08 nwvault main.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/09 nwvault search.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/09 nwvault search.jpg deleted file mode 100644 index 17892a09..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/09 nwvault search.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/10 nwvault prcpage.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/10 nwvault prcpage.jpg deleted file mode 100644 index ade542fa..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/10 nwvault prcpage.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/11 nwvault download1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/11 nwvault download1.jpg deleted file mode 100644 index 1d292133..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/11 nwvault download1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/12 nwvault download2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/12 nwvault download2.jpg deleted file mode 100644 index 749b4b42..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/12 nwvault download2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/13 desktop.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/13 desktop.jpg deleted file mode 100644 index aaa9c6c6..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/13 desktop.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/14 ms warning.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/14 ms warning.jpg deleted file mode 100644 index 1adc7530..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/14 ms warning.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/15 prc install 1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/15 prc install 1.jpg deleted file mode 100644 index b0428365..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/15 prc install 1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/16 prc install 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/16 prc install 2.jpg deleted file mode 100644 index 8816ad11..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/16 prc install 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/17 prc updater 1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/17 prc updater 1.jpg deleted file mode 100644 index b6f0a5ff..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/17 prc updater 1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/18 prc updater 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/18 prc updater 2.jpg deleted file mode 100644 index 2e28ec31..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/18 prc updater 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/19 desktop again.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/19 desktop again.jpg deleted file mode 100644 index 803dfe20..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/19 desktop again.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/20 start menu.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/20 start menu.jpg deleted file mode 100644 index 4864d0fd..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/20 start menu.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/21 java web 1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/21 java web 1.jpg deleted file mode 100644 index 403a0e00..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/21 java web 1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/22 java web 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/22 java web 2.jpg deleted file mode 100644 index 530bca51..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/22 java web 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/23 java web 3.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/23 java web 3.jpg deleted file mode 100644 index 38d639f9..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/23 java web 3.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/24 java web 4.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/24 java web 4.jpg deleted file mode 100644 index 4b6835f3..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/24 java web 4.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/25 java install 1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/25 java install 1.jpg deleted file mode 100644 index 2830147e..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/25 java install 1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/26 java install 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/26 java install 2.jpg deleted file mode 100644 index fad68f1e..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/26 java install 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/27 java install 3.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/27 java install 3.jpg deleted file mode 100644 index c92015d0..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/27 java install 3.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/28 nwvault again.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/28 nwvault again.jpg deleted file mode 100644 index a3f77852..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/28 nwvault again.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/29 nwvault search.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/29 nwvault search.jpg deleted file mode 100644 index 6c50a2d5..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/29 nwvault search.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/30 nwvault javacc.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/30 nwvault javacc.jpg deleted file mode 100644 index 885b8938..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/30 nwvault javacc.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/31 desktop javacc .jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/31 desktop javacc .jpg deleted file mode 100644 index 8a914d0a..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/31 desktop javacc .jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/32 winrar.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/32 winrar.jpg deleted file mode 100644 index ed91cacc..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/32 winrar.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/33 winrar download.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/33 winrar download.jpg deleted file mode 100644 index 7e02fe4e..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/33 winrar download.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/34 winrar download 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/34 winrar download 2.jpg deleted file mode 100644 index 01b1817f..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/34 winrar download 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/35 winrar desktop.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/35 winrar desktop.jpg deleted file mode 100644 index 17ad1d72..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/35 winrar desktop.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/36 winrar warning.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/36 winrar warning.jpg deleted file mode 100644 index ca27c315..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/36 winrar warning.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/37 winrar install 1.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/37 winrar install 1.jpg deleted file mode 100644 index bfe13ea1..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/37 winrar install 1.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/38 winrar install 2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/38 winrar install 2.jpg deleted file mode 100644 index 4f5ab556..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/38 winrar install 2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/39 javacc extract.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/39 javacc extract.jpg deleted file mode 100644 index a2ffe779..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/39 javacc extract.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/45 javacc start.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/45 javacc start.jpg deleted file mode 100644 index 684ce513..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/45 javacc start.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/46 javacc settings.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/46 javacc settings.jpg deleted file mode 100644 index bf0b9f98..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/46 javacc settings.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/47 javacc main.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/47 javacc main.jpg deleted file mode 100644 index 90162f9c..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/47 javacc main.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/48 javacc portrait.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/48 javacc portrait.jpg deleted file mode 100644 index 503df73b..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/48 javacc portrait.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/CCParts.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/CCParts.jpg deleted file mode 100644 index 9c92ccc3..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/CCParts.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augconv.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augconv.jpg deleted file mode 100644 index 1f78ea50..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augconv.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augeditprof.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augeditprof.jpg deleted file mode 100644 index 36bd7920..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augeditprof.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions.jpg deleted file mode 100644 index d48e9e58..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions2.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions2.jpg deleted file mode 100644 index 1a9394b9..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augoptions2.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augprofiles.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augprofiles.jpg deleted file mode 100644 index b714b694..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augprofiles.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsaveprof.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsaveprof.jpg deleted file mode 100644 index a16cc8f3..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsaveprof.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsetup.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsetup.jpg deleted file mode 100644 index 094a86d1..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsetup.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsubradial.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsubradial.jpg deleted file mode 100644 index c92864b9..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/augsubradial.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/bonusfeats.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/bonusfeats.jpg deleted file mode 100644 index 3ef2eafb..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/bonusfeats.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/cancelbuild.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/cancelbuild.jpg deleted file mode 100644 index 400f4ef6..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/cancelbuild.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/content_installer.JPG b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/content_installer.JPG deleted file mode 100644 index b9be5f7e..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/content_installer.JPG and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo - Copy.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo - Copy.jpg deleted file mode 100644 index fff8c710..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo - Copy.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo.jpg deleted file mode 100644 index 39b5038a..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/manual_prclogo.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/notenoughpoints.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/notenoughpoints.jpg deleted file mode 100644 index 4307c807..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/notenoughpoints.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerconfirm.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerconfirm.jpg deleted file mode 100644 index 259210c0..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerconfirm.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlevel.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlevel.jpg deleted file mode 100644 index fdf65447..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlevel.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlist.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlist.jpg deleted file mode 100644 index 8dcb028c..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/powerlist.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/restpoints.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/restpoints.jpg deleted file mode 100644 index 51c6cff0..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/restpoints.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/switches.jpg b/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/switches.jpg deleted file mode 100644 index 385fec50..00000000 Binary files a/nwn/nwnprc/DocGen/trunk/Main Manual Files/images/switches.jpg and /dev/null differ diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/index.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/index.html deleted file mode 100644 index 77ceb051..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Player Resource Consortium :: Manual - - - - - - - - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/it_index.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/it_index.html deleted file mode 100644 index fac9296c..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/it_index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Player Resource Consortium :: Manual - - - - - - - - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/installation/manual_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/installation/manual_installation_instructions.html deleted file mode 100644 index ddd35c1f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/installation/manual_installation_instructions.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Installation :: Instructions - - - - -
-

:: Installation :: Instructions ::

-
-
-

Installation Notes

-
-The PRC pack requires both expansions (Shadows of Undrentide and Hordes of the Underdark) be installed. They must be installed using Bioware’s normal installation procedure, they cannot be installed by just copying the files to your hard drive. If you have not installed both expansions then the setup program and the module updater will not run. Before trying to install the PRC pack, you should install both expansions. If the setup program complains that expansions are missing and you have actually installed both expansions using Bioware's setup programs, then most likely your registry entries have become corrupted and you will need to reinstall the expansions. -

-

Automatic Installation (EXE)

-
-To install: -

-
    -
  1. Run setup to install the PRC pack on your PC. It will automatically be installed in the correct location.

  2. -
  3. Run PRC Module Updater, selecting those modules you wish to add the pack to. The installer REQUIRES the .NET Framework 1.1 available either through Windows Update or Here.

  4. -
  5. Enjoy
  6. -
-
-

Manual Installation (RAR)

-
-For those that need/want to do a manual install of the prc pack into a module here are the steps: -

-
    -
  1. If downloading the rar version, place the hak and hif files in the hak folder, place prc_consortium.erf in the erf folder, prc_consortium.tlk in the tlk folder, and the module updater wherever you want (or delete it if you are not running windows).

  2. - -
  3. Import prc_consortium.erf into the module using the toolset or neveredit.

  4. - -
  5. Add the haks to the module using the toolset or neveredit. The haks should be listed in the following order (top to bottom): -
    - -
    prc_include.hak -
    prc_2das.hak -
    prc_scripts.hak -
    prc_spells.hak -
    prc_epicspells.hak -
    prc_race.hak -
    prc_textures.hak -
    prc_misc.hak -
    prc_craft2das.hak -

  6. - -
  7. If the module already contains haks then you will need to check to see if the haks change any of the 2da's in prc_2da's.hak, and if so, merge the changes into a 3rd hak, placing that hak above the prc haks in the hak list. If you skip this step then the module may not play correctly.
  8. - -
  9. Add the following scripts to the module events using the toolset or neveredit: -
    -
    OnAcquireItem : prc_onaquire -
    OnActivateItem : prc_onactivate -
    OnClientEnter : prc_onenter -
    OnClientLeave : prc_onleave -
    OnCutsceneAbort : prc_oncutabort -
    OnHeartbeat : prc_onheartbeat -
    OnModuleLoad : prc_onmodload -
    OnPlayerDeath : prc_ondeath -
    OnPlayerDying : prc_ondying -
    OnPlayerEquipItem : prc_equip -
    OnPlayerLevelUp : prc_levelup -
    OnPlayerRest : prc_rest -
    OnPlayerRespawn : prc_onrespawn -
    OnUnaquireItem : prc_onunaquire -
    OnPlayerUnequipItem : prc_unequip -
    OnUserDefined : prc_onuserdef -

  10. - -
  11. If the module already has scripts attached to events (and it probably does) then you will either need to edit those scripts and add ExecuteScript("prc_xxx"); at the top of each one or make a new script that calls ExecuteScript() for both the prc script and the old event script.

  12. - -
  13. Now you need to add prc_consortium.tlk to the module, in the toolset this is easy, just set the custom tlk to it. If the module already contains a custom tlk then you will have to merge the entries from both tlk files together using your favorite tlk editor into a new tlk and use that instead. If you are running on the Mac or Linux this step is more difficult, neveredit currently does not have any functionality to set the custom tlk for a module. I recommend using ewald's erf/mod/gff/tlk/2da editor, available on the vault. It's java based and will run on the mac (not sure about Linux). To set the custom tlk, open the module, then open the "module.ifo" file and set the "Mod_CustomTlk" property to "prc_consortium" (no .tlk at the end). -At this point if you have done everything correctly you should be all set to play the module.
  14. -
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/itemcrafting/manual_itemcrafting_system.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/itemcrafting/manual_itemcrafting_system.html deleted file mode 100644 index 798d4ca1..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/itemcrafting/manual_itemcrafting_system.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-

Item Creation

-
-Special thanks goes too RabbitHail for making and coding this wonderful system. -

-

Usage

-
-Item crafting gives the caster classes the ability to create magic items from recipe scrolls, books, or any item with the proper TAG. It also allows the user to create recipes from already existing magic items. This allows PWs, and modules to have full control over what magic items the users can have and create. If you want to introduce a near dynamic economy, don’t let magic items “drop” from monster kills. Only allow kills to drop money and spell scrolls. Have merchants only sell recipe scrolls and then your magic users will have to spend gold and exp to create magic items. This creates a money and exp sink, which will help your PW from having an inflationary economy. The fighters will have to pay the mages to make items. The mages will use spells, feats, money and exp to make items. This will push the mages to work with the fighters in order to get the exp 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). -

-Use the read magic cantrip on a magic item. If a magic item is listed in the item_to_ireq.2da file a recipe scroll will be created. Use the proper craft feat on the scroll to start the magic item creation process. Read magic can be used on a recipe scroll to display what item will be created and the required feats need to make that item. Some recipes for very powerful items may require a level 20 mage / level 20 cleric! -

-

Module variables

-
Int nICHoursInDayCycle // sets the number of hours in a day (default is 1) -
Float fICMinDays // sets the minimum number of days an item creation will take (default is .1) -
Float fICMaxDays // sets the maximum number of days an item creation will take (default is .2) -
-
NOTE: To all PWs, the above settings are done so for the single player that has no clue how to set module variables, has no reason to wait around while the item is being crafted, and probably won’t even read this file. To have a truly PnP “experience” with item crafting use these settings: -
-
nICHoursInDayCycle = 24; -
fICMinDays = 1.0; -
fICMaxDays = 1000.0; -

-

Item recipes

-Recipes are contained within the prc_craft2da.hak file. Each recipe is its own 2da file. The 2da files are setup just like prestige class prerequisite files. This is the recipe for making the helm of brilliance: -

-FileName: ireq_helmbril.2da -

- - - - - - - - - - - -
  LABEL ReqType ReqParam1 ReqParam2
0 Helm_of_Brilliance RESULT x0_armhe012 ****
1 CasterLevel13th CASTERLVL 13 ****
2 Craft_Wondrous_Item_Feat FEAT 2925 ****
3 Light SPELL 62 ****
4 Fire Ball SPELL 100 ****
5 Prismatic_Spray SPELL 135 ****
6 Wall_of_Fire SPELL 191 ****
7 Flame_Lash SPELL 60 ****
8 Protection_from_Elements SPELL 137 ****
-
-NOTE: The numbers in the ReqParam1 field are the line numbers that those things exist on in their respective 2da files. The filename is important because that’s what you must set an items TAG to in order to have it be used by the craft feats to make an item. -

- - - - - - - - - - - - - - - - - - - - - - - -
ReqType list: const string
sReqTypeResult = "RESULT"; // min
sReqTypeCasterLevel= "CASTERLVL";// min
sReqTypeExtraXP = "EXTRAXP"; // min
sReqTypeExtraGold = "EXTRAGOLD";// min
Increases XP cost as well
 
sReqTypeFeat = "FEAT"; // and
sReqTypeSpell= "SPELL";// and
sReqTypeItem = "ITEM"; // and
sReqTypeSkill= "SKILL";// and
sReqTypeLevel= "LEVEL";// and
 
sReqTypeRace = "RACE"; // or
sReqTypeAlign= "ALIGN";// or
sReqTypeArea = "AREA"; // or
sReqTypeDeity= "DEITY";// or
 
sReqTypeFeatOR = "FEATOR"; // or
sReqTypeSpellOR= "SPELLOR";// or
sReqTypeItemOR = "ITEMOR"; // or
sReqTypeSkillOR= "SKILLOR";// or
sReqTypeLevelOR= "LEVELOR";// or
-

-The item_to_ireq.2da file “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 magic item exist you can place both anywhere into this file so the users of the craft system can use read magic on a magic it to be able 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. -

- - - -
  LABEL L_RESREF RECIPE_TAG
0 Arvoreens_Amulet_of_Aid x0_it_mneck005 IREQ_AMULARVR
-

-NOTE: This file is NOT required for the system to run, and may not make sense for PWs to have. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_blank.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_blank.html deleted file mode 100644 index 57bf1284..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Blank - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_main.html deleted file mode 100644 index 39cb5047..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/manual_content_main.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Main - - - - - -
-
-
-
-

:: PRC v 2.2c ::

-
-
-Welcome to the Player Resource Consortium manual! -Inside you'll find all the current information about the custom PrC's, feats, races, -spells, epic spells, and modified spells that this release of the PRC includes. - -If you find anything amiss in any of the documentation, please head over to the bug reports -section of the forums and post it in the manual thread. -Otherwise, we hope that these pages can satisfy any questions you may have about -the PRC or any of the content we have produced. - -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_modifyingscripts.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_modifyingscripts.html deleted file mode 100644 index 60f2659b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_modifyingscripts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts - - - - -
-

:: Module Building :: Modifying Scripts ::

-
-
-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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: ) -

-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". -

-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. -

-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! -

-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. -

-Click OK, and presto, your changes are in! You can safely abort the -rebuild process. -

-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. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_overridenfiles.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_overridenfiles.html deleted file mode 100644 index 2b578840..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_overridenfiles.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Overriden Files - - - - -
-

:: Module Building :: Overriden Files ::

-
-
-

prc_2das.hak:


-
    -
  • baseitems
  • -
  • classes
  • -
  • cls_feat_asasin
  • -
  • cls_feat_barb
  • -
  • cls_feat_bard
  • -
  • cls_feat_cler
  • -
  • cls_feat_druid
  • -
  • cls_feat_fight
  • -
  • cls_feat_monk
  • -
  • cls_feat_pal
  • -
  • cls_feat_rang
  • -
  • cls_feat_rog
  • -
  • cls_feat_shadow
  • -
  • cls_feat_sorc
  • -
  • cls_feat_wiz
  • -
  • cls_skill_archer
  • -
  • cls_skill_asasin
  • -
  • cls_skill_barb
  • -
  • cls_skill_bard
  • -
  • cls_skill_blkgrd
  • -
  • cls_skill_cler
  • -
  • cls_skill_divcha
  • -
  • cls_skill_dradis
  • -
  • cls_skill_dru
  • -
  • cls_skill_dwdef
  • -
  • cls_skill_fight
  • -
  • cls_skill_kensei (though bioware doesn't use this)
  • -
  • cls_skill_monk
  • -
  • cls_skill_pal
  • -
  • cls_skill_palema
  • -
  • cls_skill_rang
  • -
  • cls_skill_rog
  • -
  • cls_skill_shadow
  • -
  • cls_skill_shiftr
  • -
  • cls_skill_sorc
  • -
  • cls_skill_wiz
  • -
  • cls_skill_wm
  • -
  • feat
  • -
  • iprp_feats
  • -
  • iprp_monstocst
  • -
  • iprp_neg5cost
  • -
  • iprp_onhitcost
  • -
  • iprp_onhitdur
  • -
  • iprp_spellcost
  • -
  • iprp_spells
  • -
  • iprp_srcost
  • -
  • itemprops
  • -
  • masterfeats
  • -
  • polymorph
  • -
  • skills
  • -
  • spells
  • -
  • vfx_persistent
  • -
  • visualeffects
  • -
-
-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 -

-

prc_scripts.hak:


-
    -
  • nw_i0_spells
  • -
  • x0_i0spells
  • -
  • x2_inc_spellhook
  • -
  • x2_inc_switches
  • -
  • x2_mod_def_equ
  • -
  • x2_mod_def_unequ
  • -
-
-NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_prcenablers.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_prcenablers.html deleted file mode 100644 index ab2d9d81..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/modulebuilding/manual_modulebuilding_prcenablers.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: PrC Enablers - - - - -
-

:: Module Building :: PrC Enablers ::

-
-
-In a future release these variables will be in an onload script for easy access to enabling and disabling. -

-Setting these variables to 1 on a PC will make it so they can't take any levels in that Prestige Class. -

-NOTE: Beware that as of 2.0c, the Champion of Torm and Champion of Bane share the same variable as do the Elemental Savant and Acolyte of the Skin classes. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shadows of Undrentide Variables
X1_AllowAsasin Assassin
X1_AllowArcher Arcane Archer
X1_AllowBlkGrd Black Guard
X1_AllowHarper Harper Scout
X1_AllowShadow Shadow Dancer
   
Hordes of the Underdark Variables
X1_AllowDrDis Dragon Disciple
X1_AllowDwDef Dwarven Defender
X2_AllowDivcha Champion of Torm
X2_AllowPalema Palemaster
X2_AllowShiftr Shifter
X2_AllowWM Weapon Master
   
Player Resource Consortium Pack Variables (v 2.2+)
As of PrC 2.2 all class variables start with PRC_
Player Resource Consortium Pack Variables (v 2.0c - 2.1d)
X2_AllowAcolyte Acolyte of the Skin
PNP_AllowArcTrick Arcane Trickster
PRC_AllowArchmage Archmage
X1_AllowTempus Battleguard Tempus
X1_AllowBRage Battlerager
X1_AllowBonded Bonded Summoner
X2_AllowDivcha Champion of Bane
X2_AllowBaal Disciple of Baalzebul
X2_AllowDiscmep Disciple of Mephistopheles
X2_AllowDuel Duelist
PRC_AllowEldknight Eldrich Knight
X2_AllowAcolyte Elemental Savant
X1_AllowFistRaz Fist of Raziel
X2_AllowFH Foe Hunter
X2_AllowFrebzk Frenzied Beserker
X1_AllowHarperM Harper Mage
X1_AllowHeartW Heartwarder
X2_AllowHiero Heirophant
X1_AllowHosp Hospitaler
X1_AllowIaij Iaijutsu Master
X1_AllowIniDra Initiate of Draconic Mysteries
X2_AllowKnghtCh Knight of the Chalice
X1_AllowLgDr Legendary Dreadnaught
PNP_AllowLich Lich
X2_AllowMageK Mage Killer
mh_AllowMaster Master Harper
X2_AllowShrouds Master of Shrouds
X2_AllowMystic Mystic Theurge
X1_AllowNinja Ninja Spy
X1_AllowOccAd Ocular Adept
PRC_AllowUzi Oozemaster
PNP_AllowPArcher Peerless Archer
X2_AllowRedavng Red Avenger
X2_AllowPNPSfr Shifter (PnP)
X2_AllowSpellS Spellsword
X1_AllowStormL Stormlord
X1_AllowShaLow Telflammar Shadowlord
X2_AllowTempest Tempest
X1_AllowVassal Vassal of Bahamut
codi_allow_warpr Warpriest
-

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_basics.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_basics.html deleted file mode 100644 index 45f81e72..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_basics.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Basics - - - - -
-

:: PrC Making :: Basics ::

-
-
-We have recived several questions on the forums about the 2da's and basic scripting. -I felt I would try and help those new to custom content by providing links to the information. -

-For information on 2da's, harcoded limitations, etc. Check the -Neverwinter Nights Custom Content Guide. -

-For questions concerning scripting check out the -NWN Lexicon. -

-If you can not find what you are looking for there, -feel free to ask questions on the BioWare forums, -or of course our own forums. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_guide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_guide.html deleted file mode 100644 index 64ca6ea2..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/manual_prcmaking_guide.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Guide - - - - - - -
- -

:: PrC Making :: Guide ::

-
-
-
- -
    -
  1. Introduction
  2. -
  3. Prelude
  4. -
  5. Tools of the Trade
  6. -
  7. IRC Information
  8. -
  9. Script Compiler
  10. - - -
  11. Hak Overview
  12. -
  13. File Overview
  14. -
  15. Getting Started
  16. -
  17. PRC Rules and General Guidelines
  18. -
  19. Classes.2da
  20. -
  21. Other Required 2da's
  22. -
  23. Feat.2da
  24. -
  25. Spells.2da
  26. -
  27. Creating Active Feats
  28. -
  29. Creating Combat Feats
  30. -
  31. Creating Passive Feats
  32. -
- - -

Introduction

-
-
-I have decicided to create a tutorial on how to make a -Prestige Class and how to make it compatible with the Player Resource Consortium. -I hope this allows new custom content builders to help make their content compatible with the PRC. -This will make it easier for them to use both their content and ours, and also make it easier on us -if they would allow us to add their content to our pack. -

- -

Prelude

-
-
-That being said, I would like to reiterate the information in the basic section with the following links. -I cannot stress how useful these two links are when developing. -The 2da coverage from the CCG is very useful when making feats and spells. -The Lexicon has some good tutorials for those new to scripting. -In addition, the Lexicon has a listing of all the functions in the engine with information on -how to use them. -This is very useful if you script outside of the toolset as many of us in the PRC do. - -

- -For information on 2da's, harcoded limitations, etc. Check the - Neverwinter Nights Custom Content Guide. -
-For questions concerning scripting check out the - NWN Lexicon. - -

- -

Tools of the Trade

-
-
-The following is a list of utility programs that are quite handy for making PrC's. - -

- - - - - - - - - - - - - - - - - - - - - - - - -
NotePad A basic text editor... .2da and .nss files are both plain text files, making a plain text editor a definite must.
TextPad Another text editor. Can be found here. -This text editor can mass replace text in many files rather quickly. Excellent when making mass replaces. You can also use C++ language highlighting and it is much like using the NwN Toolset when scripting.
NwN Toolset Occasionally the toolset is useful. Especially, if you are making summonable critters or dialogues.
CCCH The CODI Custom Content Helper. Has a .tlk editor as well as some pretty decent 2da editing capabilities. Some use it, some do not. Definitely worth mentioning though. It can be found here.
NWN TLK Editor 1.1 My preferred method of modifying the .tlk file. It can be found here.
NwN Explorer A good tool to look through all the standard files of the game. Great for checking out the games icon when you want to modify them to create new ones. It can be found here.
mIRC We use this to communicate, for more information see section below.
-
Back to Top -

- -

IRC Information

-
-
-The PrC members often use IRC (Internet Relay Chat) to communicate with eachother. -For those new to IRC you need to download a program called mIRC. -(There are likely others, though I do not know them.) - -The following steps will allow you to connect to our main channel. - -
    -
  • Download mIRC here.
  • -
  • Go to "Tools" and select "Options"
  • -
  • Open the "Connect" tree and select "Servers"
  • -
  • Click the "Add" button
  • -
  • Fill in Description and Group as "PRC"
  • -
  • Fill in IRC Server as "irc.neverwinterconnections.com"
  • -
  • Click the "Connect to Server" button
  • -
  • Once connected type in "/join #terran"
  • -
- -If you want to automatically connect to the server when you open mIRC you can go back into Tools > Options > Connect > Options. -There should be a checkbox labled "Connect on Startup". Select that option and you will automatically connect to "irc.neverwinterconnections.com". - -

- -Additionally, if you want to automatically join a channel on startup you can again go into Tools > Options > Connect > Options. -
    -
  • Click the "Perform" button.
  • -
  • Check the "Enable Perform on Connect" checkbox.
  • -
  • In the "Perform Commands:" textbox fill in all commands you want to run.
  • -
  • Type in "/join #terran" to connect to our channel.
  • -
- -Feel free to visit us in the IRC channel sometime. - -

Back to Top -

-

Script Compiler

-
-
- -The PRC team has done some modifications to Torlack's compiler so that we can -compile all of our scripts outside of the compiler. -It was not something we orginally wanted to do, but it seems we hit some kind of hardcoded -limit in the standard compiler and could no longer compile our work. -We decided to release this compiler publicly for developers to use you can get a -link to it in the downloads section of the website. - -

-To make any script changes to the PRC you will need to: - -

-
    -
  • Extract the include files from prc_include.hak into a temporary "include" -folder in the same directory as the compiler.
  • -
  • Run the compiler on your scripts: -
    Usage: -
    nwnnsscomp [-cdegoqx] [-t#] [-v#] [[-i pathspec] ...] infile [outfile] -
    -
    pathspec - semicolon separated list of directories to search for files. -
    infile - name of the input file. -
    outfile - name of the output file. -
    -c - Compile the script (default) -
    -d - Decompile the script (can't be used with -c) -
    -e - Enable non-Bioware extensions -
    -g - Don't produce ndb debug file -
    -i - Add Search Path -
    -o - Optimize the compiled source -
    -q - Silence most messages -
    -x - Extract script from NWN data files -
    -vx.xx - Set the version of the compiler -
    -t1 - Perform a compilation test with BIF scripts -
    -t2 - Perform a compilation test with the given module -
    -t3 - Optimization space saving report with the given module -
    -t4 - Perform a compilation test with the given file or files -
    -
    -i is basically an include folder, -though the system may look for your compile file in there as well if you are elsewhere -
      -
  • -
  • Copy the modified .ncs files into a custom hak and make sure that hak is -on the top of the list in the module properties.
  • -
- -For more compiler information you can check the orginal developer's website: -
http://www.torlack.com/index.html?topics=nwnnsscomp_readme - -

Back to Top -

-

Hak Overview

-
-
- -If you open up your hak folder you should find quite a few hak files. -Here is a brief overview of those haks. -Most of them are rather self explanatory, but we might as well explain them anyways. - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
prc_2dasLocation of almost all 2da files for the PrC.
prc_Craft2das2da files specifically for the crafting system.
prc_epicspellscriptsScripts for the Epic Spell System are in here
prc_miscAll icons, textures, dialogues creature templates, etc go in here.
prc_includeAll include scripts go in here. One of the most important folders.
prc_race2da files and scripts for the race pack.
prc_scriptsCustom scripts for PrC's go in here.
prc_spellsThis directory is for all the official Bioware spell scripts.
-

- -You will likely notice there are a few directories I did not mention above. -Any directory containing "objs" in its name holds compiled data. -This prevents PrC makers from having to compile every single script whenever they use the Make System. -The tempcpl directory is an empty directory that temporarily stores data while compiling. - -

Back to Top -

-

File Overview

-
-
-There are many files in the PRC pack, so I will label those most important to PrC makers, and what they do. -If you are using the .hak files they have the same name as the directories. -For example, /2das is the same as prc_2das.hak. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Folder / File Description
/2das directory
classes.2da The 2da containing all classes. For more information check out the Custom Content Guide.
feat.2da The 2da for feats... again check the CCG for more info.
spells.2da The 2da for spells.
masterfeats.2da This 2da is for feats like Favored Enemy or Weapon Focus, where it is a single feat, but you have to select a certain version of the feat.
skills.2da The 2da for skills
cls_skill_****.2da These files determine the class and cross-class skills for your PrC. They reference the value in skills.2da.
cls_pres_****.2da These files list requirements for a prestige class.
cls_feat_****.2da These files contain the feats and at which level a PrC gains them.
cls_bfeat_****.2da This file contains bonus feat allocation for the PrC. Bonus feats are those such as fighter feats or rogue bonus feats. Also note that most classes gain bonus feats during epic levels.
   
/include directory
prc_class_const.nss All FEAT_* constants go in here.
prc_feat_const.nss All CLASS_TYPE_* constants go here.
prc_racialtypes_const.nss All RACIAL_TYPE_* constants go here.
prc_spell_const.nss All SPELL_* constants go here.
prc_ipfeat_const.nss All constants dealing with item properties go here.
prc_inc_function.nss This file is not necessarily the most intuitively named. While it does contain a few functions used by several classes, its main use is the heart of the passive feat system. Passive feats are applied by calling a class specific script on multiple events, such as onequip, onload, and onlevel. When a line is added into the EvalPRCFeats function, it will execute the script on all the main events. This saves us from having to put the code in multiple places. If your passive feats are not working, be sure that you added the proper line of code here. It is an easy thing to forget, I know I have done it before.

Another important function in this file is DeletePRCLocalInts. This file is used to delete local integers stored to make sure an ability is or is not updated. For instance, if you have an ability that can upgrade on level up, then you would want to delete the local int so that your code will re-add the bonus. Just make sure you use the SetCompositeBonus function described later in the guide.

While those are the two primary functions, you might find some of the other functions useful.
inc_item_props.nss Another very important file. Here you will find the aforementioned SetCompositeBonus function as well as numerous other functions that deal with creature skins and item properties.
prc_inc_util.nss A new file created for utility functions. Those that could be useful for multiple classes or abilities.
prc_inc_clsfunc.nss A file for all class functions that need to be included in multiple files. This prevents us from having many includes for various classes.
prc_alterations.nss This one is important if you ever need to determine a creatures RACIAL_TYPE_* constant. This file houses the MyPRCGetRacialType function.
inc_combat.nss,
inc_combat2.nss,
prc_inc_combat.nss
inc_combat and inc_combat2 are the original coding used to simulate combat for attacks such as the Arcane Trickster's Impromtu Sneak Attack ability. prc_inc_combat took the data in the previous files and added to it. New coders should use prc_inc_combat, though I thought I would mention all of them so coders do not get confused.
prc_inc_sneak.nss This file contains numerous functions used to simulate sneak attacks and to add sneak attacks to prestige classes. In order to make new classes with sneak attack stack, we add a dummy feat to the player. The code that gives them the sneak attack feat(s) is placed in this file.
prc_inc_unarmed.nss Determines the unarmed "creature weapon" damage of many of the monk PrC's. For those making a monk PrC that has fist damage upgrades, this is the file to look into.
prc_inc_spells.nss Contains many useful functions for determining caster level, mostly. The goal is to consolidate all caster level functions into this file. In the future, all new PrC's that add to caster levels should be added to the GetArcanePRCLevels and GetDivinePRCLevels functions. Very little else should be necessary, except when new casting feats are created.
prcsp_engine.nss Functions that determine spell resistance and if a player resists a spell.
prcsp_spell_adjs.nss Functions that return spell penetration bonuses.
   
/scripts directory
prc_prereq.nss This script allows a PrC builder to add in custom scripts to determine if a player can take a PrC. Bioware's 2da system had a few limitations that prevented us from properly doing some class requirements. A good example would be the Tempest. Tempests need Ambidexterity and Two-Weapon Fighting or Ranger Dual wield. In addition, they need Weapon Focus(any melee weapon) or Weapon Finesse. The 2da files FEATOR required did not allow two or conditions, it ended up working if you had any of the feats. We needed to script in the check for Ranger Dual Wield or Ambidexterity and Two-Weapon Fighting.
prc_enforce_feat.nss This script is used to circimvent some issues in the bioware engine and how feats are granted. There are several things that cannot be done with the 2da files such as race or gender specific feats. In adddition this file is also used to limit bonus feats and the levels they can be gained at. This was required for classes such as the Red Wizard as they are only supposed to take the Limited School feats at certain levels.
   
/race2das directory
race_feat_****.2da This 2da holds all the racial feats for the specific race. Note: This also contains feats for spells associated with a race.
racialtypes.2da This file stores the base information about each race. Contains information that links it to the aforementioned race 2das.
   
/racescripts directory
race_hb.nss Any abiltiies that require a heartbeat to check go in here. Things like Light Blindness/Sensitivity.
race_skin.nss All bonuses that are applies to the skin for a race. Damage Resistance, Natural Armor, etc. Most things a race would need are already implemented, just need to give a race the proper feat.
   
/spells directory
x2_s3_onhitcast.nss Script used for On Hit: Unique Powers. It should not be needed for most classes, but I figured it was worth mentioning.
   
/tlk directory
prc_consortium.tlk The only file in this directory. The tlk file holds the in game text for all the PrC's, feats, spells, etc.
- -

Back to Top -

-

Getting Started

-
-
- -If you plan to make your PrC compatible with the PRC pack, -then it is best to get the most current files from the PRC. -To get those files, you will likely need to contact Stratovarius. -The reason this is important is because you will want to make sure you are using open .tlk, and .2da slots. -If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC. -

- -For the most current list of open 2da / tlk slots click here. -[Note: Link requires active internet connection to work] -

- -The first thing I usually do is make a text file. -I store a main text file for each PrC I make. -In this file I keep all the important things I will need. -The class desription, bab, class skill list, abilities, ability descriptions, etc. -Having all of this in a text file is very convenient since you can copy / paste the information into the .tlk file. -It is also very handy having the PnP ability description in an easy to access location while you are scripting its abilities. -

- -The second thing I do is open up a another text file that has a small template for the spell, feats, and classes.2da. -Doing all the 2da work outside of the 2da's is good because you can copy/paste the data at your leisure. -A few of us PRC members learned how nice it can be, especially when two people are both editing the same 2da file... -One persons change can overwrite anothers, it is always a good idea to have a backup. -

- -Throughout PrC making you have to edit quite a few files. -I suggest using Textpad because you can have a small section of the window list all open files. -This is great for switching from one file to another quickly, and leaving them all close at hand if -you need to edit any of them. Most useful while compiling and debugging scripts. - -

Back to Top -

-

PRC Rules and General Guidelines

-
-
-The following are things that should or must be done for all classes. -It is a short list of guidelines for those interested in making files compatible with the PRC. - -
    -
  • All files MUST be in a 16.3 naming format, no exceptions.
  • -
  • No hex numbers for 2da enteries.
  • -
  • No class abilities on rods or items. They must be integrated with the class.
  • -
  • All permenant stat bonuses must conform to our existing system. -Take a look at the prc_heartwarder for an example.
  • - -
  • Use the appropriate constants instead of integers in scripts:
  • -
      -
    • Add CLASS_TYPE_* constants to prc_class_const.nss.
    • -
    • Add FEAT_* constants to prc_feat_const.nss.
    • -
    • Add SPELL_* constants to prc_spell_const.nss.
    • -
    • Add IP_CONST_* constants to prc_ipfeat_const.nss.
    • -
    • Add RACIAL_TYPE_* constants to prc_racial_const.nss.
    • -
    -
  • Name all class scripts prc_className_abilityName. OR
    -Name all class scripts className_ablityName.
  • -
- -On to the main files you will need to edit! - -

Back to Top -

-

Classes.2da

-
-
- -Naturally, if you want to make a PrC, you are going to have to edit classes.2da. -Upon first opening the file you might say, "What in the nine hells is all this junk?!" -

- -The 2da's are setup much like a database, or spreadsheet, except of course they are only text files. -The first column is the ID column, the number of the row. -

- -I would like to note a few things before moving on. One major thing to note is how the tlk data works. -Bioware has has reserved a ton of spaces so that no custom tlk should ever conflict with their own. -When making classes we often use a custom tlk as you will see in the column descriptions below. -When using a custom tlk we take our actual entry number and add, 16777216, to it. -

- -All tlk entries before 16777216 are read from the standard default.tlk. -Note: 16777217 is for BadStrRef and should not be used. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column About the Column
ID Number The value that the CLASS_TYPE_* constant should equal.
Label Arbitrary column for naming the class. Useful for those looking at the 2da
Name The tlk entry # containing the name of the class.
- For example, custom tlk #50000 = 16827216
Plural The tlk entry # containing the plural name of a class.
Lower The tlk entry # containing the class name in lower case.
Description The tlk entry # containing the class description. This includes information such as the level up table and such.
Icon The name of the icon file.
- This is not case sensitive.
- Files must be 24-bit tga files to show up properly in game.
- File name should be less than 16 characters long.
HitDie The die rolled when the class levels up. (Ex: 4, 6, 8, 10, 12)
AttackBonusTable The name of the attack bonus table used by the class. This is usually one of the following:
- CLS_ATTACK_1 - Fighter BAB, max pre-epic +20.
- CLS_ATTACK_2 - Rogue BAB, max pre-epic +15.
- CLS_ATTACK_3 - Wizard BAB, max pre-epic +10.

- - CLS_ATTACK_4 - A file added by the PRC, gives +0 BAB. -
FeatsTable CLS_FEAT_**** file. The feats your class gets, each class has its own file. You have to make one for your class.
SavingThrowTable CLS_SAVTHR_**** file. You can make your own, though most classes use very similar saving throw tables. You will likely be able to use the same one as another class.
SkillsTable CLS_SKILL_**** file. The file that lists class skills for this class. You have to make one for your class.
BonusFeatsTable CLS_BFEAT_**** file. This file lists any "bonus" feats a class can select (like fighter, wizard, or rogue) at certain levels. You have to make one for your class.
SkillPointBase The base skills per level of the class.
* SpellGainTable
* SpellKnownTable
PlayerClass 1, unless you don't want people to play it.
SpellCaster Can class cast spells? 1 = True, 0 = false.
Str, Dex, Con,
Wis, Int Cha
The classes ideal ability scores, used for recomended and auto-level.
PrimaryAbil The classes primary ability score. Again, used for that recommended button.
AlignRestrict Possible Values: -
0x00 - No restrictions -
0x01 - No Neutral -
0x02 - No Lawful -
0x03 - No Lawful, No Neutral -
0x04 - No Chaotic -
0x05 - No Chaotic, No Neutral -
0x06 - No Chaotic, No Lawful -
0x07 - No Chaotic, No Lawful, No Neutral -
0x08 - No Good -
0x09 - No Good, No Neutral -
0x0A - No Good, No Lawful -
0x0B - No Good, No Lawful, No Neutral -
0x0C - No Good, No Chaotic -
0x0D - No Good, No Chaotic, No Neutral -
0x0E - No Good, No Chaotic, No Lawful -
0x0F - No Good, No Chaotic, No Lawful, No Neutral -
0x10 - No Evil -
0x11 - No Evil, No Neutral -
0x12 - No Evil, No Lawful -
0x13 - No Evil, No Lawful, No Neutral -
0x14 - No Evil, No Chaotic -
0x15 - No Evil, No Chaotic, No Neutral -
0x16 - No Evil, No Chaotic, No Lawful -
0x17 - No Evil, No Chaotic, No Lawful, No Neutral -
0x18 - No Evil, No Good -
0x19 - No Evil, No Good, No Neutral -
0x1A - No Evil, No Good, No Lawful -
0x1B - No Evil, No Good, No Lawful, No Neutral -
0x1C - No Evil, No Good, No Chaotic -
0x1D - No Evil, No Good, No Chaotic, No Neutral -
0x1E - No Evil, No Good, No Chaotic, No Lawful -
0x1F - No Evil, No Good, No Chaotic, No Lawful, No Neutral -
AlignRstrctType Possible Values: -
0x0 None -
0x1 = Law/Chaos -
0x2 = Good/Evil -
0x3 = Both -
InvertRestrict Invert the alignment restriction? True = 1, False = 0.
Constant CLASS_TYPE_* This refers to the constant that the class goes by in scripts.
EffCRLvl01 - EffCRLvl20 1 to 20 respectively... never seen it as anything else.
PreReqTable CLS_PRES_**** file. The prerequisite file for the class. You have to make one for your class.
MaxLevel The classes maximum level possible.
XPPenalty Will this class cause an XP penalty? True = 1, False = 0. For PrC's this should always be 0.
* ArcSpellLvlMod Arcane spell level modifier.
* DivSpellLvlMod Divine spell level modifier.
EpicLevel At what level does the class start being epic.
Package The line number in Packages.2da. This refers to what the class starts with.
-

- -It is often easier to just copy another class row and then modify the values you need to change. - -

Back to Top -

-

Other Required 2da's

-
-
- -As you may have noticed while looking at the classes.2da section, -there are several 2da files that will have to create for your new PrC. -The required files include cls_pres_****.2da, cls_skill_****.2da, cls_feat_****.2da, and cls_bfeat_****.2da. -

- -The **** in those file names should be something short, about 4-6 characters, for your PRC's name. -For example for the Frenzied Berserker I used FREBZK. -It must be different from any other class, and something you can remember later is always a good thing. -

- -It is usually much easier to just copy another file and rename it. -Then modify its contents to suite your needs. -

- -Each of the files has their own data inside of them and their own uses. -Firstly, the cls_pres_****.2da is used to set your PrC's prerequisites. -The first column is index number, I am not sure if it is even required. -It is recommended to make them sequential numbers starting at 0. -The second column is just a text reminder of that the prerequisite is. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqType Description ReqParam1 ReqParam2
FEAT A feat required for the class. feat # in feats.2da ****
FEATOR This feat OR another feat that uses FEATOR. feat # in feats.2da ****
RACE Only races allowed to take this class. race # in racialtypes.2da ****
BAB Minimum BAB required to take class. any # ****
ARCSPELL (Do not use this with PRC) spell level required ****
SKILL Skill points required for class. skill # from skills.2da skill ranks
VAR Variable name that turns this class on or off. 0 = on or 1 = off ****
-

- -You might be wondering why you should not use "ARCSPELL" with the PRC. -It is because we actually have a script set for the Arcane or Divine Spell casting level detection. -This was done because using the 2da's did not work properly, and because there were also other prerequisites -that could not be done using the 2da. Some good examples of "impossible" class requirements include: -gender, deity, cleric domain(s), etc. This information was easily accessible through scripting, so -we chose to use a custom script as a prerequisite. If your PRC needs to do something that the 2da cannot do, then refer to prc_prereq.nss. -

- -All classes should have at least one VAR requirement. -Typically this is PRC_Allow_****. Of course, the ****'s are whatever you want to represent that class with. -This variable can be used by module builders to turn the whole class off if they want too, -it makes it easier for world builders if they feel the PrC causes imbalance in their world. -

- -Some classes will have a second variable. -This is typically associated with the custom prerequisite script. -If a player's character fails to pass a check for the special requirements. -This variable is turned off, causing the player to not have access to the class. -

-

- -The second file is cls_skill_****.2da. Once again the first column is an index number. -This file really only has two important things: the SkillIndex which points to a line in skills.2da, -and the ClassSkill which is either 1 or 0. Any skill that has a 1 in the class skill column is a -class skill. One thing to note is that any class that doesn't a have a skill listed at all, -cannot take the skill at all. For instance, if you don't have Use Magic Device listed, you will not -be able to put any points in it as a cross-class skill. Most classes should not have -Use Magic Device or Animal Empathy in their class list, unless they do in PnP. -

-

- - -The third file is cls_feat_****.2da. This file contains all the feats your PrC will gain upon level up. -It also contains all the bonus feats that the PrC can select, and all the epic feats available to the class. - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column Description
FeatLabel Short name to describe what feat it is. Can be anything really.
FeatIndex feat # in feat.2da
List Possible Values:
- 0 = Selectable on level up
- 1 = Regular feat or bonus feat (Figher/Wizard bonus feats)
- 2 = Bonus feat only
- 3 = Automatically granted feat
GrantedOnLevel The level PrC gains the feat, or -1 for any time.
OnMenu Is shown on class radial menu? Yes = 1, No = 0
- -

-

- -On to the last file, cls_bfeat_****.2da. -This file just has a listing of levels and a 0 or 1. -If the class gets a bonus feat at that level, then put a 1. -If not, then put a 0. -

- -One thing to be careful of when doing this file is to watch your epic level progression. -For example if your PrC has a max level of 30 and starts being epic at level 10, -then you will need to have a bonus feat every X levels starting at level 10. -This is because all classes gain their feats during epic levels as bonus feats! - -

Back to Top -

-

Feat.2da

-
-
- -There is not much I can really say about feat.2da. -It is mostly quite straight forward. -If you run into any questions the best place to look is the CCG. -I even went ahead and got a direct link for you. - Click here for feat.2da information! -

- -Now to make this section helpful, I would like to note that almost all PrC abilities will actually need to -be done using feats. Typically, if a PrC can cast something X times a day, we create a feat with the -proper uses per day, and point it to the correct spell entry in spells.2da. The same principle applies to creating custom -abilties. I will cover this again in better depth in the Creating Active Feats section. - -

Back to Top -

-

Spells.2da

-
-
- -Spells.2da is much more confusing than the feat.2da. I definitely recommend bookmarking this guide, -or the direct link to spells.2da page on the CCG. Speaking of the direct link, - here it is. -

- -Since most active PrC abilities end up being spells, -you will likely find yourself in this file a lot more than you would like. -That is why I recommend bookmarking the guide. -I know I often forget what all the stuff means. -The easiest way to make a new spell/feat is to simply copy a similiar one as a reference, -and change everything you need to. - -

Back to Top -

-

Creating Active Feats

-
-
- -What is an active feat? An active feat is a feat that the player must willingly activate. -Something like Smite, Acrobatic Attack, Mimic, Wildshape, etc. -Creating these feats is a rather straight forward process. -Most of the following steps can be done in any order you prefer, though it sometimes makes more -sense to do them in a certain order. -

- -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required action(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in spells.2da
  10. -
  11. Create an entry in cls_feat_****.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Compile script, test script, debug script
  16. -
  17. Refer to step 8, until it works
  18. -
- -Aside from debugging, I generally do the 2da work last. -This is because you need to put an icon entry in both feat.2da and spells.2da. -In addition, you need to have all the tlk entries and your script name in the 2da. -You can do it in any order you like, but you will need to make sure the entries -in the 2da's match the actual files. -

- -You can also do each part in sections. -Making the tlk entries, and then the 2da entries, then testing if the feat displays up in game. -If it shows up properly, then you can code the script that'll make it work. -There really is no set way to do it, as long as all of those steps get finished eventually. - - -

Back to Top -

-

Creating Combat Feats

-
-
- -A combat feat is a special kind of active feat. -Combat feats are those that are directly linked to an attack of some sort. -Some good examples are the Arcane Trickster's "Impromtu Sneak Attack", -the Foe Hunter's "Death Attack", and the Ravager's "Cruelest Cut". -All of those special abilities do something special when you hit the enemy. -A feat with limited uses a day (usually) that deals special damage through an attack is a combat feat. -

- -If you did not already know, the actual game engine's combat system is hard coded. -You cannot simply write a script that says. -"Add this players cha bonus as divine damage applied to the enemy if they hit -them on the first strike of this attack round." -

- -You are probably thinking right about now... Hey! The PRC has made those feats, it must be possible! ... -Indeed, remember I said you could not "simply" tell the game to do that... -At least not until the PRC created the "Combat Simulation System". -

- -It all started with inc_combat.nss. -While that script was very helpful it was still missing several nice features. -Along came inc_combat2.nss. This file added even more functionality to the previous combat system. -Things like elemental weapons, spell effect calculations, etc. -It made the system much calculate attack bonus and damage more acurately than it did before. -While inc_combat2.nss was being written and upgraded, Oni5115 started to develope prc_inc_combat.nss. -He used the majority of the code from inc_combat.nss and inc_combat2.nss, piled on a bit of new -functionality, documented the code, and made a system that is far more scripter friendly. -

- -Note: You will need numerous PRC files in order to use the Combat Simulation System. -The script is not standalone, though it is not tied to the older combat includes. -The easiest way to find out what files you will need are to simply open "prc_inc_combat.nss" and -take a quick look at the list of included files. -The list is also helpful for scripters so that they do not include the same files multiple times. -

- -Now, on to the good part! Coding a combat script. -

- -A good example of what you might want to do is the Ravager's "Cruelist Cut". -This ability is only usable up to three times per day. -On a successful melee attack, the player deals 1d4 constitution damage to the enemy. -This damage lasts 5 + Ravager level rounds. -

- -First, you'll have to include the line [#include "prc_inc_combat"] without the brackets. -This tells your script to load the include file. -Then the script will have its void main. -Inside the main function it would calculate everything required to perform its action. - -

-Because this script does not deal any extra physical damage, there are a few less function calls required. -written below is the actual script so you can take a look at how it works. - -
-
#include "prc_inc_combat" -
void main() -
{ -
      //Declare major variables -
      object oPC = OBJECT_SELF; -
      object oTarget = GetSpellTargetObject(); -
      object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); -
      int iDur = 5 + GetLevelByClass(CLASS_TYPE_RAVAGER, oPC); -
      int bIsRangedAttack = GetWeaponRanged(oWeap); -
-
      effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, d4(1) ); -
               eCon = SupernaturalEffect(eCon); -
-
      // script now uses combat system to hit and apply effect if appropriate -
      string sSuccess = "*Cruelist Cut Hit*"; -
      string sMiss = "*Cruelist Cut Miss"; -
-
      if (bIsRangedAttack) -
      { -
           SendMessageToPC(oPC,"You must use a melee weapon with this ability!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      // If they are not within 5 ft, they can't do a melee attack. -
      if(!bIsRangedAttack && GetIsInMeleeRange(oTarget, oPC)) -
      { -
           SendMessageToPC(oPC,"You are not close enough to your target to attack!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      PerformAttackRound(oTarget, oPC, eCon, RoundsToSeconds(iDur), 0, 0, 0, FALSE, sSuccess, sMiss); -
} -

- -If you are used to script all of those functions should have been relatively familiar, -except for "PerformAttackRound". That is the primary function in the include that makes -your life as a scripter far, far easier. I reduced my original Impromtu Sneak Attack code from -200 lines down to about 60 lines. And it is also more accurately done, can deal elemental damage, -and is generally much better all thanks to this function. -

- -I'll do a break down of the parameters of this function so that everyone can see how to use it. -

- -
    -
  1. oTarget - GetSpellTargetObject() - the person being smited!
  2. -
  3. oPC - The person attacking, typically the player.
  4. -
  5. eLink - A special effect or effects to apply to the player.
  6. -
  7. eDuration - the duration of the effects applied to the object.
    -
      -
    1. 0.0 - DURATION_TYPE_INSTANT - effect lasts 0.0 seconds
    2. -
    3. >0.0 - DURATION_TYPE_TEMPORARY - Effect lasts for the duration specified
    4. -
    5. <0.0 - DURATION_TYPE_PERMAMENT - Effect lasts until dispelled, not recommended
    6. -
    -
  8. -
  9. iAttackBonusMod - the attack bonus modifer for attack(s)
  10. -
  11. iDamageModifier - damage added to attack -
      -
    1. If bonuses are only on first attack, this can be an int or a DAMAGE_BONUS_* constant.
    2. -
    3. Otherwise, this must be a DAMAGE_BONUS_* constant.
    4. -
    -
  12. -
  13. iDamageType - the DAMAGE_TYPE_* const of the iDamageModifier.
  14. -
  15. bEffectAllAttacks - True or False.
  16. -
      -
    1. True - Effects all attacks.
    2. -
    3. False - Effects only the first attack that round.
    4. -
    -
  17. sMessageSuccess - message to display on a successful hit. (i.e. "*Cruelist Cut Hit*")
  18. -
  19. sMessageFailure - message to display on a failure to hit. (i.e. "*Cruelist Cut Miss*")
  20. -
- -This function redirects itself to many of the other functions within the combat include. -The nice thing is, all you need to deal with is this single function call. -Once it's setup right, your script will run. -

- -Any improvements to the combat script are typically added to that attack automatically, no recoding the feat. -It takes care of the entire attack round, wether it be a ranged attack or a melee attack, two-handed weapon, -two-weapon fighting, unarmed... Pretty much everything, certainly much more than could be scripted that easily. -

- -If you happen to run into a feat that cannot be done with this, you can always open up the script. -I'll warn you, as of the writing of this guide it is over 3,500 lines of code. -However, the code is well organized and you should not have too much difficulty following it. -Many of those "lines" are actually documentation. - -

-Should there be any bugs in the system, please post a report in our forums. -Also feel free to post any additional things that you would find useful while scripting. -Oni5115 is interested in knowing anything the script cannot handle, so he can add it. -

- -If more example scripts would be helpful feel free to check out the following scripts in the scripts directory (or hak). -
    -
  • prc_at_isa.nss - Impromptu Sneak Attack
  • -
  • prc_dj_selwrath.nss - Selvetarm's Wrath
  • -
  • prc_dj_warstrike.nss - War Strike
  • -
- -

Back to Top -

-

Creating Passive Feats

-
-
- -What is a passive feat? A passive feat is any feat that automatically -adjusts something on the character. -Things like Absolute Ambidexterity, Sight of Gruumsh, etc. -Creating these feats is not as straight forward as an active feat, -but it is fairly easy once you get used to it. -

- -Below is a basic list of what must be done to create a passive feat, -notice it is very similiar to an active feat. - -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required player modifications(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in cls_feat_****.2da
  10. -
  11. Create an entry in spells.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Create an entry in prc_inc_function.nss.
  16. -
  17. Compile script, test script, debug script
  18. -
  19. Refer to step 9, until it works
  20. -
- -The single most important file for passive feats is "prc_inc_function.nss". -Hands down this is it. Without this file none of your passive feats will work. -This file is called on all major events (onlevel, onequip, onunequip, etc.) -your passive feat will be called when this script is. - -

-To create an "entry" in prc_inc_function, you will need to check out the -"EvalPRCFeats" function. -Inside the function you should see a bunch of lines like the following: - -

-     if(GetLevelByClass(CLASS_TYPE_DUELIST, oPC) > 0) ExecuteScript("prc_duelist", oPC); - -

-This function executes your passive feat script. -Passive feats do not require a script entry in the 2da column as active feats do. -Intead, they require a script entry here in this file. -Make sure you use the approprate CLASS_TYPE_* constant as stored in "prc_class_const.nss". - -

-Another important function is the "DeletePRCLocalInts" function. -This function removes any local ints stored on a character. -This is quite useful and ensures that your script will reset a new value when fired. -An example line from this section is - -

-     DeleteLocalInt(oSkin,"CannyDefenseBonus"); - -

-Scripting the passive feat beyond that is not all that unlike scriping anything else in NwN. -Here is an example function for a passive ability. - -
-
// Applies the Duelist's reflex bonuses as CompositeBonuses on the object's skin. -
// iLevel = integer reflex save bonus -
void DuelistGrace(object oPC, object oSkin, int iLevel) -
{ -
      if(GetLocalInt(oSkin, "GraceBonus") == iLevel) return; -
      -
      if(iLevel > 0) -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", iLevel, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != TRUE) -
                FloatingTextStringOnCreature("Grace On", oPC); -
           SetLocalInt(oPC, "Grace", TRUE); -
      } -
      else -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", 0, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != FALSE) -
                FloatingTextStringOnCreature("Grace Off", oPC); -
           SetLocalInt(oPC, "Grace", FALSE); -
      } -
} - -

-You might be wondering what the "SetCompositeBonus" function is. -This is another very important function. -This function is responsible for storing and stacking bonuses on a character. -For more information you can check out "inc_item_props.nss". - -

-It should be fairly easy to make most passive feats with this system. -Sometimes however you might also need to dig a little deeper. -For instance, a class might need a passive feat that effects attacks or damage. -While many such feats are typically active, there are some bonuses that end up being passive. -A good example would be the Foe Hunter's Rancor Attack, which deals an additional Xd6 damage -if the enemy is their Hated Enemy. Scripts like this need to go in "x2_s3_onhitcast.nss". -This is in the spells directory (or hak). -In this script you will see a lot of stuff that the PRC needs for one class or another. -There are plenty of examples of what you might need to do in there. - -

Back to Top -

-

-
-
- -

-
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/reserve_tlk_2da_slots.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/reserve_tlk_2da_slots.html deleted file mode 100644 index cd42b941..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/content/prcmaking/reserve_tlk_2da_slots.html +++ /dev/null @@ -1,119 +0,0 @@ - - -Player Resource Consortium :: Manual :: PrC Making :: Reserve 2da/tlk Slots - - - - - - - - - - -
-

:: PrC Making :: Reserve 2da/tlk Slots ::

-
-
- -
- - - - - - - - - - - - - - - - - - - - - -
File to reserve slots in: - -
Reserve slots: - to - -
Name: - -
Reason: - -
- -
-
- -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_installation.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_installation.html deleted file mode 100644 index 17e67e78..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_installation.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_itemcrafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_itemcrafting.html deleted file mode 100644 index edab55bd..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_itemcrafting.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Item Crafting - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_languages.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_languages.html deleted file mode 100644 index 216e65af..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_languages.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_main.html deleted file mode 100644 index ff920ba4..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_main.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Main - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -

- - - - - - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_modulebuilding.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_modulebuilding.html deleted file mode 100644 index e0d43e48..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_modulebuilding.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_prcmaking.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_prcmaking.html deleted file mode 100644 index 7c598d8f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/italian/menus/manual_menus_prcmaking.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: PrC Making - - - - - - - - - - - - -
- - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_menus.js b/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_menus.js deleted file mode 100644 index 1a61cf72..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_menus.js +++ /dev/null @@ -1,54 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_vars.js b/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_vars.js deleted file mode 100644 index 0cb4d23c..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/scripts/manual_vars.js +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/sp_index.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/sp_index.html deleted file mode 100644 index 5beee1f5..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/sp_index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Player Resource Consortium :: Manual - - - - - - - - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/installation/manual_installation_instructions.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/installation/manual_installation_instructions.html deleted file mode 100644 index ddd35c1f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/installation/manual_installation_instructions.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Installation :: Instructions - - - - -
-

:: Installation :: Instructions ::

-
-
-

Installation Notes

-
-The PRC pack requires both expansions (Shadows of Undrentide and Hordes of the Underdark) be installed. They must be installed using Bioware’s normal installation procedure, they cannot be installed by just copying the files to your hard drive. If you have not installed both expansions then the setup program and the module updater will not run. Before trying to install the PRC pack, you should install both expansions. If the setup program complains that expansions are missing and you have actually installed both expansions using Bioware's setup programs, then most likely your registry entries have become corrupted and you will need to reinstall the expansions. -

-

Automatic Installation (EXE)

-
-To install: -

-
    -
  1. Run setup to install the PRC pack on your PC. It will automatically be installed in the correct location.

  2. -
  3. Run PRC Module Updater, selecting those modules you wish to add the pack to. The installer REQUIRES the .NET Framework 1.1 available either through Windows Update or Here.

  4. -
  5. Enjoy
  6. -
-
-

Manual Installation (RAR)

-
-For those that need/want to do a manual install of the prc pack into a module here are the steps: -

-
    -
  1. If downloading the rar version, place the hak and hif files in the hak folder, place prc_consortium.erf in the erf folder, prc_consortium.tlk in the tlk folder, and the module updater wherever you want (or delete it if you are not running windows).

  2. - -
  3. Import prc_consortium.erf into the module using the toolset or neveredit.

  4. - -
  5. Add the haks to the module using the toolset or neveredit. The haks should be listed in the following order (top to bottom): -
    - -
    prc_include.hak -
    prc_2das.hak -
    prc_scripts.hak -
    prc_spells.hak -
    prc_epicspells.hak -
    prc_race.hak -
    prc_textures.hak -
    prc_misc.hak -
    prc_craft2das.hak -

  6. - -
  7. If the module already contains haks then you will need to check to see if the haks change any of the 2da's in prc_2da's.hak, and if so, merge the changes into a 3rd hak, placing that hak above the prc haks in the hak list. If you skip this step then the module may not play correctly.
  8. - -
  9. Add the following scripts to the module events using the toolset or neveredit: -
    -
    OnAcquireItem : prc_onaquire -
    OnActivateItem : prc_onactivate -
    OnClientEnter : prc_onenter -
    OnClientLeave : prc_onleave -
    OnCutsceneAbort : prc_oncutabort -
    OnHeartbeat : prc_onheartbeat -
    OnModuleLoad : prc_onmodload -
    OnPlayerDeath : prc_ondeath -
    OnPlayerDying : prc_ondying -
    OnPlayerEquipItem : prc_equip -
    OnPlayerLevelUp : prc_levelup -
    OnPlayerRest : prc_rest -
    OnPlayerRespawn : prc_onrespawn -
    OnUnaquireItem : prc_onunaquire -
    OnPlayerUnequipItem : prc_unequip -
    OnUserDefined : prc_onuserdef -

  10. - -
  11. If the module already has scripts attached to events (and it probably does) then you will either need to edit those scripts and add ExecuteScript("prc_xxx"); at the top of each one or make a new script that calls ExecuteScript() for both the prc script and the old event script.

  12. - -
  13. Now you need to add prc_consortium.tlk to the module, in the toolset this is easy, just set the custom tlk to it. If the module already contains a custom tlk then you will have to merge the entries from both tlk files together using your favorite tlk editor into a new tlk and use that instead. If you are running on the Mac or Linux this step is more difficult, neveredit currently does not have any functionality to set the custom tlk for a module. I recommend using ewald's erf/mod/gff/tlk/2da editor, available on the vault. It's java based and will run on the mac (not sure about Linux). To set the custom tlk, open the module, then open the "module.ifo" file and set the "Mod_CustomTlk" property to "prc_consortium" (no .tlk at the end). -At this point if you have done everything correctly you should be all set to play the module.
  14. -
-
-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/itemcrafting/manual_itemcrafting_system.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/itemcrafting/manual_itemcrafting_system.html deleted file mode 100644 index 798d4ca1..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/itemcrafting/manual_itemcrafting_system.html +++ /dev/null @@ -1,90 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Item Crafting :: System - - - - -
-

:: Item Crafting :: System ::

-
-
-

Item Creation

-
-Special thanks goes too RabbitHail for making and coding this wonderful system. -

-

Usage

-
-Item crafting gives the caster classes the ability to create magic items from recipe scrolls, books, or any item with the proper TAG. It also allows the user to create recipes from already existing magic items. This allows PWs, and modules to have full control over what magic items the users can have and create. If you want to introduce a near dynamic economy, don’t let magic items “drop” from monster kills. Only allow kills to drop money and spell scrolls. Have merchants only sell recipe scrolls and then your magic users will have to spend gold and exp to create magic items. This creates a money and exp sink, which will help your PW from having an inflationary economy. The fighters will have to pay the mages to make items. The mages will use spells, feats, money and exp to make items. This will push the mages to work with the fighters in order to get the exp 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). -

-Use the read magic cantrip on a magic item. If a magic item is listed in the item_to_ireq.2da file a recipe scroll will be created. Use the proper craft feat on the scroll to start the magic item creation process. Read magic can be used on a recipe scroll to display what item will be created and the required feats need to make that item. Some recipes for very powerful items may require a level 20 mage / level 20 cleric! -

-

Module variables

-
Int nICHoursInDayCycle // sets the number of hours in a day (default is 1) -
Float fICMinDays // sets the minimum number of days an item creation will take (default is .1) -
Float fICMaxDays // sets the maximum number of days an item creation will take (default is .2) -
-
NOTE: To all PWs, the above settings are done so for the single player that has no clue how to set module variables, has no reason to wait around while the item is being crafted, and probably won’t even read this file. To have a truly PnP “experience” with item crafting use these settings: -
-
nICHoursInDayCycle = 24; -
fICMinDays = 1.0; -
fICMaxDays = 1000.0; -

-

Item recipes

-Recipes are contained within the prc_craft2da.hak file. Each recipe is its own 2da file. The 2da files are setup just like prestige class prerequisite files. This is the recipe for making the helm of brilliance: -

-FileName: ireq_helmbril.2da -

- - - - - - - - - - - -
  LABEL ReqType ReqParam1 ReqParam2
0 Helm_of_Brilliance RESULT x0_armhe012 ****
1 CasterLevel13th CASTERLVL 13 ****
2 Craft_Wondrous_Item_Feat FEAT 2925 ****
3 Light SPELL 62 ****
4 Fire Ball SPELL 100 ****
5 Prismatic_Spray SPELL 135 ****
6 Wall_of_Fire SPELL 191 ****
7 Flame_Lash SPELL 60 ****
8 Protection_from_Elements SPELL 137 ****
-
-NOTE: The numbers in the ReqParam1 field are the line numbers that those things exist on in their respective 2da files. The filename is important because that’s what you must set an items TAG to in order to have it be used by the craft feats to make an item. -

- - - - - - - - - - - - - - - - - - - - - - - -
ReqType list: const string
sReqTypeResult = "RESULT"; // min
sReqTypeCasterLevel= "CASTERLVL";// min
sReqTypeExtraXP = "EXTRAXP"; // min
sReqTypeExtraGold = "EXTRAGOLD";// min
Increases XP cost as well
 
sReqTypeFeat = "FEAT"; // and
sReqTypeSpell= "SPELL";// and
sReqTypeItem = "ITEM"; // and
sReqTypeSkill= "SKILL";// and
sReqTypeLevel= "LEVEL";// and
 
sReqTypeRace = "RACE"; // or
sReqTypeAlign= "ALIGN";// or
sReqTypeArea = "AREA"; // or
sReqTypeDeity= "DEITY";// or
 
sReqTypeFeatOR = "FEATOR"; // or
sReqTypeSpellOR= "SPELLOR";// or
sReqTypeItemOR = "ITEMOR"; // or
sReqTypeSkillOR= "SKILLOR";// or
sReqTypeLevelOR= "LEVELOR";// or
-

-The item_to_ireq.2da file “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 magic item exist you can place both anywhere into this file so the users of the craft system can use read magic on a magic it to be able 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. -

- - - -
  LABEL L_RESREF RECIPE_TAG
0 Arvoreens_Amulet_of_Aid x0_it_mneck005 IREQ_AMULARVR
-

-NOTE: This file is NOT required for the system to run, and may not make sense for PWs to have. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_blank.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_blank.html deleted file mode 100644 index 57bf1284..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_blank.html +++ /dev/null @@ -1,9 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Blank - - - - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_main.html deleted file mode 100644 index 39cb5047..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/manual_content_main.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Content :: Main - - - - - -
-
-
-
-

:: PRC v 2.2c ::

-
-
-Welcome to the Player Resource Consortium manual! -Inside you'll find all the current information about the custom PrC's, feats, races, -spells, epic spells, and modified spells that this release of the PRC includes. - -If you find anything amiss in any of the documentation, please head over to the bug reports -section of the forums and post it in the manual thread. -Otherwise, we hope that these pages can satisfy any questions you may have about -the PRC or any of the content we have produced. - -
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_modifyingscripts.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_modifyingscripts.html deleted file mode 100644 index 60f2659b..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_modifyingscripts.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Modifying Scripts - - - - -
-

:: Module Building :: Modifying Scripts ::

-
-
-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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. -

-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: ) -

-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". -

-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. -

-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! -

-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. -

-Click OK, and presto, your changes are in! You can safely abort the -rebuild process. -

-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. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_overridenfiles.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_overridenfiles.html deleted file mode 100644 index 2b578840..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_overridenfiles.html +++ /dev/null @@ -1,86 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: Overriden Files - - - - -
-

:: Module Building :: Overriden Files ::

-
-
-

prc_2das.hak:


-
    -
  • baseitems
  • -
  • classes
  • -
  • cls_feat_asasin
  • -
  • cls_feat_barb
  • -
  • cls_feat_bard
  • -
  • cls_feat_cler
  • -
  • cls_feat_druid
  • -
  • cls_feat_fight
  • -
  • cls_feat_monk
  • -
  • cls_feat_pal
  • -
  • cls_feat_rang
  • -
  • cls_feat_rog
  • -
  • cls_feat_shadow
  • -
  • cls_feat_sorc
  • -
  • cls_feat_wiz
  • -
  • cls_skill_archer
  • -
  • cls_skill_asasin
  • -
  • cls_skill_barb
  • -
  • cls_skill_bard
  • -
  • cls_skill_blkgrd
  • -
  • cls_skill_cler
  • -
  • cls_skill_divcha
  • -
  • cls_skill_dradis
  • -
  • cls_skill_dru
  • -
  • cls_skill_dwdef
  • -
  • cls_skill_fight
  • -
  • cls_skill_kensei (though bioware doesn't use this)
  • -
  • cls_skill_monk
  • -
  • cls_skill_pal
  • -
  • cls_skill_palema
  • -
  • cls_skill_rang
  • -
  • cls_skill_rog
  • -
  • cls_skill_shadow
  • -
  • cls_skill_shiftr
  • -
  • cls_skill_sorc
  • -
  • cls_skill_wiz
  • -
  • cls_skill_wm
  • -
  • feat
  • -
  • iprp_feats
  • -
  • iprp_monstocst
  • -
  • iprp_neg5cost
  • -
  • iprp_onhitcost
  • -
  • iprp_onhitdur
  • -
  • iprp_spellcost
  • -
  • iprp_spells
  • -
  • iprp_srcost
  • -
  • itemprops
  • -
  • masterfeats
  • -
  • polymorph
  • -
  • skills
  • -
  • spells
  • -
  • vfx_persistent
  • -
  • visualeffects
  • -
-
-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 -

-

prc_scripts.hak:


-
    -
  • nw_i0_spells
  • -
  • x0_i0spells
  • -
  • x2_inc_spellhook
  • -
  • x2_inc_switches
  • -
  • x2_mod_def_equ
  • -
  • x2_mod_def_unequ
  • -
-
-NOTE: Due to the custom system for dealing with PrC's literally every spell in the game has been modified. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_prcenablers.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_prcenablers.html deleted file mode 100644 index ab2d9d81..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/modulebuilding/manual_modulebuilding_prcenablers.html +++ /dev/null @@ -1,84 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Module Building :: PrC Enablers - - - - -
-

:: Module Building :: PrC Enablers ::

-
-
-In a future release these variables will be in an onload script for easy access to enabling and disabling. -

-Setting these variables to 1 on a PC will make it so they can't take any levels in that Prestige Class. -

-NOTE: Beware that as of 2.0c, the Champion of Torm and Champion of Bane share the same variable as do the Elemental Savant and Acolyte of the Skin classes. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shadows of Undrentide Variables
X1_AllowAsasin Assassin
X1_AllowArcher Arcane Archer
X1_AllowBlkGrd Black Guard
X1_AllowHarper Harper Scout
X1_AllowShadow Shadow Dancer
   
Hordes of the Underdark Variables
X1_AllowDrDis Dragon Disciple
X1_AllowDwDef Dwarven Defender
X2_AllowDivcha Champion of Torm
X2_AllowPalema Palemaster
X2_AllowShiftr Shifter
X2_AllowWM Weapon Master
   
Player Resource Consortium Pack Variables (v 2.2+)
As of PrC 2.2 all class variables start with PRC_
Player Resource Consortium Pack Variables (v 2.0c - 2.1d)
X2_AllowAcolyte Acolyte of the Skin
PNP_AllowArcTrick Arcane Trickster
PRC_AllowArchmage Archmage
X1_AllowTempus Battleguard Tempus
X1_AllowBRage Battlerager
X1_AllowBonded Bonded Summoner
X2_AllowDivcha Champion of Bane
X2_AllowBaal Disciple of Baalzebul
X2_AllowDiscmep Disciple of Mephistopheles
X2_AllowDuel Duelist
PRC_AllowEldknight Eldrich Knight
X2_AllowAcolyte Elemental Savant
X1_AllowFistRaz Fist of Raziel
X2_AllowFH Foe Hunter
X2_AllowFrebzk Frenzied Beserker
X1_AllowHarperM Harper Mage
X1_AllowHeartW Heartwarder
X2_AllowHiero Heirophant
X1_AllowHosp Hospitaler
X1_AllowIaij Iaijutsu Master
X1_AllowIniDra Initiate of Draconic Mysteries
X2_AllowKnghtCh Knight of the Chalice
X1_AllowLgDr Legendary Dreadnaught
PNP_AllowLich Lich
X2_AllowMageK Mage Killer
mh_AllowMaster Master Harper
X2_AllowShrouds Master of Shrouds
X2_AllowMystic Mystic Theurge
X1_AllowNinja Ninja Spy
X1_AllowOccAd Ocular Adept
PRC_AllowUzi Oozemaster
PNP_AllowPArcher Peerless Archer
X2_AllowRedavng Red Avenger
X2_AllowPNPSfr Shifter (PnP)
X2_AllowSpellS Spellsword
X1_AllowStormL Stormlord
X1_AllowShaLow Telflammar Shadowlord
X2_AllowTempest Tempest
X1_AllowVassal Vassal of Bahamut
codi_allow_warpr Warpriest
-

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_basics.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_basics.html deleted file mode 100644 index 45f81e72..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_basics.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Basics - - - - -
-

:: PrC Making :: Basics ::

-
-
-We have recived several questions on the forums about the 2da's and basic scripting. -I felt I would try and help those new to custom content by providing links to the information. -

-For information on 2da's, harcoded limitations, etc. Check the -Neverwinter Nights Custom Content Guide. -

-For questions concerning scripting check out the -NWN Lexicon. -

-If you can not find what you are looking for there, -feel free to ask questions on the BioWare forums, -or of course our own forums. -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_guide.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_guide.html deleted file mode 100644 index 64ca6ea2..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/manual_prcmaking_guide.html +++ /dev/null @@ -1,1230 +0,0 @@ - - - -Player Resource Consortium :: Manual :: PrC Making :: Guide - - - - - - -
- -

:: PrC Making :: Guide ::

-
-
-
- -
    -
  1. Introduction
  2. -
  3. Prelude
  4. -
  5. Tools of the Trade
  6. -
  7. IRC Information
  8. -
  9. Script Compiler
  10. - - -
  11. Hak Overview
  12. -
  13. File Overview
  14. -
  15. Getting Started
  16. -
  17. PRC Rules and General Guidelines
  18. -
  19. Classes.2da
  20. -
  21. Other Required 2da's
  22. -
  23. Feat.2da
  24. -
  25. Spells.2da
  26. -
  27. Creating Active Feats
  28. -
  29. Creating Combat Feats
  30. -
  31. Creating Passive Feats
  32. -
- - -

Introduction

-
-
-I have decicided to create a tutorial on how to make a -Prestige Class and how to make it compatible with the Player Resource Consortium. -I hope this allows new custom content builders to help make their content compatible with the PRC. -This will make it easier for them to use both their content and ours, and also make it easier on us -if they would allow us to add their content to our pack. -

- -

Prelude

-
-
-That being said, I would like to reiterate the information in the basic section with the following links. -I cannot stress how useful these two links are when developing. -The 2da coverage from the CCG is very useful when making feats and spells. -The Lexicon has some good tutorials for those new to scripting. -In addition, the Lexicon has a listing of all the functions in the engine with information on -how to use them. -This is very useful if you script outside of the toolset as many of us in the PRC do. - -

- -For information on 2da's, harcoded limitations, etc. Check the - Neverwinter Nights Custom Content Guide. -
-For questions concerning scripting check out the - NWN Lexicon. - -

- -

Tools of the Trade

-
-
-The following is a list of utility programs that are quite handy for making PrC's. - -

- - - - - - - - - - - - - - - - - - - - - - - - -
NotePad A basic text editor... .2da and .nss files are both plain text files, making a plain text editor a definite must.
TextPad Another text editor. Can be found here. -This text editor can mass replace text in many files rather quickly. Excellent when making mass replaces. You can also use C++ language highlighting and it is much like using the NwN Toolset when scripting.
NwN Toolset Occasionally the toolset is useful. Especially, if you are making summonable critters or dialogues.
CCCH The CODI Custom Content Helper. Has a .tlk editor as well as some pretty decent 2da editing capabilities. Some use it, some do not. Definitely worth mentioning though. It can be found here.
NWN TLK Editor 1.1 My preferred method of modifying the .tlk file. It can be found here.
NwN Explorer A good tool to look through all the standard files of the game. Great for checking out the games icon when you want to modify them to create new ones. It can be found here.
mIRC We use this to communicate, for more information see section below.
-
Back to Top -

- -

IRC Information

-
-
-The PrC members often use IRC (Internet Relay Chat) to communicate with eachother. -For those new to IRC you need to download a program called mIRC. -(There are likely others, though I do not know them.) - -The following steps will allow you to connect to our main channel. - -
    -
  • Download mIRC here.
  • -
  • Go to "Tools" and select "Options"
  • -
  • Open the "Connect" tree and select "Servers"
  • -
  • Click the "Add" button
  • -
  • Fill in Description and Group as "PRC"
  • -
  • Fill in IRC Server as "irc.neverwinterconnections.com"
  • -
  • Click the "Connect to Server" button
  • -
  • Once connected type in "/join #terran"
  • -
- -If you want to automatically connect to the server when you open mIRC you can go back into Tools > Options > Connect > Options. -There should be a checkbox labled "Connect on Startup". Select that option and you will automatically connect to "irc.neverwinterconnections.com". - -

- -Additionally, if you want to automatically join a channel on startup you can again go into Tools > Options > Connect > Options. -
    -
  • Click the "Perform" button.
  • -
  • Check the "Enable Perform on Connect" checkbox.
  • -
  • In the "Perform Commands:" textbox fill in all commands you want to run.
  • -
  • Type in "/join #terran" to connect to our channel.
  • -
- -Feel free to visit us in the IRC channel sometime. - -

Back to Top -

-

Script Compiler

-
-
- -The PRC team has done some modifications to Torlack's compiler so that we can -compile all of our scripts outside of the compiler. -It was not something we orginally wanted to do, but it seems we hit some kind of hardcoded -limit in the standard compiler and could no longer compile our work. -We decided to release this compiler publicly for developers to use you can get a -link to it in the downloads section of the website. - -

-To make any script changes to the PRC you will need to: - -

-
    -
  • Extract the include files from prc_include.hak into a temporary "include" -folder in the same directory as the compiler.
  • -
  • Run the compiler on your scripts: -
    Usage: -
    nwnnsscomp [-cdegoqx] [-t#] [-v#] [[-i pathspec] ...] infile [outfile] -
    -
    pathspec - semicolon separated list of directories to search for files. -
    infile - name of the input file. -
    outfile - name of the output file. -
    -c - Compile the script (default) -
    -d - Decompile the script (can't be used with -c) -
    -e - Enable non-Bioware extensions -
    -g - Don't produce ndb debug file -
    -i - Add Search Path -
    -o - Optimize the compiled source -
    -q - Silence most messages -
    -x - Extract script from NWN data files -
    -vx.xx - Set the version of the compiler -
    -t1 - Perform a compilation test with BIF scripts -
    -t2 - Perform a compilation test with the given module -
    -t3 - Optimization space saving report with the given module -
    -t4 - Perform a compilation test with the given file or files -
    -
    -i is basically an include folder, -though the system may look for your compile file in there as well if you are elsewhere -
      -
  • -
  • Copy the modified .ncs files into a custom hak and make sure that hak is -on the top of the list in the module properties.
  • -
- -For more compiler information you can check the orginal developer's website: -
http://www.torlack.com/index.html?topics=nwnnsscomp_readme - -

Back to Top -

-

Hak Overview

-
-
- -If you open up your hak folder you should find quite a few hak files. -Here is a brief overview of those haks. -Most of them are rather self explanatory, but we might as well explain them anyways. - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
prc_2dasLocation of almost all 2da files for the PrC.
prc_Craft2das2da files specifically for the crafting system.
prc_epicspellscriptsScripts for the Epic Spell System are in here
prc_miscAll icons, textures, dialogues creature templates, etc go in here.
prc_includeAll include scripts go in here. One of the most important folders.
prc_race2da files and scripts for the race pack.
prc_scriptsCustom scripts for PrC's go in here.
prc_spellsThis directory is for all the official Bioware spell scripts.
-

- -You will likely notice there are a few directories I did not mention above. -Any directory containing "objs" in its name holds compiled data. -This prevents PrC makers from having to compile every single script whenever they use the Make System. -The tempcpl directory is an empty directory that temporarily stores data while compiling. - -

Back to Top -

-

File Overview

-
-
-There are many files in the PRC pack, so I will label those most important to PrC makers, and what they do. -If you are using the .hak files they have the same name as the directories. -For example, /2das is the same as prc_2das.hak. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Folder / File Description
/2das directory
classes.2da The 2da containing all classes. For more information check out the Custom Content Guide.
feat.2da The 2da for feats... again check the CCG for more info.
spells.2da The 2da for spells.
masterfeats.2da This 2da is for feats like Favored Enemy or Weapon Focus, where it is a single feat, but you have to select a certain version of the feat.
skills.2da The 2da for skills
cls_skill_****.2da These files determine the class and cross-class skills for your PrC. They reference the value in skills.2da.
cls_pres_****.2da These files list requirements for a prestige class.
cls_feat_****.2da These files contain the feats and at which level a PrC gains them.
cls_bfeat_****.2da This file contains bonus feat allocation for the PrC. Bonus feats are those such as fighter feats or rogue bonus feats. Also note that most classes gain bonus feats during epic levels.
   
/include directory
prc_class_const.nss All FEAT_* constants go in here.
prc_feat_const.nss All CLASS_TYPE_* constants go here.
prc_racialtypes_const.nss All RACIAL_TYPE_* constants go here.
prc_spell_const.nss All SPELL_* constants go here.
prc_ipfeat_const.nss All constants dealing with item properties go here.
prc_inc_function.nss This file is not necessarily the most intuitively named. While it does contain a few functions used by several classes, its main use is the heart of the passive feat system. Passive feats are applied by calling a class specific script on multiple events, such as onequip, onload, and onlevel. When a line is added into the EvalPRCFeats function, it will execute the script on all the main events. This saves us from having to put the code in multiple places. If your passive feats are not working, be sure that you added the proper line of code here. It is an easy thing to forget, I know I have done it before.

Another important function in this file is DeletePRCLocalInts. This file is used to delete local integers stored to make sure an ability is or is not updated. For instance, if you have an ability that can upgrade on level up, then you would want to delete the local int so that your code will re-add the bonus. Just make sure you use the SetCompositeBonus function described later in the guide.

While those are the two primary functions, you might find some of the other functions useful.
inc_item_props.nss Another very important file. Here you will find the aforementioned SetCompositeBonus function as well as numerous other functions that deal with creature skins and item properties.
prc_inc_util.nss A new file created for utility functions. Those that could be useful for multiple classes or abilities.
prc_inc_clsfunc.nss A file for all class functions that need to be included in multiple files. This prevents us from having many includes for various classes.
prc_alterations.nss This one is important if you ever need to determine a creatures RACIAL_TYPE_* constant. This file houses the MyPRCGetRacialType function.
inc_combat.nss,
inc_combat2.nss,
prc_inc_combat.nss
inc_combat and inc_combat2 are the original coding used to simulate combat for attacks such as the Arcane Trickster's Impromtu Sneak Attack ability. prc_inc_combat took the data in the previous files and added to it. New coders should use prc_inc_combat, though I thought I would mention all of them so coders do not get confused.
prc_inc_sneak.nss This file contains numerous functions used to simulate sneak attacks and to add sneak attacks to prestige classes. In order to make new classes with sneak attack stack, we add a dummy feat to the player. The code that gives them the sneak attack feat(s) is placed in this file.
prc_inc_unarmed.nss Determines the unarmed "creature weapon" damage of many of the monk PrC's. For those making a monk PrC that has fist damage upgrades, this is the file to look into.
prc_inc_spells.nss Contains many useful functions for determining caster level, mostly. The goal is to consolidate all caster level functions into this file. In the future, all new PrC's that add to caster levels should be added to the GetArcanePRCLevels and GetDivinePRCLevels functions. Very little else should be necessary, except when new casting feats are created.
prcsp_engine.nss Functions that determine spell resistance and if a player resists a spell.
prcsp_spell_adjs.nss Functions that return spell penetration bonuses.
   
/scripts directory
prc_prereq.nss This script allows a PrC builder to add in custom scripts to determine if a player can take a PrC. Bioware's 2da system had a few limitations that prevented us from properly doing some class requirements. A good example would be the Tempest. Tempests need Ambidexterity and Two-Weapon Fighting or Ranger Dual wield. In addition, they need Weapon Focus(any melee weapon) or Weapon Finesse. The 2da files FEATOR required did not allow two or conditions, it ended up working if you had any of the feats. We needed to script in the check for Ranger Dual Wield or Ambidexterity and Two-Weapon Fighting.
prc_enforce_feat.nss This script is used to circimvent some issues in the bioware engine and how feats are granted. There are several things that cannot be done with the 2da files such as race or gender specific feats. In adddition this file is also used to limit bonus feats and the levels they can be gained at. This was required for classes such as the Red Wizard as they are only supposed to take the Limited School feats at certain levels.
   
/race2das directory
race_feat_****.2da This 2da holds all the racial feats for the specific race. Note: This also contains feats for spells associated with a race.
racialtypes.2da This file stores the base information about each race. Contains information that links it to the aforementioned race 2das.
   
/racescripts directory
race_hb.nss Any abiltiies that require a heartbeat to check go in here. Things like Light Blindness/Sensitivity.
race_skin.nss All bonuses that are applies to the skin for a race. Damage Resistance, Natural Armor, etc. Most things a race would need are already implemented, just need to give a race the proper feat.
   
/spells directory
x2_s3_onhitcast.nss Script used for On Hit: Unique Powers. It should not be needed for most classes, but I figured it was worth mentioning.
   
/tlk directory
prc_consortium.tlk The only file in this directory. The tlk file holds the in game text for all the PrC's, feats, spells, etc.
- -

Back to Top -

-

Getting Started

-
-
- -If you plan to make your PrC compatible with the PRC pack, -then it is best to get the most current files from the PRC. -To get those files, you will likely need to contact Stratovarius. -The reason this is important is because you will want to make sure you are using open .tlk, and .2da slots. -If you are not, then either another PRC member or yourself will need to move a lot of data around to add your PrC. -

- -For the most current list of open 2da / tlk slots click here. -[Note: Link requires active internet connection to work] -

- -The first thing I usually do is make a text file. -I store a main text file for each PrC I make. -In this file I keep all the important things I will need. -The class desription, bab, class skill list, abilities, ability descriptions, etc. -Having all of this in a text file is very convenient since you can copy / paste the information into the .tlk file. -It is also very handy having the PnP ability description in an easy to access location while you are scripting its abilities. -

- -The second thing I do is open up a another text file that has a small template for the spell, feats, and classes.2da. -Doing all the 2da work outside of the 2da's is good because you can copy/paste the data at your leisure. -A few of us PRC members learned how nice it can be, especially when two people are both editing the same 2da file... -One persons change can overwrite anothers, it is always a good idea to have a backup. -

- -Throughout PrC making you have to edit quite a few files. -I suggest using Textpad because you can have a small section of the window list all open files. -This is great for switching from one file to another quickly, and leaving them all close at hand if -you need to edit any of them. Most useful while compiling and debugging scripts. - -

Back to Top -

-

PRC Rules and General Guidelines

-
-
-The following are things that should or must be done for all classes. -It is a short list of guidelines for those interested in making files compatible with the PRC. - -
    -
  • All files MUST be in a 16.3 naming format, no exceptions.
  • -
  • No hex numbers for 2da enteries.
  • -
  • No class abilities on rods or items. They must be integrated with the class.
  • -
  • All permenant stat bonuses must conform to our existing system. -Take a look at the prc_heartwarder for an example.
  • - -
  • Use the appropriate constants instead of integers in scripts:
  • -
      -
    • Add CLASS_TYPE_* constants to prc_class_const.nss.
    • -
    • Add FEAT_* constants to prc_feat_const.nss.
    • -
    • Add SPELL_* constants to prc_spell_const.nss.
    • -
    • Add IP_CONST_* constants to prc_ipfeat_const.nss.
    • -
    • Add RACIAL_TYPE_* constants to prc_racial_const.nss.
    • -
    -
  • Name all class scripts prc_className_abilityName. OR
    -Name all class scripts className_ablityName.
  • -
- -On to the main files you will need to edit! - -

Back to Top -

-

Classes.2da

-
-
- -Naturally, if you want to make a PrC, you are going to have to edit classes.2da. -Upon first opening the file you might say, "What in the nine hells is all this junk?!" -

- -The 2da's are setup much like a database, or spreadsheet, except of course they are only text files. -The first column is the ID column, the number of the row. -

- -I would like to note a few things before moving on. One major thing to note is how the tlk data works. -Bioware has has reserved a ton of spaces so that no custom tlk should ever conflict with their own. -When making classes we often use a custom tlk as you will see in the column descriptions below. -When using a custom tlk we take our actual entry number and add, 16777216, to it. -

- -All tlk entries before 16777216 are read from the standard default.tlk. -Note: 16777217 is for BadStrRef and should not be used. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column About the Column
ID Number The value that the CLASS_TYPE_* constant should equal.
Label Arbitrary column for naming the class. Useful for those looking at the 2da
Name The tlk entry # containing the name of the class.
- For example, custom tlk #50000 = 16827216
Plural The tlk entry # containing the plural name of a class.
Lower The tlk entry # containing the class name in lower case.
Description The tlk entry # containing the class description. This includes information such as the level up table and such.
Icon The name of the icon file.
- This is not case sensitive.
- Files must be 24-bit tga files to show up properly in game.
- File name should be less than 16 characters long.
HitDie The die rolled when the class levels up. (Ex: 4, 6, 8, 10, 12)
AttackBonusTable The name of the attack bonus table used by the class. This is usually one of the following:
- CLS_ATTACK_1 - Fighter BAB, max pre-epic +20.
- CLS_ATTACK_2 - Rogue BAB, max pre-epic +15.
- CLS_ATTACK_3 - Wizard BAB, max pre-epic +10.

- - CLS_ATTACK_4 - A file added by the PRC, gives +0 BAB. -
FeatsTable CLS_FEAT_**** file. The feats your class gets, each class has its own file. You have to make one for your class.
SavingThrowTable CLS_SAVTHR_**** file. You can make your own, though most classes use very similar saving throw tables. You will likely be able to use the same one as another class.
SkillsTable CLS_SKILL_**** file. The file that lists class skills for this class. You have to make one for your class.
BonusFeatsTable CLS_BFEAT_**** file. This file lists any "bonus" feats a class can select (like fighter, wizard, or rogue) at certain levels. You have to make one for your class.
SkillPointBase The base skills per level of the class.
* SpellGainTable
* SpellKnownTable
PlayerClass 1, unless you don't want people to play it.
SpellCaster Can class cast spells? 1 = True, 0 = false.
Str, Dex, Con,
Wis, Int Cha
The classes ideal ability scores, used for recomended and auto-level.
PrimaryAbil The classes primary ability score. Again, used for that recommended button.
AlignRestrict Possible Values: -
0x00 - No restrictions -
0x01 - No Neutral -
0x02 - No Lawful -
0x03 - No Lawful, No Neutral -
0x04 - No Chaotic -
0x05 - No Chaotic, No Neutral -
0x06 - No Chaotic, No Lawful -
0x07 - No Chaotic, No Lawful, No Neutral -
0x08 - No Good -
0x09 - No Good, No Neutral -
0x0A - No Good, No Lawful -
0x0B - No Good, No Lawful, No Neutral -
0x0C - No Good, No Chaotic -
0x0D - No Good, No Chaotic, No Neutral -
0x0E - No Good, No Chaotic, No Lawful -
0x0F - No Good, No Chaotic, No Lawful, No Neutral -
0x10 - No Evil -
0x11 - No Evil, No Neutral -
0x12 - No Evil, No Lawful -
0x13 - No Evil, No Lawful, No Neutral -
0x14 - No Evil, No Chaotic -
0x15 - No Evil, No Chaotic, No Neutral -
0x16 - No Evil, No Chaotic, No Lawful -
0x17 - No Evil, No Chaotic, No Lawful, No Neutral -
0x18 - No Evil, No Good -
0x19 - No Evil, No Good, No Neutral -
0x1A - No Evil, No Good, No Lawful -
0x1B - No Evil, No Good, No Lawful, No Neutral -
0x1C - No Evil, No Good, No Chaotic -
0x1D - No Evil, No Good, No Chaotic, No Neutral -
0x1E - No Evil, No Good, No Chaotic, No Lawful -
0x1F - No Evil, No Good, No Chaotic, No Lawful, No Neutral -
AlignRstrctType Possible Values: -
0x0 None -
0x1 = Law/Chaos -
0x2 = Good/Evil -
0x3 = Both -
InvertRestrict Invert the alignment restriction? True = 1, False = 0.
Constant CLASS_TYPE_* This refers to the constant that the class goes by in scripts.
EffCRLvl01 - EffCRLvl20 1 to 20 respectively... never seen it as anything else.
PreReqTable CLS_PRES_**** file. The prerequisite file for the class. You have to make one for your class.
MaxLevel The classes maximum level possible.
XPPenalty Will this class cause an XP penalty? True = 1, False = 0. For PrC's this should always be 0.
* ArcSpellLvlMod Arcane spell level modifier.
* DivSpellLvlMod Divine spell level modifier.
EpicLevel At what level does the class start being epic.
Package The line number in Packages.2da. This refers to what the class starts with.
-

- -It is often easier to just copy another class row and then modify the values you need to change. - -

Back to Top -

-

Other Required 2da's

-
-
- -As you may have noticed while looking at the classes.2da section, -there are several 2da files that will have to create for your new PrC. -The required files include cls_pres_****.2da, cls_skill_****.2da, cls_feat_****.2da, and cls_bfeat_****.2da. -

- -The **** in those file names should be something short, about 4-6 characters, for your PRC's name. -For example for the Frenzied Berserker I used FREBZK. -It must be different from any other class, and something you can remember later is always a good thing. -

- -It is usually much easier to just copy another file and rename it. -Then modify its contents to suite your needs. -

- -Each of the files has their own data inside of them and their own uses. -Firstly, the cls_pres_****.2da is used to set your PrC's prerequisites. -The first column is index number, I am not sure if it is even required. -It is recommended to make them sequential numbers starting at 0. -The second column is just a text reminder of that the prerequisite is. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ReqType Description ReqParam1 ReqParam2
FEAT A feat required for the class. feat # in feats.2da ****
FEATOR This feat OR another feat that uses FEATOR. feat # in feats.2da ****
RACE Only races allowed to take this class. race # in racialtypes.2da ****
BAB Minimum BAB required to take class. any # ****
ARCSPELL (Do not use this with PRC) spell level required ****
SKILL Skill points required for class. skill # from skills.2da skill ranks
VAR Variable name that turns this class on or off. 0 = on or 1 = off ****
-

- -You might be wondering why you should not use "ARCSPELL" with the PRC. -It is because we actually have a script set for the Arcane or Divine Spell casting level detection. -This was done because using the 2da's did not work properly, and because there were also other prerequisites -that could not be done using the 2da. Some good examples of "impossible" class requirements include: -gender, deity, cleric domain(s), etc. This information was easily accessible through scripting, so -we chose to use a custom script as a prerequisite. If your PRC needs to do something that the 2da cannot do, then refer to prc_prereq.nss. -

- -All classes should have at least one VAR requirement. -Typically this is PRC_Allow_****. Of course, the ****'s are whatever you want to represent that class with. -This variable can be used by module builders to turn the whole class off if they want too, -it makes it easier for world builders if they feel the PrC causes imbalance in their world. -

- -Some classes will have a second variable. -This is typically associated with the custom prerequisite script. -If a player's character fails to pass a check for the special requirements. -This variable is turned off, causing the player to not have access to the class. -

-

- -The second file is cls_skill_****.2da. Once again the first column is an index number. -This file really only has two important things: the SkillIndex which points to a line in skills.2da, -and the ClassSkill which is either 1 or 0. Any skill that has a 1 in the class skill column is a -class skill. One thing to note is that any class that doesn't a have a skill listed at all, -cannot take the skill at all. For instance, if you don't have Use Magic Device listed, you will not -be able to put any points in it as a cross-class skill. Most classes should not have -Use Magic Device or Animal Empathy in their class list, unless they do in PnP. -

-

- - -The third file is cls_feat_****.2da. This file contains all the feats your PrC will gain upon level up. -It also contains all the bonus feats that the PrC can select, and all the epic feats available to the class. - - - - - - - - - - - - - - - - - - - - - - - - - - -
Column Description
FeatLabel Short name to describe what feat it is. Can be anything really.
FeatIndex feat # in feat.2da
List Possible Values:
- 0 = Selectable on level up
- 1 = Regular feat or bonus feat (Figher/Wizard bonus feats)
- 2 = Bonus feat only
- 3 = Automatically granted feat
GrantedOnLevel The level PrC gains the feat, or -1 for any time.
OnMenu Is shown on class radial menu? Yes = 1, No = 0
- -

-

- -On to the last file, cls_bfeat_****.2da. -This file just has a listing of levels and a 0 or 1. -If the class gets a bonus feat at that level, then put a 1. -If not, then put a 0. -

- -One thing to be careful of when doing this file is to watch your epic level progression. -For example if your PrC has a max level of 30 and starts being epic at level 10, -then you will need to have a bonus feat every X levels starting at level 10. -This is because all classes gain their feats during epic levels as bonus feats! - -

Back to Top -

-

Feat.2da

-
-
- -There is not much I can really say about feat.2da. -It is mostly quite straight forward. -If you run into any questions the best place to look is the CCG. -I even went ahead and got a direct link for you. - Click here for feat.2da information! -

- -Now to make this section helpful, I would like to note that almost all PrC abilities will actually need to -be done using feats. Typically, if a PrC can cast something X times a day, we create a feat with the -proper uses per day, and point it to the correct spell entry in spells.2da. The same principle applies to creating custom -abilties. I will cover this again in better depth in the Creating Active Feats section. - -

Back to Top -

-

Spells.2da

-
-
- -Spells.2da is much more confusing than the feat.2da. I definitely recommend bookmarking this guide, -or the direct link to spells.2da page on the CCG. Speaking of the direct link, - here it is. -

- -Since most active PrC abilities end up being spells, -you will likely find yourself in this file a lot more than you would like. -That is why I recommend bookmarking the guide. -I know I often forget what all the stuff means. -The easiest way to make a new spell/feat is to simply copy a similiar one as a reference, -and change everything you need to. - -

Back to Top -

-

Creating Active Feats

-
-
- -What is an active feat? An active feat is a feat that the player must willingly activate. -Something like Smite, Acrobatic Attack, Mimic, Wildshape, etc. -Creating these feats is a rather straight forward process. -Most of the following steps can be done in any order you prefer, though it sometimes makes more -sense to do them in a certain order. -

- -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required action(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in spells.2da
  10. -
  11. Create an entry in cls_feat_****.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Compile script, test script, debug script
  16. -
  17. Refer to step 8, until it works
  18. -
- -Aside from debugging, I generally do the 2da work last. -This is because you need to put an icon entry in both feat.2da and spells.2da. -In addition, you need to have all the tlk entries and your script name in the 2da. -You can do it in any order you like, but you will need to make sure the entries -in the 2da's match the actual files. -

- -You can also do each part in sections. -Making the tlk entries, and then the 2da entries, then testing if the feat displays up in game. -If it shows up properly, then you can code the script that'll make it work. -There really is no set way to do it, as long as all of those steps get finished eventually. - - -

Back to Top -

-

Creating Combat Feats

-
-
- -A combat feat is a special kind of active feat. -Combat feats are those that are directly linked to an attack of some sort. -Some good examples are the Arcane Trickster's "Impromtu Sneak Attack", -the Foe Hunter's "Death Attack", and the Ravager's "Cruelest Cut". -All of those special abilities do something special when you hit the enemy. -A feat with limited uses a day (usually) that deals special damage through an attack is a combat feat. -

- -If you did not already know, the actual game engine's combat system is hard coded. -You cannot simply write a script that says. -"Add this players cha bonus as divine damage applied to the enemy if they hit -them on the first strike of this attack round." -

- -You are probably thinking right about now... Hey! The PRC has made those feats, it must be possible! ... -Indeed, remember I said you could not "simply" tell the game to do that... -At least not until the PRC created the "Combat Simulation System". -

- -It all started with inc_combat.nss. -While that script was very helpful it was still missing several nice features. -Along came inc_combat2.nss. This file added even more functionality to the previous combat system. -Things like elemental weapons, spell effect calculations, etc. -It made the system much calculate attack bonus and damage more acurately than it did before. -While inc_combat2.nss was being written and upgraded, Oni5115 started to develope prc_inc_combat.nss. -He used the majority of the code from inc_combat.nss and inc_combat2.nss, piled on a bit of new -functionality, documented the code, and made a system that is far more scripter friendly. -

- -Note: You will need numerous PRC files in order to use the Combat Simulation System. -The script is not standalone, though it is not tied to the older combat includes. -The easiest way to find out what files you will need are to simply open "prc_inc_combat.nss" and -take a quick look at the list of included files. -The list is also helpful for scripters so that they do not include the same files multiple times. -

- -Now, on to the good part! Coding a combat script. -

- -A good example of what you might want to do is the Ravager's "Cruelist Cut". -This ability is only usable up to three times per day. -On a successful melee attack, the player deals 1d4 constitution damage to the enemy. -This damage lasts 5 + Ravager level rounds. -

- -First, you'll have to include the line [#include "prc_inc_combat"] without the brackets. -This tells your script to load the include file. -Then the script will have its void main. -Inside the main function it would calculate everything required to perform its action. - -

-Because this script does not deal any extra physical damage, there are a few less function calls required. -written below is the actual script so you can take a look at how it works. - -
-
#include "prc_inc_combat" -
void main() -
{ -
      //Declare major variables -
      object oPC = OBJECT_SELF; -
      object oTarget = GetSpellTargetObject(); -
      object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); -
      int iDur = 5 + GetLevelByClass(CLASS_TYPE_RAVAGER, oPC); -
      int bIsRangedAttack = GetWeaponRanged(oWeap); -
-
      effect eCon = EffectAbilityDecrease(ABILITY_CONSTITUTION, d4(1) ); -
               eCon = SupernaturalEffect(eCon); -
-
      // script now uses combat system to hit and apply effect if appropriate -
      string sSuccess = "*Cruelist Cut Hit*"; -
      string sMiss = "*Cruelist Cut Miss"; -
-
      if (bIsRangedAttack) -
      { -
           SendMessageToPC(oPC,"You must use a melee weapon with this ability!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      // If they are not within 5 ft, they can't do a melee attack. -
      if(!bIsRangedAttack && GetIsInMeleeRange(oTarget, oPC)) -
      { -
           SendMessageToPC(oPC,"You are not close enough to your target to attack!"); -
           IncrementRemainingFeatUses(oPC, 2348); -
           return; -
      } -
-
      PerformAttackRound(oTarget, oPC, eCon, RoundsToSeconds(iDur), 0, 0, 0, FALSE, sSuccess, sMiss); -
} -

- -If you are used to script all of those functions should have been relatively familiar, -except for "PerformAttackRound". That is the primary function in the include that makes -your life as a scripter far, far easier. I reduced my original Impromtu Sneak Attack code from -200 lines down to about 60 lines. And it is also more accurately done, can deal elemental damage, -and is generally much better all thanks to this function. -

- -I'll do a break down of the parameters of this function so that everyone can see how to use it. -

- -
    -
  1. oTarget - GetSpellTargetObject() - the person being smited!
  2. -
  3. oPC - The person attacking, typically the player.
  4. -
  5. eLink - A special effect or effects to apply to the player.
  6. -
  7. eDuration - the duration of the effects applied to the object.
    -
      -
    1. 0.0 - DURATION_TYPE_INSTANT - effect lasts 0.0 seconds
    2. -
    3. >0.0 - DURATION_TYPE_TEMPORARY - Effect lasts for the duration specified
    4. -
    5. <0.0 - DURATION_TYPE_PERMAMENT - Effect lasts until dispelled, not recommended
    6. -
    -
  8. -
  9. iAttackBonusMod - the attack bonus modifer for attack(s)
  10. -
  11. iDamageModifier - damage added to attack -
      -
    1. If bonuses are only on first attack, this can be an int or a DAMAGE_BONUS_* constant.
    2. -
    3. Otherwise, this must be a DAMAGE_BONUS_* constant.
    4. -
    -
  12. -
  13. iDamageType - the DAMAGE_TYPE_* const of the iDamageModifier.
  14. -
  15. bEffectAllAttacks - True or False.
  16. -
      -
    1. True - Effects all attacks.
    2. -
    3. False - Effects only the first attack that round.
    4. -
    -
  17. sMessageSuccess - message to display on a successful hit. (i.e. "*Cruelist Cut Hit*")
  18. -
  19. sMessageFailure - message to display on a failure to hit. (i.e. "*Cruelist Cut Miss*")
  20. -
- -This function redirects itself to many of the other functions within the combat include. -The nice thing is, all you need to deal with is this single function call. -Once it's setup right, your script will run. -

- -Any improvements to the combat script are typically added to that attack automatically, no recoding the feat. -It takes care of the entire attack round, wether it be a ranged attack or a melee attack, two-handed weapon, -two-weapon fighting, unarmed... Pretty much everything, certainly much more than could be scripted that easily. -

- -If you happen to run into a feat that cannot be done with this, you can always open up the script. -I'll warn you, as of the writing of this guide it is over 3,500 lines of code. -However, the code is well organized and you should not have too much difficulty following it. -Many of those "lines" are actually documentation. - -

-Should there be any bugs in the system, please post a report in our forums. -Also feel free to post any additional things that you would find useful while scripting. -Oni5115 is interested in knowing anything the script cannot handle, so he can add it. -

- -If more example scripts would be helpful feel free to check out the following scripts in the scripts directory (or hak). -
    -
  • prc_at_isa.nss - Impromptu Sneak Attack
  • -
  • prc_dj_selwrath.nss - Selvetarm's Wrath
  • -
  • prc_dj_warstrike.nss - War Strike
  • -
- -

Back to Top -

-

Creating Passive Feats

-
-
- -What is a passive feat? A passive feat is any feat that automatically -adjusts something on the character. -Things like Absolute Ambidexterity, Sight of Gruumsh, etc. -Creating these feats is not as straight forward as an active feat, -but it is fairly easy once you get used to it. -

- -Below is a basic list of what must be done to create a passive feat, -notice it is very similiar to an active feat. - -
    -
  1. Create all required entries in the .tlk file
  2. -
  3. Write script(s) that perform the required player modifications(s)
  4. -
  5. Create icon(s)
  6. -
  7. Create an entry in feat.2da
  8. -
  9. Create an entry in cls_feat_****.2da
  10. -
  11. Create an entry in spells.2da
  12. -
  13. Create an entry in prc_feat_const.nss
  14. -
  15. Create an entry in prc_inc_function.nss.
  16. -
  17. Compile script, test script, debug script
  18. -
  19. Refer to step 9, until it works
  20. -
- -The single most important file for passive feats is "prc_inc_function.nss". -Hands down this is it. Without this file none of your passive feats will work. -This file is called on all major events (onlevel, onequip, onunequip, etc.) -your passive feat will be called when this script is. - -

-To create an "entry" in prc_inc_function, you will need to check out the -"EvalPRCFeats" function. -Inside the function you should see a bunch of lines like the following: - -

-     if(GetLevelByClass(CLASS_TYPE_DUELIST, oPC) > 0) ExecuteScript("prc_duelist", oPC); - -

-This function executes your passive feat script. -Passive feats do not require a script entry in the 2da column as active feats do. -Intead, they require a script entry here in this file. -Make sure you use the approprate CLASS_TYPE_* constant as stored in "prc_class_const.nss". - -

-Another important function is the "DeletePRCLocalInts" function. -This function removes any local ints stored on a character. -This is quite useful and ensures that your script will reset a new value when fired. -An example line from this section is - -

-     DeleteLocalInt(oSkin,"CannyDefenseBonus"); - -

-Scripting the passive feat beyond that is not all that unlike scriping anything else in NwN. -Here is an example function for a passive ability. - -
-
// Applies the Duelist's reflex bonuses as CompositeBonuses on the object's skin. -
// iLevel = integer reflex save bonus -
void DuelistGrace(object oPC, object oSkin, int iLevel) -
{ -
      if(GetLocalInt(oSkin, "GraceBonus") == iLevel) return; -
      -
      if(iLevel > 0) -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", iLevel, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != TRUE) -
                FloatingTextStringOnCreature("Grace On", oPC); -
           SetLocalInt(oPC, "Grace", TRUE); -
      } -
      else -
      { -
           SetCompositeBonus(oSkin, "GraceBonus", 0, ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC, IP_CONST_SAVEBASETYPE_REFLEX); -
           if(GetLocalInt(oPC, "Grace") != FALSE) -
                FloatingTextStringOnCreature("Grace Off", oPC); -
           SetLocalInt(oPC, "Grace", FALSE); -
      } -
} - -

-You might be wondering what the "SetCompositeBonus" function is. -This is another very important function. -This function is responsible for storing and stacking bonuses on a character. -For more information you can check out "inc_item_props.nss". - -

-It should be fairly easy to make most passive feats with this system. -Sometimes however you might also need to dig a little deeper. -For instance, a class might need a passive feat that effects attacks or damage. -While many such feats are typically active, there are some bonuses that end up being passive. -A good example would be the Foe Hunter's Rancor Attack, which deals an additional Xd6 damage -if the enemy is their Hated Enemy. Scripts like this need to go in "x2_s3_onhitcast.nss". -This is in the spells directory (or hak). -In this script you will see a lot of stuff that the PRC needs for one class or another. -There are plenty of examples of what you might need to do in there. - -

Back to Top -

-

-
-
- -

-
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/reserve_tlk_2da_slots.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/reserve_tlk_2da_slots.html deleted file mode 100644 index cd42b941..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/content/prcmaking/reserve_tlk_2da_slots.html +++ /dev/null @@ -1,119 +0,0 @@ - - -Player Resource Consortium :: Manual :: PrC Making :: Reserve 2da/tlk Slots - - - - - - - - - - -
-

:: PrC Making :: Reserve 2da/tlk Slots ::

-
-
- -
- - - - - - - - - - - - - - - - - - - - - -
File to reserve slots in: - -
Reserve slots: - to - -
Name: - -
Reason: - -
- -
-
- -

-
- - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_installation.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_installation.html deleted file mode 100644 index 17e67e78..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_installation.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Installation - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_itemcrafting.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_itemcrafting.html deleted file mode 100644 index edab55bd..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_itemcrafting.html +++ /dev/null @@ -1,23 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Item Crafting - - - - - - - - - - - -
- - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_languages.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_languages.html deleted file mode 100644 index 216e65af..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_languages.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_main.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_main.html deleted file mode 100644 index ff920ba4..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_main.html +++ /dev/null @@ -1,62 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Main - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -

- - - - - - -

- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_modulebuilding.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_modulebuilding.html deleted file mode 100644 index e0d43e48..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_modulebuilding.html +++ /dev/null @@ -1,25 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: Module Building - - - - - - - - - - - -
- - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_prcmaking.html b/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_prcmaking.html deleted file mode 100644 index 7c598d8f..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/spanish/menus/manual_menus_prcmaking.html +++ /dev/null @@ -1,37 +0,0 @@ - - - -Player Resource Consortium :: Manual :: Menus :: PrC Making - - - - - - - - - - - - -
- - - - - - -
- - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_2da_tlk_slots.css b/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_2da_tlk_slots.css deleted file mode 100644 index 5001ff7a..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_2da_tlk_slots.css +++ /dev/null @@ -1,34 +0,0 @@ - - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_common.css b/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_common.css deleted file mode 100644 index aece0712..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_common.css +++ /dev/null @@ -1,110 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_content_common.css b/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_content_common.css deleted file mode 100644 index 2c23756d..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_content_common.css +++ /dev/null @@ -1,82 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_index.css b/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_index.css deleted file mode 100644 index 221b2dff..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_index.css +++ /dev/null @@ -1,30 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_menus_common.css b/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_menus_common.css deleted file mode 100644 index 672f3b87..00000000 --- a/nwn/nwnprc/DocGen/trunk/Main Manual Files/styles/manual_menus_common.css +++ /dev/null @@ -1,58 +0,0 @@ - \ No newline at end of file diff --git a/nwn/nwnprc/_removed/oldprc_favsoulweap.nss b/nwn/nwnprc/_removed/oldprc_favsoulweap.nss new file mode 100644 index 00000000..f06b7dcd --- /dev/null +++ b/nwn/nwnprc/_removed/oldprc_favsoulweap.nss @@ -0,0 +1,174 @@ +//::////////////////////////////////////////////// +//:: Favoured Soul Weapon Conversation +//:: prc_favsoulweap +//::////////////////////////////////////////////// +/** @file + This allows you to choose the weapon for the diety + + + @author Stratovarius + @date Created - 29.10.2005 +*/ +//::////////////////////////////////////////////// +//::////////////////////////////////////////////// + +#include "prc_inc_fork" +#include "inc_item_props" +#include "prc_x2_itemprop" +#include "inc_dynconv" + +////////////////////////////////////////////////// +/* Constant defintions */ +////////////////////////////////////////////////// + +const int STAGE_WEAPON_CHOICE = 0; +const int STAGE_CONFIRMATION = 1; + +////////////////////////////////////////////////// +/* Aid functions */ +////////////////////////////////////////////////// + + + +////////////////////////////////////////////////// +/* Main function */ +////////////////////////////////////////////////// + +void main() +{ + object oPC = GetPCSpeaker(); + /* Get the value of the local variable set by the conversation script calling + * this script. Values: + * DYNCONV_ABORTED Conversation aborted + * DYNCONV_EXITED Conversation exited via the exit node + * DYNCONV_SETUP_STAGE System's reply turn + * 0 Error - something else called the script + * Other The user made a choice + */ + int nValue = GetLocalInt(oPC, DYNCONV_VARIABLE); + // The stage is used to determine the active conversation node. + // 0 is the entry node. + int nStage = GetStage(oPC); + + // Check which of the conversation scripts called the scripts + if(nValue == 0) // All of them set the DynConv_Var to non-zero value, so something is wrong -> abort + return; + + if(nValue == DYNCONV_SETUP_STAGE) + { + // Check if this stage is marked as already set up + // This stops list duplication when scrolling + if(!GetIsStageSetUp(nStage, oPC)) + { + // variable named nStage determines the current conversation node + // Function SetHeader to set the text displayed to the PC + // Function AddChoice to add a response option for the PC. The responses are show in order added + if(nStage == STAGE_WEAPON_CHOICE) + { + string sHeader1 = "Select your Deity's favoured weapon.\n"; + sHeader1 += "This will grant you weapon proficency, weapon focus and, eventually, weapon specialization in that weapon."; + // Set the header + SetHeader(sHeader1); + // Add responses for the PC + + // This reads all of the legal choices from baseitems.2da + int i; + for(i = 0; i < 112; i++) //Total rows in baseitems.2da + { + // If the selection is a legal weapon + if (StringToInt(Get2DACache("baseitems", "WeaponType", i)) > 0) + { + string sWeaponName = GetStringByStrRef(StringToInt(Get2DACache("baseitems", "Name", i))); + // Just in case its a blank entry, don't put it here + if (sWeaponName != "") + { + AddChoice(sWeaponName, i, oPC); + } + } + } + + MarkStageSetUp(STAGE_WEAPON_CHOICE, oPC); // This prevents the setup being run for this stage again until MarkStageNotSetUp is called for it + SetDefaultTokens(); // Set the next, previous, exit and wait tokens to default values + } + else if(nStage == STAGE_CONFIRMATION)//confirmation + { + int nChoice = GetLocalInt(oPC, "FavouredSoulWeapon"); + AddChoice(GetStringByStrRef(4752), TRUE); // "Yes" + AddChoice(GetStringByStrRef(4753), FALSE); // "No" + + string sName = GetStringByStrRef(StringToInt(Get2DACache("baseitems", "Name", nChoice))); + string sText = "You have selected " + sName + " as your deity's chosen weapon.\n"; + sText += "Is this correct?"; + + SetHeader(sText); + MarkStageSetUp(STAGE_CONFIRMATION, oPC); + } + } + + // Do token setup + SetupTokens(); + } + // End of conversation cleanup + else if(nValue == DYNCONV_EXITED) + { + // End of conversation cleanup + DeleteLocalInt(oPC, "FavouredSoulWeapon"); + } + // Abort conversation cleanup. + // NOTE: This section is only run when the conversation is aborted + // while aborting is allowed. When it isn't, the dynconvo infrastructure + // handles restoring the conversation in a transparent manner + else if(nValue == DYNCONV_ABORTED) + { + // End of conversation cleanup + DeleteLocalInt(oPC, "FavouredSoulWeapon"); + } + // Handle PC responses + else + { + // variable named nChoice is the value of the player's choice as stored when building the choice list + // variable named nStage determines the current conversation node + int nChoice = GetChoice(oPC); + if(nStage == STAGE_WEAPON_CHOICE) + { + // Go to this stage next + nStage = STAGE_CONFIRMATION; + SetLocalInt(oPC, "FavouredSoulWeapon", nChoice); + } + else if(nStage == STAGE_CONFIRMATION)//confirmation + { + if(nChoice == TRUE) + { + object oSkin = GetPCSkin(oPC); + int nWeapon = GetLocalInt(oPC, "FavouredSoulWeapon"); + int nWeaponProf = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_WEAPON_PROFICENCY); + int nWProfIprop = FeatToIprop(nWeaponProf); + int nWeaponFocus = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_FOCUS); + int nWFIprop = FeatToIprop(nWeaponFocus); + int nWeaponSpec = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_SPECIALIZATION); + int nWSIprop = FeatToIprop(nWeaponSpec); + + IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWFIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + if (GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC) >= 12) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWSIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + + // Store the weapon for later reuse + // The reason we use the weapon is so we can use the GetFeatByWeaponType function to get both Focus and Spec + SetPersistantLocalInt(oPC, "FavouredSoulDietyWeapon", nWeapon); + + // And we're all done + AllowExit(DYNCONV_EXIT_FORCE_EXIT); + } + else + { + nStage = STAGE_WEAPON_CHOICE; + MarkStageNotSetUp(STAGE_WEAPON_CHOICE, oPC); + MarkStageNotSetUp(STAGE_CONFIRMATION, oPC); + } + + DeleteLocalInt(oPC, "FavouredSoulWeapon"); + } + + // Store the stage value. If it has been changed, this clears out the choices + SetStage(nStage, oPC); + } +} diff --git a/nwn/nwnprc/trunk/2das/cls_feat_coc.2da b/nwn/nwnprc/trunk/2das/cls_feat_coc.2da index f17a3439..39e4dd8c 100644 --- a/nwn/nwnprc/trunk/2das/cls_feat_coc.2da +++ b/nwn/nwnprc/trunk/2das/cls_feat_coc.2da @@ -21,8 +21,8 @@ 17 Whirlwind_Attack 867 1 -1 1 18 Weapon_Finesse 42 1 -1 0 19 Improved_Expertise 390 1 -1 1 -20 ImprovedDisarm 5196 1 -1 1 -21 ImprovedTrip 2807 1 -1 1 +20 ImprovedDisarm 5196 1 -1 0 +21 ImprovedTrip 2807 1 -1 0 22 MountedArchery 1088 1 -1 0 23 Def_Arrow 8 0 -1 0 24 FEAT_EPIC_REPUTATION 586 1 -1 0 diff --git a/nwn/nwnprc/trunk/2das/cls_feat_crinti.2da b/nwn/nwnprc/trunk/2das/cls_feat_crinti.2da index a217d558..adc34fe3 100644 --- a/nwn/nwnprc/trunk/2das/cls_feat_crinti.2da +++ b/nwn/nwnprc/trunk/2das/cls_feat_crinti.2da @@ -1,362 +1,362 @@ 2DA V2.0 - FeatLabel FeatIndex List GrantedOnLevel OnMenu -0 ShadowRide 5325 3 1 1 -1 ShadowWalk 5326 3 3 1 -2 ShadowPounce 5327 3 5 0 -3 Ambidex 1 1 -1 0 -4 CShot 5 1 -1 0 -5 Cleave 6 1 -1 0 -6 DefArrow 8 1 -1 0 -7 Disarm 9 1 -1 0 -8 Dodge 10 1 -1 0 -9 ImpCritClub 15 1 -1 0 -10 ImpCritDagger 52 1 -1 0 -11 ImpCritDart 53 1 -1 0 -12 ImpCritHXBow 54 1 -1 0 -13 ImpCritLgXBow 55 1 -1 0 -14 ImpCritLgMace 56 1 -1 0 -15 ImpCritMorn 57 1 -1 0 -16 ImpCritStaff 58 1 -1 0 -17 ImpCritSpear 59 1 -1 0 -18 ImpCritSickle 60 1 -1 0 -19 ImpCritSling 61 1 -1 0 -20 ImpCritUnArm 62 1 -1 0 -21 ImpCritLongBow 63 1 -1 0 -22 ImpCritShortBow 64 1 -1 0 -23 ImpCritShortSword 65 1 -1 0 -24 ImpCritRapier 66 1 -1 0 -25 ImpCritScim 67 1 -1 0 -26 ImpCritLSw 68 1 -1 0 -27 ImpCritGSw 69 1 -1 0 -28 ImpCritHAxe 70 1 -1 0 -29 ImpCritTAxe 71 1 -1 0 -30 ImpCritBAxe 72 1 -1 0 -31 ImpCritGAxe 73 1 -1 0 -32 ImpCritHalb 74 1 -1 0 -33 ImpCritLgHam 75 1 -1 0 -34 ImpCritLgFlail 76 1 -1 0 -35 ImpCritWHam 77 1 -1 0 -36 ImpCritHFlail 78 1 -1 0 -37 ImpCritKama 79 1 -1 0 -38 ImpCritKukri 80 1 -1 0 -39 ImpCritShur 82 1 -1 0 -40 ImpCritScy 83 1 -1 0 -41 ImpCritKatana 84 1 -1 0 -42 ImpCritBSw 85 1 -1 0 -43 ImpCritDMace 87 1 -1 0 -44 ImpCritDAxe 88 1 -1 0 -45 ImpCrit2Sw 89 1 -1 0 -46 IMP_CRIT_LIGHT_LANCE 24649 1 -1 0 -47 IMP_CRIT_HEAVY_PICK 24650 1 -1 0 -48 IMP_CRIT_LIGHT_PICK 24651 1 -1 0 -49 IMP_CRIT_SAI 24652 1 -1 0 -50 IMP_CRIT_NUNCHAKU 24653 1 -1 0 -51 IMP_CRIT_FALCHION 24654 1 -1 0 -52 IMP_CRIT_SAP 24655 1 -1 0 -53 IMP_CRIT_KATAR 24656 1 -1 0 -54 IMP_CRIT_HEAVY_MACE 24657 1 -1 0 -55 IMP_CRIT_MAUL 24658 1 -1 0 -56 IMP_CRIT_DBL_SCIMITAR 24659 1 -1 0 -57 IMP_CRIT_GOAD 24660 1 -1 0 -58 IMP_CRIT_ELVEN_LIGHTBLADE 24701 1 -1 0 -59 IMP_CRIT_ELVEN_THINBLADE 24709 1 -1 0 -60 IMP_CRIT_ELVEN_COURTBLADE 24717 1 -1 0 -61 ImpDis 16 1 -1 0 -62 ImpKnock 17 1 -1 0 -63 ImpParry 18 1 -1 0 -64 ImpPower 19 1 -1 0 -65 ImpTwo 20 1 -1 0 -66 ImpStrike 21 1 -1 0 -67 KnockDown 23 1 -1 0 -68 Mobility 26 1 -1 0 -69 PBShot 27 1 -1 0 -70 PowerAtk 28 1 -1 0 -71 RapidShot 30 1 -1 0 -72 StunFist 39 1 -1 0 -73 TwoWeap 41 1 -1 0 -74 WeapFinesse 42 1 -1 0 -75 WeapFocClub 43 1 -1 0 -76 WeapFocDagger 90 1 -1 0 -77 WeapFocDart 91 1 -1 0 -78 WeapFocHXBow 92 1 -1 0 -79 WeapFocLgXBow 93 1 -1 0 -80 WeapFocLgMace 94 1 -1 0 -81 WeapFocMorn 95 1 -1 0 -82 WeapFocStaff 96 1 -1 0 -83 WeapFocSpear 97 1 -1 0 -84 WeapFocSickle 98 1 -1 0 -85 WeapFocSling 99 1 -1 0 -86 WeapFocUnArm 100 1 -1 0 -87 WeapFocLongBow 101 1 -1 0 -88 WeapFocShortBow 102 1 -1 0 -89 WeapFocShortSword 103 1 -1 0 -90 WeapFocRapier 104 1 -1 0 -91 WeapFocScim 105 1 -1 0 -92 WeapFocLSw 106 1 -1 0 -93 WeapFocGSw 107 1 -1 0 -94 WeapFocHAxe 108 1 -1 0 -95 WeapFocTAxe 109 1 -1 0 -96 WeapFocBAxe 110 1 -1 0 -97 WeapFocGAxe 111 1 -1 0 -98 WeapFocHalb 112 1 -1 0 -99 WeapFocLgHam 113 1 -1 0 -100 WeapFocLgFlail 114 1 -1 0 -101 WeapFocWHam 115 1 -1 0 -102 WeapFocHFlail 116 1 -1 0 -103 WeapFocKama 117 1 -1 0 -104 WeapFocKukri 118 1 -1 0 -105 WeapFocShur 120 1 -1 0 -106 WeapFocScy 121 1 -1 0 -107 WeapFocKatana 122 1 -1 0 -108 WeapFocBSw 123 1 -1 0 -109 WeapFocDMace 125 1 -1 0 -110 WeapFocDAxe 126 1 -1 0 -111 WeapFoc2Sw 127 1 -1 0 -112 FEAT_WEAPON_FOCUS_TRIDENT 1072 1 -1 0 -113 FEAT_IMPROVED_CRITICAL_TRIDENT 1074 1 -1 0 -114 WF_LIGHT_LANCE 24613 1 -1 0 -115 WF_HEAVY_PICK 24614 1 -1 0 -116 WF_LIGHT_PICK 24615 1 -1 0 -117 WF_SAI 24616 1 -1 0 -118 WF_NUNCHUKU 24617 1 -1 0 -119 WF_FALCHION 24618 1 -1 0 -120 WF_SAP 24619 1 -1 0 -121 WF_KATAR 24620 1 -1 0 -122 WF_HEAVY_MACE 24621 1 -1 0 -123 WF_MAUL 24622 1 -1 0 -124 WF_DOUBLE_SCIMITAR 24623 1 -1 0 -125 WF_GOAD 24624 1 -1 0 -126 WF_ELVEN_LIGHTBLADE 24697 1 -1 0 -127 WF_ELVEN_THINBLADE 24705 1 -1 0 -128 WF_ELVEN_COURTBLADE 24713 1 -1 0 -129 WP_BstrdSwd 7904 1 -1 0 -130 WP_TwoBldSwd 7911 1 -1 0 -131 WP_DireMace 7915 1 -1 0 -132 WP_DblAxe 7916 1 -1 0 -133 WP_Kama 7920 1 -1 0 -134 WP_Katana 7921 1 -1 0 -135 WP_Kukri 7922 1 -1 0 -136 WP_Scythe 7926 1 -1 0 -137 WP_Shuriken 7928 1 -1 0 -138 WP_DwarfWaraxe 7933 1 -1 0 -139 WP_Whip 7934 1 -1 0 -140 WP_Lightblade 7935 1 -1 0 -141 WP_Thinblade 7936 1 -1 0 -142 WP_Courtblade 7937 1 -1 0 -143 WP_Goad 7949 3 1 0 -144 WP_Heavy_Mace 7946 3 1 0 -145 WP_Katar 7945 3 1 0 -146 WP_Sap 7944 3 1 0 -147 WP_Light_Lance 7938 3 1 0 -148 WP_Heavy_Pick 7939 3 1 0 -149 WP_Light_Pick 7940 3 1 0 -150 WP_Falchion 7943 3 1 0 -151 WP_Maul 7947 3 1 0 -152 WP_Sai 7941 3 1 0 -153 WP_Nunchaku 7942 3 1 0 -154 WP_Double_Scimitar 7948 3 1 0 -155 Expertise 389 1 -1 0 -156 ImpExpertise 390 1 -1 0 -157 GreatCleave 391 1 -1 0 -158 SpringAttack 392 1 -1 0 -159 BlindFight 408 1 -1 0 -160 WhirlwindAttack 867 1 -1 0 -161 WeaponFocusdwaxe 952 1 -1 0 -162 WeaponFocuswhip 993 1 -1 0 -163 FEAT_EPIC_ARMOR_SKIN 490 1 -1 0 -164 FEAT_EPIC_DAMAGE_REDUCTION_3 492 1 -1 0 -165 FEAT_EPIC_DAMAGE_REDUCTION_6 493 1 -1 0 -166 FEAT_EPIC_DAMAGE_REDUCTION_9 494 1 -1 0 -167 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB 495 1 -1 0 -168 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER 496 1 -1 0 -169 FEAT_EPIC_DEVASTATING_CRITICAL_DART 497 1 -1 0 -170 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW 498 1 -1 0 -171 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW 499 1 -1 0 -172 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE 500 1 -1 0 -173 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR 501 1 -1 0 -174 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF 502 1 -1 0 -175 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR 503 1 -1 0 -176 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE 504 1 -1 0 -177 FEAT_EPIC_DEVASTATING_CRITICAL_SLING 505 1 -1 0 -178 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED 506 1 -1 0 -179 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW 507 1 -1 0 -180 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW 508 1 -1 0 -181 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD 509 1 -1 0 -182 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER 510 1 -1 0 -183 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR 511 1 -1 0 -184 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD 512 1 -1 0 -185 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD 513 1 -1 0 -186 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE 514 1 -1 0 -187 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE 515 1 -1 0 -188 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE 516 1 -1 0 -189 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE 517 1 -1 0 -190 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD 518 1 -1 0 -191 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER 519 1 -1 0 -192 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL 520 1 -1 0 -193 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER 521 1 -1 0 -194 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL 522 1 -1 0 -195 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA 523 1 -1 0 -196 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI 524 1 -1 0 -197 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN 525 1 -1 0 -198 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE 526 1 -1 0 -199 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA 527 1 -1 0 -200 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD 528 1 -1 0 -201 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE 529 1 -1 0 -202 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE 530 1 -1 0 -203 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD 531 1 -1 0 -204 FEAT_EPIC_PROWESS 584 1 -1 0 -205 EPIC_WEAPON_FOCUS_LANCE 24637 1 -1 0 -206 EPIC_WEAPON_FOCUS_HEAVY_PICK 24638 1 -1 0 -207 EPIC_WEAPON_FOCUS_LIGHT_PICK 24639 1 -1 0 -208 EPIC_WEAPON_FOCUS_SAI 24640 1 -1 0 -209 EPIC_WEAPON_FOCUS_NUNCHAKU 24641 1 -1 0 -210 EPIC_WEAPON_FOCUS_FALCHION 24642 1 -1 0 -211 EPIC_WEAPON_FOCUS_SAP 24643 1 -1 0 -212 EPIC_WEAPON_FOCUS_KATAR 24644 1 -1 0 -213 EPIC_WEAPON_FOCUS_HEAVY_MACE 24645 1 -1 0 -214 EPIC_WEAPON_FOCUS_MAUL 24646 1 -1 0 -215 EPIC_WEAPON_FOCUS_DBL_SCIMITAR 24647 1 -1 0 -216 EPIC_WEAPON_FOCUS_GOAD 24648 1 -1 0 -217 EPIC_WEAPON_FOCUS_ELVEN_LIGHTBLADE 24698 1 -1 0 -218 EPIC_WEAPON_FOCUS_ELVEN_THINBLADE 24706 1 -1 0 -219 EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE 24714 1 -1 0 -220 OVERWHELMING_CRITICAL_LIGHT_LANCE 24661 1 -1 0 -221 OVERWHELMING_CRITICAL_HEAVY_PICK 24662 1 -1 0 -222 OVERWHELMING_CRITICAL_LIGHT_PICK 24663 1 -1 0 -223 OVERWHELMING_CRITICAL_SAI 24664 1 -1 0 -224 OVERWHELMING_CRITICAL_NUNCHAKU 24665 1 -1 0 -225 OVERWHELMING_CRITICAL_FALCHION 24666 1 -1 0 -226 OVERWHELMING_CRITICAL_SAP 24667 1 -1 0 -227 OVERWHELMING_CRITICAL_KATAR 24668 1 -1 0 -228 OVERWHELMING_CRITICAL_HEAVY_MACE 24669 1 -1 0 -229 OVERWHELMING_CRITICAL_MAUL 24670 1 -1 0 -230 OVERWHELMING_CRITICAL_DBL_SCIMITAR 24671 1 -1 0 -231 OVERWHELMING_CRITICAL_GOAD 24672 1 -1 0 -232 OVERWHELMING_CRITICAL_ELVEN_LIGHTBLADE 24702 1 -1 0 -233 OVERWHELMING_CRITICAL_ELVEN_THINBLADE 24710 1 -1 0 -234 OVERWHELMING_CRITICAL_ELVEN_COURTBLADE 24718 1 -1 0 -235 DEVASTATING_CRITICAL_LIGHT_LANCE 24673 1 -1 0 -236 DEVASTATING_CRITICAL_HEAVY_PICK 24674 1 -1 0 -237 DEVASTATING_CRITICAL_LIGHT_PICK 24675 1 -1 0 -238 DEVASTATING_CRITICAL_SAI 24676 1 -1 0 -239 DEVASTATING_CRITICAL_NUNCHAKU 24677 1 -1 0 -240 DEVASTATING_CRITICAL_FALCHION 24678 1 -1 0 -241 DEVASTATING_CRITICAL_SAP 24679 1 -1 0 -242 DEVASTATING_CRITICAL_KATAR 24680 1 -1 0 -243 DEVASTATING_CRITICAL_HEAVY_MACE 24681 1 -1 0 -244 DEVASTATING_CRITICAL_MAUL 24682 1 -1 0 -245 DEVASTATING_CRITICAL_DBL_SCIMITAR 24683 1 -1 0 -246 DEVASTATING_CRITICAL_GOAD 24684 1 -1 0 -247 DEVASTATING_CRITICAL_ELVEN_LIGHTBLADE 24703 1 -1 0 -248 DEVASTATING_CRITICAL_ELVEN_THINBLADE 24711 1 -1 0 -249 DEVASTATING_CRITICAL_ELVEN_COURTBLADE 24719 1 -1 0 -250 FEAT_EPIC_WEAPON_FOCUS_CLUB 619 1 -1 0 -251 FEAT_EPIC_WEAPON_FOCUS_DAGGER 620 1 -1 0 -252 FEAT_EPIC_WEAPON_FOCUS_DART 621 1 -1 0 -253 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW 622 1 -1 0 -254 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW 623 1 -1 0 -255 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE 624 1 -1 0 -256 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR 625 1 -1 0 -257 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF 626 1 -1 0 -258 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR 627 1 -1 0 -259 FEAT_EPIC_WEAPON_FOCUS_SICKLE 628 1 -1 0 -260 FEAT_EPIC_WEAPON_FOCUS_SLING 629 1 -1 0 -261 FEAT_EPIC_WEAPON_FOCUS_UNARMED 630 1 -1 0 -262 FEAT_EPIC_WEAPON_FOCUS_LONGBOW 631 1 -1 0 -263 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW 632 1 -1 0 -264 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD 633 1 -1 0 -265 FEAT_EPIC_WEAPON_FOCUS_RAPIER 634 1 -1 0 -266 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR 635 1 -1 0 -267 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD 636 1 -1 0 -268 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD 637 1 -1 0 -269 FEAT_EPIC_WEAPON_FOCUS_HANDAXE 638 1 -1 0 -270 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE 639 1 -1 0 -271 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE 640 1 -1 0 -272 FEAT_EPIC_WEAPON_FOCUS_GREATAXE 641 1 -1 0 -273 FEAT_EPIC_WEAPON_FOCUS_HALBERD 642 1 -1 0 -274 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER 643 1 -1 0 -275 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL 644 1 -1 0 -276 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER 645 1 -1 0 -277 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL 646 1 -1 0 -278 FEAT_EPIC_WEAPON_FOCUS_KAMA 647 1 -1 0 -279 FEAT_EPIC_WEAPON_FOCUS_KUKRI 648 1 -1 0 -280 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN 649 1 -1 0 -281 FEAT_EPIC_WEAPON_FOCUS_SCYTHE 650 1 -1 0 -282 FEAT_EPIC_WEAPON_FOCUS_KATANA 651 1 -1 0 -283 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD 652 1 -1 0 -284 FEAT_EPIC_WEAPON_FOCUS_DIREMACE 653 1 -1 0 -285 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE 654 1 -1 0 -286 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD 655 1 -1 0 -287 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB 709 1 -1 0 -288 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER 710 1 -1 0 -289 FEAT_EPIC_OVERWHELMING_CRITICAL_DART 711 1 -1 0 -290 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW 712 1 -1 0 -291 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW 713 1 -1 0 -292 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE 714 1 -1 0 -293 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR 715 1 -1 0 -294 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF 716 1 -1 0 -295 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR 717 1 -1 0 -296 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE 718 1 -1 0 -297 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING 719 1 -1 0 -298 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED 720 1 -1 0 -299 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW 721 1 -1 0 -300 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW 722 1 -1 0 -301 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD 723 1 -1 0 -302 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER 724 1 -1 0 -303 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR 725 1 -1 0 -304 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD 726 1 -1 0 -305 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD 727 1 -1 0 -306 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE 728 1 -1 0 -307 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE 729 1 -1 0 -308 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE 730 1 -1 0 -309 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE 731 1 -1 0 -310 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD 732 1 -1 0 -311 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER 733 1 -1 0 -312 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL 734 1 -1 0 -313 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER 735 1 -1 0 -314 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL 736 1 -1 0 -315 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA 737 1 -1 0 -316 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI 738 1 -1 0 -317 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN 739 1 -1 0 -318 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE 740 1 -1 0 -319 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA 741 1 -1 0 -320 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD 742 1 -1 0 -321 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE 743 1 -1 0 -322 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE 744 1 -1 0 -323 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD 745 1 -1 0 -324 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT 1075 1 -1 0 -325 FEAT_EPIC_WEAPON_FOCUS_TRIDENT 1076 1 -1 0 -326 FEAT_EPIC_OVERWHELMING_CRITICAL_TRIDENT 1078 1 -1 0 -327 FEAT_EPIC_TOUGHNESS_1 754 1 -1 0 -328 FEAT_EPIC_TOUGHNESS_2 755 1 -1 0 -329 FEAT_EPIC_TOUGHNESS_3 756 1 -1 0 -330 FEAT_EPIC_TOUGHNESS_4 757 1 -1 0 -331 FEAT_EPIC_TOUGHNESS_5 758 1 -1 0 -332 FEAT_EPIC_TOUGHNESS_6 759 1 -1 0 -333 FEAT_EPIC_TOUGHNESS_7 760 1 -1 0 -334 FEAT_EPIC_TOUGHNESS_8 761 1 -1 0 -335 FEAT_EPIC_TOUGHNESS_9 762 1 -1 0 -336 FEAT_EPIC_TOUGHNESS_10 763 1 -1 0 -337 FEAT_EPIC_DEVASTATING_CRITICAL_DWAXE 955 1 -1 0 -338 FEAT_EPIC_WEAPON_FOCUS_DWAXE 956 1 -1 0 -339 FEAT_EPIC_OVERWHELMING_CRITICAL_DWAXE 958 1 -1 0 -340 FEAT_IMPROVED_CRITICAL_WHIP 995 1 -1 0 -341 FEAT_EPIC_WEAPON_FOCUS_WHIP 997 1 -1 0 -342 FEAT_EPIC_DEVASTATING_CRITICAL_WHIP 996 1 -1 0 -343 FEAT_EPIC_OVERWHELMING_CRITICAL_WHIP 999 1 -1 0 -344 FEAT_IMPROVED_WHIRLWIND 868 1 -1 0 -345 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0 -346 FEAT_EPIC_SPELL_FOCUS_ABJURATION 610 1 -1 0 -347 FEAT_EPIC_SPELL_FOCUS_CONJURATION 611 1 -1 0 -348 FEAT_EPIC_SPELL_FOCUS_DIVINATION 612 1 -1 0 -349 FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT 613 1 -1 0 -350 FEAT_EPIC_SPELL_FOCUS_EVOCATION 614 1 -1 0 -351 FEAT_EPIC_SPELL_FOCUS_ILLUSION 615 1 -1 0 -352 FEAT_EPIC_SPELL_FOCUS_NECROMANCY 616 1 -1 0 -353 FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION 617 1 -1 0 -354 FEAT_EPIC_SPELL_PENETRATION 618 1 -1 0 -355 FEAT_EPIC_IMPROVED_COMBAT_CASTING 696 1 -1 0 -356 FEAT_EPIC_AUTOMATIC_STILL_SPELL_1 863 1 -1 0 -357 FEAT_EPIC_AUTOMATIC_STILL_SPELL_2 864 1 -1 0 -358 FEAT_EPIC_AUTOMATIC_STILL_SPELL_3 865 1 -1 0 + FeatLabel FeatIndex List GrantedOnLevel OnMenu +0 ShadowRide 5325 3 1 1 +1 ShadowWalk 5326 3 3 1 +2 ShadowPounce 5327 3 5 0 +3 Ambidex 1 1 -1 0 +4 CShot 5 1 -1 0 +5 Cleave 6 1 -1 0 +6 DefArrow 8 1 -1 0 +7 Disarm 9 1 -1 0 +8 Dodge 10 1 -1 0 +9 ImpCritClub 15 1 -1 0 +10 ImpCritDagger 52 1 -1 0 +11 ImpCritDart 53 1 -1 0 +12 ImpCritHXBow 54 1 -1 0 +13 ImpCritLgXBow 55 1 -1 0 +14 ImpCritLgMace 56 1 -1 0 +15 ImpCritMorn 57 1 -1 0 +16 ImpCritStaff 58 1 -1 0 +17 ImpCritSpear 59 1 -1 0 +18 ImpCritSickle 60 1 -1 0 +19 ImpCritSling 61 1 -1 0 +20 ImpCritUnArm 62 1 -1 0 +21 ImpCritLongBow 63 1 -1 0 +22 ImpCritShortBow 64 1 -1 0 +23 ImpCritShortSword 65 1 -1 0 +24 ImpCritRapier 66 1 -1 0 +25 ImpCritScim 67 1 -1 0 +26 ImpCritLSw 68 1 -1 0 +27 ImpCritGSw 69 1 -1 0 +28 ImpCritHAxe 70 1 -1 0 +29 ImpCritTAxe 71 1 -1 0 +30 ImpCritBAxe 72 1 -1 0 +31 ImpCritGAxe 73 1 -1 0 +32 ImpCritHalb 74 1 -1 0 +33 ImpCritLgHam 75 1 -1 0 +34 ImpCritLgFlail 76 1 -1 0 +35 ImpCritWHam 77 1 -1 0 +36 ImpCritHFlail 78 1 -1 0 +37 ImpCritKama 79 1 -1 0 +38 ImpCritKukri 80 1 -1 0 +39 ImpCritShur 82 1 -1 0 +40 ImpCritScy 83 1 -1 0 +41 ImpCritKatana 84 1 -1 0 +42 ImpCritBSw 85 1 -1 0 +43 ImpCritDMace 87 1 -1 0 +44 ImpCritDAxe 88 1 -1 0 +45 ImpCrit2Sw 89 1 -1 0 +46 IMP_CRIT_LIGHT_LANCE 24649 1 -1 0 +47 IMP_CRIT_HEAVY_PICK 24650 1 -1 0 +48 IMP_CRIT_LIGHT_PICK 24651 1 -1 0 +49 IMP_CRIT_SAI 24652 1 -1 0 +50 IMP_CRIT_NUNCHAKU 24653 1 -1 0 +51 IMP_CRIT_FALCHION 24654 1 -1 0 +52 IMP_CRIT_SAP 24655 1 -1 0 +53 IMP_CRIT_KATAR 24656 1 -1 0 +54 IMP_CRIT_HEAVY_MACE 24657 1 -1 0 +55 IMP_CRIT_MAUL 24658 1 -1 0 +56 IMP_CRIT_DBL_SCIMITAR 24659 1 -1 0 +57 IMP_CRIT_GOAD 24660 1 -1 0 +58 IMP_CRIT_ELVEN_LIGHTBLADE 24701 1 -1 0 +59 IMP_CRIT_ELVEN_THINBLADE 24709 1 -1 0 +60 IMP_CRIT_ELVEN_COURTBLADE 24717 1 -1 0 +61 ImpDis 16 1 -1 0 +62 ImpKnock 17 1 -1 0 +63 ImpParry 18 1 -1 0 +64 ImpPower 19 1 -1 0 +65 ImpTwo 20 1 -1 0 +66 ImpStrike 21 1 -1 0 +67 KnockDown 23 1 -1 0 +68 Mobility 26 1 -1 0 +69 PBShot 27 1 -1 0 +70 PowerAtk 28 1 -1 0 +71 RapidShot 30 1 -1 0 +72 StunFist 39 1 -1 0 +73 TwoWeap 41 1 -1 0 +74 WeapFinesse 42 1 -1 0 +75 WeapFocClub 43 1 -1 0 +76 WeapFocDagger 90 1 -1 0 +77 WeapFocDart 91 1 -1 0 +78 WeapFocHXBow 92 1 -1 0 +79 WeapFocLgXBow 93 1 -1 0 +80 WeapFocLgMace 94 1 -1 0 +81 WeapFocMorn 95 1 -1 0 +82 WeapFocStaff 96 1 -1 0 +83 WeapFocSpear 97 1 -1 0 +84 WeapFocSickle 98 1 -1 0 +85 WeapFocSling 99 1 -1 0 +86 WeapFocUnArm 100 1 -1 0 +87 WeapFocLongBow 101 1 -1 0 +88 WeapFocShortBow 102 1 -1 0 +89 WeapFocShortSword 103 1 -1 0 +90 WeapFocRapier 104 1 -1 0 +91 WeapFocScim 105 1 -1 0 +92 WeapFocLSw 106 1 -1 0 +93 WeapFocGSw 107 1 -1 0 +94 WeapFocHAxe 108 1 -1 0 +95 WeapFocTAxe 109 1 -1 0 +96 WeapFocBAxe 110 1 -1 0 +97 WeapFocGAxe 111 1 -1 0 +98 WeapFocHalb 112 1 -1 0 +99 WeapFocLgHam 113 1 -1 0 +100 WeapFocLgFlail 114 1 -1 0 +101 WeapFocWHam 115 1 -1 0 +102 WeapFocHFlail 116 1 -1 0 +103 WeapFocKama 117 1 -1 0 +104 WeapFocKukri 118 1 -1 0 +105 WeapFocShur 120 1 -1 0 +106 WeapFocScy 121 1 -1 0 +107 WeapFocKatana 122 1 -1 0 +108 WeapFocBSw 123 1 -1 0 +109 WeapFocDMace 125 1 -1 0 +110 WeapFocDAxe 126 1 -1 0 +111 WeapFoc2Sw 127 1 -1 0 +112 FEAT_WEAPON_FOCUS_TRIDENT 1072 1 -1 0 +113 FEAT_IMPROVED_CRITICAL_TRIDENT 1074 1 -1 0 +114 WF_LIGHT_LANCE 24613 1 -1 0 +115 WF_HEAVY_PICK 24614 1 -1 0 +116 WF_LIGHT_PICK 24615 1 -1 0 +117 WF_SAI 24616 1 -1 0 +118 WF_NUNCHUKU 24617 1 -1 0 +119 WF_FALCHION 24618 1 -1 0 +120 WF_SAP 24619 1 -1 0 +121 WF_KATAR 24620 1 -1 0 +122 WF_HEAVY_MACE 24621 1 -1 0 +123 WF_MAUL 24622 1 -1 0 +124 WF_DOUBLE_SCIMITAR 24623 1 -1 0 +125 WF_GOAD 24624 1 -1 0 +126 WF_ELVEN_LIGHTBLADE 24697 1 -1 0 +127 WF_ELVEN_THINBLADE 24705 1 -1 0 +128 WF_ELVEN_COURTBLADE 24713 1 -1 0 +129 WP_BstrdSwd 7904 1 -1 0 +130 WP_TwoBldSwd 7911 1 -1 0 +131 WP_DireMace 7915 1 -1 0 +132 WP_DblAxe 7916 1 -1 0 +133 WP_Kama 7920 1 -1 0 +134 WP_Katana 7921 1 -1 0 +135 WP_Kukri 7922 1 -1 0 +136 WP_Scythe 7926 1 -1 0 +137 WP_Shuriken 7928 1 -1 0 +138 WP_DwarfWaraxe 7933 1 -1 0 +139 WP_Whip 7934 1 -1 0 +140 WP_Lightblade 7935 1 -1 0 +141 WP_Thinblade 7936 1 -1 0 +142 WP_Courtblade 7937 1 -1 0 +143 WP_Goad 7949 3 -1 0 +144 WP_Heavy_Mace 7946 3 -1 0 +145 WP_Katar 7945 3 -1 0 +146 WP_Sap 7944 3 -1 0 +147 WP_Light_Lance 7938 3 -1 0 +148 WP_Heavy_Pick 7939 3 -1 0 +149 WP_Light_Pick 7940 3 -1 0 +150 WP_Falchion 7943 3 -1 0 +151 WP_Maul 7947 3 -1 0 +152 WP_Sai 7941 3 -1 0 +153 WP_Nunchaku 7942 3 -1 0 +154 WP_Double_Scimitar 7948 3 -1 0 +155 Expertise 389 1 -1 0 +156 ImpExpertise 390 1 -1 0 +157 GreatCleave 391 1 -1 0 +158 SpringAttack 392 1 -1 0 +159 BlindFight 408 1 -1 0 +160 WhirlwindAttack 867 1 -1 0 +161 WeaponFocusdwaxe 952 1 -1 0 +162 WeaponFocuswhip 993 1 -1 0 +163 FEAT_EPIC_ARMOR_SKIN 490 1 -1 0 +164 FEAT_EPIC_DAMAGE_REDUCTION_3 492 1 -1 0 +165 FEAT_EPIC_DAMAGE_REDUCTION_6 493 1 -1 0 +166 FEAT_EPIC_DAMAGE_REDUCTION_9 494 1 -1 0 +167 FEAT_EPIC_DEVASTATING_CRITICAL_CLUB 495 1 -1 0 +168 FEAT_EPIC_DEVASTATING_CRITICAL_DAGGER 496 1 -1 0 +169 FEAT_EPIC_DEVASTATING_CRITICAL_DART 497 1 -1 0 +170 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYCROSSBOW 498 1 -1 0 +171 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTCROSSBOW 499 1 -1 0 +172 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTMACE 500 1 -1 0 +173 FEAT_EPIC_DEVASTATING_CRITICAL_MORNINGSTAR 501 1 -1 0 +174 FEAT_EPIC_DEVASTATING_CRITICAL_QUARTERSTAFF 502 1 -1 0 +175 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSPEAR 503 1 -1 0 +176 FEAT_EPIC_DEVASTATING_CRITICAL_SICKLE 504 1 -1 0 +177 FEAT_EPIC_DEVASTATING_CRITICAL_SLING 505 1 -1 0 +178 FEAT_EPIC_DEVASTATING_CRITICAL_UNARMED 506 1 -1 0 +179 FEAT_EPIC_DEVASTATING_CRITICAL_LONGBOW 507 1 -1 0 +180 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTBOW 508 1 -1 0 +181 FEAT_EPIC_DEVASTATING_CRITICAL_SHORTSWORD 509 1 -1 0 +182 FEAT_EPIC_DEVASTATING_CRITICAL_RAPIER 510 1 -1 0 +183 FEAT_EPIC_DEVASTATING_CRITICAL_SCIMITAR 511 1 -1 0 +184 FEAT_EPIC_DEVASTATING_CRITICAL_LONGSWORD 512 1 -1 0 +185 FEAT_EPIC_DEVASTATING_CRITICAL_GREATSWORD 513 1 -1 0 +186 FEAT_EPIC_DEVASTATING_CRITICAL_HANDAXE 514 1 -1 0 +187 FEAT_EPIC_DEVASTATING_CRITICAL_THROWINGAXE 515 1 -1 0 +188 FEAT_EPIC_DEVASTATING_CRITICAL_BATTLEAXE 516 1 -1 0 +189 FEAT_EPIC_DEVASTATING_CRITICAL_GREATAXE 517 1 -1 0 +190 FEAT_EPIC_DEVASTATING_CRITICAL_HALBERD 518 1 -1 0 +191 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTHAMMER 519 1 -1 0 +192 FEAT_EPIC_DEVASTATING_CRITICAL_LIGHTFLAIL 520 1 -1 0 +193 FEAT_EPIC_DEVASTATING_CRITICAL_WARHAMMER 521 1 -1 0 +194 FEAT_EPIC_DEVASTATING_CRITICAL_HEAVYFLAIL 522 1 -1 0 +195 FEAT_EPIC_DEVASTATING_CRITICAL_KAMA 523 1 -1 0 +196 FEAT_EPIC_DEVASTATING_CRITICAL_KUKRI 524 1 -1 0 +197 FEAT_EPIC_DEVASTATING_CRITICAL_SHURIKEN 525 1 -1 0 +198 FEAT_EPIC_DEVASTATING_CRITICAL_SCYTHE 526 1 -1 0 +199 FEAT_EPIC_DEVASTATING_CRITICAL_KATANA 527 1 -1 0 +200 FEAT_EPIC_DEVASTATING_CRITICAL_BASTARDSWORD 528 1 -1 0 +201 FEAT_EPIC_DEVASTATING_CRITICAL_DIREMACE 529 1 -1 0 +202 FEAT_EPIC_DEVASTATING_CRITICAL_DOUBLEAXE 530 1 -1 0 +203 FEAT_EPIC_DEVASTATING_CRITICAL_TWOBLADEDSWORD 531 1 -1 0 +204 FEAT_EPIC_PROWESS 584 1 -1 0 +205 EPIC_WEAPON_FOCUS_LANCE 24637 1 -1 0 +206 EPIC_WEAPON_FOCUS_HEAVY_PICK 24638 1 -1 0 +207 EPIC_WEAPON_FOCUS_LIGHT_PICK 24639 1 -1 0 +208 EPIC_WEAPON_FOCUS_SAI 24640 1 -1 0 +209 EPIC_WEAPON_FOCUS_NUNCHAKU 24641 1 -1 0 +210 EPIC_WEAPON_FOCUS_FALCHION 24642 1 -1 0 +211 EPIC_WEAPON_FOCUS_SAP 24643 1 -1 0 +212 EPIC_WEAPON_FOCUS_KATAR 24644 1 -1 0 +213 EPIC_WEAPON_FOCUS_HEAVY_MACE 24645 1 -1 0 +214 EPIC_WEAPON_FOCUS_MAUL 24646 1 -1 0 +215 EPIC_WEAPON_FOCUS_DBL_SCIMITAR 24647 1 -1 0 +216 EPIC_WEAPON_FOCUS_GOAD 24648 1 -1 0 +217 EPIC_WEAPON_FOCUS_ELVEN_LIGHTBLADE 24698 1 -1 0 +218 EPIC_WEAPON_FOCUS_ELVEN_THINBLADE 24706 1 -1 0 +219 EPIC_WEAPON_FOCUS_ELVEN_COURTBLADE 24714 1 -1 0 +220 OVERWHELMING_CRITICAL_LIGHT_LANCE 24661 1 -1 0 +221 OVERWHELMING_CRITICAL_HEAVY_PICK 24662 1 -1 0 +222 OVERWHELMING_CRITICAL_LIGHT_PICK 24663 1 -1 0 +223 OVERWHELMING_CRITICAL_SAI 24664 1 -1 0 +224 OVERWHELMING_CRITICAL_NUNCHAKU 24665 1 -1 0 +225 OVERWHELMING_CRITICAL_FALCHION 24666 1 -1 0 +226 OVERWHELMING_CRITICAL_SAP 24667 1 -1 0 +227 OVERWHELMING_CRITICAL_KATAR 24668 1 -1 0 +228 OVERWHELMING_CRITICAL_HEAVY_MACE 24669 1 -1 0 +229 OVERWHELMING_CRITICAL_MAUL 24670 1 -1 0 +230 OVERWHELMING_CRITICAL_DBL_SCIMITAR 24671 1 -1 0 +231 OVERWHELMING_CRITICAL_GOAD 24672 1 -1 0 +232 OVERWHELMING_CRITICAL_ELVEN_LIGHTBLADE 24702 1 -1 0 +233 OVERWHELMING_CRITICAL_ELVEN_THINBLADE 24710 1 -1 0 +234 OVERWHELMING_CRITICAL_ELVEN_COURTBLADE 24718 1 -1 0 +235 DEVASTATING_CRITICAL_LIGHT_LANCE 24673 1 -1 0 +236 DEVASTATING_CRITICAL_HEAVY_PICK 24674 1 -1 0 +237 DEVASTATING_CRITICAL_LIGHT_PICK 24675 1 -1 0 +238 DEVASTATING_CRITICAL_SAI 24676 1 -1 0 +239 DEVASTATING_CRITICAL_NUNCHAKU 24677 1 -1 0 +240 DEVASTATING_CRITICAL_FALCHION 24678 1 -1 0 +241 DEVASTATING_CRITICAL_SAP 24679 1 -1 0 +242 DEVASTATING_CRITICAL_KATAR 24680 1 -1 0 +243 DEVASTATING_CRITICAL_HEAVY_MACE 24681 1 -1 0 +244 DEVASTATING_CRITICAL_MAUL 24682 1 -1 0 +245 DEVASTATING_CRITICAL_DBL_SCIMITAR 24683 1 -1 0 +246 DEVASTATING_CRITICAL_GOAD 24684 1 -1 0 +247 DEVASTATING_CRITICAL_ELVEN_LIGHTBLADE 24703 1 -1 0 +248 DEVASTATING_CRITICAL_ELVEN_THINBLADE 24711 1 -1 0 +249 DEVASTATING_CRITICAL_ELVEN_COURTBLADE 24719 1 -1 0 +250 FEAT_EPIC_WEAPON_FOCUS_CLUB 619 1 -1 0 +251 FEAT_EPIC_WEAPON_FOCUS_DAGGER 620 1 -1 0 +252 FEAT_EPIC_WEAPON_FOCUS_DART 621 1 -1 0 +253 FEAT_EPIC_WEAPON_FOCUS_HEAVYCROSSBOW 622 1 -1 0 +254 FEAT_EPIC_WEAPON_FOCUS_LIGHTCROSSBOW 623 1 -1 0 +255 FEAT_EPIC_WEAPON_FOCUS_LIGHTMACE 624 1 -1 0 +256 FEAT_EPIC_WEAPON_FOCUS_MORNINGSTAR 625 1 -1 0 +257 FEAT_EPIC_WEAPON_FOCUS_QUARTERSTAFF 626 1 -1 0 +258 FEAT_EPIC_WEAPON_FOCUS_SHORTSPEAR 627 1 -1 0 +259 FEAT_EPIC_WEAPON_FOCUS_SICKLE 628 1 -1 0 +260 FEAT_EPIC_WEAPON_FOCUS_SLING 629 1 -1 0 +261 FEAT_EPIC_WEAPON_FOCUS_UNARMED 630 1 -1 0 +262 FEAT_EPIC_WEAPON_FOCUS_LONGBOW 631 1 -1 0 +263 FEAT_EPIC_WEAPON_FOCUS_SHORTBOW 632 1 -1 0 +264 FEAT_EPIC_WEAPON_FOCUS_SHORTSWORD 633 1 -1 0 +265 FEAT_EPIC_WEAPON_FOCUS_RAPIER 634 1 -1 0 +266 FEAT_EPIC_WEAPON_FOCUS_SCIMITAR 635 1 -1 0 +267 FEAT_EPIC_WEAPON_FOCUS_LONGSWORD 636 1 -1 0 +268 FEAT_EPIC_WEAPON_FOCUS_GREATSWORD 637 1 -1 0 +269 FEAT_EPIC_WEAPON_FOCUS_HANDAXE 638 1 -1 0 +270 FEAT_EPIC_WEAPON_FOCUS_THROWINGAXE 639 1 -1 0 +271 FEAT_EPIC_WEAPON_FOCUS_BATTLEAXE 640 1 -1 0 +272 FEAT_EPIC_WEAPON_FOCUS_GREATAXE 641 1 -1 0 +273 FEAT_EPIC_WEAPON_FOCUS_HALBERD 642 1 -1 0 +274 FEAT_EPIC_WEAPON_FOCUS_LIGHTHAMMER 643 1 -1 0 +275 FEAT_EPIC_WEAPON_FOCUS_LIGHTFLAIL 644 1 -1 0 +276 FEAT_EPIC_WEAPON_FOCUS_WARHAMMER 645 1 -1 0 +277 FEAT_EPIC_WEAPON_FOCUS_HEAVYFLAIL 646 1 -1 0 +278 FEAT_EPIC_WEAPON_FOCUS_KAMA 647 1 -1 0 +279 FEAT_EPIC_WEAPON_FOCUS_KUKRI 648 1 -1 0 +280 FEAT_EPIC_WEAPON_FOCUS_SHURIKEN 649 1 -1 0 +281 FEAT_EPIC_WEAPON_FOCUS_SCYTHE 650 1 -1 0 +282 FEAT_EPIC_WEAPON_FOCUS_KATANA 651 1 -1 0 +283 FEAT_EPIC_WEAPON_FOCUS_BASTARDSWORD 652 1 -1 0 +284 FEAT_EPIC_WEAPON_FOCUS_DIREMACE 653 1 -1 0 +285 FEAT_EPIC_WEAPON_FOCUS_DOUBLEAXE 654 1 -1 0 +286 FEAT_EPIC_WEAPON_FOCUS_TWOBLADEDSWORD 655 1 -1 0 +287 FEAT_EPIC_OVERWHELMING_CRITICAL_CLUB 709 1 -1 0 +288 FEAT_EPIC_OVERWHELMING_CRITICAL_DAGGER 710 1 -1 0 +289 FEAT_EPIC_OVERWHELMING_CRITICAL_DART 711 1 -1 0 +290 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYCROSSBOW 712 1 -1 0 +291 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTCROSSBOW 713 1 -1 0 +292 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTMACE 714 1 -1 0 +293 FEAT_EPIC_OVERWHELMING_CRITICAL_MORNINGSTAR 715 1 -1 0 +294 FEAT_EPIC_OVERWHELMING_CRITICAL_QUARTERSTAFF 716 1 -1 0 +295 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSPEAR 717 1 -1 0 +296 FEAT_EPIC_OVERWHELMING_CRITICAL_SICKLE 718 1 -1 0 +297 FEAT_EPIC_OVERWHELMING_CRITICAL_SLING 719 1 -1 0 +298 FEAT_EPIC_OVERWHELMING_CRITICAL_UNARMED 720 1 -1 0 +299 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGBOW 721 1 -1 0 +300 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTBOW 722 1 -1 0 +301 FEAT_EPIC_OVERWHELMING_CRITICAL_SHORTSWORD 723 1 -1 0 +302 FEAT_EPIC_OVERWHELMING_CRITICAL_RAPIER 724 1 -1 0 +303 FEAT_EPIC_OVERWHELMING_CRITICAL_SCIMITAR 725 1 -1 0 +304 FEAT_EPIC_OVERWHELMING_CRITICAL_LONGSWORD 726 1 -1 0 +305 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATSWORD 727 1 -1 0 +306 FEAT_EPIC_OVERWHELMING_CRITICAL_HANDAXE 728 1 -1 0 +307 FEAT_EPIC_OVERWHELMING_CRITICAL_THROWINGAXE 729 1 -1 0 +308 FEAT_EPIC_OVERWHELMING_CRITICAL_BATTLEAXE 730 1 -1 0 +309 FEAT_EPIC_OVERWHELMING_CRITICAL_GREATAXE 731 1 -1 0 +310 FEAT_EPIC_OVERWHELMING_CRITICAL_HALBERD 732 1 -1 0 +311 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTHAMMER 733 1 -1 0 +312 FEAT_EPIC_OVERWHELMING_CRITICAL_LIGHTFLAIL 734 1 -1 0 +313 FEAT_EPIC_OVERWHELMING_CRITICAL_WARHAMMER 735 1 -1 0 +314 FEAT_EPIC_OVERWHELMING_CRITICAL_HEAVYFLAIL 736 1 -1 0 +315 FEAT_EPIC_OVERWHELMING_CRITICAL_KAMA 737 1 -1 0 +316 FEAT_EPIC_OVERWHELMING_CRITICAL_KUKRI 738 1 -1 0 +317 FEAT_EPIC_OVERWHELMING_CRITICAL_SHURIKEN 739 1 -1 0 +318 FEAT_EPIC_OVERWHELMING_CRITICAL_SCYTHE 740 1 -1 0 +319 FEAT_EPIC_OVERWHELMING_CRITICAL_KATANA 741 1 -1 0 +320 FEAT_EPIC_OVERWHELMING_CRITICAL_BASTARDSWORD 742 1 -1 0 +321 FEAT_EPIC_OVERWHELMING_CRITICAL_DIREMACE 743 1 -1 0 +322 FEAT_EPIC_OVERWHELMING_CRITICAL_DOUBLEAXE 744 1 -1 0 +323 FEAT_EPIC_OVERWHELMING_CRITICAL_TWOBLADEDSWORD 745 1 -1 0 +324 FEAT_EPIC_DEVASTATING_CRITICAL_TRIDENT 1075 1 -1 0 +325 FEAT_EPIC_WEAPON_FOCUS_TRIDENT 1076 1 -1 0 +326 FEAT_EPIC_OVERWHELMING_CRITICAL_TRIDENT 1078 1 -1 0 +327 FEAT_EPIC_TOUGHNESS_1 754 1 -1 0 +328 FEAT_EPIC_TOUGHNESS_2 755 1 -1 0 +329 FEAT_EPIC_TOUGHNESS_3 756 1 -1 0 +330 FEAT_EPIC_TOUGHNESS_4 757 1 -1 0 +331 FEAT_EPIC_TOUGHNESS_5 758 1 -1 0 +332 FEAT_EPIC_TOUGHNESS_6 759 1 -1 0 +333 FEAT_EPIC_TOUGHNESS_7 760 1 -1 0 +334 FEAT_EPIC_TOUGHNESS_8 761 1 -1 0 +335 FEAT_EPIC_TOUGHNESS_9 762 1 -1 0 +336 FEAT_EPIC_TOUGHNESS_10 763 1 -1 0 +337 FEAT_EPIC_DEVASTATING_CRITICAL_DWAXE 955 1 -1 0 +338 FEAT_EPIC_WEAPON_FOCUS_DWAXE 956 1 -1 0 +339 FEAT_EPIC_OVERWHELMING_CRITICAL_DWAXE 958 1 -1 0 +340 FEAT_IMPROVED_CRITICAL_WHIP 995 1 -1 0 +341 FEAT_EPIC_WEAPON_FOCUS_WHIP 997 1 -1 0 +342 FEAT_EPIC_DEVASTATING_CRITICAL_WHIP 996 1 -1 0 +343 FEAT_EPIC_OVERWHELMING_CRITICAL_WHIP 999 1 -1 0 +344 FEAT_IMPROVED_WHIRLWIND 868 1 -1 0 +345 FEAT_EPIC_SUPERIOR_INITIATIVE 753 1 -1 0 +346 FEAT_EPIC_SPELL_FOCUS_ABJURATION 610 1 -1 0 +347 FEAT_EPIC_SPELL_FOCUS_CONJURATION 611 1 -1 0 +348 FEAT_EPIC_SPELL_FOCUS_DIVINATION 612 1 -1 0 +349 FEAT_EPIC_SPELL_FOCUS_ENCHANTMENT 613 1 -1 0 +350 FEAT_EPIC_SPELL_FOCUS_EVOCATION 614 1 -1 0 +351 FEAT_EPIC_SPELL_FOCUS_ILLUSION 615 1 -1 0 +352 FEAT_EPIC_SPELL_FOCUS_NECROMANCY 616 1 -1 0 +353 FEAT_EPIC_SPELL_FOCUS_TRANSMUTATION 617 1 -1 0 +354 FEAT_EPIC_SPELL_PENETRATION 618 1 -1 0 +355 FEAT_EPIC_IMPROVED_COMBAT_CASTING 696 1 -1 0 +356 FEAT_EPIC_AUTOMATIC_STILL_SPELL_1 863 1 -1 0 +357 FEAT_EPIC_AUTOMATIC_STILL_SPELL_2 864 1 -1 0 +358 FEAT_EPIC_AUTOMATIC_STILL_SPELL_3 865 1 -1 0 diff --git a/nwn/nwnprc/trunk/2das/cls_feat_drgshm.2da b/nwn/nwnprc/trunk/2das/cls_feat_drgshm.2da index f41df13f..50529a89 100644 --- a/nwn/nwnprc/trunk/2das/cls_feat_drgshm.2da +++ b/nwn/nwnprc/trunk/2das/cls_feat_drgshm.2da @@ -15,7 +15,7 @@ 11 ArmProfLgt 3 3 1 0 12 Shield 32 3 1 0 13 ArmProfMed 4 3 1 0 -14 EPIC_DRAGON_SHAMAN 25056 3 11 0 +14 EPIC_DRAGON_SHAMAN 25056 3 21 0 15 FEAT_DRAGONSHAMAN_RED 3968 2 -1 0 16 FEAT_DRAGONSHAMAN_SILVER 3973 2 -1 0 17 FEAT_DRAGONSHAMAN_BLUE 3969 2 -1 0 diff --git a/nwn/nwnprc/trunk/2das/cls_feat_jpm.2da b/nwn/nwnprc/trunk/2das/cls_feat_jpm.2da index 8a9ba2fd..a8c44bb2 100644 --- a/nwn/nwnprc/trunk/2das/cls_feat_jpm.2da +++ b/nwn/nwnprc/trunk/2das/cls_feat_jpm.2da @@ -340,3 +340,17 @@ 336 FAST_HEALING_3 4147 1 2 0 337 Feat_Ignore_Material_Components 2597 1 2 0 338 MasterWand 5312 1 2 0 +339 FEAT_SCRIBE_SCROLL 945 1 -1 0 +340 FEAT_BREW_POTION 944 1 -1 0 +341 FEAT_CRAFT_WAND 946 1 -1 0 +342 FEAT_EPIC_SPELLCASTING 4073 1 2 0 +343 FEAT_EPIC_IMPROVED_COMBAT_CASTING 696 1 2 0 +344 FEAT_EPIC_AUTOMATIC_QUICKEN_1 857 1 2 0 +345 FEAT_EPIC_AUTOMATIC_QUICKEN_2 858 1 2 0 +346 FEAT_EPIC_AUTOMATIC_QUICKEN_3 859 1 2 0 +347 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_1 860 1 2 0 +348 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_2 861 1 2 0 +349 FEAT_EPIC_AUTOMATIC_SILENT_SPELL_3 862 1 2 0 +350 FEAT_EPIC_AUTOMATIC_STILL_SPELL_1 863 1 2 0 +351 FEAT_EPIC_AUTOMATIC_STILL_SPELL_2 864 1 2 0 +352 FEAT_EPIC_AUTOMATIC_STILL_SPELL_3 865 1 2 0 diff --git a/nwn/nwnprc/trunk/2das/cls_pres_crinti.2da b/nwn/nwnprc/trunk/2das/cls_pres_crinti.2da index b44f8095..bfc3ee91 100644 --- a/nwn/nwnprc/trunk/2das/cls_pres_crinti.2da +++ b/nwn/nwnprc/trunk/2das/cls_pres_crinti.2da @@ -1,12 +1,14 @@ 2DA V2.0 - LABEL ReqType ReqParam1 ReqParam2 -0 Human RACE 6 **** -1 HalfElf RACE 4 **** -2 HalfDrow RACE 183 **** -3 Stealthy FEAT 387 **** -4 MountedCombat FEAT 1087 **** -5 MS SKILL 8 8 -6 Hide SKILL 5 8 -7 Ride SKILL 27 8 -8 ScriptVar VAR PRC_AllowCrinti 0 + LABEL ReqType ReqParam1 ReqParam2 +0 Human RACE 6 **** +1 HalfElf RACE 4 **** +2 HalfDrow RACE 183 **** +3 Stealthy FEAT 387 **** +4 MountedCombat FEAT 1087 **** +5 MS SKILL 8 8 +6 Hide SKILL 5 8 +7 Ride SKILL 27 8 +8 ScriptVar VAR PRC_AllowCrinti 0 +9 Silverbrow_Human RACE 110 **** +10 Karsite RACE 65 **** diff --git a/nwn/nwnprc/trunk/2das/cls_pres_frtrgr.2da b/nwn/nwnprc/trunk/2das/cls_pres_frtrgr.2da index 715b1eb8..f2da6de2 100644 --- a/nwn/nwnprc/trunk/2das/cls_pres_frtrgr.2da +++ b/nwn/nwnprc/trunk/2das/cls_pres_frtrgr.2da @@ -1,11 +1,12 @@ 2DA V2.0 - LABEL ReqType ReqParam1 ReqParam2 -0 Base_Attack BAB 6 **** -1 Intimidate SKILL 24 4 -2 Power_Attack FEAT 28 **** -3 ImpStrike FEAT 21 **** -4 FrozenBerserker FEAT 24039 **** -5 ScriptVar VAR PRC_AllowFrostRager 0 -6 Lore SKILL 7 4 -7 Rage FEAT 293 **** + LABEL ReqType ReqParam1 ReqParam2 +0 Base_Attack BAB 6 **** +1 Intimidate SKILL 24 4 +2 Power_Attack FEAT 28 **** +3 ImpStrike FEAT 21 **** +4 FrozenBerserker FEAT 24039 **** +5 ScriptVar VAR PRC_AllowFrostRager 0 +6 Lore SKILL 7 4 +7 Rage FEATOR 293 **** +8 DrunkenRage FEATOR 4031 **** diff --git a/nwn/nwnprc/trunk/2das/cls_pres_kss.2da b/nwn/nwnprc/trunk/2das/cls_pres_kss.2da index f091e081..147831d4 100644 --- a/nwn/nwnprc/trunk/2das/cls_pres_kss.2da +++ b/nwn/nwnprc/trunk/2das/cls_pres_kss.2da @@ -1,62 +1,63 @@ 2DA V2.0 - LABEL ReqType ReqParam1 ReqParam2 -0 Base_Attack BAB 4 **** -1 Lore SKILL 7 5 -2 WeapFocClub FEATOR 28 **** -3 WeapFocDagger FEATOR 90 **** -4 WeapFocMorn FEATOR 95 **** -5 WeapFocStaff FEATOR 96 **** -6 WeapFocSpear FEATOR 97 **** -7 WeapFocRapier FEATOR 104 **** -8 WeapFocScim FEATOR 105 **** -9 WeapFocLSw FEATOR 106 **** -10 WeapFocGSw FEATOR 107 **** -11 WeapFocHAxe FEATOR 108 **** -12 WeapFocTAxe FEATOR 109 **** -13 WeapFocBAxe FEATOR 110 **** -14 WeapFocGAxe FEATOR 111 **** -15 WeapFocHalb FEATOR 112 **** -16 WeapFocLgHam FEATOR 113 **** -17 WeapFocLgFlail FEATOR 114 **** -18 WeapFocWHam FEATOR 115 **** -19 WeapFocHFlail FEATOR 116 **** -20 WeapFocKama FEATOR 117 **** -21 WeapFocKukri FEATOR 118 **** -22 WeapFocScy FEATOR 121 **** -23 WeapFocKatana FEATOR 122 **** -24 WeapFocBSw FEATOR 123 **** -25 WeapFocDMace FEATOR 125 **** -26 WeapFoc2Sw FEATOR 127 **** -27 WeapFocDAxe FEATOR 126 **** -28 WeapFocLgMace FEATOR 94 **** -29 WeapFocSickle FEATOR 98 **** -30 WeapFocDwAxe FEATOR 952 **** -31 WeapFocWhip FEATOR 993 **** -32 WeapFocMindblade FEATOR 3602 **** -33 WeapFocTrident FEATOR 1072 **** -34 WF_HEAVY_PICK FEATOR 24602 **** -35 WF_LIGHT_PICK FEATOR 24603 **** -36 WF_SAI FEATOR 24604 **** -37 WF_NUNCHUKU FEATOR 24605 **** -38 WF_FALCHION FEATOR 24606 **** -39 WF_SAP FEATOR 24607 **** -40 WF_KATAR FEATOR 24608 **** -41 WF_HEAVY_MACE FEATOR 24609 **** -42 WF_MAUL FEATOR 24610 **** -43 WF_DOUBLE_SCIMITAR FEATOR 24611 **** -44 WF_GOAD FEATOR 24612 **** -45 WF_HEAVY_CROSSBOW FEATOR 92 **** -46 WF_DART FEATOR 91 **** -47 WF_LG_CROSSBOW FEATOR 93 **** -48 WF_SLING FEATOR 99 **** -49 WF_LONGBOW FEATOR 101 **** -50 WF_SHORTBOW FEATOR 102 **** -51 WF_SHURIKEN FEATOR 120 **** -52 WF_THROWINGAXE FEATOR 109 **** -53 WF_UNARMED FEATOR 100 **** -54 WF_ELVEN_THINBLADE FEATOR 24705 **** -55 WF_ELVEN_LIGHTBLADE FEATOR 24697 **** -56 WF_ELVEN_COURTBLADE FEATOR 24713 **** -57 WF_EAGLE_CLAW FEATOR 24721 **** -58 SoulBinding FEAT 9130 **** + LABEL ReqType ReqParam1 ReqParam2 +0 Base_Attack BAB 4 **** +1 Lore SKILL 7 5 +2 WeapFocClub FEATOR 28 **** +3 WeapFocDagger FEATOR 90 **** +4 WeapFocMorn FEATOR 95 **** +5 WeapFocStaff FEATOR 96 **** +6 WeapFocSpear FEATOR 97 **** +7 WeapFocRapier FEATOR 104 **** +7 WeapFocShSwd FEATOR 103 **** +8 WeapFocScim FEATOR 105 **** +9 WeapFocLSw FEATOR 106 **** +10 WeapFocGSw FEATOR 107 **** +11 WeapFocHAxe FEATOR 108 **** +12 WeapFocTAxe FEATOR 109 **** +13 WeapFocBAxe FEATOR 110 **** +14 WeapFocGAxe FEATOR 111 **** +15 WeapFocHalb FEATOR 112 **** +16 WeapFocLgHam FEATOR 113 **** +17 WeapFocLgFlail FEATOR 114 **** +18 WeapFocWHam FEATOR 115 **** +19 WeapFocHFlail FEATOR 116 **** +20 WeapFocKama FEATOR 117 **** +21 WeapFocKukri FEATOR 118 **** +22 WeapFocScy FEATOR 121 **** +23 WeapFocKatana FEATOR 122 **** +24 WeapFocBSw FEATOR 123 **** +25 WeapFocDMace FEATOR 125 **** +26 WeapFoc2Sw FEATOR 127 **** +27 WeapFocDAxe FEATOR 126 **** +28 WeapFocLgMace FEATOR 94 **** +29 WeapFocSickle FEATOR 98 **** +30 WeapFocDwAxe FEATOR 952 **** +31 WeapFocWhip FEATOR 993 **** +32 WeapFocMindblade FEATOR 3602 **** +33 WeapFocTrident FEATOR 1072 **** +34 WF_HEAVY_PICK FEATOR 24602 **** +35 WF_LIGHT_PICK FEATOR 24603 **** +36 WF_SAI FEATOR 24604 **** +37 WF_NUNCHUKU FEATOR 24605 **** +38 WF_FALCHION FEATOR 24606 **** +39 WF_SAP FEATOR 24607 **** +40 WF_KATAR FEATOR 24608 **** +41 WF_HEAVY_MACE FEATOR 24609 **** +42 WF_MAUL FEATOR 24610 **** +43 WF_DOUBLE_SCIMITAR FEATOR 24611 **** +44 WF_GOAD FEATOR 24612 **** +45 WF_HEAVY_CROSSBOW FEATOR 92 **** +46 WF_DART FEATOR 91 **** +47 WF_LG_CROSSBOW FEATOR 93 **** +48 WF_SLING FEATOR 99 **** +49 WF_LONGBOW FEATOR 101 **** +50 WF_SHORTBOW FEATOR 102 **** +51 WF_SHURIKEN FEATOR 120 **** +52 WF_THROWINGAXE FEATOR 109 **** +53 WF_UNARMED FEATOR 100 **** +54 WF_ELVEN_THINBLADE FEATOR 24705 **** +55 WF_ELVEN_LIGHTBLADE FEATOR 24697 **** +56 WF_ELVEN_COURTBLADE FEATOR 24713 **** +57 WF_EAGLE_CLAW FEATOR 24721 **** +58 SoulBinding FEAT 9130 **** diff --git a/nwn/nwnprc/trunk/2das/feat.2da b/nwn/nwnprc/trunk/2das/feat.2da index 5edd977d..762fe013 100644 --- a/nwn/nwnprc/trunk/2das/feat.2da +++ b/nwn/nwnprc/trunk/2das/feat.2da @@ -4318,7 +4318,7 @@ 4314 DEATHLESS_FRENZY 16824231 16824232 ife_endfre **** **** **** **** **** **** **** **** **** **** 0 0 0 0 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_DEATHLESS_FRENZY 1 **** **** **** **** **** 0 1 4315 GREATER_TWO_WEAPON_FIGHTING 16824246 16824247 ife_gtwo_wep 15 **** **** **** **** **** **** **** 20 **** 0 0 1 **** 1 **** 4316 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_GREATER_TWO_WEAPON_FIGHTING 6 **** **** **** **** **** 0 1 4316 SUPREME_TWO_WEAPON_FIGHTING 16824248 16824249 ife_gtwo_wep **** **** **** **** **** **** **** **** **** **** 0 0 0 **** 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_SUPREME_TWO_WEAPON_FIGHTING 6 **** **** **** **** **** 0 1 -4317 FEAT_TWO_WEAPON_DEFENSE_1 16824250 16824251 ife_ohparry **** **** 15 **** **** **** **** **** 41 **** 0 0 0 **** 1 **** 4318 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_TWO_WEAPON_DEFENSE 1 **** **** **** **** **** 0 1 +4317 FEAT_TWO_WEAPON_DEFENSE_1 16824250 16824251 ife_ohparry **** **** 15 **** **** **** **** **** 41 **** 0 0 1 **** 1 **** 4318 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_TWO_WEAPON_DEFENSE 1 **** **** **** **** **** 0 1 4318 FEAT_TWO_WEAPON_DEFENSE_2 16825529 16824251 ife_ohparry 6 **** 17 **** **** **** **** **** 4317 **** 0 0 0 **** 1 **** 4319 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_TWO_WEAPON_DEFENSE 1 **** **** **** **** **** 0 1 4319 FEAT_TWO_WEAPON_DEFENSE_3 16825530 16824251 ife_ohparry 11 **** 19 **** **** **** **** **** 4318 **** 0 0 0 **** 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_TWO_WEAPON_DEFENSE 1 **** **** **** **** **** 0 1 4320 PERFECT_TWO_WEAPON_FIGHTING 16824252 16824253 ife_gtwo_wep **** **** 25 **** **** **** **** **** 4315 **** 0 0 1 **** 1 **** **** 1 **** **** **** **** **** **** **** **** **** **** **** **** FEAT_PERFECT_TWO_WEAPON_FIGHTING 6 **** **** **** **** **** 1 1 diff --git a/nwn/nwnprc/trunk/2das/itempropdef.2da b/nwn/nwnprc/trunk/2das/itempropdef.2da index dd9fa5e2..8e884c62 100644 --- a/nwn/nwnprc/trunk/2das/itempropdef.2da +++ b/nwn/nwnprc/trunk/2das/itempropdef.2da @@ -105,7 +105,7 @@ 101 16832064 PnPHolyAvenger **** 1.5 0 **** 16832064 16832065 102 16834273 Wizardry **** 4 13 **** 16834273 16834274 103 16834275 Divinity **** 4 13 **** 16834275 16834276 -104 16834308 Echoblade **** 1 0 **** 16834308 16834309 +104 16834308 Echoblade **** 1.5 0 **** 16834308 16834309 105 **** bio_reserved **** **** **** **** **** **** 106 **** bio_reserved **** **** **** **** **** **** 107 **** bio_reserved **** **** **** **** **** **** diff --git a/nwn/nwnprc/trunk/2das/packages.2da b/nwn/nwnprc/trunk/2das/packages.2da new file mode 100644 index 00000000..3ae5e775 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packages.2da @@ -0,0 +1,135 @@ +2DA V2.0 + + Label Name Description ClassID Attribute Gold School Domain1 Domain2 Associate SpellPref2DA FeatPref2DA SkillPref2DA Equip2DA Soundset PlayerClass +0 Barbarian 6894 6895 0 STR 10 **** **** **** **** **** PackFTBarb1 PackSKBarb1 PackEQBarb1 0 1 +1 Bard 6899 6898 1 CHA 50 8 **** **** **** PackSPBar1 PackFTBard1 PackSKBard1 PackEQBard1 0 1 +2 Cleric 6900 6901 2 WIS 30 **** 9 8 **** PackSPCleric1 PackFTCler1 PackSKCler1 PackEQCler1 0 1 +3 Druid 6905 6904 3 WIS 30 **** **** **** 1 PackSPDruid1 PackFTDruid1 PackSKDruid1 PackEQDruid1 0 1 +4 Fighter 5608 5609 4 STR 20 **** **** **** **** **** PackFTFight1 PackSKFight1 PackEQFight1 0 1 +5 Monk 6918 6919 5 WIS 30 **** **** **** **** **** PackFTMonk1 PackSKMonk1 PackEQMonk1 0 1 +6 Paladin 6920 6921 6 CHA 30 **** **** **** **** PackSPPala1 PackFTPala1 PackSKPala1 PackEQPala1 0 1 +7 Ranger 6922 6923 7 DEX 30 **** **** **** **** PackSPRang1 PackFTRang1 PackSKRang1 PackEQRang1 0 1 +8 Rogue 6924 6925 8 DEX 30 **** **** **** **** **** PackFTRog1 PackSKRog1 PackEQRog1 0 1 +9 Sorcerer 6896 6897 9 CHA 30 0 **** **** 0 PackSPWiz1 PackFTSor1 PackSKWiz1 PackEQSor1 0 1 +10 WizardGeneralist 5633 5634 10 INT 30 0 **** **** 0 PackSPWiz1 PackFTWiz1 PackSKWiz1 PackEQWiz1 0 1 +11 Druid_Interloper 6910 6908 3 WIS 30 **** **** **** 5 PackSPDruid1 PackFTDruid2 PackSKDruid2 PackEQDruid1 0 1 +12 Druid_Gray 6912 6911 3 WIS 30 **** **** **** 2 PackSPDruid1 PackFTDruid3 PackSKDruid3 PackEQDruid1 0 1 +13 Druid_Death 6915 6914 3 WIS 30 **** **** **** 6 PackSPDruid1 PackFTDruid4 PackSKDruid4 PackEQDruid1 0 1 +14 Druid_Hawkmaster 6916 6917 3 WIS 30 **** **** **** 4 PackSPDruid1 PackFTDruid5 PackSKDruid5 PackEQDruid1 0 1 +15 Barbarian_Brute 6926 6927 0 CON 10 **** **** **** **** **** PackFTBarb2 PackSKBarb2 PackEQBarb1 0 1 +16 Barbarian_Slayer 6928 6929 0 STR 10 **** **** **** **** **** PackFTBarb3 PackSKBarb3 PackEQBarb3 0 1 +17 Barbarian_Savage 6930 6931 0 STR 50 **** **** **** **** **** PackFTBarb4 PackSKBarb4 PackEQBarb4 0 1 +18 Barbarian_Orcblood 6932 6933 0 STR 10 **** **** **** **** **** PackFTBarb5 PackSKBarb5 PackEQBarb5 0 1 +19 Cleric_Shaman 6934 6938 2 WIS 30 **** 1 14 **** PackSPCleric1 PackFTCler2 PackSKCler2 PackEQCler1 0 1 +20 Cleric_DeadWalker 6935 6939 2 WIS 30 **** 3 19 **** PackSPCleric1 PackFTCler3 PackSKCler3 PackEQCler1 0 1 +21 Cleric_Elementalist 6936 6940 2 WIS 30 **** 7 5 **** PackSPCleric1 PackFTCler4 PackSKCler4 PackEQCler1 0 1 +22 Cleric_Battle_Priest 6937 6941 2 WIS 30 **** 20 16 **** PackSPCleric1 PackFTCler5 PackSKCler5 PackEQCler1 0 1 +23 Fighter_Finesse 6942 6943 4 DEX 20 **** **** **** **** **** PackFTFight2 PackSKFight2 PackEQFight2 0 1 +24 Fighter_Pirate 6944 6945 4 STR 20 **** **** **** **** **** PackFTFight3 PackSKFight3 PackEQFight3 0 1 +25 Fighter_Gladiator 6946 6947 4 STR 20 **** **** **** **** **** PackFTFight4 PackSKFight1 PackEQFight4 0 1 +26 Fighter_Commander 6948 6949 4 STR 20 **** **** **** **** **** PackFTFight5 PackSKFight5 PackEQFight1 0 1 +27 Wizard_Abjuration 7041 7050 10 INT 30 1 **** **** 5 PackSPWiz2 PackFTWiz2 PackSKWiz1 PackEQWiz1 0 1 +28 Wizard_Conjuration 7042 7051 10 INT 30 2 **** **** 2 PackSPWiz3 PackFTWiz3 PackSKWiz1 PackEQWiz1 0 1 +29 Wizard_Divination 7043 7052 10 INT 30 3 **** **** 3 PackSPWiz4 PackFTWiz4 PackSKWiz1 PackEQWiz1 0 1 +30 Wizard_Enchantment 7044 7053 10 INT 30 4 **** **** 6 PackSPWiz5 PackFTWiz5 PackSKWiz1 PackEQWiz1 0 1 +31 Wizard_Evocation 7049 7054 10 INT 30 5 **** **** 4 PackSPWiz6 PackFTWiz6 PackSKWiz1 PackEQWiz1 0 1 +32 Wizard_Illusion 7045 7055 10 INT 30 6 **** **** 1 PackSPWiz7 PackFTWiz7 PackSKWiz1 PackEQWiz1 0 1 +33 Wizard_Necromancy 7046 7056 10 INT 30 7 **** **** 7 PackSPWiz8 PackFTWiz8 PackSKWiz1 PackEQWiz1 0 1 +34 Wizard_Transmutation 7047 7058 10 INT 30 8 **** **** 0 PackSPWiz9 PackFTWiz9 PackSKWiz1 PackEQWiz1 0 1 +35 Sorcerer_Abjuration 7069 7061 9 CHA 30 0 **** **** 5 PackSPWiz2 PackFTSor2 PackSKWiz1 PackEQSor1 0 1 +36 Sorcerer_Conjuration 7070 7062 9 CHA 30 0 **** **** 2 PackSPWiz3 PackFTSor3 PackSKWiz1 PackEQSor1 0 1 +37 Sorcerer_Divination 7071 7063 9 CHA 30 0 **** **** 3 PackSPWiz4 PackFTSor4 PackSKWiz1 PackEQSor1 0 1 +38 Sorcerer_Enchantment 7072 7064 9 CHA 30 0 **** **** 6 PackSPWiz5 PackFTSor5 PackSKWiz1 PackEQSor1 0 1 +39 Sorcerer_Evocation 7073 7065 9 CHA 30 0 **** **** 4 PackSPWiz6 PackFTSor6 PackSKWiz1 PackEQSor1 0 1 +40 Sorcerer_Illusion 7074 7066 9 CHA 30 0 **** **** 1 PackSPWiz7 PackFTSor7 PackSKWiz1 PackEQSor1 0 1 +41 Sorcerer_Necromancy 7075 7067 9 CHA 30 0 **** **** 7 PackSPWiz8 PackFTSor8 PackSKWiz1 PackEQSor1 0 1 +42 Sorcerer_Transmutation 7076 7068 9 CHA 30 0 **** **** 0 PackSPWiz9 PackFTSor9 PackSKWiz1 PackEQSor1 0 1 +43 Bard_Blade 7079 7083 1 DEX 50 0 **** **** **** PackSPBar1 PackFTBard2 PackSKBard2 PackEQBard1 0 1 +44 Bard_Gallant 7080 7084 1 CHA 50 0 **** **** **** PackSPBar1 PackFTBard3 PackSKBard4 PackEQBard1 0 1 +45 Bard_Jester 7081 7085 1 CHA 50 0 **** **** **** PackSPBar1 PackFTBard4 PackSKBard3 PackEQBard1 0 1 +46 Bard_Loremaster 7082 7086 1 CHA 50 0 **** **** **** PackSPBar1 PackFTBard5 PackSKBard5 PackEQBard1 0 1 +47 Monk_Spirit 8090 8091 5 DEX 40 **** **** **** **** **** PackFTMonk2 PackSKMonk1 PackEQMonk2 0 1 +48 Monk_Gifted 8092 8093 5 STR 40 **** **** **** **** **** PackFTMonk3 PackSKMonk1 PackEQMonk3 0 1 +49 Monk_Devout 8094 8095 5 WIS 40 **** **** **** **** **** PackFTMonk4 PackSKMonk1 PackEQMonk1 0 1 +50 Monk_Peasant 8096 8097 5 WIS 40 **** **** **** **** **** PackFTMonk5 PackSKMonk1 PackEQMonk5 0 1 +51 Paladin_Errant 8191 8203 6 CHA 30 **** **** **** **** PackSPPala1 PackFTPala2 PackSKPala1 PackEQPala1 0 1 +52 Paladin_Undead 8192 8204 6 CHA 30 **** **** **** **** PackSPPala1 PackFTPala3 PackSKPala1 PackEQPala2 0 1 +53 Paladin_Inquisitor 8193 8205 6 CHA 30 **** **** **** **** PackSPPala1 PackFTPala4 PackSKPala4 PackEQPala1 0 1 +54 Paladin_Champion 8194 8206 6 STR 30 **** **** **** **** PackSPPala1 PackFTPala1 PackSKPala4 PackEQPala1 0 1 +55 Ranger_Marksman 8195 8207 7 DEX 30 **** **** **** **** PackSPRang1 PackFTRang2 PackSKRang2 PackEQRang2 0 1 +56 Ranger_Warden 8196 8208 7 DEX 30 **** **** **** **** PackSPRang1 PackFTRang3 PackSKRang3 PackEQRang3 0 1 +57 Ranger_Stalker 8197 8209 7 DEX 30 **** **** **** **** PackSPRang1 PackFTRang4 PackSKRang1 PackEQRang4 0 1 +58 Ranger_Giantkiller 8198 8210 7 DEX 30 **** **** **** **** PackSPRang1 PackFTRang5 PackSKRang1 PackEQRang5 0 1 +59 Rogue_Gypsy 8199 8211 8 DEX 30 **** **** **** **** **** PackFTRog2 PackSKRog2 PackEQRog2 0 1 +60 Rogue_Bandit 8200 8212 8 DEX 30 **** **** **** **** **** PackFTRog3 PackSKRog3 PackEQRog3 0 1 +61 Rogue_Scout 8201 8213 8 DEX 30 **** **** **** **** **** PackFTRog1 PackSKRog4 PackEQRog4 0 1 +62 Rogue_Swashbuckler 8202 8214 8 CHA 30 **** **** **** **** **** PackFTRog5 PackSKRog5 PackEQRog5 0 1 +63 Shadowdancer 3790 3791 27 DEX 0 **** **** **** **** **** PackFTShad PackSKShad **** 0 1 +64 Harper 3792 3793 28 WIS 0 **** **** **** **** **** PackFTHarp PackSKHarp **** 0 1 +65 Arcane_Archer 9003 9006 29 DEX 0 **** **** **** **** **** PackFTArch PackSKArch **** 0 1 +66 Assassin 9007 9010 30 DEX 0 **** **** **** **** **** PackFTAssa PackSKAssa **** 0 1 +67 Blackguard 9011 9014 31 STR 0 **** **** **** **** **** PackFTBlck PackSKBlck **** 0 1 +68 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 +69 **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** 1 +70 NPC_Sorcerer 9085 9084 9 CHA 75 0 **** **** 8 PackSPNPC1 PackFTSorA PackSKWiz1 PackEQWiz1 0 0 +71 NPC_Rogue 9086 9087 8 DEX 100 **** **** **** **** **** PackFTRog6 PackSKRog6 PackEQRog1 0 0 +72 NPC_Bard 9089 9088 1 CHA 100 8 **** **** **** PackSPBar3 PackFTBard6 PackSKBard1 PackEQBard1 0 0 +73 Aberration 525 **** 11 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +74 Animal 526 **** 12 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +75 Construct 528 **** 13 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +76 Humanoid 3759 **** 14 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +77 Monstrous 536 **** 15 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +78 Elemental 539 **** 16 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +79 Fey 540 **** 17 DEX **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +80 Dragon 529 **** 18 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +81 Undead 547 **** 19 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +82 Commoner 3760 **** 20 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +83 Beast 527 **** 21 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +84 Giant 541 **** 22 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +85 MagicBeast 542 **** 23 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +86 Outsider 543 **** 24 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +87 Shapechanger 546 **** 25 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +88 Vermin 548 **** 26 STR **** **** **** **** **** **** PackFTCrea1 PackSKCrea1 **** 0 0 +89 Dwarven_Defender 76418 76410 36 STR 0 **** **** ***** **** **** PackFTDwDef PackSKDwDef **** 0 1 +90 Barbarian_Blackguard 83649 83650 0 CHA 20 **** **** ***** **** **** PackFTBarb1 PackSKBarb6 PackEQBarb1 0 0 +91 Bard_Harper 83651 83652 1 CHA 100 0 **** ***** **** PackSPBar1 PackFTBard6 PackSkBard6 PackEQBard1 0 0 +92 Cleric_Divine 83653 83654 2 WIS 75 **** 20 8 **** PackSPCleric1 PackFTCler6 PackSKCler1 PackEQCler1 0 1 +93 Druid_Shifter 83655 83657 3 WIS 50 **** **** **** 7 PackSPDruid1 PackFTDruid6 PackSKDruid1 PackEQDruid1 0 1 +94 Fighter_WeaponMaster 83658 83659 4 STR 50 **** **** **** **** **** PackFTFight6 PackSKFight6 PackEQFight6 0 1 +95 Monk_Assassin 83660 83661 5 WIS 20 **** **** **** **** **** PackFTMonk6 PackSKMonk6 PackEQMonk1 0 0 +96 Paladin_Divine 83662 83663 6 CHA 30 **** **** **** **** PackSPPala1 PackFTPala2 PackSKPala1 PackEQPala1 0 1 +97 Ranger_ArcaneArcher 83667 83668 7 DEX 50 **** **** **** **** PackSPRang1 PackFTRang6 PackSKRang1 PackEQRang1 0 0 +98 Rogue_Shadowdancer 83669 83670 8 DEX 100 **** **** **** **** **** PackFTRog7 PackSKRog7 PackEQRog1 0 0 +99 Sorcerer_DragonDisciple 83671 83672 9 CHA 75 0 **** **** 9 PackSPWiz1 PackFTSor1 PackSKSor10 PackEQSor1 0 1 +100 Wizard_PaleMaster 83673 83674 10 INT 75 0 **** **** 2 PackSPWiz8 PackFTWiz8 PackSKWiz1 PackEQWiz1 0 1 +101 NPC_WizAssassin_Nathyrra 83676 83677 10 CON 75 0 **** **** **** PackSPWizB PackFTWizB PackSKWizB PackEQWizB 0 0 +102 NPC_Ft_WeaponMaster_Valen 83678 83679 4 STR 50 **** **** **** **** **** PackFTFightC PackSKFight6 PackEQFightC 0 0 +103 NPC_Rg_Shadowdancer 83680 83681 8 DEX 100 **** **** **** **** **** PackFTRogD PackSKRog7 PackEQRogD 0 0 +104 NPC_Cleric_Linu 83682 83683 2 WIS 75 **** 8 9 **** PackSPCleric2 PackFTClerE PackSKCler5 PackEQCler1 0 0 +105 NPC_Barbarian_Daelan 83684 83685 0 STR 20 **** **** **** **** **** PackFTBarbF PackSKBarb7 PackEQBarb3 0 0 +106 NPC_Bard_Fighter_Sharwyn 83686 83687 1 CHA 100 0 **** **** **** PackSPBar3 PackFTBardG PackSKBard7 PackEQBard1 0 0 +107 NPC_Paladin_Falling 83721 84106 6 CHA 50 **** **** **** **** PackSPPala1 PackFTPalaH PackSKPalaH PackEQPala1 0 0 +108 Shifter 9026 9029 35 WIS **** **** **** **** **** **** PackFTShift PackSKDruid1 **** 0 1 +109 Divine_Champion 9015 9018 32 CHA **** **** **** **** **** **** PackFTTorm PackSkTorm **** 0 1 +110 Pale_Master 9020 9025 34 INT **** **** **** **** **** PackSPWiz1 PackFTWiz8 PackSKWiz1 **** 0 1 +111 Dragon_Disciple 83489 83492 37 STR **** **** **** **** **** **** PackFTDrDis PackSkDrDis **** 0 1 +112 WeaponMaster 9019 9022 33 STR **** **** **** **** **** **** PackFTWM PackSKFight1 **** 0 1 +113 NPC_Ft_WeaponMaster_Valen_2 83678 83679 33 STR 50 **** **** **** **** **** PackFTFightC PackSKFight6 PackEQFightC 0 0 +114 NPC_Bard_Fighter_Sharwyn2 83686 83687 4 CHA 100 0 **** **** **** PackSPBar3 PackFTBardG PackSKBard7 PackEQBard1 0 0 +115 NPC_WizAssassin_Nathyrra 83676 83677 30 DEX 75 0 **** **** 10 PackSPWizB PackFTWizB PackSKWizB PackEQWizB 0 0 +116 NPC_Rg_Tomi_2 83680 83681 27 DEX 100 **** **** **** **** **** PackFTRogD PackSKRog7 PackEQRogD 0 0 +117 NPC_Bard_Deekin_2 9089 9088 37 CHA 100 8 **** **** **** PackSPBar3 PackFTBard6 PackSKBard1 PackEQBard1 0 0 +118 Barbarian_Blackguard_2ndClass 83649 83650 31 CHA 20 **** **** ***** **** **** PackFTBarb1 PackSKBarb6 PackEQBarb1 0 0 +119 Bard_Harper_2ndClass 83651 83652 28 CHA 100 0 **** ***** **** PackSPBar1 PackFTBard6 PackSkBard6 PackEQBard1 0 0 +120 Cleric_Divine_2ndClass 83653 83654 32 WIS 75 **** 20 8 **** PackSPCleric1 PackFTCler6 PackSKCler1 PackEQCler1 0 0 +121 Druid_Shifter_2ndClass 83655 83657 35 WIS 50 **** **** **** 7 PackSPDruid1 PackFTDruid6 PackSKDruid1 PackEQDruid1 0 0 +122 Fighter_WeaponMaster_2ndClass 83658 83659 33 DEX 50 **** **** **** **** **** PackFTFightC PackSKFight6 PackEQFight6 0 0 +123 Monk_Assassin_2ndClass 83660 83661 30 WIS 20 **** **** **** **** **** PackFTMonk6 PackSKMonk6 PackEQMonk1 0 0 +124 Paladin_Divine_2ndClass 83662 83663 32 CHA 50 **** **** **** **** PackSPPala1 PackFTPala2 PackSKPala1 PackEQPala2 0 0 +125 Ranger_ArcaneArcher_2ndClass 83667 83668 29 DEX 50 **** **** **** **** PackSPRang1 PackFTRang6 PackSKRang1 PackEQRang1 0 0 +126 Rogue_Shadowdancer_2ndClass 83669 83670 27 DEX 100 **** **** **** **** **** PackFTRog7 PackSKRog7 PackEQRog1 0 0 +127 Sorcerer_DragonDisciple_2ndClass 83671 83672 37 CHA 75 0 **** **** 9 PackSPWiz1 PackFTSor1 PackSKSor10 PackEQSor1 0 0 +128 Wizard_PaleMaster_2ndClass 83673 83674 34 INT 75 0 **** **** 2 PackSPWiz8 PackFTWiz8 PackSKWiz1 PackEQWiz1 0 0 +129 NPC_Aribeth_Paladin 84522 84106 6 CHA 50 **** **** **** **** PackSPPala1 PackFTPalaH PackSKPalaH PackEQPala1 0 0 +130 NPC_Aribeth_Blackguard 84523 84106 31 STR 50 **** **** **** **** PackSPPala1 PackFTPalaH PackSKPalaH PackEQPala1 0 0 +131 Purple_Dragon_Knight 111933 111934 41 STR 50 **** **** **** **** **** PackFTFight1 PackSKFight1 PackEQFight1 0 1 diff --git a/nwn/nwnprc/trunk/2das/packeqbarb1.2da b/nwn/nwnprc/trunk/2das/packeqbarb1.2da new file mode 100644 index 00000000..67707531 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqbarb1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WAXGR001 +2 NW_IT_TORCH001 +3 NW_IT_MEDKIT001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_WAXBT001 +7 NW_WBWSH001 +8 NW_WAMAR001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqbarb3.2da b/nwn/nwnprc/trunk/2das/packeqbarb3.2da new file mode 100644 index 00000000..4ce86f0a --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqbarb3.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_WBWSL001 +1 NW_AARCL002 +2 NW_IT_TORCH001 +3 NW_WSWGS001 +4 NW_WAMBU001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WSWLS001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqbarb4.2da b/nwn/nwnprc/trunk/2das/packeqbarb4.2da new file mode 100644 index 00000000..4596b0de --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqbarb4.2da @@ -0,0 +1,8 @@ +2DA V2.0 + + Label +0 NW_AARCL004 +1 NW_IT_TORCH001 +2 NW_IT_MEDKIT001 +3 NW_IT_MEDKIT001 +4 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqbarb5.2da b/nwn/nwnprc/trunk/2das/packeqbarb5.2da new file mode 100644 index 00000000..8be4de7a --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqbarb5.2da @@ -0,0 +1,11 @@ +2DA V2.0 + + Label +0 NW_AARCL008 +1 NW_IT_TORCH001 +2 NW_WDBAX001 +3 NW_IT_MEDKIT001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_WBWSH001 +7 NW_WAMAR001 diff --git a/nwn/nwnprc/trunk/2das/packeqbard1.2da b/nwn/nwnprc/trunk/2das/packeqbard1.2da new file mode 100644 index 00000000..5409e766 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqbard1.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WBLCL001 +2 NW_WBWXL001 +3 NW_WAMBO001 +4 NW_IT_TORCH001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_ASHSW001 +9 NW_WSWDG001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqcler1.2da b/nwn/nwnprc/trunk/2das/packeqcler1.2da new file mode 100644 index 00000000..5333083d --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqcler1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_ASHLW001 +2 NW_WBLMS001 +3 NW_IT_TORCH001 +4 NW_WAMBO001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WBWXL001 diff --git a/nwn/nwnprc/trunk/2das/packeqcler2.2da b/nwn/nwnprc/trunk/2das/packeqcler2.2da new file mode 100644 index 00000000..73664ea2 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqcler2.2da @@ -0,0 +1,10 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WSPSC001 +2 NW_ASHSW001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqcler3.2da b/nwn/nwnprc/trunk/2das/packeqcler3.2da new file mode 100644 index 00000000..43c73bfa --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqcler3.2da @@ -0,0 +1,10 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WBLML001 +2 NW_ASHSW001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqcler4.2da b/nwn/nwnprc/trunk/2das/packeqcler4.2da new file mode 100644 index 00000000..43c73bfa --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqcler4.2da @@ -0,0 +1,10 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WBLML001 +2 NW_ASHSW001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqcler5.2da b/nwn/nwnprc/trunk/2das/packeqcler5.2da new file mode 100644 index 00000000..43c73bfa --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqcler5.2da @@ -0,0 +1,10 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_WBLML001 +2 NW_ASHSW001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqdruid1.2da b/nwn/nwnprc/trunk/2das/packeqdruid1.2da new file mode 100644 index 00000000..412544f8 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqdruid1.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +1 NW_AARCL008 +2 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WAMBU001 +8 NW_ASHLW001 +9 NW_WSWSC001 +10 NW_WBLCL001 +11 NW_WBWSL001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfight1.2da b/nwn/nwnprc/trunk/2das/packeqfight1.2da new file mode 100644 index 00000000..faf4c4d8 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfight1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_ASHLW001 +2 NW_WSWLS001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WAMAR001 +8 NW_WBWSH001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfight2.2da b/nwn/nwnprc/trunk/2das/packeqfight2.2da new file mode 100644 index 00000000..7c019a54 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfight2.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_WSWDG001 +2 NW_WBWSH001 +3 NW_WAMAR001 +4 NW_IT_TORCH001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WSWRP001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfight3.2da b/nwn/nwnprc/trunk/2das/packeqfight3.2da new file mode 100644 index 00000000..c7bcfb18 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfight3.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_WBWSH001 +2 NW_WAMAR001 +3 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WSWSC001 +8 NW_WSWDG001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfight4.2da b/nwn/nwnprc/trunk/2das/packeqfight4.2da new file mode 100644 index 00000000..9ba70a31 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfight4.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_WPLSS001 +2 NW_WSWSS001 +3 NW_WSWSS001 +4 NW_ASHSW001 +5 NW_ARHE003 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfight6.2da b/nwn/nwnprc/trunk/2das/packeqfight6.2da new file mode 100644 index 00000000..f5a65866 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfight6.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_WSWGS001 +2 NW_IT_TORCH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WAMAR001 +8 NW_WBWSH001 +9 NW_WSWLS001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqfightc.2da b/nwn/nwnprc/trunk/2das/packeqfightc.2da new file mode 100644 index 00000000..d343f40c --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqfightc.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_IT_TORCH001 +2 NW_ASHLW001 +3 NW_WSWLS001 +4 NW_IT_MPOTION001 +5 NW_IT_MPOTION001 +6 NW_IT_MPOTION001 +7 NW_WBWSH001 +8 NW_WAMAR001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqmonk1.2da b/nwn/nwnprc/trunk/2das/packeqmonk1.2da new file mode 100644 index 00000000..20137671 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqmonk1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_CLOTH007 +1 NW_IT_TORCH001 +2 NW_WSPKA001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WDBQS001 +8 NW_WBWSL001 +9 NW_WAMBU001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqmonk2.2da b/nwn/nwnprc/trunk/2das/packeqmonk2.2da new file mode 100644 index 00000000..599a51a1 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqmonk2.2da @@ -0,0 +1,11 @@ +2DA V2.0 + + Label +0 NW_CLOTH007 +1 NW_IT_TORCH001 +2 NW_WBWSH001 +3 NW_WAMAR001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WSPKA001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqmonk3.2da b/nwn/nwnprc/trunk/2das/packeqmonk3.2da new file mode 100644 index 00000000..74cc3166 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqmonk3.2da @@ -0,0 +1,11 @@ +2DA V2.0 + + Label +0 NW_CLOTH007 +1 NW_IT_TORCH001 +2 NW_WSPKA001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WAMBU001 +8 NW_WBWSL001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqmonk4.2da b/nwn/nwnprc/trunk/2das/packeqmonk4.2da new file mode 100644 index 00000000..db8d27b2 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqmonk4.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_CLOTH007 +1 NW_IT_TORCH001 +2 NW_WDBQS001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WSPKA001 +8 NW_WBWSL001 +9 NW_WAMBU001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqmonk5.2da b/nwn/nwnprc/trunk/2das/packeqmonk5.2da new file mode 100644 index 00000000..3d7bff33 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqmonk5.2da @@ -0,0 +1,10 @@ +2DA V2.0 + + Label +0 NW_CLOTH007 +1 NW_IT_TORCH001 +2 NW_WSPKA001 +3 NW_WTHSH001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqpala1.2da b/nwn/nwnprc/trunk/2das/packeqpala1.2da new file mode 100644 index 00000000..105000aa --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqpala1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_IT_TORCH001 +2 NW_ASHLW001 +3 NW_WSWLS001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_WAMAR001 +8 NW_WBWSH001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqpala2.2da b/nwn/nwnprc/trunk/2das/packeqpala2.2da new file mode 100644 index 00000000..d7a92ca7 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqpala2.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_IT_TORCH001 +2 NW_WBWXL001 +3 NW_WAMBO001 +4 NW_ASHLW001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WBLML001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqpala3.2da b/nwn/nwnprc/trunk/2das/packeqpala3.2da new file mode 100644 index 00000000..1920dc9a --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqpala3.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL003 +1 NW_IT_TORCH001 +2 NW_WSWGS001 +3 NW_WSWLS001 +4 NW_WBWSH001 +5 NW_WAMAR001 +4 NW_IT_MEDKIT001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 diff --git a/nwn/nwnprc/trunk/2das/packeqrang1.2da b/nwn/nwnprc/trunk/2das/packeqrang1.2da new file mode 100644 index 00000000..ba359ca8 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrang1.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_IT_TORCH001 +2 NW_WSWLS001 +3 NW_WSWSS001 +4 NW_WBWSH001 +5 NW_WAMAR001 +6 NW_WSWDG001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 +9 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrang2.2da b/nwn/nwnprc/trunk/2das/packeqrang2.2da new file mode 100644 index 00000000..e7dab21a --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrang2.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_IT_TORCH001 +2 NW_WSWSS001 +3 NW_WSWDG001 +4 NW_WBWSH001 +5 NW_WAMAR001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrang3.2da b/nwn/nwnprc/trunk/2das/packeqrang3.2da new file mode 100644 index 00000000..b9f2afdd --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrang3.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_IT_TORCH001 +2 NW_WSWLS001 +3 NW_WSWDG001 +4 NW_WBWSH001 +5 NW_WAMAR001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrang4.2da b/nwn/nwnprc/trunk/2das/packeqrang4.2da new file mode 100644 index 00000000..232ee000 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrang4.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_IT_TORCH001 +2 NW_WSWSS001 +3 NW_WSWSS001 +4 NW_WBWSH001 +5 NW_WAMAR001 +6 NW_WSWDG001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 +9 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrang5.2da b/nwn/nwnprc/trunk/2das/packeqrang5.2da new file mode 100644 index 00000000..976f605c --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrang5.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL002 +1 NW_IT_TORCH001 +2 NW_WAXBT001 +3 NW_WAXHN001 +4 NW_WBWSH001 +5 NW_WAMAR001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_IT_MEDKIT001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrog1.2da b/nwn/nwnprc/trunk/2das/packeqrog1.2da new file mode 100644 index 00000000..571172d0 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrog1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 NW_WSWSS001 +3 NW_WBWXL001 +4 NW_WAMBO001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WSWDG001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqrog2.2da b/nwn/nwnprc/trunk/2das/packeqrog2.2da new file mode 100644 index 00000000..06b307a2 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrog2.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 NW_WBLCL001 +3 NW_WBWXH001 +4 NW_WAMBO001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 diff --git a/nwn/nwnprc/trunk/2das/packeqrog3.2da b/nwn/nwnprc/trunk/2das/packeqrog3.2da new file mode 100644 index 00000000..22fc3f0a --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrog3.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 NW_WAXHN001 +3 NW_WBWXL001 +4 NW_WAMBO001 +5 NW_IT_MPOTION001 +6 NW_IT_MPOTION001 +7 NW_IT_MPOTION001 +8 NW_IT_TRAP001 +9 NW_WSWDG001 diff --git a/nwn/nwnprc/trunk/2das/packeqrog4.2da b/nwn/nwnprc/trunk/2das/packeqrog4.2da new file mode 100644 index 00000000..7b83a825 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrog4.2da @@ -0,0 +1,13 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 NW_WSWSS001 +3 NW_IT_PICKS001 +4 NW_WSWDG001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WBWXL001 +9 NW_WAMBO001 diff --git a/nwn/nwnprc/trunk/2das/packeqrog5.2da b/nwn/nwnprc/trunk/2das/packeqrog5.2da new file mode 100644 index 00000000..490ea4ed --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrog5.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 NW_WSWRP001 +3 NW_WBWXL001 +4 NW_WAMBO001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WSWDG001 diff --git a/nwn/nwnprc/trunk/2das/packeqrogd.2da b/nwn/nwnprc/trunk/2das/packeqrogd.2da new file mode 100644 index 00000000..fbd2edd8 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqrogd.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_AARCL001 +1 NW_IT_TORCH001 +2 nw_wspku001 +3 NW_IT_PICKS001 +4 NW_WSWDG001 +5 NW_IT_MPOTION001 +6 NW_IT_MPOTION001 +7 NW_IT_MPOTION001 +8 NW_IT_TRAP001 diff --git a/nwn/nwnprc/trunk/2das/packeqsor1.2da b/nwn/nwnprc/trunk/2das/packeqsor1.2da new file mode 100644 index 00000000..cebc43cd --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqsor1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_WPLSS001 +1 NW_CLOTH008 +2 NW_WAMBO001 +3 NW_WBWXL001 +4 NW_IT_TORCH001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WMGMRD006 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/2das/packeqwiz1.2da b/nwn/nwnprc/trunk/2das/packeqwiz1.2da new file mode 100644 index 00000000..6fe23666 --- /dev/null +++ b/nwn/nwnprc/trunk/2das/packeqwiz1.2da @@ -0,0 +1,12 @@ +2DA V2.0 + + Label +0 NW_WMGMRD006 +1 NW_WBWXL001 +2 NW_WAMBO001 +3 NW_CLOTH005 +4 NW_IT_TORCH001 +5 NW_IT_MEDKIT001 +6 NW_IT_MEDKIT001 +7 NW_IT_MEDKIT001 +8 NW_WBLCL001 \ No newline at end of file diff --git a/nwn/nwnprc/trunk/include/inc_dynconv.nss b/nwn/nwnprc/trunk/include/inc_dynconv.nss index 4603fc4e..68aabac3 100644 --- a/nwn/nwnprc/trunk/include/inc_dynconv.nss +++ b/nwn/nwnprc/trunk/include/inc_dynconv.nss @@ -12,6 +12,7 @@ //::////////////////////////////////////////////// //::////////////////////////////////////////////// +//PRC8 Token pre-fix = 161838 ////////////////////////////////////////////////// /* Constant definitions */ @@ -21,23 +22,23 @@ const int DYNCONV_EXITED = -2; const int DYNCONV_ABORTED = -3; const int DYNCONV_SETUP_STAGE = -1; -const int DYNCONV_TOKEN_HEADER = 99; -const int DYNCONV_TOKEN_REPLY_0 = 100; -const int DYNCONV_TOKEN_REPLY_1 = 101; -const int DYNCONV_TOKEN_REPLY_2 = 102; -const int DYNCONV_TOKEN_REPLY_3 = 103; -const int DYNCONV_TOKEN_REPLY_4 = 104; -const int DYNCONV_TOKEN_REPLY_5 = 105; -const int DYNCONV_TOKEN_REPLY_6 = 106; -const int DYNCONV_TOKEN_REPLY_7 = 107; -const int DYNCONV_TOKEN_REPLY_8 = 108; -const int DYNCONV_TOKEN_REPLY_9 = 109; -const int DYNCONV_TOKEN_EXIT = 110; -const int DYNCONV_TOKEN_WAIT = 111; -const int DYNCONV_TOKEN_NEXT = 112; -const int DYNCONV_TOKEN_PREV = 113; -const int DYNCONV_MIN_TOKEN = 99; -const int DYNCONV_MAX_TOKEN = 113; +const int DYNCONV_TOKEN_HEADER = 16183899; +const int DYNCONV_TOKEN_REPLY_0 = 161838100; +const int DYNCONV_TOKEN_REPLY_1 = 161838101; +const int DYNCONV_TOKEN_REPLY_2 = 161838102; +const int DYNCONV_TOKEN_REPLY_3 = 161838103; +const int DYNCONV_TOKEN_REPLY_4 = 161838104; +const int DYNCONV_TOKEN_REPLY_5 = 161838105; +const int DYNCONV_TOKEN_REPLY_6 = 161838106; +const int DYNCONV_TOKEN_REPLY_7 = 161838107; +const int DYNCONV_TOKEN_REPLY_8 = 161838108; +const int DYNCONV_TOKEN_REPLY_9 = 161838109; +const int DYNCONV_TOKEN_EXIT = 161838110; +const int DYNCONV_TOKEN_WAIT = 161838111; +const int DYNCONV_TOKEN_NEXT = 161838112; +const int DYNCONV_TOKEN_PREV = 161838113; +const int DYNCONV_MIN_TOKEN = 16183899; +const int DYNCONV_MAX_TOKEN = 161838113; const int DYNCONV_STRREF_PLEASE_WAIT = 16824202; // "Please wait" const int DYNCONV_STRREF_PREVIOUS = 16824203; // "Previous" @@ -477,9 +478,28 @@ void _DynConvInternal_ExitedConvo(object oPC, int bAbort) DeleteLocalInt(oPC, DYNCONV_STAGE); DeleteLocalString(oPC, DYNCONV_SCRIPT); DeleteLocalString(oPC, "DynConv_HeaderText"); - int i; - for(i = DYNCONV_MIN_TOKEN; i <= DYNCONV_MAX_TOKEN; i++) - DeleteLocalString(oPC, GetTokenIDString(i)); + + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_HEADER)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_0)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_1)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_2)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_3)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_4)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_5)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_6)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_7)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_8)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_REPLY_9)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_EXIT)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_WAIT)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_NEXT)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_TOKEN_PREV)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_MIN_TOKEN)); + DeleteLocalString(oPC, GetTokenIDString(DYNCONV_MAX_TOKEN)); + + //int i; + //for(i = DYNCONV_MIN_TOKEN; i <= DYNCONV_MAX_TOKEN; i++) + //DeleteLocalString(oPC, GetTokenIDString(i)); } } } diff --git a/nwn/nwnprc/trunk/include/inc_item_props.nss b/nwn/nwnprc/trunk/include/inc_item_props.nss index b1edfc27..b912fad3 100644 --- a/nwn/nwnprc/trunk/include/inc_item_props.nss +++ b/nwn/nwnprc/trunk/include/inc_item_props.nss @@ -1643,7 +1643,60 @@ int GetIsMagicItem(object oItem) int FeatToIprop(int nFeat) { switch(nFeat) - {//: Weapon Focus + { + //:: Weapon Proficiencies + case FEAT_WEAPON_PROFICIENCY_SHORTSWORD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTSWORD; + case FEAT_WEAPON_PROFICIENCY_LONGSWORD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LONGSWORD; + case FEAT_WEAPON_PROFICIENCY_BATTLEAXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_BATTLEAXE; + case FEAT_WEAPON_PROFICIENCY_BASTARD_SWORD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_BASTARD_SWORD; + case FEAT_WEAPON_PROFICIENCY_LIGHT_FLAIL: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_FLAIL; + case FEAT_WEAPON_PROFICIENCY_WARHAMMER: return IP_CONST_FEAT_WEAPON_PROFICIENCY_WARHAMMER; + case FEAT_WEAPON_PROFICIENCY_LONGBOW: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LONGBOW; + case FEAT_WEAPON_PROFICIENCY_LIGHT_MACE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_MACE; + case FEAT_WEAPON_PROFICIENCY_HALBERD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_HALBERD; + case FEAT_WEAPON_PROFICIENCY_SHORTBOW: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTBOW; + case FEAT_WEAPON_PROFICIENCY_TWO_BLADED_SWORD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_TWO_BLADED_SWORD; + case FEAT_WEAPON_PROFICIENCY_GREATSWORD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_GREATSWORD; + case FEAT_WEAPON_PROFICIENCY_GREATAXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_GREATAXE; + case FEAT_WEAPON_PROFICIENCY_DART: return IP_CONST_FEAT_WEAPON_PROFICIENCY_DART; + case FEAT_WEAPON_PROFICIENCY_DIRE_MACE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_DIRE_MACE; + case FEAT_WEAPON_PROFICIENCY_DOUBLE_AXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_DOUBLE_AXE; + case FEAT_WEAPON_PROFICIENCY_HEAVY_FLAIL: return IP_CONST_FEAT_WEAPON_PROFICIENCY_HEAVY_FLAIL; + case FEAT_WEAPON_PROFICIENCY_LIGHT_HAMMER: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_HAMMER; + case FEAT_WEAPON_PROFICIENCY_HANDAXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_HANDAXE; + case FEAT_WEAPON_PROFICIENCY_KAMA: return IP_CONST_FEAT_WEAPON_PROFICIENCY_KAMA; + case FEAT_WEAPON_PROFICIENCY_KATANA: return IP_CONST_FEAT_WEAPON_PROFICIENCY_KATANA; + case FEAT_WEAPON_PROFICIENCY_KUKRI: return IP_CONST_FEAT_WEAPON_PROFICIENCY_KUKRI; + case FEAT_WEAPON_PROFICIENCY_MORNINGSTAR: return IP_CONST_FEAT_WEAPON_PROFICIENCY_MORNINGSTAR; + case FEAT_WEAPON_PROFICIENCY_RAPIER: return IP_CONST_FEAT_WEAPON_PROFICIENCY_RAPIER; + case FEAT_WEAPON_PROFICIENCY_SCIMITAR: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SCIMITAR; + case FEAT_WEAPON_PROFICIENCY_SCYTHE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SCYTHE; + case FEAT_WEAPON_PROFICIENCY_SHORTSPEAR: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SHORTSPEAR; + case FEAT_WEAPON_PROFICIENCY_SHURIKEN: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SHURIKEN; + case FEAT_WEAPON_PROFICIENCY_SICKLE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SICKLE; + case FEAT_WEAPON_PROFICIENCY_SLING: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SLING; + case FEAT_WEAPON_PROFICIENCY_THROWING_AXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_THROWING_AXE; + case FEAT_WEAPON_PROFICIENCY_TRIDENT: return IP_CONST_FEAT_WEAPON_PROFICIENCY_TRIDENT; + case FEAT_WEAPON_PROFICIENCY_DWARVEN_WARAXE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_DWARVEN_WARAXE; + case FEAT_WEAPON_PROFICIENCY_WHIP: return IP_CONST_FEAT_WEAPON_PROFICIENCY_WHIP; + case FEAT_WEAPON_PROFICIENCY_ELVEN_LIGHTBLADE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_ELVEN_LIGHTBLADE; + case FEAT_WEAPON_PROFICIENCY_ELVEN_THINBLADE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_ELVEN_THINBLADE; + case FEAT_WEAPON_PROFICIENCY_ELVEN_COURTBLADE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_ELVEN_COURTBLADE; + case FEAT_WEAPON_PROFICIENCY_LIGHT_LANCE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_LANCE; + case FEAT_WEAPON_PROFICIENCY_HEAVY_PICK: return IP_CONST_FEAT_WEAPON_PROFICIENCY_HEAVY_PICK; + case FEAT_WEAPON_PROFICIENCY_LIGHT_PICK: return IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_PICK; + case FEAT_WEAPON_PROFICIENCY_SAI: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SAI; + case FEAT_WEAPON_PROFICIENCY_NUNCHAKU: return IP_CONST_FEAT_WEAPON_PROFICIENCY_NUNCHAKU; + case FEAT_WEAPON_PROFICIENCY_FALCHION: return IP_CONST_FEAT_WEAPON_PROFICIENCY_FALCHION; + case FEAT_WEAPON_PROFICIENCY_SAP: return IP_CONST_FEAT_WEAPON_PROFICIENCY_SAP; + case FEAT_WEAPON_PROFICIENCY_KATAR: return IP_CONST_FEAT_WEAPON_PROFICIENCY_KATAR; + case FEAT_WEAPON_PROFICIENCY_HEAVY_MACE: return IP_CONST_FEAT_WEAPON_PROFICIENCY_HEAVY_MACE; + case FEAT_WEAPON_PROFICIENCY_MAUL: return IP_CONST_FEAT_WEAPON_PROFICIENCY_MAUL; + case FEAT_WEAPON_PROFICIENCY_DOUBLE_SCIMITAR: return IP_CONST_FEAT_WEAPON_PROFICIENCY_DOUBLE_SCIMITAR; + case FEAT_WEAPON_PROFICIENCY_GOAD: return IP_CONST_FEAT_WEAPON_PROFICIENCY_GOAD; + case FEAT_WEAPON_PROFICIENCY_EAGLE_CLAW: return IP_CONST_FEAT_WEAPON_PROFICIENCY_EAGLE_CLAW; + + //: Weapon Focus case FEAT_WEAPON_FOCUS_BASTARD_SWORD: return IP_CONST_FEAT_WEAPON_FOCUS_BASTARD_SWORD; case FEAT_WEAPON_FOCUS_BATTLE_AXE: return IP_CONST_FEAT_WEAPON_FOCUS_BATTLE_AXE; case FEAT_WEAPON_FOCUS_CLUB: return IP_CONST_FEAT_WEAPON_FOCUS_CLUB; diff --git a/nwn/nwnprc/trunk/include/moi_inc_moifunc.nss b/nwn/nwnprc/trunk/include/moi_inc_moifunc.nss index a2b0a3b5..62af8585 100644 --- a/nwn/nwnprc/trunk/include/moi_inc_moifunc.nss +++ b/nwn/nwnprc/trunk/include/moi_inc_moifunc.nss @@ -1170,7 +1170,10 @@ int GetMaxEssentiaCapacityFeat(object oMeldshaper) { int nMax = 1; // Always can invest one int nHD = GetHitDice(oMeldshaper); - if (nHD >= 31) nMax = 5; + if (nHD >= 61) nMax = 8; + else if (nHD >= 51) nMax = 7; + else if (nHD >= 41) nMax = 6; + else if (nHD >= 31) nMax = 5; else if (nHD >= 18) nMax = 4; else if (nHD >= 12) nMax = 3; else if (nHD >= 6) nMax = 2; diff --git a/nwn/nwnprc/trunk/include/prc_inc_fork.nss b/nwn/nwnprc/trunk/include/prc_inc_fork.nss index 2b19f97d..5cefd1d9 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_fork.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_fork.nss @@ -23,11 +23,14 @@ const int FEAT_TYPE_IMPROVED_CRITICAL = 5; const int FEAT_TYPE_OVERWHELMING_CRITICAL = 6; const int FEAT_TYPE_DEVASTATING_CRITICAL = 7; const int FEAT_TYPE_WEAPON_OF_CHOICE = 8; +const int FEAT_TYPE_WEAPON_PROFICIENCY = 9; ////////////////////////////////////////////////// /* Function prototypes */ ////////////////////////////////////////////////// + int GetProficiencyFeatOfWeaponType(int iWeaponType); + /** * Returns the appropriate weapon feat given a weapon type. * @@ -210,10 +213,85 @@ int GetFeatOfWeaponType(int iWeaponType, int iFeatType) case FEAT_TYPE_OVERWHELMING_CRITICAL: return GetOverwhelmingCriticalFeatOfWeaponType(iWeaponType); case FEAT_TYPE_DEVASTATING_CRITICAL: return GetDevastatingCriticalFeatOfWeaponType(iWeaponType); case FEAT_TYPE_WEAPON_OF_CHOICE: return GetWeaponOfChoiceFeatOfWeaponType(iWeaponType); + case FEAT_TYPE_WEAPON_PROFICIENCY: return GetProficiencyFeatOfWeaponType(iWeaponType); } return -1; } +int GetProficiencyFeatOfWeaponType(int iWeaponType) +{ + switch(iWeaponType) + { + case BASE_ITEM_CBLUDGWEAPON: + case BASE_ITEM_CPIERCWEAPON: + case BASE_ITEM_CSLASHWEAPON: + case BASE_ITEM_CSLSHPRCWEAP: return FEAT_WEAPON_PROFICIENCY_CREATURE; + case BASE_ITEM_INVALID: return FEAT_IMPROVED_UNARMED_STRIKE; + + case BASE_ITEM_BASTARDSWORD: return FEAT_WEAPON_PROFICIENCY_BASTARD_SWORD; + case BASE_ITEM_BATTLEAXE: return FEAT_WEAPON_PROFICIENCY_BATTLEAXE; + case BASE_ITEM_CLUB: return FEAT_WEAPON_PROFICIENCY_CLUB; + case BASE_ITEM_DAGGER: return FEAT_WEAPON_PROFICIENCY_DAGGER; + case BASE_ITEM_DART: return FEAT_WEAPON_PROFICIENCY_DART; + case BASE_ITEM_DIREMACE: return FEAT_WEAPON_PROFICIENCY_DIRE_MACE; + case BASE_ITEM_DOUBLEAXE: return FEAT_WEAPON_PROFICIENCY_DOUBLE_AXE; + case BASE_ITEM_DWARVENWARAXE: return FEAT_WEAPON_PROFICIENCY_DWARVEN_WARAXE; + case BASE_ITEM_GREATAXE: return FEAT_WEAPON_PROFICIENCY_GREATAXE; + case BASE_ITEM_GREATSWORD: return FEAT_WEAPON_PROFICIENCY_GREATSWORD; + case BASE_ITEM_HALBERD: return FEAT_WEAPON_PROFICIENCY_HALBERD; + case BASE_ITEM_HANDAXE: return FEAT_WEAPON_PROFICIENCY_HANDAXE; + case BASE_ITEM_HEAVYCROSSBOW: return FEAT_WEAPON_PROFICIENCY_HEAVY_XBOW; + case BASE_ITEM_HEAVYFLAIL: return FEAT_WEAPON_PROFICIENCY_HEAVY_FLAIL; + case BASE_ITEM_KAMA: return FEAT_WEAPON_PROFICIENCY_KAMA; + case BASE_ITEM_KATANA: return FEAT_WEAPON_PROFICIENCY_KATANA; + case BASE_ITEM_KUKRI: return FEAT_WEAPON_PROFICIENCY_KUKRI; + case BASE_ITEM_LIGHTCROSSBOW: return FEAT_WEAPON_PROFICIENCY_LIGHT_XBOW; + case BASE_ITEM_LIGHTFLAIL: return FEAT_WEAPON_PROFICIENCY_LIGHT_FLAIL; + case BASE_ITEM_LIGHTHAMMER: return FEAT_WEAPON_PROFICIENCY_LIGHT_HAMMER; + case BASE_ITEM_LIGHTMACE: return FEAT_WEAPON_PROFICIENCY_LIGHT_MACE; + case BASE_ITEM_LONGBOW: return FEAT_WEAPON_PROFICIENCY_LONGBOW; + case BASE_ITEM_LONGSWORD: return FEAT_WEAPON_PROFICIENCY_LONGSWORD; + case BASE_ITEM_MORNINGSTAR: return FEAT_WEAPON_PROFICIENCY_MORNINGSTAR; + case BASE_ITEM_QUARTERSTAFF: return FEAT_WEAPON_PROFICIENCY_QUARTERSTAFF; + case BASE_ITEM_MAGICSTAFF: return FEAT_WEAPON_PROFICIENCY_QUARTERSTAFF; + case BASE_ITEM_RAPIER: return FEAT_WEAPON_PROFICIENCY_RAPIER; + case BASE_ITEM_SCIMITAR: return FEAT_WEAPON_PROFICIENCY_SCIMITAR; + case BASE_ITEM_SCYTHE: return FEAT_WEAPON_PROFICIENCY_SCYTHE; + case BASE_ITEM_SHORTBOW: return FEAT_WEAPON_PROFICIENCY_SHORTBOW; + case BASE_ITEM_SHORTSPEAR: return FEAT_WEAPON_PROFICIENCY_SHORTSPEAR; + case BASE_ITEM_SHORTSWORD: return FEAT_WEAPON_PROFICIENCY_SHORTSWORD; + case BASE_ITEM_SHURIKEN: return FEAT_WEAPON_PROFICIENCY_SHURIKEN; + case BASE_ITEM_SICKLE: return FEAT_WEAPON_PROFICIENCY_SICKLE; + case BASE_ITEM_SLING: return FEAT_WEAPON_PROFICIENCY_SLING; + case BASE_ITEM_THROWINGAXE: return FEAT_WEAPON_PROFICIENCY_THROWING_AXE; + case BASE_ITEM_TRIDENT: return FEAT_WEAPON_PROFICIENCY_TRIDENT; + case BASE_ITEM_TWOBLADEDSWORD: return FEAT_WEAPON_PROFICIENCY_TWO_BLADED_SWORD; + case BASE_ITEM_WARHAMMER: return FEAT_WEAPON_PROFICIENCY_WARHAMMER; + case BASE_ITEM_WHIP: return FEAT_WEAPON_PROFICIENCY_WHIP; + + //:: new item types + case BASE_ITEM_DOUBLE_SCIMITAR: return FEAT_WEAPON_PROFICIENCY_DOUBLE_SCIMITAR; + case BASE_ITEM_EAGLE_CLAW: return FEAT_WEAPON_PROFICIENCY_EAGLE_CLAW; + case BASE_ITEM_ELVEN_COURTBLADE: return FEAT_WEAPON_PROFICIENCY_ELVEN_COURTBLADE; + case BASE_ITEM_ELVEN_LIGHTBLADE: return FEAT_WEAPON_PROFICIENCY_ELVEN_LIGHTBLADE; + case BASE_ITEM_ELVEN_THINBLADE: return FEAT_WEAPON_PROFICIENCY_ELVEN_THINBLADE; + case BASE_ITEM_FALCHION: return FEAT_WEAPON_PROFICIENCY_FALCHION; + case BASE_ITEM_GOAD: return FEAT_WEAPON_PROFICIENCY_GOAD; + case BASE_ITEM_HEAVY_MACE: return FEAT_WEAPON_PROFICIENCY_HEAVY_MACE; + case BASE_ITEM_HEAVY_PICK: return FEAT_WEAPON_PROFICIENCY_HEAVY_PICK; + case BASE_ITEM_KATAR: return FEAT_WEAPON_PROFICIENCY_KATAR; + case BASE_ITEM_LIGHT_LANCE: return FEAT_WEAPON_PROFICIENCY_LIGHT_LANCE; + case BASE_ITEM_LIGHT_PICK: return FEAT_WEAPON_PROFICIENCY_LIGHT_PICK; + case BASE_ITEM_MAUL: return FEAT_WEAPON_PROFICIENCY_MAUL; + case BASE_ITEM_NUNCHAKU: return FEAT_WEAPON_PROFICIENCY_NUNCHAKU; + case BASE_ITEM_SAI: return FEAT_WEAPON_PROFICIENCY_SAI; + case BASE_ITEM_SAP: return FEAT_WEAPON_PROFICIENCY_SAP; + } + + return -1; +} + + int GetFocusFeatOfWeaponType(int iWeaponType) { switch(iWeaponType) @@ -844,4 +922,6 @@ int PRCLargeWeaponCheck(int iBaseType, int nSize) } } return sTest != "" && sTest != IntToString(nSize); -} \ No newline at end of file +} + +//::void main(){} \ No newline at end of file diff --git a/nwn/nwnprc/trunk/include/prc_inc_nwscript.nss b/nwn/nwnprc/trunk/include/prc_inc_nwscript.nss index 8ebc821c..4671756a 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_nwscript.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_nwscript.nss @@ -572,7 +572,10 @@ int GetMaxEssentiaCapacity(object oMeldshaper, int nClass, int nMeld) { int nMax = 1; // Always can invest one int nHD = GetHitDice(oMeldshaper); - if (nHD >= 31) nMax = 5; + if (nHD >= 61) nMax = 8; + else if (nHD >= 51) nMax = 7; + else if (nHD >= 41) nMax = 6; + else if (nHD >= 31) nMax = 5; else if (nHD >= 18) nMax = 4; else if (nHD >= 12) nMax = 3; else if (nHD >= 6) nMax = 2; diff --git a/nwn/nwnprc/trunk/include/prc_inc_wpnrest.nss b/nwn/nwnprc/trunk/include/prc_inc_wpnrest.nss index 9dcf65a8..1734b3b1 100644 --- a/nwn/nwnprc/trunk/include/prc_inc_wpnrest.nss +++ b/nwn/nwnprc/trunk/include/prc_inc_wpnrest.nss @@ -1,6 +1,6 @@ //:://///////////////////////////////////////////// //:: Weapon Restriction System Include -//:: prc_inc_restwpn.nss +//:: prc_inc_wpnrest.nss //:://///////////////////////////////////////////// /* Functions to support PnP Weapon Proficiency and @@ -23,6 +23,70 @@ * @param nHand The hand the weapon is wielded in. In the form of * ATTACK_BONUS_ONHAND or ATTACK_BONUS_OFFHAND. */ + +//:: returns TRUE if the wielded weapon works with the Swashbuckler's class abilities. +int GetHasSwashbucklerWeapon(object oPC) +{ + object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); + if (!GetIsObjectValid(oWeap)) return FALSE; + + int nType = GetBaseItemType(oWeap); + + switch (nType) + { + case BASE_ITEM_DAGGER: + case BASE_ITEM_KATAR: + case BASE_ITEM_HANDAXE: + case BASE_ITEM_KAMA: + case BASE_ITEM_KUKRI: + case BASE_ITEM_LIGHTHAMMER: + case BASE_ITEM_LIGHTMACE: + case BASE_ITEM_LIGHT_PICK: + case BASE_ITEM_RAPIER: + case BASE_ITEM_SHORTSWORD: + case BASE_ITEM_SICKLE: + case BASE_ITEM_WHIP: + case BASE_ITEM_SAI: + case BASE_ITEM_SAP: + case BASE_ITEM_NUNCHAKU: + case BASE_ITEM_GOAD: + case BASE_ITEM_ELVEN_LIGHTBLADE: + case BASE_ITEM_ELVEN_THINBLADE: + case BASE_ITEM_EAGLE_CLAW: + return TRUE; + } + + // Iaijutsu Master allows katana + if (GetLevelByClass(CLASS_TYPE_IAIJUTSU_MASTER, oPC) > 0) + { + if (nType == BASE_ITEM_KATANA) return TRUE; + } + + return FALSE; +} + +//:: returns TRUE if the wielded weapon works with the Champion of Corellon's Elegant Strike. +int GetHasCorellonWeapon(object oPC) +{ + object oWeap = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC); + if (!GetIsObjectValid(oWeap)) return FALSE; + + int nType = GetBaseItemType(oWeap); + + switch (nType) + { + case BASE_ITEM_SCIMITAR: + case BASE_ITEM_LONGSWORD: + case BASE_ITEM_RAPIER: + case BASE_ITEM_ELVEN_COURTBLADE: + case BASE_ITEM_ELVEN_LIGHTBLADE: + case BASE_ITEM_ELVEN_THINBLADE: + return TRUE; + } + + return FALSE; +} + void DoRacialEquip(object oPC, int nBaseType); //return if PC has proficiency in an item diff --git a/nwn/nwnprc/trunk/include/prc_ipfeat_const.nss b/nwn/nwnprc/trunk/include/prc_ipfeat_const.nss index d419f0b3..672fd045 100644 --- a/nwn/nwnprc/trunk/include/prc_ipfeat_const.nss +++ b/nwn/nwnprc/trunk/include/prc_ipfeat_const.nss @@ -262,7 +262,7 @@ const int IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_LANCE = 4638; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_HEAVY_PICK = 4639; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_LIGHT_PICK = 4640; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_SAI = 4641; -const int IP_CONST_FEAT_WEAPON_PROFICIENCY_NUNCHUKU = 4642; +const int IP_CONST_FEAT_WEAPON_PROFICIENCY_NUNCHAKU = 4642; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_FALCHION = 4643; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_SAP = 4644; const int IP_CONST_FEAT_WEAPON_PROFICIENCY_KATAR = 4645; diff --git a/nwn/nwnprc/trunk/include/psi_inc_core.nss b/nwn/nwnprc/trunk/include/psi_inc_core.nss index 9083bee8..a7acfb47 100644 --- a/nwn/nwnprc/trunk/include/psi_inc_core.nss +++ b/nwn/nwnprc/trunk/include/psi_inc_core.nss @@ -520,9 +520,9 @@ void GainPsionicFocus(object oGainee = OBJECT_SELF) { int nPsySneak = 1; if(GetHasFeat(FEAT_PSY_SNEAK_ATTACK_2d6, oGainee)) - nPsySneak += 2; + nPsySneak += 1; if(GetHasFeat(FEAT_PSY_SNEAK_ATTACK_3d6, oGainee)) - nPsySneak += 3; + nPsySneak += 1; SetLocalInt(oGainee, "PsyRogueSneak",nPsySneak); DelayCommand(0.1, ExecuteScript("prc_sneak_att", oGainee)); diff --git a/nwn/nwnprc/trunk/newspellbook/inv_eldtch_shape.nss b/nwn/nwnprc/trunk/newspellbook/inv_eldtch_shape.nss index aa9c5663..77768ce5 100644 --- a/nwn/nwnprc/trunk/newspellbook/inv_eldtch_shape.nss +++ b/nwn/nwnprc/trunk/newspellbook/inv_eldtch_shape.nss @@ -158,7 +158,194 @@ void main() if(nEssence == INVOKE_PENETRATING_BLAST || nEssence2 == INVOKE_PENETRATING_BLAST) nPenetr += 4; - //Get first target in spell area +//Get first target in spell area +object oTarget = MyFirstObjectInShape(nShape, fRange, lTargetArea, TRUE, + OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oPC)); + +while(GetIsObjectValid(oTarget)) +{ + int nDamage = d6(nDmgDice); + if(GetHasSpellEffect(INVOKE_WILD_FRENZY, oPC)) + nDamage += 2; + + //Bane Blast + int nRace = MyPRCGetRacialType(oTarget); + if(nRace == ((nEssenceData >>> 16) & 0xFF) - 1 + || nRace == ((nEssenceData2 >>> 16) & 0xFF) - 1) + nDamage += d6(2); + + //Hammer Blast + if(GetObjectType(oTarget) != OBJECT_TYPE_CREATURE + && nEssence != INVOKE_HAMMER_BLAST + && nEssence2 != INVOKE_HAMMER_BLAST) + { + nDamage /= 2; + if(nDamage < 1) nDamage = 1; + nHellFire /= 2; + } + + int nRep = bDoom ? SPELL_TARGET_SELECTIVEHOSTILE : SPELL_TARGET_STANDARDHOSTILE; + + // Heal friendly undead when affected by Doom + negative energy + if (nDamageType == DAMAGE_TYPE_NEGATIVE && bDoom && GetIsFriend(oTarget, oPC) + && MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(nDamage), oTarget); + } + // Skip all other allies when bDoom is active + else if (bDoom && GetIsFriend(oTarget, oPC)) + { + oTarget = MyNextObjectInShape(nShape, fRange, lTargetArea, TRUE, + OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oPC)); + continue; + } + else if (spellsIsTarget(oTarget, nRep, oPC) && oTarget != oPC) + { + //Fire cast spell at event for the specified target + SignalEvent(oTarget, EventSpellCastAt(oPC, INVOKE_ELDRITCH_BLAST)); + float fDelay = GetDistanceBetween(oPC, oTarget)/20; + + nDamage = PRCGetReflexAdjustedDamage(nDamage, oTarget, nDC, nReflexSaveType); + if(nDamage > 0) + { + int iSR = PRCDoResistSpell(oPC, oTarget, nPenetr); + if(!iSR) + { + // secondary essence effects... + if(nEssence == INVOKE_PENETRATING_BLAST || nEssence2 == INVOKE_PENETRATING_BLAST) + { + eEssence = EffectSpellResistanceDecrease(5); + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, TurnsToSeconds(1)); + } + if((nEssence == INVOKE_HINDERING_BLAST || nEssence2 == INVOKE_HINDERING_BLAST) + && PRCGetIsAliveCreature(oTarget)) + { + eEssence = EffectSlow(); + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(1)); + } + if(nEssence == INVOKE_BINDING_BLAST || nEssence2 == INVOKE_BINDING_BLAST) + { + eEssence = EffectStunned(); + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(1)); + } + if(nEssence == INVOKE_BEWITCHING_BLAST || nEssence2 == INVOKE_BEWITCHING_BLAST) + { + eEssence = PRCEffectConfused(); + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_MIND_SPELLS)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(1)); + } + if((nEssence == INVOKE_BESHADOWED_BLAST || nEssence2 == INVOKE_BESHADOWED_BLAST) + && PRCGetIsAliveCreature(oTarget)) + { + eEssence = EffectBlindness(); + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(1)); + } + if((nEssence == INVOKE_HELLRIME_BLAST || nEssence2 == INVOKE_HELLRIME_BLAST)) + { + eEssence = EffectAbilityDecrease(ABILITY_DEXTERITY, 4); + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, TurnsToSeconds(10)); + } + if(nEssence == INVOKE_UTTERDARK_BLAST || nEssence2 == INVOKE_UTTERDARK_BLAST) + { + eEssence = EffectNegativeLevel(2); + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, HoursToSeconds(1)); + } + if(nEssence == INVOKE_FRIGHTFUL_BLAST || nEssence2 == INVOKE_FRIGHTFUL_BLAST) + { + effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eFear = EffectFrightened(); + effect eAttackD = EffectAttackDecrease(2); + effect eDmgD = EffectDamageDecrease(2, DAMAGE_TYPE_BLUDGEONING|DAMAGE_TYPE_PIERCING|DAMAGE_TYPE_SLASHING); + effect SaveD = EffectSavingThrowDecrease(SAVING_THROW_ALL,2); + effect Skill = EffectSkillDecrease(SKILL_ALL_SKILLS,2); + + eEssence = EffectLinkEffects(eDmgD, eDur2); + eEssence = EffectLinkEffects(eEssence, eAttackD); + eEssence = EffectLinkEffects(eEssence, SaveD); + eEssence = EffectLinkEffects(eEssence, eFear); + eEssence = EffectLinkEffects(eEssence, Skill); + + if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, TurnsToSeconds(1)); + } + if(nEssence == INVOKE_NOXIOUS_BLAST || nEssence2 == INVOKE_NOXIOUS_BLAST) + { + eEssence = EffectDazed(); + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, TurnsToSeconds(1)); + } + if(nEssence == INVOKE_CORRUPTING_BLAST || nEssence2 == INVOKE_CORRUPTING_BLAST) + { + if(CheckTurnUndeadUses(oPC, 1)) + { + int nRed = GetLevelByClass(CLASS_TYPE_ELDRITCH_DISCIPLE, oPC) / 2; + if(nRed < 1) nRed = 1; + eEssence = EffectSavingThrowDecrease(SAVING_THROW_WILL, nRed); + eEssence = EffectLinkEffects(eEssence, EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE)); + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, RoundsToSeconds(1)); + } + else + SpeakStringByStrRef(40550); + } + if((nEssence == INVOKE_SICKENING_BLAST || nEssence2 == INVOKE_SICKENING_BLAST) + && PRCGetIsAliveCreature(oTarget)) + { + eEssence = EffectSickened(); + if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEssence, oTarget, 60.0); + } + if((nEssence == INVOKE_BRIMSTONE_BLAST || nEssence2 == INVOKE_BRIMSTONE_BLAST) + && !GetLocalInt(oTarget, "BrimstoneFire")) + { + if(!PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) + { + SetLocalInt(oTarget, "BrimstoneFire", TRUE); + int nDuration = nInvLevel / 5; + DelayCommand(RoundsToSeconds(nDuration), DeleteLocalInt(oTarget, "BrimstoneFire")); + + int i; + float fRound = RoundsToSeconds(1); + for(i = 1; i <= nDuration; i++) + { + DelayCommand(fRound * i, DoDelayedBlast(oTarget)); + } + } + } + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + + // Vitriolic ignores SR + if(nEssence == INVOKE_VITRIOLIC_BLAST || nEssence2 == INVOKE_VITRIOLIC_BLAST) + { + if(iSR) ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + + int nDuration = nInvLevel / 5; + int i; + float fRound = RoundsToSeconds(1); + for(i = 1; i <= nDuration; i++) + { + DelayCommand(fRound * i, DoDelayedBlast(oTarget, DAMAGE_TYPE_ACID, VFX_IMP_ACID_S)); + } + } + + ApplyBlastDamage(oPC, oTarget, 1, iSR, nDamage, nDamageType, nDamageType2, nHellFire, FALSE); + } + } + + oTarget = MyNextObjectInShape(nShape, fRange, lTargetArea, TRUE, + OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oPC)); + + if(DEBUG) DoDebug("inv_eldtch_shape: Next target is: " + DebugObject2Str(oTarget)); +} + +/* //Get first target in spell area object oTarget = MyFirstObjectInShape(nShape, fRange, lTargetArea, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oPC)); while(GetIsObjectValid(oTarget)) { @@ -327,7 +514,7 @@ void main() oTarget = MyNextObjectInShape(nShape, fRange, lTargetArea, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE, GetPosition(oPC)); if(DEBUG) DoDebug("inv_eldtch_shape: Next target is: " + DebugObject2Str(oTarget)); } - + */ if(nBlast == INVOKE_ELDRITCH_LINE) ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(nBeamVFX, oPC, BODY_NODE_HAND, FALSE), oBeamTarget, 1.0f); else if(nBlast == INVOKE_ELDRITCH_DOOM) diff --git a/nwn/nwnprc/trunk/newspellbook/inv_warlock.nss b/nwn/nwnprc/trunk/newspellbook/inv_warlock.nss index 48d2414f..f779f56e 100644 --- a/nwn/nwnprc/trunk/newspellbook/inv_warlock.nss +++ b/nwn/nwnprc/trunk/newspellbook/inv_warlock.nss @@ -96,7 +96,7 @@ void main() IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); } - int nFireResist; + int nFireResist = -1; if(GetHasFeat(FEAT_WARLOCK_RESIST_FIRE)) nFireResist = nResistAmt; if(nHellFire > 1) diff --git a/nwn/nwnprc/trunk/newspellbook/tob_etbl_island.nss b/nwn/nwnprc/trunk/newspellbook/tob_etbl_island.nss index c89a050a..479cb537 100644 --- a/nwn/nwnprc/trunk/newspellbook/tob_etbl_island.nss +++ b/nwn/nwnprc/trunk/newspellbook/tob_etbl_island.nss @@ -42,7 +42,7 @@ void main() // Expended already? if(GetLocalInt(oInitiator, "ETBL_Island_In_Time_Expended")) { - FloatingTextStringOnCreature("*Tactical Insight expended already*", oInitiator, FALSE); + FloatingTextStringOnCreature("*Island in Time expended already*", oInitiator, FALSE); return; } diff --git a/nwn/nwnprc/trunk/newspellbook/tob_feats.nss b/nwn/nwnprc/trunk/newspellbook/tob_feats.nss index e69c4318..98220878 100644 --- a/nwn/nwnprc/trunk/newspellbook/tob_feats.nss +++ b/nwn/nwnprc/trunk/newspellbook/tob_feats.nss @@ -34,6 +34,7 @@ void ShadowBlade(object oInitiator) if (nDisc == DISCIPLINE_SHADOW_HAND && nWeap) { int nDamageType = GetWeaponDamageType(oWeapon); + if(DEBUG) DoDebug("tob_feats >> ShadowBlade(): " + IntToString(nDex) +": extra points of "+IntToString(nDamageType)+" Damage."); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ExtraordinaryEffect(EffectDamageIncrease(IPGetDamageBonusConstantFromNumber(nDex), nDamageType)), oInitiator, 6.0); SetLocalInt(oInitiator, "ShadowBladeDam", nDex); DelayCommand(6.0, DeleteLocalInt(oInitiator, "ShadowBladeDam")); diff --git a/nwn/nwnprc/trunk/others/dyncov_base.dlg b/nwn/nwnprc/trunk/others/dyncov_base.dlg index a400ef97..242052dd 100644 Binary files a/nwn/nwnprc/trunk/others/dyncov_base.dlg and b/nwn/nwnprc/trunk/others/dyncov_base.dlg differ diff --git a/nwn/nwnprc/trunk/others/prc_2da_cache.utc b/nwn/nwnprc/trunk/others/prc_2da_cache.utc index 41742d03..adf326a9 100644 Binary files a/nwn/nwnprc/trunk/others/prc_2da_cache.utc and b/nwn/nwnprc/trunk/others/prc_2da_cache.utc differ diff --git a/nwn/nwnprc/trunk/others/prc_cat001.utc b/nwn/nwnprc/trunk/others/prc_cat001.utc new file mode 100644 index 00000000..c5ac81a3 Binary files /dev/null and b/nwn/nwnprc/trunk/others/prc_cat001.utc differ diff --git a/nwn/nwnprc/trunk/others/prc_cat_hide001.uti b/nwn/nwnprc/trunk/others/prc_cat_hide001.uti new file mode 100644 index 00000000..92d6c629 Binary files /dev/null and b/nwn/nwnprc/trunk/others/prc_cat_hide001.uti differ diff --git a/nwn/nwnprc/trunk/others/psi_ast_con_conv.dlg b/nwn/nwnprc/trunk/others/psi_ast_con_conv.dlg index 2f9c87e5..40db7e0c 100644 Binary files a/nwn/nwnprc/trunk/others/psi_ast_con_conv.dlg and b/nwn/nwnprc/trunk/others/psi_ast_con_conv.dlg differ diff --git a/nwn/nwnprc/trunk/others/psi_sk_mbld_conv.dlg b/nwn/nwnprc/trunk/others/psi_sk_mbld_conv.dlg index 5c7467c6..53922d8e 100644 Binary files a/nwn/nwnprc/trunk/others/psi_sk_mbld_conv.dlg and b/nwn/nwnprc/trunk/others/psi_sk_mbld_conv.dlg differ diff --git a/nwn/nwnprc/trunk/psionics/psi_ac_conv_tokn.nss b/nwn/nwnprc/trunk/psionics/psi_ac_conv_tokn.nss index 4a3ee1e3..9d262691 100644 --- a/nwn/nwnprc/trunk/psionics/psi_ac_conv_tokn.nss +++ b/nwn/nwnprc/trunk/psionics/psi_ac_conv_tokn.nss @@ -21,6 +21,8 @@ Options selected: Category A: Category B: Category C: + +PRC8 token pre-fix = 161838 */ void main() { @@ -28,14 +30,14 @@ void main() int nACLevel = GetLocalInt(oPC, ASTRAL_CONSTRUCT_LEVEL + EDIT); int nFlags = GetLocalInt(oPC, ASTRAL_CONSTRUCT_OPTION_FLAGS + EDIT); - SetCustomToken(100, IntToString(nACLevel) + " (Base PP cost " + IntToString(nACLevel * 2 - 1) + ")"); - SetCustomToken(101, GetSizeAsString(nACLevel)); - SetCustomToken(102, GetHPAsString(nACLevel, nFlags)); - SetCustomToken(103, GetSpeedAsString(nACLevel, nFlags)); - SetCustomToken(104, IntToString(GetMaxSlotsForLevel(nACLevel, oPC) - GetTotalNumberOfSlotsUsed(oPC))); - SetCustomToken(105, GetMenuASelectionsAsString(oPC)); - SetCustomToken(106, GetMenuBSelectionsAsString(oPC)); - SetCustomToken(107, GetMenuCSelectionsAsString(oPC)); + SetCustomToken(161838200, IntToString(nACLevel) + " (Base PP cost " + IntToString(nACLevel * 2 - 1) + ")"); + SetCustomToken(161838201, GetSizeAsString(nACLevel)); + SetCustomToken(161838202, GetHPAsString(nACLevel, nFlags)); + SetCustomToken(161838203, GetSpeedAsString(nACLevel, nFlags)); + SetCustomToken(161838204, IntToString(GetMaxSlotsForLevel(nACLevel, oPC) - GetTotalNumberOfSlotsUsed(oPC))); + SetCustomToken(161838205, GetMenuASelectionsAsString(oPC)); + SetCustomToken(161838206, GetMenuBSelectionsAsString(oPC)); + SetCustomToken(161838207, GetMenuCSelectionsAsString(oPC)); } diff --git a/nwn/nwnprc/trunk/psionics/psi_pow_frmdment.nss b/nwn/nwnprc/trunk/psionics/psi_pow_frmdment.nss index 45e23662..a37dc2c2 100644 --- a/nwn/nwnprc/trunk/psionics/psi_pow_frmdment.nss +++ b/nwn/nwnprc/trunk/psionics/psi_pow_frmdment.nss @@ -52,9 +52,51 @@ Augment: For every additional power point you spend, this power’s duration increases by 2 rounds. */ - #include "prc_inc_spells" +void main() +{ + object oTarget = GetEnteringObject(); + object oCreator = GetAreaOfEffectCreator(); + + string sCreatorID = GetObjectUUID(oCreator); + string sVar = "FoD_FEAR_IMMUNE_" + sCreatorID; + + // Skip if target already immune to this manifester's frightful presence + if (GetLocalInt(oTarget, sVar)) + return; + + effect eLink = EffectShaken(); + eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR)); + eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE)); + + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + + int nDC = 16 + GetAbilityModifier(ABILITY_CHARISMA, oCreator); + int nDuration = d6(5); + + if (GetIsEnemy(oTarget, oCreator)) + { + SignalEvent(oTarget, EventSpellCastAt(oCreator, SPELLABILITY_AURA_FEAR)); + + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR)) + { + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + else + { + // Successful save grants 24-hour immunity to this manifester’s aura + SetLocalInt(oTarget, sVar, TRUE); + DelayCommand(HoursToSeconds(24), DeleteLocalInt(oTarget, sVar)); + } + } +} + + + +/* #include "prc_inc_spells" + void main() { //Declare major variables @@ -78,4 +120,4 @@ void main() ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } } -} +} */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_calc.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_calc.nss index be23f60f..4db741b0 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_calc.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_calc.nss @@ -48,7 +48,7 @@ int StartingConditional() if(nFlags & MBLADE_FLAG_SHIELD_9) { sSelect += (bFirst-- > 0 ? "":" ,") + "Shield of Thought +9"; } if(nFlags & MBLADE_FLAG_SHIELD_10) { sSelect += (bFirst-- > 0 ? "":" ,") + "Shield of Thought +10"; } - SetCustomToken(100, sSelect); + SetCustomToken(161838300, sSelect); // Build free enhancement boni //SetCustomToken(101, IntToString(GetMaxEnhancementCost(oPC) - GetTotalEnhancementCost(nFlags)); diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_calt.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_calt.nss index 63bc3839..df939f7c 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_calt.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_calt.nss @@ -48,10 +48,10 @@ int StartingConditional() if(nFlags & MBLADE_FLAG_SHIELD_9) { sSelect += (bFirst-- > 0 ? "":" ,") + "Shield of Thought +9"; } if(nFlags & MBLADE_FLAG_SHIELD_10) { sSelect += (bFirst-- > 0 ? "":" ,") + "Shield of Thought +10"; } - SetCustomToken(100, sSelect); + SetCustomToken(161838300, sSelect); // Build free enhancement boni - SetCustomToken(101, IntToString(GetMaxEnhancementCost(oPC) - GetTotalEnhancementCost(nFlags))); + SetCustomToken(161838301, IntToString(GetMaxEnhancementCost(oPC) - GetTotalEnhancementCost(nFlags))); // Always pass, this is just to get the tokens in return TRUE; diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_co_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_co_s.nss index edabc73b..88ad1493 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_co_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_co_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_COLLISION) { - SetCustomToken(108, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838308, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_COLLISION) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(108, GetStringByStrRef(62476)); // Add + SetCustomToken(161838308, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_de_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_de_s.nss index a27be1db..b4b23e70 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_de_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_de_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_DEFENDING) { - SetCustomToken(103, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838303, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_DEFENDING) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(103, GetStringByStrRef(62476)); // Add + SetCustomToken(161838303, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_di_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_di_s.nss index 855289a3..00f9a907 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_di_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_di_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_DISRUPTING) { - SetCustomToken(113, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838313, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_DISRUPTING) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(113, GetStringByStrRef(62476)); // Add + SetCustomToken(161838313, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_ke_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_ke_s.nss index a9406fb9..7fc11d74 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_ke_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_ke_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_KEEN) { - SetCustomToken(104, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838304, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_KEEN) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(104, GetStringByStrRef(62476)); // Add + SetCustomToken(161838304, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_lu_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_lu_s.nss index 2bc9d4b9..8afd5874 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_lu_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_lu_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_LUCKY) { - SetCustomToken(102, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838302, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_LUCKY) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(102, GetStringByStrRef(62476)); // Add + SetCustomToken(161838302, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_mc_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_mc_s.nss index 3d159d9b..7b057ac9 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_mc_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_mc_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_MIGHTYCLEAVING) { - SetCustomToken(107, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838307, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_MIGHTYCLEAVING) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(107, GetStringByStrRef(62476)); // Add + SetCustomToken(161838307, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_mi_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_mi_s.nss index 696ef1a7..90c51e4d 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_mi_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_mi_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_MINDCRUSHER) { - SetCustomToken(109, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838309, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_MINDCRUSHER) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(109, GetStringByStrRef(62476)); // Add + SetCustomToken(161838309, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_pb_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_pb_s.nss index 9e5faa09..ea60af45 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_pb_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_pb_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_PSYCHOKINETICBURST) { - SetCustomToken(110, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838310, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_PSYCHOKINETICBURST) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(110, GetStringByStrRef(62476)); // Add + SetCustomToken(161838310, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_ps_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_ps_s.nss index a86359d5..24a4fb15 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_ps_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_ps_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_PSYCHOKINETIC) { - SetCustomToken(106, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838306, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_PSYCHOKINETIC) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(106, GetStringByStrRef(62476)); // Add + SetCustomToken(161838306, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s0_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s0_s.nss index 407363f3..393270bf 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s0_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s0_s.nss @@ -5,12 +5,16 @@ /* Checks whether to show Shield of Thought +10 and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Fox //:: Created On: Feb 15, 2008 //::////////////////////////////////////////////// + + #include "psi_inc_soulkn" @@ -20,13 +24,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_10) { - SetCustomToken(124, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838124, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_10) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(124, GetStringByStrRef(62476)); // Add + SetCustomToken(161838124, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s1_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s1_s.nss index 324bd551..07e308cb 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s1_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s1_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_1) { - SetCustomToken(115, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838315, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_1) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(115, GetStringByStrRef(62476)); // Add + SetCustomToken(161838315, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s2_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s2_s.nss index 26f3c9ae..48ea1ad4 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s2_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s2_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_2) { - SetCustomToken(116, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838316, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_2) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(116, GetStringByStrRef(62476)); // Add + SetCustomToken(161838316, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s3_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s3_s.nss index 4d3e25c6..9c5282ff 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s3_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s3_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_3) { - SetCustomToken(117, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838317, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_3) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(117, GetStringByStrRef(62476)); // Add + SetCustomToken(161838317, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s4_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s4_s.nss index 6fa855ee..2ef9d29f 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s4_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s4_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_4) { - SetCustomToken(118, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838318, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_4) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(118, GetStringByStrRef(62476)); // Add + SetCustomToken(161838318, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s5_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s5_s.nss index 6834c3ee..efb9ae5f 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s5_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s5_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_5) { - SetCustomToken(119, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838319, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_5) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(119, GetStringByStrRef(62476)); // Add + SetCustomToken(161838319, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s6_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s6_s.nss index 1cc7c984..e570501c 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s6_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s6_s.nss @@ -5,6 +5,8 @@ /* Checks whether to show Shield of Thought +6 and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Fox @@ -20,13 +22,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_6) { - SetCustomToken(120, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838120, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_6) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(120, GetStringByStrRef(62476)); // Add + SetCustomToken(161838120, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s7_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s7_s.nss index 569a4c07..f83f533f 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s7_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s7_s.nss @@ -5,6 +5,8 @@ /* Checks whether to show Shield of Thought +7 and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Fox @@ -20,13 +22,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_7) { - SetCustomToken(121, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838121, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_7) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(121, GetStringByStrRef(62476)); // Add + SetCustomToken(161838121, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s8_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s8_s.nss index 3fc8d3ce..193986d1 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s8_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s8_s.nss @@ -5,6 +5,8 @@ /* Checks whether to show Shield of Thought +8 and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Fox @@ -20,13 +22,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_8) { - SetCustomToken(122, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838122, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_8) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(122, GetStringByStrRef(62476)); // Add + SetCustomToken(161838122, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s9_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s9_s.nss index bf885f6a..232ca4e3 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_s9_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_s9_s.nss @@ -5,6 +5,8 @@ /* Checks whether to show Shield of Thought +9 and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Fox @@ -20,13 +22,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SHIELD_9) { - SetCustomToken(123, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838123, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SHIELD_9) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(123, GetStringByStrRef(62476)); // Add + SetCustomToken(161838123, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_so_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_so_s.nss index de847c4b..fcd52e5a 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_so_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_so_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SOULBREAKER) { - SetCustomToken(114, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838314, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SOULBREAKER) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(114, GetStringByStrRef(62476)); // Add + SetCustomToken(161838314, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_su_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_su_s.nss index 12378145..47b14c46 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_su_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_su_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_SUPPRESSION) { - SetCustomToken(111, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838311, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_SUPPRESSION) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(111, GetStringByStrRef(62476)); // Add + SetCustomToken(161838311, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_vi_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_vi_s.nss index 1173c044..6c3fcba6 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_vi_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_vi_s.nss @@ -5,6 +5,8 @@ /* Checks whether to show Vicous and whether it is to be added or removed. + + PRC8 Token prefix = 161838 */ //::////////////////////////////////////////////// //:: Created By: Ornedan @@ -20,13 +22,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_VICIOUS) { - SetCustomToken(105, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838305, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_VICIOUS) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(105, GetStringByStrRef(62476)); // Add + SetCustomToken(161838305, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/psionics/psi_sk_conv_wo_s.nss b/nwn/nwnprc/trunk/psionics/psi_sk_conv_wo_s.nss index 87af9fe3..a05ae8bd 100644 --- a/nwn/nwnprc/trunk/psionics/psi_sk_conv_wo_s.nss +++ b/nwn/nwnprc/trunk/psionics/psi_sk_conv_wo_s.nss @@ -20,13 +20,13 @@ int StartingConditional() // Check if the flag is already present if(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T") & MBLADE_FLAG_WOUNDING) { - SetCustomToken(112, GetStringByStrRef(7654)); // Remove + SetCustomToken(161838312, GetStringByStrRef(7654)); // Remove nReturn = TRUE; } // It isn't, so see if there is enough bonus left to add it else if(GetTotalEnhancementCost(GetLocalInt(GetPCSpeaker(), MBLADE_FLAGS + "_T")) + GetFlagCost(MBLADE_FLAG_WOUNDING) <= GetMaxEnhancementCost(GetPCSpeaker())) { - SetCustomToken(112, GetStringByStrRef(62476)); // Add + SetCustomToken(161838312, GetStringByStrRef(62476)); // Add nReturn = TRUE; } diff --git a/nwn/nwnprc/trunk/race2das/race_feat_bral.2da b/nwn/nwnprc/trunk/race2das/race_feat_bral.2da index 77395cf8..9e134088 100644 --- a/nwn/nwnprc/trunk/race2das/race_feat_bral.2da +++ b/nwn/nwnprc/trunk/race2das/race_feat_bral.2da @@ -1,58 +1,59 @@ 2DA V2.0 - FeatLabel FeatIndex -0 immunityelectric 4786 -1 Fey_DR 4587 -2 Darkvision 228 -3 Natural_AC_6 4737 -4 Spell_Resist_17 4617 -5 Immunity_Petrification 4643 -6 ResistCold10 4776 -7 ResistFire10 4788 -8 Blur 4997 -9 CharmPerson 4998 -10 GustOfWind 4978 -11 MirrorImage 4999 -12 CureSeriousWounds 4996 -13 LightningBolt 4995 -14 Outsider 4716 -15 WeapProfSim 46 -16 WeapProfSim_Dart 7914 -17 WeapProfSim_Light_Mace 7908 -18 WeapProfSim_Morningstar 7923 -19 WeapProfSim_Shortspear 7927 -20 WeapProfSim_Sickle 7929 -21 WeapProfSim_Sling 7930 -22 WeapProfSim_Katar 7945 -23 WeapProfSim_Heavy_Mace 7946 -24 WeapProfSim_Goad 7949 -25 WeapProfSim_LightCrossbow 7951 -26 WeapProfSim_HeavyCrossbow 7952 -27 WeapProfSim_Quarterstaff 7953 -28 WeapProfSim_Dagger 7954 -29 WeapProfSim_Club 7955 -30 WeapProfMar 45 -31 WeapProfMar_Battleaxe 7903 -32 WeapProfMar_Greataxe 7913 -33 WeapProfMar_Greatsword 7912 -34 WeapProfMar_Halberd 7909 -35 WeapProfMar_Handaxe 7919 -36 WeapProfMar_Heavy_Flail 7917 -37 WeapProfMar_Light_Flail 7905 -38 WeapProfMar_Light_Hammer 7918 -39 WeapProfMar_Longbow 7907 -40 WeapProfMar_Longsword 7902 -41 WeapProfMar_Rapier 7924 -42 WeapProfMar_Scimitar 7925 -43 WeapProfMar_Scythe 7926 -44 WeapProfMar_Shortsword 7901 -45 WeapProfMar_Shortbow 7910 -46 WeapProfMar_Throwing_Axe 7931 -47 WeapProfMar_Trident 7932 -48 WeapProfMar_Warhammer 7906 -49 WeapProfMar_Light_Lance 7938 -50 WeapProfMar_Heavy_Pick 7939 -51 WeapProfMar_Light_Pick 7940 -52 WeapProfMar_Falchion 7943 -53 WeapProfMar_Sap 7944 -54 WeapProfMar_Maul 7947 + FeatLabel FeatIndex +0 immunityelectric 4786 +1 Fey_DR 4587 +2 Darkvision 228 +3 Natural_AC_6 4737 +4 Spell_Resist_17 4617 +5 Immunity_Petrification 4643 +6 ResistCold10 4776 +7 ResistFire10 4788 +8 Blur 4997 +9 CharmPerson 4998 +10 GustOfWind 4978 +11 MirrorImage 4999 +12 CureSeriousWounds 4996 +13 LightningBolt 4995 +14 Outsider 4716 +15 WeapProfSim 46 +16 WeapProfSim_Dart 7914 +17 WeapProfSim_Light_Mace 7908 +18 WeapProfSim_Morningstar 7923 +19 WeapProfSim_Shortspear 7927 +20 WeapProfSim_Sickle 7929 +21 WeapProfSim_Sling 7930 +22 WeapProfSim_Katar 7945 +23 WeapProfSim_Heavy_Mace 7946 +24 WeapProfSim_Goad 7949 +25 WeapProfSim_LightCrossbow 7951 +26 WeapProfSim_HeavyCrossbow 7952 +27 WeapProfSim_Quarterstaff 7953 +28 WeapProfSim_Dagger 7954 +29 WeapProfSim_Club 7955 +30 WeapProfMar 45 +31 WeapProfMar_Battleaxe 7903 +32 WeapProfMar_Greataxe 7913 +33 WeapProfMar_Greatsword 7912 +34 WeapProfMar_Halberd 7909 +35 WeapProfMar_Handaxe 7919 +36 WeapProfMar_Heavy_Flail 7917 +37 WeapProfMar_Light_Flail 7905 +38 WeapProfMar_Light_Hammer 7918 +39 WeapProfMar_Longbow 7907 +40 WeapProfMar_Longsword 7902 +41 WeapProfMar_Rapier 7924 +42 WeapProfMar_Scimitar 7925 +43 WeapProfMar_Scythe 7926 +44 WeapProfMar_Shortsword 7901 +45 WeapProfMar_Shortbow 7910 +46 WeapProfMar_Throwing_Axe 7931 +47 WeapProfMar_Trident 7932 +48 WeapProfMar_Warhammer 7906 +49 WeapProfMar_Light_Lance 7938 +50 WeapProfMar_Heavy_Pick 7939 +51 WeapProfMar_Light_Pick 7940 +52 WeapProfMar_Falchion 7943 +53 WeapProfMar_Sap 7944 +54 WeapProfMar_Maul 7947 +55 LowLightVision 354 diff --git a/nwn/nwnprc/trunk/racescripts/race_skin.nss b/nwn/nwnprc/trunk/racescripts/race_skin.nss index 31dbba6e..6df78e3c 100644 --- a/nwn/nwnprc/trunk/racescripts/race_skin.nss +++ b/nwn/nwnprc/trunk/racescripts/race_skin.nss @@ -487,7 +487,7 @@ void main() if(GetHasFeat(FEAT_RESIST_FIRE5)) { ipIP =ItemPropertyDamageResistance(IP_CONST_DAMAGETYPE_FIRE, IP_CONST_DAMAGERESIST_5); - IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, FALSE, FALSE); + IPSafeAddItemProperty(oSkin, ipIP, 0.0, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); } if(GetRacialType(oPC) == RACIAL_TYPE_UNDERFOLK) { diff --git a/nwn/nwnprc/trunk/scripts/dynconv_end.nss b/nwn/nwnprc/trunk/scripts/dynconv_end.nss index 5a4ed26a..0c3b1262 100644 --- a/nwn/nwnprc/trunk/scripts/dynconv_end.nss +++ b/nwn/nwnprc/trunk/scripts/dynconv_end.nss @@ -19,5 +19,5 @@ void main() object oPC = GetPCSpeaker(); // Run the exit handler - _DynConvInternal_ExitedConvo(oPC, FALSE); -} + _DynConvInternal_ExitedConvo(oPC, FALSE); +} \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/ft_lipsrap.nss b/nwn/nwnprc/trunk/scripts/ft_lipsrap.nss index 92d22e00..ab33e94e 100644 --- a/nwn/nwnprc/trunk/scripts/ft_lipsrap.nss +++ b/nwn/nwnprc/trunk/scripts/ft_lipsrap.nss @@ -7,16 +7,17 @@ void main() effect eAtk=EffectAttackIncrease(2); - effect eDamB=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_BLUDGEONING); - effect eDamP=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_PIERCING); - effect eDamS=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_SLASHING); + effect eDam = EffectDamageIncrease(2, DAMAGE_TYPE_BLUDGEONING | DAMAGE_TYPE_SLASHING | DAMAGE_TYPE_PIERCING); + // effect eDamB=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_BLUDGEONING); //:: Was giving +6 damage - Jaysyn + // effect eDamP=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_PIERCING); + // effect eDamS=EffectDamageIncrease(DAMAGE_BONUS_2,DAMAGE_TYPE_SLASHING); effect eSkill=EffectSkillIncrease(SKILL_ALL_SKILLS,2); effect eSave=EffectSavingThrowIncrease(SAVING_THROW_ALL,2); effect eSaveEnch=EffectSavingThrowIncrease(SAVING_THROW_ALL,4,SAVING_THROW_TYPE_MIND_SPELLS); - effect eLink=EffectLinkEffects(eAtk,eDamB); - eLink=EffectLinkEffects(eLink,eDamP); - eLink=EffectLinkEffects(eLink,eDamS); + effect eLink=EffectLinkEffects(eAtk,eDam); + //eLink=EffectLinkEffects(eLink,eDamP); + //eLink=EffectLinkEffects(eLink,eDamS); eLink=EffectLinkEffects(eLink,eSkill); eLink=EffectLinkEffects(eLink,eSave); eLink=EffectLinkEffects(eLink,eSaveEnch); diff --git a/nwn/nwnprc/trunk/scripts/initdr_aurafeara.nss b/nwn/nwnprc/trunk/scripts/initdr_aurafeara.nss index 0dfcf145..a1802512 100644 --- a/nwn/nwnprc/trunk/scripts/initdr_aurafeara.nss +++ b/nwn/nwnprc/trunk/scripts/initdr_aurafeara.nss @@ -1,7 +1,6 @@ //:://///////////////////////////////////////////// //:: Aura of Fear On Enter -//:: NW_S1_AuraFearA.nss -//:: Copyright (c) 2001 Bioware Corp. +//:: initdr_aurafeata.nss //::////////////////////////////////////////////// /* Upon entering the aura of the creature the player @@ -13,12 +12,88 @@ //:: Created On: May 25, 2001 //::////////////////////////////////////////////// - // shaken -2 attack,weapon dmg,save. // panicked -2 save + flee away ,50 % drop object holding #include "prc_inc_spells" +#include "prc_inc_spells" + +const string VAR_FEAR_IMMUNE = "DRACONIC_AURA_FEAR_IMMUNE_"; + void main() +{ + object oTarget = GetEnteringObject(); + object oCreator = GetAreaOfEffectCreator(); + + // Exclude dead creatures + if (GetIsDead(oTarget)) + return; + + // Exclude dragons + if (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_DRAGON) + return; + + string sCreatorID = GetObjectUUID(oCreator); + string sVar = VAR_FEAR_IMMUNE + sCreatorID; + + // Skip if target already immune to this creator’s aura + if (GetLocalInt(oTarget, sVar)) + return; + + effect eVis = EffectVisualEffect(VFX_IMP_FEAR_S); + effect eDur = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_FEAR); + effect eDur2 = EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE); + effect eDur3 = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_NEGATIVE); + + effect eFear = EffectFrightened(); + effect eAtkD = EffectAttackDecrease(2); + effect eDmgD = EffectDamageDecrease(2, DAMAGE_TYPE_BLUDGEONING | DAMAGE_TYPE_PIERCING | DAMAGE_TYPE_SLASHING); + effect eSaveD = EffectSavingThrowDecrease(SAVING_THROW_ALL, 2); + effect eSkill = EffectSkillDecrease(SKILL_ALL_SKILLS, 2); + + effect eLink = EffectLinkEffects(eDmgD, eDur2); + eLink = EffectLinkEffects(eLink, eAtkD); + eLink = EffectLinkEffects(eLink, eSaveD); + eLink = EffectLinkEffects(eLink, eFear); + eLink = EffectLinkEffects(eLink, eSkill); + + effect eLink2 = EffectLinkEffects(eDur3, eSaveD); + eLink2 = EffectLinkEffects(eLink2, eSkill); + + int nHD = GetHitDice(oCreator); + int nDC = 10 + GetLevelByClass(CLASS_TYPE_INITIATE_DRACONIC, oCreator) + + GetAbilityModifier(ABILITY_CHARISMA, oCreator); + int nDuration = d6(2); + + if (GetIsEnemy(oTarget, oCreator) && GetHitDice(oTarget) <= nHD) + { + SignalEvent(oTarget, EventSpellCastAt(oCreator, SPELLABILITY_AURA_FEAR)); + + if (!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_FEAR) + && !GetIsImmune(oTarget, IMMUNITY_TYPE_FEAR) + && !GetIsImmune(oTarget, IMMUNITY_TYPE_MIND_SPELLS)) + { + int HD = GetHitDice(oTarget); + + if (HD < 5) + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, RoundsToSeconds(nDuration)); + else + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink2, oTarget, RoundsToSeconds(nDuration)); + + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + } + else + { + // Successful save: immune to this creator’s aura for 24 hours + SetLocalInt(oTarget, sVar, TRUE); + DelayCommand(HoursToSeconds(24), DeleteLocalInt(oTarget, sVar)); + } + } +} + + + +/* void main() { //Declare major variables object oTarget = GetEnteringObject(); @@ -84,4 +159,4 @@ void main() ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } } -} +} */ diff --git a/nwn/nwnprc/trunk/scripts/prc_coc.nss b/nwn/nwnprc/trunk/scripts/prc_coc.nss index 93260810..463ae0af 100644 --- a/nwn/nwnprc/trunk/scripts/prc_coc.nss +++ b/nwn/nwnprc/trunk/scripts/prc_coc.nss @@ -12,6 +12,7 @@ //compiler would completely crap itself unless this include was here //#include "prc_alterations" #include "prc_craft_inc" +#include "prc_inc_wpnrest" //adds onhit: unique power, copied from swashbuckler code void CritSTR(object oPC, int iEquip) @@ -137,6 +138,7 @@ void SuperiorDefense(object oPC, int nLevel) (SetCompositeBonus(oSkin, "SuperiorDefense", 0, ITEM_PROPERTY_AC_BONUS)); } */ + void main() { object oPC = OBJECT_SELF; @@ -144,6 +146,32 @@ void main() object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC); int nBase = GetBaseItemType(oWeapon); int iEquip= GetLocalInt(oPC,"ONEQUIP"); + + int bCorellonWeapon = GetHasCorellonWeapon(oPC); + + if(nLevel >= 2) + { + if(bCorellonWeapon) ActionCastSpellOnSelf(SPELL_COC_DAMAGE); + + else PRCRemoveEffectsFromSpell(oPC, SPELL_COC_DAMAGE); + + CritSTR(oPC, iEquip); + } + if(nLevel >= 3) + { + SuperiorDefense(oPC, nLevel); + } +} + +/* void main() +{ + object oPC = OBJECT_SELF; + int nLevel = (GetLevelByClass(CLASS_TYPE_COC, oPC)); + object oWeapon = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC); + int nBase = GetBaseItemType(oWeapon); + int iEquip= GetLocalInt(oPC,"ONEQUIP"); + + int bCorellonWeapon = GetHasCorellonWeapon(oPC); if(nLevel >= 2) { @@ -164,4 +192,4 @@ void main() { SuperiorDefense(oPC, nLevel); } -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/prc_favsoulweap.nss b/nwn/nwnprc/trunk/scripts/prc_favsoulweap.nss index b28b0ddf..d0bad4c3 100644 --- a/nwn/nwnprc/trunk/scripts/prc_favsoulweap.nss +++ b/nwn/nwnprc/trunk/scripts/prc_favsoulweap.nss @@ -3,7 +3,7 @@ //:: prc_favsoulweap //::////////////////////////////////////////////// /** @file - This allows you to choose the weapon for the diety + This allows you to choose the weapon for the deity @author Stratovarius @@ -66,7 +66,7 @@ void main() if(nStage == STAGE_WEAPON_CHOICE) { string sHeader1 = "Select your Deity's favoured weapon.\n"; - sHeader1 += "This will grant you weapon focus and, eventually, weapon specialization in that weapon."; + sHeader1 += "This will grant you weapon proficiency at 1st level, weapon focus at 3rd level, and weapon specialization at 12th level in that weapon."; // Set the header SetHeader(sHeader1); // Add responses for the PC @@ -139,19 +139,28 @@ void main() { if(nChoice == TRUE) { - object oSkin = GetPCSkin(oPC); - int nWeapon = GetLocalInt(oPC, "FavouredSoulWeapon"); - int nWeaponFocus = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_FOCUS); - int nWFIprop = FeatToIprop(nWeaponFocus); - int nWeaponSpec = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_SPECIALIZATION); - int nWSIprop = FeatToIprop(nWeaponSpec); + object oSkin = GetPCSkin(oPC); + int nWeapon = GetLocalInt(oPC, "FavouredSoulWeapon"); + int nWeaponProf = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_WEAPON_PROFICIENCY); + int nWProfIprop = FeatToIprop(nWeaponProf); + int nWeaponFocus = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_FOCUS); + int nWFIprop = FeatToIprop(nWeaponFocus); + int nWeaponSpec = GetFeatOfWeaponType(nWeapon, FEAT_TYPE_SPECIALIZATION); + int nWSIprop = FeatToIprop(nWeaponSpec); - IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWFIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); - if (GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC) >= 12) IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWSIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + int nLevel = GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oPC); - // Store the weapon for later reuse - // The reason we use the weapon is so we can use the GetFeatByWeaponType function to get both Focus and Spec - SetPersistantLocalInt(oPC, "FavouredSoulDietyWeapon", nWeapon); + // Grant feats based on current Favoured Soul level + if (nLevel >= 1) + IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWProfIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + if (nLevel >= 3) + IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWFIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + if (nLevel >= 12) + IPSafeAddItemProperty(oSkin, PRCItemPropertyBonusFeat(nWSIprop), 0.0f, X2_IP_ADDPROP_POLICY_KEEP_EXISTING, FALSE, FALSE); + + // Store the weapon for later reuse + // The reason we use the weapon is so we can use the GetFeatByWeaponType function to get both Focus and Spec + SetPersistantLocalInt(oPC, "FavouredSoulDietyWeapon", nWeapon); // And we're all done AllowExit(DYNCONV_EXIT_FORCE_EXIT); @@ -169,4 +178,4 @@ void main() // Store the stage value. If it has been changed, this clears out the choices SetStage(nStage, oPC); } -} +} \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss b/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss index f500210b..dcfceb7b 100644 --- a/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss +++ b/nwn/nwnprc/trunk/scripts/prc_onhitcast.nss @@ -23,7 +23,7 @@ //::////////////////////////////////////////////// //:: Created By: Various people //::////////////////////////////////////////////// - +#include "prc_inc_wpnrest" #include "psi_inc_onhit" #include "inc_rend" #include "psi_inc_ac_const" @@ -31,6 +31,7 @@ #include "tob_inc_tobfunc" #include "prc_inc_sp_tch" + void SetRancorVar(object oPC); void SetImprovedRicochetVar(object oPC); void DoImprovedRicochet(object oPC, object oTarget); @@ -118,7 +119,7 @@ void main() object oSpellTarget = PRCGetSpellTargetObject(oSpellOrigin); // On a weapon: The one being hit. On an armor: The one hitting the armor - // Make sure you don't hit yourself. Some idiot didn't check that. + // Make sure you don't hit yourself. if (oSpellOrigin == oSpellTarget) oSpellTarget = GetProperTarget(oSpellOrigin, oSpellTarget); @@ -143,17 +144,19 @@ void main() //int bItemIsWeapon; //nBArcher = GetLevelByClass(CLASS_TYPE_BLARCHER, oSpellOrigin); + + int bSwashWeapon = GetHasSwashbucklerWeapon(oSpellOrigin); + int bCorellonWeapon = GetHasCorellonWeapon(oSpellOrigin); //// Swashbuckler Weakening and Wounding Criticals - if(GetHasFeat(INSIGHTFUL_STRIKE, oSpellOrigin)) + if(GetHasFeat(INSIGHTFUL_STRIKE, oSpellOrigin) && bSwashWeapon) ExecuteScript("prc_swashweak", oSpellOrigin); //// Champion of Corellon damage healing for sneak/critical immune creatures - if(GetHasFeat(FEAT_COC_ELEGANT_STRIKE, oSpellOrigin)) + if(GetHasFeat(FEAT_COC_ELEGANT_STRIKE, oSpellOrigin) && bCorellonWeapon) ExecuteScript("prc_coc_heal", oSpellOrigin); //// Stormlord Shocking & Thundering Spear - if(GetHasFeat(FEAT_THUNDER_WEAPON, oSpellOrigin)) ExecuteScript("ft_shockweap", oSpellOrigin); diff --git a/nwn/nwnprc/trunk/scripts/prc_reservaoe.nss b/nwn/nwnprc/trunk/scripts/prc_reservaoe.nss index 7db6c7aa..8ccfe5f3 100644 --- a/nwn/nwnprc/trunk/scripts/prc_reservaoe.nss +++ b/nwn/nwnprc/trunk/scripts/prc_reservaoe.nss @@ -86,7 +86,7 @@ void main() eVis = EffectVisualEffect(VFX_IMP_FLAME_S); eExplode = EffectVisualEffect(VFX_FNF_FIREBALL); - if (!GetLocalInt(oPC, "FieryBurstBonus")) + if (nBonus < 1) { FloatingTextStringOnCreature("You do not have a spell available of adequate level or type", oPC, FALSE); return; diff --git a/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss b/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss index 0e299ad0..900d7652 100644 --- a/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss +++ b/nwn/nwnprc/trunk/scripts/prc_reservefeat.nss @@ -142,6 +142,12 @@ int GetHighestSpellAvailableByDescriptor(object oPC, string sDescriptor) sSpellLabel = Get2DACache(sFile, "Label", i); if(sSpellLabel != "") // Non-blank row { + SendMessageToPC(oPC, "GetHighestSpellAvailableByDescriptor >> Entered function."); + SendMessageToPC(oPC, "Row " + IntToString(i) + + " Label = " + sSpellLabel + + " SpellID = " + IntToString(nSpellID) + + " HasSpell " + IntToString(PRCGetHasSpell(nSpellID, oPC))); + if(PRCGetHasSpell(nSpellID, oPC)) { nNewSpellLevel = StringToInt(Get2DACache(sFile, "Innate", i)); diff --git a/nwn/nwnprc/trunk/scripts/prc_swashbuckler.nss b/nwn/nwnprc/trunk/scripts/prc_swashbuckler.nss index 5647722d..f16ac417 100644 --- a/nwn/nwnprc/trunk/scripts/prc_swashbuckler.nss +++ b/nwn/nwnprc/trunk/scripts/prc_swashbuckler.nss @@ -1,4 +1,5 @@ #include "prc_inc_spells" +#include "prc_inc_wpnrest" //DAMAGE_TYPE_BASE_WEAPON //GetAbilityModifier(ABILITY_INTELLIGENCE, oPC) @@ -57,6 +58,31 @@ void Dodge(object oPC, object oSkin,int sDodge) //Make this only apply to weapons useable with weapon finesse //make this not apply if you are wearing medium or heavy armor, or are encumbered. void SmartWound(object oPC, object oSkin, int iStrike, int iEquip) +{ + object oArmor=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC); + int iBase = GetBaseAC(oArmor); + int iMax = 3; + + int iLight = GetHasSwashbucklerWeapon(oPC); + + if (iBase > iMax ) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); + + else if (iLight < 1) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); + + else + { + if (GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))) + { + ActionCastSpellOnSelf(SPELL_SWASH_DAMAGE); + } + else + { + PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); + } + } +} + +/* void SmartWound(object oPC, object oSkin, int iStrike, int iEquip) { object oArmor=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC); int iBase = GetBaseAC(oArmor); @@ -88,9 +114,9 @@ void SmartWound(object oPC, object oSkin, int iStrike, int iEquip) } - if (GetBaseAC(oArmor)>iMax ) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); + if (iBase > iMax ) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); - else if (iLight<1) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); + else if (iLight < 1) PRCRemoveEffectsFromSpell(oPC, SPELL_SWASH_DAMAGE); else { if (GetIsObjectValid(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPC))) @@ -103,6 +129,7 @@ void SmartWound(object oPC, object oSkin, int iStrike, int iEquip) } } } + */ //This makes a unique on hit which calls on the "prc_swashweak" scripts //to simulate a critical hit roll percentage. On success, it deals diff --git a/nwn/nwnprc/trunk/scripts/prc_tn_des_a.nss b/nwn/nwnprc/trunk/scripts/prc_tn_des_a.nss index f41bcde4..96531203 100644 --- a/nwn/nwnprc/trunk/scripts/prc_tn_des_a.nss +++ b/nwn/nwnprc/trunk/scripts/prc_tn_des_a.nss @@ -56,6 +56,46 @@ void main() { object oTarget = GetEnteringObject(); + if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) + { + // Prevent stacking — only apply once per source + effect eTest = GetFirstEffect(oTarget); + while(GetIsEffectValid(eTest)) + { + if(GetEffectCreator(eTest) == GetAreaOfEffectCreator() && + GetStringLeft(GetEffectTag(eTest), 11) == "EFFECT_DESE") + { + return; // Already has desecrate from this AOE + } + eTest = GetNextEffect(oTarget); + } + + effect eLink = EffectDamageIncrease(DAMAGE_BONUS_1, DAMAGE_TYPE_NEGATIVE); + eLink = EffectLinkEffects(eLink, EffectAttackIncrease(1)); + eLink = EffectLinkEffects(eLink, EffectSavingThrowIncrease(SAVING_THROW_ALL, 1)); + eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)); + effect eHP = EffectTemporaryHitpoints(GetHitDice(oTarget)); + effect eVis = EffectVisualEffect(VFX_IMP_HOLY_AID); + + // Give a unique tag so it can be recognized later + eLink = TagEffect(eLink, "EFFECT_DESECRATE_AURA"); + eHP = TagEffect(eHP, "EFFECT_DESECRATE_HP"); + + if(!GetPRCSwitch(PRC_TRUE_NECROMANCER_ALTERNATE_VISUAL)) + ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); + else + eLink = EffectLinkEffects(eLink, EffectVisualEffect(VFX_DUR_PROTECTION_EVIL_MINOR)); + + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLink, oTarget); + ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHP, oTarget); + } +} + + +/* void main() +{ + object oTarget = GetEnteringObject(); + if(MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD) { effect eLink = EffectDamageIncrease(DAMAGE_BONUS_1, DAMAGE_TYPE_NEGATIVE); @@ -74,3 +114,4 @@ void main() ApplyEffectToObject(DURATION_TYPE_PERMANENT, eHP, oTarget); } } + */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/prc_tn_des_b.nss b/nwn/nwnprc/trunk/scripts/prc_tn_des_b.nss index c3662bc3..c74bc5c9 100644 --- a/nwn/nwnprc/trunk/scripts/prc_tn_des_b.nss +++ b/nwn/nwnprc/trunk/scripts/prc_tn_des_b.nss @@ -10,7 +10,17 @@ void main() { - object oTarget = GetExitingObject(); + object oTarget = GetExitingObject(); + + effect eAOE = GetFirstEffect(oTarget); + if(GetEffectCreator(eAOE) == GetAreaOfEffectCreator()) + { + string sTag = GetEffectTag(eAOE); + if(sTag == "EFFECT_DESECRATE_AURA" || sTag == "EFFECT_DESECRATE_HP") + RemoveEffect(oTarget, eAOE); + } + +/* object oTarget = GetExitingObject(); if(GetHasSpellEffect(SPELL_DES_20, oTarget) || GetHasSpellEffect(SPELL_DES_100, oTarget) || GetHasSpellEffect(SPELL_DESECRATE, oTarget)) { @@ -26,5 +36,5 @@ void main() //Get next effect on the target eAOE = GetNextEffect(oTarget); } - } + } */ } \ No newline at end of file diff --git a/nwn/nwnprc/trunk/scripts/prc_tn_des_c.nss b/nwn/nwnprc/trunk/scripts/prc_tn_des_c.nss index 7092e6bb..ffdd8574 100644 --- a/nwn/nwnprc/trunk/scripts/prc_tn_des_c.nss +++ b/nwn/nwnprc/trunk/scripts/prc_tn_des_c.nss @@ -12,8 +12,17 @@ void main() { object oTarget = GetExitingObject(); + + effect eAOE = GetFirstEffect(oTarget); + + if(GetEffectCreator(eAOE) == GetAreaOfEffectCreator()) + { + string sTag = GetEffectTag(eAOE); + if(sTag == "EFFECT_DESECRATE_AURA" || sTag == "EFFECT_DESECRATE_HP") + RemoveEffect(oTarget, eAOE); + } - if(GetHasSpellEffect(SPELL_DES_20, oTarget) || GetHasSpellEffect(SPELL_DES_100, oTarget) || GetHasSpellEffect(SPELL_DESECRATE, oTarget)) +/* if(GetHasSpellEffect(SPELL_DES_20, oTarget) || GetHasSpellEffect(SPELL_DES_100, oTarget) || GetHasSpellEffect(SPELL_DESECRATE, oTarget)) { //Search through the valid effects on the target. effect eAOE = GetFirstEffect(oTarget); @@ -27,5 +36,5 @@ void main() //Get next effect on the target eAOE = GetNextEffect(oTarget); } - } + } */ } \ No newline at end of file diff --git a/nwn/nwnprc/trunk/spells/nw_s0_animdead.nss b/nwn/nwnprc/trunk/spells/nw_s0_animdead.nss index b79cbd47..77856382 100644 --- a/nwn/nwnprc/trunk/spells/nw_s0_animdead.nss +++ b/nwn/nwnprc/trunk/spells/nw_s0_animdead.nss @@ -98,4 +98,4 @@ void main() ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eSummon, lTarget, fDuration); PRCSetSchool(); -} +} \ No newline at end of file diff --git a/nwn/nwnprc/trunk/spells/nw_s0_prisspray.nss b/nwn/nwnprc/trunk/spells/nw_s0_prisspray.nss index a0c43cac..1635f640 100644 --- a/nwn/nwnprc/trunk/spells/nw_s0_prisspray.nss +++ b/nwn/nwnprc/trunk/spells/nw_s0_prisspray.nss @@ -43,7 +43,7 @@ Updated by AshLancer 1/22/2020 to be PnP accurate int ApplyPrismaticEffect(int nEffect, object oTarget,int nDC,int CasterLvl); //:: modified by mr_bumpkin Dec 4, 2003 for PRC stuff -#include "prc_inc_spells" +#include "prc_inc_spells" #include "prc_add_spell_dc" //:: left its elemental damage alone, since it's already determined randomly. @@ -75,7 +75,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); object oTarget; int CasterLvl = PRCGetCasterLevel(OBJECT_SELF); - + int nMetaMagic = PRCGetMetaMagicFeat(); int nRandom; @@ -84,7 +84,7 @@ SetLocalInt(OBJECT_SELF, "X2_L_LAST_SPELLSCHOOL_VAR", SPELL_SCHOOL_EVOCATION); effect eVisual; int bTwoEffects; int nPenetr = CasterLvl + SPGetPenetr(); - + //Set the delay to apply to effects based on the distance to the target float fDelay = 0.5 + GetDistanceBetween(OBJECT_SELF, oTarget)/20; //Get first target in the spell area @@ -226,55 +226,74 @@ int ApplyPrismaticEffect(int nEffect, object oTarget,int nDC,int CasterLvl) { if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); + // makes the target invisible + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } break; diff --git a/nwn/nwnprc/trunk/spells/sp_blnd_gloryA.nss b/nwn/nwnprc/trunk/spells/sp_blnd_gloryA.nss index 7b07b816..33ebc672 100644 --- a/nwn/nwnprc/trunk/spells/sp_blnd_gloryA.nss +++ b/nwn/nwnprc/trunk/spells/sp_blnd_gloryA.nss @@ -35,8 +35,24 @@ Created: 6/13/06 //::////////////////////////////////////////////// #include "prc_inc_spells" - void main() +{ + object oTarget = GetEnteringObject(); + + // Ignore DMs if not possessing a creature + if (GetIsDM(oTarget) && !GetIsDMPossessed(oTarget)) + return; + + if (!PRCGetHasEffect(EFFECT_TYPE_DARKNESS, oTarget)) + { + if (GetAlignmentGoodEvil(oTarget) == ALIGNMENT_EVIL) + { + SPApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBlindness(), oTarget); + } + } +} + +/* void main() { object oTarget = GetEnteringObject(); @@ -47,6 +63,6 @@ void main() SPApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectBlindness(), oTarget); } } -} +} */ \ No newline at end of file diff --git a/nwn/nwnprc/trunk/spells/sp_chan_pyrob.nss b/nwn/nwnprc/trunk/spells/sp_chan_pyrob.nss index 877d01ab..17a3fad2 100644 --- a/nwn/nwnprc/trunk/spells/sp_chan_pyrob.nss +++ b/nwn/nwnprc/trunk/spells/sp_chan_pyrob.nss @@ -63,6 +63,127 @@ void main() PRCSignalSpellEvent(oTarget, TRUE, SPELL_CHANNELED_PYROBURST, oPC); + //Check Spell Resistance + if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) + { + int nVFX; // visual effect variable + + //swift + if(nSpell == SPELL_CHANNELED_PYROBURST_1) + { + if(!TakeSwiftAction(oPC)) + { + return; + } + + nDam = d4(PRCMin((nCasterLvl/2), 10)); + nVFX = VFX_IMP_FLAME_S; // single-target fire burst + + if(nMetaMagic & METAMAGIC_MAXIMIZE) + { + nDam = 4 * (PRCMin((nCasterLvl/2), 10)); + } + } + + //standard + else if(nSpell == SPELL_CHANNELED_PYROBURST_2) + { + nDam = d6(PRCMin(10, nCasterLvl)); + fRadius = 3.048f; + nVFX = VFX_IMP_DIVINE_STRIKE_FIRE; // medium fire explosion + + if(nMetaMagic & METAMAGIC_MAXIMIZE) + { + nDam = 6 * (PRCMin(10, nCasterLvl)); + } + } + + //full round + else if(nSpell == SPELL_CHANNELED_PYROBURST_3) + { + nDam = d8(PRCMin(10, nCasterLvl)); + fRadius = 4.57f; + nVFX = VFX_FNF_FIREBALL; // large fiery burst + + if(nMetaMagic & METAMAGIC_MAXIMIZE) + { + nDam = 8 * (PRCMin(10, nCasterLvl)); + } + } + + //two rounds + else if(nSpell == SPELL_CHANNELED_PYROBURST_4) + { + nDam = d10(PRCMin(10, nCasterLvl)); + fRadius = 6.10f; + nVFX = VFX_FNF_FIRESTORM; // reuse large explosion, fits scale + + if(nMetaMagic & METAMAGIC_MAXIMIZE) + { + nDam = 10 * (PRCMin(10, nCasterLvl)); + } + } + + else + { + PRCSetSchool(); + return; + } + + //Metamagic Empower + if(nMetaMagic & METAMAGIC_EMPOWER) + { + nDam += (nDam/2); + } + nDam += SpellDamagePerDice(oPC, PRCMin(10, nCasterLvl)); + + if(PRCMySavingThrow(SAVING_THROW_REFLEX, oTarget, nDC, SAVING_THROW_TYPE_FIRE)) + { + nDam = nDam/2; + } + + effect eDam = PRCEffectDamage(oTarget, nDam, DAMAGE_TYPE_FIRE); + + // apply visuals and damage + if(fRadius == 0.0f) + { + ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(nVFX), oTarget); + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + } + else + { + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(nVFX), lLoc); + oTarget = MyFirstObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + + while(GetIsObjectValid(oTarget)) + { + SPApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); + oTarget = MyNextObjectInShape(SHAPE_SPHERE, fRadius, lLoc, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE); + } + } + } + PRCSetSchool(); +} + + +/* void main() +{ + if(!X2PreSpellCastCode()) return; + + PRCSetSchool(SPELL_SCHOOL_EVOCATION); + + object oPC = OBJECT_SELF; + int nSpell = PRCGetSpellId(); + int nCasterLvl = PRCGetCasterLevel(oPC); + object oTarget = PRCGetSpellTargetObject(); + location lLoc = PRCGetSpellTargetLocation(); + int nDC = PRCGetSaveDC(oTarget, oPC); + int nDam; + int nMetaMagic = PRCGetMetaMagicFeat(); + float fRadius = 0.0f; + + PRCSignalSpellEvent(oTarget, TRUE, SPELL_CHANNELED_PYROBURST, oPC); + //Check Spell Resistance if(!PRCDoResistSpell(oPC, oTarget, nCasterLvl + SPGetPenetr())) { @@ -158,6 +279,6 @@ void main() PRCSetSchool(); } - + */ diff --git a/nwn/nwnprc/trunk/spells/sp_cnv_trures.nss b/nwn/nwnprc/trunk/spells/sp_cnv_trures.nss index 85ad5232..4b55a631 100644 --- a/nwn/nwnprc/trunk/spells/sp_cnv_trures.nss +++ b/nwn/nwnprc/trunk/spells/sp_cnv_trures.nss @@ -150,7 +150,7 @@ void main() SPApplyEffectToObject(DURATION_TYPE_INSTANT, PRCEffectHeal(GetMaxHitPoints(oChoice) + 10, oChoice), oChoice); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_RAISE_DEAD), GetLocation(oChoice)); - ExecuteScript("prc_pw_ressurection", oChoice); + ExecuteScript("prc_pw_res", oChoice); if (GetPRCSwitch(PRC_PW_DEATH_TRACKING) && GetIsPC(oChoice)) SetPersistantLocalInt(oChoice, "persist_dead", FALSE); AssignCommand(oChoice, ActionJumpToObject(oPC)); diff --git a/nwn/nwnprc/trunk/spells/sp_ct_start.nss b/nwn/nwnprc/trunk/spells/sp_ct_start.nss index 18f2fefe..eed8c13e 100644 --- a/nwn/nwnprc/trunk/spells/sp_ct_start.nss +++ b/nwn/nwnprc/trunk/spells/sp_ct_start.nss @@ -3,14 +3,14 @@ int StartingConditional() object oPC = GetPCSpeaker(); // Get the target's name and set it as the approrpriate custom item. - SetCustomToken(101, GetName(GetLocalObject(oPC, "SP_CREATETATOO_TARGET"))); + SetCustomToken(161838401, GetName(GetLocalObject(oPC, "SP_CREATETATOO_TARGET"))); // Get the caster level and calculate SR from that and set it as the // appropriate conversation custom item. int nCasterLevel = GetLocalInt(oPC, "SP_CREATETATOO_LEVEL"); int nSR = 10 + (nCasterLevel / 6); string s = IntToString(nSR); - SetCustomToken(102, s); + SetCustomToken(161838402, s); return TRUE; } diff --git a/nwn/nwnprc/trunk/spells/sp_prism_wallA.nss b/nwn/nwnprc/trunk/spells/sp_prism_wallA.nss index f0cbcbcd..114b9e3f 100644 --- a/nwn/nwnprc/trunk/spells/sp_prism_wallA.nss +++ b/nwn/nwnprc/trunk/spells/sp_prism_wallA.nss @@ -24,7 +24,7 @@ less than 8 HD that is within 20 feet of the wall is blinded for 2d4 rounds by the colors if it looks at the wall. -The wall’s maximum proportions are 4 feet wide per +The wall�s maximum proportions are 4 feet wide per caster level and 2 feet high per caster level. A prismatic wall spell cast to materialize in a space occupied by a creature is disrupted, and @@ -41,7 +41,7 @@ The wall can be destroyed, color by color, in consecutive order, by various magical effects; however, the first color must be brought down before the second can be affected, and so on. -A rod of cancellation or a mage’s disjunction +A rod of cancellation or a mage�s disjunction spell destroys a prismatic wall, but an antimagic field fails to penetrate it. Dispel magic and greater dispel magic cannot dispel @@ -68,6 +68,7 @@ Created: 7/6/07 #include "prc_inc_spells" #include "prc_add_spell_dc" + void main() { object oPC = GetAreaOfEffectCreator(); @@ -159,55 +160,75 @@ void main() { if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); + // makes the target invisible + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } -} \ No newline at end of file +} diff --git a/nwn/nwnprc/trunk/spells/sp_prismat_ray.nss b/nwn/nwnprc/trunk/spells/sp_prismat_ray.nss index 63dbf452..3b9c6146 100644 --- a/nwn/nwnprc/trunk/spells/sp_prismat_ray.nss +++ b/nwn/nwnprc/trunk/spells/sp_prismat_ray.nss @@ -216,56 +216,75 @@ void DoRay(object oTarget, int nSaveDC, int nRoll, int nCasterLvl, object oPC) { if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nSaveDC, SAVING_THROW_TYPE_SPELL)) { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); + // makes the target invisible + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } -} \ No newline at end of file +} diff --git a/nwn/nwnprc/trunk/spells/sp_prismt_sphr.nss b/nwn/nwnprc/trunk/spells/sp_prismt_sphr.nss index 6f82d3fe..21eaa74a 100644 --- a/nwn/nwnprc/trunk/spells/sp_prismt_sphr.nss +++ b/nwn/nwnprc/trunk/spells/sp_prismt_sphr.nss @@ -1,45 +1,45 @@ //:://///////////////////////////////////////////// -//:: Name -//:: FileName sp_.nss +//:: Name +//:: FileName sp_prismt_sphr.nss //::////////////////////////////////////////////// /**@file Prismatic Sphere Abjuration -Level: Protection 9, Sor/Wiz 9, Sun 9 -Components: V -Range: 10 ft. +Level: Protection 9, Sor/Wiz 9, Sun 9 +Components: V +Range: 10 ft. Effect: 10-ft.-radius sphere centered on you This spell functions like prismatic wall, except you -conjure up an immobile, opaque globe of shimmering, +conjure up an immobile, opaque globe of shimmering, multicolored light that surrounds you and protects you from all forms of attack. The sphere flashes in all colors of the visible spectrum. -The sphere’s blindness effect on creatures with less +The sphere's blindness effect on creatures with less than 8 HD lasts 2d4x10 minutes. You can pass into and out of the prismatic sphere and -remain near it without harm. However, when you’re -inside it, the sphere blocks any attempt to project +remain near it without harm. However, when you are +inside it, the sphere blocks any attempt to project something through the sphere (including spells). Other -creatures that attempt to attack you or pass through +creatures that attempt to attack you or pass through suffer the effects of each color, one at a time. Typically, only the upper hemisphere of the globe will -exist, since you are at the center of the sphere, so +exist, since you are at the center of the sphere, so the lower half is usually excluded by the floor surface you are standing on. The colors of the sphere have the same effects as the colors of a prismatic wall: -Red 1st Deals 20 points of fire damage (Reflex half). +Red 1st Deals 20 points of fire damage (Reflex half). Orange 2nd Deals 40 points of acid damage (Reflex half). Yellow 3rd Deals 80 points of electricity damage (Reflex half). Green 4th Poison (Kills; Fortitude partial for 1d6 points of Con damage instead). -Blue 5th Turned to stone (Fortitude negates). -Indigo 6th Will save or become insane (as insanity spell). -Violet 7th Creatures sent to another plane (Will negates). +Blue 5th Turned to stone (Fortitude negates). +Indigo 6th Will save or become insane (as insanity spell). +Violet 7th Creatures sent to another plane (Will negates). Author: Tenjac Created: 7/6/07 @@ -53,36 +53,46 @@ Created: 7/6/07 void main() { if(!X2PreSpellCastCode()) return; - PRCSetSchool(SPELL_SCHOOL_ABJURATION); - + object oPC = OBJECT_SELF; location lTarget = GetLocation(oPC); object oTarget; int nMetaMagic = PRCGetMetaMagicFeat(); int nCasterLvl = PRCGetCasterLevel(oPC); - float fDelay, fDuration; + float fDuration; + float fDelay; + float fDurFX = 3.0; float fDurAoE = TurnsToSeconds(nCasterLvl * 10); if (nMetaMagic & METAMAGIC_EXTEND) fDurAoE += fDurAoE; - effect eAoE = EffectAreaOfEffect(VFX_PER_PRISMATIC_SPHERE); - - ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_PRISMATIC_SPHERE), lTarget, fDurAoE); + + /* + // Added a hearbeat script since .2DA only points to A and B for on enter and on exit + // LABEL SHAPE RADIUS WIDTH LENGTH ONENTER ONEXIT HEARTBEAT + // 173 VFX_PER_PRISMATIC_SPHERE C 3.048 **** **** sp_prismt_sphrA sp_prismt_sphrB **** + */ + effect eAoE = EffectAreaOfEffect(VFX_PER_PRISMATIC_SPHERE, "sp_prismt_sphrA", "sp_prismt_sphrH", "sp_prismt_sphrB"); ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eAoE, lTarget, fDurAoE); - object oAoE = GetAreaOfEffectObject(lTarget, "VFX_PER_PRISMATIC_SPHERE"); SetAllAoEInts(SPELL_PRISMATIC_SPHERE, oAoE, PRCGetSpellSaveDC(SPELL_PRISMATIC_SPHERE, SPELL_SCHOOL_ABJURATION), 0, nCasterLvl); - effect eVFX = EffectVisualEffect(VFX_DUR_PRISMATIC_SPHERE); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVFX, oAoE); + //SendMessageToPC(oPC, "Casting a modified Prismatic Sphere with dur: " + FloatToString(fDurAoE)); + + // Handles visual fx of the spell (and continued on the heartbeat script) since the fx seem to last max 3 secs. + effect eVFX = EffectVisualEffect(VFX_DUR_PRISMATIC_SPHERE, FALSE, 1.0, [0.0,0.0,0.064], [0.0,0.0,0.36]); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVFX, lTarget, fDurFX); + // Repeats the vFX after 3 seconds + DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVFX, lTarget, fDurFX)); // Declare blindness effect eBlind = EffectBlindness(); - + // Start cycling through the AOE Object for viable targets oTarget = MyFirstObjectInShape(SHAPE_SPHERE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE); - + while(GetIsObjectValid(oTarget)) { + // PvP check if(!GetIsReactionTypeFriendly(oTarget, oPC) && // Make sure they are not immune to spells @@ -93,7 +103,7 @@ void main() { // Fire cast spell at event for the affected target PRCSignalSpellEvent(oTarget, TRUE, SPELL_PRISMATIC_SPHERE, oPC); - + // Check if they can see if(!PRCGetHasEffect(EFFECT_TYPE_BLINDNESS, oTarget)) { @@ -103,10 +113,10 @@ void main() // Get duration fDuration = IntToFloat(d4(2) * 10); if(nMetaMagic & METAMAGIC_EXTEND) fDuration += fDuration; - + // Get a small delay fDelay = GetDistanceToObject(oTarget)/20; - + // Apply blindness DelayCommand(fDelay, SPApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oTarget, fDuration, TRUE, SPELL_PRISMATIC_SPHERE, nCasterLvl)); } @@ -116,4 +126,5 @@ void main() //Get next target. oTarget = MyNextObjectInShape(SHAPE_SPHERE, 10.0, lTarget, TRUE, OBJECT_TYPE_CREATURE); } -} \ No newline at end of file + PRCSetSchool(); +} diff --git a/nwn/nwnprc/trunk/spells/sp_prismt_sphrA.nss b/nwn/nwnprc/trunk/spells/sp_prismt_sphrA.nss index 5d151d06..8cbb109c 100644 --- a/nwn/nwnprc/trunk/spells/sp_prismt_sphrA.nss +++ b/nwn/nwnprc/trunk/spells/sp_prismt_sphrA.nss @@ -15,11 +15,11 @@ multicolored light that surrounds you and protects you from all forms of attack. The sphere flashes in all colors of the visible spectrum. -The sphere’s blindness effect on creatures with less +The sphere�s blindness effect on creatures with less than 8 HD lasts 2d4x10 minutes. You can pass into and out of the prismatic sphere and -remain near it without harm. However, when you’re +remain near it without harm. However, when you�re inside it, the sphere blocks any attempt to project something through the sphere (including spells). Other creatures that attempt to attack you or pass through @@ -49,6 +49,7 @@ Created: 7/6/07 #include "prc_inc_spells" #include "prc_add_spell_dc" + void main() { object oPC = GetAreaOfEffectCreator(); @@ -143,73 +144,75 @@ void main() { if(!PRCMySavingThrow(SAVING_THROW_WILL, oTarget, nDC, SAVING_THROW_TYPE_SPELL)) { - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget); - ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectCutsceneGhost(), oTarget); - ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), oTarget); + // makes the target invisible + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY), oTarget, 6.0); + // allows pathfinding through the target + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneGhost(), oTarget, 6.0); + // paralyzes the target, ignores immunity + ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectCutsceneParalyze(), oTarget, 6.0); + // save the target location for later visual effect + location lLoc = GetLocation(oTarget); - int nMessageRoll = d6(1); - int nTalk; - - switch(nMessageRoll) + // separate player targets from NPCs + if(GetIsPC(oTarget)) { - case 1: - { - nTalk = 1729332; - break; - } + int nMessageRoll = d6(1); + int nTalk; - case 2: + switch(nMessageRoll) { - nTalk = 1729333; - break; - } + case 1: + { + nTalk = 1729332; + break; + } - case 3: - { - nTalk = 1729334; - break; - } + case 2: + { + nTalk = 1729333; + break; + } - case 4: - { - nTalk = 1729335; - break; - } + case 3: + { + nTalk = 1729334; + break; + } - case 5: - { - nTalk = 1729336; - break; - } + case 4: + { + nTalk = 1729335; + break; + } - case 6: - { - nTalk = 1729337; - break; + case 5: + { + nTalk = 1729336; + break; + } + + case 6: + { + nTalk = 1729337; + break; + } } + //Death Popup + // allow respawn, but not wait for help since sent away + // also if not letting respawn and cannot reload, the player cannot continue via GUI + DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, TRUE , FALSE, nTalk)); + DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); } - //Death Popup - DelayCommand(2.75, PopUpDeathGUIPanel(oTarget, FALSE , TRUE, nTalk)); - DelayCommand(2.75, ExecuteScript("prc_ondeath", oTarget)); + else + { + // Target is not a player + // To simplify against NPCs and also reward xp, applies same death as Green color + DeathlessFrenzyCheck(oTarget); + ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectDeath()), oTarget); + } + // a visual effect for banishment + ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_UNSUMMON), lLoc); } } } } - - - - - - - - - - - - - - - - - - diff --git a/nwn/nwnprc/trunk/spells/sp_prismt_sphrH.nss b/nwn/nwnprc/trunk/spells/sp_prismt_sphrH.nss new file mode 100644 index 00000000..1152acb6 --- /dev/null +++ b/nwn/nwnprc/trunk/spells/sp_prismt_sphrH.nss @@ -0,0 +1,21 @@ +//:://///////////////////////////////////////////// +//:: Name Prismatic Sphere on heartbeat +//:: FileName sp_prismt_sphrH.nss +//::////////////////////////////////////////////// +// a heartbeat script for Prismatic Sphere + +#include "prc_inc_spells" + +void main() +{ + //SendMessageToAllPCs("Prismatic Sphere heartbeat."); + + float fDurFX = 3.0; + location lTarget = GetLocation(OBJECT_SELF); + + // Handles visual fx of the spell (and continued on the heartbeat script) since the fx seem to last max 3 secs. + effect eVFX = EffectVisualEffect(VFX_DUR_PRISMATIC_SPHERE, FALSE, 1.0, [0.0,0.0,0.064], [0.0,0.0,0.36]); + ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVFX, lTarget, fDurFX); + // Repeats the vFX after 3 seconds + DelayCommand(3.0, ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVFX, lTarget, fDurFX)); +} diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk index 4b57569c..a6430981 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk differ diff --git a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml index a6828b54..5382a7b6 100644 --- a/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml +++ b/nwn/nwnprc/trunk/tlk/prc8_consortium.tlk.xml @@ -4962,7 +4962,7 @@ Special Abilities: - Iron Will as a bonus feat - Spell Eater (Su): If a warsoul succeeds on her save against a spell, she gains 5 temporary hit points and a +2 bonus on attack rolls. The attack bonus lasts for 1 round. The temporary hit points last for 1 minute. - Soul Tyrant (Su): As a swift action, a warsoul can draw arcane power from a willing hobgoblin within 30 feet who has 10 or fewer hit points. That hobgoblin is immediately slain, leaving behind a desiccated corpse. The warsoul heals 1 hit point per Hit Die she has, and she receives a +2 bonus to the save DC of the next spell she casts. She also gains a +2 bonus on any attack roll required by the next spell she casts. If that spell deals damage, the warsoul receives a bonus on the damage roll equal to her Hit Dice. -- Cult of Power (Ex): A warsoul is accompanied by 2d4 1st level hobgoblin warriors who have sworn their lives to her. These thralls willingly sacrifice themselves for their master’s soul tyrant ability. +- Cult of Power (Ex): A warsoul is accompanied by 2d4 1st level hobgoblin warriors who have sworn their lives to her. These thralls willingly sacrifice themselves for their master's soul tyrant ability. - Monstrous Humanoid: Hobgoblin Warsoul are considered Monstrous Humanoids for the purpose of spells - Sorcerer Casting: Hobgoblin Warsoul cast spells as a Sorcerer of their racial hit dice @@ -4972,7 +4972,7 @@ Racial Hit Dice/Class: 10 of Monstrous Humanoid Cult of Power Type of Feat: Racial Prerequisite: Hobgoblin Warsoul -Specifics: A warsoul is accompanied by 2d4 1st level hobgoblin warriors who have sworn their lives to her. These thralls willingly sacrifice themselves for their master’s soul tyrant ability. +Specifics: A warsoul is accompanied by 2d4 1st level hobgoblin warriors who have sworn their lives to her. These thralls willingly sacrifice themselves for their master's soul tyrant ability. Use: Selected. Soul Tyrant Type of Feat: Racial @@ -5033,7 +5033,7 @@ Use: Selected. Automatic Languages: Common and Elven. Bonus Languages: Draconic, Gnoll, Gnome, Goblin, Orc, and Sylvan. - Favored Class: Wizard. A multiclass gray elf’s wizard class does not count when determining whether she takes an experience point penalty for multiclassing. + Favored Class: Wizard. A multiclass gray elf's wizard class does not count when determining whether she takes an experience point penalty for multiclassing. Level Adjustment: +0 Grey Elf Biography. @@ -5208,7 +5208,7 @@ Level Nature Sense* (Ex): The forest master can identify plants and animals with perfect accuracy. He can determine whether water is safe to drink or dangerous. 2: Forest Dominion (Su): The forest master gains the ability to rebuke or command plants as an evil cleric can rebuke or command undead. Great Mallet (Su): A forest master begins to awaken magical abilities within the wood and metal that make up his maul. -3: Natural Armor (Ex): The forest master’s skin changes into a tough, barklike hide, granting him natural armor +3 +3: Natural Armor (Ex): The forest master's skin changes into a tough, barklike hide, granting him natural armor +3 4: Oak Strength (Ex): The forest master gains a +2 bonus to Strength and the ability to make slam attacks. 5: Spruce Growth (Su): Once per day the forest master can temporarily increase his size and strength as if using a righteous might spell. 7: Oakheart (Ex): Type changes to plant, gain weakness to fire. @@ -5226,17 +5226,17 @@ Level Forest Dominion (Su) At 2nd level, the forest master gains the ability to rebuke or command plants as an evil cleric can rebuke or command undead. His effective level for this ability is his class level, and he may use it a number of times perday equal to 3 + his Charisma modifier. If he already has this ability because he is a cleric with the Plant domain, these levels stack with his cleric levels and vice versa. Great Mallet (Su) - Beginning at 2nd level, a forest master begins to awaken magical abilities within the wood and metal that make up his maul. Any maul used by a forest master is treated as if it were a +2 maul with either the frost or shock property (the forest master decides each round whether the weapon’s extra damage is cold or electricity). If the weapon has additional abilities (such as defending), these abilities still apply, and if the weapon has an enhancement bonus better than +2 the higher of the two bonuses is used. The maul does not gain these abilities if it is not wielded by the forest master. At 6th-level, the forest master’s' maul acts as a +2 icy burst or +2 shocking burst weapon, with the forest master deciding each round what effect the weapon has. At 9th level, the forest master’s maul acts as a +3 mighty cleaving weapon in addition to its other properties (including its icy burst or shocking burst ability). + Beginning at 2nd level, a forest master begins to awaken magical abilities within the wood and metal that make up his maul. Any maul used by a forest master is treated as if it were a +2 maul with either the frost or shock property (the forest master decides each round whether the weapon's extra damage is cold or electricity). If the weapon has additional abilities (such as defending), these abilities still apply, and if the weapon has an enhancement bonus better than +2 the higher of the two bonuses is used. The maul does not gain these abilities if it is not wielded by the forest master. At 6th-level, the forest master's' maul acts as a +2 icy burst or +2 shocking burst weapon, with the forest master deciding each round what effect the weapon has. At 9th level, the forest master's maul acts as a +3 mighty cleaving weapon in addition to its other properties (including its icy burst or shocking burst ability). Icy Mallet Shocking Mallet Natural Armor (Ex) - At 3rd level, the forest master’s skin changes into a tough, bark like hide, granting him natural armor +3. This bonus increases to +5 at 5th level and +7 at 7th level. + At 3rd level, the forest master's skin changes into a tough, bark like hide, granting him natural armor +3. This bonus increases to +5 at 5th level and +7 at 7th level. Oak Strength (Ex) - Beginning at 4th level, the forest master gains a +2 bonus to Strength and the ability to make slam attacks. A Small creature'’s slam attack deals 1d4 points of damage, one from a Medium-size creature deals 1d6 points of damage, and a Large forest master’s' slam attack deals 1d8 points of damage. Slam attacks are natural weapon attacks and do not provoke an attack of opportunity from the defender. A forest master can select Improved Critical (Creature), Weapon Focus (Creature), and (if a fighter of 4th level or higher) Weapon Specialization (Creature). Upon gaining this ability, the forest master’s' hair takes on a green, leafy appearance. + Beginning at 4th level, the forest master gains a +2 bonus to Strength and the ability to make slam attacks. A Small creature''s slam attack deals 1d4 points of damage, one from a Medium-size creature deals 1d6 points of damage, and a Large forest master's' slam attack deals 1d8 points of damage. Slam attacks are natural weapon attacks and do not provoke an attack of opportunity from the defender. A forest master can select Improved Critical (Creature), Weapon Focus (Creature), and (if a fighter of 4th level or higher) Weapon Specialization (Creature). Upon gaining this ability, the forest master's' hair takes on a green, leafy appearance. Spruce Growth (Su) At 5th level, once per day the forest master can temporarily increase his size and strength as if using a righteous might spell. Oakheart (Ex) - Upon reaching 7th level, a forest master’s' body becomes a thing of wood and leaf rather than meat and bone. His type changes to plant. As such, he is immune to mind-affecting effects, poison, sleep, paralysis, stunning, and polymorphing. He is not subject to critical hits or sneak attacks. However, the forest master becomes vulnerable to fire, and suffers double damage from fire attacks. + Upon reaching 7th level, a forest master's body becomes a thing of wood and leaf rather than meat and bone. His type changes to plant. As such, he is immune to mind-affecting effects, poison, sleep, paralysis, stunning, and polymorphing. He is not subject to critical hits or sneak attacks. However, the forest master becomes vulnerable to fire, and suffers double damage from fire attacks. Deep Roots (Su) Beginning at 8th level, once per day the forestmaster may sink roots into the ground in any natural surface that can support at least some vegetation. While rooted, the forest master gains fast healing 5, but has an effective Dexterity score of 1 and may not move from the spot in which he stands. The forest master can withdraw his roots and end the healing as a free action. Forest Longevity (Ex) @@ -26066,7 +26066,7 @@ Warlocks are born, not made. Their ancestors traded portions of their soul for - Hit Die: d6 - Proficiencies: Warlocks are proficient with simple weapons and light armor. -- Skill Points: 2+ Int Modifier +- Skill Points: 2+ Int Modifier. CLASS FEATURES: @@ -46464,7 +46464,15 @@ Epic Eldritch Theurge Bonus Feats: Craft Epic Magic Arms and Armor, Craft Epic R *An epic eldritch theurge must meet this feat's prerequisites to select it as an epic bonus feat. Echoblade - If you use your bardic music ability while wielding an echoblade, the blade resonates in harmony, dealing additional sonic damage on each attack equal to half your bardic level. + If you use your bardic music ability while wielding an echoblade, the blade resonates in harmony, dealing additional sonic damage on each attack equal to half your bardic level. +Prerequisites: + +Caster Level: 10 +Special: Must be a Bard. + +Cost: + ++10000gp ##START OF WARLOCK INVOCATIONS## All Seeing Eyes Least Invocation @@ -71180,7 +71188,7 @@ Special Abilities: Talon of Tiamat Spellcasting (Fey) True Necromancer Spellcasting (Fey) Ultimate Magus Spellcasting (Fey) - Unseen Spellcasting (Fey) + Unseen Seer Spellcasting (Fey) Virtuoso Spellcasting (Fey) Wild Mage Spellcasting (Fey) War Wizard of Cormyr Spellcasting (Fey) @@ -71443,7 +71451,7 @@ Special Abilities: Spellsword Spellcasting (Bard) Talon of Tiamat Spellcasting (Bard) Ultimate Magus Spellcasting (Bard) - Unseen Spellcasting (Bard) + Unseen Seer Spellcasting (Bard) Virtuoso Spellcasting (Bard) Wild Mage Spellcasting (Bard) War Wizard of Cormyr Spellcasting (Bard) @@ -71961,7 +71969,7 @@ Special Abilities: Spellsword Spellcasting (Warmage) Talon of Tiamat Spellcasting (Warmage) Ultimate Magus Spellcasting (Warmage) - Unseen Spellcasting (Warmage) + Unseen Seer Spellcasting (Warmage) Virtuoso Spellcasting (Warmage) Wild Mage Spellcasting (Warmage) War Wizard of Cormyr Spellcasting (Warmage) @@ -72008,7 +72016,7 @@ Special Abilities: Talon of Tiamat Spellcasting (Wizard) True Necromancer Spellcasting (Wizard) Ultimate Magus Spellcasting (Wizard) - Unseen Spellcasting (Wizard) + Unseen Seer Spellcasting (Wizard) Virtuoso Spellcasting (Wizard) Wayfarer Guide Spellcasting (Wizard) Wild Mage Spellcasting (Wizard) @@ -72670,7 +72678,7 @@ Wild Frenzy: You gain a +2 bonus on attack rolls and damage rolls with melee wea Lions of Talisid lion of Talisid (PRESTIGE CLASS) -The undisputed ruler of the guardinals, Talisid the Celestial Lion is an enormously powerful force for good—and good alone, undiluted by concerns of law or chaos. He is also a mighty druid, and his mortal and guardinal champions are druids and rangers who share both his fierce hatred of evil and his passionate love of the natural world and its creatures. Called the lions of Talisid, these protectors of nature and champions of good emulate their celestial patron in more concrete ways: adopting feline animal companions, assuming great cat forms with their wild shape ability, and eventually roaring like a leonal. Druids and rangers most commonly become lions of Talisid, and only a character with an animal companion can enter the class. Multiclass druid/rangers also commonly adopt the class, and less commonly, fighter/druids or cleric/rangers. +The undisputed ruler of the guardinals, Talisid the Celestial Lion is an enormously powerful force for good— and good alone, undiluted by concerns of law or chaos. He is also a mighty druid, and his mortal and guardinal champions are druids and rangers who share both his fierce hatred of evil and his passionate love of the natural world and its creatures. Called the lions of Talisid, these protectors of nature and champions of good emulate their celestial patron in more concrete ways: adopting feline animal companions, assuming great cat forms with their wild shape ability, and eventually roaring like a leonal. Druids and rangers most commonly become lions of Talisid, and only a character with an animal companion can enter the class. Multiclass druid/rangers also commonly adopt the class, and less commonly, fighter/druids or cleric/rangers. Like their guardinal patron, lions of Talisid usually work alone or in small groups of close companions, rarely with other lions. NPC lions of Talisid can be found wandering the wilderness, fighting any who would defile the natural world with evil. They are particularly concerned with areas where some evil presence corrupts nature itself, manifesting evil weather and vile corrupted creatures. @@ -72685,24 +72693,24 @@ Alignment: Neutral good. Base Attack Bonus: +4. Skills: Lore 9 ranks, Heal 9 ranks. Feats: Favored of the Companions. -Spells: Able to cast Summon Nature’s Ally II. +Spells: Able to cast Summon Nature's Ally II. Special: The character must have an animal companion as a class feature. CLASS FEATURES: Level 1: Animal Companion (Ex): A lion of Talisid can add his lion of Talisid levels to his effective druid level (his actual druid level or one-half his ranger level) to determine the capabilities of his animal companion. - Lion’s Courage (Ex): A lion of Talisid is immune to fear (magical or otherwise) and gains a +4 sacred bonus on Will saves against other mind-affecting spells and effects. + Lion's Courage (Ex): A lion of Talisid is immune to fear (magical or otherwise) and gains a +4 sacred bonus on Will saves against other mind-affecting spells and effects. 2: Scent (Ex): At 2nd level, a lion of Talisid gains the scent special quality. He can detect approaching enemies, sniff out hidden foes, and track by sense of smell. -3: Wild Shape (Su): At 3rd level, a lion of Talisid gains the ability to turn himself into any Small or Medium animal and back again once per day. This works exactly as the druid’s wild shape ability. +3: Wild Shape (Su): At 3rd level, a lion of Talisid gains the ability to turn himself into any Small or Medium animal and back again once per day. This works exactly as the druid's wild shape ability. 4: Exalted Companion: At 4th level, a lion of Talisid gains the Exalted Companion feat as a bonus feat. Wild Shape (Su) (2 / day). -5: Lion’s Pounce (Ex): At 5th level, a lion of Talisid can make a full attack at the end of a charge. +5: Lion's Pounce (Ex): At 5th level, a lion of Talisid can make a full attack at the end of a charge. Wild Shape (Su) (3 / day). 6: Wild Shape (Su) (Large)* -7: Lion’s Swiftness (Ex): When he reaches 7th level, a lion of Talisid can act as if under the effects of a haste spell for a total of 1 round per class level per day. These rounds need not be consecutive. +7: Lion's Swiftness (Ex): When he reaches 7th level, a lion of Talisid can act as if under the effects of a haste spell for a total of 1 round per class level per day. These rounds need not be consecutive. 8: Wild Shape (Su) (4 / day). 9: Wild Shape (Su) (Tiny)* -10: Leonal’s Roar (Su): Three times a day, a 10th-level lion of Talisid can issue a roar that duplicates the effects of the leonal’s roar spell. The saving throw DC is 20 + the lion of Talisid’s Charisma modifier. +10: Leonal's Roar (Su): Three times a day, a 10th-level lion of Talisid can issue a roar that duplicates the effects of the leonal's roar spell. The saving throw DC is 20 + the lion of Talisid's Charisma modifier. * Not implemented Epic Lion of Talisid @@ -72746,10 +72754,10 @@ Use: Automatic. Prerequisite: Lion of Talisid 7 Specifics: When he reaches 7th level, a lion of Talisid can act as if under the effects of a haste spell for a total of 1 round per class level per day. These rounds need not be consecutive. Use: Selected. - Leonal’s Roar (Su) + Leonal's Roar (Su) Type of Feat: Class-Specific Prerequisite: Lion of Talisid 10 -Specifics: : Three times a day, a 10th-level lion of Talisid can issue a roar that duplicates the effects of the leonal’s roar spell. The saving throw DC is 20 + the lion of Talisid’s Charisma modifier. +Specifics: : Three times a day, a 10th-level lion of Talisid can issue a roar that duplicates the effects of the leonal's roar spell. The saving throw DC is 20 + the lion of Talisid's Charisma modifier. Use: Selected. **** VrL @@ -72757,9 +72765,9 @@ Use: Selected. Verdant Lords verdant lord (PRESTIGE CLASS) -Saying the verdant lord has a green thumb is like calling a red dragon a creature with a slight affinity for fire. The verdant lord is the final defender of the Forest. He has left behind the druid’s search for global understanding of nature’s secrets to focus all his energies on the world’s plant life. Elven and half-elven druids are the most likely characters to embrace the role of the verdant lord. Druids of other races, rangers, and the occasional priest of Obad Hai or Ehlonna have also been known to adopt this prestige class. It’s almost impossible for characters without such ties to become verdant lords because they have neither the interest in nor the required understanding of seeds, saplings, and trees. Since most verdant lords have little use for civilization, they tend to be loners, watching the years pass by from their groves. +Saying the verdant lord has a green thumb is like calling a red dragon a creature with a slight affinity for fire. The verdant lord is the final defender of the Forest. He has left behind the druid's search for global understanding of nature's secrets to focus all his energies on the world's plant life. Elven and half-elven druids are the most likely characters to embrace the role of the verdant lord. Druids of other races, rangers, and the occasional priest of Obad Hai or Ehlonna have also been known to adopt this prestige class. It's almost impossible for characters without such ties to become verdant lords because they have neither the interest in nor the required understanding of seeds, saplings, and trees. Since most verdant lords have little use for civilization, they tend to be loners, watching the years pass by from their groves. -Adventuring verdant lords are rare, but those who do exist are marvelous to behold. They tend to take their gardens with them, often bringing several plant creatures, such as animated trees and treants, along on adventures. Verdant lords tend to be soft-spoken, easygoing individuals—right up until someone lights a torch and threatens living plants. +Adventuring verdant lords are rare, but those who do exist are marvelous to behold. They tend to take their gardens with them, often bringing several plant creatures, such as animated trees and treants, along on adventures. Verdant lords tend to be soft-spoken, easygoing individuals, —right up until someone lights a torch and threatens living plants. - Hit Die: d8 - Proficiencies: A verdant lord does not gain any additional weapon or armor proficiencies. @@ -72783,11 +72791,11 @@ Adventuring verdant lords are rare, but those who do exist are marvelous to beho 5: Fast Healing: At 5th level, the verdant lord gains Fast Healing as a bonus feat. 6: Treant Wild Shape (Sp): Beginning at 6th level, the verdant lord can use wild shape to take the form of a treant. 8: Animate Tree (Sp): At 8th level, a verdant lord can animate a tree within 180 feet of him once per day. - 10: Gaea’s Embrace: At 10th level, the verdant lord permanently becomes a plant creature. + 10: Gaea's Embrace: At 10th level, the verdant lord permanently becomes a plant creature. * NOT IMPLEMENTED Epic Verdant Lord - Chosen by the very soul of the forest, the verdant lord is a master of all things green and growing; a guardian whose life is intertwined with the ancient trees and blossoming wilds. These protectors transcend the druid’s path of broad natural wisdom to become singular champions of plant life itself, commanding the power of roots and branches to defend the wilds. + Chosen by the very soul of the forest, the verdant lord is a master of all things green and growing; a guardian whose life is intertwined with the ancient trees and blossoming wilds. These protectors transcend the druid's path of broad natural wisdom to become singular champions of plant life itself, commanding the power of roots and branches to defend the wilds. Hit Die: d8. Skill Points at Each Additional Level: 4 + Intelligence modifier. @@ -72827,7 +72835,7 @@ Benefit: At 2nd level, the verdant lord gains the ability to draw energy from th Spontaneity Type of Feat: Class Prerequsite: Verdant Lord 3 -Benefit: Beginning at 3rd level, the verdant lord can channel stored spell energy into certain healing spells that he hasn’t prepared ahead of time. This works like the cleric’s spontaneous casting ability, with the following exceptions. He can “lose” a prepared spell to cast any regenerate spell of the same level or lower. For example, a verdant lord who has prepared faerie fire (a 1st-level spell) may lose that spell to cast regenerate light wounds (also a 1st-level spell) instead. Domain spells, if the character has access to them, cannot be converted into regenerate spells. +Benefit: Beginning at 3rd level, the verdant lord can channel stored spell energy into certain healing spells that he hasn’t prepared ahead of time. This works like the cleric's spontaneous casting ability, with the following exceptions. He can “lose” a prepared spell to cast any regenerate spell of the same level or lower. For example, a verdant lord who has prepared faerie fire (a 1st-level spell) may lose that spell to cast regenerate light wounds (also a 1st-level spell) instead. Domain spells, if the character has access to them, cannot be converted into regenerate spells. Plant Facility Type of Feat: Class Prerequsite: Verdant Lord 4 @@ -72840,7 +72848,7 @@ Beginning at 6th level, the verdant lord can use wild shape to take the form of Type of Feat: Class Prerequsite: Verdant Lord 8 Beneft: At 8th level, a verdant lord can animate a tree within 180 feet of him once per day. It takes a full round for a tree to uproot itself; thereafter it has a speed of 30 feet and fights as a treant with respect to attacks and damage. The animated tree gains a number of bonus Hit Dice equal to the number of verdant lord -levels the character possesses. Though its Intelligence score is only 2 while animated, the tree automatically understands the verdant lord’s commands. The character can +levels the character possesses. Though its Intelligence score is only 2 while animated, the tree automatically understands the verdant lord's commands. The character can return the animated tree to its normal state at will, and it automatically returns to its normal state if it dies or if the verdant lord who animated it is incapacitated or moves out of range. Once the tree returns to its normal state by any means, the verdant lord cannot animate another tree for 24 hours. Gaea's Embrace @@ -73205,7 +73213,7 @@ Target: One creature Duration: 3 rounds Saving Throw: Fortitude half Spell Resistance: Yes -You turn the subject’s sweat to ice, creating blisters as ice forms on and inside the skin. The spell deals 1d6 cumulative points of cold damage per round it is in effect (that is, 1d6 on the 1st round, 2d6 on the second, and 3d6 on the third). +You turn the subject's sweat to ice, creating blisters as ice forms on and inside the skin. The spell deals 1d6 cumulative points of cold damage per round it is in effect (that is, 1d6 on the 1st round, 2d6 on the second, and 3d6 on the third). Only one save is allowed against the spell; if successful, it halves the damage each round. Focus: A small glass or pottery vessel worth at least 25 gp filled with ice, snow, or water. @@ -73224,9 +73232,9 @@ Duration: Up to 6 rounds (see text) Saving Throw: Fortitude half Spell Resistance: Yes -This spell functions like creeping cold, causing intense cold to accumulate inside the target’s body, but with extended duration and increased damage. +This spell functions like creeping cold, causing intense cold to accumulate inside the target's body, but with extended duration and increased damage. -You turn the subject’s sweat and moisture to ice, creating blisters and sharp crystals beneath the skin. The spell deals cumulative cold damage each round: 1d6 points on the first round, 2d6 on the second, and so on—dealing 3d6 on the third round and 4d6 on the fourth. +You turn the subject's sweat and moisture to ice, creating blisters and sharp crystals beneath the skin. The spell deals cumulative cold damage each round: 1d6 points on the first round, 2d6 on the second, and so on—dealing 3d6 on the third round and 4d6 on the fourth. If the caster is at least 15th level, the spell continues for a fifth round, dealing 5d6 cold damage. At 20th level or higher, a sixth round is added, dealing 6d6 cold damage. The spell never deals more than 6d6 damage in any round, and it ends early if the target dies. @@ -73777,7 +73785,7 @@ A character can gain this feat multiple times. Its effects do not stack. Each ti Ability Focus (Word of Changing) ### Start PRC8 Prestige Class Epic Expansion ### Epic Eye of Gruumsh - You are the living embodiment of Gruumsh’s savage fury—a one-eyed martyr whose terrible sacrifice has unlocked epic levels of brutal power. Your scarred visage and impaired sight serve as a constant reminder of your oath, granting you a glimpse into your deity’s blind rage. In the heat of battle, your ferocity and unholy devotion enable you to strike terror into the hearts of your foes, as you channel the very essence of an orcish legend. + You are the living embodiment of Gruumsh's savage fury—a one-eyed martyr whose terrible sacrifice has unlocked epic levels of brutal power. Your scarred visage and impaired sight serve as a constant reminder of your oath, granting you a glimpse into your deity's blind rage. In the heat of battle, your ferocity and unholy devotion enable you to strike terror into the hearts of your foes, as you channel the very essence of an orcish legend. Hit Die: d12 Skill Points at Each Additional Level: 2 + Intelligence modifier @@ -73861,7 +73869,7 @@ Spells: The epic spellsword increases caster level by one per two levels gained Epic Spellsword Bonus Feat List: Armor Skin, Blinding Speed, Automatic Quicken Spell, Automatic Silent Spell, Automatic Still Spell, Epic Spell Focus, Epic Spell Penetration, Epic Spellcasting, Epic Fortitude, Epic Reflexes, Epic, Will, Great Intelligence, Great Charisma, Ignore Material Components, Improved Combat Casting, Improved Initiative, Superior Initiative, Spell Focus, Spell Penetration, Tenacious Magic, Damage Reduction, Devastating Critical, Epic Leadership, Epic Prowess, Energy Resistance, Epic Toughness, Epic Weapon Focus, Epic Weapon Specialization, Improved Manyshot, Improved Stunning Fist, Improved Whirlwind Attack, Legendary Commander, Legendary Wrestler, Overwhelming Critical, Perfect Two-Weapon Fighting, Superior Initiative, Two-Weapon Rend. In addition to the feats on this list, the epic spellsword may select any metamagic or fighter bonus feat not listed here. Epic Acolyte of the Skin - You have embraced a perilous pact with infernal power, binding a living demon’s skin to your own. As your bond deepens, you gain supernatural defenses along with elemental resistances and a fearsome gaze. + You have embraced a perilous pact with infernal power, binding a living demon's skin to your own. As your bond deepens, you gain supernatural defenses along with elemental resistances and a fearsome gaze. Hit Die: d4. Skill Points at Each Additional Level: 2 + Intelligence modifier. @@ -73894,7 +73902,7 @@ Sneak Attack: The epic unseen seer's sneak attack continues to increase by 1d6 e Epic Unseen Seer Bonus Feat List: Arcane Defense, Automatic Quicken Spell, Automatic Silent Spell, Automatic Still Spell, Combat Casting, Craft Epic Magic Arms and Armor, Craft Epic Rod, Craft Epic Staff, Craft Epic Wondrous Item, Epic Spell Focus, Epic Spell Penetration, Epic Spellcasting, Great Charisma, Great Intelligence, Forge Epic Ring, Ignore Material Components, Improved Combat Casting, Spell Focus, Spell Penetration, Tenacious Magic, Blinding Speed, Epic Dodge, Epic Skill Focus, Improved Sneak Attack, Lingering Damage, Self-Concealment, Superior Initiative Epic Celebrant Sharess - At epic levels, you transcend the ordinary revelry to become a living embodiment of Sharess’s dual nature—a mesmerizing blend of irresistible charm and fierce martial prowess. + At epic levels, you transcend the ordinary revelry to become a living embodiment of Sharess's dual nature—a mesmerizing blend of irresistible charm and fierce martial prowess. Hit Die: d6 Skill Points at Each Additional Level: 6 + Int Modifier @@ -73996,7 +74004,7 @@ Spellcasting: The epic Fist of Raziel continues to increase in caster level (and Epic Fist of Raziel Bonus Feat List: Armor Skin, Automatic Quicken Spell, Automatic Silent Spell, Automatic Still Spell, Blinding Speed, Devastating Critical, Epic Divine Might, Epic Divine Shield, Epic Prowess, Epic Reputation, Epic Spell Focus, Epic Spell Penetration, Epic Toughness, Epic Weapon Focus, Epic Weapon Specialization, Great Charisma, Great Smiting, Improved Combat Casting, Invoke Divine Wrath, Overwhelming Critical, Perfect Health, Planar Turning. Epic Vassal of Bahamut - Epic Vassals of Bahamut embody the Platinum Dragon’s will, becoming unstoppable champions against evil dragons. Their divine gifts, martial prowess, and unwavering devotion make them legendary figures in the eternal war against tyranny and corruption. + Epic Vassals of Bahamut embody the Platinum Dragon's will, becoming unstoppable champions against evil dragons. Their divine gifts, martial prowess, and unwavering devotion make them legendary figures in the eternal war against tyranny and corruption. Hit Die: d10 Skill Points at Each Additional Level: 2 + Int Modifier @@ -74349,7 +74357,7 @@ Sneak Attack: The epic Disciple of Baalzebu's sneak attack continues to increase Epic Disciple of Baalzebu Bonus Feat List: Armor Skin, Blinding Speed, Epic Energy Resistance, Fast Healing, Perfect Health, Epic Dodge, Epic Prowess, Epic Reputation, Epic Skill Focus, Great Charisma, Improved Sneak Attack, Lingering Damage, Self-Concealment, Superior Initiative. Epic Mighty Contender of Kord - Mighty Contenders of Kord strive for the ultimate fusion of physical and spiritual perfection. Champions of the Brawler, they push their bodies to their limits, believing that true strength leads to freedom. Through divine might and relentless training, they become living testaments to Kord’s power, breaking chains both literal and metaphorical in their quest for supremacy. + Mighty Contenders of Kord strive for the ultimate fusion of physical and spiritual perfection. Champions of the Brawler, they push their bodies to their limits, believing that true strength leads to freedom. Through divine might and relentless training, they become living testaments to Kord's power, breaking chains both literal and metaphorical in their quest for supremacy. Hit Die: d10 Skill Points at Each Additional Level: 2 + Int Modifier @@ -74412,7 +74420,7 @@ Ritual Scarring : The epic Runescarred Berzerker continues to gain +1 Natural AC Epic Runescarred Berserkers Bonus Feat List: Armor Skin, Blinding Speed, Devastating Critical, Epic Damage Reduction, Epic Energy Reduction, Epic Prowess, Epic Toughness, Epic Weapon Focus, Fast Healing, Legendary Wrestler, Mighty Rage, Overwhelming Critical, Terrifying Rage, Thundering Rage Epic Talontar Blightlord - Epic Talontar Blightlords are avatars of pestilence and decay, their very presence a walking plague. With blighted blood and cursed glaives, they corrupt nature itself, spreading Talona’s rot across forests and flesh alike. No longer truly mortal, these twisted priests become vessels of contagion—, unfeeling, unyielding, and unstoppable harbingers of a diseased apocalypse. + Epic Talontar Blightlords are avatars of pestilence and decay, their very presence a walking plague. With blighted blood and cursed glaives, they corrupt nature itself, spreading Talona's rot across forests and flesh alike. No longer truly mortal, these twisted priests become vessels of contagion—, unfeeling, unyielding, and unstoppable harbingers of a diseased apocalypse. Hit Die: d8 Skill Points at Each Additional Level: 2 + Int Modifier @@ -74489,7 +74497,7 @@ Sneak Attack: The epic Shadowblade's sneak attack continues to increase in power Epic Shadowblade Bonus Feat List: Armor Skin, Blinding Speed, Epic Dodge, Epic Prowess, Epic Reputation, Epic Self-Concealment, Epic Skill Focus, Epic Weapon Focus, Great Dexterity, Improved Sneak Attack, Lingering Damage, Superior Initiative. Epic Dragon Shaman - At epic levels, the dragon shaman becomes a living embodiment of draconic majesty. Their auras grow stronger, their breath weapon rivals that of ancient wyrms, and their resilience is all but unshakable. With wings unfurled and power drawn directly from their totem dragon’s essence, they stride through battle as a paragon of scaled might and unwavering purpose. + At epic levels, the dragon shaman becomes a living embodiment of draconic majesty. Their auras grow stronger, their breath weapon rivals that of ancient wyrms, and their resilience is all but unshakable. With wings unfurled and power drawn directly from their totem dragon's essence, they stride through battle as a paragon of scaled might and unwavering purpose. Hit Die: d10. Skill Points at Each Additional Level: 2 + Intelligence modifier. @@ -74584,7 +74592,7 @@ Incarnum Overload: The epic Incandescent Champion continues to gain another use Epic Incandescent Champion Bonus Feat List: Armor Skin, Blinding Speed, Bonus Soulmeld, Devastating Critical, Epic Energy Resistance, Epic Essentia, Epic Leadership, Epic Prowess, Epic Toughness, Epic Weapon Focus, Extra Chakra Bind, Great Constitution, Legendary Commander, Open Heart Chakra, Open Soul Chakra, Overwhelming Critical, Rapid Meldshaping, Rebind Soulmeld, Superior Initiative. Epic Justice of Weald and Woe - You are the forest’s final answer. Where diplomacy fails, your arrows speak. Moving unseen, striking without mercy, you end threats to elvenkind with lethal precision, and vanish like mist before dawn. + You are the forest's final answer. Where diplomacy fails, your arrows speak. Moving unseen, striking without mercy, you end threats to elvenkind with lethal precision, and vanish like mist before dawn. Hit Die: d10. Skill Points at Each Additional Level: 4 + Intelligence modifier. @@ -74728,7 +74736,7 @@ Spellcasting: The epic Thrall of Graz'zt continues to increase in arcane caster Epic Thrall of Graz'zt Bonus Feat List: Armor Skin, Automatic Quicken Spell, Automatic Silent Spell, Automatic Still Spell, Blinding Speed, Epic Energy Resistance, Epic Spell Focus, Epic Spell Penetration, Epic Spellcasting, Epic Toughness, Fast Healing, Focused Spell Penetration, Great Charisma, Great Constitution, Great Intelligence, Ignore Material Components, Improved Combat Casting, Tenacious Magic. Epic Eldritch Disciple - At epic levels, the Eldritch Disciple becomes a master of both divine magic and eldritch power. Her patron’s gifts grow stronger, allowing her to blend invocations and divine spells with greater ease. As a chosen vessel of her deity's will, she channels supernatural power with unmatched versatility and purpose. + At epic levels, the Eldritch Disciple becomes a master of both divine magic and eldritch power. Her patron's gifts grow stronger, allowing her to blend invocations and divine spells with greater ease. As a chosen vessel of her deity's will, she channels supernatural power with unmatched versatility and purpose. Hit Die: d8 Skill Points at Each Additional Level: 2 + Int Modifier @@ -74947,7 +74955,7 @@ Manifesting: At each class level the epic Cerebremancer continues to increase in Epic Cerebremancer Bonus Feat List: Armor Skin, Automatic Quicken Spell, Automatic Silent Spell, Automatic Still Spell, Blinding Speed, Craft Epic Magic Arms and Armor, Craft Epic Staff, Craft Epic Wondrous Item, Epic Energy Resistance, Epic Leadership, Epic Spell Focus, Epic Spell Penetration, Epic Spellcasting, Epic Skill Focus, Focused Spell Penetration, Forge Epic Ring, Great Charisma, Great Intelligence, Great Wisdom, Ignore Material Components, Improved Combat Casting, Epic Psionic Feats, Tenacious Magic. Epic Thrallherd - The epic Thrallherd is no mere master of persuasion, they are a gravitational center of will, drawing minds like comets into their orbit. Words are unnecessary; their presence alone compels obedience. Servants do not follow out of duty, but because they believe it is destiny. Kings, monsters, even minds alien and ancient, none are beyond the Thrallherd’s reach. Their thoughts shape allegiance, and their will becomes the law of others. + The epic Thrallherd is no mere master of persuasion, they are a gravitational center of will, drawing minds like comets into their orbit. Words are unnecessary; their presence alone compels obedience. Servants do not follow out of duty, but because they believe it is destiny. Kings, monsters, even minds alien and ancient, none are beyond the Thrallherd's reach. Their thoughts shape allegiance, and their will becomes the law of others. Hit Die: d4 Skill Points at Each Additional Level: 2 + Int Modifier @@ -75131,7 +75139,7 @@ Special Attack: the epic Hand of the Winged Masters's sneak attack or skirmish a Epic Hands of the Winged Masters Bonus Feat List: Armor Skin, Blinding Speed, Epic Dodge, Epic Energy Resistance, Epic Prowess, Epic Reputation, Epic Skill Focus, Epic Toughness, Epic Weapon Focus, Great Dexterity, Improved Sneak Attack, Lingering Damage, Self-Concealment, Superior Initiative. Epic Talon of Tiamat - Epic Talons of Tiamat are the chosen claws of dragonkind’s darkest queen, spreading her wrath and dominion across the realms. Empowered by draconic fury and ancient magic, they become living engines of destruction, breathing elemental death, sowing terror with their presence, and turning even mighty dragons into pawns of their will. Whether clad in steel or shrouded in sorcery, they are avatars of chromatic vengeance, feared by all who stand with metallic dragons and loathed as heretics by the righteous. Wherever they walk, Tiamat’s shadow follows. + Epic Talons of Tiamat are the chosen claws of dragonkind's darkest queen, spreading her wrath and dominion across the realms. Empowered by draconic fury and ancient magic, they become living engines of destruction, breathing elemental death, sowing terror with their presence, and turning even mighty dragons into pawns of their will. Whether clad in steel or shrouded in sorcery, they are avatars of chromatic vengeance, feared by all who stand with metallic dragons and loathed as heretics by the righteous. Wherever they walk, Tiamat's shadow follows. Hit Die: d8 Skill Points at Each Additional Level: 2 + Int Modifier @@ -75661,7 +75669,7 @@ Duration: 10 rounds + 1 round/two levels Saving Throw: Will negates (harmless) Spell Resistance: Yes (harmless) -You invoke healing energy over a group of creatures, granting each the fast healing ability for the duration of the spell. This healing applies only to damage sustained during the spell’s duration, not to that from previous injuries. Each subject heals 1 hit point per round of such damage until the spell ends and is automatically stabilized if he or she begins dying from hit point loss during that time. Regenerate ring does not restore hit points lost from starvation, thirst, or suffocation, nor does it allow a creature to regrow or attach lost body parts. The effects of multiple regenerate spells do not stack; only the highest-level effect applies. Applying a second regenerate spell of equal level extends the first spell’s duration by the full duration of the second spell. +You invoke healing energy over a group of creatures, granting each the fast healing ability for the duration of the spell. This healing applies only to damage sustained during the spell's duration, not to that from previous injuries. Each subject heals 1 hit point per round of such damage until the spell ends and is automatically stabilized if he or she begins dying from hit point loss during that time. Regenerate ring does not restore hit points lost from starvation, thirst, or suffocation, nor does it allow a creature to regrow or attach lost body parts. The effects of multiple regenerate spells do not stack; only the highest-level effect applies. Applying a second regenerate spell of equal level extends the first spell's duration by the full duration of the second spell. Regenerate Ring (6) Regenerate Ring (9) Regenerate Ring (12) @@ -75678,7 +75686,7 @@ Duration: 10 rounds + 1 round/two levels Saving Throw: Will negates (harmless) Spell Resistance: Yes (harmless) -You invoke healing energy over a group of creatures, granting each the fast healing ability for the duration of the spell. This healing applies only to damage sustained during the spell’s duration, not to that from previous injuries. Each subject heals 3 hit points per round of such damage until the spell ends and is automatically stabilized if he or she begins dying from hit point loss during that time. Regenerate circle does not restore hit points lost from starvation, thirst, or suffocation, nor does it allow a creature to regrow or attach lost body parts. The effects of multiple regenerate spells do not stack; only the highest-level effect applies. Applying a second regenerate spell of equal level extends the first spell’s duration by the full duration of the second spell. +You invoke healing energy over a group of creatures, granting each the fast healing ability for the duration of the spell. This healing applies only to damage sustained during the spell's duration, not to that from previous injuries. Each subject heals 3 hit points per round of such damage until the spell ends and is automatically stabilized if he or she begins dying from hit point loss during that time. Regenerate circle does not restore hit points lost from starvation, thirst, or suffocation, nor does it allow a creature to regrow or attach lost body parts. The effects of multiple regenerate spells do not stack; only the highest-level effect applies. Applying a second regenerate spell of equal level extends the first spell's duration by the full duration of the second spell. Regenerate Circle (10) Regenerate Circle (15) Regenerate Circle (20) diff --git a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk index 4b57569c..a6430981 100644 Binary files a/nwn/nwnprc/trunk/tlk/prc_consortium.tlk and b/nwn/nwnprc/trunk/tlk/prc_consortium.tlk differ