-- $Id: bot_MagNaem.lua,v 1.11 2009-04-15 08:22:42 vadim_b Exp $ --[[ AKEB (c) 12.08.2008 12:46 Маг-наемник. Перед ударом разыгрывется событие: - с вероятностью 10% абилка (A) на себя - с вероятностью 10% АоЕ абилка (B) на текущего противника - с вероятностью 80% - ничего ВМЕСТО удара разыгрывется событие: - с вероятностью 40% делается верхний удар - с вероятностью 35% и при наличии 50 маны применяется абилка (С) на текущего противника, иначе делается верхний удар - с вероятностью 25% и при наличии 20 маны применяется абилка (D) на текущего противника, иначе делается верхний удар Для теста можно использовать абилки А = 167 B = 161 C = 169 D = 169 Скрипт: bot_MagNaem.lua Управляющая функция: bot_MagNaem bot_MagNaem_t --]] function bot_MagNaem_r(artikulId1,artikulId2,artikulId3,artikulId4,artifacts) if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return end local r = math.random() local bot = PERS(my.persPtr) local G = bot.hp/bot.hpMax bot_MagNaemInitArtikulUsed(bot.id) bot_MagNaemInitRandom(bot.id) local bots = {} local bot_count = 0 local persList = PERS_LIST(my.teamNum,nil,nil) if r <= 0.1 then aux.useEffect({artId = artikulId1}) elseif r <= 0.2 then aux.useEffect({artId = artikulId2},my.oppPtr) 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_MagNaemArtikulUsed[bot.id] < 1 and G <= bot_MagNaemRandom[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_MagNaemArtikulUsed[bot.id]=1 end break end end if (check == 0) then local status,_ = aux.useEffect({artId = aux.getRandKey(artifacts)}) if status == 0 then bot_MagNaemArtikulUsed[bot.id]=1 end end else local status,_ = aux.useEffect({artId = aux.getRandKey(artifacts)}) if status == 0 then bot_MagNaemArtikulUsed[bot.id]=1 end end end local r = math.random() if r <= 0.25 and bot.mp >= 20 then aux.useEffect({artId = artikulId4},my.oppPtr) elseif r <= 0.6 and bot.mp >= 50 then aux.useEffect({artId = artikulId3},my.oppPtr) else ATTACK(1) end end function bot_MagNaemInitArtikulUsed(botId) if bot_MagNaemArtikulUsed == nil then bot_MagNaemArtikulUsed={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagNaemArtikulUsed[botId] == nil then bot_MagNaemArtikulUsed[botId]=0 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagNaemInitRandom(botId) if bot_MagNaemRandom == nil then bot_MagNaemRandom={} end -- Если глобальная переменная не существует создаем ее if botId == nil then return; end -- если не задан ID бота, ничего не делаем if bot_MagNaemRandom[botId] == nil then bot_MagNaemRandom[botId]=math.random(65,90)/100 end -- Если нет глобальной переменной с Этим ботом создаем ее со значением 0 end function bot_MagNaem_M_vamp() local artifacts = {[2840]=607,[2842]=609,[2845]=606} return bot_MagNaem_r(2805,2803,2810,2812,artifacts) end function bot_MagNaem_H_vamp() local artifacts = {[2841]=605,[2843]=610,[2844]=608} return bot_MagNaem_r(2804,2802,2810,2811,artifacts) end function bot_MagNaem_M_otva() local artifacts = {[2840]=607,[2842]=609,[2845]=606} return bot_MagNaem_r(3283,2803,2810,2812,artifacts) end function bot_MagNaem_H_otva() local artifacts = {[2841]=605,[2843]=610,[2844]=608} return bot_MagNaem_r(3283,2802,2810,2811,artifacts) end function bot_MagNaem_t() local artifacts = {[167]=641,[161]=644} return bot_MagNaem_r(167,161,169,169,artifacts) end