VolcanicAshMode = 0
UseDieterVolcanicAsh = 1
DieterVolcanicAshLevel = 5
SkillInfo[MH_VOLCANIC_ASH ]={"Volcanic Ash",{7,7,7,7,7},{60,65,70,75,80},{1000,1000,1000,1000,1000},{4000,3500,3000,2500,2000},{700,700,700,700,700},2,{6000,7000,8000,9000,10000}}
AutoSkillCooldown[MH_VOLCANIC_ASH]=0
--
function GetDebuffSkill(myid)
if (IsHomun(myid)==1) then
if GetV(V_HOMUNTYPE,MyID)==EIRA and UseEiraSilentBreeze==1 then
skill=MH_SILENT_BREEZE
if EiraSilentBreezeLevel==nil then
level=5
else
level=EiraSilentBreezeLevel
end
return skill,level
elseif GetV(V_HOMUNTYPE,MyID)==DIETER and UseDieterVolcanicAsh==1 then
skill=MH_VOLCANIC_ASH
if DieterVolcanicAshLevel==nil then
level=5
else
level=DieterVolcanicAshLevel
end
return skill,level
end
else
for i,v in ipairs(DebuffSkillList) do
level = SkillList[MercType][v]
if level ~= nil then
skill=v
return skill,level
end
end
end
return 0,0
end
--
function GetMobSkill(myid)
local skill = 0
local level = 0
if (IsHomun(myid)==1) then
htype=GetV(V_HOMUNTYPE,MyID)
if htype <17 then
skill=0
else -- it's a homun s
if htype==EIRA and UseEiraXenoSlasher==1 then
skill=MH_XENO_SLASHER
if EiraXenoSlasherLevel==nil then
level=4
else
level=EiraXenoSlasherLevel
end
elseif htype==BAYERI and UseBayeriHailegeStar==1 then
skill=MH_HEILIGE_STANGE
if BayeriHailegeStarLevel==nil then
level=5
else
level=BayeriHailegeStarLevel
end
elseif htype==SERA and UseSeraPoisonMist==1 and PoisonMistMode==0 then
skill=MH_POISON_MIST
if SeraPoisonMistLevel==nil then
level=5
else
level=SeraPoisonMistLevel
end
elseif htype==DIETER and UseDieterLavaSlide==1 and LavaSlideMode==0 then
skill=MH_LAVA_SLIDE
if DieterLavaSlideLevel==nil then
level=5
else
level=DieterLavaSlideLevel
end
elseif htype==DIETER and (UseDieterVolcanicAsh==1 or (UseVolcanicAsh==1 and VolcanicAshMode==0)) then
skill=MH_VOLCANIC_ASH
if DieterVolcanicAshLevel==1 then
level=5
else
level=DieterVolcanicAshLevel
end
end
if AutoSkillCooldown[skill]~=nil then
if GetTick() < AutoSkillCooldown[skill] then -- in cooldown
level=0
skill=0
end
end
end
return skill,level
else -- SO MUCH EASIER WHEN LEVEL ISN'T SELECTABLE!!!!
for i,v in ipairs(MobSkillList) do
level = SkillList[MercType][v]
if level ~= nil then
skill=v
return skill,level
end
end
end
return 0,0
end
--
function doInit(myid)
if IsHomun(myid) == 0 then -- if the stupid devs made GetV(V_MERTYPE,id) work i wouldnt need this!
MercType=GetMerType(myid)
end
if (UseAttackSkill==0 and UseSkillOnly==1) then
UseSkillOnly = 0
end
if DanceMinSP < 0 then
DanceMinSP=math.floor(GetV(V_MAXSP,MyID)*DanceMinSP/100)*-1
end
if ChaseSPPauseSP < 0 then
ChaseSPPauseSP=math.floor(GetV(V_MAXSP,MyID)*ChaseSPPauseSP/100)*-1
end
MyMaxSP=GetV(V_MAXSP,MyID)
MyLastSP=GetV(V_SP,MyID)
local loadtimesuccess = pcall(loadtimeouts)
if loadtimesuccess==false then
logappend("AAI_ERROR","failed to load timeouts for owner "..GetV(V_OWNER,MyID).." if this is the first time you've used this account with AzzyAI, disregard this message")
end
if GetV(V_SKILLATTACKRANGE,myid,HVAN_CAPRICE) > 1 then -- it was a vani
OldHomunType=VANILMIRTH
end
if GetV(V_SKILLATTACKRANGE,myid,MH_ERASER_CUTTER) == 1 then
UseEiraEraseCutter=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_XENO_SLASHER) == 1 then --
UseEiraXenoSlasher=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_STAHL_HORN) == 1 then
UseBayeriStahlHorn=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_HEILIGE_STANGE) == 1 then
UseBayeriHailegeStar=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_NEEDLE_OF_PARALYZE) == 1 then
UseSeraParalyze=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_POISON_MIST) == 1 then
UseSeraPoisonMist=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_LAVA_SLIDE) == 1 then
UseDieterLavaSlide=0
end
if GetV(V_SKILLATTACKRANGE,myid,MH_VOLCANIC_ASH) == 1 then
UseVolcanicAshSlide=0
end
if LagReduction ==1 then
dofile('./AI/USER_AI/twRO.lua')
end
local mskill,mlevel=GetMobSkill(MyID)
if mskill==0 and (GetV(V_HOMUNTYPE,MyID)==SERA and PoisonMistMode~=0) or (GetV(V_HOMUNTYPE,MyID)==DIETER and LavaSlideMode~=0) or (GetV(V_HOMUNTYPE,MyID)==DIETER and VolcanicAshMode~=0) then
mskill,mlevel=GetSightOrAoE(MyID)
end
if mskill~=0 and mlevel~=0 and AoEReserveSP==1 and AutoMobMode~=0 then
ReserveSP=GetSkillInfo(mskill,3,mlevel)
end
OnInit()
if AggressiveRelogTracking~=1 then
MagTimeout=MagTimeout+500
SOffensiveTimeout=SOffensiveTimeout+500
SDefensiveTimeout=SDefensiveTimeout+500
SOwnerBuffTimeout=SOwnerBuffTimeout+500
GuardTimeout=GuardTimeout+500
QuickenTimeout=QuickenTimeout+500
OffensiveOwnerTimeout = OffensiveOwnerTimeout+500
DefensiveOwnerTimeout = DefensiveOwnerTimeout+500
OtherOwnerTimeout = OtherOwnerTimeout+500
else
timelag=LastAITime_ART-GetTick()
MagTimeout=MagTimeout+timelag
SOffensiveTimeout=SOffensiveTimeout+timelag
SDefensiveTimeout=SDefensiveTimeout+timelag
SOwnerBuffTimeout=SOwnerBuffTimeout+timelag
GuardTimeout=GuardTimeout+timelag
QuickenTimeout=QuickenTimeout+timelag
OffensiveOwnerTimeout = OffensiveOwnerTimeout+timelag
DefensiveOwnerTimeout = DefensiveOwnerTimeout+timelag
OtherOwnerTimeout = OtherOwnerTimeout+timelag
end
AdjustCapriceLevel()
UpdateTimeoutFile()
DoneInit=1
end