Coder Social home page Coder Social logo

esote / opal Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 51 KB

OPAL is a rogue-like dungeon crawler.

License: GNU Affero General Public License v3.0

Makefile 1.51% C++ 79.01% C 3.19% Lex 2.81% Yacc 7.10% Roff 6.38%
dungeon-crawler rogue-like yacc lex ncurses

opal's Introduction

NAME
	opal - a rogue-like dungeon crawler

SYNOPSIS
	opal [-ls] [-n count] [-o count] [-z seed]

DESCRIPTION
	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.

	Damage is calculated as the sum of dice rolls for the player's base
	damage and all equipped items.

	Options available:
	-l	load dungeon
	-s	save dungeon
	-n	custom count of NPCs per floor
	-o	custom count of objects per floor
	-z	a string or integer to initialize the RNG subsystem

	opal expects NPC and object description files. Examples should have been
	included with your copy.

	OPAL is a recursive acronym for "OPAL's Playable Almost Indefectibly."

COMMANDS
	7, y, home		move up and to the left
	8, k, arrow up		move up
	9, u, page up		move up and to the right
	6, l, arrow right	move right
	3, n, page down		move down and to the right
	2, j, arrow down	move down
	1, b, end		move down and to the left
	4, h, arrow left	move left
	5, ., space		rest (consumes a turn)

	>			go down stairs
	<			go up stairs
	m			view scrollable NPC list
	Q or q			quit
	i			carry (inventory) list
	e			equipment list
	w			prompt to wear an object
	t			prompt to take off an object
	d			prompt to drop an object from carry list
	x			prompt to destroy an object from carry list
	L			inspect an NPC
	I			inspect an object from carry list

	f			defog (DEBUG only)
	g			teleport (DEBUG only)

DESCRIPTIONS GRAMMAR
	The NPC and object descriptions file are used to generate NPCs and
	objects during the game. They follow a custom grammar.

	Dice are formatted with integers as base+dicedsides. For example 3+5d4.

	NPCs

	The file must start with "OPAL NPC DESCRIPTION 1". An NPC description
	starts with "BEGIN NPC" and ends with "END". It has the following
	attributes:

	ABIL	an NPC's characteristics, one or more of BOSS, DESTROY, ERRATIC,
		PASS, PICKUP, SMART, TELE, TUNNEL, or UNIQ.
	COLOR	one of BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, or YELLOW.
	DAM	dice format
	DESC	multi-line NPC description, ending in '.' on its own line.
	HP	dice format
	NAME	string name
	RRTY	rarity, from 1 to 100 with 100 being the rarest
	SPEED	dice format
	SYMB	any single character

	Objects

	The file must start with "OPAL OBJ DESCRIPTION 1". An object description
	starts with "BEGIN OBJ" and ends with "END". It has the following
	attributes:

	ART	boolean, whether the object is a unique artifact
	ATTR	dice format
	COLOR	one of BLACK, BLUE, CYAN, GREEN, MAGENTA, RED, WHITE, or YELLOW.
	DAM	dice format
	DEF	dice format
	DESC	multi-line object description, ending in '.' on its own line.
	DODGE	dice format
	HIT	dice format
	NAME	string name
	RRTY	rarity, from 1 to 100 with 100 being the rarest
	SPEED	dice format
	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.
	VAL	dice format
	WEIGHT	dice format

NOTES
	opal requires ncurses. To compile it also requires yacc(1) and lex(1)
	which are used for descriptions parsing.

FILES
	$HOME/.opal/dungeon
		Binary save file
	$HOME/.opal/npc_desc
		Required NPC descriptions file
	$HOME/.opal/obj_desc
		Required object descriptions file

HISTORY
	My coms327 repository contains the previous development history of opal.

AUTHORS
	opal was written by Esote.

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.

BUGS
	The game window should not be resized during play. This may corrupt the
	display. Fatal errors do not bother to reset the terminal.

opal's People

Contributors

esote avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.