Tactical Console (Savage)

From HLKitWiki
Jump to: navigation, search

Context: HL KitAuthoring Examples … Savage Worlds Walk-Through 

Overview

With the Dashboard operating smoothly, we'll shift our focus to the Tactical Console, or TacCon for short. All the behaviors of the TacCon are orchestrated within the file "form_taccon.dat". In general, the only facet of the TacCon that you'll need to worry about as an author is the contents of the "tacPick" template, which controls the information shown for each individual actor. All other TacCon behaviors can be left in their default state, since those behaviors will be the same for just about every game system. This is true for Savage Worlds, so we'll only focus on the "tacPick" template below.

Orientation

The contents of the "tacPick" template are organized into a number of regions. We'll start with a brief orientation to those regions, after which we'll begin revising each of those regions to suit our purposes.

Flanking the template on either side are character portraits. The image is placed on the left for actors that are allies of the PCs. Actors that are NPCs and/or established enemies of the PCs are have their portraits shown on the right. This provides an immediate visual cue for the user regarding ally versus enemy. As such, you should probably not change this behavior without good reason.

Moving from left to right, the next region of the template provides general information about the actor. This area is similar to the Dashboard, as it displays the actor's name and a small number of the most important details for the actor.

At the right edge of this region, two buttons are shown. One allows you to switch directly to an actor within the main window, just like is done on the Dashboard, while the other brings up a form where you can apply damage and other effects to the actor.

To the right of the buttons is a column of traits. The traits shown here are those that are most likely to be utilized by the user during play. This ensures that those traits are always visible for reference.

A large region in the center holds an assortment of details about the actor. The contents of this region will be different, depending on whether the actor is in combat or out of combat. During combat, equipped weapons and other combat-related details can be shown for quick reference by the user. When out of combat, other information can be shown, such as a summary of important skills that are commonly used.

In the upper right, a row of mouse-over icons is provided. These icons are identical to the ones utilized on the Dashboard. They are shown in the same order and are hooked up to the same procedures, so they will offer the same information to the user.

Beneath the mouse-over icons, status information about the actor is presented when not in combat.

Once combat begins, a number of changes take place. A region is reserved on the far left to indicate import state about the actor, such as whether a character has not yet acted in the combat. Next to this region, a set of three buttons is shown, providing control over the combat actions of the actor. The status information shown on the far right is moved to the line across the bottom of the template. Where the status was shown, an incrementer appears for the purpose of controlling initiatives. And at the far right edge, a set of buttons is shown for moving the actor up and down within the combat sequence.

Basic Actor Information

The region on the left for basic actor information serves much the same purpose as on the Dashboard. The key difference is that the TacCon provides a bit more space. This means that we ought to be able to include all five pieces of information that we identified when working on the Dashboard. These pieces are the Health, Parry, Toughness, Power Points, and Bennies.

There are basically two lines of space available to us. We'll use the same compact format for the Health that we created for the Dashboard. We'll put the Parry and Toughness traits on the same line with the Health. On the other line, we'll place the Power Points and Bennies, showing the current and maximum values for each.

There are two labels portals for displaying basic character information. They are named "status1" and "status2", with "status1" appearing above "status2". We'll put the Health on the top line. For the second line, we need to only show power points if the character actually possesses an arcane background. This results in the following two revised portals and Label scripts.

<portal
  id="status1"
  style="lblSmlLeft">
  <label
    ismultiline="yes">
    <labeltext><![CDATA[
      ~start with the health status
      @text = "{size 30}Hlth: {size 36}" & field[acDmgTac].text

      ~append the parry trait
      @text &= "{horz 10}{size 30}Pr: {size 36}" & #trait[trParry]

      ~append the toughness trait
      @text &= "{horz 6}{size 30}To: {size 36}" & #trait[trTough]
      ]]></labeltext>
    </label>
  </portal>

<portal
  id="status2"
  style="lblSmlLeft">
  <label
    ismultiline="yes">
    <labeltext><![CDATA[
      ~start with the power points status (if any)
      if (hero.tagis[Arcane.?] <> 0) then
        @text = "{size 30}PP: {size 36}" & herofield[acPPSumm].text
        @text &= "{horz 12}"
        endif

      ~add the bennies
      @text &= "{size 30}Ben: {size 36}" & hero.child[trkBennies].field[trkUser].text
      ]]></labeltext>
    </label>
  </portal>

Important Traits

The column of traits to the right of the basic character information is managed via the "traits" portal. All of the traits that should appear in the list are identified by the "DashTacCon.Traits" tag. There is room to show up to three different traits in this portal. Since there are four derived traits in Savage Worlds, we need to decide which one to include in the list. Since we already show Parry and Toughness in the basic information region, we really don't need to duplicate them here, so we only include Pace and Charisma. Open the file "thing_traits.dat" and make sure that these two derived traits possess the tag.

Non-Combat Content

The information shown in the center changes based on whether the party is in combat or not. When not in combat, the region should show useful facets of the character that a GM will refer to during play. For example, the character's skills, or perhaps just the most commonly used skills in a game where all characters possess a large number of skills.

In Savage Worlds, characters purchase their skills, so we can simply show all of the skills for each character. The region is controlled via the "peace" portal, which uses a Label script to synthesize its contents. All of the items shown in the region are identified by possessing the "DashTacCon.NonCombat" tag.

Since we copied our things when defining them, many of the standard skills are assigned the tag, while others are not. In addition, special skills like the arcane skills are not being assigned the tag, which means they are not included in the list. The arcane skills are just as important and should be displayed. We probably can't fit all skills in the available space, so we need to choose the skills to include. So let's go through all the skills and decide which ones should (or shouldn't) be included in the list. Be sure to check all skills, including those associated with arcane background and powers. Any skill to be shown must be assigned the tag.

Once we've identified the appropriate skills, we need to review the output being generated. Everything looks good, so our non-combat content is ready to go.

Combat Content

Once combat begins, the skills shown in the center region are swapped out for information that is more appropriate during combat. More specifically, the first three weapons possessed by the character are shown, with any equipped weapon(s) being shown before unequipped weapons. For each weapon, the attack roll and damage are shown. This is handled by the "weapon" portal, which uses a Label script to synthesize its output.

The default output provided by the Skeleton files is perfectly reasonable, so there really isn't anything we need to do here.

Combat Actions

To the left of the basic character information, a number of buttons will appear during combat. These buttons allow you to control whether a character has acted during combat. The Skeleton files provide support for three different actions, since that's common for many of the major game systems. The actions supported are "act", "delay", and "wait".

Every game system makes use of the "act" actions. This applies whenever the character takes his turn during combat. The other two actions may or may not apply to a given game system, and they may need to be adapted in some way. The d20 System has the concepts of "readying" an action and "holding" an action. The World of Darkness system has distinct concepts of delaying an action until later in the combat turn and delaying an action until the following turn.

In the case of Savage Worlds, though, there is only the "hold" option. Since initiative begins anew every combat round, there is no need for anything more than a simple "hold" action. This "hold" action can persist through the following rounds if the player chooses, so we need to track that state. We can easily do so by setting the existing "abandon" flag for any character that uses this action.

The "hold" option is probably best represented visually by the button that looks like "pause" on a VCR. Consequently, we'll use the "wait" portal within the "tacPick" template for the "hold" action. The "delay" portal can either be deleted or simply hidden. It's a little more work to delete it, but we'll go ahead and do that. The deletion requires that we remove all references to the portal within the Position script. This entails also positioning the lone "wait" portal properly, with the "next" portal relative to that. When in combat, we must adjust the left edge by the "next" portal instead of the "wait" portal, too.

After revising the visuals, we also need to tweak the behaviors slightly. The Trigger script for the "wait" portal does exactly what we need, which is to set the field as an indicator and defer action for the character. However, the Trigger script for the "actnow" portal needs to be revised. Since there is only the one "hold" action, clicking this portal always acts after holding, so we must always reset the "abandon" field to zero. The resulting Trigger script should look like below.

herofield[acAbandon].value = 0
perform hero.combatact

The final thing we need to do is modify the MouseInfo scripts and/or "tiptext" attributes for the various portals. The behaviors are different, so we should explain the proper behaviors for Savage Worlds.

Initiative Handling

During combat, an increment appears on the far right where you can manipulate the initiative for each character. For most game systems, initiative is a relatively quick and painless process. However, Savage Worlds uses a very different approach to initiative - a deck of cards. The Kit can support this non-standard mechanism, but it's not nearly as easy as a more traditional initiative. Since integrating the proper initiative for Savage Worlds will entail quite a few steps, we'll cover the initiative in a completely separate entry in this walk-through.

Damage and Other Actor Manipulations

To the lower right of the basic character information, a button appears with a skull on it. Clicking this button brings up a form where various in-play adjustments can be made directly to the character. This includes damage, resource tracking, activation of abilities, and even the tracking of combat notes.

The contents of this form are controlled in the file "form_manipulate.dat". However, it's unlikely you'll need to make any adjustments. The form utilizes the same layout that is defined for use on the "In-Play" tab. As such, any changes or refinements you make to the "In-Play" tab are automatically incorporated into this form. The only time you'll need to make changes is when you want to do something different for manipulation through the TacCon that doesn't appear on the "In-Play" tab. For our purposes, the form has everything we need on it, so there's nothing for us to do.