Files
temp/scripts_decompiled/ladder_act.lua
T

125 lines
4.3 KiB
Lua

REGISTER_GOAL(GOAL_COMMON_LadderAct, "LadderAct")
function _GetId(animId, ai)
local isPlayerType = false
if not not ai:IsNpcPlayer() or ai:IsLocalPlayer() then
isPlayerType = true
end
local ret = animId
if isPlayerType == true then
if animId == 7210 then
ret = NPC_ATK_Ladder_10
elseif animId == 7211 then
ret = NPC_ATK_Ladder_11
elseif animId == 7212 then
ret = NPC_ATK_Ladder_12
elseif animId == 7213 then
ret = NPC_ATK_Ladder_13
elseif animId == 7220 then
ret = NPC_ATK_Ladder_20
elseif animId == 7221 then
ret = NPC_ATK_Ladder_21
elseif animId == 7222 then
ret = NPC_ATK_Ladder_22
elseif animId == 7223 then
ret = NPC_ATK_Ladder_23
end
end
return ret
end
local DEF_LADDER_ACT_STATE_InValid = -1
local DEF_LADDER_ACT_STATE_BeginBottom = 0
local DEF_LADDER_ACT_STATE_BeginTop = 1
local DEF_LADDER_ACT_STATE_RightHandUp_Up = 2
local DEF_LADDER_ACT_STATE_LeftHandUp_Up = 3
local DEF_LADDER_ACT_STATE_RightHandUp_Down = 4
local DEF_LADDER_ACT_STATE_LeftHandUp_Down = 5
local DEF_LADDER_ACT_STATE_Exit_Up = 6
local DEF_LADDER_ACT_STATE_Exit_Down = 7
local DEF_LADDER_ACT_STATE_RightHandUp_Wait = 8
local DEF_LADDER_ACT_STATE_LeftHandUp_Wait = 9
local DEF_LADDER_ACT_STATE_StaminaFall = 23
local DEF_LADDER_ACT_Up = 7210
local DEF_LADDER_ACT_Down = 7220
local DEF_LADDER_ACT_SlideDown = 7230
function LadderAct_Activate(ai, goal)
local behaviorNo = goal:GetParam(0)
local target = goal:GetParam(1)
local initDirMove = goal:GetParam(2)
local ladderDirMove = initDirMove
local ladderActState = ai:GetLadderActState(TARGET_SELF)
local animStartId = 0
local dmyStartId = ai:CalcGetNearestLadderActDmyIdByLadderObj()
if dmyStartId == 191 then
animStartId = _GetId(7210, ai)
else
animStartId = _GetId(7220, ai)
end
if ladderActState == DEF_LADDER_ACT_STATE_InValid then
if ai:IsChrAroundLadderEdge(2, dmyStartId) == false then
ai:SetPosAngBy1stNearObjDmyId(dmyStartId)
ai:SetAttackRequest(animStartId)
elseif dmyStartId ~= 192 and dmyStartId == 191 then
return GOAL_RESULT_Failed
end
end
return
end
DEF_LADDER_ACT_STATE_InValid = DEF_LADDER_ACT_STATE_RightHandUp_Wait
DEF_LADDER_ACT_STATE_InValid = DEF_LADDER_ACT_STATE_LeftHandUp_Wait
DEF_LADDER_ACT_STATE_InValid = DEF_LADDER_ACT_Up
DEF_LADDER_ACT_STATE_InValid = DEF_LADDER_ACT_Down
DEF_LADDER_ACT_STATE_InValid = DEF_LADDER_ACT_STATE_StaminaFall
function LadderAct_Update(ai, goal)
local behaviorNo = goal:GetParam(0)
local target = goal:GetParam(1)
if ai:LastPathFindingIsFailed() == false and ai:HasPathResult() == false then
ai:FollowPath(target, AI_DIR_TYPE_CENTER, 1.5, true, 0)
end
local ladderDirMove = ai:GetLadderDirMove(TARGET_ENE_0)
ai:DoEzAction(0, -1)
local ladderActState = ai:GetLadderActState(TARGET_SELF)
local isPassNextAnim = false
if ladderActState == DEF_LADDER_ACT_STATE_RightHandUp_Wait or ladderActState == DEF_LADDER_ACT_STATE_LeftHandUp_Wait then
isPassNextAnim = true
elseif not not ai:IsFinishAttack() or ai:IsEnableComboAttack() then
isPassNextAnim = true
end
if isPassNextAnim then
if ladderActState == DEF_LADDER_ACT_STATE_InValid then
return GOAL_RESULT_Success
elseif ladderDirMove ~= 0 then
if ladderDirMove == 1 then
ai:SetAttackRequest(_GetId(DEF_LADDER_ACT_Up, ai))
elseif ladderDirMove == -1 then
ai:SetAttackRequest(_GetId(DEF_LADDER_ACT_Down, ai))
end
end
end
goal:AddLifeParentSubGoal(0.3)
local ladderActState = ai:GetLadderActState(TARGET_SELF)
if ladderActState == DEF_LADDER_ACT_STATE_InValid then
return GOAL_RESULT_Success
elseif ladderActState == DEF_LADDER_ACT_STATE_StaminaFall then
return GOAL_RESULT_Failed
else
return GOAL_RESULT_Continue
end
end
function LadderAct_Terminate(ai, goal)
return
end
REGISTER_GOAL_NO_INTERUPT(GOAL_COMMON_LadderAct, true)
function LadderAct_Interupt(ai, goal)
if ai:IsInterupt(INTERUPT_Damaged) then
return false
else
return false
end
end
return