Creatures (Savage Worlds)
Context: HL Kit … Authoring Examples … Savage Worlds Walk-Through
Overview
If we want to be big help for GMs, we need to allow GMs to do more than just create NPCs. We must also let them quickly create monsters and animals.
New Character Type
Since creatures are fully defined within the rulebook, there is no substantial customization to be done, and there are definitely no rules that govern construction of creatures. Consequently, the first thing we need to do is add support for a new character type - the creature.
We currently has a field that indicates whether the character is an NPC or not. Since we'll now have three types of character, we'll change the field for more generalized use. The "acIsNPC" field can be changed to an "acCharType" field, where the value of the field can be one of three possibilities. A "zero" indicates a normal PC, a "one" indicates an NPC, and a "two" indicates a creature. The new field will look like below.
<field id="acCharType" name="Character Type" type="user" defvalue="0"> </field>
We have a tag that identifies an NPC, but we really need separate tags to indicate all three different character types. We'll assign the appropriate tag based on the field value. The new tags will be defined within the "Hero" tag group and should include the following.
<value id="PC"/> <value id="Creature"/>
The existing Eval script that identifies and NPC and sets up appropriately can be readily adapted. Instead of just recognizing an NPC, the script can recognize all three different values within the "acCharType" field. Based on the field value, the appropriate tag can be assigned to the hero, plus any other customizing of the interface. For example, the "Journal" tab is of no use for a creature. We're also going to need to either overhaul the "Edges" tab to only show racial abilities or replace it with an alternate tab. We'll assume the latter for now, which results in the following revised Eval script on the "Actor" component.
~assign a tag to indicate we're a PC, NPC, or Creature, as appropriate if (field[acCharType].value = 0) then perform hero.assign[Hero.PC] elseif (field[acCharType].value = 1) then perform hero.assign[Hero.NPC] else perform hero.assign[Hero.Creature] endif ~if this is a standard PC, there's nothing more to do if (hero.tagis[Hero.PC] <> 0) then done endif ~hide components of the interface that don't apply for NPCs and/or Creatures perform hero.assign[HideTab.advances] if (hero.tagis[Hero.Creature] <> 0) then perform hero.assign[HideTab.edges] perform hero.assign[HideTab.journal] endif ~force the starting XP field to zero in case the user has modified it trustme field[acStartXP].value = 0
Integrate Into Configure Hero Form
New Creature Component
Directly Defining Traits
General Approach
-tags instead of fields where possible for user ease
Defining Attributes
Defining Derived Traits
Defining Skills
Defining a Complete Creature
-change history tracking to "changes" to ignore values of zero
Tailoring the Interface
Separate Creature and Race Choosers
Resource Revisions
Basics and Skills Tabs
Omitting Non-Applicable Tabs
Safety Checks
Existence Tag Expressions
-existence tagexpr to auto-delete race/creature upon switch
Validation Rules
Allow User to Add Abilities
-tag to identify general abilities for re-use -allow user to specify facets of dynamic abilities that are needed (value/text)