-- $Id: bot_KretsButcher.lua,v 1.10 2009-12-29 09:18:16 a.abolishin Exp $ --[[ AKEB (c) 16.05.2008 18:26 Бот Кретс-Мясник Перед ударом. Если на боте не лежит абилка С, и у бота меньше 100% жизни, и в команде бота есть бот с артикулом 624 или 622, ТО применить на этого бота абилку В и применить на себя абилку С Если абилка D применлась более 5 минут назад или не применялась вообще, то применить абилку D на текущего противника Вместо удара. Если текущий противник в блоке, то применить на него абилку А, иначе - обычный удар СМЫСЛ: А. Абилка, наносящая сильный урон и вынуждающая отказаться от блока. B. Принесение в жертву союзника с целью получения его жизненной силы. С. Лечилка, накладывающаяся после принесения в жертву союзника. D. AoE, снимает лечащие эфекты со всех противников. ДЛЯ ТЕСТА: А=D=161, B=С=167 Скрипт: bot_KretsButcher.lua Управляющая функция: bot_KretsButcher bot_KretsButcher_t --]] artikulIdGroup = {0, 3333,3334} groupLevel = {0,0,0,0,0,0,1,1,2,2,2,2,2,2,2,2} maxGroup = 3 function bot_KretsButcher_r(artikulId1, artikulId2, artikulId3, artikulId4, h2l, pvp) if h2l then local oppList = aux.getPersList(aux.oppTeamNum(), true, nil, false) if oppList then bot_CheckHiLevelPers(oppList, h2l, bot_HiLevel2LowLevel) end if pvp then -- и своих (для честного pvp) local myList = aux.getPersList(my.teamNum, true, true, false) if myList then bot_CheckHiLevelPers(myList, h2l, bot_HiLevel2LowLevel) end end end if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return end local bot = PERS(my.persPtr) local G = bot.hp/bot.hpMax bot_KretsButcherInitTable(bot.id) if #aux.activeEffects(my.persPtr,{artId = artikulId3}) < 1 and G < 0.95 then for _,persPtr in pairs(PERS_LIST(my.teamNum,true,true)) do local pers = PERS(persPtr) if pers.artId == 624 or pers.artId == 622 then aux.useEffect({artId = artikulId2}, persPtr) aux.useEffect({artId = artikulId3}, my.persPtr) break end end end if bot_KretsButcherTime[bot.id]-my.stime < 0 then aux.useEffect({artId = artikulId4}, my.oppPtr) bot_KretsButcherTime[bot.id] = my.stime + 300 end local level = PERS_LEVEL(my.oppPtr) local group = groupLevel[level] if group == nil then group = 0 end local artikulId = artikulIdGroup[group+1] if artikulId == nil then artikulId = 0 end local key=0 local error = false for key=group+1,maxGroup do if #aux.activeEffects(my.persPtr,{artId = artikulIdGroup[key]}) > 0 then error = true break end end if error == false then aux.useEffect({artId = artikulId}) end if (PERS_ISDEFENDED(my.oppPtr)) then aux.useEffect({artId = artikulId1}, my.oppPtr) else ATTACK(math.random(3)) end end function bot_KretsButcher_t() bot_KretsButcher_r(161, 167, 167, 161) end function bot_KretsButcher() bot_KretsButcher_r(3315, 3316, 3317, 3318) end function bot_KretsButcher_H2L_5() bot_KretsButcher_r(3315, 3316, 3317, 3318, 5) end function bot_KretsButcher_H2L_PVP_5() bot_KretsButcher_r(3315, 3316, 3317, 3318, 5, true) end function bot_KretsButcher_1() bot_KretsButcher_r(3315, 3316, 6548, 3318) end function bot_KretsButcher_1_H2L_5() bot_KretsButcher_r(3315, 3316, 6548, 3318, 5) end function bot_KretsButcher_1_H2L_PVP_5() bot_KretsButcher_r(3315, 3316, 6548, 3318, 5, true) end function bot_KretsButcherInitTable(botId) if bot_KretsButcherTime == nil then bot_KretsButcherTime = {} end if bot_KretsButcherTime[botId] == nil then bot_KretsButcherTime[botId] = 0 end end