-- $Id: bot_MagUni.lua,v 1.18 2009-12-28 09:16:12 a.abolishin Exp $ --[[ AKEB (c) 11.08.2008 12:46 Маг-Универсал Каждый ход Если на ком-то в своей команде нет АоЕ ни абилки (А1), ни абилки (А2) , наложить на себя абилку (А1) либо (A2), c равными вероятностями. Фактически она наложится на всю свою команду. Если на ком-то в своей команде нет АоЕ ни абилки (А3), ни абилки (А4) , наложить на себя абилку (А3) либо (A4), c равными вероятностями. Фактически она наложится на всю свою команду. Если на ком-то в своей команде нет АоЕ ни абилки (А5), ни абилки (А6) , наложить на себя абилку (А5) либо (A6), c равными вероятностями. Фактически она наложится на всю свою команду. ВМЕСТО удара разыгрывется событие: - с вероятностью 28% делается рандомный удар - с вероятностью 12% и при наличии С1 маны применяется абилка (B1) на текущего противника, иначе делается рандомный удар - с вероятностью 12% и при наличии С2 маны применяется абилка (B2) на текущего противника, иначе делается рандомный удар - с вероятностью 12% и при наличии С3 маны применяется абилка (B3) на текущего противника, иначе делается рандомный удар - с вероятностью 12% и при наличии С4 маны применяется абилка (B4) на текущего противника, иначе делается рандомный удар - с вероятностью 12% и при наличии С5 маны применяется абилка (B5) на текущего противника, иначе делается рандомный удар - с вероятностью 12% и при наличии С6 маны применяется абилка (B6) на текущего противника, иначе делается рандомный удар Скрипт: bot_MagUni.lua Управляющая функция: bot_MagUni bot_MagUni_t --]] function bot_MagUni_r(artikulIds1, artikulIds2, artikulIds3, artifacts) -- если наш статус неактивный, ничего не делаем if my.status ~= FS_PS_ACTIVE then return end local bot = PERS(my.persPtr) local G = bot.hp/bot.hpMax bot_MagUniInitArtikulUsed(bot.id) bot_MagUniInitRandom(bot.id) local bots = {} local bot_count = 0 local persList = PERS_LIST(my.teamNum, nil, nil) local art1 = nil local art2 = nil local art3 = nil for _, persPtr in pairs(persList) do if persPtr.status ~= FS_PS_DEAD then if #aux.activeEffects(persPtr, {artId = artikulIds1[1]}) < 1 and #aux.activeEffects(persPtr, {artId = artikulIds1[2]}) < 1 then art1 = true end if #aux.activeEffects(persPtr, {artId = artikulIds1[3]}) < 1 and #aux.activeEffects(persPtr, {artId = artikulIds1[4]}) < 1 then art2 = true end if #aux.activeEffects(persPtr, {artId = artikulIds1[5]}) < 1 and #aux.activeEffects(persPtr, {artId = artikulIds1[6]}) < 1 then art3 = true end end end if (art1 == true) then if aux.randRoll(0.5) then aux.useEffect({artId = artikulIds1[1]}) else aux.useEffect({artId = artikulIds1[2]}) end end if (art2 == true) then if aux.randRoll(0.5) then aux.useEffect({artId = artikulIds1[3]}) else aux.useEffect({artId = artikulIds1[4]}) end end if (art3 == true) then if aux.randRoll(0.5) then aux.useEffect({artId = artikulIds1[5]}) else aux.useEffect({artId = artikulIds1[6]}) end end for _, persPtr in pairs(persList) do local pers = PERS(persPtr) if pers.artId then bots[pers.artId] = pers bot_count = bot_count+1 end end if bot_MagUniArtikulUsed[bot.id] < 1 and G <= bot_MagUniRandom[bot.id] then if bot_count > 1 then local check = 0 for artifact, botId in pairs(artifacts) do if (bots[botId]) then local status,_ = aux.useEffect({artId = artifact}) if status == 0 then check = 1 bot_MagUniArtikulUsed[bot.id]=1 end break end end if (check == 0) then local status,_ = aux.useEffect({artId = aux.getRandKey(artifacts)}) if status == 0 then bot_MagUniArtikulUsed[bot.id]=1 end end else local status,_ = aux.useEffect({artId = aux.getRandKey(artifacts)}) if status == 0 then bot_MagUniArtikulUsed[bot.id]=1 end end end local r = math.random() if r <= 0.12 and bot.mp >= artikulIds3[1] then aux.useEffect({artId = artikulIds2[1]}, my.oppPtr) elseif r <= 0.24 and bot.mp >= artikulIds3[2] then aux.useEffect({artId = artikulIds2[2]}, my.oppPtr) elseif r <= 0.36 and bot.mp >= artikulIds3[3] then aux.useEffect({artId = artikulIds2[3]}, my.oppPtr) elseif r <= 0.48 and bot.mp >= artikulIds3[4] then aux.useEffect({artId = artikulIds2[4]}, my.oppPtr) elseif r <= 0.60 and bot.mp >= artikulIds3[5] then aux.useEffect({artId = artikulIds2[5]}, my.oppPtr) elseif r <= 0.72 and bot.mp >= artikulIds3[6] then aux.useEffect({artId = artikulIds2[6]}, my.oppPtr) else ATTACK(math.random(3)) end end function bot_MagUniInitArtikulUsed(botId) -- Если глобальная переменная не существует создаем ее if bot_MagUniArtikulUsed == nil then bot_MagUniArtikulUsed={} end -- если не задан ID бота, ничего не делаем if botId == nil then return; end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 if bot_MagUniArtikulUsed[botId] == nil then bot_MagUniArtikulUsed[botId]=0 end end function bot_MagUniInitRandom(botId) -- Если глобальная переменная не существует создаем ее if bot_MagUniRandom == nil then bot_MagUniRandom={} end -- если не задан ID бота, ничего не делаем if botId == nil then return; end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 if bot_MagUniRandom[botId] == nil then bot_MagUniRandom[botId]=math.random(65,90)/100 end end function bot_MagUni() local A = {2814, 2815, 2816, 2817, 2818, 2819} local B = {2781, 2782, 2783, 2784, 2785, 2786} local C = {43, 43, 37, 37, 60, 60} local D = {[2840]=607, [2841]=605, [2842]=609, [2843]=610, [2844]=608, [2845]=606} bot_MagUni_r(A, B, C, D) end function bot_MagUni_Portal() local A = {2814, 2815, 2816, 2817, 2818, 2819} local B = {2781, 2782, 2783, 2784, 2785, 2786} local C = {43, 43, 37, 37, 60, 60} local D = {[6537]=1140, [6538]=1138, [6539]=1142, [6540]=1143, [6541]=1141, [6542]=1139} bot_MagUni_r(A, B, C, D) end function bot_MagUni_t() local A = {2814, 2815, 2816, 2817, 2818, 2819} local B = {161, 161, 161, 161, 161, 161} local C = {10000, 10000, 10000, 10000, 10000, 10000} local D = {[2843]=610} bot_MagUni_r(A, B, C, D) end