Jump to content

- - - - -

3Rd Party Tool Developers: Omni Mech Xml Formats


No replies to this topic

#1 Kyle Lawrence

    Staff

  • 24 posts

Posted 23 May 2014 - 03:24 PM

Hello again MechWarriors!

In our ongoing efforts to better support our 3rd party tool community. We wanted to give you a heads-up on the most prominent XML formats/changes that will accompany our upcoming OmniMech features.




Internals are now defined as items.

Libs\Items\Modules\Internals.xml
<ModuleList>
  <Internal id="[arm id]" name="LowerArmActuator" CType="CLowerArmActuatorStats">
	<Loc nameTag="[nametag]" descTag="[desc tag]" iconTag="[icon]"/>
	<ModuleStats slots="[slots]" tons="[tons]" health="[health]" ToggleType="LowerArmActuator"/>
  </Internal>
  ...
The MDF now identify them by their item id:
<Internal ItemID="[arm id]" />

(side note: fixed armor and structure slots will be defined as internal items as well)


Omni pods are defined first as items.

Libs\Items\OmniPods.xml
<OmniPodList>
  <OmniPod id="[omnipod id]" chassis="[chassis]" set="[set1]" component="[component]" />
  <OmniPod id="[some other id]" chassis="[chassis]" set="[set1]" component="[component]" />
  ...
</OmniPodList>


Omni pods are described in their chassis specific files (like hardpoints).

Objects\Mechs\[chassis]\[chassis]-omnipods.xml

OmniPods are described in sets of components. These components are formatted like MDF components. They may have internals, fixed equipment (explained later), and hardpoints. They also define their own OmniPod specific quirks.
<OmniPods>
  <Set name="[set1]">
	<component name="[component]">
	  <Quirk name="[name]" value="[value]" />
	  <Hardpoint ID="0" Type="0" lookAim="0" />
	</component>
	<component name="[component]">
	  <Quirk name="[name]" value="[value]" />
	  <Hardpoint ID="1" Type="2" lookAim="0" />
	</component>
	...
  </Set>
  <Set name="[set2]">
	<component name="[component]">
	  <Quirk name="[name]" value="[value]" />
	  <Hardpoint ID="2" Type="1" lookAim="0" />
	</component>
	<component name="[component]">
	  <Quirk name="[name]" value="[value]" />
	  <Hardpoint ID="3" Type="4" lookAim="0" />
	</component>
	...
  </Set>
  ...
</OmniPods>


The MDF denotes whether a component can equip an OmniPod and, if said Pod is fixed(irremovable), which Pod is attached.

Objects\Mechs\[chassis]\[omnimech].mdf

MDFs also denote Fixed equipment, like engines, heatsinks, weapons, etc. Fixed armor/structure slots are defined in the MDF as internals. Mech MDFs may also define default quirks in a QuirkList.

Another change deals with the ability to "toggle" certain actuators. You'll see the arm in the second component has a "Toggleable" flag.
<Component Name="[component]" Slots="[slots]" HP="[hitpoints]" RenderFlag="[renderflag]" OmniSlot="1" OmniPod="[some other id]">
  <Internal ItemID="[id]"/>	<!--Gyro-->
  <Internal ItemID="[id]"/> <!--Fixed Structure Slot-->
  <Fixed ItemID="[id]"/>	<!--XL Engine-->
  <Fixed ItemID="[id]"/>	<!--Double Heat Sink-->
  <Fixed ItemID="[id]"/>	<!--Double Heat Sink-->
  <Fixed ItemID="[id]"/>	<!--Double Heat Sink-->
  <Piece><Attachment AName="[attachment]"/></Piece>
</Component>
	
<Component Name="left_arm" ... OmniSlot="1">
  <Internal ItemID="[id]"/>	<!--Shoulder-->
  <Internal ItemID="[id]"/>	<!--Upper Arm Actuator-->
  <Internal ItemID="[arm id]" Toggleable="1"/>   <!--Lower Arm Actuator-->
  <Internal ItemID="[id]"/>	<!--Fixed Armor Slot-->
  <Piece><Attachment AName="[clavicle]" permanentPiece="1"/></Piece>
  <Piece><Attachment AName="[upper arm]"/></Piece>
  <Piece><Attachment AName="[lower arm]" ToggleModule="[arm id]"/></Piece>
</Component>
...
 
<QuirkList>
  <Quirk name="[name]" value="[value]" />
</QuirkList>


Loadouts denote the default OmniPod equipped to a component.

Libs\MechLoadout\[OmniMech].xml
<component Name="[component]" Armor="[armor]" OmniPod="[omnipod id]"/>





As an aside, upgrade types have had their type name moved to their CType.

Libs\Items\UpgradeTypes\UpgradeTypes.xml
<UpgradeType id="2812" name="ClanFerroFibrousArmorType" CType="Armor">
  <Loc nameTag="" descTag="" shortNameTag="" iconTag=""/>
  <ArmorTypeStats armorPerTon="" containerId="[armor type id]"/>
  <SlotUsage slots="" fixedSlotItem="[internal id]"/>
</UpgradeType>


Thanks go out again to our dedicated 3rd party tool community for all their hard work!

I will do my best to update you as any other changes come forward. I'll also mention that we're working on the idea of a public facing API for our game data (More details to follow later.)

Your Friendly Neighborhood Tools Engineer,
-Kyle Lawrence


Please leave your feedback about this update in the Official Thread. Thanks!





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users