opal

OPAL's Playable Almost Indefectibly. OPAL is a rogue-like dungeon crawler.

Log | Files | << Repositories


.\"
.\" Copyright (C) 2019  Esote
.\"
.\" This program is free software: you can redistribute it and/or modify
.\" it under the terms of the GNU Affero General Public License as published
.\" by the Free Software Foundation, either version 3 of the License, or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU Affero General Public License for more details.
.\"
.\" You should have received a copy of the GNU Affero General Public License
.\" along with this program.  If not, see <https://www.gnu.org/licenses/>.
.\"
.Dd $Mdocdate: December 29 2019$
.Dt OPAL 6
.Os
.Sh NAME
.Nm opal
.Nd a rogue-like dungeon crawler
.Sh SYNOPSIS
.Nm opal
.Op Fl ls
.Op Fl n Ar count
.Op Fl o Ar count
.Op Fl z Ar seed
.Sh DESCRIPTION
.Nm opal
is a rogue-like dungeon crawler.
You are the playable character denoted by the symbol @.
The goal is to kill the boss NPC.
As a player you can pick up objects from the floor and wear them to increase
your attributes.
.Pp
Damage is calculated as the sum of dice rolls for the player's base damage and
all equipped items.
.Pp
Options available:
.Pp
.Bl -tag -width indent -compact
.It Fl l
load dungeon
.It Fl s
save dungeon
.It Fl n
custom count of NPCs per floor
.It Fl o
custom count of objects per floor
.It Fl z
a string or integer to initialize the RNG subsystem
.El
.Pp
.Nm opal
expects NPC and object description files.
Examples should have been included with your copy.
.Sh COMMANDS
.Bl -tag -width indent
.It \fB7\fR, \fBy\fR, \fBhome\fR
move up and to the left
.It \fB8\fR, \fBk\fR, \fBarrow up\fR
move up
.It \fB9\fR, \fBu\fR, \fBpage up\fR
move up and to the right
.It \fB6\fR, \fBl\fR, \fBarrow right\fR
move right
.It \fB3\fR, \fBn\fR, \fBpage down\fR
move down and to the right
.It \fB2\fR, \fBj\fR, \fBarrow down\fR
move down
.It \fB1\fR, \fBb\fR, \fBend\fR
move down and to the left
.It \fB4\fR, \fBh\fR, \fBarrow left\fR
move left
.It \fB5\fR, \fB.\fR, \fBspace\fR
rest
.Pq consumes a turn
.El
.Pp
.Bl -tag -width indent -compact
.It \fB>\fR
go down stairs
.It \fB<\fR
go up stairs
.It \fBm\fR
view scrollable NPC list
.It \fBQ\fR, \fBq\fR
quit
.It \fBi\fR
carry (inventory) list
.It \fBe\fR
equipment list
.It \fBw\fR
prompt to wear an object
.It \fBt\fR
prompt to take off an object
.It \fBd\fR
prompt to drop an object from carry list
.It \fBx\fR
prompt to destroy an object from carry list
.It \fBL\fR
inspect an NPC
.It \fBI\fR
inspect an object from carry list
.Pp
.It \fBf\fR
defog
.Pq DEBUG only
.It \fBg\fR
teleport
.Pq DEBUG only
.El
.Sh DESCRIPTIONS GRAMMAR
The NPC and object description files are used to generate NPCs and objects
during the game.
They follow a custom grammar.
.Pp
Dice are formatted with integers as \fIbase\fR+\fIdice\fRd\fIsides\fR.
For example
.Dq 3+5d4 .
.Ss NPCs
The file must start with
.Dq OPAL NPC DESCRIPTION 1 .
An NPC description starts with
.Dq BEGIN NPC
and ends with
.Dq END .
It has the following attributes:
.Pp
.Bl -tag -width indent -compact
.It Ic ABIL
an NPC's characteristics, one or more of BOSS, DESTROY, ERRATIC, PASS, PICKUP,
SMART, TELE, TUNNEL, or UNIQ.
.It Ic COLOR
one of BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, or YELLOW.
.It Ic DAM
dice format
.It Ic DESC
multi-line NPC description, ending with
.Sq \&.
on its own line.
.It Ic HP
dice format
.It Ic NAME
string name
.It Ic RRTY
rarity, from 1 to 100 with 100 being the rarest
.It Ic SPEED
dice format
.It Ic SYMB
any single character
.El
.Ss Objects
The file must start with
.Dq OPAL OBJ DESCRIPTION 1 .
An object description starts with
.Dq BEGIN OBJ and ends with
.Dq END .
It has the following attributes:
.Pp
.Bl -tag -width indent -compact
.It Ic ART
boolean, whether the object is a unique artifact
.It Ic ATTR
dice format
.It Ic COLOR
one of BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, or YELLOW.
.It Ic DAM
dice format
.It Ic DEF
dice format
.It Ic DESC
multi-line object description, ending in
.Sq \&.
on its own line.
.It Ic DODGE
dice format
.It Ic HIT
dice format
.It Ic NAME
string name
.It Ic RRTY
rarity, from 1 to 100 with 100 being the rarest
.It Ic SPEED
dice format
.It Ic TYPE
object type, one of AMMUNITION, AMULET, ARMOR, BOOK, BOOTS, CLOAK, CONTAINER,
FLASK, FOOD, GLOVES GOLD, HELMET, LIGHT, OFFHAND, RANGED, RING, SCROLL, WAND, or
WEAPON.
.It Ic VAL
dice format
.It Ic WEIGHT
dice format
.El
.Sh NOTES
.Nm opal
requires ncurses.
To compile it also requires
.Xr yacc 1
and
.Xr lex 1
which are used for descriptions parsing.
.Sh FILES
.Bl -tag -width indent
.It Pa $HOME/.opal/dungeon
Binary save file
.It Pa $HOME/.opal/npc_desc
Required NPC descriptions file
.It Pa $HOME/.oapl/obj_desc
Required object descriptions file
.El
.Sh HISTORY
My
.Cm coms327
repository contains the previous development history of
.Nm opal .
.Sh AUTHORS
.Nm opal
was written by
.An Esote .
.Sh COPYRIGHT
Copyright (c) 2019 Esote.
There is NO warranty.
You may redistribute this software under the terms of the GNU Affero General
Public License.
For more information see the LICENSE file.
.Sh BUGS
The game window should not be resized during play.
This may corrupt the display.
.Pp
Fatal errors do not bother to reset the terminal.