<?php use Helper\Conversion; use Model\Constant\Stat; 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 testpriem($pl): int { global $u; $notr = 0; $statnames = new Stat(); $statnames->getRequirement(); $tr = Conversion::dataStringToArray($pl['tr']); $d2 = Conversion::dataStringToArray($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; while ($x < count($statnames->sysRequirementNames)) { $n = $statnames->sysRequirementNames[$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; } //Ставка на опережение private static function priem1($i) { if (rand(0, 100) < 50) { self::usePriem($i); } } //Разгадать тактику private static function usePriem($id) { BotLogic::inuser_go_btl(BotLogic::$bot, '&usepriem=' . $id); } //Обреченность 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 hp(): float { return round((BotLogic::$st['hpNow'] / BotLogic::$st['hpAll'] * 100), 2); } //Шок удар 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 priem6($i) { if (self::hp() <= 40 && rand(0, 100) < 50) { self::usePriem($i); } } //Прикрыться private static function priem7($i) { if (rand(0, 100) < 30) { self::usePriem($i); } } //Вломить private static function priem8($i) { if (rand(0, 100) < 30) { self::usePriem($i); } } //Собрать зубы private static function priem9($i) { if (rand(0, 100) < 30) { self::usePriem($i); } } //Воля к победе private static function priem10($i) { if (rand(0, 100) < 30) { 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 priem45($i) { if (rand(0, 100) < 50) { self::usePriem($i); } } //Предвиденье private static function priem47($i) { if (rand(0, 100) < 50) { self::usePriem($i); } } //Второе дыхание private static function priem48($i) { if (rand(0, 100) < 70) { self::usePriem($i); } } //Рывок private static function priem49($i) { if (rand(0, 100) < 80 && self::hp() <= 60) { self::usePriem($i); } } //Удачный удар private static function priem188($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 priem211($i) { if (rand(0, 100) < 80) { self::usePriem($i); } } //Сильный удар private static function priem217($i) { if (rand(0, 100) < 30) { self::usePriem($i); } } //Утереть пот private static function priem220($i) { if (rand(0, 100) < 30) { self::usePriem($i); } } //Агрессивная защита private static function priem223($i) { if (self::hp() <= 50 && rand(0, 100) < 50) { self::usePriem($i); } } //Полная защита private static function priem232($i) { if (self::hp() <= 30 && rand(0, 100) < 50) { 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); } }