lotos123/
lotos123/datafiles/conffiles/
lotos123/datafiles/counters/
lotos123/datafiles/fonts/
lotos123/datafiles/helpfiles/
lotos123/datafiles/killmsgs/
lotos123/datafiles/mapfiles/
lotos123/datafiles/motds/motd1/
lotos123/datafiles/motds/motd2/
lotos123/datafiles/pictfiles/
lotos123/datafiles/plfiles/
lotos123/datafiles/plfiles/helpfiles/
lotos123/datafiles/screens/
lotos123/datafiles/textfiles/
lotos123/datafiles/trfiles/
lotos123/datafiles/votefiles/
lotos123/datafiles/votefiles/1/
lotos123/datafiles/votefiles/2/
lotos123/src/plugins/
lotos123/userfiles/
lotos123/userfiles/bin/
/* vi: set ts=4 sw=4 ai: */
/*
 * define.h
 *
 *   Lotos v1.2.3  : (c) 1999-2003 Pavol Hluchy (Lopo)
 *   last update   : 30.1.2003
 *   email         : lotos@losys.sk
 *   homepage      : lotos.losys.sk
 */

#ifndef __DEFINE_H__
#define __DEFINE_H__ 1

/* cislo verzie talkra - TVERSION moze mat akekolvek cislo,
   ostatne musia byt nezmenene */

#define TVERSION "1.0.0"
#define OSSVERSION "1.2.3"
#define AMNUTSVER "2.2.1"
#define NUTSVER "3.3.3"
#define USERVER "0.12"
#define RUN_VER "122"

#define FSTART "???"

/* general directories */
#define ROOTDIR "/home/lotos/lotos123"
#define DATAFILES ROOTDIR"/datafiles"
#define CONFFILES DATAFILES"/conffiles"
#define MAPFILES DATAFILES"/mapfiles"
#define HELPFILES DATAFILES"/helpfiles"
#define PLHELPFILES PLFILES"/helpfiles"
#define MAILSPOOL DATAFILES"/mailspool"
#define MISCFILES DATAFILES"/miscfiles"
#define PICTFILES DATAFILES"/pictfiles"
#define MOTDFILES DATAFILES"/motds"
#define DUMPFILES ROOTDIR"/dumpfiles"
#define TEXTFILES DATAFILES"/textfiles"
#define ADMINFILES TEXTFILES"/adminfiles"
#define LOGFILES ROOTDIR"/logfiles"
#define ROOMFILES DATAFILES"/roomfiles"
#define PLFILES DATAFILES"/plfiles"
#define TRFILES DATAFILES"/trfiles"
#define VOTEFILES DATAFILES"/votefiles"
#define TEMPFILES ROOTDIR"/tempfiles"
#define FIGLET_FONTS DATAFILES"/fonts"
#define KILLMSGS DATAFILES"/killmsgs"
#define COUNTFILES DATAFILES"/counters"
#define SCRFILES DATAFILES"/screens"
#define BINFILES ROOTDIR"/bin"

/* user directories */
#define USERFILES ROOTDIR"/userfiles"
#define USERMAILS USERFILES"/mail"
#define USERPROFILES USERFILES"/profiles"
#define USERFRIENDS USERFILES"/friends"
#define USERHISTORYS USERFILES"/historys"
#define USERCOMMANDS USERFILES"/xgcoms"
#define USERMACROS USERFILES"/macros"
#define USERROOMS USERFILES"/rooms"
#define USERREMINDERS USERFILES"/reminders"
#define USERPLDATAS USERFILES"/pldatas"

/* files */
#define CONFIGFILE CONFFILES"/config"
#define NEWSFILE MISCFILES"/newsfile"
#define SITEBAN MISCFILES"/siteban"
#define USERBAN MISCFILES"/userban"
#define NEWBAN MISCFILES"/newban"
#define SUGBOARD MISCFILES"/suggestions"
#define RULESFILE MISCFILES"/rules"
#define WIZRULESFILE MISCFILES"/wizrules"
#define SHOWFILES MISCFILES"/showfiles"
#define SHOWAFILES MISCFILES"/showafiles"
#define SWEARFILE MISCFILES"/swears"
#define LEVELFILE MISCFILES"/levels"
#define FAQFILE MISCFILES"/faq"
#define TALKERSFILE MISCFILES"/talkers"
#define TCOUNTER COUNTFILES"/tcounter"
#define MCOUNTER COUNTFILES"/mcounter"
#define RESTARTFILE TEMPFILES"/restartx"
#define KILLLIST MISCFILES"/killmsgs"
#define PICTLIST MISCFILES"/pictlist"
#define MAINHELP HELPFILES"/mainhelp"
#define FONTLIST MISCFILES"/fontslist"
#define CREDITS MISCFILES"/credits"
#define PIDFILE ROOTDIR"/star.pid"
#define HOSTSFILE MISCFILES"/hostsfile"
#define KILLFILE BINFILES"/kill"
#define TEMPFILE TEMPFILES"/tempfile"

/* fun files */
#define HUGFILE MISCFILES"/hug"
#define KISSFILE MISCFILES"/kiss"
#define WAKEFILE MISCFILES"/wake"

/* system logs */
#define LAST_CMD   "last_command"
#define LASTCMDLOGS "lastcmdlogs"
#define MAINSYSLOG "syslog"
#define NETSYSLOG  "netlog"
#define REQSYSLOG  "reqlog"
#ifdef DEBUG
	#define DEBSYSLOG  "deblog"
#endif
#define ERRSYSLOG  "errlog"
#define SYSLOG 0
#define REQLOG 1
#ifdef NETLINKS
	#define NETLOG 2
#endif
#ifdef DEBUG
	#define DEBLOG 3
#endif
#define ERRLOG 4			/* errors */

/* general defines */
#define OUT_BUFF_SIZE  1000	/* input buffer size */
#define MAX_WORDS        10	/* max. words processed by commands */
#define WORD_LEN         80	/* length of words */
#define ARR_SIZE       1000	/* array chars size */
#define MAX_LINES        20	/* max. lines in editor */
#define REVIEW_LINES     30	/* review conversation buffer lines */
#define REVTELL_LINES    30	/* review .tells buffer lines */
#define REVIEW_LEN      400	/* review conversation buffer line capacity */
#define BUFSIZE        1000
#define ROOM_NAME_LEN    20	/* room name length */
#define PERSONAL_ROOMNAME_LEN 80
#define ROOM_LABEL_LEN    5	/* room label length */
#define SBOFF             0
#define SBMIN             1
#define SBMAX             2
#define LASTLOGON_NUM     5
#define LOGIN_FLOOD_CNT  20
#define MAX_SWEARS       20	/* max. size of swears list */
#define FNAME_LEN		500

/* netlink defines */
#define SITE_NAME_LEN    80	/* site name length */
#ifdef NETLINKS
  #define SERV_NAME_LEN  80	/* server name length */
  #define VERIFY_LEN     20	/* verify string length */
  #define UNCONNECTED     0
  #define INCOMING        1
  #define OUTGOING        2
  #define DOWN            0
  #define VERIFYING       1
  #define UP              2
  #define ALL             0
  #define IN              1
  #define OUT             2
#endif

/* user defines */
#define USER_NAME_LEN    12 /* user name maximum length */
#define USER_MIN_LEN      3 /* user name minimum length */
#define USER_DESC_LEN    35 /* user desc length */
#define AFK_MESG_LEN     60 /* max. length of AFK message */
#define PHRASE_LEN       40 /* in/out phrase length */
#define PASS_LEN         20 /* only the 1st 8 chars will be used by crypt() though */
#define PASS_MIN_LEN      3 /* min. password length */
#define ROOM_DESC_LEN (MAX_LINES*100)+MAX_LINES /* MAX_LINES lines of 80 chars each + MAX_LINES nl */
#define TOPIC_LEN        60 /* room topic length */
#define ICQ_LEN          20
#define NEUTER            0
#define MALE              1
#define FEMALE            2
#define NEWBIE_EXPIRES   20 /* days */
#define USER_EXPIRES     40 /* days */
#define SCREEN_WRAP      80 /* how many characters to wrap to */
#define MAX_COPIES        6 /* of smail */
#define MAX_FRIENDS      10
#define MAX_IGNORES      10 /* number of users you can ignore */
#define MAX_XCOMS        10
#define MAX_GCOMS        10
#define MAX_PAGES      1000 /* should be enough! */
#define MAX_REMINDERS    30
#define REMINDER_LEN     70
#define MAX_MUSERS       10 /* maximalny pocet userov - adresatov v jednom prikaze */

/* rooms */
#define MAX_LINKS        20 /* max. links from a room */
#define PUBLIC            0 /* type of rooms access */
#define PRIVATE           1
#define FIXED             2
#define FIXED_PUBLIC      2
#define FIXED_PRIVATE     3
#define PERSONAL_UNLOCKED 4
#define PERSONAL_LOCKED   5
#define ROOT_CONSOLE     10

/* levels */
#define L_0    0
#define L_1    1
#define L_2    2
#define L_3    3
#define L_4    4
#define L_5    5
#define L_6    6
#define L_7    7
#define L_8    8
#define L_9    9
#define L_10  10
#define L_11  11
#define L_12  12

#define JAILED 0
#define NEW    1
#define USER   2
#define SUPER  4
#define WIZ    7
#define ARCH   9
#define GOD    10

#define BOT 11
#define ROOT 12
#define SYSOP 12
#define RETIRE_LIST USERFILES"/retired_wiz"

/* user and clone types */
#define USER_TYPE 0
#define CLONE_TYPE 1
#ifdef NETLINKS
#	define REMOTE_TYPE 2
#endif
#define BOT_TYPE 3
#define CLONE_HEAR_NOTHING 0
#define CLONE_HEAR_SWEARS 1
#define CLONE_HEAR_ALL 2

/* logon prompt stuff */
#define LOGIN_ATTEMPTS 3
#define LOGIN_NAME 1
#define LOGIN_PASSWD 2
#define LOGIN_CONFIRM 3
#define LOGIN_PROMPT 4

/* some macros that are used in the code */
/* these are for grammer */
#define PLTEXT_S(n) &"s"[(1==(n))]
#define PLTEXT_ES(n) &"es"[(1==(n))<<1]
#define PLTEXT_IS(n) ((1==(n))?"is":"are")
#define PLTEXT_WAS(n) ((1==(n))?"was":"were")

#define SIZEOF(table) (sizeof(table)/sizeof(table[0]))
#define MYSTRLEN(x) ((int)strlen(x)) /* Eliminate ANSI problem - pre fonty */

/* these are for bit manipulation */
#define BIT_BOOL(x) (!(!(x)))
#define BIT_SET(arg,pos) ((arg) | (1L << (pos)))
#define BIT_CLR(arg,pos) ((arg) & ~(1L << (pos)))
#define BIT_TEST(arg,pos) BIT_BOOL((arg) & (1L << (pos)))
#define BIT_FLIP(arg,pos) ((arg) ^ (1L << (pos)))

/* attempt to stop freezing time.  Thanks to Arny ('Paris' code creator)
   and Cygnus ('Ncohafmuta' code creator) for this */
#if !defined(__GLIBC__) || (__GLIBC__ < 2)
#define SIGNAL(x,y) signal(x,y)
#else
#define SIGNAL(x,y) sysv_signal(x,y)
#endif

/* Define ISO to be 1 for ISO (Mon-Sun) calendars
   ISO defines the first week with 4 or more days in it to be week #1.
   */
#ifndef ISO
 #define ISO 1
#endif

#if (ISO!=0 && ISO!=1)
 #error ISO must be set to either 0 or 1
#endif


#define NOLEAVE "noleave" /* oznacenie roomy bez vychodu v configu */
#define NUM_COLMODS 5 /* pocet farebnych modov */

/* Define Modular ColorCode Array Index */
#define CDEFAULT 0
#define CHIGHLIGHT 1
#define CTEXT 2
#define CBOLD 3
#define CSYSTEM 4
#define CSYSBOLD 5
#define CWARNING 6
#define CWHOUSER 7
#define CWHOINFO 8
#define CPEOPLEHI 9
#define CPEOPLE 10
#define CUSER 11
#define CSELF 12
#define CEMOTE 13
#define CSEMOTE 14
#define CPEMOTE 15
#define CTHINK 16
#define CTELLUSER 17
#define CTELLSELF 18
#define CTELL 19
#define CSHOUT 20
#define CMAILHEAD 21
#define CMAILDATE 22
#define CBOARDHEAD 23
#define CBOARDDATE 24

/* Definicie systemovych informacii Lotos */
#define TALKERNAME 1
#define SERIALNUM  2
#define REGUSER    3
#define SERVERDNS  4
#define SERVERIP   5 
#define TALKERMAIL 6
#define TALKERHTTP 7
#define SYSOPNAME  8
#define SYSOPUNAME 9
#define PUEBLOWEB 10
#define PUEBLOPIC 11
#define SYSOPPASSWD 12

/* makra */
#define MC_NAME_LEN 10
#define MC_COM_LEN 50

/* prompt */
#define PROMPT_LEN 50

/* figlets - fonty */
#define MAXFIRSTLINELEN 1000

/* spravy */
#define WAKEMSG_LEN 50


/* Restrictions stuff */
#define MAX_RESTRICT   	14               /* max. restrictions */

#define RESTRICT_GO    	0                /* .go */
#define RESTRICT_MOVE  	1		/* .move user */
#define RESTRICT_PROM  	2		/* .promote */
#define RESTRICT_DEMO  	3		/* .demote */
#define RESTRICT_MUZZ  	4		/* .muzzle */
#define RESTRICT_UNMU  	5		/* .unmuzzle */
#define RESTRICT_KILL  	6		/* .kill */
#define RESTRICT_HELP  	7		/* access .help */
#define RESTRICT_SUIC  	8		/* .suicide */
#define RESTRICT_WHO   	9		/* .who */
#define RESTRICT_RUN  	10		/* .run commands  - nepouzite*/
#define RESTRICT_CLON 	11		/* .create, .destroy clones */
#define RESTRICT_VIEW 	12		/* .review, .revtell */
#define RESTRICT_EXEC	13		/* execution of commands */
#define RESTRICT_MASK  ".............." /* mask used by load_user_details() */

/* minimum levels */
#define MIN_LEV_AUTORST WIZ	/* to set default restrictions */
#define MIN_LEV_NOSWR   GOD	/* to ignore swear_action() */
#define MIN_LEV_BLIND   ARCH    /* to use .terminal blind */

/* pre zalohovanie talkra */
#define BACKUPDIR ROOTDIR"/backups"
#define BACKUPFILE "backup"

/* rezimy set */
#define SET_NONE 0
#define SET_MAIN 1
#define SET_TERM 2
#define SET_BANK 3

/* rozmery struktur */
#define NUM_HELP 3
#define NUM_PROMPT 2
#define NUM_WHO 6


/* error codes used by identify() */
#define ID_OK           0
#define ID_CONNERR     -1
#define ID_NOFOUND     -2
#define ID_CLOSED      -3
#define ID_READERR     -4
#define ID_WRITEERR    -5
#define ID_NOMEM       -6
#define ID_TIMEOUT     -7
#define ID_CRAP        -8
#define ID_NOUSER      -9
#define ID_INVPORT    -10
#define ID_UNKNOWNERR -11
#define ID_COMERR     -12
#define ID_UNKNOWN    -13
#define ID_HIDDENUSER -14

#define ID_BUFFLEN    196 /* max. buffer length for reads and writes in identify() */
#define ID_READTIMEOUT 30 /* number of seconds after a socket read operation is timed out. */

/* money */
#define DEFAULT_MONEY 1000
#define DEFAULT_BANK 3000
#define MAX_DONATION 5000
#define CREDITS_PER_HOUR 10
#define MIN_CREDIT_UPDATE_LEVEL SUPER

/* DEBUG inspired by NooK */
#ifdef DEBUG
#	define CRASH_HISTORY 1024
#	define set_crash() { s_crash(__FILE__, __LINE__); }
#else
#	define set_crash() ((void)0)
#endif //DEBUG

#define PINGINTERVAL 10

#endif /* __DEFINE_H__ */