- Ultima Odyssey (August 7, 2020 release): https://www.servuo.com/threads/ultima-odyssey.12735/
If you don't yet have Ultima Odyssey, you can download it from here: https://www.servuo.com/threads/ultima-odyssey.12735/
The current release of Ultima Odyssey Extensions is compatible with the August 7, 2020 release of Odyssey.
The extensions are designed to be drop-in replacements and additions to the Scripts folder of Ultima Odyssey. Newer versions of Odyssey may or may not be compatible with these extensions, though I'll do my best to keep them updated as new releases of Odyssey are made.
All extensions except for XMLSpawner2 are written by me, Gadget2013.
XMLSpawner2 is written by ArteGordon, as a modification of the original XmlSpawner written by bobsmart.
Most of my extensions are very simple code alterations or additions, but the PlayerVendor system is an advanced original system in its own right. You are free and welcome to use the Virtual Player Vendor in your projects should you find any use for it, as long as you credit me as its original author (note: a standard RunUO and ServUO-compatible version, designed for OSI-like and custom shards other than Odyssey, both AoS+ and pre-AoS, is coming [relatively] soon).
To install an extension, copy the contents of the folder of the extension of your choice inside the Data/Scripts directory of the Ultima Odyssey server. Overwrite the files when and if necessary. You are advised to make a full backup of the Scripts folder of the server in case something goes wrong or if you don't like the change.
1. Colored Bandages - this extension makes the bandages retain the color of the cloth they were made from. This makes them more varied, but it also has the side effect of not making bandages of different color stack, which is why originally this was considered undesirable in Ultima Odyssey and all the bandages end up being white. If you prefer your bandages to retain the color of the cloth despite the added complexity of micromanagement of bandages of different color, this extension may be for you.
2. Compatible XML Spawner - a version of XMLSpawner2 v3.24 by ArteGordon that is drop-in compatible with Odyssey. Several additional scripts are included (in the "Wands" subfolder) that are necessary for the spawner to compile. XMLSpawner2 is written by ArteGordon, based on a project by bobsmart. I take no credit for any of the code contained in this extension, I only bundled it in an easy-to-use compatible drop-in form for Odyssey.
3. Henchman Emotes - this extension gives henchmen a little chance to use any of the 42 emotes at random in combat, to add a little diversity to their behavior.
4. Virtual Player Vendor - this is an advanced, configurable Player Vendor extension that modifies the behavior of the in-house vendor that you can purchase in the form of an employment contract and deploy at your house. Normally, these player vendors are not very useful in a low-population game where only a few players are playing, and are useless in a solo game because no one would purchase anything from them. This extension makes player vendors useful in all contexts by providing them with the functionality to try to sell the items at randomly chosen intervals to "virtual" adventurers. You can place your items on the player vendor and assign a price that you believe would be fair to the item (and optionally give it a description for flavor), and the vendor will try to sell those items to generated bot adventurers which will consider the item and determine whether they "believe" the price is fair for them. The system for determining the maximum price for any given price is rather complex and accounts for the item type, its base price at the NPC vendor, its attributes and their intensities, etc. Some random fluctuation is also factored in. Figuring out the fair price for any given item is a part of the fun, since you never know the maximum possible price the item would sell for exactly, and since the sales happen at randomized intervals and not every item is guaranteed to be considered at each sale, you can never be sure if the item doesn't sell because it's overpriced or simply because it hasn't found its buyer yet. To configure the player vendor and rebalance its pricing, check out the toggles beginning at line 303 of the PlayerVendor.cs source file. Note that using a player vendor in your game may potentially unbalance the game when it comes to money income and may make certain other forms of earning money less viable or preferable, such as e.g. merchant crates. For that purpose, you may want to review and tweak the pricing balance options in the source file to your liking should you choose to use the virtual player vendor system. Note that the player vendor will respond to some spoken lines (greetings, job, goodbye, etc. - check the code starting at line 1462 if you're interested), and will also be able to report on the sales that happened recently - if you say "<vendor name> report" (or just "vendor report"), the five last sales will be reported. The vendor remembers up to 50 last sales and can report on as many (or as few) as needed if you follow the word "report" with a number. For example, "<vendor name> report 10" will make the vendor report on the last 10 sales, and "<vendor name> report 1" will report the last sale only. You can be a little creative with the phrasing and say, for example, "Calder, please report on the last 15 sales" (provided that the vendor's name is Calder). Also, the virtual player vendors will advertise the player's items using short lines from time to time - they will use the player's item descriptions if those were provided, otherwise they'll use the standard item names. There is no functional aspect to these advertisements, they are done only for fun. The virtual player vendor system is configured to take a small fee for the services of player vendors - it's not much, but it's there so that the services are not completely free. You can increase the service fee if you feel the necessity to put more pressure on the player to find and auction off only truly good items at a fair price.
Hope you find these minor (and not so minor) modifications enjoyable! Have fun!