-- $Id: bot_Crab.lua,v 1.15 2009-04-15 08:47:39 vadim_b Exp $ --[[ AKEB (c) 17.07.2008 12:00 Бот Краб G - количество оставшейся жизни у бота, в % G = hp/hp_max Перед ударом - Если G < H1 и абилка A3 еще не применялась, применить абилку A3 (стун). - Если G < Н2 и абилка A3 применялась 1 раз, применить абилку A3 (стун). - С вероятностью R2 применяет на текущего противника абилку A2 (ослабление). - С вероятностью R1 применяет на себя абилку A1 (крит). После удара - Если Абилка A1 висит уже N удара то применить на себя Абилку A4 Расшифровка абилок: Бой; A1=4008 A2=4009 A3=4011 A4=4012 H1=0.7 H2=0.3 R1=R2=0.5 N=3 Тест: A1=167 A2=169 A3=161 A4=3995 H1=0.7 H2=0.3 R1=R2=0.5 N=3 Скрипт: bot_Crab.lua Управляющая функция: bot_Crab Управляющая функция для теста: bot_Crab_t --]] function bot_Crab_r(A1,A2,A3,A4,H1,H2,R1,R2,N) if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return end local noFight=false local bot = PERS(my.persPtr) local G = bot.hp/bot.hpMax bot_CrabTable(bot.id) if G < H1 and bot_CrabArtikulUsed[bot.id] == 0 then local status = aux.useEffect({artId = A3},my.oppPtr) if status == 0 then noFight = true bot_CrabArtikulUsed[bot.id] = 1 end end if G < H2 and bot_CrabArtikulUsed[bot.id] == 1 then local status = aux.useEffect({artId = A3},my.oppPtr) if status == 0 then noFight = true bot_CrabArtikulUsed[bot.id] = 2 end end if not noFight then aux.useEffect({artId = A2},my.oppPtr,R2) aux.useEffect({artId = A1},my.persPtr,R1) if #aux.activeEffects(my.persPtr,{artId = A1}) > 0 then bot_CrabEffectUsed[bot.id] = bot_CrabEffectUsed[bot.id]+1 else bot_CrabEffectUsed[bot.id] = 0 end if bot_CrabEffectUsed[bot.id] > N then local status = aux.useEffect({artId = A4}) if status == 0 then bot_CrabEffectUsed[bot.id] = 0 end end ATTACK(math.random(3)) end end function bot_CrabTable(botId) if bot_CrabArtikulUsed == nil then bot_CrabArtikulUsed={} end if botId == nil then return; end if bot_CrabArtikulUsed[botId] == nil then bot_CrabArtikulUsed[botId]=0 end if bot_CrabEffectUsed == nil then bot_CrabEffectUsed={} end if botId == nil then return; end if bot_CrabEffectUsed[botId] == nil then bot_CrabEffectUsed[botId]=0 end end ------------------------------------------------------------------------------------------------------- function bot_Crab() return bot_Crab_r(4008,4009,4011,4012,0.7,0.3,0.5,0.5,3) end function bot_Crab_t() return bot_Crab_r(167,169,161,3995,0.7,0.3,0.5,0.5,3) end function bot_Crab_sandy() return bot_Crab_r(4008,4009,4011,4012,0.7,0.3,0.11,0.11,3) end function bot_Crab_fiery() return bot_Crab_r(4008,4010,4011,4012,0.7,0.3,0.12,0.12,3) end