digraph A {
node [shape=plaintext];
Weapon [shape=box];
UnitAbility [shape=box];
Unit [shape=box];
Buff [shape=box];
Effect [shape=box];
Ability [label=<
| Ability |
| Build / Morph / Train |
Other |
Research |
>];
Upgrade [shape=box];
Requirement [label=<
| Requirement |
| BuildingExists / AddOn |
Upgrade |
>];
Ability:Other -> Effect [label = "causes"];
Ability:Other -> Buff [label = "causes"];
Ability:Create -> Unit [label = "produces"];
Ability:Research -> Upgrade [label = "upgrades"];
Requirement:Building -> Unit [headport="se"];
Requirement:Upgrade -> Upgrade [headport="e"];
Unit -> Unit [label = "normal_mode", tailport="w"];
Unit -> Weapon [label = "has"];
Unit -> UnitAbility [label = "has"];
UnitAbility -> Requirement:self [label = "requires", headport="n"];
UnitAbility -> Ability:self [label = "is"];
{rank=same Unit Weapon}
{rank=same UnitAbility Requirement}
{rank=same Ability Upgrade}
}