HMK Toolkit version 1.1.6

The new campaign panel in HMK Toolkit. It shows a campaign overview and narrative seeds, a list of notes with in-world dates, and the player characters associated with their players.

It's been many months since I've blogged about the public version of HMK Toolkit, and more than a year since I've shared details of my own version so let's talk about my version. As I started writing this, I found it hard to choose a main feature to emphasize: there are so many. This version also adds some polish and tweaks, in addition to quality of life little things.

Campaign

The campaign selector, with each campaign identified by a four-letter code.

I now have a place to take campaign notes. You can select a campaign at the top (identified by a four-letter code). Each campaign has room for summary or general details and narrative seeds. You can also associate players with specific characters and press a button and be taken to that character sheet.

An example of notes in the campaign panel showing an expanded note.

Below that you can add notes. Each note has a title (shown in the list), a content (shown when you select a note), an in-world date, and the option to put a tag on the calendar (shown as a calendar icon in the list). When the option to show a note on the calendar is selected, it is displayed in the calendar as the campaign four-letter code followed by the note number. This could be used for various things, for example as a reminder to make an alchemical elixir decay roll in 30 days, or milestones in the campaign.

Calendar day showing a note from a campaign as UWEC-4.

Of course only the notes from the currently selected campaign are shown in the calendar, so you can run multiple campaigns and not have your calendar cluttered with stuff unrelated to what you're running at the moment. When you end a game session, you can click a button to add a note with the in-game date and time the session ended, as well as the real-world date and time. You can then add situational notes as necessary. This way you can start your next session exactly where you left off.

Armour Validation & Bulk

The armour validation window showing a configuration that incurs 5 bulk and an extra 5 ENC.

This one was quite difficult to implement! It doesn't seem too hard when you read the rules, but the process calls for a judgment on which article should be considered as the 'base' layer, and this isn't obvious programmatically. The solution was to try all the alternatives for each body zone and find the least restrictive ones.

The armour validation popover for an invalid armour set shown on the character sheet.

It made me add unit tests to my app with a number of edge cases. It flags invalid armour, automatically adjusts encumbrance and bulk, and applies those where required on the character sheet. In addition to the armour validation window, there are also visible cues on the character sheet, with popover with explanations.

The armour validation popover for additional encumbrance shown on the character sheet.

Rollers

I often found myself wanting to make a skill test roll for a character I was looking at in HMK Toolkit, so I added this functionality.

A skill roll test for the Folklore test. We see that this skill has a +3 bonus from a blessing. The roll was 69, making this a failure. If this was a Skill Value test the resulting SV would be 5.

In turn, this required me to have the correct EML for all skills, including modifiers like blessing, fatigue, encumbrance, perception penalties, and impairments. While I made these, I added a visual indicator when a perception penalty is applied because of armour.

A skill roll test for the Perception test. We see that this skill has a -15 penalty from armour. The roll was 17, making this a success. If this was a Skill Value test the resulting SV would be 5.

After doing the skills on the first page, I did the combat skills on the second page, with rollers for attack, block and counterstrike, as well as dodge. Then I added a shock roll and a shock reroll, an initiative and an awareness test (so you don't have to switch to the first page to make those).

An attack roll with a critical success showing two stars.

Impairment

A skill roll test for the Folklore test. We see that this skill has a +3 bonus from a blessing. The roll was 69, making this a failure. If this was a Skill Value test the resulting SV would be 5.

This was also a major endeavour, in particular because when I originally made the character model, I naively only included a single integer for impairment when there are actually 7 different impairment values... So I had to be creative and I used an encoder/decoder to use a single integer to manage all those values.

The other challenge was fitting this into the interface without disrupting the layout too much. In the end I put the controls in the header and display the impairments in the body zones. Impairments are applied to all skills EML according to the rules for impaired tests.

Primary Hand and 2-H Use

Once you have an impairment, which can apply to one arm but not the other, the natural next step is to be able to change your weapon from one hand to the other. And once you've made that, why not put the option to use a weapon two-handed? This wasn't hard to code, but the logic of implementing this and making sure all the other parts followed along made me lose a few neurons, for sure.

The Combat Gear section showing changing from using the right hand as the primary hand (with the shield used in the left hand) to using the left hand as a primary hand.

If you use your "good hand" as a primary hand, that indicator is green, otherwise it's red. In the example above, the character is right-handed. Using a weapon in your off-hand increases the HFT, and there is a minimum off-hand penalty, except for shields used in a block or press attack. When you use a weapon two-handed, the HFT is reduced by 5, and in some circumstances the impact is increased. All of these, and the effects of various impairments, are taken into account.

Armour Set Builder

The body location table for the 'Clothing' armour set.

I've included the rulebook armour suits in HMK Toolkit since the beginning. I also provided a way to view a body location table for any of these armour suits, which is very useful in melee combat, but there was no way to create new sets of armour articles. Until now. Now, you can access the armour set and view the contents, making any necessary modifications.

The body location table for the 'Clothing' armour set with the editor open.

The armour suits from the rulebook cannot be edited, but you can duplicate them and start from there to make modifications, or you can start from scratch with a new set. You can drag and drop articles and see the resulting body location table update in real time, including armour validation, encumbrance, bulk, etc.

A copy of the 'Clothing' armour set with the editor open and the breeches replaced with leggings.

Non-Player Characters

The NPC panel for Trivis.

Another thing that was included but that you couldn't edit was non-player characters. These are constructed as explained on page 363 of the rulebook. They include occupation skills and combat skills, one of which is reserved for the armour suit worn. HMK Toolkit displays a body location table automatically if it finds a matching armour set.

It's now possible to create and edit any NPCs. And since you can now also create armour sets, you can have them equipped with specific kit.

The edit NPC panel for Trivis.

I’ve added a few details to the rulebook’s non-player character block:

  • a role-playing cue: helps the GM get into this NPC.
  • Move and weapon length information: because you can add NPCs to the IR Tracker (see below).

I also have the habit of including the skills to be tested to find hidden details of NPCs.

NPCs on the IR Tracker

IR Tracker with the add NPC menu open.

You can now add any NPC to the IR Tracker. This automatically adds a GM note with the combat skills information for that NPC.

The edit NPC panel for Trivis.

I also added a simple dice roller with a history while I was at it.

The edit NPC panel for Trivis.

I'm slowly building a searchable glossary. For example I can never remember religious titles. What's an Ebasethe again?

The result of a search for ebasethe.

And it's cross-linked so if you press a button, you are taken to a related glossary entry.

The result of a search for alchemy, with the 'assit' entry selected.

Subsystems

I made myself a couple of tools that display an overview of a subsystem with a selected character's pertinent information. The first of which is persuasion. You select a character, and it shows all his persuasion skills with the two best skills highlighted, alongside the rules for persuasion.

persuasion panel with Babr selected.

The second one is for written works. This shows all the languages and scripts skills for the selected character, as well as the EML for reading and scribing, which use one or two secondary modifiers. Since there are a lot of combinations, this saves time at the table and gives a good overview of the various rules, some of which are under language, while others are under written works in the rulebook.

The written work panel with Elben selected.

Shèk-Pvâr Characters

I also made a tool for Shèk-Pvâr characters, to make their spell selection easier. It lists the ML and ARP cost for each convocation and complexity. It gives assisted and unassisted research capabilities, tracks ARP spent, adjusts ARP costs depending on chantry quality for assisted research, and gives various details pertinent to Shèk-Pvâr characters. When you made your spell selection, you can press a button and your character sheet is updated with the spell selection you've just made.

The spell selection window for Shèk-Pvâr characters.

Other improvements

Other improvements include better handling of long skill names (in the case of specialties), long occupation, or long melee weapon names. I also highlight total fatigue if it is greater than zero. And I added a popover with fatigue recovery times.

The fatigue recovery popover.

A list of injury special effects popover.

The injury special effects popover.

The effects of the shock states.

The shock states popover.

A "gear value" detail popover that also displays the character's wealth score.

The gear value details popover.

A popover detailing the weight of the character's possessions. This displays the list of weapons and the total weight of each container, including the backpack's special half rule.

The gear weight detail popover.

Better handling when a character carries more than one of the same weapon, for example throwing daggers (tabûris) or javelins. And this also handles names that become too long with a quantity, as shown for the javelin below.

The melee weapons section showing two tabûris, written as 'Tabûri (X2)'.

The melee weapons section showing two bodkin javelins, written as 'Javelin (Bo.) (X2)'.

I can now also handle magical weapons and armour by using the 'traits' system. This magical broadsword is an example.

A magical weapon with a Charm and an Anvil enchantment.

I also implemented a modifier key that shows skills EMLs on the first page of the character sheet. This highlights skills that have an EML different than their ML. Elben here has a blessing to Folklore and is encumbered (which affects skills with AGL in their SB).

The skill section of the character sheet, with ML changing into EML when the option key is pressed.

And a number of other small details, bug fixes, and small tweaks.

I am quite pleased with version 1.1.6. I now use it daily to prepare for the first adventure in my upcoming campaign. This is the driving motivator for all these tweaks and improvements. As I see friction points, I implement a solution to reduce them and make my life easier in general!

Future improvements might include editors for armour articles, melee and missile weapons, as well as missiles. And perhaps a trait editor. Something to enable the creation of magical items, perhaps.