2022-08-25 11:23:36 +00:00
< ? php
2023-08-14 15:15:05 +00:00
use Helper\Conversion ;
2024-01-08 01:33:20 +00:00
use Model\Constant\Stat ;
2023-04-15 22:54:07 +00:00
2022-08-25 11:23:36 +00:00
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 ) {
2023-01-10 16:29:32 +00:00
//Используем прием под номером $id
2022-08-25 11:23:36 +00:00
if ( $id == 1 ) {
self :: priem1 ( $i );
2023-01-10 16:29:32 +00:00
} //Прикрыться 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
2022-08-25 11:23:36 +00:00
elseif ( $id == 2 ) {
self :: priem2 ( $i );
2023-01-10 16:29:32 +00:00
} //Вломить
2022-08-25 11:23:36 +00:00
elseif ( $id == 3 ) {
self :: priem3 ( $i );
2023-01-10 16:29:32 +00:00
} //Собрать зубы
2022-08-25 11:23:36 +00:00
elseif ( $id == 4 ) {
self :: priem4 ( $i );
2023-01-10 16:29:32 +00:00
} //Сильный удар
2022-08-25 11:23:36 +00:00
elseif ( $id == 5 ) {
self :: priem5 ( $i );
2023-01-10 16:29:32 +00:00
} //Утереть пот
2022-08-25 11:23:36 +00:00
elseif ( $id == 6 ) {
self :: priem6 ( $i );
2023-01-10 16:29:32 +00:00
} //Воля к победе
2022-08-25 11:23:36 +00:00
elseif ( $id == 7 ) {
self :: priem7 ( $i );
2023-01-10 16:29:32 +00:00
} //Активная защита
2022-08-25 11:23:36 +00:00
elseif ( $id == 8 ) {
self :: priem8 ( $i );
2023-01-10 16:29:32 +00:00
} //Танец ветра
2022-08-25 11:23:36 +00:00
elseif ( $id == 9 ) {
self :: priem9 ( $i );
2023-01-10 16:29:32 +00:00
} //Дикая удача
2022-08-25 11:23:36 +00:00
elseif ( $id == 10 ) {
self :: priem10 ( $i );
2023-01-10 16:29:32 +00:00
} //Предвидиние
2022-08-25 11:23:36 +00:00
elseif ( $id == 11 ) {
self :: priem11 ( $i );
2023-01-10 16:29:32 +00:00
} //Удачный удар
2022-08-25 11:23:36 +00:00
elseif ( $id == 13 ) {
self :: priem13 ( $i );
2023-01-10 16:29:32 +00:00
} //Стойкость
2022-08-25 11:23:36 +00:00
elseif ( $id == 14 ) {
self :: priem14 ( $i );
2023-01-10 16:29:32 +00:00
} //Ярость
2022-08-25 11:23:36 +00:00
elseif ( $id == 45 ) {
self :: priem45 ( $i );
2023-01-10 16:29:32 +00:00
} //Полная защита
2022-08-25 11:23:36 +00:00
elseif ( $id == 47 ) {
self :: priem47 ( $i );
2023-01-10 16:29:32 +00:00
} //Слепая удача
2022-08-25 11:23:36 +00:00
elseif ( $id == 48 ) {
self :: priem48 ( $i );
2023-01-10 16:29:32 +00:00
} //Танец лезвий
2022-08-25 11:23:36 +00:00
elseif ( $id == 49 ) {
self :: priem49 ( $i );
2023-01-10 16:29:32 +00:00
} //Второе дыхание
2022-08-25 11:23:36 +00:00
elseif ( $id == 188 ) {
self :: priem188 ( $i );
2023-01-10 16:29:32 +00:00
} //Жажда крови
2022-08-25 11:23:36 +00:00
elseif ( $id == 204 ) {
self :: priem204 ( $i );
2023-01-10 16:29:32 +00:00
} //Обреченность
2022-08-25 11:23:36 +00:00
elseif ( $id == 211 ) {
self :: priem211 ( $i );
2023-01-10 16:29:32 +00:00
} //Агрессивная защита
2022-08-25 11:23:36 +00:00
elseif ( $id == 217 ) {
self :: priem217 ( $i );
2023-01-10 16:29:32 +00:00
} //Разгадать тактику
2022-08-25 11:23:36 +00:00
elseif ( $id == 220 ) {
self :: priem220 ( $i );
2023-01-10 16:29:32 +00:00
} //Ставка на опережение
2022-08-25 11:23:36 +00:00
elseif ( $id == 223 ) {
self :: priem223 ( $i );
2023-01-10 16:29:32 +00:00
} //Рывок
2022-08-25 11:23:36 +00:00
elseif ( $id == 232 ) {
self :: priem232 ( $i );
2023-01-10 16:29:32 +00:00
} //Выжить
2022-08-25 11:23:36 +00:00
elseif ( $id == 235 ) {
self :: priem235 ( $i );
2023-01-10 16:29:32 +00:00
} //Шокирующий удар
2022-08-25 11:23:36 +00:00
elseif ( $id == 240 ) {
self :: priem240 ( $i );
2023-01-10 16:29:32 +00:00
} //Хлебнуть крови
2022-08-25 11:23:36 +00:00
elseif ( $id >= 175 && $id <= 179 ) {
self :: priem175 ( $i );
}
//*********************************
}
return true ;
}
2023-08-14 15:15:05 +00:00
private static function testpriem ( $pl ) : int
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
global $u ;
$notr = 0 ;
2024-01-08 01:33:20 +00:00
$statnames = new Stat ();
2023-08-14 15:15:05 +00:00
$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 ++ ;
}
}
2024-01-08 01:33:20 +00:00
$statRequirementNames = $statnames -> getRequirementNames ();
$statSysRequirementNames = array_keys ( $statRequirementNames );
2023-08-14 15:15:05 +00:00
$x = 0 ;
2024-01-08 01:33:20 +00:00
while ( $x < count ( $statSysRequirementNames )) {
$n = $statSysRequirementNames [ $x ];
2023-08-14 15:15:05 +00:00
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 ;
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Ставка на опережение
2023-08-14 15:15:05 +00:00
private static function priem1 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Разгадать тактику
2023-08-14 15:15:05 +00:00
private static function usePriem ( $id )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
BotLogic :: inuser_go_btl ( BotLogic :: $bot , '&usepriem=' . $id );
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Обреченность
2023-08-14 15:15:05 +00:00
private static function priem2 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Выжить
2023-08-14 15:15:05 +00:00
private static function priem3 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 70 && rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Жажда крови
2023-08-14 15:15:05 +00:00
private static function hp () : float
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
return round (( BotLogic :: $st [ 'hpNow' ] / BotLogic :: $st [ 'hpAll' ] * 100 ), 2 );
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Шок удар
2023-08-14 15:15:05 +00:00
private static function priem4 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 60 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Хлебнуть крови
2023-08-14 15:15:05 +00:00
private static function priem5 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 95 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Силовое поле
2023-08-14 15:15:05 +00:00
private static function priem6 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 40 && rand ( 0 , 100 ) < 50 ) {
self :: usePriem ( $i );
}
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Прикрыться
2023-08-14 15:15:05 +00:00
private static function priem7 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Вломить
2023-08-14 15:15:05 +00:00
private static function priem8 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Собрать зубы
2023-08-14 15:15:05 +00:00
private static function priem9 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Воля к победе
2023-08-14 15:15:05 +00:00
private static function priem10 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Танец ветра
2023-08-14 15:15:05 +00:00
private static function priem11 ( $i )
2022-08-25 11:23:36 +00:00
{
if ( rand ( 0 , 100 ) < 30 ) {
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Танец лезвий
2023-08-14 15:15:05 +00:00
private static function priem13 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Дикая удача
2023-08-14 15:15:05 +00:00
private static function priem14 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Слепая удача
2023-08-14 15:15:05 +00:00
private static function priem45 ( $i )
2022-08-25 11:23:36 +00:00
{
if ( rand ( 0 , 100 ) < 50 ) {
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Предвиденье
2023-08-14 15:15:05 +00:00
private static function priem47 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Второе дыхание
2023-08-14 15:15:05 +00:00
private static function priem48 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 70 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Рывок
2023-08-14 15:15:05 +00:00
private static function priem49 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 80 && self :: hp () <= 60 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Удачный удар
2023-08-14 15:15:05 +00:00
private static function priem188 ( $i )
2022-08-25 11:23:36 +00:00
{
if ( rand ( 0 , 100 ) < 30 ) {
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Стойкость
2023-08-14 15:15:05 +00:00
private static function priem204 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Ярость
2023-08-14 15:15:05 +00:00
private static function priem211 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 80 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Сильный удар
2023-08-14 15:15:05 +00:00
private static function priem217 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Утереть пот
2023-08-14 15:15:05 +00:00
private static function priem220 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 30 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Агрессивная защита
2023-08-14 15:15:05 +00:00
private static function priem223 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 50 && rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Полная защита
2023-08-14 15:15:05 +00:00
private static function priem232 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 30 && rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-01-10 16:29:32 +00:00
//Активная защита
2023-08-14 15:15:05 +00:00
private static function priem235 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( rand ( 0 , 100 ) < 50 ) {
2022-08-25 11:23:36 +00:00
self :: usePriem ( $i );
}
}
2023-08-14 15:15:05 +00:00
private static function priem240 ( $i )
2022-08-25 11:23:36 +00:00
{
2023-08-14 15:15:05 +00:00
if ( self :: hp () <= 70 ) {
self :: usePriem ( $i );
}
2022-08-25 11:23:36 +00:00
}
2023-01-10 16:29:32 +00:00
//Тест на возможность использования
2022-08-25 11:23:36 +00:00
2023-08-14 15:15:05 +00:00
private static function priem175 ( $i )
{
self :: usePriem ( $i );
2022-08-25 11:23:36 +00:00
}
}