https://runuo.net/wiki/api.php?action=feedcontributions&user=WikiSysop&feedformat=atom
RunUO Wiki - User contributions [en]
2024-03-29T10:35:00Z
User contributions
MediaWiki 1.29.0
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=41
Importing Maps
2018-06-21T18:31:10Z
<p>WikiSysop: </p>
<hr />
<div>==Importing Maps==<br />
<br />
If you would like to import maps that have been saved in either the .map or .msf file formats, here are some step-by-step instructions<br><br />
<br />
1) unzip the package like Neruns<br><br />
2) find the directory containing the .map files (e.g. Data/Monsters)<br><br />
3) while ingame, type the command "[xmlimportmap Data/Monsters"<br><br />
<br />
that will instantly read all of the spawner definitions in all .map files under the Data/Monsters directory and load them as xmlspawners.<br />
<br />
For cwards .msf maps, do exactly the same thing except use the [xmlimportmsf command instead of [xmlimportmap<br />
<br />
note that you can also use SpawnEditor2 to import maps.<br />
<br />
1) open the Files menu, and select "Import .map file"</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=40
Importing Maps
2018-06-21T18:28:36Z
<p>WikiSysop: </p>
<hr />
<div>==Importing Maps==<br />
<br />
If you would like to import maps that have been saved in either the .map or .msf file formats, here are some step-by-step instructions<br><br />
<br />
1) unzip the package like Neruns<br><br />
2) find the directory containing the .map files (e.g. Data/Monsters)<br><br />
3) while ingame, type the command "[xmlimportmap Data/Monsters"<br><br />
<br />
that will instantly read all of the spawner definitions in all .map files under the Data/Monsters directory and load them as xmlspawners.<br />
<br />
For cwards .msf maps, do exactly the same thing except use the [xmlimportmsf command instead of [xmlimportmap<br />
<br />
note that you can also use SpawnEditor2 to import maps.</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=39
Importing Maps
2018-06-21T18:27:29Z
<p>WikiSysop: </p>
<hr />
<div>==Importing Maps==<br />
<br />
If you would like to import maps that have been saved in either the .map or .msf file formats, here are some step-by-step instructions<br><br />
<br />
1) unzip the package like Neruns<br><br />
2) find the directory containing the .map files (e.g. Data/Monsters)<br><br />
3) while ingame, type the command "[xmlimportmap Data/Monsters"<br><br />
<br />
that will instantly read all of the spawner definitions in all .map files under the Data/Monsters directory and load them as xmlspawners.<br />
<br />
For cwards .msf maps, do exactly the same thing except use the [xmlimportmsf command instead of [xmlimportmap</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=38
Importing Maps
2018-06-21T18:26:33Z
<p>WikiSysop: /* Importing Maps */</p>
<hr />
<div>==Importing Maps==<br />
<br />
If you would like to import maps that have been saved in either the .map or .msf file formats, here are some step-by-step instructions<br><br />
<br />
1) unzip the package like Neruns<br><br />
2) find the directory containing the .map files (e.g. Data/Monsters)<br><br />
3) while ingame, type the command "[xmlimportmap Data/Monsters"<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=37
Importing Maps
2018-06-21T18:26:01Z
<p>WikiSysop: </p>
<hr />
<div>==Importing Maps==<br />
<br />
If you would like to import maps that have been saved in either the .map or .msf file formats, here are some step-by-step instructions<br />
<br />
1) unzip the package like Neruns<br />
2) find the directory containing the .map files (e.g. Data/Monsters)<br />
3) while ingame, type the command "[xmlimportmap Data/Monsters"</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Importing_Maps&diff=36
Importing Maps
2018-06-21T18:24:22Z
<p>WikiSysop: Created page with "==Importing Maps=="</p>
<hr />
<div>==Importing Maps==</div>
WikiSysop
https://runuo.net/wiki/index.php?title=XML_Spawner&diff=35
XML Spawner
2018-06-21T18:20:55Z
<p>WikiSysop: /* XML Spawner Guide */</p>
<hr />
<div>==XML Spawner==<br />
<br />
XmlSpawner2 v3.24<br />
updated 2/11/08<br />
ArteGordon<br />
===What is XML Spawner?===<br />
<br />
XML Spawner is a spawn control system based upon Bob Smart's xmlspawner with features, items, and commands supporting sophisticated conditional spawn triggering, individual <br />
customization of spawns and their drops, and systems for stealable rares, <br />
interactive npcs, functional attachments, mob factions, pvp points, custom weapon <br />
attacks, item/creature socketing, and quests.<br />
<br />
[https://github.com/SpagMonster/XMLSpawner XML Spawner Github]<br />
<br />
===XML Spawner Guide===<br />
<br />
This Xml Guide contains organized information from all of the How-to posts from various Xml forums<br><br />
<br />
*[http://www.runuo.net/forum/forum/software-support/xml-spawner-support XML Spawner Forum]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawnwer Fan Forum]<br><br />
<br />
Important Forum Posts - Xml Spawner<br><br />
<br />
*[[XML Spawner - General]]<br><br />
*[[XML Properties]]<br><br />
*[[Load and Import Files]]<br><br />
*[[Creating Spawns]]<br><br />
*[[Creating Triggers]]<br><br />
*[[Creating XmlDialogs]]<br><br />
*[[XML Attachments]]<br><br />
*[[Defining Regions with XML]]<br><br />
*[[Importing Maps]]<br><br />
<br />
===XML Spawner Tutorial===<br />
<br />
====XML Commands====<br />
<br />
*'''xmlhome''' <target> returns the coordinates of the spawner for the targeted object. Also takes arguments:<br />
* '''go''' that teleports you to its spawner,<br />
* '''gump''' that opens its spawner gump,<br />
* '''send''' that sends the object back to the spawner location<br />
Example: .xmlhome gump <target><br />
<br />
*'''xmlshow''' This command turns spawn crystals into ships masts making them much easier to spot. One thing to remember about those masts is that even though they are hidden to players, they will still block movement, so you dont want to leave them as masts.<br />
<br />
*'''xmlhide''' hides the spawners, returning them to magic crystals from a ship's mast.<br />
<br />
*'''xmlsave''' filename will save all of the spawners on the current map to the file<br />
<br />
*'''xmlsaveall''' filename will save all spawners in the world to the file<br />
<br />
*'''xmlspawnerrespawn''' forces a respawn of all xmlspawners in the region<br />
<br />
*'''xmlspawnerrespawnall''' forces a respawn of all xmlspawners in all regions<br />
<br />
*'''xmlunload''' deletes spawners that are contained in an xml file. Basically the reverse of the load command. This provides a quick way of adding and removing specific sets of spawners that would represent a logical group, such as a mini-quest, or a dungeon, without having to use common naming prefixes, and without risking unintended spawner wipes that might occur with the use of the .xmlspawnerwipe prefix, command. Because it is the complement of the .xmlspawnerload (.xmlload) command, the effects of using it can always be reversed by simply doing an [xmlload on the same file.<br />
<br />
[http://www.runuo.net/wiki/index.php/XmlSpawner_Command_List,_description_of_all_xmlspawner_commands Complete List of all XML Spawner Commands]<br />
<br />
====Setting a new Spawn====<br />
How to Set the spawn:<br />
<br />
The first thing you need to do to create a spawn is creater the spawner bit. Type the command: .add xmlspawner (enter)<br />
<br />
This will create a "magical crystal" - Double Click the crystal to access the spawner gump, which looks like this:<br />
<br />
Spawnermain.jpg<br />
?<br />
====Name your XML Spawners====<br />
You can change the name of your spawn to whatever you wish at the top of the gump. You should try to use a name that includes what the spawn contains or a name you can remember for easy reference later. (Example: Haven-rats)<br />
<br />
To add a spawn to the bit you can add the creature name directly into the top line of the spawner gump (ex. rat or cat), or if you do not know or are unsure of the mobiles (creatures) name you can select the arrow at the right of the entry line which will bring up a menu of available items and mobiles to select (see red circle below): <br />
<br />
Spawnmenu.jpg<br />
?<br />
You can add up to 60 creatures/mobiles to one bit (though I doubt we will need to use that many on a single bit). Once you have the creatures listed that you wish to spawn, you can set the amount of each entry by clicking the Up/Down arrows to the left of that entry.<br />
<br />
The COUNT and MAX entries on the right side will update as you go. The bit is active by default so as you raise the total number of creatures they will appear around the bit. The default range (wander distance) of 5 and spawn interval of 5-10 mins. will be set on the bit unless and until you change in it the spawner props menu. (Will tell you how to change this later)<br />
<br />
Hitting the RESET button in this gump will remove all spawn in existence and turn off the bit. You can turn the spawn back on by clicking the red on/off button (changing it back to greeen) or by hitting the respawn button. The only difference here is RESPAWN will activate the bit and spawn all creatures listed for it, while turning the bit on only reactivates it and it will spawn based on the range and time intervals set rather then all at once. RightClick on the gump will close it and save the settings on the bit.<br />
<br />
You have created a basic creature spawn. ?Congrats.<br />
<br />
====Spawn Creation Shorthand====<br />
<br />
Once you have worked with the spawner and become familiar with how it works, you may wish to use the gumps less often, especially for basic spawns. THe spawner gives you this option with "constructables"<br />
<br />
For example:<br />
* .add xmlspawner creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange spawnrange creaturename.<br />
<br />
This simply matches the constructable calls available for the regular spawner through the gump itself.<br />
<br />
Container Spawning:<br />
placing a spawner in a container will allow items to be spawned in it (but not mobs). To get this to work properly you must create the spawner in one of two ways:<br />
<br />
'''EASY WAY:''' You can .addtoPack xmlspawner and target the container you wish the item to spawn inside and then edit the spawner from there.<br />
<br />
OR<br />
<br />
'''LONG WAY''' You can .add xmlspawner and target a spot on the ground. Type .set movable true, target the spawner you made, pick up and place the spawner in the container you wish the spawn to be. Then type .set movable false, target the spawner, thereby locking it in place inside the container. The spawner is not visible by players.<br />
<br />
Editing Individual creature or item spawns:<br />
XML is geared to accept commandline-like spawn specification. This basically allows you to set properties of each spawn in the spawner using a /propertyname/value/ format, Multiple properties can be specified for each spawn allowing mob/item naming, unique property setting, etc. This works well in conjunction with the item-triggering feature since you can create items with specified names that match the trigger name of another spawner.<br />
<br />
'''Creatures:'''<br />
<br />
An example of the specification would be instead of just listing an ogre to be spawned you would list an ogre/name/The Butcher/str/190/damagemax/50/hue/500, which would create a blue ogre, named "The Butcher", with 190 strength, and maximum attack damage of 50.<br />
<br />
Accessing the editing feature:<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
'''Items:'''<br />
<br />
You can also spawn items in the same way e.g. specifying a woodenchest/hue/300/movable/false would create a green locked down chest, or katana/name/Master of elements/slayer/elementalban/hue/200 would create a named light blue elemental super slayer. Note, the properties that you can set are basically the same as those that you can change with the .set command.<br />
<br />
XMLspawner also supports setting nested attributes on items such as armorattributes. To access these attributes use dot notation e.g. to change luck on a weapon use the specification string: katana/attributes.luck/50 or platehelm/armorattributes.magearmor/1/skillbonuses.skill_1_name/anatomy/skillbonuses.skill_1_value/20 to set magearmor and add +20 anatomy. These are the same property names that appear in the props list.<br />
<br />
'''Accessing the editing feature:'''<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
Gumpedit.JPG<br />
?<br />
<br />
As you can see in the red circle above, the line is inputted in a text format in the book shown in the upper right and applied to that spawners entry in the main spawner gump (lower right in image above). In this case we have created a cow named Benny (circled in purple) that is hued to 450 (beige in this case) and given hitpoints of 100. - Gotta check syntax on HITS in this case because I think I did it wrong in the example I screenshot--oops.<br />
<br />
'''Weighted Probability spawning:'''<br />
With multiple entries in an xmlspawner, if maxcount on the spawner is equal to the total of the individual mob counts (the default condition), then the spawner will behave exactly as the original xmlspawner, but by reducing maxcount you can produce a reduced number of total spawns in which an individual mobs spawning probability is based on the relative count ratio.<br />
<br />
To implement a rare single mob spawn simply add multiple mobs to a single spawner in the ratio that you want them to spawn with, and then set the maxcount to 1. This will result in a single spawn that will produce any one of the multiple mobs with the probability of getting each determined by the count.For example:<br />
7. add a balron, count = 1<br />
8. add a gargoyle, count = 10<br />
9. go to the xmlspawner props and set maxcount to 1<br />
10. do a respawn and you are done.<br />
<br />
<br />
This will result in a single spawn that will produce a balron roughly 10% of the time (actually 1 out of 11) and gargoyles the rest of the time.<br />
<br />
I use this to put named spawns in as the rare with comparable basic spawns as the common, e.g. a named lich, that spawns rarely instead of a regular lich. Of course, you can also specify these parameters in your xml spawner files: Example (from XML file):<br />
<br />
<MaxCount>1</MaxCount><br />
<br />
<Objects>ratman=15:ratmanarcher=15:barracoon=1</Objects><br />
<br />
This will give you a spawn that will produce a single ratman or ratman archer with equal probability about 48% of the time each and a named mob about 3% of the time (1 out of 31 times)<br />
<br />
'''Understanding Spawner Props:'''<br />
Now that we know how to make a spawn, it is time to look at how to customize it. XmlSpawner allows for a wide array of customizations, from spawn intervals to player approach and speech triggers. To make adjustments to a spawner, you need to access the PROPS gump.<br />
<br />
From the main spawner menu (DCLICK the spawner). Click the props button at the bottom right of the main menu (see image above). This will open the props gump (pictured below). It is important to understand that these settings are for the spawner NOT for the individual creatures on the spawn bit. Those can be edited more specifically (we will get into these later). The spawner props gump looks like this:<br />
<br />
Propsgump.jpg<br />
?<br />
<br />
'''Important Spawner PROPS'''<br />
In this section we will discuss the various prop settings in more detail. As we learn their uses this section will expand, so if a setting is missing at this point, I am not sure how to set or use it, or I have no idea what it does yet.<br />
<br />
I have found some prop settings to be more helpful then others. Some that I think are really helpful and used more often are listed first:<br />
<br />
'''MaxDelay'''<br />
This sets the maximum time before the spawn triggers again until the MAX COUNT setting is reached for that creature in the spawn list. It only triggers ONE mob/item at a time for the range. So if you max count is 10 and your max and min delay are both 1 minute, and the entire spawn is wiped out, it would take 10 mins to completely respawn.<br />
<br />
'''MinDelay'''<br />
This sets the Minimum time the spawner will wait before triggering the next creature on the spawn.<br />
<br />
'''ShowBounds'''<br />
The default setting for this is FALSE, but when set to TRUE it gives you a white box that shows you the spawn range box that is current set on the spawner. This is the area in which the spawners will appear. They may or may not be set to stay in that box once spawned (see HomeRange). Turning this on is very helpful when working with a spawner. It can be turned on or off as needed.<br />
<br />
'''NoTriggerOnCarried'''<br />
This property blocks spawner triggering when the player is carrying the named item. This can be used to prevent a quest spawns (e.g. starting quest gump) from being triggered if a quest item (e.g. starting quest token) was already in the players possession.<br />
<br />
'''TriggerOnCarried'''<br />
This property has the opposite effect on the spawner. When set, the spawn will only fire if the trigger item is present.<br />
<br />
'''X1_Y1'''<br />
This prop changes the NW or Upper left corner of your spawner range box. When you select this prop you are then given the option to use your current location for the target, use a targeting cursor to choose the location, or finally you can enter the X,Y and Z coords manually.<br />
<br />
'''X2_Y2'''<br />
This prop works exactly like above, but set the SE or lower right corner of your spawner range box.<br />
<br />
'''HomeRange'''<br />
This is how many times the spawn will wander from the bit after they spawn. Basically their "home area".<br />
<br />
'''SpawnRange'''<br />
This setting reflects how far from the bit a spawn will appear when it is first spawned. If you set the SpawnRange outside or larger then the HomeRange, the creatures that spawn otuside the HomeRange will work their way back home over time.<br />
<br />
'''Time of Day (TOD)'''<br />
Set the TODStart and TODEnd to the times of day that you would like to limit spawning to. If they are set to the same value, that enables spawning at all times. If the Start value is greater that the end value, that indicates a time window that spans midnight. Proximity triggering will also be limited to the TOD window. Spawns that remain after the TOD window has passed will be removed. Note that timing of spawning is still governed by the spawn timer (can be seen as the NextSpawn property in the spawner property list). The TOD window simply determines whether a spawn will be allowed to be created once the spawn timer has elapsed. The TOD window is also applied to proximity triggering. It determines both whether the trigger can be set (must be triggered during the TOD window), as well as whether the spawn can be created (spawn must occur during the TOD window).<br />
<br />
'''TODMode'''<br />
The TODMode property that allows Time of Day (TOD)-dependent spawning to be in either Gametime or Realtime.<br />
<br />
'''PlayerTriggerProp'''<br />
By specifying a property test string in PlayerTriggerProp, you can trigger based upon the value of a property on a player within the proximity range of the spawner. For example setting PlayerTriggerProp to hits<50, would cause the spawner to trigger whenever a player within range fell below 50 health.<br />
<br />
Other properties could be used to trigger when a player got hungry (hunger<5), or tired (stam<30), or was a criminal (criminal=true), or was fighting (combatant!(-null-)). Any property that is visible with the [props command, can be tested and the value to test against will be the value that appears there (or with the [get propname command)<br />
<br />
'''MobTriggerName'''<br />
Mob property triggered spawning is identical to player property triggering except that you specify a mob name in the MobTriggerName field, and then set the property test in MobTriggerProp. This will trigger whenever a player comes within proximity range of the spawner and the uniquely named mob is found and satisfies the property test specified in MobTriggerProp. Note that this mob can be anywhere in the world, it is the player that sets off the trigger and therefore has to be in range. These can be combined with any of the other triggering options so that, for example, a player holding a named quest item, could trigger a spawn based upon his fame or karma, (with different fame levels triggering different spawns), depending on the health of a named mob that he was doing combat with.<br />
<br />
'''ProximityRange'''<br />
When the proximityrange property is set to a value zero or greater, the spawner will become activated whenever a player comes within that range, and will be deactivated when a player leaves the range. Once the spawner has been triggered, it will run until the spawn timer elapses, even if the player that activated it leaves the proximity range, after spawning it will be shut off and will remain inactive until the next proximity triggered activation.<br />
<br />
Note that when used in combination with the X1Y1 X2Y2 specification for spawning area, you can use this feature to sense players in one location and spawn mobs in another. You can also combine this with the duration parameter to have player triggered, but limited duration spawns, so that they will reset even if the player that triggered it doesnt kill the spawned mob - basically a one-shot spawner. Counselors and above will not trigger the sensor.<br />
<br />
'''ProximityMsg'''<br />
Allows setting a proximity trigger message that is displayed over the player when the spawner is triggered. Example: "You have the strange feeling that you are being watched."<br />
<br />
'''ProximitySound'''<br />
This allows you to set the sound played when a proximity triggered spawner is tripped by a player (a click and sparkle sound by default). If you are using the most recent version of inside UO to get the sounds, you need to subtract 1 from the number for it to play the proper sound.<br />
<br />
'''SpeechTrigger'''<br />
This property allows for speech triggering of spawns. Set the property SpeechTrigger with the string you want to trigger on.<br />
<br />
This can be combined with the other proximity features for example, to allow spawns that are triggered when a player is within range, has an item, and, for instance sets a switch, or places gold in a container, and then says the key phrase.<br />
<br />
Could also use it for implementing something like a guard zone in which calling out for guards would spawn for a specified duration. Or by combining it with the refractory option you could allow it to generate items on demand but only so frequently (e.g. guards, regs, drinks, etc. only once an hour, or once a day) or even only during certain times of the day.<br />
<br />
'''TriggerOnCarried'''<br />
Item-dependent triggering This is used in conjunction with proximity sensing. When a player with a specific named item in his pack comes within proximity range of the spawner, the spawn will be triggered.<br />
<br />
TriggerOnCarried is used to specify the name of the trigger item. If it is set to null then items are not checked and it behaves like a normal proximity-triggered spawner. To prevent excessive pack searching, the item test is only conducted once upon crossing the proximity threshold, and the item must be in the top level of the backpack - no nested searching. Proximity sensing does not work inside containers.<br />
<br />
The refractory settings can be used to limit the way in which the trigger is activated. By setting a short delaymin/delaymax you can have a spawn that appears almost immediately after triggering, but to prevent the spawner from being triggered right after that, setting the refractory period to something like 5 minutes will keep the proximity triggering from being activated for that period.<br />
<br />
'''TriggerObject'''<br />
'''TriggerOnProperty'''<br />
<br />
This allows for the ability to make player-proximity triggered spawning also dependent upon a property of any targetable item. This allows spawn chaining by making one spawner dependent on the state of another spawner. It also allows spawners to be made dependent upon things such as switches, doors, number of items, weight, or amount of gold in containers, etc.<br />
<br />
To use this feature, select the TriggerObject property in the props list, then target the object to trigger off of. Then set the TriggerObjectProperty field with the property and the value to test for.<br />
<br />
For Example: maxgold=20, or killcount>10, or open=true. Where maxgold, killcount, and open are property names on the objects. Supports <, >, and = operators for testing the values. Supports, int, bool, string, and double value types.<br />
<br />
'''TriggerProbability'''<br />
This has the value of 1 by default which means the spawn will be triggered whenever the triggering conditions are met. Setting TriggerProbability to a value between 0 and 1 will reduce the chance that a spawn will be triggered even when the other triggering conditions are met. So, for example, having a spawn that is triggered by opening a door only 1 out of 10 times, or a rare that only spawns occasionally at a certain time of day.<br />
<br />
'''Duration'''<br />
The duration parameter enables spawns of limited duration. By default, spawners have a duration of zero, which means infinite duration (the standard case). The duration timer begins immediately after a spawn, and when the timer expires, all spawns on the spawner will be removed until the next respawn. Respawning will occur according to the min and max delay as usual. I like to use this to make rare spawns such as the common or doom rares, harder to get. Since on servers with a smaller player base there is not the competition to get rares, this feature can make them as infrequent as they would be on a more populated server, like only available for one second every 24 hours or more.<br />
<br />
Note: when saving spawns to an xml file the duration parameter will be saved as seconds, not minutes.<br />
<br />
'''DurationOver'''<br />
As far as I can figure out, this doesnt do anything, it simply tells you when the duration amount above is about to happen. A count down field, so it were.<br />
<br />
'''Other PROP settings:'''<br />
AllowGhostTrig This prop can either be set to true or false. A true setting will allow ghost characters to trigger the spawner, while a false setting will set the spawner to only be triggered by living characters. Pretty self explainatory.<br />
<br />
CurrentCount This is the number of creatures set to spawn from this bit. It reflects the cumulative total of all the spawns in the list added together. I can't think of a reason you would need to make adjustments to this.<br />
<br />
ExternalTriggering This allows other objects to actively control the spawner. This feature is enabled by setting the ExternalTriggering property to true, then the spawner will add the state of the ExtTrigState property to its list of triggering conditions. This can be used in conjunction with any of the other triggering features, so that you could have a spawner that was dependent upon proximity triggering and activation of an object (like one of the levers or switches included) that would set the ExtTrigState. For example, to place a spawner under the control of a lever add a simplelever, set the TargetProperty prop of the lever to /exttrigstate/true, and the target1property to /exttrigstate/false. Then enable ExternalTriggering on the spawner. Switching the lever will then turn the spawner on and off. By enabling speech triggering as well, the spawner will only speech trigger when the lever is also in the correct position.<br />
<br />
====XML Quests====<br />
<br />
'''Quest Objectives:'''<br />
The XMLspawner quests system supports the following objective types:<br />
<br />
KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED<br />
<br />
Some examples are:<br />
* KILL,mobtype,count,<br />
* KILLNAMED,mobname,count,<br />
* COLLECT,itemtype,count,<br />
* COLLECTNAMED,itemname,count.<br />
<br />
The quest items can now keep track of kills and collected items in their quest status, and quest tasks that require multiple mobs to be killed can be specified. To use this feature, spawn or create an XmlQuestToken class item such as the QuestNote, and set one or more of the Objective properties with the keywords.<br />
<br />
For example to make a killtask type quest in which the player must kill 5 balrons, 5 lichlords, a named mob called "Bubba", and collect 20 diamonds, you could;Set the<br />
* Objective1 property to "KILL,balron,5",<br />
* Objective2 property to "KILL,lichlord,5",<br />
* Objective3 property to "KILLNAMED,Bubba,1",<br />
* Objective4 property to "COLLECT,diamond,20<br />
A spawner can be then be set up to provide a reward when the objectives on the questnote are completed.<br />
<br />
'''Spawning Conditions and Keywords:'''<br />
Special keywords can be used in spawning for control or effects. These will be explained in more detail below, but the keywords are listed below:<br />
<br />
value keywords: RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL<br />
<br />
control keywords: WAITUNTIL, IF, WHILE, and GOTO<br />
<br />
action keywords: ADD, ANIMATE, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, SOUND, GUMP, DESPAWN, DELETE, UNEQUIP<br />
<br />
loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL<br />
<br />
access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, PLAYERSINRANGE, TRIGSKILL<br />
<br />
Access Keywords:<br />
SETONCARRIED<br />
<br />
This allows you to set properties on a named item carried by the triggering player. The syntax is SETONCARRIED,itemname/prop/value/prop2/value... This can be used in conjunction with the TriggerOnCarried property and the XmlQuestToken items to detect and set quest objectives on quest token items.<br />
<br />
With TriggerOnCarried, and NoTriggerOnCarried if the item is an XmlQuestToken item, then the status of objectives can also be specified as a requirement using the syntax "itemname,objective,objective,.." in the TriggerOnCarried or NoTriggerOnCarried string.<br />
<br />
For example if you wish to trigger a spawner only when quest item "Blathers Quest" is carried and has objective 1 completed, then use the string "Blathers Quest,1" in the TriggerOnCarried property. If you would like to prevent triggering when objective 1 of that quest has already been completed then use the same string in the NoTriggerOnCarried property.<br />
<br />
GETONPARENT and GETONTHIS<br />
<br />
These are the GET counterparts to the SETONPARENT and SETONTHIS keywords. For attachments, the GETONPARENT keyword allows access to properties on the object that it is attached to. This is generally useful when trying to include properties in substitution strings, such as an XmlDialog where you could have a text string like this<br />
<br />
Hello, my name is {GETONPARENT,name}<br />
<br />
'''Value Keywords'''<br />
<br />
MOB:<br />
<br />
MOB keyword that can be used as a property value when setting properties that need a mobile id. e.g. the combatant property on a mobile. The mobile id of the named mob will be substituted for the MOB entry. The syntax is /MOB,name/ so for example to spawn a mob and have it attack another mob you could specify something like "ogre/combatant/MOB,The outcast", where a mob named "The outcast" had already been spawned somewhere. The two requirements for using this keyword are that the mob must exist and the mob name must be unique.<br />
<br />
RND:<br />
<br />
RND allows you to generate random values when specifying properties RND can be used anywhere that an integer value is normally specified. The syntax for RND is /RND,min,max/ For example ogre/hue/RND,1,500/ADD,0.1/<katana/hue/500/attributes.luck/RND,50,100> would spawn a randomly colored ogre with a 10% chance of dropping a blue katana with random luck values between 50 and 100.<br />
<br />
To spawn a random range of statics from Inside UO, you need to be tricky. You need to ADD,.1/<static,4036/ItemID/RND,4036,4044> This will add a set of shells, static 4036 to a mob/chest, and then you set the ItemID with the RND option to vary the graphic between range 4036 and 4044 which are all shells.<br />
<br />
SKILL:<br />
<br />
The SKILL,skillname keyword can be used both for setting skill values, as well as testing for them. The SKILL keyword can be placed anywhere that a valid property name could be used. For example to spawn a mob with certain skills use a spawn spec like ogre/SKILL,anatomy/100/SKILL,macing/100.<br />
<br />
To set skills on players that triggered the spawner use a spec like SETONTRIGMOB/SKILL,meditation/120/SKILL,magery/120. This can be used to create skill-gate like behavior.<br />
<br />
To test for a skill value for triggering for example, set PlayerTrigProp to SKILL,mining>100.<br />
<br />
TRIGMOB:<br />
<br />
The TRIGMOB keyword, which will substitute the mob who triggered the spawner as its value. Can be used to set any property that takes a mobile as its argument. So, for example, you could use it to spawn a mob that had the player who triggered it as the combatant, "ogre/combatant/TRIGMOB", or spawn pets that are controlled by the triggering player, for example ogre/name/Slave/controled/true/controlmaster/TRIGMOB<br />
<br />
'''Action Keywords:'''<br />
<br />
ADD:<br />
<br />
ADD keyword allows you to add items to spawning mobs packs. The syntax for ADD is /ADD/itemtype, or /ADD,probability/itemtype, or /ADD,probability/<itemtype/prop1/value/prop2/value...> where probability is a drop probability between 0 and 1 and <itemspec> is an embedded item specification, so that you can put attributes on the added item as well. An example of this would be the specification string ogre/name/Lord Bleck/ADD,0.3/katana that would spawn an ogre named Lord Bleck with a 30% probability of dropping a katana.<br />
<br />
As a further example, this can be combined with the note object for simple quest-like behavior using specification strings such as lich/name/Dark Master/ADD/<simplenote/notestring/My soul will not rest until you return with the Ring of the Elements found on my nemesis, the lich lord Artemis in the dungeons of Ilshenar. Take my sword to aid you./titlestring/The Return of Artemis/name/Quest of Artemis/size/2>/ADD/<longsword/maxdamage/RND,30,70> which will add the specified note and sword to a lich named Dark Master.<br />
<br />
ANIMATE:<br />
<br />
The ANIMATE,action[,framecount][,repeatcount][,forward true/false][,repeat true/false][delay] keyword to add animations to any mobile. For example,<br />
<br />
SETONTRIGMOB/ANIMATE,32,5,1,true,false,0<br />
<br />
would cause the triggering player to bow.<br />
<br />
Or used in the Action field on an XmlDialog it could be used to make an npc bow, like:<br />
<br />
SETONTHIS/ANIMATE,32,5,1,true,false,0<br />
<br />
CAST:<br />
<br />
The CAST keyword allows the spawner to cast spells on triggering players. The syntax is CAST,spellname[,arg] or CAST,spellnumber[,arg] where spellname and spellnumber are the registered spell names and numbers found in Scripts/Spells/Initializer.cs. This is used with triggering to allow the triggering mob/player to cause the spell to be cast with the triggering mob/player as the target. Both harmful and beneficial spells can be cast. Karma effects will also be applied. There are no casting delays, so multiple spells may be cast simultaneously. Some spells are are location targeted and can take an additional argument [,arg] which is a range value used to determine a random target location (+-range) relative to the caster. The default and mininum range value is 1. The Polymorph spell uses the 2nd argument as the bodyvalue.<br />
<br />
For example, to set up a spawner to autoheal the triggering mob use the spawn spec CAST,greaterhealspell. To polymorph the triggering player into a bear use CAST,polymorphspell,212. To cast lightning on the triggering player CAST,lightningspell Not all spells will work automatically. Item targeted spells such as mark, recall, and sacredjourney will cast and bring up a targeting cursor.<br />
<br />
NOTE: I will have to figure out if this can work with or be applied to our custom magic system. I dont see why not, but this has not yet been tested.<br />
<br />
DELETE:<br />
<br />
The DELETE keyword can be used to modify a standalone keyword and delete the object that it refers to (it will not allow you to delete players) For example, this spawn entry:<br />
<br />
SET,Mystic Sword,longsword/DELETE<br />
<br />
will delete the longsword named "Mystic Sword"<br />
<br />
SETONMOB,SeeYouLater,Balron/DELETE<br />
<br />
will delete the balron named "SeeYouLater"<br />
<br />
SETONCARRIED,,Gold/DELETE<br />
<br />
will delete gold that it finds being carried by the triggering mob<br />
<br />
SETONSPAWN,TargetSpawner,2/DELETE<br />
<br />
will delete all of the spawns of subgroup 2 on the spawner named TargetSpawner. This is basically the same as using the DESPAWN keyword but will delete all spawns regardless of their CLR flag setting.<br />
<br />
GUMP<br />
<br />
The GUMP keyword that will send a gump containing the designated text to the triggering player. Syntax is GUMP,title,number/text. A default set of gumps has been added, but these can be extended by the user. A sample script XmlQuestGumps.cs has been included showing the form of the default quest gumps. It is required to use the default GUMP features.<br />
<br />
GUMP number 0 is a simple text display gump. GumpState is set to "done" after viewing.<br />
GUMP number 1 displays a gump with yes/no selections. GumpState is set to either "yes" or "no" depending on the user selection.<br />
GUMP number 2 displays a gump with a text entry area. GumpState is set to the text entered.<br />
GUMP number 3 will send a quest gump with accept or decline options. GumpState is set to either "accept" or "decline" depending on the user input.<br />
<br />
UNEQUIP:<br />
<br />
The UNEQUIP,layer[,delete] keyword allows you strip a mobile of an equipped item on the specified layer. If the optional "delete" argument is specified, then the removed item will be destroyed, otherwise it will simply be dropped into the the mobiles pack. For example, you could disarm a one-handed weapon from a triggering player using:<br />
<br />
SETONTRIGMOB/UNEQUIP,OneHanded or spawn a mobile, remove existing equipment, and replace it with new equipment with something like:<br />
<br />
banker/UNEQUIP,pants/UNEQUIP,shoes,delete/EQUIP/sandals/SAY/Hey, where are my pants? This will create a banker, take off his pants and put them in his pack, take off his shoes and delete them, and then put on a pair of sandals in their place.<br />
<br />
MSG:<br />
<br />
The MSG keyword for the spawn specification strings that can be used to display messages over mobs or items when they are spawned. The syntax is /MSG/text/, with an optional probability factor specified using /MSG,probability/text/. So, for example, to spawn a lich that occasionally taunted you, you could use the spec string "lich/MSG,.5/All hope is lost/MSG,0.2/you feeble mortal/MSG/hahahahaa" to give you random combinations of messages such as "All hope is lost hahahahaa", or "feeble mortal hahahaha", or just "hahahahaa".<br />
<br />
Or the string "ham/MSG/a tasty morsel" would place the message "a tasty morsel" above the ham when it was spawned.<br />
<br />
Note, that because the switch/lever objects also use the same syntax for specifying properties on target items, you can use this keyword in conjunction with those items. So, for example, you could have a lever that opened a door, and also displayed a message over the door indicating it had opened using the string "/locked/false/MSG/the door magically opens" in the target item property description.<br />
<br />
GIVE:<br />
<br />
The GIVE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is the same as the ADD keyword, but the item is placed directly into the pack of the player that triggered the spawner,<br />
<br />
GIVE/itemtype<br />
GIVE,probability/itemtype<br />
GIVE,probability/<itemtype/prop1/value/prop2/value...><br />
<br />
TAKE:<br />
<br />
The TAKE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is TAKE/itemname or TAKE,probability/itemname. It will search the trigger players pack, and all containers in the pack for the first item that matches the name, and then delete it. It will not remove containers.<br />
<br />
By combining the GIVE and TAKE keywords, you can have a spawner that takes one item and replaces it with another, for example a quest item can be replaced with a quest reward.<br />
<br />
The TAKE keyword also allows for a partial removal of named stacked items. When called with the quantity argument, TAKE will attempt to remove the specified quantity of the stacked item. If less than the quantity is found, then whatever the amount found will be taken. If the item is not stackable, then the item will simply be taken.<br />
<br />
TAKEBYTYPE<br />
<br />
The syntax for this is TAKEBYTYPE,probability,quantity/itemtype. It is similar to the TAKE keyword but items are identified by type rather than name. For example, to take 1000 gold from a triggering player use the spawn spec TAKEBYTYPE,1,1000/gold.<br />
<br />
Note, by default neither TAKE and TAKEBYTYPE will search a players bankbox. Adding the argument "true" added to TAKEBYTYPE and TAKE keywords allows bankboxes to be included in the searched items. The syntax is TAKE,probability,quantity,true/itemname and TAKEBYTYPE,probability,quantity,true/itemtype.<br />
<br />
SET:<br />
<br />
The SET keyword which is also used as a spawn spec and is "spawned" just like a regular mob/item. It sets properties on a target item that is specified in the SetItem property of the spawner. You target an item and when the spawner is triggered, it will apply the property changes contained in the SET specification string. For example, this can be used to open a door when certain trigger requirements are met, such as saying a keyword, or possessing an item, etc. using a spec string like:<br />
<br />
SET/locked/false/MSG/the door is magically opened, and targeting a door from the SetItem property, or making a switch or lever or chest visible, when triggered with the spec line SET/visible/true.<br />
<br />
Any property that can be written using the .set command, can be linked to spawner triggering using the SET keyword. Because the SET commands are "spawned" just as other mobs are spawned, they can be used to set properties of items at specified intervals by using spawners that are not triggered but are simply run on the normal timed schedule. For instance, using the time of day feature, you could have a set of doors that are locked during the day and opened at night, or are locked and unlocked occasionally on a 5-10 minute schedule (min/max delay).<br />
<br />
Note, in order to have the target item properly saved to an xml file when using .xmlsave, the target item must have a unique name.<br />
<br />
SETONTRIGMOB:<br />
<br />
The SETONTRIGMOB keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item, it is just that nothing is created but rather target properties are set on the mob that triggered a spawner. This could be used for example to drop mana or stamina when a player comes within range of a spawner, or kills a target number of mobs, or is carrying an item, etc. Or hide the player when a keyword is spoken and they possess a specific item. (e.g. spawn spec SETONTRIGMOB/stam/0/mana/0, or SETONTRIGMOB/hidden/true)<br />
<br />
Also, by changing the x,y,z properties of the trigger player, it can be used to construct more sophisiticated teleporters, such as one that sends a player to a new location when they are carrying an item, and a target lever is in a specific position, or when a certain number of mobs are killed, or when their health reaches a certain level, etc. As well as the more straightforward type of triggering such as on a keyword.<br />
<br />
Note, this is potentially a VERY powerful ability. Use of this feature should be made with care, since it can make changes to any writable players attributes. Of course, it cant do anything more than an admin could do normally by using the .set command on a player.<br />
<br />
====XML Attachments====<br />
For a list of available attachments, type in game .availatt<br />
<br />
Local variables are stored as XmlLocalVariable attachments on the spawner and can be viewed and modified using the .getatt command and targeting the spawner.<br />
<br />
Supports the use of modifiers like global, multi, area, etc. with the .addatt and .delatt commands that add and delete attachments from objects (thanks to Vento Divino for the suggestion). So to add a particular attachment to all players you could do something like<br />
<br />
.global addatt xmldata datavalue where playermobile<br />
<br />
and to remove those attachments you could use<br />
<br />
.global delatt xmldata where playermobile<br />
<br />
Some of the stat and skill mod attachments are (will add syntax when I find it):<br />
* XmlStr<br />
* XmlDex<br />
* XmlInt<br />
* XmlSkill<br />
<br />
and the fame, karma, and virtue attachments are:<br />
* XmlAddFame<br />
* XmlAddKarma<br />
* XmlAddVirtue<br />
* XmlStamDrain<br />
* XmlManaDrain<br />
* XmlLifeDrain <br />
<br />
When attached to a mob or weapon, these will drain stam/mana/life from the defender on each hit and give it to the attacker. If attached to an item in the world, it will drain a random amount of stam/mana/life when a player moves near it. The random value will be between 0 and the argument to the attachment. The default refractory period between uses is 5 seconds. If a negative drain value is given, then the attachment will be reported as a curse when attached. For example, using the command<br />
<br />
.addatt xmllifedrain 30 3 120<br />
<br />
and targeting a mob, would give that player/mob 2 hours of lifedrain ability that would drain 0-30 hps on every hit, with a max rate of once every 3 seconds.<br />
<br />
'''XmlSaveItem'''<br />
<br />
This attachment that allows you to internalize an item and hold it on the attachment for later retrieval. This is used by xmlspawners and xmldialogs to keep track of taken items, but could be generally used to temporarily hold items. The SavedItem property can also be manually set and will internalize and maintain the targeted item on the attachment. When the attachment is deleted, the saved item is also deleted. By setting the RestoreItem property on the attachment to true, the saved item will be placed back into the world at the location of the object the attachment was attached to. If at any time the saved item is placed into the world (moved off of the internal map), XmlSaveItem will no longer keep track of it.<br />
<br />
'''.xmledit'''<br />
<br />
This utility is for editing XmlDialog specifications while ingame. This allows you to add or change npc dialog without having to create and load a .npc file. Just issue the command "[xmledit" and target an object with an XmlDialog attachment. If it does not have an attachment, you will be asked if you wish to add one.<br />
<br />
The editing gump is divided into four sections.<br />
<br />
The top section allows you to change the overall properties of the attachment, such as triggering range, triggering conditions, and reset time.<br />
<br />
The middle section allows you to view and select a specific speech entry for editing. Press the button to the left of the entry to select it. The checkboxs on the right are used to select entries for deletion. Check the boxes of entries you wish to delete and then press the Delete button at the bottom of the gump. You will be prompted to confirm deletion. To add a new speech entry, just press the "Add" button at the bottom of the gump and a new empty entry will be added to the end of the entry list.<br />
<br />
The lower section allows you to edit the selected entry. Enter in the new values. The changes will take effect the next time the gump is updated, either by selecting the "Refresh" button at the bottom of the gump, selecting another entry, or exiting the gump.<br />
<br />
Currently, text entry is limited by the size of the text entry field. This will be updated with the book text entry interface in an upcoming version.<br />
<br />
The bottom section contains buttons for Refreshing the XmlDialog, Adding a new speech entry, Deleting selected entries, Saving the XmlDialog specification to a .npc file, and paging through the speech entries.<br />
<br />
The specification can be saved to a .npc file by entering in a filename in the "Save to file" text entry area and pressing the button next to it. The .npc extension will automatically be added. If the XmlDialog was loaded from an existing .npc file, that filename will be shown in the "Config:" field to the left of the Save option. There is currently no check for overwriting an existing file, so be careful (I will be adding this feature). This option is restricted to administrators.<br />
<br />
'''TemporaryQuestObject'''<br />
<br />
The syntax is: TemporaryQuestObject,questname[,expiration]<br />
<br />
This attachment allows you to tag items/mobiles so that they are automatically deleted after some period of time, or whenever the quest they are associated with is completed (when the questholder associated with the quest deleted). (thanks to Eymerich for the idea).<br />
<br />
To use this simply put the attachment on an object, and assign the questname, owner.<br />
<br />
You can also use it to make temporary objects that are not associated with a quest by just specifying an expiration time. The way it works is When the attachment is deleted, the object it is attached to is also deleted. Typically you would probably create the object with the attachment using a spawn entry like this:<br />
<br />
GIVE/<questholder/name/MyQuest/objective1/KILL,orc/autoreward/true/rewardstring/gold,100> GIVE/<longsword/name/Quest Sword/ATTACH/<temporaryquestobject,MyQuest/questowner/TRIGMOB>><br />
<br />
This would hand out a quest named MyQuest, and then give the triggering player a longsword named "Quest Sword" that was associated with MyQuest. Note that the mobile who is the questowner of the temporaryquestobject must be manually specified by setting the QuestOwner property on the attachment.<br />
<br />
To make a general temporary object independent of any quests, just use the attachment with an expiration time like this<br />
<br />
longsword/name/poof/ATTACH/temporaryquestobject,tempsword,3<br />
<br />
which would make a sword that would autodelete after 3 minutes (the name "tempsword" could be anything since it it isnt really used for autodeletion and is just to identify the attachment).<br />
<br />
'''XMLFreeze:'''<br />
<br />
The XmlFreeze[,seconds] attachment that allows you to permanently or temporarily freeze a mobile in place. If attached with no duration argument, they will remain frozen until the attachment is removed. This can be used with the ANIMATE keyword to keep mobs from moving while animations are applied.<br />
<br />
orc/ATTACH/xmlfreeze,10<br />
<br />
would spawn the orc frozen for 10 seconds.<br />
<br />
SETONTRIGMOB/ATTACH/xmlfreeze,10/MSG/You are frozen with fear!<br />
<br />
would freeze the triggering player for 10 seconds and send them a message.<br />
<br />
'''XmlMorph'''<br />
<br />
This attachment changes the BodyMod property of target mobiles. When mobiles are deserialized, they automatically restore their default bodytype, so the OnReattach method can be used by the attachment to override this and restore the desired BodyMod assignment.<br />
<br />
'''XmlWeaponAbility:'''<br />
<br />
This attachment allows mobs to be given special attacks on the fly. You can add special attacks to a spawned mob with a spawn entry like:<br />
<br />
orc/ATTACH/xmlweaponability,BleedAttack<br />
<br />
or manually add it to any mob with<br />
<br />
[addatt xmlweaponability BleedAttack<br />
<br />
and then target the mob. Note, the attack name is case sensitive and can be any of the following:<br />
* ArmorIgnore<br />
* BleedAttack<br />
* ConcussionBlow<br />
* CrushingBlow<br />
* Disarm<br />
* Dismount<br />
* DoubleStrike<br />
* InfectiousStrike<br />
* MortalStrike<br />
* MovingShot<br />
* ParalyzingBlow<br />
* ShadowStrike<br />
* WhirlwindAttack<br />
<br />
'''Other Keywords:'''<br />
ARMOR, WEAPON, POTION, that will create random magic items of the type specified.<br />
<br />
ARMOR,min,max will drop a random piece of armor, shield, or jewelry with an attribute level randomly selected between min and max. min and max can range between 0 and 5 with 5 being the most powerful.<br />
<br />
WEAPON,min,max does the same for weapons.<br />
<br />
POTION drops a random potion,<br />
<br />
Add these to the spec line in place of normal types, i.e. wherever you would use a typename like katana, or platehelm, just substitute these keywords. These can either be used as the basic entry in a spawn spec, therefore spawning them directly, or they can be used with the ADD keyword to add them to a spawned mobs pack. e.g. ogre/ADD,0.5/WEAPON,2,5 would spawn an ogre with a 0.5 probability of dropping a lev 2-5 magic weapon.<br />
<br />
The spec line ARMOR,5,5/name/Bruiser/hue/300/durability/200 would spawn a random piece of magic armor of level 5, name it Bruiser, turn it blue, and set its durability to 200.<br />
<br />
The spec line ogre/ADD,0.5/<ARMOR,5,5/name/Bruiser/hue/300/durability/200> would add that piece of armor to a spawned ogres pack with probability 0.5<br />
<br />
The line GIVE/WEAPON,5,5 would give a level 5 magic weapon to the player that triggered the spawner.<br />
<br />
'''Quest Items:'''<br />
<br />
'''SimpleNote'''<br />
<br />
There is a new SimpleNote object in the included script simplenote.cs which is an item that can be used independently, but is designed as added content for exercising spawner capabilities for more dynamic quest-like use. It is NOT needed for the spawner to function and is purely optional.<br />
<br />
It allows construction of simple notes/messages that are designed to be read by players by opening into a scroll gump of variable size. The text of the note, its title, and text color can be specified by the user. The note can be defined in the spawner and can be used to pass trigger requirements etc. to the player. e.g. in the spawn specification string enter: simplenote/notestring/Seek out the Sword of Misery that is held by the ogre lord Blasphema in the forest north of Trinsic. Call out to him, and you will bring him forth./size/2/titlestring/The Quest for Blasphema/name/Blasphema's Quest.The triggering of the spawn could then be made dependent upon the player possessing the named note ("Blasphema's Quest").<br />
<br />
'''QuestNote:'''<br />
<br />
The quest item (QuestNote) and quest token item class (XmlQuestToken), that allows multi-part quests, with expiration time, and transfer restrictions. By placing quest information on these player carryable tokens, quests can be made without modification to playermobiles, or to any scripts at all, making them completely portable. XmlSpawners can modify or read multiple objectives on the items using the objective1-5 and completed1-5 properties.<br />
<br />
The use of quest token items for mainenance of quest information also allows for multiple simultaneous quest simply by possessing the appropriate tokens. Quest item properties are public, so scripts can freely access them for constructing specific quest scenarios that can then be used to drive spawning.<br />
<br />
Items that belong to the XmlQuestToken class lose their validity whenever they are transferred from the original owner, either to other players, to the world, or to containers not in the players pack. This prevents transferral of quests, and other exploits. These items are also blessed by default.<br />
<br />
When an XmlQuestToken item is used as the target of carried-item triggering (TriggerOnCarried property), then it must be valid (never removed from the players pack), and satisfy specified subobjectives in order to trigger. (see TriggerOnCarried, and NoTriggerOnCarried multiple objectives. Objective status can be seen on the quest log status gump).<br />
<br />
XmlQuestTokens can also be given limited lifetimes using the expiration property. Due to limitations in the way in which TimeSpan type variables are handled by .net, currently the maximum expiration time for a quest token is 24 hours.<br />
<br />
'''Other Items:''' <br />
* Added several new items for added content that are independent but enhance the use of the xmlspawners. They are a switch, a lever, and a combination lock.<br />
The script SimpleSwitches.cs adds a 2or3-state lever, a 2 state switch with different facings determined by direction (not by flipping), and a combination lock. The states of the lever can be used to set properties on target items such as doors (locked/unlocked), or even to add items to containers. By setting the TargetItem and TargetProperty properties, you link the switch/lever states to certain item properties. So, for example to use a switch to open a door when the switch is in the 1 state, set Target1Item to the door and then set Target1Property to /locked/false (note, it uses the same syntax as the xmlspawner2 property specification strings. Since it shares the same syntax, you can also have it do things like change the color of an item, or add items to a container using the ADD/<spec> string.) SimpleCombinationLock simulates a multi-digit (max 8) combination lock. The state of each of the digits can be set using (for example) the lever or switch items. The combination is set in the Combination property. So the combination of 378, would correspond to digits 2,1,0 taking on values of 3,7, and 8 respectively. The Match property can be tested to determine when the target combination is matched by the combination of digits. Note that digit number corresponds to significance, from least to most. Each digit is a property (Digit0, Digit1, Digit2, ... Digit7) and can take on the values 0-9. You can set the property string to indicate either a property name on the target item (e.g. switchstate, or leverstate, or totalgold), or you can specify a test such as totalgold<100, or open=false, or locked=true. You could use this item to look for certain combinations of switches or levers, door states, etc. or even combinations of levers, and weight of a container, or number of kills on a spawn etc., and then open a door, or add items to a container, or change the color of a stone, trigger a spawn, etc.<br />
* Added new items TimedSwitch, TimedLever, XmlLatch, and TimedSwitchableItem.<br />
Similar to the SimpleSwitch and Simple lever, the TimedSwitch, TimedLever items add a reset timer to the switch/lever states with min/maxdelay properties and are derived from the XmlLatch which is a new class that supports resettable switching, and can be used as an item itself to implement a resettable latch (set the state externally and it will hold that state for some time and then reset). The item TimedSwitchableItem is a TimedSwitch that allows you to specify the Item statics that will be assigned to each state, allowing flexible user-defined visuals during switching, such as a torch or a stone, or a wall section, etc. Because it is a TimedSwitch you can assign actions that are associated with each state as well, such as opening a door when double-clicking a torch, or opening a secret passage when double-clicking on a wall section, etc. The current switching state of all of these items is contained in the State property, and the ResetState is the value that the State will be returned to after the reset timer expires.<br />
<br />
==XML Dialog Editor==<br />
<br />
'''Project Description'''<br />
<br />
The XML Dialog-Editor is a tool to create or edit the NPC-Dialogs (*.npc) from RunUO's XMLSpawner by ArteGordon. In addition to the standard-functionality the ".xmledit"-command gives you ingame I made a few features to make this editor as newbie-friendly as it could be.<br />
<br />
One of the biggest problems are a lot of XMLSpawner-specific commands, values etc. with a lot of (optional) parameters. A complete documentation is not present at the moment, only a chronological release-info. So when I want to know how a specific thing is working in the actual version I have to look backwards through the whole txt-document - it's time consuming in case you are not working on a daily basis with this (great!) system and knowing it's niceties. So on top of my wish-list for the editor are wizards for all of those text-fields. <br />
<br />
Some minor issues are resulting from the Ultima Online client itself and it's usability with dialogs: You cannot edit the text of a textbox by clicking right in the middle of the text, thats working only with those books. Also there is not much space to view all those necessary information so it's difficult to get a overview of your dialog (e.g. dependings) 'cause resizing of the gump isn't possible, either - no matter if you have a 1024x768 resolution or a 16:9 tft. The fact that you have to be online is just an additional fact - and not every Gamemaster or Seer wants to run a local "development"-server only to make new dialogs offline (e.g. when traveling with a notebook). <br />
<br />
All those things keeping in mind I started with my XML Dialog-Editor and added a few more points to my whishlist on-the-fly (exporting to txt-file for posting in a forum, connecting to a server for remote-editing, ...). The actual version is a first result of my efforts and I'm still working on a lot more things. A great system like the XMLSpawner is deserving not just a "good try" and my effort is to give the community something great in return for all those things I learned from her!<br />
<br />
'''Feature List'''<br />
<br />
*wizards for most textfields<br />
*implemented all XmlAttachments with overloaded constructors<br />
*implemented commonly used properties and other commands / values (e.g. nametypes)<br />
*listview like the one in ultima online<br />
*treeview for dependancies overview<br />
*export as textfile and pdf (flow chart)<br />
*create / edit dialogs via FTP-server<br />
*deleting and duping many items at the same time<br />
*multilanguage support (currently english and german)<br />
*bugs and feature-requests can be submitted out of the program via a simpel dialog<br />
*installation and auto-update via ClickOnce<br />
<br />
DOWNLOAD: [https://xmldialogeditor.codeplex.com/ XML Dialog Editor]<br />
<br />
Last edited Sep 22, 2008 at 4:21 AM by Anheledir, version 3<br />
<br />
==XML Siege System==<br />
<br />
Original information compiled by Dante on UO Evolution<br />
<br />
NOTE: This XML Siege System is being installed and tested to do large events and monster invasions. This wiki is a work in progress and I will add more info as I test the system.<br />
<br />
This system allows objects and structures to be damaged by siege weapons and repaired by siege tools. <br />
<br />
ANY non-frozen object can be made damageable - walls, doors, signs, trees, multis, addons - anything. A GM has to tag them with the xmlsiege attachment<br />
<br />
Weapons included are the Siege Cannon and Siege Catapult that fire siege cannonballs, and the Siege Ram that uses siege logs.<br />
<br />
Hand siege weapons are also supported.<br />
<br />
Siege Cannons have a 20% damage bonus and 20% increase in range when compared to catapults using the same projectiles.<br />
<br />
weapon damage will be reduced by up to 60% from its max value depending on how damaged the weapon is, and firing range reduced by up to 30%<br />
<br />
different types of cannonballs to do different amounts of damage to creatures and to structures <br />
<br />
The Siege Ram is for close range attacks on structures. It has a faster attack speed than either the cannon or catapult, and the new Siege Log ammunition can produce heavy damage to structures but is ineffective against creatures and has very short range.<br />
<br />
The ram can also be loaded with SiegeLog stacks so that it can attack repeatedly without having to reload after each attack.<br />
<br />
===Seeing object damage===<br />
<br />
Once an object is damaged it will change color to indicate the level of damage.<br />
<br />
The default colors are: <br />
<br />
Green = 67-99% of max<br><br />
Yellow = 34-66%<br><br />
Red = 1-33%<br><br />
<br />
Blue is also temporarily assigned to objects that have just had the XmlSiege attachment added to them so that you can see what is damageable.<br />
<br />
Once the Hits for an object reach zero, then the ItemID of the object will be changed to the DestroyedItemID propery of the xmlsiege attachment. Individual attachments can have their own DestroyedItemID settings. The default is a lava pool.<br />
<br />
===Repairing damageable objects===<br />
<br />
<b>Siege Repair Tool</b> - this is used to repair damaged objects<br />
<br />
Using the tool - Just double-click to use and target the damaged object to be repaired. It can be given either limited (set UsesRemaining to a value > 0) or unlimited number of uses (set UsesRemaining to a value < 0).<br />
<br />
<b>Repair resources</b><br />
<br />
You must have the required resources to repair the targeted object. The default setting is to repair 100 hits of damage per use.<br />
<br />
Objects can require wood, iron, and/or stone for repair.<br />
Iron = IronIngot<br />
Wood = Board<br />
Stone = Granite<br />
<br />
<b>Repair time</b><br />
<br />
The speed of the repair will depend on their Blacksmith and Carpentry skills as well as dexterity. With max skill and dex it can be as fast as 3 seconds. With no skill it can take up to 15 seconds.<br />
<br />
If you are missing any of the resources, the repair will not be done but any of the other resources that were needed and that you were carrying will be consumed.<br />
<br />
===Siege Cannon===<br />
<br />
<b>Changing the cannon facing</b> <br />
<br />
Then you can change the facing while it is placed using the 'Previous/Next' options in the context menu that comes up when you click it.<br />
<br />
<b>Moving a cannon</b><br />
<br />
To move a cannon you must first pack it up using the 'Backpack' context menu option. This takes time (15 seconds) and you must be next to it at the beginning and end of packing. When finished you will have a crate in your pack that you can place anywhere.<br />
<br />
<b>Firing a cannon</b><br />
<br />
To fire a cannon you must first load a cannonball into it. Then double-click the cannon and select the target.<br />
The target must be within the cannonball range, and within the firing arc of the cannon. Note, that you can target mobiles as well as structures, and mobiles will also take splash damage from area damage cannonball attacks.<br />
<br />
<b>Taking damage</b><br />
<br />
The cannon is configured with an xmlsiege attachment by default, so it can take damage from other cannons as well.<br />
<br />
===Cannonballs===<br />
<br />
I have added a few different types of premade cannonballs, but you can easily modify them or add your own. You can even create them and change their settings on the fly since all of their properties are accessible.<br />
<br />
Cannonballs have the following configurable properties:<br />
<br />
<b>Range</b> - maximum range in tiles <br><br />
<b>Area</b> - number of tiles surrounding the target that will also take damage<br><br />
<b>AccuracyBonus</b> - mod that affects chance of hitting the target<br><br />
<b>FiringSpeed</b> - mod that reduces the minimum interval between firing<br> <br />
<b>PhysicalDamage</b> - amount of physical damage delivered<br><br />
<b>FireDamage</b> - amount of fire damage delivered<br><br />
<br />
The premade cannonballs included are:<br />
<br />
*lightcannonball<br />
*ironcannonball<br />
*explodingcannonball<br />
*fierycannonball<br />
<br />
<b>Loading a cannonball</b><br />
<br />
Just double-click a ball and then target a cannon. You must be close enough to both, although you can dclick the ball, and then move to the cannon.<br />
<br />
===XML Siege Dowload===<br />
<br />
[http://downloads.runuo.net/index.php?dir=Scripts/RunUO/Xml%20Siege%20system%20V0.7a/ XML Siege Dowload]<br />
<br />
==XML Dungeon==<br />
==XML Code Examples==<br />
<br />
*[[XML Systems and Downloads]]<br><br />
*[[XML Code Examples by Expo]]<br><br />
*[[XML Code Examples by Kane]]<br><br />
*[[XML Code Examples by Dante]]<br><br />
*[[XML Code Examples by Mogster]]<br><br />
*[[XML Code Examples by Hestia]]<br><br />
*[[XML Code Examples by Ghost]]<br><br />
<br />
==XML External Links==<br />
<br />
*[http://downloads.runuo.net/index.php?dir=XMLSpawner/ RunUO Downloads - XML Spawner Guide]<br><br />
*[http://uorforum.com/threads/xml-spawner2-commands-and-examples.10280/ XML Spawner2 Commands and Examples - UO Renaissance Forum]<br><br />
*[https://www.servuo.com/tutorials/xmlspawner-quick-commands-advanced-installation.5/ Advanced XML Spawner Installation Guide - ServUO]<br><br />
*[https://www.servuo.com/archive/the-ultimate-xmlspawner-how-to-guide-archive.150/ Ultimate Xmlspawner how-to-guide]<br><br />
*[https://www.servuo.com/threads/xmlspawner-tutorials.3130/ XML Spawner Tutorials]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawner Fan]<br><br />
*[http://www.uoroleplay.com/resources/XMLSpawner/XML_Spawner_Unzipped/xmlspawner.15.forumer.com/XML%20Spawner/xmlspawner.15.forumer.com/a/qampa-13/index.html XML Spawner Q&A]<br><br />
*[http://www.usamimi.info/~gogogo/xmlspawner/index.htm XML Spawner Basics]<br><br />
*[https://github.com/ArchangelUO/XMLSpawner XML Spawner Github 2.1, 2.2 and Orb 2.2]<br><br />
*[https://www.scribd.com/document/69981938/XML-Quest-4-Dummies-RunUO-Ultima-Online XmlQuest 4 DummiesHow to build a perfect questVer. 0.3]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=XML_Spawner&diff=34
XML Spawner
2018-06-21T18:15:17Z
<p>WikiSysop: /* What is XML Spawner? */</p>
<hr />
<div>==XML Spawner==<br />
<br />
XmlSpawner2 v3.24<br />
updated 2/11/08<br />
ArteGordon<br />
===What is XML Spawner?===<br />
<br />
XML Spawner is a spawn control system based upon Bob Smart's xmlspawner with features, items, and commands supporting sophisticated conditional spawn triggering, individual <br />
customization of spawns and their drops, and systems for stealable rares, <br />
interactive npcs, functional attachments, mob factions, pvp points, custom weapon <br />
attacks, item/creature socketing, and quests.<br />
<br />
[https://github.com/SpagMonster/XMLSpawner XML Spawner Github]<br />
<br />
===XML Spawner Guide===<br />
<br />
This Xml Guide contains organized information from all of the How-to posts from various Xml forums<br><br />
<br />
*[http://www.runuo.net/forum/forum/software-support/xml-spawner-support XML Spawner Forum]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawnwer Fan Forum]<br><br />
<br />
Important Forum Posts - Xml Spawner<br><br />
<br />
*[[XML Spawner - General]]<br><br />
*[[XML Properties]]<br><br />
*[[Load and Import Files]]<br><br />
*[[Creating Spawns]]<br><br />
*[[Creating Triggers]]<br><br />
*[[Creating XmlDialogs]]<br><br />
*[[XML Attachments]]<br><br />
*[[Defining Regions with XML]]<br><br />
<br />
===XML Spawner Tutorial===<br />
<br />
====XML Commands====<br />
<br />
*'''xmlhome''' <target> returns the coordinates of the spawner for the targeted object. Also takes arguments:<br />
* '''go''' that teleports you to its spawner,<br />
* '''gump''' that opens its spawner gump,<br />
* '''send''' that sends the object back to the spawner location<br />
Example: .xmlhome gump <target><br />
<br />
*'''xmlshow''' This command turns spawn crystals into ships masts making them much easier to spot. One thing to remember about those masts is that even though they are hidden to players, they will still block movement, so you dont want to leave them as masts.<br />
<br />
*'''xmlhide''' hides the spawners, returning them to magic crystals from a ship's mast.<br />
<br />
*'''xmlsave''' filename will save all of the spawners on the current map to the file<br />
<br />
*'''xmlsaveall''' filename will save all spawners in the world to the file<br />
<br />
*'''xmlspawnerrespawn''' forces a respawn of all xmlspawners in the region<br />
<br />
*'''xmlspawnerrespawnall''' forces a respawn of all xmlspawners in all regions<br />
<br />
*'''xmlunload''' deletes spawners that are contained in an xml file. Basically the reverse of the load command. This provides a quick way of adding and removing specific sets of spawners that would represent a logical group, such as a mini-quest, or a dungeon, without having to use common naming prefixes, and without risking unintended spawner wipes that might occur with the use of the .xmlspawnerwipe prefix, command. Because it is the complement of the .xmlspawnerload (.xmlload) command, the effects of using it can always be reversed by simply doing an [xmlload on the same file.<br />
<br />
[http://www.runuo.net/wiki/index.php/XmlSpawner_Command_List,_description_of_all_xmlspawner_commands Complete List of all XML Spawner Commands]<br />
<br />
====Setting a new Spawn====<br />
How to Set the spawn:<br />
<br />
The first thing you need to do to create a spawn is creater the spawner bit. Type the command: .add xmlspawner (enter)<br />
<br />
This will create a "magical crystal" - Double Click the crystal to access the spawner gump, which looks like this:<br />
<br />
Spawnermain.jpg<br />
?<br />
====Name your XML Spawners====<br />
You can change the name of your spawn to whatever you wish at the top of the gump. You should try to use a name that includes what the spawn contains or a name you can remember for easy reference later. (Example: Haven-rats)<br />
<br />
To add a spawn to the bit you can add the creature name directly into the top line of the spawner gump (ex. rat or cat), or if you do not know or are unsure of the mobiles (creatures) name you can select the arrow at the right of the entry line which will bring up a menu of available items and mobiles to select (see red circle below): <br />
<br />
Spawnmenu.jpg<br />
?<br />
You can add up to 60 creatures/mobiles to one bit (though I doubt we will need to use that many on a single bit). Once you have the creatures listed that you wish to spawn, you can set the amount of each entry by clicking the Up/Down arrows to the left of that entry.<br />
<br />
The COUNT and MAX entries on the right side will update as you go. The bit is active by default so as you raise the total number of creatures they will appear around the bit. The default range (wander distance) of 5 and spawn interval of 5-10 mins. will be set on the bit unless and until you change in it the spawner props menu. (Will tell you how to change this later)<br />
<br />
Hitting the RESET button in this gump will remove all spawn in existence and turn off the bit. You can turn the spawn back on by clicking the red on/off button (changing it back to greeen) or by hitting the respawn button. The only difference here is RESPAWN will activate the bit and spawn all creatures listed for it, while turning the bit on only reactivates it and it will spawn based on the range and time intervals set rather then all at once. RightClick on the gump will close it and save the settings on the bit.<br />
<br />
You have created a basic creature spawn. ?Congrats.<br />
<br />
====Spawn Creation Shorthand====<br />
<br />
Once you have worked with the spawner and become familiar with how it works, you may wish to use the gumps less often, especially for basic spawns. THe spawner gives you this option with "constructables"<br />
<br />
For example:<br />
* .add xmlspawner creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange spawnrange creaturename.<br />
<br />
This simply matches the constructable calls available for the regular spawner through the gump itself.<br />
<br />
Container Spawning:<br />
placing a spawner in a container will allow items to be spawned in it (but not mobs). To get this to work properly you must create the spawner in one of two ways:<br />
<br />
'''EASY WAY:''' You can .addtoPack xmlspawner and target the container you wish the item to spawn inside and then edit the spawner from there.<br />
<br />
OR<br />
<br />
'''LONG WAY''' You can .add xmlspawner and target a spot on the ground. Type .set movable true, target the spawner you made, pick up and place the spawner in the container you wish the spawn to be. Then type .set movable false, target the spawner, thereby locking it in place inside the container. The spawner is not visible by players.<br />
<br />
Editing Individual creature or item spawns:<br />
XML is geared to accept commandline-like spawn specification. This basically allows you to set properties of each spawn in the spawner using a /propertyname/value/ format, Multiple properties can be specified for each spawn allowing mob/item naming, unique property setting, etc. This works well in conjunction with the item-triggering feature since you can create items with specified names that match the trigger name of another spawner.<br />
<br />
'''Creatures:'''<br />
<br />
An example of the specification would be instead of just listing an ogre to be spawned you would list an ogre/name/The Butcher/str/190/damagemax/50/hue/500, which would create a blue ogre, named "The Butcher", with 190 strength, and maximum attack damage of 50.<br />
<br />
Accessing the editing feature:<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
'''Items:'''<br />
<br />
You can also spawn items in the same way e.g. specifying a woodenchest/hue/300/movable/false would create a green locked down chest, or katana/name/Master of elements/slayer/elementalban/hue/200 would create a named light blue elemental super slayer. Note, the properties that you can set are basically the same as those that you can change with the .set command.<br />
<br />
XMLspawner also supports setting nested attributes on items such as armorattributes. To access these attributes use dot notation e.g. to change luck on a weapon use the specification string: katana/attributes.luck/50 or platehelm/armorattributes.magearmor/1/skillbonuses.skill_1_name/anatomy/skillbonuses.skill_1_value/20 to set magearmor and add +20 anatomy. These are the same property names that appear in the props list.<br />
<br />
'''Accessing the editing feature:'''<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
Gumpedit.JPG<br />
?<br />
<br />
As you can see in the red circle above, the line is inputted in a text format in the book shown in the upper right and applied to that spawners entry in the main spawner gump (lower right in image above). In this case we have created a cow named Benny (circled in purple) that is hued to 450 (beige in this case) and given hitpoints of 100. - Gotta check syntax on HITS in this case because I think I did it wrong in the example I screenshot--oops.<br />
<br />
'''Weighted Probability spawning:'''<br />
With multiple entries in an xmlspawner, if maxcount on the spawner is equal to the total of the individual mob counts (the default condition), then the spawner will behave exactly as the original xmlspawner, but by reducing maxcount you can produce a reduced number of total spawns in which an individual mobs spawning probability is based on the relative count ratio.<br />
<br />
To implement a rare single mob spawn simply add multiple mobs to a single spawner in the ratio that you want them to spawn with, and then set the maxcount to 1. This will result in a single spawn that will produce any one of the multiple mobs with the probability of getting each determined by the count.For example:<br />
7. add a balron, count = 1<br />
8. add a gargoyle, count = 10<br />
9. go to the xmlspawner props and set maxcount to 1<br />
10. do a respawn and you are done.<br />
<br />
<br />
This will result in a single spawn that will produce a balron roughly 10% of the time (actually 1 out of 11) and gargoyles the rest of the time.<br />
<br />
I use this to put named spawns in as the rare with comparable basic spawns as the common, e.g. a named lich, that spawns rarely instead of a regular lich. Of course, you can also specify these parameters in your xml spawner files: Example (from XML file):<br />
<br />
<MaxCount>1</MaxCount><br />
<br />
<Objects>ratman=15:ratmanarcher=15:barracoon=1</Objects><br />
<br />
This will give you a spawn that will produce a single ratman or ratman archer with equal probability about 48% of the time each and a named mob about 3% of the time (1 out of 31 times)<br />
<br />
'''Understanding Spawner Props:'''<br />
Now that we know how to make a spawn, it is time to look at how to customize it. XmlSpawner allows for a wide array of customizations, from spawn intervals to player approach and speech triggers. To make adjustments to a spawner, you need to access the PROPS gump.<br />
<br />
From the main spawner menu (DCLICK the spawner). Click the props button at the bottom right of the main menu (see image above). This will open the props gump (pictured below). It is important to understand that these settings are for the spawner NOT for the individual creatures on the spawn bit. Those can be edited more specifically (we will get into these later). The spawner props gump looks like this:<br />
<br />
Propsgump.jpg<br />
?<br />
<br />
'''Important Spawner PROPS'''<br />
In this section we will discuss the various prop settings in more detail. As we learn their uses this section will expand, so if a setting is missing at this point, I am not sure how to set or use it, or I have no idea what it does yet.<br />
<br />
I have found some prop settings to be more helpful then others. Some that I think are really helpful and used more often are listed first:<br />
<br />
'''MaxDelay'''<br />
This sets the maximum time before the spawn triggers again until the MAX COUNT setting is reached for that creature in the spawn list. It only triggers ONE mob/item at a time for the range. So if you max count is 10 and your max and min delay are both 1 minute, and the entire spawn is wiped out, it would take 10 mins to completely respawn.<br />
<br />
'''MinDelay'''<br />
This sets the Minimum time the spawner will wait before triggering the next creature on the spawn.<br />
<br />
'''ShowBounds'''<br />
The default setting for this is FALSE, but when set to TRUE it gives you a white box that shows you the spawn range box that is current set on the spawner. This is the area in which the spawners will appear. They may or may not be set to stay in that box once spawned (see HomeRange). Turning this on is very helpful when working with a spawner. It can be turned on or off as needed.<br />
<br />
'''NoTriggerOnCarried'''<br />
This property blocks spawner triggering when the player is carrying the named item. This can be used to prevent a quest spawns (e.g. starting quest gump) from being triggered if a quest item (e.g. starting quest token) was already in the players possession.<br />
<br />
'''TriggerOnCarried'''<br />
This property has the opposite effect on the spawner. When set, the spawn will only fire if the trigger item is present.<br />
<br />
'''X1_Y1'''<br />
This prop changes the NW or Upper left corner of your spawner range box. When you select this prop you are then given the option to use your current location for the target, use a targeting cursor to choose the location, or finally you can enter the X,Y and Z coords manually.<br />
<br />
'''X2_Y2'''<br />
This prop works exactly like above, but set the SE or lower right corner of your spawner range box.<br />
<br />
'''HomeRange'''<br />
This is how many times the spawn will wander from the bit after they spawn. Basically their "home area".<br />
<br />
'''SpawnRange'''<br />
This setting reflects how far from the bit a spawn will appear when it is first spawned. If you set the SpawnRange outside or larger then the HomeRange, the creatures that spawn otuside the HomeRange will work their way back home over time.<br />
<br />
'''Time of Day (TOD)'''<br />
Set the TODStart and TODEnd to the times of day that you would like to limit spawning to. If they are set to the same value, that enables spawning at all times. If the Start value is greater that the end value, that indicates a time window that spans midnight. Proximity triggering will also be limited to the TOD window. Spawns that remain after the TOD window has passed will be removed. Note that timing of spawning is still governed by the spawn timer (can be seen as the NextSpawn property in the spawner property list). The TOD window simply determines whether a spawn will be allowed to be created once the spawn timer has elapsed. The TOD window is also applied to proximity triggering. It determines both whether the trigger can be set (must be triggered during the TOD window), as well as whether the spawn can be created (spawn must occur during the TOD window).<br />
<br />
'''TODMode'''<br />
The TODMode property that allows Time of Day (TOD)-dependent spawning to be in either Gametime or Realtime.<br />
<br />
'''PlayerTriggerProp'''<br />
By specifying a property test string in PlayerTriggerProp, you can trigger based upon the value of a property on a player within the proximity range of the spawner. For example setting PlayerTriggerProp to hits<50, would cause the spawner to trigger whenever a player within range fell below 50 health.<br />
<br />
Other properties could be used to trigger when a player got hungry (hunger<5), or tired (stam<30), or was a criminal (criminal=true), or was fighting (combatant!(-null-)). Any property that is visible with the [props command, can be tested and the value to test against will be the value that appears there (or with the [get propname command)<br />
<br />
'''MobTriggerName'''<br />
Mob property triggered spawning is identical to player property triggering except that you specify a mob name in the MobTriggerName field, and then set the property test in MobTriggerProp. This will trigger whenever a player comes within proximity range of the spawner and the uniquely named mob is found and satisfies the property test specified in MobTriggerProp. Note that this mob can be anywhere in the world, it is the player that sets off the trigger and therefore has to be in range. These can be combined with any of the other triggering options so that, for example, a player holding a named quest item, could trigger a spawn based upon his fame or karma, (with different fame levels triggering different spawns), depending on the health of a named mob that he was doing combat with.<br />
<br />
'''ProximityRange'''<br />
When the proximityrange property is set to a value zero or greater, the spawner will become activated whenever a player comes within that range, and will be deactivated when a player leaves the range. Once the spawner has been triggered, it will run until the spawn timer elapses, even if the player that activated it leaves the proximity range, after spawning it will be shut off and will remain inactive until the next proximity triggered activation.<br />
<br />
Note that when used in combination with the X1Y1 X2Y2 specification for spawning area, you can use this feature to sense players in one location and spawn mobs in another. You can also combine this with the duration parameter to have player triggered, but limited duration spawns, so that they will reset even if the player that triggered it doesnt kill the spawned mob - basically a one-shot spawner. Counselors and above will not trigger the sensor.<br />
<br />
'''ProximityMsg'''<br />
Allows setting a proximity trigger message that is displayed over the player when the spawner is triggered. Example: "You have the strange feeling that you are being watched."<br />
<br />
'''ProximitySound'''<br />
This allows you to set the sound played when a proximity triggered spawner is tripped by a player (a click and sparkle sound by default). If you are using the most recent version of inside UO to get the sounds, you need to subtract 1 from the number for it to play the proper sound.<br />
<br />
'''SpeechTrigger'''<br />
This property allows for speech triggering of spawns. Set the property SpeechTrigger with the string you want to trigger on.<br />
<br />
This can be combined with the other proximity features for example, to allow spawns that are triggered when a player is within range, has an item, and, for instance sets a switch, or places gold in a container, and then says the key phrase.<br />
<br />
Could also use it for implementing something like a guard zone in which calling out for guards would spawn for a specified duration. Or by combining it with the refractory option you could allow it to generate items on demand but only so frequently (e.g. guards, regs, drinks, etc. only once an hour, or once a day) or even only during certain times of the day.<br />
<br />
'''TriggerOnCarried'''<br />
Item-dependent triggering This is used in conjunction with proximity sensing. When a player with a specific named item in his pack comes within proximity range of the spawner, the spawn will be triggered.<br />
<br />
TriggerOnCarried is used to specify the name of the trigger item. If it is set to null then items are not checked and it behaves like a normal proximity-triggered spawner. To prevent excessive pack searching, the item test is only conducted once upon crossing the proximity threshold, and the item must be in the top level of the backpack - no nested searching. Proximity sensing does not work inside containers.<br />
<br />
The refractory settings can be used to limit the way in which the trigger is activated. By setting a short delaymin/delaymax you can have a spawn that appears almost immediately after triggering, but to prevent the spawner from being triggered right after that, setting the refractory period to something like 5 minutes will keep the proximity triggering from being activated for that period.<br />
<br />
'''TriggerObject'''<br />
'''TriggerOnProperty'''<br />
<br />
This allows for the ability to make player-proximity triggered spawning also dependent upon a property of any targetable item. This allows spawn chaining by making one spawner dependent on the state of another spawner. It also allows spawners to be made dependent upon things such as switches, doors, number of items, weight, or amount of gold in containers, etc.<br />
<br />
To use this feature, select the TriggerObject property in the props list, then target the object to trigger off of. Then set the TriggerObjectProperty field with the property and the value to test for.<br />
<br />
For Example: maxgold=20, or killcount>10, or open=true. Where maxgold, killcount, and open are property names on the objects. Supports <, >, and = operators for testing the values. Supports, int, bool, string, and double value types.<br />
<br />
'''TriggerProbability'''<br />
This has the value of 1 by default which means the spawn will be triggered whenever the triggering conditions are met. Setting TriggerProbability to a value between 0 and 1 will reduce the chance that a spawn will be triggered even when the other triggering conditions are met. So, for example, having a spawn that is triggered by opening a door only 1 out of 10 times, or a rare that only spawns occasionally at a certain time of day.<br />
<br />
'''Duration'''<br />
The duration parameter enables spawns of limited duration. By default, spawners have a duration of zero, which means infinite duration (the standard case). The duration timer begins immediately after a spawn, and when the timer expires, all spawns on the spawner will be removed until the next respawn. Respawning will occur according to the min and max delay as usual. I like to use this to make rare spawns such as the common or doom rares, harder to get. Since on servers with a smaller player base there is not the competition to get rares, this feature can make them as infrequent as they would be on a more populated server, like only available for one second every 24 hours or more.<br />
<br />
Note: when saving spawns to an xml file the duration parameter will be saved as seconds, not minutes.<br />
<br />
'''DurationOver'''<br />
As far as I can figure out, this doesnt do anything, it simply tells you when the duration amount above is about to happen. A count down field, so it were.<br />
<br />
'''Other PROP settings:'''<br />
AllowGhostTrig This prop can either be set to true or false. A true setting will allow ghost characters to trigger the spawner, while a false setting will set the spawner to only be triggered by living characters. Pretty self explainatory.<br />
<br />
CurrentCount This is the number of creatures set to spawn from this bit. It reflects the cumulative total of all the spawns in the list added together. I can't think of a reason you would need to make adjustments to this.<br />
<br />
ExternalTriggering This allows other objects to actively control the spawner. This feature is enabled by setting the ExternalTriggering property to true, then the spawner will add the state of the ExtTrigState property to its list of triggering conditions. This can be used in conjunction with any of the other triggering features, so that you could have a spawner that was dependent upon proximity triggering and activation of an object (like one of the levers or switches included) that would set the ExtTrigState. For example, to place a spawner under the control of a lever add a simplelever, set the TargetProperty prop of the lever to /exttrigstate/true, and the target1property to /exttrigstate/false. Then enable ExternalTriggering on the spawner. Switching the lever will then turn the spawner on and off. By enabling speech triggering as well, the spawner will only speech trigger when the lever is also in the correct position.<br />
<br />
====XML Quests====<br />
<br />
'''Quest Objectives:'''<br />
The XMLspawner quests system supports the following objective types:<br />
<br />
KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED<br />
<br />
Some examples are:<br />
* KILL,mobtype,count,<br />
* KILLNAMED,mobname,count,<br />
* COLLECT,itemtype,count,<br />
* COLLECTNAMED,itemname,count.<br />
<br />
The quest items can now keep track of kills and collected items in their quest status, and quest tasks that require multiple mobs to be killed can be specified. To use this feature, spawn or create an XmlQuestToken class item such as the QuestNote, and set one or more of the Objective properties with the keywords.<br />
<br />
For example to make a killtask type quest in which the player must kill 5 balrons, 5 lichlords, a named mob called "Bubba", and collect 20 diamonds, you could;Set the<br />
* Objective1 property to "KILL,balron,5",<br />
* Objective2 property to "KILL,lichlord,5",<br />
* Objective3 property to "KILLNAMED,Bubba,1",<br />
* Objective4 property to "COLLECT,diamond,20<br />
A spawner can be then be set up to provide a reward when the objectives on the questnote are completed.<br />
<br />
'''Spawning Conditions and Keywords:'''<br />
Special keywords can be used in spawning for control or effects. These will be explained in more detail below, but the keywords are listed below:<br />
<br />
value keywords: RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL<br />
<br />
control keywords: WAITUNTIL, IF, WHILE, and GOTO<br />
<br />
action keywords: ADD, ANIMATE, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, SOUND, GUMP, DESPAWN, DELETE, UNEQUIP<br />
<br />
loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL<br />
<br />
access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, PLAYERSINRANGE, TRIGSKILL<br />
<br />
Access Keywords:<br />
SETONCARRIED<br />
<br />
This allows you to set properties on a named item carried by the triggering player. The syntax is SETONCARRIED,itemname/prop/value/prop2/value... This can be used in conjunction with the TriggerOnCarried property and the XmlQuestToken items to detect and set quest objectives on quest token items.<br />
<br />
With TriggerOnCarried, and NoTriggerOnCarried if the item is an XmlQuestToken item, then the status of objectives can also be specified as a requirement using the syntax "itemname,objective,objective,.." in the TriggerOnCarried or NoTriggerOnCarried string.<br />
<br />
For example if you wish to trigger a spawner only when quest item "Blathers Quest" is carried and has objective 1 completed, then use the string "Blathers Quest,1" in the TriggerOnCarried property. If you would like to prevent triggering when objective 1 of that quest has already been completed then use the same string in the NoTriggerOnCarried property.<br />
<br />
GETONPARENT and GETONTHIS<br />
<br />
These are the GET counterparts to the SETONPARENT and SETONTHIS keywords. For attachments, the GETONPARENT keyword allows access to properties on the object that it is attached to. This is generally useful when trying to include properties in substitution strings, such as an XmlDialog where you could have a text string like this<br />
<br />
Hello, my name is {GETONPARENT,name}<br />
<br />
'''Value Keywords'''<br />
<br />
MOB:<br />
<br />
MOB keyword that can be used as a property value when setting properties that need a mobile id. e.g. the combatant property on a mobile. The mobile id of the named mob will be substituted for the MOB entry. The syntax is /MOB,name/ so for example to spawn a mob and have it attack another mob you could specify something like "ogre/combatant/MOB,The outcast", where a mob named "The outcast" had already been spawned somewhere. The two requirements for using this keyword are that the mob must exist and the mob name must be unique.<br />
<br />
RND:<br />
<br />
RND allows you to generate random values when specifying properties RND can be used anywhere that an integer value is normally specified. The syntax for RND is /RND,min,max/ For example ogre/hue/RND,1,500/ADD,0.1/<katana/hue/500/attributes.luck/RND,50,100> would spawn a randomly colored ogre with a 10% chance of dropping a blue katana with random luck values between 50 and 100.<br />
<br />
To spawn a random range of statics from Inside UO, you need to be tricky. You need to ADD,.1/<static,4036/ItemID/RND,4036,4044> This will add a set of shells, static 4036 to a mob/chest, and then you set the ItemID with the RND option to vary the graphic between range 4036 and 4044 which are all shells.<br />
<br />
SKILL:<br />
<br />
The SKILL,skillname keyword can be used both for setting skill values, as well as testing for them. The SKILL keyword can be placed anywhere that a valid property name could be used. For example to spawn a mob with certain skills use a spawn spec like ogre/SKILL,anatomy/100/SKILL,macing/100.<br />
<br />
To set skills on players that triggered the spawner use a spec like SETONTRIGMOB/SKILL,meditation/120/SKILL,magery/120. This can be used to create skill-gate like behavior.<br />
<br />
To test for a skill value for triggering for example, set PlayerTrigProp to SKILL,mining>100.<br />
<br />
TRIGMOB:<br />
<br />
The TRIGMOB keyword, which will substitute the mob who triggered the spawner as its value. Can be used to set any property that takes a mobile as its argument. So, for example, you could use it to spawn a mob that had the player who triggered it as the combatant, "ogre/combatant/TRIGMOB", or spawn pets that are controlled by the triggering player, for example ogre/name/Slave/controled/true/controlmaster/TRIGMOB<br />
<br />
'''Action Keywords:'''<br />
<br />
ADD:<br />
<br />
ADD keyword allows you to add items to spawning mobs packs. The syntax for ADD is /ADD/itemtype, or /ADD,probability/itemtype, or /ADD,probability/<itemtype/prop1/value/prop2/value...> where probability is a drop probability between 0 and 1 and <itemspec> is an embedded item specification, so that you can put attributes on the added item as well. An example of this would be the specification string ogre/name/Lord Bleck/ADD,0.3/katana that would spawn an ogre named Lord Bleck with a 30% probability of dropping a katana.<br />
<br />
As a further example, this can be combined with the note object for simple quest-like behavior using specification strings such as lich/name/Dark Master/ADD/<simplenote/notestring/My soul will not rest until you return with the Ring of the Elements found on my nemesis, the lich lord Artemis in the dungeons of Ilshenar. Take my sword to aid you./titlestring/The Return of Artemis/name/Quest of Artemis/size/2>/ADD/<longsword/maxdamage/RND,30,70> which will add the specified note and sword to a lich named Dark Master.<br />
<br />
ANIMATE:<br />
<br />
The ANIMATE,action[,framecount][,repeatcount][,forward true/false][,repeat true/false][delay] keyword to add animations to any mobile. For example,<br />
<br />
SETONTRIGMOB/ANIMATE,32,5,1,true,false,0<br />
<br />
would cause the triggering player to bow.<br />
<br />
Or used in the Action field on an XmlDialog it could be used to make an npc bow, like:<br />
<br />
SETONTHIS/ANIMATE,32,5,1,true,false,0<br />
<br />
CAST:<br />
<br />
The CAST keyword allows the spawner to cast spells on triggering players. The syntax is CAST,spellname[,arg] or CAST,spellnumber[,arg] where spellname and spellnumber are the registered spell names and numbers found in Scripts/Spells/Initializer.cs. This is used with triggering to allow the triggering mob/player to cause the spell to be cast with the triggering mob/player as the target. Both harmful and beneficial spells can be cast. Karma effects will also be applied. There are no casting delays, so multiple spells may be cast simultaneously. Some spells are are location targeted and can take an additional argument [,arg] which is a range value used to determine a random target location (+-range) relative to the caster. The default and mininum range value is 1. The Polymorph spell uses the 2nd argument as the bodyvalue.<br />
<br />
For example, to set up a spawner to autoheal the triggering mob use the spawn spec CAST,greaterhealspell. To polymorph the triggering player into a bear use CAST,polymorphspell,212. To cast lightning on the triggering player CAST,lightningspell Not all spells will work automatically. Item targeted spells such as mark, recall, and sacredjourney will cast and bring up a targeting cursor.<br />
<br />
NOTE: I will have to figure out if this can work with or be applied to our custom magic system. I dont see why not, but this has not yet been tested.<br />
<br />
DELETE:<br />
<br />
The DELETE keyword can be used to modify a standalone keyword and delete the object that it refers to (it will not allow you to delete players) For example, this spawn entry:<br />
<br />
SET,Mystic Sword,longsword/DELETE<br />
<br />
will delete the longsword named "Mystic Sword"<br />
<br />
SETONMOB,SeeYouLater,Balron/DELETE<br />
<br />
will delete the balron named "SeeYouLater"<br />
<br />
SETONCARRIED,,Gold/DELETE<br />
<br />
will delete gold that it finds being carried by the triggering mob<br />
<br />
SETONSPAWN,TargetSpawner,2/DELETE<br />
<br />
will delete all of the spawns of subgroup 2 on the spawner named TargetSpawner. This is basically the same as using the DESPAWN keyword but will delete all spawns regardless of their CLR flag setting.<br />
<br />
GUMP<br />
<br />
The GUMP keyword that will send a gump containing the designated text to the triggering player. Syntax is GUMP,title,number/text. A default set of gumps has been added, but these can be extended by the user. A sample script XmlQuestGumps.cs has been included showing the form of the default quest gumps. It is required to use the default GUMP features.<br />
<br />
GUMP number 0 is a simple text display gump. GumpState is set to "done" after viewing.<br />
GUMP number 1 displays a gump with yes/no selections. GumpState is set to either "yes" or "no" depending on the user selection.<br />
GUMP number 2 displays a gump with a text entry area. GumpState is set to the text entered.<br />
GUMP number 3 will send a quest gump with accept or decline options. GumpState is set to either "accept" or "decline" depending on the user input.<br />
<br />
UNEQUIP:<br />
<br />
The UNEQUIP,layer[,delete] keyword allows you strip a mobile of an equipped item on the specified layer. If the optional "delete" argument is specified, then the removed item will be destroyed, otherwise it will simply be dropped into the the mobiles pack. For example, you could disarm a one-handed weapon from a triggering player using:<br />
<br />
SETONTRIGMOB/UNEQUIP,OneHanded or spawn a mobile, remove existing equipment, and replace it with new equipment with something like:<br />
<br />
banker/UNEQUIP,pants/UNEQUIP,shoes,delete/EQUIP/sandals/SAY/Hey, where are my pants? This will create a banker, take off his pants and put them in his pack, take off his shoes and delete them, and then put on a pair of sandals in their place.<br />
<br />
MSG:<br />
<br />
The MSG keyword for the spawn specification strings that can be used to display messages over mobs or items when they are spawned. The syntax is /MSG/text/, with an optional probability factor specified using /MSG,probability/text/. So, for example, to spawn a lich that occasionally taunted you, you could use the spec string "lich/MSG,.5/All hope is lost/MSG,0.2/you feeble mortal/MSG/hahahahaa" to give you random combinations of messages such as "All hope is lost hahahahaa", or "feeble mortal hahahaha", or just "hahahahaa".<br />
<br />
Or the string "ham/MSG/a tasty morsel" would place the message "a tasty morsel" above the ham when it was spawned.<br />
<br />
Note, that because the switch/lever objects also use the same syntax for specifying properties on target items, you can use this keyword in conjunction with those items. So, for example, you could have a lever that opened a door, and also displayed a message over the door indicating it had opened using the string "/locked/false/MSG/the door magically opens" in the target item property description.<br />
<br />
GIVE:<br />
<br />
The GIVE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is the same as the ADD keyword, but the item is placed directly into the pack of the player that triggered the spawner,<br />
<br />
GIVE/itemtype<br />
GIVE,probability/itemtype<br />
GIVE,probability/<itemtype/prop1/value/prop2/value...><br />
<br />
TAKE:<br />
<br />
The TAKE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is TAKE/itemname or TAKE,probability/itemname. It will search the trigger players pack, and all containers in the pack for the first item that matches the name, and then delete it. It will not remove containers.<br />
<br />
By combining the GIVE and TAKE keywords, you can have a spawner that takes one item and replaces it with another, for example a quest item can be replaced with a quest reward.<br />
<br />
The TAKE keyword also allows for a partial removal of named stacked items. When called with the quantity argument, TAKE will attempt to remove the specified quantity of the stacked item. If less than the quantity is found, then whatever the amount found will be taken. If the item is not stackable, then the item will simply be taken.<br />
<br />
TAKEBYTYPE<br />
<br />
The syntax for this is TAKEBYTYPE,probability,quantity/itemtype. It is similar to the TAKE keyword but items are identified by type rather than name. For example, to take 1000 gold from a triggering player use the spawn spec TAKEBYTYPE,1,1000/gold.<br />
<br />
Note, by default neither TAKE and TAKEBYTYPE will search a players bankbox. Adding the argument "true" added to TAKEBYTYPE and TAKE keywords allows bankboxes to be included in the searched items. The syntax is TAKE,probability,quantity,true/itemname and TAKEBYTYPE,probability,quantity,true/itemtype.<br />
<br />
SET:<br />
<br />
The SET keyword which is also used as a spawn spec and is "spawned" just like a regular mob/item. It sets properties on a target item that is specified in the SetItem property of the spawner. You target an item and when the spawner is triggered, it will apply the property changes contained in the SET specification string. For example, this can be used to open a door when certain trigger requirements are met, such as saying a keyword, or possessing an item, etc. using a spec string like:<br />
<br />
SET/locked/false/MSG/the door is magically opened, and targeting a door from the SetItem property, or making a switch or lever or chest visible, when triggered with the spec line SET/visible/true.<br />
<br />
Any property that can be written using the .set command, can be linked to spawner triggering using the SET keyword. Because the SET commands are "spawned" just as other mobs are spawned, they can be used to set properties of items at specified intervals by using spawners that are not triggered but are simply run on the normal timed schedule. For instance, using the time of day feature, you could have a set of doors that are locked during the day and opened at night, or are locked and unlocked occasionally on a 5-10 minute schedule (min/max delay).<br />
<br />
Note, in order to have the target item properly saved to an xml file when using .xmlsave, the target item must have a unique name.<br />
<br />
SETONTRIGMOB:<br />
<br />
The SETONTRIGMOB keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item, it is just that nothing is created but rather target properties are set on the mob that triggered a spawner. This could be used for example to drop mana or stamina when a player comes within range of a spawner, or kills a target number of mobs, or is carrying an item, etc. Or hide the player when a keyword is spoken and they possess a specific item. (e.g. spawn spec SETONTRIGMOB/stam/0/mana/0, or SETONTRIGMOB/hidden/true)<br />
<br />
Also, by changing the x,y,z properties of the trigger player, it can be used to construct more sophisiticated teleporters, such as one that sends a player to a new location when they are carrying an item, and a target lever is in a specific position, or when a certain number of mobs are killed, or when their health reaches a certain level, etc. As well as the more straightforward type of triggering such as on a keyword.<br />
<br />
Note, this is potentially a VERY powerful ability. Use of this feature should be made with care, since it can make changes to any writable players attributes. Of course, it cant do anything more than an admin could do normally by using the .set command on a player.<br />
<br />
====XML Attachments====<br />
For a list of available attachments, type in game .availatt<br />
<br />
Local variables are stored as XmlLocalVariable attachments on the spawner and can be viewed and modified using the .getatt command and targeting the spawner.<br />
<br />
Supports the use of modifiers like global, multi, area, etc. with the .addatt and .delatt commands that add and delete attachments from objects (thanks to Vento Divino for the suggestion). So to add a particular attachment to all players you could do something like<br />
<br />
.global addatt xmldata datavalue where playermobile<br />
<br />
and to remove those attachments you could use<br />
<br />
.global delatt xmldata where playermobile<br />
<br />
Some of the stat and skill mod attachments are (will add syntax when I find it):<br />
* XmlStr<br />
* XmlDex<br />
* XmlInt<br />
* XmlSkill<br />
<br />
and the fame, karma, and virtue attachments are:<br />
* XmlAddFame<br />
* XmlAddKarma<br />
* XmlAddVirtue<br />
* XmlStamDrain<br />
* XmlManaDrain<br />
* XmlLifeDrain <br />
<br />
When attached to a mob or weapon, these will drain stam/mana/life from the defender on each hit and give it to the attacker. If attached to an item in the world, it will drain a random amount of stam/mana/life when a player moves near it. The random value will be between 0 and the argument to the attachment. The default refractory period between uses is 5 seconds. If a negative drain value is given, then the attachment will be reported as a curse when attached. For example, using the command<br />
<br />
.addatt xmllifedrain 30 3 120<br />
<br />
and targeting a mob, would give that player/mob 2 hours of lifedrain ability that would drain 0-30 hps on every hit, with a max rate of once every 3 seconds.<br />
<br />
'''XmlSaveItem'''<br />
<br />
This attachment that allows you to internalize an item and hold it on the attachment for later retrieval. This is used by xmlspawners and xmldialogs to keep track of taken items, but could be generally used to temporarily hold items. The SavedItem property can also be manually set and will internalize and maintain the targeted item on the attachment. When the attachment is deleted, the saved item is also deleted. By setting the RestoreItem property on the attachment to true, the saved item will be placed back into the world at the location of the object the attachment was attached to. If at any time the saved item is placed into the world (moved off of the internal map), XmlSaveItem will no longer keep track of it.<br />
<br />
'''.xmledit'''<br />
<br />
This utility is for editing XmlDialog specifications while ingame. This allows you to add or change npc dialog without having to create and load a .npc file. Just issue the command "[xmledit" and target an object with an XmlDialog attachment. If it does not have an attachment, you will be asked if you wish to add one.<br />
<br />
The editing gump is divided into four sections.<br />
<br />
The top section allows you to change the overall properties of the attachment, such as triggering range, triggering conditions, and reset time.<br />
<br />
The middle section allows you to view and select a specific speech entry for editing. Press the button to the left of the entry to select it. The checkboxs on the right are used to select entries for deletion. Check the boxes of entries you wish to delete and then press the Delete button at the bottom of the gump. You will be prompted to confirm deletion. To add a new speech entry, just press the "Add" button at the bottom of the gump and a new empty entry will be added to the end of the entry list.<br />
<br />
The lower section allows you to edit the selected entry. Enter in the new values. The changes will take effect the next time the gump is updated, either by selecting the "Refresh" button at the bottom of the gump, selecting another entry, or exiting the gump.<br />
<br />
Currently, text entry is limited by the size of the text entry field. This will be updated with the book text entry interface in an upcoming version.<br />
<br />
The bottom section contains buttons for Refreshing the XmlDialog, Adding a new speech entry, Deleting selected entries, Saving the XmlDialog specification to a .npc file, and paging through the speech entries.<br />
<br />
The specification can be saved to a .npc file by entering in a filename in the "Save to file" text entry area and pressing the button next to it. The .npc extension will automatically be added. If the XmlDialog was loaded from an existing .npc file, that filename will be shown in the "Config:" field to the left of the Save option. There is currently no check for overwriting an existing file, so be careful (I will be adding this feature). This option is restricted to administrators.<br />
<br />
'''TemporaryQuestObject'''<br />
<br />
The syntax is: TemporaryQuestObject,questname[,expiration]<br />
<br />
This attachment allows you to tag items/mobiles so that they are automatically deleted after some period of time, or whenever the quest they are associated with is completed (when the questholder associated with the quest deleted). (thanks to Eymerich for the idea).<br />
<br />
To use this simply put the attachment on an object, and assign the questname, owner.<br />
<br />
You can also use it to make temporary objects that are not associated with a quest by just specifying an expiration time. The way it works is When the attachment is deleted, the object it is attached to is also deleted. Typically you would probably create the object with the attachment using a spawn entry like this:<br />
<br />
GIVE/<questholder/name/MyQuest/objective1/KILL,orc/autoreward/true/rewardstring/gold,100> GIVE/<longsword/name/Quest Sword/ATTACH/<temporaryquestobject,MyQuest/questowner/TRIGMOB>><br />
<br />
This would hand out a quest named MyQuest, and then give the triggering player a longsword named "Quest Sword" that was associated with MyQuest. Note that the mobile who is the questowner of the temporaryquestobject must be manually specified by setting the QuestOwner property on the attachment.<br />
<br />
To make a general temporary object independent of any quests, just use the attachment with an expiration time like this<br />
<br />
longsword/name/poof/ATTACH/temporaryquestobject,tempsword,3<br />
<br />
which would make a sword that would autodelete after 3 minutes (the name "tempsword" could be anything since it it isnt really used for autodeletion and is just to identify the attachment).<br />
<br />
'''XMLFreeze:'''<br />
<br />
The XmlFreeze[,seconds] attachment that allows you to permanently or temporarily freeze a mobile in place. If attached with no duration argument, they will remain frozen until the attachment is removed. This can be used with the ANIMATE keyword to keep mobs from moving while animations are applied.<br />
<br />
orc/ATTACH/xmlfreeze,10<br />
<br />
would spawn the orc frozen for 10 seconds.<br />
<br />
SETONTRIGMOB/ATTACH/xmlfreeze,10/MSG/You are frozen with fear!<br />
<br />
would freeze the triggering player for 10 seconds and send them a message.<br />
<br />
'''XmlMorph'''<br />
<br />
This attachment changes the BodyMod property of target mobiles. When mobiles are deserialized, they automatically restore their default bodytype, so the OnReattach method can be used by the attachment to override this and restore the desired BodyMod assignment.<br />
<br />
'''XmlWeaponAbility:'''<br />
<br />
This attachment allows mobs to be given special attacks on the fly. You can add special attacks to a spawned mob with a spawn entry like:<br />
<br />
orc/ATTACH/xmlweaponability,BleedAttack<br />
<br />
or manually add it to any mob with<br />
<br />
[addatt xmlweaponability BleedAttack<br />
<br />
and then target the mob. Note, the attack name is case sensitive and can be any of the following:<br />
* ArmorIgnore<br />
* BleedAttack<br />
* ConcussionBlow<br />
* CrushingBlow<br />
* Disarm<br />
* Dismount<br />
* DoubleStrike<br />
* InfectiousStrike<br />
* MortalStrike<br />
* MovingShot<br />
* ParalyzingBlow<br />
* ShadowStrike<br />
* WhirlwindAttack<br />
<br />
'''Other Keywords:'''<br />
ARMOR, WEAPON, POTION, that will create random magic items of the type specified.<br />
<br />
ARMOR,min,max will drop a random piece of armor, shield, or jewelry with an attribute level randomly selected between min and max. min and max can range between 0 and 5 with 5 being the most powerful.<br />
<br />
WEAPON,min,max does the same for weapons.<br />
<br />
POTION drops a random potion,<br />
<br />
Add these to the spec line in place of normal types, i.e. wherever you would use a typename like katana, or platehelm, just substitute these keywords. These can either be used as the basic entry in a spawn spec, therefore spawning them directly, or they can be used with the ADD keyword to add them to a spawned mobs pack. e.g. ogre/ADD,0.5/WEAPON,2,5 would spawn an ogre with a 0.5 probability of dropping a lev 2-5 magic weapon.<br />
<br />
The spec line ARMOR,5,5/name/Bruiser/hue/300/durability/200 would spawn a random piece of magic armor of level 5, name it Bruiser, turn it blue, and set its durability to 200.<br />
<br />
The spec line ogre/ADD,0.5/<ARMOR,5,5/name/Bruiser/hue/300/durability/200> would add that piece of armor to a spawned ogres pack with probability 0.5<br />
<br />
The line GIVE/WEAPON,5,5 would give a level 5 magic weapon to the player that triggered the spawner.<br />
<br />
'''Quest Items:'''<br />
<br />
'''SimpleNote'''<br />
<br />
There is a new SimpleNote object in the included script simplenote.cs which is an item that can be used independently, but is designed as added content for exercising spawner capabilities for more dynamic quest-like use. It is NOT needed for the spawner to function and is purely optional.<br />
<br />
It allows construction of simple notes/messages that are designed to be read by players by opening into a scroll gump of variable size. The text of the note, its title, and text color can be specified by the user. The note can be defined in the spawner and can be used to pass trigger requirements etc. to the player. e.g. in the spawn specification string enter: simplenote/notestring/Seek out the Sword of Misery that is held by the ogre lord Blasphema in the forest north of Trinsic. Call out to him, and you will bring him forth./size/2/titlestring/The Quest for Blasphema/name/Blasphema's Quest.The triggering of the spawn could then be made dependent upon the player possessing the named note ("Blasphema's Quest").<br />
<br />
'''QuestNote:'''<br />
<br />
The quest item (QuestNote) and quest token item class (XmlQuestToken), that allows multi-part quests, with expiration time, and transfer restrictions. By placing quest information on these player carryable tokens, quests can be made without modification to playermobiles, or to any scripts at all, making them completely portable. XmlSpawners can modify or read multiple objectives on the items using the objective1-5 and completed1-5 properties.<br />
<br />
The use of quest token items for mainenance of quest information also allows for multiple simultaneous quest simply by possessing the appropriate tokens. Quest item properties are public, so scripts can freely access them for constructing specific quest scenarios that can then be used to drive spawning.<br />
<br />
Items that belong to the XmlQuestToken class lose their validity whenever they are transferred from the original owner, either to other players, to the world, or to containers not in the players pack. This prevents transferral of quests, and other exploits. These items are also blessed by default.<br />
<br />
When an XmlQuestToken item is used as the target of carried-item triggering (TriggerOnCarried property), then it must be valid (never removed from the players pack), and satisfy specified subobjectives in order to trigger. (see TriggerOnCarried, and NoTriggerOnCarried multiple objectives. Objective status can be seen on the quest log status gump).<br />
<br />
XmlQuestTokens can also be given limited lifetimes using the expiration property. Due to limitations in the way in which TimeSpan type variables are handled by .net, currently the maximum expiration time for a quest token is 24 hours.<br />
<br />
'''Other Items:''' <br />
* Added several new items for added content that are independent but enhance the use of the xmlspawners. They are a switch, a lever, and a combination lock.<br />
The script SimpleSwitches.cs adds a 2or3-state lever, a 2 state switch with different facings determined by direction (not by flipping), and a combination lock. The states of the lever can be used to set properties on target items such as doors (locked/unlocked), or even to add items to containers. By setting the TargetItem and TargetProperty properties, you link the switch/lever states to certain item properties. So, for example to use a switch to open a door when the switch is in the 1 state, set Target1Item to the door and then set Target1Property to /locked/false (note, it uses the same syntax as the xmlspawner2 property specification strings. Since it shares the same syntax, you can also have it do things like change the color of an item, or add items to a container using the ADD/<spec> string.) SimpleCombinationLock simulates a multi-digit (max 8) combination lock. The state of each of the digits can be set using (for example) the lever or switch items. The combination is set in the Combination property. So the combination of 378, would correspond to digits 2,1,0 taking on values of 3,7, and 8 respectively. The Match property can be tested to determine when the target combination is matched by the combination of digits. Note that digit number corresponds to significance, from least to most. Each digit is a property (Digit0, Digit1, Digit2, ... Digit7) and can take on the values 0-9. You can set the property string to indicate either a property name on the target item (e.g. switchstate, or leverstate, or totalgold), or you can specify a test such as totalgold<100, or open=false, or locked=true. You could use this item to look for certain combinations of switches or levers, door states, etc. or even combinations of levers, and weight of a container, or number of kills on a spawn etc., and then open a door, or add items to a container, or change the color of a stone, trigger a spawn, etc.<br />
* Added new items TimedSwitch, TimedLever, XmlLatch, and TimedSwitchableItem.<br />
Similar to the SimpleSwitch and Simple lever, the TimedSwitch, TimedLever items add a reset timer to the switch/lever states with min/maxdelay properties and are derived from the XmlLatch which is a new class that supports resettable switching, and can be used as an item itself to implement a resettable latch (set the state externally and it will hold that state for some time and then reset). The item TimedSwitchableItem is a TimedSwitch that allows you to specify the Item statics that will be assigned to each state, allowing flexible user-defined visuals during switching, such as a torch or a stone, or a wall section, etc. Because it is a TimedSwitch you can assign actions that are associated with each state as well, such as opening a door when double-clicking a torch, or opening a secret passage when double-clicking on a wall section, etc. The current switching state of all of these items is contained in the State property, and the ResetState is the value that the State will be returned to after the reset timer expires.<br />
<br />
==XML Dialog Editor==<br />
<br />
'''Project Description'''<br />
<br />
The XML Dialog-Editor is a tool to create or edit the NPC-Dialogs (*.npc) from RunUO's XMLSpawner by ArteGordon. In addition to the standard-functionality the ".xmledit"-command gives you ingame I made a few features to make this editor as newbie-friendly as it could be.<br />
<br />
One of the biggest problems are a lot of XMLSpawner-specific commands, values etc. with a lot of (optional) parameters. A complete documentation is not present at the moment, only a chronological release-info. So when I want to know how a specific thing is working in the actual version I have to look backwards through the whole txt-document - it's time consuming in case you are not working on a daily basis with this (great!) system and knowing it's niceties. So on top of my wish-list for the editor are wizards for all of those text-fields. <br />
<br />
Some minor issues are resulting from the Ultima Online client itself and it's usability with dialogs: You cannot edit the text of a textbox by clicking right in the middle of the text, thats working only with those books. Also there is not much space to view all those necessary information so it's difficult to get a overview of your dialog (e.g. dependings) 'cause resizing of the gump isn't possible, either - no matter if you have a 1024x768 resolution or a 16:9 tft. The fact that you have to be online is just an additional fact - and not every Gamemaster or Seer wants to run a local "development"-server only to make new dialogs offline (e.g. when traveling with a notebook). <br />
<br />
All those things keeping in mind I started with my XML Dialog-Editor and added a few more points to my whishlist on-the-fly (exporting to txt-file for posting in a forum, connecting to a server for remote-editing, ...). The actual version is a first result of my efforts and I'm still working on a lot more things. A great system like the XMLSpawner is deserving not just a "good try" and my effort is to give the community something great in return for all those things I learned from her!<br />
<br />
'''Feature List'''<br />
<br />
*wizards for most textfields<br />
*implemented all XmlAttachments with overloaded constructors<br />
*implemented commonly used properties and other commands / values (e.g. nametypes)<br />
*listview like the one in ultima online<br />
*treeview for dependancies overview<br />
*export as textfile and pdf (flow chart)<br />
*create / edit dialogs via FTP-server<br />
*deleting and duping many items at the same time<br />
*multilanguage support (currently english and german)<br />
*bugs and feature-requests can be submitted out of the program via a simpel dialog<br />
*installation and auto-update via ClickOnce<br />
<br />
DOWNLOAD: [https://xmldialogeditor.codeplex.com/ XML Dialog Editor]<br />
<br />
Last edited Sep 22, 2008 at 4:21 AM by Anheledir, version 3<br />
<br />
==XML Siege System==<br />
<br />
Original information compiled by Dante on UO Evolution<br />
<br />
NOTE: This XML Siege System is being installed and tested to do large events and monster invasions. This wiki is a work in progress and I will add more info as I test the system.<br />
<br />
This system allows objects and structures to be damaged by siege weapons and repaired by siege tools. <br />
<br />
ANY non-frozen object can be made damageable - walls, doors, signs, trees, multis, addons - anything. A GM has to tag them with the xmlsiege attachment<br />
<br />
Weapons included are the Siege Cannon and Siege Catapult that fire siege cannonballs, and the Siege Ram that uses siege logs.<br />
<br />
Hand siege weapons are also supported.<br />
<br />
Siege Cannons have a 20% damage bonus and 20% increase in range when compared to catapults using the same projectiles.<br />
<br />
weapon damage will be reduced by up to 60% from its max value depending on how damaged the weapon is, and firing range reduced by up to 30%<br />
<br />
different types of cannonballs to do different amounts of damage to creatures and to structures <br />
<br />
The Siege Ram is for close range attacks on structures. It has a faster attack speed than either the cannon or catapult, and the new Siege Log ammunition can produce heavy damage to structures but is ineffective against creatures and has very short range.<br />
<br />
The ram can also be loaded with SiegeLog stacks so that it can attack repeatedly without having to reload after each attack.<br />
<br />
===Seeing object damage===<br />
<br />
Once an object is damaged it will change color to indicate the level of damage.<br />
<br />
The default colors are: <br />
<br />
Green = 67-99% of max<br><br />
Yellow = 34-66%<br><br />
Red = 1-33%<br><br />
<br />
Blue is also temporarily assigned to objects that have just had the XmlSiege attachment added to them so that you can see what is damageable.<br />
<br />
Once the Hits for an object reach zero, then the ItemID of the object will be changed to the DestroyedItemID propery of the xmlsiege attachment. Individual attachments can have their own DestroyedItemID settings. The default is a lava pool.<br />
<br />
===Repairing damageable objects===<br />
<br />
<b>Siege Repair Tool</b> - this is used to repair damaged objects<br />
<br />
Using the tool - Just double-click to use and target the damaged object to be repaired. It can be given either limited (set UsesRemaining to a value > 0) or unlimited number of uses (set UsesRemaining to a value < 0).<br />
<br />
<b>Repair resources</b><br />
<br />
You must have the required resources to repair the targeted object. The default setting is to repair 100 hits of damage per use.<br />
<br />
Objects can require wood, iron, and/or stone for repair.<br />
Iron = IronIngot<br />
Wood = Board<br />
Stone = Granite<br />
<br />
<b>Repair time</b><br />
<br />
The speed of the repair will depend on their Blacksmith and Carpentry skills as well as dexterity. With max skill and dex it can be as fast as 3 seconds. With no skill it can take up to 15 seconds.<br />
<br />
If you are missing any of the resources, the repair will not be done but any of the other resources that were needed and that you were carrying will be consumed.<br />
<br />
===Siege Cannon===<br />
<br />
<b>Changing the cannon facing</b> <br />
<br />
Then you can change the facing while it is placed using the 'Previous/Next' options in the context menu that comes up when you click it.<br />
<br />
<b>Moving a cannon</b><br />
<br />
To move a cannon you must first pack it up using the 'Backpack' context menu option. This takes time (15 seconds) and you must be next to it at the beginning and end of packing. When finished you will have a crate in your pack that you can place anywhere.<br />
<br />
<b>Firing a cannon</b><br />
<br />
To fire a cannon you must first load a cannonball into it. Then double-click the cannon and select the target.<br />
The target must be within the cannonball range, and within the firing arc of the cannon. Note, that you can target mobiles as well as structures, and mobiles will also take splash damage from area damage cannonball attacks.<br />
<br />
<b>Taking damage</b><br />
<br />
The cannon is configured with an xmlsiege attachment by default, so it can take damage from other cannons as well.<br />
<br />
===Cannonballs===<br />
<br />
I have added a few different types of premade cannonballs, but you can easily modify them or add your own. You can even create them and change their settings on the fly since all of their properties are accessible.<br />
<br />
Cannonballs have the following configurable properties:<br />
<br />
<b>Range</b> - maximum range in tiles <br><br />
<b>Area</b> - number of tiles surrounding the target that will also take damage<br><br />
<b>AccuracyBonus</b> - mod that affects chance of hitting the target<br><br />
<b>FiringSpeed</b> - mod that reduces the minimum interval between firing<br> <br />
<b>PhysicalDamage</b> - amount of physical damage delivered<br><br />
<b>FireDamage</b> - amount of fire damage delivered<br><br />
<br />
The premade cannonballs included are:<br />
<br />
*lightcannonball<br />
*ironcannonball<br />
*explodingcannonball<br />
*fierycannonball<br />
<br />
<b>Loading a cannonball</b><br />
<br />
Just double-click a ball and then target a cannon. You must be close enough to both, although you can dclick the ball, and then move to the cannon.<br />
<br />
===XML Siege Dowload===<br />
<br />
[http://downloads.runuo.net/index.php?dir=Scripts/RunUO/Xml%20Siege%20system%20V0.7a/ XML Siege Dowload]<br />
<br />
==XML Dungeon==<br />
==XML Code Examples==<br />
<br />
*[[XML Systems and Downloads]]<br><br />
*[[XML Code Examples by Expo]]<br><br />
*[[XML Code Examples by Kane]]<br><br />
*[[XML Code Examples by Dante]]<br><br />
*[[XML Code Examples by Mogster]]<br><br />
*[[XML Code Examples by Hestia]]<br><br />
*[[XML Code Examples by Ghost]]<br><br />
<br />
==XML External Links==<br />
<br />
*[http://downloads.runuo.net/index.php?dir=XMLSpawner/ RunUO Downloads - XML Spawner Guide]<br><br />
*[http://uorforum.com/threads/xml-spawner2-commands-and-examples.10280/ XML Spawner2 Commands and Examples - UO Renaissance Forum]<br><br />
*[https://www.servuo.com/tutorials/xmlspawner-quick-commands-advanced-installation.5/ Advanced XML Spawner Installation Guide - ServUO]<br><br />
*[https://www.servuo.com/archive/the-ultimate-xmlspawner-how-to-guide-archive.150/ Ultimate Xmlspawner how-to-guide]<br><br />
*[https://www.servuo.com/threads/xmlspawner-tutorials.3130/ XML Spawner Tutorials]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawner Fan]<br><br />
*[http://www.uoroleplay.com/resources/XMLSpawner/XML_Spawner_Unzipped/xmlspawner.15.forumer.com/XML%20Spawner/xmlspawner.15.forumer.com/a/qampa-13/index.html XML Spawner Q&A]<br><br />
*[http://www.usamimi.info/~gogogo/xmlspawner/index.htm XML Spawner Basics]<br><br />
*[https://github.com/ArchangelUO/XMLSpawner XML Spawner Github 2.1, 2.2 and Orb 2.2]<br><br />
*[https://www.scribd.com/document/69981938/XML-Quest-4-Dummies-RunUO-Ultima-Online XmlQuest 4 DummiesHow to build a perfect questVer. 0.3]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=XML_Spawner&diff=33
XML Spawner
2018-06-21T18:15:05Z
<p>WikiSysop: /* What is XML Spawner? */</p>
<hr />
<div>==XML Spawner==<br />
<br />
XmlSpawner2 v3.24<br />
updated 2/11/08<br />
ArteGordon<br />
===What is XML Spawner?===<br />
<br />
XML Spawner is a spawn control system based upon Bob Smart's xmlspawner with features, items, and commands supporting sophisticated conditional spawn triggering, individual <br />
customization of spawns and their drops, and systems for stealable rares, <br />
interactive npcs, functional attachments, mob factions, pvp points, custom weapon <br />
attacks, item/creature socketing, and quests.<br />
<br />
[[https://github.com/SpagMonster/XMLSpawner XML Spawner Github]]<br />
<br />
===XML Spawner Guide===<br />
<br />
This Xml Guide contains organized information from all of the How-to posts from various Xml forums<br><br />
<br />
*[http://www.runuo.net/forum/forum/software-support/xml-spawner-support XML Spawner Forum]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawnwer Fan Forum]<br><br />
<br />
Important Forum Posts - Xml Spawner<br><br />
<br />
*[[XML Spawner - General]]<br><br />
*[[XML Properties]]<br><br />
*[[Load and Import Files]]<br><br />
*[[Creating Spawns]]<br><br />
*[[Creating Triggers]]<br><br />
*[[Creating XmlDialogs]]<br><br />
*[[XML Attachments]]<br><br />
*[[Defining Regions with XML]]<br><br />
<br />
===XML Spawner Tutorial===<br />
<br />
====XML Commands====<br />
<br />
*'''xmlhome''' <target> returns the coordinates of the spawner for the targeted object. Also takes arguments:<br />
* '''go''' that teleports you to its spawner,<br />
* '''gump''' that opens its spawner gump,<br />
* '''send''' that sends the object back to the spawner location<br />
Example: .xmlhome gump <target><br />
<br />
*'''xmlshow''' This command turns spawn crystals into ships masts making them much easier to spot. One thing to remember about those masts is that even though they are hidden to players, they will still block movement, so you dont want to leave them as masts.<br />
<br />
*'''xmlhide''' hides the spawners, returning them to magic crystals from a ship's mast.<br />
<br />
*'''xmlsave''' filename will save all of the spawners on the current map to the file<br />
<br />
*'''xmlsaveall''' filename will save all spawners in the world to the file<br />
<br />
*'''xmlspawnerrespawn''' forces a respawn of all xmlspawners in the region<br />
<br />
*'''xmlspawnerrespawnall''' forces a respawn of all xmlspawners in all regions<br />
<br />
*'''xmlunload''' deletes spawners that are contained in an xml file. Basically the reverse of the load command. This provides a quick way of adding and removing specific sets of spawners that would represent a logical group, such as a mini-quest, or a dungeon, without having to use common naming prefixes, and without risking unintended spawner wipes that might occur with the use of the .xmlspawnerwipe prefix, command. Because it is the complement of the .xmlspawnerload (.xmlload) command, the effects of using it can always be reversed by simply doing an [xmlload on the same file.<br />
<br />
[http://www.runuo.net/wiki/index.php/XmlSpawner_Command_List,_description_of_all_xmlspawner_commands Complete List of all XML Spawner Commands]<br />
<br />
====Setting a new Spawn====<br />
How to Set the spawn:<br />
<br />
The first thing you need to do to create a spawn is creater the spawner bit. Type the command: .add xmlspawner (enter)<br />
<br />
This will create a "magical crystal" - Double Click the crystal to access the spawner gump, which looks like this:<br />
<br />
Spawnermain.jpg<br />
?<br />
====Name your XML Spawners====<br />
You can change the name of your spawn to whatever you wish at the top of the gump. You should try to use a name that includes what the spawn contains or a name you can remember for easy reference later. (Example: Haven-rats)<br />
<br />
To add a spawn to the bit you can add the creature name directly into the top line of the spawner gump (ex. rat or cat), or if you do not know or are unsure of the mobiles (creatures) name you can select the arrow at the right of the entry line which will bring up a menu of available items and mobiles to select (see red circle below): <br />
<br />
Spawnmenu.jpg<br />
?<br />
You can add up to 60 creatures/mobiles to one bit (though I doubt we will need to use that many on a single bit). Once you have the creatures listed that you wish to spawn, you can set the amount of each entry by clicking the Up/Down arrows to the left of that entry.<br />
<br />
The COUNT and MAX entries on the right side will update as you go. The bit is active by default so as you raise the total number of creatures they will appear around the bit. The default range (wander distance) of 5 and spawn interval of 5-10 mins. will be set on the bit unless and until you change in it the spawner props menu. (Will tell you how to change this later)<br />
<br />
Hitting the RESET button in this gump will remove all spawn in existence and turn off the bit. You can turn the spawn back on by clicking the red on/off button (changing it back to greeen) or by hitting the respawn button. The only difference here is RESPAWN will activate the bit and spawn all creatures listed for it, while turning the bit on only reactivates it and it will spawn based on the range and time intervals set rather then all at once. RightClick on the gump will close it and save the settings on the bit.<br />
<br />
You have created a basic creature spawn. ?Congrats.<br />
<br />
====Spawn Creation Shorthand====<br />
<br />
Once you have worked with the spawner and become familiar with how it works, you may wish to use the gumps less often, especially for basic spawns. THe spawner gives you this option with "constructables"<br />
<br />
For example:<br />
* .add xmlspawner creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange spawnrange creaturename.<br />
<br />
This simply matches the constructable calls available for the regular spawner through the gump itself.<br />
<br />
Container Spawning:<br />
placing a spawner in a container will allow items to be spawned in it (but not mobs). To get this to work properly you must create the spawner in one of two ways:<br />
<br />
'''EASY WAY:''' You can .addtoPack xmlspawner and target the container you wish the item to spawn inside and then edit the spawner from there.<br />
<br />
OR<br />
<br />
'''LONG WAY''' You can .add xmlspawner and target a spot on the ground. Type .set movable true, target the spawner you made, pick up and place the spawner in the container you wish the spawn to be. Then type .set movable false, target the spawner, thereby locking it in place inside the container. The spawner is not visible by players.<br />
<br />
Editing Individual creature or item spawns:<br />
XML is geared to accept commandline-like spawn specification. This basically allows you to set properties of each spawn in the spawner using a /propertyname/value/ format, Multiple properties can be specified for each spawn allowing mob/item naming, unique property setting, etc. This works well in conjunction with the item-triggering feature since you can create items with specified names that match the trigger name of another spawner.<br />
<br />
'''Creatures:'''<br />
<br />
An example of the specification would be instead of just listing an ogre to be spawned you would list an ogre/name/The Butcher/str/190/damagemax/50/hue/500, which would create a blue ogre, named "The Butcher", with 190 strength, and maximum attack damage of 50.<br />
<br />
Accessing the editing feature:<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
'''Items:'''<br />
<br />
You can also spawn items in the same way e.g. specifying a woodenchest/hue/300/movable/false would create a green locked down chest, or katana/name/Master of elements/slayer/elementalban/hue/200 would create a named light blue elemental super slayer. Note, the properties that you can set are basically the same as those that you can change with the .set command.<br />
<br />
XMLspawner also supports setting nested attributes on items such as armorattributes. To access these attributes use dot notation e.g. to change luck on a weapon use the specification string: katana/attributes.luck/50 or platehelm/armorattributes.magearmor/1/skillbonuses.skill_1_name/anatomy/skillbonuses.skill_1_value/20 to set magearmor and add +20 anatomy. These are the same property names that appear in the props list.<br />
<br />
'''Accessing the editing feature:'''<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
Gumpedit.JPG<br />
?<br />
<br />
As you can see in the red circle above, the line is inputted in a text format in the book shown in the upper right and applied to that spawners entry in the main spawner gump (lower right in image above). In this case we have created a cow named Benny (circled in purple) that is hued to 450 (beige in this case) and given hitpoints of 100. - Gotta check syntax on HITS in this case because I think I did it wrong in the example I screenshot--oops.<br />
<br />
'''Weighted Probability spawning:'''<br />
With multiple entries in an xmlspawner, if maxcount on the spawner is equal to the total of the individual mob counts (the default condition), then the spawner will behave exactly as the original xmlspawner, but by reducing maxcount you can produce a reduced number of total spawns in which an individual mobs spawning probability is based on the relative count ratio.<br />
<br />
To implement a rare single mob spawn simply add multiple mobs to a single spawner in the ratio that you want them to spawn with, and then set the maxcount to 1. This will result in a single spawn that will produce any one of the multiple mobs with the probability of getting each determined by the count.For example:<br />
7. add a balron, count = 1<br />
8. add a gargoyle, count = 10<br />
9. go to the xmlspawner props and set maxcount to 1<br />
10. do a respawn and you are done.<br />
<br />
<br />
This will result in a single spawn that will produce a balron roughly 10% of the time (actually 1 out of 11) and gargoyles the rest of the time.<br />
<br />
I use this to put named spawns in as the rare with comparable basic spawns as the common, e.g. a named lich, that spawns rarely instead of a regular lich. Of course, you can also specify these parameters in your xml spawner files: Example (from XML file):<br />
<br />
<MaxCount>1</MaxCount><br />
<br />
<Objects>ratman=15:ratmanarcher=15:barracoon=1</Objects><br />
<br />
This will give you a spawn that will produce a single ratman or ratman archer with equal probability about 48% of the time each and a named mob about 3% of the time (1 out of 31 times)<br />
<br />
'''Understanding Spawner Props:'''<br />
Now that we know how to make a spawn, it is time to look at how to customize it. XmlSpawner allows for a wide array of customizations, from spawn intervals to player approach and speech triggers. To make adjustments to a spawner, you need to access the PROPS gump.<br />
<br />
From the main spawner menu (DCLICK the spawner). Click the props button at the bottom right of the main menu (see image above). This will open the props gump (pictured below). It is important to understand that these settings are for the spawner NOT for the individual creatures on the spawn bit. Those can be edited more specifically (we will get into these later). The spawner props gump looks like this:<br />
<br />
Propsgump.jpg<br />
?<br />
<br />
'''Important Spawner PROPS'''<br />
In this section we will discuss the various prop settings in more detail. As we learn their uses this section will expand, so if a setting is missing at this point, I am not sure how to set or use it, or I have no idea what it does yet.<br />
<br />
I have found some prop settings to be more helpful then others. Some that I think are really helpful and used more often are listed first:<br />
<br />
'''MaxDelay'''<br />
This sets the maximum time before the spawn triggers again until the MAX COUNT setting is reached for that creature in the spawn list. It only triggers ONE mob/item at a time for the range. So if you max count is 10 and your max and min delay are both 1 minute, and the entire spawn is wiped out, it would take 10 mins to completely respawn.<br />
<br />
'''MinDelay'''<br />
This sets the Minimum time the spawner will wait before triggering the next creature on the spawn.<br />
<br />
'''ShowBounds'''<br />
The default setting for this is FALSE, but when set to TRUE it gives you a white box that shows you the spawn range box that is current set on the spawner. This is the area in which the spawners will appear. They may or may not be set to stay in that box once spawned (see HomeRange). Turning this on is very helpful when working with a spawner. It can be turned on or off as needed.<br />
<br />
'''NoTriggerOnCarried'''<br />
This property blocks spawner triggering when the player is carrying the named item. This can be used to prevent a quest spawns (e.g. starting quest gump) from being triggered if a quest item (e.g. starting quest token) was already in the players possession.<br />
<br />
'''TriggerOnCarried'''<br />
This property has the opposite effect on the spawner. When set, the spawn will only fire if the trigger item is present.<br />
<br />
'''X1_Y1'''<br />
This prop changes the NW or Upper left corner of your spawner range box. When you select this prop you are then given the option to use your current location for the target, use a targeting cursor to choose the location, or finally you can enter the X,Y and Z coords manually.<br />
<br />
'''X2_Y2'''<br />
This prop works exactly like above, but set the SE or lower right corner of your spawner range box.<br />
<br />
'''HomeRange'''<br />
This is how many times the spawn will wander from the bit after they spawn. Basically their "home area".<br />
<br />
'''SpawnRange'''<br />
This setting reflects how far from the bit a spawn will appear when it is first spawned. If you set the SpawnRange outside or larger then the HomeRange, the creatures that spawn otuside the HomeRange will work their way back home over time.<br />
<br />
'''Time of Day (TOD)'''<br />
Set the TODStart and TODEnd to the times of day that you would like to limit spawning to. If they are set to the same value, that enables spawning at all times. If the Start value is greater that the end value, that indicates a time window that spans midnight. Proximity triggering will also be limited to the TOD window. Spawns that remain after the TOD window has passed will be removed. Note that timing of spawning is still governed by the spawn timer (can be seen as the NextSpawn property in the spawner property list). The TOD window simply determines whether a spawn will be allowed to be created once the spawn timer has elapsed. The TOD window is also applied to proximity triggering. It determines both whether the trigger can be set (must be triggered during the TOD window), as well as whether the spawn can be created (spawn must occur during the TOD window).<br />
<br />
'''TODMode'''<br />
The TODMode property that allows Time of Day (TOD)-dependent spawning to be in either Gametime or Realtime.<br />
<br />
'''PlayerTriggerProp'''<br />
By specifying a property test string in PlayerTriggerProp, you can trigger based upon the value of a property on a player within the proximity range of the spawner. For example setting PlayerTriggerProp to hits<50, would cause the spawner to trigger whenever a player within range fell below 50 health.<br />
<br />
Other properties could be used to trigger when a player got hungry (hunger<5), or tired (stam<30), or was a criminal (criminal=true), or was fighting (combatant!(-null-)). Any property that is visible with the [props command, can be tested and the value to test against will be the value that appears there (or with the [get propname command)<br />
<br />
'''MobTriggerName'''<br />
Mob property triggered spawning is identical to player property triggering except that you specify a mob name in the MobTriggerName field, and then set the property test in MobTriggerProp. This will trigger whenever a player comes within proximity range of the spawner and the uniquely named mob is found and satisfies the property test specified in MobTriggerProp. Note that this mob can be anywhere in the world, it is the player that sets off the trigger and therefore has to be in range. These can be combined with any of the other triggering options so that, for example, a player holding a named quest item, could trigger a spawn based upon his fame or karma, (with different fame levels triggering different spawns), depending on the health of a named mob that he was doing combat with.<br />
<br />
'''ProximityRange'''<br />
When the proximityrange property is set to a value zero or greater, the spawner will become activated whenever a player comes within that range, and will be deactivated when a player leaves the range. Once the spawner has been triggered, it will run until the spawn timer elapses, even if the player that activated it leaves the proximity range, after spawning it will be shut off and will remain inactive until the next proximity triggered activation.<br />
<br />
Note that when used in combination with the X1Y1 X2Y2 specification for spawning area, you can use this feature to sense players in one location and spawn mobs in another. You can also combine this with the duration parameter to have player triggered, but limited duration spawns, so that they will reset even if the player that triggered it doesnt kill the spawned mob - basically a one-shot spawner. Counselors and above will not trigger the sensor.<br />
<br />
'''ProximityMsg'''<br />
Allows setting a proximity trigger message that is displayed over the player when the spawner is triggered. Example: "You have the strange feeling that you are being watched."<br />
<br />
'''ProximitySound'''<br />
This allows you to set the sound played when a proximity triggered spawner is tripped by a player (a click and sparkle sound by default). If you are using the most recent version of inside UO to get the sounds, you need to subtract 1 from the number for it to play the proper sound.<br />
<br />
'''SpeechTrigger'''<br />
This property allows for speech triggering of spawns. Set the property SpeechTrigger with the string you want to trigger on.<br />
<br />
This can be combined with the other proximity features for example, to allow spawns that are triggered when a player is within range, has an item, and, for instance sets a switch, or places gold in a container, and then says the key phrase.<br />
<br />
Could also use it for implementing something like a guard zone in which calling out for guards would spawn for a specified duration. Or by combining it with the refractory option you could allow it to generate items on demand but only so frequently (e.g. guards, regs, drinks, etc. only once an hour, or once a day) or even only during certain times of the day.<br />
<br />
'''TriggerOnCarried'''<br />
Item-dependent triggering This is used in conjunction with proximity sensing. When a player with a specific named item in his pack comes within proximity range of the spawner, the spawn will be triggered.<br />
<br />
TriggerOnCarried is used to specify the name of the trigger item. If it is set to null then items are not checked and it behaves like a normal proximity-triggered spawner. To prevent excessive pack searching, the item test is only conducted once upon crossing the proximity threshold, and the item must be in the top level of the backpack - no nested searching. Proximity sensing does not work inside containers.<br />
<br />
The refractory settings can be used to limit the way in which the trigger is activated. By setting a short delaymin/delaymax you can have a spawn that appears almost immediately after triggering, but to prevent the spawner from being triggered right after that, setting the refractory period to something like 5 minutes will keep the proximity triggering from being activated for that period.<br />
<br />
'''TriggerObject'''<br />
'''TriggerOnProperty'''<br />
<br />
This allows for the ability to make player-proximity triggered spawning also dependent upon a property of any targetable item. This allows spawn chaining by making one spawner dependent on the state of another spawner. It also allows spawners to be made dependent upon things such as switches, doors, number of items, weight, or amount of gold in containers, etc.<br />
<br />
To use this feature, select the TriggerObject property in the props list, then target the object to trigger off of. Then set the TriggerObjectProperty field with the property and the value to test for.<br />
<br />
For Example: maxgold=20, or killcount>10, or open=true. Where maxgold, killcount, and open are property names on the objects. Supports <, >, and = operators for testing the values. Supports, int, bool, string, and double value types.<br />
<br />
'''TriggerProbability'''<br />
This has the value of 1 by default which means the spawn will be triggered whenever the triggering conditions are met. Setting TriggerProbability to a value between 0 and 1 will reduce the chance that a spawn will be triggered even when the other triggering conditions are met. So, for example, having a spawn that is triggered by opening a door only 1 out of 10 times, or a rare that only spawns occasionally at a certain time of day.<br />
<br />
'''Duration'''<br />
The duration parameter enables spawns of limited duration. By default, spawners have a duration of zero, which means infinite duration (the standard case). The duration timer begins immediately after a spawn, and when the timer expires, all spawns on the spawner will be removed until the next respawn. Respawning will occur according to the min and max delay as usual. I like to use this to make rare spawns such as the common or doom rares, harder to get. Since on servers with a smaller player base there is not the competition to get rares, this feature can make them as infrequent as they would be on a more populated server, like only available for one second every 24 hours or more.<br />
<br />
Note: when saving spawns to an xml file the duration parameter will be saved as seconds, not minutes.<br />
<br />
'''DurationOver'''<br />
As far as I can figure out, this doesnt do anything, it simply tells you when the duration amount above is about to happen. A count down field, so it were.<br />
<br />
'''Other PROP settings:'''<br />
AllowGhostTrig This prop can either be set to true or false. A true setting will allow ghost characters to trigger the spawner, while a false setting will set the spawner to only be triggered by living characters. Pretty self explainatory.<br />
<br />
CurrentCount This is the number of creatures set to spawn from this bit. It reflects the cumulative total of all the spawns in the list added together. I can't think of a reason you would need to make adjustments to this.<br />
<br />
ExternalTriggering This allows other objects to actively control the spawner. This feature is enabled by setting the ExternalTriggering property to true, then the spawner will add the state of the ExtTrigState property to its list of triggering conditions. This can be used in conjunction with any of the other triggering features, so that you could have a spawner that was dependent upon proximity triggering and activation of an object (like one of the levers or switches included) that would set the ExtTrigState. For example, to place a spawner under the control of a lever add a simplelever, set the TargetProperty prop of the lever to /exttrigstate/true, and the target1property to /exttrigstate/false. Then enable ExternalTriggering on the spawner. Switching the lever will then turn the spawner on and off. By enabling speech triggering as well, the spawner will only speech trigger when the lever is also in the correct position.<br />
<br />
====XML Quests====<br />
<br />
'''Quest Objectives:'''<br />
The XMLspawner quests system supports the following objective types:<br />
<br />
KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED<br />
<br />
Some examples are:<br />
* KILL,mobtype,count,<br />
* KILLNAMED,mobname,count,<br />
* COLLECT,itemtype,count,<br />
* COLLECTNAMED,itemname,count.<br />
<br />
The quest items can now keep track of kills and collected items in their quest status, and quest tasks that require multiple mobs to be killed can be specified. To use this feature, spawn or create an XmlQuestToken class item such as the QuestNote, and set one or more of the Objective properties with the keywords.<br />
<br />
For example to make a killtask type quest in which the player must kill 5 balrons, 5 lichlords, a named mob called "Bubba", and collect 20 diamonds, you could;Set the<br />
* Objective1 property to "KILL,balron,5",<br />
* Objective2 property to "KILL,lichlord,5",<br />
* Objective3 property to "KILLNAMED,Bubba,1",<br />
* Objective4 property to "COLLECT,diamond,20<br />
A spawner can be then be set up to provide a reward when the objectives on the questnote are completed.<br />
<br />
'''Spawning Conditions and Keywords:'''<br />
Special keywords can be used in spawning for control or effects. These will be explained in more detail below, but the keywords are listed below:<br />
<br />
value keywords: RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL<br />
<br />
control keywords: WAITUNTIL, IF, WHILE, and GOTO<br />
<br />
action keywords: ADD, ANIMATE, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, SOUND, GUMP, DESPAWN, DELETE, UNEQUIP<br />
<br />
loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL<br />
<br />
access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, PLAYERSINRANGE, TRIGSKILL<br />
<br />
Access Keywords:<br />
SETONCARRIED<br />
<br />
This allows you to set properties on a named item carried by the triggering player. The syntax is SETONCARRIED,itemname/prop/value/prop2/value... This can be used in conjunction with the TriggerOnCarried property and the XmlQuestToken items to detect and set quest objectives on quest token items.<br />
<br />
With TriggerOnCarried, and NoTriggerOnCarried if the item is an XmlQuestToken item, then the status of objectives can also be specified as a requirement using the syntax "itemname,objective,objective,.." in the TriggerOnCarried or NoTriggerOnCarried string.<br />
<br />
For example if you wish to trigger a spawner only when quest item "Blathers Quest" is carried and has objective 1 completed, then use the string "Blathers Quest,1" in the TriggerOnCarried property. If you would like to prevent triggering when objective 1 of that quest has already been completed then use the same string in the NoTriggerOnCarried property.<br />
<br />
GETONPARENT and GETONTHIS<br />
<br />
These are the GET counterparts to the SETONPARENT and SETONTHIS keywords. For attachments, the GETONPARENT keyword allows access to properties on the object that it is attached to. This is generally useful when trying to include properties in substitution strings, such as an XmlDialog where you could have a text string like this<br />
<br />
Hello, my name is {GETONPARENT,name}<br />
<br />
'''Value Keywords'''<br />
<br />
MOB:<br />
<br />
MOB keyword that can be used as a property value when setting properties that need a mobile id. e.g. the combatant property on a mobile. The mobile id of the named mob will be substituted for the MOB entry. The syntax is /MOB,name/ so for example to spawn a mob and have it attack another mob you could specify something like "ogre/combatant/MOB,The outcast", where a mob named "The outcast" had already been spawned somewhere. The two requirements for using this keyword are that the mob must exist and the mob name must be unique.<br />
<br />
RND:<br />
<br />
RND allows you to generate random values when specifying properties RND can be used anywhere that an integer value is normally specified. The syntax for RND is /RND,min,max/ For example ogre/hue/RND,1,500/ADD,0.1/<katana/hue/500/attributes.luck/RND,50,100> would spawn a randomly colored ogre with a 10% chance of dropping a blue katana with random luck values between 50 and 100.<br />
<br />
To spawn a random range of statics from Inside UO, you need to be tricky. You need to ADD,.1/<static,4036/ItemID/RND,4036,4044> This will add a set of shells, static 4036 to a mob/chest, and then you set the ItemID with the RND option to vary the graphic between range 4036 and 4044 which are all shells.<br />
<br />
SKILL:<br />
<br />
The SKILL,skillname keyword can be used both for setting skill values, as well as testing for them. The SKILL keyword can be placed anywhere that a valid property name could be used. For example to spawn a mob with certain skills use a spawn spec like ogre/SKILL,anatomy/100/SKILL,macing/100.<br />
<br />
To set skills on players that triggered the spawner use a spec like SETONTRIGMOB/SKILL,meditation/120/SKILL,magery/120. This can be used to create skill-gate like behavior.<br />
<br />
To test for a skill value for triggering for example, set PlayerTrigProp to SKILL,mining>100.<br />
<br />
TRIGMOB:<br />
<br />
The TRIGMOB keyword, which will substitute the mob who triggered the spawner as its value. Can be used to set any property that takes a mobile as its argument. So, for example, you could use it to spawn a mob that had the player who triggered it as the combatant, "ogre/combatant/TRIGMOB", or spawn pets that are controlled by the triggering player, for example ogre/name/Slave/controled/true/controlmaster/TRIGMOB<br />
<br />
'''Action Keywords:'''<br />
<br />
ADD:<br />
<br />
ADD keyword allows you to add items to spawning mobs packs. The syntax for ADD is /ADD/itemtype, or /ADD,probability/itemtype, or /ADD,probability/<itemtype/prop1/value/prop2/value...> where probability is a drop probability between 0 and 1 and <itemspec> is an embedded item specification, so that you can put attributes on the added item as well. An example of this would be the specification string ogre/name/Lord Bleck/ADD,0.3/katana that would spawn an ogre named Lord Bleck with a 30% probability of dropping a katana.<br />
<br />
As a further example, this can be combined with the note object for simple quest-like behavior using specification strings such as lich/name/Dark Master/ADD/<simplenote/notestring/My soul will not rest until you return with the Ring of the Elements found on my nemesis, the lich lord Artemis in the dungeons of Ilshenar. Take my sword to aid you./titlestring/The Return of Artemis/name/Quest of Artemis/size/2>/ADD/<longsword/maxdamage/RND,30,70> which will add the specified note and sword to a lich named Dark Master.<br />
<br />
ANIMATE:<br />
<br />
The ANIMATE,action[,framecount][,repeatcount][,forward true/false][,repeat true/false][delay] keyword to add animations to any mobile. For example,<br />
<br />
SETONTRIGMOB/ANIMATE,32,5,1,true,false,0<br />
<br />
would cause the triggering player to bow.<br />
<br />
Or used in the Action field on an XmlDialog it could be used to make an npc bow, like:<br />
<br />
SETONTHIS/ANIMATE,32,5,1,true,false,0<br />
<br />
CAST:<br />
<br />
The CAST keyword allows the spawner to cast spells on triggering players. The syntax is CAST,spellname[,arg] or CAST,spellnumber[,arg] where spellname and spellnumber are the registered spell names and numbers found in Scripts/Spells/Initializer.cs. This is used with triggering to allow the triggering mob/player to cause the spell to be cast with the triggering mob/player as the target. Both harmful and beneficial spells can be cast. Karma effects will also be applied. There are no casting delays, so multiple spells may be cast simultaneously. Some spells are are location targeted and can take an additional argument [,arg] which is a range value used to determine a random target location (+-range) relative to the caster. The default and mininum range value is 1. The Polymorph spell uses the 2nd argument as the bodyvalue.<br />
<br />
For example, to set up a spawner to autoheal the triggering mob use the spawn spec CAST,greaterhealspell. To polymorph the triggering player into a bear use CAST,polymorphspell,212. To cast lightning on the triggering player CAST,lightningspell Not all spells will work automatically. Item targeted spells such as mark, recall, and sacredjourney will cast and bring up a targeting cursor.<br />
<br />
NOTE: I will have to figure out if this can work with or be applied to our custom magic system. I dont see why not, but this has not yet been tested.<br />
<br />
DELETE:<br />
<br />
The DELETE keyword can be used to modify a standalone keyword and delete the object that it refers to (it will not allow you to delete players) For example, this spawn entry:<br />
<br />
SET,Mystic Sword,longsword/DELETE<br />
<br />
will delete the longsword named "Mystic Sword"<br />
<br />
SETONMOB,SeeYouLater,Balron/DELETE<br />
<br />
will delete the balron named "SeeYouLater"<br />
<br />
SETONCARRIED,,Gold/DELETE<br />
<br />
will delete gold that it finds being carried by the triggering mob<br />
<br />
SETONSPAWN,TargetSpawner,2/DELETE<br />
<br />
will delete all of the spawns of subgroup 2 on the spawner named TargetSpawner. This is basically the same as using the DESPAWN keyword but will delete all spawns regardless of their CLR flag setting.<br />
<br />
GUMP<br />
<br />
The GUMP keyword that will send a gump containing the designated text to the triggering player. Syntax is GUMP,title,number/text. A default set of gumps has been added, but these can be extended by the user. A sample script XmlQuestGumps.cs has been included showing the form of the default quest gumps. It is required to use the default GUMP features.<br />
<br />
GUMP number 0 is a simple text display gump. GumpState is set to "done" after viewing.<br />
GUMP number 1 displays a gump with yes/no selections. GumpState is set to either "yes" or "no" depending on the user selection.<br />
GUMP number 2 displays a gump with a text entry area. GumpState is set to the text entered.<br />
GUMP number 3 will send a quest gump with accept or decline options. GumpState is set to either "accept" or "decline" depending on the user input.<br />
<br />
UNEQUIP:<br />
<br />
The UNEQUIP,layer[,delete] keyword allows you strip a mobile of an equipped item on the specified layer. If the optional "delete" argument is specified, then the removed item will be destroyed, otherwise it will simply be dropped into the the mobiles pack. For example, you could disarm a one-handed weapon from a triggering player using:<br />
<br />
SETONTRIGMOB/UNEQUIP,OneHanded or spawn a mobile, remove existing equipment, and replace it with new equipment with something like:<br />
<br />
banker/UNEQUIP,pants/UNEQUIP,shoes,delete/EQUIP/sandals/SAY/Hey, where are my pants? This will create a banker, take off his pants and put them in his pack, take off his shoes and delete them, and then put on a pair of sandals in their place.<br />
<br />
MSG:<br />
<br />
The MSG keyword for the spawn specification strings that can be used to display messages over mobs or items when they are spawned. The syntax is /MSG/text/, with an optional probability factor specified using /MSG,probability/text/. So, for example, to spawn a lich that occasionally taunted you, you could use the spec string "lich/MSG,.5/All hope is lost/MSG,0.2/you feeble mortal/MSG/hahahahaa" to give you random combinations of messages such as "All hope is lost hahahahaa", or "feeble mortal hahahaha", or just "hahahahaa".<br />
<br />
Or the string "ham/MSG/a tasty morsel" would place the message "a tasty morsel" above the ham when it was spawned.<br />
<br />
Note, that because the switch/lever objects also use the same syntax for specifying properties on target items, you can use this keyword in conjunction with those items. So, for example, you could have a lever that opened a door, and also displayed a message over the door indicating it had opened using the string "/locked/false/MSG/the door magically opens" in the target item property description.<br />
<br />
GIVE:<br />
<br />
The GIVE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is the same as the ADD keyword, but the item is placed directly into the pack of the player that triggered the spawner,<br />
<br />
GIVE/itemtype<br />
GIVE,probability/itemtype<br />
GIVE,probability/<itemtype/prop1/value/prop2/value...><br />
<br />
TAKE:<br />
<br />
The TAKE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is TAKE/itemname or TAKE,probability/itemname. It will search the trigger players pack, and all containers in the pack for the first item that matches the name, and then delete it. It will not remove containers.<br />
<br />
By combining the GIVE and TAKE keywords, you can have a spawner that takes one item and replaces it with another, for example a quest item can be replaced with a quest reward.<br />
<br />
The TAKE keyword also allows for a partial removal of named stacked items. When called with the quantity argument, TAKE will attempt to remove the specified quantity of the stacked item. If less than the quantity is found, then whatever the amount found will be taken. If the item is not stackable, then the item will simply be taken.<br />
<br />
TAKEBYTYPE<br />
<br />
The syntax for this is TAKEBYTYPE,probability,quantity/itemtype. It is similar to the TAKE keyword but items are identified by type rather than name. For example, to take 1000 gold from a triggering player use the spawn spec TAKEBYTYPE,1,1000/gold.<br />
<br />
Note, by default neither TAKE and TAKEBYTYPE will search a players bankbox. Adding the argument "true" added to TAKEBYTYPE and TAKE keywords allows bankboxes to be included in the searched items. The syntax is TAKE,probability,quantity,true/itemname and TAKEBYTYPE,probability,quantity,true/itemtype.<br />
<br />
SET:<br />
<br />
The SET keyword which is also used as a spawn spec and is "spawned" just like a regular mob/item. It sets properties on a target item that is specified in the SetItem property of the spawner. You target an item and when the spawner is triggered, it will apply the property changes contained in the SET specification string. For example, this can be used to open a door when certain trigger requirements are met, such as saying a keyword, or possessing an item, etc. using a spec string like:<br />
<br />
SET/locked/false/MSG/the door is magically opened, and targeting a door from the SetItem property, or making a switch or lever or chest visible, when triggered with the spec line SET/visible/true.<br />
<br />
Any property that can be written using the .set command, can be linked to spawner triggering using the SET keyword. Because the SET commands are "spawned" just as other mobs are spawned, they can be used to set properties of items at specified intervals by using spawners that are not triggered but are simply run on the normal timed schedule. For instance, using the time of day feature, you could have a set of doors that are locked during the day and opened at night, or are locked and unlocked occasionally on a 5-10 minute schedule (min/max delay).<br />
<br />
Note, in order to have the target item properly saved to an xml file when using .xmlsave, the target item must have a unique name.<br />
<br />
SETONTRIGMOB:<br />
<br />
The SETONTRIGMOB keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item, it is just that nothing is created but rather target properties are set on the mob that triggered a spawner. This could be used for example to drop mana or stamina when a player comes within range of a spawner, or kills a target number of mobs, or is carrying an item, etc. Or hide the player when a keyword is spoken and they possess a specific item. (e.g. spawn spec SETONTRIGMOB/stam/0/mana/0, or SETONTRIGMOB/hidden/true)<br />
<br />
Also, by changing the x,y,z properties of the trigger player, it can be used to construct more sophisiticated teleporters, such as one that sends a player to a new location when they are carrying an item, and a target lever is in a specific position, or when a certain number of mobs are killed, or when their health reaches a certain level, etc. As well as the more straightforward type of triggering such as on a keyword.<br />
<br />
Note, this is potentially a VERY powerful ability. Use of this feature should be made with care, since it can make changes to any writable players attributes. Of course, it cant do anything more than an admin could do normally by using the .set command on a player.<br />
<br />
====XML Attachments====<br />
For a list of available attachments, type in game .availatt<br />
<br />
Local variables are stored as XmlLocalVariable attachments on the spawner and can be viewed and modified using the .getatt command and targeting the spawner.<br />
<br />
Supports the use of modifiers like global, multi, area, etc. with the .addatt and .delatt commands that add and delete attachments from objects (thanks to Vento Divino for the suggestion). So to add a particular attachment to all players you could do something like<br />
<br />
.global addatt xmldata datavalue where playermobile<br />
<br />
and to remove those attachments you could use<br />
<br />
.global delatt xmldata where playermobile<br />
<br />
Some of the stat and skill mod attachments are (will add syntax when I find it):<br />
* XmlStr<br />
* XmlDex<br />
* XmlInt<br />
* XmlSkill<br />
<br />
and the fame, karma, and virtue attachments are:<br />
* XmlAddFame<br />
* XmlAddKarma<br />
* XmlAddVirtue<br />
* XmlStamDrain<br />
* XmlManaDrain<br />
* XmlLifeDrain <br />
<br />
When attached to a mob or weapon, these will drain stam/mana/life from the defender on each hit and give it to the attacker. If attached to an item in the world, it will drain a random amount of stam/mana/life when a player moves near it. The random value will be between 0 and the argument to the attachment. The default refractory period between uses is 5 seconds. If a negative drain value is given, then the attachment will be reported as a curse when attached. For example, using the command<br />
<br />
.addatt xmllifedrain 30 3 120<br />
<br />
and targeting a mob, would give that player/mob 2 hours of lifedrain ability that would drain 0-30 hps on every hit, with a max rate of once every 3 seconds.<br />
<br />
'''XmlSaveItem'''<br />
<br />
This attachment that allows you to internalize an item and hold it on the attachment for later retrieval. This is used by xmlspawners and xmldialogs to keep track of taken items, but could be generally used to temporarily hold items. The SavedItem property can also be manually set and will internalize and maintain the targeted item on the attachment. When the attachment is deleted, the saved item is also deleted. By setting the RestoreItem property on the attachment to true, the saved item will be placed back into the world at the location of the object the attachment was attached to. If at any time the saved item is placed into the world (moved off of the internal map), XmlSaveItem will no longer keep track of it.<br />
<br />
'''.xmledit'''<br />
<br />
This utility is for editing XmlDialog specifications while ingame. This allows you to add or change npc dialog without having to create and load a .npc file. Just issue the command "[xmledit" and target an object with an XmlDialog attachment. If it does not have an attachment, you will be asked if you wish to add one.<br />
<br />
The editing gump is divided into four sections.<br />
<br />
The top section allows you to change the overall properties of the attachment, such as triggering range, triggering conditions, and reset time.<br />
<br />
The middle section allows you to view and select a specific speech entry for editing. Press the button to the left of the entry to select it. The checkboxs on the right are used to select entries for deletion. Check the boxes of entries you wish to delete and then press the Delete button at the bottom of the gump. You will be prompted to confirm deletion. To add a new speech entry, just press the "Add" button at the bottom of the gump and a new empty entry will be added to the end of the entry list.<br />
<br />
The lower section allows you to edit the selected entry. Enter in the new values. The changes will take effect the next time the gump is updated, either by selecting the "Refresh" button at the bottom of the gump, selecting another entry, or exiting the gump.<br />
<br />
Currently, text entry is limited by the size of the text entry field. This will be updated with the book text entry interface in an upcoming version.<br />
<br />
The bottom section contains buttons for Refreshing the XmlDialog, Adding a new speech entry, Deleting selected entries, Saving the XmlDialog specification to a .npc file, and paging through the speech entries.<br />
<br />
The specification can be saved to a .npc file by entering in a filename in the "Save to file" text entry area and pressing the button next to it. The .npc extension will automatically be added. If the XmlDialog was loaded from an existing .npc file, that filename will be shown in the "Config:" field to the left of the Save option. There is currently no check for overwriting an existing file, so be careful (I will be adding this feature). This option is restricted to administrators.<br />
<br />
'''TemporaryQuestObject'''<br />
<br />
The syntax is: TemporaryQuestObject,questname[,expiration]<br />
<br />
This attachment allows you to tag items/mobiles so that they are automatically deleted after some period of time, or whenever the quest they are associated with is completed (when the questholder associated with the quest deleted). (thanks to Eymerich for the idea).<br />
<br />
To use this simply put the attachment on an object, and assign the questname, owner.<br />
<br />
You can also use it to make temporary objects that are not associated with a quest by just specifying an expiration time. The way it works is When the attachment is deleted, the object it is attached to is also deleted. Typically you would probably create the object with the attachment using a spawn entry like this:<br />
<br />
GIVE/<questholder/name/MyQuest/objective1/KILL,orc/autoreward/true/rewardstring/gold,100> GIVE/<longsword/name/Quest Sword/ATTACH/<temporaryquestobject,MyQuest/questowner/TRIGMOB>><br />
<br />
This would hand out a quest named MyQuest, and then give the triggering player a longsword named "Quest Sword" that was associated with MyQuest. Note that the mobile who is the questowner of the temporaryquestobject must be manually specified by setting the QuestOwner property on the attachment.<br />
<br />
To make a general temporary object independent of any quests, just use the attachment with an expiration time like this<br />
<br />
longsword/name/poof/ATTACH/temporaryquestobject,tempsword,3<br />
<br />
which would make a sword that would autodelete after 3 minutes (the name "tempsword" could be anything since it it isnt really used for autodeletion and is just to identify the attachment).<br />
<br />
'''XMLFreeze:'''<br />
<br />
The XmlFreeze[,seconds] attachment that allows you to permanently or temporarily freeze a mobile in place. If attached with no duration argument, they will remain frozen until the attachment is removed. This can be used with the ANIMATE keyword to keep mobs from moving while animations are applied.<br />
<br />
orc/ATTACH/xmlfreeze,10<br />
<br />
would spawn the orc frozen for 10 seconds.<br />
<br />
SETONTRIGMOB/ATTACH/xmlfreeze,10/MSG/You are frozen with fear!<br />
<br />
would freeze the triggering player for 10 seconds and send them a message.<br />
<br />
'''XmlMorph'''<br />
<br />
This attachment changes the BodyMod property of target mobiles. When mobiles are deserialized, they automatically restore their default bodytype, so the OnReattach method can be used by the attachment to override this and restore the desired BodyMod assignment.<br />
<br />
'''XmlWeaponAbility:'''<br />
<br />
This attachment allows mobs to be given special attacks on the fly. You can add special attacks to a spawned mob with a spawn entry like:<br />
<br />
orc/ATTACH/xmlweaponability,BleedAttack<br />
<br />
or manually add it to any mob with<br />
<br />
[addatt xmlweaponability BleedAttack<br />
<br />
and then target the mob. Note, the attack name is case sensitive and can be any of the following:<br />
* ArmorIgnore<br />
* BleedAttack<br />
* ConcussionBlow<br />
* CrushingBlow<br />
* Disarm<br />
* Dismount<br />
* DoubleStrike<br />
* InfectiousStrike<br />
* MortalStrike<br />
* MovingShot<br />
* ParalyzingBlow<br />
* ShadowStrike<br />
* WhirlwindAttack<br />
<br />
'''Other Keywords:'''<br />
ARMOR, WEAPON, POTION, that will create random magic items of the type specified.<br />
<br />
ARMOR,min,max will drop a random piece of armor, shield, or jewelry with an attribute level randomly selected between min and max. min and max can range between 0 and 5 with 5 being the most powerful.<br />
<br />
WEAPON,min,max does the same for weapons.<br />
<br />
POTION drops a random potion,<br />
<br />
Add these to the spec line in place of normal types, i.e. wherever you would use a typename like katana, or platehelm, just substitute these keywords. These can either be used as the basic entry in a spawn spec, therefore spawning them directly, or they can be used with the ADD keyword to add them to a spawned mobs pack. e.g. ogre/ADD,0.5/WEAPON,2,5 would spawn an ogre with a 0.5 probability of dropping a lev 2-5 magic weapon.<br />
<br />
The spec line ARMOR,5,5/name/Bruiser/hue/300/durability/200 would spawn a random piece of magic armor of level 5, name it Bruiser, turn it blue, and set its durability to 200.<br />
<br />
The spec line ogre/ADD,0.5/<ARMOR,5,5/name/Bruiser/hue/300/durability/200> would add that piece of armor to a spawned ogres pack with probability 0.5<br />
<br />
The line GIVE/WEAPON,5,5 would give a level 5 magic weapon to the player that triggered the spawner.<br />
<br />
'''Quest Items:'''<br />
<br />
'''SimpleNote'''<br />
<br />
There is a new SimpleNote object in the included script simplenote.cs which is an item that can be used independently, but is designed as added content for exercising spawner capabilities for more dynamic quest-like use. It is NOT needed for the spawner to function and is purely optional.<br />
<br />
It allows construction of simple notes/messages that are designed to be read by players by opening into a scroll gump of variable size. The text of the note, its title, and text color can be specified by the user. The note can be defined in the spawner and can be used to pass trigger requirements etc. to the player. e.g. in the spawn specification string enter: simplenote/notestring/Seek out the Sword of Misery that is held by the ogre lord Blasphema in the forest north of Trinsic. Call out to him, and you will bring him forth./size/2/titlestring/The Quest for Blasphema/name/Blasphema's Quest.The triggering of the spawn could then be made dependent upon the player possessing the named note ("Blasphema's Quest").<br />
<br />
'''QuestNote:'''<br />
<br />
The quest item (QuestNote) and quest token item class (XmlQuestToken), that allows multi-part quests, with expiration time, and transfer restrictions. By placing quest information on these player carryable tokens, quests can be made without modification to playermobiles, or to any scripts at all, making them completely portable. XmlSpawners can modify or read multiple objectives on the items using the objective1-5 and completed1-5 properties.<br />
<br />
The use of quest token items for mainenance of quest information also allows for multiple simultaneous quest simply by possessing the appropriate tokens. Quest item properties are public, so scripts can freely access them for constructing specific quest scenarios that can then be used to drive spawning.<br />
<br />
Items that belong to the XmlQuestToken class lose their validity whenever they are transferred from the original owner, either to other players, to the world, or to containers not in the players pack. This prevents transferral of quests, and other exploits. These items are also blessed by default.<br />
<br />
When an XmlQuestToken item is used as the target of carried-item triggering (TriggerOnCarried property), then it must be valid (never removed from the players pack), and satisfy specified subobjectives in order to trigger. (see TriggerOnCarried, and NoTriggerOnCarried multiple objectives. Objective status can be seen on the quest log status gump).<br />
<br />
XmlQuestTokens can also be given limited lifetimes using the expiration property. Due to limitations in the way in which TimeSpan type variables are handled by .net, currently the maximum expiration time for a quest token is 24 hours.<br />
<br />
'''Other Items:''' <br />
* Added several new items for added content that are independent but enhance the use of the xmlspawners. They are a switch, a lever, and a combination lock.<br />
The script SimpleSwitches.cs adds a 2or3-state lever, a 2 state switch with different facings determined by direction (not by flipping), and a combination lock. The states of the lever can be used to set properties on target items such as doors (locked/unlocked), or even to add items to containers. By setting the TargetItem and TargetProperty properties, you link the switch/lever states to certain item properties. So, for example to use a switch to open a door when the switch is in the 1 state, set Target1Item to the door and then set Target1Property to /locked/false (note, it uses the same syntax as the xmlspawner2 property specification strings. Since it shares the same syntax, you can also have it do things like change the color of an item, or add items to a container using the ADD/<spec> string.) SimpleCombinationLock simulates a multi-digit (max 8) combination lock. The state of each of the digits can be set using (for example) the lever or switch items. The combination is set in the Combination property. So the combination of 378, would correspond to digits 2,1,0 taking on values of 3,7, and 8 respectively. The Match property can be tested to determine when the target combination is matched by the combination of digits. Note that digit number corresponds to significance, from least to most. Each digit is a property (Digit0, Digit1, Digit2, ... Digit7) and can take on the values 0-9. You can set the property string to indicate either a property name on the target item (e.g. switchstate, or leverstate, or totalgold), or you can specify a test such as totalgold<100, or open=false, or locked=true. You could use this item to look for certain combinations of switches or levers, door states, etc. or even combinations of levers, and weight of a container, or number of kills on a spawn etc., and then open a door, or add items to a container, or change the color of a stone, trigger a spawn, etc.<br />
* Added new items TimedSwitch, TimedLever, XmlLatch, and TimedSwitchableItem.<br />
Similar to the SimpleSwitch and Simple lever, the TimedSwitch, TimedLever items add a reset timer to the switch/lever states with min/maxdelay properties and are derived from the XmlLatch which is a new class that supports resettable switching, and can be used as an item itself to implement a resettable latch (set the state externally and it will hold that state for some time and then reset). The item TimedSwitchableItem is a TimedSwitch that allows you to specify the Item statics that will be assigned to each state, allowing flexible user-defined visuals during switching, such as a torch or a stone, or a wall section, etc. Because it is a TimedSwitch you can assign actions that are associated with each state as well, such as opening a door when double-clicking a torch, or opening a secret passage when double-clicking on a wall section, etc. The current switching state of all of these items is contained in the State property, and the ResetState is the value that the State will be returned to after the reset timer expires.<br />
<br />
==XML Dialog Editor==<br />
<br />
'''Project Description'''<br />
<br />
The XML Dialog-Editor is a tool to create or edit the NPC-Dialogs (*.npc) from RunUO's XMLSpawner by ArteGordon. In addition to the standard-functionality the ".xmledit"-command gives you ingame I made a few features to make this editor as newbie-friendly as it could be.<br />
<br />
One of the biggest problems are a lot of XMLSpawner-specific commands, values etc. with a lot of (optional) parameters. A complete documentation is not present at the moment, only a chronological release-info. So when I want to know how a specific thing is working in the actual version I have to look backwards through the whole txt-document - it's time consuming in case you are not working on a daily basis with this (great!) system and knowing it's niceties. So on top of my wish-list for the editor are wizards for all of those text-fields. <br />
<br />
Some minor issues are resulting from the Ultima Online client itself and it's usability with dialogs: You cannot edit the text of a textbox by clicking right in the middle of the text, thats working only with those books. Also there is not much space to view all those necessary information so it's difficult to get a overview of your dialog (e.g. dependings) 'cause resizing of the gump isn't possible, either - no matter if you have a 1024x768 resolution or a 16:9 tft. The fact that you have to be online is just an additional fact - and not every Gamemaster or Seer wants to run a local "development"-server only to make new dialogs offline (e.g. when traveling with a notebook). <br />
<br />
All those things keeping in mind I started with my XML Dialog-Editor and added a few more points to my whishlist on-the-fly (exporting to txt-file for posting in a forum, connecting to a server for remote-editing, ...). The actual version is a first result of my efforts and I'm still working on a lot more things. A great system like the XMLSpawner is deserving not just a "good try" and my effort is to give the community something great in return for all those things I learned from her!<br />
<br />
'''Feature List'''<br />
<br />
*wizards for most textfields<br />
*implemented all XmlAttachments with overloaded constructors<br />
*implemented commonly used properties and other commands / values (e.g. nametypes)<br />
*listview like the one in ultima online<br />
*treeview for dependancies overview<br />
*export as textfile and pdf (flow chart)<br />
*create / edit dialogs via FTP-server<br />
*deleting and duping many items at the same time<br />
*multilanguage support (currently english and german)<br />
*bugs and feature-requests can be submitted out of the program via a simpel dialog<br />
*installation and auto-update via ClickOnce<br />
<br />
DOWNLOAD: [https://xmldialogeditor.codeplex.com/ XML Dialog Editor]<br />
<br />
Last edited Sep 22, 2008 at 4:21 AM by Anheledir, version 3<br />
<br />
==XML Siege System==<br />
<br />
Original information compiled by Dante on UO Evolution<br />
<br />
NOTE: This XML Siege System is being installed and tested to do large events and monster invasions. This wiki is a work in progress and I will add more info as I test the system.<br />
<br />
This system allows objects and structures to be damaged by siege weapons and repaired by siege tools. <br />
<br />
ANY non-frozen object can be made damageable - walls, doors, signs, trees, multis, addons - anything. A GM has to tag them with the xmlsiege attachment<br />
<br />
Weapons included are the Siege Cannon and Siege Catapult that fire siege cannonballs, and the Siege Ram that uses siege logs.<br />
<br />
Hand siege weapons are also supported.<br />
<br />
Siege Cannons have a 20% damage bonus and 20% increase in range when compared to catapults using the same projectiles.<br />
<br />
weapon damage will be reduced by up to 60% from its max value depending on how damaged the weapon is, and firing range reduced by up to 30%<br />
<br />
different types of cannonballs to do different amounts of damage to creatures and to structures <br />
<br />
The Siege Ram is for close range attacks on structures. It has a faster attack speed than either the cannon or catapult, and the new Siege Log ammunition can produce heavy damage to structures but is ineffective against creatures and has very short range.<br />
<br />
The ram can also be loaded with SiegeLog stacks so that it can attack repeatedly without having to reload after each attack.<br />
<br />
===Seeing object damage===<br />
<br />
Once an object is damaged it will change color to indicate the level of damage.<br />
<br />
The default colors are: <br />
<br />
Green = 67-99% of max<br><br />
Yellow = 34-66%<br><br />
Red = 1-33%<br><br />
<br />
Blue is also temporarily assigned to objects that have just had the XmlSiege attachment added to them so that you can see what is damageable.<br />
<br />
Once the Hits for an object reach zero, then the ItemID of the object will be changed to the DestroyedItemID propery of the xmlsiege attachment. Individual attachments can have their own DestroyedItemID settings. The default is a lava pool.<br />
<br />
===Repairing damageable objects===<br />
<br />
<b>Siege Repair Tool</b> - this is used to repair damaged objects<br />
<br />
Using the tool - Just double-click to use and target the damaged object to be repaired. It can be given either limited (set UsesRemaining to a value > 0) or unlimited number of uses (set UsesRemaining to a value < 0).<br />
<br />
<b>Repair resources</b><br />
<br />
You must have the required resources to repair the targeted object. The default setting is to repair 100 hits of damage per use.<br />
<br />
Objects can require wood, iron, and/or stone for repair.<br />
Iron = IronIngot<br />
Wood = Board<br />
Stone = Granite<br />
<br />
<b>Repair time</b><br />
<br />
The speed of the repair will depend on their Blacksmith and Carpentry skills as well as dexterity. With max skill and dex it can be as fast as 3 seconds. With no skill it can take up to 15 seconds.<br />
<br />
If you are missing any of the resources, the repair will not be done but any of the other resources that were needed and that you were carrying will be consumed.<br />
<br />
===Siege Cannon===<br />
<br />
<b>Changing the cannon facing</b> <br />
<br />
Then you can change the facing while it is placed using the 'Previous/Next' options in the context menu that comes up when you click it.<br />
<br />
<b>Moving a cannon</b><br />
<br />
To move a cannon you must first pack it up using the 'Backpack' context menu option. This takes time (15 seconds) and you must be next to it at the beginning and end of packing. When finished you will have a crate in your pack that you can place anywhere.<br />
<br />
<b>Firing a cannon</b><br />
<br />
To fire a cannon you must first load a cannonball into it. Then double-click the cannon and select the target.<br />
The target must be within the cannonball range, and within the firing arc of the cannon. Note, that you can target mobiles as well as structures, and mobiles will also take splash damage from area damage cannonball attacks.<br />
<br />
<b>Taking damage</b><br />
<br />
The cannon is configured with an xmlsiege attachment by default, so it can take damage from other cannons as well.<br />
<br />
===Cannonballs===<br />
<br />
I have added a few different types of premade cannonballs, but you can easily modify them or add your own. You can even create them and change their settings on the fly since all of their properties are accessible.<br />
<br />
Cannonballs have the following configurable properties:<br />
<br />
<b>Range</b> - maximum range in tiles <br><br />
<b>Area</b> - number of tiles surrounding the target that will also take damage<br><br />
<b>AccuracyBonus</b> - mod that affects chance of hitting the target<br><br />
<b>FiringSpeed</b> - mod that reduces the minimum interval between firing<br> <br />
<b>PhysicalDamage</b> - amount of physical damage delivered<br><br />
<b>FireDamage</b> - amount of fire damage delivered<br><br />
<br />
The premade cannonballs included are:<br />
<br />
*lightcannonball<br />
*ironcannonball<br />
*explodingcannonball<br />
*fierycannonball<br />
<br />
<b>Loading a cannonball</b><br />
<br />
Just double-click a ball and then target a cannon. You must be close enough to both, although you can dclick the ball, and then move to the cannon.<br />
<br />
===XML Siege Dowload===<br />
<br />
[http://downloads.runuo.net/index.php?dir=Scripts/RunUO/Xml%20Siege%20system%20V0.7a/ XML Siege Dowload]<br />
<br />
==XML Dungeon==<br />
==XML Code Examples==<br />
<br />
*[[XML Systems and Downloads]]<br><br />
*[[XML Code Examples by Expo]]<br><br />
*[[XML Code Examples by Kane]]<br><br />
*[[XML Code Examples by Dante]]<br><br />
*[[XML Code Examples by Mogster]]<br><br />
*[[XML Code Examples by Hestia]]<br><br />
*[[XML Code Examples by Ghost]]<br><br />
<br />
==XML External Links==<br />
<br />
*[http://downloads.runuo.net/index.php?dir=XMLSpawner/ RunUO Downloads - XML Spawner Guide]<br><br />
*[http://uorforum.com/threads/xml-spawner2-commands-and-examples.10280/ XML Spawner2 Commands and Examples - UO Renaissance Forum]<br><br />
*[https://www.servuo.com/tutorials/xmlspawner-quick-commands-advanced-installation.5/ Advanced XML Spawner Installation Guide - ServUO]<br><br />
*[https://www.servuo.com/archive/the-ultimate-xmlspawner-how-to-guide-archive.150/ Ultimate Xmlspawner how-to-guide]<br><br />
*[https://www.servuo.com/threads/xmlspawner-tutorials.3130/ XML Spawner Tutorials]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawner Fan]<br><br />
*[http://www.uoroleplay.com/resources/XMLSpawner/XML_Spawner_Unzipped/xmlspawner.15.forumer.com/XML%20Spawner/xmlspawner.15.forumer.com/a/qampa-13/index.html XML Spawner Q&A]<br><br />
*[http://www.usamimi.info/~gogogo/xmlspawner/index.htm XML Spawner Basics]<br><br />
*[https://github.com/ArchangelUO/XMLSpawner XML Spawner Github 2.1, 2.2 and Orb 2.2]<br><br />
*[https://www.scribd.com/document/69981938/XML-Quest-4-Dummies-RunUO-Ultima-Online XmlQuest 4 DummiesHow to build a perfect questVer. 0.3]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Nerun%27s_Distro&diff=32
Nerun's Distro
2017-08-01T22:51:04Z
<p>WikiSysop: Created page with "==Nerun's Distro== (spawn engine with mobs) 10-01-2016 ABOUT: [http://www.runuo.net/forum/forum/runuo-discussion/completed-uo-scripts/1543-nerun-s-distro-spawn-engine-with-..."</p>
<hr />
<div>==Nerun's Distro== <br />
(spawn engine with mobs)<br />
10-01-2016<br />
<br />
ABOUT:<br />
<br />
[http://www.runuo.net/forum/forum/runuo-discussion/completed-uo-scripts/1543-nerun-s-distro-spawn-engine-with-mobs Nerun's Distro] is a script for RunUO centered on the settlement of the game, using the Premium Spawner engine. Easy to use, this distro includes spawns for a 100% spawned world, and tutorials in english and portuguese. Also Includes:<br />
<br />
*CEO's Yet Another Arya Addon Generator<br />
*Custom Regions in a Box 4.0<br />
*Joeku's Automatic Speed Booster<br />
*Joeku's Staff Runebook<br />
*Joeku's Toolbar<br />
*Static Exporter<br />
*Talow's Stairs Addon v1.0<br />
*Termax's Staff Orb<br />
*Zen Archer's Spawn Editor v2<br />
<br />
[https://www.dropbox.com/sh/9hyqibenw0hhuvp/_OUSf5_roS Nerun's Dropbox and Downloads]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=XML_Spawner&diff=31
XML Spawner
2017-08-01T22:50:43Z
<p>WikiSysop: Created page with "==XML Spawner== XmlSpawner2 v3.24 updated 2/11/08 ArteGordon ===What is XML Spawner?=== XML Spawner is a spawn control system based upon Bob Smart's xmlspawner with features..."</p>
<hr />
<div>==XML Spawner==<br />
<br />
XmlSpawner2 v3.24<br />
updated 2/11/08<br />
ArteGordon<br />
===What is XML Spawner?===<br />
<br />
XML Spawner is a spawn control system based upon Bob Smart's xmlspawner with features, items, and commands supporting sophisticated conditional spawn triggering, individual <br />
customization of spawns and their drops, and systems for stealable rares, <br />
interactive npcs, functional attachments, mob factions, pvp points, custom weapon <br />
attacks, item/creature socketing, and quests.<br />
<br />
===XML Spawner Guide===<br />
<br />
This Xml Guide contains organized information from all of the How-to posts from various Xml forums<br><br />
<br />
*[http://www.runuo.net/forum/forum/software-support/xml-spawner-support XML Spawner Forum]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawnwer Fan Forum]<br><br />
<br />
Important Forum Posts - Xml Spawner<br><br />
<br />
*[[XML Spawner - General]]<br><br />
*[[XML Properties]]<br><br />
*[[Load and Import Files]]<br><br />
*[[Creating Spawns]]<br><br />
*[[Creating Triggers]]<br><br />
*[[Creating XmlDialogs]]<br><br />
*[[XML Attachments]]<br><br />
*[[Defining Regions with XML]]<br><br />
<br />
===XML Spawner Tutorial===<br />
<br />
====XML Commands====<br />
<br />
*'''xmlhome''' <target> returns the coordinates of the spawner for the targeted object. Also takes arguments:<br />
* '''go''' that teleports you to its spawner,<br />
* '''gump''' that opens its spawner gump,<br />
* '''send''' that sends the object back to the spawner location<br />
Example: .xmlhome gump <target><br />
<br />
*'''xmlshow''' This command turns spawn crystals into ships masts making them much easier to spot. One thing to remember about those masts is that even though they are hidden to players, they will still block movement, so you dont want to leave them as masts.<br />
<br />
*'''xmlhide''' hides the spawners, returning them to magic crystals from a ship's mast.<br />
<br />
*'''xmlsave''' filename will save all of the spawners on the current map to the file<br />
<br />
*'''xmlsaveall''' filename will save all spawners in the world to the file<br />
<br />
*'''xmlspawnerrespawn''' forces a respawn of all xmlspawners in the region<br />
<br />
*'''xmlspawnerrespawnall''' forces a respawn of all xmlspawners in all regions<br />
<br />
*'''xmlunload''' deletes spawners that are contained in an xml file. Basically the reverse of the load command. This provides a quick way of adding and removing specific sets of spawners that would represent a logical group, such as a mini-quest, or a dungeon, without having to use common naming prefixes, and without risking unintended spawner wipes that might occur with the use of the .xmlspawnerwipe prefix, command. Because it is the complement of the .xmlspawnerload (.xmlload) command, the effects of using it can always be reversed by simply doing an [xmlload on the same file.<br />
<br />
[http://www.runuo.net/wiki/index.php/XmlSpawner_Command_List,_description_of_all_xmlspawner_commands Complete List of all XML Spawner Commands]<br />
<br />
====Setting a new Spawn====<br />
How to Set the spawn:<br />
<br />
The first thing you need to do to create a spawn is creater the spawner bit. Type the command: .add xmlspawner (enter)<br />
<br />
This will create a "magical crystal" - Double Click the crystal to access the spawner gump, which looks like this:<br />
<br />
Spawnermain.jpg<br />
?<br />
====Name your XML Spawners====<br />
You can change the name of your spawn to whatever you wish at the top of the gump. You should try to use a name that includes what the spawn contains or a name you can remember for easy reference later. (Example: Haven-rats)<br />
<br />
To add a spawn to the bit you can add the creature name directly into the top line of the spawner gump (ex. rat or cat), or if you do not know or are unsure of the mobiles (creatures) name you can select the arrow at the right of the entry line which will bring up a menu of available items and mobiles to select (see red circle below): <br />
<br />
Spawnmenu.jpg<br />
?<br />
You can add up to 60 creatures/mobiles to one bit (though I doubt we will need to use that many on a single bit). Once you have the creatures listed that you wish to spawn, you can set the amount of each entry by clicking the Up/Down arrows to the left of that entry.<br />
<br />
The COUNT and MAX entries on the right side will update as you go. The bit is active by default so as you raise the total number of creatures they will appear around the bit. The default range (wander distance) of 5 and spawn interval of 5-10 mins. will be set on the bit unless and until you change in it the spawner props menu. (Will tell you how to change this later)<br />
<br />
Hitting the RESET button in this gump will remove all spawn in existence and turn off the bit. You can turn the spawn back on by clicking the red on/off button (changing it back to greeen) or by hitting the respawn button. The only difference here is RESPAWN will activate the bit and spawn all creatures listed for it, while turning the bit on only reactivates it and it will spawn based on the range and time intervals set rather then all at once. RightClick on the gump will close it and save the settings on the bit.<br />
<br />
You have created a basic creature spawn. ?Congrats.<br />
<br />
====Spawn Creation Shorthand====<br />
<br />
Once you have worked with the spawner and become familiar with how it works, you may wish to use the gumps less often, especially for basic spawns. THe spawner gives you this option with "constructables"<br />
<br />
For example:<br />
* .add xmlspawner creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange creaturename,<br />
* .add xmlspawner numberofcreatures mindelay maxdelay team homerange spawnrange creaturename.<br />
<br />
This simply matches the constructable calls available for the regular spawner through the gump itself.<br />
<br />
Container Spawning:<br />
placing a spawner in a container will allow items to be spawned in it (but not mobs). To get this to work properly you must create the spawner in one of two ways:<br />
<br />
'''EASY WAY:''' You can .addtoPack xmlspawner and target the container you wish the item to spawn inside and then edit the spawner from there.<br />
<br />
OR<br />
<br />
'''LONG WAY''' You can .add xmlspawner and target a spot on the ground. Type .set movable true, target the spawner you made, pick up and place the spawner in the container you wish the spawn to be. Then type .set movable false, target the spawner, thereby locking it in place inside the container. The spawner is not visible by players.<br />
<br />
Editing Individual creature or item spawns:<br />
XML is geared to accept commandline-like spawn specification. This basically allows you to set properties of each spawn in the spawner using a /propertyname/value/ format, Multiple properties can be specified for each spawn allowing mob/item naming, unique property setting, etc. This works well in conjunction with the item-triggering feature since you can create items with specified names that match the trigger name of another spawner.<br />
<br />
'''Creatures:'''<br />
<br />
An example of the specification would be instead of just listing an ogre to be spawned you would list an ogre/name/The Butcher/str/190/damagemax/50/hue/500, which would create a blue ogre, named "The Butcher", with 190 strength, and maximum attack damage of 50.<br />
<br />
Accessing the editing feature:<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
'''Items:'''<br />
<br />
You can also spawn items in the same way e.g. specifying a woodenchest/hue/300/movable/false would create a green locked down chest, or katana/name/Master of elements/slayer/elementalban/hue/200 would create a named light blue elemental super slayer. Note, the properties that you can set are basically the same as those that you can change with the .set command.<br />
<br />
XMLspawner also supports setting nested attributes on items such as armorattributes. To access these attributes use dot notation e.g. to change luck on a weapon use the specification string: katana/attributes.luck/50 or platehelm/armorattributes.magearmor/1/skillbonuses.skill_1_name/anatomy/skillbonuses.skill_1_value/20 to set magearmor and add +20 anatomy. These are the same property names that appear in the props list.<br />
<br />
'''Accessing the editing feature:'''<br />
You can input these strings in the book feature on the spawner line in the main spawner gump. To access this feature you click on the scroll symbol to the right of the spawner entry line (circled in pink below).<br />
<br />
Gumpedit.JPG<br />
?<br />
<br />
As you can see in the red circle above, the line is inputted in a text format in the book shown in the upper right and applied to that spawners entry in the main spawner gump (lower right in image above). In this case we have created a cow named Benny (circled in purple) that is hued to 450 (beige in this case) and given hitpoints of 100. - Gotta check syntax on HITS in this case because I think I did it wrong in the example I screenshot--oops.<br />
<br />
'''Weighted Probability spawning:'''<br />
With multiple entries in an xmlspawner, if maxcount on the spawner is equal to the total of the individual mob counts (the default condition), then the spawner will behave exactly as the original xmlspawner, but by reducing maxcount you can produce a reduced number of total spawns in which an individual mobs spawning probability is based on the relative count ratio.<br />
<br />
To implement a rare single mob spawn simply add multiple mobs to a single spawner in the ratio that you want them to spawn with, and then set the maxcount to 1. This will result in a single spawn that will produce any one of the multiple mobs with the probability of getting each determined by the count.For example:<br />
7. add a balron, count = 1<br />
8. add a gargoyle, count = 10<br />
9. go to the xmlspawner props and set maxcount to 1<br />
10. do a respawn and you are done.<br />
<br />
<br />
This will result in a single spawn that will produce a balron roughly 10% of the time (actually 1 out of 11) and gargoyles the rest of the time.<br />
<br />
I use this to put named spawns in as the rare with comparable basic spawns as the common, e.g. a named lich, that spawns rarely instead of a regular lich. Of course, you can also specify these parameters in your xml spawner files: Example (from XML file):<br />
<br />
<MaxCount>1</MaxCount><br />
<br />
<Objects>ratman=15:ratmanarcher=15:barracoon=1</Objects><br />
<br />
This will give you a spawn that will produce a single ratman or ratman archer with equal probability about 48% of the time each and a named mob about 3% of the time (1 out of 31 times)<br />
<br />
'''Understanding Spawner Props:'''<br />
Now that we know how to make a spawn, it is time to look at how to customize it. XmlSpawner allows for a wide array of customizations, from spawn intervals to player approach and speech triggers. To make adjustments to a spawner, you need to access the PROPS gump.<br />
<br />
From the main spawner menu (DCLICK the spawner). Click the props button at the bottom right of the main menu (see image above). This will open the props gump (pictured below). It is important to understand that these settings are for the spawner NOT for the individual creatures on the spawn bit. Those can be edited more specifically (we will get into these later). The spawner props gump looks like this:<br />
<br />
Propsgump.jpg<br />
?<br />
<br />
'''Important Spawner PROPS'''<br />
In this section we will discuss the various prop settings in more detail. As we learn their uses this section will expand, so if a setting is missing at this point, I am not sure how to set or use it, or I have no idea what it does yet.<br />
<br />
I have found some prop settings to be more helpful then others. Some that I think are really helpful and used more often are listed first:<br />
<br />
'''MaxDelay'''<br />
This sets the maximum time before the spawn triggers again until the MAX COUNT setting is reached for that creature in the spawn list. It only triggers ONE mob/item at a time for the range. So if you max count is 10 and your max and min delay are both 1 minute, and the entire spawn is wiped out, it would take 10 mins to completely respawn.<br />
<br />
'''MinDelay'''<br />
This sets the Minimum time the spawner will wait before triggering the next creature on the spawn.<br />
<br />
'''ShowBounds'''<br />
The default setting for this is FALSE, but when set to TRUE it gives you a white box that shows you the spawn range box that is current set on the spawner. This is the area in which the spawners will appear. They may or may not be set to stay in that box once spawned (see HomeRange). Turning this on is very helpful when working with a spawner. It can be turned on or off as needed.<br />
<br />
'''NoTriggerOnCarried'''<br />
This property blocks spawner triggering when the player is carrying the named item. This can be used to prevent a quest spawns (e.g. starting quest gump) from being triggered if a quest item (e.g. starting quest token) was already in the players possession.<br />
<br />
'''TriggerOnCarried'''<br />
This property has the opposite effect on the spawner. When set, the spawn will only fire if the trigger item is present.<br />
<br />
'''X1_Y1'''<br />
This prop changes the NW or Upper left corner of your spawner range box. When you select this prop you are then given the option to use your current location for the target, use a targeting cursor to choose the location, or finally you can enter the X,Y and Z coords manually.<br />
<br />
'''X2_Y2'''<br />
This prop works exactly like above, but set the SE or lower right corner of your spawner range box.<br />
<br />
'''HomeRange'''<br />
This is how many times the spawn will wander from the bit after they spawn. Basically their "home area".<br />
<br />
'''SpawnRange'''<br />
This setting reflects how far from the bit a spawn will appear when it is first spawned. If you set the SpawnRange outside or larger then the HomeRange, the creatures that spawn otuside the HomeRange will work their way back home over time.<br />
<br />
'''Time of Day (TOD)'''<br />
Set the TODStart and TODEnd to the times of day that you would like to limit spawning to. If they are set to the same value, that enables spawning at all times. If the Start value is greater that the end value, that indicates a time window that spans midnight. Proximity triggering will also be limited to the TOD window. Spawns that remain after the TOD window has passed will be removed. Note that timing of spawning is still governed by the spawn timer (can be seen as the NextSpawn property in the spawner property list). The TOD window simply determines whether a spawn will be allowed to be created once the spawn timer has elapsed. The TOD window is also applied to proximity triggering. It determines both whether the trigger can be set (must be triggered during the TOD window), as well as whether the spawn can be created (spawn must occur during the TOD window).<br />
<br />
'''TODMode'''<br />
The TODMode property that allows Time of Day (TOD)-dependent spawning to be in either Gametime or Realtime.<br />
<br />
'''PlayerTriggerProp'''<br />
By specifying a property test string in PlayerTriggerProp, you can trigger based upon the value of a property on a player within the proximity range of the spawner. For example setting PlayerTriggerProp to hits<50, would cause the spawner to trigger whenever a player within range fell below 50 health.<br />
<br />
Other properties could be used to trigger when a player got hungry (hunger<5), or tired (stam<30), or was a criminal (criminal=true), or was fighting (combatant!(-null-)). Any property that is visible with the [props command, can be tested and the value to test against will be the value that appears there (or with the [get propname command)<br />
<br />
'''MobTriggerName'''<br />
Mob property triggered spawning is identical to player property triggering except that you specify a mob name in the MobTriggerName field, and then set the property test in MobTriggerProp. This will trigger whenever a player comes within proximity range of the spawner and the uniquely named mob is found and satisfies the property test specified in MobTriggerProp. Note that this mob can be anywhere in the world, it is the player that sets off the trigger and therefore has to be in range. These can be combined with any of the other triggering options so that, for example, a player holding a named quest item, could trigger a spawn based upon his fame or karma, (with different fame levels triggering different spawns), depending on the health of a named mob that he was doing combat with.<br />
<br />
'''ProximityRange'''<br />
When the proximityrange property is set to a value zero or greater, the spawner will become activated whenever a player comes within that range, and will be deactivated when a player leaves the range. Once the spawner has been triggered, it will run until the spawn timer elapses, even if the player that activated it leaves the proximity range, after spawning it will be shut off and will remain inactive until the next proximity triggered activation.<br />
<br />
Note that when used in combination with the X1Y1 X2Y2 specification for spawning area, you can use this feature to sense players in one location and spawn mobs in another. You can also combine this with the duration parameter to have player triggered, but limited duration spawns, so that they will reset even if the player that triggered it doesnt kill the spawned mob - basically a one-shot spawner. Counselors and above will not trigger the sensor.<br />
<br />
'''ProximityMsg'''<br />
Allows setting a proximity trigger message that is displayed over the player when the spawner is triggered. Example: "You have the strange feeling that you are being watched."<br />
<br />
'''ProximitySound'''<br />
This allows you to set the sound played when a proximity triggered spawner is tripped by a player (a click and sparkle sound by default). If you are using the most recent version of inside UO to get the sounds, you need to subtract 1 from the number for it to play the proper sound.<br />
<br />
'''SpeechTrigger'''<br />
This property allows for speech triggering of spawns. Set the property SpeechTrigger with the string you want to trigger on.<br />
<br />
This can be combined with the other proximity features for example, to allow spawns that are triggered when a player is within range, has an item, and, for instance sets a switch, or places gold in a container, and then says the key phrase.<br />
<br />
Could also use it for implementing something like a guard zone in which calling out for guards would spawn for a specified duration. Or by combining it with the refractory option you could allow it to generate items on demand but only so frequently (e.g. guards, regs, drinks, etc. only once an hour, or once a day) or even only during certain times of the day.<br />
<br />
'''TriggerOnCarried'''<br />
Item-dependent triggering This is used in conjunction with proximity sensing. When a player with a specific named item in his pack comes within proximity range of the spawner, the spawn will be triggered.<br />
<br />
TriggerOnCarried is used to specify the name of the trigger item. If it is set to null then items are not checked and it behaves like a normal proximity-triggered spawner. To prevent excessive pack searching, the item test is only conducted once upon crossing the proximity threshold, and the item must be in the top level of the backpack - no nested searching. Proximity sensing does not work inside containers.<br />
<br />
The refractory settings can be used to limit the way in which the trigger is activated. By setting a short delaymin/delaymax you can have a spawn that appears almost immediately after triggering, but to prevent the spawner from being triggered right after that, setting the refractory period to something like 5 minutes will keep the proximity triggering from being activated for that period.<br />
<br />
'''TriggerObject'''<br />
'''TriggerOnProperty'''<br />
<br />
This allows for the ability to make player-proximity triggered spawning also dependent upon a property of any targetable item. This allows spawn chaining by making one spawner dependent on the state of another spawner. It also allows spawners to be made dependent upon things such as switches, doors, number of items, weight, or amount of gold in containers, etc.<br />
<br />
To use this feature, select the TriggerObject property in the props list, then target the object to trigger off of. Then set the TriggerObjectProperty field with the property and the value to test for.<br />
<br />
For Example: maxgold=20, or killcount>10, or open=true. Where maxgold, killcount, and open are property names on the objects. Supports <, >, and = operators for testing the values. Supports, int, bool, string, and double value types.<br />
<br />
'''TriggerProbability'''<br />
This has the value of 1 by default which means the spawn will be triggered whenever the triggering conditions are met. Setting TriggerProbability to a value between 0 and 1 will reduce the chance that a spawn will be triggered even when the other triggering conditions are met. So, for example, having a spawn that is triggered by opening a door only 1 out of 10 times, or a rare that only spawns occasionally at a certain time of day.<br />
<br />
'''Duration'''<br />
The duration parameter enables spawns of limited duration. By default, spawners have a duration of zero, which means infinite duration (the standard case). The duration timer begins immediately after a spawn, and when the timer expires, all spawns on the spawner will be removed until the next respawn. Respawning will occur according to the min and max delay as usual. I like to use this to make rare spawns such as the common or doom rares, harder to get. Since on servers with a smaller player base there is not the competition to get rares, this feature can make them as infrequent as they would be on a more populated server, like only available for one second every 24 hours or more.<br />
<br />
Note: when saving spawns to an xml file the duration parameter will be saved as seconds, not minutes.<br />
<br />
'''DurationOver'''<br />
As far as I can figure out, this doesnt do anything, it simply tells you when the duration amount above is about to happen. A count down field, so it were.<br />
<br />
'''Other PROP settings:'''<br />
AllowGhostTrig This prop can either be set to true or false. A true setting will allow ghost characters to trigger the spawner, while a false setting will set the spawner to only be triggered by living characters. Pretty self explainatory.<br />
<br />
CurrentCount This is the number of creatures set to spawn from this bit. It reflects the cumulative total of all the spawns in the list added together. I can't think of a reason you would need to make adjustments to this.<br />
<br />
ExternalTriggering This allows other objects to actively control the spawner. This feature is enabled by setting the ExternalTriggering property to true, then the spawner will add the state of the ExtTrigState property to its list of triggering conditions. This can be used in conjunction with any of the other triggering features, so that you could have a spawner that was dependent upon proximity triggering and activation of an object (like one of the levers or switches included) that would set the ExtTrigState. For example, to place a spawner under the control of a lever add a simplelever, set the TargetProperty prop of the lever to /exttrigstate/true, and the target1property to /exttrigstate/false. Then enable ExternalTriggering on the spawner. Switching the lever will then turn the spawner on and off. By enabling speech triggering as well, the spawner will only speech trigger when the lever is also in the correct position.<br />
<br />
====XML Quests====<br />
<br />
'''Quest Objectives:'''<br />
The XMLspawner quests system supports the following objective types:<br />
<br />
KILL, KILLNAMED, COLLECT, COLLECTNAMED, ESCORT, GIVE, GIVENAMED<br />
<br />
Some examples are:<br />
* KILL,mobtype,count,<br />
* KILLNAMED,mobname,count,<br />
* COLLECT,itemtype,count,<br />
* COLLECTNAMED,itemname,count.<br />
<br />
The quest items can now keep track of kills and collected items in their quest status, and quest tasks that require multiple mobs to be killed can be specified. To use this feature, spawn or create an XmlQuestToken class item such as the QuestNote, and set one or more of the Objective properties with the keywords.<br />
<br />
For example to make a killtask type quest in which the player must kill 5 balrons, 5 lichlords, a named mob called "Bubba", and collect 20 diamonds, you could;Set the<br />
* Objective1 property to "KILL,balron,5",<br />
* Objective2 property to "KILL,lichlord,5",<br />
* Objective3 property to "KILLNAMED,Bubba,1",<br />
* Objective4 property to "COLLECT,diamond,20<br />
A spawner can be then be set up to provide a reward when the objectives on the questnote are completed.<br />
<br />
'''Spawning Conditions and Keywords:'''<br />
Special keywords can be used in spawning for control or effects. These will be explained in more detail below, but the keywords are listed below:<br />
<br />
value keywords: RND, RNDBOOL, RNDLIST, RNDSTRLIST, RANDNAME, INC, MUL, MOB, SERIAL, SKILL<br />
<br />
control keywords: WAITUNTIL, IF, WHILE, and GOTO<br />
<br />
action keywords: ADD, ANIMATE, EQUIP, GIVE, TAKE, TAKEBYTYPE, CAST, SAY, MSG, SENDMSG, BCAST, RESURRECT, POISON, DAMAGE, MUSIC, EFFECT, SOUND, GUMP, DESPAWN, DELETE, UNEQUIP<br />
<br />
loot keywords: ARMOR, WEAPON, JEWELRY, JARMOR, JWEAPON, SARMOR, SHIELD, LOOT, LOOTPACK, POTION, SCROLL, NECROSCROLL<br />
<br />
access keywords: GET, GETONTHIS, GETONPARENT, GETFROMFILE, GETONSPAWN, GETONCARRIED, GETONMOB, GETONTRIGMOB, SET, SETONTHIS, SETONPARENT, SETONSPAWN, SETONSPAWNENTRY, SETONCARRIED, SETONMOB, SETONTRIGMOB, PLAYERSINRANGE, TRIGSKILL<br />
<br />
Access Keywords:<br />
SETONCARRIED<br />
<br />
This allows you to set properties on a named item carried by the triggering player. The syntax is SETONCARRIED,itemname/prop/value/prop2/value... This can be used in conjunction with the TriggerOnCarried property and the XmlQuestToken items to detect and set quest objectives on quest token items.<br />
<br />
With TriggerOnCarried, and NoTriggerOnCarried if the item is an XmlQuestToken item, then the status of objectives can also be specified as a requirement using the syntax "itemname,objective,objective,.." in the TriggerOnCarried or NoTriggerOnCarried string.<br />
<br />
For example if you wish to trigger a spawner only when quest item "Blathers Quest" is carried and has objective 1 completed, then use the string "Blathers Quest,1" in the TriggerOnCarried property. If you would like to prevent triggering when objective 1 of that quest has already been completed then use the same string in the NoTriggerOnCarried property.<br />
<br />
GETONPARENT and GETONTHIS<br />
<br />
These are the GET counterparts to the SETONPARENT and SETONTHIS keywords. For attachments, the GETONPARENT keyword allows access to properties on the object that it is attached to. This is generally useful when trying to include properties in substitution strings, such as an XmlDialog where you could have a text string like this<br />
<br />
Hello, my name is {GETONPARENT,name}<br />
<br />
'''Value Keywords'''<br />
<br />
MOB:<br />
<br />
MOB keyword that can be used as a property value when setting properties that need a mobile id. e.g. the combatant property on a mobile. The mobile id of the named mob will be substituted for the MOB entry. The syntax is /MOB,name/ so for example to spawn a mob and have it attack another mob you could specify something like "ogre/combatant/MOB,The outcast", where a mob named "The outcast" had already been spawned somewhere. The two requirements for using this keyword are that the mob must exist and the mob name must be unique.<br />
<br />
RND:<br />
<br />
RND allows you to generate random values when specifying properties RND can be used anywhere that an integer value is normally specified. The syntax for RND is /RND,min,max/ For example ogre/hue/RND,1,500/ADD,0.1/<katana/hue/500/attributes.luck/RND,50,100> would spawn a randomly colored ogre with a 10% chance of dropping a blue katana with random luck values between 50 and 100.<br />
<br />
To spawn a random range of statics from Inside UO, you need to be tricky. You need to ADD,.1/<static,4036/ItemID/RND,4036,4044> This will add a set of shells, static 4036 to a mob/chest, and then you set the ItemID with the RND option to vary the graphic between range 4036 and 4044 which are all shells.<br />
<br />
SKILL:<br />
<br />
The SKILL,skillname keyword can be used both for setting skill values, as well as testing for them. The SKILL keyword can be placed anywhere that a valid property name could be used. For example to spawn a mob with certain skills use a spawn spec like ogre/SKILL,anatomy/100/SKILL,macing/100.<br />
<br />
To set skills on players that triggered the spawner use a spec like SETONTRIGMOB/SKILL,meditation/120/SKILL,magery/120. This can be used to create skill-gate like behavior.<br />
<br />
To test for a skill value for triggering for example, set PlayerTrigProp to SKILL,mining>100.<br />
<br />
TRIGMOB:<br />
<br />
The TRIGMOB keyword, which will substitute the mob who triggered the spawner as its value. Can be used to set any property that takes a mobile as its argument. So, for example, you could use it to spawn a mob that had the player who triggered it as the combatant, "ogre/combatant/TRIGMOB", or spawn pets that are controlled by the triggering player, for example ogre/name/Slave/controled/true/controlmaster/TRIGMOB<br />
<br />
'''Action Keywords:'''<br />
<br />
ADD:<br />
<br />
ADD keyword allows you to add items to spawning mobs packs. The syntax for ADD is /ADD/itemtype, or /ADD,probability/itemtype, or /ADD,probability/<itemtype/prop1/value/prop2/value...> where probability is a drop probability between 0 and 1 and <itemspec> is an embedded item specification, so that you can put attributes on the added item as well. An example of this would be the specification string ogre/name/Lord Bleck/ADD,0.3/katana that would spawn an ogre named Lord Bleck with a 30% probability of dropping a katana.<br />
<br />
As a further example, this can be combined with the note object for simple quest-like behavior using specification strings such as lich/name/Dark Master/ADD/<simplenote/notestring/My soul will not rest until you return with the Ring of the Elements found on my nemesis, the lich lord Artemis in the dungeons of Ilshenar. Take my sword to aid you./titlestring/The Return of Artemis/name/Quest of Artemis/size/2>/ADD/<longsword/maxdamage/RND,30,70> which will add the specified note and sword to a lich named Dark Master.<br />
<br />
ANIMATE:<br />
<br />
The ANIMATE,action[,framecount][,repeatcount][,forward true/false][,repeat true/false][delay] keyword to add animations to any mobile. For example,<br />
<br />
SETONTRIGMOB/ANIMATE,32,5,1,true,false,0<br />
<br />
would cause the triggering player to bow.<br />
<br />
Or used in the Action field on an XmlDialog it could be used to make an npc bow, like:<br />
<br />
SETONTHIS/ANIMATE,32,5,1,true,false,0<br />
<br />
CAST:<br />
<br />
The CAST keyword allows the spawner to cast spells on triggering players. The syntax is CAST,spellname[,arg] or CAST,spellnumber[,arg] where spellname and spellnumber are the registered spell names and numbers found in Scripts/Spells/Initializer.cs. This is used with triggering to allow the triggering mob/player to cause the spell to be cast with the triggering mob/player as the target. Both harmful and beneficial spells can be cast. Karma effects will also be applied. There are no casting delays, so multiple spells may be cast simultaneously. Some spells are are location targeted and can take an additional argument [,arg] which is a range value used to determine a random target location (+-range) relative to the caster. The default and mininum range value is 1. The Polymorph spell uses the 2nd argument as the bodyvalue.<br />
<br />
For example, to set up a spawner to autoheal the triggering mob use the spawn spec CAST,greaterhealspell. To polymorph the triggering player into a bear use CAST,polymorphspell,212. To cast lightning on the triggering player CAST,lightningspell Not all spells will work automatically. Item targeted spells such as mark, recall, and sacredjourney will cast and bring up a targeting cursor.<br />
<br />
NOTE: I will have to figure out if this can work with or be applied to our custom magic system. I dont see why not, but this has not yet been tested.<br />
<br />
DELETE:<br />
<br />
The DELETE keyword can be used to modify a standalone keyword and delete the object that it refers to (it will not allow you to delete players) For example, this spawn entry:<br />
<br />
SET,Mystic Sword,longsword/DELETE<br />
<br />
will delete the longsword named "Mystic Sword"<br />
<br />
SETONMOB,SeeYouLater,Balron/DELETE<br />
<br />
will delete the balron named "SeeYouLater"<br />
<br />
SETONCARRIED,,Gold/DELETE<br />
<br />
will delete gold that it finds being carried by the triggering mob<br />
<br />
SETONSPAWN,TargetSpawner,2/DELETE<br />
<br />
will delete all of the spawns of subgroup 2 on the spawner named TargetSpawner. This is basically the same as using the DESPAWN keyword but will delete all spawns regardless of their CLR flag setting.<br />
<br />
GUMP<br />
<br />
The GUMP keyword that will send a gump containing the designated text to the triggering player. Syntax is GUMP,title,number/text. A default set of gumps has been added, but these can be extended by the user. A sample script XmlQuestGumps.cs has been included showing the form of the default quest gumps. It is required to use the default GUMP features.<br />
<br />
GUMP number 0 is a simple text display gump. GumpState is set to "done" after viewing.<br />
GUMP number 1 displays a gump with yes/no selections. GumpState is set to either "yes" or "no" depending on the user selection.<br />
GUMP number 2 displays a gump with a text entry area. GumpState is set to the text entered.<br />
GUMP number 3 will send a quest gump with accept or decline options. GumpState is set to either "accept" or "decline" depending on the user input.<br />
<br />
UNEQUIP:<br />
<br />
The UNEQUIP,layer[,delete] keyword allows you strip a mobile of an equipped item on the specified layer. If the optional "delete" argument is specified, then the removed item will be destroyed, otherwise it will simply be dropped into the the mobiles pack. For example, you could disarm a one-handed weapon from a triggering player using:<br />
<br />
SETONTRIGMOB/UNEQUIP,OneHanded or spawn a mobile, remove existing equipment, and replace it with new equipment with something like:<br />
<br />
banker/UNEQUIP,pants/UNEQUIP,shoes,delete/EQUIP/sandals/SAY/Hey, where are my pants? This will create a banker, take off his pants and put them in his pack, take off his shoes and delete them, and then put on a pair of sandals in their place.<br />
<br />
MSG:<br />
<br />
The MSG keyword for the spawn specification strings that can be used to display messages over mobs or items when they are spawned. The syntax is /MSG/text/, with an optional probability factor specified using /MSG,probability/text/. So, for example, to spawn a lich that occasionally taunted you, you could use the spec string "lich/MSG,.5/All hope is lost/MSG,0.2/you feeble mortal/MSG/hahahahaa" to give you random combinations of messages such as "All hope is lost hahahahaa", or "feeble mortal hahahaha", or just "hahahahaa".<br />
<br />
Or the string "ham/MSG/a tasty morsel" would place the message "a tasty morsel" above the ham when it was spawned.<br />
<br />
Note, that because the switch/lever objects also use the same syntax for specifying properties on target items, you can use this keyword in conjunction with those items. So, for example, you could have a lever that opened a door, and also displayed a message over the door indicating it had opened using the string "/locked/false/MSG/the door magically opens" in the target item property description.<br />
<br />
GIVE:<br />
<br />
The GIVE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is the same as the ADD keyword, but the item is placed directly into the pack of the player that triggered the spawner,<br />
<br />
GIVE/itemtype<br />
GIVE,probability/itemtype<br />
GIVE,probability/<itemtype/prop1/value/prop2/value...><br />
<br />
TAKE:<br />
<br />
The TAKE keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item. The syntax is TAKE/itemname or TAKE,probability/itemname. It will search the trigger players pack, and all containers in the pack for the first item that matches the name, and then delete it. It will not remove containers.<br />
<br />
By combining the GIVE and TAKE keywords, you can have a spawner that takes one item and replaces it with another, for example a quest item can be replaced with a quest reward.<br />
<br />
The TAKE keyword also allows for a partial removal of named stacked items. When called with the quantity argument, TAKE will attempt to remove the specified quantity of the stacked item. If less than the quantity is found, then whatever the amount found will be taken. If the item is not stackable, then the item will simply be taken.<br />
<br />
TAKEBYTYPE<br />
<br />
The syntax for this is TAKEBYTYPE,probability,quantity/itemtype. It is similar to the TAKE keyword but items are identified by type rather than name. For example, to take 1000 gold from a triggering player use the spawn spec TAKEBYTYPE,1,1000/gold.<br />
<br />
Note, by default neither TAKE and TAKEBYTYPE will search a players bankbox. Adding the argument "true" added to TAKEBYTYPE and TAKE keywords allows bankboxes to be included in the searched items. The syntax is TAKE,probability,quantity,true/itemname and TAKEBYTYPE,probability,quantity,true/itemtype.<br />
<br />
SET:<br />
<br />
The SET keyword which is also used as a spawn spec and is "spawned" just like a regular mob/item. It sets properties on a target item that is specified in the SetItem property of the spawner. You target an item and when the spawner is triggered, it will apply the property changes contained in the SET specification string. For example, this can be used to open a door when certain trigger requirements are met, such as saying a keyword, or possessing an item, etc. using a spec string like:<br />
<br />
SET/locked/false/MSG/the door is magically opened, and targeting a door from the SetItem property, or making a switch or lever or chest visible, when triggered with the spec line SET/visible/true.<br />
<br />
Any property that can be written using the .set command, can be linked to spawner triggering using the SET keyword. Because the SET commands are "spawned" just as other mobs are spawned, they can be used to set properties of items at specified intervals by using spawners that are not triggered but are simply run on the normal timed schedule. For instance, using the time of day feature, you could have a set of doors that are locked during the day and opened at night, or are locked and unlocked occasionally on a 5-10 minute schedule (min/max delay).<br />
<br />
Note, in order to have the target item properly saved to an xml file when using .xmlsave, the target item must have a unique name.<br />
<br />
SETONTRIGMOB:<br />
<br />
The SETONTRIGMOB keyword which is used as a spawn spec, and is "spawned" just like a regular mob/item, it is just that nothing is created but rather target properties are set on the mob that triggered a spawner. This could be used for example to drop mana or stamina when a player comes within range of a spawner, or kills a target number of mobs, or is carrying an item, etc. Or hide the player when a keyword is spoken and they possess a specific item. (e.g. spawn spec SETONTRIGMOB/stam/0/mana/0, or SETONTRIGMOB/hidden/true)<br />
<br />
Also, by changing the x,y,z properties of the trigger player, it can be used to construct more sophisiticated teleporters, such as one that sends a player to a new location when they are carrying an item, and a target lever is in a specific position, or when a certain number of mobs are killed, or when their health reaches a certain level, etc. As well as the more straightforward type of triggering such as on a keyword.<br />
<br />
Note, this is potentially a VERY powerful ability. Use of this feature should be made with care, since it can make changes to any writable players attributes. Of course, it cant do anything more than an admin could do normally by using the .set command on a player.<br />
<br />
====XML Attachments====<br />
For a list of available attachments, type in game .availatt<br />
<br />
Local variables are stored as XmlLocalVariable attachments on the spawner and can be viewed and modified using the .getatt command and targeting the spawner.<br />
<br />
Supports the use of modifiers like global, multi, area, etc. with the .addatt and .delatt commands that add and delete attachments from objects (thanks to Vento Divino for the suggestion). So to add a particular attachment to all players you could do something like<br />
<br />
.global addatt xmldata datavalue where playermobile<br />
<br />
and to remove those attachments you could use<br />
<br />
.global delatt xmldata where playermobile<br />
<br />
Some of the stat and skill mod attachments are (will add syntax when I find it):<br />
* XmlStr<br />
* XmlDex<br />
* XmlInt<br />
* XmlSkill<br />
<br />
and the fame, karma, and virtue attachments are:<br />
* XmlAddFame<br />
* XmlAddKarma<br />
* XmlAddVirtue<br />
* XmlStamDrain<br />
* XmlManaDrain<br />
* XmlLifeDrain <br />
<br />
When attached to a mob or weapon, these will drain stam/mana/life from the defender on each hit and give it to the attacker. If attached to an item in the world, it will drain a random amount of stam/mana/life when a player moves near it. The random value will be between 0 and the argument to the attachment. The default refractory period between uses is 5 seconds. If a negative drain value is given, then the attachment will be reported as a curse when attached. For example, using the command<br />
<br />
.addatt xmllifedrain 30 3 120<br />
<br />
and targeting a mob, would give that player/mob 2 hours of lifedrain ability that would drain 0-30 hps on every hit, with a max rate of once every 3 seconds.<br />
<br />
'''XmlSaveItem'''<br />
<br />
This attachment that allows you to internalize an item and hold it on the attachment for later retrieval. This is used by xmlspawners and xmldialogs to keep track of taken items, but could be generally used to temporarily hold items. The SavedItem property can also be manually set and will internalize and maintain the targeted item on the attachment. When the attachment is deleted, the saved item is also deleted. By setting the RestoreItem property on the attachment to true, the saved item will be placed back into the world at the location of the object the attachment was attached to. If at any time the saved item is placed into the world (moved off of the internal map), XmlSaveItem will no longer keep track of it.<br />
<br />
'''.xmledit'''<br />
<br />
This utility is for editing XmlDialog specifications while ingame. This allows you to add or change npc dialog without having to create and load a .npc file. Just issue the command "[xmledit" and target an object with an XmlDialog attachment. If it does not have an attachment, you will be asked if you wish to add one.<br />
<br />
The editing gump is divided into four sections.<br />
<br />
The top section allows you to change the overall properties of the attachment, such as triggering range, triggering conditions, and reset time.<br />
<br />
The middle section allows you to view and select a specific speech entry for editing. Press the button to the left of the entry to select it. The checkboxs on the right are used to select entries for deletion. Check the boxes of entries you wish to delete and then press the Delete button at the bottom of the gump. You will be prompted to confirm deletion. To add a new speech entry, just press the "Add" button at the bottom of the gump and a new empty entry will be added to the end of the entry list.<br />
<br />
The lower section allows you to edit the selected entry. Enter in the new values. The changes will take effect the next time the gump is updated, either by selecting the "Refresh" button at the bottom of the gump, selecting another entry, or exiting the gump.<br />
<br />
Currently, text entry is limited by the size of the text entry field. This will be updated with the book text entry interface in an upcoming version.<br />
<br />
The bottom section contains buttons for Refreshing the XmlDialog, Adding a new speech entry, Deleting selected entries, Saving the XmlDialog specification to a .npc file, and paging through the speech entries.<br />
<br />
The specification can be saved to a .npc file by entering in a filename in the "Save to file" text entry area and pressing the button next to it. The .npc extension will automatically be added. If the XmlDialog was loaded from an existing .npc file, that filename will be shown in the "Config:" field to the left of the Save option. There is currently no check for overwriting an existing file, so be careful (I will be adding this feature). This option is restricted to administrators.<br />
<br />
'''TemporaryQuestObject'''<br />
<br />
The syntax is: TemporaryQuestObject,questname[,expiration]<br />
<br />
This attachment allows you to tag items/mobiles so that they are automatically deleted after some period of time, or whenever the quest they are associated with is completed (when the questholder associated with the quest deleted). (thanks to Eymerich for the idea).<br />
<br />
To use this simply put the attachment on an object, and assign the questname, owner.<br />
<br />
You can also use it to make temporary objects that are not associated with a quest by just specifying an expiration time. The way it works is When the attachment is deleted, the object it is attached to is also deleted. Typically you would probably create the object with the attachment using a spawn entry like this:<br />
<br />
GIVE/<questholder/name/MyQuest/objective1/KILL,orc/autoreward/true/rewardstring/gold,100> GIVE/<longsword/name/Quest Sword/ATTACH/<temporaryquestobject,MyQuest/questowner/TRIGMOB>><br />
<br />
This would hand out a quest named MyQuest, and then give the triggering player a longsword named "Quest Sword" that was associated with MyQuest. Note that the mobile who is the questowner of the temporaryquestobject must be manually specified by setting the QuestOwner property on the attachment.<br />
<br />
To make a general temporary object independent of any quests, just use the attachment with an expiration time like this<br />
<br />
longsword/name/poof/ATTACH/temporaryquestobject,tempsword,3<br />
<br />
which would make a sword that would autodelete after 3 minutes (the name "tempsword" could be anything since it it isnt really used for autodeletion and is just to identify the attachment).<br />
<br />
'''XMLFreeze:'''<br />
<br />
The XmlFreeze[,seconds] attachment that allows you to permanently or temporarily freeze a mobile in place. If attached with no duration argument, they will remain frozen until the attachment is removed. This can be used with the ANIMATE keyword to keep mobs from moving while animations are applied.<br />
<br />
orc/ATTACH/xmlfreeze,10<br />
<br />
would spawn the orc frozen for 10 seconds.<br />
<br />
SETONTRIGMOB/ATTACH/xmlfreeze,10/MSG/You are frozen with fear!<br />
<br />
would freeze the triggering player for 10 seconds and send them a message.<br />
<br />
'''XmlMorph'''<br />
<br />
This attachment changes the BodyMod property of target mobiles. When mobiles are deserialized, they automatically restore their default bodytype, so the OnReattach method can be used by the attachment to override this and restore the desired BodyMod assignment.<br />
<br />
'''XmlWeaponAbility:'''<br />
<br />
This attachment allows mobs to be given special attacks on the fly. You can add special attacks to a spawned mob with a spawn entry like:<br />
<br />
orc/ATTACH/xmlweaponability,BleedAttack<br />
<br />
or manually add it to any mob with<br />
<br />
[addatt xmlweaponability BleedAttack<br />
<br />
and then target the mob. Note, the attack name is case sensitive and can be any of the following:<br />
* ArmorIgnore<br />
* BleedAttack<br />
* ConcussionBlow<br />
* CrushingBlow<br />
* Disarm<br />
* Dismount<br />
* DoubleStrike<br />
* InfectiousStrike<br />
* MortalStrike<br />
* MovingShot<br />
* ParalyzingBlow<br />
* ShadowStrike<br />
* WhirlwindAttack<br />
<br />
'''Other Keywords:'''<br />
ARMOR, WEAPON, POTION, that will create random magic items of the type specified.<br />
<br />
ARMOR,min,max will drop a random piece of armor, shield, or jewelry with an attribute level randomly selected between min and max. min and max can range between 0 and 5 with 5 being the most powerful.<br />
<br />
WEAPON,min,max does the same for weapons.<br />
<br />
POTION drops a random potion,<br />
<br />
Add these to the spec line in place of normal types, i.e. wherever you would use a typename like katana, or platehelm, just substitute these keywords. These can either be used as the basic entry in a spawn spec, therefore spawning them directly, or they can be used with the ADD keyword to add them to a spawned mobs pack. e.g. ogre/ADD,0.5/WEAPON,2,5 would spawn an ogre with a 0.5 probability of dropping a lev 2-5 magic weapon.<br />
<br />
The spec line ARMOR,5,5/name/Bruiser/hue/300/durability/200 would spawn a random piece of magic armor of level 5, name it Bruiser, turn it blue, and set its durability to 200.<br />
<br />
The spec line ogre/ADD,0.5/<ARMOR,5,5/name/Bruiser/hue/300/durability/200> would add that piece of armor to a spawned ogres pack with probability 0.5<br />
<br />
The line GIVE/WEAPON,5,5 would give a level 5 magic weapon to the player that triggered the spawner.<br />
<br />
'''Quest Items:'''<br />
<br />
'''SimpleNote'''<br />
<br />
There is a new SimpleNote object in the included script simplenote.cs which is an item that can be used independently, but is designed as added content for exercising spawner capabilities for more dynamic quest-like use. It is NOT needed for the spawner to function and is purely optional.<br />
<br />
It allows construction of simple notes/messages that are designed to be read by players by opening into a scroll gump of variable size. The text of the note, its title, and text color can be specified by the user. The note can be defined in the spawner and can be used to pass trigger requirements etc. to the player. e.g. in the spawn specification string enter: simplenote/notestring/Seek out the Sword of Misery that is held by the ogre lord Blasphema in the forest north of Trinsic. Call out to him, and you will bring him forth./size/2/titlestring/The Quest for Blasphema/name/Blasphema's Quest.The triggering of the spawn could then be made dependent upon the player possessing the named note ("Blasphema's Quest").<br />
<br />
'''QuestNote:'''<br />
<br />
The quest item (QuestNote) and quest token item class (XmlQuestToken), that allows multi-part quests, with expiration time, and transfer restrictions. By placing quest information on these player carryable tokens, quests can be made without modification to playermobiles, or to any scripts at all, making them completely portable. XmlSpawners can modify or read multiple objectives on the items using the objective1-5 and completed1-5 properties.<br />
<br />
The use of quest token items for mainenance of quest information also allows for multiple simultaneous quest simply by possessing the appropriate tokens. Quest item properties are public, so scripts can freely access them for constructing specific quest scenarios that can then be used to drive spawning.<br />
<br />
Items that belong to the XmlQuestToken class lose their validity whenever they are transferred from the original owner, either to other players, to the world, or to containers not in the players pack. This prevents transferral of quests, and other exploits. These items are also blessed by default.<br />
<br />
When an XmlQuestToken item is used as the target of carried-item triggering (TriggerOnCarried property), then it must be valid (never removed from the players pack), and satisfy specified subobjectives in order to trigger. (see TriggerOnCarried, and NoTriggerOnCarried multiple objectives. Objective status can be seen on the quest log status gump).<br />
<br />
XmlQuestTokens can also be given limited lifetimes using the expiration property. Due to limitations in the way in which TimeSpan type variables are handled by .net, currently the maximum expiration time for a quest token is 24 hours.<br />
<br />
'''Other Items:''' <br />
* Added several new items for added content that are independent but enhance the use of the xmlspawners. They are a switch, a lever, and a combination lock.<br />
The script SimpleSwitches.cs adds a 2or3-state lever, a 2 state switch with different facings determined by direction (not by flipping), and a combination lock. The states of the lever can be used to set properties on target items such as doors (locked/unlocked), or even to add items to containers. By setting the TargetItem and TargetProperty properties, you link the switch/lever states to certain item properties. So, for example to use a switch to open a door when the switch is in the 1 state, set Target1Item to the door and then set Target1Property to /locked/false (note, it uses the same syntax as the xmlspawner2 property specification strings. Since it shares the same syntax, you can also have it do things like change the color of an item, or add items to a container using the ADD/<spec> string.) SimpleCombinationLock simulates a multi-digit (max 8) combination lock. The state of each of the digits can be set using (for example) the lever or switch items. The combination is set in the Combination property. So the combination of 378, would correspond to digits 2,1,0 taking on values of 3,7, and 8 respectively. The Match property can be tested to determine when the target combination is matched by the combination of digits. Note that digit number corresponds to significance, from least to most. Each digit is a property (Digit0, Digit1, Digit2, ... Digit7) and can take on the values 0-9. You can set the property string to indicate either a property name on the target item (e.g. switchstate, or leverstate, or totalgold), or you can specify a test such as totalgold<100, or open=false, or locked=true. You could use this item to look for certain combinations of switches or levers, door states, etc. or even combinations of levers, and weight of a container, or number of kills on a spawn etc., and then open a door, or add items to a container, or change the color of a stone, trigger a spawn, etc.<br />
* Added new items TimedSwitch, TimedLever, XmlLatch, and TimedSwitchableItem.<br />
Similar to the SimpleSwitch and Simple lever, the TimedSwitch, TimedLever items add a reset timer to the switch/lever states with min/maxdelay properties and are derived from the XmlLatch which is a new class that supports resettable switching, and can be used as an item itself to implement a resettable latch (set the state externally and it will hold that state for some time and then reset). The item TimedSwitchableItem is a TimedSwitch that allows you to specify the Item statics that will be assigned to each state, allowing flexible user-defined visuals during switching, such as a torch or a stone, or a wall section, etc. Because it is a TimedSwitch you can assign actions that are associated with each state as well, such as opening a door when double-clicking a torch, or opening a secret passage when double-clicking on a wall section, etc. The current switching state of all of these items is contained in the State property, and the ResetState is the value that the State will be returned to after the reset timer expires.<br />
<br />
==XML Dialog Editor==<br />
<br />
'''Project Description'''<br />
<br />
The XML Dialog-Editor is a tool to create or edit the NPC-Dialogs (*.npc) from RunUO's XMLSpawner by ArteGordon. In addition to the standard-functionality the ".xmledit"-command gives you ingame I made a few features to make this editor as newbie-friendly as it could be.<br />
<br />
One of the biggest problems are a lot of XMLSpawner-specific commands, values etc. with a lot of (optional) parameters. A complete documentation is not present at the moment, only a chronological release-info. So when I want to know how a specific thing is working in the actual version I have to look backwards through the whole txt-document - it's time consuming in case you are not working on a daily basis with this (great!) system and knowing it's niceties. So on top of my wish-list for the editor are wizards for all of those text-fields. <br />
<br />
Some minor issues are resulting from the Ultima Online client itself and it's usability with dialogs: You cannot edit the text of a textbox by clicking right in the middle of the text, thats working only with those books. Also there is not much space to view all those necessary information so it's difficult to get a overview of your dialog (e.g. dependings) 'cause resizing of the gump isn't possible, either - no matter if you have a 1024x768 resolution or a 16:9 tft. The fact that you have to be online is just an additional fact - and not every Gamemaster or Seer wants to run a local "development"-server only to make new dialogs offline (e.g. when traveling with a notebook). <br />
<br />
All those things keeping in mind I started with my XML Dialog-Editor and added a few more points to my whishlist on-the-fly (exporting to txt-file for posting in a forum, connecting to a server for remote-editing, ...). The actual version is a first result of my efforts and I'm still working on a lot more things. A great system like the XMLSpawner is deserving not just a "good try" and my effort is to give the community something great in return for all those things I learned from her!<br />
<br />
'''Feature List'''<br />
<br />
*wizards for most textfields<br />
*implemented all XmlAttachments with overloaded constructors<br />
*implemented commonly used properties and other commands / values (e.g. nametypes)<br />
*listview like the one in ultima online<br />
*treeview for dependancies overview<br />
*export as textfile and pdf (flow chart)<br />
*create / edit dialogs via FTP-server<br />
*deleting and duping many items at the same time<br />
*multilanguage support (currently english and german)<br />
*bugs and feature-requests can be submitted out of the program via a simpel dialog<br />
*installation and auto-update via ClickOnce<br />
<br />
DOWNLOAD: [https://xmldialogeditor.codeplex.com/ XML Dialog Editor]<br />
<br />
Last edited Sep 22, 2008 at 4:21 AM by Anheledir, version 3<br />
<br />
==XML Siege System==<br />
<br />
Original information compiled by Dante on UO Evolution<br />
<br />
NOTE: This XML Siege System is being installed and tested to do large events and monster invasions. This wiki is a work in progress and I will add more info as I test the system.<br />
<br />
This system allows objects and structures to be damaged by siege weapons and repaired by siege tools. <br />
<br />
ANY non-frozen object can be made damageable - walls, doors, signs, trees, multis, addons - anything. A GM has to tag them with the xmlsiege attachment<br />
<br />
Weapons included are the Siege Cannon and Siege Catapult that fire siege cannonballs, and the Siege Ram that uses siege logs.<br />
<br />
Hand siege weapons are also supported.<br />
<br />
Siege Cannons have a 20% damage bonus and 20% increase in range when compared to catapults using the same projectiles.<br />
<br />
weapon damage will be reduced by up to 60% from its max value depending on how damaged the weapon is, and firing range reduced by up to 30%<br />
<br />
different types of cannonballs to do different amounts of damage to creatures and to structures <br />
<br />
The Siege Ram is for close range attacks on structures. It has a faster attack speed than either the cannon or catapult, and the new Siege Log ammunition can produce heavy damage to structures but is ineffective against creatures and has very short range.<br />
<br />
The ram can also be loaded with SiegeLog stacks so that it can attack repeatedly without having to reload after each attack.<br />
<br />
===Seeing object damage===<br />
<br />
Once an object is damaged it will change color to indicate the level of damage.<br />
<br />
The default colors are: <br />
<br />
Green = 67-99% of max<br><br />
Yellow = 34-66%<br><br />
Red = 1-33%<br><br />
<br />
Blue is also temporarily assigned to objects that have just had the XmlSiege attachment added to them so that you can see what is damageable.<br />
<br />
Once the Hits for an object reach zero, then the ItemID of the object will be changed to the DestroyedItemID propery of the xmlsiege attachment. Individual attachments can have their own DestroyedItemID settings. The default is a lava pool.<br />
<br />
===Repairing damageable objects===<br />
<br />
<b>Siege Repair Tool</b> - this is used to repair damaged objects<br />
<br />
Using the tool - Just double-click to use and target the damaged object to be repaired. It can be given either limited (set UsesRemaining to a value > 0) or unlimited number of uses (set UsesRemaining to a value < 0).<br />
<br />
<b>Repair resources</b><br />
<br />
You must have the required resources to repair the targeted object. The default setting is to repair 100 hits of damage per use.<br />
<br />
Objects can require wood, iron, and/or stone for repair.<br />
Iron = IronIngot<br />
Wood = Board<br />
Stone = Granite<br />
<br />
<b>Repair time</b><br />
<br />
The speed of the repair will depend on their Blacksmith and Carpentry skills as well as dexterity. With max skill and dex it can be as fast as 3 seconds. With no skill it can take up to 15 seconds.<br />
<br />
If you are missing any of the resources, the repair will not be done but any of the other resources that were needed and that you were carrying will be consumed.<br />
<br />
===Siege Cannon===<br />
<br />
<b>Changing the cannon facing</b> <br />
<br />
Then you can change the facing while it is placed using the 'Previous/Next' options in the context menu that comes up when you click it.<br />
<br />
<b>Moving a cannon</b><br />
<br />
To move a cannon you must first pack it up using the 'Backpack' context menu option. This takes time (15 seconds) and you must be next to it at the beginning and end of packing. When finished you will have a crate in your pack that you can place anywhere.<br />
<br />
<b>Firing a cannon</b><br />
<br />
To fire a cannon you must first load a cannonball into it. Then double-click the cannon and select the target.<br />
The target must be within the cannonball range, and within the firing arc of the cannon. Note, that you can target mobiles as well as structures, and mobiles will also take splash damage from area damage cannonball attacks.<br />
<br />
<b>Taking damage</b><br />
<br />
The cannon is configured with an xmlsiege attachment by default, so it can take damage from other cannons as well.<br />
<br />
===Cannonballs===<br />
<br />
I have added a few different types of premade cannonballs, but you can easily modify them or add your own. You can even create them and change their settings on the fly since all of their properties are accessible.<br />
<br />
Cannonballs have the following configurable properties:<br />
<br />
<b>Range</b> - maximum range in tiles <br><br />
<b>Area</b> - number of tiles surrounding the target that will also take damage<br><br />
<b>AccuracyBonus</b> - mod that affects chance of hitting the target<br><br />
<b>FiringSpeed</b> - mod that reduces the minimum interval between firing<br> <br />
<b>PhysicalDamage</b> - amount of physical damage delivered<br><br />
<b>FireDamage</b> - amount of fire damage delivered<br><br />
<br />
The premade cannonballs included are:<br />
<br />
*lightcannonball<br />
*ironcannonball<br />
*explodingcannonball<br />
*fierycannonball<br />
<br />
<b>Loading a cannonball</b><br />
<br />
Just double-click a ball and then target a cannon. You must be close enough to both, although you can dclick the ball, and then move to the cannon.<br />
<br />
===XML Siege Dowload===<br />
<br />
[http://downloads.runuo.net/index.php?dir=Scripts/RunUO/Xml%20Siege%20system%20V0.7a/ XML Siege Dowload]<br />
<br />
==XML Dungeon==<br />
==XML Code Examples==<br />
<br />
*[[XML Systems and Downloads]]<br><br />
*[[XML Code Examples by Expo]]<br><br />
*[[XML Code Examples by Kane]]<br><br />
*[[XML Code Examples by Dante]]<br><br />
*[[XML Code Examples by Mogster]]<br><br />
*[[XML Code Examples by Hestia]]<br><br />
*[[XML Code Examples by Ghost]]<br><br />
<br />
==XML External Links==<br />
<br />
*[http://downloads.runuo.net/index.php?dir=XMLSpawner/ RunUO Downloads - XML Spawner Guide]<br><br />
*[http://uorforum.com/threads/xml-spawner2-commands-and-examples.10280/ XML Spawner2 Commands and Examples - UO Renaissance Forum]<br><br />
*[https://www.servuo.com/tutorials/xmlspawner-quick-commands-advanced-installation.5/ Advanced XML Spawner Installation Guide - ServUO]<br><br />
*[https://www.servuo.com/archive/the-ultimate-xmlspawner-how-to-guide-archive.150/ Ultimate Xmlspawner how-to-guide]<br><br />
*[https://www.servuo.com/threads/xmlspawner-tutorials.3130/ XML Spawner Tutorials]<br><br />
*[http://xmlspawner.fr.yuku.com/ XML Spawner Fan]<br><br />
*[http://www.uoroleplay.com/resources/XMLSpawner/XML_Spawner_Unzipped/xmlspawner.15.forumer.com/XML%20Spawner/xmlspawner.15.forumer.com/a/qampa-13/index.html XML Spawner Q&A]<br><br />
*[http://www.usamimi.info/~gogogo/xmlspawner/index.htm XML Spawner Basics]<br><br />
*[https://github.com/ArchangelUO/XMLSpawner XML Spawner Github 2.1, 2.2 and Orb 2.2]<br><br />
*[https://www.scribd.com/document/69981938/XML-Quest-4-Dummies-RunUO-Ultima-Online XmlQuest 4 DummiesHow to build a perfect questVer. 0.3]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=RadMap_Worldforge&diff=30
RadMap Worldforge
2017-08-01T22:49:10Z
<p>WikiSysop: Created page with "==RadMap Worldforge== This is an older program that is used for manipulating the map. ===RadMap WorldReforge Download=== [http://downloads.runuo.net/RadMapWorldReforge/ Rad..."</p>
<hr />
<div>==RadMap Worldforge==<br />
<br />
This is an older program that is used for manipulating the map.<br />
<br />
===RadMap WorldReforge Download===<br />
<br />
[http://downloads.runuo.net/RadMapWorldReforge/ RadMap WorldReforge Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=RadMap_Copy&diff=29
RadMap Copy
2017-08-01T22:48:50Z
<p>WikiSysop: Created page with "==RadMap Copy== This is an older program used for copying parts of the map. ===RadMapCopy Download=== [http://downloads.runuo.net/RadMapCopy/ RadMapCopy Download]<br>"</p>
<hr />
<div>==RadMap Copy==<br />
<br />
This is an older program used for copying parts of the map.<br />
<br />
===RadMapCopy Download===<br />
<br />
[http://downloads.runuo.net/RadMapCopy/ RadMapCopy Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Region_Editor&diff=28
Region Editor
2017-08-01T22:48:27Z
<p>WikiSysop: Created page with "==Region Editor== This program should allow you to edit regions. It does not work with the newer RunUO server version so we have not used it. But I think it should work fine..."</p>
<hr />
<div>==Region Editor==<br />
<br />
This program should allow you to edit regions. It does not work with the newer RunUO server version so we have not used it. But I think it should work fine with older server versions.<br />
<br />
===Region Editor Download===<br />
<br />
[http://downloads.runuo.net/RegionEditor/ Region Editor 1.0 Download]<br><br />
<br />
[https://github.com/frkdom/Region-Editor-2015 Region Editor 2015 Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Gump_Studio&diff=27
Gump Studio
2017-08-01T22:48:05Z
<p>WikiSysop: Created page with "==Gump Studio== This program allows you to build gumps and then save them as file or script for use on your UO server. ===Gump Studio 1.7 Tutorial=== Gump Studio makes exte..."</p>
<hr />
<div>==Gump Studio==<br />
<br />
This program allows you to build gumps and then save them as file or script for use on your UO server.<br />
<br />
===Gump Studio 1.7 Tutorial===<br />
<br />
Gump Studio makes extensive use of a modified version of the UOSDK written by Krrios, available at www.runuo.net The RunUO community contributed Melanius created artwork, and several more ideas. Special thanks go to DarkStorm of the Wolfpack emulator for helping decode unifont.mul, allowing me to display UO fonts correctly.<br />
<br />
[http://manualzz.com/doc/6557099/gump-studio-1.7-user-manual---simple-tutorial Gump Studio Tutorial Online]<br><br />
<br />
[http://downloads.runuo.net/index.php?dir=Tools/muls/art_gumps/&file=gump_studio_1_7_manual_.pdf Gump Studio Manual Download]<br><br />
<br />
===Gump Studio Download===<br />
<br />
[http://downloads.runuo.net/GumpStudio/ Gump Studio Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=World_Maker&diff=26
World Maker
2017-08-01T22:47:35Z
<p>WikiSysop: Created page with "==World Maker== This program is similar to CentrED. It allows you to edit the maps. ===World Maker Download=== [http://downloads.runuo.net/WorldMaker/ World Maker Download]..."</p>
<hr />
<div>==World Maker==<br />
<br />
This program is similar to CentrED. It allows you to edit the maps.<br />
<br />
===World Maker Download===<br />
<br />
[http://downloads.runuo.net/WorldMaker/ World Maker Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=CentrED&diff=25
CentrED
2017-08-01T22:47:13Z
<p>WikiSysop: Created page with "==CentrED== UO CentrED, Forum and Source Code ===UO CentrED Editor=== CentrED stands for Centralized Editing. It is a Client/Server based map editor for Ultima™ Online...."</p>
<hr />
<div>==CentrED==<br />
<br />
UO CentrED, Forum and Source Code<br />
<br />
===UO CentrED Editor===<br />
<br />
CentrED stands for Centralized Editing. It is a Client/Server based map editor for Ultima™ Online.<br />
<br />
The intention behind this is, that the only available GodClient is rather old and was never really supported by any server emulator (at least not that I know), but I wanted the ability for several people to work on the terrain and statics together, without having to constantly transfer their current state.<br />
<br />
===CentrED Features===<br />
<br />
Complete serverside map. All blocks are transfered on request.<br />
<br />
*Modify Terrain<br />
Add, delete, move and hue Statics<br />
<br />
*Change the altitude of Terrain and Statics<br />
<br />
*Account management with four accesslevels (None, Viewer, Normal and Administrator)<br />
<br />
*Restrict clients write access to specified regions (some sort of group management)<br />
<br />
*Integrated Chat<br />
<br />
*Client list with ability to jump to other clients position<br />
<br />
*Virtual Layer to ease working on roofs or in black areas<br />
<br />
*Large scale editing (move/copy, delete, draw, insert whole areas of the map)<br />
<br />
*Easily jump to locations stored in a list or via the radar view of the whole map<br />
<br />
*Ability to undo the last set of changes<br />
<br />
*Preview changes before actually performing them<br />
<br />
*Renders the map similar to the UO Client<br />
<br />
*Shows animated tiles<br />
<br />
*Show different light level and display light sources<br />
<br />
*Support as many different Statics as the TileData file can hold<br />
<br />
*Server and Client for 32bit Windows and Linux<br />
<br />
===CentrED Tutorial===<br />
<br />
[http://dev.uoquint.ru/projects/centred/wiki/Start_and_server_setup CentrED Server Set-up Tutorial]<br><br />
<br />
===CentrED Support===<br />
<br />
Support is provided through the community on the Forum<br />
http://www.aksdb.de/board/<br />
<br />
===CentrED Development===<br />
<br />
CentrED is released as Open Source Software under Sun Microsystems CDDL License.<br />
<br />
Anyone interested can get the source code and compile or extend it as desired. https://redmine.aksdb.de/projects/centred/wiki/SourceCode<br />
<br />
Copyright and Disclaimer<br />
UO CentrED © 2009 Andreas Schneider.<br />
<br />
===CentrED Download===<br />
<br />
[http://downloads.runuo.net/index.php?dir=CenterED/ CentrED Download]</div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Landscaper&diff=24
UO Landscaper
2017-08-01T22:46:48Z
<p>WikiSysop: Created page with "==UO Landscaper== UO Landscaper is a program used for editing the maps. ===UO Landscaper Download=== [http://downloads.runuo.net/UOLandscaper/ UO Landscaper Download]<br>"</p>
<hr />
<div>==UO Landscaper==<br />
<br />
UO Landscaper is a program used for editing the maps.<br />
<br />
===UO Landscaper Download===<br />
<br />
[http://downloads.runuo.net/UOLandscaper/ UO Landscaper Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Architect&diff=23
UO Architect
2017-08-01T22:45:43Z
<p>WikiSysop: Created page with "==UO Architect== UO Architect lets you create buildings and then import them into the game. You can also export static buildings into a UOA file. UOAR is the most powerful b..."</p>
<hr />
<div>==UO Architect==<br />
<br />
UO Architect lets you create buildings and then import them into the game. You can also export static buildings into a UOA file.<br />
<br />
UOAR is the most powerful building management software for Ultima Online ever created. If you are building custom worlds for your Ultima Online shard this software is an invaluable tool.<br />
<br />
This tool can create and store custom static houses and buildings, to a database, and you can add any custom decorations with ease. If you build custom scenes, buildings, decorations or other UOAR can extract those into a database to manage your buildings in categories.<br />
<br />
Visit the website at [http://www.uoarchitect.com UO Architect]<br />
<br />
===UOAR Installation Instructions===<br />
<br />
UO Architect Installation Instructions<br />
<br />
*Follow the instructions in the readme file <br />
<br />
*After you get UOAR to compile, simply run your UOAR.exe server. <br />
<br />
*In the console, you should see “UO Architect Server for RunUO 2.0 is listening on port 2594".<br />
<br />
*Now, go to the UO Architect Client directory and open UO Architect.exe.<br />
Press “Connect” (in the top bar). Press the Add button. Enter in the following:<br />
Name: myshard (doesn’t matter)<br />
<br />
IP Address: 127.0.0.1<br><br />
Port: 2594<br><br />
User Name: WhateverYourAdminAccountNameIs<br><br />
<br />
*Press Save<br />
<br />
*Select that Server in the Server Listing box, and type in your password (I would also check Save Pwd so you don’t have to enter the password again--esp. since this is a local test server and there’s no risk involved), and press Connect.<br />
<br />
*Go to the Options tab (on the left-hand side and Uncheck “Auto-detect” (Use registry)<br />
<br />
*Type in the path to your Ultima Online Classic folder<br><br />
For Example - C:\UO\Clients\Ultima Online Classic<br><br />
<br />
*If you don’t do this, then you won’t be able to send commands to your UO client (i.e. you can’t put anything into the game).<br />
<br />
*Open Razor and log in on your admin account (assuming you aren’t already)<br />
<br />
???????*You are now ready to use the UOAR tools<br />
<br />
===UO Architect Download===<br />
<br />
[http://downloads.runuo.net/UOArchitect/ UO Architect Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Pandoras_Box&diff=22
Pandoras Box
2017-08-01T22:45:19Z
<p>WikiSysop: Created page with "==Pandora's Box== This program is primarily used for decorating RunUO Shards, though it can do some other functions. ===Project Description=== Pandora's Box is a tool for U..."</p>
<hr />
<div>==Pandora's Box==<br />
<br />
This program is primarily used for decorating RunUO Shards, though it can do some other functions.<br />
<br />
===Project Description===<br />
<br />
Pandora's Box is a tool for Ultima Online Gamemasters, primarily on RunUO-Freeshards. It includes a roof builder, travel manager and a lot of other wizards and functions.<br />
<br />
It was developed by Arya who released the sourcecode of Version 2 Beta 5. There were some additional changes made by users at RunUO. This project here is aimed to consolidate the different versions, fix existent bugs or incompatibilities (e.g. with some Vista configurations) and made some extensions. Also it is aimed to refactor the whole sourcecode and advance it to new technologies.<br />
<br />
===Goals of this Project===<br />
<br />
*simple installation and updates with ClickOnce<br />
*WPF interface to support skins and free resizing<br />
*Add-In support<br />
*Multi-Language support with ressource files<br />
*.NET 3.5 Codebase<br />
*closer integration with the runuo server<br />
*support for different spawner systems like ArteGordon's XML-Spawner via Add-In<br />
*integrated mul viewer similiar to InsideUO to add new statics<br />
<br />
===Download Pandora's Box===<br />
<br />
You can download the last official release by Arya, Pandora's Box 2 Beta 5, at http://arya.altervista.org/ - no support is given for this original version! Of course you may ask for help at the [http://www.runuo.net/forum RunUO Forums]<br><br />
<br />
Pandora's Box 3 will have support for the new Ultima Online expansion, Mondain's Legacy, and will be compiled with 3.5 Net Framework. We also try to improve the code to have better stability and performance.<br />
<br />
Note: Pandora's Box can only handle client up to 7.0.20.0<br />
<br />
Update: There is a new updated version - [https://code.google.com/archive/p/pandorasbox3/ Pandoras Box 3.0.0.5]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Mulpatcher&diff=21
Mulpatcher
2017-08-01T22:42:39Z
<p>WikiSysop: Created page with "==Mulpatcher== This is the best program for doing lots of editing to the MUL files. It’s a bit tricky to figure out at first but it’s by far the best program for editing..."</p>
<hr />
<div>==Mulpatcher==<br />
<br />
This is the best program for doing lots of editing to the MUL files. It’s a bit tricky to figure out at first but it’s by far the best program for editing everything. It can view and edit all of the MUL files.<br />
<br />
===MulPatcher Editor===<br />
<br />
MulPatcher is kind of like a Swiss Army Knife. It is capable of patching nearly all MUL files, even if the support for advanced animation MULs (anim2.mul etc) is somewhat bareboned. But this seldom affects it's useability, because most people only patch the original anim.mul or even verdata.mul. <br />
<br />
===MulPatcher Issues===<br />
<br />
What has to be mentioned is a rather annoying bug in MulPatcher. It only remembers one path to the files it's using. So if you load for example art.mul from your UO directory, then insert a graphic item from another location and finally try to save the arts mul, MulPatcher will offer you the directory with the graphics at first. This would not be a problem because you can change the target directory. If not sometimes mulpatcher tries to open the destination file (in this case art.mul) BEFORE you clicked on "save" in the dialog - and this will lead to a complete crash of the program. Image you inserted dozens of artworks in the past two hours, and now it will be completely lost. So as a workaround you should always store all needed files together.<br />
<br />
===Intro to MUL Files===<br />
<br />
[http://www.runuo.net/forum/forum/runuo-art-amd-maps/artwork/1867-introduction-to-mul-files-tutorial?_=1478021362760 Intro to MUL Files]<br />
<br />
===Download Mulpatcher===<br />
<br />
[http://downloads.runuo.net/Mul/ Mulpatcher - RunUO Download]<br><br />
<br />
[http://downloads.runuo.net/index.php?dir=Tools/muls/ List of all MUL Tools]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=InsideUO&diff=20
InsideUO
2017-08-01T22:42:05Z
<p>WikiSysop: Created page with "==InsideUO== This program is an alternative to UO Fiddler. It’s a bit older and does not read the newest game MUL files. But it still can be a valuable UO tool. InsideUO p..."</p>
<hr />
<div>==InsideUO==<br />
<br />
This program is an alternative to UO Fiddler. It’s a bit older and does not read the newest game MUL files. But it still can be a valuable UO tool.<br />
<br />
InsideUO provides various data such as maps and Gumps from both The Second Age and <br />
Third Dawn. However, it does not provide everything. For example, it does not provide Third Dawn 3D models.<br />
<br />
InsideUO is a Windows application that displays the contents of most of the client<br />
-side data from Ultima Online. This includes things like maps, artwork, animations, <br />
etc. You must have Ultima Online installed for this program to be of use.<br />
<br />
InsideUO allows you to view inside the graphic related mul files, so you can look for art tiles not yet used by your server. It helps you get an insight on how animations work, what gumps are there, and last but not least, shows if your patches had done what you thought they should do.<br />
<br />
Originally written by Alazane and now only supported by the RunUO community (because it's open source)<br />
<br />
===Download InsideUO===<br />
<br />
[http://downloads.runuo.net/InsideUO/ InsideUO - RunUO Download]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Fiddler&diff=19
UO Fiddler
2017-08-01T22:40:52Z
<p>WikiSysop: Created page with "==UO Fiddler== This is the best program for viewing and doing some quick editing of all the MUL files. Can be for anything from viewing the game artwork to adding new animati..."</p>
<hr />
<div>==UO Fiddler==<br />
<br />
This is the best program for viewing and doing some quick editing of all the MUL files. Can be for anything from viewing the game artwork to adding new animations. This is a very handy program.<br />
<br />
Based on Ultima SDK its an Tool to view and alter almost every 2d Client file.<br />
<br />
The application once connected to your client files allows a variety of options for visualizing the UO client data.<br />
<br />
* Multis - Multi List with Compenent Details for each<br />
* Animations - Animation frama data<br />
* Items - Item List<br />
* Land Tiles - Land Tile List<br />
* Texture - Texture List<br />
* Gumps - List of Available Gump Components.<br />
* Sounds - Sound list<br />
* Hue - Hue List<br />
* Fonts - Client Fonts<br />
* CliLoc - Client Localization Data<br />
* Map - Map Data<br />
* Light - Light Sources<br />
* Speech - Speech Data<br />
* Skills - Skill Data<br />
* Animdata - Item Animation Data<br />
* MultiMap/Facets - Multimap Data (Used for Tmaps)<br />
* Dress - Player Body Dress Data<br />
* TileData - Item Tile Data<br />
* RadarColor - Color Data for Radar Visualization<br />
* SkillGrp - Default Skill Groupings.<br />
<br />
===Download UO Fiddler===<br />
<br />
[http://downloads.runuo.net/UOFiddler/ UO Fiddler - RunUO Download]<br><br />
[https://www.servuo.com/threads/uofiddler-with-uop-support.1429/ UO Fiddler - ServUO Download]<br><br />
This UOFiddler updated version with .NET 4.0 does support both MUL and UOP file types<br />
<br />
It also includes a UOP MUL converter inside the plugins folder<br />
<br />
[https://github.com/msturgill/uofiddler UO Fiddler - Github]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=AssistUO&diff=18
AssistUO
2017-08-01T22:39:45Z
<p>WikiSysop: Created page with "==AssistUO== AssistUO is an Ultima Online Assistant tool written from the ground up to be lightweight, flexible and secure! Developed as a replacement for UO Razor, Assi..."</p>
<hr />
<div>==AssistUO==<br />
<br />
AssistUO is an Ultima Online Assistant tool written from the ground up to be lightweight, flexible and secure!<br />
<br />
Developed as a replacement for [[UO Razor]], AssistUO is an easy-to-use, full-featured, fast and stable Ultima Online assistant.<br />
<br />
It improves your game experience by allowing you to create flexible macros, use fast agents and enhanced game options.<br />
<br />
Visit the [http://www.assistuo.com AssistUO] website for more information and [http://www.assistuo.com/auo-documentation/ Documentation]</div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Razor&diff=17
UO Razor
2017-08-01T22:38:27Z
<p>WikiSysop: /* UO Razor */</p>
<hr />
<div>==UO Razor==<br />
<br />
UO Razor is a free software program designed to simplify common tasks in the popular MMORPG Ultima Online. UOR was intended to provide a free alternative to the popular program UOAssist which works on player run servers as well as official UO game servers. It is written for use on Windows systems.<br />
<br />
Supported platforms: Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10<br />
<br />
Features:<br />
UO Razor provides nearly all of the original features found in UOAssist as well as many new features which help to streamline the game interface. In addition to these features, UO Razor provides mechanisms to record macros on common in-game actions and assign hotkeys to help users more quickly perform common tasks. UO Razor also provides a simple screen capture interface.<br />
<br />
For full details visit the documentation section on the [http://www.uorazor.com UO Razor] Website</div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Razor&diff=16
UO Razor
2017-08-01T22:38:05Z
<p>WikiSysop: Created page with "==UO Razor== [http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/Razor%20Tool%20Logo_zps1haniv2n.png] UO Razor is a free software program desi..."</p>
<hr />
<div>==UO Razor==<br />
[http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/Razor%20Tool%20Logo_zps1haniv2n.png]<br />
<br />
UO Razor is a free software program designed to simplify common tasks in the popular MMORPG Ultima Online. UOR was intended to provide a free alternative to the popular program UOAssist which works on player run servers as well as official UO game servers. It is written for use on Windows systems.<br />
<br />
Supported platforms: Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10<br />
<br />
Features:<br />
UO Razor provides nearly all of the original features found in UOAssist as well as many new features which help to streamline the game interface. In addition to these features, UO Razor provides mechanisms to record macros on common in-game actions and assign hotkeys to help users more quickly perform common tasks. UO Razor also provides a simple screen capture interface.<br />
<br />
For full details visit the documentation section on the [http://www.uorazor.com UO Razor] Website</div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Steam&diff=15
UO Steam
2017-08-01T22:37:43Z
<p>WikiSysop: Created page with "==UO Steam== [http://www.uosteam.com UOSteam] is an updated, Ultima Online game assistant similar to the original UO Razor client and essentially the same as the Assist..."</p>
<hr />
<div>==UO Steam==<br />
<br />
[http://www.uosteam.com UOSteam] is an updated, Ultima Online game assistant similar to the original [[UO Razor]] client and essentially the same as the [[AssistUO]] client. <br />
<br />
Visit the the following links for more information<br />
<br />
*[http://www.uosteam.com UO Steam Website] <br />
*[http://uoevolution.com/wiki/index.php/UO_Steam_Wiki UO Steam Wiki]<br />
*[http://www.uosteam.com/uo-steam-guide/ UO Steam Documentation]</div>
WikiSysop
https://runuo.net/wiki/index.php?title=UO_Client_Compatability_Chart&diff=14
UO Client Compatability Chart
2017-08-01T22:36:42Z
<p>WikiSysop: Created page with "==RunUO/UO Client Version Compatibility Chart== ===Which version of UO do I need to run my Shard?=== How to determine which Client Version works with which RunUO Emulator Ve..."</p>
<hr />
<div>==RunUO/UO Client Version Compatibility Chart==<br />
<br />
===Which version of UO do I need to run my Shard?===<br />
<br />
How to determine which Client Version works with which RunUO Emulator Version:<br />
<br />
'''1.''' Find your RunUO Emulator version (most likely 2.0 0r 2.2)<br />
<br />
'''2.''' Find the highest numbered UO Client that will work with it by looking at the <br />
chart below.(Please note that the numbers go up between the periods. e.g. 7.0.1.0, <br />
7.0.2.0, ...7.0.9.0, 7.0.10.0, 7.0.11.0, etc.)<br />
<br />
'''3.''' Try to download the highest version UO Client that will work with your RunUO <br />
version. You can view our Clients Archive Category to see if we have a matching <br />
version. Otherwise, you will have to look online for a download.<br />
<br />
==Client Compatibility Chart==<br />
<br />
dd.mm.yyyy - [client range/support or start client] - Release (comments)<br />
<br />
===The Second Age===<br />
23.10.1998 - The Second Age (+ Lost Lands)<br />
<br />
===Renaissance===<br />
03.05.2000 - [2.0.0 to 2.0.9a] Renaissance (divison Felucca / Trammel)<br />
<br />
===Third Dawn===<br />
07.03.2001 - [3.0.0 to 3.0.7a] Third Dawn (3D client, +Ilshenar)<br />
<br />
===Lord Blackthorn's Revenge===<br />
24.02.2002 - [3.0.7b to 3.0.8r] Lord Blackthorn's Revenge (+30 mobiles by Todd <br />
McFarlane)<br />
<br />
[25.09.2002 - RunUO Beta 1] -- [16.11.2002 - RunUO Beta 9]<br><br />
[29.09.2002 - RunUO Beta 2] -- [23.11.2002 - RunUO Beta 10]<br><br />
[06.10.2002 - RunUO Beta 3] -- [07.12.2002 - RunUO Beta 11]<br><br />
[13.10.2002 - RunUO Beta 4] -- [no released - RunUO Beta 12]<br><br />
[15.10.2002 - RunUO Beta 5] -- [13.01.2003 - RunUO Beta 13]<br><br />
[20.10.2002 - RunUO Beta 6] -- [21.01.2003 - RunUO Beta 14]<br><br />
[27.10.2002 - RunUO Beta 7] -- [29.01.2003 - RunUO Beta 15]<br><br />
[07.11.2002 - RunUO Beta 8] -- [06.02.2003 - RunUO Beta 16]<br><br />
<br />
===Age of Shadows===<br />
<br />
11.02.2003 - [3.0.8z to 4.0.4b2] - Age of Shadows (+Malas, new classes Paladins / <br />
Necromancers, custom houses, 5 resistances, item insurance, weapon abilities)<br />
<br />
[15.02.2003 - RunUO Beta 17] ---- [14.04.2003 - RunUO Beta 25]<br><br />
[23.02.2003 - RunUO Beta 18] ---- [21.04.2003 - RunUO Beta 26]<br><br />
[02.03.2003 - RunUO Beta 19] ---- [29.04.2003 - RunUO Beta 27]<br><br />
[04.03.2003 - RunUO Beta 19R2] - [05.05.2003 - RunUO Beta 28]<br><br />
[10.03.2003 - RunUO Beta 20] ---- [21.05.2003 - RunUO Beta 29]<br><br />
[16.03.2003 - RunUO Beta 21] ---- [01.06.2003 - RunUO Beta 30]<br><br />
[23.03.2003 - RunUO Beta 22] ---- [13.06.2003 - RunUO Beta 31]<br><br />
[31.03.2003 - RunUO Beta 23] ---- [21.06.2003 - RunUO Beta 32]<br><br />
[01.04.2003 - RunUO Beta 23R2] - [08.07.2003 - RunUO Beta 33]<br><br />
[08.04.2003 - RunUO Beta 24] ---- [12.08.2003 - RunUO Beta 34]<br><br />
<br />
28.04.2004 - RunUO 1.0 RC0<br />
<br />
===Samurai Empire===<br />
<br />
02.11.2004 - [4.0.5a to 4.0.11c] - Samurai Empire (Tokuno, new classes Samurai / <br />
Ninja)<br />
<br />
21.01.2005 - RunUO 1.0 Final<br />
<br />
===Mondain's Legacy===<br />
<br />
30-08-2005 - [4.0.11d to 5.0.9.1] - Mondain's Legacy (new race Elves, spellweaving, <br />
new dungeons)<br />
<br />
14-06-2006 - Creation of SVN repository. Starts at SVN 2.<br />
<br />
16-06-2006 - RunUO 2.0 RC1 (~SVN 27)<br />
<br />
===Kingdom's Reborn===<br />
<br />
27-06-2007 - [6.0.0.0 to 6.0.14.3] - Kingdom's Reborn (new client, new graphics, <br />
essentially new game)<br />
<br />
07-02-2008 - [6.0.5.0] - RunUO 2.0 RC2 (=SVN 285)<br />
<br />
===Stygian Abyss===<br />
<br />
08-09-2009 - [6.0.14.4 to 7.0.8.2] - Stygian Abyss (new client, new race Gargoyles, <br />
new places, removed support for UO:KR)<br />
<br />
07-10-2009 - RunUO 2.0 Final (=SVN 399)<br />
<br />
09-12-2010 - [7.0.9.x to 7.0.11.3] - RunUO 2.1 (=SVN 605)<br />
<br />
===High Seas===<br />
<br />
12-10-2010 - [>=7.0.9.0] - High Seas (sea stuff, new ships, sea markets, pirates <br />
etc)<br />
<br />
14-09-2011 - [7.0.18.0] - RunUO 2.2 (=SVN 752)<br />
<br />
Special thanks to Nerun for putting this together<br />
<br />
==Original UO Client Downloads==<br />
<br />
[http://downloads.runuo.net/index.php?dir=Clients/ Original UO Client Downloads]</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Ultima_Online_Eras&diff=13
Ultima Online Eras
2017-08-01T22:35:38Z
<p>WikiSysop: /* Ultima Online Eras */</p>
<hr />
<div>==Ultima Online Eras==<br />
<br />
===Ultima Online===<br />
<br />
24 September 1997<br />
<br />
===Ultima Online: The Second Age (T2A)===<br />
<br />
1 October 1998<br> <br />
A new area of land called the Lost Lands, along with an in-game chat system and new <br />
creatures. Also known as T2A. It was released in two boxed versions with the first <br />
having different artwork and a single manual.<br />
<br />
===Ultima Online: Renaissance (UO:R)===<br />
<br />
4 May 2000<br> <br />
Doubled the size of the world, as there were literally two copies of it. The worlds <br />
were called Felucca and Trammel, after the two moons in Ultima's Britannia world. The <br />
Trammel world did not allow player killing and was geared towards fighting monsters. <br />
Felucca also adopted a darker, more foreboding look and kept its player vs player <br />
roots.<br />
<br />
===Ultima Online: Third Dawn (UO:3D)=== <br />
<br />
7 March 2001<br> <br />
Included a 3D client to compete with 3D competition like EverQuest. Also, a special <br />
Third Dawn only land was created, called Ilshenar. It was accessible only to 3D clients <br />
until the release of Lord Blackthorn's Revenge.<br />
<br />
===Ultima Online: Lord Blackthorn's Revenge===<br />
<br />
24 February 2002<br> <br />
Brought "a dark new world based on new characters from Todd McFarlane" to Ultima Online <br />
with improved game artificial intelligence, in-game help, and improved character <br />
creation.<br />
<br />
===Ultima Online: Age of Shadows (AOS)===<br />
<br />
11 February 2003<br> <br />
Brought the landmass of Malas with space for new housing, two new character classes <br />
(Paladin and Necromancer) and the ability to customize house designs. The item system <br />
was completely reworked with this expansion. Armor resistance was split into five types <br />
of resistance, and many new properties that affected game play were added to weaponry. <br />
As good equipment became vital, this expansion also brought with it item insurance. <br />
Subscriptions reached a peak of over 250,000 accounts following the release.<br />
<br />
===Ultima Online: Samurai Empire (UO:SE)=== <br />
<br />
2 November 2004<br> <br />
Brought ancient Japanese mythology and folklore to the game, two new classes (Ninja and <br />
Samurai) and a new area to explore, the Tokuno Islands. The new class skills shifted <br />
the balance of player vs. player combat away from mage dominance.<br />
<br />
===Ultima Online: Mondain's Legacy (UO:ML)===<br />
<br />
30 August 2005<br> <br />
Introduced a new race, elves, and a new skill, spellweaving. Several dungeons were also <br />
added.<br />
<br />
===Ultima Online: Stygian Abyss (UO:SA)=== <br />
<br />
8 September 2009<br> <br />
Featured a new playable race, the Gargoyle; additional play areas; and three new <br />
skills: imbuing, throwing, and mysticism. Stygian Abyss also featured significant <br />
upgrades to the Kingdom Reborn client, which has been renamed to the Enhanced Client. <br />
The original client is still supported.<br />
<br />
===Ultima Online: High Seas (UO:HS)=== <br />
<br />
12 October 2010<br> <br />
Focused on additions to fishing, sailing and the pirate skill. Four new ship types, <br />
improved ship movement, pirate NPCs to hunt, and new boss encounters are introduced <br />
along with improvements to the fishing skill like new types of fish and crustaceans to <br />
catch and an increased skill cap<br />
<br />
===Ultima Online: Time of Legends (UO:TL)===<br />
<br />
8 October 2015<br> <br />
New Areas: Shadowguard and Valley of Eodon; two new champion spawns; Completing the <br />
virtue system; lots of new items; new skill—masteries; updates to classic housing.<br />
<br />
===UO Freeshards===<br />
<br />
The Freeshard Community continues the legacy of the Original Ultima Online with many custom expansions. You can visit the shard toplists to view the free-to-play option and play on shards build by UO fans</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Ultima_Online_Eras&diff=12
Ultima Online Eras
2017-08-01T22:34:00Z
<p>WikiSysop: Created page with "==Ultima Online Eras== ===Ultima Online=== http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos01%20-%20Original_zpswyk2feqz.png<br> 24..."</p>
<hr />
<div>==Ultima Online Eras==<br />
<br />
===Ultima Online===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos01%20-%20Original_zpswyk2feqz.png<br><br />
24 September 1997<br />
<br />
===Ultima Online: The Second Age (T2A)===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos02%20-T2A_zpsiksrd3nv.png<br><br />
1 October 1998<br> <br />
A new area of land called the Lost Lands, along with an in-game chat system and new <br />
creatures. Also known as T2A. It was released in two boxed versions with the first <br />
having different artwork and a single manual.<br />
<br />
===Ultima Online: Renaissance (UO:R)===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos03%20-%20Renaissance_zps3t0wskok.jpg<br><br />
4 May 2000<br> <br />
Doubled the size of the world, as there were literally two copies of it. The worlds <br />
were called Felucca and Trammel, after the two moons in Ultima's Britannia world. The <br />
Trammel world did not allow player killing and was geared towards fighting monsters. <br />
Felucca also adopted a darker, more foreboding look and kept its player vs player <br />
roots.<br />
<br />
===Ultima Online: Third Dawn (UO:3D)=== <br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos04%20-%20Third%20Dawn_zps2apaf0dv.png<br><br />
7 March 2001<br> <br />
Included a 3D client to compete with 3D competition like EverQuest. Also, a special <br />
Third Dawn only land was created, called Ilshenar. It was accessible only to 3D clients <br />
until the release of Lord Blackthorn's Revenge.<br />
<br />
===Ultima Online: Lord Blackthorn's Revenge===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos05%20-%20Blackthorns%20Revenge_zpsl9jf3waj.jpg<br><br />
24 February 2002<br> <br />
Brought "a dark new world based on new characters from Todd McFarlane" to Ultima Online <br />
with improved game artificial intelligence, in-game help, and improved character <br />
creation.<br />
<br />
===Ultima Online: Age of Shadows (AOS)===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos05%20-%20Blackthorns%20Revenge_zpsl9jf3waj.jpg<br><br />
11 February 2003<br> <br />
Brought the landmass of Malas with space for new housing, two new character classes <br />
(Paladin and Necromancer) and the ability to customize house designs. The item system <br />
was completely reworked with this expansion. Armor resistance was split into five types <br />
of resistance, and many new properties that affected game play were added to weaponry. <br />
As good equipment became vital, this expansion also brought with it item insurance. <br />
Subscriptions reached a peak of over 250,000 accounts following the release.<br />
<br />
===Ultima Online: Samurai Empire (UO:SE)=== <br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos07%20-%20Samuari%20Empire_zpssui2fuad.png<br><br />
2 November 2004<br> <br />
Brought ancient Japanese mythology and folklore to the game, two new classes (Ninja and <br />
Samurai) and a new area to explore, the Tokuno Islands. The new class skills shifted <br />
the balance of player vs. player combat away from mage dominance.<br />
<br />
===Ultima Online: Mondain's Legacy (UO:ML)===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos08%20-%20Mondains%20Legacy_zpsisna34bq.jpg<br><br />
30 August 2005<br> <br />
Introduced a new race, elves, and a new skill, spellweaving. Several dungeons were also <br />
added.<br />
<br />
===Ultima Online: Stygian Abyss (UO:SA)=== <br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos08%20-%20Stygian%20Abyss_zpsdlps5mqk.jpg<br><br />
8 September 2009<br> <br />
Featured a new playable race, the Gargoyle; additional play areas; and three new <br />
skills: imbuing, throwing, and mysticism. Stygian Abyss also featured significant <br />
upgrades to the Kingdom Reborn client, which has been renamed to the Enhanced Client. <br />
The original client is still supported.<br />
<br />
===Ultima Online: High Seas (UO:HS)=== <br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos09%20-%20High%20Seas_zpsokc1yzkn.jpg<br><br />
12 October 2010<br> <br />
Focused on additions to fishing, sailing and the pirate skill. Four new ship types, <br />
improved ship movement, pirate NPCs to hunt, and new boss encounters are introduced <br />
along with improvements to the fishing skill like new types of fish and crustaceans to <br />
catch and an increased skill cap<br />
<br />
===Ultima Online: Time of Legends (UO:TL)===<br />
http://i1373.photobucket.com/albums/ag362/trunomadic/UO%20Evolution/October%202016/UOLogos10%20-%20Time%20of%20Legends_zpsbivievfn.jpg<br><br />
8 October 2015<br> <br />
New Areas: Shadowguard and Valley of Eodon; two new champion spawns; Completing the <br />
virtue system; lots of new items; new skill—masteries; updates to classic housing.<br />
<br />
===UO Freeshards===<br />
The Freeshard Community continues the legacy of the Original Ultima Online with many custom expansions. You can visit the shard toplists to view the free-to-play option and play on shards build by UO fans</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Ultima_Online_Guide&diff=11
Ultima Online Guide
2017-08-01T22:33:26Z
<p>WikiSysop: Created page with "==UO Guides, Information and Websites== ===How to Play - Ultima Online Websites=== *[http://www.uoguide.com/Main_Page UO Guide Wiki]<br> *[http://uo2.stratics.com/ UO Static..."</p>
<hr />
<div>==UO Guides, Information and Websites==<br />
<br />
===How to Play - Ultima Online Websites===<br />
<br />
*[http://www.uoguide.com/Main_Page UO Guide Wiki]<br><br />
*[http://uo2.stratics.com/ UO Statics]<br><br />
*[http://www.uocentral.com/ UO Central]<br><br />
<br />
===Download the original Ultima Online Guides===<br />
<br />
*[http://www.pixsoriginadventures.co.uk/downloads/ Original UO Guides]<br><br />
<br />
===How To Play Ultima Online===<br />
<br />
*[http://www.uoguide.com/New_Player_Guide New Player Guide - UO Guide]<br><br />
*[http://www.iceteks.com/articles.php/ultimaonline/1 UO Newbie Player Guide - Iceteks]<br><br />
*[http://www.gamefaqs.com/pc/199146-ultima-online/faqs/13725 Gamefaqs]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=What_is_Ultima_Online&diff=10
What is Ultima Online
2017-08-01T22:33:02Z
<p>WikiSysop: Created page with "===What is Ultima Online?=== Ultima Online is a massively multiplayer online game set in the Ultima universe. It was developed and published by Origin in 1997 for the IBM-PC..."</p>
<hr />
<div>===What is Ultima Online?===<br />
<br />
Ultima Online is a massively multiplayer online game set in the Ultima universe. It <br />
was developed and published by Origin in 1997 for the IBM-PC, in a time when the <br />
Internet just started to become popular.<br />
<br />
The game is basically a huge online world called Britannia, where diverse players <br />
live their digital lives and do whatever they want in a "sandbox" style mmorpg <br />
format. The world is constantly developed and new, updated versions are created every year.<br />
<br />
Ultima Online was a huge success for Origin essentially giving birth to the online MMORPG.</div>
WikiSysop
https://runuo.net/wiki/index.php?title=RunUO_Constructor_Guide&diff=9
RunUO Constructor Guide
2017-08-01T22:32:10Z
<p>WikiSysop: Created page with "RunUO Constructor Guide and Commands 10-11-2016, 02:26 AM ===RunUO Contructor Guide=== Original post by Ezekiel This guide will cover the basic in-game commands necessary f..."</p>
<hr />
<div>RunUO Constructor Guide and Commands<br />
10-11-2016, 02:26 AM<br />
<br />
===RunUO Contructor Guide===<br />
<br />
Original post by Ezekiel<br />
<br />
This guide will cover the basic in-game commands necessary for constructing items with basic & advanced syntax input.<br />
<br />
===Adding Items===<br />
<br />
To add an item in the game you must use the proper syntax, and the correct item name in order for the server to recognize your command. This can be done in many ways, simple and advanced. Here we will cover how to add items in both ways, one at a time.<br />
<br />
===Add Commands===<br />
<br />
'''[addmenu''' - Using this syntax alone will bring up an alternate version of the "add menu" in which you can input search text to find items by name and their proper syntax for addition. This is very useful for finding the add-name of an item you wish to add but do not know the proper syntax of the item by memory.<br />
<br />
'''[m add''' - This command cannot be used alone, it is a "multiplier" command which allows you to retain your target cursor after the first addition, so that you may continuously "click-add" items in repetition, instead of having to re-type or ctrl-q the command syntax.<br />
<br />
'''[adddoor''' - Using this command will prompt a gump which allows you to add a variety of doors, which come complete with door functions.<br />
<br />
Now lets use these commands in an example, both basic & advanced syntax additions.<br />
<br />
'''Add'''<br />
<br />
[add sandals - This will add a pair of sandals at the location you click.<br />
<br />
[addtopack sandals - This will add a pair of sandals into the container or player's backpack of your choice.<br />
<br />
Now lets try the same commands with additional parameters added for additional settings.<br />
<br />
[add sandals set hue 1 loottype blessed weight 11 - This will add a pair of sandals with the hue 1 (black), which are blessed & weigh 11 stones.<br />
<br />
[addtopack sandals set hue 1 loottype blessed weight 11 - This will add a pair of black sandals, which are blessed & weigh 11 stones, into the container or player's backpack of your choice.<br />
<br />
[m add sandals set hue 1 loottype blessed weight 11 - Same effect as above, except you will not lose your target cursor and can add multiples of the item without having to re-write your command line.<br />
<br />
[m addtopack sandals set hue 1 loottype blessed weight 11 - Same effect as above, except you will not lose your target cursor and can add multiples of the item without having to re-write your command line.<br />
<br />
'''Addmenu'''<br />
<br />
This is a very nifty command which will help you find items you do not know how to properly spell or what their add-names are. This is a rather basic command. To utilize this command, all you need to do is type [addmenu <what you are looking for><br />
<br />
So, if you were trying to add a potted plant but are unsure of the proper name syntax or type, you could utilize this command like this.<br />
<br />
[addmenu potted - This command will open the add-menu gump and match all item names with the term "potted" in them. You can refine this search query to shorter or longer text matching at your discretion.<br />
<br />
[addmenu pot<br />
[addmenu pottedplant<br />
[addmenu plant<br />
[addmenu tree<br />
<br />
Etc, and so forth. Tinkering with it for a short time should give you the full feel of how it works, its basically your dictionary for finding item-names (not statics).<br />
<br />
Now that we've covered the basics of item construction, let's move on to more complex construction which will save your countless hours of time & clicking your mouse all over the place. There are only a couple of commands in this category, but setting additional parameters to them will increase your array of capabilities tremendously.<br />
<br />
===Advanced Construction Commands===<br />
<br />
'''[area''' - Invokes settings to everything caught within the bounding box of the effect. Very powerful & useful tool for invoking properties on a large area of things at once.<br />
<br />
'''[tile''' - A large-scale adding tool. Generates items in a bounding box grid, at one item per tile for the full bounding box you determine.<br />
<br />
Let's cover the [tile command first, since it is actually an item generation command, where-as [area is not and is mostly a support command to help finish your construction properties, but does not actually add items itself. Here are some examples of executing the [tile command in both basic & advanced syntax, under the same general concepts as listed above.<br />
<br />
[tile sandals - This will generate sandals on every tile (one per tile) for the entire bounding box area you provide. Upon using the command, you will be prompted to target the first location of the bounding box, and then the second. Your first target is "corner 1" and the second target is "corner 2". Once completed, the system will generate the item you specified on each tile within these bounds. Be cautious with this command, attempting to add items within a very large bounds may cause server lag or a potential crash. It is not recommended to tile items in a large radius unless you know exactly what you are doing.<br />
<br />
[tile sandals set hue 1 loottype blessed weight 11 - This command will net you the same results as above, except now all of the sandals you create will be of a black hue, blessed loottype, and weigh 11 stones.<br />
<br />
The "add" & "tile" commands work with statics as well, I am simply using items as a demonstration purpose. You can just as easily use [tile static 1313 set hue 1 movable true, if you wanted to add black cobblestone tiles in an area which were movable for players to pick up.<br />
<br />
Lastly, we will cover the area command. This command is mostly a support modifier, as it does not add items itself, it only invokes properties onto items caught within the bounds. This is most useful in the scenario where you are building construction in an area, and need to invoke additional properties onto a large amount of items which are not part of their default settings. A good example of this is hue-ing floor tiles to a different color of that of their default. Now let's use some examples.<br />
<br />
[area set hue 1 - Using this command will prompt you to connect 2 locations for your bounding box, exactly the same as the [tile command. Once specified, everything caught within the radius will be set to hue 1, black.<br />
<br />
Sometimes you may have a large array of items/statics within a certain area, stacked on top of each-other, or just arranged in a certain fashion where you cannot tag them separately from other items you do not wish to be tagged within the bounds. Adding additional parameters to this will allow you to exclude items from the tagging. Let's try an example.<br />
<br />
[area set hue 1 where item itemid = 1313 - After specifying your bounding box, this command will hue all items 1 (black) within the bounding box, but only if their itemID matches the parameters entered above, 1313. So, in this instance you are able to hue all floor tiles (1313) black, but anything else caught within the bounds will not be affected. This command can be used in many various ways with these parameters to achieve all kinds of different results.</div>
WikiSysop
https://runuo.net/wiki/index.php?title=RunUO_World_Commands&diff=8
RunUO World Commands
2017-08-01T22:31:11Z
<p>WikiSysop: Created page with "===World Commands=== [Usage( "[CreateWorld" )] [Description( "Generates world decorations, doors, signs and moongates with a menu." )] [Usage("[createworldxml")] [Descriptio..."</p>
<hr />
<div>===World Commands===<br />
<br />
[Usage( "[CreateWorld" )]<br />
[Description( "Generates world decorations, doors, signs and moongates with a menu." )]<br />
<br />
[Usage("[createworldxml")]<br />
[Description("Create world with xml files and menu.")]<br />
<br />
[Usage("DecorateT2A")]<br />
[Description("Generates world decorations for a T2A shard.")]<br />
<br />
[Usage("DecorateDeleteT2A")]<br />
[Aliases( "DecoDelT2A" )]<br />
[Description("Removes world decorations of a Samurai Empire shard.")]<br />
<br />
[Usage("DecorateML")]<br />
[Description("Generates world decorations for a Mondain's Legacy shard.")]<br />
<br />
[Usage("SettingsML")]<br />
[Description("Mondain's Legacy Settings.")]<br />
<br />
[Usage("Quests")]<br />
[Description("Pops up a quest list from targeted player.")]<br />
<br />
[Usage("DecorateDeleteML")]<br />
[Aliases( "DecoDelML" )]<br />
[Description("Removes world decorations of a Mondain's Legacy shard.")]<br />
<br />
[Usage("DecorateKRfirstAge")]<br />
[Description("Generates world decorations for a Kingdom's Reborn First Age shard.")]<br />
<br />
[Usage("DecorateDeleteKRfirstAge")]<br />
[Aliases( "DecoDelKRfa" )]<br />
[Description("Removes world decorations of a Kingdom's Reborn First Age shard.")]<br />
<br />
[Usage("DecorateKRsecondAge")]<br />
[Description("Generates world decorations for a Kingdom's Reborn Second Age shard.")]<br />
<br />
[Usage("DecorateDeleteKRsecondAge")]<br />
[Aliases( "DecoDelKRsa" )]<br />
[Description("Removes world decorations of a Kingdom's Reborn Second Age shard.")]<br />
<br />
[Usage("DecorateSA")]<br />
[Description("Generates world decorations for a Stygian Abyss shard.")]<br />
<br />
[Usage("DecorateDeleteSA")]<br />
[Aliases( "DecoDelSA" )]<br />
[Description("Removes world decorations of a Stygian Abyss shard.")]<br />
<br />
[Usage("DecorateHSfirstAge")]<br />
[Description("Generates world decorations for a High Seas First Age shard.")]<br />
<br />
[Usage("DecorateDeleteHSfirstAge")]<br />
[Aliases( "DecoDelHSfa" )]<br />
[Description("Removes world decorations of a High Seas First Age shard.")]<br />
<br />
[Usage("DecorateHSsecondAge")]<br />
[Description("Generates world decorations for a High Seas Second Age shard.")]<br />
<br />
[Usage("DecorateDeleteHSsecondAge")]<br />
[Aliases( "DecoDelHSsa" )]<br />
[Description("Removes world decorations of a High Seas Second Age shard.")]<br />
<br />
[Usage( "DecorateDelete" )]<br />
[Aliases( "DecoDel" )]<br />
[Description( "Deletes world decoration." )]<br />
<br />
[Usage("DecorateMag")]<br />
[Description("Generates world decoration.")]<br />
<br />
[Usage("DoorGen")]<br />
[Description("Generates doors by analyzing the map. Slow.")]<br />
<br />
[Usage("DoorGenDelete")]<br />
[Description("Deletes doors by analyzing the map.")]<br />
<br />
[Usage("DoorGenT2A")]<br />
[Description("Generates doors by analyzing the map. Slow.")]<br />
<br />
[Usage("GenChampions")]<br />
[Description("Install ChampionSpawnController at 1415 1695 0.")]<br />
<br />
[Usage("TelGen")]<br />
[Description("Generates world/dungeon teleporters for all facets.")]<br />
<br />
[Usage("TelGenT2A")]<br />
[Description("Generates world/dungeon teleporters for T2A.")]<br />
<br />
[Usage("MoonGenDelete")]<br />
[Description("Removes created moongates with MoonGen command.")]<br />
<br />
[Usage( "[GumpSaveRegion" )]<br />
[Description( "Gump to Save inside Region" )]<br />
<br />
[Usage( "[GumpSaveCoordinate" )]<br />
[Description( "Gump to save by coordinates" )]<br />
<br />
[Usage( "[GumpRemoveID" )]<br />
[Description( "Gump to remove by ID" )]<br />
<br />
[Usage( "[GumpRemoveCoordinate" )]<br />
[Description( "Gump to remove by coordinates" )]<br />
<br />
[Usage( "[GumpRemoveRegion" )]<br />
[Description( "Gump to remove inside region" )]<br />
<br />
[Usage("PremiumSpawner")]<br />
[Aliases("Spawner")]<br />
[Description("PremiumSpawner main gump.")]<br />
<br />
[Usage("SHTelGenDelete")]<br />
[Description("Deletes solen hives teleporters.")]<br />
<br />
[Usage( "SignPut" )]<br />
[Description( "Places shop signs as specified in a config file." )]<br />
<br />
Usage: 'SignPut' or 'SignPut SE' (or ML, KR1, KR2, SA, HS1, HS2)" );<br />
<br />
[Usage("SignPutT2A")]<br />
[Description( "Places shop signs as specified in a config file." )]<br />
<br />
[Usage("SignGenDelete")]<br />
[Description("Deletes world/shop signs on all facets.")]<br />
<br />
[Usage("SignGen")]<br />
[Description("Generates world/shop signs on all facets.")]<br />
<br />
[Usage("SpawnGen [<filename>]|[unload <id>]|[remove <region>|<rect>]|[save <region>|<rect>][savebyhand][cleanfacet]")]<br />
[Description("Complex command, it generate and remove spawners.")]<br />
<br />
[Usage("SpawnCurrent")]<br />
[Description("Generate PremiumSpawners around the world with a gump.")]<br />
<br />
[Usage("SpawnUOML")]<br />
[Description("Generate PremiumSpawners around the world with a gump.")]<br />
<br />
[Usage( "GenSeers" )]<br />
[Aliases( "GenSeer, GenOverseer and GenOverseers" )]<br />
[Description( "Generates Spawns' Overseers around the world." )]<br />
<br />
[Usage( "RemSeers" )]<br />
[Aliases( "RemSeer, RemOverseer, RemOverseers" )]<br />
[Description( "Remove all Overseers in all facets." )]<br />
<br />
[Usage( "TelMake" )]<br />
[Description( "Generates world/dungeon teleporters for all facets." )]<br />
<br />
Usage: 'TelMake SE' (or ML, KR1, KR2, SA, HS1, HS2)" );</div>
WikiSysop
https://runuo.net/wiki/index.php?title=RunUO_Admin_Commands&diff=7
RunUO Admin Commands
2017-08-01T22:30:42Z
<p>WikiSysop: Created page with "==Admin Commands== All commands are activated by typing a prefix of [ (left bracket) <br> Command Effect '''Add''' - Creates the variable object<br> '''Admin''' - Lists t..."</p>
<hr />
<div>==Admin Commands==<br />
<br />
All commands are activated by typing a prefix of [ (left bracket) <br><br />
<br />
Command Effect<br />
<br />
'''Add''' - Creates the variable object<br> <br />
'''Admin''' - Lists the Accounts with Administrator rights currently logged in.<br> <br />
'''Animate''' - Causes the Target to perform the designated animation.<br> <br />
'''APN''' - Toggles On/Off Auto Page Notify<br> <br />
'''AutoPageNotify''' - Toggles On/Off Auto Page Notify<br> <br />
'''B''' - Broadcast the message to all accounts currently logged in<br> <br />
'''Ban''' - Bans the targetted player<br> <br />
'''Bank''' - Opens the target's bank box<br> <br />
'''BC''' - Broadcast the message to all accounts currently logged in<br> <br />
'''BCAST''' - Broadcast the message to all accounts currently logged in<br> <br />
'''Cast''' - Auto-Casts the designated spell<br> <br />
'''Client''' - Displays Target Client Version information<br> <br />
'''Delete''' - Deletes targetted object<br> <br />
'''Dismount''' - Dismounts from steed<br> <br />
'''DocGen''' - Generates Documents<br> <br />
'''Dupe''' - Duplicates the targetted object<br> <br />
'''DupeInBag''' - Duplicates the targetted object in bag<br> <br />
'''Firewall''' - Displays Firewall information<br> <br />
'''Get''' - Displays Property information<br> <br />
'''GetSkill''' - Displays skill information<br> <br />
'''Go''' - Opens 'Go' gump menu<br> <br />
'''Grab''' - Optional player loot package<br> <br />
'''GuildProps''' - Displays target's guild information<br> <br />
'''Help''' - Displays Help gump<br> <br />
'''Hide''' - Hides target<br> <br />
'''Immortal''' - Causes the target to become invulnerable<br> <br />
'''IncX''' - Adds/Subtracts from the targets X coordinate<br> <br />
'''IncXYZ''' - Adds/Subtracts from the targets X/Y/Z coordinates<br> <br />
'''IncY''' - Adds/Subtracts from the targets Y coordinate<br> <br />
'''IncZ''' - Adds/Subtracts from the targets Z coordinate<br> <br />
'''Invul''' - Causes the target to become invulnerable<br> <br />
'''Kick''' - Disconnects Target<br> <br />
'''Kill''' - Kills the Target<br> <br />
'''Mortal''' - Causes the target to become vulnerable / mortal<br> <br />
'''MOTD''' - Edits/Displays the Message of the Day<br> <br />
'''Move''' - Moves target object/player to selected position<br> <br />
'''NewX''' - Sets the target object/players X coordinate<br> <br />
'''NewXYZ''' - Sets the target object/players XYZ coordinates<br> <br />
'''NewY''' - Sets the target object/players Y coordinate<br> <br />
'''NewZ''' - Sets the target object/players Z coordinate<br> <br />
'''NoInvul''' - Causes the target to become vulnerable / mortal<br> <br />
'''Objlist''' - Generates an html document listing all objects currently spawned on the shard<br> <br />
'''Pages''' - Displays GM pages<br><br />
'''Props''' - Displays Property information<br> <br />
'''Recompile''' - Recompiles Scripts<br> <br />
'''Remove''' - Deletes targetted object<br> <br />
'''Res''' - Resurrects Target Player (would be nice if someone made npcs ress-able as well)<br> <br />
'''Resurrect''' - Resurrects Target Player (would be nice if someone made npcs ress-able as well)<br> <br />
'''S''' - Sends variable message to all currently logged in staff<br> <br />
'''Save''' - Causes the world to save<br> <br />
'''Set''' - Sets variable property to target<br> <br />
'''SetSkill''' - Sets variable skill on target<br> <br />
'''ShaveBeard''' - Shaves targets beard<br> <br />
'''ShaveHair''' - Shaves targets hair<br> <br />
'''SignGen''' - Generates all world signs using signs.cfg<br> <br />
'''Skills''' - Displays a skill menu<br> <br />
'''SM''' - Sends variable message to all currently logged in staff<br> <br />
'''SMSG''' - Sends variable message to all currently logged in staff<br> <br />
'''Stuck''' - Used by players when physically unable to move due to map/script flaw<br> <br />
'''Tele''' - Teleports user to target location<br> <br />
'''Teleport''' - Teleports user to target location<br> <br />
'''TelGen''' - Generates standard world teleporters<br> <br />
'''Tile''' - Tiles variable object in a bounding box<br> <br />
'''Unhide''' - Unhides target<br> <br />
'''Who''' - Displays a list of all currently logged in users<br> <br />
'''Wholist''' - Displays a list of all currently logged in users<br> <br />
'''Wipe''' - Destroys all objects in a bounding box<br> <br />
'''WipeItems''' - Destroys all items (in a bounding box)<br> <br />
'''WipeNPCs''' - Kills all NPCs (in a bounding box)<br> <br />
'''WipMultis''' - Destroys all multis (in a bounding box)<br><br />
<br />
[http://www.runuo.net/forum/forum/runuo-support/runuo-installation/1707-runuo-command-list Complete RunUO Command List]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=How_to_make_a_RunUO_Shard&diff=6
How to make a RunUO Shard
2017-08-01T22:30:05Z
<p>WikiSysop: Created page with "===How to Make a RunUO Shard=== '''Requirements''' * Time: Approximately 15 - 20 minutes. * Operating System: Windows XP, 7, 8 or Windows Server 2003, 2003R2, 2008, 2008R2 o..."</p>
<hr />
<div>===How to Make a RunUO Shard===<br />
<br />
'''Requirements'''<br />
<br />
* Time: Approximately 15 - 20 minutes.<br />
* Operating System: Windows XP, 7, 8 or Windows Server 2003, 2003R2, 2008, 2008R2 or 2012<br />
*.NET Framework <br />
* CPU: See your Microsoft Windows OS requirements<br />
*Memory: 2 Gigabytes<br />
<br />
'''Details'''<br />
<br />
Getting started with RunUO is relatively easy and will take you approximately five minutes from start to finish to get logged into your server.<br />
<br />
'''Assumptions:'''<br />
* We will assume that you're installing RunUO on the same machine with the Ultima Online Client.<br />
* We will assume you already have Ultima Online installed and working.<br />
* We will assume you've already downloaded the latest RunUO release<br />
* We will assume you have a "power user" level of knowledge when it comes to your computer<br />
* We will assume you've already installed the .NET framework listed above in the requirements section.<br />
<br />
'''RunUO Installation Instructions:'''<br />
* Extract the latest RunUO release to your desktop folder<br />
* Open up RunUO\Scripts\Misc\Datapath.cs in notepad<br />
* Modify your path to include the directory to which you installed Ultima Online <br />
* Save the edits to Datapath.cs and overwrite the existing file.<br />
* Double click "RunUO.exe" in your RunUO folder to start your shard, you will be prompted to create your "Owner" level account<br />
* Enter in a username and password of your choosing <br />
* Launch [http://www.uorazor.com UORazor] and point it at your local computer <br />
At this point you should be able to log in and do whatever you'd like with your shard! This is how easy it is to have your own server with RunUO!</div>
WikiSysop
https://runuo.net/wiki/index.php?title=RunUO_FAQ&diff=5
RunUO FAQ
2017-08-01T22:29:31Z
<p>WikiSysop: Created page with "==RunUO Q&A== Q: '''How can I log in to my RunUO shard?'''<br> A: Go to your Ultima Online folder, search for a file called login.cfg! Open it. Now locate this line of code...."</p>
<hr />
<div>==RunUO Q&A==<br />
<br />
Q: '''How can I log in to my RunUO shard?'''<br><br />
A: Go to your Ultima Online folder, search for a file called login.cfg! Open it. Now locate this line of code. LoginServer=x.x.x.x,xxxx Remove all of it and type this in there LoginServer=127.0.0.1,2593. You can now connect to your server<br><br />
<br />
Q: '''Where can I change my RunUO Server name?'''<br><br />
A: Go to Scripts\Misc\ServerList.cs and there you will find "RunUO Test center". Modify that to whatever you wish your shard name to be.<br><br />
<br />
OR<br><br />
<br />
1.Browse to RunUO\Scripts\ServerList.cs and open it up in Notepad (or your favorite text editor).<br> <br />
<br />
2.You'll see the following line: public static readonly string servername = "Name of shard Here"<br><br />
<br />
3.Simply change "Name of shard Here" to whatever you'd like your shard to be called and save<br><br />
<br />
Q: '''What program I should use for scripting C+?'''<br><br />
A: I really recommend you to use Notepad++ text editor. You can get [https://notepad-plus-plus.org/download/v7.1.html Notepad++]<br><br />
<br />
OR<br />
<br />
[https://www.visualstudio.com/vs/visual-studio-express/ Visual Studio Express]<br><br />
<br />
Q: '''Where can I download RunUO/Ultima Online scripts?'''<br><br />
A: http://www.runuo.net/scripts/ has a nice selection of scripts you can add to your shard<br><br />
<br />
Q: '''How To Make Your RunUO Server public''' [Tutorial]<br><br />
<br />
How To Make Your RunUO Server public - external Connection:<br><br />
<br />
A: If you want to make it public; go to into Scripts/Misc/serverlist.cs <br />
Edit with whatever you want(its a text file), then you just look for <br />
this:<br><br />
<br />
public class ServerList<br><br />
{<br><br />
public static readonly string Address = null;<br><br />
public static readonly string ServerName = null;<br><br />
public static readonly bool AutoDetect = true;<br><br />
public static void Initialize()<br><br />
{<br><br />
<br />
AND CHANGE IT the first null should be your IP address in hiphens "127.0.0.123" thats an example the next red null should be changed to the name you want your shard in hiphens "example MY TEST SHARD" so it would look like this:<br><br />
<br />
public class ServerList<br><br />
{<br><br />
public static readonly string Address = "127.0.0.123";<br><br />
public static readonly string ServerName = "MY TEST SHARD";<br><br />
public static readonly bool AutoDetect = true;<br><br />
public static void Initialize()<br><br />
{<br><br />
<br />
It is public now, boot up and run UO Server<br><br />
<br />
Q: '''How to I set up my shard to auto create player accounts?'''<br />
<br />
A: You should run RunUO.exe at least once from the command line to create the owner account. Then look for this line of code and set the Auto Account Creation to "true"<br />
<br />
public class AccountHandler<br><br />
{<br><br />
private static int MaxAccountsPerIP = 1;<br><br />
private static bool AutoAccountCreation = true;<br><br />
private static bool RestrictDeletion = !TestCenter.Enabled;<br><br />
<br />
Q: '''How do I disable UO Era Expansions?'''<br />
<br />
A: One of the first thing many users like to do is to disable certain features added to Ultima Online brought fourth by other expansions.<br />
<br />
These values are controlled thru /Scripts/Misc/Currentexpansion.cs<br />
<br />
To control what Expansion era Ultima Online you want present search for the following line.<br />
<br />
private static readonly Expansion Expansion = Expansion.ML;<br />
<br />
Leaving the value at default will give you all the features leading up to and including Mondain's Legacy.<br />
<br />
For Samurai Empire UO replace the line with the following:<br><br />
<br />
private static readonly Expansion Expansion = Expansion.SE;<br><br />
For Age of Shadows UO replace the line with the following:<br><br />
<br />
private static readonly Expansion Expansion = Expansion.AOS;<br><br />
<br />
For Lord Blackthorns Revenge UO replace the line with the following:<br><br />
private static readonly Expansion Expansion = Expansion.LBR;<br><br />
<br />
For UO:R UO replace the line with the following:<br><br />
private static readonly Expansion Expansion = Expansion.None;<br><br />
<br />
Q: '''How do I Disable the UO Young Player System?'''<br />
<br />
A: To disable the Young Player System open up /Scripts/Misc/CharacterCreation.Cs<br />
<br />
find the line:<br><br />
<br />
bool young = true;<br><br />
<br />
replace it with:<br><br />
<br />
bool young=false;<br><br />
<br />
then find the line:<br><br />
<br />
if ( pm.AccessLevel == AccessLevel.Player && ((Account)pm.Account).Young )<br><br />
young = pm.Young = true;<br><br />
<br />
replace it with:<br><br />
<br />
if ( pm.AccessLevel == AccessLevel.Player && ((Account)pm.Account).Young )<br><br />
young = pm.Young = false;<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=What_is_RunUO&diff=4
What is RunUO
2017-08-01T22:28:44Z
<p>WikiSysop: Created page with "==What is RunUO?== RunUO is a project to create and maintain a freely available Microsoft .NET based Ultima Online server. The goal of the RunUO Software Team is to provide..."</p>
<hr />
<div>==What is RunUO?==<br />
<br />
RunUO is a project to create and maintain a freely available Microsoft .NET based <br />
Ultima Online server. The goal of the RunUO Software Team is to provide software <br />
that is scalable and capable of recreating the EA Games server environment.<br />
<br />
RunUO is licensed under the GNU General Public License GNU General Public License <br />
(GPL), and is available for download from the [http://www.runuo.net RunUO] website.<br />
<br />
===History of RunUO===<br />
<br />
RunUO started as a hobby. During the early part of 2002, "Krrios" began writing his <br />
own client for Ultima Online (a popular MMORPG). RunUO began as an aid in the <br />
client development process to simulate the actions of the Origin Systems shards. A <br />
few months later, Ryan, now the project manager of RunUO, convinced "Krrios" to <br />
concentrate more on creating a new Ultima Online server emulator.<br />
<br />
Ryan already had experience in maintaining websites and communities from past <br />
emulation ventures. On September 25, 2002 the first release was made, RunUO Beta1. <br />
During its beta phases, RunUO was released as a closed-source project. Within <br />
nearly three years, and after 40 beta releases and many man hours, RunUO 1.0.0 was <br />
released on February 3, 2005. On June 15, 2006 a RunUO 2.0 release candidate was <br />
released, ushering in support for the latest game expansions and the new .NET 2.0 <br />
framework.<br />
<br />
The development cycles of RunUO have slowed since the release of RunUO 1.0.0. <br />
However, development has continued. Recently, the focus has been on scalability, <br />
rather than the implementation of game play features.<br />
<br />
On June 14, 2006 a public Subversion repository for RunUO was opened. This allows <br />
RunUO users to see the latest work being done on RunUO by the development team and <br />
submit their own patches to have features and fixes implemented in the main <br />
distribution.<br />
<br />
===RunUO Developers===<br />
<br />
RunUO was developed and maintained by an open community of developers under the <br />
guidance of the RunUO Software Team. The RunUO Software Team consists of Bryan <br />
"Zippy" Pass, Mark Sturgill, Andre "ASayre" Sayre, "Krrios", and Ryan McAdams.<br />
<br />
===External Links===<br />
<br />
The RunUO Forum is the backbone of the RunUO emulator community and provides forums <br />
for discussion, support, and script submissions.<br />
<br />
[http://www.runuo.net RunUO Website]<br><br />
[http://www.runuo.net/forum RunUO Forum]<br><br />
[http://www.runuo.net/wiki RunUO Wiki]<br><br />
[http://www.runuo.net/tools RunUO Tools]<br><br />
[http://www.runuo.net/scripts RunUO Scripts]<br><br />
<br />
[https://en.wikipedia.org/wiki/Server_emulator Server Emulator - Wikipedia]<br></div>
WikiSysop
https://runuo.net/wiki/index.php?title=Main_Page&diff=3
Main Page
2017-08-01T22:28:05Z
<p>WikiSysop: </p>
<hr />
<div>__NOTOC__<br />
{| style="width:100%;"<br />
| colspan="3" style="background:#dbdbdb; color:#000000; padding:5px 5px 5px 5px; text-align:center;" | ''RunUO - Ultima Online Game Emulator''<br />
|-<br />
| style="vertical-align:top; width:33%" |<br />
<br />
==RunUO Wiki==<br />
<br />
*[http://www.runuo.net RunUO Website]<br><br />
*[http://www.runuo.net/forum RunUO Forum]<br><br />
*[http://www.runuo.net/tools RunUO Tools]<br><br />
*[http://www.runuo.net/scripts RunUO Script Archive]<br><br />
*[[What is RunUO]]<br><br />
*[[RunUO FAQ]]<br><br />
*[[How to make a RunUO Shard]]<br><br />
*[[RunUO Admin Commands]]<br><br />
*[[RunUO World Commands]]<br><br />
*[[RunUO Constructor Guide]]<br><br />
<br />
==How To Play UO==<br />
<br />
*[[What is Ultima Online]]<br><br />
*[[Ultima Online Guide]]<br><br />
*[[Ultima Online Eras]]<br><br />
*[http://www.uoguide.com UO Guide Wiki]<br><br />
<br />
| style="vertical-align:top; width:33%;" |<br />
<br />
==UO Clients==<br />
<br />
*[http://www.uoguide.com/List_of_Classic_Client_Patches Classic Client Patches]<br><br />
*[http://www.uoguide.com/List_of_Enhanced_Client_Patches Enhanced Client Patches]<br><br />
*[http://www.uoguide.com/List_of_Kingdom_Reborn_Client_Patches Kingdom Reborn Client Patches]<br><br />
*[http://www.uoguide.com/List_of_Third_Dawn_Client_Patches Third Dawn Client Patches]<br><br />
*[[UO Client Compatability Chart]]<br><br />
<br />
==UO Assistants==<br />
<br />
*[[UO Steam]]<br><br />
*[[UO Razor]]<br><br />
*[[AssistUO]]<br><br />
<br />
| style="vertical-align:top; width:33%;" |<br />
<br />
==Dev Software==<br />
<br />
*[[UO Fiddler]]<br><br />
*[[InsideUO]]<br><br />
*[[Mulpatcher]]<br><br />
*[[Pandoras Box]]<br><br />
*[[UO Architect]]<br> <br />
*[[UO Landscaper]]<br><br />
*[[CentrED]]<br><br />
*[[World Maker]]<br><br />
*[[Gump Studio]]<br> <br />
*[[Region Editor]]<br><br />
*[[RadMap Copy]]<br> <br />
*[[RadMap Worldforge]]<br><br />
<br />
==World Spawners==<br />
<br />
*[[XML Spawner]]<br><br />
*[[Nerun's Distro]]<br><br />
<br />
| style="vertical-align:top; width:33%;" |</div>
WikiSysop
https://runuo.net/wiki/index.php?title=Main_Page&diff=2
Main Page
2017-08-01T00:15:51Z
<p>WikiSysop: </p>
<hr />
<div><strong>MediaWiki has been installed.</strong><br />
<br />
Consult the [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents User's Guide] for information on using the wiki software.<br />
<br />
== Getting started ==<br />
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Configuration settings list]<br />
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]<br />
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]<br />
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]<br />
* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Learn how to combat spam on your wiki]<br />
https://www.mediawiki.org/static/images/wikimedia-button.png</div>
WikiSysop