<?php
/**
 * Copyright (c) 2018.
 * Author: Igor Barkov <lopar.4ever@gmail.com>
 * Project name: Battles-Game
 */

ini_set('display_errors', 'On');
error_reporting(E_ALL);
define("GAMEDOMAIN","combats.loc");
/*
 * Запрещаем кэшировать
 */
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

/**
 * Классы для работы с базой данных.
 */
require_once('Database/Mysql.php');
require_once('Database/Exception.php');
require_once('Database/Statement.php');
require_once('Database/db.php');

/**
 * Автозагрузка классов.
 */
spl_autoload_register(function ($class_name) {
    $class_name .= '.php';
    if (file_exists('classes/' . $class_name)) {
        require_once 'classes/' . $class_name;
    } elseif (file_exists('models/' . $class_name)) {
        require_once 'models/' . $class_name;
    } else {
        throw new Exception(sprintf('Невозможно загрузить класс %s',$class_name));
    }

});

/* === Для нападалок. Сперва комнаты в которых нельзя напасть, потом персонаж на которого нельзя напасть. === */
$unkilable = [
    'rooms' => [620, 621, 1051, 1052],
    'users' => [10962, 10964, 10965]
];
// ???
$canalenters = [620];
$caverooms = [621];
$userslots = ['sergi', 'kulon', 'perchi', 'weap', 'bron', 'r1', 'r2', 'r3', 'helm', 'shit', 'boots', 'rybax', 'plaw', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9', 'm10'];

$rooms = [
    0 => "Секретная Комната",
    1 => "Дом поединков",

    20 => "Центральная площадь",
    21 => "Страшилкина улица",
    22 => "Магазин",
    23 => "Ремонтная мастерская",
    24 => "Памятник Архангелу",
    25 => "Комиссионный магазин",
    26 => "Большая парковая улица",
    27 => "Почта",
    28 => "Регистратура кланов",
    29 => "Банк",
    30 => "Регистратура кланов (мираж)",
    31 => "Башня смерти",
    32 => "Готический замок",
    33 => "Лабиринт хаоса",
    34 => "Цветочный магазин",
    35 => "Сувенирный магазин",

    37 => "Готический замок - приемная",
    38 => "Готический замок - арсенал",
    39 => "Готический замок - внутренний двор",
    40 => "Готический замок - мастерские",
    41 => "Готический замок - комнаты отдыха",

    42 => "Лотерея Сталкеров",
    43 => "Хижина Знахаря",
    44 => "Новогодняя елка",
    45 => "Замок Мэра",
    47 => "Замок (строительство)",
    48 => "Обитель Хаоса",
    49 => "Проход к Цитадели Хаоса",
    50 => "Магазин Берёзка",
    51 => "Парковая улица",
    52 => "Квартал Законников",
    53 => "Библиотека",

    200 => "Турнир",
    401 => "Врата Ада",

    // БС
    501 => "Восточная Крыша",
    502 => "Бойница",
    503 => "Келья 3",
    504 => "Келья 2",
    505 => "Западная Крыша 2",
    506 => "Келья 4",
    507 => "Келья 1",
    508 => "Служебная комната",
    509 => "Зал Отдыха 2",
    510 => "Западная Крыша 1",
    511 => "Выход на Крышу",
    512 => "Зал Статуй 2",
    513 => "Храм",
    514 => "Восточная комната",
    515 => "Зал Отдыха 1",
    516 => "Старый Зал 2",
    517 => "Старый Зал 1",
    518 => "Красный Зал 3",
    519 => "Зал Статуй 1",
    520 => "Зал Статуй 3",
    521 => "Трапезная 3",
    522 => "Зал Ожиданий",
    523 => "Оружейная",
    524 => "Красный Зал-Окна",
    525 => "Красный Зал",
    526 => "Гостинная",
    527 => "Трапезная 1",
    528 => "Внутренний Двор",
    529 => "Внутр.Двор-Вход",
    530 => "Желтый Коридор",
    531 => "Мраморный Зал 1",
    532 => "Красный Зал 2",
    533 => "Библиотека 1",
    534 => "Трапезная 2",
    535 => "Проход Внутр. Двора",
    536 => "Комната с Камином",
    537 => "Библиотека 3",
    538 => "Выход из Мрам.Зала",
    539 => "Красный Зал-Коридор",
    540 => "Лестница в Подвал 1",
    541 => "Южный Внутр. Двор",
    542 => "Трапезная 4",
    543 => "Мраморный Зал 3",
    544 => "Мраморный Зал 2",
    545 => "Картинная Галерея 1",
    546 => "Лестница в Подвал 2",
    547 => "Проход Внутр. Двора 2",
    548 => "Внутр.Двор-Выход",
    549 => "Библиотека 2",
    550 => "Картинная Галерея 3",
    551 => "Картинная Галерея 2",
    552 => "Лестница в Подвал 3",
    553 => "Терасса",
    554 => "Оранжерея",
    555 => "Зал Ораторов",
    556 => "Лестница в Подвал 4",
    557 => "Темная Комната",
    558 => "Винный Погреб",
    559 => "Комната в Подвале",
    560 => "Подвал",
    600 => "Вход в Цитадель Хаоса",
    601 => "Цитадель Хаоса",
    602 => "Городской парк",
    603 => "Арена Ангелов",

    620 => "Вход в Рудник",
    621 => "Рудник",

    660 => "Гостиница, холл",
    661 => "Гостиница",
    662 => "Памятник Архангелу",

    // Клановая улица
    650 => "Клановая улица",
    651 => "Клановая улица",
    652 => "Клановый Замок",

    760 => "Тёмный Лес",

    1000 => "Вход в рудник",
    1001 => "Рудник",
    1051 => "Вход в Лабиринты",
    1052 => "Лабиринты",
    1053 => "Храмовая лавка",
    1054 => "Фонтан Удачи",
    1055 => "Групповое сражение",

    // Тайный проход из Клуба в Замок Законников
    2000 => "Подземный проход",
    2001 => "Подземный проход (1)",
    2002 => "Подземный проход (2)",
    2003 => "Подземный проход (3)",
    2004 => "Подземный проход (4)",
    2005 => "Подземный проход (5)",
    2006 => "Подземный проход (6)",
    2007 => "Подземный проход (7)",
    2008 => "Подземный проход (8)",
    2009 => "Подземный проход (9)",
    2010 => "Подземный проход (10)",
    2011 => "Подземный проход (11)",
    2012 => "Подземный проход (12)",
    2013 => "Подземный проход (13)",
    2014 => "Подземный проход (14)",
    2015 => "Подземный проход (15)",
    2016 => "Подземный проход (16)",
    2017 => "Подземный проход (17)",
    2018 => "Подземный проход (18)",
    2019 => "Подземный проход (19)",
    2020 => "Подземный проход (20)",
    2021 => "Подземный проход (21)",
    2022 => "Подземный проход (22)",
    2023 => "Подземный проход (23)",
    2024 => "Подземный проход (24)",
    2025 => "Подземный проход (25)",
    2026 => "Подземный проход (26)",
    2027 => "Подземный проход (27)",
    2028 => "Подземный проход (28)",
    2029 => "Подземный проход (29)",
    2030 => "Подземный проход (30)",
    2031 => "Подземный проход (31)",
    2032 => "Подземный проход (32)",
    2033 => "Подземный проход (33)",
    2034 => "Подземный проход (34)",
    2035 => "Подземный проход (35)",
    2036 => "Подземный проход (36)",
    2037 => "Подземный проход (37)",
    2038 => "Подземный проход (38)",
    2039 => "Подземный проход (39)",
    2040 => "Подземный проход (40)",
    2041 => "Подземный проход (41)",
    2042 => "Подземный проход (42)",
    2043 => "Подземный проход (43)",
    2044 => "Подземный проход (44)",
    2045 => "Подземный проход (45)",
    2046 => "Подземный проход (46)",
    2047 => "Подземный проход (47)",
    2048 => "Подземный проход (48)",
    2049 => "Подземный проход (49)",
    2050 => "Подземный проход (50)",
    2051 => "Подземный проход (51)",
    2052 => "Подземный проход (52)",
    2053 => "Подземный проход (53)",
    2054 => "Подземный проход (54)",
    2055 => "Подземный проход (55)",
    2056 => "Подземный проход (56)",
    2057 => "Подземный проход (57)",
    2100 => "Сектор 2100",

    2655 => "Арена Богов",
    2601 => "Замковая Площадь",
    2702 => "Центральная площадь (мираж)",

];

//эффективность магии
$elem_align = [
    "a" => ["a" => "1", "e" => "0", "f" => "0.5", "w" => "0.5"],
    "e" => ["a" => "0", "e" => "1", "f" => "0.5", "w" => "0.5"],
    "f" => ["a" => "0.5", "e" => "0.5", "f" => "1", "w" => "0"],
    "w" => ["a" => "0.5", "e" => "0.5", "f" => "0", "w" => "1"],
];

$elem_bonus = [
    "a" => ["a" => "1", "e" => "0.75", "f" => "1.25", "w" => "1"],
    "e" => ["a" => "1.25", "e" => "1", "f" => "1", "w" => "0.75"],
    "f" => ["a" => "0.75", "e" => "1", "f" => "1", "w" => "1.25"],
    "w" => ["a" => "1", "e" => "1.25", "f" => "0.75", "w" => "1"],
];

// Опыт и бонусы??
$exptable = [
    0 => [0, 0, 0, 0, 0, 20],
    20 => [1, 0, 0, 0, 0, 45],
    45 => [1, 0, 0, 2, 0, 75],
    75 => [1, 0, 0, 4, 0, 110],
    110 => [3, 1, 1, 8, 1, 160], # Это первый уровень

    160 => [1, 0, 0, 2, 0, 215],
    215 => [1, 0, 0, 2, 0, 280],
    280 => [1, 0, 0, 4, 0, 350],
    350 => [1, 0, 0, 8, 0, 410],
    410 => [3, 1, 1, 16, 1, 530], # Это второй уровень

    530 => [1, 0, 0, 8, 0, 670],
    670 => [1, 0, 0, 12, 0, 830],
    830 => [1, 0, 0, 16, 0, 950],
    950 => [1, 0, 0, 24, 0, 1100],
    1100 => [1, 0, 0, 32, 0, 1300],
    1300 => [3, 1, 1, 40, 1, 1450], # Это третий уровень

    1450 => [1, 0, 0, 10, 0, 1650],
    1650 => [1, 0, 0, 20, 0, 1850],
    1850 => [1, 0, 0, 30, 0, 2050],
    2050 => [1, 0, 0, 40, 0, 2200],
    2200 => [1, 0, 0, 50, 0, 2500],
    2500 => [5, 1, 1, 70, 1, 2900], # Это четвёртый уровень

    2900 => [1, 0, 0, 10, 0, 3350],
    3350 => [1, 0, 0, 20, 0, 3800],
    3800 => [1, 0, 0, 30, 0, 4200],
    4200 => [1, 0, 0, 40, 0, 4600],
    4600 => [1, 0, 0, 50, 0, 5000],
    5000 => [3, 1, 1, 80, 1, 6000], # Это пятый уровень

    6000 => [1, 0, 0, 15, 0, 7000],
    7000 => [1, 0, 0, 30, 0, 8000],
    8000 => [1, 0, 0, 40, 0, 9000],
    9000 => [1, 0, 0, 50, 0, 10000],
    10000 => [1, 0, 0, 40, 0, 11000],
    11000 => [1, 0, 0, 50, 0, 12000],
    12000 => [1, 0, 0, 60, 0, 12500],
    12500 => [3, 1, 1, 90, 1, 14000], # Это шестой уровень

    14000 => [1, 0, 0, 20, 0, 15500],
    15500 => [1, 0, 0, 30, 0, 17000],
    17000 => [1, 0, 0, 50, 0, 19000],
    19000 => [1, 0, 0, 55, 0, 21000],
    21000 => [1, 0, 0, 50, 0, 23000],
    23000 => [1, 0, 0, 55, 0, 27000],
    27000 => [1, 0, 0, 50, 0, 30000],
    30000 => [5, 1, 1, 100, 1, 60000], # Это седьмой уровень

    60000 => [1, 0, 0, 100, 0, 75000],
    75000 => [1, 0, 0, 100, 0, 150000],
    150000 => [1, 0, 0, 150, 0, 175000],
    175000 => [1, 0, 0, 50, 0, 200000],
    200000 => [1, 0, 0, 100, 0, 225000],
    225000 => [1, 0, 0, 50, 0, 250000],
    250000 => [1, 0, 0, 100, 0, 260000],
    260000 => [1, 0, 0, 50, 0, 280000],
    280000 => [1, 0, 0, 100, 0, 300000],
    300000 => [5, 1, 1, 700, 1, 1500000], # Это восьмой уровень

    1500000 => [1, 0, 0, 500, 0, 1750000],
    1750000 => [1, 0, 0, 200, 0, 2000000],
    2000000 => [1, 0, 0, 300, 0, 2175000],
    2175000 => [1, 0, 0, 100, 0, 2300000],
    2300000 => [1, 0, 0, 100, 0, 2400000],
    2400000 => [1, 0, 0, 100, 0, 2500000],
    2500000 => [1, 0, 0, 200, 0, 2600000],
    2600000 => [1, 0, 0, 100, 0, 2800000],
    2800000 => [1, 0, 0, 200, 0, 3000000],
    3000000 => [5, 1, 2, 1000, 1, 6000000], # Это девятый уровень

    6000000 => [1, 0, 0, 200, 0, 6500000],
    6500000 => [1, 0, 0, 250, 0, 7500000],
    7500000 => [1, 0, 0, 200, 0, 8500000],
    8500000 => [1, 0, 0, 250, 0, 9000000],
    9000000 => [1, 0, 0, 400, 0, 9250000],
    9250000 => [1, 0, 0, 250, 0, 9500000],
    9500000 => [1, 0, 0, 400, 0, 9750000],
    9750000 => [1, 0, 0, 350, 0, 9900000],
    9900000 => [1, 0, 0, 500, 0, 10000000],
    10000000 => [9, 1, 3, 2000, 1, 13000000], # Это десятый уровень

    13000000 => [2, 0, 0, 200, 0, 14000000],
    14000000 => [2, 0, 0, 200, 0, 15000000],
    15000000 => [2, 0, 0, 200, 0, 16000000],
    16000000 => [2, 0, 0, 200, 0, 17000000],
    17000000 => [2, 0, 0, 200, 0, 17500000],
    17500000 => [2, 0, 0, 200, 0, 18000000],
    18000000 => [2, 0, 0, 200, 0, 19000000],
    19000000 => [2, 0, 0, 200, 0, 19500000],
    19500000 => [2, 0, 0, 200, 0, 20000000],
    20000000 => [2, 0, 0, 250, 0, 30000000],
    30000000 => [2, 0, 0, 200, 0, 32000000],
    32000000 => [2, 0, 0, 250, 0, 34000000],
    34000000 => [2, 0, 0, 200, 0, 35000000],
    35000000 => [2, 0, 0, 250, 0, 36000000],
    36000000 => [2, 0, 0, 200, 0, 38000000],
    38000000 => [2, 0, 0, 250, 0, 40000000],
    40000000 => [2, 0, 0, 200, 0, 42000000],
    42000000 => [2, 0, 0, 250, 0, 44000000],
    44000000 => [2, 0, 0, 350, 0, 47000000],
    47000000 => [2, 0, 0, 300, 0, 50000000],
    50000000 => [2, 0, 0, 350, 0, 52000000],
    52000000 => [10, 1, 3, 3000, 1, 58000000], # Это одиннадцатый уровень

    58000000 => [1, 0, 0, 350, 0, 65000000],
    65000000 => [1, 0, 0, 300, 0, 72000000],
    72000000 => [1, 0, 0, 350, 0, 77000000],
    77000000 => [1, 0, 0, 350, 0, 82000000],
    82000000 => [1, 0, 0, 300, 0, 87000000],
    87000000 => [1, 0, 0, 350, 0, 92000000],
    92000000 => [1, 0, 0, 350, 0, 100000000],
    100000000 => [1, 0, 0, 350, 0, 120000000],
    120000000 => [2, 0, 0, 400, 0, 140000000],
    140000000 => [2, 0, 0, 400, 0, 160000000],
    160000000 => [2, 0, 0, 600, 0, 180000000],
    180000000 => [2, 0, 0, 400, 0, 210000000],
    210000000 => [2, 0, 0, 400, 0, 240000000],
    240000000 => [10, 2, 4, 5000, 1, 260000000], # Это двеннадцатый уровень

    260000000 => [2, 0, 0, 400, 0, 320000000],
    320000000 => [2, 0, 0, 400, 0, 400000000],
    400000000 => [3, 0, 0, 600, 0, 455000000],
    455000000 => [2, 0, 0, 150, 0, 510000000],
    510000000 => [2, 0, 0, 100, 0, 600000000],
    600000000 => [2, 0, 0, 300, 0, 750000000],
    750000000 => [5, 0, 0, 700, 0, 770000000],
    770000000 => [1, 0, 0, 400, 0, 815000000],
    815000000 => [1, 0, 0, 200, 0, 860000000],
    860000000 => [1, 0, 0, 600, 0, 1000000000],
    1000000000 => [1, 0, 0, 300, 0, 1100000000],
    1100000000 => [1, 0, 0, 450, 0, 1250000000],
    1250000000 => [1, 0, 0, 450, 0, 1500000000],
    1500000000 => [10, 1, 5, 8000, 1, 9999999999], # Это тринадцатый уровень
];