Example #1
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            uint               num             = this.lockTargetID;
            SelectEnemyType    selectEnemyType = SelectEnemyType.SelectLowHp;
            Player             ownerPlayer     = ActorHelper.GetOwnerPlayer(ref this.actorPtr);
            SkillSelectControl instance        = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;
            uint  dwSkillTargetFilter = skill.cfgData.dwSkillTargetFilter;

            if (skill.cfgData.bSkillTargetRule == 2)
            {
                num = this.actor.ObjID;
            }
            else
            {
                ActorRoot useSkillTargetLockAttackMode = _slot.skillIndicator.GetUseSkillTargetLockAttackMode();
                if (useSkillTargetLockAttackMode != null)
                {
                    if (this.IsValidLockTargetID(useSkillTargetLockAttackMode.ObjID))
                    {
                        num = useSkillTargetLockAttackMode.ObjID;
                        Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(num);
                    }
                }
                else if (!this.IsValidLockTargetID(this.lockTargetID))
                {
                    if (ownerPlayer != null)
                    {
                        selectEnemyType = ownerPlayer.AttackTargetMode;
                    }
                    int srchR;
                    if (skill.AppointType == 1)
                    {
                        srchR = skill.GetMaxSearchDistance(_slot.GetSkillLevel());
                    }
                    else
                    {
                        srchR = skill.cfgData.iMaxAttackDistance;
                    }
                    if (selectEnemyType == SelectEnemyType.SelectLowHp)
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                    else
                    {
                        num = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, srchR, dwSkillTargetFilter, true, SearchTargetPriority.CommonAttack);
                    }
                    if (this.IsValidLockTargetID(num))
                    {
                        Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(num);
                    }
                }
                else if (!this.IsValidSkillTargetID(num, dwSkillTargetFilter))
                {
                    num = 0u;
                }
            }
            return(num);
        }
Example #2
0
        public override VInt3 SelectSkillDirection(SkillSlot _slot)
        {
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            return((VInt3)_slot.skillIndicator.GetUseSkillDirection());
        }
Example #3
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            int                iMaxSearchDistance           = 0;
            int                dwSkillTargetFilter          = 0;
            ActorRoot          useSkillTargetLockAttackMode = null;
            uint               lockTargetID = this.lockTargetID;
            SelectEnemyType    selectLowHp  = SelectEnemyType.SelectLowHp;
            Player             ownerPlayer  = ActorHelper.GetOwnerPlayer(ref this.actorPtr);
            SkillSelectControl instance     = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            if (skill.cfgData.dwSkillTargetRule == 2)
            {
                return(base.actor.ObjID);
            }
            useSkillTargetLockAttackMode = _slot.skillIndicator.GetUseSkillTargetLockAttackMode();
            if (useSkillTargetLockAttackMode != null)
            {
                if (this.IsValidLockTargetID(useSkillTargetLockAttackMode.ObjID))
                {
                    lockTargetID = useSkillTargetLockAttackMode.ObjID;
                    Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(lockTargetID);
                }
                return(lockTargetID);
            }
            if (!this.IsValidLockTargetID(this.lockTargetID))
            {
                if (ownerPlayer != null)
                {
                    selectLowHp = ownerPlayer.AttackTargetMode;
                }
                dwSkillTargetFilter = (int)skill.cfgData.dwSkillTargetFilter;
                if (skill.AppointType == SkillRangeAppointType.Target)
                {
                    iMaxSearchDistance = skill.cfgData.iMaxSearchDistance;
                }
                else
                {
                    iMaxSearchDistance = (int)skill.cfgData.iMaxAttackDistance;
                }
                if (selectLowHp == SelectEnemyType.SelectLowHp)
                {
                    lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchLowestHpTarget(ref this.actorPtr, iMaxSearchDistance, dwSkillTargetFilter);
                }
                else
                {
                    lockTargetID = Singleton <AttackModeTargetSearcher> .GetInstance().SearchNearestTarget(ref this.actorPtr, iMaxSearchDistance, dwSkillTargetFilter);
                }
                if (this.IsValidLockTargetID(lockTargetID))
                {
                    Singleton <NetLockAttackTarget> .GetInstance().SendLockAttackTarget(lockTargetID);
                }
            }
            return(lockTargetID);
        }
Example #4
0
        public ActorRoot GetUseSkillTargetDefaultAttackMode()
        {
            if (!this.bUseAdvanceSelect)
            {
                SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

                Skill skill = (this.skillSlot.NextSkillObj == null) ? this.skillSlot.SkillObj : this.skillSlot.NextSkillObj;
                this.targetActor = instance.SelectTarget((SkillTargetRule)skill.cfgData.dwSkillTargetRule, this.skillSlot);
            }
            return(this.targetActor);
        }
Example #5
0
        public override VInt3 SelectSkillDirection(SkillSlot _slot)
        {
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            if (Singleton <GameInput> .GetInstance().IsSmartUse())
            {
                return(instance.SelectTargetDir((SkillTargetRule)skill.cfgData.dwSkillTargetRule, _slot));
            }
            return((VInt3)_slot.skillIndicator.GetUseSkillDirection());
        }
Example #6
0
        public void SetUseSkillTarget()
        {
            ActorRoot actorRoot = null;
            Skill     skill     = (this.skillSlot.NextSkillObj != null) ? this.skillSlot.NextSkillObj : this.skillSlot.SkillObj;

            if (skill == null || skill.cfgData == null || skill.cfgData.bWheelType == 1 || skill.cfgData.bWheelType == 6)
            {
                return;
            }
            uint dwSkillTargetFilter = skill.cfgData.dwSkillTargetFilter;

            if (skill.cfgData.bRangeAppointType == 1)
            {
                if (!this.bUseAdvanceSelect && this.guidePrefab != null && this.guideSelectActive)
                {
                    SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

                    actorRoot = instance.SelectTarget((SkillTargetRule)skill.cfgData.bSkillTargetRule, this.skillSlot);
                }
                else if (this.bUseAdvanceSelect && this.effectPrefab != null && this.effectSelectActive)
                {
                    int srchR;
                    if (this.skillSlot.SlotType != SkillSlotType.SLOT_SKILL_0)
                    {
                        srchR = skill.cfgData.iMaxAttackDistance;
                    }
                    else
                    {
                        srchR = skill.GetMaxSearchDistance(this.skillSlot.GetSkillLevel());
                    }
                    uint num = 2u;
                    num      |= dwSkillTargetFilter;
                    actorRoot = Singleton <SectorTargetSearcher> .GetInstance().GetEnemyTarget(this.skillSlot.Actor, srchR, this.useSkillDirection, 50f, num);

                    if (actorRoot == null)
                    {
                        uint num2 = 1u;
                        num2     |= dwSkillTargetFilter;
                        actorRoot = Singleton <SectorTargetSearcher> .GetInstance().GetEnemyTarget(this.skillSlot.Actor, srchR, this.useSkillDirection, 50f, num2);
                    }
                }
                if (actorRoot != this.targetActor)
                {
                    this.StopCommonAttackTargetEffect(this.targetActor);
                    if (this.skillSlot.Actor && actorRoot != null && actorRoot.ObjID != this.skillSlot.Actor.handle.ObjID)
                    {
                        this.PlayCommonAttackTargetEffect(actorRoot);
                    }
                    this.targetActor = actorRoot;
                }
            }
        }
Example #7
0
        public override bool SelectSkillPos(SkillSlot _slot, out VInt3 _position)
        {
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            if (_slot.skillIndicator.IsAllowUseSkill())
            {
                _position = (VInt3)_slot.skillIndicator.GetUseSkillPosition();
                return(true);
            }
            _position = VInt3.zero;
            return(false);
        }
Example #8
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            ActorRoot          useSkillTargetDefaultAttackMode;
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj == null) ? _slot.SkillObj : _slot.NextSkillObj;

            if (Singleton <GameInput> .GetInstance().IsSmartUse() || (skill.cfgData.dwSkillTargetRule == 2))
            {
                useSkillTargetDefaultAttackMode = instance.SelectTarget((SkillTargetRule)skill.cfgData.dwSkillTargetRule, _slot);
            }
            else
            {
                useSkillTargetDefaultAttackMode = _slot.skillIndicator.GetUseSkillTargetDefaultAttackMode();
            }
            return((useSkillTargetDefaultAttackMode == null) ? 0 : useSkillTargetDefaultAttackMode.ObjID);
        }
Example #9
0
        public override bool SelectSkillPos(SkillSlot _slot, out VInt3 _position)
        {
            bool result = false;
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill skill = (_slot.NextSkillObj != null) ? _slot.NextSkillObj : _slot.SkillObj;

            if (Singleton <GameInput> .GetInstance().IsSmartUse())
            {
                _position = instance.SelectTargetPos((SkillTargetRule)skill.cfgData.bSkillTargetRule, _slot, out result);
                return(result);
            }
            if (_slot.skillIndicator.IsAllowUseSkill())
            {
                _position = (VInt3)_slot.skillIndicator.GetUseSkillPosition();
                return(true);
            }
            _position = VInt3.zero;
            return(false);
        }
Example #10
0
        public override uint SelectSkillTarget(SkillSlot _slot)
        {
            SkillSelectControl instance = Singleton <SkillSelectControl> .GetInstance();

            Skill     skill = (_slot.NextSkillObj != null) ? _slot.NextSkillObj : _slot.SkillObj;
            ActorRoot actorRoot;

            if (Singleton <GameInput> .GetInstance().IsSmartUse() || skill.cfgData.bSkillTargetRule == 2)
            {
                actorRoot = instance.SelectTarget((SkillTargetRule)skill.cfgData.bSkillTargetRule, _slot);
            }
            else
            {
                actorRoot = _slot.skillIndicator.GetUseSkillTargetDefaultAttackMode();
            }
            if (actorRoot != null && base.IsValidTargetID(actorRoot.ObjID))
            {
                this.SetShowTargetInfo(actorRoot.ObjID);
            }
            return((actorRoot != null) ? actorRoot.ObjID : 0u);
        }