-- $Id: bot_Wangelwizard.lua,v 1.14 2009-10-22 07:50:47 a.abolishin Exp $ --[[ AKEB (c) 13.03.2009 12:35 Бот Эльдивианка-маг G - количество жизни у бота, в %% G = hp/hp_max Перед ударом, проверка делается только 1 раз через 24 секунды после применения А1 … А4: Если бот применял абилку А1 (манок1) и она уже 24 секунд висит на игроке, на которого она применялась, применить на этого игрока абилку А10 (сброс абилки) и на себя все абилки из набора B1. Если бот применял абилку А2 (манок2) и она уже 24 секунд висит на игроке, на которого она применялась, применить на этого игрока абилку А10 (сброс абилки) и на себя все абилки из набора B2. Если бот применял абилку А3 (манок3) и она уже 24 секунд висит на игроке, на которого она применялась, применить на этого игрока абилку А10 (сброс абилки) и на себя все абилки из набора B3. Если бот применял абилку А4 (манок4) и она уже 24 секунд висит на игроке, на которого она применялась, применить на этого игрока абилку А10 (сброс абилки) и на себя все абилки из набора B4. Перед ударом: Если G<Н2 и абилки А5, А6 не применялись, то с вероятностью R=(H2-G)/(H2-H1), применить на себя абилку А5 (элик маны) либо А6 (дебаф) на текущего противника. Если G<Н4 и абилки А5, А6 применялись не более 1 раза, то с вероятностью R6=(H4-G)/(H4-H3), применить на себя абилку А5 (элик маны) либо А6 (дебаф) на текущего противника. Вместо удара: При наличии манны М1 и отсутствии А8 на текущем противнике использовать на текущего противника абилку А7(стун) и А8(ослабление). Иначе с вероятностью R7 применить на текущего противника абилку А9(вампиризм). Иначе если G<Н5 и абилки А1, А2, А3, А4 не применялись или G<Н6 и абилки А1, А2, А3, А4 применялись не более 1 раза, ударить нижним ударом и применить на текущего противника одну из абилок: А1, А2, А3, А4 (манки), Иначе ударить верхним ударом. Скрипт: bot_Wangelwizard.lua Управляющая функция: bot_Wangelwizard Управляющая функция для теста: bot_Wangelwizard_t --]] function bot_Wangelwizard_r(A1,A2,B,H,M,R,TIME) if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return end local bot = PERS(my.persPtr) local G = bot.hp / bot.hpMax bot_Wangelwizard_table(bot.id) -- проверка лежит ли абилка 24 секунды на противнике на которого вешали if bot_WangelwizardTable[bot.id]['art4'] > 0 and A1[bot_WangelwizardTable[bot.id]['art4']] > 0 and bot_WangelwizardTable[bot.id]['time4'] > 0 and bot_WangelwizardTable[bot.id]['time4'] <= my.stime then local persId = PERS_ID(bot_WangelwizardTable[bot.id]['user']) if persId then local labelAbils = aux.activeEffects(bot_WangelwizardTable[bot.id]['user'], {artId = A1[bot_WangelwizardTable[bot.id]['art4']], activatorId = bot.id}) if labelAbils and #labelAbils > 0 then DROP_EFFECT(labelAbils[1]) if B[bot_WangelwizardTable[bot.id]['art4']] then for _, t_art in pairs(B[bot_WangelwizardTable[bot.id]['art4']]) do aux.useEffect({artId = t_art}) end end end end bot_WangelwizardTable[bot.id]['time4'] = 0 bot_WangelwizardTable[bot.id]['user'] = nil bot_WangelwizardTable[bot.id]['art4'] = 0 end -- применяем А5 или А6 в первый раз if bot_WangelwizardTable[bot.id]['art5'] < 1 and G= M and #aux.activeEffects(my.oppPtr, {artId = A2[4]}) < 1 then aux.useEffect({artId = A2[3]}, my.oppPtr) aux.useEffect({artId = A2[4]}, my.oppPtr) elseif aux.randRoll(R) then aux.useEffect({artId = A2[5]}) aux.useEffect({artId = A2[6]}, my.oppPtr) return elseif (G