少年修仙传客户端代码仓库
client_Hale
2019-04-29 7b01358a82cadd44fbc3527b7eb642a4de109578
382 使得专属木桩可被测试攻击
2个文件已修改
55 ■■■■ 已修改文件
Fight/Actor/HeroBehaviour.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcSummonFight.cs 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/Actor/HeroBehaviour.cs
@@ -971,10 +971,13 @@
        if (_fightNpc != null)
        {
            if (_fightNpc.Group != E_ActorGroup.Enemy
             || _fightNpc.NpcConfig.Country == 1)
            if (_fightNpc.NpcConfig.NPCType != (int)E_NpcType.PersonalEnemy)
            {
                return false;
                if (_fightNpc.Group != E_ActorGroup.Enemy
                 || _fightNpc.NpcConfig.Country == 1)
                {
                    return false;
                }
            }
        }
Fight/GameActor/GA_NpcSummonFight.cs
@@ -4,7 +4,9 @@
public class GA_NpcSummonFight : GActorNpcFight
{
    private H0408_tagPlayerSummonNPCAppear m_H0408;
    private HeadUpName m_HeadUpName;
    // 用于触发点击的组件
    private NPCInteractProcessor m_NPCInteractProcessor;
    protected override void OnInit(GameNetPackBasic package)
    {
@@ -21,6 +23,14 @@
        AdjustPos(m_H0408.PosX, m_H0408.PosY);
        base.OnInit(package);
        // 可选择对象创建碰撞区
        if (CanBeSelected())
        {
            m_NPCInteractProcessor = Root.AddMissingComponent<NPCInteractProcessor>();
            m_NPCInteractProcessor.npcIntergactEvent -= OnClick;
            m_NPCInteractProcessor.npcIntergactEvent += OnClick;
        }
        GActor _parent = GAMgr.Instance.GetBySID(m_H0408.PlayerID);
        if (_parent != null)
@@ -61,7 +71,7 @@
    public sealed override bool CanAtked()
    {
        return false;
        return NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy;
    }
    public sealed override bool CanAtkedRotate()
@@ -86,15 +96,45 @@
    public sealed override bool CanBeSelected()
    {
        return false;
        return NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy;
    }
    public sealed override void OnSelect()
    {
        if (NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy)
        {
            SelectionManager.Request(SelectionManager.E_Type.Red, this, NpcConfig.ModelRadius * 2);
        }
    }
    public sealed override void OnUnSelect()
    {
        if (NpcConfig.NPCType == (int)E_NpcType.PersonalEnemy)
        {
            SelectionManager.Release(SelectionManager.E_Type.Red);
        }
    }
    public sealed override void OnClick()
    {
        if (ActorInfo.serverDie
         || BossShowModel.Instance.BossShowing
         || StatusMgr.Instance.IsInvisible(ServerInstID))
        {
            return;
        }
        GA_Hero _hero = PlayerDatas.Instance.hero;
        // 当前锁定的目标已经是此对象
        if (_hero.LockTarget == this && CanAtked())
        {
            // 开启攻击至死AI
            _hero.Behaviour.StartKillUntilDieAI();
        }
        else
        {
            // 设置锁定目标为此对象
            _hero.LockTarget = this;
            _hero.SelectTarget = this;
            GA_Hero.CallLockTargetChanged(ServerInstID);
        }
    }
}