dawn/notes/
dawn/src/
dawn/src/docs/
/**************************************************************************/
// channels.h - header for channel related functions
/***************************************************************************
 * The Dawn of Time v1.69r (c)1997-2004 Michael Garratt                    *
 * >> A number of people have contributed to the Dawn codebase, with the   *
 *    majority of code written by Michael Garratt - www.dawnoftime.org     *
 * >> To use this source code, you must fully comply with the dawn license *
 *    in licenses.txt... In particular, you may not remove this copyright  *
 *    notice.                                                              *
 **************************************************************************/
#ifndef CHANNELS_H
#define CHANNELS_H

#define CHANNEL_ADMINTALK	(A)
#define CHANNEL_CODETALK	(B)
#define CHANNEL_FLAME		(C)
#define CHANNEL_GSOCIAL		(D)
#define CHANNEL_GRATS		(E)
#define CHANNEL_HIGHTALK	(F)
#define CHANNEL_IC			(G)
#define CHANNEL_IMMTALK		(H)
#define CHANNEL_INFO		(I)
#define CHANNEL_MYTHOSTALK	(J)
#define CHANNEL_NEWBIETALK	(K)
#define CHANNEL_NOBLETALK	(M)
#define CHANNEL_OOC			(N)
#define CHANNEL_QA			(O)
#define CHANNEL_QUIET		(P)
#define CHANNEL_TELLS		(Q)
#define CHANNEL_CLANTALK	(Q)
#define CHANNEL_CHAT		(R)

#define CHANFLAG_MYSTERY_IMMS			(A) // if set, immortals appear as mystery imms to those who can't see them on who
#define CHANFLAG_ANONYMOUS_TO_MORTS		(B)
#define CHANFLAG_IMM_CHANNEL			(C)
#define CHANFLAG_IMMTALK_ACCESS			(D)
#define CHANFLAG_USE_PERS_IF_SWITCHED	(E)
#define CHANFLAG_ADMIN					(F)
#define CHANFLAG_CODE_COUNCIL			(G)
#define CHANFLAG_MYTHOS_COUNCIL			(H)
#define CHANFLAG_HIGHADMIN				(I)
#define CHANFLAG_NOBLE					(J)
#define CHANFLAG_NEWBIES_AND_SUPPORT	(K)
#define CHANFLAG_CLANMEMBERS_ONLY		(L)
#define CHANFLAG_IGNORE_QUIET			(M)

class channel_data
{
public:
	int *index;
	const char *name;
	const char *colour;
	const char *you_format; // first %s is text, include You at start
	const char *format; // first %s is name, second %s is text
	const char *trailer; // trails the message, channel colour code inserted before this
	const char *logfile;
	int memory_log_lines;
	long channel_flag_value;
	long flags;
	char **memory_log;
	int memory_log_index;

	// member functions
public:
	bool can_see_channel(char_data *ch, char_data *talker);
};

extern class channel_data channels[];

// some prototypes
int channel_exact_lookup(const char *channel_name);
int channel_lookup(const char *channel_name);
char *channel_convert_bitflags_to_text(long bits);
long channel_convert_text_to_bitflags(char *text);
void channels_initialize();

#endif // CHANNELS_h