--[[ a.abolishin Стандартный пет. Каст рандомной абилки, из определенного списка, определенное кол-во раз за бой. ]] -- Распределение кастов по времени. function pet_GetCastCount(petLevel, ownerLevel) local castCount = math.min(3, math.max(1, 3 - ((ownerLevel - petLevel) * (1.0/3.0)))) local castStep = 1.0/(castCount+1) return {castCount, castStep} end -- Управляющая функция. -- А - список абилок пета (для всех уровней) -- petLevel - текущий уровень пета function pet_Standard_r(A, petLevel) local bot = PERS(my.persPtr) if pet_StandardCast == nil then pet_StandardCast = {} end if pet_StandardCast[bot.id] == nil then pet_StandardCast[bot.id] = pet_GetCastCount(petLevel, bot.level) end -- можем ли ходить? if my.status ~= FS_PS_ACTIVE then return end -- не пора ли че-нить кастануть? local hpC = bot.hp/bot.hpMax if hpC < (pet_StandardCast[bot.id][1] * pet_StandardCast[bot.id][2]) then local abilIdx = math.random(petLevel) local persPtr = my.persPtr if A[abilIdx][2] then persPtr = my.oppPtr end aux.useEffect({artId = A[abilIdx][1]}, persPtr, pet_StandardCast[bot.id][1]) pet_StandardCast[bot.id][1] = pet_StandardCast[bot.id][1] - 1 end end -- Одминское функция. function pet_Standard() -- массив абилок -- бот может юзать любые абилки с индексом <= его уровню -- A[x][1] - artId; A[x][2] - true, если каст на противника local A = { {5022, true}, {5018, false} } pet_Standard_r(A, 2) end -- Одминское функция для теста. function pet_Standard_t() -- массив абилок -- бот может юзать любые абилки с индексом <= его уровню -- A[x][1] - artId; A[x][2] - true, если каст на противника local A = { {5022, true}, {5018, false} } pet_Standard_r(A, 2) end