using UnityEngine; public class Cmd0602 : CmdBase { private uint m_AttackID; private uint m_TargetID; private uint m_HurtValue; private byte m_AttackType; private uint m_CurHp; private uint m_CurHpEx; private byte m_Step = 0; public override void Init(GameNetPackBasic netPack) { H0602_tagObjBaseAttack m_NetPack = netPack as H0602_tagObjBaseAttack; m_AttackID = m_NetPack.AttackerID; m_TargetID = m_NetPack.ObjID; m_HurtValue = m_NetPack.Value; m_AttackType = m_NetPack.AttackType; m_CurHp = m_NetPack.RemainHP; m_CurHpEx = m_NetPack.RemainHPEx; m_Step = 0; } public override void Update() { GActorFight _actor = GAMgr.Instance.GetBySID(m_AttackID) as GActorFight; GActorFight _target = GAMgr.Instance.GetBySID(m_TargetID) as GActorFight; if (_actor == null || _target == null) { m_Finished = true; return; } if (_actor.State == E_ActorState.AutoRun) { _actor.StopPathFind(); } switch (m_Step) { case 0: Vector3 _dir = MathUtility.ForwardXZ(_target.Pos, _actor.Pos); _actor.Forward = _dir; _actor.destForward = _dir; _actor.SelectTarget = _target; Skill _skill = _actor.SkillMgr.Get(10016); _skill.hurtClientList.Clear(); AttackHandler.HurtObjs _hurtObj = new AttackHandler.HurtObjs { ObjID = m_TargetID, clientInstID = _target.ClientInstID, ObjType = (byte)_target.ActorType, HurtHP = m_HurtValue, CurHP = m_CurHp, AttackType = m_AttackType }; _actor.SkillMgr.CastSkill(_actor.ServerInstID, 10016, true); _skill.hurtClientList.Add(_hurtObj); _actor.Play(GAStaticDefine.State_Attack1Hash); SoSkill _soSkill = ScriptableObjectLoader.LoadSoSkill(10016); if (_soSkill == null) { if (m_CurHp == 0 && m_CurHpEx == 0) { _target.KillerServerInstID = m_AttackID; } GAStaticDefine.PopHp(_actor, _target, m_AttackType, (int)m_HurtValue); } m_Step = 1; break; case 1: if (_actor.SkillMgr.CurCastSkill == null || _actor.SkillMgr.CurCastSkill.SkillCompelete) { m_Finished = true; } break; } } }