--[[ a.abolishin Лорд Крофдоров[14] ]] function bot_Krofdor14_r(A, C, portals, summons) local bot = PERS(my.persPtr) -- оставшееся кол-во вторых бафов if bot_Krofdor14Baf2 == nil then bot_Krofdor14Baf2 = {} end if bot_Krofdor14Baf2[bot.id] == nil then bot_Krofdor14Baf2[bot.id] = 2 end -- текущие порталы if bot_Krofdor14Portals == nil then bot_Krofdor14Portals = {} end if bot_Krofdor14Portals[bot.id] == nil then bot_Krofdor14Portals[bot.id] = {} end -- Абсорб aux.useEffect({artId = A[4]}) -- Если наш статус неактивный, ничего не делаем if my.status ~= FS_PS_ACTIVE then return end local hpC = bot.hp / bot.hpMax local portalCount = #bot_Krofdor14Portals[bot.id] if hpC < (C[5] - portalCount) * C[3] then -- выбираем призыв, вешаем портал и запоминаем local portalId = math.random(#portals) aux.useEffect({artId = portals[portalId]}) table.insert(bot_Krofdor14Portals[bot.id], { portalId, my.stime + C[4] }) portalCount = portalCount + 1 end -- Проверка текущих порталов: local summonTime = false for portalIdx, portal in ipairs(bot_Krofdor14Portals[bot.id]) do if portal and (portal[1] > 0) and (portal[2] <= my.stime) then summonTime = true break end end if summonTime then -- Получаем список всех активных абилок local activeEffects = aux.activeEffects(my.persPtr) -- Проходим список порталов (с конца!) for portalIdx=portalCount, 1, -1 do local portal = bot_Krofdor14Portals[bot.id][portalIdx] -- если портал валиден и по нему еще не было призыва if portal and (portal[1] > 0) then -- пытаемся найти абилку для текущего портала local portalAbil = nil for effIdx = #activeEffects, 1, -1 do local eff = EFF(activeEffects[effIdx]) if eff.id == portals[portal[1]] then -- если нашли, то запоминаем ее и выкидываем из списка portalAbil = activeEffects[effIdx] table.remove(activeEffects, effIdx) break end end -- если время портала пришло if (portal[2] <= my.stime) then -- если он все еще открыт, то призываем if portalAbil then DROP_EFFECT(portalAbil) for _, summonArtId in pairs(summons[portal[1]]) do aux.useEffect({artId = summonArtId}) end end -- закрываем bot_Krofdor14Portals[bot.id][portalIdx][1] = 0 end end end end -- Дыхание крофдора и мана local thresholdHP = bot_Krofdor14Baf2[bot.id] * C[2] if hpC < thresholdHP then local p = math.max(0, math.min(1, (thresholdHP-hpC)*10)) if aux.randRoll(p) then -- если висит портал или прошел рандом --if bot_Krofdor14SummonInProgress[bot.id] or aux.randRoll(0.5) then if aux.randRoll(0.5) then aux.useEffect({artId = A[2]}, my.oppPtr) -- кастуем Дыхание на противника else aux.useEffect({artId = A[3]}) -- в противном случае юзаем ману на себя end bot_Krofdor14Baf2[bot.id] = bot_Krofdor14Baf2[bot.id] - 1 end end -- Хватает маны - юзаем разрушающий луч if bot.mp > C[1] then aux.useEffect({artId = A[1]}, my.oppPtr) else ATTACK(math.random(3)) end end -- botId = 936 function bot_Krofdor14() -- луч, дыхание крофдора, мана, абсорб local A = {5347, 2269, 2297, 5346} -- стоимость луча, шаг для "дыхания" и маны, шаг для портала и призыва, время портала, общее кол-во порталов local C = {50, 0.4, 0.45, 24, 2} -- порталы и призывы: 11, 14 local portals = {5805, 5348} local summons = {{5806, 5806}, {5349}} bot_Krofdor14_r(A, C, portals, summons) end function bot_Krofdor14_t() -- луч, дыхание крофдора, мана, абсорб local A = {5347, 2269, 2297, 5346} -- стоимость луча, шаг для "дыхания" и маны, шаг для портала и призыва, время портала, общее кол-во порталов local C = {50, 0.4, 0.45, 24} -- порталы и призывы local portals = {2294, 4066, 5348, 2} local summons = {{2293}, {4068}, {5349}} bot_Krofdor14_r(A, C, portals, summons) end