When you look closely at the Shadowrun core rules, you find a lot of items that exist in variants, where the stats are different enough that it cannot be expressed using a rating. Some examples:
Bone Lacing comes in Plastic, Aluminium and Titanium
Low Light Vision exists as an accessory for cameras, contacts … or as a cybereye accessory or a bodyware for direct implant. The effect and name is the same in all cases, while availability and price differs.
Cyberarms come in Full, Half and Hand - each in obvious or synthetic quality.
Originally in Genesis each variant was modelled as a standalone item. This changed for Commlink.
Structure
<item id="main_id"> ... shared attributes or attributes for default item ... <variant id="variant_id_1"> .. attributes ... </variant> <variant id="variant_id_2"> .. attributes ... </variant> </item>
The code above defines an item with two optional variants. The user can choose a variant, but he doesn’t need to. Effectively the item comes in three versions (standard and 2 variants)
<item id="main_id" reqVariant="true"> ... shared attributes or attributes for default item ... <variant id="variant_id_1"> .. attributes ... </variant> <variant id="variant_id_2"> .. attributes ... </variant> </item>
The code above defines an item without a standard item and two variants, from which selecting one is mandatory.
Attributes
The order on which attributes are defined is
Use shortcuts of the main item
Use <attrdef> lines of the main item
Use shortcuts of the variant
Use <attrdef> lines of the variant
This means that attributes defined in a variant overwrite those of the main item. It also means that attributes shared in all variants can be defined in a main item.
Allowed elements in a variant
<variant id="mandatoryID" mode="" modonly=""> <usage /> <usage /> ... <attrdef /> <attrdef /> ... <flags> </flags> <alternate /> <alternate /> ... </variant>
mode
provides an additional hint for Commlink how the variant shall be treated. Allowed values are:NORMAL - Item is carried (or whatever is normal for the item)
EMBEDDED - Used as an accessory
BODYWARE - Directly implanted in the body
modonly
means that the user cannot select the item - it may be only created by modifications.
I am not sure I will keep the mode attribute. It may be sufficient to work with <usage> instead, since they express the same.
Localization of variants
item.main_id=Cyberarm item.main_id.page= item.main_id.wifi= item.main_id.desc= item.main_id.variant.variant_id_1=Full-Arm, obvious item.main_id.variant.variant_id_1.page= item.main_id.variant.variant_id_1.desc= item.main_id.variant.variant_id_2= item.main_id.variant.variant_id_2.page= item.main_id.variant.variant_id_2.desc=
You don’t need to add .page or .desc versions - if they are not present, the main items data is used.
The name of a variant is usually the name of the main item with the variant name in brackets. E.g. “Cyberarm (Full-Arm, obvious)”
Examples
Bone Lacing - different statted versions of the same item
<item id="bone_lacing" type="CYBERWARE" subtype="CYBER_BODYWARE" reqVariant="y"> <flags><flag>AUGMENTATION</flag></flags> <modifications> <itemmod type="RULE" ref="UNARMED_DAMAGE_IS_PHYSICAL" apply="CHARACTER"/> </modifications> <variant id="plastic"> <usage mode="IMPLANTED" value="0.5"/> <attrdef id="AVAILABILITY" value="3L"/> <attrdef id="PRICE" value="8000"/> <modifications> <valmod type="ATTRIBUTE" ref="RESIST_DAMAGE" value="1" apply="CHARACTER"/> <valmod type="ATTRIBUTE" ref="DEFENSE_RATING_PHYSICAL" value="1" apply="CHARACTER"/> <valmod type="ITEM_ATTRIBUTE" ref="DAMAGE" value="1" apply="UNARMED"/> <valmod type="ITEM_ATTRIBUTE" ref="ATTACK_RATING" value="1,,,," apply="UNARMED"/> </modifications> </variant> <variant id="aluminium"> <usage mode="IMPLANTED" value="1.0"/> <attrdef id="AVAILABILITY" value="4L"/> <attrdef id="PRICE" value="18000"/> <modifications> <valmod type="ATTRIBUTE" ref="RESIST_DAMAGE" value="2" apply="CHARACTER"/> <valmod type="ATTRIBUTE" ref="DEFENSE_RATING_PHYSICAL" value="1" apply="CHARACTER"/> <valmod type="ITEM_ATTRIBUTE" ref="DAMAGE" value="2" apply="UNARMED"/> <valmod type="ITEM_ATTRIBUTE" ref="ATTACK_RATING" value="2,,,," apply="UNARMED"/> </modifications> </variant> <variant id="titanium"> <usage mode="IMPLANTED" value="1.5"/> <attrdef id="AVAILABILITY" value="6L"/> <attrdef id="PRICE" value="30000"/> <modifications> <valmod type="ATTRIBUTE" ref="RESIST_DAMAGE" value="2" apply="CHARACTER"/> <valmod type="ATTRIBUTE" ref="DEFENSE_RATING_PHYSICAL" value="2" apply="CHARACTER"/> <valmod type="ITEM_ATTRIBUTE" ref="DAMAGE" value="2" apply="UNARMED"/> <valmod type="ITEM_ATTRIBUTE" ref="ATTACK_RATING" value="3,,,," apply="UNARMED"/> </modifications> </variant> </item>
Flare Compensation - exists as an optical accessory, as well as cyberware for capacity or karma
<item avail="1" price="250" id="flare_compensation" type="ACCESSORY" subtype="VISION_ENHANCEMENT"> <!-- main item: Visual enhancement --> <usage mode="EMBEDDED" slot="OPTICAL" value="1"/> <usage mode="EMBEDDED" slot="HELMET_ACCESSORY" value="1"/> <!-- Eyeware variants differ --> <variant id="cybereye"> <usage mode="EMBEDDED" slot="CYBEREYE_IMPLANT" value="1"/> <attrdef id="PRICE" value="1000"/> <attrdef id="AVAILABILITY" value="2"/> <flags><flag>AUGMENTATION</flag></flags> </variant> <variant id="bodyware" mode="BODYWARE"> <usage mode="IMPLANTED" /> <attrdef id="ITEMTYPE" value="CYBERWARE"/> <attrdef id="PRICE" value="1000"/> <attrdef id="AVAILABILITY" value="2"/> <attrdef id="ESSENCECOST" value="0.1"/> <flags><flag>AUGMENTATION</flag></flags> </variant> <modifications> <checkmod type="SKILL" ref="perception" value="1" what="EDGE" cond="true"/> </modifications> </item>