Permalink
Browse files

update the manual wrt the game and the game wrt the manual

  • Loading branch information...
1 parent bfc4d8f commit f0b24cf2a68896d4b22b29169e3b4d4fced12f42 @Mikolaj Mikolaj committed Apr 11, 2011
Showing with 74 additions and 53 deletions.
  1. +66 −46 PLAYING.markdown
  2. +3 −3 src/Command.hs
  3. +2 −2 src/Keybindings.hs
  4. +1 −0 src/LambdaHack.config.default
  5. +1 −1 src/Terrain.hs
  6. +1 −1 src/Turn.hs
View
@@ -1,57 +1,61 @@
Playing LambdaHack
==================
-Playing the game consist of walking around the dungeon and bumping
-into things (doors, monsters, treasure). Once the few basic command keys
-and on-screen symbols are learned, mastery and enjoyment of the game
-is the matter of tactical skill and literary imagination.
+Playing LambdaHack involves walking around the dungeon, alone or in a party
+of fearless adventurers, jumping between levels, bumping into monsters,
+doors and walls, gathering magical treasure and making creative use of it.
+Horrible opponents do the same, intelligence allowing, while tirelessly
+chasing the noble heroes by smell and night-sight.
-To be honest, right now you need a lot of imagination, since the game
-is very basic, though playable and winnable. Contributions welcome.
+Once the few basic command keys and on-screen symbols are learned,
+mastery and enjoyment of the game is the matter of tactical skill
+and literary imagination. To be honest, you need a lot of imagination
+right now, since the game is still quite basic, though playable and winnable.
+Contributions welcome.
Dungeon
-------
-The goal of the hero is to explore the dungeon from top to the very bottom
-(and grab lots of shiny treasure and gear on the way).
+The goal of the hero is to explore the dungeon, battle the horrors within,
+gather as much gold and gems as possible, and escape to tell the tale.
The dungeon consists of 10 levels and each level consists of 80 by 21 tiles.
-The basic tiles tiles are as follows.
+The basic tiles are as follows.
dungeon terrain type on-screen symbol
floor .
wall (horizontal and vertical) - and |
+ pillar wall O
corridor #
stairs (up and down) < and >
closed door +
+ open door | and -
rock blank
-The game world is persistent, i.e., every time the hero visits a level
-during one game, the level should look the same.
+The game world is persistent, i.e., every time a hero visits a level
+during a single game, the level layout looks the same.
Keys
----
-Below are the default key bindings in the game.
+Below are the most basic default keys.
key command
+ . wait
+ < ascend a level
+ > descend a level
+ ? display help
+ Q quit without saving
+ X save and exit the game
c close a door
d drop an object
+ g get an object
i display inventory
- o open a door
- s search for secret doors
+ o open a door (or bump into a door)
q quaff a potion
- M display previous messages
- S save and quit the game
- Q quit without saving
- . wait
- , pick up an object
- : target floors
- < ascend a level
- > descend a level
- TAB cycle among heroes on the level
- 0--9 select a hero anywhere in the dungeon
+ r read a scroll
+ s search for secret doors (or bump into a wall)
One of the ways of moving throughout the level is with the vi text editor keys
(also known as "Rogue-like keys").
@@ -69,45 +73,61 @@ One of the ways of moving throughout the level is with the vi text editor keys
Pressing a capital letter corresponding to a direction key will have
the hero run in that direction until something interesting occurs.
-It's also possible to move using the numerical keypad, with Shift for running
-and the middle '5' key for resting. (If you are using the curses frontend,
+It is also possible to move using the numerical keypad, with Shift for running
+and the middle '5' key for waiting. (If you are using the curses frontend,
numerical keypad may not work correctly for terminals with broken terminfo,
e.g., gnome terminal tends to have problems, while xterm works fine.)
+To make a distance attack, you need to set your target first.
+The targeting commands are listed below, together with all the other
+less common player commands.
+
+ key command
+ ESC cancel action
+ RET accept choice
+ TAB cycle among heroes on level
+ 0--9 select a hero anywhere in the dungeon
+ * target monster
+ / target location
+ D dump current configuration
+ M display previous messages
+ V display game version
+ a aim a wand
+ t throw a weapon
+
There are also some debug and cheat keys. Use at your peril!
key command
- v display the version of the game
O toggle "omniscience"
I display level meta-data
- R toggle smell display
- T toggle level generation sequence
- V toggle field of vision display
+ R cycle among display modes
+ T cycle among level generation stages
Monsters
--------
-The hero is not alone in the dungeon. Monsters roam the game world, too.
-Monsters inhabit specific locations on the game map, and can be seen
-if the tile they are on can be seen by the hero.
-Every monster gets a turn per move of the hero. Monster moves
-are restricted in the same way as hero moves, i.e., they cannot move
-into obstacles like walls or rock. Some monsters
-ignore the hero, others chase him only when they see him
-and the especially dangerous kind is able to smell the hero.
+The hero is not alone in the dungeon. Monsters roam the dark caves
+and crawl from damp holes all the time. While heroes pay attention
+to all other party members and take moves sequentially, one after another,
+monsters don't care where the other monsters are going and all move at once,
+sometimes hitting each other by chance.
-When the hero moves into a monster or a monster bumps into the hero,
-combat occurs. Whenever combat occurs, the attacked actor may lose some health.
-If the hero dies, the game ends.
+When the hero bumps into a monster or a monster attacks the hero,
+melee combat occurs. Throwing objects or aiming magical devices may wound
+the affected targets, too. Whenever a monster or a hero hit points
+reach zero, the combatant dies. When the last hero dies, the game ends.
On Winning and Dying
--------------------
-If you happen to die, you are free to start again from the first level
-of the dungeon, but all your treasure is gone and the dungeon will look
-different this time.
+You win the game if you escape the dungeon alive. Your score is
+the sum of all gold you've plundered plus 100gp for each gem.
+Only the loot in possession of the party members on level 1 counts
+(the rest is considered MIA).
-You win the game if you escape the dungeon alive with treasure and valuable
-items --- the more the better!
+If all heroes die, your score is halved and only the treasure carried
+by the last standing hero counts. You are free to start again
+from the first level of the dungeon, but all your treasure and items
+are gone and the dungeon and it's items look differently.
View
@@ -14,11 +14,11 @@ type Command = Described (Action ())
type DirCommand = Described (Dir -> Action ())
closeCommand = Described "close a door" (checkCursor (openclose False))
-openCommand = Described "open a door" (checkCursor (openclose True))
+openCommand = Described "open a door (or bump into a door)" (checkCursor (openclose True))
pickupCommand = Described "get an object" (checkCursor pickupItem)
dropCommand = Described "drop an object" (checkCursor dropItem)
inventoryCommand = Described "display inventory" inventory
-searchCommand = Described "search for secret doors" (checkCursor search)
+searchCommand = Described "search for secret doors (or bump)" (checkCursor search)
ascendCommand = Described "ascend a level" (lvlChange Up)
descendCommand = Described "descend a level" (lvlChange Down)
floorCommand = Described "target location" targetFloor
@@ -28,7 +28,7 @@ readCommand = Described "read a scroll" (checkCursor readScroll)
throwCommand = Described "throw a weapon" (checkCursor throwItem)
aimCommand = Described "aim a wand" (checkCursor aimItem)
waitCommand = Described "wait" playerAdvanceTime
-saveCommand = Described "save and quit the game" saveGame
+saveCommand = Described "save and exit the game" saveGame
quitCommand = Described "quit without saving" quitGame
cancelCommand = Described "cancel action" cancelCurrent
acceptCommand h = Described "accept choice" (acceptCurrent h)
View
@@ -29,8 +29,8 @@ keyHelp :: (K.Key -> [K.Key]) -> Keybindings -> String
keyHelp aliases kb =
let
fmt k h = replicate 15 ' ' ++ k ++ replicate ((13 - length k) `max` 1) ' '
- ++ h ++ replicate ((30 - length h) `max` 1) ' '
- fmts s = replicate 15 ' ' ++ s ++ replicate ((43 - length s) `max` 1) ' '
+ ++ h ++ replicate ((35 - length h) `max` 1) ' '
+ fmts s = replicate 15 ' ' ++ s ++ replicate ((48 - length s) `max` 1) ' '
blank = fmt "" ""
title = fmt "keys" "command"
footer = fmts "(See file PLAYING.markdown.)"
@@ -47,6 +47,7 @@ firstDeathEnds: False
; unless we prefer an explicit command queue, with flushing, etc.
;
; backward compatibility
+S: X
colon: slash
comma: g
; Angband compatibility
View
@@ -87,7 +87,7 @@ instance Binary DL where
--
-- * 'DR': lower right
--
--- * 'O': lower right
+-- * 'O': a pillar
--
-- I am tempted to add even more (T-pieces and crossings),
-- but currently, we don't need them.
View
@@ -253,7 +253,7 @@ stdKeybindings = Keybindings
(K.Char '.', waitCommand),
-- saving or ending the game
- (K.Char 'S', saveCommand),
+ (K.Char 'X', saveCommand),
(K.Char 'Q', quitCommand),
-- debug modes

0 comments on commit f0b24cf

Please sign in to comment.