Files
temp/scripts_decompiled/landing.lua
T

124 lines
3.6 KiB
Lua

REGISTER_GOAL(GOAL_COMMON_LiftOff, "LiftOff")
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_LiftOff, true)
function LiftOff_Activate(ai, goal)
goal:AddSubGoal(GOAL_COMMON_Attack, 10, 9520, TARGET_NONE, DIST_None)
return
end
function LiftOff_Update(ai, goal)
local goalDistY = 5
local curDistY = ai:GetDistY(TARGET_ENE_0)
local resultSubGoal = goal:GetLastSubGoalResult()
if (resultSubGoal == GOAL_RESULT_Success or resultSubGoal == GOAL_RESULT_Failed) and (not not ai:IsLanding() or curDistY < goalDistY) then
goal:AddSubGoal(GOAL_COMMON_Attack, 10, 9520, TARGET_NONE, DIST_None)
end
local isLanding = ai:IsLanding()
if not isLanding and goalDistY <= curDistY then
return GOAL_RESULT_Success
else
return GOAL_RESULT_Continue
end
end
function LiftOff_Terminate(ai, goal)
return
end
function LiftOff_Interupt(ai, goal)
return false
end
REGISTER_GOAL(GOAL_COMMON_Landing, "Landing")
REGISTER_GOAL_NO_UPDATE(GOAL_COMMON_Landing, true)
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_Landing, true)
function Landing_Activate(ai, goal)
local landingPoint = goal:GetParam(0)
ai:SetAIFixedMoveTarget(landingPoint, TARGET_SELF, 0)
local successRange = goal:GetParam(1)
goal:AddSubGoal(GOAL_COMMON_Landing_Move, 10, successRange)
if 0 < ai:GetDistYSigned(TARGET_ENE_0) then
goal:AddSubGoal(GOAL_COMMON_ApproachTarget, 10, POINT_AI_FIXED_POS, 0.1, TARGET_SELF, false, -1)
else
goal:AddSubGoal(GOAL_COMMON_Landing_Landing, 10)
end
return
end
function Landing_Update(ai, goal)
return GOAL_RESULT_Continue
end
function Landing_Terminate(ai, goal)
return
end
function Landing_Interupt(ai, goal)
return false
end
REGISTER_GOAL(GOAL_COMMON_Landing_Move, "Landing_Move")
REGISTER_GOAL_UPDATE_TIME(GOAL_COMMON_Landing_Move, 0.5, 0.5)
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_Landing_Move, true)
function Landing_Move_Activate(ai, goal)
local successRange = goal:GetParam(0)
goal:AddSubGoal(GOAL_COMMON_ApproachTarget, 10, POINT_AI_FIXED_POS, successRange, TARGET_SELF, false, -1)
return
end
function Landing_Move_Update(ai, goal)
local distXZ = ai:GetDistXZ(POINT_AI_FIXED_POS)
if distXZ < 1 then
return GOAL_RESULT_Success
elseif ai:IsLanding() then
return GOAL_RESULT_Failed
else
return GOAL_RESULT_Continue
end
end
function Landing_Move_Terminate(ai, goal)
return
end
function Landing_Move_Interupt(ai, goal)
return false
end
REGISTER_GOAL(GOAL_COMMON_Landing_Landing, "Landing_Landing")
REGISTER_GOAL_UPDATE_TIME(GOAL_COMMON_Landing_Landing, 0.5, 0.5)
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_Landing_Landing, true)
function Landing_Landing_Activate(ai, goal)
goal:AddSubGoal(GOAL_COMMON_Attack, goal:GetLife(), 9510, TARGET_NONE, DIST_None)
return
end
function Landing_Landing_Update(ai, goal)
if ai:IsLanding() then
local cnt = goal:GetNumber(0)
if 10 < cnt then
return GOAL_RESULT_Success
end
goal:SetNumber(0, cnt + 1)
end
local resultSubGoal = goal:GetLastSubGoalResult()
if (resultSubGoal == GOAL_RESULT_Success or resultSubGoal == GOAL_RESULT_Failed) and not ai:IsLanding() then
goal:AddSubGoal(GOAL_COMMON_Attack, goal:GetLife(), 9510, TARGET_NONE, DIST_None)
end
if 1 < ai:GetDistYSigned(POINT_AI_FIXED_POS) then
ai:PrintText("[Landing_Landing_Update]ターゲットより高さが下になりました。失敗を返します。")
return GOAL_RESULT_Failed
else
return GOAL_RESULT_Continue
end
end
function Landing_Landing_Terminate(ai, goal)
return
end
function Landing_Landing_Interupt(ai, goal)
return false
end
return