-;;; riece-hangman.el --- hangman
+;;; riece-hangman.el --- allow channel members to play the hangman game
;; Copyright (C) 1998-2004 Daiki Ueno
;; Author: Daiki Ueno <ueno@unixuser.org>
;; 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.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
-;; To use, add the following line to your ~/.riece/init.el:
-;; (add-to-list 'riece-addons 'riece-hangman)
+;; NOTE: This is an add-on module for Riece.
;;; Code:
(require 'riece-server)
(defgroup riece-hangman nil
- "Interface to hangman.el"
+ "Allow channel members to play the hangman game."
:prefix "riece-"
:group 'riece)
-(defcustom riece-hangman-hello-regexp "^, hangman"
+(defcustom riece-hangman-hello-regexp "^,hangman$"
"Pattern of string to start the game."
:type 'string
:group 'riece-hangman)
-(defcustom riece-hangman-bye-regexp "^, bye hangman"
+(defcustom riece-hangman-bye-regexp "^,hangman bye$"
"Pattern of string to end the game."
:type 'string
:group 'riece-hangman)
(defvar riece-hangman-player-context-alist nil)
(defvar riece-hangman-words-buffer nil)
-(defvar riece-hangman-enabled nil)
-
(defconst riece-hangman-description
- "Allow users in channel to play classic textual game \"hangman\"")
+ "Allow channel members to play the hangman game.")
(put 'riece-hangman 'riece-addon-default-disabled t)
(defun riece-hangman-word ()
"Return random word.
The wordlist is read from `riece-hangman-words-file'."
- (unless riece-hangman-words-buffer
+ (unless (and riece-hangman-words-buffer
+ (buffer-name riece-hangman-words-buffer))
(setq riece-hangman-words-buffer (generate-new-buffer " *riece-hangman*"))
(save-excursion
(set-buffer riece-hangman-words-buffer)
(delete-non-matching-lines "^[a-z][a-z][a-z][a-z][a-z][a-z]+"))))
(save-excursion
(set-buffer riece-hangman-words-buffer)
- (goto-char (% (1+ (random)) (buffer-size)))
+ (goto-char (1+ (random (buffer-size))))
(if (eobp)
(beginning-of-line -1)
(beginning-of-line))
"")))))
(defun riece-hangman-after-privmsg-hook (prefix string)
- (if riece-hangman-enabled
+ (if (get 'riece-hangman 'riece-addon-enabled)
(let* ((user (riece-prefix-nickname prefix))
(parameters (riece-split-parameters string))
(targets (split-string (car parameters) ","))
(riece-hangman-reply-with-context user (car targets)
(cdr pointer))
(riece-hangman-reply (car targets)
- (format "%s: You got it!" user))
+ (format "%s: You got it! (%s)"
+ user word))
(setq riece-hangman-player-context-alist
(delq
pointer
(defun riece-hangman-insinuate ()
(add-hook 'riece-after-privmsg-hook 'riece-hangman-after-privmsg-hook))
-(defun riece-hangman-enable ()
- (setq riece-hangman-enabled t))
+(defun riece-hangman-uninstall ()
+ (remove-hook 'riece-after-privmsg-hook 'riece-hangman-after-privmsg-hook))
-(defun riece-hangman-disable ()
- (setq riece-hangman-enabled nil))
+(defun riece-hangman-enable ()
+ (random t))
(provide 'riece-hangman)