Update Nethack partials, shortcodes, and page to properly handle ascensions 😁
This commit is contained in:
parent
d1df92aa03
commit
42a71c1ac3
7 changed files with 59 additions and 36 deletions
|
@ -1,36 +1,30 @@
|
||||||
---
|
---
|
||||||
title: "Nethack"
|
title: "Nethack"
|
||||||
description: In which I play way too much of a silly command line Rogue-like game.
|
description: In which I play way too much of a silly command line Roguelike game.
|
||||||
date: 2022-04-13T08:43:46-07:00
|
date: 2022-04-13T08:43:46-07:00
|
||||||
---
|
---
|
||||||
|
|
||||||
Every so often I get hooked on [this game][nethack]. It's a command line
|
Every so often I get hooked on [this game][nethack]. It's a command line
|
||||||
Roguelike adventure game with rules based on Dungeons & Dragons. You play a
|
[Roguelike][rl] adventure game with rules based on Dungeons & Dragons. As far as
|
||||||
character on a mission for their deity to retrieve the Amulet of Yendor from an
|
I know, it is the oldest computer game in ongoing development.
|
||||||
evil Wizard and bring it back to the surface. The game gives you very little to
|
|
||||||
go on when you start, and it teaches you almost nothing except the basic
|
|
||||||
controls. Famously, almost every item you encounter or action you can take can
|
|
||||||
go wrong in some catastrophic way and cause
|
|
||||||
{{< abbr title="Yet Another Stupid Death" >}}YASD{{</ abbr >}}.
|
|
||||||
The more you play, the more you learn, and the more you begin to understand the
|
|
||||||
risks and consequences.
|
|
||||||
|
|
||||||
In short: it's very hard, you die a lot, and it's quite easy to lose hours
|
You play a character on a mission to retrieve the Amulet of Yendor, held in the
|
||||||
delving deeper and deeper into the Dungeons of Doom, dying, and starting again.
|
deepest level of Gehennom by the evil god Moloch, and ascend to demigodhood by
|
||||||
It's also really fun.
|
offering it to your deity. You are taught nothing and given no training, and
|
||||||
|
worse: almost every monster, item, and dungeon feature can kill you if you
|
||||||
|
aren't careful. The more you play, the more you learn, and the more you begin to
|
||||||
|
understand the risks and consequences.
|
||||||
|
|
||||||
Here's my best game so far:
|
In short: it's very hard, you die a lot, and it's easy to lose hours delving
|
||||||
|
deeper and deeper into the Dungeons of Doom, dying, and starting again. It's
|
||||||
|
tons of fun.
|
||||||
|
|
||||||
{{< nethack/best_game >}}
|
Since I started keeping records, I've played {{< nethack/n >}} games, and
|
||||||
|
ascended {{< nethack/ascensions >}} of them.
|
||||||
|
|
||||||
## A Game Log
|
Here are my top 10 best games:
|
||||||
|
|
||||||
The game logs every play-through, along with a bunch of data about your
|
{{< nethack/topn 10 >}}
|
||||||
character and how you did.
|
|
||||||
|
|
||||||
Herein is a chronological accounting of my last ten descents into the Dungeons
|
|
||||||
of Doom.
|
|
||||||
|
|
||||||
{{< nethack/logfile >}}
|
|
||||||
|
|
||||||
[nethack]: https://www.nethack.org
|
[nethack]: https://www.nethack.org
|
||||||
|
[rl]: https://en.wikipedia.org/wiki/Roguelike
|
||||||
|
|
6
layouts/partials/nethack/log.html
Normal file
6
layouts/partials/nethack/log.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{{ $nethack_data := $.Site.Data.nethack.logfile }}
|
||||||
|
{{ $logfile := slice }}
|
||||||
|
{{ range $nethack_data }}
|
||||||
|
{{ $logfile = $logfile | append .logfile }}
|
||||||
|
{{ end }}
|
||||||
|
{{ return $logfile }}
|
|
@ -1,12 +1,24 @@
|
||||||
{{ $level := (cond (gt .dungeon.level.n 0) (.dungeon.level.descriptive | lower) .dungeon.level.descriptive) }}
|
{{- $cause := .death.cause -}}
|
||||||
<div>{{ if .death.cause }}🪦{{ end }}</div>
|
{{- $didAscend := eq $cause "ascended" -}}
|
||||||
|
{{- $level := (cond (gt .dungeon.level.n 0) (.dungeon.level.descriptive | lower) .dungeon.level.descriptive) -}}
|
||||||
|
<div>{{- if $didAscend -}}✨{{- else -}}🪦{{- end -}}</div>
|
||||||
<h4 class="date">{{ time.Format "January 2, 2006" .end_date }}</h4>
|
<h4 class="date">{{ time.Format "January 2, 2006" .end_date }}</h4>
|
||||||
<div class="character-descriptor">{{ .character.abbreviated }}</div>
|
<div class="character-descriptor">{{ .character.abbreviated }}</div>
|
||||||
<p>{{ .character.name }}, a {{ .character.alignment.descriptive | lower }} {{ .character.race.descriptive | lower }}
|
<p>
|
||||||
{{ .character.gender.descriptive | lower }} {{ .character.role.descriptive }},
|
{{- $name := .character.name -}}
|
||||||
died {{ if gt .death.count 1 }}for the last time{{ end }} in <span class="nobreak">{{ .dungeon.name }}</span>
|
{{- $descriptiveAlignment := .character.alignment.descriptive | lower -}}
|
||||||
|
{{- $descriptiveRace := .character.race.descriptive | lower -}}
|
||||||
|
{{- $descriptiveRole := .character.role.descriptive -}}
|
||||||
|
{{- if $didAscend -}}
|
||||||
|
{{ $name }}, a {{ $descriptiveAlignment }} {{ $descriptiveRace }} {{ $descriptiveRole }}, ascended.
|
||||||
|
{{- else -}}
|
||||||
|
{{ $name }}, a {{ $descriptiveAlignment }} {{ $descriptiveRace }} {{ $descriptiveRole }}, died
|
||||||
|
{{ if gt .death.count 1 -}}for the last time{{- end }} in
|
||||||
|
<span class="nobreak">{{ .dungeon.name }}</span>
|
||||||
on <span class="nobreak">{{ $level }}</span>.
|
on <span class="nobreak">{{ $level }}</span>.
|
||||||
She was {{ .death.cause }}.</p>
|
She was {{ .death.cause }}.
|
||||||
|
{{- end -}}
|
||||||
|
</p>
|
||||||
<table class="stats">
|
<table class="stats">
|
||||||
<tr>
|
<tr>
|
||||||
{{- $startDate := time.Format "January, 02 2006" .start_date -}}
|
{{- $startDate := time.Format "January, 02 2006" .start_date -}}
|
||||||
|
@ -27,7 +39,10 @@
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ with .character.max_level }}<td class="level">Level {{ . }}</td>{{ end }}
|
{{ with .character.max_level }}<td class="level">Level {{ . }}</td>{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<td class="hp">{{ cond (gt .character.hp.n 0) (printf "%s / %s" .character.hp.n .character.hp.max)
|
<td class="hp">
|
||||||
.character.hp.max }} hp</td>
|
{{- $hp := float .character.hp.n -}}
|
||||||
|
{{- $hpMax := .character.hp.max -}}
|
||||||
|
{{- if gt $hp 0 }}{{ $hp }} / {{ $hpMax }}{{ else }}{{ $hp }}{{ end }} hp
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
3
layouts/shortcodes/nethack/ascensions.html
Normal file
3
layouts/shortcodes/nethack/ascensions.html
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{{- $logfile := partial "nethack/log.html" . -}}
|
||||||
|
{{- $numberOfAscensions := where $logfile "death.cause" "ascended" | len -}}
|
||||||
|
{{- $numberOfAscensions | lang.FormatNumber 0 -}}
|
|
@ -1,8 +1,4 @@
|
||||||
{{ $nethack_data := $.Site.Data.nethack.logfile }}
|
{{- $logfile := partial "nethack/log.html" . -}}
|
||||||
{{ $logfile := slice }}
|
|
||||||
{{ range $nethack_data }}
|
|
||||||
{{ $logfile = $logfile | append .logfile }}
|
|
||||||
{{ end }}
|
|
||||||
<ol class="logfile">
|
<ol class="logfile">
|
||||||
{{ range sort $logfile "end_date" "desc" }}
|
{{ range sort $logfile "end_date" "desc" }}
|
||||||
{{ if ne .death.cause "quit" }}
|
{{ if ne .death.cause "quit" }}
|
||||||
|
|
2
layouts/shortcodes/nethack/n.html
Normal file
2
layouts/shortcodes/nethack/n.html
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
{{- $numberOfEntries := (partial "nethack/log.html" .) | len -}}
|
||||||
|
{{- $numberOfEntries | lang.FormatNumber 0 -}}
|
7
layouts/shortcodes/nethack/topn.html
Normal file
7
layouts/shortcodes/nethack/topn.html
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{{- $n := .Get 0 -}}
|
||||||
|
{{- $logfile := partial "nethack/log.html" . -}}
|
||||||
|
<ol class="logfile topn">
|
||||||
|
{{ range first $n (sort $logfile "score" "desc") -}}
|
||||||
|
<li>{{ partial "nethack/logentry.html" . }}</li>
|
||||||
|
{{- end }}
|
||||||
|
</ol>
|
Loading…
Add table
Add a link
Reference in a new issue