-- $Id: bot_GunglChar.lua,v 1.8 2010-02-26 15:43:30 a.abolishin Exp $ --[[ AKEB (c) 12.08.2008 14:58 a.abolishin Каждый ход Если бот не применял абилку (А), применить абилку на себя (А) С вероятностью 10% и при наличии 50 маны применть абилку (B) на текущего противника ВМЕСТО удара разыгрывется событие: - с вероятностью 60% делается рандомный удар - с вероятностью 40% и при наличии 20 маны применяется абилка (C) на текущего противника, иначе делается рандомный удар СМЫСЛ: В самом начале боя применяется очень толстая аура, поглощающая любой урон, кроме детской магии Во время боя иногда применяет краткосрочную несильную процентную травилку, с небольшим АоЕ Вместо удара бот часто применяет магию Для теста А = 167 B = 161 C = 169 Нужно внести изменения в скрипт bot_GunglChar. После этого новый скрипт станет обобщением скриптов bot_GunglOficer и bot_GunglChar, он будет использоваться для всех гунглов с 5 по 9 уровни. 1. Изменить вероятность применения абилки С с 40% на 15% 2. Изменить количество маны для абилки С с 20 на 55 3. Внести все вероятности и количества маны в параметры функции 4. Если параметр А = 0, то абилка А не приметяется 5. Каждый ход Если G < 30%, и количество лежащих на боте абилок (D) равно количеству примененных им ранее абилок (D), и это количество меньше N, то Применить абилку D на себя Если количество лежащих на боте абилок (D) равно N, то разыгрывается событие 1. - с вероятностью p1 дважды применяется абилка на себя (E) - с вероятностью p2 один раз применяется абилка на себя (E) - с вероятностью 1-p1-p2 ничего разыгрывается событие 2. - с вероятностью p3 дважды применяется абилка на себя (F) - с вероятностью p4 один раз применяется абилка на себя (F) - с вероятностью 1-p3-p4 ничего применяется абилка (H) на себя конец Если. СМЫСЛ ПУНКТА 5: Когда у бота остается мало жизни, он начинает готовиться к саморазделению. Если ему не помешать, он распадется на несколько других ботов (E и F), а потом исчезнет (Н) Пункт 5 можно скопировать со скрипта bot_GunglOficer, ID абилок для боя и теста – с функции GunglOficer в этом скрипте Скрипт: bot_GunglChar.lua Управляющая функция: bot_GunglChar bot_GunglChar_t --]] if not bot_GunglChar_State then bot_GunglChar_State = {} end function bot_GunglChar_r(artikulId1,artikulId2,artikulId3,artikulId4,artikulId5,artikulId6,artikulId7,mp1,mp2,roll1,roll2,roll3,N,p1,p2,p3,p4) if my.status ~= FS_PS_ACTIVE then -- если наш статус неактивный, ничего не делаем return end local bot = PERS(my.persPtr) local G = bot.hp/bot.hpMax if not bot_GunglChar_State[bot.id] then bot_GunglChar_State[bot.id] = {} bot_GunglChar_State[bot.id].used1 = 0 bot_GunglChar_State[bot.id].used2 = 0 end if bot_GunglChar_State[bot.id].used1 < 1 and artikulId1 > 0 then local status = aux.useEffect({artId = artikulId1}) if status == 0 then bot_GunglChar_State[bot.id].used1 = 1 end end if bot.mp >= mp1 then aux.useEffect({artId = artikulId2}, my.oppPtr, roll1) bot.mp = bot.mp - mp1 end local artId4Cnt = #aux.activeEffects(my.persPtr, {artId = artikulId4}) if artId4Cnt == N then local r = math.random() if r <= p1 then aux.useEffect({artId = artikulId5}) aux.useEffect({artId = artikulId5}) elseif r <= p1+p2 then aux.useEffect({artId = artikulId5}) end local r = math.random() if r <= p3 then aux.useEffect({artId = artikulId6}) aux.useEffect({artId = artikulId6}) elseif r <= p3+p4 then aux.useEffect({artId = artikulId6}) end aux.useEffect({artId = artikulId7}) return end if G < roll2 then if (artId4Cnt < N) and (artId4Cnt == bot_GunglChar_State[bot.id].used2) then local status = aux.useEffect({artId = artikulId4}) if status == 0 then bot_GunglChar_State[bot.id].used2 = bot_GunglChar_State[bot.id].used2 + 1 end end end if (bot.mp >= mp2) and (aux.randRoll(roll3)) then aux.useEffect({artId = artikulId3}, my.oppPtr) else ATTACK(math.random(3)) end end function bot_GunglChar_t() bot_GunglChar_r(167,161,169,170,167,167,167,50,55,0.1,0.3,0.15,3,0,0,0.64,0.20) end function bot_GunglChar() bot_GunglChar_r(2832,2831,2830,2828,2836,2826,2829,50,55,0.1,0.3,0.15,3,0.16,0.48,0.64,0.20) end function bot_GunglChar_8() bot_GunglChar_r(0,2831,2830,2828,2836,2826,2829,50,55,0.1,0.3,0.15,3,0.16,0.48,0.64,0.20) end function bot_GunglChar_7() bot_GunglChar_r(0,2831,3400,2828,2826,3394,2829,50,55,0.1,0.3,0.15,3,0.16,0.48,0.64,0.20) end function bot_GunglChar_6() bot_GunglChar_r(0,3404,3401,2828,3394,3395,2829,50,55,0.1,0.3,0.15,3,0.16,0.48,0.64,0.20) end function bot_GunglChar_5() bot_GunglChar_r(0,3404,3402,2828,3395,3395,2829,50,55,0.1,0.3,0.15,3,0.16,0.48,0,0) end