132def journey_chart(runs, refs):
133 L = [
"```mermaid",
"flowchart LR"]
134 items = list(runs.items())
135 for n, ((_game, name, _slot), rows)
in enumerate(items):
137 nums = sorted({refs.get(r[
"path"], 0)
for r
in rows})
138 span = f
"^{nums[0]}" if len(nums) == 1
else f
"^{nums[0]}–^{nums[-1]}"
140 f
"{len(rows)} save{'' if len(rows) == 1 else 's'} · {span}",
141 f
"{rank(last)} · {hms(last['play_time'])}",
145 known = last.get(
"carried_bosses")
or last[
"bosses"]
147 got.append(plural(len(known),
"boss"))
149 got.append(
"FINISHED: " +
" · ".join(sorted(last[
"endings"])))
150 body =
label([
"{} — {}".format(last[
"title"], name)] + got)
151 L.append(f
' r{n}["{body}"]')
152 for n
in range(1, len(items)):
153 L.append(f
" r{n - 1} --> r{n}")