<?php
include_once('core/base.php');
include_once('core/func.php');
falseauth();
$boss_name = 'Медуза Горгона';//Название босса
$header = $boss_name;
include_once('core/head.php');
############################НАСТРОЙКИ ЛОКАЦИИ ############################Н
$r = rand(1, 5000);
$name_sql = 'boss_user';//Название локации
$boss = DB::getInstance()->queryFetch("SELECT * FROM `" . $name_sql . "` WHERE `id_user` = ? LIMIT 1", [$u['id']]);
$boss_fight = DB::getInstance()->queryFetch("SELECT * FROM `boss_fight` WHERE `id_user` = ? LIMIT 1 ", [$u['id']]);
$div = '</div>';// close div lass
$boss_lvl = $boss['level']; //Уровень мифа
$time = $boss['last_fight'];//Время
$priceSkipTime = 20;//Цена пропуска
$typePriceSkipTime = 'gold';//Вид ресурса за что пропускаем время
############################НАСТРОЙКИ ПАРАМЕТРОВ БОССа ############################Н
$power_boss = ($boss_lvl * 25);//Сила
$health_boss = ($boss_lvl * 50);//Здоровье
$block_boss = ($boss_lvl * 20);//Защита
$rewardWinExp = $boss_lvl * 500;
$rewardWinResource = 500 * $boss_lvl;
#######################################3Награда идет большая чем выше уровень босса################################
if ($boss_lvl >= 10) {
$rewardWinExp = $boss_lvl * 1500;
$rewardWinResource = 750 * $boss_lvl;
$power_boss = ($boss_lvl * 50);//Сила
$health_boss = ($boss_lvl * 100);//Здоровье
$block_boss = ($boss_lvl * 50);//Защита
}
if ($boss_lvl >= 15) {
$rewardWinExp = $boss_lvl * 1700;
$rewardWinResource = 1200 * $boss_lvl;
$power_boss = ($boss_lvl * 60);//Сила
$health_boss = ($boss_lvl * 250);//Здоровье
$block_boss = ($boss_lvl * 60);//Защита
}
if ($boss_lvl >= 20) {
$rewardWinExp = $boss_lvl * 3000;
$rewardWinResource = 2000 * $boss_lvl;
$power_boss = ($boss_lvl * 60);//Сила
$health_boss = ($boss_lvl * 500);//Здоровье
$block_boss = ($boss_lvl * 65);//Защита
}
if ($boss_lvl >= 25) {
$rewardWinExp = $boss_lvl * 4000;
$rewardWinResource = 3000 * $boss_lvl;
$power_boss = ($boss_lvl * 70);//Сила
$health_boss = ($boss_lvl * 1000);//Здоровье
$block_boss = ($boss_lvl * 70);//Защита
}
if ($boss_lvl >= 30) {
$rewardWinExp = $boss_lvl * 5000;
$rewardWinResource = 5000 * $boss_lvl;
$power_boss = ($boss_lvl * 80);//Сила
$health_boss = ($boss_lvl * 1500);//Здоровье
$block_boss = ($boss_lvl * 80);//Защита
}
if ($boss_lvl >= 35) {
$rewardWinExp = $boss_lvl * 6000;
$rewardWinResource = 6000 * $boss_lvl;
$power_boss = ($boss_lvl * 100);//Сила
$health_boss = ($boss_lvl * 2500);//Здоровье
$block_boss = ($boss_lvl * 100);//Защита
}
if ($boss_lvl >= 40) {
$rewardWinExp = $boss_lvl * 8000;
$rewardWinResource = 8000 * $boss_lvl;
$power_boss = ($boss_lvl * 130);//Сила
$health_boss = ($boss_lvl * 3500);//Здоровье
$block_boss = ($boss_lvl * 130);//Защита
}
###########################################################################################################
$rewardLoseExp = ceil($rewardWinExp / 8);//Опыт при проигрыше
$rewardWinGold = 5 * $boss_lvl;
$time_resp = 3600;//Time need respone boss im sec
############################КОНЕЦ НАСТРОЕК############################Н
########################VIP ########################
if ($vipActive['activeTime'] > time() && $vipActive['status'] == 'on') {
$rewardWinExp = $rewardWinExp + ceil($rewardWinExp * $vipActive['bonus'] / 100);
$rewardWinResource = $rewardWinResource + ceil($rewardWinResource * $vipActive['bonus'] / 100);
$rewardLoseExp = $rewardLoseExp + ceil($rewardLoseExp * $vipActive['bonus'] / 100);
}
$health_boss = ceil($health_boss / 1.5);
//Если user не зар.в боссе
if (!$boss) {
DB::getInstance()->query("INSERT INTO `" . $name_sql . "` SET `level` = ? ,`id_user` = ?", [1, $u['id']]); //Стардатные данные в базу
header('location:/boss/');
exit();
}
switch ($act) {
case 'skip':
if ($boss['last_fight'] < time()) {
$_SESSION['error'] = 'Призошла ошибка';
header('location:/boss/?error');
exit();
} else if ($user[$typePriceSkipTime] < $priceSkipTime) {
$_SESSION['error'] = 'Вам не хватает еще ' . (ico($typePriceSkipTime) . ($priceSkipTime - $user[$typePriceSkipTime]));
header('location:/boss/?error');
exit();
} else {
DB::getInstance()->query("UPDATE " . USERS . "SET `" . $typePriceSkipTime . "` = ? WHERE `id`=?", [$u[$typePriceSkipTime] - $priceSkipTime, $u['id']]);
DB::getInstance()->query("UPDATE `boss_user`SET`last_fight`=? WHERE `id_user`=?", ['0', $u['id']]);
header('location:/boss/');
exit();
}
break;
case 'attack':
if ($boss['last_fight'] > time()) {
header('location:/boss/?error');
exit();
}
if (!$boss_fight) {
header('location:/boss/');
exit();
}
$powerUser = round(($u['power'] / 100 * 35));
$powerEnemy = round(($power_boss / 100 * 25));
$blockUser = ($u['block'] / 100 * 10);
$blockEnemy = ($block_boss / 100 * 10);
$dmgUser = ceil($powerUser - $blockEnemy) + rand(1, 10);
$dmgEnemy = ceil($powerEnemy - $blockUser) + rand(1, 10);
if ($dmgUser < 1)
$dmgUser = rand(1, 3);
if ($dmgEnemy < 1)
$dmgEnemy = rand(1, 3);
$dmg_time = $u['last_attack'] - time(); //выводим сколько до удара сек
//Если совершили удар , то время в last_attack
//if($dmg_time == 4)$dmgUser = '1'; //Промах
// if($dmg_time == 3) $dmgUser = round(ceil($dmgUser / 100*10)); // 10 % урона
// if($dmg_time == 2) $dmgUser = round(ceil($dmgUser / 100* 50)); // 50 % урона
// if($dmg_time == 1) $dmgUser = round(ceil($dmgUser / 100 * 75 )); // 75 % урона
// if($dmg_time == 0) $dmgUser = round(ceil($dmgUser)); // 100 % урона
if ($dmg_time == 6)
$dmgUser = '1'; //Промах
if ($dmg_time == 5)
$dmgUser = round(ceil($dmgUser / 100 * 10)); // 10 % урона
if ($dmg_time == 4)
$dmgUser = round(ceil($dmgUser / 100 * 24)); // 50 % урона
if ($dmg_time == 3)
$dmgUser = round(ceil($dmgUser / 100 * 51)); // 50 % урона
if ($dmg_time == 2)
$dmgUser = round(ceil($dmgUser / 100 * 79)); // 50 % урона
if ($dmg_time == 1)
$dmgUser = round(ceil($dmgUser / 100 * 81)); // 75 % урона
if ($dmg_time == 0)
$dmgUser = round(ceil($dmgUser)); // 100 % урона
$skill_crit = DB::getInstance()->queryFetch("SELECT * FROM `skill_user` WHERE `id_user` = ? and `id_skill` = ?", [$u['id'], 1]);
$skill_dodje = DB::getInstance()->queryFetch("SELECT * FROM `skill_user` WHERE `id_user` = ? and `id_skill` = ?", [$u['id'], 2]);
$skill_block = DB::getInstance()->queryFetch("SELECT * FROM `skill_user` WHERE `id_user` = ? and `id_skill` = ?", [$u['id'], 3]);
if ($skill_crit['chance_operation'] >= rand(1, 100)) {
$dmgUser = ceil($dmgUser + ($dmgUser / 100 * $skill_crit['bonus_percent']));
$status_skill_crit = true;
}
if ($skill_dodje['chance_operation'] >= rand(1, 100)) {
$dmgEnemy = 0;
$status_skill_dodje = true;
}
if ($skill_block['chance_operation'] >= rand(1, 100)) {
$dmgEnemy = ceil($dmgEnemy - ($dmgEnemy / 100 * $skill_block['bonus_percent']));
$status_skill_block = true;
}
if ($boss_fight['boss_hp'] <= 0 or $dmgUser >= $boss_fight['boss_hp']) {
DB::getInstance()->query("DELETE FROM `boss_fight` WHERE `id_user` = ?", [$u['id']]);
DB::getInstance()->query("DELETE FROM `fight_log` WHERE `id_user` = ?", [$u['id']]);
DB::getInstance()->query("UPDATE " . USERS . " SET `silver` = ? WHERE `id` = ? ", [$u['silver'] + $rewardWinResource, $u['id']]);
DB::getInstance()->query("UPDATE " . USERS . " SET `exp` = ? , `gold` = ? WHERE `id` = ? ", [$u['exp'] + $rewardWinExp, $u['gold'] + $rewardWinGold, $u['id']]);
DB::getInstance()->query("UPDATE `boss_user` SET `level` = `level` + ? WHERE `id_user` = ?", [1, $u['id']]);
FightView::addExpCastle($rewardWinExp);
Func::getPointGlory($rewardWinExp);
//$base -> query("UPDATE `boss_user` SET `last_fight` = '".(time() + $time_resp)."' WHERE `id_user` = '".$u['id']."'");
Func::addTimeAfterFight($u['numFightBoss'], 'numFightBoss', 'last_fight', 'boss_user');
//Task fight
// 1 - что нужно выполнить
// 2-локация
//dropSnowFlake($u['id'], $u['snowflake']);
TaskPerformence::setTask("fight", "boss", '1');
$_SESSION['success'] = Func::div('head no_error center') . "<img src='/images/win.png' width='200px'>" . NEXT_LINE . Func::div('razriv1 marg_s_5') . DIV_CLOSE . "Награда" . NEXT_LINE .
NEXT_LINE . ico('gold') . $rewardWinGold . ico('exp') . $rewardWinExp .
NEXT_LINE . ico('silver') . $rewardWinResource . div('razriv1 marg_s_5') . DIV_CLOSE;
Func::addNotification($userID, $_SESSION['success'], $time_log);
header('location:/boss/');
exit();
} else if ($boss_fight['user_hp'] <= 0 or $dmgEnemy >= $boss_fight['user_hp']) {
DB::getInstance()->query("UPDATE " . USERS . " SET `exp` = ? WHERE `id` = ? ", [$u['exp'] + $rewardLoseExp, $u['id']]);
FightView::addExpCastle($rewardLoseExp);
Func::getPointGlory($rewardLoseExp);
/// dropSnowFlake($u['id'], $u['snowflake']);
DB::getInstance()->query("DELETE FROM `boss_fight` WHERE `id_user` = ?", [$u['id']]);
DB::getInstance()->query("DELETE FROM `fight_log` WHERE `id_user` = ?", [$u['id']]);
// $base -> query("UPDATE `boss_user` SET `last_fight` = '".(time() + $time_resp)."' WHERE `id_user` = '".$u['id']."'");
Func::addTimeAfterFight($u['numFightBoss'], 'numFightBoss', 'last_fight', 'boss_user');
//Task fight
// 1 - что нужно выполнить
// 2-локация
TaskPerformence::setTask("fight", "boss", '1');
$_SESSION['error'] = Func::div('head error center') . "<img src='/images/lose.png' width='200px'>" . NEXT_LINE . Func::div('razriv1 marg_s_5') . DIV_CLOSE . 'Награда' . NEXT_LINE . ico('exp') . $rewardLoseExp . div('razriv1 marg_s_5') . DIV_CLOSE;
header('location:/boss/');
exit();
} else {
DB::getInstance()->query("UPDATE `users` SET `last_attack` = ? WHERE `id` = ?", [time() + 4, $u['id']]);
$logUser = span('c_user') . 'Вы ' . SPAN_CLOSE . ' нанесли ' . span('orange') . '' . $dmgUser . SPAN_CLOSE . ' урона ' . ($status_skill_crit == true ? 'крит' : '') . '<br> ';
$logEnemy = '' . ($status_skill_dodje == true ? 'Вы увернулись от атаки<br>' : span('c_enemy') . $boss_name . SPAN_CLOSE . ' ударил вас ' . span('orange') . $dmgEnemy . SPAN_CLOSE . ' урона ' . ($status_skill_block == true ? 'блок' : '') . ' <br>') . ' ';
DB::getInstance()->query("UPDATE `boss_fight` SET `boss_hp` = '" . ($boss_fight['boss_hp'] - $dmgUser) . "' , `user_hp` = '" . ($boss_fight['user_hp'] - $dmgEnemy) . "' WHERE `id_user` = '" . $u['id'] . "'");
DB::getInstance()->query("INSERT INTO `camp_log` SET `text` = '" . $logUser . "' , `id_user` = '" . $u['id'] . "' ");
DB::getInstance()->query("INSERT INTO `camp_log` SET `text` = '" . $logEnemy . "' , `id_user` = '" . $u['id'] . "' ");
if ($dmgEnemy <= 0)
$_SESSION['dmgEnemy'] = "<font size='5px' color='white'> ПРОМАХ </font>";
else $_SESSION['dmgEnemy'] = "<font size='6px' color='red'>-" . $dmgEnemy . "</font>";
if ($dmgUser <= 0)
$_SESSION['dmgUser'] = "<font size='5px' color='white'> ПРОМАХ </font>";
else $_SESSION['dmgUser'] = "<font size='6px' color='red'>-" . $dmgUser . "</font>";
$_SESSION['wound_mark'] = '<img src="/img/wound_mark.png" width="60px">';
header('Location: /boss/fight/?SESSION=' . $u['password']);
exit();
}
break;
case 'fight':
if (!$boss_fight) {
header('location:/boss/');
exit();
}
if ($boss_fight['status'] == 'fight') {
if ($boss_fight['boss_hp'] <= 0)
DB::getInstance()->query("UPDATE `boss_fight` SET `status` = 'win' WHERE `id_user` = '" . $u['id'] . "'");
if ($boss_fight['user_hp'] <= 0)
DB::getInstance()->query("UPDATE `boss_fight` SET `status` = 'lose' WHERE `id_user` = '" . $u['id'] . "'");
}
$item = DB::getInstance()->queryFetch("SELECT * FROM `users_inv` WHERE `id_user` = '" . $u['id'] . "' AND `equip` = 'yes' AND `clothing_type`= 'weapon' ORDER BY `id` LIMIT 1");
$progress = round($boss_fight['boss_hp'] / $health_boss * 100, 1);
if ($progress > 100)
$progress = 100;
$fight->view($boss_name, "$power_boss", "$boss_fight[boss_hp]", "$block_boss", "dmgEnemy", "/images/boss/Aieternum.png", "$u[power]", "$boss_fight[user_hp]", "$u[block]", "dmgUser", $u['max_health'], $health_boss, "/images/camp/fon_4.jpg", 'wound_mark');
//echo DIV_CLOSE.DIV_CLOSE;
div('center ssilki_dop11 b_block p_0');
if ($u['last_attack'] < time())
echo '<a class ="btnn" href="/boss/fight/attack/' . rand(100, 1000) . '/" title="' . $item['name'] . '"> АТАКОВАТЬ НА 100 % </a>' . A_CLOSE . DIV_CLOSE;
else
echo '<a class ="btnn" href="/boss/fight/attack/' . rand(100, 1000) . '/" title="' . $item['name'] . '"> АТАКОВАТЬ НА ' . timerJSFight($u['last_attack']) . A_CLOSE . DIV_CLOSE;
//Вывод врагов
div('inf ');
#$campLog = $base->query("SELECT * FROM `camp_log` WHERE `id_user` = '" . $u[id] . "' ORDER BY `id` DESC LIMIT 10");
#while ($log = $campLog->fetch_assoc()) {
//echo $log[text];
#}
echo $div;//Закрываем div
//echo DIV_CLOSE;
break;
case 'reward';
if ($boss_fight['status'] == 'win' or $boss_fight['status'] == 'lose') {
echo $boss_fight['status'] == 'win' ? 'Победа' : 'Поражение' . '';
}
break;
case 'ready':
if ($boss_fight) {
header('location:/boss/fight/');
exit();
}
//Проверяем доступен ли бой по времени
if ($time > time()) { // Надо подождать
header('location:/boss/');//Перенаправление на главную
exit();//Выход
} else {//Бой
DB::getInstance()->query("INSERT INTO `boss_fight` SET `boss_hp` = '$health_boss' , `user_hp` = '$u[max_health]' , `id_user` = '" . $u['id'] . "'"); //Стардатные данные в базу
header('location:/boss/fight/');//Перенаправление в бой
exit();//Выход
}////Проверяем доступен ли бой по времени
break;
default:
if ($boss_fight) {
header('location:/boss/fight/');
exit();
}
div('ssilki_dop11 b_block p_0 center ');//Открываем div
echo Func::span('ribbon green bold') . Func::span('r_end') . Func::span('r_cntr') . $boss_name . SPAN_CLOSE . SPAN_CLOSE . SPAN_CLOSE;
//Уровень и имя босса
echo "<img src='/images/boss.jpg' width='100%'>" . NEXT_LINE;
echo div('razriv1 marg_s_5') . DIV_CLOSE;
div('logo center ');//Открываем div
echo Func::div('center no_error mt5') . 'Уровень:' . ico('level') . $boss_lvl . DIV_CLOSE;
//Можно сразиться
if ($time < time()) {
echo NEXT_LINE . "<a class='btnn' href='/boss/ready/" . $r . "/'> В Бой !" . A_CLOSE;
//Надо подождать
} else {
echo 'Сражение откроется через ' . timer_wait('boss', $time) . NEXT_LINE . ' Надо подождать.';
echo div('mt3') . DIV_CLOSE . ' <a class="btnn" href="/boss/skip/"> ускорить за ' . ico($typePriceSkipTime) . $priceSkipTime . A_CLOSE;
}
//echo div('razriv1 marg_s_5').DIV_CLOSE;
echo div('ssilki_dop11 b_block p_0 center ') . 'В случае ' . color('lime') . 'победы ' . COLOR_CLOSE . 'ты получишь:' . NEXT_LINE . ico('gold') . $rewardWinGold . ico('exp') . $rewardWinExp . NEXT_LINE . ico('silver') . $rewardWinResource . DIV_CLOSE;
//echo div('razriv1 marg_s_5').DIV_CLOSE;
echo color('tomato') . $boss_name . COLOR_CLOSE . ' - древнее мифическое существо, способное управлять эмоциями врага и превращать путников в камень . Она наделена особым даром: возрождаться и становиться сильнее, после каждой победы над ней. Одолей её!';
echo $div;//Закрываем div
break;
}
echo DIV_CLOSE . NEXT_LINE;
unset($_SESSION['wound_mark']);
unset($_SESSION['dmgUser']);
unset($_SESSION['dmgEnemy']);
require inc . '/core/foot.php';