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;
|
}
|
}
|
}
|