A New Breed of MUSH Server

Configuring the Chargen System

  • [config]

To configure the Chargen plugin:

  1. Select Admin -> Setup.
  2. Edit chargen.yml


You can configure the messages that are put into the approval job when characters are approved or rejected. Commonly you will edit the approval message to tell new players anything special they need to know to get started.

  • approval_message - This message is sent when they’re approved.
  • rejection_message - This message is sent when they’re rejected.
  • post_approval_message - The system will also create a job after someone is approved, to remind the game admin to do any ancillary tasks, like adding them to lists, or making sure they have a log icon. You can configure the todo list in the job message.
  • welcome_message - This message is posted to the forum when a character is approved. You can use %{name} in the message where you want the char’s name to go. You can also use %{rp_hooks} for their RP Hooks, or any group name. For example: "Welcome %{name} - the newest %{position} in %{faction}.\n\nRP Hooks:\n%{rp_hooks}" (The quotes there are important.)

Web Chargen Blurbs

You can also configure the character creation instructions that appear in the Web Chargen.

  • bg_blurb - Background instructions.
  • hooks_blurb - RP Hook instructions.
  • desc_blurb - Description instructions.
  • groups_blurb - Group instructions.
  • demographics_blurb - Demographics instructions.
  • rank_blurb - Description of the rank field.
  • icon_blurb - Instructions for uploading a profile icon.


This setting controls whether characters can submit their application from the web portal. If your game isn’t using FS3 and doesn’t have the ability to set stats via the web, you’ll probably want to disable this to force people to complete chargen in-game.


You can configure which commands execute when you do app/review. Just supply a list of commands, and use %{name} where you want the character’s name to go in the command. For example:

- app %{name}
- profile %{name}
- bg %{name}


You can configure which forum category the welcome message is posted to. Making it a forum that doesn’t exist will effectively disable the welcome post.

Application Jobs

You can edit the categories and states that the chargen system uses for its application jobs.

  • app_category - Character applications use this category.
  • app_resubmit_status - When an app is re-submitted, the job enters this state.
  • app_hold_status - When an app is rejected, the job enters this state.


You can configure whether RP hooks must be set in chargen or not.


Character creation is done as a series of ‘stages’. For each stage, you can choose to display either a help file, a title and text, or both.

For example, the following config will show custom text for the first stage, a help file for the second, and both text and a help file for the third.

    title: "A Title"
    text: "Some text about starting chargen."
    help: 'sheet'
    help: 'demographics'
    text: 'Some extra help text you want to say about demographics.'

Custom App Review

The standard chargen ensures that values are set, but doesn’t do much to see if the values make sense (i.e. that only nobles can be knights). Doing these kinds of checks requires custom code, but there’s a built-in hook where you can put that code. Open aresmush/plugins/chargen/custom_app_review.rb and make the custom_app_review method do whatever checks you want.

For example, if we wanted to restrict the ‘knight’ position to nobles, we could do:

def self.custom_app_review(char)
  faction ="Faction")
  position ="Position")
  if (position == "Knight" && faction != "Noble")
    msg = "%xrOnly nobles can be knights.%xn"
    msg = t('chargen.ok')
  return Chargen.format_review_status "Checking groups.", msg

Notice how we’re using the format_review_status helper. This is how most of the lines in the app review are formatted. It will display like this:

Checking groups.                                   Only nobles can be knights.

The Chargen helper has several built-in status values:

Green (OK)

t('chargen.ok')  --> < OK! >

Yellow (Warnings)

t('chargen.missing')       < Missing %{missing} >

Red (Errors)

t('chargen.too_many')      < Too Many! >
t('chargen.not_enough')    < Not Enough! >
t('chargen.not_set')       < Not set! >
t('chargen.oops_missing')  < Oops! Missing %{missing} >

You are not limited to these, of course, but using the standard that people are familiar with will help players to understand your system.

Custom Approval Steps

In addition to having custom app review steps, you can also have custom code that’s triggered when a character is approved. Open aresmush/plugins/chargen/custom_approval.rb and make the custom_approval method do whatever you want to do when someone is approved. Common examples include:

  • Setting starting location based on a group value (e.g. home world, faction).
  • Assigning a role or adding to a channel based on a group value (e.g. faction-based roles/channels).
  • etc.

Here’s an example of how to assign a role based on the character’s faction (assuming you’ve already created the roles using role/create ahead of time).

def self.custom_approval(char)
  faction ="Faction")
  role = Role.find_by_name(faction)
  if (role)
    char.roles.add role