少年修仙传客户端代码仓库
hch
2025-06-12 204ef05a831c9484e2abc561d27ecbff7c797453
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using UnityEngine;
 
public class Cmd0602 : CmdBase
{
    private uint m_AttackID;
    private uint m_TargetID;
    private ulong m_HurtValue;
    private byte m_AttackType;
    private ulong m_CurHp;
 
    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_NetPack.ValueEx * Constants.ExpPointValue;
        m_AttackType = m_NetPack.AttackType;
        m_CurHp = m_NetPack.RemainHP + m_NetPack.RemainHPEx * Constants.ExpPointValue;
        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,
                    RealHurtHP = 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)
                    {
                        _target.KillerServerInstID = m_AttackID;
                    }
 
                    GAStaticDefine.PopHp(_actor, _target, m_AttackType, m_HurtValue);
                }
 
                m_Step = 1;
 
                break;
            case 1:
 
                if (_actor.SkillMgr.CurCastSkill == null ||
                    _actor.SkillMgr.CurCastSkill.SkillCompelete)
                {
                    m_Finished = true;
                }
 
                break;
        }
    }
}