--[[ a.abolishin Тестовый скрипт. ]] function bot_nekto0() local bot = PERS(my.persPtr) if my.status ~= FS_PS_ACTIVE then return end ATTACK(math.random(3)) end function bot_stun_test() local bot = PERS(my.persPtr) if my.status ~= FS_PS_ACTIVE then return end if not PERS_ISSTUNNED(my.oppPtr) then aux.useEffect({artId = 4848}) end ATTACK(math.random(3)) end function bot_mount_abil_test() local bot = PERS(my.persPtr) if my.status ~= FS_PS_ACTIVE then return end abil_MountHeal() ATTACK(math.random(3)) end function bot_mount_abil_test0() local bot = PERS(my.persPtr) if my.status ~= FS_PS_ACTIVE then return end aux.useEffect({artId = 5843}, my.persPtr) ATTACK(math.random(3)) end function bot_mount_abil_test2() local bot = PERS(my.persPtr) local myPersId = PERS_ID(my.persPtr) local activator_id = lookupParam("Pers", "activator_id", myPersId) or 0 local avail = lookupParam("Pers", "skill_ABIL_MOUNTHEAL", activator_id) or 0 if avail > 0 then aux.useEffect({artId = 5843}, my.persPtr) end if my.status ~= FS_PS_ACTIVE then return end ATTACK(math.random(3)) end function bot_Krofdor14_rt(A, C, portals, summons) local bot = PERS(my.persPtr) -- оставшееся кол-во вторых бафов if bot_Krofdor14Baf2 == nil then bot_Krofdor14Baf2 = {} end if bot_Krofdor14Baf2[bot.id] == nil then bot_Krofdor14Baf2[bot.id] = 2 end -- текущие порталы if bot_Krofdor14Portals == nil then bot_Krofdor14Portals = {} end if bot_Krofdor14Portals[bot.id] == nil then bot_Krofdor14Portals[bot.id] = {} end -- Абсорб aux.useEffect({artId = A[4]}) -- Если наш статус неактивный, ничего не делаем if my.status ~= FS_PS_ACTIVE then return end local hpC = bot.hp / bot.hpMax local portalCount = #bot_Krofdor14Portals[bot.id] if hpC < (C[5] - portalCount) * C[3] then -- выбираем призыв, вешаем портал и запоминаем local portalId = math.random(#portals) aux.useEffect({artId = portals[portalId]}) table.insert(bot_Krofdor14Portals[bot.id], { portalId, my.stime + C[4] }) portalCount = portalCount + 1 end -- Проверка текущих порталов: local summonTime = false for portalIdx, portal in ipairs(bot_Krofdor14Portals[bot.id]) do if portal and (portal[1] > 0) and (portal[2] <= my.stime) then summonTime = true break end end if summonTime then -- Получаем список всех активных абилок local activeEffects = aux.activeEffects(my.persPtr) -- Проходим список порталов (с конца!) for portalIdx=portalCount, 1, -1 do local portal = bot_Krofdor14Portals[bot.id][portalIdx] -- если портал валиден и по нему еще не было призыва if portal and (portal[1] > 0) then -- пытаемся найти абилку для текущего портала local portalAbil = nil for effIdx = #activeEffects, 1, -1 do local eff = EFF(activeEffects[effIdx]) if eff.id == portals[portal[1]] then -- если нашли, то запоминаем ее и выкидываем из списка portalAbil = activeEffects[effIdx] table.remove(activeEffects, effIdx) break end end -- если время портала пришло if (portal[2] <= my.stime) then -- если он все еще открыт, то призываем if portalAbil then DROP_EFFECT(portalAbil) for _, summonArtId in pairs(summons[portal[1]]) do aux.useEffect({artId = summonArtId}) end end -- закрываем bot_Krofdor14Portals[bot.id][portalIdx][1] = 0 end end end end -- Дыхание крофдора и мана local thresholdHP = bot_Krofdor14Baf2[bot.id] * C[2] if hpC < thresholdHP then local p = math.max(0, math.min(1, (thresholdHP-hpC)*10)) if aux.randRoll(p) then -- если висит портал или прошел рандом --if bot_Krofdor14SummonInProgress[bot.id] or aux.randRoll(0.5) then if aux.randRoll(0.5) then aux.useEffect({artId = A[2]}, my.oppPtr) -- кастуем Дыхание на противника else aux.useEffect({artId = A[3]}) -- в противном случае юзаем ману на себя end bot_Krofdor14Baf2[bot.id] = bot_Krofdor14Baf2[bot.id] - 1 end end -- Хватает маны - юзаем разрушающий луч if bot.mp > C[1] then aux.useEffect({artId = A[1]}, my.oppPtr) else ATTACK(math.random(3)) end end -- botId = 936 function bot_Krofdor14t() -- луч, дыхание крофдора, мана, абсорб local A = {5347, 2269, 2297, 5346} -- стоимость луча, шаг для "дыхания" и маны, шаг для портала и призыва, время портала, общее кол-во порталов local C = {50, 0.4, 0.45, 24, 2} -- порталы и призывы: 11, 14 local portals = {5805, 5348} local summons = {{5806, 5806}, {5349}} bot_Krofdor14_rt(A, C, portals, summons) end function bot_Eldiv14_rt(A, C, portals, summons) local bot = PERS(my.persPtr) -- оставшееся кол-во вторых бафов if bot_Eldiv14Baf2 == nil then bot_Eldiv14Baf2 = {} end if bot_Eldiv14Baf2[bot.id] == nil then bot_Eldiv14Baf2[bot.id] = 2 end -- текущие порталы if bot_Eldiv14Portals == nil then bot_Eldiv14Portals = {} end if bot_Eldiv14Portals[bot.id] == nil then bot_Eldiv14Portals[bot.id] = {} end -- Магический абсорб. aux.useEffect({artId = A[1]}) -- Если наш статус неактивный, ничего не делаем if my.status ~= FS_PS_ACTIVE then return end local hpC = bot.hp / bot.hpMax local portalCount = #bot_Eldiv14Portals[bot.id] -- Проверка текущих порталов: local summonTime = false for portalIdx, portal in ipairs(bot_Eldiv14Portals[bot.id]) do if portal and (portal[1] > 0) and (portal[2] <= my.stime) then summonTime = true break end end if summonTime then -- Активные эффекты на разных персах local activeEffects = {} -- Проходим список порталов (с конца!) for portalIdx=portalCount, 1, -1 do local portal = bot_Eldiv14Portals[bot.id][portalIdx] local portalPersPtr = portal[3] local persId = PERS_ID(portalPersPtr) -- если записи для такого перса еще нет - заводим if not activeEffects[persId] then activeEffects[persId] = aux.activeEffects(portalPersPtr, {activatorId = bot.id}) end -- если портал валиден и по нему еще не было призыва if portal and (portal[1] > 0) then -- пытаемся найти абилку для текущего портала local portalAbil = nil for effIdx = #activeEffects[persId], 1, -1 do local eff = EFF(activeEffects[persId][effIdx]) if eff.id == portals[portal[1]] then -- если нашли, то запоминаем ее и выкидываем из списка portalAbil = activeEffects[persId][effIdx] table.remove(activeEffects[persId], effIdx) break end end -- если время портала пришло if (portal[2] <= my.stime) then -- если он все еще открыт, то призываем if portalAbil then DROP_EFFECT(portalAbil) for _, summonArtId in pairs(summons[portal[1]]) do aux.useEffect({artId = summonArtId}) end end -- закрываем bot_Eldiv14Portals[bot.id][portalIdx][1] = 0 end end end end -- Болевой шок и мана local thresholdHP = bot_Eldiv14Baf2[bot.id] * C[1] if hpC < thresholdHP then local p = math.max(0, math.min(1, (thresholdHP-hpC)*10)) if aux.randRoll(p) then -- если висит портал или прошел рандом --if bot_Eldiv14Baf2[bot.id] or aux.randRoll(0.5) then if aux.randRoll(0.5) then aux.useEffect({artId = A[3]}) -- юзаем ману на себя else aux.useEffect({artId = A[2]}, my.oppPtr) -- в противном случае кидаем Шок на противника end bot_Eldiv14Baf2[bot.id] = bot_Eldiv14Baf2[bot.id] - 1 end end -- прикосновение силы if (bot.mp >= C[2]) and (#aux.activeEffects(my.oppPtr, {artId = A[5]}) < 1) then aux.useEffect({artId = A[4]}, my.oppPtr) aux.useEffect({artId = A[5]}, my.oppPtr) -- метка elseif hpC < (C[5] - portalCount) * C[3] then -- выбираем призыв, вешаем портал и запоминаем local portalId = math.random(#portals) aux.useEffect({artId = portals[portalId]}, my.oppPtr) table.insert(bot_Eldiv14Portals[bot.id], { portalId, my.stime + C[4], my.oppPtr }) -- атакуем в ноги ATTACK(3) else -- или обычный удар ATTACK(1) end end -- botId = 859 function bot_Eldiv14t() -- абсорб, болевой шок, мана, стун, прикосновение силы local A = {5350, 5351, 2297, 4072, 5354} -- шаг для шока и маны, стоимость прикосновения, шаг для призыва, время призыва, общее кол-во local C = {0.4, 50, 0.45, 24, 2} -- метка и призыв: 11, 14 local portals = {5807, 5352} local summons = {{5808, 5808}, {5353}} bot_Eldiv14_rt(A, C, portals, summons) end