using UnityEngine;
|
|
|
public class Cmd0614 : CmdBase
|
{
|
private uint m_PlayerID = 0;
|
private int m_SkillID = -1;
|
private Vector3 m_TargetPosition;
|
|
public uint m_TargetServerID;
|
public GActorFight m_Owner;
|
|
private byte m_Step = 0;
|
public override void Init(GameNetPackBasic netPack)
|
{
|
H0614_tagUseSkillPos m_NetPack = netPack as H0614_tagUseSkillPos;
|
m_PlayerID = m_NetPack.ObjID;
|
m_SkillID = m_NetPack.SkillID;
|
|
m_TargetPosition.x = (m_NetPack.PosX - GA_Hero.MapOffset.x) * .5f;
|
m_TargetPosition.z = (m_NetPack.PosY - GA_Hero.MapOffset.z) * .5f;
|
|
if (m_NetPack.HurtCount > 0)
|
{
|
m_TargetServerID = m_NetPack.HurtList[0].ObjID;
|
}
|
else
|
{
|
m_TargetServerID = 0;
|
}
|
|
m_Owner = GAMgr.Instance.GetBySID(m_PlayerID) as GActorFight;
|
m_Owner.SkillMgr.CastSkill(m_Owner.ServerInstID, m_SkillID, true);
|
|
m_Step = 0;
|
}
|
|
public override void Update()
|
{
|
if (m_SkillID == -1)
|
{
|
m_Finished = true;
|
return;
|
}
|
|
GActorFight _target = GAMgr.Instance.GetBySID(m_TargetServerID) as GActorFight;
|
GActorNpcFight _npcFight = _target as GActorNpcFight;
|
GActorPlayerBase _player = m_Owner as GActorPlayerBase;
|
|
if (m_Owner == null || m_Owner.ActorInfo.serverDie)
|
{
|
m_Finished = true;
|
return;
|
}
|
|
// 如果在寻路则终端当前寻路逻辑
|
if (m_Owner is GA_Player
|
|| m_Owner is GA_NpcFightSgzcZZ)
|
{
|
if (m_Owner.State == E_ActorState.AutoRun)
|
{
|
m_Owner.StopPathFind();
|
}
|
|
_player.StopRush();
|
}
|
|
Skill _skill = m_Owner.SkillMgr.Get(m_SkillID);
|
|
switch (m_Step)
|
{
|
case 0:
|
|
SkillConfig _tagChinSkill = SkillConfig.Get(m_SkillID);
|
|
Vector3 _targetPos = m_TargetPosition;
|
_targetPos.y = 0;
|
_targetPos = PathFinder.AdjustPosition(_targetPos);
|
_targetPos.y = m_Owner.Pos.y;
|
_skill.targetPosition = _targetPos;
|
|
if (_tagChinSkill != null)
|
{
|
if (_tagChinSkill.CastTime == 0)
|
{
|
if (_npcFight == null || _npcFight.NpcConfig.NPCType != (int)E_NpcType.Ghost)
|
{
|
//E_SkillCastType _castTrpe = (E_SkillCastType)(_tagChinSkill.Tag % 10);
|
//if (_castTrpe == E_SkillCastType.NeedTarget
|
// || m_Owner is GActorPlayerBase)
|
//{
|
// //if (_target != null)
|
// //{
|
// // Vector3 _dir = MathUtility.ForwardXZ(_target.Pos, m_Owner.Pos);
|
// // m_Owner.destForward = m_Owner.Forward = _dir;
|
// //}
|
// //else
|
// //{
|
// Vector3 _dir = MathUtility.ForwardXZ(_targetPos, m_Owner.Pos);
|
// m_Owner.destForward = m_Owner.Forward = _dir;
|
// //}
|
//}
|
//else
|
//{
|
Vector3 _dir = MathUtility.ForwardXZ(_targetPos, m_Owner.Pos);
|
m_Owner.destForward = m_Owner.Forward = _dir;
|
//}
|
}
|
}
|
|
if (_tagChinSkill.Skillactmark > 0
|
&& _tagChinSkill.Skillactmark < 20)
|
{
|
switch (_tagChinSkill.Skillactmark)
|
{
|
case 10:
|
m_Owner.Play(GAStaticDefine.State_Attack1Hash);
|
break;
|
case 11:
|
m_Owner.Play(GAStaticDefine.State_Attack2Hash);
|
break;
|
case 12:
|
m_Owner.Play(GAStaticDefine.State_Attack3Hash);
|
break;
|
case 13:
|
m_Owner.Play(GAStaticDefine.State_Attack4Hash);
|
break;
|
}
|
}
|
else
|
{
|
m_Owner.NextAction = _tagChinSkill.Skillactmark;
|
switch (_tagChinSkill.Skillactmark)
|
{
|
case 21:
|
m_Owner.Play(GAStaticDefine.State_Skill21);
|
break;
|
case 22:
|
m_Owner.Play(GAStaticDefine.State_Skill22);
|
break;
|
case 23:
|
m_Owner.Play(GAStaticDefine.State_Skill23);
|
break;
|
case 24:
|
m_Owner.Play(GAStaticDefine.State_Skill24);
|
break;
|
case 25:
|
m_Owner.Play(GAStaticDefine.State_Skill25);
|
break;
|
case 26:
|
m_Owner.Play(GAStaticDefine.State_Skill26);
|
break;
|
case 27:
|
m_Owner.Play(GAStaticDefine.State_Skill27);
|
break;
|
case 28:
|
m_Owner.Play(GAStaticDefine.State_Skill28);
|
break;
|
case 29:
|
m_Owner.Play(GAStaticDefine.State_Skill29);
|
break;
|
case 99:
|
m_Owner.Play(GAStaticDefine.State_RollHash);
|
break;
|
}
|
}
|
}
|
|
//if (m_Owner is GA_PlayerXMZZ)
|
//{
|
m_Finished = true;
|
//}
|
//else
|
//{
|
// m_Step = 1;
|
//}
|
|
break;
|
case 1:
|
|
if (_skill.SkillCompelete)
|
{
|
m_Finished = true;
|
}
|
|
break;
|
}
|
}
|
|
}
|