Stratics - The Massively Multiplayer Network
Stratics Network   Stratics Community   Stratics Central     
 
 
Ambrosia Tradeskill System

Created by Mojo

The Ambrosia Tradeskill System is the first robust trade skill system mod released for BioWare's amazing Neverwinter Nights. It was inspired by Ultima OnlineTM 's great trade skill system.

Features

  • 7 fully functional trade skills including Armor crafting, Blacksmithing, Mining, Weapon crafting, Tanning, Gem cutting, and Jewel crafting. (with 13 more on the way)
  • All skills are use-based meaning the more you use them, the better you get at them.
  • A handy trade skill journal to keep track of your skill progress.
  • Skill progress can be saved on characters persistently using tokens so you keep your skills
  • Player vendors can be hired to sell your crafted wares
  • Trash cans where players can throw their junk away
  • Features 12 different types of ore which can be mined and turned into ingots to be used by the other trade skills.
  • Craft over 140 different armors, 30 different weapons, and 400+ pieces of jewelry with more recipes to come!
  • Powerful crafting menus and recipe system allows you to easily create customizable recipes for craftable items! You can make your own items and recipes, and the system automatically puts them into the menu for the player to choose.
  • Future trade skills include: Alchemy, Animal Taming, Bow crafting, Cooking/Brewing, Fishing, Lumberjacking, Scribing, Tailoring, Imbuing, Carpentry, Tinkering, Hunting, and Farming.

Additions

  • Added logging ability for skill gains. This is on by default and whenever a player gains a skill point, a time stamped entry will be added to the log with the player's current skill value.
  • You can now change the level of information that is displayed in the skill gain message. Please refer to ats_config for the options.
  • Skill ranks are now in. You can change these in the ats_const_skill script.
  • You can now suppress all numeric skill information in the journal. If you do, only skill ranks are shown.
  • Added a DM Skill Wand that lets you view and edit a player's trade skill values.
  • Added a new module event script. You will need to edit your OnClientLeave event script or add "ats_client_leave" if you don't have a script for it already. Please refer to steps 21-23 of the install notes in the readme file for instructions.

Changes

  • New and improved Trade Skill Progress Journals!! These journals are now loaded with information about skills and stats with more info to come.
  • Useable items no longer get refreshed on client enter. They should only get refreshed when a player buys them now or when the character logs into a new module.
  • Changed how stores get initialized. They are now created when someone first talks to the NPC and opens the store instead of onModuleLoad.
  • Tweaked with the delays when creating new skill tokens. This may stop some people from losing skills. There still is a chance that if the server crashes and the player is in the middle of gaining a skill point, the skill will be lost if only using skill bullets as persistent data.
  • Made the success bonus attribute for Jewel crafting charisma.
  • Broke up the ats_inc_constant file into smaller include files named ats_const_skill, ats_const_common, ats_const_recipe, and ats_const_mat. Made ats_inc_constant a stub containing all these constant script includes.
  • Changed the install notes in the readme file. Steps 21-23 now explain the new event handler script OnClientLeave that needs to be changed.

Fixes

  • Offloaded the onModuleLoad init functions with DelayCommands as well as staggered the rock spawning with DelayCommands. This should fix all problems with rocks not spawning I hope. There will be a delay between the time the module loads and the time all the rocks spawn. This delay depends on how many spawn points you have in your module.
  • Fixed a bug that was causing the inventory on merchants that came from players to eventually disappear.
  • Fixed the bug where talking to the merchant didn't always open the store the first time.
  • Fixed a problem when initializing NPC crafting merchants when a player places down a merchant object with the NPC. This caused a problem with minable rocks not spawning.
  • Item names now appear in the crafting menus in the color of the most difficult material to make (not the easiest anymore).
  • Changed the graphics of some of the gems.
  • Made some optimizations to the crafting menus to speed up the display. This should fix the too many instructions error when using the jeweler's desk if you don't install the default craftable items.
  • Fixed the recipe with malachite again. Other gems should now work when cutting.
  • Fixed the tags of rough black sapphire, rough sapphire and rough amethyst. You should now be able to mine these and not get the small unidentified misc item.
  • Fixed a few names of amulets.
  • Fixed a typo in the readme about the Onyx Switch. It should be OYX not OXY. Please change this in any spawn points you have.
  • Fixed a typo in the readme with the mineable rock spawn example.

Downloads

Ambrosia Tradeskill System

References

Ambrosia Tradeskill System Forum - For posting bug reports, suggestions and general discussions of the system.

Install Notes

The Ambrosia Trade Skill system can easily be integrated into any existing module. Accompanied with this readme should be a few .ERF files. Follow the steps below carefully and your installation will be hopefully be painless.

  1. Open up your module in the toolset.

  2. Under the File menu, select Import. Then find the .ERF that begins with the name ats_main_v### where ### is the current version number. Select this file to be imported.

  3. Now save your module and reload it. All relevent files should now be installed in your module for use.

  4. Under the Edit menu, select Module Properties to bring up the properties window.

  5. Click on the Events tab along the top of the dialog window. You should now see all the module triggers.

  6. If have a script in the OnActivateItem box, then open it up to edit it. If not, skip to step 8. You must add the following line to the very top of your script:
    	#include "ats_inc_activate"
    
    Now include the following line at the very top of your main() function:
    	ATS_CheckActivatedItem(GetItemActivator(), GetItemActivated(),  
    	GetItemActivatedTarget(), GetItemActivatedTargetLocation());
  7. Now save and close the script. Skip the next step and continue on with step 9.

  8. If you did not have a script in the OnActivateItem trigger, then select the script "ats_activateitem" for that trigger.

  9. Next, look at the OnClientEnter trigger. If have a script in the OnClientEnter box, then open it up to edit it. If not, skip to step 11. You must add the following line to the very top of your script:
    	#include "ats_inc_init"
    
    Now include the following line at the very top of your main() function:
    	ATS_InitializePlayer(GetEnteringObject());
    
  10. Save and close the script. Skip the next step and continue on with step 12.

  11. If you did not have a script in the OnClientEnter trigger, then select the script "ats_client_enter" for that trigger.

  12. Look at the OnModuleLoad trigger. If have a script in the OnModuleLoad box, then open it up to edit it. If not, skip to step 14. You must add the following line to the very top of your script:
    	#include "ats_inc_init"
    
    Now include the following line at the very top of your main() function:
    	ATS_Initialize();
    
  13. Save and close the script. Skip the next step and continue on with step 15.

  14. If you did not have a script in the OnModuleLoad trigger, then select the script "ats_module_load" for that trigger.

  15. Next, look at OnAcquireItem trigger. If have a script in the OnAcquireItem box, then open it up to edit it. If not, skip to step 17. You must add the following line to the very top of your script:
    	#include "ats_inc_acquire"
    
    Now include the following line at the very top of your main() function:
    	ATS_OnAcquireItem(GetItemPossessor(GetModuleItemAcquired()), 
    	GetModuleItemAcquired(), GetModuleItemAcquiredFrom());
  16. Save and close the script. Skip the next step and continue on with step 18.

  17. If you did not have a script in the OnAcquireItem trigger, then select the script "ats_m_item_gain" for that trigger.

  18. The next thing to do one the module properties event tab is to look at OnUnAcquireItem trigger. If have a script in the OnUnAcquireItem box, then open it up to edit it. If not, skip to step 20. You must add the following line to the very top of your script:
    	#include "ats_inc_unacq"
    
    Now include the following line at the very top of your main() function:
    	ATS_OnUnAcquireItem(GetModuleItemLost(), GetModuleItemLostBy(), 
    	GetModuleItemAcquiredFrom());
    
  19. Save and close the script. Skip the next step and continue on with step 21.

  20. If you did not have a script in the OnUnAcquireItem trigger, then select the script "ats_m_item_lost" for that trigger.

  21. The last thing to do one the module properties event tab is to look at OnClientLeave trigger. If have a script in the OnClientLeave box, then open it up to edit it. If not, skip to setp 23 You must add the following line to the top of your script above any other #include statements:
     #include "ats_inc_leave"
    
    Now include the following line at the very top of your main() function:
    ATS_ClientClose(GetExitingObject());
    
  22. Save and close the script. Skip the next step and continue on with step 24.
  23. If you did not have a script in the OnClientLeave event, then select the script "ats_client_leave" for that event.
  24. You may now close the module properties dialog box by clicking OK.
  25. Optional: If you choose to install the default craftable items, import either the ats_item_default.ERF or the ats_item_pdriven.ERF now.

    The playerdriven one is the same as the default except all items are marked as stolen so they cannot be sold to most vendors. This is good for totally player-driven economies. Save and reload the module.

    Update: - For right now, you will only find ats_item_pdriven.ERF until things settle down with changes.
  26. Optional: You will find another .ERF called ats_pvendor_### that contains the latest Player Vendor code. If you wish to have player vendors in your module where players can sell their crafted items while they are offline, then simply import this .ERF into your module. Save and reload the module.
  27. Now select the Build Module command. Ignore any compile errors related to ats_ scripts and then save the module.

  28. Open up the nwnplayer.ini file with notepad. This file can be found in your NWN main directory. Add the following line to it if it's not already there:
    	SaveCharsInSaveGame=1
    
    This makes sure characters and local variables on them are saved in the save game file.

Congratulations! The system is now installed and ready to be set up for use.

Setup

Under the scripts listing, you should see the following scripts:

	ats_config
	ats_recipes_cust

You may freely edit these scripts in order to customize the system without too much fear of breaking anything. The script ats_config contains various customization options for the system. Please refer to the script itself to see what you can modify.

The script ats_recipes_cust is where you will be putting any custom recipes you want to create. There is detailed explanation on how to do this within that file.

Once you have customized the system to your liking, you can begin placing the relevent objects needed for people to interact with the tradeskill system. The first thing you should do is familarize yourself with the new custom placeables, items, merchant, and sounds.

Placeables

There are a variety of placeable object blueprints that are extremely integral to the system. If you wish to install mining, you will find nine Ore Veins listed under the Custom: Special: Custom 1 listing of placeables. These nine represent the 12 differen ore types. In order to see which is which, you have to open up the properties of each. The nine ore types are as follows:

  • COPPER
  • BRONZE
  • IRON
  • SILVER
  • GOLD
  • SHADOW IRON
  • RUBICITE
  • SYENITE
  • VERDICITE
  • MITHRAL
  • ADAMANTINE
  • MYRKANDITE

Each has an increasing difficulty both to mine and smelt into ingots.

Place these ore veins in your world as you see fit. Some advice would be to place the most difficult ones like rubicite, syenite, and verdicite in extremely hard to get to places that are also dangerous. Mithral, Adamantine, and Myrkandite are even more rare.

The next important placeable is the ATS Forge. It can be found under the custom listing of Trades & Academic & Farms. The forge is responsible for turning ore into useable ingots. You can also salvage crafted items back int ingots with the forge. Place the forge anywhere you want preferably in blacksmith shops.

After placing the forge down, you must add the following as well: In the sounds listing, under custom sounds, find the Special: Listing 1 sounds. You should see the sounds for Large Flame, Medium Flame, Small Flame, and Smithy Bellows. Place each of the flame sounds on the center of the forge that you just placed down. The sounds should all be close to the same location and should be where the opening of the forge is. Next, place the smithing bellows on top of the bellows of the forge which is a little off of the center of the forge.

The forge is now ready to be used by players!

Another important placeable is the ATS Anvil. This is responsible for allowing Armorcrafting and Weaponcrafting to work. You should place this near where you placed the forge to make it easier for players.

You will also find an ATS Water Basin and ATS Smoker Oven. The water basin is used for tanning but will also be used for blacksmithing in the future. The smoker oven is also used for tanning. Place both of these near the Tanner NPC for easy access.

Items

In order for players to begin mining or blacksmithing, they must have the proper tools equipped. The tools such as a pickaxe and smithing hammer can be found in the custom items listing under Special: Custom 2. They are also available for purchase through the NPC blacksmith that is accompanied with this system. Players can also make better quality versions of these tools themselves.

Under custom items, Special: Custom 1, you will also find all raw and produced materials needed for tradeskills.

Under custom items, Misc: Books, you will find a Tradeskill Progress Journal. This journal is automatically given to all players who log in. They will be able to track the progress of their trade skills with this journal by just using it. You will also see a few other books. The Apprentice's Guide to Blacksmithing is given to players who train with the NPC blacksmith. This book contains detailed instructions on how blacksmithing works and how to use the equipment. You can refer to it yourself to read more about blacksmithing. The other books are recipe books which you can place around the world or on NPCs for sale. The default NPC blacksmith included should have a few of these books for sale already.

You should see a whole bunch of new armors and weapons with the prefix Crafted or Exceptionally Crafted. These are all player-made items. Exceptionally crafted items usually have an extra trait (usually they just weigh less) and sell for a little bit more as a result. You can freely modify or delete these items without any other modifications to the system.

Merchants

Included in this system, is an Master Blacksmith Merchant blueprint. It only contains items needed for blacksmithing and mining. You should modify this blueprint to add other items you wish to sell. Also, you will find the NPC Blacksmith blueprint as well that should be used along with this store. The NPC Master Blacksmith has an attached conversation file that lets the player train in the basics of blacksmithing for gold. Place these both anywhere you see fit. It's best to place these near the forge and anvil so players can easily sell and buy items needed to craft.

You will also find a Master Tanner NPC and shop. You need to place both of these if you want Tanning in your game.

You do not need to place the store objects with the NPCs. They will automatically be created on module load up.

Player Vendors

You will find a Player Vendor NPC under Creatures-> Custom-> Special-> Custom 1. You can place this player vendor anywhere and when a player hires him, anotherwill spawn in that spot after a set time that is configurable in the ats_config_pv script. Player vendors are used to sell items to other players while the player is offline.

Animals

You will also find custom animals which are used for tanning. You can place these around your world using any spawning system. I recommend the NWN Spawn System.

Only these animals are recognized by the system to be skinnable because thereare custom scripts attached to these animals. I did not want to create a genericway to skin any animal yet because of possible conflicts with other systems such as HCR. By using only these animals, I can eliminate these conflicts.

Sounds

The custom sounds are the ones that you should have placed with the forge. Read the Placeables section above if you missed it to find out about the custom sounds.




This site best viewed in Internet Explorer.
 
©2002, Stratics. All rights reserved.
Maintained by: Neverwinter Nights Stratics Staff
Last modified: June 22 2002