From ac8a40ad2d24e7700fa5667d732cd9f2ab83e6ef Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期二, 16 四月 2019 14:25:09 +0800
Subject: [PATCH] 382 逃离的NPC不死逻辑

---
 Fight/Actor/Skill/AttackHandler.cs |   14 +++++++++++++-
 Fight/Actor/AI/AI_Npc_198.cs       |    1 +
 Fight/Actor/HeroBehaviour.cs       |   35 +++++++++++++++++++----------------
 3 files changed, 33 insertions(+), 17 deletions(-)

diff --git a/Fight/Actor/AI/AI_Npc_198.cs b/Fight/Actor/AI/AI_Npc_198.cs
index 31cacd4..7d0b036 100644
--- a/Fight/Actor/AI/AI_Npc_198.cs
+++ b/Fight/Actor/AI/AI_Npc_198.cs
@@ -62,6 +62,7 @@
                 var _nextForawrd = Random.rotation * m_Owner.Forward;
                 var _randomDis = Random.Range(0, m_Owner.NpcConfig.Sight * .5f);
                 m_Dest = m_Owner.BornPos + _nextForawrd * _randomDis;
+                GActor.TryGetValidPos(m_Dest, ref m_Dest);
                 m_RunAwayStep = 1;
                 break;
             case 1:
diff --git a/Fight/Actor/HeroBehaviour.cs b/Fight/Actor/HeroBehaviour.cs
index f11491e..69ee938 100644
--- a/Fight/Actor/HeroBehaviour.cs
+++ b/Fight/Actor/HeroBehaviour.cs
@@ -887,24 +887,27 @@
 
                 if (_target.ActorInfo.RealHp <= _hurtValue)
                 {
-                    _target.KillerServerInstID = m_Hero.ServerInstID;
-                    _target.ActorInfo.serverDie = true;
-                    GAMgr.Instance.ServerDie(_target.ServerInstID);
-                    GAMgr.Instance.DoDelayDie(_target);
+                    if (_clientNpc.NpcConfig.AIType != 198)
+                    {
+                        _target.KillerServerInstID = m_Hero.ServerInstID;
+                        _target.ActorInfo.serverDie = true;
+                        GAMgr.Instance.ServerDie(_target.ServerInstID);
+                        GAMgr.Instance.DoDelayDie(_target);
 
-                    if (m_Hero.LockTarget == _target)
-                    {
-                        m_Hero.LockTarget = null;
-                    }
-                    if (m_Hero.SelectTarget == _target)
-                    {
-                        m_Hero.SelectTarget = null;
-                    }
+                        if (m_Hero.LockTarget == _target)
+                        {
+                            m_Hero.LockTarget = null;
+                        }
+                        if (m_Hero.SelectTarget == _target)
+                        {
+                            m_Hero.SelectTarget = null;
+                        }
 
-                    if (_clientNpc != null
-                     && _clientNpc.belongEventID != -1)
-                    {
-                        ClientSceneManager.Instance.NpcDead(_clientNpc.belongEventID, _clientNpc, _clientNpc.NpcConfig.NPCID);
+                        if (_clientNpc != null
+                         && _clientNpc.belongEventID != -1)
+                        {
+                            ClientSceneManager.Instance.NpcDead(_clientNpc.belongEventID, _clientNpc, _clientNpc.NpcConfig.NPCID);
+                        }
                     }
                     // 鍓嶆湡鎴樻枟鍙彂閫佺煶澶翠汉鐨�
                     //if (1000 == _target.NpcConfig.NPCID)
diff --git a/Fight/Actor/Skill/AttackHandler.cs b/Fight/Actor/Skill/AttackHandler.cs
index 826f7a1..92219af 100644
--- a/Fight/Actor/Skill/AttackHandler.cs
+++ b/Fight/Actor/Skill/AttackHandler.cs
@@ -195,6 +195,8 @@
                 }
                 else
                 {
+                    bool _doReduceHp = true;
+
                     if (attacker is GA_NpcClientFightNorm)
                     {
                         if (target.ActorInfo.RealHp <= (target.ActorInfo.RealMaxHp * .5f))
@@ -202,8 +204,18 @@
                             hurtValue = 0;
                         }
                     }
+                    else if (target is GA_NpcClientFightNorm)
+                    {
+                        if ((target as GA_NpcClientFightNorm).NpcConfig.AIType == 198)
+                        {
+                            _doReduceHp = false;
+                        }
+                    }
 
-                    target.ActorInfo.ReduceHp((uint)hurtValue);
+                    if (_doReduceHp)
+                    {
+                        target.ActorInfo.ReduceHp((uint)hurtValue);
+                    }
 
                     if (target.ServerInstID == PlayerDatas.Instance.baseData.PlayerID)
                     {

--
Gitblit v1.8.0