:
use utf8;
use strict;
use warnings;
no warnings 'qw'; # you know what you doing
no warnings 'uninitialized'; # save some useless checks for more legible code
our $VERSION = '1.0';
our $ascii = 0;
if (exists $get{ascii}) {
$ascii = $get{ascii} ne '0'; # manual override
} elsif (defined $ENV{HTTP_ACCEPT_CHARSET}) {
$ascii = 1;
for (split q{,}, $ENV{HTTP_ACCEPT_CHARSET}) {
$ascii = 0, last if $_ eq '*' or m{utf-?8}i;
}
}
my $charset = $ascii ? 'us-ascii' : 'utf-8';
my $ctype = "text/html; charset=$charset";
$header{content_type} = $ctype;
:>
nethack cheat sheet
<:
my %styles = map {$_ => $_} qw(dark circus mono red terse);
our $style = exists $get{style} && $styles{$get{style}} || 'light';
printf(qq{\n },
$_ eq $style ? 'stylesheet' : 'alternate stylesheet', "$_.css", $_
) for keys %styles;
our $showkeys = exists $get{keys} && $get{keys} ne '0';
print "\n" unless $showkeys;
print "\n"
if $showkeys and $get{keys} eq 'ghost';
:>
NetHack cheat sheet
normal gameplay
<:
our %sign = (
arg => $ascii ? '.' : '·', # described as 'dot'
argi => $ascii ? ':' : ':',
motion => $ascii ? '|' : '↕',
alias => $ascii ? 'see: ' : '»',
up => $ascii ? 'up' : '▲',
right => $ascii ? 'right' : '▶',
down => $ascii ? 'down' : '▼',
left => $ascii ? 'left' : '◀',
sep => $ascii ? '*' : '•',
_ => exists $get{ascii} && !$ascii ? "\x{200b}" : '',
# use the correct ZWNJ only when unicode is forced on
# default to use unofficial html for best support
);
use Shiar_Sheet::Keyboard;
my $keys = Shiar_Sheet::Keyboard->new({do 'nethack.inc.pl'});
$keys->map($get{map}) or undef $get{map};
$keys->print_rows($get{static});
:>
direction
Direction to move to or target a command (<:= $sign{motion} :>).
move
Other character movement.
act
Direct action command: takes a turn.
info
Informational command: shows/does something without ending the turn.
invertory
Display invertory menu.
menu
Enters some other menu.
key<:= $sign{arg} :>
Commands with a dot need at least one argument afterwards.
key<:= $sign{motion} :>
Requires a direction afterwards.
key<:= $sign{argi} :>
Asks for an inventory item.
keyboard map is
<:= $get{map} ? 'set to ' : '' :><:= $keys->{map} :>
ascii mode is
<:= exists $get{ascii} && 'forced ' :><:=
$ascii ? 'on' : 'off' :>
keys are
<:= $showkeys ? 'always shown' : 'hidden if unassigned' :> <:=
!exists $get{keys} && ' by default' :>
default style is
<:= defined $get{style} && 'set to ' :><:= $style :>