Пример #1
0
        public override uint CommonAttackSearchEnemy(int srchR)
        {
            if (this.commonAttackEnemyHeroTargetID > 0u)
            {
                PoolObjHandle <ActorRoot> actor = Singleton <GameObjMgr> .GetInstance().GetActor(this.commonAttackEnemyHeroTargetID);

                if (!actor || actor.handle.ActorControl.IsDeadState)
                {
                    this.ClearCommonAttackTarget();
                    base.SetEnemyHeroAttackTargetID(0u);
                    return(0u);
                }
                this.SetCommonAttackTarget(this.commonAttackEnemyHeroTargetID, true);
                return(this.commonAttackEnemyHeroTargetID);
            }
            else
            {
                bool flag = false;
                uint num  = base.ExecuteSearchTarget(srchR, ref flag);
                if (!flag)
                {
                    return(num);
                }
                if (!base.IsValidTargetID(num))
                {
                    SkillCache skillUseCache = this.actor.SkillControl.SkillUseCache;
                    if (skillUseCache != null && !skillUseCache.GetSpecialCommonAttack())
                    {
                        this.CancelCommonAttackMode();
                        num = 0u;
                    }
                }
                if (num == 0u)
                {
                    this.ClearCommonAttackTarget();
                }
                else
                {
                    this.SetCommonAttackTarget(num, false);
                }
                return(num);
            }
        }
Пример #2
0
        public override uint CommonAttackSearchEnemy(int srchR)
        {
            SkillCache      skillUseCache        = null;
            SelectEnemyType selectLowHp          = SelectEnemyType.SelectLowHp;
            uint            commonAttackTargetID = this.commonAttackTargetID;
            Player          ownerPlayer          = ActorHelper.GetOwnerPlayer(ref this.actorPtr);

            if (ownerPlayer != null)
            {
                if (base.IsValidTargetID(commonAttackTargetID))
                {
                    this.SetCommonAttackTarget(commonAttackTargetID);
                    return(commonAttackTargetID);
                }
                selectLowHp = ownerPlayer.AttackTargetMode;
            }
            if (selectLowHp == SelectEnemyType.SelectLowHp)
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchLowestHpTarget(base.actor.ActorControl, srchR);
            }
            else
            {
                commonAttackTargetID = Singleton <CommonAttackSearcher> .GetInstance().CommonAttackSearchNearestTarget(base.actor.ActorControl, srchR);
            }
            if (!base.IsValidTargetID(commonAttackTargetID))
            {
                skillUseCache = base.actor.ActorControl.actor.SkillControl.SkillUseCache;
                if ((skillUseCache != null) && !skillUseCache.GetSpecialCommonAttack())
                {
                    this.CancelCommonAttackMode();
                    commonAttackTargetID = 0;
                }
            }
            if (commonAttackTargetID == 0)
            {
                this.ClearCommonAttackTarget();
                return(commonAttackTargetID);
            }
            this.SetCommonAttackTarget(commonAttackTargetID);
            return(commonAttackTargetID);
        }