;;; nethack-cmd.el --- Nethack command definitions ;; Copyright (C) 2001,2002,2003,2005 Ryan Yeske ;; Author: Ryan Yeske ;; Keywords: games ;; This file is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; This file 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 General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. ;;; Commentary: ;; ;;; Code: (require 'nethack-api) ;;; cmd.c is the cheat sheet for this file (defmacro defun-nethack-command (fun docstr cmdstr &rest body) "Define an interactive nethack command." ;; Note: cmdstr is evaluated twice! `(defun ,(intern (concat "nethack-command-" (symbol-name fun))) (&optional count) ,docstr (interactive "p") (unwind-protect (if ,cmdstr (nh-send-and-wait (concat ,cmdstr " " (if count (number-to-string count) "1")))) ,@body))) (defun-nethack-command north ;k "Go north 1 space (or if number_pad is on, kick something)" "gonorth") (defun-nethack-command north-until-ontop "Go north until you are on top of something" "gonorthontop") ;K (defun-nethack-command north-until-near "Go north until you are near something" "gonorthnear") ;^K (defun-nethack-command northwest "Go northwest 1 space" "gonorthwest") ;y (defun-nethack-command northwest-until-ontop "Go northwest until you are on top of something" "gonorthwestontop") ;Y (defun-nethack-command northwest-until-near "Go northwest until you are near something" "gonorthwestnear") ;^Y (defun-nethack-command west "Go west 1 space" "gowest") ;h (defun-nethack-command west-until-ontop "Go west until you are on top of something" "gowestontop") ;H (defun-nethack-command west-until-near "Go west until you are near something" "gowestnear") ;^H (defun-nethack-command southwest "Go southwest 1 space" "gosouthwest") ;b (defun-nethack-command southwest-until-ontop "Go southwest until you are on top of something" "gosouthwestontop") ;B (defun-nethack-command southwest-until-near "Go southwest until you are near something" "gosouthwestnear") ;^B (defun-nethack-command south "Go south 1 space (or if number_pad is on, jump to another location)" "gosouth") ;j (defun-nethack-command south-until-ontop "Go south until you are on top of something" "gosouthontop") ;J (defun-nethack-command south-until-near "Go south until you are near something" "gosouthnear") ;^J (defun-nethack-command southeast "Go southeast 1 space" "gosoutheast") ;n (defun-nethack-command southeast-until-ontop "Go southeast until you are on something (if number_pad, name an object)" "gosoutheastontop") ;N (defun-nethack-command southeast-until-near "Go southeast until you are near something" "gosoutheastnear") ;^N (defun-nethack-command east "Go east 1 space (or if number_pad is on, loot a box on the floor)" "goeast") ;l (defun-nethack-command east-until-ontop "Go east until you are on top of something" "goeastontop") ;L (defun-nethack-command east-until-near "Go east until you are near something" "goeastnear") ;^L (defun-nethack-command northeast "Go northeast 1 space (or if number_pad is on, untrap something)" "gonortheast") ;u (defun-nethack-command northeast-until-ontop "Go northeast until you are on top of something" "gonortheastontop") ;U (defun-nethack-command northeast-until-near "Go northeast until you are near something" "gonortheastnear") ;^U (defun-nethack-command travel "Move via a shortest-path algorithm to a point on the map." "travel") ;_ (defun-nethack-command identify-trap "Show the type of a trap" "idtrap") ;^ (defun-nethack-command apply "Apply (use) a tool" "apply") ;a (defun-nethack-command remove-all-armor "Remove all armor" "remarm") ;A (defun-nethack-command close-door "Close a door" "close") ;c (defun-nethack-command drop "Drop an item" "drop") ;d (defun-nethack-command drop-specific-item "Drop specific item types" "ddrop") ;D (defun-nethack-command eat "Eat something" "eat") ;e (defun-nethack-command engrave "Engrave writing on the floor" "engrave") ;E (defun-nethack-command fire "Fire ammunition from quiver" "fire") ;f (defun-nethack-command inventory "Show your inventory" "inv") ;i (defun-nethack-command type-inventory "Inventory specific item types" "typeinv") ;I (defun-nethack-command open "Open a door" "open") ;o (defun-nethack-command settings "Show option settings, possibly change them" "set") ;O (defun-nethack-command pay "Pay your shopping bill" "pay") ;p (defun-nethack-command put-on "Put on an accessory (ring, amulet, etc)" "puton") ;P (defun-nethack-command quaff "Quaff (drink) something" "drink") ;q (defun-nethack-command select-ammo-for-quiver "Select ammunition for quiver" "wieldquiver") ;Q (defun-nethack-command read "Read a scroll or spellbook" "read") ;r (defun-nethack-command remove-accessory "Remove an accessory (ring, amulet, etc)" "remring") ;R (defun-nethack-command search "Search for traps and secret doors" "search") ;s (defun-nethack-command save-game "Save the game" "save") ;S (defun-nethack-command throw "Throw something" "throw") ;t (defun-nethack-command remove-single-armor "Take off one piece of armor" "takeoff") ;T (defun-nethack-command version ;v "Show version" "simpleversion" (nhapi-message nil (nethack-el-version))) (defun-nethack-command version-and-history "Show long version and game history" "history") ;V (defun-nethack-command wield "Wield (put in use) a weapon" "wield") ;w (defun-nethack-command wear-armor "Wear a piece of armor" "wear") ;W (defun-nethack-command swap-weapons "Swap wielded and secondary weapons" "swapweapon") ;x (defun-nethack-command explore-mode "Enter explore (discovery) mode (only if defined)" "enter_explore_mode") ;X (defun-nethack-command zap-wand "Zap a wand" "zap") ;z (defun-nethack-command cast-spell "Zap (cast) a spell" "cast") ;Z (defun-nethack-command up "Go up a staircase" "up") ;< (defun-nethack-command down "Go down a staircase" "down") ;> (defun-nethack-command what-is-symbol "Show what type of thing a symbol corresponds to" "whatis") ;/ (defun-nethack-command help "Give a help message" "help") ;? (defun-nethack-command command-help "Tell what a command does" "whatdoes") ;& ; can be done by emacs (defun-nethack-command shell ; ! "Do a shell escape (only if defined)" nil ;; "sh" (shell)) (defun-nethack-command show-discoveries "Show what object types have been discovered" "discovered") ;\ (defun-nethack-command rest-one-move "Rest one move while doing nothing" "null") ;. (defun-nethack-command look-here "Look at what is on the floor" "look") ;: (defun-nethack-command what-is-map-piece "Show what type of thing a map symbol on the level corresponds to" "quickwhatis") ;; (defun-nethack-command pick-up "Pick up things at the current location" "pickup") ;, (defun-nethack-command toggle-pickup "Toggle the pickup option on/off" "togglepickup") ;@ (defun-nethack-command show-all-equipment-in-use "Show all equipment in use (combination of the ),[,=,\",( commands)" "prinuse") ;* (defun-nethack-command count-gold "Count your gold" "countgold") ;$ (defun-nethack-command kick "Kick" "kick") ;^D (defun-nethack-command list-known-spells "List known spells" "listspells") ;+ (defun-nethack-command show-attributes ;^X "Show your attributes (intrinsic ones included in debug or explore mode)" "attributes") ;;; wizard (debug) mode only commands: (defun-nethack-command wizard-detect ;^E "Search a room (available in debug mode only)" "wiz_detect") (defun-nethack-command wizard-map ;^F "Map the level (available in debug mode only)" "wiz_map") (defun-nethack-command wizard-genesis ;^G "Create a monster (available in debug mode only)" "wiz_genesis") (defun-nethack-command wizard-identify ;^I "Identify all items (available in debug mode only)" "wiz_identify") (defun-nethack-command wizard-where ;^O "Show location of special levels (available in debug mode only)" "wiz_where") (defun-nethack-command wizard-level-teleport ;^V "Teleport between levels (available in debug mode only)" "wiz_level_tele") (defun-nethack-command wizard-wish ;^W "Wish (available in debug mode only)" "wiz_wish") ;; wizard extended commands ;; {"light sources", "show mobile light sources", wiz_light_sources, TRUE}, ;; {"seenv", "show seen vectors", wiz_show_seenv, TRUE}, ;; {"stats", "show memory statistics", wiz_show_stats, TRUE}, ;; {"timeout", "look at timeout queue", wiz_timeout_queue, TRUE}, ;; {"vision", "show vision array", wiz_show_vision, TRUE}, ;; {"wizdebug", "wizard debug command", wiz_debug_cmd, TRUE}, ;; {"wmode", "show wall modes", wiz_show_wmodes, TRUE}, ;; Extended commands (defun-nethack-command pray "pray to the gods for help." "pray") (defun-nethack-command adjust "adjust inventory letters." "adjust") (defun-nethack-command chat "talk to someone." "chat") (defun-nethack-command conduct "list which challenges you have adhered to." "conduct") (defun-nethack-command dip "dip an object into something." "dip") (defun-nethack-command enhance "advance or check weapons skills." "enhance") (defun-nethack-command force "force a lock." "force") (defun-nethack-command invoke "invoke an object's powers." "invoke") (defun-nethack-command jump "jump to a location." "jump") (defun-nethack-command loot "loot a box on the floor." "loot") (defun-nethack-command monster "use a monster's special ability." "monster") (defun-nethack-command name "name an item or type of object." "name") (defun-nethack-command offer "offer a sacrifice to the gods." "offer") (defun-nethack-command quit "exit without saving current game." "quit") (defun-nethack-command ride "ride (or stop riding) a monster." "ride") (defun-nethack-command rub "rub a lamp." "rub") (defun-nethack-command sit "sit down." "sit") (defun-nethack-command turn "turn undead." "turn") (defun-nethack-command twoweapon "toggle two-weapon combat." "twoweapon") (defun-nethack-command untrap "untrap something." "untrap") (defun-nethack-command extended-version "list compile time options for this version of NetHack." "version") (defun-nethack-command wipe "wipe off your face." "wipe") ;; This is a slash'em only command (defun-nethack-command technique "Perform a technique." "technique") (defun-nethack-command previous-message ; ^P "Scroll through previously displayed game messages" nil ;;"doprev" FIXME: is not implemented in C (nhapi-doprev-message)) (defun-nethack-command redraw-screen ; ^R "Restores the default window configuration. With a prefix arg, also redraws the map glyphs." ;; only send process a redraw if there is a prefix arg (and (> count 1) "redraw") ;; but always restore the window configuration (nhapi-restore-window-configuration)) (defun-nethack-command teleport-around-level ; ^T "Teleport around level" "teleport") ;;; FIXME: defun these: (defun-nethack-command redo-previous ;^A "Redo the previous command" "again") ;;(defun-nethack-command suspend-game ;^Z ;;"Suspend game (only if defined)" ;; "suspend") ;;(defun-nethack-command cancel ;^[ ;;"Cancel command" ;;"") (defun-nethack-command call-monster ;C "Call (name) a particular monster" "callmon") (defun-nethack-command force-fight ;F "Followed by direction, fight a monster (even if you don't sense it)" "fight") (defun-nethack-command move-until-near ;g "Followed by direction, move until you are near something" "movenear") (defun-nethack-command move ;G "Followed by direction, same as control-direction" "move") (defun-nethack-command move-no-pickup-or-fight ;m "Followed by direction, move without picking anything up or fighting" "movenopickuporfight") (defun-nethack-command move-distance-no-pickup ;M "Followed by direction, move a distance without picking anything up" "movenopickup") (defun-nethack-command show-wielded-weapon ;) "Show the weapon currently wielded" "showweapon") (defun-nethack-command show-worn-armor ;[ "Show the armor currently worn" "showarmor") (defun-nethack-command show-worn-rings ;= "Show the ring(s) currently worn" "showrings") (defun-nethack-command show-worn-amulet ;" "Show the amulet currently worn" "showamulet") (defun-nethack-command show-tool-in-use ;( "Show the tools currently in use" "showtool") ;;; Lisp specific commands (defun-nethack-command options ;( "get all the nethack options." "options") (provide 'nethack-cmd) ;;; nethack-cmd.el ends here