| | |
| | | private H0434_tagAreaPlayerAppearEx m_H0434; |
| | | |
| | | private CmdManager m_CmdManager; |
| | | private int m_ComAtkIndex;// 普攻索引 |
| | | private Skill m_CastSkill;// 要释放的技能 |
| | | |
| | | protected sealed override void OnInit(GameNetPackBasic package) |
| | | { |
| | |
| | | { |
| | | case 0: |
| | | |
| | | m_DestPos = m_RecordBornPos + Quaternion.Euler(0, Random.Range(0, 359), 0) * Vector3.forward * Random.Range(1f, 2f); |
| | | TryGetValidPos(m_DestPos, ref m_DestPos); |
| | | //m_DestPos = m_RecordBornPos + Quaternion.Euler(0, Random.Range(0, 359), 0) * Vector3.forward * Random.Range(1f, 2f); |
| | | //TryGetValidPos(m_DestPos, ref m_DestPos); |
| | | |
| | | if (SelectTarget == null) |
| | | { |
| | | SelectTarget = GAMgr.Instance.GetCloserFightNpc(Pos); |
| | | } |
| | | if (SelectTarget != null) |
| | | { |
| | | destForward = Forward = MathUtility.ForwardXZ(SelectTarget.Pos, Pos); |
| | | } |
| | | |
| | | m_Step = 1; |
| | | |
| | | break; |
| | | case 1: |
| | | |
| | | float _distSqrt = MathUtility.DistanceSqrtXZ(Pos, m_DestPos); |
| | | if (_distSqrt > 0.25f) |
| | | m_CastSkill = null; |
| | | for (int i = 0; i < JobSetup.HangupSkillList.Length; ++i) |
| | | { |
| | | if (State != E_ActorState.AutoRun) |
| | | if (SkillMgr.Get(JobSetup.HangupSkillList[i]).IsValid()) |
| | | { |
| | | MoveToPosition(m_DestPos); |
| | | m_CastSkill = SkillMgr.Get(JobSetup.HangupSkillList[i]); |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | |
| | | if (m_CastSkill == null) |
| | | { |
| | | m_Step = 2; |
| | | if (m_ComAtkIndex > JobSetup.ComAtkIdList.Length - 1) |
| | | { |
| | | m_ComAtkIndex = 0; |
| | | } |
| | | int _comSkillId = JobSetup.ComAtkIdList[m_ComAtkIndex]; |
| | | m_CastSkill = SkillMgr.Get(_comSkillId); |
| | | m_ComAtkIndex += 1; |
| | | } |
| | | |
| | | m_Step = 2; |
| | | |
| | | break; |
| | | case 2: |
| | | |
| | | Play(GAStaticDefine.State_Attack1Hash); |
| | | if (m_CastSkill != null) |
| | | { |
| | | SkillMgr.CastSkill(ServerInstID, m_CastSkill.id, true); |
| | | |
| | | Vector3 _targetPosition = Pos + Forward * (m_CastSkill.skillInfo.config.AtkDist * .5f); |
| | | _targetPosition.y = 0; |
| | | UnityEngine.AI.NavMeshHit _navMeshHit; |
| | | if (UnityEngine.AI.NavMesh.Raycast(Pos, _targetPosition, out _navMeshHit, -1)) |
| | | { |
| | | _targetPosition = _navMeshHit.position; |
| | | } |
| | | _targetPosition.y = Pos.y; |
| | | m_CastSkill.targetPosition = _targetPosition; |
| | | |
| | | if (m_CastSkill.skillInfo.config.Skillactmark > 0 |
| | | && m_CastSkill.skillInfo.config.Skillactmark < 20) |
| | | { |
| | | switch (m_CastSkill.skillInfo.config.Skillactmark) |
| | | { |
| | | case 10: |
| | | Play(GAStaticDefine.State_Attack1Hash, 0); |
| | | break; |
| | | case 11: |
| | | Play(GAStaticDefine.State_Attack2Hash, 0); |
| | | break; |
| | | case 12: |
| | | Play(GAStaticDefine.State_Attack3Hash, 0); |
| | | break; |
| | | case 13: |
| | | Play(GAStaticDefine.State_Attack4Hash, 0); |
| | | break; |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | switch (m_CastSkill.skillInfo.config.Skillactmark) |
| | | { |
| | | case 21: |
| | | Play(GAStaticDefine.State_Skill21, 0); |
| | | break; |
| | | case 22: |
| | | Play(GAStaticDefine.State_Skill22, 0); |
| | | break; |
| | | case 23: |
| | | Play(GAStaticDefine.State_Skill23, 0); |
| | | break; |
| | | case 24: |
| | | Play(GAStaticDefine.State_Skill24, 0); |
| | | break; |
| | | case 25: |
| | | Play(GAStaticDefine.State_Skill25, 0); |
| | | break; |
| | | case 26: |
| | | Play(GAStaticDefine.State_Skill26, 0); |
| | | break; |
| | | case 27: |
| | | Play(GAStaticDefine.State_Skill27, 0); |
| | | break; |
| | | case 28: |
| | | Play(GAStaticDefine.State_Skill28, 0); |
| | | break; |
| | | case 29: |
| | | Play(GAStaticDefine.State_Skill29, 0); |
| | | break; |
| | | case 99: |
| | | Play(GAStaticDefine.State_RollHash, 0); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | m_Step = 3; |
| | | |
| | | break; |
| | |
| | | |
| | | if (IsIdle()) |
| | | { |
| | | m_Step = 4; |
| | | } |
| | | |
| | | break; |
| | | case 4: |
| | | |
| | | m_WaitTime += Time.deltaTime; |
| | | if (m_WaitTime > 2) |
| | | { |
| | | m_Step = 0; |
| | | m_WaitTime = 0; |
| | | } |
| | | |
| | | break; |
| | |
| | | { |
| | | ActorInfo.moveSpeed = 500f / speed; |
| | | m_StartMove = startOrStop; |
| | | m_TargetPos = pos; |
| | | TryGetValidPos(pos, ref m_TargetPos); |
| | | _dir = MathUtility.ForwardXZ(m_TargetPos, Pos); |
| | | |
| | | if (m_StartMove) |
| | |
| | | return false; |
| | | } |
| | | |
| | | if (StatusMgr.Instance.IsInvincible(ServerInstID)) |
| | | if (StatusMgr.Instance.IsInvisible(ServerInstID)) |
| | | { |
| | | return false; |
| | | } |