Toolbelt User Interface
Many games use a visual "toolbelt" to hold and represent the equipment that is available to the character. This model is very common in first-person shooters (it's even in U9 -- Ultima Ascension), and would also be appropriate in UO. This is a pretty simple suggestion, but one which has many deep ramifications for the client as a whole.
Essentially, my suggestion is that a visual toolbelt become the primary UI for all macros and shortcuts, but also act as a container for objects that can be used (including pouches as sub-containers). For example, it should be possible to drag a spell icon to a toolbelt slot (and activate the spell by pressing the appropriate key), or to drag a potion to a toolbelt slot (and "use" the potion by pressing the right key), or to create a complex macro that is mapped to a slot, and so forth. Really, it should be the primary UI for every automated action that is under the user's control.
Here is a visual representation of how such a toolbelt might look (this is taken from U9 with some adaptation):
The important parts of the toolbelt are described below. However, keep in mind that the principle idea here is to completely replace the existing "macro" interface with a programmable toolbelt.
- 12 slots per row: The toolbelt would have 12 visible slots, each of which mapped to the F1 through F12 function keys. These are the slots labelled 1 through 12 in the image above. Each slot or cell should have one or more actions associated with it, depending on the kind of object that has been linked (more on this below).
- Multiple rows: There should be multiple toolbelt "rows", each of which represented a different toolbelt that is accessible when a different modifier key is depressed. For example, the default row would be F1-F12, while another row would be accessible when SHIFT was depressed, and another row when CTRL was depressed, and so forth. These are represented by the different colored tabs on the left edge of the image (blue for SHIFT, red for CTRL, etc). The rows could be "locked" into the foreground by selecting one of the tabs, so that the slots were accessible for programming and so forth. The rows probably should not cycle around during normal use. Including all of the possible modifier combinations (CTRL+SHIFT for example), there are some 48 possible macro assignments available with single-key modifiers, and over 100 with multiple-key modifiers.
Once an item has been placed into a toolbelt slot, a context menu should become available for that slot, allowing for the development of basic macros. Among the actions that should be available for different kinds of slots:
- Use item: The default action for any item in a slot should be to "use item". In the case of a potion or something, this makes obvious sense.
- Use item type: Just as it should be possible to use an item, it should also be possible to use an item type, as is currently found in UO Assist. This would be useful with things like potions in particular. Once the last item of that type is consumed, the toolbelt icon would change to a disabled state, indicating that no more items of that type were available.
- Equip item: Some items do not currently have "use" mappings assigned to them. For example, the icon shown in the 3rd slot is the samurai breastplate tunic, and whenever the user pressed the F3 key, the tunic should be automaticall equipped, replacing any other item currently being worn in that equipment slot (that item would then fall into the F3 position). This should be the default behavior for all armor and weapons, regardless of whether or not they have use actions (as is the case with daggers and such). If an item is no longer accessible (it has been lost on death or something) the icon should change to a disabled state. If the item is rediscovered, the icon state should change back to an enabled state.
- Cast spell: The icon shown in the 4th slot above is the Mark spell. Obviously, the default mapping for spell objects should be to cast the spell. This should also be the default action for things like special moves and stances, so that activating "infectious strike" move should be as simple as pressing the F4 key.
- Inspect: Slot 5 shows a stack of crossbow bolts. While those items do not have any kind of "use" action by default, they are often single-clicked in order to determine how many items of that type exist (how am I doing on arrows? for example). In order to support that kind of usage, there should be an "inspect" action that maps to the existing single-click function (in this case, returning a count of the crossbow bolts whenever the F5 key is pressed). Similarly, the number of uses remaining in a sewing kit could be displayed by chaging the default action from "use item" to "inspect".
- Count item type: Non-stackable items are not countable by deafult so aseparate "count" function should also be created for performing inventory of non-stacked items (ie, how many greater heal potions do I currently have?).
- Use skill: Slot 8 shows an icon for the hiding skill (adapted from the skill flag on the uo.com website). Whenever a skill is dragged to the toolbar, "use skill" should be the default action. Note that slot 7 also shows a theoretical "craft breastplate" icon that may result from tear-off crafting book icons, should such a system ever be developed.
- Full programmability: The existing UO client macro system should be supported within the toolbelt system. This means that all of the existing functions such as Invoke Virtue and Open Door and the like should all be available for custom development. However, they should be associated with the slots, and not developed in a separate part of the options screen. On the other hand, the macro system should not be limited to just the toolbelt keys. For example, I currently have <CTRL-D> mapped to the Open Door macro command, and would greatly prefer to use that assignment instead of being forced to map it to something obscure like <CTRL-ALT-F2> or whatever. This means that the macro system needs to be accessible outside of the toolbelt as well. I am unsure on how to handle the conflicting design goals here.
One consideration with this design is that items can be dragged and dropped to new slots, with the macros changng accordingly. This would make macro editing and updates somewhat easier, as spells can be arranged into groups and shuffled around as needed.
Overall, I think it would provide a useful and easy way for beginners to get into the game, and would also make the gamworld a bit more immersive than the current (separate) macro system allows for.