Now we’re going to examine a few of the Cortex plugin commands to see how they work. These commands are pretty standard across all skill systems.
Back in Create a Config File, we added a lot of configuration entries for skills, attributes, etc. But we need a way for players to view that information. We’ll create a set of commands – attributes, skills, assets and complications – to show the different categories.
Let’s look at the simplest one first - the list of attributes. There are only a few, and they have only a name and description, so our display is pretty simple.
module AresMUSH
module Cortex
class AttributesCmd
include CommandHandler
def handle
# Get the hash of attributes out of the configuration
attrs = Global.read_config("cortex", "attributes")
# Sort the hash and then convert it to a list of the form "Name Description"
list = attrs.sort_by { |a| a['name']}
.map { |a| "%xh#{a['name'].ljust(15)}%xn #{a['description']}"}
# Use the standard bordered list template to show the list with a title above it.
template = BorderedListTemplate.new list, t('cortex.attributes_title')
client.emit template.render
end
end
end
end
Skills, on the other hand, are a little complicated. Not only are there potentially a ton of them, they also have specialties to show. Here we’re going to use the BorderedPagedListTemplate to let the player browse the skills list a page at a time using skills, skills2, skills3, etc. The desired page number can be accessed straight from the command class via cmd.page
.
module AresMUSH
module Cortex
class SkillsCmd
include CommandHandler
def handle
skills = Global.read_config("cortex", "skills")
# Sort the hash and then convert it to a list of the form "Name - Description (Specialties)"
list = skills.sort_by { |s| s['name']}
.map { |s| "%xh#{s['name'].ljust(15)}%xn #{s['description']} (#{s['specialties']})"}
template = BorderedPagedListTemplate.new list, cmd.page, 25, t('cortex.skills_title')
client.emit template.render
end
end
end
end
The BorderedPagedListTemplate does a lot for us – it figures out which piece of the list to show, formats everything, and even shows the handy ‘page x of y’ text at the bottom.
There are similar commands for assets and complications, but we’re not going to go into them here.