Пример #1
0
        /// <summary>
        /// 实际选择目标
        /// </summary>
        public override bool SelectTarget(RoleActor caster, SkillActive skill, ref List <RoleActor> targets)
        {
            if (!base.SelectTarget(caster, skill, ref targets))
            {
                return(false);
            }

            RoleActor target = caster.GetTarget(skill.mTargetId);

            if (null == target)
            {
                return(false);
            }

            targets.Add(target);

            return(true);
        }
Пример #2
0
        /// <summary>
        /// 检查技能条件
        /// </summary>
        public override bool CheckSkillCondition(RoleActor actor, SkillActive skill)
        {
            if (!base.CheckSkillCondition(actor, skill))
            {
                return(false);
            }

            RoleActor target = actor.GetTarget(skill.mTargetId);

            if (null == target)
            {
                return(false);
            }

            if (target is NPCInstance)
            {
                return(false);
            }

            if (actor.Camp != target.Camp)
            {
                return(false);
            }

            if (actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId)
            {
                return(false);
            }

            if (!skill.SkillCD.IsCoolDown() || !actor.SkillCD.IsCoolDown())
            {
                return(false);
            }

            if (skill.mDistance > skill.RangeMax + GameSet.Instance.SkillRangeSync)
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
        /// <summary>
        /// 检查技能条件
        /// </summary>
        public override bool CheckSkillCondition(RoleActor actor, SkillActive skill)
        {
            if (!base.CheckSkillCondition(actor, skill))
            {
                return(false);
            }

            RoleActor target = actor.GetTarget(skill.mTargetId);

            if (null == target)
            {
                skill.mResult = eSkillResult.NotTarget;
                return(false);
            }

            if (actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId)
            {
                Log.Log.Server.Info("Error, actor.HostMap.MapInstanceId != target.HostMap.MapInstanceId");
                return(false);
            }

            if (!actor.CanAttack(target))
            {
                skill.mResult = eSkillResult.NoAttack;
                return(false);
            }

            if (!skill.SkillCD.IsCoolDown() || !actor.SkillCD.IsCoolDown())
            {
                skill.mResult = eSkillResult.NotCoolDown;
                return(false);
            }

            if (skill.mDistance > skill.RangeMax + GameSet.Instance.SkillRangeSync)
            {
                skill.mResult = eSkillResult.DistanceToFar;
                return(false);
            }

            return(true);
        }