/************************************************************************ *
*   File: constants.cpp                                 Part of Bylins    *
*  Usage: Numeric and string contants used by the MUD                     *
*                                                                         *
*  All rights reserved.  See license.doc for complete information.        *
*                                                                         *
*  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
*  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
*                                                                         *
*  $Author$                                                        *
*  $Date$                                           *
*  $Revision$                                                       *
************************************************************************ */

#include "constants.h"
#include "gameplay/magic/spells.h"

const char *circlemud_version = "CircleMUD, version 3.00 beta patchlevel 16";

const MobVnum kHorseVnum = 4014;
const ObjVnum kStartBread = 125;
const ObjVnum kCreateLight = 126;
const int kHorseCost = 100;

//Experience multiplication coefficients
double exp_coefficients[] =
	{
		1.0,            //0 remorts
		1.0 / 0.9,        //1 remort
		1.0 / 0.8,        //2 remorts
		1.0 / 0.7,        //3 remorts
		1.0 / 0.6,        //4 remorts
		1.0 / 0.5,        //5 remorts
		1.0 / 0.4,        //6 remorts
		1.0 / 0.3,        //7 remorts
		1.0 / 0.2,        //8 remorts
		1.0 / 0.1,        //9 remorts
		1.0 / 0.09,        //10 remorts
		1.0 / 0.08,        //11 remorts
		1.0 / 0.07,        //12 remorts
		1.0 / 0.06,        //13 remorts
		1.0 / 0.05,        //14 remorts
		1.0 / 0.05        //15 remorts
	};


// strings corresponding to ordinals/bitvectors in structs.h **********


// (Note: strings for class definitions in class.c instead of here)


// cardinal directions

const char *dirs_rus[] = {
		"север",
		"восток",
		"юг",
		"запад",
		"вверх",
		"вниз",
		"\n"
	};

const char *dirs[] = {
		"north",
		"east",
		"south",
		"west",
		"up",
		"down",
		"\n"
	};

const char *DirsTo[] = {
		"на север",
		"на восток",
		"на юг",
		"на запад",
		"вверх",
		"вниз",
		"\n"
	};

const char *DirsFrom[] = {
		"с юга",
		"с запада",
		"с севера",
		"с востока",
		"снизу",
		"сверху",
		"\n"
	};

// ROOM_x
const char *room_bits[] = {
		"темная",
		"ДТ",
		"не для мобов",
		"внутри",
		"мирная",
		"глухая",
		"не выследить",
		"нет магии",
		"однопроходная",
		"телепортация в комнату запрещена",
		"БОГИ",
		"замок",
		"*HCRSH",
		"вход в замок",
		"*в ОЛС",
		"*",            // BFS MARK
		"для магов",
		"для лекарей",
		"для воров",
		"для богатырей",
		"для наемников",
		"для дружинников",
		"для витязей",
		"для охотников",
		"жертвенник",
		"молельня",
		"кузница",
		"для купцов",
		"для волхвов",
		"арена",
		"\n",
		"не призвать",
		"телепортация из комнаты запрещена",
		"нельзя верхом",
		"внепогодная",
		"медленный ДТ",
		"*провалился под лед",
		"не переместиться",
		"слышно арену",
		"транслируем арену",
		"нельзя атаковать",
		"квестовая",
		"всегда светло",
		"нет внумов",
		"\n",
		"передача вещей запрещена",
		"арена Доминирования",
		"\n",
		"\n"
	};

// EX_x
const char *exit_bits[] = {
		"есть дверь",
		"закрыта",
		"заперта",
		"не взломать",
		"скрыто",
		"замок сломан",
		"в копию",
		"\n"
	};

// SECT_
const char *sector_types[] = {
		"Гладкий пол",
		"Улица",
		"Поле",
		"Лес",
		"Холмы",
		"Горы",
		"Плават. вода",
		"Неплав. вода",
		"В воздухе",
		"Под водой",
		"Скрытая",
		"Мощеная дорога",
		"Утоптанная дорога",
		"Разбитая дорога",
		"\n"
	};

/*
 * SEX_x
 * Not used in sprinttype() so no \n.
 */
const char *genders[] = {"бесполое",
						 "мужчина",
						 "женщина",
						 "многоголовый",
						 "\n"
};

// POS_x
const char *position_types[] = {"Мертв",
								"При смерти",
								"Без сознания",
								"В обмороке",
								"Спит",
								"Отдыхает",
								"Сидит",
								"Сражается",
								"Стоит",
								"\n"
};

// RESISTANCE_x
const char *resistance_types[] = {"Защита от стихии огня",
								  "Защита от стихии воздуха",
								  "Защита от стихии воды",
								  "Защита от стихии земли",
								  "Защита от тяжелых ран",
								  "Защита от магии разума",
								  "Защита от ядов и болезней",
								  "Защита от стихии тьмы",
								  "\n"
};

// EPlrFlag::x
const char *player_bits[] =
	{
		"убийца",
		"вор",
		"заморожен",
		"DONTSET",
		"пишет",
		"отправляет письмо",
		"CSH",
		"SITEOK",
		"крики запрещены",
		"титул запрещен",
		"УДАЛЕН",
		"есть точка входа",
		"автобот",
		"не может быть удален",
		"INVST",
		"CRYO",
		"HELL",
		"NAMED",
		"REGED",
		"DUMB",
		"скриптер",
		"спамер",
		"<null>",
		"<null>",
		"<null>",
		"<null>",
		"<null>",
		"<null>",
		"*", // reserved for MOB_DELETE
		"*", // reserved for MOB_FREE
		"\n",
		"\n",
		"\n",
		"\n"
	};

// MOB_x
const char *action_bits[] = {"*спец",
							 "!ходит",
							 "подбирает",
							 "моб",
							 "!заколоть",
							 "агрессивен",
							 "зона",
							 "трус",
							 "агр.днем",
							 "агр.ночью",
							 "агр.полнолуние",
							 "помнит",
							 "помогает",
							 "!очар",
							 "!призывать",
							 "!усыпить",
							 "!сбить",
							 "!ослепить",
							 "скакун",
							 "!оцепенить",
							 "!умолчать",
							 "агр.христиане",
							 "агр.язычники",
							 "!страх",
							 "!групится",
							 "поднят",
							 "лутер",
							 "!убить",
							 "*удален",
							 "*очищен",
							 "\n",
							 "плавает",
							 "летает",
							 "только в воде",
							 "агр.зимой",
							 "агр.весной",
							 "агр.летом",
							 "агр.осенью",
							 "появл.днем",
							 "появл.ночью",
							 "появл.полнолуние",
							 "появл.зимой",
							 "появл.весной",
							 "появл.летом",
							 "появл.осенью",
							 "!сражается",
							 "снижение экстраатак",
							 "орда",
							 "клон",
							 "!убить.точным.стилем",
							 "!подсечь",
							 "*ангел-защитник",
							 "*моб-стражник",
							 "игн.печать",
							 "нет.опыта.за.удары",
							 "!богатыр.молот",
							 "*порождение разума",
							 "*призванный",
							 "\n",
							 "огненное дыхание",
							 "зловонное дыхание",
							 "ледяное дыхание",
							 "кислотное дыхание",
							 "ослепляющее дыхание",
							 "!тренируются умения",
							 "!отдыхает",
							 "массовая атака",
							 "!оглушить",
							 "!помогают",
							 "открывает двери",
							 "игнорирует !моб",
							 "игнорирует мирные",
							 "*оживлен",
							 "!оживить",
							 "осторожный стиль",
							 "игн.строй",
							 "\n",
							 "\n"
};

const char *function_bits[] = {"!север",
							   "!восток",
							   "!юг",
							   "!запад",
							   "!вверх",
							   "!вниз",
							   "травит",
							   "невидим",
							   "подкрадывается",
							   "маскируется",
							   "*",
							   "прилетает",
							   "приползает",
							   "прискакивает",
							   "приплывает",
							   "прибегает",
							   "*",
							   "*",
							   "*",
							   "*",
							   "воздух",
							   "вода",
							   "земля",
							   "огонь",
							   "может быть нанят",
							   "!фридроп",
							   "!ингредиенты",
							   "!ватага",
							   "\n",
							   "ворует",
							   "вооружается",
							   "одевается",
							   "держит свет",
							   "!берет предметы",
							   "!опыт редкое убийство",
							   "\n",
							   "\n",
							   "\n"
};

// EPrf::x
const char *preference_bits[] = {"краткий",
								 "сжатый",
								 "!орать",
								 "!обратиться",
								 "п.жизни",
								 "п.запоминания",
								 "п.энергии",
								 "автовыходы",
								 "!напасть",
								 "призываем",
								 "КВЕСТ",
								 "!дублировать",
								 "всевидение",
								 "цвет 1",
								 "цвет 2",
								 "!иммканал",
								 "лог 1",
								 "лог 2",
								 "!аукцион",
								 "!болтать",
								 "себя в бою",
								 "флаги комнат",
								 "п.опыта",
								 "п.выходов",
								 "п.уровня",
								 "п.денег",
								 "п.тика",
								 "точный Стиль",
								 "осторожный Стиль",
								 "КОДЕР",
								 "\n",
								 "автозаучивание",
								 "!крики",
								 "IAC GA",
								 "полный состав группы",
								 "авто помощь",
								 "автограбеж",
								 "автодележ",
								 "брать куны",
								 "!арена",
								 "!базар",
								 "!клоны",
								 "!кто-то",
								 "мощная атака",
								 "улучшеная мощная атака",
								 "прицельная атака",
								 "улучшеная прицельная атака",
								 "новости",
								 "уведомления",
								 "хран.расс",
								 "хран.взял",
								 "реж.пкл",
								 "реж.политика",
								 "жел.ветер",
								 "пкл.формат",
								 "сокланы",
								 "оффтоп",
								 "потеря связи",
								 "без ингр.",
								 "не брать ингр.",
								 "кличи",
								 "\n",
								 "!оффтоп",
								 "ПАЛАЧ",
								 "реж.карта",
								 "может реморт",
								 "вход в зону",
								 "опечатки",
								 "сжатые маг.щиты",
								 "авто.не.призыв",
								 "канал.демигодов",
								 "режим.слепого",
								 "хеши.комнаты",
								 "реж.тестер",
								 "контроль.IP",
								 "в строю",
								 "двойной бросок",
								 "тройной бросок",
								 "теневой бросок",
								 "показывать задержки",
								 "активирован telegram",
								 "воровская заточка",
								 "\n"
};

// AFF_ROOM_x
// Список описаний аффектов на комнатах которые видны - без DETECT_MAGIC
const char *room_aff_visib_bits[] =
	{
		"&W... земля освещена колдовством ...&n",    // 0
		"&B... все окутано туманом &Kсмерти&B ...&n",        // AFF_DEADLY_FOG
		"",    // AFF_RUNE_LABEL
		"", // AFF_FORBIDDEN
		"&Y... чарующий огненный узор плывет в воздухе ...&n", // AFF_HYPNOTIC_PATTERN
		"&K... множество черных сухих рук высовывается из земли и шарит в воздухе!&n", // AFF_EVARDS_BLACK_TENTACLES
		"&R... раскаленные громовые камни рушатся на землю!&n", // AFF_METEORSTORM
		"&W... чудовищная буря кружится над вашей головой ...&n", // AFF_THUNDERSTORM
		"\n",
		"\n",
		"\n"
	};
int xdfa = 11;
// Список описаний аффектов на комнатах готорые видны - с DETECT_MAGIC
const char *room_aff_invis_bits[] =
	{
		"&W... земля освещена колдовством ...&n",    // 0
		"&B... туман &Kсмерти&B плывет над вами  ...&n", // AFF_DEADLY_FOG
		"&G... светящиеся руны на земле складываются в чьё-то имя ...&n",    // AFF_RUNE_LABEL
		"&c... магическая печать закрывает все входы ...&n", // AFF_FORBIDDEN
		"&Y... чарующий огненный узор плывет в воздухе ...&n", // AFF_HYPNOTIC_PATTERN
		"&K... множество черных сухих рук высовывается из земли и шарит в воздухе!&n", // AFF_EVARDS_BLACK_TENTACLES
		"&R... раскаленные громовые камни рушатся на землю!&n", // AFF_METEORSTORM
		"&W... чудовищная буря кружится над вашей головой ...&n", // AFF_THUNDERSTORM
		"\n",
		"\n",
		"\n",
	};

const char *room_self_aff_invis_bits[] =
	{
		"&W... земля освещена колдовством ...&n",    // 0
		"&B... туман &Kсмерти&B плывет над вами  ...&n", // AFF_DEADLY_FOG
		"&G... светящиеся руны на земле складываются в Ваше имя ...&n",    // AFF_RUNE_LABEL
		"&c... магическая печать закрывает все входы ...&n", // AFF_FORBIDDEN
		"&Y... чарующий огненный узор плывет в воздухе ...&n", // AFF_HYPNOTIC_PATTERN
		"&K... множество черных сухих рук высовывается из земли и шарит в воздухе!&n", // AFF_EVARDS_BLACK_TENTACLES
		"&R... раскаленные громовые камни рушатся на землю!&n", // AFF_METEORSTORM
		"&W... чудовищная буря кружится над вашей головой ...&n", // AFF_THUNDERSTORM
		"\n",
		"\n",
		"\n",
	};

// CON_x
const char *connected_types[] =
	{
		// 0-9
		"В игре",
		"Disconnecting",
		"Get name",
		"Confirm name",
		"Get password",
		"Get new PW",
		"Confirm new PW",
		"Select sex",
		"Select class",
		"Reading MOTD",
		// 10-19
		"Main Menu",
		"Get descript.",
		"Changing PW 1",
		"Changing PW 2",
		"Changing PW 3",
		"Self-Delete 1",
		"Self-Delete 2",
		"Disconnecting",
		"Object edit",
		"Room edit",
		// 20-29
		"Zone edit",
		"Mobile edit",
		"Trigger edit",
		"Get name2",
		"Get name3",
		"Get name4",
		"Get name5",
		"Get name6",
		"Select religion",
		"Select race",
		// 30-39
		"Select lows",
		"Select keytable",
		"Get email",
		"Roll stats",
		"Recept edit",
		"Select kin",
		"ERROR",		// удалено, можно использовать
		"ERROR",		// удалено, можно использовать
		"map olc",
		"Select color",
		// 40-49
		"Board message edit",
		"House edit",
		"Generate new name",
		"Glory OLC",
		"Base stats reroll",
		"Select place of birth",
		"Clan MoD edit",
		"GloryConst OLC",
		"NamedStuff OLC",
		"Select new kin",
		// 50-57
		"Select new race",
		"Interactive console",
		"обмен гривен",
		"меню сброса параметров",
		"sedit",
		"select new religion",
		"Verification",
		"Just connected",
		"\n"
	};

/*
 * WEAR_x - for eq list
 * Not use in sprinttype() so no \n.
 */
const char *where[] = {"<для освещения>             ",
					   "<правый указательный палец> ",
					   "<левый указательный палец>  ",
					   "<на шее>                    ",
					   "<на груди>                  ",
					   "<на теле>                   ",
					   "<на голове>                 ",
					   "<на ногах>                  ",
					   "<на ступнях>                ",
					   "<на кистях>                 ",
					   "<на руках>                  ",
					   "<щит>                       ",
					   "<на плечах>                 ",
					   "<на поясе>                  ",
					   "<на правом запястье>        ",
					   "<на левом запястье>         ",
					   "<в правой руке>             ",
					   "<в левой руке>              ",
					   "<в обеих руках>             ",
					   "<для стрел>                 "
};

// WEAR_x - for stat
const char *equipment_types[] = {"использует для освещения",
								 "надето на правый большой палец",
								 "надето на левый большой палец",
								 "намотано на шею",
								 "болтается на груди",
								 "надето на тело",
								 "надето на голову",
								 "надето на ноги",
								 "обут",
								 "на кистях",
								 "надето на руки",
								 "в качестве щита",
								 "наброшено на плечи",
								 "надето на пояс",
								 "на правом запястье",
								 "на левом запястье",
								 "сжимает в правой руке",
								 "держит в левой руке",
								 "держит в обоих руках",
								 "использует для стрел",
								 "\n"
};

// ITEM_x (ordinal object types)
const char *item_types[] = {"UNDEFINED",
							"СВЕТ",
							"СВИТОК",
							"ПАЛОЧКА",
							"ПОСОХ",
							"ОРУЖИЕ",
							"ОГНЕВОЕ ОРУЖИЕ",
							"РАКЕТА",
							"ДРАГОЦЕННОСТЬ",
							"БРОНЯ",
							"ВОЛШЕБНОЕ ЗЕЛЬЕ",
							"ОДЕЖДА",
							"ДРУГОЕ",
							"TRASH",
							"МУСОР",
							"КОНТЕЙНЕР",
							"БУМАГА",
							"ЕМКОСТЬ",
							"КЛЮЧ",
							"ЕДА",
							"ДЕНЬГИ",
							"ПЕРО",
							"ЛОДКА",
							"ИСТОЧНИК",
							"МАГИЧЕСКАЯ КНИГА",
							"МАГИЧЕСКИЙ ИНГРЕДИЕНТ",
							"МАГИЧЕСКИЙ КОМПОНЕНТ",
							"МАТЕРИАЛ",
							"БИНТ",
							"ЛЕГКИЕ ДОСПЕХИ",
							"СРЕДНИЕ ДОСПЕХИ",
							"ТЯЖЕЛЫЕ ДОСПЕХИ",
							"ЗАЧАРОВАНИЕ ПРЕДМЕТА",
							"МАГИЧЕСКИЙ МАТЕРИАЛ",
							"МАГИЧЕСКАЯ СТРЕЛА",
							"МАГИЧЕСКИЙ КОНТЕЙНЕР",
							"\n"
};

const char *ingradient_bits[] = {"руна",
								 "огр.применение",
								 "огр.повтор",
								 "огр.уровня",
								 "рассыпется",
								 "\n"
};

const char *magic_container_bits[] = {"колчан",
									  "книга",
									  "фляга",
									  "\n"
};

// ITEM_WEAR_ (wear bitvector)
const char *wear_bits[] = {"ВЗЯТЬ",
						   "ПАЛЬЦЫ",
						   "ШЕЯ/ГРУДЬ",
						   "ТЕЛО",
						   "ГОЛОВА",
						   "НОГИ",
						   "СТУПНИ",
						   "КИСТИ",
						   "РУКИ",
						   "ЩИТ",
						   "ПЛЕЧИ",
						   "ПОЯС",
						   "ЗАПЯСТЬЕ",
						   "ПРАВАЯ.РУКА",
						   "ЛЕВАЯ.РУКА",
						   "ОБЕ.РУКИ",
						   "КОЛЧАН",
						   "\n"
};

// ITEM_x (extra bits)
const char *extra_bits[] = {"светится",
							"шумит",
							"!рента",
							"!пожертвовать",
							"!невидим",
							"невидим",
							"магический",
							"!бросить",
							"благословлен",
							"!продать",
							"рассыпется",
							"рассыпется вне зоны",
							"!обезоружить",
							"!рассыпется",
							"*отравлен",
							"заточен",
							"укреплен",
							"*появится днем",
							"*появится ночью",
							"*в полнолуние",
							"*появится зимой",
							"*появится весной",
							"*появится летом",
							"*появится осенью",
							"плавает",
							"летает",
							"можно метнуть",
							"*таймер запущен",
							"горит",
							"рассыпется на репоп",
							"\n",
							"!разыскать",
							"слабеет со временем",
							"устойчив к магии",
							"можно вплавить 1 камень",
							"можно вплавить 2 камня",
							"можно вплавить 3 камня",
							"сетовый предмет",
							"успех при изучении",
							"*именной предмет",
							"*окровавлен",
							"квестовый предмет",
							"* не используется",
							"* не используется",
							"!перелить",
							"уникальный",
							"*изменен кодом",
							"*!разруш.постой",
							"!нерушима",
							"*уникальная при покупке",
							"*одну не положить в кланхран",
							"\n",
							"\n",
							"\n"
};

// ITEM_NO_
const char *no_bits[] = {"!христиане",
						 "!язычники",
						 "!NEUTRAL",
						 "!маги",
						 "!лекари",
						 "!тати",
						 "!богатыри",
						 "!наемники",
						 "!дружинники",
						 "!витязи",
						 "!охотники",
						 "!кузнецы",
						 "!купцы",
						 "!волхвы",
						 "!колдуны",
						 "!кудесники",
						 "!волшебники",
						 "!чернокнижники",
						 "!воины",
						 "\n",
						 "!убийцы",
						 "!цветные",
						 "!боевыедействия",
						 "\n",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!мужчины",
						 "!женщины",
						 "!чармисы",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "\n",
						 "!свободно",
						 "!свободно",
						 "!свободно",
						 "!пккланы",
						 "\n",
						 "\n"
};

// ITEM_ANTI
const char *anti_bits[] = {"!христиане",
						   "!язычники",
						   "!NEUTRAL",
						   "!маги",
						   "!лекари",
						   "!тати",
						   "!богатыри",
						   "!наемники",
						   "!дружинники",
						   "!витязи",
						   "!охотники",
						   "!кузнецы",
						   "!купцы",
						   "!волхвы",
						   "!колдуны",
						   "!кудесники",
						   "!волшебники",
						   "!чернокнижники",
						   "!воины",
						   "\n",
						   "!убийцы",
						   "!цветные",
						   "!боевыедействия",
						   "\n",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!мужчины",
						   "!женщины",
						   "!чармисы",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "\n",
						   "!свободно",
						   "!свободно",
						   "!свободно",
						   "!пккланы",
						   "\n",
						   "\n"
};

const std::vector<ApplyNegative> apply_negative = {
	{"защита", EApply::kAc, ESaving::kNone},
	{"воля", EApply::kSavingWill, ESaving::kWill},
	{"здоровье", EApply::kSavingCritical, ESaving::kCritical},
	{"стойкость", EApply::kSavingStability, ESaving::kStability},
	{"реакция", EApply::kSavingReflex, ESaving::kReflex},
};

const std::map<ESaving, std::string> saving_name = {
	{ESaving::kWill, "воля"},
	{ESaving::kCritical, "здоровье"},
	{ESaving::kStability, "стойкость"},
	{ESaving::kReflex, "реакция"},
	{ESaving::kNone, "отсутствует"},
};

// MAT_
const char *material_name[] = {"НЕИЗВЕСТЕН",
							   "БУЛАТ",
							   "БРОНЗА",
							   "ЖЕЛЕЗО",
							   "СТАЛЬ",
							   "КОВАНАЯ.СТАЛЬ",
							   "ДРАГ.МЕТАЛЛ",
							   "КРИСТАЛЛ",
							   "ДЕРЕВО",
							   "ПРОЧНОЕ.ДЕРЕВО",
							   "КЕРАМИКА",
							   "СТЕКЛО",
							   "КАМЕНЬ",
							   "КОСТЬ",
							   "ТКАНЬ",
							   "КОЖА",
							   "ОРГАНИКА",
							   "БЕРЕСТА",
							   "ДРАГ.КАМЕНЬ",
							   "\n"
};

int material_value[] = {100,
						5,
						50,
						35,
						30,
						20,
						35,
						75,
						45,
						40,
						65,
						80,
						55,
						50,
						70,
						60,
						90,
						90,
						10
};

// CONT_x
const char *container_bits[] =
	{
		"CLOSEABLE",
		"PICKPROOF",
		"CLOSED",
		"LOCKED",
		"LOCK_BROKEN",
		"\n",
	};

/*
 * Уровень заполнения емкостей для питья и контейнеров для вещей
 * Not used in sprinttype() so no \n.
 */
const char *fullness[] =
	{
		"меньше, чем на четверть ",
		"меньше, чем наполовину ",
		"примерно наполовину ",
		"больше, чем наполовину ",
		"почти полностью ",
		""
	};

struct IntApplies int_app[] =
	{
//Ackn  SkUse  SpLv     SpCnt Impr Obser
		{10, -10, 10, 0, 2, -5},    // int = 0
		{10, -10, 10, 0, 2, -5},    // int = 1
		{10, -9, 10, 0, 2, -5},
		{14, -9, 10, 0, 2, -4},
		{18, -9, 15, 0, 2, -4},
		{22, -8, 20, 0, 3, -3},    // int = 5
		{26, -8, 25, 0, 3, -2},
		{30, -7, 30, 0, 3, -2},
		{34, -7, 40, 0, 3, -1},
		{38, -6, 50, 0, 3, -1},
		{42, -6, 60, 0, 4, 0},    // int = 10
		{46, -5, 63, 0, 4, 0},
		{50, -5, 66, 0, 4, 0},
		{53, -4, 69, 0, 4, 0},
		{57, -3, 72, 0, 5, 0},
		{60, -2, 75, 0, 5, 1},    // int = 15
		{64, -1, 78, 0, 6, 1},
		{68, 0, 81, 0, 6, 2},
		{72, 0, 84, 0, 7, 2},    // int = 18
		{76, 1, 87, 0, 7, 3},
		{80, 1, 90, 0, 8, 3},    // int = 20
		{82, 2, 92, 0, 8, 3},
		{84, 3, 94, 0, 8, 4},
		{86, 3, 96, 0, 8, 4},
		{88, 4, 98, 0, 8, 4},
		{90, 5, 100, 0, 9, 5},    // int = 25
		{91, 6, 105, 0, 9, 5},
		{92, 6, 110, 0, 9, 5},
		{93, 6, 115, 0, 9, 6},
		{94, 7, 120, 0, 9, 6},
		{95, 7, 130, 0, 10, 7},    // int = 30
		{95, 7, 135, 0, 10, 7},
		{95, 8, 140, 0, 10, 7},
		{95, 8, 145, 0, 10, 7},
		{95, 8, 150, 0, 10, 7},
		{96, 9, 150, 0, 11, 8},    // int = 35
		{96, 9, 155, 0, 11, 8},
		{96, 9, 155, 0, 11, 8},
		{96, 9, 160, 0, 11, 8},
		{96, 10, 160, 0, 11, 8},
		{97, 10, 165, 0, 12, 9},    // int = 40
		{97, 10, 165, 0, 12, 9},
		{97, 10, 170, 0, 12, 9},
		{97, 11, 170, 0, 12, 9},
		{97, 11, 175, 0, 13, 9},
		{98, 11, 175, 0, 13, 10},    // int = 45
		{98, 12, 180, 0, 13, 11},
		{98, 12, 180, 0, 14, 12},
		{99, 12, 190, 0, 14, 13},
		{99, 12, 190, 0, 14, 14},
		{100, 12, 200, 0, 15, 15},    // int = 50
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    // int = 55
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    //int = 60
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    // int = 65
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    //int = 70
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    // int = 75
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    //int = 80
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    // int 85
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    //int = 90
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},    //int = 95
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15},
		{100, 12, 200, 0, 15, 15}    //int = 100
	};

const size_t INT_APP_SIZE = sizeof(int_app) / sizeof(*int_app);

#define s0 (0)
#define s1 (1 << 0)
#define s2 (1 << 1)
#define s3 (1 << 2)
#define s4 (1 << 3)
#define s5 (1 << 4)
#define s6 (1 << 5)
#define s7 (1 << 6)

struct SizeApplies size_app[] =
	{
// AC  BASH
		{-2, -10, 5, 1},    // size = 0
		{-2, -10, 5, 1},    // size = 2
		{-2, -10, 5, 1},
		{-2, -9, 4, 1},
		{-2, -9, 4, 2},
		{-2, -8, 4, 2},        // size = 10
		{-2, -8, 4, 2},
		{-2, -7, 4, 2},
		{-2, -7, 3, 2},
		{-2, -7, 3, 3},
		{-2, -6, 3, 3},        // size = 20
		{-1, -6, 3, 3},
		{-1, -6, 3, 3},
		{-1, -5, 2, 4},
		{-1, -5, 2, 4},
		{-1, -4, 2, 4},        // size = 30
		{-1, -4, 2, 4},
		{-1, -4, 2, 5},
		{-1, -3, 1, 5},
		{-1, -3, 1, 6},
		{-1, -2, 1, 6},        // size = 40
		{0, -2, 1, 7},
		{0, -1, 1, 7},
		{0, -1, 0, 8},
		{0, 0, 0, 9},
		{0, 0, 0, 9},        // size = 50
		{0, 0, 0, 10},
		{0, 1, 0, 11},
		{0, 1, -1, 11},
		{0, 1, -1, 12},
		{0, 2, -1, 12},        // size = 60
		{1, 2, -1, 13},
		{1, 2, -1, 13},
		{1, 3, -2, 14},
		{1, 3, -2, 14},
		{1, 4, -2, 15},        // size = 70
		{2, 4, -2, 16},
		{2, 5, -2, 17},
		{2, 5, -3, 18},
		{2, 5, -3, 19},
		{3, 6, -3, 20},        // size = 80
		{3, 6, -3, 21},
		{3, 7, -3, 22},
		{3, 7, -4, 23},
		{3, 7, -4, 24},
		{4, 8, -4, 25},        // size = 90
		{4, 8, -4, 26},
		{4, 9, -4, 27},
		{5, 9, -5, 28},
		{5, 10, -5, 29},
		{5, 10, -5, 30},    // size = 100
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    // size = 110
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 120
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 130
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 140
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 150
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 160
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 170
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 180
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},    //size = 190
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30},
		{5, 10, -5, 30}        //size = 200
	};

struct ChaApplies cha_app[] =
	{
// Lead Chrm Mr Illu Dam_to_hit_rate
		{-6, 50, 0, -6, 20},    // size = 0
		{-6, 70, 0, -6, 20},    // size = 1
		{-6, 90, 0, -6, 20},
		{-6, 100, 0, -5, 20},
		{-5, 120, 0, -5, 20},
		{-4, 140, 0, -4, 20},    // size = 5
		{-3, 160, 0, -4, 20},
		{-2, 180, 0, -4, 20},
		{-1, 200, 0, -3, 20},
		{0, 220, 0, -3, 20},
		{0, 260, 0, -2, 20},    // size = 10
		{1, 300, 0, -2, 20},
		{2, 340, 0, -1, 20},
		{3, 380, 0, -1, 20},
		{4, 420, 0, 0, 20},
		{5, 460, 0, 0, 20},    // size = 15
		{5, 500, 0, 1, 20},
		{6, 550, 0, 3, 20},
		{6, 600, 0, 5, 20},
		{7, 650, 0, 7, 20},
		{7, 700, 0, 9, 20},    // size = 20
		{8, 800, 0, 11, 20},
		{8, 840, 0, 12, 20},
		{9, 880, 0, 13, 20},
		{9, 920, 0, 14, 20},
		{10, 960, 0, 15, 20},    // size = 25
		{11, 1000, 0, 16, 20},
		{12, 1200, 0, 17, 20},
		{13, 1400, 0, 18, 20},
		{14, 1600, 0, 19, 20},
		{15, 1800, 0, 20, 20},    // size = 30
		{16, 2000, 0, 21, 20},
		{17, 2100, 0, 22, 20},
		{18, 2200, 0, 23, 20},
		{19, 2400, 0, 24, 20},
		{20, 2600, 0, 25, 20},    // size = 35
		{21, 2800, 0, 26, 20},
		{22, 3000, 0, 27, 20},
		{23, 3200, 0, 28, 20},
		{24, 3400, 0, 29, 20},
		{25, 3500, 0, 30, 20},    // size = 40
		{26, 3700, 0, 31, 20},
		{27, 3900, 0, 32, 20},
		{28, 4000, 0, 33, 20},
		{29, 4100, 0, 34, 20},
		{30, 4300, 0, 35, 20},    // size = 45
		{31, 4500, 0, 36, 20},
		{32, 4600, 0, 37, 20},
		{33, 4700, 0, 38, 20},
		{34, 4900, 0, 39, 20},
		{35, 5100, 0, 40, 20},    // size = 50
		{36, 5300, 0, 41, 20},
		{37, 5400, 0, 42, 20},
		{38, 5500, 0, 43, 20},
		{39, 5700, 0, 44, 20},
		{40, 5900, 0, 45, 20},    // size = 55
		{41, 6000, 0, 46, 20},
		{42, 6100, 0, 47, 20},
		{43, 6200, 0, 48, 20},
		{44, 6400, 0, 49, 20},
		{45, 6500, 0, 50, 20},    // size = 60
		{46, 6600, 0, 51, 20},
		{47, 6700, 0, 52, 20},
		{48, 6800, 0, 53, 20},
		{49, 6900, 0, 54, 20},
		{50, 6900, 0, 55, 20},    // size = 65
		{51, 7000, 0, 56, 20},
		{52, 7100, 0, 57, 20},
		{53, 7200, 0, 58, 20},
		{54, 7300, 0, 59, 20},
		{55, 7400, 0, 60, 20},    // size = 70
		{56, 7400, 0, 61, 20},
		{57, 7500, 0, 62, 20},
		{58, 7600, 0, 63, 20},
		{59, 7700, 0, 64, 20},
		{60, 7600, 0, 65, 20},    // size = 75
		{61, 7800, 0, 66, 20},
		{62, 7800, 0, 67, 20},
		{63, 7800, 0, 68, 20},
		{64, 7900, 0, 69, 20},
		{65, 8000, 0, 70, 20},    // size = 80
		{66, 8000, 0, 71, 20},
		{67, 8100, 0, 72, 20},
		{68, 8200, 0, 73, 20},
		{69, 8300, 0, 74, 20},
		{70, 8400, 0, 75, 20},    // size = 85
		{71, 8500, 0, 76, 20},
		{72, 8600, 0, 77, 20},
		{73, 8700, 0, 78, 20},
		{74, 8900, 0, 79, 20},
		{75, 9000, 0, 80, 20},    // size = 90
		{76, 9000, 0, 81, 20},
		{77, 9100, 0, 82, 20},
		{78, 9100, 0, 83, 20},
		{79, 9100, 0, 84, 20},
		{80, 9200, 0, 85, 20},    // size = 95
		{81, 9300, 0, 86, 20},
		{82, 9400, 0, 87, 20},
		{83, 9500, 0, 88, 20},
		{84, 9600, 0, 89, 20},
		{85, 9700, 0, 90, 20}    // size = 100
	};

struct WeaponApplies weapon_app[] =
	{
// Sho   Bash  Parrying
		{1, -5, -10},        // ww = 0
		{1, -4, -10},        // ww = 1
		{1, -3, -8},
		{2, -2, -6},
		{2, -1, -4},
		{3, 0, -2},        // ww = 5
		{3, 1, 0},
		{4, 2, 2},
		{4, 3, 4},
		{5, 4, 6},
		{5, 5, 8},        // ww = 10
		{5, 6, 10},
		{6, 7, 11},
		{6, 8, 12},
		{7, 9, 13},
		{7, 10, 15},        // ww = 15
		{8, 12, 16},
		{8, 14, 17},
		{9, 16, 18},        // ww = 18
		{9, 18, 19},
		{10, 20, 20},        // ww = 20
		{11, 21, 21},
		{12, 22, 22},
		{13, 23, 23},
		{14, 24, 24},
		{15, 25, 25},        // ww = 25
		{16, 26, 26},
		{17, 27, 27},
		{18, 28, 28},
		{19, 29, 29},
		{20, 30, 30},        // ww = 30
		{22, 31, 31},
		{24, 32, 32},
		{26, 33, 33},
		{28, 34, 34},
		{30, 35, 35},        // ww = 35
		{32, 36, 36},
		{34, 37, 37},
		{36, 38, 38},
		{38, 39, 39},
		{40, 40, 40},        // ww = 40
		{41, 41, 41},
		{42, 42, 42},
		{43, 43, 43},
		{44, 44, 44},
		{45, 45, 45},        // ww = 45
		{46, 46, 46},
		{47, 47, 47},
		{48, 48, 48},
		{49, 49, 49},
		{50, 50, 50},        // ww = 50
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},           // ww = 55
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 60
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 65
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 70
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 75
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 80
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 85
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 90
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 95
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},
		{50, 50, 50},        // ww = 100
	};

namespace {

const char *tmp_npc_race_types[] =
	{
		"босс",
		"адд",
		"танк",
		"мели-дамагер",
		"лучник",
		"тать",
		"маг-дамагер",
		"маг-суппорт",
		"хилер"
	};

} //namespace

// MSVS 2012 c++11 suck
const std::vector<const char *> npc_role_types(tmp_npc_race_types,
											   tmp_npc_race_types + sizeof(tmp_npc_race_types) / sizeof(const char *));

const char *npc_race_types[] = {"Обычный",
								"Человек",
								"Зверолюд",
								"Птица",
								"Животное",
								"Пресмыкающееся",
								"Рыба",
								"Насекомое",
								"Растение",
								"Предмет",
								"Живой труп",
								"Призрак",
								"Нечисть",
								"Нематериальный дух",
								"Магическое создание",
								"\n"
};

int rev_dir[] =
	{
		2,
		3,
		0,
		1,
		5,
		4
	};

#if defined(OASIS_MPROG)
// * Definitions necessary for MobProg support in OasisOLC
const char *mobprog_types[] = {
	"INFILE",
	"ACT",
	"SPEECH",
	"RAND",
	"FIGHT",
	"DEATH",
	"HITPRCNT",
	"ENTRY",
	"GREET",
	"ALL_GREET",
	"GIVE",
	"BRIBE",
	"\n"
};
#endif

int movement_loss[] =
	{
		1,            // Inside
		1,            // City
		2,            // Field
		3,            // Forest
		4,            // Hills
		6,            // Mountains
		4,            // Swimming
		1,            // Unswimable
		1,            // Flying
		5,            // Underwater
		1,            // Secret
		1, // Мощеная дорога
		2, // Утоптанная дорога
		4, // Разбитая дорога
		0, 0, 0, 0, 0, 0,
		3,            // Field snow
		4,            // Field water
		4,            // Forest snow
		5,            // Forest water
		5,            // Hills snow
		6,            // Hills water
		8,            // Mountains snow
		2,            // THIN ice
		2,            // NORMAL ice
		2
	};

// Not used in sprinttype().
const char *weekdays[] = {"Понедельник",
						  "Вторник",
						  "Среда",
						  "Четверг",
						  "Пятница",
						  "Суббота",
						  "Воскресенье"
};

const char *weekdays_poly[] = {"Понедельник",
							   "Вторник",
							   "Третейник",
							   "Четверг",
							   "Пятница",
							   "Шестица",
							   "Седмица",
							   "Осмица",
							   "Неделя"
};

// Not used in sprinttype().
const char *month_name[] = {"Сичень",
							"Лютень",
							"Березозол",
							"Цветень",
							"Травень",
							"Червень",
							"Страдник",
							"Серпень",
							"Вересень",
							"Листопадник",
							"Листогной",
							"Студень"
};
const char *month_name_real[] = {"Январь",
								 "Февраль",
								 "Март",
								 "Апрель",
								 "Май",
								 "Июнь",
								 "Июль",
								 "Август",
								 "Сентябрь",
								 "Октябрь",
								 "Ноябрь",
								 "Декабрь"
};

const char *month_name_poly[] = {"Бейлет - Месяц Белого Сияния и Покоя Мира",
								 "Гэйлет - Месяц Вьюг и Стужи",
								 "Дайлет - Месяц Пробуждения Природы",
								 "Элет - Месяц Посева и Наречения",
								 "Вэйлет - Месяц Ветров",
								 "Хейлет - Месяц Получения Даров Природы",
								 "Тайлет - Месяц Завершения",
								 "Рамхат - Месяц Божественного Начала",
								 "Айлет - Месяц Новых Даров"
};

const char *month_name_o[] = {"месяц Зимы",
							  "месяц Зимнего Волка",
							  "месяц Снежного Гиганта",
							  "месяц Старых Сил",
							  "месяц Великого Поворота",
							  "месяц Весны",
							  "месяц Природы",
							  "месяц Равноденствия",
							  "месяц Дракона",
							  "месяц Солнца",
							  "месяц Света",
							  "месяц Битв",
							  "месяц Темных Сил",
							  "месяц Теней",
							  "месяц Длинных Теней",
							  "месяц Древней Тьмы",
							  "месяц Великого Зла"
};

const char *weapon_affects[] = {"слепота",
								"невидимость",
								"опр.наклонностей",
								"опр.невидимости",
								"опр.магии",
								"опр.жизни",
								"водохождение",
								"освящение",
								"проклятие",
								"инфравидение",
								"яд",
								"сопротивление.магии.тьмы",
								"сопротивление.магии.разума",
								"сон",
								"не.выследить",
								"доблесть",
								"подкрадывание",
								"спрятаться",
								"оцепенение",
								"полет",
								"молчание",
								"настороженность",
								"мигание",
								"не.сбежать",
								"свет",
								"освещение",
								"тьма",
								"опр.яда",
								"медлительность",
								"ускорение",
								"\n",
								"дыхание.водой",
								"кровотечение",
								"маскировка",
								"защита.богов",
								"воздушный.щит",
								"огненный.щит",
								"ледяной.щит",
								"зеркало.магии",
								"каменная.рука",
								"призматическая.аура",
								"воздушная.аура",
								"огненная.аура",
								"ледяная.аура",
								"глухота",
								"полководец",
								"земной.поклон",
								"затуманивание",
								"\n",
								"\n",
								"\n"
};

const char *pray_metter[] = {"- Яриле",
							 "- Макоши",
							 "- Перуну",
							 "- Велесу",
							 "* Пресвятой-Богородице",
							 "* Николе-Угоднику",
							 "* Илие-Пророку",
							 "* Георгию-Победоносцу",
							 "\n"
};

const char *pray_whom[] = {"Яриле",
						   "Макоши",
						   "Перуну",
						   "Велесу",
						   "Пресвятой-Богородице",
						   "Николе-Угоднику",
						   "Илие-Пророку",
						   "Георгию-Победоносцу",
						   "\n"
};

// Fields : whom location modifier bitvector battleflag
std::vector<PrayAffect> pray_affect =
	{
		{0, EApply::kNone, 0, to_underlying(EAffect::kInfravision), 0},    // Ярило
		{1, EApply::kHpRegen, 50, 0, 0},    // Мокошь
		{2, EApply::kStr, 1, 0, 0},    // Перун
		{3, EApply::kDex, 1, 0, 0},    // Велес
		{4, EApply::kMorale, 5, 0, 0},    // Дева Мария
		{5, EApply::kInt, 1, 0, 0},    // Никола Угодник
		{6, EApply::kHitroll, 2, 0, 0},    // Илия Пророк
		{7, EApply::kDamroll, 1, 0, 0}    // Григорий Победоносец
	};

// Количество маны волхва
int mana[] = {0,        // Wiz= 0
			  100,            // Wiz= 1
			  250,            // Wiz= 2
			  500,            // Wiz= 3
			  750,            // Wiz= 4
			  1000,            // Wiz= 5
			  1250,            // Wiz= 6
			  1500,            // Wiz= 7
			  1750,            // Wiz= 8
			  2000,            // Wiz= 9
			  2250,            // Wiz=10
			  2500,            // Wiz=11
			  2750,            // Wiz=12
			  3000,            // Wiz=13
			  3250,            // Wiz=14
			  3500,            // Wiz=15
			  3650,            // Wiz=16
			  3900,            // Wiz=17
			  4400,            // Wiz=18
			  4900,            // Wiz=19
			  5400,            // Wiz=20
			  5900,            // Wiz=21
			  6400,            // Wiz=22
			  6900,            // Wiz=23
			  7400,            // Wiz=24
			  7900,            // Wiz=25
			  8400,            // Wiz=26
			  8900,            // Wiz=27
			  9400,            // Wiz=28
			  9900,            // Wiz=29
			  10400,            // Wiz=30
			  10900,            // Wiz=31
			  11400,            // Wiz=32
			  11900,            // Wiz=33
			  12400,            // Wiz=34
			  12900,            // Wiz=35
			  13400,            // Wiz=36
			  13900,            // Wiz=37
			  14400,            // Wiz=38
			  14900,            // Wiz=39
			  15400,            // Wiz=40
			  15900,            // Wiz=41
			  16400,            // Wiz=42
			  16900,            // Wiz=43
			  17400,            // Wiz=44
			  17900,            // Wiz=45
			  18400,            // Wiz=46
			  18900,            // Wiz=47
			  19400,            // Wiz=48
			  19900,            // Wiz=49
			  25000        // Wiz=50
};

// Количество гейн маны волхва в секунду в зависимости от инты
int mana_gain_cs[] = {2,    // Int= 0
					  3,            // Int= 1
					  3,            // Int= 2
					  4,            // Int= 3
					  4,            // Int= 4
					  5,            // Int= 5
					  5,            // Int= 6
					  6,            // Int= 7
					  6,            // Int= 8
					  7,            // Int= 9
					  7,            // Int=10
					  8,            // Int=11
					  8,            // Int=12
					  9,            // Int=13
					  9,            // Int=14
					  10,            // Int=15
					  11,            // Int=16
					  12,            // Int=17
					  13,            // Int=18
					  14,            // Int=19
					  15,            // Int=20
					  16,            // Int=21
					  17,            // Int=22
					  18,            // Int=23
					  19,            // Int=24
					  20,            // Int=25
					  22,            // Int=26
					  24,            // Int=27
					  26,            // Int=28
					  27,            // Int=29
					  29,            // Int=30
					  31,            // Int=31
					  33,            // Int=32
					  35,            // Int=33
					  37,            // Int=34
					  39,            // Int=35
					  41,            // Int=36
					  44,            // Int=37
					  47,            // Int=38
					  50,            // Int=39
					  53,            // Int=40
					  56,            // Int=41
					  59,            // Int=42
					  62,            // Int=43
					  65,            // Int=44
					  68,            // Int=45
					  71,            // Int=46
					  74,            // Int=47
					  77,            // Int=48
					  80,            // Int=49
					  83,            // Int=50
					84,
					85,
					86,
					87,
					88,
					89,
					90,
					91,
					92,
					93, //60
					94,
					95,
					96,
					97,
					98,
					99,
					100,
					101,
					102,
					103, //70
					104,
					105,
					106,
					107,
					108,
					109,
					110,
					111,
					112,
					113, //80
					114,
					115,
					116,
					117,
					118,
					119,
					120,
					121,
					122,
					123, //90
					124,
					125,
					126,
					127,
					128,
					129,
					130,
					131,
					132,
					133 //100
};

// Weapon attack texts
struct AttackHitType attack_hit_text[] =
	{
		{"ударил", "ударить"},    // 0
		{"ободрал", "ободрать"},
		{"хлестнул", "хлестнуть"},
		{"рубанул", "рубануть"},
		{"укусил", "укусить"},
		{"огрел", "огреть"},    // 5
		{"сокрушил", "сокрушить"},
		{"резанул", "резануть"},
		{"оцарапал", "оцарапать"},
		{"подстрелил", "подстрелить"},
		{"пырнул", "пырнуть"},    // 10
		{"уколол", "уколоть"},
		{"ткнул", "ткнуть"},
		{"лягнул", "лягнуть"},
		{"боднул", "боднуть"},
		{"клюнул", "клюнуть"},
		{"ужалил", "ужалить"},
		{"*", "*"},
		{"*", "*"},
		{"*", "*"}
	};

const char *godslike_bits[] =
	{
		"GODSLIKE",
		"GODSCURSE",
		"HIGHGOD",
		"REMORT",
		"DEMIGOD",
		"PERSLOG",
		"TESTER",
		"SKILLTESTER",
		"\n"
	};

const char *weapon_class[] = {"луки",
							  "короткие лезвия",
							  "длинные лезвия",
							  "секиры",
							  "палицы и дубины",
							  "иное оружие",
							  "двуручники",
							  "проникающее оружие",
							  "копья и рогатины"
};

const char *SIELENCE{"Вы немы, как рыба об лед.\r\n"};
const char *SOUNDPROOF{"Стены заглушили ваши слова.\r\n"};

// vim: ts=4 sw=4 tw=0 noet syntax=cpp :
