/*-
* Copyright (c) 1998 fjoe <fjoe@iclub.nsu.ru>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: const.h,v 1.30 1999/04/17 06:56:34 fjoe Exp $
*/
#ifndef _CONST_H_
#define _CONST_H_
/*
* Data files used by the server.
*
* AREA_LIST contains a list of areas to boot.
* All files are read in completely at bootup.
* Most output files (bug, idea, typo, shutdown) are append-only.
*
* The NULL_FILE is held open so that we have a stream handle in reserve,
* so players can go ahead and telnet to all the other descriptors.
* Then we close it whenever we need to open a file (e.g. a save file).
*/
#if defined (WIN32)
# include <stdlib.h>
# define PATH_MAX _MAX_PATH
# define PATH_SEPARATOR '\\'
#else
# define PATH_SEPARATOR '/'
#endif
#define TMP_PATH "tmp"
#define PLAYER_PATH "player"
#define GODS_PATH "gods"
#define NOTES_PATH "notes"
#define MSGDB_PATH "msgdb"
#define ETC_PATH "etc"
#define RACES_PATH "races"
#define CLASSES_PATH "classes"
#define CLANS_PATH "clans"
#define AREA_PATH "area"
#define LANG_PATH "lang"
#define TMP_FILE "romtmp"
#define TMP_PATH "tmp"
#define PLAYER_PATH "player"
#define GODS_PATH "gods"
#define NOTES_PATH "notes"
#define MSGDB_PATH "msgdb"
#define ETC_PATH "etc"
#define CLASSES_PATH "classes"
#define CLANS_PATH "clans"
#define AREA_PATH "area"
#define LANG_PATH "lang"
#if defined (WIN32)
# define NULL_FILE "NUL" /* To reserve one stream */
# define PLISTS_PATH CLANS_PATH"\\plists"
#else
# define NULL_FILE "/dev/null" /* To reserve one stream */
# define PLISTS_PATH CLANS_PATH"/plists"
#endif
#define HOMETOWNS_CONF "hometowns.conf"/* hometowns */
#define SKILLS_CONF "skills.conf" /* skills */
#define SOCIALS_CONF "socials.conf" /* socials */
#define SYSTEM_CONF "system.conf" /* system configuration */
#define LANG_CONF "lang.conf" /* lang definitions */
#define MSG_FILE "msgdb.txt" /* msg db */
#define AREA_LIST "area.lst" /* list of areas */
#define CLAN_LIST "clan.lst" /* list of clans */
#define CLASS_LIST "class.lst" /* list of classes */
#define LANG_LIST "lang.lst" /* list of languages */
#define RACE_LIST "race.lst"
#define BUG_FILE "bugs.txt" /* For 'bug' and bug()*/
#define TYPO_FILE "typos.txt" /* For 'typo'*/
#define NOTE_FILE "notes.not" /* For 'notes'*/
#define IDEA_FILE "ideas.not"
#define PENALTY_FILE "penal.not"
#define NEWS_FILE "news.not"
#define CHANGES_FILE "chang.not"
#define SHUTDOWN_FILE "shutdown" /* For 'shutdown'*/
#define BAN_FILE "ban.txt"
#define MAXON_FILE "maxon.txt"
#define AREASTAT_FILE "areastat.txt"
#define IMMLOG_FILE "immortals.log"
/* align numbers */
enum {
ANUM_GOOD,
ANUM_NEUTRAL,
ANUM_EVIL,
MAX_ANUM
};
enum {
STAT_STR,
STAT_INT,
STAT_WIS,
STAT_DEX,
STAT_CON,
STAT_CHA,
MAX_STAT /* number of char stats */
};
#define MAX_STATS MAX_STAT /* ROM compatibility */
/*
* String and memory management parameters.
*/
#define MAX_KEY_HASH 1024
#define MAX_STRING_HASH 16384
#define MAX_STRING_LENGTH 8192
#define MAX_INPUT_LENGTH 1024
#define MAX_PROMPT_LENGTH 60
#define MAX_TITLE_LENGTH 45
#define MAX_CHAR_NAME 12
#define PAGELEN 22
#define SCROLL_MIN 16
#define SCROLL_MAX 192
/*
* Game parameters.
*/
#define MAX_RELIGION 18
#define MIN_PK_LEVEL 10 /* min PK level */
#define MAX_NEWBIES 120 /* number of newbies allowed */
#define MAX_OLDIES 999 /* number of newbies allowed */
#define MAX_TRADE 5 /* number of trade types for shops */
#define MAX_COND 6 /* number of char condition stats */
#define MAX_DIR 6 /* number of exits */
#define MAX_ALIAS 50 /* number of aliases char can have */
#define RATING_TABLE_SIZE 20 /* rating table size */
#define MAX_LEVEL 100
#define LEVEL_HERO (MAX_LEVEL - 9)
#define LEVEL_IMMORTAL (MAX_LEVEL - 8)
#define LEVEL_NEWBIE 5
#define IMPLEMENTOR MAX_LEVEL
#define CREATOR (MAX_LEVEL - 1)
#define SUPREME (MAX_LEVEL - 2)
#define DEITY (MAX_LEVEL - 3)
#define GOD (MAX_LEVEL - 4)
#define IMMORTAL (MAX_LEVEL - 5)
#define DEMI (MAX_LEVEL - 6)
#define ANGEL (MAX_LEVEL - 7)
#define AVATAR (MAX_LEVEL - 8)
#define HERO LEVEL_HERO
#define ML MAX_LEVEL /* implementor */
#define L1 (MAX_LEVEL - 1) /* creator */
#define L2 (MAX_LEVEL - 2) /* supreme being */
#define L3 (MAX_LEVEL - 3) /* deity */
#define L4 (MAX_LEVEL - 4) /* god */
#define L5 (MAX_LEVEL - 5) /* immortal */
#define L6 (MAX_LEVEL - 6) /* demigod */
#define L7 (MAX_LEVEL - 7) /* angel */
#define L8 (MAX_LEVEL - 8) /* avatar */
#define IM LEVEL_IMMORTAL /* angel */
#define HE LEVEL_HERO /* hero */
#undef ANATOLIA_MACHINE
#if defined(ANATOLIA_MACHINE)
# define PULSE_PER_SCD 6 /* 6 for comm.c */
# define PULSE_PER_SECOND 4 /* for update.c */
# define PULSE_VIOLENCE (2 * PULSE_PER_SECOND)
#else
# define PULSE_PER_SCD 4
# define PULSE_PER_SECOND 4
# define PULSE_VIOLENCE (3 * PULSE_PER_SECOND)
#endif
#define PULSE_MOBILE (4 * PULSE_PER_SECOND)
#define PULSE_WATER_FLOAT (4 * PULSE_PER_SECOND)
#define PULSE_MUSIC (6 * PULSE_PER_SECOND)
#define PULSE_TRACK (12 * PULSE_PER_SECOND)
#define PULSE_TICK (50 * PULSE_PER_SECOND) /* 36 saniye */
/* room_affect_update (not room_update) */
#define PULSE_RAFFECT (3 * PULSE_MOBILE)
#define PULSE_AREA (110 * PULSE_PER_SECOND) /* 97 saniye */
#define PULSE_AUCTION (20 * PULSE_PER_SECOND) /* 20 seconds */
#define FIGHT_DELAY_TIME (20 * PULSE_PER_SECOND)
#define GHOST_DELAY_TIME 600
#define MISSING_TARGET_DELAY 10
/*
* Well known mob virtual numbers.
* Defined in #MOBILES.
*/
#define MOB_VNUM_KITTEN 3090
#define MOB_VNUM_SHADOW 10
#define MOB_VNUM_SPECIAL_GUARD 11
#define MOB_VNUM_BEAR 12
#define MOB_VNUM_DEMON 13
#define MOB_VNUM_NIGHTWALKER 14
#define MOB_VNUM_STALKER 15
#define MOB_VNUM_SQUIRE 16
#define MOB_VNUM_MIRROR_IMAGE 17
#define MOB_VNUM_UNDEAD 18
#define MOB_VNUM_LION 19
#define MOB_VNUM_WOLF 20
#define MOB_VNUM_SUM_SHADOW 26
#define MOB_VNUM_LESSER_GOLEM 21
#define MOB_VNUM_STONE_GOLEM 22
#define MOB_VNUM_IRON_GOLEM 23
#define MOB_VNUM_ADAMANTITE_GOLEM 24
#define MOB_VNUM_HUNTER 25
#define MOB_VNUM_PATROLMAN 2106
#define GROUP_VNUM_TROLLS 2100
#define GROUP_VNUM_OGRES 2101
/*
* Well known object virtual numbers.
* Defined in #OBJECTS.
*/
#define OBJ_VNUM_SILVER_ONE 1
#define OBJ_VNUM_GOLD_ONE 2
#define OBJ_VNUM_GOLD_SOME 3
#define OBJ_VNUM_SILVER_SOME 4
#define OBJ_VNUM_COINS 5
#define OBJ_VNUM_CROSS 8
#define OBJ_VNUM_CORPSE_NPC 10
#define OBJ_VNUM_CORPSE_PC 11
#define OBJ_VNUM_SEVERED_HEAD 12
#define OBJ_VNUM_TORN_HEART 13
#define OBJ_VNUM_SLICED_ARM 14
#define OBJ_VNUM_SLICED_LEG 15
#define OBJ_VNUM_GUTS 16
#define OBJ_VNUM_BRAINS 17
#define OBJ_VNUM_MUSHROOM 20
#define OBJ_VNUM_LIGHT_BALL 21
#define OBJ_VNUM_SPRING 22
#define OBJ_VNUM_DISC 23
#define OBJ_VNUM_PORTAL 25
#define OBJ_VNUM_DUMMY 30
#define OBJ_VNUM_ROSE 1001
#define OBJ_VNUM_SCHOOL_VEST 3703
#define OBJ_VNUM_SCHOOL_SHIELD 3704
#define OBJ_VNUM_SCHOOL_BANNER 3716
#define OBJ_VNUM_MAP 3162
#define OBJ_VNUM_NMAP1 3385
#define OBJ_VNUM_NMAP2 3386
#define OBJ_VNUM_WHISTLE 2116
#define OBJ_VNUM_POTION_VIAL 42
#define OBJ_VNUM_STEAK 27
#define OBJ_VNUM_RANGER_STAFF 28
#define OBJ_VNUM_WOODEN_ARROW 6
#define OBJ_VNUM_GREEN_ARROW 34
#define OBJ_VNUM_RED_ARROW 35
#define OBJ_VNUM_WHITE_ARROW 36
#define OBJ_VNUM_BLUE_ARROW 37
#define OBJ_VNUM_RANGER_BOW 7
#define OBJ_VNUM_DEPUTY_BADGE 70
#define OBJ_VNUM_RULER_BADGE 70
#define OBJ_VNUM_RULER_SHIELD1 71
#define OBJ_VNUM_RULER_SHIELD2 72
#define OBJ_VNUM_RULER_SHIELD3 73
#define OBJ_VNUM_RULER_SHIELD4 74
#define OBJ_VNUM_CHAOS_BLADE 97
#define OBJ_VNUM_DRAGONDAGGER 80
#define OBJ_VNUM_DRAGONMACE 81
#define OBJ_VNUM_PLATE 82
#define OBJ_VNUM_DRAGONSWORD 83
#define OBJ_VNUM_DRAGONLANCE 99
#define OBJ_VNUM_BATTLE_PONCHO 26
#define OBJ_VNUM_POTION_SILVER 43
#define OBJ_VNUM_POTION_GOLDEN 44
#define OBJ_VNUM_POTION_SWIRLING 45
#define OBJ_VNUM_KATANA_SWORD 98
#define OBJ_VNUM_EYED_SWORD 88
#define OBJ_VNUM_FIRE_SHIELD 92
#define OBJ_VNUM_MAGIC_JAR 93
#define OBJ_VNUM_HAMMER 6522
#define OBJ_VNUM_CHUNK_IRON 6521
/*
* Well known room virtual numbers.
* Defined in #ROOMS.
*/
#define ROOM_VNUM_LIMBO 2
#define ROOM_VNUM_CHAT 1200
#define ROOM_VNUM_TEMPLE 3001
#define ROOM_VNUM_SCHOOL 3700
/* RT ASCII conversions */
#define A ((flag64_t) 1 << 0)
#define B ((flag64_t) 1 << 1)
#define C ((flag64_t) 1 << 2)
#define D ((flag64_t) 1 << 3)
#define E ((flag64_t) 1 << 4)
#define F ((flag64_t) 1 << 5)
#define G ((flag64_t) 1 << 6)
#define H ((flag64_t) 1 << 7)
#define I ((flag64_t) 1 << 8)
#define J ((flag64_t) 1 << 9)
#define K ((flag64_t) 1 << 10)
#define L ((flag64_t) 1 << 11)
#define M ((flag64_t) 1 << 12)
#define N ((flag64_t) 1 << 13)
#define O ((flag64_t) 1 << 14)
#define P ((flag64_t) 1 << 15)
#define Q ((flag64_t) 1 << 16)
#define R ((flag64_t) 1 << 17)
#define S ((flag64_t) 1 << 18)
#define T ((flag64_t) 1 << 19)
#define U ((flag64_t) 1 << 20)
#define V ((flag64_t) 1 << 21)
#define W ((flag64_t) 1 << 22)
#define X ((flag64_t) 1 << 23)
#define Y ((flag64_t) 1 << 24)
#define Z ((flag64_t) 1 << 25)
#define aa ((flag64_t) 1 << 26) /* letters doubled due to conflicts */
#define bb ((flag64_t) 1 << 27)
#define cc ((flag64_t) 1 << 28)
#define dd ((flag64_t) 1 << 29)
#define ee ((flag64_t) 1 << 30)
#define ff ((flag64_t) 1 << 31)
#define gg ((flag64_t) 1 << 32)
#define hh ((flag64_t) 1 << 33)
#define ii ((flag64_t) 1 << 34)
#define jj ((flag64_t) 1 << 35)
#define kk ((flag64_t) 1 << 36)
#define ll ((flag64_t) 1 << 37)
#define mm ((flag64_t) 1 << 38)
#define nn ((flag64_t) 1 << 39)
#define oo ((flag64_t) 1 << 40)
#define pp ((flag64_t) 1 << 41)
#define qq ((flag64_t) 1 << 42)
#define rr ((flag64_t) 1 << 43)
#define ss ((flag64_t) 1 << 44)
#define tt ((flag64_t) 1 << 45)
#define uu ((flag64_t) 1 << 46)
#define vv ((flag64_t) 1 << 47)
#define ww ((flag64_t) 1 << 48)
#define xx ((flag64_t) 1 << 49)
#define yy ((flag64_t) 1 << 50)
#define zz ((flag64_t) 1 << 51)
#endif