muddy/
muddy/CVS/
muddy/area/
muddy/area/CVS/
muddy/clans/CVS/
muddy/classes/CVS/
muddy/doc/
muddy/doc/CVS/
muddy/etc/CVS/
muddy/etc/i3/
muddy/etc/i3/CVS/
muddy/imc/CVS/
muddy/lang/CVS/
muddy/licenses/CVS/
muddy/msgdb/CVS/
muddy/new/CVS/
muddy/notes/
muddy/player/
muddy/races/CVS/
muddy/religions/CVS/
muddy/src/CVS/
muddy/src/comm/CVS/
muddy/src/db/CVS/
muddy/src/intermud/
muddy/src/intermud/CVS/
muddy/src/irc/CVS/
muddy/src/olc/CVS/
 /* $Id: imccfg.h,v 1.666 2004/09/20 10:49:49 shrike Exp $                              */

/************************************************************************************
 *    Copyright 2004 Astrum Metaphora consortium                                    *
 *                                                                                  *
 *    Licensed under the Apache License, Version 2.0 (the "License");               *
 *    you may not use this file except in compliance with the License.              *
 *    You may obtain a copy of the License at                                       *
 *                                                                                  *
 *    http://www.apache.org/licenses/LICENSE-2.0                                    *
 *                                                                                  *
 *    Unless required by applicable law or agreed to in writing, software           *
 *    distributed under the License is distributed on an "AS IS" BASIS,             *
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.      *
 *    See the License for the specific language governing permissions and           *
 *    limitations under the License.                                                *
 *                                                                                  *
 ************************************************************************************/

/************************************************************************************
 * IMC2 version 0.10 - an inter-mud communications protocol                         *
 * Copyright (C) 1996 & 1997 Oliver Jowett <oliver@randomly.org>                    *
 *                                                                                  *
 * IMC2 Gold versions 1.00 though 2.00 are developed by MudWorld.                   *
 * Copyright (C) 1999 - 2002 Haslage Net Electronics (Anthony R. Haslage)           *
 *                                                                                  *
 * IMC2 MUD-Net version 3.10 is developed by Alsherok and Crimson Oracles           *
 * Copyright (C) 2002 Roger Libiez ( Samson )                                       *
 * Additional code Copyright (C) 2002 Orion Elder                                   *
 * Registered with the United States Copyright Office                               *
 * TX 5-555-584                                                                     *
 *                                                                                  *
 * IMC2 Continuum version 4.00 is developed by Rogel                                *
 * Copyright (C) 2003 by Rogel, WhoStyles Copyright (C) 2003 by Kris Craig          *
 *                                                                                  *
 * 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.          *
 *                                                                                  *
 ************************************************************************************/

#ifdef IMCSMAUG
   #define SOCIALSTRUCT
   #define SOCIAL_DATA SOCIALTYPE
   #define IMCMAX_LEVEL MAX_LEVEL
   #define IMCSTRALLOC STRALLOC
   #define IMCSTRFREE STRFREE
   #define IMCMAXPLAYERS sysdata.maxplayers
   #define CH_IMCDATA(ch)		((ch)->pcdata->imcchardata)
   #define CH_IMCLEVEL(ch)          ((ch)->level)
   #define CH_IMCNAME(ch)           ((ch)->name)
   #define CH_IMCTITLE(ch)          ((ch)->pcdata->title)
   #define CH_IMCRANK(ch)           ((ch)->pcdata->rank)
   #define CH_IMCSEX(ch)            ((ch)->sex)
   #define FIRST_IMCBLACKLIST(ch) 	((ch)->pcdata->imcchardata->imcfirst_blacklist)
   #define LAST_IMCBLACKLIST(ch)		((ch)->pcdata->imcchardata->imclast_blacklist)
   #define IMC_RREPLY(ch) 		((ch)->pcdata->imcchardata->rreply)
   #define IMC_CSUBSCRIBED(ch) 		((ch)->pcdata->imcchardata->imc_csubscribed)
   #define IMC_PFLAGS(ch)      ((ch)->pcdata->imcchardata->imc_pflags)
   #define IS_IMCVISIBLE(ch)		( !IS_NPC(ch) && !IS_SET( IMC_PFLAGS(ch), PSET_IMCPVISIBLE) )
#endif

#ifdef IMCACK
   extern int max_players;
   #define first_descriptor first_desc
   #define IMCMAX_LEVEL MAX_LEVEL
   #define IMCMAXPLAYERS max_players
   #define IMCSTRALLOC str_dup
   #define IMCSTRFREE free_string
   #define CH_IMCDATA(ch)		((ch)->pcdata->imcchardata)
   #define CH_IMCLEVEL(ch)		((ch)->level)
   #define CH_IMCNAME(ch)           ((ch)->name)
   #define CH_IMCTITLE(ch)          ((ch)->pcdata->title)
   #define CH_IMCRANK(ch)           (class_table[(ch)->class].who_name)
   #define CH_IMCSEX(ch)            ((ch)->sex)
   #define FIRST_IMCBLACKLIST(ch) 	((ch)->pcdata->imcchardata->imcfirst_blacklist)
   #define LAST_IMCBLACKLIST(ch)		((ch)->pcdata->imcchardata->imclast_blacklist)
   #define IMC_RREPLY(ch) 		((ch)->pcdata->imcchardata->rreply)
   #define IMC_CSUBSCRIBED(ch) 		((ch)->pcdata->imcchardata->imc_csubscribed)
   #define IMC_PFLAGS(ch)      ((ch)->pcdata->imcchardata->imc_pflags)
   #define IS_IMCVISIBLE(ch)		( !IS_NPC(ch) && !IS_SET( IMC_PFLAGS(ch), PSET_IMCPVISIBLE) )
#endif

#ifdef IMCCIRCLE
//   #if _CIRCLEMUD < CIRCLEMUD_VERSION(3, 0, 21)
//   #  error "Requires CircleMUD 3.0 bpl21+ (varargs output functions)"
//   #endif

   /* This should be in an act.social.h, if it existed. Introducing
      it in an IMC patch would be too intrusive. */
   struct social_messg {
     int act_nr;
     int hide;
     int min_victim_position;
     char *char_no_arg;
     char *others_no_arg;
     char *char_found;
     char *others_found;
     char *vict_found;
     char *not_found;
     char *char_auto;
     char *others_auto;
   };
   #define social_table soc_mess_list
   extern struct social_messg *soc_mess_list;
   #define SOCIALSTRUCT
   struct social_messg *find_social(const char *name);
   typedef struct social_messg SOCIAL_DATA;

   typedef struct char_data CHAR_DATA;
   typedef struct descriptor_data DESCRIPTOR_DATA;

   extern int max_players;

   const char *title_female(int chclass, int level);
   const char *title_male(int chclass, int level);
   void smash_tilde(char *str);

   #define first_descriptor		descriptor_list
   #define current_time			time(NULL)
   #define IMCSTRALLOC			strdup
   #define IMCSTRFREE			free
   #define IMCMAXPLAYERS		max_players	/* comm.c */
   #define PULSE_PER_SECOND		PASSES_PER_SEC
   #define log_string			basic_mud_log
   #define bug				basic_mud_log
   #define URANGE(a, b, c)		((b) < (a) ? (a) : ((b) > (c) ? (c) : (b)))
   #define write_to_buffer(d, txt, n)	write_to_output((txt), (d))
   #define IMCMAX_LEVEL			LVL_IMPL
   #define CH_IMCLEVEL(ch)          GET_LEVEL(ch)
   #define CH_IMCNAME(ch)           GET_NAME(ch)
   #define CH_IMCTITLE(ch)          GET_TITLE(ch)
   #define CH_IMCRANK(ch)           (GET_SEX(ch) == SEX_FEMALE ? title_female(GET_CLASS(ch), GET_LEVEL(ch))	\
								: title_male(GET_CLASS(ch), GET_LEVEL(ch)))
   #define CH_IMCSEX(ch)            GET_SEX(ch)
   #define FIRST_IMCBLACKLIST(ch)      ((ch)->player_specials->imcfirst_blacklist)
   #define LAST_IMCBLACKLIST(ch)       ((ch)->player_specials->imclast_blacklist)
   #define IMC_RREPLY(ch)		((ch)->player_specials->rreply)
   #define IMC_CSUBSCRIBED(ch) 		((ch)->player_specials->imc_csubscribed)
   #define IMC_PFLAGS(ch)      ((ch)->player_specials->imc_pflags)
   #define IS_IMCVISIBLE(ch)		( !IS_NPC(ch) && !IS_SET( IMC_PFLAGS(ch), PSET_IMCPVISIBLE) )
#endif
 
#if defined(IMCMERC) || defined(IMCROM)
   #define SOCIALSTRUCT // We have olc for socials
   #define first_descriptor descriptor_list
   #define IMCMAX_LEVEL MAX_LEVEL
   #define IMCSTRALLOC str_dup
   #define IMCSTRFREE free_string
   #define IMCMAXPLAYERS 0
   #define CH_IMCDATA(ch)		((ch)->pcdata->imcchardata)
   #define CH_IMCLEVEL(ch)          ((ch)->level)
   #define CH_IMCNAME(ch)           ((ch)->name)
   #define CH_IMCTITLE(ch)          ((ch)->pcdata->title)
   #define CH_IMCRANK(ch)           (str_empty)
   #define CH_IMCSEX(ch)            ((ch)->sex)
   #define FIRST_IMCBLACKLIST(ch) 	((ch)->pcdata->imcchardata->imcfirst_blacklist)
   #define LAST_IMCBLACKLIST(ch)		((ch)->pcdata->imcchardata->imclast_blacklist)
   #define IMC_RREPLY(ch) 		((ch)->pcdata->imcchardata->rreply)
   #define IMC_CSUBSCRIBED(ch) 		((ch)->pcdata->imcchardata->imc_csubscribed)
   #define IMC_PFLAGS(ch)      ((ch)->pcdata->imcchardata->imc_pflags)
   #define IS_IMCVISIBLE(ch)		( !IS_NPC(ch) && !IS_SET( IMC_PFLAGS(ch), PSET_IMCPVISIBLE) )
#endif