ackmud/
ackmud/area/imc/
ackmud/npcs/a/
ackmud/npcs/c/
ackmud/npcs/d/
ackmud/npcs/e/
ackmud/npcs/f/
ackmud/npcs/h/
ackmud/npcs/i/
ackmud/npcs/k/
ackmud/npcs/l/
ackmud/npcs/n/
ackmud/npcs/o/
ackmud/npcs/p/
ackmud/npcs/r/
ackmud/npcs/s/
ackmud/npcs/w/
ackmud/player/c/
ackmud/player/s/
ackmud/player/z/
/*
 * IMC2 - an inter-mud communications protocol
 *
 * imc-mercbase.h: integrated interface defs for Merc-derived codebases
 *
 * Copyright (C) 1996,1997 Oliver Jowett <oliver@sa-search.massey.ac.nz>
 *
 * This program 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 of the License, or
 * (at your option) any later version.
 * 
 * This program 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 this program (see the file COPYING); if not, write to the
 * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 */

#ifndef IMC_MERCBASE_H
#define IMC_MERCBASE_H



/* mud type configuration.
 * Either uncomment one of these #defines, or add an appropriate
 * -DROM / -DMERC / etc flag to your Makefile
 */

/* #define ROM   */
/* #define MERC  */
/* #define SMAUG */
/* #define ENVY  */
/* #define ACK   */




/* Stick your mud ad in this #define. */
#define IMC_MUD_INFO "No mud information has been defined.\n\r"


/* for Ack! : you need to include the board vnums for the IMC immortal-only and
 * public boards here
 */

#ifdef ACK
#define IMC_BOARD_PUBLIC   1234
#define IMC_BOARD_IMMORTAL 5678
#endif



/* Color configuration.
 * SMAUG and Ack! -based muds should not need to touch anything here.
 */

#ifdef ACK
#define IMC_COLORCHAR '@'
#define IMC_COLORCHAR2 '@'
#define IMC_COLOR

#elif defined(SMAUG)

#define IMC_COLORCHAR '&'
#define IMC_COLORCHAR2 '^'
#define IMC_COLOR

#else

/**  this section is for non-(SMAUG/Ack!) muds  **/

/* uncomment this if your mud supports color */
/* #define IMC_COLOR */

/* change this if your mud supports color to whatever the first character
 * in your color sequences is. There are two possible matches (in case your
 * mud uses more than one prefix, such as SMAUG does)
 */

#define IMC_COLORCHAR '{'
#define IMC_COLORCHAR2 '{'

#endif

/* end of color config */




/* default levels for rtell, rbeep */
#ifdef ACK
#define IMC_LEVEL_RTELL 30
#define IMC_LEVEL_RBEEP 80
#else
#define IMC_LEVEL_RTELL 5
#define IMC_LEVEL_RBEEP 20
#endif



/** no user-servicable parts below here **/

#ifdef IN_IMC
#ifdef SMAUG
#include "mud.h"
#else
#include "merc.h"
#endif
#endif


#define IMC_RCHAT   0x01
#define IMC_RIMM    0x02
#define IMC_RINFO   0x04
#define IMC_RCODE   0x08

#ifdef ACK
#define IMC_INTERACK 0x0100
#endif

#define IMC_RINVIS  0x1000
#define IMC_RBEEP   0x2000
#define IMC_RTELL   0x4000


#ifdef ROM
#define WIZ_IMC       (Y)
#define WIZ_IMCDEBUG  (Z)
#endif

DECLARE_DO_FUN(do_rchat);
DECLARE_DO_FUN(do_rimm);
DECLARE_DO_FUN(do_rinfo);
DECLARE_DO_FUN(do_rcode);

#ifdef ACK
DECLARE_DO_FUN(do_interack);
#endif

DECLARE_DO_FUN(do_rtell);
DECLARE_DO_FUN(do_rreply);
DECLARE_DO_FUN(do_rwho);
DECLARE_DO_FUN(do_rwhois);
DECLARE_DO_FUN(do_rquery);
DECLARE_DO_FUN(do_rbeep);
DECLARE_DO_FUN(do_rfinger);

DECLARE_DO_FUN(do_imclist);
DECLARE_DO_FUN(do_rsockets);
DECLARE_DO_FUN(do_imc);
DECLARE_DO_FUN(do_rignore);
DECLARE_DO_FUN(do_rconnect);
DECLARE_DO_FUN(do_rdisconnect);

DECLARE_DO_FUN(do_mailqueue);
DECLARE_DO_FUN(do_istats);

DECLARE_DO_FUN(do_rchannels);
DECLARE_DO_FUN(do_rchanset);

/* for memory marking (leak checking in conjunction with SAM) */
void imc_markmemory(void (*markfn)(void *));

/* string checking (with SAM+hacks) */
void imc_markstrings(void (*markfn)(char *));

/* color conversion functions, mud->imc and imc->mud */
const char *color_mtoi(const char *);
const char *color_itom(const char *);

/* mail shell */
void imc_post_mail(CHAR_DATA *from, const char *sender, const char *to_list,
                   const char *subject, const char *date, const char *text);

#endif