-- $Id: bot_Magus.lua,v 1.5 2009-04-23 11:45:59 a.abolishin Exp $ --[[ AKEB (c) 16.05.2008 18:26 Маги G = hp/hp_max Для 6-7 уровней Перед ударом Наложить абилку 1 раз на себя (2539) если G < 0.8 и я не накладывал ни разу абилку, наложить на противнка абилку (2542/2080) если G < 0.35 и я накладывал 1 раз абилку, наложить на противнка абилку (2542/2080) наложить на одного из своей команды, кроме себя, абилку (2083) раз в 30 секунд призвать 1 раз N Призраков-воина Агудара[6]/Солдат-призраков[7] (4357/4358) После удара если на мне не лежит абилка (2077/2078) и я ее не накладывал ни разу, наложить на себя абилку (2077/2078) с вероятностью (G-0,9)/(-0,15) если на мне не лежит абилка (2077/2078) и я ее не накладывал 1 раз, наложить на себя абилку (2077/2078) с вероятностью (G-0,65)/(-0,15) Для 8 уровня Перед ударом Наложить абилку 1 раз на себя (2539) если G < 0.8 и я не накладывал ни разу абилку, наложить на противнка абилку (2081) если G < 0.35 и я накладывал 1 раз абилку, наложить на противнка абилку (2081) наложить на одного из своей команды, кроме себя, абилку (2083) раз в 30 секунд если противник не в блоке, использовать на себя абилку (1952) призвать 1 раз N Охранных элементалей тьмы [8] (4359) После удара если на мне не лежит абилка (2079) и я ее не накладывал ни разу, наложить на себя абилку (2079) с вероятностью (G-0,9)/(-0,15) если на мне не лежит абилка (2079) и я ее не накладывал 1 раз, наложить на себя абилку (2079) с вероятностью (G-0,65)/(-0,15) Для 9-10 уровней Перед ударом Наложить абилку 1 раз на себя (2539) если G < 0.8 и я не накладывал ни разу абилку, наложить на противнка абилку (2081/2082) если G < 0.35 и я накладывал 1 раз абилку, наложить на противнка абилку (2081/2082) наложить на одного из своей команды, кроме себя, абилку (2083) раз в 30 секунд если противник не в блоке, использовать на себя абилку (1952/2085) призвать 1 раз N Скелетов-часовых[9]/Скелетов королевских гончих[10] (4360/4361) Скрипт: bot_Magus.lua Управляющая функция: bot_Magus_6 -- для 6 уровня bot_Magus_7 -- для 7 уровня bot_Magus_8 -- для 8 уровня bot_Magus_9 -- для 9 уровня bot_Magus_10 -- для 10 уровня --]] function bot_MagusInit(bot_id,artikulId) bot_MagusInitArtikulUsed2(bot_id) if bot_MagusArtikulUsed2[bot_id] == 0 then local status = aux.useEffect({artId = artikulId}) if status == 0 then bot_MagusArtikulUsed2[bot_id] = 1 end end end function bot_MagusSummon(bot_id, id, count) if bot_MagusSummoned == nil then bot_MagusSummoned={} end -- Если глобальная переменная не существует создаем ее if bot_id == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagusSummoned[bot_id] == nil then bot_MagusSummoned[bot_id]=0 end if bot_MagusSummoned[bot_id] == 0 then for i=1, count do aux.useEffect({artId = id}) end bot_MagusSummoned[bot_id] = 1 end end function bot_MagusFirst(G,bot_id,artikulId) bot_MagusInitArtikulUsed(bot_id) local p = math.max(0,math.min(1,((G-0.9)/(-0.15)))) if bot_MagusArtikulUsed[bot_id] == 0 and aux.randRoll(p) then if #aux.activeEffects(my.persPtr,{artId = artikulId}) < 1 then local status = aux.useEffect({artId = artikulId}) if status == 0 then bot_MagusArtikulUsed[bot_id] = 1 end end end p = math.max(0,math.min(1,((G-0.65)/(-0.15)))) if bot_MagusArtikulUsed[bot_id] == 1 and aux.randRoll(p) then if #aux.activeEffects(my.persPtr,{artId = artikulId}) < 1 then local status = aux.useEffect({artId = artikulId}) if status == 0 then bot_MagusArtikulUsed[bot_id] = 2 end end end end function bot_MagusSecond(G,bot_id,artikulId_1,artikulId_2,artikulId_3,howMuch) local oppTeamNum = aux.oppTeamNum() -- номер противоположной команды local timeStep = 30 bot_MagusInitTimeTable(bot_id) bot_MagusInitArtikulUsed3(bot_id) if G < 0.8 and bot_MagusArtikulUsed3[bot_id] < 1 then local status = aux.useEffect({artId = artikulId_1},my.oppPtr) if status == 0 then bot_MagusArtikulUsed3[bot_id] = 1 end end if howMuch > 3 then if G < 0.65 and bot_MagusArtikulUsed3[bot_id] < 2 then local status = aux.useEffect({artId = artikulId_1},my.oppPtr) if status == 0 then bot_MagusArtikulUsed3[bot_id] = 2 end end if G < 0.50 and bot_MagusArtikulUsed3[bot_id] < 3 then local status = aux.useEffect({artId = artikulId_1},my.oppPtr) if status == 0 then bot_MagusArtikulUsed3[bot_id] = 3 end end end if G < 0.35 and bot_MagusArtikulUsed3[bot_id] < howMuch then local status = aux.useEffect({artId = artikulId_1},my.oppPtr) if status == 0 then bot_MagusArtikulUsed3[bot_id] = howMuch end end if my.stime >= bot_MagusTimeTable[bot_id] then -- если времени прошло достаточно for _,persPtr in pairs(PERS_LIST(my.teamNum,true,true)) do local status = aux.useEffect({artId = artikulId_2},persPtr) if status == 0 then bot_MagusTimeTable[bot_id]=my.stime+timeStep -- Устанавливаем метку времени break end end end if artikulId_3 and not PERS_ISDEFENDED(my.oppPtr) then aux.useEffect({artId = artikulId_3}) end end function bot_MagusInitArtikulUsed2(botId) if bot_MagusArtikulUsed2 == nil then bot_MagusArtikulUsed2={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagusArtikulUsed2[botId] == nil then bot_MagusArtikulUsed2[botId]=0 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagusInitArtikulUsed3(botId) if bot_MagusArtikulUsed3 == nil then bot_MagusArtikulUsed3={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagusArtikulUsed3[botId] == nil then bot_MagusArtikulUsed3[botId]=0 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagusInitArtikulUsed(botId) if bot_MagusArtikulUsed == nil then bot_MagusArtikulUsed={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagusArtikulUsed[botId] == nil then bot_MagusArtikulUsed[botId]=0 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagusInitTimeTable(botId) if bot_MagusTimeTable == nil then bot_MagusTimeTable={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagusTimeTable[botId] == nil then bot_MagusTimeTable[botId]=0 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagusNotStep() if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return true else return false end end function bot_Magus_6_t() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4305, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2542,2083,nil,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2077) end function bot_Magus_6() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4357, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2542,2083,nil,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2077) end function bot_Magus_7_t() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4306, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2080,2083,nil,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2078) end function bot_Magus_7() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4358, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2080,2083,nil,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2078) end function bot_Magus_8_t() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4307, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2081,2083,1952,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2079) end function bot_Magus_8() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4359, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2081,2083,1952,2) ATTACK(math.random(3)) bot_MagusFirst(G,bot.id,2079) end function bot_Magus_9_t() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4308, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2081,2083,1952,4) ATTACK(math.random(3)) end function bot_Magus_9() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4360, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2081,2083,1952,4) ATTACK(math.random(3)) end function bot_Magus_10_t() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4309, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2082,2083,2085,4) ATTACK(math.random(3)) end function bot_Magus_10() local bot = PERS(my.persPtr) -- Берем данные о боте bot_MagusSummon(bot.id, 4361, 4) if bot_MagusNotStep() then return end local G = bot.hp/bot.hpMax bot_MagusInit(bot.id,2539) bot_MagusSecond(G,bot.id,2082,2083,2085,4) ATTACK(math.random(3)) end