112 lines
4.5 KiB
Lua
112 lines
4.5 KiB
Lua
REGISTER_GOAL(GOAL_COMMON_Normal, "Normal")
|
|
REGISTER_GOAL_NO_UPDATE(GOAL_COMMON_Normal, 1)
|
|
function Normal_Activate(ai, goal)
|
|
local targetDist = ai:GetDist(TARGET_ENE_0)
|
|
local fate = ai:GetRandam_Int(1, 100)
|
|
local fate2 = ai:GetRandam_Int(1, 100)
|
|
local trigDistNear = 2
|
|
local trigDistMid = 4
|
|
local trigDistFar = 0
|
|
local ezsNoNear = 3000
|
|
local ezsNoMid = 3000
|
|
local ezsNoFar = 3000
|
|
local moveDistNear = 3
|
|
local moveDistMid = 1
|
|
local moveDistFar = 3
|
|
local movePerNear = 20
|
|
local movePerMid = 30
|
|
local movePerFar = 40
|
|
local maaiDistNear = 1.5
|
|
local maaiDistMid = 3.5
|
|
local maaiDistFar = 5.5
|
|
local maaiPerNear = 40
|
|
local maaiPerMid = 30
|
|
local maaiPerFar = 20
|
|
local attActDist = 6
|
|
local trigDistDash = 0
|
|
local trigDistWalk = 9
|
|
local moveDistDash = 7
|
|
local moveDistWalk = 3
|
|
if targetDist <= attActDist then
|
|
if targetDist < trigDistNear then
|
|
if fate <= movePerNear then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistNear, TARGET_ENE_0, true)
|
|
else
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 10, ezsNoNear, TARGET_ENE_0, DIST_Near, 0)
|
|
if fate2 <= maaiPerNear then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, maaiDistNear, TARGET_ENE_0, true)
|
|
end
|
|
end
|
|
elseif targetDist < trigDistMid then
|
|
if fate <= movePerMid then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistMid, TARGET_ENE_0, true)
|
|
else
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 10, ezsNoMid, TARGET_ENE_0, DIST_Near, 0)
|
|
if fate2 <= maaiPerMid then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, maaiDistMid, TARGET_ENE_0, true)
|
|
end
|
|
end
|
|
elseif fate <= movePerFar then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistFar, TARGET_ENE_0, true)
|
|
else
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 10, ezsNoFar, TARGET_ENE_0, DIST_Near, 0)
|
|
if fate2 <= maaiPerFar then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 5, TARGET_ENE_0, AI_DIR_TYPE_CENTER, maaiDistFar, TARGET_ENE_0, true)
|
|
end
|
|
end
|
|
elseif targetDist <= trigDistWalk then
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 10, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistWalk, TARGET_ENE_0, true)
|
|
else
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 10, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistDash, TARGET_ENE_0, false)
|
|
goal:AddSubGoal(GOAL_COMMON_MoveToSomewhere, 10, TARGET_ENE_0, AI_DIR_TYPE_CENTER, moveDistWalk, TARGET_ENE_0, true)
|
|
end
|
|
return
|
|
end
|
|
|
|
function Normal_Update(ai, goal)
|
|
return GOAL_RESULT_Continue
|
|
end
|
|
|
|
function Normal_Terminate(ai, goal)
|
|
return
|
|
end
|
|
|
|
function Normal_Interupt(ai, goal)
|
|
local targetDist = ai:GetDist(TARGET_ENE_0)
|
|
local fate = ai:GetRandam_Int(1, 100)
|
|
local fate2 = ai:GetRandam_Int(1, 100)
|
|
local guardDist = 3
|
|
local guardPer = 50
|
|
local ezsNoguard = 9910
|
|
local missContDist = 3
|
|
local missContPer = 50
|
|
local ezsNoMissCont = 3300
|
|
local guardBreakAttDist = 3
|
|
local guardBreakAttPer = 75
|
|
local ezsNoguardBreakAtt = 3300
|
|
local guardDownAttDist = 3
|
|
local guardDownAttPer = 40
|
|
local ezsNoguardDownAtt = 3000
|
|
if ai:IsInterupt(INTERUPT_FindAttack) and targetDist <= guardDist and fate <= guardPer then
|
|
goal:ClearSubGoal()
|
|
goal:AddSubGoal(GOAL_COMMON_Guard, 5, ezsNoguard, TARGET_ENE_0, 0, 0)
|
|
return true
|
|
elseif ai:IsInterupt(INTERUPT_MissSwing) and targetDist < missContDist and fate <= missContPer then
|
|
goal:ClearSubGoal()
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 5, ezsNoMissCont, TARGET_ENE_0, DIST_Near, 0)
|
|
return true
|
|
elseif ai:IsInterupt(INTERUPT_GuardBreak) and targetDist < guardBreakAttDist and fate <= guardBreakAttPer then
|
|
goal:ClearSubGoal()
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 5, ezsNoguardBreakAtt, TARGET_ENE_0, DIST_Near, 0)
|
|
return true
|
|
elseif ai:IsInterupt(INTERUPT_GuardFinish) and targetDist < guardDownAttDist and fate <= guardDownAttPer then
|
|
goal:ClearSubGoal()
|
|
goal:AddSubGoal(GOAL_COMMON_Attack, 5, ezsNoguardDownAtt, TARGET_ENE_0, DIST_Near, 0)
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
return
|