Adventure Extensions are an easy to learn process, which I am going to walk you through in this little introduction to the new format.
(As of the time of this writing, Adventure Extensions are still experiencing some bug that prevents their use in extensions for the unpacked version of the game. 099b should correct this issue. Get a jump on making your adventures by unpacking transcendence and starting to build some new networks! How to Unpack XML)
Here is a sample adventure extension that shows the minimum requirements:
Code: Select all
<?xml version="1.0" ?>
<TranscendenceAdventure
UNID= "0xDDED000F"
version= "0.99"
>
<AdventureDesc
UNID= "@1"
name= "Sample Adventure"
backgroundID= ""
>
</AdventureDesc>
<SystemTopology>
<Node ID="SE" rootNode="true">
<System name="Eridani" level="1">
<System UNID="&ssStartonEridani;"/>
</System>
<StarGates>
<StarGate Name="Outbound" DestID="EndGame"/>
</StarGates>
</Node>
<Node ID="EndGame"
endGame="true"
endGameReason="escaped"
epitaph="escaped the Sample Adventure"
>
</Node>
</SystemTopology>
</TranscendenceAdventure>
So that is the structure of a simple adventure extension.
Let's take a look at the sections in more detail next.
The opening and closing elements:
Code: Select all
<TranscendenceAdventure
UNID= "0xDDED000F"
version= "0.99"
>
</TranscendenceAdventure>
The new topology system for the main transcendence xml and for any adventure extensions uses two elements. George explains them at the mod section of the main website here. The first element is the adventure description:
Code: Select all
<AdventureDesc
UNID= "@1"
name= "Sample Adventure"
backgroundID= ""
>
</AdventureDesc>
Every adventure extension is required to have this element.
The UNID is a little strange there, isn't it? Well, that one is from the sample that George gave me, and seems to work well so I leave it alone. I am not sure what other values it will take- it doesn't take @2, for instance.
The next required element in an adventure extension is the actual network container:
Code: Select all
<SystemTopology>
</SystemTopology>
Code: Select all
<Node ID="SE" rootNode="true">
<System name="Eridani" level="1">
<System UNID="&ssStartonEridani;"/>
</System>
<StarGates>
<StarGate Name="Outbound" DestID="EndGame"/>
</StarGates>
</Node>
Nodes must each have a unique ID. This is used as a sort of pointer to the system, regardless of the name of the system. In script we often refer to the nodeID as a way to identify the system we are targeting.
Nodes must have a <System> element which defines a name, a level, and a UNID for the star system. You can place a <table> in the system element to create a random selection:
Code: Select all
<System
level= "1"
attributes= "newBeyond"
variant= "commonwealth"
>
<Table>
<System chance="30" name="Groombridge" UNID="&ssEarthSpaceStandard;"/>
<System chance="40" name="Lalande" UNID="&ssEarthSpaceRedDwarf;"/>
<System chance="30" name="5 Indi" UNID="&ssEarthSpaceAsteroids;"/>
</Table>
</System>
Be sure that the chances all add up to 100 if you are using a table in the system element. You can use the tables to do many different things- but I have yet to test if attributes can be placed there to create randomly selected system attributes- I will check on that soon.
Nodes also must have a stargate element:
Code: Select all
<StarGates>
<StarGate Name="Outbound" DestID="[nodeID]" DestGate="[gateID]"/>
</StarGates>
Name of the gate.
DestID to link to.
DestGate to target.
This defines the links to other nodes that the system has. In transcendence there are two types of gates: Inbound and Outbound. Gate names can be changed, but that is a more advanced subject. For now, remember that every system UNID in the game except special cases like Eridani, Elysium, and Huaramarca have an inbound and an outbound gate placed in the system type definition (which is what the system UNID in the system element of the node refers to).
The Stargates element can also take the <table> element-
Code: Select all
<Table>
<StarGate chance="50" Name="Outbound" DestID="C3A" DestGate="Inbound"/>
<StarGate chance="50" Name="Outbound" DestID="BA" DestGate="Inbound"/>
</Table>
Tables allow randomly chosen connections to be made. I have used the tables in a stargate element to create some highly complex segmented topologies in the past, and look forward to doing more in the future!
That about covers it for the basics of the Node and SystemTopology elements.
A final bit to add here is how to use adventure extensions to add regular design type elements such as items, ships, stations, and more. This is totally possible, and easy to do. As a note about adding items and other design types to the adventure extension, keep in mind that anything you add in won't be accessible from any other adventure extension- so the items are isolated in this type of extension. This makes for an interesting combination for mod extensions- you can use regular extensions for those things that you want to be generally available in any games, or make adventure specific things that will only be available in the adventure extension. (I am about 95% sure that items in an adventure extension won't be loaded in any other games, seems to be the case in all my tests)
Here's the sample adventure extension with a test item added:
Code: Select all
<?xml version="1.0" ?>
<!DOCTYPE TranscendenceExtension
[
<!ENTITY itTestItem "0xDDED4002">
]>
<TranscendenceAdventure
UNID= "0xDDED000F"
version= "0.99"
>
<ItemType UNID="&itTestItem;"
name= "Test Item"
level= "1"
value= "70"
mass= "1"
frequency= "common"
modifiers= "Info; MinorItem;"
description= "This test item is here to show how regular design types are added to an adventure extension."
>
<Image imageID="&rsItems1;" imageX="192" imageY="96" imageWidth="96" imageHeight="96"/>
</ItemType>
<AdventureDesc
UNID= "@1"
name= "Sample Adventure"
backgroundID= ""
>
</AdventureDesc>
<SystemTopology>
<Node ID="SE" rootNode="true">
<System name="Eridani" level="1">
<System UNID="&ssStartonEridani;"/>
</System>
<StarGates>
<StarGate Name="Outbound" DestID="EndGame"/>
</StarGates>
</Node>
<Node ID="EndGame"
endGame="true"
endGameReason="escaped"
epitaph="escaped the Sample Adventure"
>
</Node>
</SystemTopology>
</TranscendenceAdventure>
That's it- a simple adventure extension you can build into a sprawling, complex network filled with your heart's desire as far as transcendence gaming is concerned.