MazesOfMonad: Console-based Role Playing Game

[ bsd3, game, program ] [ Propose Tags ]

MazesOfMonad is a console-based Role Playing Game. You create characters with their strong and weak points, and try to complete mazes that are randomly generated. You can pick up gold and items on the way, meet monsters, and deal with them as you want. You can fight, use magic, bribe, trade, steal... This is only a simple game that I did to see what building a full blown Haskell application is like to develop. Version 1.0 is complete and working, but there's not too many game items as such, I'll build more monsters, spells, etc.

[Skip to Readme]
Versions [faq] 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9
Dependencies array, base, containers, directory, filepath, haskell98, HUnit, mtl, old-locale, pretty, random, regex-posix, time [details]
License BSD-3-Clause
Author JP Moresmau
Category Game
Uploaded by JeanPhilippeMoresmau at 2009-04-29T06:55:30Z
Distributions NixOS:1.0.9
Executables mazesofmonad
Downloads 8065 total (44 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2017-01-01 [all 8 reports]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for MazesOfMonad-1.0.1

[back to package description]
Welcome to Mazes of Monad, JP Moresmau's RPG Game!

Mazes of Monad is a console based game similar to Nethack. I haven't looked for originality there, that's true.

To install, it's as usual: runhaskell Setup.lhs configure, runhaskell Setup.lhs build,runhaskell Setup.lhs install.

Everything is console based, so you have to type in actions (usually one word, or two). There is auto completion so you can type 'h' instead of 'help'. Some actions start little wizards that will ask you to type more information, or to choose from a list of items. To choose an item in the list, type in the number of the item. Just pressing the enter key without any number usually means "Cancel".

You first need to create a character. You can reuse a character for several mazes, but only one at a time. Your character will progress over time, and the monsters should become tougher as you progress. You can save the current state of a game (character + game) so you can go back to a previous situation if you die or go mad.

To create a character, type 'c' on the initial screen (get into the characters mode), then 'n' for new. You'll have to type in the name and gender, and then choose a profile. A profile is only an indication on how to generate your initial characteristic, but brings no limitations. As you progress your profile will be updated if you use other characteristics more. For example, a thief is not as strong as a warrior, but better in dexterity and intelligence. If you start as a warrior but do a lot of stuff requiring dexterity or intelligence, you may evolve into a thief.
You can refuse the character given to you any number of times. The number of gold coins and known spells you have is dependant on your characteristics, a merchant with a great charisma for example will probably have more gold to start with than a ranger.

Once you have a character, you exit the character screens ('b' for back), go into 'g' (ames) and start a 'n'(ew) game. You will find yourself in a maze. The goal is to find the exit.

You navigate with 'n'(orth), 's'(outh), 'e'(ast) and 'w'(est). 'm'(ap) shows you what you've discovered so far. 'i'(nventory) shows what you're carrying (use 'p'(ick) and 'd'(rop) to get or leave behind) items. 'ch'(aracter) shows you your current characteristics.

When you meet a NPC, the NPC may attack you, or leave you alone. In that case you can decide to attack it, trade with it, convert it or steal something from it. Just choose the appropriate action when prompted, or Ignore to leave it alone.

Fighting can be done through melee combat or magic. You can also try to end the fight by praying your opponent to let you go, or bribe it.

You can cast magic spells to your opponent during fights (damaging spells) or to yourself when you're not in a fight (healing or improvement spells).

Send me comments and suggestions!