XmlSpawner2v3.24RunUO 2.0updated 2/11/08
ArteGordon
Latest News:If you get an error like this on startup
Cannot implicitly convert type 'System.Collections.ArrayList' to 'System.Collections.Generic.List<Server.Tile>'it means that you are running RunUO 2.0 RC1 instead of RC2 or the most recent SVN and you just need to uncomment this line at the beginning of xmlspawner2.cs
//#define RUNUO2RC1
so that it looks like
#define RUNUO2RC1
You will also need to comment out this line at the beginning of XmlQuestHolder.cs and PacketHandlerOverrides.cs because RC1 doesnt support UO clients beyond 6.0.1.7
#define CLIENT6017
so that it looks like
//#define CLIENT6017Summary:A spawn control system supporting sophisticated conditional spawn triggering, individual customization of spawns and their drops, spawn/item/mob search utilities, offline visual spawn editing, and systems for stealable rares, doom rares, interactive npcs, functional attachments, mob factions, pvp points/duels/games, custom special attacks, socketed items/creatures, and quests.
Recent Updates:New to version 3.24updated 2/11/08
Bug Fixes- fixed a problem with xmldialogs no longer responding to keywords that was introduced in v3.23. (thanks to spookyroberts for pointing that out).
- fixed an exploit with playermade quests that allowed players to add to stackable rewards such as gold, and then use the quests as bags of sending. Players can no longer add to stackable rewards. (thanks to syznow for pointing this out)
Modified Features- modified the #WAYPOINT keyword to use the z coord as well as the x,y coord of waypoint runes when trying to place spawns. Previously, only the x and y coord of the rune were used. (thanks to noonehome for the suggestion)
New Features- added the new 'BSOUND,soundid' keyword that will broadcast a sound to all players. This is essentially BCAST for sounds. This is a standalone keyword. (thanks to BaronVallyr for the idea).
New to version 3.23updated 2/2/08
If you are using SVN 241 or higher you will need to update to this version.Bug Fixes- fixed a problem with the GETONNEARBY keyword when used in condition tests with XmlDialogs. It was not using the location of the object that the XmlDialog was attached to as the reference location for the nearby search (thanks to Xerocrates for pointing this out).
- blocked the ability to use questholder rewards (by double clicking them while viewing them) before the quest is completed. (thanks to ABTOP for pointing this out).
- fixed a bug in which an attachment with a custom OnUse or OnUser function that deletes the item it is attached could cause the default Use function to crash with a null item error. (thanks to CEO for pointing this out).
- fixed a problem with orphaned attachments that try to remove items that they might be holding when they get cleaned up. This could generate warnings during world saves regarding attempts to delete items by attachments. (thanks to Vladimir for pointing this out)
Modified Features- optimized the #WAYPOINT keyword for speed. Rather than searching all world items for named waypoints, it now uses a local hashtable lookup. This can significantly improve spawning performance when this keyword is used, particularly for servers with large item counts. The table will be reconstructed on server restarts or when spawners are manually reset. Note that if you use the #WAYPOINT keyword and add new waypoint runes, make sure that you reset the spawner so that they are recognized. (thanks to Xavier_WER for the suggestion).
- newly duped spawners are now automatically shut off before being placed in a pack. (thanks to Haazen for the suggestion).
- added support for accesslevel restrictions on constructable objects that was added in SVN 241. To enable this feature uncomment this line at the beginning of xmlspawner2.cs
//#define RESTRICTCONSTRUCTABLE
and then you can restrict spawning of objects that have an accesslevel restriction in their Constructable attribute by adjusting the value of this variable around line 92 of xmlspawner2.cs
public static AccessLevel ConstructableAccessLevel = AccessLevel.GameMaster; // only allow spawning of objects that have Constructable access restrictions at this level or lower. Must define RESTRICTCONSTRUCTABLE to enable this.
If you dont enable this feature, then things will work just as they have in the past, with no restrictions on spawning of objects that are marked Constructable.
- added the MaxTargetRange property to XmlUse attachments that allows you to specify the max allowed distance between the player and the target when using the targeting ability of XmlUse attachments. Default is 30 tiles.(thanks to Steelcap for the suggestion).
- added the ResetRange property to XmlDialogs that allows dialogs to automatically reset whenever the triggering player moves out of range. This means that when you have multiple players waiting to activate a dialog, they wont have to wait until the ResetTime for the dialog expires to trigger it again. This should improve the apparent responsiveness of dialogs. The default range is 16 tiles.
New FeaturesDescription:see xmlspawner2.txt in xmlspawner2-support.zip for details and complete changelog.
Spawning System Features:- spawn items and mobiles.
- spawn in containers.
- spawn stacked items.
- add items to spawned mobiles packs.
- spawnrange (how far they spawn) and homerange (how far they wander).
- spawn objects that require arguments to their constructors, such as runic hammers, or doors.
- set properties on any spawn without having to make script modifications.
- add items to spawned mobs backpacks without having to make script modifications.
- probabilistic spawning that can be used to implement rare mob spawns, such as a single spawn that you have to kill on average some number of times to get a rare named spawn to appear.
- time-limited spawns, such as rares that only appear for a certain amount of time.
- sequential champ-like spawning that advances by killing spawns.
- spawning in regions.
- linked spawning of multiple spawn entries using subgrouping.
- spawn on difficult surfaces such as multilevel tables/floors and water by adding a leading '*' to the spawn entry.
- control spawning location and selection with control keywords #XY, #DXY, #XFILL, #YFILL, #EDGE, #PLAYER, #WAYPOINT, #RELXY, #CONDITION, #WET, #TILES
- special keywords can be used in spawning for control or effects:
- value keywords: AMOUNTCARRIED, RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL
- control keywords: WAITUNTIL, IF, WHILE, and GOTO
- action keywords: ADD, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, BSOUND, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, MEFFECT, SOUND, GUMP, SPAWN, DESPAWN, DELETE, KILL, ANIMATE, OFFSET, BROWSER
- loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL, TAKEN, GIVEN, ITEM
- access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, GETONNEARBY, GETACCOUNTTAG, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, SETONNEARBY, SETACCOUNTTAG, PLAYERSINRANGE, TRIGSKILL, AMOUNTCARRIED
- spawner triggering by: player proximity, speech, player skill use, players carrying specific items, items or mobiles that have certain properties such as open doors or injured mobs, time of the day.
- "SmartSpawning" which allows spawners to automatically and transparently remove and restore spawns based on player proximity, reducing save times and mobile load.
Quest System Features:- make complex multiple-objective quests ingame without any scripting.
- players can have multiple quests running at the same time.
- allow playermade quests that can be constructed by players and given to other players for things such as guild events.
- supports the following quest objective types: KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED
- construct interactive npc conversations using the [xmledit command.
- control whether and how often quests can be repeated.
- quests can be assigned difficulty levels that are used to give out quest points on completion of the quest.
- players can be ranked by quest points. These shardwide rankings can be displayed using the [questranking command or saved to html for web display.
- quest rewards can be purchased using quest credits.
Support Features:- searching/sorting for spawners/items/mobiles with the "[xmlfind" utility.
- creating interactive dialog objects/mobs ingame with the "[xmledit" utility.
- rapidly adding and configuring spawners and their spawns with the "[xmladd" utility.
- track down any spawn using the "goto" button in the spawner gump
- saving and loading of spawn files with [xmlsave, and [xmlload.
- import .map and .msf format spawn files with the "[xmlimportmap" and "[xmlimportmsf" utilities.
- export and import existing standard distro spawners using the [exportspawner and [importspawners commands.
Addon Systems:The following additional optional addon systems are also available:
The
Spawn Editor 2 visual spawn editing/mapping program can be found here
Spawn Editor 2 The
XmlPoints addon can be found here
XmlPoints system The
XmlMobFactions addon can be found here
XmlMobFactions systemThe
XmlCustomAttacks addon can be found here
XmlCustomAttacks systemThe
XmlSockets addon can be found here
XmlSockets systemThe
XmlSiege addon can be found here
XmlSiege systemAdditional Links:Tryings beginners tutorial
Beginner's tutorialGator81's custom gauntlet with helpful walkthrough of setting up object-triggered spawners.
http://runuo.com/forums/showthread.php?t=50444DrussRob's Version of Eymerich's "beginners guide to quest making" (Thanks DrussRob

)
XmlQuest4Dummies.htmlDiscord's xmlspawner documentation wiki
Discord's xmlspawner wikiLordHogFred's xml posts.
Diablo 2 questsHalloween spawnsbenchmarking information on spawner memory use.
http://runuo.com/forums/showpost.php?p=448568&postcount=1078Installation: BASIC INSTALLATION:With RunUO 2.0 installed, simply unzip the contents of the package into your custom scripts directory.
The three
xmlspawner2-vxxx-[123]of3.zip files are
required.
The
xmlspawner2-support.zip file is recommended.
The
xmlspawner2-xmlextras.zip is completely optional.
It contains .xml file examples of some of the spawner capabilities as well as other spawn files. It is a good place to start learning what xmlspawner2 can do.
To run the examples, make a folder called Spawns in the main RunUO installation directory (where your server.exe is) and place the .xml files in there. Then make a folder named XmlQuestNPC in the main RunUO installation directory and place the .npc files there. Note, the zip file already places the files in the proper default locations if you just extract it into your main RunUO folder.
Test them out by using the [xmlload command on the example .xml files. Most of these will load up in Green Acres. You can also use the [xmlloadhere command to force them to load whereever you happen to be.
Note, XmlSpawner2 is fully compatible with all existing xml spawn file descriptions and can also co-exist with the standard distribution spawners and other spawners.
You can use xmlspawners and other spawners at the same time if you like.
ADVANCED INSTALLATION:There are additional installation steps that provide additional functionality to the XmlSpawner2 system. None of the additional steps are absolutely required for basic spawner functioning, but they do add additional features that will enhance the use of the system.
Feel free to go through the steps and select the ones that seem like they would be of use to you, or select none if you decide you would rather not make additional modifications.
For details on these steps, see the installation text files in xmlspawner2-vxxx-1of3.zip Files:XmlSpawner2-20-v324-1of3.zip requiredXmlSpawner2-20-v324-2of3.zip requiredXmlSpawner2-20-v324-3of3.zip requiredXmlspawner2_support.zip Recommended (Additional information on this package can be found in the next 2 post's)XmlSpawner2_xmlextras.zip Recommended (Additional information on this package can be found in the next 2 post's)