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} }