Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
modding:xml:systemmap [2017/02/04 00:26] – [TopologyProcessor] 0xabcdef | modding:xml:systemmap [2017/02/04 01:15] – [TopologyProcessor] Recursion 0xabcdef |
---|
| |
===== TopologyProcessor ===== | ===== TopologyProcessor ===== |
When the entire topology has been created, we iterate over all <TopologyProcessor> nodes in order and apply them to the topology. A TopologyProcessor is an element that can assign additional attributes to existing nodes and a SystemType to nodes that do not already have one. There can be multiple instances of a TopologyProcessor in a SystemMap. Additionally, TopologyProcessors are recursive in that the <Group> and <Processor> elements will act as TopologyProcessors of their own, using the nodes filtered by their parent. Any <System> element can have either an **attributes** attribute or a <Table> element containing multiple <System> subelements, each with their own **attributes** and **chance** attributes. | When the entire topology has been created, we iterate over all <TopologyProcessor> nodes in order and apply them to the topology. A TopologyProcessor is an element that can assign additional attributes to existing nodes and a SystemType to nodes that do not already have one. There can be multiple instances of a TopologyProcessor in a SystemMap. Additionally, TopologyProcessors are recursive in that the <Group>, <Processor>, and any element with a <System> subelement will act as a TopologyProcessor of its own, using the nodes filtered by the parent. |
* One <Criteria> element to determine which nodes the processor applies to. The processor affects all nodes under its criteria. | * Zero or one <Criteria>. Determines criteria (in addition to any pre-existing criteria) for determining which nodes the processor applies to. If there is no <Criteria>, all nodes are affected. This works for the <TopologyProcessor>, which will process every single node on the map. |
* An <Attributes> element that filters nodes by their attributes | * An <Attributes> element that filters nodes by their attributes |
* **criteria=** Contains the attributes to filter with. | * **criteria=** Contains the attributes to filter with. |
* "+{attribute};" means that nodes must have {attribute}. "+systemType:0;" specifies nodes without a <SystemType> | * **"*"** specifies any node that already satisfies the parent criteria. |
* "-{attribute};" means that nodes must not have {attribute} | * **"+{attribute};"** means that nodes must have {attribute}. "+systemType:0;" specifies nodes without a <SystemType> |
* Zero or more <System> | * **"-{attribute};"** means that nodes must not have {attribute} |
* **attributes=** | * Zero or one <System>. |
* Zero or more <Group>. They can process nodes that satisfy additional criteria | * **name=** ????? |
* One <Criteria> | * **attributes=** The attributes to apply to the affected nodes. |
* **criteria=** | * **unid=** The UNID of the new SystemType to assign to the affected nodes. |
* "+{attribute}" | * Zero or one <Table>. Only works if none of the above attributes are defined in the element. |
* "-{attribute}" | * Zero or more <Group>. Same as <TopologyProcessor>. |
* One <System> | |
* One <Table> | |
* One or more <System> | |
* **chance=** | |
* **unid=** | |
* Zero or more <ConquerNodes>. In this processor category, "Conquerors" take turns attempting to "occupy" every eligible node. Each node can be taken by only one Conqueror. Every turn, a conqueror first attempts to create one new seed, then each of its seeds attempt to expand into adjacent nodes. | * Zero or more <ConquerNodes>. In this processor category, "Conquerors" take turns attempting to "occupy" every eligible node. Each node can be taken by only one Conqueror. Every turn, a conqueror first attempts to create one new seed, then each of its seeds attempt to expand into adjacent nodes. |
* One or more <Conqueror> | * One or more <Conqueror> |
* **weight=** The percent chance that a node will be conquered by the seed | * **weight=** The percent chance that a node will be conquered by the seed |
* **successChance=** The percent chance that a conqueror will be successful in attempting to create a seed in a node. | * **successChance=** The percent chance that a conqueror will be successful in attempting to create a seed in a node. |
* One <Processor>, which may act as a <TopologyProcessor> in its own((Please Verify)) | * One <Processor>. Same as <TopologyProcessor> |
* One <System> | |
* **attributes=** The attributes to add to the affected nodes | |
* Zero or more <DistributeNodes> | * Zero or more <DistributeNodes> |
* **nodeCount=** | * **nodeCount=** |
* One <Criteria> | * One <Criteria> |
* Zero or more <FillNodes> | * Zero or more <FillNodes>. Processes every eligible node in random order. |
* <Attributes> | * <Attributes> |
* <Criteria> | * <Criteria> |
* **nodeCount=** | * **nodeCount=** |
* One <System> | * One <System> |
* **attributes=** The attributes to add to the affected nodes | |
* Zero or more <RandomPoints> | * Zero or more <RandomPoints> |
| * Zero or more <Table> |
| * Zero or one <Criteria> |
| * Zero or more <System> |
| * **chance=** The chance that the **attributes** and **unid** of this element will be applied to the affected nodes. |