I was bored… posting here since I can’t upload images to the wiki. =(

Made with the following function, called from main.cpp:
void write_trait_dot() {
std::ofstream fl;
fl.open ("traits.dot");
fl << "digraph traits {\n";
for(int i=0; i<PF_MAX2; i++) {
bool has_edge = false;
mutation_branch& branch = g->mutation_data[i];
if(branch.prereqs.size()) {
has_edge = true;
} else {
for(int h=0; h<PF_MAX2; h++) {
mutation_branch& branch2 = g->mutation_data[h];
for(int j=0; j<branch2.prereqs.size(); j++) {
if(branch2.prereqs[j] == i) {
has_edge = true;
}
}
}
}
if(has_edge) {
fl << i << " [label=\"" << traits[i].name << "\"]\n";
}
}
for(int i=0; i<PF_MAX2; i++) {
mutation_branch& branch = g->mutation_data[i];
for(int j=0; j<branch.prereqs.size(); j++) {
fl << branch.prereqs[j] << "->" << i << " [label=\"\", fontcolor=darkgreen]\n";
}
}
fl << "}";
fl.close();
}
And then running dot over it:
dot -Tpng traits.dot > traits.png