-- $Id: bot_Angelwarrior.lua,v 1.17 2009-10-21 14:10:43 a.abolishin Exp $ --[[ AKEB (c) 27.02.2009 12:35 Бот Архон-воин Перед ударом: -Если А3 не висит на боте и текущий противник 12 уровня или старше, применить на себя абилку А3. Вместо удара: -Если А1 не висит на текущем противнике, то с вероятностью R1 использовать на текущего противника абилки А2 и А1. Расшифровка абилок: Бой, Тест: А1=4073 А2=4072 А3=4078 R=0.5 M = 50 Скрипт: bot_Angelwarrior.lua Управляющая функция: bot_Angelwarrior Управляющая функция для теста: bot_Angelwarrior_t --]] function bot_Angelwarrior_r(A1, A2 ,A3, R, M) -- Если наш статус неактивный, ничего не делаем if my.status ~= FS_PS_ACTIVE then return end local bot = PERS(my.persPtr) local oppLevel = PERS_LEVEL(my.oppPtr) -- Использовать "Самоотверженность" если противник выше 11ого уровня if #aux.activeEffects(my.persPtr, {artId = A3}) < 1 and oppLevel > 11 then aux.useEffect({artId = A3}) end -- Оглушение + ослабление следующего удара. if bot.mp >= M and #aux.activeEffects(my.oppPtr, {artId = A1}) < 1 and aux.randRoll(R) then aux.useEffect({artId = A2}, my.oppPtr) aux.useEffect({artId = A1}, my.oppPtr) else ATTACK(math.random(3)) end end function bot_Angelwarrior_11_r(A) local bot = PERS(my.persPtr) -- Магический абсорб. aux.useEffect({artId = A[2]}) -- Считалка каста. if bot_Angelwarrior_11_CastNum == nil then bot_Angelwarrior_11_CastNum = {} end if bot_Angelwarrior_11_CastNum[bot.id] == nil then bot_Angelwarrior_11_CastNum[bot.id] = 0 end -- Можем ли ходить? if my.status ~= FS_PS_ACTIVE then return end -- Каст злой абилки - урон + ослабление. if bot_Angelwarrior_11_CastNum[bot.id] < 2 then local curHPCoeff = bot.hp / bot.hpMax local needHPCoeff = 0.9 - bot_Angelwarrior_11_CastNum[bot.id] * 0.3 if curHPCoeff < needHPCoeff then local a = 4.5 - bot_Angelwarrior_11_CastNum[bot.id] * 1.5 local probability = math.min(a - curHPCoeff * 5, 1) if not PERS_ISBOT(my.oppPtr) and aux.randRoll(probability) then aux.useEffect({artId = A[1]}, my.oppPtr) bot_Angelwarrior_11_CastNum[bot.id] = bot_Angelwarrior_11_CastNum[bot.id] + 1 end end end ATTACK(aux.getRandVal({1,3})) end -------------------------------------------------------------------------------- function bot_Angelwarrior() bot_Angelwarrior_r(4073, 4072, 4078, 0.3, 50) end function bot_Angelwarrior_t() bot_Angelwarrior_r(4073, 4072, 4078, 0.5, 50) end function bot_Angelwarrior_11() local A = {4919, 4920} bot_Angelwarrior_11_r(A) end function bot_Angelwarrior_11_t() local A = {4664, 4665} bot_Angelwarrior_11_r(A) end