CoH Binds

One of the nice aspects of City of Heroes is the bind system. When a bound key is pressed, a set of binds can be mapped in response, so a robust custom menuing structure can be supported as long as the user can memorize the bindings. I used the numpad with a simple system of a menu to a depth of two and an escape key to create a rich control set for all those commands inevitably not mapped. For a pet controlling mastermind, a system like this was very useful in several ways.

The root menu manages the command scope and the command targets. For each mapped button on the root menu, there will be one submenu which will give access to as many related commands as can be mapped to the keyspace. In this example, if on the root menu, eight is pressed, the submenu for group pet emotes will be loaded.

Similar emotes are further classified by the emotion that they can convey. This submenu allows the user to think of the emotion rather than the emote that is to be expressed. Once a key is pressed on the submenu, a classified command menu is loaded. If on this submenu, the star key is pressed, then the set of dance together commands is loaded.

All pets could then be commanded to make the same dance gestures with only the press of a single key. The keys would remain mapped to the dance together emotes until the minus key, home/escape, is pressed. Pressing the home/escape key would load the root menu and allow the user to select a different command menu.

The bind system was so robust that I was able to map distinct commands to each pet, so some of the submenus allow the pets to do different actions keyed by the same button. The group menu described above is actually the most dull of all the group commands because all pets get the same action. Some of the more in depth binds allowed each pet to get its own command which I demonstrated in the scoring and dancing videos. This group mapping was the same as the individual pet and character mapping so that the complexity of the system was reduced and I could easily recall which emote command was being issued whether to the character, a particular pet or all pets without the general need for reference sheets.

The videos below are various demonstrations of this bind system.

The exercise video demonstrates commanding all pets with the same set of commands simultaneously. Many emotes can be interrupted with another emote allowing a wider range of emotive behavior. The exercise is a jury-rigged kata using two or three emotes that fit together to interrupt the other instead of the simple three motion kata emote which is allowed to complete at the end of the marital arts part of the video.

The argue video was a joke I scripted together to give my mastermind some personality. The henchmen were always behaving badly in critical situations so I decided to dress them down a bit. This series of emotes uses the interrupt method heavily to chain together many motions into a single argument. It is similar to what many of the NPC's do in cut scenes except the NPC are much more wooden because they don't seem to use the interrupt method. This is my personal favorite of these videos.

The coffee break appears to be a very simple exhibition; however, it is probably the most complex of all of these demonstrations. The menus for individual commands were general so the target pet had to be selected. There is a need to swap targets to change individual postures and actions so the reticle gives away who is the active pet. Once again, the interrupt method is heavily used as the main character, the center pet, rapidly switches from drinking coffee to eating a doughnut repeatedly. This video was incredibly hard to produce with a nice smooth outcome as the targeting complicated the process significantly.

The showoff video is more demonstration of the interrupt method and a homage to the muscle bound alpha type, the commando, showing off his posing. I named this pet Elvis and I am trying to get the ole' Elvis hip sway out of the slow bicep pose. It never quite came off right on video. If you do it correctly, he plays a little Elvis air guitar.

The dancing video shows off giving unique commands to each pet. Several pets share the commands but they generally have two or three different commands spread through the group so that they don't all do the same movements. The same group movement was way too artificial and too typical in displays by the average mastermind. I wanted my pet emotes to be a little more unique and much less plastic.

The score binds are the least interesting demonstration, but I made the video to demonstrate both the interrupt system and the individual commands embedded in the group commands. One strange anomaly of the bind system was the ability to map a command to all pets in parallel with a command to individual pets. Hitting the same command twice would exhibit different behavior as one time the individuals named in the command would get the all command and other times would get the individual command. The topic was so uninteresting in fact that I had to scout locations for a while just to find a place where the scene had a little humor. I opted for the shooting range where the mobs are missing the pets at point blank range and the pets are taunting them for the poor shooting ability.

I have had requests for these binds, so I have attached a zip archive of the bind folder. The files should be extracted into a folder named COH at the root of the C drive. Unfortunately, the design requires an absolute path, so if you prefer to extract to an alternate location, you will have to manually edit the files and there are a lot of path references in those files. To install the mastermind binds, simply execute the slash command:

bind_load_file c:\coh\binds\default\mastermind\default\install.txt

In many cases, I am using the given pet name rather than issuing commands by generic identifier, so out of the box, the more complex group pet emotes won't work without some rework.

Additionally, it might be handy do dump out a log of the current binds in order to debug them. To do so, execute the following slash command to instruct the system to save a debugging file:

bind_save_file c:\coh\binds\debug.txt

There are also a lot of other useful binds that I played around with in the archive, so it may be of interest to look around the archive for useful tricks. Also, the included master list of emotes is somewhat out of date but it is a decent starting point.

One of those menus buried deep within the mastermind binds is the ability to use inspirations by name. Effective binding of these commands would reduce any need to constantly rearrange the inspiration tray. I am listing it as an example of the depth that is possible in the binding system:

ADD "nop"
DIVIDE "nop"
NUMPAD1 "inspexec_name respite"
NUMPAD2 "inspexec_name catch a breath"
NUMPAD3 "inspexec_name awaken"
NUMPAD4 "inspexec_name enrage"
NUMPAD5 "inspexec_name insight"
NUMPAD6 "inspexec_name break free"
NUMPAD7 "inspexec_name luck"
NUMPAD8 "inspexec_name sturdy"
NUMPAD9 "inspexec_name discipline"
NUMPAD0 "nop"

There are also some prototype menus for custom targeting such as when hunting Family:

ADD "target_custom_next button man alive"
DECIMAL "target_custom_next button man defeated"
NUMPAD1 "target_custom_next underboss alive"
NUMPAD2 "target_custom_next consigliere alive"
NUMPAD3 "target_custom_next capo alive"
NUMPAD4 "target_custom_next gunner alive"
NUMPAD5 "target_custom_next muscle alive"
NUMPAD6 "target_custom_next blackjack alive"
NUMPAD7 "target_custom_next buckshot alive$$target_custom_next hitman alive"
NUMPAD8 "target_custom_next mook alive"
NUMPAD9 "target_custom_next marcone alive"
NUMPAD0 "target_custom_next button man alive"
NUMPADENTER "target_custom_prev button man alive"

Or for quick targeting teammates:

ADD "target_custom_next teammate alive"
DECIMAL "target_custom_next teammate defeated"
DIVIDE "nop"
NUMPAD1 "team_select 1"
NUMPAD2 "team_select 2"
NUMPAD3 "team_select 3"
NUMPAD4 "team_select 4"
NUMPAD5 "team_select 5"
NUMPAD6 "team_select 6"
NUMPAD7 "team_select 7"
NUMPAD8 "target_custom_near teammate alive"
NUMPAD9 "target_custom_far teammate alive"
NUMPAD0 "nop"
NUMPADENTER "target_custom_prev teammate alive"

Comments are closed.