game/_incl_data/class/BotPriemLogic.php

395 lines
10 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
class BotPriemLogic
{
private static $p = [];
public static function start($i, $id)
{
self::$p = mysql_fetch_array(mysql_query('SELECT * FROM `priems` WHERE `id` = "' . $id . '" LIMIT 1'));
$test = self::testpriem(self::$p);
if (isset(self::$p['id']) && $test == 0) {
//Используем прием под номером $id
if ($id == 1) {
self::priem1($i);
} //Прикрыться 1|2|3|4|5|6|7|8|9|10|11|13|14|45|47|48|49|188|204|211|217|220|223|232|235|240|0|0|0|0|0|0|0|0|0|0|0|0|0|0
elseif ($id == 2) {
self::priem2($i);
} //Вломить
elseif ($id == 3) {
self::priem3($i);
} //Собрать зубы
elseif ($id == 4) {
self::priem4($i);
} //Сильный удар
elseif ($id == 5) {
self::priem5($i);
} //Утереть пот
elseif ($id == 6) {
self::priem6($i);
} //Воля к победе
elseif ($id == 7) {
self::priem7($i);
} //Активная защита
elseif ($id == 8) {
self::priem8($i);
} //Танец ветра
elseif ($id == 9) {
self::priem9($i);
} //Дикая удача
elseif ($id == 10) {
self::priem10($i);
} //Предвидиние
elseif ($id == 11) {
self::priem11($i);
} //Удачный удар
elseif ($id == 13) {
self::priem13($i);
} //Стойкость
elseif ($id == 14) {
self::priem14($i);
} //Ярость
elseif ($id == 45) {
self::priem45($i);
} //Полная защита
elseif ($id == 47) {
self::priem47($i);
} //Слепая удача
elseif ($id == 48) {
self::priem48($i);
} //Танец лезвий
elseif ($id == 49) {
self::priem49($i);
} //Второе дыхание
elseif ($id == 188) {
self::priem188($i);
} //Жажда крови
elseif ($id == 204) {
self::priem204($i);
} //Обреченность
elseif ($id == 211) {
self::priem211($i);
} //Агрессивная защита
elseif ($id == 217) {
self::priem217($i);
} //Разгадать тактику
elseif ($id == 220) {
self::priem220($i);
} //Ставка на опережение
elseif ($id == 223) {
self::priem223($i);
} //Рывок
elseif ($id == 232) {
self::priem232($i);
} //Выжить
elseif ($id == 235) {
self::priem235($i);
} //Шокирующий удар
elseif ($id == 240) {
self::priem240($i);
} //Хлебнуть крови
elseif ($id >= 175 && $id <= 179) {
self::priem175($i);
}
//*********************************
}
return true;
}
private static function usePriem($id)
{
BotLogic::inuser_go_btl(BotLogic::$bot, '&usepriem=' . $id);
}
//Ставка на опережение
private static function priem220($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Разгадать тактику
private static function priem217($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Обреченность
private static function priem204($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Выжить
private static function priem232($i)
{
if (self::hp() <= 30 && rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Жажда крови
private static function priem188($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Шок удар
private static function priem235($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Хлебнуть крови
private static function priem240($i)
{
if (self::hp() <= 70) {
self::usePriem($i);
}
}
//Силовое поле
private static function priem175($i)
{
self::usePriem($i);
}
//Прикрыться
private static function priem1($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Вломить
private static function priem2($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Собрать зубы
private static function priem3($i)
{
if (self::hp() <= 70 && rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Воля к победе
private static function priem6($i)
{
if (self::hp() <= 40 && rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Танец ветра
private static function priem8($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Танец лезвий
private static function priem48($i)
{
if (rand(0, 100) < 70) {
self::usePriem($i);
}
}
//Дикая удача
private static function priem9($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Слепая удача
private static function priem47($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Предвиденье
private static function priem10($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Второе дыхание
private static function priem49($i)
{
if (rand(0, 100) < 80 && self::hp() <= 60) {
self::usePriem($i);
}
}
//Рывок
private static function priem223($i)
{
if (self::hp() <= 50 && rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Удачный удар
private static function priem11($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
//Стойкость
private static function priem13($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Ярость
private static function priem14($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Сильный удар
private static function priem4($i)
{
if (rand(0, 100) < 60) {
self::usePriem($i);
}
}
//Утереть пот
private static function priem5($i)
{
if (self::hp() <= 95) {
self::usePriem($i);
}
}
//Агрессивная защита
private static function priem211($i)
{
if (rand(0, 100) < 80) {
self::usePriem($i);
}
}
//Полная защита
private static function priem45($i)
{
if (rand(0, 100) < 50) {
self::usePriem($i);
}
}
//Активная защита
private static function priem7($i)
{
if (rand(0, 100) < 30) {
self::usePriem($i);
}
}
private static function hp(): float
{
return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2);
}
//Тест на возможность использования
private static function testpriem($pl): int
{
global $u;
$notr = 0;
$tr = $u->lookStats($pl['tr']);
$d2 = $u->lookStats($pl['date2']);
$x = 1;
while ($x <= 7) {
if (BotLogic::$bot['tactic' . $x] < $pl['tt' . $x] && $x != 7 && $pl['tt' . $x] > 0) {
$notr++;
} elseif ($x == 7) {
if ($pl['tt' . $x] > 0 && BotLogic::$bot['tactic' . $x] <= 0) {
$notr++;
}
}
$x++;
}
if ($pl['xuse'] > 0) {
$xu = $u->testAction('`vars` = "use_priem_' . BotLogic::$bot['battle'] . '_' . BotLogic::$bot['id'] . '" AND `vals` = "' . $pl['id'] . '" LIMIT ' . $pl['xuse'] . '', 2);
if ($xu[0] >= $pl['xuse']) {
$notr++;
}
}
$x = 0;
$t = $u->items['tr'];
while ($x < count($t)) {
$n = $t[$x];
if (isset($tr['tr_' . $n])) {
if ($n == 'lvl') {
if ($tr['tr_' . $n] > BotLogic::$bot['level']) {
$notr++;
}
} elseif ($tr['tr_' . $n] > BotLogic::$st[$n]) {
$notr++;
}
}
$x++;
}
if (isset($tr['tr_mpNow']) && BotLogic::$st['mpNow'] < $tr['tr_mpNow']) {
$notr++;
}
if ($pl['trUser'] == 1) {
//требует чтобы пользователь с кем-то разменивался (при ожидании прием гаснит)
$ga = mysql_fetch_array(mysql_query('SELECT `id` FROM `battle_act` WHERE `battle` = "' . BotLogic::$bot['battle'] . '" AND `uid1` = "' . BotLogic::$bot['id'] . '" AND `uid2` = "' . BotLogic::$bot['enemy'] . '" LIMIT 1'));
if (isset($ga['id'])) {
$notr++;
}
}
//Если прием уже использовали
if (BotLogic::$st['prsu'][$pl['id']] > 0) {
$notr++;
}
return $notr;
}
}