Exemplo n.º 1
0
        /// <summary>
        /// modified by mawenbin
        /// 1、按照配置的释放优先级(SkillBase.txt文件的PriorityAutoFight列)选取技能
        /// 2、如果正在释放连续技,则必须等待后段判定,也就是连续技后续技能优先级最高
        /// 3、普攻优先级最低,并忽略普攻连续技
        /// </summary>
        /// <returns></returns>
        private int SeleSkill()
        {
            int nSelectSkillId = -1;

            //正在使用连续技
            if (IsUsingRepeatSkillWithNext())
            {
                //连续技禁止使用时间满足(前摇时间)
                if (CheckTimeUsingNextContinueSkill())
                {
                    //连续技的后续技能可使用时间超时(后摇时间)
                    if (CheckNextSkillEffectTimeOver())
                    {
                        nSelectSkillId = -1;
                        CurUseSkillId  = -1;
                    }
                    else
                    {
                        nSelectSkillId = GetNextContinueSkillId();
                        //正在使用的连续技为普攻
                        if (IsNormalSkill(nSelectSkillId))
                        {
                            //存在优先级高于普攻的可释放技能,则放弃普攻连续技
                            int nPrioritySkillId = SeleSkillByPriority();
                            if (GetChangeStateNormalSkillID() != nPrioritySkillId)
                            {
                                nSelectSkillId = nPrioritySkillId;
                            }
                            //无法释放普攻连续技,比如变身消失则无法继续释放变身普攻连续技
                            else if (!m_player.CheckBeforUseSkill(nSelectSkillId))
                            {
                                nSelectSkillId = nPrioritySkillId;
                            }
                        }
                        else
                        {
                            //连续技后续技能不可以使用
                            if (!m_player.CheckBeforUseSkill(nSelectSkillId, false))
                            {
                                nSelectSkillId = SeleSkillByPriority();
                            }
                        }
                    }
                }
                //连续技禁止使用时间不满足,继续等待
                else
                {
                    nSelectSkillId = -1;
                }
            }
            //未使用连续技,则根据优先级选取技能
            else
            {
                nSelectSkillId = SeleSkillByPriority();
            }
            //Tab_SkillEx tabSkillExTemp = TableManager.GetSkillExByID(nSelectSkillId, 0);
            //int iBaseId = 0;
            //if (null != tabSkillExTemp)
            //{
            //    iBaseId = tabSkillExTemp.BaseId;
            //}
            //LogModule.ErrorLog("auto fight select skillID:" + nSelectSkillId.ToString() + ", baseID:" + iBaseId.ToString());
            return(nSelectSkillId);
        }